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

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

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

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

Программы stock, discount и delivery проверка запускает несколько раз: с вашими числами и с другими, подставленными в первые строки main, — по одному запуску на каждую ветку и на каждую границу. Поэтому первые строки main должны быть ровно такими, как в TASK.txt, а всё остальное программа должна считать сама.


1. Сравнения — страница 1

Программы запускайте через go run .. Предсказание со страницы сдайте — до того, как запустите программу, а запуском проверьте себя после:

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

Вместо ОТВЕТ — строка вывода целиком.

Готово, когда: course check 06 отмечает ✔ пункты «Запускали программы через go run» (t_gorun) и «Что выведет: сравнение строк, len и >=» (q1).

2. Починка fix2 — страница 2

Почините ~/gocourse/day06/fix2: программа должна собираться и при нулевом и ненулевом остатке печатать то, что обещано в комментарии. Изменить можно не больше двух строк, и хватает одной. Строку stock := 0 в итоге оставьте как была: на странице 2 вы временно ставили в неё 5, чтобы увидеть вторую ветку, — это опыт, а не правка, и к сдаче в файле снова должно быть stock := 0. Правку посмотрите через diff с оригиналом:

▶ Выполните
cd ~/gocourse/day06/fix2
diff ~/.course/orig/day06/fix2/main.go main.go

Готово, когда: ✔ у пунктов «fix2 собирается и сообщает об остатке…» (fix2) и «Смотрели свою правку через diff» (t_diff).

3. Цепочки else if — страница 3

3.1. Предсказание — сдать до запуска, потом проверить себя запуском:

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

Вместо ОТВЕТ — одно слово, как его напечатает программа.

3.2. Почините ~/gocourse/day06/fix1: упаковка должна выбираться верно на весах 999, 1000, 19999, 20000 и на весе из комментария. Изменить можно не больше шести строк.

3.3. Напишите ~/gocourse/day06/stock/main.go: две строки из TASK.txt той же папки, статус верный для любого остатка и порога.

3.4. Проверьте формат:

▶ Выполните
cd ~/gocourse/day06/stock
gofmt -l .

Готово, когда: ✔ у пунктов «Что выведет: цепочка else if с границей» (q2), «fix1 выбирает упаковку верно на всех границах…» (fix1), «stock печатает статус остатка во всех ветках и на границах» (stock) и «Проверяли формат кода через gofmt» (t_gofmt).

4. Трассировка trace — страница 4

Заполните ~/gocourse/day06/trace/table.txt: вместо каждого ? — значение переменной после шага, на строках с if и с печатью — те же значения, что строкой выше. Шаги, номера строк, шапку и прочерки не трогайте, program.go не меняйте.

Готово, когда: ✔ у пункта «Таблица trace заполнена верно» (trace).

5. Скидка discount — страница 4

Напишите ~/gocourse/day06/discount/main.go: три строки из TASK.txt, скидка верная на каждом пороге и на копейку ниже порога.

Готово, когда: ✔ у пункта «discount считает скидку на всех порогах» (discount).

6. И, или, не — страница 5

6.1. Предсказание — сдать до запуска, потом проверить себя запуском:

▶ Выполните · выделенное замените своим
course answer day06.q3 ЧИСЛО

Вместо ЧИСЛО — ваш ответ со страницы: число после «Код проверки:».

6.2. Условия проверяйте через go vet . в папке scratch.

Готово, когда: ✔ у пунктов «Что выведет: короткое вычисление && и ||» (q3) и «Проверяли условия через go vet» (t_vet).

7. switch — страница 6

7.1. Предсказание — сдать до запуска, потом проверить себя запуском:

▶ Выполните · выделенное замените своим
course answer day06.q4 ЧИСЛО

Вместо ЧИСЛО — число, которое напечатает программа.

7.2. Напишите ~/gocourse/day06/delivery/main.go: доставка для каждой зоны, для зоны вне списка и на границах веса. Тариф выбирается через switch zone, доплата — через switch без выражения. Цепочка else if вместо них — не зачёт: пункт delivery смотрит не только на вывод. switch, который стоит рядом, но ничего не решает, — тоже не зачёт: проверка вычищает в копии программы тела его ветвей, и вывод обязан измениться.

Готово, когда: ✔ у пунктов «Что выведет: switch по зоне и switch без выражения» (q4), «delivery считает доставку по зоне и весу» (delivery) и «delivery: тариф — switch zone, доплата — switch без выражения» (delivery_switch).

8. Формат

В папках stock, discount, delivery выполните по очереди:

▶ Выполните
gofmt -l .

Пункт открывается после самих заданий: пока stock, discount или delivery считают не то, форматировать нечего.

Готово, когда: gofmt -l . в каждой из трёх папок ничего не печатает, три задания зелёные; ✔ у пункта «Код stock, discount и delivery отформатирован» (code_fmt).

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

Допишите ~/errors.md до двенадцати строк вида «текст ошибки — что значило», через тире. Слева — сообщение, как его напечатал Go или go vet, справа — разбор по-русски.

Готово, когда: ✔ у пункта «Словарик ~/errors.md: минимум двенадцать разборов» (errors).

Ответы на предсказания можно отправить заново — засчитывается последний. Но приём работает только в одну сторону: сначала ответ, потом запуск.

10. Звёздочка

В зачёт не входит.

Готово, когда: на вопросы из пунктов есть ответ; course check эти задания не сверяет.


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