День 05 — глубже
Всё здесь необязательно. Материалы на английском помечены.
Как решать задачи
- Джордж Пойа, «Как решать задачу» — книга 1945 года о решении математических задач, есть на русском. Четыре шага — понять задачу, составить план, осуществить план, оглянуться назад — почти те же, что на первой странице. Раздел про «оглянуться назад» — ровно о шаге «сверить», который чаще всего пропускают.
- McCracken et al., 2001 (англ.) — https://kar.kent.ac.uk/13514/4/a_multinational_ulti-institutional_mccracken.pdf То самое исследование о задаче на полтора часа. Интересно не число 22,9 из 110, а разбор, на каких шагах студенты теряли баллы.
Чтение раньше письма
- PRIMM (англ.) — https://computingeducationresearch.org/projects/primm/ Схема «предскажи → запусти → разбери → измени → напиши», по которой в курсе устроены задачи «что выведет». Объяснено, почему предсказание до запуска работает лучше, чем запуск сразу.
- Задачи Парсонса (англ.) — https://computinged.wordpress.com/2017/11/17/parsons-problems-have-same-learning-gains-as-writing-or-fixing-code-in-less-time-koli-calling-2017-preview/ Короткий пост о том, почему сборка программы из готовых строк учит не хуже написания с нуля, а времени занимает меньше.
Как Go понимает присваивание (англ.)
- The Go Programming Language Specification, раздел Assignment statements — https://go.dev/ref/spec#Assignment_statements Спецификация языка — сухо, но точно. Найдите абзац про то, что при
a, b = b, aсначала вычисляются все правые части. Это ответ на вопрос, почему обмен работает без третьей переменной.
Мини-опыты
- В
packзамените(items + perBox - 1) / perBoxна вариант сmath.Ceil. Совпадает ли вывод на всех четырёх примерах? Какие строки пришлось добавить вimport? - Придумайте для
packпример, который не проверили на странице: заказ на одну штуку, заказ ровно на одну коробку. Посчитайте на бумаге, потом запустите. - В опыте с программой «остатки» с третьей страницы перенесите строку
free = stock - reservedниже — сразу послеreserved += free / 4. Теперьсвободно 46? Какие ещё числа в выводе изменились по сравнению с опытом на странице и почему? - В разминке
warmupпоменяйте местами строки расчётаdaysиleft. Изменится ли вывод? А если поменять местами строки печати?