Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАП.docx
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
105.97 Кб
Скачать

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

Оператор цикла с предусловием реализует следующую базовую конструкцию:

Формат записи:

While L do OP;

где:

While - пока не;

do – выполнить;

L – выражение логического типа;

OP – тело цикла; оператор (простой или составной).

Рис. 9.3. Структурная схема оператора цикла с предусловием

Работа оператора: Вычисляется значение логического выражения, если вычисленное значение истинно, то выполняется оператор OP после чего повторяется проверка условия и выполнение операторов тела цикла. В противном случае осуществляется выход из цикла.

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

Пример 9.3. Составить программу вычисления функции y для заданного значения x.

где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1.

Program Ex_2;

Uses crt;

Var

y, C, a, t :real;

n :integer;

Begin

clrscr;

Writeln('Введите C, a, n'); Read(C, a, n);

Writeln('Результат:');

Writeln('t’:5,’y’:15);

t:=0;

While t<1 do

Begin

y:=C*exp(a*t)*cos(n*t);

Writeln(t:4:1,’ ‘:5, y:10);

t:=t+0.1;

End;

End.

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

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

Формат записи:

Repeat

OP

Until L;

где:

Repeat - повторять;

Until – пока не;

L – выражение логического типа;

OP – тело цикла; оператор (простой или составной).

Рис. 9.4. Структурная схема оператора цикла с постусловием

Работа оператора: Выполняется оператор OP после чего вычисляется значение логического выражения L, если вычисленное значение False, то снова выполняется оператор OP в противном случае осуществляется выход из цикла.

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

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

В операторе цикла с постусловием ключевые слова Repeat и Until играют роль операторных скобок.

Пример 9.4. Составить программу вычисления функции y для заданного значения x.

где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1.

Program Ex_2;

Uses crt;

Var

y, C, a, t :real;

n :integer;

Begin

clrscr;

Writeln('Введите C, a, n');

Read(C, a, n);

Writeln('Результат:'); Writeln('t’:5,’y’:15);

t:=0;

Repeat

y:=C*exp(a*t)*cos(n*t);

Writeln(t:4:1,’ ‘:5, y:10);

t:=t+0.1;

Untile t>=1;

End.

Оператор цикла с параметром в языке Паскаль

Оператор цикла с параметром реализует следующую базовую конструкцию:

Рис. 9.5. Структурная схема оператора цикла с параметром.

Формат записи:

1. For P:=Pn to Pk do OP;

2. For P:=Pk downto Pn do OP;

где:

For - для;

to – до;

downto – уменьшая до

do – выполнить;

OP – тело цикла; оператор (простой или составной);

P - параметр цикла, переменная порядкового типа;

Pn, Pk – начальное и конечное значение параметра.

Работа оператора: Вычисляется начальное значение параметра цикла Pn и присваивается параметру P. Проверяется условие P?Pk, и если оно True выполняются операторы тела цикла OP . После чего наращивается значение P на единицу и опять проверяется условие P?Pk . Если условие False осуществляется выход из цикла.

В операторе с downto шаг изменения параметра цикла равен –1.

Примеры записи:

For i:=1 to n do n:=sqr(i)+1;

For s:=’A’ to ‘Z’ do R:=R+ord(s)/127;

For L:=False to True do H:= (False or L) And Not (L);

Пример 9.5. Составить программу вычисления функции y для заданного значения n.

где: C=2,7; a=0.5; t=0,1; 0<n<10; Dn=1.

Program Ex_3;

Uses crt;

Var

y, C, a, t :real;

n :integer;

Begin

clrscr;

Writeln('Введите C, a, t');

Read(C, a, n);

Writeln('Результат:');

Writeln(‘n’:5,’y’:15);

For n:=1 to 10 do

Begin

y:=C*exp(a*t)*cos(n*t);

Writeln(n:4,’ ‘:5, y:10);

end;

End.

Оператор break

Существует возможность прервать выполнение цикла (или одной его итерации), не дождавшись конца его (или ее) работы.

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

Формат:

Break;

При прерывании работы циклов for с помощью процедуры break переменная цикла (счетчик) сохраняет свое текущее значение, не "портится".

Оператор continue

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

Øследующей итерации (цикл repeat-until)

Øили на предшествующую ей проверку (циклы for-to, for-downto, while).

Формат:

Continue;

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

For i:= 1 to 3 do begin

Write( 'Введите ПАРОЛЬ:' );

Readln(S); {S и Parol - переменные одного типа}

If S=Parol Then Break { прерывание цикла }

else If i<>3 Then Continue;

{ ограничение цикла }

Writeln( 'Доступ к программе ЗАПРЕЩЕН' );

Writeln( 'Нажмите Enter' );

Readln;

Halt { прерывание программы }

end;

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

В языке Турбо-Паскаль существует большой набор стандартных (библиотечных) процедур и функций. Процедуры и функции содержатся в стандартных модулях и подключаются к любой программе либо с помощью предложения Uses (например: CRT, GRAPH и др.) либо автоматически (например, System).

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

Применение подпрограмм позволяет использовать современные технологии конструирования программ: структурное, модульное, объектное. А также использовать современные методы проектирования т.н. нисходящее проектирование. При этом сложная задача разбивается на ряд подзадач, для каждой из которых составляется набор подпрограмм, из которых компонуется общая программа.

Язык Турбо-Паскаль содержит два типа подпрограмм:

Процедуры.

Функции.

Процедуры в Паскале

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

PROCEDURE <имя>(<сп. форм. пар.>);

<блок>

где

PROCEDURE – зарезервированное слово процедура;

<имя> - имя процедуры, является уникальным, выбирается по общим пра-

вилам, желательно чтобы оно отражало смысл процедуры;

<сп. форм. пар.> - список формальных параметров т.е. список имен обозначаю-

щих исходные данные и результат работы процедуры с указани-

ем их типов;

<блок> - тело процедуры представляющее разделы описаний и раздел

операторов, представляющий составной оператор (совокупность

операторов, заключенных в операторные скобки BEGIN END).

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

Глобальные объекты – это объекты, описанные в разделах описаний основной программе. Областью их действия является программа и все, содержащиеся в ней подпрограммы.

Локальные объекты – это объекты, описанные в разделах описаний подпрограммы. Областью их действия является подпрограмма и все содержащиеся в ней подпрограммы низшего уровня.

Локальные описания отменяют глобальные.

Оператор вызова процедуры активизирует процедуру.

Он имеет вид:

<имя>(<сп. факт. пар.>);

где:

<имя> - имя процедуры;

<сп. факт. пар.> - список фактических параметров.

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

Список фактических параметров может отсутствовать.

Между формальными и фактическими параметрами существует взаимно - однозначное соответствие по количеству, порядку следования и типу.

Виды параметров в Паскале

Различают четыре вида параметров:

- параметры- значения;

- параметры- переменные;

- параметры- процедуры;

- параметры- функции.

Параметры- значения – используются для передачи исходных данных в подпрограмму. Формальные параметры при этом записываются через запятую с указанием их типов. Они получают значения фактических параметров, но не могут передавать свои значения фактическим параметрам.

Параметры- переменные – играют роль как входных, так и выходных (возвращаемых) параметров процедуры. В списке формальных параметров они перечисляются после слова Var с указанием их типов.

Параметры- процедуры – указываются после слова Procedure.

Параметры- функции - . указываются после слова Function.

Функции в Паскале

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

FUNCTION <имя>(<сп. форм. пар.>):<тип>;

<блок>;

где: FUNCTION – зарезервированное слово функция;

<имя> - имя функции, является уникальным, выбирается по общим правилам, желательно чтобы оно отражало смысл функции;

<сп. форм. пар.> - список формальных параметров т.е. список имен обозначающих исходные данные функции с указанием их типов;

<тип> - тип результата возвращаемого функцией и присваиваемого имени

функции;

<блок> - тело процедуры представляющее разделы описаний и раздел

операторов, представляющий составной оператор (совокупность операторов, заключенных в операторные скобки BEGIN END).

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

В содержательной части функции ее имени должен быть присвоен результат работы функции.

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

Он имеет вид:

<имя>(<сп. факт. пар.>);

где:

<имя> - имя функции (указатель);

<сп. факт. пар.> - список фактических параметров.

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

Отличие процедуры от функции

Функция в отличие от процедуры возвращает единственное скалярное значение

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

Имя функции имеет тип.

Обращение к функции представляет операнд, а процедуры оператор.