Студопедия — Тема: Организация циклов в программах
Студопедия Главная Случайная страница Обратная связь

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

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

ЗАНЯТИЕ 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; просмотров: 325. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

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

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

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Механизм действия гормонов а) Цитозольный механизм действия гормонов. По цитозольному механизму действуют гормоны 1 группы...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

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