День 04 — задания
Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 04. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом.
course toc 041. Документация — страница 5
Что сделать: выполнить в терминале go doc для функции пакета strings и для функции пакета math или strconv — например, как на пятой странице:
go doc strings.Repeat
go doc math.CeilГотово, когда: обе команды есть в журнале — пункты t_godoc и t_godoc2.
2. Этикетка — страницы 3–5
Что сделать: программу ~/gocourse/day04/label/main.go, которая печатает шесть строк из ~/gocourse/day04/label/TASK.txt — у вас свой товар, у соседа другой.
- название и артикул в верхнем регистре получены
strings.ToUpper; - строки из
=построеныstrings.Repeat, ширина вычислена из названия в символах, а не записана числом; - цена округлена
math.Round, число коробок —math.Ceil; - результат каждого вызова положен в переменную или передан в
Println: вызов отдельной строкой ничего не меняет; gofmt -l .в папкеlabelничего не печатает;go vet .в папкеlabelничего не печатает — привычка с дня 03 («перед сдачей —go vet .») действует и сегодня.
cd ~/gocourse/day04/label
cat TASK.txt
go run .
gofmt -l .
go vet .Отдельного пункта проверки у go vet сегодня нет — привычку держите сами. Сдавайте label только после того, как vet промолчал.
Проверка запускает программу трижды: с вашими значениями; копией, в которой значения заменены другими; и копиями, в которых math.Ceil заменена на math.Floor, а math.Round — на math.Trunc. Этикетка, посчитанная в уме и вписанная в Println, второй запуск не проходит, а расчёт целыми числами рядом с вызовом math, который никуда не идёт, — третий.
Готово, когда: программа печатает этикетку из TASK.txt буква в букву и пересчитывает её на других значениях (label), а считают её функции ToUpper, Repeat, Round, Ceil, без готовых строк и в формате gofmt (label_funcs).
3. Чужой код: таблица и три ответа — страница 6
Что сделать: заполнить таблицу трассировки ~/gocourse/day04/read/table.txt по программе ~/gocourse/day04/read/main.go и ответить на три вопроса из ~/gocourse/day04/read/TASK.txt — сначала предсказание, потом запуск:
cd ~/gocourse/day04/read
cat TASK.txt
cat table.txtВ таблице заменяются только знаки ?: шаги, номера строк и прочерки остаются. Строку пишите в кавычках, дробное число — так, как его печатает Println (23.5 и 3, без .0).
course answer day04.q5 ВАШ_ОТВЕТ
course answer day04.q6 ВАШ_ОТВЕТ
course answer day04.q7 ВАШ_ОТВЕТВместо каждого ВАШ_ОТВЕТ — строка вывода целиком: в q5 первая, в q6 вторая, в q7 третья.
Готово, когда: таблица совпала с эталоном (trace), а все три ответа — с выводом программы (q5, q6, q7).
4. Задача Парсонса — страница 7
Что сделать: собрать ~/gocourse/day04/parsons/main.go из строк заготовки — переставить их и удалить две лишние.
cd ~/gocourse/day04/parsons
cat TASK.txt
go run .Готово, когда: программа собирается, печатает четыре строки из TASK.txt, и в файле только строки заготовки — переставленные, без двух лишних (parsons).
5. Две починки — страницы 5 и 7
Что сделать: починить fix1 и fix2, чтобы они печатали то, что обещано в комментарии в начале файла. В каждой изменить не больше двух строк.
cd ~/gocourse/day04/fix1
go run .
cd ~/gocourse/day04/fix2
go run .Починенные программы проверка тоже запускает дважды — второй раз с другими числами в первых строках main. Вписанный вместо починки ответ на втором запуске виден сразу.
Готово, когда: fix1 печатает остаток между двумя чертами и пересчитывает его на других числах, изменено 1–2 строки (fix1); то же для fix2 с артикулом и ячейкой (fix2).
6. Четыре предсказания — страницы 1–4
Что сделать: отправить предсказанный вывод программ из блоков «что выведет»:
course answer day04.q1 ВАШ_ОТВЕТ
course answer day04.q2 ВАШ_ОТВЕТ
course answer day04.q3 ВАШ_ОТВЕТ
course answer day04.q4 ВАШ_ОТВЕТВместо каждого ВАШ_ОТВЕТ — строка вывода программы целиком: q1 — с первой страницы, q2 — со второй, q3 — с третьей, q4 — с четвёртой.
Ответ можно отправить заново — засчитывается последний.
Готово, когда: ответы совпадают с выводом программ — пункты q1–q4.
7. Словарик ошибок — страницы 1–4 и 7
Что сделать: довести ~/errors.md до девяти строк вида «текст ошибки — что значило»: слева сообщение компилятора, как его напечатал Go, справа через тире разбор по-русски. Двоеточие вместо тире не засчитывается. Записи прошлых дней считаются.
Готово, когда: в файле не меньше девяти таких строк — пункт errors.
8. Звёздочка
В зачёт не входит: course check 04 эти задания не сверяет.
- Скопируйте программу
readв черновик:
cp ~/gocourse/day04/read/main.go ~/gocourse/day04/scratch/main.go В копии поменяйте weight на 30.0 и добавьте в список ещё один стул. Предскажите все три строки вывода, потом запустите в scratch.
- Сделайте рамку из звёздочек вокруг своего названия — в черновике, как показано в
course extra 04. Вlabelеё делать нельзя: проверка сверяет шесть строк буква в букву. - Найдите в
go doc stringsфункцию, которая убирает заданное начало строки и возвращает один результат, а не два, какCutPrefix. Вызовите её в черновике. go doc -src strings.Repeatпокажет не только описание, но и сам код функции. Найдите в нём строку, которая вызывает панику на отрицательном числе.
Порог: 15 пунктов из 16 — потерять можно один. Этикетка держит два пункта (label и label_funcs): без неё день не закрывается. После зачёта — контрольные вопросы: course quiz 04.