Программная документация




Содержание

Постановка задачи

Работа с программой

Клавиши

Набор тестов и варианты исполнения программы

Программная документация


Постановка задачи

 

Разработать программу "Калькулятор" для работы с вещественными числами. Экран калькулятора должен содержать десятизначное число. Действия калькулятора: сложение, вычитание, умножение, деление, изменение знака числа, редактирование последней введенной цифры.

Исходные данные: два вещественных числа (от - 999999999.9 до 999999999.9) и знак операции (+,-,*,/), введенные с клавиатуры или с помощью мыши.

Результат - результат арифметической операции-одиннадцатизначное число (Максимум 10 знаков до запятой, при этом 1 знак после запятой).

Краткий алгоритм работы программы:

Ввод чисел и знака ®обработка ввода®требуемая операция над числами®вывод результата.

Блок-схема.

Ввод каждого числа производится в цикле. Цифры первого числа (x [1]) считываются до тех пор, пока не будет нажата знаковая клавиша (+, -, *, /).

Для этого используется цикл While f do. Цикл прогоняется каждый раз при нажатии кнопки. Переменная f принимает ложное значение, когда будет нажата кнопка знака и этот цикл прекратится.

После этого аналогично считываются цифры второго числа (x [2]) до тех пор, пока не будет нажата кнопка равно: f=false, когда будет нажата кнопка равно.

После этого программа с помощью оператора CASE выбирает нужный знак и производит необходимую операцию над числами. Полученное число выводится на экран. Потом переменной x [1] присваивается значение этого результата, и, таким образом, можно редактировать результат и производить над ним действия.

В программе используются три метки (label 1, 2,3). Первая метка используется для перехода к вводу первого числа после вывода результата операции.

Вторая метка предназначена для того, чтобы быстро выйти из программы.

Третья метка используется для обнуления данных, когда пользователь нажимает кнопку сброса результата (С)

В программе используется несколько процедур, основные из них:

Процедура CLICK. Эта процедура изменяет цвет линии вокруг кнопки, и таким образом, пользователю кажется, что кнопка "нажимается". Нажатие кнопки сопровождается звуковым сигналом. Каждой цифре соответствует свой тон сигнала.

Процедура ZAST. Это заставка. Она рисует текст "бегущей" строкой. Для этого сначала текст выводится на экран, затем этот же текст выводится в то же место цветом фона. Затем этот текст выводится на экран, но со смещением влево. И так далее. Дойдя краев экрана, текст останавливается и переливается различными цветами. Происходит переливание текста, пока не будет нажата любая кнопка клавиатуры, для чего используется keypressed.

Процедура HELP. Эта процедура выводит на экран правила пользования калькулятором, а также фамилии разработчиков. Причем при каждом нажатии на кнопке вызова этой процедуры на экран выводится новая страница. Затем выводится первая и т.д. Это осуществляется при помощи счетчика L (см. текст программы) - глобальной переменной, которая меняет значение при каждом вызове данной процедуры. Текст предыдущей страницы выводится цветом фона, т.е. закрашивается, затем выводится текст новой страницы.

Процедура PICTURE. Рисует изображение самого калькулятора - корпус, экран, кнопки. По контуру корпуса калькулятора прорисовываются линии - белого и темно-серого цвета, что придает ему объемную форму. Вокруг каждой кнопки также прорисовываются такие линии, а при их нажатии линии меняют цвет (Процедура CLICK)

Работа с программой

 

Ввод чисел осуществляется при помощи клавиатуры и\или мыши. Сначала вводится первое число, затем вводится знак нужной операции и нажимается знак равно. После чего на экран в сопровождении звука выводится результат, который в свою очередь можно редактировать и использовать как входное число.

Если вам необходимо ввести отрицательное число, то сначала введите нужное положительное, а затем измените его знак.

Клавиши

 

Для ввода чисел используются цифровые клавиши 0.9. Для ввода знака "+", "-", "*", "/" - - - плюс, минус, умножить и поделить соответственно.". "-для ввод десятичной дроби.

"р" - строчная латинская буква. Для изменения знака числа +/-.

