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

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

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

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

1. Четыре предсказания — страницы 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 эти задания не смотрит.

Готово, когда: minAt проходит свой тест, а на вопросы про fix2 есть ответ, проверенный запуском.


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