Калькулятор на Delphi

Автор работы: Пользователь скрыл имя, 30 Января 2013 в 09:46, реферат

Описание работы

Создадим универсальный калькулятор на Delphi, который будет считать множество функций.
Приступим..
Для начала нам нужен 1 Edit..сразу-же очищаем его Text, на событие OnKeyPress пишем следующий код:

Файлы: 1 файл

Калькулятор на Delphi.doc

— 74.50 Кб (Скачать файл)

Калькулятор на Delphi

Создадим универсальный  калькулятор на Delphi, который будет  считать множество функций.  
Приступим..  
Для начала нам нужен 1 Edit..сразу-же очищаем его Text, на событие OnKeyPress пишем следующий код: 

 

 case key of

 '0'..'9',',':; {Запрещаем в поле Edit ввод любых символов, кроме цифр и запятых}

 else key:=#0;end;

 

 
Дабы обезопаситься от ввода типа:"0,1,2,33" на событие OnChange пишем следующий  код 

 

 var

 i,n:integer;

 begin

 n:=pos(',',edit1.text); {ищем первую запятую в поле}

 for i:=n+1 to length(edit1.text) do

 if edit1.text[i]=',' then edit1.clear; {Если находится ещё одна запятая после первой - очищаем поле}

 

 
Дабы полностью обезопаситься  от некорректного ввода, ставим  
DragMode: dmAutomatic ; {запрещаем клики мышкой}  
После того как у нас получилось неуязвимое поле, пришло время для создания кнопок калькулятора, сначала  
создадим 16 кнопок (Button): Числа от 0 до 9-ти, кнопку для запятой, знака равно, знаков плюс, минус,  
умножить и поделить.  
Сперва стоит обеспечить ввод чисел, для этого на событие OnClick чисел от 0..9 и запятой пишем следующее: 

 

 procedure TForm1.Button7Click(Sender: TObject);

 begin

edit1.Text:=edit1.Text+'1';

 end;

 
Повторим процедуру для всех остальных  чисел и знака запятой..На событие OnClick числа "0" стоит дописать ещё одну строку: 

if edit1.Text='00' then edit1.Text:='0';

{позволяет ввод  лишь одного нуля вначале}  
Дальше нам нужно запоминать числа которые подаются на ввод и выводить их, создадим три глобальные переменные и одну переменную типа char для запоминания математических действий: 

 

 var

 Form1: TForm1;

 a,b,d:extended;

 c:char;

 
Сначала нам нужно считать первое число, на знаки "+","-","*","/" пишем следующий код: 

 

 if edit1.Text<>'' then a:=strtofloat(edit1.Text); {Проверяем введено ли число в поле}

 c:='+'; {Сохраняем математическое действие}

 edit1.Clear;

 
Стоить повторить и для остальных  действий..  
Далее нам нужно считать вторую переменную, по этому на событие OnClick знака равно, пишем: 

procedure TForm1.Button12Click(Sender: TObject);

 begin

 if edit1.Text<>'' then b:=strtofloat(edit1.Text);

 case c of

 '+':d:=a+b;

 '-':d:=a*b;

 '*':d:=a*b;

 '/':d:=a/b;end;

edit1.Text:=floattostr(d);

 end;

 
Вуаля, у нас получился простейший калькулятор, но я ведь обещал вам совсем другой, по-этому создадим дополнительно 24 кнопки (Button) для разных функций;  
Одну из этих кнопок называем:"Pi", на событие OnClick этой кнопки пишем: 

 

 procedure TForm1.Button17Click(Sender: TObject);

 begin

edit1.Text:=floattostr(pi); {Вписываем в поле число Пи}

 end;

 
