Помощь в написании студенческих работ
Антистрессовый сервис

Обычный калькулятор. 
Программирование: delphi

РефератПомощь в написанииУзнать стоимостьмоей работы

После выполнения операции, когда на индикаторе результат, f = 1 ждем остальные цифры. }. Создать программу, выполняющую действия простого инженерного калькулятора (рис. 53). Вариант 1. Событие OnClick на каждой цифровой кнопке обрабатывает отдельная процедура. Цель работы — создать программу, выполняющую действия кнопочного калькулятора. Цель работы — создать программу, выполняющую действия… Читать ещё >

Обычный калькулятор. Программирование: delphi (реферат, курсовая, диплом, контрольная)

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

Описание плана разработки программы

  • 1. Откройте новый проект.
  • 2. Разместите на форме экземпляры компонентов: Label, Edit, Button (рис. 52).

3. Сохраните проект, запустите и протестируйте его.

Окно разработанной программы.

Рис. 52. Окно разработанной программы

Листинг подпрограммы procedure TForml. FormCreate (Sender: TObject); begin

Editl.Text Edit2. Text := '';

Edit3.Text := ''; end;

procedure TForml. Button5Click (Sender: TObject); begin

Editl.Text := '';

Edit2.Text := '';

Edit3.Text := 11; end;

procedure TForml. Button6Click (Sender: TObject); begin close; end;

procedure TForml. ButtonlClick (Sender: TObject); begin

a := StrToFloat (Editl.Text); b := StrToFloat (Edit2.Text); c := a + b;

Edit3.Text := FloatToStr (c); end;

procedure TForml. Button2Click (Sender: TObject); begin

a := StrToFloat (Editl.Text); b := StrToFloat (Edit2.Text); c := a — b;

Edit3.Text := FloatToStr (c); end;

procedure TForml. Button3Click (Sender: TObject); begin

a := StrToFloat (Editl.Text); b := StrToFloat (Edit2.Text); c := a * b;

Edit3.Text := FloatToStr (c); end;

procedure TForml. Button4Click (Sender: TObject); begin

a := StrToFloat (Editl.Text); b := StrToFloat (Edit2.Text); if b = 0 then

Edit3.Text := 'division by zero' else begin

c := a / b;

Edit3.Text := FloatToStr (c); end; end;

Задание для самостоятельного выполнения

1. Создать программу, выполняющую действия простого инженерного калькулятора (рис. 53).

Простой инженерный калькулятор.

Рис. 53. Простой инженерный калькулятор

Фрагмент подпрограммы (для вычисления функции cos (x)).

if Editl. Text о '' then begin

a := StrToFloat (Editl.Text); c := cos (a); end;

if Edit2. Text '' then begin

b := StrToFloat (Edit2.Text); c := cos (b); end;

Edit3.Text := FloatToStr (c);

  • 2. Добавить на форму кнопки для вычисления функций tg (x), logab.
  • 3. Создать программу, выполняющую перевод чисел из десятичной системы счисления в двоичную систему и обратно (рис. 54).
Перевод чисел.

Рис. 54. Перевод чисел

Кнопочный калькулятор

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

Описание плана разработки программы

  • 1. Открыть новый проект.
  • 2. Разместить на форме экземпляры компонентов: Edit, Button.
Окно проекта. Окно разработанной программы.

Рис. 55. Окно проекта. Окно разработанной программы

К этой задаче даны два варианта решения. В первом варианте для каждой цифровой кнопки создана отдельная процедура обработки события OnClick. Во втором варианте событие OnClick всех цифровых кнопок обрабатывает одна процедура, что позволило значительно сократить текст программы.

Вариант 1. Событие OnClick на каждой цифровой кнопке обрабатывает отдельная процедура.

implementation

{$R *.dfm}

var

accum: real; // аккумулятор

oper: integer; // операция: 1 — 2 ;

// 0 — «выполнить» (кнопка «=»).

f: integer;

{ f = в ждем первую цифру нового числа, например,

после выполнения операции, когда на индикаторе результат, f = 1 ждем остальные цифры. }.

// кнопка 0.

procedure TForml. Button0Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '0'; f := 1; // ждем остальные цифры end

else if Editl. Text '0'.

// чтобы на индикаторе не было // нескольких нулей в начале числа then

Editl.Text := Editl. Text + '0';

end;

// кнопка 1

