Я преподаю программирование для начинающих (начиная с 12-15 лет), и один из вариантов, который мы сделали (потому что это было естественно в Python), - научить понятию «повторять действие» перед понятием переменных .
Мы пели в Python с
for loop in range(10):
не говоря о переменных массивов и в C ++ с
#define repeat(nb) for(int _loop = 0 ; _loop < (nb) ; _loop++)
Идея заключалась в том, чтобы скрыть сложность классического цикла, чтобы настаивать на «повторной» части. Мы не скрываем от студентов тот факт, что «repeat (10)» не является частью C ++,
это просто способ упростить обучение.
В Паскале мы не можем сделать намного больше, чем
for loop := 1 to 10 do
но это нормально, потому что это не так сложно запомнить.
Я искал что-то похожее в Java и обнаружил, что:
import java.util.List;
import java.util.AbstractList;
class Range {
public static List<Integer> size(final int end) {
return new AbstractList<Integer>() {
@Override
public Integer get(int index) {
return 0 + index;
}
@Override
public int size() {
return end;
}
};
};
}
public class Main {
public static void main(String[] argv) {
for (int loop : Range.size(10)) {
System.out.println("xx");
}
}
}
The
for (int loop : Range.size(10))
все еще легче запомнить, чем
for(int loop = 0 ; loop < 10 ; loop++)
но есть две проблемы:
- две переменные необходимы для создания циклов for: я не думаю, что мы сможем с этим многое сделать
- у нас есть предупреждения, потому что переменная
loop
не используется
Видите ли вы лучшее решение, чем у нас?
Еще раз, мы только хотим предоставить некоторый «инструмент» на начальном этапе, чтобы ученики могли «повторить» действия, прежде чем узнавать что-либо о «переменных». Мы не прячемся от них, которых нет в языке, и после нескольких упражнений (~ 80-100) мы просим их использовать настоящий синтаксис.
<ч />
У нас есть около 20 упражнений, прежде чем вводить переменные: некоторые о печати текстов, но в основном мы предоставляем одну библиотеку с объектами, которыми вы можете манипулировать (следовательно, переменные скрыты в состоянии объекта). Вы можете думать о «логотипе-черепахе», например. Таким образом, понятием «цикл» можно манипулировать и «видеть», прежде чем вводить явные переменные, и вы можете быстро выполнять интересные упражнения.
Один пример, в Python, где вы хотите посетить каждый случай таблицы 10x10 один раз и только один раз, а затем вернуться в исходную точку (нижний левый угол):
from robot import *
top()
for loop in range(4):
for loop in range(8):
top()
right()
for loop in range(8):
bottom()
right()
for loop in range(8):
top()
right()
for loop in range(9):
bottom()
for loop in range(9):
left()
Это упражнение не так просто, но синтаксис действительно прост и позволяет ученику сосредоточиться на «алгоритмической» части, а не на «языковой».
После нескольких упражнений студенты начинают интересоваться, и мы можем ввести больше синтаксиса и более сложные понятия, такие как переменные.