Лабораторная работа №5. Использование процедур и функций пользователя в программе на Pascal
Цель работы
- получение навыков в написании и использовании процедур и функций пользователя при решении практических задач;
- получение навыков в написании, отладке и тестировании программ, использующих функции пользователя.
Краткие теоретические сведения
В Pascal кроме встроенных функций разрешено использование функций пользователя[1]. Функция пользователя должна быть описана в разделе описаний того программного блока, который ее вызывает. Формат ее описания следующий:
Формат
Function < имя > {(< список формальных параметров >): < тип результата >;
{ < раздел описаний > };
Begin
<операторы>;
<имя>:=< выражение >;
end;
В разделе операторов должен находиться, по крайней мере, один оператор, присваивающий имени функции результат выполнения функции. Если присвоений несколько, то результатом работы функции будет последнее значение, присвоенное имени функции в ее теле.
Обращение к функции выполняется по имени с обязательным указанием фактических параметров. Между формальными и фактическими параметрами должно быть соответствие по порядку следования, по типу и по количеству параметров.
Функцию пользователя рекомендуется использовать в тех случаях, когда некоторый фрагмент программы используется несколько раз и при этом вычисляется только одно значение.
В тех случаях, когда результатом работы некоторого фрагмента программы является несколько значений, рекомендуется использовать процедуру пользователя. Использование процедур пользователя также позволяет реализовать модульный принцип при разработке программ.
Процедура пользователя должна быть описана в разделе описаний того программного блока, который ее вызывает. Формат ее описания следующий:
Формат
Procedure < имя > {(< список формальных параметров >)};
{ < раздел описаний >};
Begin
<операторы>;
end;
Список формальных параметров - это идентификаторы, посредством которых в процедуру передаются необходимые для ее работы исходные данные, и идентификаторы, содержащие значения результатов.
Идентификаторы, которые описаны в разделе описания процедуры, называются локальными и их действие распространяется только на процедуру. Вызывающей программе недоступны локальные переменные[1,3].
Для обращения к процедуре необходимо записать оператор вызова процедуры:
Формат
<имя>{(<список фактических параметров>)};
Формальные и фактические параметры должны соответствовать по порядку следования, по типу и по количеству[1, 2, 3].
Пример программы на Pascal
Задача 8.
Даны действительное число и целое положительное или отрицательное число
. Вычислить
. Возведение в степень оформить в виде функции пользователя.
program st8;
Var
a,x:real;
n:integer;
function Sq(s:real;n:integer):real;
Var
i:integer;
r:real;
Begin
if n=0 then Sq:=1 else
Begin
r:=1;
for i:=1 to abs(n) do r:=r*s;
if n<0 then Sq:=1/r else Sq:=r;
end;
end;
Begin
read(a,n);
x:=Sq(a,n);
writeln('x=',x);
End.
Задача 9.
Вычислить сумму значений элементов одномерного массива размерности
. Вычисление суммы значений элементов массива оформить в виде процедуры пользователя.
program st9;
const n=5;
Type
mas=array[1..n] of integer;
Var
i,s:integer;
x:mas;
procedure Stpr1(a:mas;Var s:integer);
Var
i:integer;
Begin
s:=0;
for i:=1 to n do s:=s+a[i];
end;
Begin
for i:=1 to n do read(x[i]);;
Stpr1(x,s);
writeln('s=',s);
End.
5.3. Содержание задания
Задание 5
Вычислить значения функции для заданных аргументов (см. приложение Б, табл. Б.1). Для решения задачи использовать функцию пользователя. Необходимые для вычисления данные указываются в качестве параметров-значений в списке формальных параметров функции пользователя.
Задание 6
Написать программу для решения задачи (см. приложение В табл. В.1), используя процедуру пользователя. Формальные параметры-значения использовать для ввода необходимых исходных данных, а формальные параметры-переменные – для вывода результатов из процедуры. В процедуре не использовать операторы ввода-вывода.
Содержание отчета
- цель работы;
- задание;
- блок-схема алгоритма решения задачи;
- текст программы;
- результаты ручного и машинного счета;
- выводы.
5.5. Контрольные вопросы
1.Объясните назначение и правила использования функции пользователя. Как производится обращение к функции пользователя в программе.
2.Объясните назначение и правила использования процедуры пользователя. Как производится обращение к процедуре пользователя в программе.
- Объясните назначение формальных и фактических параметров.
4.Объясните, как производится ввод данных и вывод результатов при использовании функции и процедуры пользователя.
- Поясните различие между глобальными и локальными переменными.
Библиографический список
1. Немнюгин С.А. Turbo-Pascal. Программирование на языке высокого уровня: учеб. для вузов / С.А. Немнюгин. - СПб.: Питер, 2008. - 544с.
2. Пермеинов О.Н. Программирование на языке Pascal / О.Н. Пермеинов. - М.: Радио и связь, 1998. - 224с.
3. Васильев П.П. Турбо Паскаль в примерах и задачах / П.П. Васильев. - М.: Финансы и статистика, 2003. - 496с.
ПРИЛОЖЕНИЕ А
Таблица А.1 – Варианты к заданию 1
Вариант | Содержание задания | Исходные данные |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | z=0.160 | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() |
Продолжение таблицы А.1
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() |
ПРИЛОЖЕНИЕ Б
Таблица Б.1 – Варианты заданий для решения задания 2
Вариант | Функция | Исходные данные |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | x=0.11, y= -8.251, z=0.765, x=0.92 | |
![]() | ![]() |
Продолжение таблицы Б.1
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() |
Продолжение таблицы Б.1
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() |
Продолжение таблицы Б.1
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() |
ПРИЛОЖЕНИЕ В
Таблица В.1 – Варианты заданий для решения задания 3
Вариант | Функция |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() |
Продолжение таблицы В.1
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() |
ПРИЛОЖЕНИЕ Г
Таблица Г.1 – Варианты заданий для решения задания 4
Вариант | Содержание задачи |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() ![]() |
Продолжение таблицы Г.1
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() |
Продолжение таблицы Г.1
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() |
Продолжение таблицы Г.1
Задан одномерный массив ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() | |
Задан одномерный массив ![]() ![]() ![]() |
ПРИЛОЖЕНИЕ Д
Таблица Д.1 – Варианты заданий для самостоятельной работы
Вариант | Содержание задачи |
Дано натуральное число ![]() ![]() | |
Дано натуральное число ![]() ![]() ![]() | |
Даны положительные действительные числа ![]() ![]() ![]() ![]() ![]() | |
Дано целое ![]() ![]() | |
Дано натуральное число ![]() |
Продолжение таблицы Д.1
Получить сумму положительных элементов последовательности ![]() | |
Дано натуральные числа ![]() | |
Дано натуральные числа ![]() ![]() | |
Даны натуральные числа ![]() ![]() | |
Дано натуральное число ![]() ![]() ![]() | |
Дано натуральное число ![]() ![]() | |
Получить все четырехзначные натуральные числа, в записи которых нет двух одинаковых цифр. | |
Выяснить, найдутся ли среди точек с координатами ![]() | |
Даны действительные положительные числа ![]() |
Продолжение таблицы Д.1
Даны действительные числа ![]() | |
Известно, что точки с координатами ![]() | |
Дано ![]() | |
Даны координаты 15 точек ![]() ![]() ![]() | |
Дано ![]() ![]() |
Заказ №______от «_____»______________ 2011. Тираж__________экз.
Изд-во СевНТУ