"в" - Back. Для стирания последней цифры.

"с" - Clear. Очистка экрана калькулятора для ввода новых чисел.

"q"-quit. Выход из программы.

"z"-заставка. После заставки введенные данные не теряются.

"h"-Помощь.

Набор тестов и варианты исполнения программы

 

В работе программы возможны две стандартные ошибки:

Деление на ноль

калькулятор программа вещественное число

тест: ввести число, затем нажать "/”, затем 0, на экране появится сообщение об ошибке (см. рисунок).

 

press any key - необходимо нажать любую клавишу на клавитуре. После нажатия можно снова вводить числа и производить над ними операции

Слишком большое число

тест: перемножить два больших числа, например 9999999 и 99999999, на экране появится сообщение об ошибке: "деление на ноль, press any key".

После выдачи ошибки необходимо нажать любую клавишу.

Ввод можно производить и с клавиатуры и мышью:

Примеры.

Нажмите на клавиатуре 5, затем мышью кликните на панели калькулятора цифру 7, затем опять на клавиатуре нажмите "*", введите еще одно число и кликните мышью на знаке "=". На экране калькулятора выдастся ответ.

Проверьте правильность работы кнопки "ß" (backspace), для чего введите дробное число, а затем нажмите на клавиатуре "b" либо кликните мышью на этой кнопке. Число символов должно уменьшаться справа: сначала исчезают цифры после запятой.

В любой момент можно выйти из программы, для этого нажмите клавишу "q" либо мышью выберите "Вых".

Также в любой момент можно посмотреть заставку и помощь.

Нажав "с", вы сбросите все введенные или полученные данные, после чего вы можете заново вводить числа.

Программная документация

 

Программа называется kursovaya. exe. Для удобства использования (русификации) программы создан файл kursovaya. bat. Использует стандартные модули crt и graph, а также дополнительный mouse. Исходные данные вводятся с клавиатуры и мышью. Знаковые клавиши описаны в окне самого калькулятора. ВНИМАНИЕ! Клавиши действуют только на латинском языке и в нижнем регистре (строчные). Для выхода используйте клавишу "q".

 

Текст программы:

uses crt,graph,mouse;,mr:integer;,j,y, {вспомогательные}

k, {количество символов до запятой}, {после запятой}:integer; {номер страницы},ft, {вспомогательные}, {ввод с клавиатуры или мышью}, {число целое}:boolean; {деление на ноль}

x: array[1..2] of real; {1 и 2 число}

ch,znak:char; {хранят код нажатой клавиши и введенный знак}:string;1,2,3; {метки 2-для быстрого выхода из программы}

{3-сброс} {2-возврат к вводу 1 числа}

 

procedure click(a,b,c,d,w:integer); {эмуляция нажатия кнопки}(8);(a,b,c,d);(15);(c,d,c,b);(c,d,a,d);(w);(15000);;(15);(a,b,c,d);(8);(c,d,c,b);(c,d,a,d);;

procedure help; {помощь и о программе}

var: array[1..20] of string[50];

i:integer;[1]:='Курсовая работа по информатике';[2]:='Выполнили:';[3]:='Пищулев К. В. и Бухаров А. Н.';[4]:='Пермь ПГТУ ЭТФ ';[5]:='Май 2003';

[6]:='Работа с программой';[7]:='Ввод осуществляется с клавиатуры или';[8]:='при помощи мыши.';[9]:='Управление с калвиатуры:';[10]:='q - выход из прораммы';[11]:='c - сброс данных';[12]:='p - изменение знака';[13]:='h - помощь ';[14]:='+,-,/,* -- соответствующие операции';[20]:='z - заставка';

[15]:='Возникли проблемы?';[16]:='q,c,p -- это латинские буквы в нижнем регистре';[17]:='если они не действуют - посмотрите, не включен';[18]:='ли у вас CAPSLOCK и или русский язык';[19]:='переключение между языками - правый CTRL';

 

click(60,260,90,280,440);

l<3 then l:=l+1l:=1;

l=1 then(1);(260,20,'Помощь страница 3');(260,40,a[15]);(260,80,a[16]);(260,100,a[17]);(260,120,a[18]);(260,140,a[19]);

