ТОП 10:

Создание проекта «Калькулятор» с использованием



Условного оператора и оператора выбора

 

Создадим проект «Калькулятор», демонстрирующий работу стандартного калькулятора. Разработаем графический интерфейс проекта подобно тому, как изображено на рис. 93. Для этого поместим на форму следующие компоненты:

- текстовое поле Edit1, в котором будут отображаться нажимаемые цифры и результат операций;

- кнопки ввода цифр: Button1-Button9 с заголовками от 1 до 9 соответственно, Button10 с заголовком 0;

- кнопки выполнения арифметических действий: Button11 с заголовком «+», Button12 – «-», Button13 – «*», Button14 – «/», Button15 – «=».

- кнопка очистки поля ввода: Button16 с заголовком «С».

 

Рис. 93 Графический интерфейс проекта «Калькулятор»

Сначала составим обработчики событий для кнопок ввода цифр Button1-Button10.

При нажатии на кнопку с цифрой 1 в текстовом поле должна появиться единица. Для этого свойству Text поля Edit1 нужно присвоить значение ‘1’: Edit1.Text:=’1’. Но данная запись не позволяет вводить числа, состоящие из нескольких цифр (двузначные, трехзначные и т.д.). Чтобы задать ввод многозначных чисел, следует заголовок кнопки прибавить к уже имеющемуся в поле ввода тексту: Edit1.Text:= Edit1.Text + ’1’.

Таким образом, текст обработчика события для кнопки Button1 будет следующим:

 

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text+’1’;
end;

Для кнопки Button2 обработчик события будет иметь похожий вид. Здесь в текстовое поле записывается заголовок кнопки Button2.

 

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.text:= Edit1.Text+’2’;
end;

 

Аналогично составляются обработчики для остальных кнопок ввода цифр.

Для описания работы кнопок, выполняющих арифметические действия, введем переменную-индикатор i. Эта переменная будет содержать номер операции. Переменная i = 1 задает операцию сложения; i = 2 – вычитания; i = 3 – умножения; i = 4 – деления. Текст, находящийся в поле ввода, необходимо преобразовать в число с помощью функции StrToInt. Результат преобразования поместим в дополнительную переменную n: n:=StrToInt(Edit1.Text). Эта переменная будет содержать первое число в операции. После выполнения операции текстовое поле нужно очистить, чтобы оно было готово к вводу второго числа.

Дополнительные переменные i и n опишем как глобальные, так как они используются в нескольких процедурах. Для этого укажем их тип в уже имеющемся разделе описания переменных.

Var

Form1: TForm1;

i,n: integer;

 

Текст обработчика события для кнопки Button11, выполняющей сложение, будет следующим:

 

 

var
Form1: TForm1;
i,n:integer;
//обработчик события для кнопки «+»
procedure TForm1.Button11Click(Sender: TObject);
begin
i:=1;
n:=StrToInt(Edit1.Text);
Edit1.Text:=' ';
end;

 

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

 

//обработчик события для кнопки «-»
procedure TForm1.Button12Click(Sender: TObject);
begin
i:=2;
n:=StrToInt(Edit1.Text);
Edit1.Text:=' ';
end;
//обработчик события для кнопки «*»
procedure TForm1.Button13Click(Sender: TObject);
begin
i:=3;
n:=StrToInt(Edit1.Text);
Edit1.Text:=' ';
end;
//обработчик события для кнопки «/»
procedure TForm1.Button14Click(Sender: TObject);
begin
i:=4;
n:=StrToInt(Edit1.Text);
Edit1.Text:=' ';
end;

 

В обработчике события для кнопки «=» следует проверить значение переменной-индикатора i.

Если i = 1, то будет выполняться операция сложения; если i = 2 – вычитания; если i = 3 – умножения; если i = 4 – деления. После проверки условия нужно задать второе число, для записи которого используем еще одну дополнительную переменную k. При выполнении операций сложения, вычитания и умножения преобразование символов, выражающих второе число, в числовое представление осуществляется с помощью функции StrToInt. У деления преобразование выполняется функцией StrToFloat. После этого, в зависимости от номера индикатора, запишем для каждой операции соответствующую формулу:

m:=n + k – для сложения;

m:=n – k – для вычитания;

m:=n*k – для умножения;

m:=n/k – для деления;

Переменные m и k также опишем как глобальные переменные вещественного типа.

Текст обработчика события для кнопки Button15будет следующим:

 

var
Form1: TForm1;
i,n: integer; m, k: real;
procedure TForm1.Button15Click(Sender: TObject);
begin
if i = 1 then
begin
k:= StrToInt(Edit1.Text);
m:=n + k;
end;
if i = 2 then
begin
k:= StrToInt(Edit1.Text);
m:=n - k;
end;
if i = 3 then
begin
k:= StrToInt(Edit1.Text);
m:=n*k;
end;
if i = 4 then
begin
Ifk=0thenShowMessage (‘На ноль делить нельзя’) else
begin
k:= StrToFloat(Edit1.Text);
m:=n/k;
end;
end;
Edit1.Text:=FloatToStr(m);
end;

 

При выполнении операции деления здесь предусмотрена ситуация, когда в качестве делителя введен ноль.

Так как в рассмотренном выше обработчике используется несколько условий, то их удобно представить с помощью оператора выбора case. Также можно обойтись без переменной k, отвечающей за второе число. Это значительно сокращает запись программы обработчика:

 

 

procedure TForm1.Button15Click(Sender: TObject);
Begin
case i of
1: m:=n+StrToInt(Edit1.Text);
2: m:=n-StrToInt(Edit1.Text);
3: m:=n*StrToInt(Edit1.Text);
4:
begin
Ifk=0thenShowMessage (‘На ноль делить нельзя’)
else m:=n/StrToFloat(Edit1.Text);
end;
end;
Edit1.Text:=FloatToStr(m);
end;

 







Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.66.217 (0.006 с.)