В языке паскаль существуют два типа подпрограмм - процедуры и функции

Процедура и функция - это именованная последовательность описаний и операторов. При использовании процедур или функций ПАСКАЛЬ - программа должна содержать текст процедуры или функции и обращение к процедуре или функции. Тексты процедур и функций помещаются в раздел описаний процедур и функций (Implementation).

 

procedure имя_процедуры(параметры: тип);

begin

тело процедуры;

end;

function имя_функции(параметры:тип): тип_возвращаемого значения;

begin

тело_функции;

end;

Процедура может содержать такие - же разделы описаний, что и ПАСКАЛЬ - программа, а именно: разделы описания модулей, меток, констант, типов, переменных, процедур и функций.

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

Описание процедурных и функциональных типов производится в разделе описания типов:

Type

Function М1 (z: Real): Real;

ProcedureV_2 (a,b: Real);

Или в разделе описания переменных:

Var

Function М1 (z: Real): Real;

ProcedureV_2 (a,b: Real);

Функциональный и процедурный тип определяется как заголовок процедуры или функции со списком формальных параметров - (z: Real): Real; (a,b: Real);

После объявления переменных процедурного типа, необходимо написать в исполняемой части программы (implementation) реальные процедуры или функции, к именам которых будут обращаться.

Например:

Procedure V1 (a,d: real);

Begin

Оператор 1

…………….

Оператор N

End;

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

Begin

Оператор 1

…………….

Оператор N

V1 (x,y); // обращение к процедуре

End;

Здесь XY – Фактические параметры, которые заместят формальные параметры в процедуре Procedure V1 (a,d: real);

 

БАЗОВЫЕ КОНСТРУКЦИИ ЯЗЫКА

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

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

Ø Конструкция, представляющая собой последовательное выполнение двух или более операций, называется следованием.

Ø Конструкция, состоящая из развилки, двух операций и слияния, называется ветвлением. Одна из операций может отсутствовать.

Ø Конструкция, имеющая линии управления, ведущие к предыдущим операциям или развилкам, называется циклом.

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

Операция может быть реализована любым оператором языка ПАСКАЛЬ (простым или составным), либо группой операторов, за исключением оператора безусловного перехода GOTO.

В языке ПАСКАЛЬ шесть базовых конструкций, это:

· следование;

· ветвление;

· цикл с предусловием;

· цикл с постусловием;

· цикл с параметром;

· вариант.

 

УСЛОВНЫЙ ОПЕРАТОР

 

if < булевское выражение>   then оператор_1

else оператор_2;

оператор_3;

 

    Перед else, после оператора_1, точка с запятой не ставится!!!

Условный оператор в короткой форме работает по правилу: если <булевское выражение> истинно, то выполняется оператор_1, далее выполняется оператор_3, следующий за условным оператором. Если <булевское выражение> ложно, то будет выполняться оператор_2, следующий за этим условным оператором.

 

Пример 1 (простое сравнение):

 

  IF a>b then c:=a - b

  Else c:=a + b;

  D:=D + c;

В данном примере сравниваются две величины а и b. Если а > b истина (булевское выражение true), будет выполняться оператор c:=a - b, а затем D:=D+c;

Если а > b ложь (булевское выражение false), будет выполняться оператор c:=a + b, а затем D:=D+c;

 

Пример 2 (сравнение с логическим и - and ):

 

IF (dx>0) and (dy<0) then showmessage(‘четвертая четверть’)

Else showmessage(‘это не четвертая четверть’);

 

В данном примере сравнивается результат проверки двух выражений (dx>0) и (dy<0). Если оба выражения соответствуют истине, то на экране появится сообщение - ‘четвертая четверть’.

Если результат проверки одного или обоих выражений ложь, на экране появится сообщение - ‘это не четвертая четверть’

В данном примере ShowMessage - стандартная функция динамической библиотеки Dialogs дельфи, которая выводит на экран панель с сообщением, которое заключено в скобки.

 

Пример 3 (сравнение с логическим или - OR ):

 

IF (dx>0) or (dy<0) then showmessage(‘условие выполнено’)

Else showmessage(‘это условие не выполнено’);

 

В данном примере сравнивается результат проверки двух выражений (dx>0) или (dy<0). Если одно из выражений соответствует истине, то на экране появится сообщение - ‘условие выполнено’.

