Практическое занятие № 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 – гипотенуза, находится по теореме Пифагора).