1. Главная страница » Компьютеры

Delphi 7 калькулятор код

Автор: | 16.12.2019

В этой статье мы подробно рассмотрим создание простого стандартного калькулятора с помощью среды разработки Borland Delphi 7. Основные объекты калькулятора будем создавать программным способом.

Итак, меняем свойства главного окна (в окошке слева Object Inspector) Form1, в соответствии со следующей таблицей (остальные поля не трогаем):

Свойства Form1 Значение
Caption Калькулятор
AutoScroll false
BorderIcons [biSystemMenu, biMinimize]
BorderStyle bsSingle
Position poScreenCenter
Height 292
Width 286

Добавим на форму объект MainMenu (вверху или справа на панеле).

Кликнем на него два раза мышкой и заполним следующим образом:

Чтобы подчеркнуть букву в названии определенного пункта меню, необходимо перед ней поставить знак &. (Например, "&Справка").

Далее переходим на создание объектов при помощи программного кода (жмем F12).

Попробуем сначала добавить текстовое поле, где будут выводиться все цифры и вычисления калькулятора (все, что записано ниже после слова "Например" — пишем в Delphi).

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

1. В uses пропишем модуль объектов.

Например: StdCtrls

2. Перед строкой implementation и после ключевого слова var создадим новую переменную, а в качестве типа переменной укажем класс объекта (класс объекта всегда начинается с буквы "Т" — вероятно, произошло от названия программы Turbo Pascal).

Например:

Edit: TMemo;
Button: array[0..22] of TButton;

3. В событии (например, при создании формы) сначала создаем новый объект (Edit:=TMemo.Create(form1);), затем отображаем его на Form1 (Edit.Parent:=form1;). А дальше, как и для обычного объекта, указываем его свойства (координаты, размеры и т.п.).

Например:

procedure TForm1.FormCreate (Sender: TObject);
begin
Edit := TMemo.Create( form1 );
Edit.Parent := form1;
Edit.Text := ‘0’;
Edit.W > Edit.Height := 21;
Edit.Left := 10;
Edit.Top := 20;
Edit.Alignment := taRightJustify;
end;

Свойство Alignment выравнивает текст в крайнее правое положение.

Таким же образом создадим на форме кнопки. Но создавать их не будем по-отдельности. Создадим массив кнопок, который и выведем в определенном порядке на форму. У нас будет несколько групп кнопок (для ввода цифр и для вычислений). Так как у нас используется массив, соответственно каждый объект необходимо смещать таким образом, чтобы не получилось так, что один объект лежит на другом. Так не должно быть! Поэтому обязательно используйте свойства Top и Left для расположения объекта на форме Form1 в определенных координатах. Чтобы проще было программировать, мы создали массив кнопок от 0 до 9 с соответствующими им кнопками.

Должно получиться что-то вроде этого:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;
Edit: TMemo;
Button: array[0..22] of TButton;

procedure TForm1.FormCreate (Sender: TObject);
var i, left, width, top: integer;
begin
left:=10;
w > // Создаем объект поля ввода
Edit := TMemo.Create( form1 );
Edit.Parent := form1;
Edit.Text := ‘0’;
Edit.W > Edit.Height := 21;
Edit.Left := left;
Edit.Top := 20;
Edit.Alignment := taRightJustify;
// Создаем объекты кнопок для стандартного калькулятора
for i:=0 to 22 do
begin
Button[i] := TButton.Create( form1 );
Button[i].Parent := form1;
case i of
10..12:
begin
if i=10 then
left := 10;
Button[i].Left := left;
Button[i].Top := 51;
Button[i].W > left := left+83;
end;
1..9:
begin
if i=1 then
begin
left := 10;
top := 176;
end;
left := left + width + 10;
if i mod 3 =1 then
begin
left := 10;
top := top — 30;
end;
Button[i].W > Button[i].Left := left;
Button[i].Top := top;
Button[i].Caption := inttostr(i);
end;
13..20:
begin
if i=13 then
begin
left := button[9].Left + button[9].Width + 10;
top := 206;
w > end;
left := left + width + 10;
if i mod 2 =1 then
begin
left := button[9].Left + button[9].Width + 10;
top := top — 30;
end;
Button[i].W > Button[i].Left := left;
Button[i].Top := top;
end;
0:
begin
Button[0].W > Button[0].Left := 10;
Button[0].Top := 176;
Button[i].Caption := inttostr(i);
end;
21,22:
begin
left := left + width + 10;
if i mod 2 =1 then
left := button[0].Left + button[9].Width + 10;
Button[i].W > Button[i].Left := left;
Button[i].Top := button[13].Top;
end;
end;
end;
// Даем названия каждой кнопке
button[10].Caption := ‘Backspace’;
button[11].Caption := ‘CE’;
button[12].Caption := ‘C’;
button[13].Caption := ‘+’;
button[14].Caption := ‘=’;
button[15].Caption := ‘-‘;
button[16].Caption := ‘1/x’;
button[17].Caption := ‘*’;
button[18].Caption := ‘%’;
button[19].Caption := ‘/’;
button[20].Caption := ‘sqrt’;
button[21].Caption := ‘+/-‘;
button[22].Caption := ‘,’;
end;

