День 09 — задания
Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 09. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом. Список страниц:
course toc 091. Воспроизвести и предсказать — страница 1
Сделать: запустите программу с вводом из файла — go run . < input.txt — и сдайте ответ на вопрос страницы:
course answer day09.q1 ОТВЕТВместо ОТВЕТ — два числа через пробел, как в вопросе на странице.
Готово, когда: пункты t_input и q1 в course check 09 зелёные.
2. Отладочная печать — страница 2
Сделать:
- запустите программу с отдельным потоком ошибок:
2>/dev/nullили2> файл; - посмотрите свою правку через
diffс оригиналом из~/.course/orig/day09; course answer day09.q2 ОТВЕТ— что осталось на экране;~/gocourse/day09/bug1считает скидку верно: и наinput.txt, и на скрытых вводах проверки.
Готово, когда: пункты t_stderr, t_diff, q2 и bug1 зелёные.
3. Отладчик dlv — страницы 3 и 4
Сделать:
- запустите
dlv debugс подачей ввода из файла через-r. Команды внутриdlvв журнал не попадают, засчитывается строка запуска. Сеансов нужно два, и каждый в своём каталоге:findс вводом изorders.txt— иначе красныеq4иq5;bug2с вводом изinput.txt— иначе красныйq3. Этих значений в выводе программ нет, и снимают их отладчиком; course answer day09.q4 ЧИСЛОиcourse answer day09.q5 ЧИСЛО ЧИСЛО— значения из заданияfind, у каждого свои. У q5 два числа:nиstockна первом отказе.find/main.goне меняйте: номера строк в вопросах и в таблице — по нему;find/table.txt— таблица трассировки по пяти остановкам на строке 33: вместо каждого?число, номера заказов в файле уже стоят;course answer day09.q3 ЧИСЛО ЧИСЛО—bestиnна остановке вbug2, номер предложения — вbug2/TASK.txt. От починки ответ не зависит;~/gocourse/day09/bug2печатает лучшую цену и верный номер строки наinput.txtи на скрытых вводах.
Готово, когда: пункты t_dlv, t_redirect, q4, q5, table, q3 и bug2 зелёные.
4. VS Code — страница 5
Сделать: launch.json в папке ~/gocourse/day09/.vscode — конфигурация Go ("type": "go", "request": "launch") со строкой "console": "integratedTerminal".
Готово, когда: пункт launch зелёный.
5. Типовые дефекты — страница 6
Сделать:
~/gocourse/day09/bug3выбирает первую подходящую ячейку наinput.txtи на скрытых вводах;course answer day09.q6 ОТВЕТ— всё, что напечатает программа, одной строкой: предсказание сдают до запуска, потом сверяют;- код
bug1–bug3отформатирован:gofmt -l .в каждой папке ничего не печатает.
Отладочную печать из заданий уберите: проверка читает вывод программы вместе с потоком ошибок, и лишняя строка — это неверный вывод.
Починки точечные: в bug1, bug2 и bug3 изменено по одной-две строки, строки import не считаются. Это часть самих пунктов bug1, bug2, bug3: переписанная заново программа даёт верный вывод, но зачёта не получает — день про поиск дефекта в чужом коде.
Готово, когда: пункты bug3, q6 и bugfmt зелёные.
6. Словарик ошибок — страница 6
Сделать: в ~/errors.md — минимум восемнадцать строк вида «текст ошибки — что значило». Между ошибкой и разбором — тире с пробелами вокруг.
Готово, когда: пункт errors зелёный.
7. Звёздочка
В зачёт не входит, course check 09 эти задания не смотрит.
- Отладьте
bug2в VS Code: вторая конфигурация вlaunch.jsonс"program"наbug2, ввод набирается в терминале. Сколько строк нужно ввести, чтобы дефект проявился? - В
findнайдите отладчиком, на каком заказе остаток впервые опустился ниже половины того числа, что стоит в первой строкеorders.txt. Хватит одной точки с условием — на какой строке и с каким? - Сломайте починенный
bug1по-другому: поставьте скобкиprice * (percent / 100). Предскажите вывод, проверьте и объясните через таблицу дефектов страницы 6.
Готово, когда: на каждый вопрос звёздочки есть ответ, проверенный запуском или отладчиком.
Порог: 16 пунктов из 18. После зачёта — контрольные вопросы: course quiz 09.