Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум на ЭВМ.doc
Скачиваний:
112
Добавлен:
15.02.2016
Размер:
2.73 Mб
Скачать

Лабораторная работа № 9 Использование подпрограмм при программировании на языке Паскаль

Подпрограммы процедуры и функции представляют собой важный инструмент ТР, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций):они представляют собой во многом самостоятельные фрагменты программы, связанные с основной программой лишь с помощью нескольких параметров. Самостоятельность процедур (функций) позволяет локализовать в них все детали программной реализации того или иного алгоритмического действия и поэтому изменения этих деталей, например, в процессе отладки обычно не приводит к изменениям основной программы.

При создании крупных программ в тысячи и десятки тысяч строк писать такие программы как нечто единое целое, без расчленения на относительно самостоятельные фрагменты, т.е. без структурирования, просто невозможно.

Процедурой в ТР называется особым образом оформленный фрагмент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется его вызовом. Сразу после активизации процедуры начинают выполнятся входящие в него операторы, после выполнения последнего из них управление возвращается обратно в основную программу и выполняются операторы, стоящие непосредственно за оператором вызова процедуры.

Для обмена информацией между основной программой и процедурой используется один или несколько параметров вызова. Если они есть, то перечисляются в круглых скобках за именем процедуры и вместе с ним образуют оператор вызова процедуры.

В ТР имеется много стандартных процедур и функций, они созданы одновременно с системой ТР и являются ее неотъемлемой частью. Наличие богатой библиотеки таких подпрограмм существенно облегчает разработку прикладных программ. Нестандартные процедуры и функции необходимо писать самому. Описание процедуры (функции) помещается в разделе описаний и внешне выглядит как программа, но вместо заголовка программы фигурирует заголовок процедуры (функции).

Требования к работе

1. Составить алгоритм решения задачи, указанной в варианте.

2. Составить блок-схемы алгоритмов основной программы и

подпрограммы

3. Составить подпрограмму и основную программу, исполь­зую­

щую подпрограмму.

4. Отладить обе программные единицы.

Лабораторные задания

1. Заданы четыре вектора x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3, z4} и p={p1, p2, p3, p4}. Логической переменной a присвоить значение TRUE, если скалярное произведение вектора x и y больше скалярного произведения вектора z и p, и значение FALSE в противном случае.

Вычисление скалярного произведения оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: x={1; 2; 3}; y={2,5; 6; 3,2}; z={3,7; 1,2; 6,4; -5,3}; p= {-1; 4; 1; -2}

2. Решить уравнение dx=c, где d-длина вектора a= {a1, a2, a3, a4} и c -длина вектора b= {b1, b2, b3}.

Вычисление длины вектора оформить в виде подпрограммы типа FUNCTION.

Исходные данные: a={-2,4; 3; 5; 2}; b={6,1; 2; -3}

3. Заданы две матрицы:

Проверить, является ли призведение этих матриц перестановочным, т.е. проверить равенство АВ=ВА. В случае положительного ответа напечатать “АВ=ВА”, иначе напечатать литерал “ПРОИЗВЕДЕНИЕ НЕПЕРЕСТАНОВОЧНО”.

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

Исходные данные:

4. Заданы два вектора x={x1, x2, x3} и y={y1, y2, y3, y4, y5}. Логической переменной а присвоить значение TRUE, если длина вектора х больше длины вектора y, и присвоить значение FALSE в противном случае.

Вычисление длины вектора оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: x={-1,2; 3; 5}, y={1; 2,1; 6; -2; 3}

5. Заданы два вектора x={x1, x2, x3, x4} и y={y1, y2, y3, y4}.

Определить угол  между векторами x и y по формуле

Вычисление скалярного произведения оформить в виде подпрограммы типа FUNCTION.

Исходные данные: x={-2,3;4; 5; 1,6}; y={1; 2; 3; 4}

6. Заданы две матрицы:

Выяснить и напечатать, сколько из них является симметричными (нуль, одна или две). (Матрица называется симметричной, если транспорированная матрица равна исходной.)

Транспонирование матрицы оформить в виде подпрограммы.

Исходные данные:

7. Заданы два массива: a={a1, a2, a3, a4} и b={b1, b2, ... , b6}. Переменной S присвоить значение -1, если максимальный элемент массива а больше максимального элемента массива b; 0, если максимальные элементы массивов a и b равны; 1, если максимальный элемент массива a меньше максимального элемента массива b.

Поиск максимального элемента массива оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: a={-5,2; 8; 1,3; -6}; b={-4,7; -3; 2,6; 7; 13; -1}

8. Четыре точки заданы своими координатами x={x1, x2}, y={y1, y2}, z={z1, z2}, p={p1,p2}. Выяснить, какие из них находятся на максимальном расстоянии друг от друга, и вывести на печать значение этого расстояния.

