- •Содержание
- •Перечень, наименование, обозначение блоков и отображаемые ими функции.
- •Интегрированная инструментальная оболочкаPascalAbc. Работа с главным меню системыPascalAbc
- •Среда программирования Pascal abc.
- •Общая структура программ в Pascal.
- •Основные части программы.
- •Оператор ввода-вывода в Pascal. Описание некоторых стандартных типов данных и встроенные операции и функции, применимые к ним
- •Операторы ввода/вывода данных
- •Стандартные типы данных
- •Программирование линейных алгоритмов
- •Понятие линейного алгоритма. Примеры написания программ.
- •Программирование с помощью операторов условного и безусловного перехода
- •Условный оператор If
- •Оператор безусловного перехода GoTo
- •Оператор выбора Case
- •Циклические программы
- •Оператор For
- •Оператор Repeat
- •Оператор While
- •Массивы
- •Линейные массивы. Описание типа
- •Многомерные массивы. Двухмерные массивы – матрицы.
- •Расчет отметок проектной линии на вертикальной выпуклой или вогнутой кривой
- •Индивидуальные задания
- •Процедуры и функции, определенные пользователем. Параметры процедур и функций
- •Глобальные и локальные переменные, параметры процедур и функций
- •Процедуры пользователя
- •Функции пользователя
- •Символьные массивы. Строки
- •Символьный тип
- •Символьные массивы
- •Строки. Объявление строчных типов и переменных
- •Определения значения строковой переменной
- •Длина строки. Операция конкатенации
- •Функции для работы со строками
- •Процедуры для работы со строками
Процедуры и функции, определенные пользователем. Параметры процедур и функций
Цель лабораторной работы: познакомиться с понятиями «процедура» и «функция» в языке программирования Pascal, рассмотреть их сходства и различия, закрепить практические навыки работы с системой PascalABC на примере разработки структурированных программ, реализации алгоритмов при помощи процедур и функций, правильно применять параметы-значения и параметры-переменные при написании процедур и функций.
Глобальные и локальные переменные, параметры процедур и функций
Технология программирования с использованием процедур и функций, организованных пользователем, дает ряд преимуществ. Именно благодаря ним обеспечивается возможность:
- организовать работу нескольких программистов над одной программой с последующим объединением отдельно отлаженных и относительно независимых блоков в единое целое;
- проводить отладку отдельных блоков и только после этого программы в целом;
- значительно экономить память, так как многократно используемый участок (процедура или функция) заносится в память только один раз;
- упростить внесение изменений в программу, так как исправление ошибки в одном блоке не вызывает корректировку других блоков.
ПАСКАЛЬ допускает пять основных способов использования и размещения подпрограмм:
основная программа, процедуры и функции расположены в одном файле;
подпрограммы расположены в отдельных файлах и включаются в основной файл с помощью директивы компилятора $;
подпрограммы организуются как оверлейные структуры и поочередно загружаются в одно и то же место памяти;
подпрограммы пишутся на машинном коде и включаются в программу одним из вышеуказанных способов;
подпрограммы оформляются как "внешние" и вызываются из основной программы.
Параметры могут иметь любой тип, включая структурированный. ПАСКАЛЬ поддерживает два различных метода передачи параметров: по значению и по ссылкам.
Когда параметры передаются по значениям, формальный параметр является переменной, локальной в блоке. Фактический параметр может быть любым выражением того же типа, что и соответствующий ему формальный параметр. Такие параметры называются параметрами-значениями. Их главная отличительная черта – изменение формальных параметров не влечет за собой изменения фактических параметров. Пример типичной записи параметров-значений в описании процедур и функций:
Procedure Копе (А, В, С : integer; D : real);
Function Docs (S1, S2 : real; Flag : boolean) : real;
Тип параметров в секции формальных параметров должен быть указан в виде определенного ранее идентификатора типа. Так, запись
Procedure Okl (Mas1 : array [1. .12] of real); является ошибочной. Тип переменной следует определить ранее в разделе описания типов блока:
Type Massiv = array [1. .12] of real;
Procedure Okl (Mas1 : Massiv);
Когда параметр передается посредством ссылки, фактический параметр является переменной. Формальный параметр обозначает эту фактическую переменную в течение всего времени активизации блока. Параметры, переданные посредством ссылки, называются параметрами-переменными. Их характерный признак – любое изменение формального параметра означает изменение фактического параметра. Для описания параметров-переменных в секции формальных параметров служит зарезервированное слово Var.
При использовании параметров-переменных формальные и фактические параметры должны совпадать по количеству и типу. Однако возможны два исключения:
Формальные параметры без типа несовместимы ни с каким типом. Допустимо сочетание параметров-значений и параметров-переменных в одной секции формальных параметров:
Procedure Prots (Var А, В, С : real; S : boolean);
Такая запись означает, что А, В, С – параметры-переменные, а S – параметр-значение. Напомним, что если процедура должна возвратить в программу определенные результаты, они должны быть специфицированы как параметры-переменные, т. е. в сочетании со словом Var, в противном случае результаты не будут возвращены.