День 05 · Контрольная точка 1: как решать задачу · страница 5 из 5

Контрольная точка 1

Блок 1 закончен. Контрольная точка — восемь задач по всему блоку: по ним видно, какие темы осели, какие нет. Блок 2 — условия и циклы — строится поверх переменных, арифметики и чтения кода, поэтому незасчитанная задача показывает, что повторить до него.


Задачи

Каждая задача — в своей папке, условие — в TASK.txt этой папки. Данные у каждого стажёра свои.

№ Папка Что сделать Темы Где перечитать
1 kt1 заказ со скидкой копейки, / и %, Printf страницы 1–2, памятка
2 kt2 коробки и паллеты деление с остатком, округление вверх страница 2
3 kt3 артикул и этикетка strings, strconv, utf8 памятка
4 kt4 программа не собирается сообщения компилятора страница 3, памятка
5 kt5 программа считает неверно порядок действий, аргументы Printf страница 3
6 kt6 таблица трассировки присваивание, обмен, ++ страница 3; день 02, стр. 4
7 kt7 значения переменных перед печатью трассировка на бумаге страница 3
8 kt8 задача Парсонса порядок подцелей день 04, стр. 7

Начало:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~$ cd ~/gocourse/day05/kt1
stagiaire@lab:~/gocourse/day05/kt1$ cat TASK.txt

Как сдаётся

Все задачи проверяет одна команда — course check 05. Сдавать отдельно ничего не нужно, кроме ответа на задачу 7:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day05/kt7$ course answer day05.kt7 ЧИСЛА

Вместо слова ЧИСЛА — три числа через запятую, без пробелов и кавычек, в порядке, который назван в kt7/TASK.txt.

Программы — два запуска. Задачи 1–5 и 8 проверяются так: программа запускается как есть, с вашими данными, а потом ещё раз — с другими данными, подставленными в строки с начальными значениями. Какими — написано в TASK.txt. Условий в программах блока 1 нет, поэтому программа не может «узнать», какие данные ей дали: если хоть одно число посчитано в уме и вписано в Println, второй запуск его поймает. Отсюда требование к задачам 1–3: первые строки main — ровно такие, как в разделе «ВАШИ ДАННЫЕ», с теми же именами переменных.

Починки — точечно. В kt4 можно изменить не больше трёх строк, в kt5 — не больше двух. Строки import в счёт не входят: подключить нужный пакет можно. Оригиналы лежат в ~/.course/orig/day05. Что вы поменяли:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day05/kt4$ diff ~/.course/orig/day05/kt4/main.go ~/gocourse/day05/kt4/main.go

Правка ушла не туда — вернуть оригинал и начать заново:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day05/kt4$ cp ~/.course/orig/day05/kt4/main.go ~/gocourse/day05/kt4/main.go

Парсонс — только переставлять и удалять. Строку, которой не было в заготовке, проверка не примет.


Порог и пересдача

Задача засчитана целиком или не засчитана: половины задачи не бывает. В конце проверки — отдельный итог по контрольной точке:

Вывод · это печатает программа, набирать не нужно
--- контрольная точка 1 ---
Задач сдано: 0 из 8. Порог — 6. Пересдача — доделайте задачи и повторите course check 05.

Так он выглядит на пустом стенде. Порог — 6 задач из 8.

День закрывается, только когда выполнены три условия: сдано 11 пунктов из 14 — тренировка и задачи вместе; контрольная точка взята; сданы контрольные вопросы. Пунктов может хватить и без контрольной, но день всё равно не закроется:

Вывод · это печатает программа, набирать не нужно
Контрольная точка не взята: 5 из 8 при пороге 6.
День не закрыт: пункты контрольной обязательны.

Когда пункты и контрольная точка сданы, проверка напомнит о вопросах:

Вывод · это печатает программа, набирать не нужно
Остался последний шаг — контрольные вопросы по материалу:
   course quiz 05

После course quiz 05 запустите course check 05 ещё раз — тогда день закроется.

Пересдача — это повторный course check 05. Число попыток не ограничено, следующий день не блокируется. Между двумя проверками — не меньше 15 секунд, и каждая попытка записывается в ~/.course/checks. Пауза — против перебора «поправил наугад — проверил»: быстрее запустить программу самому и сравнить вывод с TASK.txt глазами.


Подсказки — в крайнем случае

course hint 05 kt3 работает и на контрольной: три уровня. Первый — направление и страница, второй — что именно не так и где. Третий — самый подробный разбор способа: что выписать из условия, в каком порядке действовать, где легко ошибиться, как себя проверить. Готового решения на контрольной точке третий уровень не даёт — ни кода, ни ответа: смысл контрольной в том, чтобы увидеть, какие темы не осели.

Все взятые подсказки попадают в отчёт. Задача, решённая по третьей подсказке, засчитывается, но тему, которая не осела, уже не показывает. То же с кодом от ИИ или соседа: проверка не видит, кто его писал.

Застряли — сначала по порядку:

  1. Перечитать TASK.txt целиком, особенно пример.
  2. Запустить программу и сравнить вывод с условием построчно.
  3. Перечитать страницу из таблицы задач; найти сообщение или функцию в памятке — четвёртой странице.
  4. Двадцать минут пробовать самим.
  5. Взять первый уровень подсказки — направление. Обычно его хватает.

Как распределить время

На контрольную заложите около трёх часов.


Что может пойти не так

Что видите Что это значит Что делать
в kt1 нет файлов .go main.go не создан или лежит в другой папке ~/gocourse/day05/kt1/main.go
не нашёл в main.go строк с начальными значениями: price переменная названа иначе, чем в TASK.txt первые строки main — ровно как в «ВАШИ ДАННЫЕ»
то же сообщение, а имена в main.go те же, что в TASK.txt данные объявлены одной строкой через запятую: price, qty := 1510, 3. Проверка подменяет значения по строкам и такую запись не разбирает объявлять по одной строке на переменную, как в «ВАШИ ДАННЫЕ»
второй запуск, с другими данными из TASK.txt: и неверная строка в программе число вместо переменной, или формула верна только на ваших данных поставить в строки данных значения второго запуска из TASK.txt и запустить самим
изменено строк: 7 (строки import не считаются), можно не больше 3 программа переписана, а не починена вернуть оригинал через cp и чинить точечно
строки нет среди исходных или она использована дважды в Парсонсе строка дописана или изменена вернуть заготовку из ~/.course/orig/day05/kt8
В таблице остались знаки ? — замените каждый числом. заполнены не все клетки найти ? в VS Code через Ctrl+F; прочерки заготовки не трогать
Строк с шагами в таблице 10, а нужно 9 у шапки пропала # или строку добавили; при 8 — строку удалили шапка начинается с #; строк с шагами — ровно столько, сколько в заготовке
задача 7 не засчитана, хотя программа из TASK.txt в черновике печатает то же, что вы думали спрашивается не вывод, а значения переменных в момент печати таблица трассировки на бумаге, как в задаче 6; смотреть последнюю строку перед Printf
Проверка дня 05 запускалась 9 с назад. Повторить можно через 6 с. между проверками меньше 15 секунд подождать; тем временем запустить программу самим

Материал дня закончен. Задания — course lab 05, дополнительное чтение — course extra 05