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

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

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


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




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


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


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


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

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

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