Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posobie_1_chast.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
4 Мб
Скачать
☆

5.5 Создание проектов с использованием ввода/вывода информации

Создадим проект «Инженерный калькулятор», позволяющий производить вычисления арифметических действий и стандартных математических функций над целыми числами.

Спроектируем графический интерфейс калькулятора подобно тому, как изображено на рис. 65.

Рис.65 Графический интерфейс проекта «Инженерный калькулятор»

Для ввода исходных данных (двух чисел или аргумента функции) используем три текстовых поля (Edit1, Edit2 и Edit3). Результаты арифметических действий и стандартных математических функций будем выводить в надписи (Label1 и Label2). Чтобы выполнить какую-либо операцию нужно нажать соответствующую кнопку. Поэтому для каждой кнопки калькулятора опишем событие щелчка OnClick.

Для удобства введем дополнительные переменные: а – первое число, b – второе число, с – аргумент функции, S – результат действия или значение функции.

Начнем с описания обработчика события у кнопки Button1, при щелчке на которой выполняется операция сложения. Складываемые числа вводятся в текстовые поля Edit1 и Edit2, они хранятся в переменных а и b. Эти значения воспринимаются программой как набор символов, поэтому их нужно преобразовать в числа с помощью функции StrToInt. Результат сложения выводится в свойство Caption компонента Label1 и хранится в переменной S. Так как свойство Caption символьного типа, то результат действия следует перевести в строку с помощью функции преобразования IntToStr.

Так как в процедуре были использованы дополнительные переменные, то необходимо обязательно задать их тип в разделе описания переменных.

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

procedure TForm1.Button1Click(Sender: TObject);

var a, b, S:integer;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

S:=a + b;

Label1.Caption:=IntToStr(S);

end;

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

procedure TForm1.Button2Click(Sender: TObject);

var a, b, S:integer;

Begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

S:=a - b;

Label1.Caption:=IntToStr(S);

end;

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

procedure TForm1.Button3Click(Sender: TObject);

var a, b, S:integer;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

S:=a*b;

Label1.Caption:=IntToStr(S);

end;

Кнопка Button4 делит число, вводимое в поле Edit1 на число, вводимое в поле Edit2. Результат деления является вещественным числом. Поэтому для преобразования числа в строку используем функцию FloatToStr. Текст обработчика события для кнопки Button4 будет следующим:

procedure TForm1.Button4Click(Sender: TObject);

var a, b: integer; S: real;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

S:=a/b;

Label1.Caption:= FloatToStr(S);

end;

Кнопка Button5 определяет остаток от деления числа, введенного в поле Edit1 на число, введенное в поле Edit2. Кнопка Button6 показывает целую часть при делении первого числа на второе. Текст обработчиков событий для этих кнопок примет следующий вид:

procedure TForm1.Button5Click(Sender: TObject);

var a, b, S: integer;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

S:=a mod b;

Label1.Caption:=IntToStr(S);

end;

procedure TForm1.Button6Click(Sender: TObject);

var a, b, S:integer;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

S:=a div b;

Label1.Caption:=IntToStr(S);

end;

Остальные кнопки служат для вычисления стандартных математических функций для числа, введенного в текстовое поле Edit3. Кнопка Button7 определяет абсолютное значение или модуль числа. Для вычисления абсолютного значения используем стандартную математическую функцию abs (см. таблицу №8). Текст обработчика события для кнопки Button7 будет выглядеть таким образом:

procedure TForm1.Button7Click(Sender: TObject);

var с, S:integer;

begin

c:=StrToInt(Edit3.Text);

S:=abs(c);

Label2.Caption:= IntToStr(S);

end;

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

procedure TForm1.Button8Click(Sender: TObject);

var с: integer; S:real;

begin

c:=StrToInt(Edit3.Text);

S:=sgrt(c);

Label2.Caption:= FloatToStr (S);

end;

Кнопка Button9 возводит введенное число в квадрат.

procedure TForm1.Button9Click(Sender: TObject);

var с, S: integer;

Begin

c:=StrToInt(Edit3.Text);

S:=sgr(c);

Label2.Caption:= IntToStr (S);

end;

Кнопки Button10 и Button11 вычисляют соответственно синус и косинус числа, введенного в поле Edit3. Кнопка Button12 определяет натуральный логарифм введенного числа. Кнопка Button13 возводит число е в степень, заданную аргументом. Текст обработчиков событий у этих кнопок будет следующим:

procedure TForm1.Button10Click(Sender: TObject);

var с: integer; S:real;

Begin

c:=StrToInt(Edit3.Text);

S:=sin(c);

Label2.Caption:= FloatToStr (S);

end;

procedure TForm1.Button11Click(Sender: TObject);

var с: integer; S:real;

Begin

c:=StrToInt(Edit3.Text);

S:=cos(c);

Label2.Caption:= FloatToStr (S);

end;

procedure TForm1.Button12Click(Sender: TObject);

var с: integer; S:real;

begin

c:=StrToInt(Edit3.Text);

S:=ln(c);

Label2.Caption:= FloatToStr (S);

end;

procedure TForm1.Button13Click(Sender: TObject);

var с: integer; S:real;

Begin

c:=StrToInt(Edit3.Text);

S:=exp(c);

Label2.Caption:= FloatToStr (S);

end;

Текст проекта «Инженерный калькулятор» можно записать и без использования дополнительных переменных. В этом случае запись программы получается более компактной.

procedure TForm1.Button1Click(Sender: TObject);

Begin

Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));

end;

procedure TForm1.Button2Click(Sender: TObject);

Begin

Label1.Caption:=IntToStr(StrToInt(Edit1.Text)-StrToInt(Edit2.Text));

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Label1.Caption:=IntToStr(StrToInt(Edit1.Text)*StrToInt(Edit2.Text));

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Label1.Caption:=FloatToStr(StrToInt(Edit1.Text)/StrToInt(Edit2.Text));

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Label1.Caption:=IntToStr(StrToInt(Edit1.Text) mod StrToInt(Edit2.Text));

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Label1.Caption:=IntToStr(StrToInt(Edit1.Text) div StrToInt(Edit2.Text));

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

Label2.Caption:= IntToStr(abs(StrToInt(Edit3.Text)));

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

Label2.Caption:=FloatToStr(sqrt(StrToInt(Edit3.Text)));

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

Label2.Caption:=IntToStr(sqr(StrToInt(Edit3.Text)));

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

Label2.Caption:= FloatToStr(sin(StrToInt(Edit3.Text)));

end;

procedure TForm1.Button11Click(Sender: TObject);

begin

Label2.Caption:= FloatToStr(cos(StrToInt(Edit3.Text)));

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

Label2.Caption:= FloatToStr(ln(StrToInt(Edit3.Text)));

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

Label2.Caption:= FloatToStr(exp(StrToInt(Edit3.Text)));

end;

End.