Вычисление расстояния между двумя точками оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: x={4,8;-3}; y={-6,5;1,2}; z={-3,7;-4,5}; p={7,8; 2}

9. Четыре точки заданы своими координатами x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3}, p={p1, p2, p3}. Выяснить, какие из них находятся на минимальном расстоянии друг от друга, и вывести на печать значение этого расстояния.

Вычисление расстояния между двумя точками оформить в виде подпрограммы типа FUNCTION.

Исходные данные: x={-3,2; 5; 1,4}; y={2,2; -4; 3} z={-6,1; -3; 1}; p={2,7; 1; -1} 10. Заданы экспериментальные значения четырех случайных величин a={a1, a2, a3}, b={b1, b2, b3, b4}, c={c1, c2, c3, c4, c5}, d={d1, d2, d3, d4}. Вычислить дисперсию случайной величины r={r1, r2, r3, r4}, считая ее экспериментальными значениями, математические ожидания a, b, c и d (т.е. r1 = M(a), r2 = M(b), r3 = M(c), r4 = M(d)).

Математическое ожидание M() и дисперсия D() случайной величины ={1, 2, ... , n} вычисляются по формулам:

Вычисление математического ожидания оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: a={1; 2; 3}; b={-5; 6; 1,2; 2,4}; c={-3,2; 0; 1; -1; 2}; d={2; 3; 1; 4}

11. Заданы две матрицы:

Построить таблицу функции y=cx2+d при x, меняющемся от 0 до 1 с шагом 0,1, где с есть след матрицы А, d есть след матрицы В.

(Следом матрицы называется сумма элементов главной диагонали).

Вычисление следа матрицы оформить в виде подпрограммы типа PROCEDURE.

Исходные данные:

12. Заданы три массива: x={x1, x2, x3, x4}, y={y1, y2, y3} и z={z1, z2, z3, z4, z5}. Упорядочить по возрастанию три числа a, b и c, где а - минимальный элемент массива x, b - минимальный элемент массива y, а с- минимальный элемент массива z.

Поиск минимального элемента массива оформить в виде подпрограммы типа FUNCTION.

Исходные данные: x={4,2; 3; 7; 3,6}; y={5,6; 3; 2}; z={1; 2; 3; 4; 5}

13. Заданы экспериментальные значения трех случайных величин а={a1, a2, a3}, b={b1, b2, b3, b4} и c={c1, c2, c3, c4, c5}. Найти максимальное из трех чисел x, y и z, где x - математическое ожидание случайной величины a, y - математическое ожидание случайной величины b, а z-математическое ожидание случайной величины с. Математическое ожидание М() случайной величины ={1, 2, ... , n} вычисляется по формуле:

Вычисление математического ожидания оформить в виде подпрограммы типа FUNCTION.

Исходные данные: a={-7,3; 2; 1}; b={1; 0; 2; 2,5}; c={-1,7; 3; 1,2; 1; -0,1}

14. Заданы два вектора x={x1, x2, x3}, y={y1, y2, y3} и матрица

Найти сумму двух векторов c и d, где вектор с есть произведение вектора x на матрицу А, а вектор d- произведение вектора y на матрицу А.

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

Исходные данные: x={-2,2; 5; 1}; y={-1; 0; 2};

15. Заданы три матрицы:

Найти минимальное из трех чисел x, y, и z, где x есть след матрицы A, y - след матрицы В, z - след матрицы С. (Следом матрицы называется сумма элементов главной диагонали.)

Вычисление следа матрицы оформить в виде подпрограммы типа FUNCTION.

Исходные данные:

16. Заданы стороны двух треугольников: АВС (стороны a, b, c) и PLF (cтороны p, l, f). Переменной S присвоить значение -1, если площадь треугольника АВС меньше или равна площади треугольника PLF, и значение 1, если площадь треугольника АВС больше площади треугольника PLF. Площадь треугольника MNK со сторонами m, n, k вычисляется по формуле Герона следующим образом:

где r - полупериметр треугольника MNK.

Вычисление площади треугольника оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: a=1; b=2,7; c=3,2; p=1,3; l=2,5; f=2,7

17. Построить таблицу функции z=sh(x+y), где x меняется от 1 до 2 с шагом 0,2; у меняется от 2 до 3 с шагом 0,1. Гиперболический синус вычисляется по формуле:

Вычисление гиперболического синуса оформить в виде подпрограммы типа PROCEDURE

18. Заданы стороны двух треугольников: АВС (стороны а, b, c) и PLF (стороны p, l, f). Найти сумму и разность площадей треугольников АВС и PLF. Площадь треугольника MNK со сторонами m, n, k вычисляется по формуле Герона следующим образом:

где r- полупериметр треугольника МНК.

