TURBO PASCAL |
Новости |
ПРИЛОЖЕНИЕ 2пример выполнения контрольной работы № 1ЛИСТИНГ ПРОГРАММЫ Work1.pasprogram 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 |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |