Практическое занятие № 10
Тема: Создание программ с использованием подпрограмм-функций
Цель работы: получить практические навыки по созданию программ с использованием подпрограмм
Ход работы
1. Составить программу, находящую сумму периметров N равнобедренных треугольников. Каждый треугольник описывается основанием и высотой. Составить функцию для нахождения периметра равнобедренного треугольника по основанию и высоте;
Указания:
{Подключаем модуль для работы с экраном}
uses
crt;
{Описываем переменные}
var
per,osn,vs,a,b,c:real;
i,n:integer;
{Описываем функцию для нахождения периметра треугольника}
function
p (x,h:real):real;
var a:real;
begin
//по теореме Пифагора находим боковую сторону
a:=sqrt(sqr(x/2)+sqr(h));
//считаем периметр треугольника и присваиваем ответ самой функции
p:=x+2*a;
end;
{Основная программа}
begin
{Очищаем экран}
clrscr;
{Вводим количество треугольников}
write ('Введите кол-во треугольников: ');
readln (n);
{В начале сумма периметров равна 0}
per:=0;
for i:=1 to n do
begin
{Вводим основание и высоту треугольника}
write ('Введите основание и высоту ',i,'-го треугольника: ');
readln (osn,vs);
{Суммируем его периметр}
per:=per+p(osn,vs);
{Выводим его периметр на экран}
writeln('Периметр ',i,'-го треугольника=',p(osn,vs):5:2);
end;
{Выдаем сумму периметров на экран}
writeln ('Суммарный периметр треугольников= ',per:5:2);
{Делаем паузу для просмотра}
readln;
end.
2. Найти разницу между максимальным и минимальным из трех чисел. Составить функции для нахождения минимального и максимального значений из двух чисел;
Указания:
{Подключаем модуль для работы с экраном}
uses
crt;
{Описываем переменные}
var
per,osn,vs,a,b,c:real;
i,n:integer;
{Описываем функцию для нахождения максимального из двух чисел}
function
max (m,n:real):real;
begin
if m>n then
max:=m
else
max:=n;
end;
{Описываем функцию для нахождения минимального из двух чисел}
function
min (m,n:real):real;
begin
if m<n then
min:=m
else
min:=n
end;
{Основная программа}
begin
{Очищаем экран}
clrscr;
{Вводим три числа для расчета}
write('Введите три числа: ');
readln(a,b,c);
{Выводим разницу между максимумом и минимумом}
writeln('Разница равна
',max(max(a,b),c)-min(min(a,b),c):5:2);
{Делаем паузу для просмотра}
readln;
end.
3. Найти значение выражения:

Расчет факториала оформить в виде функции.
Указания:
{Подключаем модуль для работы с экраном}
uses crt;
{Описываем переменные}
var a,b,c,y:longint;
{Описываем функцию для нахождения факториала числа}
function
fct (n:integer):longint;
{переменная для расчета факториала}
var p:longint;
begin
p:=1;
for i:=1 to n do
p:=p*i;
{функции присваиваем найденный факториал}
fct:=p;
end;
{Основная программа}
begin
{Очищаем экран}
clrscr;
{Вводим три числа для расчета}
write('Введите три числа: ');
readln(a,b,c);
{Рассчитываем выражение}
y:=(3*fct(a)-0.5*fct(b))/sqrt(fct(c));
{Выводим результат}
writeln('Ответ: y=',y:5:2);
{Делаем паузу для просмотра}
readln;
end.
Решить самостоятельно:
1. Даны три целых числа a, b, с. Найти их среднее арифметическое (оформить в виде функции).
2.
Даны коэффициенты
квадратного уравнения a, b, с. С помощью функции определить, сколько
корней имеет уравнение (т.е. функция возвращает целое значение 0, 1 или 2).
3.
Даны радиус круга и
сторона квадрата. У какой фигуры площадь больше? Вычисления площадей круга и
квадрата выполнить в виде функций. (S=π*R², S=a²).
4. Написать подпрограмму, которая возвращает словесное название оценок (2 – неудовлетворительно, 3 – удовлетворительно, 4 – хорошо, 5 – отлично).
5.
Найти периметр
и площадь прямоугольного треугольника, если даны длины его катетов a
и b. Вычисление площади и периметра оформить в виде отдельных функций. (S=a*b/2, P=a+b+c,
c – гипотенуза, находится по теореме Пифагора).