Простой калькулятор
Основные данные о работе
| Версия шаблона | 2.1 |
| Филиал | Искитимский |
| Вид работы | Курсовая работа |
| Название дисциплины | Программирование на языке высокого уровня |
| Тема | Простой калькулятор |
| Фамилия студента | Несяев |
| Имя студента | Владимир |
| Отчество студента | Викторович |
| № контракта | 06014100609001 |
Содержание
Введение
Для написания курсовой была выбрана тема «простой калькулятор», выбор обусловлен возможностью реализовать программу различными способами, используя язык программирования Delphi. В данной работе будет описан один из способов создания калькулятора с функциями сложения, вычитания, умножения и деления
Актуальность данной темы
Одним из лучших языком для изучения и освоения программирования для Windows является Паскаль, а одной из лучших в мире системой программирования для MS-DOS - Turbo Pascal. Delphi продолжила серию Паскаль-ориентированных средств программирования и является наиболее удобным инструментом для программирования под Windows.1
Для
написания программы
Для математических вычислений существует множество различных программных продуктов. Это известные всем пакеты MathCAD, Math Lab, Mathematical, Axum.2 Есть и более простые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа (Calc.exe), по аналогии с ней было сделано данное задание.
Основная часть
- Разработка эскизного и технического проектов программы
- Задание
Разработка приложения для Windows, реализующая простой калькулятор.
Условия задачи:
Программа «Калькулятор» была разработана как один из вариантов программы для выполнения стандартных арифметических операций (сложение, вычетание, умножение, деление) , а так же для того чтобы более углубленно освоить возможности по созданию Windows-приложений, среды программирования Delphi 7.
- Назначение и область применения
Программа Калькулятор предназначена для выполнения простых математических вычислений с данными, вводимыми с клавиатуры. Она полностью эмулирует функции обычного электронного микрокалькулятора.
. Область применения: Пользователи ПК. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управле-нием ОС Windows.
- Технические характеристики
- Постановка задачи
Задача курсовой работы состоит в разработке программы калькулятор в интегрированной среде Delphi. Программа должна выдавать ответ при задании стандартных арифметических операций (сложение, вычитание, умножение, деление). Необходимо разработать удобный пользовательский интерфейс для работы с программой.
Программа представляет собой окно (рисунок 1) с расположенными на нем кнопками для ввода данных (цифры), кнопки с арифметическими операциями (сложение, вычитание, умножение, деление) и дисплей для отображения результатов.
Рисунок 1-окно программы «калькулятор»
При нажатии на кнопку с цифрой программа начинает функционировать и на дисплее отображаются все ваши действия.
У программы так же есть мню с двумя пунктами: «Файл» и «Справка» это так же видно на рисунке 1. В меню «файл» находится закладка «закрыть», а в «справке» находятся краткие сведения о программе и разработчике.
Список использованных переменных
В программе Calculator были использованы стандартные элементы Delphi 7. В программе использованы элементы закладок Standard (TButton, TEdit, TMainMenu, TLabel) В главной форме-Form1, которая является самим калькулятором (рисунок 2) и в меню «о программе»-Form2 (рисунок 3)
Рисунок 2-форма Form1 Рисунок 3-форма Form2
Первые 11 элементов TButton (названия от _0 до _9) осуществляют функцию ввода чисел. А 12й элемент с именем ‘Dot’, служит для отделения дробной части от целой. При нажатии на одну из этих кнопок число отображается на дисплее и заносится в переменную ‘back’ с типом string которая хранит в себе данные о введенных числах. Остальные элементы TButton являются функциональными клавишами, 1 кнопка вывода результата (‘=’). При нажатии на функциональную клавишу, арифметический знак так же отображается на дисплее и заносится в переменную ‘s’ типа string. После этого у нас есть все необходимые данные для вычисления результата действий (события OnClick для кнопки со значением “=”). Результат вычисления заносится в переменную rez типа real и выводится на дисплей.
Элемент TMainmenu используются для реализации меню программы с пунктами: Файл, Справка(на Form1), Закрыть(на Form2)
Выход О программе
Элемент TLabel применен для отображения текста информации о программе в одноименном меню.
- Описание алгоритма
- Ввод данных
- Обработка полученного символа
- Произведение соответствующих вычислений
- Вывод результата на дисплей
Обобщенная схема алгоритма приведена в ПРИЛОЖЕНИИ 1
- Организация входных и выходных данных
Входные данные. Любые числа представленные в виде вещественного типа данных, положительные и отрицательные. Для ввода входных данных используются поля редактирования, поддерживающие стандартные операции редактирования: ввод текста, копирование, вставку и удаление.3
Выходные данные. Числа вещественного типа данных.
- Выбор состава технических и программных средств
Среда Delphi позволяет достаточно быстро разрабатывать приложе-ния для Windows.
Технические характеристики компьютера:
Pentium II и выше
Объем оперативной памяти не менее 64 Мб;
Необходимое пространство на жестком диске 600 Мб.
Дополнительных средств (принтер, сканер, дополнительные дисководы и т.д.) не требуется.
- Разработка рабочего проекта
- Разработка программы
Для разработки приложения программы “Калькулятор” используется среда визуального программирования Delphi. Проект программы содержит два окна:
1. Form1 – калькулятор.
2. Form2 – Справка
Окно Form1 – калькулятор изображён на Рисунке 4
Рисунок 4- Окно
Form1
1Компонент Form1
Свойства:
Сaption – Калькулятор
Border – bsSingle;
BiSystemMenu – false;
BiMinimaze – false;
BiHelp – False;
События: нет
2-компонент button_0
Свойства:
Сaption – 0
Сursor – crHandPoin
Height – 25
Left – 72
Taborder – 6
Top – 136
Width – 35
3-компонент button_00
Свойства:
Сaption – 00
Сursor – crHandPoin
Height – 25
Left – 40
Taborder – 8
Top – 136
Width – 35
4-компонент button_1
Свойства:
Сaption – 1
Сursor – crHandPoin
Height – 25
Left – 8
Taborder – 0
Top – 40
Width – 35
5-компонент button_2
Свойства:
Сaption – 2
Сursor – crHandPoin
Height – 25
Left – 40
Taborder – 1
Top – 40
Width – 25
6-компонент button_3
Свойства:
Сaption – 3
Сursor – crHandPoin
Height – 25
Left – 72
Taborder – 2
Top – 40
Width – 25
7-компонент button_4
Свойства:
Сaption – 4
Сursor – crHandPoin
Height – 25
Left –
Taborder – 3
Top – 72
Width – 25
8-компонент button_5
Свойства:
Сaption – 5
Сursor – crHandPoin
Height – 25
Left – 40
Taborder – 4
Top – 72
Width – 25
9-компонент button_6
Свойства:
Сaption – 6
Сursor – crHandPoin
Height – 25
Left – 72
Taborder – 2
Top – 40
Width – 25
10-компонент button_7
Свойства:
Сaption – 7
Сursor – crHandPoin
Height – 25
Left – 8
Taborder – 5
Top – 104
Width – 25
11-компонент button_8
Свойства:
Сaption – 8
Сursor – crHandPoin
Height – 25
Left – 40
Taborder – 16
Top – 104
Width – 25
12-компонент button_9
Свойства:
Сaption – 9
Сursor – crHandPoin
Height – 25
Left – 72
Taborder – 15
Top – 104
Width – 25
13-компонент button1
Свойства:
Сaption – «+»
Сursor – crHandPoin
Height – 25
Left – 120
Taborder – 10
Top – 40
Width – 33
14-компонент button2
Свойства:
Сaption – «-»
Сursor – crHandPoin
Height – 25
Left – 120
Taborder – 11
Top – 72
Width – 33
15-компонент button3
Свойства:
Сaption – «*»
Сursor – crHandPoin
Height – 25
Left – 120
Taborder – 12
Top – 104
Width –
33
16-компонент button4
Свойства:
Сaption – «/»
Сursor – crHandPoin
Height – 25
Left – 120
Taborder – 13
Top – 136
Width – 33
17 - компонент button5
Свойства:
Сaption – «=»
Сursor – crHandPoin
Height – 57
Left – 192
Taborder – 14
Top – 72
Width – 89
18 - компонент Dot
Свойства:
Сaption – «,»
Сursor – crHandPoin
Height – 25
Left – 120
Taborder – 13
Top – 136
Width 33
19 – компонент TМainMenu
Свойства:
Items
Файл (N1) Справка (N3) Выход (N2) о прграмме (N4)
Для N1 – событие BitBtn1Click (приводится ниже).
N2Click –
закончить работу с
Для (N3)
N4Click – перейти к работе со второй формой.
20 – компонент Tedit PoleСвойства:
Сursor – crHandPoin
Height – 21
Left – 8
Taborder – 9
Top – 8
Width – 289
- Спецификация программы
Исполняемый файл программы «калькулятор» имеет название Calculator.exe и расположен в архиве Калькулятор.rar в каталоге Калькулятор\программа калькулятор. Состав проекта:
| Наименование | Обозначение | Примечание |
| Calculator.Dof | Файл параметров проекта | Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы |
| Calculatort.Dpr | Файл проекта | Связывает все файлы, из которых состоит приложение |
| Calculatort.Dsk | Файл, содержащий Desktop – настройки проекта | Содержит информацию о том, какие окна открыты и в каких позициях они расположены |
| Calculator.Res | Файл ресурсов | Содержит пиктограммы, графические изображения |
| Unit1.Pas | Файл программного модуля для формы № 1 | Определяет функциональность формы № 1 |
| Unit2.Pas | Файл программного модуля для формы № 2 | Определяет функциональность формы № 2 |
| Unit1.Dfm | Файл формы № 1 | Содержит список свойств всех компонентов, включенных в форму № 1 |
| Unit2.Dfm | Файл формы № 2 | Содержит список свойств всех компонентов, включенных в форму № 2 |
| Unit1.Dcu | Объектный файл для Unit1.Pas | Откомпилированная версия Unit1.Pas |
| calculator.ico | Иконка в верхний левый угол | Откомпилированная версия Unit3.Pas4 |
- Текст программы
Полный листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Menus;
type
TForm1 = class(TForm)
_1: TButton;
_2: TButton;
_3: TButton;
_4: TButton;
_5: TButton;
_6: TButton;
_7: TButton;
_8: TButton;
_9: TButton;
_0: TButton;
_00: TButton;
Dot: TButton;
Pole: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Button5: TButton;
procedure _1Click(Sender: TObject);
procedure _2Click(Sender: TObject);
procedure _3Click(Sender: TObject);
procedure _4Click(Sender: TObject);
procedure _5Click(Sender: TObject);
procedure _6Click(Sender: TObject);
procedure _7Click(Sender: TObject);
procedure _8Click(Sender: TObject);
procedure _9Click(Sender: TObject);
procedure DotClick(Sender: TObject);
procedure _00Click(Sender: TObject);
procedure _0Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure PoleChange(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
Math, Unit2;
var
rez: real;
procedure TForm1._1Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'1';
end;
procedure TForm1._2Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'2';
end;
procedure TForm1._3Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'3';
end;
procedure TForm1._4Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'4';
end;
procedure TForm1._5Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'5';
end;
procedure TForm1._6Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'6';
end;
procedure TForm1._7Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'7';
end;
procedure TForm1._8Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'8';
end;
procedure TForm1._9Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'9';
end;
procedure TForm1.DotClick(Sender: TObject);
begin
Pole.Text:= Pole.Text+',';
end;
procedure TForm1._00Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'00';
end;
procedure TForm1._0Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'0';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'+';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'-';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'*';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Pole.Text:= Pole.Text+'/';
end;
procedure TForm1.Button5Click(Sender: TObject);
var
s: string;
i: word;
First: boolean;
begin
s:=Pole.Text;
rez:=0;
while (s[1]='+')or(s[1]='*')or(s[1]=
delete(s,1,1);
First:=true;
for i:=1 to length(s) do
if s[i]=' ' then delete(s,i,1)
else if s[i]='.' then
begin
delete(s,i,1);
insert(',',s,i);
end;
for i:=1 to length(s) do
if (s[i]='+')or(s[i]='-')or(s[i]=
if (First=false) then delete(s,i,length(s)-i+1)
else First:=false;
Pole.Text:='';
i:=1;
while (s[i]<>'+')and(s[i]<>'-')and(
inc(i);
if i<length(s) then
begin
if s[i]='+' then rez:= StrToFloat(copy(s,1,i-1))+
if s[i]='-' then rez:= StrToFloat(copy(s,1,i-1))-
if s[i]='*' then rez:= StrToFloat(copy(s,1,i-1))*
if s[i]='/' then rez:= StrToFloat(copy(s,1,i-1))/
if s[i]='^' then rez:= power(StrToFloat(copy(s,1,i-1)
Pole.Text:=FloatToStr(rez);
end;