1. Методика изложения темы «Циклы».
Операторы
цикла обычно начинают изучать с цикла с предусловием (цикла while). При
реализации циклических алгоритмов часто возникает искушение организовывать
данные в массивы, но поначалу делать это нецелесообразно. Достаточно
ограничиться приемами обработки данных, последовательно вводимых с клавиатуры.
Задачи типа «найти сумму чисел, вводимых с клавиатуры» не требуют
структурирования данных. Затем переходим к более сложным задачам, требующим
суперпозиции операторов цикла и развилки (типа «среди последовательно вводимых
с клавиатуры чисел найти суммы положительных»), — подобных задач много в любом
сборнике задач по программированию. Сочетание же изучения цикла с
использованием структурированных данных ведет к лишним трудностям (хотя для
сильных учащихся это вполне возможно).
Цикл
с постусловием (цикл repeat) и в теоретическом, и в практическом
плане по существу равносилен циклу с предусловием. Обратите внимание учащихся
на то, что для цикла с постусловием тело цикла выполнится как минимум один раз,
независимо от условия, а для цикла с предусловием может не выполниться ни разу.
Вновь решайте те же задачи, что и при отработке первого из видов цикла, с
использованием второго, фиксируя внимание учащихся на трансформации условий.
Как правило, при организации циклических процессов при заранее известном числе выполнения тела цикла наиболее удобен цикл с параметром (цикл for). Познакомьте с ним учащихся; обратите внимание, что по организации работы в Паскале этот цикл вначале проверяет условие, а затем реализует тело цикла. Цикл for устроен достаточно сложно, и детальное, по пунктам, «проговаривание» порядка его исполнения существенно помогает пониманию темы. Обратите внимание учащихся на то, что параметр цикла может иметь не только тип integer, но и любой порядковый тип. Разберите, например, задачу: вывести на экран последовательность латинских букв а, Ь, ..., z- Достичь этого можно, например, так:
var
i, j, k: integer;
…………………………………………………………………………
i:=ord(a); j:=ord(z); for k:=i to j do write (chr(k), '_')
но можно и более изящно:
var с:char;
………………………………………………………………………
for c:= 'a' to 'z' do write (c, '_')
Целесообразно
провести решение нескольких простых задач с помощью каждого из трех циклов и
сопоставить решения. Например, это может быть задача типа: найти сумму
квадратов первых 100 натуральных чисел.
Необходимо
показать учащимся и задачи, в которых цикл с параметром неприменим (или
применение его требует особых ухищрений). Это, прежде всего, итерационные
циклические процессы, в которых выход из цикла определяется не заранее
известным числом шагов, а условием, связанным с чем-то, вычисляемым в теле
цикла. Хорошим примером будут математические задачи типа: найти приближенное
значение sqrt(a) по итерационной формуле
с выходом из итераций
при достижении условия |хn+1- хn| < е.
Определенные
затруднения при первом знакомстве вызывает у учащихся освоение конструкций типа
«цикл в цикле». Вероятно, более целесообразно отложить ее рассмотрение до
введения понятия «массив» («двумерный массив»), поскольку при этом появляются
более адекватные конструкции задачи.




