Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Организация ввода-вывода




Begin

Begin

Var

Const

Repeat

Begin

Var

Const

Repeat

Begin

Begin

Var

Const

Begin

Тело_цикла // Многократно выполняемые инструкции

end;

где Условие — выражение логического типа, определяющее условие выполнения инструкций цикла.

Оператор while выполняется следующим образом (рис. 2.3):

· Сначала вычисляется значение выражения Условие.

· Если значение выражения Условие равно False (условие не выполняется), то на этом выполнение оператора while завершается.

· Если значение выражения Условие равно True (условие выполняется), то выполняются расположенные между begin и end инструкции тела цикла. После этого снова проверяется выполнение условия. Если условие выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока Условие не станет ложным (False).

Чтобы не произошел эффект «зацикливания», т.е. бесконечное выполнение операторов тела цикла, необходимо предусмотреть в теле цикла определенные действия по изменению параметров, определяющих Условие.

Для того, чтобы инструкции цикла while, которые находятся между begin и end, были выполнены хотя бы один раз, необходимо, чтобы перед выполнением оператора while значение выражения Условие было истинно.

Пример использования оператора цикла с предусловием:

Записать фрагмент программы, вычисляющей сумму .

n=20; // Описание константы N

S: Longint;

i: integer;

...

S:=0; // Обнуление суммы

i:=1; // Начальная установка параметра цикла

while i<=n do

S:=S+sqr(i); // Накопление суммы

i:=i+1; // Изменение параметра цикла

end;

...

end.

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

Оператор_1;

Оператор_2;

...

Оператор_N

until Условие;

где Условие – выражение булевского типа, определяющее условие завершения цикла.

В отличие от оператора while, оператор repeat не требует использования составного оператора, когда в его теле необходимо записать более одного оператора.

Оператор repeat выполняется следующим образом (рис. 2.4):

· Сначала выполняются находящиеся между repeat и until инструкции тела цикла.

· Затем вычисляется значение выражения Условие. Если условие ложно (значение выражения Условие равно False), то инструкции тела цикла выполняются еще раз.

· Если условие истинно (значение выражения Условие равно True), то выполнение цикла прекращается.

Чтобы не попасть в «зацикливание», по крайней мере, один из операторов тела цикла должен влиять на значение Условие.

 

Пример использования оператора цикла с постусловием:

Записать фрагмент программы, вычисляющей факториал числа .

n=20; // Описание константы N

P: Longint;

i: integer;

...

P:=1; // Начальному значению произведения присваивается 1

i:=1; // Начальная установка параметра цикла

Р:=P*i; // Накопление произведения

i:=i+1; // Изменение параметра цикла

until i>n;

...

end.

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

1) Если параметр цикла наращивает свое значение:

for Счетчик:= Нач_знач to Кон_знач S2 do Тело_цикла;

2) Если параметр цикла уменьшает свое значение:

for Счетчик:= Нач_знач downto Кон_знач do Тело_цикла;

где Счетчик – параметр цикла, определяющий текущий номер повторений инструкций цикла; Нач_знач – выражение, определяющее начальное значение счетчика циклов; Кон_знач – выражение, определяющее конечное значение счетчика циклов.

Тело цикла может быть простым или составным оператором.

Количество повторений инструкций цикла можно вычислить по формуле

(Кон_значНач_знач + 1).

Для первой формы оператора for должно выполняться условие Кон_знач >= Нач_знач, а для второй - Нач_знач >= Кон_знач.

Алгоритм, соответствующий инструкции for (для первой формы) представлен на рис. 2.5. Обратите внимание, что если начальное значение счетчика больше конечного значения, то последовательность операторов, определяющих тело цикла, не будет выполнена ни разу.

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

Переменную-счетчик можно использовать внутри цикла (но ни в коем случае не изменять).

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

Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. При этом допустим любой простой тип, кроме вещественного. Если используются типы группы целые и интервальные, то значение параметра цикла последовательно увеличивается (при for.. to) или уменьшается (при for downto) на 1 при каждом повторе, например:

for i:=10 to 14 do write(i:3); // Результат: 10 11 12 13 14

for i:=14 downto 10 do write(i:3); // Результат: 14 13 12 11 10

Параметром цикла может служить символьная переменная, например:

for Ch:='a' to 'f' do write(Ch:2); // Результат: a b c d e f

for Ch:='f' downto 'a' do write(Ch:2); // Результат: f e d c b a

Параметром цикла может быть и переменная перечисляемого типа, например:

var Sort: (S1,S2,S3);

...

for Sort:=S1 to S3 do...

Пример использования оператора цикла со счетчиком:

Записать фрагмент программы, вычисляющей сумму и факториал числа .

{Вычисление суммы элементов вектора}

n=20; // Описание константы N

...

S,P: Longint;

i: integer;

...

S:=0; // Обнуление суммы

P:=1; // Начальному значению произведения присваивается 1

for i:=1 to n do

S:=S+sqr(i); // Накопление суммы

P:=P*I; // Накопление произведения

end;

...

end.

Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами (табл. 2.1).

Таблица 2.1. Особенности операторов цикла

Цикл с предусловием while (пока условие истинно) Цикл с постусловием repeat (до истинности условия)
1) До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл
2) В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился
3) Цикл работает пока условие истинно (пока True) 3) Цикл работает пока условие ложно (пока False)
4) Цикл завершается, когда условие становится ложным (до False) 4) Цикл завершается, когда условие становится истинным (до True)
5) Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл равно False 5) Цикл обязательно выполняется как минимум один раз
6) Если в теле цикла требуется более одного оператора, то надо использовать составной оператор 6) Независимо от количества операторов в теле цикла использование составного оператора не требуется
Цикл со счетчиком for
1) Начальная установка переменной счетчика циклов до заголовка не требуется
2) Изменение в теле цикла значений переменных, стоящих в заголовке цикла, не допускается
3) Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага цикла
4) Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue
5) Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе

Операторы цикла могут вкладываться друг в друга, например:

for i:=-10 to 10 do

for j:=100 downto 10 do

for k:=1 to 5 do

A[i,j,k]:=i*j*k;


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

В языке Object Pascal стандартными средствами общения человека и компьютера являются предопределенные файлы Input и Output, которые по умолчанию являются параметрами программы. Программа получает входные данные из файла Input и помещает результат обработки в файл Output. Стандартно файлу Input назначена клавиатура, а файлу Outputэкран монитора.

Для выполнения операций ввода-вывода служат четыре предопределенные процедуры: read, readln, write и writeln.

Процедура чтения read обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой. Формат ее вызова следующий:

read (X 1, X 2,..., Xn);

read (FV, X 1, X 2,..., Xn);

где X 1, X 2,..., Xn – переменные допустимых типов данных;

FV – переменная, связанная с файлом, откуда будет выполняться чтение.

Конкретные вводимые значения X 1, X 2,..., Xn набираются минимум через один пробел на клавиатуре и отображаются на экране. После набора данных для одного оператора read нажимается клавиша ENTER. Значения переменных должны вводиться в строгом соответствии с синтаксисом языка. Если соответствие нарушено (например, Х 1 имеет тип integer, a при вводе набирается значение типа real), то возникают ошибки ввода-вывода

Пример ввода данных с клавиатуры:




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 377; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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