(4);

outtextxy(260,20,'Помощь страница 1');

(10);

outtextxy(260,40,a[1]);(260,80,a[2]);(260,100,a[3]);(260,120,a[4]);(260,140,a[5]);;

l=2 then(1);

outtextxy(260,20,'Помощь страница 1');(260,40,a[1]);

outtextxy(260,80,a[2]);(260,100,a[3]);(260,120,a[4]);(260,140,a[5]);

(4);(260,20,'Помощь страница 2');

(10);(260,40,a[6]);(260,80,a[7]);(260,100,a[8]);(260,120,a[9]);(260,140,a[10]);(260,160,a[11]);(260,180,a[12]);(260,200,a[13]);(260,220,a[14]);(260,240,a[20]);

;

l=3 then(1);

outtextxy(260,20,'Помощь страница 2');(260,40,a[6]);

outtextxy(260,80,a[7]);(260,100,a[8]);(260,120,a[9]);(260,140,a[10]);(260,160,a[11]);(260,180,a[12]);(260,200,a[13]);(260,220,a[14]);(260,240,a[20]);

 

setcolor(4);(260,20,'Помощь страница 3');

 

setcolor(10);(260,40,a[15]);(260,80,a[16]);(260,100,a[17]);(260,120,a[18]);(260,140,a[19]);

;

;

exit; {выдача звука о выходе}

begin {эмуляция нажатия кнопки выход}

setcolor(15);(225,270,210,390,20);(8);(225,270,30,210,20);

i:=1 to 15 do(100*i);(5000);;;

i:=15 downto 1 do(100*i);(5000);;;

;

Picture; {рисование калькулятора}=30; b=250;c=300;;(1);(1,7);(0,0,2);

(a,a,b,c); {основа}(15);(a,a,b,c);(8);(a,c,b,c);(b,a,b,c);

(8); {окно}(2*a,2*a,b-a,3*a);(15);(2*a,3*a,b-a,3*a);(b-a,3*a,b-a,2*a);

i:=0 to 3 do {кнопки}j:=0 to 4 do(15);(2*a+i*35,4*a+j*35,2*a+30+i*35,4*a+20+j*35);(8);(2*a+30+i*35,4*a+20+j*35,2*a+30+i*35,4*a+j*35);(2*a+30+i*35,4*a+20+j*35,2*a+i*35,4*a+20+j*35);

;

(8);(225,270,210,390,20);(15);(225,270,30,210,20);

(8);(225,130,210,390,10);(15);(225,130,30,210,10);

(1);

(70,125,'1');(105,125,'2');(140,125,'3');(70,160,'4');(105,160,'5');(140,160,'6');(70,195,'7');(105,195,'8');(140,195,'9');(105,230,'0');(4);(175,125,'+');(175,160,'-');(175,195,'*');(175,230,'/');(64,230,'+/-');(140,230,'.');(10);(62,265,'Пом');(100,265,'Зас');

(5);(135,265,'<-');(175,265,'=');

(210,265,'вых');(220,125,'C');

(10);(280,325,'Используйте клавиатуру или мышь');

outtextxy(280,340,'при вводе с клавиатуры переключите язык на');(280,355,'латинский(правый CTRL) и отключите CAPSLOCK');(280,370,'если нужен ввод отрицательного числа, то ');(280,385,'сначала введите число, а потом нажмите');

outtextxy(280,400,' "р"(+/-) ');

;

zast; {заставка}(95,260,125,280,440);(0,0,5);;

i:=1 to 100 do(3);(600-i*6,50,'Курсовая');(i*6-200,150,'работа');(600-i*6,250,'по информатике');(10*i);(500);(1);(600-i*6,50,'Курсовая');(6*i-200,150,'работа');(600-i*6,250,'по информатике');

;

(4);

(0,0,1);(10,10,'нажмите любую клавишу');

(0,0,5);not(keypressed) doi:=1 to 15 do(i);(i*15);(0,50,'Курсовая');

outtextxy(400,150,'работа');(0,250,'по информатике');

delay(1000);;

;

;(0,0,1);;;

(dr,mr,'c:\bp\bgi\');

initmouse; {инициализация графики и мыши}

mousegotoxy(0,0);;;:=0;

 

:fm:=false;:=0;:=0;:=10-k;;

[1]:=0;(10);(x[1]:0:d,s);(62,62,218,88);(75,65,s);

 

::=true;(10);(x[1]:0:d,s);(62,62,218,88);(75,65,s);

f do:=false; {нажата клавиша}

not(mousepressed)and not(fc) do {ожидани ввода}

keypressed then begin ch:=readkey; fc:=true; endfc:=false;

x[1]=0 then k:=0;

fc then {если нажата клавиша}

if not(fm) then {если точка не нажата}

case ch of

'1':if k<9 then begin x[1]:=x[1]*10+1; k:=k+1; click(60,120,90,140,440);end;

'2':if k<9 then begin x[1]:=x[1]*10+2; k:=k+1; click(95,120,125,140,500);end;

'3':if k<9 then begin x[1]:=x[1]*10+3; k:=k+1; click(130,120,160,140,550);end;

'4':if k<9 then begin x[1]:=x[1]*10+4; k:=k+1; click(60,155,90,175,600);end;

'5':if k<9 then begin x[1]:=x[1]*10+5; k:=k+1; click(95,155,125,175,650);end;

'6':if k<9 then begin x[1]:=x[1]*10+6; k:=k+1; click(130,155,160,175,700);end;

'7':if k<9 then begin x[1]:=x[1]*10+7; k:=k+1; click(60,190,90,210,750);end;

'8':if k<9 then begin x[1]:=x[1]*10+8; k:=k+1; click(95,190,125,210,800);end;

'9':if k<9 then begin x[1]:=x[1]*10+9; k:=k+1; click(130,190,160,210,850);end;

'0':if k<9 then begin x[1]:=x[1]*10+0; k:=k+1; click(95,225,125,245,900);end;

'p':begin x[1]:=(-1)*x[1]; click(60,225,90,245,950); end;

'z':zast;

'+':begin f:=false; znak:=ch;click(165,120,195,140,1000); end;

'-':begin f:=false; znak:=ch;click(165,155,195,175,1050); end;

'*':begin f:=false; znak:=ch;click(165,190,195,210,1100); end;

'/':begin f:=false; znak:=ch;click(165,225,195,245,1150); end;

'.':begin fm:=true; click(130,225,160,245,1200); end;

'b':begin x[1]:=round(x[1]) div 10; k:=k-1; click(130,260,160,280,300);end;

'h':help;

'q':begin exit; goto 2;end;

'c': begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

 

else {если точка была нажата}ch of

'1':if d<y then begin x[1]:=x[1]+exp((d+1)*ln(0.1)); d:=d+1; click(60,120,90,140,440);end;

'2':if d<y then begin x[1]:=x[1]+2*exp((d+1)*ln(0.1)); d:=d+1; click(95,120,125,140,500);end;

'3':if d<y then begin x[1]:=x[1]+3*exp((d+1)*ln(0.1)); d:=d+1; click(130,120,160,140,550);end;

'4':if d<y then begin x[1]:=x[1]+4*exp((d+1)*ln(0.1)); d:=d+1; click(60,155,90,175,600);end;

'5':if d<y then begin x[1]:=x[1]+5*exp((d+1)*ln(0.1)); d:=d+1; click(95,155,125,175,650);end;

'6':if d<y then begin x[1]:=x[1]+6*exp((d+1)*ln(0.1)); d:=d+1; click(130,155,160,175,700);end;

'7':if d<y then begin x[1]:=x[1]+7*exp((d+1)*ln(0.1)); d:=d+1; click(60,190,90,210,750);end;

'8':if d<y then begin x[1]:=x[1]+8*exp((d+1)*ln(0.1)); d:=d+1; click(95,190,125,210,800);end;

'9':if d<y then begin x[1]:=x[1]+9*exp((d+1)*ln(0.1)); d:=d+1; click(130,190,160,210,850);end;

'0':if d<y then begin x[1]:=x[1]+0*exp((d+1)*ln(0.1)); d:=d+1; click(95,225,125,245,900);end;

'p':begin x[1]:=(-1)*x[1]; click(60,225,90,245,950); end;

'z':zast;

'+':begin f:=false; znak:=ch;click(165,120,195,140,1000); end;

'-':begin f:=false; znak:=ch;click(165,155,195,175,1050); end;

'*':begin f:=false; znak:=ch;click(165,190,195,210,1100); end;

'/':begin f:=false; znak:=ch;click(165,225,195,245,1150); end;

'h':help;

'b':begin if d>0 then begin str(x[1]:d:d,s); delete(s,k+d+1,1);d:=d-1; val(s,x[1],j);end;d=0 then fm:=false;(130,260,160,280,300); end;

'q':begin exit; goto 2; end;

'c': begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

 

{если кликнута мышь}not(fm) then

 

x[1]=0 then k:=0;

mousein(60,120,90,140) then if k<9 then begin click(60,120,90,140,440);x[1]:=x[1]*10+1; k:=k+1; end;mousein(95,120,125,140)then if k<9 then begin click(95,120,125,140,500);x[1]:=x[1]*10+2; k:=k+1; end;mousein(130,120,160,140)then if k<9 then begin click(130,120,160,140,550); x[1]:=x[1]*10+3; k:=k+1; end;mousein(60,155,90,175)then if k<9 then begin click(60,155,90,175,600);x[1]:=x[1]*10+4; k:=k+1; end;mousein(95,155,125,175)then if k<9 then begin click(95,155,125,175,650);x[1]:=x[1]*10+5; k:=k+1; end;mousein(130,155,160,175)then if k<9 then begin click(130,155,160,175,700);x[1]:=x[1]*10+6; k:=k+1; end;mousein(60,190,90,210)then if k<9 then begin click(60,190,90,210,750);x[1]:=x[1]*10+7; k:=k+1; end;mousein(95,190,125,210)then if k<9 then begin click(95,190,125,210,800);x[1]:=x[1]*10+8; k:=k+1; end;mousein(130,190,160,210)then if k<9 then begin click(130,190,160,210,850);x[1]:=x[1]*10+9; k:=k+1; end;mousein(95,225,125,245)then if k<9 then begin click(95,225,125,245,900);x[1]:=x[1]*10+0; k:=k+1; end;

mousein(165,120,195,140)then begin click(165,120,195,140,1000);f:=false; znak:='+'; end;mousein(165,155,195,175)then begin click(165,155,195,175,1050);f:=false; znak:='-'; end;mousein(165,190,195,210)then begin click(165,190,195,210,1100);f:=false; znak:='*'; end;mousein(165,225,195,245)then begin click(165,225,195,245,1150);f:=false; znak:='/'; end;mousein(60,225,90,245) then begin click(60,225,90,245,950);x[1]:=(-1)*x[1]; end;mousein(130,225,160,245)then begin fm:=true; click(130,225,160,245,1200); end;

mousein(130,260,160,280) then begin x[1]:=round(x[1]) div 10; k:=k-1; click(130,260,160,280,300);end;

mousein(205,250,245,290) then begin exit; goto 2; end;

mousein(60,260,90,280) then help;mousein(95,260,125,280) then zast;

mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

 

{точка нажата}mousein(60,120,90,140) then if d<y then begin x[1]:=x[1]+exp((d+1)*ln(0.1)); d:=d+1; click(60,120,90,140,440);end;mousein(95,120,125,140) then if d<y then begin x[1]:=x[1]+2*exp((d+1)*ln(0.1)); d:=d+1; click(95,120,125,140,500);end;mousein(130,120,160,140) then if d<y then begin x[1]:=x[1]+3*exp((d+1)*ln(0.1)); d:=d+1; click(130,120,160,140,550);end;mousein(60,155,90,175) then if d<y then begin x[1]:=x[1]+4*exp((d+1)*ln(0.1)); d:=d+1; click(60,155,90,175,600);end;mousein(95,155,125,175) then if d<y then begin x[1]:=x[1]+5*exp((d+1)*ln(0.1)); d:=d+1; click(95,155,125,175,650);end;mousein(130,155,160,175) then if d<y then begin x[1]:=x[1]+6*exp((d+1)*ln(0.1)); d:=d+1; click(130,155,160,175,700);end;mousein(60,190,90,210) then if d<y then begin x[1]:=x[1]+7*exp((d+1)*ln(0.1)); d:=d+1; click(60,190,90,210,750);end;mousein(95,190,125,210) then if d<y then begin x[1]:=x[1]+8*exp((d+1)*ln(0.1)); d:=d+1; click(95,190,125,210,800);end;mousein(130,190,160,210) then if d<y then begin x[1]:=x[1]+9*exp((d+1)*ln(0.1)); d:=d+1; click(130,190,160,210,850);end;mousein(95,225,125,245) then if d<y then begin x[1]:=x[1]+0*exp((d+1)*ln(0.1)); d:=d+1; click(95,225,125,245,900);end;

mousein(60,225,90,245) then begin x[1]:=(-1)*x[1]; click(60,225,90,245,950); end;mousein(165,120,195,140) then begin f:=false; znak:='+';click(165,120,195,140,1000); end;mousein(165,155,195,175) then begin f:=false; znak:='-';click(165,155,195,175,1050); end;mousein(165,190,195,210) then begin f:=false; znak:='*';click(165,190,195,210,1100); end;mousein(165,225,195,245) then begin f:=false; znak:='/';click(165,225,195,245,1150); end;mousein(130,260,160,280) then begin str(x[1]:d:d,s); delete(s,k+d+1,1);d:=d-1; val(s,x[1],j);

if d=0 then fm:=false; click(130,260,160,280,300); end;

mousein(205,250,245,290) then begin exit; goto 2; end;mousein(60,260,90,280) then help;mousein(95,260,125,280) then zast;

mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

;

(10);(x[1]:d:d,s);(62,62,218,88);(75,65,s);

:=10-k;

;

:=false;:=0;:=0;:=10-k;;

[2]:=0;:=true;(10);(x[2]:0:d,s);(62,62,218,88);(75,65,s);

f do:=false; {нажата клавиша}

not(mousepressed)and not(fc) dokeypressed then begin ch:=readkey; fc:=true; endfc:=false;

x[2]=0 then k:=0;

fc then

if not(fm) then {если точка не нажата}ch of

'1':if k<9 then begin x[2]:=x[2]*10+1; k:=k+1; click(60,120,90,140,440);end;

'2':if k<9 then begin x[2]:=x[2]*10+2; k:=k+1; click(95,120,125,140,500);end;

'3':if k<9 then begin x[2]:=x[2]*10+3; k:=k+1; click(130,120,160,140,550);end;

'4':if k<9 then begin x[2]:=x[2]*10+4; k:=k+1; click(60,155,90,175,600);end;

'5':if k<9 then begin x[2]:=x[2]*10+5; k:=k+1; click(95,155,125,175,650);end;

'6':if k<9 then begin x[2]:=x[2]*10+6; k:=k+1; click(130,155,160,175,700);end;

'7':if k<9 then begin x[2]:=x[2]*10+7; k:=k+1; click(60,190,90,210,750);end;

'8':if k<9 then begin x[2]:=x[2]*10+8; k:=k+1; click(95,190,125,210,800);end;

'9':if k<9 then begin x[2]:=x[2]*10+9; k:=k+1; click(130,190,160,210,850);end;

'0':if k<9 then begin x[2]:=x[2]*10+0; k:=k+1; click(95,225,125,245,900);end;

'z':zast;

'p':begin x[2]:=(-1)*x[2]; click(60,225,90,245,950); end;

'.':begin fm:=true; click(130,225,160,245,1200); end;

'h':help;

'b':begin x[2]:=round(x[2]) div 10; k:=k-1; click(130,260,160,280,300);end;

'c': begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

'q':begin exit; goto 2; end;

'=':begin

case znak of

'+': x[1]:=x[1]+x[2];

'-': x[1]:=x[1]-x[2];

'*': x[1]:=x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]:=x[1]/x[2]; end else f1:=true;

end;

f:=false;

click(165,260,195,280,1300);

end;

 

end

else {если точка была нажата}

case ch of

'1':if d<y then begin x[2]:=x[2]+exp((d+1)*ln(0.1)); d:=d+1; click(60,120,90,140,440);end;

'2':if d<y then begin x[2]:=x[2]+2*exp((d+1)*ln(0.1)); d:=d+1; click(95,120,125,140,500);end;

'3':if d<y then begin x[2]:=x[2]+3*exp((d+1)*ln(0.1)); d:=d+1; click(130,120,160,140,550);end;

'4':if d<y then begin x[2]:=x[2]+4*exp((d+1)*ln(0.1)); d:=d+1; click(60,155,90,175,600);end;

'5':if d<y then begin x[2]:=x[2]+5*exp((d+1)*ln(0.1)); d:=d+1; click(95,155,125,175,650);end;

'6':if d<y then begin x[2]:=x[2]+6*exp((d+1)*ln(0.1)); d:=d+1; click(130,155,160,175,700);end;

'7':if d<y then begin x[2]:=x[2]+7*exp((d+1)*ln(0.1)); d:=d+1; click(60,190,90,210,750);end;

'8':if d<y then begin x[2]:=x[2]+8*exp((d+1)*ln(0.1)); d:=d+1; click(95,190,125,210,800);end;

