The C Pointer Game - Pointers, Arrays and Strings for Kids
https://punkx.org/c-pointer-game/
Одна из самых сложных для понимания концепций в современном программировании — это разница между значением и ссылкой. Эта игра призвана помочь с этим. Родителю нужно немного знать язык C, чтобы играть.
Купить сейчас: €5,00 EUR [ распродано ]
- распечатайте сами: c-cards.pdf, c-box.pdf
- код: c-pointers
- автор: github.com/jackdoe
- соавтор: Jackie (помогала с тестированием и идеями)
- контакт: b0000@fastmail.com
- лицензия: CC BY 4.0
Родителю нужно немного знать язык C, чтобы играть. В игре есть 6 карт, объясняющих концепции символов, массивов, указателей и строк, но этого может быть недостаточно — особенно из-за перегруженного и запутанного использования &, *, (), [] в языке. Поэтому вам придётся немного помогать с чтением кода. Некоторые карты сложнее других, а одна — просто странная. Весь код на картах был скомпилирован, и вывод использовался для создания строкового значения в памяти и указателей на него.
Большинство языков, которые мы используем сегодня, были изобретены, а не открыты (как LISP), и по сути они представляют собой «приукрашенные» ассемблеры. Почти все они «протекают» абстракцией указателей и делают вид, что нормально не знать, как устроена память программы, что, на мой взгляд, приводит к значительной путанице — особенно вокруг знака =. Многие люди с трудом понимают, что означает в коде следующее:
x = 5
y = x
x = 6
print(y)
и
a = []
b = a
a.push(1)
print(b)Я считаю, что глубокое понимание указателей поможет детям увидеть суть за «синтаксическим сахаром» и в будущем создать что-то крутое.
ПРАВИЛА:
1. Перемешайте карты. Разделите карты с кодом
между игроками, а карты памяти положите
рубашкой вверх в центре.
2. Возьмите верхнюю карту памяти и положите её
рубашкой вверх в центре стола.
3. Найдите карту с кодом, соответствующую памяти.
Все переменные должны иметь правильные значения
на карте памяти.
ПРИМЕР:
char *foo = "bar";
char *pa = foo + 1;
char v = foo[1]
Вам нужно найти в памяти:
+ 98 97 114 0 (например, адрес 172)
+ 172 (foo указывает на "bar")
+ 173 (pa = foo + 1)
+ 97 (v = foo[1])
4. Первый игрок, нашедший совпадение,
выигрывает и откладывает выигравшую карту.
5. ЕСЛИ у игрока закончились карты, ПЕРЕЙТИ к шагу 7.
6. ПЕРЕЙТИ к шагу 2.
7. Идите и поиграйте на улице, может быть,
возьмите ролики и немного покатайтесь?Пример раунда:
P.S.: Я пытался подобрать синий цвет коробки под синий цвет книги Кернигана и Ритчи (K&R), но, к сожалению, он немного отличается — я всё ещё привыкаю к цветам CMYK.






