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

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

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

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

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


1. Откуда берётся ввод — страница 2

Подайте программе ввод через конвейер |, из файла через < и отправьте вывод программы в файл через > — команды в «Попробуйте сейчас» второй страницы.

Готово, когда: course check 07 отмечает ✔ пункты «Подавали ввод

программе через конвейер |» (t_pipe), «Подавали программе ввод из файла через <» (t_infile) и «Отправляли вывод программы в файл через >» (t_outfile).

2. Строка в число — страница 3

2.1. Предсказание — до запуска:

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

Вместо ВАШ_ОТВЕТ — число и слово true или false через пробел.

2.2. Почините ~/gocourse/day07/fix2: программа собирается, на ввод 1990 печатает Цена: 19 руб. 90 коп., на не число — сообщение в поток ошибок и код возврата 1. Правка точечная: изменённых строк от одной до двух, строки import не считаются. Что поменяли:

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

Готово, когда: ✔ у пунктов «Что выведет: Atoi на строке с пробелом в конце» (q1) и «fix2 собирается, печатает цену в рублях, на не число — ошибка и код 1» (fix2). Лимит правки — часть пункта fix2: переписанную заново программу он не засчитает.

3. Стоимость позиции — страница 4

Напишите ~/gocourse/day07/cost/main.go: читает цену в копейках и количество и печатает стоимость по условию из ~/gocourse/day07/cost/TASK.txt. Копейки — всегда две цифры, пробелы вокруг чисел не мешают. Ошибку Atoi проверяйте: среди вводов проверки есть и такие, где числа нет, — на них строки со стоимостью быть не должно, а в выводе должно быть слово «ошибка».

Об ошибке Atoi здесь сообщают по упрощённому образцу четвёртой страницы — Println и return. На пятой странице правило станет строже (поток ошибок и os.Exit(1)), но сданный cost от этого не перестанет быть правильным: переделывать его не нужно. Кто хочет — переделка есть в звёздочке.

Готово, когда: ✔ у пункта «cost печатает стоимость позиции по цене и количеству с ввода» (cost).

4. Код возврата и поток ошибок — страница 5

4.1. Посмотрите код возврата сразу после запуска программы — как в «Попробуйте сейчас» пятой страницы:

▶ Выполните
cd ~/gocourse/day07/fix1
echo abc | go run .; echo $?

4.2. Предсказания — до запуска, каждое двумя числами через пробел:

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

В первой строке — сколько строк уйдёт в out.txt и сколько останется на экране; во второй — значения boxes и left перед проверкой if left != 0.

4.3. Почините ~/gocourse/day07/fix1: на ошибку Atoi — сообщение со словом «ошибка» в поток ошибок и код 1; на целое число, включая 0, — как раньше. Правка точечная: изменённых строк от одной до семи, строки import не считаются. Что поменяли:

▶ Выполните
diff ~/.course/orig/day07/fix1/main.go ~/gocourse/day07/fix1/main.go

4.4. Напишите ~/gocourse/day07/accept/main.go по ~/gocourse/day07/accept/TASK.txt: проверка сверяет обычный вывод, поток ошибок и код возврата.

4.5. Проверьте код в accept:

▶ Выполните
cd ~/gocourse/day07/accept
go vet .

Готово, когда: go vet . ничего не печатает; ✔ у пунктов «Смотрели код возврата через echo $?» (t_status), q2, q3, «fix1: на не число — сообщение в поток ошибок и код 1…» (fix1), «accept принимает число больше нуля…» (accept) и «go vet в accept молчит» (accept_vet).

5. Программа с вводом целиком — страница 6

5.1. Предсказание — до запуска:

▶ Выполните · выделенное замените своим
course answer day07.q4 ИМЯ_ФАЙЛА ЧИСЛО

Имя файла, в который попадёт сообщение об ошибке, и сколько строк напечатает на экран сама программа.

5.2. Напишите ~/gocourse/day07/reserve/main.go по условию из ~/gocourse/day07/reserve/TASK.txt — страховой запас у вас свой.

Готово, когда: ✔ у пунктов «Куда попадёт сообщение при Println и return» (q4) и «reserve считает резерв с учётом страхового запаса» (reserve).

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

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

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

7. Звёздочка

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

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


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