День 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.go4.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. Звёздочка
В зачёт не входит.
- Перепишите
costтак, чтобы на неправильный ввод программа завершалась с кодом 1 и сообщением в поток ошибок, а ещё отдельно сообщала, что строки с количеством нет. Прогоните таблицей вводов из файлов. - Программа читает вес посылки в килограммах через
strconv.ParseFloat(course extra 07) и печатает тариф: до 1 кг — 250 руб., до 5 кг — 400 руб., тяжелее — 700 руб. Какой ответ на ввод1и почему? Что будет на ввод1,5? - Создайте в
mainдваscannerизos.Stdinи прочитайте каждым по строке изprintf '1\n2\n'. Объясните, куда делась вторая строка.
Готово, когда: на вопросы из пунктов есть ответ; course check эти задания не сверяет.
Порог: 12 пунктов из 15. После зачёта — контрольные вопросы: course quiz 07.