Skip to content

The C Pointer Game - Pointers, Arrays and Strings for Kids

https://punkx.org/c-pointer-game/

Одна из самых сложных для понимания концепций в современном программировании — это разница между значением и ссылкой. Эта игра призвана помочь с этим. Родителю нужно немного знать язык C, чтобы играть.

DeckDeck 1Deck 2Deck 3

Купить сейчас: €5,00 EUR [ распродано ]


Родителю нужно немного знать язык 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. Идите и поиграйте на улице, может быть, 
   возьмите ролики и немного покатайтесь?

Пример раунда:

Example 1Example 2

P.S.: Я пытался подобрать синий цвет коробки под синий цвет книги Кернигана и Ритчи (K&R), но, к сожалению, он немного отличается — я всё ещё привыкаю к цветам CMYK.

Контакты: bystrovno@basealt.ru