Тема: Организация циклов в программах
ЗАНЯТИЕ 7 Лекция Цикл — это многокpатно выполняемая последовательность действий. Существует два вида цикла — цикл с предусловием (цикл ”пока”) и цикл с постусловием (цикл “до”). Алгоритмическая блок-схема цикла с предусловием. Циклу с предусловием (цикл “ПОКА”) в языке Паскаль соответствует инструкция WHILE... DO.... Формат описания: WHILE <логическое выражение> DO Цикл WHILE...DO многокpатно выполняет одни и те же действия пpи истинности выражения, котоpое изменяется обычно внутpи цикла. Значение логического выражения вычисляется пеpед выполнением инстpукции. Таким образом, если значение выражения с самого начала оказалось FALSE, то инструкция не будет выполнена ни разу, а значение логического выражения является условием продолжения цикла. Если в цикле необходимо выполнить несколько инструкций, то после служебного слова DO используются операторные скобки BEGIN...END. Формат описания: WHILE <логическое выражение> DO Пример 1. «Звездное небо». Написать программу, позволяющую нарисовать на экране N разноцветных точек. (N вводится с клавиатуры). Решение: Опишем алгоритм решения задачи на естественном языке (русском). В программе будем использовать следующие переменные: n — количество звезд, i — текущий номер звезды, которую рисуем, x,y — координаты точки (звезды), c — ее цвет. Вводим с клавиатуры кодичество звезд n, инициализируем графику, в текущий номер I кладем 1 (т. е. рисуем первую звезду). Пока текущий номер i меньше или равен n задаем случайным образом координаты (x,y) и цвет (c) точки, ставим точку и меняем на единицу текущий номер i. После цикла ставим задержку, закрываем графику. Теперь переведем этот алгоритм на Паскаль. PROGRAM nebo; Пример 2. «Бегущий отрезок». Написать программу, позволяющую сымитировать бегущий по экрану белый отрезок длиной L (L- вводится с клавиатуры), который бежит от левой стороны экрана до правой и там останавливается. Решение: Опишем алгоритм решения задачи на естественном языке (русском). В программе будем использовать следующие переменные (x1,y) - координатs начала отрезкаy, (x2,y) – координаты конца отрезка, L — длина отрезка. Вводим длину отрезка L, инициализируем графику, задаем значение координаты Y (175 — середина экрана), координаты X1 — начало отрезка, равное длине отрезка L и координаты X2 — конца отрезка, равное 0 (левая граница экрана). Пока начало отрезка не достигнет правой границы экрана, т. е. пока X1<640, рисуем линию от точки (X1,Y) до точки (X2,Y) белого цвета, потом «стираем» в конце линии (X2,Y) одну точку (ставим черную точку), увеличиваем на единицу координаты X1 и X2. После цикла ставим задержку, закрываем графику. Теперь переведем этот алгоритм на Паскаль. PROGRAM begotr; Второй вид цикла — цикл с постусловием. Алгоритмическая блок-схема цикла с постусловием. (Плясать до упаду). (Прямоугольником обозначено тело цикла). Циклу с постусловием (цикл “ДО”) в языке Паскаль соответствует инструкция REPEAT... UNTIL.... Формат описания: REPEAT В данном цикле сначала выполняются инстpукции, составляющие тело цикла (часть текста программы, заключенная между словами REPEAT и UNTIL), затем вычисляется значение логического выражения, если оно FALSE, то инстpукции в теле цикла повтоpяются, иначе (значение выражения — TRUE) цикл завеpшается. Таким обpазом, в инстpукции REPEAT...UNTIL тело цикла всегда выполняется хотя бы один pаз, а значение логического выражения является условием завеpшения цикла. Построим «Звездное небо» и «Бегущий отрезок» другим способом. Пример 1.2 «Звездное небо». Что измениться в алгоритме решения? Описание цикла. Повторяем - задаем случайным образом координаты (x,y) и цвет (c) точки, ставим точку и меняем на единицу текущий номер I — до тех пор, пока текущий номер не станет больше N. PROGRAMnebo; Пример 2.2 «Бегущий отрезок». Что измениться в алгоритме решения? Описание цикла. Повторяем - рисуем линию от точки (X1,Y) до точки (X2,Y) белого цвета, потом «стираем» в конце линии (X2,Y) одну точку (ставим черную точку), увеличиваем на единицу координаты X1 и X2 — до тех пор, пока начало отрезка не достигнет правой границы экрана (т. е. X1>=640). PROGRAM begotr;
|