Сори что вмешиваюсь, просто примечание:
По моему скромному опыту обучения кого-либо программированию могу сказать, что сложнее всего прививается именно понимание программы как последовательности действий. По умолчанию народ воспринимает текст программы целиком и сразу (свободно читает его как сверху-вниз, так и снизу вверх). Отсюда возникают проблемы с понимаением "почему оно выдает не то что ожидалось".
с этим особых проблем нет - если делать грамотно и обучаемый обладает достаточным уровнем развития для понимания решаемой задачи
.Данный навык формируется на ранних этапах обучения - если его (это обучения) разбить на 3 этапа, то оно состоит из
1. Понимание задания, получение формального решения (лично я считаю что если по некоторому корректному набору начальных данных обучаемый не способен получить правильный конечный результат - переходить к основным этапам смысла нет)
2. Составление по нему алгоритма
3. Отображения его на целевой ЯП
- около 90 % УСТОЙЧИВЫХ ошибок приходится на 1 этап, на остальные где -то по 5% - причем на последнем УСТОЙЧИВО валятся самые слабые (для которых большие проблемы составляет 1 и 2 этапы)