Затем, по-желанию, добавим на форму объект StatusBar (с вкладки Win32). В свойстве Panels откроем новое окно, создадим новую панель и назовем ее "Copyright @ 2013 FORTRAN NEW Company" (можно назвать по-своему).

Цель проекта: разработать программу «Стандартный калькулятор», практическое знакомство со способами создания программ на Delphi, изучение тем «Ветвление» и «Циклы» в процессе написания программы.

Количество часов на выполнение проекта: 5

Введение.

  1. При изучении темы «Алгоритмизация и программирование» я использую систему программирования Delphi, так как считаю, что язык программирования Паскаль наиболее пригоден для использования в учебном процессе. Использование визуальной объектно-ориентированной системы позволяет знакомить учащихся с современными методами создания программ и создает положительную мотивацию в изучении информатики, так как учащиеся создают реально работающие и полезные программы, например калькуляторы, музыкальные и видео — проигрыватели и др.
  2. Проектная форма организации работы позволяет увлечь учащихся индивидуальной и коллективной работой над проектами. В проектной деятельности важно самовыражение автора, его личное творчество. Так же при использовании проектов активизируется поисковая активность учащихся и реализуется потребность в свободе: перемещение по классу; возможность выбора темпа изучения, уровня сложности материала, самого способа решения.
  3. В ходе выполнения проекта используется проблемный подход: по мере появления вопросов у учащихся «Как реализовать данную функцию?» изучаются соответствующие темы. При работе над проектом «Стандартный калькулятор» рассматриваются следующие темы: «Ветвление», «Множественный выбор», «Циклы»
  4. Данный проект предлагается учащимся после изучения тем «Основы объектно-ориентированного программирования», «Основы визуального проектирования и программирования в среде Delphi», «Описание констант и переменных», «Арифметические операции и функции»

1 урок «Разработка интерфейса программы»

Задание. Разработать интерфейс программы «Стандартный калькулятор»

MainMenu – создание меню программы
Label – надпись
Edit – поле для ввода и вывода
BitBtn – кнопка (настраивается цвет надписи на кнопке в отличие от Button)
Image – вставка изображения

Разработка интерфейса.

1. Создать форму.

Свойства формы.
Name: kalkul
Caption: Калькулятор
Color: цвет по желанию
BorderIcons: biMaximize – False, остальное True.

2. Разместить на форме объект Edit. Свойства: Name : Edit1, Text – пустая строка.

3. Разместить на форме соответствующее число кнопок.

– цифры от 0 до 9,
– знаки арифметических операций,
– знак «=»
– знаки функций (корень, синус, косинус и т.д.)


Объект – кнопка BitBtn.

Свойства:
Name – можно оставить по умолчанию
Caption – соответствующее выполняемой функции название
Font – шрифт и цвет шрифта по желанию

4. Поместить на форму изображение (если нужно), настроить цвет формы, шрифт, сделать соответствующие надписи на форме (если нужно).

Примерный вид интерфейса программы

Домашнее задание. Повторить темы: «Описание констант и переменных», «Арифметические операции и функции» по конспекту учащегося. См. Приложение 1 и Приложение 2.

2 урок «Написание процедур выполнения арифметических операций»

I. Написать процедуры ввода чисел. Для этого щелкнуть два раза по кнопке «1» (объект BitBtn1) и ввести следующий код:

Аналогично написать процедуры ввода остальных цифр и символа «,»

II. Создать процедуру очистки поля Edit1, кнопка «С» (объект BitBtn22)