'9':if d<y then begin x[2]:=x[2]+9*exp((d+1)*ln(0.1)); d:=d+1; click(130,190,160,210,850);end;

'0':if d<y then begin x[2]:=x[2]+0*exp((d+1)*ln(0.1)); d:=d+1; click(95,225,125,245,900);end;

'z':zast;

'p':begin x[2]:=(-1)*x[2]; click(60,225,90,245,950); end;

'h':help;

'b':begin if d>0 then begin str(x[2]:d:d,s); delete(s,k+d+1,1);d:=d-1; val(s,x[2],j);end;d=0 then fm:=false;(130,260,160,280,300); end;

'q':begin exit; goto 2; end;

'c': begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

 

'=':begin

case znak of

'+': x[1]:=x[1]+x[2];

'-': x[1]:=x[1]-x[2];

'*': x[1]:=x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]:=x[1]/x[2];end else f1:=true;

end;

f:=false;

click(165,260,195,280,1300);

end;

 

end

{если кликнута мышь}

 

if not(fm) then

x[2]=0 then k:=0;

mousein(60,120,90,140) then if k<9 then begin click(60,120,90,140,440);x[2]:=x[2]*10+1; k:=k+1; end;mousein(95,120,125,140)then if k<9 then begin click(95,120,125,140,500);x[2]:=x[2]*10+2; k:=k+1; end;mousein(130,120,160,140)then if k<9 then begin click(130,120,160,140,550); x[2]:=x[2]*10+3; k:=k+1; end;mousein(60,155,90,175)then if k<9 then begin click(60,155,90,175,600);x[2]:=x[2]*10+4; k:=k+1; end;mousein(95,155,125,175)then if k<9 then begin click(95,155,125,175,650);x[2]:=x[2]*10+5; k:=k+1; end;mousein(130,155,160,175)then if k<9 then begin click(130,155,160,175,700);x[2]:=x[2]*10+6; k:=k+1; end;mousein(60,190,90,210)then if k<9 then begin click(60,190,90,210,750);x[2]:=x[2]*10+7; k:=k+1; end;mousein(95,190,125,210)then if k<9 then begin click(95,190,125,210,800);x[2]:=x[2]*10+8; k:=k+1; end;mousein(130,190,160,210)then if k<9 then begin click(130,190,160,210,850);x[2]:=x[2]*10+9; k:=k+1; end;mousein(95,225,125,245)then if k<9 then begin click(95,225,125,245,900);x[2]:=x[2]*10+0; k:=k+1; end;

