Лабораторная работа №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
Задан одномерный массив размерности . Вычислить произведение последних пяти элементов в массиве не равных нулю. | |
Задан одномерный массив размерности . Вычислить произведение отрицательных элементов массива не равных . | |
Задан одномерный массив размерности . Определить количество отрицательных элементов в массиве . | |
Задан одномерный массив размерности . Вычислить сумму значений элементов массива больших пяти. | |
Задан одномерный массив размерности . Отрицательным элементам массива присвоить значение, равное единице, а положительные элементы увеличить в 10 раз. | |
Задан одномерный массив размерности . Отрицательные элементы возвести в квадрат, а положительные значения элементов массива удвоить. | |
Задан одномерный массив размерности . Вычислить сумму положительных элементов в массиве и модулей отрицательных элементов. |
Продолжение таблицы Г.1
Задан одномерный массив размерности . Вычислить сумму модулей отрицательных элементов в массиве . | |
Задан одномерный массив размерности . Изменить знаки элементов массива на противоположные. | |
Задан одномерный массив размерности . Значение положительных элементов массива увеличить на величину . | |
Задан одномерный массив размерности . Вывести на печать номера элементов массива , которые больше четырех. | |
Задан одномерный массив размерности . Вычислить сумму элементов в массиве , значения которых меньше трех. | |
Задан одномерный массив размерности . Вычислить произведение элементов в массиве не равных нулю и больших шести. | |
Задан одномерный массив размерности . Найти номер элемента массива с максимальным значением. | |
Задан одномерный массив размерности . Вычислить произведение четных значений элементов не равных 8 в массиве . |
Продолжение таблицы Г.1
Задан одномерный массив размерности . Вычислить модуль разности суммы и произведения значений элементов не равных нулю. | |
Задан одномерный массив размерности . Вычислить среднее арифметическое значений элементов массива меньших пяти. | |
Задан одномерный массив размерности . Вычислить сумму нечетных значений элементов массива . | |
Задан одномерный массив размерности . Вывести на печать номера элементов массива с нечетными значениями. | |
Задан одномерный массив размерности . Найти минимальное значение среди отрицательных значений элементов массива . | |
Задан одномерный массив размерности . Значения элементов массива , большие их среднего арифметического, заменить нулем. |
ПРИЛОЖЕНИЕ Д
Таблица Д.1 – Варианты заданий для самостоятельной работы
Вариант | Содержание задачи |
Дано натуральное число . Сколько цифр в числе . Чему равна сумма его цифр. | |
Дано натуральное число . Переставить первую и последнюю цифры числа. . Приписать по единице в начало и в конец записи числа . | |
Даны положительные действительные числа . В последовательности образованной по закону , найти первый член , для которого выполняется неравенство . | |
Дано целое . Вычислить | |
Дано натуральное число . Получить все его натуральные делители. |
Продолжение таблицы Д.1
Получить сумму положительных элементов последовательности . | |
Дано натуральные числа . Получить все их общие делители. | |
Дано натуральные числа . Получить все их общие кратные меньшие . | |
Даны натуральные числа . Получить . | |
Дано натуральное число . Вычислить произведение первых сомножителей | |
Дано натуральное число . Получить все трехзначные натуральные числа, сумма цифр которых равна . | |
Получить все четырехзначные натуральные числа, в записи которых нет двух одинаковых цифр. | |
Выяснить, найдутся ли среди точек с координатами четыре таких, которые являются вершинами квадрата. | |
Даны действительные положительные числа . Выяснить, можно ли построить четырехугольник с такими длинами сторон |
Продолжение таблицы Д.1
Даны действительные числа , которые рассматриваются как координаты 15 точек на плоскости. Выяснить, верно ли, что для каждой из этих пятнадцати точек найдется другая, такая, что все оставшиеся тринадцать точек лежат по одну сторону от прямой, проходящей через эти две точки. | |
Известно, что точки с координатами являются тремя вершинами некоторого прямоугольника. Найти координаты четвертой вершины. | |
Дано символов. Преобразовать последовательность символов, заменив в ней все восклицательные знаки точками, а каждую точку многоточием (т. е. тремя точками). | |
Даны координаты 15 точек на плоскости с координатами . Верно ли, что замкнутая ломанная не имеет самопересечений? | |
Дано символов. Подсчитать сколько раз среди данных символов встречается символ ‘+’ и символ ‘*’; общее число вхождений цифровых символов и символов +, —, * до символа с номером . |
Заказ №______от «_____»______________ 2011. Тираж__________экз.
Изд-во СевНТУ