День 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. Звёздочка
В зачёт не входит.
- Перепишите
stockчерезswitchбез выражения. Какая запись читается легче и почему? - В
discountдобавьте правило: заказам от вашего верхнего порога доставка бесплатная, остальным — 390 руб. Протрассируйте программу на двух суммах: на пороге и на копейку ниже. - Запишите условие «зона не 1 и не 2» тремя способами: через
&&, через!и скобки, черезswitchс пустой веткой. Проверьте все три на зонах 1, 2 и 3 и прогонитеgo vet ..
Готово, когда: на вопросы из пунктов есть ответ; course check эти задания не сверяет.
Порог: 14 пунктов из 17. После зачёта — контрольные вопросы: course quiz 06.