Далее переименовываем Button`ы на "cos","sin","arctg", на событие OnClick пишем: 

 

 procedure TForm1.Button18Click(Sender: TObject);

 begin

edit1.Text:=floattostr(cos(strtofloat(Edit1.Text))); {В поле выводим косинус введенного числа}

 end;

 
Проделать тоже самое с остальными функциями..  
Дальше переименовываем две кнопки для вычисления sqr и sqrt..пишем: 

procedure TForm1.Button21Click(Sender: TObject);

 begin

edit1.Text:=floattostr(sqrt(strtofloat(Edit1.Text)));

 end;

 
Повторить и для "sqr"  
Вы наверное спросите, а как-же насчёт ввода отрицательных чисел?  
Для этого переименовываем ещё одну кнопку в "+/-"  
На событие OnClick пишем: 

 

 procedure TForm1.Button23Click(Sender: TObject);

 begin

edit1.Text:=floattostr(-(strtofloat(Edit1.Text)));

 end;

 
Далее вернемся немного назад и  напишем ещё пару функций для  действий с двумя числами...в событии OnClick знака равно, введем две локальные  переменные, например: q и w;  
Теперь переименуем 6 кнопок в "mod","div","or","xor","and","x^y";  
Что писать на событие OnClick этих кнопок можно прочесть выше  
Теперь пришло считать второе число и вывести результат..О том как это сделать, написано выше.  
В итоге текст на событии OnClick знака равно будет иметь такой вид: 

 

 if edit1.Text<>'' then b:=strtofloat(edit1.Text);

 case c of

 '+':d:=a+b;

 '-':d:=a*b;

 '*':d:=a*b;

 '/':begin

 if edit1.Text<>'' then b:=strtofloat(edit1.Text);

 if b=0 then showmessage('На ноль делить нельзя') else

 d:=a/b;end;

 'm':d:=round(a) mod round(b);

 'd':d:=round(a) div round(b);

 'o':d:=round(a) or round(b);

 'x':d:=round(a) xor round(b);

 'a':d:=round(a) and round(b);

 '^':d:=exp(b*ln(a));

 end;

 edit1.Text:=floattostr(d);

 end;

 
Далее переименуем кнопку в "х!", на событие OnClick пишем: 

 

 procedure TForm1.Button32Click(Sender: TObject);

 var

x:extended;

i:integer;

 begin

 if edit1.Text<>'' then begin x:=strtofloat(edit1.Text);

 for i:=1 to round(x)-1 do

x:=x*i;

edit1.Text:=floattostr(x);end;

 end;

 
Переименуем ещё две кнопки в "x^2" и "x^3" на событие OnClick кнопки "x^2" пишем: 

 

 procedure TForm1.Button35Click(Sender: TObject);

 begin

 if edit1.Text<>'' then

edit1.Text:=

floattostr(strtofloat(edit1.Text)*strtofloat(edit1.Text));

 end;

 

 
Для кнопки "x^3" - аналогично.  
Переименуем ещё одну кнопку в exp (Експонента), на OnClick Этой кнопки пишем: 

 

 procedure TForm1.Button40Click(Sender: TObject);

 begin

 if edit1.Text<>'' then

edit1.Text:=floattostr(exp(strtofloat(edit1.Text)));

 end;

 

 
Переименуем следующую кнопку в "Int" (Возвращение целой части), пишем: 

 

 procedure TForm1.Button30Click(Sender: TObject);

 begin

 if edit1.Text<>'' then

edit1.Text:=floattostr(trunc(strtofloat(edit1.Text)));

 end;

 

 
Следующая кнопка "not" (Возвращение  противоположного числа + (-1) ).Пишем: 

 

 procedure TForm1.Button29Click(Sender: TObject);

 begin

 if edit1.Text<>'' then

edit1.Text:=floattostr(-(trunc(strtofloat(edit1.Text))+1));

 end;

 

 
Следующей будет кнопка "ln". Пишем: 

 

 procedure TForm1.Button31Click(Sender: TObject);

 begin

 if edit1.Text<>'' then

 if strtofloat(edit1.Text)>0 then

edit1.Text:=floattostr(ln(strtofloat(edit1.Text)));

 end;

 

 
Следующая кнопка "1/х". Пишем аналогично предыдущему.  
Следующая - кнопка Backspace. Пишем: 

 

 procedure TForm1.Button36Click(Sender: TObject);

 var

s:string;

 begin

s:=edit1.Text;

delete(s,length(s),1);

edit1.Text:=s;

 end;

 

 
Осталось две кнопки, переименуем  в "С" и "Close"  
В первой пишем: 

 

 procedure TForm1.Button38Click(Sender: TObject);

 begin

edit1.Clear;

 end;

 

 
А во второй: 

 

 procedure TForm1.Button37Click(Sender: TObject);

 begin

close();

 end;

 

 
 
Удачи!



Информация о работе Калькулятор на Delphi