Если результат проверки обоих выражений ложь, на экране появится сообщение - ‘это условие не выполнено’

 

ЦИКЛ С ПРЕДУСЛОВИЕМ

 

while < выражение > do оператор;

 

Если операторов несколько, то они заключаются в конструкцию begin (начало) - end (конец).

 

while < выражение > do begin

оператор_1;

 оператор_2;

end; // конец цикла

 оператор_3;

 

Данная конструкция предполагает сначала проверку условия, а затем выполнение операторов. Если, при обращении к циклу, проверка условия будет ложь (false), то будет выполняться оператор, следующий за окончанием цикла -  оператор_3;

Пример (чтение текстового файла с диска):

I:=0;

Whilenot eof (t) do begin

Readln (t, x,y);

X1[i]:=x;

Y1[i]:=y;

i:=i+1;

End;

В данном примере логическим условием является выражение while   not eof(t), которое означает “пока нет конца файла t  , выполнить (do begin) операторы, стоящие перед End; после чего вернуться на начало цикла whilenot eof(t). Чтение будет продолжаться до тех пор, пока не будет достигнут конец файла eof(t), т.е. выражение not eof(t) станет ложью – false.

// eof - признак конца файла, прописывается автоматически в конце текстового файла, аббревиатура от end of file - конец файла. t - файловая переменная, которая содержит имя рабочего файла и путь к нему. Readln - оператор паскаля, читающий строку файла до конца, с "переводом каретки" на новую строку. //

 

 

ЦИКЛ С ПОСТУСЛОВИЕМ:

 

Repeat

                                       оператор;

until < выражение >;

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

 

ЦИКЛ С ПАРАМЕТРОМ:

For i: = параметр_1 to параметр_2 do оператор;

For i:= параметр_1 downto параметр_2 do оператор;

Если в цикле несколько операторов, то они заключаются в конструкцию begin … end;

 

For i: = параметр_1 to  параметр_2 do

Begin

оператор_1;

оператор_2;

end;

Здесь i - переменная цикла, которая вначале работы принимает значение параметр_1. После отработки тела цикла (оператор_1; оператор_2;) i - переменная цикла, принимает значение i:=i+1( если после параметра_1 стоит to), т.е. увеличивается на единицу.

Если стоит downto, то переменная цикла, принимает значение i:=i -1 после чего выполняется неявная проверка на превышение параметра_2 – if i > параметра_2 то цикл завершается ( если после параметра_1 стоит to) и наоборот, if i < параметра_2 то цикл завершается - если стоит downto.

 

Пример: Найти факториал числа 10.

P_f:=1;

For  j:=1 to 10 do  P_f:= P_f * j;

 

В ПАСКАЛЬ определена стандартная процедура  Break, которая выполняет безусловный выход из цикла, даже если параметр_2 не достигнут.

 

Пример 2 Определить номер элемента массива mas, состоящего из 100 элементов целого типа, величина которого превышает заданное значение max_1.

 

For j:=1 to 100 do begin

If mas[j]>max_1 then begin

ShowMessage(inttostr(j));

Break;

End; // if

End; // for

inttostr(j) - функция Дельфи - преобразует целочисленную переменную j в строку. 

ОПЕРАТОР ВАРИАНТА

case < выражение > of

если выражение _1: оператор_1;

если выражение _2: оператор_2;

...

если выражение _N: оператор_N

Else

оператор_N+1;

end;

Данный оператор позволяет программисту, в зависимости от условия, выбирать вариант действия в программе.

Рассмотрим пример работы программы «калькулятор» При нажатии на кнопки дейсвия +, -, *  и т.д. необходимо выбрать соответствующие операции с исходными данными.

Предположим, нажали на кнопку «*» - умножить. При этом, “условие” получило значение=3.

N:=3;

………

………

Case N of

1: c:=a+b;

2: c:=a-b;

3: c:=a*b;

4: c:=a/b;

End

Else ShowMessage(‘Такого условия нет’);

В нашем примере N=3, выполнится оператор с вариантом 3: c:=a*b; Если вариант отсутствует, выполнится оператор стоящий после Else - ShowMessage(‘Такого условия нет’); На экране появится сообщение ‘Такого условия нет’




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow