- •Лабораторная работа № 5 Цель работы
- •Теоретическая часть
- •Процедура
- •Функция
- •Формальные и фактические параметры
- •Процедура exit
- •Рекурсивные процедуры и функции
- •Директивы подпрограмм
- •Варианты заданий
- •Лабораторная работа № 6 Цель работы
- •Теоретическая часть
- •Стандартные подпрограммы для всех файлов
- •Стандартные подпрограммы для текстовых файлов
- •Стандартные подпрограммы для типизированных файлов
- •Варианты заданий
- •Содержание и оформление отчета
- •Литература
- •Паскаль: процедуры и функции, работа с файлами
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Саратовский государственный технический университет
Кафедра "Приборостроение"
Паскаль:
процедуры и функции,
работа с файлами
Методические указания
к лабораторным работам
для студентов специальности 190100, 190500
Одобрено
редакционно-издательским советом
Саратовского государственного технического университета
Саратов 2006
Содержание
Лабораторная работа № 5 3
Цель работы 3
Теоретическая часть 3
Варианты заданий 12
Лабораторная работа № 6 14
Цель работы 14
Теоретическая часть 14
Варианты заданий 19
Содержание и оформление отчета 21
Литература 21
Лабораторная работа № 5 Цель работы
Изучение работы с процедурами и функциями.
Теоретическая часть
В Паскале существует 2 разновидности подпрограмм: процедуры и функции. Структура подпрограммы аналогична структуре всей программы. Перед использованием подпрограмма должна быть описана.
Процедура
Предназначена для выполнения какой-то законченной последовательности действий. В отличие от программы заголовок в процедуре обязателен:
procedure <имя процедуры> (<список параметров>); |
За заголовком процедуры могут идти такие же разделы, что и в основной программе, за исключением раздела uses. Завершается процедура не точкой (как основная программа), а точкой с запятой
Пример 1:
procedure WriteSquareN(N : integer); var I : Integer; begin for I := 1 to N do write(I,'^2=',I*I,' '); writeln; end; |
В примере 1 реализована процедура вывода квадратов N целых чисел. Участок кода между операторами begin…end называется телом процедуры.
Вызов процедуры осуществляется указанием ее имени и фактических параметров, тип которых должен совпадать с типами параметров, описанных в заголовке процедуры (см. пример 2).
Пример 2:
program Test; var Count : Integer; procedure WriteSquareN(N : integer); var I : Integer; begin for I := 1 to N do write(I,'^2=',I*I,' '); writeln; end; begin write('Введите число:'); readln(Count); WriteSquare(Count); end. |
В примере 2 перед использованием процедура WriteSquare описана в разделе переменных var основной программы. После этого в теле программы можно осуществлять вызов процедуры. Результат работы программы приведен ниже.
Введите число: 5 1^2=1 2^2=4 3^2=9 4^2=16 5^2=25 |
Функция
Предназначена для вычисления какого-либо параметра. В отличие от процедуры заголовок имеет вид:
function <имя функции>(<список параметров>) : <тип возвращаемого параметра>; |
Тип возвращаемого параметра может быть следующий: любой порядковый, любой вещественный, string, указатель.
В теле функции хотя бы раз имени функции должно быть присвоено значение – это и означает возврат параметра.
Пример 3:
function Factorial(N : Byte) : LongInt; var Fact : LongInt; I : Byte; begin Fact := N; for I := N-1 downto 2 do Fact := Fact * I; Factorial := Fact; {возврат значения - имени функции присваивается вычисленное значение} end; |
В примере 3 реализована функция для вычисления факториала числа N.
Если имя функции внутри ее описания используется не в левой части оператора присваивания, то это означает, что функция вызывает себя рекурсивно.
Пример 4:
Program Test; var T : Byte; function Factorial(N : Byte) : LongInt; var Fact : LongInt; I : Byte; begin Fact := N; for I := N-1 downto 2 do Fact := Fact * I; Factorial := Fact; end; begin write('Введите число (1..127): '); readln(T); writeln('Значение формулы:', Part := Sqr(T)/Factorial(T);); end. |
В примере 4 вычисляется значение формулы .