ЛІСТИНГ ПРОГРАМИ Work2.pas
Program Work2;
{Варіант 30: a*b/4, якщо b > a
X = -55, якщо b = a
(b - 5)/a, якщо b < a
}
Uses CRT;
Const
inv1='Повторите введення';
inv2=' Ділення на нуль!!!!!!! ';
inv3='Результат ';
inv4='виходить за діапазон [-32768..32767]!!!!';
inv5=' значення, що вводиться, ';
invA='A';
invB='B';
Label L1;
Var
a,b,x: Integer;
ch: Char;
{Обчислення значення X з перевіркою на допустимий діапазон
для змінної типу INTEGER }
function F (a,b:Integer; Var x:Integer): Boolean;
Var x1: Real;
s1: String;
Begin
F:=True;
if b>a then x1:= b/4.0*a {Тільки так, інакше буде помилка обчислення!!!!}
else if b=a then x1:=-55
else if a=0 then
Begin
s1:=inv2+inv1;
Writeln(s1);
F:=False;
Exit;
End
else x1:=(b-5.0)/a;
{-і-і-і Перевірка результату на допустимий діапазон -і-і-і}
if (x1>=-32768)and(x1<=32767) then x:=trunc(x1)
else
Begin
s1:=inv3+inv4;
Writeln(s1);
Writeln(x1);
Writeln(inv1);
F:=False;
Exit;
End
End;
{Процедура введення вихідного значення змінної А з перевіркою на область
допустимих значень}
Procedure Input(Var A:integer; inv:String);
Label L;
Var aL:Real;
s1: String;
Begin
L:
Write('Введіть значення '+inv,'===>');
Readln(aL);
if (aL>=-32768)and(aL<=32767) then A:=trunc(aL)
else
Begin
s1:=inv5+inv4;
Writeln(s1);
Writeln(inv1);
goto L;
End
End;
{Головна програма}
Begin
Repeat
ClrScr;
Writeln(' Варіант 30');
Writeln(' a*b/4, якщо b > a');
Writeln(' X = -55, якщо b = a');
Writeln(' (b - 5)/a, якщо b < a');
Writeln;
L1:
Input(b,invB);
Input(a,invA);
if F(a,b,x) then Writeln ('x=',x)
else goto L1;
Writeln('Знову? (y/n)');
ch:=ReadKey;
Until (ch='n') or (ch='N');
End.
У контрольній роботі №2 необхідно обчислити значення цілої змінної Х в залежності від значень теж цілих змінних a і b з обліком області допустимих значень.
Програмі присвоєне ім'я Work2:
· У фігурних дужках (коментар) записана умова задачі варіанта 30.
· У поле виклику бібліотечних модулів USES записаний модуль CRT.
· У поле завдання констант визначені значення строкових констант: inv1, inv2, inv3, inv4, inv5, inv, inv.
· У поле міток описана мітка L1.
· У поле опису змінних описані змінні - a, b, x: integer; ch: char.
· Далі випливають описання функції F і процедури Input.
· Записано головну програму, що викликає потрібні процедури і функції, відповідно до алгоритму рішення задачі.
Функція F визначена як BOOLEAN. У заголовку функції описані вхідні параметри a,b:integer (передаються з головної програми) і вихідний параметр x:integer (передається в головну програму). У тілі функції використовуються локальні змінні x1: real і s1: string.