procedure TForml. ButtonlClick (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '1'; f := 1; // ждем остальные цифры end else

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

end;

// кнопка 2

procedure TForml. Button2Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '2'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '2';

end;

// кнопка 3

procedure TForml. Button3Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '3'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '31;

end;

// кнопка 4

procedure TForml. Button4Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '4'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '4';

end;

// кнопка 5

procedure TForml. Button5Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '5'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '5';

end;

// кнопка 6

procedure TForml. Button6Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '6'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '6';

end;

// кнопка 7

procedure TForml. Button7Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '7'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '7';

end;

// кнопка 8

procedure TForml. Button8Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '8'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '8';

end;

// кнопка 9

procedure TForml. Button9Click (Sender: TObject); begin

if f = 0 // первая цифра числа

then

begin

Editl.Text := '9'; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + '9';

end;

// десятичная точка

procedure TForml. ButtonZClick (Sender: TObject); begin

if Editl. Text = '0' then begin

Editl.Text := '0/; f := l; end;

if Pos (',', Editl. Text) = 0 then Editl. Text := Editl. Text +.

end;

// выполнение операции procedure DoOper; var

numb: real; // число на индикаторе

begin

// ассит содержит результат предыдущей операции,

// орег — код операции, которую надо выполнить.

// Операнд находится на индикаторе. numb := StrToFloat (Forml.Editl.Text); case орег of 0:

accum := numb;

1:

accum := accum + numb;

2:

accum := accum — numb;

end;

Forml.Editl.Text := FloatToStr (accum); end;

// кнопка «+» .

procedure TForml. ButtonPlusClick (Sender: TObject);

{ Надо выполнить предыдущую операцию, вывести результат на индикатор, запомнить текущую операцию и установить режим ожидания первой цифры нового числа. } begin

if f = 0 // ждем первую цифру,

// но пользователь щелкнул на кнопке операции

then

орег := 1 // запомним операцию else begin

// на индикаторе есть число DoOper; // выполнить предыдущую операцию орег := 1; // запомнить текущую операцию f := 0; // ждем первую цифру нового числа

end; end;

// кнопка

procedure TForml. ButtonMinusClick (Sender: TObject);

// см. комментарий к процедуре обработки OnCLxck на «+» begin

if f = 0 // ждем первую цифру then

орег := 2 else begin

DoOper; // выполнить предыдущую операцию орег := 2; // запомнить текущую операцию f := 0; // ждем первую цифру нового числа

end; end;

// кнопка «=».

procedure TForml. ButtonEnterClick (Sender: TObject); begin

if f = 0 // ждем первую цифру

then

орег := 0 else begin

DoOper; // выполнить предыдущую операцию орег := 0; // запомнить текущую операцию f := 0; // ждем первую цифру нового числа

end; end;

// кнопка «с» — очистка

procedure TForml. ButtonCClick (Sender: TObject); begin

Editl.Text := '0'; accum := 0; oper := 0;

f := 0; // ждем первую цифру числа end;

// нажатие клавиши в поле Editl

procedure TForml. EditlChange (Sender: TObject; var Key: Char); begin

Key := Chr (0); // не отображать символы end;

procedure TForml. FormCreate (Sender: TObject); begin

oper := 0; end;

end.

Вариант 2. События OnClick на всех цифровых кнопках обрабатывает одна процедура.

implementation

{$R *.dfm}

{ 1. Во время создания формы свойству Tag каждой цифровой кнопки надо присвоить значение, равное цифре, которая должна появиться на индикаторе калькулятора.

2. После того как обычным образом будет создана процедура обработки события OnCLxck для одной из цифровых кнопок, например для кнопки «.1», надо задать, что событие OnCLick для остальных кнопок обрабатывает эта же процедура. Делается это выбором процедуры в списке, который появляется в результате щелчка на значке раскрывающегося списка в соответствующей строке вкладки Events. }.

var

accum: real; // аккумулятор

oper: integer; // операция: 1 — 2 —

// 0 — «выполнить» (кнопка «=»).

f: integer;

{ / = 0 ждем первую цифру нового числа, например, после выполнения операции, когда на индикаторе результат, f = 1 ждем остальные цифры. }.

// Нажатие на кнопки «в» — «9» procedure TForml. DigitBtnClick (Sender: TObject); var

Btn: TButton; ch: Char; begin

Btn := Sender as TButton; ch := Chr (48 + Btn. Tag);

// chr (48) = '0'; chr{49) = '4‘ и m. d.

// можно и так: ch := Btn. Caption; case Btn. Tag of.

1. .9: // кнопки «1»  — «9» .

if f = 0 // первая цифра числа then begin

Editl.Text := ch; f := 1; // ждем остальные цифры end else

Editl.Text := Editl. Text + ch;

0: // кнопка «0».

if Editl. Text '0' //на индикаторе 0 // чтобы на индикаторе не было нескольких нулей // в начале числа then

Editl.Text := Editl. Text + '0';

end;

end;

// десятичная точка

procedure TForml. ButtonZClick (Sender: TObject); begin

if Editl. Text = '0' then begin

Editl.Text := '0/; f := 1; end;

if Pos (',', Editl. Text) = 0 then Editl. Text := Editl. Text +.

end;

// выполнение операции procedure DoOper; var

numb: real; // число на индикаторе begin

// accum содержит результат предыдущей операции,

// орег — код операции, которую надо выполнить.

// Операнд находится на индикаторе. numb := StrToFloat (Forml.Editl.Text);

case oper of 0:

accum := numb;

1:

accum := accum + numb;

2:

accum := accum — numb;

end;

Forml.Editl.Text := FloatToStr (accum); end;

// Обрабатывает нажатие на кнопки «+», «-» и «=» procedure TForml. OpBtnClick (Sender: TObject);

{ Надо выполнить предыдущую операцию, вывести результат на индикатор, запомнить текущую операцию и установить режим ожидания первой цифры нового числа. } var

Btn: TButton; begin

Btn := Sender as TButton;

if f = 0 // ждем первую цифру, но пользователь нажал // на кнопку операции

then

// свойство Tag кнопки хранит код операции oper := Btn. Tag // запомним операцию else begin

DoOper; // выполнить предыдущую операцию oper := Btn. Tag; // запомнить текущую операцию f := 0; // ждем первую цифру нового числа end; end;

// кнопка с — очистка

procedure TForml. ButtonCClick (Sender: TObject); begin

Editl.Text := '0'; accum := 0; oper := 0;

f := 0; // ждем первую цифру числа end;

// нажатие клавиши в поле Editl

procedure TForml. EditlChange (Sender: TObject; var Key: Char); begin

Key := Chr (0); // не отображать символы end;

procedure TForml. FormCreate (Sender: TObject); begin

oper := 0; end;

end.

Показать весь текст
Заполнить форму текущей работой