переменные должны объявляться как можно ближе к контексту
Да. Не будем забывать о параметрах процедуры или функции. Это важнейшие переменные и значения. К ним (т.е. к заголовку) и должны быть ближе остальные локальные переменные. В функции (процедуре) м.б. определены константы и типы, эти определения используются в определении переменных. Чем ближе все определения друг к другу — тем удобнее работать
Думаю, тут не требуется строгого определения. Интуитивно понятно, что пузырьковая сортировка вполне школьный алгоритм, а вот поиск прямых и овалов преобразованием Хафа в OpenCV для школы не обязателен, и параллельные алгоритмы в школе тоже не обязательны.
Ну да потому, что мы разносим инициализацию переменной и контекст её использования.
В разных ЯП разные требования к объявлению переменных, но постараюсь обобщить для противоположного Паскалю подхода.
Пусть школьнику поставлена задача прочитать координаты двух точек и вычислить расстояние между ними. Решая столь сложную задачу, школьник прочтет координаты первой точки в x1, y1 и координаты второй — в x2, y2. Потом найдет в мат. справочнике формулу, где расстояние дано для точек, координаты которых обозначены (x0, y0) и (x1, y1). Так и перепишет в программу и получит детскую ошибку. Во избежание подобных ошибок во многих учебниках рекомендуется сначала писать:
Это интуитивно понятное правило. Аналогично, театральные пьесы начинаются списком действующих лиц, а кулинарные рецепты — списком необходимых продуктов.
Вообще-то есть куча интерпретаторов Паскаля с открытым исходным кодом. К примеру, я взял P5 для поддержки спец. скриптов и добавил простую IDE на Delphi. Можно было бы для школ что-то подобное сделать и выложить как freeware.
В Delphi можно использовать класс TStringList, но ИМХО школьникам это не обязательно.
Переменные можно описывать только в начале функций.
Речь про локальные переменные функций. На мой взгляд это очень полезное правило и не только для школьников. Оно дисциплинирует, предохраняет от ряда глупых ошибок, улучшает стиль и читаемость кода.
Так что идеала не найти.
Раз люди постоянно предлагают новые ЯП, то значит идеала нет. Но ЯП близкий к идеальному для школы, не обязательно будет идеальным для разработки ПО и наоборот. Я продолжаю придерживаться взгляда, что в школе главное классические алгоритмы. Их удобно изучать на Паскале.
О! За вопросы по игре минусы дают! Если это делают организаторы, значит слишком много участников. А если делают участники, то это попытка убрать конкурентов? :)
Еще непонятный вопрос. Во многих играх допустим метод S/L (save/load). Можно ли в данной игре сохранить состояние и вернуться, пусть м.б. и с потерей общего времени?
Появились сомнения: ALLY это свой? Значений могло быть и больше: Любой, Свой, Чужой, Неизвестный, Пленник, Ранен и т.д.Некоторые из таких значений могли быть просто не перечислены. Свой = не Враг и т.д. В некоторых играх и не такое бывает.
Многие компиляторы (нпр., Дельфи) выдают предупреждения про неиспользованные переменные.
В ходе работы пришлось переделать:
Если определения были бы размазаны по всему телу процедуры в 100+ строк, то такая переделка была труднее. А тело было бы на два десятка строк больше.
В разных ЯП разные требования к объявлению переменных, но постараюсь обобщить для противоположного Паскалю подхода.
Пусть школьнику поставлена задача прочитать координаты двух точек и вычислить расстояние между ними. Решая столь сложную задачу, школьник прочтет координаты первой точки в x1, y1 и координаты второй — в x2, y2. Потом найдет в мат. справочнике формулу, где расстояние дано для точек, координаты которых обозначены (x0, y0) и (x1, y1). Так и перепишет в программу и получит детскую ошибку. Во избежание подобных ошибок во многих учебниках рекомендуется сначала писать:
Это интуитивно понятное правило. Аналогично, театральные пьесы начинаются списком действующих лиц, а кулинарные рецепты — списком необходимых продуктов.
Я так и не получил ответа: dcc32 в compile-dpr.bat у вас на сервере будет работать?
В Delphi можно использовать класс TStringList, но ИМХО школьникам это не обязательно.
Речь про локальные переменные функций. На мой взгляд это очень полезное правило и не только для школьников. Оно дисциплинирует, предохраняет от ряда глупых ошибок, улучшает стиль и читаемость кода.
Раз люди постоянно предлагают новые ЯП, то значит идеала нет. Но ЯП близкий к идеальному для школы, не обязательно будет идеальным для разработки ПО и наоборот. Я продолжаю придерживаться взгляда, что в школе главное классические алгоритмы. Их удобно изучать на Паскале.
Не спортивно!
На Паскале я могу написать цикл:
Как мне определить a, b?
А еще там есть compile-dpr.bat, в котором:
if "%DELPHI7_HOME%" == "" (
dcc32 -Q -cc Runner.dpr 1>compilation.log
) else (
"%DELPHI7_HOME%\Bin\dcc32" -Q "-U%DELPHI7_HOME%\Bin" "-I%DELPHI7_HOME%\Bin" -cc Runner.dpr 1>compilation.log
)