- •Лабораторная работа 1. Реализация линейных алгоритмов
- •Вариант 1
- •1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
- •Вариант 2
- •1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
- •Вариант 3
- •1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой.
- •Вариант 4
- •1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
- •Лабораторная работа 2. Условный оператор
- •Лабораторная работа 3. Оператор варианта.
- •Лабораторная работа 4. Строки. Операторы цикла.
- •Программирование численных циклических алгоритмов. Циклы «до» и «пока»
- •Лабораторная работа 5. Подпрограммы
- •Лабораторная работа 6. Массивы
- •Лабораторная работа 7. Множества
- •Лабораторная работа 8. Комбинированный тип данных (Запись)
- •Лабораторная работа 9. Работа с файлами
- •Лабораторная работа 10. Процедуры и функции модуля GraphABC
- •Графические примитивы
- •Подпрограммы для работы с пером
- •Лабораторная работа 11. Создание собственных модулей.
- •Лабораторная работа 12. Решение простейших задач в Console Application
- •Лабораторная работа 13. Динамические массивы
- •Лабораторная работа 14. Тип данных Variant
- •Лабораторная работа 15. Тип TDateTime
- •Лабораторная работа 16. Простейшие задачи на форме
- •Лабораторная работа 17. Флажки и переключатели
- •Лабораторная работа 18. Работа с меню
- •Главное меню
- •КОНТЕКСТНОЕ МЕНЮ
- •Лабораторная работа 19. Работа со списками
- •СПИСКИ ВЫБОРА
- •ВЫПАДАЮЩИЕ СПИСКИ
- •Лабораторная работа 20. Таймер. Работа с календарем
- •Лабораторная работа 21. Таблица строк
- •Лабораторная работа 22. Графика в Delphi
- •Лабораторная работа 23. Калькулятор
- •Лабораторная работа 24. Моделирование движения. Пуля
- •Лабораторная работа 25. Моделирование движения по кругу
- •Лабораторная работа 26. Цветомузыка
- •Лабораторная работа 27. Проигрыватель
- •Лабораторная работа 28. Цветочная поляна
- •Лабораторная работа 29. QUEST
- •Лабораторная работа 30. Тир
- •Лабораторная работа 31. Компоненты Delphi для взаимодействия с серверами автоматизации MS Office
- •Лабораторная работа 32. Обмен данными между программами с помощью DDE
- •Лабораторная работа 33. Технология Drag & Drop
- •Лабораторная работа 34. Использование динамически подключаемых библиотек (DLL).
- •Лабораторная работа 35. Создание собственного класса
- •Лабораторная работа 36. Конструкторы и деструкторы
- •Лабораторная работа 37. Создание собственных компонентов
Лабораторная работа 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 является равнобедренным, найти его площадь, в противном случае найти его периметр.
© ИМПИ ОГПУ