
- •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. Подпрограммы
1.1. Описание подпрограмм
Идея использования подпрограмм для выполнения одинаковых действий по отношению к разным однотипным исходным данным реализована в языке Turbo Pascal с помощью процедур и функций. Так как подпрограмма является частью программы, то ее синтаксическая конструкция повторяет с некоторыми особенностями структуру программы в целом. Подпрограмма должна быть представлена в описательной части программы. Заголовок подпрограммы служит для задания ей собственного имени, используемого для обращения к ней, и ее формальных параметров. Список формальных параметров включает в себя параметры, с помощью которых в подпрограмму передаются исходные данные, и параметры, предназначенные для возвращения из подпрограммы в основную программу результатов выполнения подпрограммы. Имена формальных параметров служат своеобразными шаблонами, которые при обращении к подпрограмме заменяются конкретными объектами программы. Все необходимые действия в подпрограмме образуют ее тело, заключенное между ключевыми словами begin и end. Между заголовком подпрограммы и ее телом могут содержаться разделы описания необходимых исключительно для самой подпрограммы объектов: ее констант, типов, переменных и подпрограмм.
Заголовок процедуры имеет следующий вид:
procedure <Имя>(<Список формальных параметров>);.
Параметры в списке описываются с указанием имени типа, например так: (arg1, arg2 : byte; var arg3 : word). Однотипные параметры описывают через запятую. Перед параметром arg3 стоит служебное слово var, именно с ним должны описываться формальные параметры, представляющие результаты выполнения действий в подпрограмме.
Процедура является общим видом подпрограммы. С ее помощью можно выполнять различные действия, например ввод или вывод данных, их сортировку и т.п., а также возвращать в программу несколько результатов, например максимальный элемент массива и его индексы. Функция - это частный случай подпрограммы, которая содержит в своем имени результат (как, например, стандартная функция sin(x)). Функция может возвращать значения, относящиеся к любому порядковому или действительному типу, типу string (без указания длины), к любому указателю. Поэтому в заголовке функции обязательно указывают тип возвращаемого ею значения, а в теле функции должен присутствовать оператор присваивания возвращаемого значения имени функции. В общем случае заголовок функции имеет следующий вид:
Function <Имя>(<Список формальных параметров>):<Тип результата>;.
Пример 1. Напишем подпрограмму, определяющую сумму элементов вектора. Так как результатом выполнения подпрограммы является число, то оформим подпрограмму-функцию. Предусмотрим работу с векторами, содержащими разное количество компонент, – параметр n.
function Summa (u : vector; n : byte) : real; {Заголовок функции}
var k : byte; {Локальные переменные}
sum : real;
begin {Тело подпрограммы}
sum:= 0; {Исходная сумма}
for k := 1 to n do
sum := sum + u[k];
Summa := sum {Присвоение имени функции результата}
end;
Используемый для описания параметра u тип vector должен быть объявлен в программе до его применения в заголовке функции Summa. Для получения результата функция Summa использует локальные переменные k и sum, которые объявлены внутри подпрограммы. Задействовать для этих же целей однотипные глобальные переменные из основной программы не рекомендуется. Это может приводить к их нежелательным изменениям в подпрограмме. К тому же функция является инструментом решения задачи для программы, но не программа с ее объектами обслуживает подпрограмму. В связи с использованием понятий локальных и глобальных параметров приведем следующую полезную иллюстрацию взаимодействия блоков программы. Пусть (рисунок ниже) самый внешний ее блок A содержит внутри себя блоки B и D, а блок B содержит блок C. Тогда описанные в блоке A константы, типы, переменные, подпрограммы являются глобальными для блоков B, C и D, т.е. они “видимы” в них и могут быть использованы (и в блоке A – тоже).
Аналогичные объекты, но объявленные в блоке B, “видимы” только в блоке C и не доступны для использования в блоках A и D. Объекты, описанные в блоках C и D, являются их локальными объектами и могут быть использованы только в этих блоках.
Пример 2. Напишем подпрограмму для ввода нужного числа элементов вектора. Эти действия реализуем с помощью процедуры.
procedure Vvod (var w : vector; n : byte);
var i : byte; {Локальная переменная}
begin
writeln(‘Введите через пробел ’, n, ‘натуральных чисел 255’);
for i := 1 to n do read(w[i])
end;