- •Лабораторный практикум по информатике для проведения занятий во втором семестре
- •Лабораторная работа №1
- •1.Процедурные и функциональные типы данных.
- •Var p: SwapProc;
- •2. Пример программной реализации функционального типа.
- •X,y : integer;
- •3. Практическая часть
- •3.2. Приближенное интегрирование функций
- •4. Задание.
- •Лабораторная работа №2 Тема занятия: «Модули»
- •1. Назначение модуля и его структура.
- •2. Структура модуля
- •Interface
- •{ Глобальные описания констант, типов, переменных, заголовки процедур и функций}
- •Implementation
- •3. Интерфейсная секция
- •4. Секция инициализации
- •5. Практическая часть
- •Interface
- •Implementation
- •I: Integer;
- •Задание на лабораторную работу
- •Лабораторная работа №3 Тема занятия: «Разработка оконного интерфейса» Задание на лабораторную работу
- •Interface
- •Image2: tImage;
- •Image1: tImage;
- •Image3: tImage;
- •Var Form1: tForm1;
- •Лабораторная работа №4 Тема занятия: «Разработка дополнительной оконной формы для рисования графика функции» Задание на лабораторную работу
- •1.Алгоритм построения графика функции
- •Interface
Лабораторный практикум по информатике для проведения занятий во втором семестре
Пащенко О.Б., Просуков Е.А., Серебрякова И.Л., Борисов С.В.,
Камалов С.С., Рогозин О.В.
Лабораторная работа №1
Тема занятия: «Процедурные и функциональные типы данных»
1.Процедурные и функциональные типы данных.
В языке Borland Pascal допускается интерпретация процедур и функций, как объектов, которые можно присваивать переменным и передавать в качестве пара-метров. Такие действия можно выполнять с помощью процедурных типов.
Синтаксис записи процедурного типа в точности совпадает с записью заго- ловка процедуры или функции, только опускается идентификатор имени после ключевого слова procedure или function.
Примеры описания таких типов и процедурных переменных:
type Proc = procedure;
SwapProc = procedure(var X, Y: Integer);
StrProc = procedure(S: String);
MathFunc = function(X: Real): Real;
DeviceFunc = function(var F: text): Integer;
MaxFunc = function(A, B: Real; F: MathFunc): Real;
Var p: SwapProc;
F: MathFunc;
Результат функции должен быть строкового, вещественного, целого, символь-ного, булевского типа, указателем или иметь перечислимый тип, определенный
пользователем.
2. Пример программной реализации функционального типа.
В следующем примере показывается использование параметров функциональ-ного типа для вывода трех таблиц различных арифметических действий, выполняе-мых с помощью соответствующих функций, передаваемых в процедуру через список её параметров:
program Tables;
type
Func = function(X,Y: integer): integer;
function Add(X,Y: integer): integer;
begin
Add := X + Y;
end;
function Multiply(X,Y: integer): integer;
begin
Multiply := X*Y;
end;
function Funny(X,Y: integer): integer;
begin
Funny := (X+Y) * (X-Y);
end;
procedure PrintTable(W,H: integer; Operation: Func);
var
X,y : integer;
begin
for Y := 1 to H do
begin
for X := 1 to W do Write(Operation(X,Y):5);
Writeln;
end;
Writeln;
end;
begin
PrintTable(10,10,Add);
PrintTable(10,10,Multiply);
PrintTable(10,10,Funny);
end.
При работе программа Tables выводит три таблицы, вторая из них имеет следующим образом:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Параметры процедурного типа особенно полезны в том случае, когда над мно-жеством процедур или функций требуется выполнить какие-то общие действия. В данном случае процедура PrintTable представляет собой общее действие, выполняе-мое над функциями Add, Multiply и Funny.
Следует напомнить, если процедура или функция передаётся в качестве пара-метра, то она должны удовлетворять тем же правилам совместимости типа, что и при присваивании.
