День 13 · задания

День 13 — задания

Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 13. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом. Список страниц:

▶ Выполните
course toc 13

1. Четыре предсказания — страницы 2, 3, 4

Сделать: сдать ответы на четыре вопроса «что выведет».

▶ Выполните · выделенное замените своим
course answer day13.q1 ОТВЕТ
course answer day13.q2 ОТВЕТ
course answer day13.q3 ОТВЕТ
course answer day13.q4 ОТВЕТ

Вместо ОТВЕТ — числа, как их напечатала бы программа: в q1 одно число, в q2 два числа через пробел, в q3 три числа через пробел, в q4 одно число с точкой. Можно отправить заново — засчитывается последний.

Готово, когда: пункты q1, q2, q3, q4 зелёные.

2. Таблица трассировки — страница 3

Сделать: заполните ~/gocourse/day13/read/table.txt — второй проход цикла программы read/program.go, тот, где trips равно 3. Шаги и номера строк уже стоят: меняйте только знаки ?, прочерки оставьте как есть. Формат — как в разобранной таблице первого прохода на странице 3.

Готово, когда: пункт trace зелёный.

3. Единицы измерения — страница 4

Сделать: почините ~/gocourse/day13/fixcall, чтобы итог считался в копейках. Правка — одно выражение в вызове; объявления и имена не трогайте. Лимит проверки тот же, что на странице 4: одна-две изменённые строки, больше двух пункт fixsmall не примет. Что поменяли, покажет diff ~/.course/orig/day13/fixcall/main.go ~/gocourse/day13/fixcall/main.go.

Готово, когда: пункты fixcall и fixsmall зелёные.

4. Снимки поведения — страница 5

Сделать: до всяких правок снимите три снимка вывода программы split и научитесь сверять:

▶ Выполните
cd ~/gocourse/day13/split
go run . < example.txt > baseline.txt
go run . < /dev/null > base-empty.txt
printf '50\n12шт\n' > bad.txt
go run . < bad.txt > base-bad.txt 2>&1
go run . < example.txt > after.txt
diff baseline.txt after.txt

Снимки не переснимайте после правок — они для того и нужны, чтобы хранить прежнее поведение, в том числе на пустом вводе и на строке не с числом.

Готово, когда: пункты t_base, t_diff и base зелёные — base сверяет все три снимка.

5. Разложить split на функции — страница 5

Сделать: ~/gocourse/day13/split/main.go разложить на функции по условию ~/gocourse/day13/split/TASK.txt:

Готово, когда: пункты split, funcs, base, vet зелёные. Проверка прогонит программу на нескольких вводах; часть из них скрыта — на них вы увидите только ввод и то, что напечатала программа.

Пункты split, vet и code_fmt проверяют, что при разбиении ничего не сломалось, поэтому до самого разбиения они красные и отправляют к пункту funcs: пока расчёты не уехали из main, вывод «не менялся» сам собой, и засчитывать тут нечего.

6. Функция по описанию — страница 6

Сделать: в ~/gocourse/day13/report написать функцию discount по описанию из TASK.txt. Границы — сумма ровно на пороге, ноль, процент 0 — часть условия.

Готово, когда: пункт report зелёный. Проверка гоняет вашу функцию на своих числах, отдельно от main.

7. Коммиты — страница 5

Сделать: завести репозиторий в ~/gocourse/day13 и коммитить каждый шаг: стенд как есть, потом по коммиту на каждый вынесенный кусок и на report. Историю посмотреть через git log --oneline.

Готово, когда: пункты git (не меньше четырёх коммитов) и t_log зелёные.

8. Формат

Сделать: отформатируйте код split, fixcall и report — Ctrl+S в VS Code или gofmt -w . в папке задания.

Готово, когда: gofmt -l . в каждой папке ничего не печатает — пункт code_fmt зелёный. Он тоже про «не сломал»: зачёт идёт после того, как сделано задание 5, — до него пункт красный.

9. Словарик ошибок — страница 7

Сделать: в ~/errors.md — минимум двадцать шесть строк вида «текст ошибки — что значило». Между ошибкой и разбором — тире с пробелами вокруг; проверка считает только такие строки, а не все подряд.

Готово, когда: пункт errors зелёный.

10. Звёздочка

В зачёт не входит, course check 13 эти задания не смотрит.

Готово, когда: вывод split по-прежнему совпадает с baseline.txt после всех опытов.


Порог: 15 пунктов из 18. После зачёта — контрольные вопросы: course quiz 13.