- •1. Подпрограммы
- •1.1. Описание подпрограмм
- •1.2. Обращение к подпрограммам
- •1.3. Виды параметров подпрограмм
- •1.3.1. Параметры-значения и параметры-переменные
- •1.3.2. Параметры процедурного типа
- •1.3.3. Параметры-константы
- •1.3.4. Нетипизированные параметры подпрограмм
- •1.3.5. Массивы и строки открытого типа
- •1.4. Рекурсивные подпрограммы
- •2. Файлы данных
- •2.1. Текстовые файлы
- •2.2. Типизированные файлы
- •2.3. Нетипизированные файлы
- •2.4. Обработка ошибок, возникающих в действиях с файлами
- •3. Указатели - ссылочные типы данных
- •4. Модули
- •5. Локальные и глобальные сети эвм
- •6. Базы данных
- •6.1. Модели организации данных
- •6.2. Нормализация данных
- •6.3. Типы связей между объектами
- •7. Основы компьютерной безопасности
- •7.1. Компьютерные вирусы
- •7.2. Защита информации в Интернете
- •Контрольные работы
- •Тема 1. Параметры-значения и параметры-переменные
- •Пример выполнения задания
- •Решение. Составляем алгоритм (изображен ниже), а затем программу.
- •Варианты задания
- •Тема 2. Процедурный тип Пример выполнения задания
- •Варианты задания
- •Тема 3. Рекурсия Пример выполнения задания
- •Варианты задания
- •Тема 4. Текстовые и типизированные файлы Пример выполнения задания
- •Варианты задания
- •Тема 5. Указатели Пример выполнения задания
- •Варианты задания
- •Тема 6. Модули Пример выполнения задания
- •Варианты задания
- •Библиографический список
- •Оглавление
- •1.1. Описание подпрограмм ……………………………………………… 1
1.2. Обращение к подпрограммам
Описав подпрограмму, ее можно использовать в нужном месте программы. Обращение к функции, представляющее собой <Имя_функции> (<Список фактических параметров>), может входить в состав выражений и в список элементов оператора вывода. Для обращения к процедуре используют оператор вызова процедуры, имеющий следующий вид:
<Имя_процедуры> (<Список фактических параметров>);.
При замене формальных параметров на фактические в обращении к подпрограмме следует соблюдать соответствие в числе, типе и порядке следования параметров. Покажем использование подпрограмм на примере.
Пример 3. Найти сумму элементов матрицы с использованием подпрограмм ввода элементов вектора и вычисления их суммы.
program Sum_mat;
const k = 10; {Максимально возможное число элементов в векторе}
type
vector = array[1..k] of real; {Тип-вектор}
matrix = array[1..k] of vector; {Тип-матрица}
var
m : matrix;
col, row : byte; {Количество столбцов и строк в матрице}
v : vector;
i : byte;
function Summa(u : vector; n : byte) : real;
var
i : byte;
sum : real;
begin
sum := 0;
for i := 1 to n do
sum := sum + u[i];
Summa := sum
end; { Summa }
procedure Vvod(var w : vector; n : byte);
var
i : byte;
begin
writeln('Введите через пробел ', n, ' чисел');
for i := 1 to n do read(w[i])
end; {Vvod}
{Тело основной программы}
begin
writeln('Введите число строк и столбцов в матрице');
readln(row, col);
for i := 1 to row do {Ввод матрицы: }
Vvod(m[i], col); {каждая ее строка – это вектор}
for i := 1 to row do
v[i] := Summa(m[i], col); {Сумма элементов i-й строки}
writeln('Сумма элементов матрицы pавна ',Summa(v, row) : 3 : 0);
writeln('Нажмите ENTER'); readln
end.
1.3. Виды параметров подпрограмм
Для организации правильного взаимодействия с основной программой подпрограмма использует формальные параметры разного вида.
1.3.1. Параметры-значения и параметры-переменные
Для передачи исходных данных в подпрограмму применяют параметры-значения, которые могут быть любого типа, кроме файлового. При обращении к подпрограмме происходит замена формального параметра его конкретным значением, которое передается в подпрограмму в виде копии через стек. Стек представляет собой особым образом организованную область памяти компьютера (сегмент стека, размер которого можно изменять директивой). Данные, помещенные в стек, выбираются из него по правилу: последним вошел, первым вышел. Возвращаются результаты выполнения подпрограммы с помощью параметров-переменных, которые описываются в ее заголовке с использованием служебного слова var и могут быть любого типа. При обращении к подпрограмме происходит передача в нее адреса конкретной переменной. Поэтому такой вид передачи часто называют передачей по ссылке. В приведенных примерах формальные параметры u и n являются параметрами-значениями, а параметр w – параметром-переменной. Покажем на простейшем примере принципиальную разницу между этими двумя видами параметров, для чего оформим в программе две процедуры изменения аргумента: первая имеет параметр-значение, а вторая – параметр-переменную.
Program Raznica;
var x : byte;
procedure Izm1(arg : byte); begin arg := 1 end;
procedure Izm2(var arg : byte); begin arg := 1 end;
begin
x := 5;
Izm1(x); writeln(x); {Выводится число 5}
Izm2(x); writeln(x) {Выводится число 1}
end.