mousein(60,225,90,245) then begin click(60,225,90,245,950);x[2]:=(-1)*x[2]; end;mousein(130,225,160,245)then begin fm:=true; click(130,225,160,245,1200); end;mousein(130,260,160,280) then begin x[2]:=round(x[2]) div 10; k:=k-1; click(130,260,160,280,300);end;

mousein(205,250,245,290) then begin exit; goto 2; end;mousein(60,260,90,280) then help;mousein(95,260,125,280) then zast;

mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

mousein(165,260,195,280) then

begin

case znak of

'+': x[1]:=x[1]+x[2];

'-': x[1]:=x[1]-x[2];

'*': x[1]:=x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]:=x[1]/x[2];end else f1:=true;

end;

f:=false;

click(165,260,195,280,1300);

end;

 

{точка нажата}mousein(60,120,90,140) then if d<y then begin x[2]:=x[2]+exp((d+1)*ln(0.1)); d:=d+1; click(60,120,90,140,440);end;mousein(95,120,125,140) then if d<y then begin x[2]:=x[2]+2*exp((d+1)*ln(0.1)); d:=d+1; click(95,120,125,140,500);end;mousein(130,120,160,140) then if d<y then begin x[2]:=x[2]+3*exp((d+1)*ln(0.1)); d:=d+1; click(130,120,160,140,550);end;mousein(60,155,90,175) then if d<y then begin x[2]:=x[2]+4*exp((d+1)*ln(0.1)); d:=d+1; click(60,155,90,175,600);end;mousein(95,155,125,175) then if d<y then begin x[2]:=x[2]+5*exp((d+1)*ln(0.1)); d:=d+1; click(95,155,125,175,650);end;mousein(130,155,160,175) then if d<y then begin x[2]:=x[2]+6*exp((d+1)*ln(0.1)); d:=d+1; click(130,155,160,175,700);end;mousein(60,190,90,210) then if d<y then begin x[2]:=x[2]+7*exp((d+1)*ln(0.1)); d:=d+1; click(60,190,90,210,750);end;mousein(95,190,125,210) then if d<y then begin x[2]:=x[2]+8*exp((d+1)*ln(0.1)); d:=d+1; click(95,190,125,210,800);end;mousein(130,190,160,210) then if d<y then begin x[2]:=x[2]+9*exp((d+1)*ln(0.1)); d:=d+1; click(130,190,160,210,850);end;mousein(95,225,125,245) then if d<y then begin x[2]:=x[2]+0*exp((d+1)*ln(0.1)); d:=d+1; click(95,225,125,245,900);end;

