Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператор цикла с последующим условием Repeat

Поиск

Оператор цикла с постусловием Repeat похож на оператор цикла с предусловием While, но условие вычисляется и проверяется после выполнения операторов тела цикла.

Формат оператора:

Repeat

<оператор 1>;

<оператор 2>;

……………..

<оператор N>

Until <условие>;

где < условие > – выражение булевского типа;

Repeat, Until зарезервированные слова (повторять до тех пор, пока не выполнится условие).

Работа оператора начинается с выполнения тела цикла. Затем вычисляется значение выражения < условие >, а далее возможны два варианта:

– если <условие>=False, то тело цикла выполняется еще раз, а затем снова вычисляется выражение < условие >,

– если <условие>=True, то осуществляется выход из цикла.

Особенности оператора Repeat:

1) оператор выполняется, по крайней мере, один раз;

2) в отличие от оператора с предусловием While, выход из цикла с постусловием осуществляется при истинности выражения < условие >,

3) число операторов в теле цикла произвольно и роль операторных скобок выполняют зарезервированные слова Repeat, Until.

Пример 5.3. Вычислить сумму четных чисел от 0 до 100, т.е. Sum= 2+4+6+….+100

Введем обозначения: k – счетчик и одновременно параметр цикла.

Блок-схема

 

Программа имеет вид

Program DemoRepeat;

Var k, Sum: integer;

Begin

k:=2; Sum:=0;

Repeat;

Sum:=Sum+k;

k:=k+2;

until (I>=102);

Writeln(‘Сумма=’, Sum:5);

End.

Счетный оператор FOR

Оператор For используется, когда заранее известно количество повторений тела цикла.

Формат оператора:

For I:=In To Ik Do <оператор>;

где For……Do – заголовок цикла,

< оператор > – тело цикла, постой или составной оператор,

I – параметр цикла (integer),

In, Ik – начальное и конечное значения параметра цикла, могут быть константами, арифметическими выражениями целочисленного типа (integer).

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

Работа оператора

Параметру цикла присваивается начальное значение (I:=In). Затем циклически повторяются следующие действия.

1. Если I>Ik, то оператор For завершает свою работу и управление передается на следующий за For оператор.

2. Если , то выполняется тело цикла (< оператор >).

3. Параметр цикла получает приращение с шагом h=1, т.е. I:=I+1, далее происходит переход на пункт 1 (на проверку продолжения или окончания цикла).

Пример 5.4. Вывести на экран таблицу перевода из градусов по шкале Цельсия (С) в градусы по Фаренгейту (F) для значений от 10° до 30° с шагом 1 градус. Перевод осуществляется по формуле F = C ×1,8 + 32.

Блок-схема

Блок модификации

В блоке модификации (блок оператора For) указывается параметр цикла k и его начальное и конечное значения.

Приведем программу этого примера.

Program DemoFor;

Var k: integer;

F: real;

Begin

Writeln (‘ Температура ’);

For k:=10 to 30 do

Begin {начало тела цикла}

F:=k*1.8+32;

Writeln(‘По Цельсию=’,k:3,’ По Фаренгейту=’,F:6:2);

End; {конец тела цикла}

End.

 

Переменная цикла в операторе For может изменятся в противоположном направлении – убывать, т.е. с шагом h = –1. Для этого зарезервированное слово DO надо заменить на DOWNTO.

Пример 5.5. Вывести на экран символы американского стандартного кода обмена информацией (ASCII) в порядке убывания кода.

Program DemoASCII;

Var i: integer;

Begin

Writeln (‘ Таблица ASCII ’);

For i:=255 down to 0 do

Writeln(‘Код символа-’,i:3,’ Символ-’, chr(i));

End.

Cтандартная функция Chr(i:byte):char возвращает символ из ASCII c кодом i. Например Chr(82)=R.

Тело цикла содержит единственный простой оператор Writeln, поэтому операторные скобки (Begin-End) необязательны. Результатом работы программы будет выведенная на экран таблица:

Код символа-255 Символ- ٱ

……………………………….

Код символа-148 Символ- Ф

……………………………….

Код символа-82 Символ- R

……………………………….

 

 

Пример 5.5. Найти наибольшее Mmax и наименьшее Mmin число из N вводимых с пульта чисел.

Алгоритм выбора наибольшего/наименьшего из множества числа основан на последовательном сравнении двух чисел. Наибольшее из них присваивается переменной Mmax, наименьшее – Mmin. Первоначально принимается Mmax=–1Е+10 и Mmin=1Е+10, т.е. соответственно очень маленькое и очень большое значения, так чтобы на первом шаге в ячейки Mmax и Mmin записалось первое, вводимое число.

 

 

Блок-схема

 

Программа имеет вид:

 

Program DMin_Max;

Var i, n: integer;

a, Mmin, Mmax: real;

Begin

Mmin:=1E+10; Mmax:=-1E+10;

Write('введи n=');Readln(n);

For i:=1 to n do

begin

Write('i=',i:2,' a='); Readln(a);

If a<Mmin then Mmin:=a;

If a>Mmax then Mmax:=a;

End;

Writeln('min =',Mmin:6:2,' max=',Mmax:6:2);End.

 

Контрольные вопросы и задания.

1. Понятие циклического алгоритма. Какие данные необходимы для организации цикла. Что такое параметр цикла?

2. Операторы для организации циклических процессов.

3. В чем отличие операторов цикла While и Repeat?

4. В каких случаях предпочтительнее использовать для организации цикла оператор FOR? Что записывается в заголовке этого оператора?

5. Каким образом в операторе цикла For описывается направление изменения значения параметра цикла?

6. Алгоритм табулирования функции. Как выводить результаты табулирования по колонкам с учетом структуры таблицы?

7. С помощью оператора While напишите программу определения суммы всех четных чисел в диапазоне от 2 до 100 включительно.

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

9. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, 24 часа. В начальный момент времени была 1 клетка.

10. Вычислить сумму N элементов, заданных формулой . Выдать на экран сообщение о нечетности результата.


Лекция 6. Подпрограммы




Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 797; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.232.9 (0.006 с.)