TURBO PASCAL |
Новости |
ПРИЛОЖЕНИЕ 3пример выполнения контрольной работы № 2ЛИСТИНГ ПРОГРАММЫ Work2.pasProgram
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 c учетом области допустимых значений. Программе присвоено имя Work2: · В фигурных скобках (комментарий) записано условие задачи варианта 30. · В поле вызова библиотечных модулей USES записан модуль CRT. · В поле задания констант определены значения строковых констант: inv1, inv2, inv3, inv4, inv5, invA, invB. · В поле меток описана метка L1. · В поле описания переменных описаны переменные - a, b, x : integer; ch : char. · Далее следуют описания функции F и процедуры Input. · Записана главная программа, которая вызывает нужные процедуры и функции, согласно алгоритму решения задачи. Функция F определена как BOOLEAN. В заголовке функции описаны входные параметры a,b:integer (передаются из основной программы) и выходной параметр x:integer ( передается в основную программу). В теле функции используются локальные переменные x1: real и s1: string. Алгоритм выполнения функции F1. Сначала функции F присваивается значение TRUE и проверяется b>a. 2. Если условие выполняется, тогда вычисляется значение x1:=b/4.0*a. 3. Иначе проверяется b=a. 4. Если да, то х1:=-55. 5. Если же это условие не выполняется , то остается условие b<a, в котором надо проверить на ноль знаменатель a выражения (b-5)/a. 6. Если это условие (a=0) выполняется (знаменатель в выражении (b-5)/a равен нулю), вычисляется составной оператор после THEN, заключенный в скобки - begin ... end: ¨ В этом случае строковая переменная s1:=inv1+inv2 будет равна: ‘Деление на ноль!!!!!!! Повторите ввод’. ¨ Это сообщение выводится на экран. ¨ Функция F принимает значение FALSE и управление передается по EXIT в основную программу. 7.
В случае, если
знаменатель не равен нулю, вычисляется
значение x1:=(b-5.0)/a. 8. Далее проверяется, входит ли значение х1 в допустимый диапазон (для переменных типа INTEGER). 9. Если да, то целая переменная получает значение х:=trunc(x1). 10. Если значение х1 выходит за допустимый диапазон, то: ¨ s1:=inv3+inv4 (‘Результат выходит за диапазон [-3268...32767]!!!!’); ¨ значение S1 выводится на экран - Writeln(s1); ¨ выводится на экран полученное значение Х1 - Writeln(x1); ¨ и новое приглашение - Writeln(Inv1) (‘Повторите ввод’). ¨ Функция F принимает значение FALSE и управление по EXIT передается в главную программу. Далее описана процедура ввода исходного значения переменной А с проверкой на область допустимых значений. Имя процедуры - Input. В заголовке описаны формальные параметры A:integer и inv:string (имя переменной). В теле процедуры используются локальные переменные al:real и s1:string, в поле описания меток определена метка L. Алгоритм выполнения процедуры Input1.
На экран сообщаем о вводе переменной А - Write(‘Введите значение ’+ inv,'===>'). При выполнении этого
оператора на экране появляется сообщение:
Введите значение А===>. 2. Вводим с клавиатуры ее значение - READLN(aL). 3. Проверяем входит ли это значение в допустимый диапазон: ¨ если да, то A:=TRUNC(aL), ¨ если нет , то переменная s1получает значение s1:=inv5+inv4 (‘Вводимое
значение выходит за диапазон [-32768...32767]!!!’). ¨ На экран выводится значение inv1 (‘Повторите ввод’). ¨ Управление передается на метку L для повторного ввода значения А. Эта процедура может быть использована для ввода и контроля диапазона любой целочисленной переменной типа INTEGER. Описание главной программы1. В цикле REPEAT ... UNTIL очищается экран (ClrScr), выводится на экран вид исходного задания, через процедуру INPUT вводятся переменные a и b, через функцию F вычисляется искомое значение x. ¨ Если значение функции F равно False, управление передается на метку L1 для повторного ввода переменных а и b . ¨ Если значение функции F равно TRUE, - выводится результат (переменная х). 2.
На экране появляется ‘Опять? (Y/N)’. 3. Переменной ch:=ReadKey и в зависимости от ответа управление передается на начало цикла (ch:=’Y’) или программа заканчивает выполнение (ch:= ‘N’). |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |