Практическая часть. Задача №1.В данном варианте программы для каждой цифровой кнопки создана отдельная процедура обработки событий Click.
Задача №1. В данном варианте программы для каждой цифровой кнопки создана отдельная процедура обработки событий Click. Implementation {$R *.dfm} Var accum: real; // аккумулятор oper: integer; // операция: 1 — '+'; 2 — '-'; // 0 — "выполнить" (кнопка "=") f: integer; // кнопка 0 procedure TForml.ButtonOClick(Sender: TObject); Begin if f = 0 // первая цифра числа Then begin Edit1.Text:= '0'; f: = 1; // ждем остальные цифры End Else if Edit1.Text <> '0' // чтобы на индикаторе не было // нескольких нулей в начале числа then Edit1.Text:= Edit1.Text + 'О'; 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 TForml.Button2Click(Sender: TObject); Begin if (f = 0) // первая цифра числа Then Begin Edit1.Text:= '2'; f: = 1; // ждем остальные цифры End else Edit1.Text:= Edit1.Text + '2'; end;
// кнопка 3 procedure TForml.Button3Click(Sender: TObject); Begin if f = 0 Then begin Edit1.Text:= '3'; f:= 1; End else Edit1.Text:= Edit1.Text + '3'; end;
// кнопка 4 procedure TForml.Button4Click(Sender: TObject); Begin if f = 0 then Begin Edit1.Text:= '4'; f:= 1; End else Edit1.Text:= Edit1.Text + '4'; end; // кнопка 5 procedure TForml.Button5Click(Sender: TObject); Begin if (f = 0) Then begin Edit1.Text:= '5'; f:= 1; End else Edit1.Text:= Edit1.Text +'5'; end;
// кнопка 6 procedure TForml.Button6Click(Sender: TObject); Begin if f = 0 Then begin Edit1.Text:= '6'; f:= 1; End else Edit1.Text:= Edit1.Text + '6'; end;
// кнопка 7 procedure TForml.Button7Click(Sender: TObject); Begin if f = 0 Then begin // первая цифра числа Edit1.Text:= '7'; f:= 1; End else Edit1.Text:= Edit1.Text + '7'; end;
// кнопка 8 procedure TForml.Button8Click(Sender: TObject); Begin if f = 0 Then begin Edit1.Text:= '8'; f:= 1; End else Edit1.Text:= Edit1.Text + '8'; end;
// кнопка 9 procedure TForml.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 содержит результат предыдущей // операции, ореr — код операции, которую // надо выполнить. Операнд находится // на индикаторе. 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 = О // ждем первую цифру, но пользователь // щелкнул на кнопке операции 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
|