Т.е. на вот этом простом примере:

ПОЛОЖИТЬ p1
ПОЛОЖИТЬ p2
ПОЛОЖИТЬ p3
СЧКОМ=МЕТКАВОЗВРАТА
БП ПРОГ
МЕТКАВОЗВРАТА:
...
ПРОГ:
...
СНЯТЬ p3:
СНЯТЬ p2:
СНЯТЬ p1:
БП СЧКОМ

дитя получает представление, как минимум: о стеке и его важности в программировании, о процедуре, о счетчике команд, о передаче параметров по значению и ссылке, о локальных переменных процедуры, о способе реализации концепции процедуры.  А так же о важности структурного подхода и о том, почему лучше использовать: procedure(p1;p1;p3;var p4)..
В противном случае все эти конструкции в сознании дитя - повисают в воздухе.
Используя массивы для организации структур данных, можно дать: концепцию указателя, удобство использования структур в противовес только длишь массивам, технику распределения и освобождения памяти, сущность кучи. Необходимость модульности. Т.е. вплотную подвести дитя к концепциям Оберона, продемонстрировав при этом несостоятельность оператора Goto, через реализацию на его основе, алгоритмов и структур данных.

Или же еще лучше:

УПРЯТАТЬ(p1,p2,p3,СЧКОМ+2): ИДИ ПРОГ
...
ПРОГ:
.НЕЛЬЗЯСТЕК
. ...
.МОЖНОСТЕК
ИЗВЛЕЧЬ(M,p3,p2,p1): ИДИ M

Или еще лучше:

ДЕФОПР CALL[<>,NAME]->МОЖНОСТЕК:УПРЯТАТЬ(<>,СЧКОМ+3):НЕЛЬЗЯСТЕК:ИДИ NAME
ДЕФОПР ENDPROC[<>]->МОЖНОСТЕК:ИЗВЛЕЧЬ(<>,M):ИДИ M

CALL[p1,p2,p3,NAME]

NAME:
....
ENDPROC[p1,p2,p3]