ПОСТРОЕНИЕ ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ ЦИКЛИЧЕСКИЙ АЛГОРИТМ
Циклические вычислительные процессы (в дальнейшем циклы) в Турбо Бейсике реализуются с помощью трёх различных конструкций языка: for – next , while – wend , do – until.
5.1. Организация цикла с помощью операторов for – next
Формат операторов цикла For – next .
[n] for V = выражение 1 to выражение 2 [step выражение 3]
тело цикла
next V
Здесь:
тело цикла – последовательность исполняемых операторов, зависящих от значений переменной V;
for - оператор заголовок цикла;
next - оператор окончания цикла;
V - переменная (параметр) цикла;
Выражение 1 - начальное значение переменной цикла;
Выражение 2 - конечное значение переменной цикла;
Выражение 3 – шаг изменения цикла;
n – метка оператора заголовка цикла (может отсутствовать).
Выражения выражение 1, выражение 2, выражение З в операторе заголовка могут быть записаны в виде числовых констант, арифметических выражений, идентификаторов переменных. В дальнейшем эти атрибуты получили название характеристика цикла. Если выражение З тождественно равно 2, то конструкция step выражение З в операторе for может быть опущена. Выражение 1, выражение 2, выражение З могут принимать любые значения, в том числе и отрицательные.
Алгоритм выполнения операторов цикла:
1). Вычисляются выражения выражение 1, выражение 2, выражение З и их значения присваиваются фиктивным переменным el, e2, еЗ соответственно;
2). V=e1 ;
3). Осуществляется сравнение: если V<=e2 и e3>0 или если V>=е2 и е3<0 , то принимается решение войти внутри тела цикла, в противном случае, принимается решение выйти из цикла, т.е. передать управление к оператору, следующему за next (пункт 7);
|
|
4). Вычисляются операторы тела циклa;
5). При выполнении оператора next переменной цикла присваивается новое значение, большее на величину шага еЗ: V= V+e3 ;
6). Управление вычислительным процессом передается пункту 3;
7). Выход из цикла (продолжение программы) начинается со
следующего за next по порядку оператора в тексте программы.
Рассмотрим следующую задачу: составить программy вычисления функции F=A*x^2+B*X+C , где аргумент X изменяется от ХО до ХК с шагом Н, а А, В, С - произвольные константы
rem построение программы циклической структуры
rem с использованием операторов foг - next
input a, в, с, х0, хk, h
foz х = x0 to xk step h
f = a*x^2+b*x+c
print “x=”; x, “f=” ; f
next x
stop
5.2. Организация циклов с помощью оператора while – wend
[n] while условие
тело цикла
wend
Здесь:
While - оператор заголовок цикла,
Wend - оператор окончания цикла,
<условие> - логическое выражение,
тело цикла - последовательность операторов, выполняющихся в случае истинности <условия> в операторе заголовка,
|
|
n - метка оператора заголовка (может отсутствовать).
Алгоритм выполнения цикла while - wend
1) Проверяется <условие> в операторе While . В случае истинности принимается решение войти внутрь цикла, в противном случае принимается решение выйти из цикла; (пункт 4)
2) выполняются все операторы в теле цикла;
3) При достижении оператора wend управление передается пункту I;
4) Выход из цикла (продолжение программы) начинается со следующего за wend оператора текста программы. Особенность данной конструкции цикла заключается в том, что переменная цикла в явном виде нигде не присутствует. Задание начального значения переменной цикла (до входа в цикл), вычисление нового значения, большего на величину шага изменения (внутри тела цикла), разработчик осуществляет сам в программе. Этот цикл иногда в литературе называют циклом: "повторить - пока".
Как правило, данную конструкцию цикла используют для реализации итерационных циклических процессов, когда неизвестно заранее количество повторений (итераций), а известно условие продолжения (прекращения) вычислений.
Организация циклов с помощью операторов do - loop
Формат цикла do – loop
Уел - 50 - |
|
|
тело циклa
loop until условие
в ел |
do - оператор заголовок цикла,
loop until - оператор окончания цикла,
<условие> - логическое выражение, которое проверяется и в случае истинности его цикл прерывается.
Алгоритм выполнения цикла do - lоор
1) вход внутри цикла осуществляется без предварительных
условий,
2) выполняются все операторы в теле цикла,
3) при выполнении оператора loop until проверяется <условие>, и в случае ложности управление передается первому оператору в теле цикла, (цикл повторяется), в противном случае, принимается решение о прекращении цикла.
Как видно из формата оператора, параметр цикла создается самим пользователем до входа в цикл, изменение его значения должно быть осуществлено в явном виде внутри цикла. Эту конструкцию иногда называют: "делай - до тех пор ...".
Три конструкции цикла обеспечивают возможность структурировать программу в полном объеме, не уступая в этом другим языкам программирования.
Примеры построения программ
Задание: Дана последовательность чисел длиною n. Определить максимальный элемент последовательности.
Пример использования цикла FOR…NEXT
сls ‘ Очистка экрана
|
|
input “Введите количество элементов”; n ‘ Ввод кол-ва элементов
input “Введите элемент ”; x ‘ Вводится первый элемент
max=x ‘ В переменную max заносится первое значение х
for i=1 to n ‘ Открывается цикл (перебор значений i от 1 до
‘ введенного n)
input “Введите элемент ”;x ‘ Ввод элементов последовательности
if x>max then max=x ‘ Проверка условия, обозначенного в задании.
‘ Если условие выполняется, тогда текущее
‘значение переменной х заносится в переменную max
next i ‘ Происходит прибавление i+1 и управление программой
‘ передается for
print max ‘ Вывод максимального элемента
stop ‘ Остановка программы
Пример использования цикла WHILE…WEND
сls ‘ Очистка экрана
input “Введите количество элементов”; n ‘ Ввод кол-ва элементов
input “Введите элемент ”; x ‘ Вводится первый элемент
max=x ‘ В переменную max заносится первое значение х
i=2 ‘Поскольку первый элемент уже введен, отсчет
‘ необходимо начинать со второго элемента
while i<>n ‘ Открытие цикла. Цикл выполняется пока i не
‘ равно n
input “Введите элемент ”; x ‘ Вводится элемент последовательности
if x>max then max=x ‘ Проверка условия, обозначенного
‘ в задании. Если
‘ условие выполняется, тогда текущее значение
‘переменной х заносится в переменную max
i=i+1 ‘Сумматор, необходимый для смены значения i
wend ‘ Завершение цикла. Управление программой
‘передается на while
print max ‘ Вывод максимального элемента
stop ‘ Остановка программы
Пример использования цикла DO…LOOP (связка «пока»)
сls ‘ Очистка экрана
input “Введите количество элементов”; n ‘ Ввод кол-ва элементов
input “Введите элемент ”; x ‘ Вводится первый элемент
max=x ‘ В переменную max заносится первое значение х
i=2 ‘ Поскольку первый элемент уже введен, отсчет
‘ необходимо начинать со второго элемента
do while i<>n ‘ Открытие цикла. Цикл выполняется, пока i не
‘ равно n
input “Введите элемент ”; x ‘ Вводится элемент последовательности
if x>max then max=x ‘ Проверка условия, обозначенного в задании.
‘Если условие выполняется, тогда текущее
‘значение переменной х заносится в переменную max
i=i+1 ‘Сумматор, необходимый для смены значения i
loop ‘ Завершение цикла. Управление программой
‘передается на do while
print max ‘ Вывод максимального элемента
stop ‘ Остановка программы
Пример использования цикла DO…LOOP (связка «пока не»)
сls ‘ Очистка экрана
input “Введите количество элементов”; n ‘ Ввод кол-ва элементов
input “Введите элемент ”; x ‘ Вводится первый элемент
max=x ‘ В переменную max заносится первое значение х
i=2 ‘ Поскольку первый элемент уже введен, отсчет
‘ необходимо начинать со второго элемента
do until i=n ‘Открытие цикла. Цикл выполняется, пока i не
‘ будет равно n
input “Введите элемент ”; x ‘ Вводится элемент последовательности
if x>max then max=x ‘ Проверка условия, обозначенного в задании.
‘Если условие выполняется, тогда текущее значение
‘ переменной х заносится в переменную max
i=i+1 ‘ Сумматор, необходимый для смены значения i
loop ‘ Завершение цикла. Управление программой
‘передается на do until
print max ‘ Вывод максимального элемента
stop ‘Остановка программы
Пример использования цикла с постусловием DO…LOOP
(связка «пока»)
сls ‘ Очистка экрана
input “Введите количество элементов”; n ‘ Ввод кол-ва элементов
input “Введите элемент ”; x ‘ Вводится первый элемент
max=x ‘ В переменную max заносится первое значение х
i=2 ‘ Поскольку первый элемент уже введен, отсчет
‘ необходимо начинать со второго элемента
do ‘ Открытие цикла.
input “Введите элемент ”; x ‘ Вводится элемент последовательности
if x>max then max=x ‘ Проверка условия, обозначенного в задании.
‘Если условие выполняется, тогда текущее значение
‘переменной х заносится в переменную max
i=i+1 ‘Сумматор, необходимый для смены значения i
loop while i<>n ‘ Проверка условия для завершение цикла. Цикл
‘ выполняется, пока i не равно n. Управление программой
‘ передается на do
print max ‘ Вывод максимального элемента
stop ‘ Остановка программы
Пример использования цикла с постусловием DO…LOOP
(связка «пока не»)
сls ‘ Очистка экрана
input “Введите количество элементов”; n ‘ Ввод кол-ва элементов
input “Введите элемент ”; x ‘ Вводится первый элемент
max=x ‘ В переменную max заносится первое значение х
i=2 ‘ Поскольку первый элемент уже введен, отсчет
‘ необходимо начинать со второго элемента
do ‘ Открытие цикла.
input “Введите элемент ”; x ‘ Вводится элемент последовательности
if x>max then max=x ‘ Проверка условия, обозначенного в задании.
‘ Если условие выполняется, тогда текущее значение
‘переменной х заносится в переменную max
i=i+1 ‘Сумматор, необходимый для смены значения i
loop until i=n ‘ Проверка условия для завершение цикла. Цикл
‘ выполняется, пока i не будет равно n. Управление
‘ программой передается на do
print max ‘ Вывод максимального элемента
stop ‘Остановка программы
Дата добавления: 2021-11-30; просмотров: 20; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!