TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

ПРИЛОЖЕНИЕ  3

пример выполнения контрольной работы № 2

ЛИСТИНГ ПРОГРАММЫ 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  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.

Алгоритм выполнения функции F

1.     Сначала функции 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.

Алгоритм выполнения процедуры  Input

1.     На экран сообщаем о вводе переменной А - 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’).

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz