Программа "Калькулятор"

Разработка программы "Калькулятор" для работы с вещественными числами. Алгоритм работы программы. Набор тестов и варианты исполнения программы. Порядок ввода текста, стандартные ошибки в работе программы. Программная документация, текст программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.10.2013
Размер файла 225,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство Образования РФ

Пермский Государственный Политехнический Университет

кафедра Автоматизированных Систем Управления

КУРСОВАЯ РАБОТА

по информатике

Калькулятор

Пермь 2003

Содержание

  • Постановка задачи
  • Работа с программой
  • Клавиши
  • Набор тестов и варианты исполнения программы
  • Программная документация

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

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

Исходные данные: два вещественных числа (от - 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"-Помощь.

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

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

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

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

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

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

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

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

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

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

Примеры.

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

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

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

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

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

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

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

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

uses crt,graph,mouse;

var

dr,mr:integer;

i,j,y, {вспомогательные}

k, {количество символов до запятой}

d, {после запятой}

l:integer; {номер страницы}

f,ft, {вспомогательные}

fc, {ввод с клавиатуры или мышью}

fm, {число целое}

f1:boolean; {деление на ноль}

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

ch,znak:char; {хранят код нажатой клавиши и введенный знак}

s:string;

label 1,2,3; {метки 2-для быстрого выхода из программы}

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

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

begin

setcolor(8);

rectangle(a,b,c,d);

setcolor(15);

line(c,d,c,b);

line(c,d,a,d);

sound(w);

delay(15000);

nosound;

setcolor(15);

rectangle(a,b,c,d);

setcolor(8);

line(c,d,c,b);

line(c,d,a,d);

end;

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

var

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

i:integer;

begin

a[1]:='Курсовая работа по информатике';

a[2]:='Выполнили :';

a[3]:='Пищулев К. В. и Бухаров А. Н.';

a[4]:='Пермь ПГТУ ЭТФ ';

a[5]:='Май 2003';

a[6]:='Работа с программой';

a[7]:='Ввод осуществляется с клавиатуры или';

a[8]:='при помощи мыши.';

a[9]:='Управление с калвиатуры:';

a[10]:='q - выход из прораммы';

a[11]:='c - сброс данных';

a[12]:='p - изменение знака';

a[13]:='h - помощь ';

a[14]:='+,-,/,* -- соответствующие операции';

a[20]:='z - заставка';

a[15]:='Возникли проблемы?';

a[16]:='q,c,p -- это латинские буквы в нижнем регистре';

a[17]:='если они не действуют - посмотрите, не включен';

a[18]:='ли у вас CAPSLOCK и или русский язык';

a[19]:='переключение между языками - правый CTRL';

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

if l<3 then l:=l+1

else l:=1;

if l=1 then

begin

setcolor(1);

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

outtextxy(260,40,a[15]);

outtextxy(260,80,a[16]);

outtextxy(260,100,a[17]);

outtextxy(260,120,a[18]);

outtextxy(260,140,a[19]);

setcolor(4);

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

setcolor(10);

outtextxy(260,40,a[1]);

outtextxy(260,80,a[2]);

outtextxy(260,100,a[3]);

outtextxy(260,120,a[4]);

outtextxy(260,140,a[5]);

end;

if l=2 then

begin

setcolor(1);

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

outtextxy(260,40,a[1]);

outtextxy(260,80,a[2]);

outtextxy(260,100,a[3]);

outtextxy(260,120,a[4]);

outtextxy(260,140,a[5]);

setcolor(4);

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

setcolor(10);

outtextxy(260,40,a[6]);

outtextxy(260,80,a[7]);

outtextxy(260,100,a[8]);

outtextxy(260,120,a[9]);

outtextxy(260,140,a[10]);

outtextxy(260,160,a[11]);

outtextxy(260,180,a[12]);

outtextxy(260,200,a[13]);

outtextxy(260,220,a[14]);

outtextxy(260,240,a[20]);

end;

if l=3 then

begin

setcolor(1);

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

outtextxy(260,40,a[6]);

outtextxy(260,80,a[7]);

outtextxy(260,100,a[8]);

outtextxy(260,120,a[9]);

outtextxy(260,140,a[10]);

outtextxy(260,160,a[11]);

outtextxy(260,180,a[12]);

outtextxy(260,200,a[13]);

outtextxy(260,220,a[14]);

outtextxy(260,240,a[20]);

setcolor(4);

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

setcolor(10);

outtextxy(260,40,a[15]);

outtextxy(260,80,a[16]);

outtextxy(260,100,a[17]);

outtextxy(260,120,a[18]);

outtextxy(260,140,a[19]);

end;

end;

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

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

setcolor(15);

arc(225,270,210,390,20);

setcolor(8);

arc(225,270,30,210,20);

for i:=1 to 15 do

begin

sound(100*i);

delay(5000);

nosound;

end;

for i:=15 downto 1 do

begin

sound(100*i);

delay(5000);

nosound;

end;

end;

procedure Picture; {рисование калькулятора}

const

a=30; b=250;c=300;

begin

cleardevice;

setbkcolor(1);

setfillstyle(1,7);

setlinestyle(0,0,2);

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

setcolor(15);

rectangle(a,a,b,c);

setcolor(8);

line(a,c,b,c);

line(b,a,b,c);

setcolor(8); {окно}

rectangle(2*a,2*a,b-a,3*a);

setcolor(15);

line(2*a,3*a,b-a,3*a);

line(b-a,3*a,b-a,2*a);

for i:=0 to 3 do {кнопки}

for j:=0 to 4 do

begin

setcolor(15);

rectangle(2*a+i*35,4*a+j*35,2*a+30+i*35,4*a+20+j*35);

setcolor(8);

line(2*a+30+i*35,4*a+20+j*35,2*a+30+i*35,4*a+j*35);

line(2*a+30+i*35,4*a+20+j*35,2*a+i*35,4*a+20+j*35);

end;

setcolor(8);

arc(225,270,210,390,20);

setcolor(15);

arc(225,270,30,210,20);

setcolor(8);

arc(225,130,210,390,10);

setcolor(15);

arc(225,130,30,210,10);

setcolor(1);

outtextxy(70,125,'1');

outtextxy(105,125,'2');

outtextxy(140,125,'3');

outtextxy(70,160,'4');

outtextxy(105,160,'5');

outtextxy(140,160,'6');

outtextxy(70,195,'7');

outtextxy(105,195,'8');

outtextxy(140,195,'9');

outtextxy(105,230,'0');

setcolor(4);

outtextxy(175,125,'+');

outtextxy(175,160,'-');

outtextxy(175,195,'*');

outtextxy(175,230,'/');

outtextxy(64,230,'+/-');

outtextxy(140,230,'.');

setcolor(10);

outtextxy(62,265,'Пом');

outtextxy(100,265,'Зас');

setcolor(5);

outtextxy(135,265,'<-');

outtextxy(175,265,'=');

outtextxy(210,265,'вых');

outtextxy(220,125,'C');

setcolor(10);

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

outtextxy(280,340,'при вводе с клавиатуры переключите язык на');

outtextxy(280,355,'латинский(правый CTRL) и отключите CAPSLOCK');

outtextxy(280,370,'если нужен ввод отрицательного числа, то ');

outtextxy(280,385,'сначала введите число, а потом нажмите');

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

end;

procedure zast; {заставка}

begin

click(95,260,125,280,440);

settextstyle(0,0,5);

cleardevice;

for i:=1 to 100 do

begin

setcolor(3);

outtextxy(600-i*6,50,'Курсовая');

outtextxy(i*6-200,150,'работа');

outtextxy(600-i*6,250,'по информатике');

sound(10*i);

delay(500);

setcolor(1);

outtextxy(600-i*6,50,'Курсовая');

outtextxy(6*i-200,150,'работа');

outtextxy(600-i*6,250,'по информатике');

end;

setcolor(4);

settextstyle(0,0,1);

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

settextstyle(0,0,5);

while not(keypressed) do

for i:=1 to 15 do

begin

setcolor(i);

sound(i*15);

outtextxy(0,50,'Курсовая');

outtextxy(400,150,'работа');

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

delay(1000);

end;

nosound;

readkey;

settextstyle(0,0,1);

picture;

end;

begin

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

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

mousegotoxy(0,0);

showmouse;

picture;

l:=0;

3:fm:=false;

d:=0;

k:=0;

y:=10-k;;

x[1]:=0;

setcolor(10);

str(x[1]:0:d,s);

bar(62,62,218,88);

outtextxy(75,65,s);

1:

f:=true;

setcolor(10);

str(x[1]:0:d,s);

bar(62,62,218,88);

outtextxy(75,65,s);

while f do

begin

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

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

if keypressed then begin ch:=readkey; fc:=true; end

else fc:=false;

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

if 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);

sound(440); delay(5000);nosound;

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

goto 3;

end;

end

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

case 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;

if d=0 then fm:=false;

click(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);

sound(440); delay(5000);nosound;

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

goto 3;

end;

end

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

if not(fm) then

begin

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

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

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

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

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

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

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

if mousein(130,225,160,245)then begin fm:=true; click(130,225,160,245,1200) ; end;

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

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

if mousein(60,260,90,280) then help;

if mousein(95,260,125,280) then zast;

if mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);

sound(440); delay(5000);nosound;

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

goto 3;

end;

end

else {точка нажата}

begin

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

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

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

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

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

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

if 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;

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

if mousein(60,260,90,280) then help;

if mousein(95,260,125,280) then zast;

if mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);

sound(440); delay(5000);nosound;

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

goto 3;

end;

end;

setcolor(10);

str(x[1]:d:d,s);

bar(62,62,218,88);

outtextxy(75,65,s);

y:=10-k;

end;

fm:=false;

d:=0;

k:=0;

y:=10-k;;

x[2]:=0;

f:=true;

setcolor(10);

str(x[2]:0:d,s);

bar(62,62,218,88);

outtextxy(75,65,s);

while f do

begin

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

while not(mousepressed)and not(fc) do

if keypressed then begin ch:=readkey; fc:=true; end

else fc:=false;

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

if fc then

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

case 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);

sound(440); delay(5000);nosound;

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

goto 3;

end;

'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;

if d=0 then fm:=false;

click(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);

sound(440); delay(5000);nosound;

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

goto 3;

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 {если кликнута мышь}

if not(fm) then

begin

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

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

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

if mousein(130,225,160,245)then begin fm:=true; click(130,225,160,245,1200) ; end;

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

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

if mousein(60,260,90,280) then help;

if mousein(95,260,125,280) then zast;

if mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);

sound(440); delay(5000);nosound;

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

goto 3;

end;

if 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;

end

else {точка нажата}

begin

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

if 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;

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

if 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;

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

if mousein(60,260,90,280) then help;

if mousein(95,260,125,280) then zast;

if mousein(215,120,235,140) then begin setcolor(15);arc(225,130,210,390,10);setcolor(8);arc(225,130,30,210,10);

sound(440); delay(5000);nosound;

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

goto 3;

end;

if 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;

end;

setcolor(10);

str(x[2]:d:d,s);

bar(62,62,218,88);

outtextxy(75,65,s);

y:=10-k;

end;

str(x[1]:0:0,s);

k:=length(s);

if k<=10 then

begin

for i:=1 to 10 do

begin

sound(100*i);

delay(5000);

nosound;

end;

d:=10-k+1;

str(x[1]:0:d,s);

setcolor(10);

bar(62,62,218,88);

outtextxy(75,65,s);

while (copy(s,k+d+1,1)='0')and (d<>0) do

d:=d-1;

if d=0 then fm:=false

else fm:=true;

end

else

begin

setcolor(4);

bar(62,62,218,88);

outtextxy(75,65,'Большое число');

setcolor(10);

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

sound(200);

delay(20000);

delay(20000);

delay(20000);

nosound;

readkey;

x[1]:=0; d:=0;k:=0; fm:=false;

end;

if f1 then

begin

setcolor(4);

bar(62,62,218,88);

outtextxy(75,65,'Деление на ноль');

setcolor(10);

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

sound(200);

delay(20000);

delay(20000);

delay(20000);

nosound;

readkey;

x[1]:=0; d:=0; k:=0;fm:=false;

f1:=false;

end;

goto 1;

2:

closegraph;

end.

Размещено на Allbest.ru


Подобные документы

  • Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.

    курсовая работа [434,1 K], добавлен 27.08.2012

  • Разработка структуры объекта "Калькулятор" - электронного вычислительного устройства для выполнения операций над числами или алгебраическими формулами. Текст программы, результат ее работы. Свойство реального объекта. Блок-схема, алгоритм приложения.

    контрольная работа [68,8 K], добавлен 11.04.2015

  • Калькулятор как устройство для арифметических вычислений. Разработка алгоритма, его перевод в программный код. Выбор языка, опции компилятора при сборке программы. Обработка ошибок и исключительных ситуаций в коде. Тестирование программы, файл помощи.

    курсовая работа [1,2 M], добавлен 19.02.2015

  • Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.

    курсовая работа [106,6 K], добавлен 16.06.2014

  • Рассмотрение основ создания калькулятора на объектно–ориентированном языке программирования Java, который будет подсчитывать длину текста. Математическая модель и алгоритм работы программы. Описание файлов готовой программы расчета символов в тексте.

    курсовая работа [276,5 K], добавлен 28.11.2014

  • Си - это язык программирования общего назначения. Постановка задачи: разработка программы - калькулятора. Метод решения задачи. Алгоритм работы программы. Технические данные для использования. Описание основных функций.

    курсовая работа [14,1 K], добавлен 23.05.2002

  • Разработка программного кода и алгоритма действий приложения "калькулятор". Использование функций в программе Matlab. Разработка кнопок, опций, интерфейса, оформление. Части кода Matlab и тестовый набор. Инструкция пользователя по работе программы.

    курсовая работа [527,1 K], добавлен 27.09.2014

  • Разработка программы для выполнения арифметических операций с комплексными числами. Разработка эскизного проекта. Диаграмма последовательностей и классов. Разработка и описание программы. Разработка программного кода и руководства пользователя.

    курсовая работа [1,2 M], добавлен 25.11.2011

  • Преобразование матрицы по заданным правилам. Методика работы с массивами, основанная на классических алгоритмах. Разработка и описание блок-схемы алгоритма. Листинг программы, экраны работы и отладки программы. Инструкция для пользователей программы.

    контрольная работа [338,4 K], добавлен 29.01.2013

  • Создание программы калькулятор, вычисляющий простейшие математические примеры на сложение, вычитание, умножение, деление и возведение в степень. Определение входных и выходных данных, требований к программе. Рекомендации по использованию программы.

    курсовая работа [717,6 K], добавлен 17.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.