
- •Введение
- •Описание подпрограмм
- •Заголовок подпрограммы
- •Список формальных параметров
- •Параметры-значения
- •Параметры-переменные
- •Нетипизированные параметры
- •Умалчиваемые параметры
- •Параметры-массивы
- •Параметры-строки
- •Параметры-записи
- •Локальные элементы подпрограмм
- •Тело подпрограммы
- •Рекурсивные подпрограммы и опережающее описание
- •Примеры использования подпрограмм
- •Вычисление значений выражений
- •Ввод-вывод переменных типа запись
- •Работа с массивами
- •Сортировка методом прочесывания
- •Процедурные типы
- •Задания к лабораторной работе
- •Вопросы к лабораторной работе
- •Справочные таблицы

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
buf:=a[i];
a[i]:=a[j];
a[j]:=buf;
Done:=False; //сбрасываем флаг перестановки end;{if}
end;{for i}
until (Done)and(Gap=1); end;{CompSortProc}
//основная программа begin
CompSortProc(a);
OutArray(a);
readln;
end.
Процедурные типы
Процедурные типы используются как средство передачи процедур и функций в качестве фактических параметров при обращении к другим подпрограммам.
Для объявления процедурного типа необходимо описать заголовок подпрограммы процедуры или функции без указания ее имени, например
type MyProc=procedure; PrintProc=procedure (a, b:Integer); Func=function(x:real):real;
Как видно из приведенных примеров, существует два вида процедурных типа: типпроцедура и тип функция.
В качестве примера рассмотрим подпрограмму вычисления значения определенного интеграла методом прямоугольников.
Метод вычисления значения определенного интеграла методом прямоугольников использует геометрический смысл определенного интеграла, который заключается в том, что определенный интеграл – это площадь под кривой на отрезке интегрирования.
f(x) |
|
a |
b |
h |
|
a |
b |
Рисунок 2
Рисунок 3
Весь интервал интегрирования разбивается на равные отрезки. На каждом отрезке подынтегральная функция заменяется ступенчатой функцией значение которой равно значению исходной функции в середине отрезка. Площадь каждого прямоугольника вычисляется по формуле
si = h f (a + h(12 +i)).
где h = (b −a)n , n – число точек разбиения.

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Следовательно значение определенного интеграла можно вычислить по формуле
b |
n−1 |
∫ f (x)dx ≈ ∑si |
|
a |
i=0 |
Значение интеграла вычисляется тем точнее, чем меньше шаг интегрирования
Листинг программы для вычисления значения интеграла методом прямоугольников приведен в листинге
Листинг 7
program Integral;
{$APPTYPE CONSOLE}
type Func=function(x:real):real;
function Int(F:Func; //подынтегральная функция a, b:real;//пределы интегрирования n:integer //число точек разбиения
):real; var i:Integer;
h, s:real; begin
h:=(b-a)/n; //шаг интегрирования s:=0;
for i:=0 to n-1 do begin
s:=s+h*F(a+h/2+h*i);
end;
Result:=s;
end;
//линейная функция function Lin(x:real):real;
begin result:=x;
end;
//квадратичная функция function MySqr(x:real):real;
begin result:=x*x;
end;
begin |
|
|
writeln('Lin |
', |
Int(Lin, 0, 1, 10):6:5); |
writeln('Sqr |
', |
Int(MySqr, 0, 1, 10):6:5); |
readln; |
|
|
end. |
|
|
Как видно из листинга типу Func соответствует любая функция имеющая тот же список параметров (число и тип параметров).
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Задания к лабораторной работе
1. Наберите программы приведенные в лабораторной работе.
2. Составьте программу для вычисления значений следующих функций:
|
x < 0,2x |
|
|
2 |
|
f (x)= |
0 ≤ x < 3, x3 |
f (x)= |
|
||
x > 0, x |
|
|
|||
|
|
|
|
|
|
|
|
|
|
3 |
|
|
x ≥ 3, ln(x) |
|
x ≤ 0, x |
+ 2x |
|
|
|
|
|||
|
|
|
|
|
|
3.Перепишите задание 2 из лабораторной работы №5 с использованием подпрограмм. В качестве примера используйте программу из листинга 4
4.Оформите программы для поиска и сортировки массивов из лабораторной работы №4 в виде подпрограмм.
5.Составьте подпрограммы для ввода (вывода) данных в (из) двумерного массива.
6.Оформите программы для вставки и удаления элементов массивов из лабораторной работы №4 в виде подпрограмм.
7.Составьте подпрограмму для печати таблицы значений функции. В качестве параметров подпрограммы служат табулируемая функция, интервал табулирования и число точек.
Вопросы к лабораторной работе
1.Какие виды подпрограмм существуют в Object Pascal, как они описываются?
2.Из каких частей состоит подпрограмма?
3.Как связаны между собой список формальных параметров и список фактических параметров?
4.Чем отличаются и как описываются параметры-значения, параметры-переменные, параметры-константы?
5.Что такое открытые массивы, когда они применяются?
6.Как передать в подпрограмму многомерный массив?
7.Что такое область видимости локальной переменной?
8.Какое время жизни имеет локальная переменная?
9.Как оформляется передача результата вычисления функции?
10.Что такое рекурсия?
11.Зачем нужно опережающее описание подпрограмм?
12.Как объявить процедурный тип?
13.Объясните алгоритм работы метода сортировки прочесыванием.
14.Что такое и как описываются умалчиваемые параметры?