TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

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

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

FAQ

Ссылки

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

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

Спонсор

От автора

 

ПРИЛОЖЕНИЕ  2

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

ЛИСТИНГ ПРОГРАММЫ Work1.pas                                                                                                                                                           

program Work1;

{ Вычислить вариант

 

         30)                  arctg(b) + c*b - a/4

                                      x= ------------------------

                                              12*c + a - b

}

Uses CRT;

Label L1;

var

  a,b,x,x1,x2 : Real;

  c                 : Integer;

  ch               : Char;

 

             {Вычисление знаменателя с проверкой его на ноль}

function Flag (a,b:real; c:Integer; Var x2:Real) : Boolean;

Begin

     Flag:=True;

     x2:= 12.0*c + a - b; {12*c приведет к ошибке при c>abs(32767.0/12)}

     if x2=0 then

       Begin

            Writeln('Деление на ноль!!!!!!!! Повторите ввод.');

            Flag:=False;

           Exit;

       End;

End;

             {Вычисление арифметического выражения}

function F (a,b,x2:real; c:Integer) : Real;

Var x1 : Real;

Begin

    x1:= ArcTan(b)+c*b-a/4;

    F:=x1/x2

End;

                 {Ввод значения переменной С c  проверкой его на допустимый диапазон}

Procedure InputC(Var c:integer);

Var cL:Real;

Begin

  Repeat

       Write('Введите значение c=====>');

       Readln(cL);

  Until (cL>=-32768)and(cL<=32767);

  c:=trunc(cL)

End;

 

                           {Главная программа}

begin

  Repeat

       ClrScr;

       Writeln('                  Вариант 30');

       Writeln('             arctg(b) + c*b - a/4');

       Writeln('         x= ------------------------');

       Writeln('                12*c + a - b');

       Writeln;

L1:

       Write('Введите значение a=====>');

       Readln(a);

       Write('Введите значение b=====>');

       Readln(b);

       InputC(c);

       if Flag(a,b,c,x2) then Writeln ('x=',F(a,b,x2,c))

        else goto L1;

      Writeln('Опять? (y/n)');

      ch:=ReadKey;

  Until (ch='n') or (ch='N');

end.

Рассмотрим поэтапное выполнение контрольной работы  №1.

В данном задании необходимо вычислить  значение арифметического выражения (вариант 30), которое является частным от деления выражения в числителе на выражение в знаменателе.

Для получения результата необходимо сделать следующее:

1.     Ввести значения переменных, входящих в это выражение (a, b, c).

2.     Проверить находятся ли целочисленные переменные  (в данном случае только c) в диапазоне допустимых значений.

3.     Вычислить знаменатель с проверкой его на ноль (т.к. деление на ноль НЕДОПУСТИМО).

4.     Вычислить выражение.

5.     Вывести результат вычисления.

Программе присвоено имя Work1,  имя файла - Work1.pas:

·       В фигурных скобках написаны комментарии - в данном случае номер варианта и вид выражения.

·       Далее после зарезервированного слова Uses написано имя стандартного модуля  среды Turbo Pascal  -  CRT (подробнее - см. Прил. 9).

·       Затем описана метка L1.

·       В поле описания Var переменные a,b,x,x1,x2 объявлены как Real, переменная с как Integer, переменная ch как Char ( типы данных  - см. [4]).

·       Далее идут описания функций Flag, F и процедуры InputC.

·       Записана главная программа, которая вызывает нужные процедуры и функции, согласно алгоритму решения задачи.

Вычислим знаменатель с проверкой его на ноль с помощью функции Flag (основные понятия функции и процедуры даны в  [4]). Функция Flag описана как Boolean и принимает два значения True (если знаменатель НЕ равен нулю) или False (если знаменатель равен нулю). В заголовке функции используем формальные параметры:

·       входные переменные a,b,c, значения которых передаются из основной программы в функцию Flag;

·       выходную переменную x2, значение которой вычисляется (это - знаменатель выражения) и передается в основную программу.

Алгоритм вычисления знаменателя следующий:                               

¨    Присваиваем функции значение Flag:=True;

¨    Вычисляем знаменатель и присваиваем переменной х2 выражение в знаменателе:                                  х2:=12.0*с+a-b;

¨    Если знаменатель равен нулю (х2=0), функция Flag принимает значение равное False и     управление передается в основную программу (Exit).

¨    Если знаменатель не равен нулю, значение функции Flag остается равным True  и значения функции и переменной х2 передаются в основную программу.

В этом фрагменте использован  условный оператор if-then - см. [4].

 

Непосредственно значение выражения определим с помощью функции F. Функция F описана как Real. Переменные a, b, c (входные) передаются из основной программы. Значение функции F вычисляется и передается в основную программу.

Алгоритм вычисления значения выражения:

¨    вычисляем значение выражения в числителе : х1:=ArcTan(b)+c*b-a/4;

¨    присваиваем функции F значение исходного выражения: F:=x1/x2 и  управление передается в основную программу.

 

Ввод переменной С осуществляем с помощью процедуры InputC. В заголовке процедуры описан формальный параметр-переменная: Var с : integer - получаемое значение вводимой переменной.

Алгоритм работы процедуры InputC:

¨    В цикле вводим с клавиатуры значение переменной сL, одновременно проверяется находится ли значение сL в диапазоне -32768  ...  +32767 (диапазон значений для целых чисел типа INTEGER). Тело цикла расположено между Repeat ...и ... Until. Подробнее о циклах см. [4].

¨    Переменной с присваиваем значение равное целой части (функция trunc) переменной cL                       c:=trunc(cL);

¨    Полученное значение переменной с передается в основную программу.

Алгоритм выполнения главной программы:

В цикле Repeat .... Until(ch=’n’) or (ch:=’N’) выполняем ввод переменных , проверку знаменателя на ноль и вычисление значения выражения для одного комплекта данных a,b,c:

·       Вводим значение переменной а:               Readln(а);

·       Вводим значение переменной b:               Readln(b);

·       Обращаемся к процедуре InputC(с)  для ввода значения целочисленной переменной c (значение с передается в основную программу из процедуры InputC).

·       Проверяем значение функции Flag. Если оно True , то выводим значение выражения на экран, иначе управление переходит на метку L1, повторяем ввод переменных a, b, c до тех пор, пока знаменатель примет значение, отличное от нуля.

·       После вывода результата на экране дисплея появляется сообщение - Опять? (y/n), переменной  ch присваивается значение нажатой клавиши (оператор ReadKey читает символ с клавиатуры - N или Y). Если вы нажали N, выполнение программы заканчивается, если нажали клавишу Y, - управление передается на начало цикла и вы можете повторить вычисление с новыми значениями переменных a,b,c.

304321

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

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

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

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

Hosted by uCoz