Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Программная реализация




// Событие OnClick на каждой цифровой кнопке
// обрабатывает отдельная процедура.
implementation
{$R *.dfm}
var
accum: real; // аккумулятор
oper: integer; // операция: 1 — '+'; 2 — '-';
// 0 — "выполнить" (кнопка "=")
f: integer;
{ f = 0 ждем первую цифру нового числа, например,
после выполнения операции,
когда на индикаторе результат.
f = 1 ждем остальные цифры. }
// кнопка 0
procedure TForm1.Button0Click(Sender: TObject);
begin
if f = 0 // первая цифра числа
then begin
Edit1.Text := '0';
f := 1; // ждем остальные цифры
end
else
if Edit1.Text <> '0'
// чтобы на индикаторе не было
// нескольких нулей в начале числа
then Edit1.Text := Edit1.Text + '0';
end;
// кнопка 1
procedure TForm1.Button1Click(Sender: TObject);
begin
if f = 0 // первая цифра числа
then begin
Edit1.Text := '1';
f := 1; // ждем остальные цифры
end
else Edit1.Text := Edit1.Text + '1';
end;
// кнопка 2
procedure TForm1.Button2Click(Sender: TObject);
begin
if (f = 0) // первая цифра числа
then begin
Edit1.Text := '2';
f := 1; // ждем остальные цифры
end
else Edit1.Text := Edit1.Text + '2';
end;
// кнопка 3
procedure TForm1.Button3Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '3';
f := 1;
end
else Edit1.Text := Edit1.Text + '3';
end;
// кнопка 4
procedure TForm1.Button4Click(Sender: TObject);
begin
if f = 0 then
begin
Edit1.Text := '4';
f := 1;
end
else Edit1.Text := Edit1.Text + '4';
end;
// кнопка 5
procedure TForm1.Button5Click(Sender: TObject);
begin
if (f = 0)
then begin
Edit1.Text := '5';
f := 1;
end
else Edit1.Text := Edit1.Text + '5';
end;
// кнопка 6
procedure TForm1.Button6Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '6';
f := 1;
end
else Edit1.Text := Edit1.Text + '6';
end;
// кнопка 7
procedure TForm1.Button7Click(Sender: TObject);
begin
if f = 0
then begin
// первая цифра числа
Edit1.Text := '7';
f := 1;
end
else Edit1.Text := Edit1.Text + '7';
end;
// кнопка 8
procedure TForm1.Button8Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '8';

f := 1;
end
else Edit1.Text := Edit1.Text + '8';
end;
// кнопка 9
procedure TForm1.Button9Click(Sender: TObject);
begin
if f = 0 // первая цифра числа
then begin
Edit1.Text := '9';
f := 1; // ждем остальные цифры
end
else Edit1.Text := Edit1.Text + '9';
end;
// десятичная точка
procedure TForm1.ButtonZClick(Sender: TObject);
begin
if Edit1.Text = '0' then
begin
Edit1.Text := '0,';
f := 1;
end;
if Pos(',',Edit1.Text) = 0 then
Edit1.Text := Edit1.Text + ',';
end;
// выполнение операции
procedure DoOper;
var
numb: real; // число на индикаторе
begin
// accum содержит результат предыдущей
// операции, oper — код операции, которую
// надо выполнить. Операнд находится
// на индикаторе.
numb := StrToFloat(Form1.Edit1.Text);
case oper of
0: accum := numb;
1: accum := accum + numb;
2: accum := accum — numb;
end;
Form1.Edit1.Text := FloatToStr(accum);
end;
// кнопка "+".
procedure TForm1.ButtonPlusClick(Sender: TObject);
{ Надо выполнить предыдущую операцию,
вывести результат на индикатор,
запомнить текущую операцию
и установить режим ожидания первой
цифры нового числа. }
begin
if f = 0 // ждем первую цифру, но пользователь
// щелкнул на кнопке операции
then oper := 1 // запомним операцию
else begin
// на индикаторе есть число
DoOper; // выполнить предыдущую операцию
oper :=1; // запомнить текущую операцию
f:=0; // ждем первую цифру нового числа
end;
end;
// кнопка "-"
procedure TForm1.ButtonMinusClick(Sender: TObject);
// см. комментарий к процедуре обработки OnClick на "+"
begin
if f = 0 // ждем первую цифру
then oper := 2
else begin
DoOper; // выполнить предыдущую операцию
oper :=2; // запомнить текущую операцию
f:=0; // ждем первую цифру нового числа
end;
end;
// кнопка "="
procedure TForm1.ButtonEnterClick(Sender: TObject);
begin
if f = 0 // ждем первую цифру
then oper := 0
else begin
DoOper; // выполнить предыдущую операцию
oper :=0; // запомнить текущую операцию
f:=0; // ждем первую цифру нового числа
end;
end;
// кнопка "с" — очистка
procedure TForm1.ButtonCClick(Sender: TObject);
begin
Edit1.Text := '0';
accum := 0;
oper := 0;
f := 0; // ждем первую цифру числа
end;
// нажатие клавиши в поле Edit1
procedure TForm1.Edit1Change(Sender: TObject; var Key:Char);
begin
Key := Chr(0); // не отображать символы
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
oper := 0;
end;
end.

 


Поделиться:

Дата добавления: 2015-09-15; просмотров: 100; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты