русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 1871; Нарушение авторских прав


Оператор цикла с постусловием

В вышеприведенном примере как раз используется оператор цикла с постусловием. Синтаксис этого оператора следующий:

repeat <операторы> until <условие>

Здесь repeat, until – ключевые слова (перев. с англ. повторять и до тех пор пока);

<операторы> – любые операторы Турбо-Паскаля (их называют телом цикла);

<условие> – логическое выражение типа сравнения, используемое для выхода из цикла. Оператор работает следующим образом: сначала выполняются операторы, расположенные в теле цикла, затем вычисляется условие, и если получается истинное значение, то осуществляется выход из цикла. Если значение выражения ложно, то выполнение операторов тела цикла повторяется, а затем снова проверяется условие. И так, операторы тела цикла выполняются хотя бы раз, а потом все зависит от условия выхода из цикла. Очевидно, один из операторов тела цикла должен влиять на значение условного выражения, поскольку иначе цикл будет повторяться бесконечно.

Проиллюстрируем использование оператора цикла с постусловием на примере, в котором выводятся нечетные числа, меньшие 10. Схема алгоритма приведена на рис.10, а программа в примере – pr10.

Рис. 10

 

program pr10;

var i:integer;

begin

i:=1;

repeat

writeln(i);

i:=i+2;

until i>10;

end.

В результате работы этой программы будут напечатаны в столбик все нечетные числа от 1 до 9.

 

 

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

while <условие> do <оператор>;

Здесь while, do – ключевое слово (перев. с англ. пока и делать);



<оператор> – любой оператор Турбо-Паскаля, в том числе и составной (этот оператор называют телом цикла);

<условие> – логическое выражение типа сравнения, используемое для выхода из цикла.

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

i:=1;

while i<5 do

writeln('Доброе утро!');

Чтобы получить работающий фрагмент программы, добавим в тело цикла оператор, увеличивающий значение i:

i:=1;

while i<5 do

begin

writeln('Доброе утро!');

i:=i+1;

end;

end;

Проиллюстрируем использование оператора цикла с предусловием на примере pr11 нахождения среднего арифметического последовательности чисел (схема алгоритма приведена на рис.11). Последовательность чисел вводится с клавиатуры и завершается стоп-кодом. Использование стоп-кода в данном случае состоит в том, что какое-то числовое значение заведомо исключается из входной последовательности и используется как стоп-код. Если мы заранее знаем, что -1 у нас никогда не появится в последовательности, то можно -1 использовать для указания ее конца.

Рис. 11

 

program pr11;

const stopcod=-1;

var c: integer;{количество вводимых чисел}

sum,{сумма вводимых чисел}

number:real;{вводимое число}

begin

sum:=0;

c:=0;

writeln('Введите пеpвое число последовательности:');

read(number);

while number<>stopcod do

begin

sum:=sum+number;

c:=c+1;

writeln('Введите cледующее число

последовательности:' );

read(number);

end;

if c=0 then writeln ('Сpеднее значение pавно нулю')

else writeln ('Сpеднее значение pавно ',sum/c);

end.

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

Кроме того, в этой программе впервые появился раздел констант. Константа stopcod, в отличии от переменной, не может получить новое значение в программе, и тип константы определяется её видом.

Следующий пример иллюстрирует работу оператора цикла с предусловием на задаче, вычисляющей c точностью е сумму ряда:

s=1+1/2+1/3+1/4+ ... .

Вычислить сумму ряда с точностью е– это значит завершить суммирование членов ряда тогда, когда очередной член ряда окажется меньше е по абсолютной величине. Схема алгоритма приведена на рис.12, а программа – в примере pr12.

program pr12;

var

i:integer;

sum,{сумма pяда}

e,{точность}

k:real;{очеpедной член pяда}

begin

sum:=0;

i:=1;

writeln('Введите точность:');

read(e);

k:=1/i;

while k>e do {пока очеpедной член pяда больше точности}

begin

sum:=sum+k;

i:=i+1;

k:=1/i;

end;

writeln ('Сумма pяда pавна ', sum);

end.

 

Рис. 12

 



<== предыдущая лекция | следующая лекция ==>
ЦИКЛИЧЕСКИЕ ПРОГРАММЫ | Оператор цикла со счетчиком


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.