Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_ИП (Часть 1 - алгоритмизация и основы языка Па...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
897.54 Кб
Скачать

Функции.

Функции — ориентированны на вычисление одного значения. Это значение рассчитывается и подставляется в выражение, в котором участвует функция, вместо неё.

Формат описания:

Function <имя_функции>(список_формальных_параметров):<тип_функции>;

<перечень локальных переменных, типов, констант, подрограмм>

Begin

операторы

<имя_функции>:=<результат>;

End;

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

<имя_функции>(<список фактических параметров>)

Тип функции — тип значения, которое функция вычисляет и передаёт в выражение вместо себя. Это значение должно быть присвоено имени функции внутри её описания может использоваться ключевое слово result.

Пример: Ввести три числа и вывести сумму их факториалов.

Function fact(v:integer):int64;

Var

i:integer;

f:int64;

begin

f:=1;

for i:=1 to v do f:=f*i:

fact:=f; // либо result:=f

end;

var

a,b,c:integer;

d:int64;

begin

write(‘Введите 3 числа’);

read(a,b,c);

d:=fact(a)+fact(b)+fact(c);

write(‘Сумма =’,);

readln;

readln;

end;

Записи

Записи — это сложный структурированный тип данных. Каждый элемент этого типа состоит из нескольких полей(свойство), которые являются переменными различных типов.

Главное назначение записей — хранение информации об реальных объектах и процессах. Каждое поле записи характеризуется собственным именем, которое является идентификатором. Обращение к отдельному полю:

<имя_записи>.<имя_поля>

Пример: St.Name:=’Ваня Кусто’

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

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

Формат описания записей

Type <имя_типа_записи>=record

<имя_поля_1>:<тип_поля_1>;

<имя_поля_N>:<тип_поля_N>;

End;

Однотипные поля могут перечислятся через запятую.

Пример: type Student=record

Name,Gr:string;

YB:word;

Course:byte;

End;

Var

S1,S2:Student;

S1.YB:=1911;

Обычно используются массивы записи:

Var M:array of Student;

В этом случае доступ к отдельной записи выглядит как M[i], а для отдельного поля записи:

M[i].YB

Поля записи могут иметь любой тип, в том числе быть массивами и записями.

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

Type Disk=record Subject:string;

Mark:byte;

End;

AllDisc=array of Disc;

Последнюю строку нужно добавить в описание типа Student. Так же необходимо ввести поле для хранения количества дисциплин.

Пример: Процедура ввода данных об одном студенте (кроме успеваемости)

Procedure InputStud(var S:Student);

Begin

write (‘Введите имя’); readln(S.Name);

write (‘Введите год рождения’); readln(S.YB);

End;

write (‘Введитеколичество студентов’); readln(N);

SetLength(M,N);

For i:=0 to N-1 do InputStud(M[i]);

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]