Процедурная декомпозиция программ и применение подпрограмм на языке высокого уровня “Паскаль”, страница 2

3.    Результатом работы будет напечатанный текст по центру строки.

Задания 2

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

            Эта функция относится к расходящемуся типу алгоритма процедур.

Программа

Program Logarithm;

Var arg,osn:real;

Function Log(arg,osn:real):real;

Begin log:=0;

If (osn>0)and(osn<>1)and(arg>0) then Begin Log:=ln(arg)/ln(osn);end

  else Begin Writeln('   Errpr calculate Logarithm!   Don`t correctly introduce facts!');

end;End;

Begin

Write('logarithmic foundation: ');readln(osn);

Write('argument: ');readln(arg);

Writeln('log= ',Log(arg,osn));

Write('   EXIT prees on Enter: ');Readln;;

End.

Работа с программой

1.    Запишите функцию Log в глобальный раздел описания своей программы.

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

3.    Результатом работы будет Log(arg по osn) – вещ. число.

Задания 3

Написать функцию, которая вычисляет S треугольника по формуле Герона (по 4 длинам сторон).

Потому, что я не нашёл формулу Герона, которая вычисляет S треугольника по 4 длинам сторон, то написал функцию, которая находит по формуле Герона S треугольника по 3 длинам сторон и она относится к последовательному и расходящемуся типам алгоритмов процедур.

Программа

Program Theorem_Gerona_3;

Var a,b,c:real;

Function Geron3(a,b,c:real):real;

Var p:real;

Begin

If (a<0)or(b<0)or(c<0) then Writeln('   Errpr calculate S triangle!   Don`t correctly introduce facts!')

  else Begin p:=(a+b+c)/2;Geron3:=sqrt(p*(p-a)*(p-b)*(p-c));end;End;

Begin

Write('Introduce a: ');readln(a);

Write('Introduce b: ');readln(b);

Write('Introduce c: ');readln(c);

Writeln('S triangle= ',Geron3(a,b,c):7:31);

Write('   EXIT prees on Enter: ');Readln;

End.

Работа с программой

1.    Запишите функцию Geron3 в глобальный раздел описания своей программы.

2.    Обращаясь к ней, вы должны указать 3и длины сторон треугольника.

3.    Результатом работы будет S – вещ. число.

Задания 4

            Написать процедуру, которая с координатами центров и радиусами 2х кругов определяет, пересекаются ли они хоть в одной точке.

            Эта процедура относится к расходящемуся типу алгоритма процедур.

Программа

Program Pint_of_intersection_radiuses;

Type Tmasiv=array[1..2,1..4] of real;

Var x:Tmasiv;i:byte; otvet:boolean;

Procedure IntersectionRadiuses(Var x:Tmasiv;otvet:boolean);

Begin

If (abs(x[1,4])+abs(x[2,4]))<sqrt(sqr(x[1,1]-x[2,1])+sqr(x[1,2]-x[2,2])+sqr(x[1,3]-x[2,3]))

  Then otvet:=false

  Else otvet:=true;

End;

Begin

For i:=1 to 2 do Begin

Write('   Introduce x',i,': ');readln(x[i,1]);

Write('   Introduce y',i,': ');readln(x[i,2]);

Write('   Introduce z',i,': ');readln(x[i,3]);

Write('   Introduce R',i,': ');readln(x[i,4]);

End;

IntersectionRadiuses(x);

If otvet Then Writeln('  No.')

  Else Writeln('  Yes.');

Write('   EXIT prees on Enter: ');Readln;

End.

Работа с программой

1.    Запишите процедуру IntersectionRadiuses в глобальный раздел описания своей программы.

2.    Обращаясь к ней, вы должны указать в масив “x” (типа: Tmasiv=array[1..2,1..4] of real)  координаты центров и радиусами 2х кругов, соответственно с типом “x”.

3.    Результатом работы будет логическая переменная “otvet ” – логического типа.

Задания 5

            Написать функцию для вычисления факториала числа.

Эта процедура относится к циклическому типу алгоритма процедур.

Программа

Program Fuctorial_number;

Var n:byte;

Function Fuctorial(n:byte):cont;

Var i:cont;

Begin

i:=1;For n:=n downto 1 do i:=i*n;Fuctorial:=i;

End;

Begin

Write('Introduce n: ');readln(n);

Write('Fuctorial= ',Fuctorial(n));

Write('   EXIT prees on Enter: ');Readln; End.

Работа с программой

1.    Запишите процедуру Fuctorial в глобальный раздел описания своей программы.

2.    Обращаясь к ней, вы должны указать число факториала.

3.    Результатом работы будет факториал – целого типа.

Вывод

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