III. Создать процедуры обработки нажатий кнопок «+», «», «/», «*» и «=». Для этого необходимо сначала разобрать с учащимися алгоритм работы с калькулятором:

  1. Ввести число в поле Edit1. При этом в поле Edit1 число будет представлено как текстовая строка.
  2. Нажать кнопку «+». В процедуре обработки этой кнопки необходимо выполнить следующие действия:
    • преобразовать эту строку в число с помощью функции StrToFloat;
    • сохранить это число в переменной X;
    • сохранить в переменной, например, kod код этой операции;
    • очистить поле Edit1.
    • Ввести второе число в поле Edit1.
    • Нажать кнопку «=».В процедуре обработки этой кнопки необходимо выполнить следующие действия:
      • преобразовать эту строку в число с помощью функции StrToFloat;
      • сохранить это число в переменной Y;
      • в зависимости от кода операции, сохраненной в переменной kod, выполнить арифметическую операцию, например, z:=x+y;
      • преобразовать число, находящееся в переменной Z, в текст с помощью функции FloatToStr и вывести в поле Edit1.

      IV. Что необходимо для реализации этого алгоритма?

      1. Описать переменные X, Y, Z, kod. Описывать переменные будем в основной программе, модуле Unit, чтобы переменные могли действовать в любой процедуре (глобальные переменные).

      2. Создать процедуры обработки нажатий кнопок «+», «», «/», «*»

      procedure TForm1.BitBtn17Click(Sender: TObject);
      begin
      x:= strtofloat(edit1.text);
      kod := ‘+’;
      edit1.Clear;
      end;

      Но что будет, если мы в поле Edit1 ничего не введем и нажмем кнопку «+»? Возникнет ошибка и программа завершится. Чтобы избежать этого надо проверить имеется ли в поле Edit1символы? И в зависимости от этого условия продолжить выполнять процедуру или вернуться к вводу данных. Следовательно, мы должны использовать алгоритмическую структуру «Ветвление».

      Изучить с учащимися правила записи ветвления на языке Delphi.

      Изменненая процедура обработки нажатия кнопки «+»

      procedureTForm1.BitBtn17Click(Sender: TObject);
      begin
      ifedit1.Text<>» thenx:=strtofloat(edit1.text);
      kod := ‘+’;
      edit1.Clear;
      end;

      Аналогично создатьпроцедуры обработки нажатий кнопок «», «/», «*»

      3. Создать процедуру обработки нажатия кнопки «=». В этой процедуре необходимо в зависимости от значения переменной kod выполнять четыре разных операции. Такая структура называется «Множественное ветвление» или «Выбор».

      Изучить с учащимися правила записи структуры «Выбор» на языке Delphi.

      procedure TForm1.BitBtn19Click(Sender: TObject); кнопка «=»
      begin
      if edit1.Text<>» then y:=strtofloat(edit1.text); впеременную y кладем edit1.text
      case kod of
      ‘+’: z:=x+y;
      ‘-‘: z:=x-y
      ‘*’: z:=x*y;
      ‘/’: z:=x/y
      end ;
      edit1.Text:=floattostr(z) вывод в поле Edit1 значение переменной z
      end;

      3 урок «Написание процедур вычисления основных функций»

      I. Создать процедуры вычисления функции «X в степени Y». Для этого необходимо:

      1. Изучить тему «Циклы на языке Delphi».

      2. Создать процедуру обработки нажатия кнопки «X в степени Y».

      procedure TForm1.BitBtn24Click(Sender: TObject);
      begin
      x:= strtofloat(edit1.text);
      kod := ‘^’;
      edit1.Clear;
      end;

      3. Добавить в процедуру нажатия кнопки «=» следующий код

      II. Создать процедуры вычисления остальных функций. При вычислении тригонометрических функций учесть, что компьютер работает с радианной мерой углов.
      Например, процедура вычисления квадратного корня

      Процедура вычисления функции sin

      4–5 урок. «Написание процедур работы с меню и усовершенствование калькулятора»

      У любой программы имеется система меню, которая позволяет выполнять разные сервисные функции. Создадим для нашего калькулятора меню, которое будет состоять, например, из следующий пунктов: «Файл», «Правка», «Справка». Для этого: поместить на форму объект MainMenu (в любое место формы, этот объект будет невидим при выполнении)

      • Два раза щелкнуть левой кнопкой мыши по этому объекту на форме.
      • Выделить в появившейся форме пунктирное поле и в инспекторе объектов в свойство Caption ввести «Файл».
      • Аналогично создать пункты меню «Правка» и «О программе».
      • В меню «Файл» создать пункт «Выход», а в «Правка» — пункты «Копировать» и «Вставить».
      • Закрыть форму создания меню.

      procedure TForm1.N2Click(Sender: TObject);
      begin
      close
      end; procedure TForm1.N4Click(Sender: TObject);
      begin
      Edit1.CopyToClipboard; / копироватьвбуферобмена/
      end;

      procedure TForm1.N5Click(Sender: TObject);
      begin
      Edit1.PasteFromClipboard; /вставить из буфера обмена/
      end;

      Создание меню

      Для создания справки создадим еще одну форму с именем Form2, на которой можно разместить справочные сведения и информацию об авторах программы. Для размещения текста можно воспользоваться объектом Memo, который представляет из себя почти готовый текстовый редактор, и объектом Image для размещения графики и фотографий. Для открытия формы воспользуемся командой Form2.ShowModal.

      Процедура открытия формы «Справка»

      procedure TForm1.N8Click(Sender: TObject);
      begin
      Form2.ShowModal Открытие формы «Справка»
      end;

      Усовершенствование калькулятора

      В зависимости от желания и уровня подготовки, каждый учащийся может по-своему модернизировать программу. Кто-то пожелает просто улучшить интерфейс программы, а другой захочет превратить свой простой калькулятор в инженерный, добавив разнообразные математические функции, логические операции и функции, работу с 2-ми, 8-ми и 16-ми числами. В Приложении 3 приведен пример одного калькулятора.

      Заключение. На уроках информатики проектная форма организации работы позволяет раскрыть творческий потенциал учащихся, активизирует исследовательскую работу и позволяет выбрать индивидуальный темп и сложность выполнения работы.
      Кроме проекта «Стандартный калькулятор» я использую и другие работы, например «Вычисление площади фигуры методом Монте-Карло» (см. Приложение 4), «Нахождение корней уравнения методом половинного деления (см. Приложение 5), «Расчет электрических цепей (см. Приложение 6) и другие.

      var
      Form1: TForm1;
      a,b,c:real;
      mode:integer;

      procedure TForm1.ResetClick(Sender: TObject);
      begin
      Edit1.Text:=’0′;
      end;

      procedure TForm1.ExitClick(Sender: TObject);
      begin
      Form1.Close;
      end;

      procedure TForm1.SpeedButton9Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’9′
      else
      Edit1.Text:=’9′;
      end;

      procedure TForm1.SpeedButton8Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’8′
      else
      Edit1.Text:=’8′
      end;

      procedure TForm1.SpeedButton7Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’7′
      else
      Edit1.Text:=’7′
      end;

      procedure TForm1.SpeedButton6Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’6′
      else
      Edit1.Text:=’6′
      end;

      procedure TForm1.SpeedButton5Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’5′
      else
      Edit1.Text:=’5′
      end;

      procedure TForm1.SpeedButton4Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’4′
      else
      Edit1.Text:=’4′
      end;

      procedure TForm1.SpeedButton3Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’3′
      else
      Edit1.Text:=’3′
      end;

      procedure TForm1.SpeedButton2Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’2′
      else
      Edit1.Text:=’2′

      procedure TForm1.SpeedButton1Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’1′
      else
      Edit1.Text:=’1′
      end;

      procedure TForm1.SpeedButton0Click(Sender: TObject);
      begin
      if Edit1.Text<>’0′ then
      Edit1.Text:=Edit1.Text+’0′
      end;

      procedure TForm1.SumClick(Sender: TObject);
      begin
      a:=StrToFloat(Edit1.Text);
      mode:=1;
      Edit1.Text:=Edit1.Text+’+’;
      end;

      procedure TForm1.SubClick(Sender: TObject);
      begin
      a:=StrToFloat(Edit1.Text);
      mode:=2;
      Edit1.Text:=»;
      end;

      procedure TForm1.MultClick(Sender: TObject);
      begin
      a:=StrToFloat(Edit1.Text);
      mode:=3;
      Edit1.Text:=»;
      end;

      procedure TForm1.DivideClick(Sender: TObject);
      begin
      a:=StrToFloat(Edit1.Text);
      mode:=4;
      Edit1.Text:=»;
      end;

      procedure TForm1.EqualsClick(Sender: TObject);
      begin
      if mode=1 then
      begin
      b:=StrToFloat(Edit1.Text);
      c:=a+b;
      Edit1.Text:=FloatToStr(c);
      end;

      if mode=2 then
      begin
      b:=StrToFloat(Edit1.Text);
      c:=a-b;
      Edit1.Text:=FloatToStr(c);
      end;

      if mode=3 then
      begin
      b:=StrToFloat(Edit1.Text);
      c:=a*b;
      Edit1.Text:=FloatToStr(c);
      end;

      if mode=4 then
      begin
      b:=StrToFloat(Edit1.Text);
      c:=a/b;
      Edit1.Text:=FloatToStr(c);
      end;

      Читайте также:  Gigabyte geforce gtx 650 2gb gddr5

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *