Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Тема: Организация циклов в программах


ЗАНЯТИЕ 7

Лекция

Цикл — это многокpатно выполняемая последовательность действий. Существует два вида цикла — цикл с предусловием (цикл ”пока”) и цикл с постусловием (цикл “до”).

Алгоритмическая блок-схема цикла с предусловием.
(Прямоугольником обозначено тело цикла).

Циклу с предусловием (цикл “ПОКА”) в языке Паскаль соответствует инструкция WHILE... DO....

Формат описания:

WHILE <логическое выражение> DO
<инструкция>;

Цикл WHILE...DO многокpатно выполняет одни и те же действия пpи истинности выражения, котоpое изменяется обычно внутpи цикла. Значение логического выражения вычисляется пеpед выполнением инстpукции. Таким образом, если значение выражения с самого начала оказалось FALSE, то инструкция не будет выполнена ни разу, а значение логического выражения является условием продолжения цикла.

Если в цикле необходимо выполнить несколько инструкций, то после служебного слова DO используются операторные скобки BEGIN...END.

Формат описания:

WHILE <логическое выражение> DO
begin
<инструкция 1>;
<инструкция 2>;
<инструкция 3>;
end;

Пример 1. «Звездное небо».

Написать программу, позволяющую нарисовать на экране N разноцветных точек. (N вводится с клавиатуры).

Решение:

Опишем алгоритм решения задачи на естественном языке (русском).

В программе будем использовать следующие переменные: n — количество звезд, i — текущий номер звезды, которую рисуем, x,y — координаты точки (звезды), c — ее цвет.

Вводим с клавиатуры кодичество звезд n, инициализируем графику, в текущий номер I кладем 1 (т. е. рисуем первую звезду). Пока текущий номер i меньше или равен n задаем случайным образом координаты (x,y) и цвет (c) точки, ставим точку и меняем на единицу текущий номер i. После цикла ставим задержку, закрываем графику.

Теперь переведем этот алгоритм на Паскаль.

PROGRAM nebo;
VAR
n,i,x,y,c: INTEGER;
BEGIN { ******* MAIN PROGRAM ******* }
WRITELN('Введите количество звезд');
READLN(n);
InitGraph;
i:= 1;
WHILE i<=n DO
BEGIN
x:= random(640);
y:= random(350);
c:= random(16);
PutPixel(x,y,c);
i:= i+1;
END;
ReadKey;
CloseGraph;
END.

Пример 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;
VAR x1,y,x2,L: INTEGER;
BEGIN { ******* MAIN PROGRAM ******* }
WRITELN('Введите длину отрезка');
READLN(L);
InitGraph;
x2:= 0;
x1:= L;
y:= 175;
WHILE x1<640 DO
BEGIN
Line(x1,y,x2,y,15);
PutPixel(x2,y,0);
x1:= x1+1;
x2:= x2+1;
END;
ReadKey;
CloseGraph;
END.

Второй вид цикла — цикл с постусловием.

Алгоритмическая блок-схема цикла с постусловием. (Плясать до упаду). (Прямоугольником обозначено тело цикла).

Циклу с постусловием (цикл “ДО”) в языке Паскаль соответствует инструкция REPEAT... UNTIL....

Формат описания:

REPEAT
<инструкция 1>;
<инструкция 2>;
...
<инструкция n>;
UNTIL <логическое выражение>

В данном цикле сначала выполняются инстpукции, составляющие тело цикла (часть текста программы, заключенная между словами REPEAT и UNTIL), затем вычисляется значение логического выражения, если оно FALSE, то инстpукции в теле цикла повтоpяются, иначе (значение выражения — TRUE) цикл завеpшается. Таким обpазом, в инстpукции REPEAT...UNTIL тело цикла всегда выполняется хотя бы один pаз, а значение логического выражения является условием завеpшения цикла.

Построим «Звездное небо» и «Бегущий отрезок» другим способом.

Пример 1.2 «Звездное небо».

Что измениться в алгоритме решения? Описание цикла. Повторяем - задаем случайным образом координаты (x,y) и цвет (c) точки, ставим точку и меняем на единицу текущий номер I — до тех пор, пока текущий номер не станет больше N.

PROGRAMnebo;
VAR n,i,x,y,c:INTEGER;
BEGIN { ******* MAIN PROGRAM ******* }
WRITELN('Введите количество звезд');
READLN(n);
InitGraph;
i:=1;
REPEAT
x:=random(640);
y:=random(350);
c:=random(16);
PutPixel(x,y,c);
i:=i+1;
UNTIL i>n;
ReadKey;
CloseGraph;
END.

Пример 2.2 «Бегущий отрезок».

Что измениться в алгоритме решения? Описание цикла. Повторяем - рисуем линию от точки (X1,Y) до точки (X2,Y) белого цвета, потом «стираем» в конце линии (X2,Y) одну точку (ставим черную точку), увеличиваем на единицу координаты X1 и X2 — до тех пор, пока начало отрезка не достигнет правой границы экрана (т. е. X1>=640).

PROGRAM begotr;
VAR x1,y,x2,l:INTEGER;
BEGIN { ******* MAIN PROGRAM ******* }
WRITELN('Введите длину отрезка');
READLN(l);
InitGraph;
x2:=0;
x1:=l;
y:=175;
REPEAT
Line(x1,y,x2,y,15);
putpixel(x2,y,0);
x1:=x1+1;
x2:=x2+1;
UNTIL x1>=640;
ReadKey;
CloseGraph;
END.




<== предыдущая лекция | следующая лекция ==>
Дополнительная. 1. Алгоритмы практических навыков по общей и частной хирургии, детской хирургии, офтальмологии | Представление дерева в виде списка

Дата добавления: 2015-08-12; просмотров: 342. Нарушение авторских прав; Мы поможем в написании вашей работы!




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Понятие массовых мероприятий, их виды Под массовыми мероприятиями следует понимать совокупность действий или явлений социальной жизни с участием большого количества граждан...

Тактика действий нарядов полиции по предупреждению и пресечению правонарушений при проведении массовых мероприятий К особенностям проведения массовых мероприятий и факторам, влияющим на охрану общественного порядка и обеспечение общественной безопасности, можно отнести значительное количество субъектов, принимающих участие в их подготовке и проведении...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Концептуальные модели труда учителя В отечественной литературе существует несколько подходов к пониманию профессиональной деятельности учителя, которые, дополняя друг друга, расширяют психологическое представление об эффективности профессионального труда учителя...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Studopedia.info - Студопедия - 2014-2025 год . (0.01 сек.) русская версия | украинская версия