Вычисление площади треугольника оформить в виде подпрограммы типа FUNCTION.

Исходные данные: a=3; b=2,5; c=1,7; p=2; l=7.8; f=7

19. Построить таблицу функции z=ch(x2+y2), где х меняется от 3 до 4 с шагом 0,1 у меняется от 2 до 3 с шагом 0,2. Гиперполический косинус вычисляется по формуле

Вычисление гиперболического косинуса оформить в виде подпрограммы типа FUNCTION

20. Заданы три квадратных уравнения: ax2+bx+c=0, dx2+fx+r=0, px2+gx+k=0. Найти минимальное значение среди корней этих уравнений. В случае комплексных корней принять за корни действительную часть.

Решение квадратного уравнения оформить в виде подпрограммы.

Исходные данные: a=2; b=-5,2; c=1,3; d=3,7; f=1,8; r=6; p=1,2; q=-3; k=5

21. Задана последовательность чисел a={a1, a2, ... ,a6}. Выбрать из них принадлежащие отрезку {x, y}. Из выбранных чисел образовать вектор.

Проверку на принадлежность числа отрезку оформить в виде подпрограммы типа FUNCTION.

Исходные данные: a={-4,1; -1; 1,2; 3; 5; 0,75}; x=-2,5; y=1,2

22. Четыре точки заданы своими координатами x={x1, x2}, y={y1, y2}, z={z1, z2}, p={p1, p2}. Выяснить и напечатать, сколько из них принадлежит полосе, аналитичеки заданной неравенствами;

f < Ma1 + Na2 < r.

Проверку на принадлежность точки полосе оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: x={-4,2; 2}; y={1,8; 0,8}; z={-8,6; -4,1}; p={-1; -0,1}; M=5; N=3; f=2,5; r=7,1.

23.Три точки заданы своими декартовыми координатами x={x1, x2}, y={y1, y2}, z={z1, z2}. Вычислить и выдать на печать полярные координаты этих точек. При выдаче на печать координаты точек упорядочить по возрастанию полярного радиуса  . Полярный радиус  и полярный угол  вычисляются по следующим формулам:

Перевод в полярные координаты оформить в виде подпрограммы.

Исходные данные: x={1; 2}; y={-3; 1}; z={1,2; -1}

24.Три точки заданы своими координатами x={x1,x2}, y={y1,y2}, z={z1,z2}. Выдать на печать координаты этих точек по возрастанию угла меж­ду­ осью абсцисс и лучом, соединяющим начало координат с соответствующей точкой.

Вычисление угла между осью абсцисс и лучом, соединяющим начало координат с точкой, оформить в виде подпрограммы типа

FUNCTION.

Исходные данные: x={-1,65;2}; y={1,2;-1}; z={1;2}.

25. Заданы три матрицы:

Упорядочить по убыванию три числа x, y и z, где x есть максимальный элемент матрицы А, y- максимальный элемент матрицы В, а z-максимальный элемент матрицы С.

Поиск максимального элемента матрицы оформить в виде подпрограммы типа PROCEDURE.

Исходные данные:

26. Заданы две матрицы:

Найти след матрицы, равной произведению АВ, и след матрицы,равной произведению ВА. (Следом матрицы называется сумма элементов главной диагонали.)

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

Исходные данные:

27. Три точки заданы своими координатами: x={x1,x2}, y={y1,y2}, z={z1, z2}. Определить и выдать на печать координаты точки,для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой , минимальный.

Вычисление величины угла между осью абсцисс и лучом, соединяющим начало координат с точкой, оформить в виде подпрограммы типа PROCEDURE.

Исходные данные: x={-1,8; 3}; y={1,2; 1}; z={-1; 2}

28. Заданы три матрицы:

Решить уравнение px2+dx+r=0, где p есть минимальный элемент матрицы А, d - минимальный элемент матрицы В, а r - минимальный элемент матрицы С.

Поиск минимального элемента матрицы оформить в виде подпрограммы типа FUNCTION.

Исходные данные:

29. Заданы три вектора: x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3}. Логической переменной a присвоить значение TRUE, если длина вектора d, равного сумме вектора х и у, больше длины вектора с, равного сумме вектора у и z, и значение FALSE в противном случае.

Вычисление суммы двух векторов оформить в виде подпрограммы.

Исходные данные: x={-6,5; 2; 1}; y={-3,1; 7; -2}; z={-1,3; 6; -4}

30. Задана окружность (x-a)2+(y-b)2=r2 и две точки p={p1, p2} и f={f1, f2}. Выяснить и напечатать сколько точек (нуль, одна или две) лежит внутри окружности.

Проверку, лежит ли точка внутри окружности, оформить в виде подпрограммы типа FUNCTION.

Исходные данные: a=3,2; b=4,1; r=2; p={6,1; 4,3}; f={27,48; -6}.