Пример 1.2 выполнения задания


Найти значение функции

(1.2),

упростив вычисления за счет использования скобочных форм и/или дополнительных переменных (в этом предложении и в дальнейшем конструкция «А и/или Б» обозначает «или А, или Б, или А и Б одновременно»). Для контроля правильности результата выполнить вычисление по формуле (1.2) без использования скобочных форм и дополнительных переменных.

Проверить работу программы на значениях A=(1; -1; 2; -2; 4; -4), X=(0,5; 2).

 

program Project1_2;

{$APPTYPE CONSOLE}

uses

SysUtils, Math;

var

A, B, C, X, Y1, Y2: Real;

begin

{Ввод исходных данных}

Write('Введите X и A : ');

ReadLn(X,A);

B:=A/2;

C:=Sqr(B);

{Вычисление выражения}

{ - с использованием дополнительных переменных}

Y1:=(Power(B,X)-Log10(B+1))/C/(B-1);

{ - непосредственно по формуле (1.2)}

Y2:=(Power(A/2,X)-Log10(A/2+1))/(IntPower(A/2,3)-Sqr(A/2));

{Вывод вычисленных значений с надписями}

WriteLn(' Y1 Y2 ');

WriteLn(Y1:12:7,' ',Y2:12:7);

ReadLn;

end.

 

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

 

program Project1_2;

{$APPTYPE CONSOLE}

uses

SysUtils, Math;

var

A, B, C, X, Y1, Y2: Real;

begin

{Ввод исходных данных}

Write('Введите X и A : ');

ReadLn(X,A);

B:=A/2;

C:=Sqr(B);

try

{Попытка вычислить выражения}

{ - с использованием дополнительных переменных}

Y1:=(Power(B,X)-Log10(B+1))/C/(B-1);

{ - непосредственно по формуле (1.2)}

Y2:=(Power(A/2,X)-Log10(A/2+1))/(IntPower(A/2,3)-Sqr(A/2));

except

{Вычислить выражение не удалось}

on EZeroDivide do

begin

WriteLn('Исключение типа "деление на 0" ');

WriteLn('Невозможно вычислить Y при A =',A,' и X =',X);

WriteLn('Нажмите Enter для завершения работы программы.');

ReadLn;

Halt; //Завершить выполнение программы

end;

on EInvalidOp do

begin

WriteLn('Исключение типа "невыполнимая операция" ');

WriteLn('Невозможно вычислить Y при A =',A,' и X =',X);

WriteLn('Нажмите Enter для завершения работы программы.');

ReadLn;

Halt; //Завершить выполнение программы

end;

on EOverflow do

begin

WriteLn('Исключение типа'

,’ "переполнение вещественной переменной" ');

WriteLn('Переменная не может хранить вычисленное значение');

WriteLn('Нажмите Enter для завершения работы программы.');

ReadLn;

Halt; //Завершить выполнение программы

end;

end;//try except

{Вывод вычисленных значений с надписями}

WriteLn(' Y1 Y2 ');

WriteLn(Y1:12:7,' ',Y2:12:7);

ReadLn;

end.

 

Это позволит по каждому из исключений вывести краткое пояснение на русском языке о причине его возникновения, однако потребует дублирования операторов

WriteLn('Нажмите Enter для завершения работы программы.');

ReadLn;

Halt;

так как запрещено совмещение с операторами on других операторов (в блоке except допускается использовать либо только операторы on, либо только другие операторы).



Дата добавления: 2020-07-18; просмотров: 209;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.