
- •5.5.2. Стандартные функции для данных типа char
- •5.5.3. Определение переменных строкового типа. Особенности типа string
- •5.5.4. Строковые выражения
- •5.5.5. Строковые процедуры и функции
- •5.6. Пример программы
- •5.7. Варианты заданий
- •5.8. Содержание отчета (см. П. 1.10)
- •5.9. Контрольные вопросы
- •6.4. Порядок выполнения работы
- •5. Устно ответить на контрольные вопросы (п.6.9).
- •6. Оформить отчет (см. П. 1.10).
- •6.5. Справки по структуре и операторам Pascal-программы, использующей пользовательские процедуры и функции
- •6.5.1. Описание процедуры. Оператор процедуры
- •Структура описания процедуры
- •6.5.2. Описание функции. Указатель функции
- •6.5.3. Локализация имен в Turbo Pascal
- •6.6. Варианты заданий
- •6.7. Содержание отчета (см. П. 1.10)
- •6.8. Контрольные вопросы
- •5. Устно ответить на контрольные вопросы (п. 7.9).
- •6. Оформить отчет (см. П. 1.10).
- •7.5. Справки по файловым процедурам и функциям
- •7.5.1. Описание файловых переменных
- •7.5.2. Установочные и завершающие операции с файлами
- •7.5.3. Операции ввода-вывода
- •7.5.4. Операции перемещения по файлу, определение параметров файла
- •7.5.5. Обработка ошибок ввода-вывода
- •7.5.6. Текстовые файлы
- •7.6. Пример структуры программы
- •7.7. Варианты заданий
- •7.8. Содержание отчета (см. П. 1.10)
- •7.9. Контрольные вопросы
- •Основная литература
- •Дополнительная литература
- •Приложение. Титульный лист
- •Отчет о лабораторных работах по дисциплине «Информатика и программирование»
6.5.1. Описание процедуры. Оператор процедуры
Описание каждой процедуры начинается с заголовка, в котором задаются имя процедуры и список формальных параметров с указанием их типов. Процедура может быть и без параметров, тогда в ее заголовке указывается только ее имя. С помощью параметров осуществляется передача исходных данных в процедуру, а также передача результатов работы обратно в вызывающую ее программу.
Структура описания процедуры
Procedure <имя> (<список формальных параметров>)<директива>;
Const ...;
Type ...;
Var ...;
{-------------------------Блок процедуры---------------------}
Begin
<операторы>
End;
<имя> - любой допустимый идентификатор, напр., Proc1.
<список формальных параметров> - последовательность идентификаторов (имен) формальных параметров и их типов, напр., Step:real, Mas: Type_mas,..., разделенных запятой.
Список формальных параметров может включать в себя параметры-значения, параметры-переменные (перед ними должно стоять ключевое слово Var), параметры процедуры (перед ними должно стоять ключевое слово Procedure) и параметры-функции (перед ними должно стоять ключевое слово Function), нетипизированные параметры, перед которыми должно стоять служебное слово Var и отсутствует указание типа.
<директива> - одна из директив: Interrupt, External, Assembler, Inline, Forward. При выполнении лабораторной работы может быть использована директива опережающего описания Forward. Опережающее описание заключается в том, что объявляется лишь заголовок процедуры, ее тело заменяется зарезервированным словом Forward, а само тело процедуры записывается в другом месте той же программы.
Вызов и выполнение процедуры осуществляется при помощи оператора процедуры:
<имя процедуры>(<список фактических параметров>);
Между формальными и фактическими параметрами должно быть полное соответствие, т.е. формальных и фактических параметров должно быть одинаковое количество; порядок следования фактических и формальных параметров должен быть один и тот же; тип каждого фактического параметра должен совпадать с типом соответствующего ему формального параметра.
При вызове процедуры значения фактических параметров присваиваются формальным параметрам, а результаты работы присваиваются параметрам-переменным.
Процедуры могут возвращать результат в основную программу не только при помощи параметров, но и непосредственно изменяя глобальные переменные. Переменные, описанные в основной программе, являются глобальными по отношению к внутренним процедурам и функциям.
Переменные, описанные внутри процедур и функций, называются локальными. Они порождаются при каждом входе в процедуру и уничтожаются при выходе из этой процедуры, т.е. локальные переменные существуют только при выполнении процедуры и недоступны в основной программе.
Пример программы, которая выполняет ввод и вывод значений элементов массивов из 10 вещественных чисел после ввода исходных данных, после возведения в квадрат и возведения в 4-ую степень. Для выполнения вышеназванных операций используются процедуры, определенные пользователем.
Program DemoProc;
{Определение типа Mas (массива из 10 вещественных чисел)}
Type
Mas=Array[1..10] of real;
{Объявление фактических параметров}
Var
M1, M2 :Mas;
{Процедура ввода массива из 10 вещественных элементов с формальным параметром X}
Procedure MasInp (Var X:Mas);
Var
I: Byte; {I - локальная переменная для организации цикла}
Begin
For I:=1 to 10 do
Begin
Write('Введите ', i:3 , '-й элемент массива');
Readln(X[i])
End
End;
{Процедура вывода массива из 10 вещественных чисел с формальным параметром X}
Procedure MasOut (X:Mas);
Var
I: Byte;{i - локальная переменная для организации цикла}
Begin
For I:=1 to 10 do
Writeln(i:3 , '-й элемент массива ', X[i]:6:2)
End;
{Процедура возведения в квадрат значений элементов массива с формальными параметрами X и Y}
Procedure MasMult (X:Mas; var Y:Mas);
Var
i:Byte; {i - локальная переменная для организации цикла}
Begin
For i:=1 to 10 do
Y[i]:=X[i]*X[i]
End;
{Начало основной программы}
Begin
Writeln('Введите массив из 10 чисел ');
{Вызов процедуры MasInp для ввода значений элементов массива с передачей ей фактического параметра M1}
MasInp(M1);
Writeln('Введенный массив ');
{Вызов процедуры MasOut для вывода значений введенных элементов массива, с передачей ей фактического параметра M1}
MasOut(M1);
{Вызов процедуры MasMult для возведения значений элементов массива в квадрат с передачей ей фактических параметров: M1 (исходные данные) и M2 (результат)}
MasMult(M1,M2);
Writeln('Квадраты чисел: ');
{Вызов процедуры MasOut для вывода значений элементов массива, возведенных в квадрат с передачей ей фактического параметра M2}
MasOut(M2);
{Вызов процедуры MasMult для возведения значений элементов массива в четвертую степень с передачей ей фактических параметров: M2 (исходные данные) и M1 (результат)}
MasMult(M2,M1);
Writeln('Числа в четвертой степени: ');
{Вызов процедуры MasOut для вывода значений элементов массива, возведенных в четвертую степень с передачей ей фактического параметра M2}
MasOut(M1);
End.