День 10 · Контрольная точка 2: проверить программу с вводом · страница 3 из 3

Контрольная точка 2

Восемь задач по блоку 2: условия, ввод и ошибки, циклы, отладка. По ним видно, какие темы осели. Блок 3 — функции и тесты — строится поверх циклов и условий, поэтому незасчитанная задача показывает, что повторить до него.


Задачи

Условие — в TASK.txt папки задачи, числа у каждого стажёра свои.

№ Папка Что сделать Где перечитать
1 kt1 стоимость доставки: условия и границы день 06, стр. 3; памятка
2 kt2 движение остатка: цикл по строкам, счётчики, минимум день 08, стр. 5–7
3 kt3 раскладка партии: проверка ввода, поток ошибок, код 1 день 07, стр. 3–5
4 kt4 программа считает неверно, хотя пример проходит страница 1; памятка
5 kt5 программа не собирается памятка, «Ошибки компилятора»
6 kt6 таблица трассировки цикла памятка, «Трассировка: правила 1–15»
7 kt7 значения, которых нет в выводе день 09; памятка, «Отладка»
8 kt8 задача Парсонса с циклом и условием день 04, стр. 7; день 08
Пример · только посмотреть, набирать не нужно
stagiaire@lab:~$ cd ~/gocourse/day10/kt1
stagiaire@lab:~/gocourse/day10/kt1$ cat TASK.txt

Как сдаётся

Всё проверяет course check 10. Отдельно сдаётся только ответ на задачу 7 — два числа через пробел вместо слова ЧИСЛА; отправить заново можно:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day10/kt7$ course answer day10.kt7 ЧИСЛА

Программы с вводом (задачи 1–5 и 8) проверка запускает на наборе вводов. Первые случаи — примеры из TASK.txt, на них при ошибке видно и то, что было нужно. Остальные скрыты, на них видно только ввод и то, что напечатала программа:

Вывод · это печатает программа, набирать не нужно
  ✘  Задача 1 — стоимость доставки по весу и сумме
       Условие: cat ~/gocourse/day10/kt1/TASK.txt — проверьте границы и порядок правил.
       следующий уровень подсказки: course hint 10 kt1
         случай 4 из 12, ввод: 1500 0
         строка 1, программа напечатала: «Доставка: 430 руб.»

1500 0 — две строки ввода, показанные через пробел; пустые строки выглядят как лишние пробелы. Нужный ответ решаете вы по правилам: добавьте этот ввод в свой набор и прогоните, как на странице 1. Проверка останавливается на первом неверном случае — после починки может всплыть следующий. В задаче 3 обычный вывод, поток ошибок и код сверяются отдельно, и проверка называет, что не совпало.

Починки — точечно. В kt4 — не больше трёх изменённых строк, в kt5 — не больше четырёх; строки import не считаются. Что поменяли и как вернуть оригинал:

Команда Что делает
diff ~/.course/orig/day10/kt4/main.go ~/gocourse/day10/kt4/main.go показывает, что поменяли в kt4 по сравнению с оригиналом
cp ~/.course/orig/day10/kt4/main.go ~/gocourse/day10/kt4/main.go возвращает оригинал kt4

Трассировка в kt6 сверяется целиком: одна неверная клетка — задача не засчитана, какая клетка, проверка не говорит. Новых правил точка не вводит: действуют правила 1–15 из дней 02, 06 и 08, и все пятнадцать собраны списком в памятке блока — course page 10 2, раздел «Трассировка: правила 1–15». Держите его открытым рядом с таблицей. Парсонс в kt8 — только переставлять и удалять: строку, которой не было в заготовке, проверка не примет.


Порог и пересдача

Задача засчитана целиком или не засчитана. Порог — 6 задач из 8. Итог по точке на пустом стенде:

Вывод · это печатает программа, набирать не нужно
--- контрольная точка 2 ---
Задач сдано: 0 из 8. Порог — 6. Пересдача — доделайте задачи и повторите course check 10.

День закрывается при трёх условиях: сдано 10 пунктов из 13 — тренировка и задачи вместе; точка взята; сданы контрольные вопросы. Без точки день не закроется при любом числе пунктов:

Вывод · это печатает программа, набирать не нужно
Контрольная точка не взята: 5 из 8 при пороге 6.
День не закрыт: пункты контрольной обязательны.

Когда пункты и точка сданы, проверка отправит к course quiz 10; после вопросов — ещё раз course check 10.

Пересдача — повторный course check 10, попыток сколько угодно. Между проверками — не меньше 15 секунд, каждая попытка пишется в ~/.course/checks. Прогон своего набора вводов быстрее паузы.


Подсказки и время

course hint 10 kt3 работает и на контрольной. Третий уровень на контрольной не даёт ни ответа, ни готового кода: он описывает способ — что трассировать, где искать, какое правило применить. Он попадает в отчёт: задача засчитается, но тему, которая не осела, уже не покажет. Застряли — по порядку: перечитать TASK.txt; набор вводов и прогон; памятка; двадцать минут отладочной печати или отладчика; только потом первый уровень подсказки.

На контрольную заложите около трёх часов. Первые десять минут прочитайте все восемь TASK.txt. Начните с задач, в которых уверены. Получас на задачу — это не норма, а сигнал: просидели над одной полчаса без движения — отложите её и берите следующую, вернётесь потом. course check 10 — после каждой решённой задачи.


Что может пойти не так

Что видите Что это значит Что делать
в kt1 нет файлов .go main.go не создан или в другой папке ~/gocourse/day10/kt1/main.go
обычный вывод (stdout):, дальше а нужно: «» сообщение об ошибке ушло в обычный вывод fmt.Fprintln(os.Stderr, …)
в kt3 на вводе с ошибкой: обычный вывод (stdout):, строка 1, программа напечатала: «Коробок: 0» сообщение напечатано, но программа не остановилась и посчитала дальше os.Exit(1) сразу после сообщения
программа завершилась с кодом 0, а нужен 1 выход через return или без кода os.Exit(1)
программа работала дольше 5 секунд и была остановлена: ждёт ввода или зациклилась условие цикла не меняется отладочная печать внутри цикла
изменено строк: 4 (строки import не считаются), можно не больше 3 в починке лишнее: отладочная печать, комментарии diff с оригиналом
программа собралась, но итог 0 при непустом вводе накопитель объявлен дважды: считается во внутренний, печатается внешний правила видимости — памятка, раздел «Циклы»
строки нет среди исходных или она использована больше раз, чем в заготовке: «fmt.Println("отладка")» в Парсонсе дописана строка убрать строку
Строк с шагами в таблице 20, а нужно 21 удалена строка таблицы или у шапки пропал # вернуть число строк заготовки

Материал дня закончен. Задания — course lab 10, дополнительное чтение — course extra 10