Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.раб. программирование.pdf
Скачиваний:
111
Добавлен:
21.05.2015
Размер:
764.95 Кб
Скачать

Лабораторная работа 5. Подпрограммы

Подпрограмма – программа, реализующая вспомогательный алгоритм. Основная программа – программа, реализующая основной алгоритм решения задачи и содержит в себе обращения к подпрограммам. В Паскале существует два типа подпрограмм: процедуры и функции. Используемые в программе нестандартные подпрограммы должны быть описаны в разделе описания подпрограмм.

Program <имя>; {объявление данных}

Procedure и Function {процедуры и функции}

Begin

{тело программы}

End.

Процедуры описываются таим образом:

Procedure <имя> (<параметры>);

{описание локальных переменных, использующихся только в

данной процедуре} begin

{тело процедуры} end;

Среди параметров процедуры указываются как аргументы, так и результаты. Параметры-результаты должны быть обязательно параметрами-переменными (описываются после служебного слова Var). А параметры, значение которых берется

из основной программы, описываются без служебного слова var. Они называются

параметры-значения. Обращение к процедуре – отдельный оператор. Обмен данными между основной программой и подпрограммой может происходить как через параметры, так и через глобальные переменные.

Функции описываются следующим образом:

Function <имя> (<параметры-аргументы>): <тип функции>; {описание локальных переменных, использующихся только в

данной функции} begin

{тело функции} end;

В процедурах и функциях могут использоваться так называемые локальные переменные. Эти переменные используются только в подпрограмме и не применяются в основной программе.

© ИМПИ ОГПУ

Отличия функций от процедур:

1)единственный результат;

2)результат функции можно использовать в выражениях;

3)обязательное указание типа результатов в описании.

Пример.

Написать программу, находящую сумму максимальных элементов из двух пар чисел b, n и k, p.

Вариант 1. Решение с помощью процедуры.

Program Primer;

Procedure Maximum(x1,x2 : integer; var m : integer); begin

if x1>x2 then m := x1 else m := x2; end;

var b, n, k, p, m1, m2, sum : integer; begin

write('введите b, n, k, p='); read(b, n, k, p); Maximum(b,n,m1);

Maximum(k,p,m2); sum := m1+m2;

writeln('сумма наибольших=', sum) end.

Вариант 2. Решение с помощью функции.

Program Primer;

Function Maximum(x1,x2 : integer): integer; begin

if x1>x2 then maximum := x1 else maximum := x2;

end;

var b, n, k, p, sum : integer; begin

write('введите b, n, k, p='); read(b, n, k, p);

sum := Maximum(b,n)+Maximum(k,p);

writeln('сумма наибольших=', sum) end.

© ИМПИ ОГПУ

Пример рекурсивной функции, вычисляющей факториал числа N

function fact(n:longint):longint; begin

if n=1 then fact:=1 else fact:=n*fact(n-1); end;

Задания для самостоятельной работы

Задание 1. Описать и использовать следующие процедуры:

сложения двух векторов

Procedure SumVectors(x1,x2,y1,y2:byte; var z1,z2: byte);

умножения вектора на число;

Procedure Mult(x1,x2,k:byte; var z1,z2: byte);

функцию скалярного произведения двух векторов;

Procedure MultVectors(x1,x2,y1,y2:byte; var z: byte);

ввода вектора;

Procedure In_Vectors(var x1,x2: byte);

вывода вектора на печать.

Procedure Out_Vectors(var x1,x2: byte);

Для заданных векторов плоскости a, b, c, d вычислить значения выражения:

Вариант 1.

5a-3b+(c*d)*a;

Вариант 2.

–4c-2(a+d)-(d*a)*b;

Вариант 3.

(c*b)*a-3d-7c;

© ИМПИ ОГПУ

Вариант 4.

a*((a+c)*(b-d));

Задание 2.

Вариант 1.

Найти разность между наибольшим и наименьшим числом из введенных 4 чисел (использовать процедуры нахождения наибольших и наименьших из двух элементов).

Вариант 2.

Решить задачу, используя функцию. Найти количество отрицательных из 3 чисел.

Вариант 3.

Найти значение у относительно х. Для вычисления использовать функции.

y=x2, при 0<x<1 и y=x3, при x>1

Вариант 4.

Даны произвольные числа a, b, c. Определить, можно ли построить треугольник с длинами сторон, равными этим числам.

Задание 3.

Вариант 1.

Решить квадратное уравнение: ax2+bx+c=0 (найти действительные корни).

Вариант 2.

Дана точка А(х,у). Определить какой из координатных четвертей она принадлежит.

Вариант 3.

Определить, какая из трех точек A(x1,y1), B(x2,y2), C(x3,y3) ближе к началу координат.

Вариант 4.

Если треугольник со сторонами a, b, c является равнобедренным, найти его площадь, в противном случае найти его периметр.

© ИМПИ ОГПУ