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

17. Подпрограммы.

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

18. Функции: описание в программе, вызов.

Если результатом подпрограммы является одно (несколько) значений, то имеет смысл оформить такую подпрограмму не в виде процедуры, а в виде функции:

function Имя Функции(Формальные Параметры): Тип Результата;

{Описательная Часть}

begin

{Инструкции исполнительной части функции}

Имя Функции:=Результат;

end;

Пример:

function programa(a, b, c: real; var x1, x2: real): integer;

……………..

writeln(programa(x1, x2)); {вызов функции}

x1, x2 – 2 выходных параметра; a, b, c – формальные параметры.

19. Процедуры: описание в программе, вызов.

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

procedure Имя Процедуры(Формальные Параметры);

{Описательная Часть}

begin

{Инструкции исполнительной части функции}

end;

Пример:

procedure horline(len: integer; s: char);

…………….

horline(10, ‘-‘); {вызов процедуры}

len, s – формальные параметры; число и символ – фактические параметры.

Пример 1:

uses crt;

const j=255;

type Rec=record

a:integer;

b:integer;

end;

var M:array[1..j] of Rec;

i_max, max, n, i, s:integer;

procedure Summa;

begin

max:=M[1].a; i_max:=1;

for i:=1 to n do

if (M[i].a>max) then

begin

max:=M[i].a;

i_max:=i;

end;

s:=0;

for i:=1 to n do

if max=M[i].a then

begin

s:=s+M[i].b;

end;

write(s);

end;

begin

readln(n);

for i:=1 to n do

begin

readln(M[i].b);

end;

for i:=1 to n do

begin

readln(M[i].a);

end;

Summa;

end.

Пример 2:

uses crt;

const j=255;

var a:array[1..j] of integer;

i, n, p, summ:integer;

procedure Vay;

begin

for i:=1 to n do

summ:=summ+a[i];

for i:=1 to n do

p:=p*a[i];

writeln(summ);

writeln(p);

end;

begin

p:=1;

writeln('Введите количество чисел');

readln(n);

for i:=1 to n do

readln(a[i]);

Vay;

end.

20. Формальные и фактические параметры подпрограмм.

Формальные параметры – параметры, которые определены в прототипе подпрограммы.

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

!!!Фактические параметры при вызове соответствуют формальным параметрам в прототипе: по количеству, по типам, по порядку следования.

21. Функции, возвращающие более одного значения.

function programa(a, b, c: real; var x1, x2: real): integer;

22. Записи: описание, определение, действия.

Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи.

Структура объявления типа записи:

< имя типа > = record < сп. полей > end ;

здесь < имя типа > – правильный идентификатор;

record, end – ключевые слова (пер. с англ.: запись, конец);

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

Язык Паскаль дает возможность сократить запись, если использовать оператор присоединения with. Структура оператора with :

with < сп. записей > do < оператор > ,

где with, do - ключевые слова (пер. с англ. с, делать),

< сп. записей > – список из одной или нескольких переменных типа запись, разделенных запятыми.

< оператор > - любой оператор языка паскаля.

Пример:

const M=255;

type T=record

F:string;

Mark:array[1..3] of integer;

Town:string;

end;

var spisok:T;

ball:real;

i,j,k,l,kol,n:integer;

s:char;

d:array [1..M] of string;

begin

kol:=0;

readln(n);

for i:=1 to n do

with spisok do

begin

writeln('Фамилия');

readln(F);

writeln('Введите оценки');

read(mark[1], mark[2], mark[3]);

ball:=(mark[1]+mark[2]+mark[3])/3;

writeln('Введите город');

read(Town);

if (ball>=4.0) and (Town='Минск') then d[i]:=F;

kol:=kol+1;

end;

for s:='а' to 'я' do

for i:=1 to n do

if copy(d[i],1,1)=s then

writeln(d[i]);

end.