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

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

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


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




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

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

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