День 16 — задания
Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 16. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом. Список страниц:
course toc 161. Четыре предсказания — страницы 1, 2, 3, 6
Сделать: сдать ответы на четыре вопроса «что выведет».
course answer day16.q1 ОТВЕТ
course answer day16.q2 ОТВЕТ
course answer day16.q3 ОТВЕТ
course answer day16.q4 ОТВЕТВместо ОТВЕТ — числа через пробел в том порядке, в каком их напечатает программа: в q1 три числа, в q2 четыре, в q3 одно, в q4 два. Можно отправить заново — засчитывается последний ответ.
Готово, когда: пункты q1, q2, q3, q4 в course check 16 зелёные.
2. Приёмка — страница 2
Сделать: почините ~/gocourse/day16/fix1 — программа должна принимать все ячейки и считать их сумму. Правка — одна-две строки.
cd ~/gocourse/day16/fix1
go run . < example.txt
diff ~/.course/orig/day16/fix1/main.go main.goГотово, когда: пункт fix1 зелёный. Проверка прогонит программу на нескольких вводах — часть скрыта — и сверит размер правки.
3. Паника и опись — страница 3
Сделать: посмотрите код возврата упавшей программы и почините ~/gocourse/day16/fix2 — опись без сдвига и без паники, номера с 1. Правка — одна-две строки.
cd ~/gocourse/day16/fix2
go build -o prog .
./prog < example.txt
echo $?Готово, когда: пункты t_exit и fix2 зелёные. t_exit смотрит журнал команд: засчитывается то, что вы набирали echo $?.
4. Трассировка — страница 4
Сделать: заполните ~/gocourse/day16/trace/table.txt по правилам 1–26: срез в клетке — как его печатает fmt.Println, последний шаг строки for … range — с прочерками. Меняйте только ?, program.go не правьте.
Готово, когда: пункт trace зелёный.
5. Отчёт по ячейкам — страница 5
Сделать: напишите ~/gocourse/day16/stock/main.go по условию ~/gocourse/day16/stock/TASK.txt — порог у вас свой.
cd ~/gocourse/day16/stock
cat TASK.txt
go run . < example.txt
go run . < /dev/nullГотово, когда: пункты stock и stocklimit зелёные. Проверка прогонит программу на скрытых вводах и посмотрит устройство: в копии программы испортит срез — каждый append оставит в нём одно последнее число. Если сумма и максимум считаются по срезу, отчёт изменится; если на лету, мимо среза, — останется прежним, и зачёта не будет.
6. Тест к функции над срезом — страница 6
Сделать: напишите в каталоге ~/gocourse/day16/low файл low_test.go — тест к функции lowCells: сравнение длины и каждого элемента; среди случаев — такой, где ниже порога последняя ячейка. low.go не меняйте.
cd ~/gocourse/day16/low
cat TASK.txt
go test -v .Готово, когда: пункты lowtest и lowedge зелёные. Проверка подменит функцию двумя неверными версиями — тест обязан падать на обеих — и прогонит его на другой верной записи функции, где он обязан пройти.
7. Ритуал и коммиты — страница 7
Сделать: приведите модуль в порядок и запишите работу в историю.
cd ~/gocourse/day16
gofmt -l .
go vet ./...
go test ./...
git add .
git commit -m "что сделали"
git log --onelineГотово, когда: пункты code_fmt и git зелёные: код stock, low, fix1, fix2 отформатирован и go vet молчит; в истории не меньше четырёх коммитов с изменениями, в последнем лежат stock/main.go и low/low_test.go. code_fmt считается только вместе с программой stock.
8. Словарик ошибок — страница 7
Сделать: в ~/errors.md — минимум 32 строки вида «текст ошибки — что значило». Между ошибкой и разбором — тире с пробелами вокруг.
Готово, когда: пункт errors зелёный.
9. Звёздочка
В зачёт не входит, course check 16 эти задания не смотрит.
- Допишите в
stockпятую строку отчёта — средний остаток целыми штуками. Что программа должна печатать на одной ячейке, а что — на пустом вводе? - Напишите в
scratchфункциюfunc minAt(stock []int) int— индекс самой пустой ячейки — и тест к ней с таблицей случаев. Какой ответ правильный, если минимум встречается дважды? Решите и запишите это в имя случая. - В
fix2верните дефект и соберите программу; запустите./progс пустым вводом. Почему паники нет? Какой ввод из одной строки уронит программу сразу? - Посмотрите изменения одного задания в истории:
git log --oneline, потомgit showс хешем коммитаfix1.
Готово, когда: minAt проходит свой тест, а на вопросы про fix2 есть ответ, проверенный запуском.
Порог: 12 пунктов из 15. После зачёта — контрольные вопросы: course quiz 16.