mousein(60,225,90,245) then begin x[2]:=(-1)*x[2]; click(60,225,90,245,950); end;mousein(130,260,160,280) then begin str(x[2]:d:d,s); delete(s,k+d+1,1);d:=d-1; val(s,x[2],j);

if d=0 then fm:=false; click(130,260,160,280,300); end;

mousein(205,250,245,290) then begin exit; goto 2; end;mousein(60,260,90,280) then help;mousein(95,260,125,280) then zast;

mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);(440); delay(5000);nosound;(8);arc(225,130,210,390,10);setcolor(15);arc(225,130,30,210,10);3;;

mousein(165,260,195,280) then

begin

case znak of

'+': x[1]:=x[1]+x[2];

'-': x[1]:=x[1]-x[2];

'*': x[1]:=x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]:=x[1]/x[2];end else f1:=true;

end;

f:=false;

click(165,260,195,280,1300);

end;;

(10);(x[2]:d:d,s);(62,62,218,88);(75,65,s);

:=10-k;

;

(x[1]:0:0,s);:=length(s);

k<=10 then

i:=1 to 10 do(100*i);(5000);;;

:=10-k+1;(x[1]:0:d,s);(10);(62,62,218,88);(75,65,s); (copy(s,k+d+1,1)='0')and (d<>0) do:=d-1;d=0 then fm:=falsefm:=true;

(4);(62,62,218,88);(75,65,'Большое число');(10);

(65,77,'press any key');

(200);(20000);(20000);(20000);;;[1]:=0; d:=0;k:=0; fm:=false;;

f1 then(4);

bar(62,62,218,88);(75,65,'Деление на ноль');(10);

outtextxy(65,77,'press any key');

(200);(20000);(20000);(20000);;;[1]:=0; d:=0; k:=0;fm:=false;:=false;;

1;

:

;

end.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: