Разработка приложения "Калькулятор"
Анализ использования системы визуального объектно-ориентированного проектирования Delphi. Характеристика создания приложения "Калькулятор", обладающего всеми функциями инженерного калькулятора. Особенность выполнения основных арифметических действий.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.05.2020 |
Размер файла | 920,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Задание
В курсовой работе разработано приложение «Калькулятор», обладающей всеми функциями инженерного калькулятора и имеющую окно для вывода посчитанного выражения.
Программа была разработана в среде программирования Borland Delphi 7. Она выполняет основные арифметические действия, такие, как сложение и вычитание, а также функции инженерного калькулятора, например нахождение логарифмов и тригонометрических функций. В калькуляторе предусмотрена возможность работы с памятью и перевод целых чисел между двоичной, шестнадцатеричной, восьмеричной и десятичной систем счисления..
Содержание
Введение
1. Анализ технического задания
2. Разработка алгоритмов
3. Руководство программиста
4. Руководство пользователя
Заключение
Список использованных источников
Приложение
Введение
Delphi - это потомок среды программирования Turbo Pascal. Система визуального объектно-ориентированного проектирования Delphi позволяет:
1. Создавать законченные приложения для Windows самой различной направленности.
2. Быстро создавать профессионально выглядящий оконный интерфейс для любых приложений; интерфейс удовлетворяет всем требованиям Windows и автоматически настраивается на ту систему, которая установлена, поскольку использует функции, процедуры и библиотеки Windows.
3. Создавать свои динамически присоединяемые библиотеки компонентов, форм, функций, которые потом можно использовать из других языков программирования.
4. Создавать мощные системы работы с базами данных любых типов.
5. Формировать и печатать сложные отчеты, включающие таблицы, графики и т.п.
6. Создавать справочные системы, как для своих приложений, так и для любых других.
7. Создавать профессиональные программы установки для приложений Windows, учитывающие всю специфику и все требования операционной системы.
Delphi - быстро развивающаяся система. Первая версия Delphi была выпущена в феврале 1995 года, и до сих пор Delphi является очень актуальной и популярной средой программирования.
В данной курсовой работе требуется разработать инженерный калькулятор. Средства среды программирования Delphi позволяют это сделать легко и быстро.
1. Анализ технического задания
В курсовой работе поставлена задача разработать инженерный калькулятор.
В ходе выполнения курсовой работы были поставлены следующие
задачи. Разрабатываемый калькулятор должен обладать всеми функциями
инженерного калькулятора:
- считать факториал;
- извлекать корень;
- находить квадрат и высшие степени выражений;
- считать ln и log;
- вычислять тригонометрические выражения (sin, cos,tg);
- переводить числа из одной системы счисления в другую (десятичная,
двоичная, восьмеричная, шестнадцатеричная);
- работать с памятью.
В калькуляторе будут присутствовать следующие кнопки для работы с памятью:
MC - Momory Clear, очистка значения памяти;
MR - memory result, вывести значение памяти;
MS- memory send,поместить в память текущее значение;
М- -это вычитание текущего значения из значения хранящегося в памяти;
М+ - это прибавление текущего значения к значению находящемуся в памяти.
Для реализации поставленной задачи была выбрана среда программирования Delphi. Она имеет большое количество компонент, позволяющих создавать удобный графический интерфейс, имеет встроенную библиотеку математических функций.
2. Разработка алгоритмов
Разместим на форме следующие компоненты:
- компоненты TBitBtn, которые будут отвечать за ввод операндов и действий над ними;
- компонент TMemo, отображает результат производимых операций с числами;
- компонент TPanel, отображает наличие числа в памяти;
- компонент TRadioGroup используется для выбора системы счисления.
Каждой кнопке присвоим свой обработчик, отвечающий за определенные действия.
Глобальная переменная d - хранит вид произведенной операции над числами. В обработчике кнопки «=» проверяется её значение и выводится в Memo, результат арифметической операции над числами.
procedure TForm1.BitBtn16Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
z:=strtofloat(memo1.Text);
if d=1 then
y:=x+z;
if d=2 then
y:=x-z;
if d=3 then
y:=x*z;
if d=4 then
y:=x/z;
if d=5 then
begin
t:=strtoint(memo1.Text);
y:=1;
for i:=1 to t do
y:=y*x;
end;
memo1.Text:=floattostr(y);
end;
end;
Кнопка «n!», вычисляющая факториал, имеет следующий обработчик событий:
procedure TForm1.BitBtn28Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
t:=strtoint(memo1.Text);
y:=1;
for i:=1 to t do
y:=y*i;
memo1.Text:=floattostr(y);
end;
end;
По нажатию на кнопку «log» вычисляется логарифм по основанию 10 по следующей формуле:
procedure TForm1.BitBtn36Click(Sender: TObject);
begin
Memo1.Text:=FloatToStr(ln(StrToFloat(Memo1.Text)) / ln(10));
end;
Арифметические, тригонометрические операции можно производить только в десятичной системе счисления, поэтому, когда выбирается другая система счисления, становятся недоступны соответствующие кнопки (свойство кнопок Enabled устанавливается в значение False).
Для ввода чисел в шестнадцатеричной системе счисления становятся доступны кнопки ввода букв.
При переводе чисел в другую систему счисления используются следующие функции:
function DEC2BIN(DEC: LONGINT): string; // перевод из десятичной системы счисления в двоичную (см. рис.1).
function BIN2DEC(BIN: string): LONGINT; // перевод из двоичной системы счисления в десятичную (см.рис.2).
function DEC2HEX(DEC: LONGINT): string; //перевод из десятичной системы счисления в шестнадцатеричную (см. рис.3).
function HEX2DEC(HEX: string): LONGINT; //перевод из шестнадцатеричной системы счисления в десятичную (см.рис.4).
function DEC2OCT(DEC: LONGINT): string; //перевод из десятичной системы счисления в восьмеричную (см. рис.5).
function OCT2DEC(OCT: string): LONGINT; //перевод из восьмеричной системы счисления в десятичную (см. рис.6).
function BIN2HEX(BIN: string): string; // перевод двоичной системы счисления в шестнадцатеричную (см. рис.7).
Произведем последние настройки приложения для эргономичности интерфейса.
В главном меню Delphi 7 зайдем в Project/Options, в открывшемся окне настроек приложения выберем закладку Application, нажмем кнопку «LoadIcon» и загрузим файл, содержащий иконку нашего приложения.
В свойствах формы укажем AutoSize равным true, Position= poScreenCenter, BorderIcons/biMaximize=false.
3. Руководство программиста
Программа «Калькулятор» разработана в среде программирования Borland Delpi 7. Файл с программой называется PCalc.exe и весит 456 КБ.
Данная программа предназначена для выполнения тех же действий, что и обычный калькулятор. Она выполняет основные арифметические действия, такие, как сложение и вычитание, а также функции инженерного калькулятора, например нахождение логарифмов и тригонометрических функций. визуальный приложение калькулятор арифметический
В калькуляторе предусмотрена возможность работы с памятью и перевод целых чисел между двоичной, шестнадцатеричной, восьмеричной и десятичной систем счисления.
При переводе чисел в другую систему счисления используются следующие функции:
function DEC2BIN(DEC: LONGINT): string; // перевод из десятичной системы счисления в двоичную
function BIN2DEC(BIN: string): LONGINT; // перевод из двоичной системы счисления в десятичную
function DEC2HEX(DEC: LONGINT): string; //перевод из десятичной системы счисления в шестнадцатеричную
function HEX2DEC(HEX: string): LONGINT; //перевод из шестнадцатеричной системы счисления в десятичную
function DEC2OCT(DEC: LONGINT): string; //перевод из десятичной системы счисления в восьмеричную
function OCT2DEC(OCT: string): LONGINT; //перевод из восьмеричной системы счисления в десятичную
function BIN2HEX(BIN: string): string; // перевод двоичной системы счисления в шестнадцатеричную
function HEX2BIN(HEX: string): string; // перевод из шестнадцатеричной системы счисления в двоичную
function DEC2BIN(DEC: LONGINT): string;
В данных функциях используются следующие функции:
shl - сдвигает значение целого числа влево на указанное число бит;
shr - сдвигает значение целого числа вправо на указанное число бит;
length - длина строки;
upCase - приведение к верхнему регистру;
оrd - возвращает целое значение для любого порядкового типа, используется, чтобы преобразовать символы или перечисления в их числовые эквиваленты.
При вводе некорректной информации программа сообщает об ошибке (см.приложение.2 рис 1).
Запустим файл PCalc.exe, откроется окно (см.приложение.2 рис 2).
Произведем вычисления.
При попытке осуществить перевод в систему счисления дробного числа выдается ошибка (см.приложение.2 рис. 3).
4. Руководство пользователя
Запустите на выполнение файл PCalc.exe. После запуска программы на форме появится калькулятор, готовый к использованию (см.приложение.2 рис. 4).
Чтобы выполнить простое вычисление необходимо выполнить ряд действий:
- Введите первое число.
- Нажмите кнопку + (сложение), - (вычитание), * (умножение) или / (деление).
- Введите следующее число.
- Введите остальные операторы и числа.
- Нажмите кнопку =.
В окне окажется результат вычислений.
При работе с памятью используются следующие кнопки:
MC - Momory Clear, очистка значения памяти;
MR - memory result, вывести значение памяти;
MS- memory send,поместить в память текущее значение;
М- -это вычитание текущего значения из значения хранящегося в
памяти;
М+ - это прибавление текущего значения к значению находящемуся в
памяти.
Системные требования:
Процессор: Pentium III 800 МГц и выше.
ОЗУ: 128 Мбайт и выше.
Видеокарта: 64 МГц и выше.
HDD: 2 Мбайт свободного места.
Операционная система: Windows 98/2000/XP/Vista /7.
Заключение
В курсовой работе была поставлена задача создать приложение «Калькулятор», обладающую всеми функциями инженерного калькулятора и имеющую окно для вывода посчитанного выражения.
Программа была разработана в среде программирования Borland Delphi 7. Она выполняет основные арифметические действия, такие, как сложение и вычитание, а также функции инженерного калькулятора, например нахождение логарифмов и тригонометрических функций. В калькуляторе предусмотрена возможность работы с памятью и перевод целых чисел между двоичной, шестнадцатеричной, восьмеричной и десятичной систем счисления..
В результате работы была получена работоспособная программа, которая соответствует требованиям, предъявленным на этапе проектирования.
Цель курсовой работы достигнута: создано приложение «Калькулятор».
Список использованных источников
1.Истомин, Е.П. Программирование на алгоритмических языках высокого уровня: учеб. / Е.П. Истомин, С.Ю. Неклюдов. - СПб.: Издательство Михайлова В.А., 2003. - 719 с.
2. Фридман А.А. Основы объектно-ориентированной разработки программных систем. М: ФиС, 2000. - 464 с.
3. Фаронов, В.В. Delphi. Программирование на языке высокого уровня: учеб. для вузов. - СПб.: Питер, 2005. - 640 с.
4. Архангельский, А.Я. Программирование в Delphi 6. - М.: Бином, 2004. -1124 с.
5. Бобровский, С.И. Delphi 7.Учебный курс.- СПб.:Питер, 2002. - 736 с.
6. Культин, Н.Б. Delphi в задачах и примерах. - СПб.: БХВ-Петербург, 2002. - 288 с.
Приложение
Листинг программы
Файл UCalc.pas:
unit UCalc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
BitBtn10: TBitBtn;
BitBtn11: TBitBtn;
BitBtn12: TBitBtn;
BitBtn13: TBitBtn;
BitBtn14: TBitBtn;
BitBtn15: TBitBtn;
BitBtn16: TBitBtn;
BitBtn17: TBitBtn;
BitBtn18: TBitBtn;
BitBtn19: TBitBtn;
BitBtn20: TBitBtn;
BitBtn21: TBitBtn;
BitBtn22: TBitBtn;
BitBtn23: TBitBtn;
BitBtn24: TBitBtn;
BitBtn25: TBitBtn;
BitBtn26: TBitBtn;
BitBtn27: TBitBtn;
BitBtn28: TBitBtn;
BitBtn29: TBitBtn;
BitBtn30: TBitBtn;
BitBtn31: TBitBtn;
BitBtn32: TBitBtn;
BitBtn33: TBitBtn;
BitBtn34: TBitBtn;
Panel1: TPanel;
RadioGroup1: TRadioGroup;
GroupBox1: TGroupBox;
BitBtnA: TBitBtn;
BitBtnB: TBitBtn;
BitBtnC: TBitBtn;
BitBtnD: TBitBtn;
BitBtnE: TBitBtn;
BitBtnF: TBitBtn;
BitBtn35: TBitBtn;
BitBtn36: TBitBtn;
procedure BitBtn11Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn9Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
procedure BitBtn12Click(Sender: TObject);
procedure BitBtn17Click(Sender: TObject);
procedure BitBtn15Click(Sender: TObject);
procedure BitBtn14Click(Sender: TObject);
procedure BitBtn13Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn16Click(Sender: TObject);
procedure BitBtn33Click(Sender: TObject);
procedure BitBtn34Click(Sender: TObject);
procedure BitBtn19Click(Sender: TObject);
procedure BitBtn22Click(Sender: TObject);
procedure BitBtn20Click(Sender: TObject);
procedure BitBtn21Click(Sender: TObject);
procedure BitBtn18Click(Sender: TObject);
procedure BitBtn27Click(Sender: TObject);
procedure BitBtn26Click(Sender: TObject);
procedure BitBtn25Click(Sender: TObject);
procedure BitBtn24Click(Sender: TObject);
procedure BitBtn23Click(Sender: TObject);
procedure BitBtn32Click(Sender: TObject);
procedure BitBtn31Click(Sender: TObject);
procedure BitBtn30Click(Sender: TObject);
procedure BitBtn29Click(Sender: TObject);
procedure BitBtn28Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure BitBtnAClick(Sender: TObject);
procedure BitBtnBClick(Sender: TObject);
procedure BitBtnCClick(Sender: TObject);
procedure BitBtnDClick(Sender: TObject);
procedure BitBtnEClick(Sender: TObject);
procedure BitBtnFClick(Sender: TObject);
procedure BitBtn35Click(Sender: TObject);
procedure BitBtn36Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y,z,MS,Mp,Mm:real;
p,k,l,d,i,j,t,ss:integer;
implementation
{$R *.dfm}
function DEC2BIN(DEC: LONGINT): string;
var
BIN: string;
I, J: LONGINT;
begin
if DEC = 0 then
BIN := '0'
else
begin
BIN := '';
I := 0;
while (1 shl (I + 1)) <= DEC do
I := I + 1;
for J := 0 to I do
begin
if (DEC shr (I - J)) = 1 then
BIN := BIN + '1'
else
BIN := BIN + '0';
DEC := DEC and ((1 shl (I - J)) - 1);
end;
end;
DEC2BIN := BIN;
end;
function BIN2DEC(BIN: string): LONGINT;
var
J: LONGINT;
Error: BOOLEAN;
DEC: LONGINT;
begin
DEC := 0;
Error := False;
for J := 1 to Length(BIN) do
begin
if (BIN[J] <> '0') and (BIN[J] <> '1') then
Error := True;
if BIN[J] = '1' then
DEC := DEC + (1 shl (Length(BIN) - J));
end;
if Error then
BIN2DEC := 0
else
BIN2DEC := DEC;
end;
function DEC2HEX(DEC: LONGINT): string;
const
HEXDigts: string[16] = '0123456789ABCDEF';
var
HEX: string;
I, J: LONGINT;
begin
if DEC = 0 then
HEX := '0'
else
begin
HEX := '';
I := 0;
while (1 shl ((I + 1) * 4)) <= DEC do
I := I + 1;
for J := 0 to I do
begin
HEX := HEX + HEXDigts[(DEC shr ((I - J) * 4)) + 1];
DEC := DEC and ((1 shl ((I - J) * 4)) - 1);
end;
end;
DEC2HEX := HEX;
end;
function HEX2DEC(HEX: string): LONGINT;
function Digt(Ch: CHAR): BYTE;
const
HEXDigts: string[16] = '0123456789ABCDEF';
var
I: BYTE;
N: BYTE;
begin
N := 0;
for I := 1 to Length(HEXDigts) do
if Ch = HEXDigts[I] then
N := I - 1;
Digt := N;
end;
const
HEXSet: set of CHAR = ['0'..'9', 'A'..'F'];
var
J: LONGINT;
Error: BOOLEAN;
DEC: LONGINT;
begin
DEC := 0;
Error := False;
for J := 1 to Length(HEX) do
begin
if not (UpCase(HEX[J]) in HEXSet) then
Error := True;
DEC := DEC + Digt(UpCase(HEX[J])) shl ((Length(HEX) - J) * 4);
end;
if Error then
HEX2DEC := 0
else
HEX2DEC := DEC;
end;
function DEC2OCT(DEC: LONGINT): string;
const
OCTDigts: string[8] = '01234567';
var
OCT: string;
I, J: LONGINT;
begin
if DEC = 0 then
OCT := '0'
else
begin
OCT := '';
I := 0;
while (1 shl ((I + 1) * 3)) <= DEC do
I := I + 1;
for J := 0 to I do
begin
OCT := OCT + OCTDigts[(DEC shr ((I - J) * 3)) + 1];
DEC := DEC and ((1 shl ((I - J) * 3)) - 1);
end;
end;
DEC2OCT := OCT;
end;
function OCT2DEC(OCT: string): LONGINT;
const
OCTSet: set of CHAR = ['0'..'7'];
var
J: LONGINT;
Error: BOOLEAN;
DEC: LONGINT;
begin
DEC := 0;
Error := False;
for J := 1 to Length(OCT) do
begin
if not (UpCase(OCT[J]) in OCTSet) then
Error := True;
DEC := DEC + (Ord(OCT[J]) - 48) shl ((Length(OCT) - J) * 3);
end;
if Error then
OCT2DEC := 0
else
OCT2DEC := DEC;
end;
function BIN2HEX(BIN: string): string;
function SetHex(St: string; var Error: BOOLEAN): CHAR;
var
Ch: CHAR;
begin
if St = '0000' then
Ch := '0'
else if St = '0001' then
Ch := '1'
else if St = '0010' then
Ch := '2'
else if St = '0011' then
Ch := '3'
else if St = '0100' then
Ch := '4'
else if St = '0101' then
Ch := '5'
else if St = '0110' then
Ch := '6'
else if St = '0111' then
Ch := '7'
else if St = '1000' then
Ch := '8'
else if St = '1001' then
Ch := '9'
else if St = '1010' then
Ch := 'A'
else if St = '1011' then
Ch := 'B'
else if St = '1100' then
Ch := 'C'
else if St = '1101' then
Ch := 'D'
else if St = '1110' then
Ch := 'E'
else if St = '1111' then
Ch := 'F'
else
Error := True;
SetHex := Ch;
end;
var
HEX: string;
I: INTEGER;
Temp: string[4];
Error: BOOLEAN;
begin
Error := False;
if BIN = '0' then
HEX := '0'
else
begin
Temp := '';
HEX := '';
if Length(BIN) mod 4 <> 0 then
repeat
BIN := '0' + BIN;
until Length(BIN) mod 4 = 0;
for I := 1 to Length(BIN) do
begin
Temp := Temp + BIN[I];
if Length(Temp) = 4 then
begin
HEX := HEX + SetHex(Temp, Error);
Temp := '';
end;
end;
end;
if Error then
BIN2HEX := '0'
else
BIN2HEX := HEX;
end;
function HEX2BIN(HEX: string): string;
var
BIN: string;
I: INTEGER;
Error: BOOLEAN;
begin
Error := False;
BIN := '';
for I := 1 to Length(HEX) do
case UpCase(HEX[I]) of
'0': BIN := BIN + '0000';
'1': BIN := BIN + '0001';
'2': BIN := BIN + '0010';
'3': BIN := BIN + '0011';
'4': BIN := BIN + '0100';
'5': BIN := BIN + '0101';
'6': BIN := BIN + '0110';
'7': BIN := BIN + '0111';
'8': BIN := BIN + '1000';
'9': BIN := BIN + '1001';
'A': BIN := BIN + '1010';
'B': BIN := BIN + '1011';
'C': BIN := BIN + '1100';
'D': BIN := BIN + '1101';
'E': BIN := BIN + '1110';
'F': BIN := BIN + '1111';
else
Error := True;
end;
if Error then
HEX2BIN := '0'
else
HEX2BIN := BIN;
end;
function Potens(X, E: LONGINT): LONGINT;
var
P, I: LONGINT;
begin
P := 1;
if E = 0 then
P := 1
else
for I := 1 to E do
P := P * X;
Potens := P;
end;
//////////////////////////////////////////
procedure TForm1.BitBtn11Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'0' else
memo1.Text:='0';
k:=0;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'1' else
memo1.Text:='1';
k:=0;
end;
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'2' else
memo1.Text:='2';
k:=0;
end;
procedure TForm1.BitBtn9Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'3' else
memo1.Text:='3';
k:=0;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'4' else
memo1.Text:='4';
k:=0;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'5' else
memo1.Text:='5';
k:=0;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'6' else
memo1.Text:='6';
k:=0;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'7' else
memo1.Text:='7';
k:=0;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'8' else
memo1.Text:='8';
k:=0;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if k=0 then
memo1.Text:=memo1.Text+'9' else
memo1.Text:='9';
k:=0;
end;
procedure TForm1.BitBtn10Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text)*(-1);
memo1.Text:=floattostr(x);
end;
end;
procedure TForm1.BitBtn12Click(Sender: TObject);
begin
if p=0 then
begin
memo1.Text:=memo1.Text+',';
p:=1;
end;
end;
procedure TForm1.BitBtn17Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
d:=1;
k:=1;
x:=strtofloat(memo1.Text);
p:=0;
end;
end;
procedure TForm1.BitBtn15Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
d:=2;
p:=0;
k:=2;
x:=strtofloat(memo1.Text);
end;
end;
procedure TForm1.BitBtn14Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
d:=3;
p:=0;
k:=3;
x:=strtofloat(memo1.Text);
end;
end;
procedure TForm1.BitBtn13Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
d:=4;
p:=0;
k:=4;
x:=strtofloat(memo1.Text);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ms:=0;
x:=0;
z:=0;
y:=0;
k:=0;
p:=0;
d:=0;
Mp:=0;
Mm:=0;
ss:=10; //система счисления
end;
procedure TForm1.BitBtn16Click(Sender: TObject);
var p:Integer;
begin
if memo1.Text<>'' then
begin
z:=strtofloat(memo1.Text);
if d=1 then
begin
y:=x+z;
{if ss=10 then y:=x+z;
if ss=2 then
begin
x:=int(x);
z:=int(z);
p:=BIN2DEC(FloatToStr(x))+BIN2DEC(FloatToStr(z));
y:=StrToInt(DEC2BIN(p));
end;
if ss=8 then
begin
x:=int(x);
z:=int(z);
p:=OCT2DEC(FloatToStr(x))+OCT2DEC(FloatToStr(z));
y:=StrToInt(DEC2OCT(p));
end;
if ss=16 then
begin
x:=int(x);
z:=int(z);
p:=StrToInt(HEX2DEC(FloatToStr(x)))+StrToInt(HEX2DEC(FloatToStr(z)));
y:=StrToInt(DEC2HEX(p));
end; }
end;
if d=2 then
y:=x-z;
if d=3 then
y:=x*z;
if d=4 then
y:=x/z;
if d=5 then //x^y
begin
t:=strtoint(memo1.Text);
y:=1;
for i:=1 to t do
y:=y*x;
end;
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn33Click(Sender: TObject);
begin
memo1.Text:='';
x:=0;
z:=0;
y:=0;
k:=0;
p:=0;
d:=0;
Mp:=0;
Mm:=0;
end;
procedure TForm1.BitBtn34Click(Sender: TObject);
begin
memo1.Text:='';
end;
procedure TForm1.BitBtn19Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
ms:=strtofloat(memo1.Text);
panel1.Caption:='M';
end;
end;
procedure TForm1.BitBtn22Click(Sender: TObject);
begin
memo1.Text:=floattostr(MS);
end;
procedure TForm1.BitBtn20Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
panel1.Caption:='M';
MS:=MS+strtofloat(memo1.Text);
end;
end;
procedure TForm1.BitBtn21Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
panel1.Caption:='M';
MS:=MS-strtofloat(memo1.Text);
end;
end;
procedure TForm1.BitBtn18Click(Sender: TObject);
begin
MS:=0;
panel1.Caption:='';
end;
procedure TForm1.BitBtn27Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text);
y:=1/x;
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn26Click(Sender: TObject);
begin
memo1.Text:=floattostr(pi);
end;
procedure TForm1.BitBtn25Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
d:=5;
x:=strtofloat(memo1.Text);
k:=1;
end;
end;
procedure TForm1.BitBtn24Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text);
y:=sqr(x)*x;
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn23Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text);
y:=sqr(x);
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn32Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
p:=0;
x:=strtofloat(memo1.Text);
y:=int(x);
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn31Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text);
y:=sin(x)/cos(x);
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn30Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text);
y:=cos(x);
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn29Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
x:=strtofloat(memo1.Text);
y:=sin(x);
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.BitBtn28Click(Sender: TObject);
begin
if memo1.Text<>'' then
begin
t:=strtoint(memo1.Text);
y:=1;
for i:=1 to t do
y:=y*i;
memo1.Text:=floattostr(y);
end;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
CONST HEX : ARRAY['A'..'F'] OF INTEGER = (10,11,12,13,14,15);
VAR
str : String;
Int,
i : integer;
q: double;
begin
if p=1 then
begin
ShowMessage('Перевод в другую систему счисления работает только с целыми числами');
exit;
end;
// memo1.Text:=IntToStr(trunc(StrToFloat(memo1.Text)));
BitBtnA.Enabled:=false;
BitBtnB.Enabled:=false;
BitBtnC.Enabled:=false;
BitBtnD.Enabled:=false;
BitBtnE.Enabled:=false;
BitBtnF.Enabled:=false;
if RadioGroup1.ItemIndex=0 then // в 16 систему счисления
begin
if memo1.Text<>'' then
begin
if ss=10 then //перевод из 10 в 16 систему счисления
memo1.Text:=DEC2HEX(strToInt(memo1.Text));
if ss=8 then //перевод из 8 в 16 систему счисления
memo1.Text:=DEC2HEX(OCT2DEC(memo1.Text));
if ss=2 then //перевод из 2 в 16 систему счисления
memo1.Text:=BIN2HEX(memo1.Text);
end;
ss:=16;
BitBtnA.Enabled:=true;
BitBtnB.Enabled:=true;
BitBtnC.Enabled:=true;
BitBtnD.Enabled:=true;
BitBtnE.Enabled:=true;
BitBtnF.Enabled:=true;
BitBtn10.Enabled:=false;
BitBtn23.Enabled:=false;
BitBtn24.Enabled:=false;
BitBtn25.Enabled:=false;
BitBtn26.Enabled:=false;
BitBtn27.Enabled:=false;
BitBtn28.Enabled:=false;
BitBtn29.Enabled:=false;
BitBtn30.Enabled:=false;
BitBtn31.Enabled:=false;
BitBtn32.Enabled:=false;
BitBtn12.Enabled:=false;
BitBtn13.Enabled:=false;
BitBtn14.Enabled:=false;
BitBtn15.Enabled:=false;
BitBtn16.Enabled:=false;
BitBtn17.Enabled:=false;
BitBtn20.Enabled:=false;
BitBtn21.Enabled:=false;
BitBtn35.Enabled:=false;
BitBtn36.Enabled:=false;
end;
if RadioGroup1.ItemIndex=1 then // в 10 систему счисления
begin
if memo1.Text<>'' then
begin
if ss=16 then //перевод из 16 в 10 систему счисления
memo1.Text:=IntToStr(HEX2DEC(memo1.Text));
if ss=8 then
memo1.Text:=IntToStr(OCT2DEC(memo1.Text));
if ss=2 then
memo1.Text:=IntToStr(BIN2DEC(memo1.Text));
end;
ss:=10;
BitBtn10.Enabled:=true;
BitBtn23.Enabled:=true;
BitBtn24.Enabled:=true;
BitBtn25.Enabled:=true;
BitBtn26.Enabled:=true;
BitBtn27.Enabled:=true;
BitBtn28.Enabled:=true;
BitBtn29.Enabled:=true;
BitBtn30.Enabled:=true;
BitBtn31.Enabled:=true;
BitBtn32.Enabled:=true;
BitBtn12.Enabled:=true;
BitBtn13.Enabled:=true;
BitBtn14.Enabled:=true;
BitBtn15.Enabled:=true;
BitBtn16.Enabled:=true;
BitBtn17.Enabled:=true;
BitBtn20.Enabled:=true;
BitBtn21.Enabled:=true;
BitBtn35.Enabled:=true;
BitBtn36.Enabled:=true;
end;
if RadioGroup1.ItemIndex=2 then // в 8 систему счисления
begin
if memo1.Text<>'' then
begin
if ss=10 then
memo1.Text:= DEC2OCT(StrToInt(memo1.Text));
if ss=16 then
memo1.Text:=DEC2OCT(HEX2DEC(memo1.Text));
if ss=2 then
memo1.Text:=DEC2OCT(BIN2DEC(memo1.Text));
end;
ss:=8;
BitBtn10.Enabled:=false;
BitBtn23.Enabled:=false;
BitBtn24.Enabled:=false;
BitBtn25.Enabled:=false;
BitBtn26.Enabled:=false;
BitBtn27.Enabled:=false;
BitBtn28.Enabled:=false;
BitBtn29.Enabled:=false;
BitBtn30.Enabled:=false;
BitBtn31.Enabled:=false;
BitBtn32.Enabled:=false;
BitBtn12.Enabled:=false;
BitBtn13.Enabled:=false;
BitBtn14.Enabled:=false;
BitBtn15.Enabled:=false;
BitBtn16.Enabled:=false;
BitBtn17.Enabled:=false;
BitBtn20.Enabled:=false;
BitBtn21.Enabled:=false;
BitBtn35.Enabled:=false;
BitBtn36.Enabled:=false;
end;
if RadioGroup1.ItemIndex=3 then // в 2 систему счисления
begin
if memo1.Text<>'' then
begin
if ss=10 then // перевод из 10 в 2 систему счисления
memo1.Text:=DEC2BIN(strToInt(memo1.Text));
if ss=8 then
memo1.Text:=DEC2BIN(OCT2DEC(memo1.Text));
if ss=16 then
memo1.Text:=HEX2BIN(memo1.Text);
ss:=2;
BitBtn10.Enabled:=false;
BitBtn23.Enabled:=false;
BitBtn24.Enabled:=false;
BitBtn25.Enabled:=false;
BitBtn26.Enabled:=false;
BitBtn27.Enabled:=false;
BitBtn28.Enabled:=false;
BitBtn29.Enabled:=false;
BitBtn30.Enabled:=false;
BitBtn31.Enabled:=false;
BitBtn32.Enabled:=false;
BitBtn12.Enabled:=false;
BitBtn13.Enabled:=false;
BitBtn14.Enabled:=false;
BitBtn15.Enabled:=false;
BitBtn16.Enabled:=false;
BitBtn17.Enabled:=false;
BitBtn35.Enabled:=false;
BitBtn36.Enabled:=false;
end;
end;
end;
procedure TForm1.BitBtnAClick(Sender: TObject);
begin
if k=0 then memo1.Text:=memo1.Text+'A'
else memo1.Text:='A';
k:=0;
end;
procedure TForm1.BitBtnBClick(Sender: TObject);
begin
if k=0 then memo1.Text:=memo1.Text+'B'
else memo1.Text:='B';
k:=0;
end;
procedure TForm1.BitBtnCClick(Sender: TObject);
begin
if k=0 then memo1.Text:=memo1.Text+'C'
else memo1.Text:='C';
k:=0;
end;
procedure TForm1.BitBtnDClick(Sender: TObject);
begin
if k=0 then memo1.Text:=memo1.Text+'D'
else memo1.Text:='D';
k:=0;
end;
procedure TForm1.BitBtnEClick(Sender: TObject);
begin
if k=0 then memo1.Text:=memo1.Text+'E'
else memo1.Text:='E';
k:=0;
end;
procedure TForm1.BitBtnFClick(Sender: TObject);
begin
if k=0 then memo1.Text:=memo1.Text+'F'
else memo1.Text:='F';
k:=0;
end;
procedure TForm1.BitBtn35Click(Sender: TObject);
begin
Memo1.Text:=FloatToStr(ln(StrToFloat(Memo1.Text))) ;
end;
procedure TForm1.BitBtn36Click(Sender: TObject);
begin
Memo1.Text:=FloatToStr(ln(StrToFloat(Memo1.Text)) / ln(10));
end;
end.
Снимки окон.
Рисунок 1. Сообщение об ошибке.
Рисунок 2. Запуск приложения «Калькулятор».
Рисунок 3. Сообщение об ошибке.
Рисунок 4. Запуск приложения «Калькулятор».
Размещено на Allbest.ru
...Подобные документы
Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".
курсовая работа [966,9 K], добавлен 11.02.2016Разработка программного кода и алгоритма действий приложения "калькулятор". Использование функций в программе Matlab. Разработка кнопок, опций, интерфейса, оформление. Части кода Matlab и тестовый набор. Инструкция пользователя по работе программы.
курсовая работа [527,1 K], добавлен 27.09.2014Разработка структуры объекта "Калькулятор" - электронного вычислительного устройства для выполнения операций над числами или алгебраическими формулами. Текст программы, результат ее работы. Свойство реального объекта. Блок-схема, алгоритм приложения.
контрольная работа [68,8 K], добавлен 11.04.2015Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.
курсовая работа [1,2 M], добавлен 07.07.2012Создание программы "Калькулятор". Возможность выбора типа калькулятора: обычный или инженерный. Главный модуль проекта CALC. Программа Calc for win (calc4win.exe), разработанная в среде Delphi версии 6. Руководство пользователя. Результаты моделирования.
курсовая работа [56,1 K], добавлен 10.01.2010Разработка приложения на базе скриптового языка программирования JavaScript, с использованием каскадных таблиц стилей CSS в среде программирования Bluefish Editor. Обоснование выбора инструментов. Применение клавиш управления памятью калькулятора.
курсовая работа [3,8 M], добавлен 22.06.2015Пример построения программы с использованием арифметических операторов. Основные инструменты создания калькулятора. Процедура ввода чисел. Измененная процедура обработки нажатия кнопки "+". Процедура открытия формы "Справка", итоговый результат.
презентация [1,5 M], добавлен 02.03.2012Разработка калькулятора на выполнение арифметических функций в 16-ой системе. Использование прерывания от последовательного порта и таймера. Применение системы "прототип" на основе микроконтроллера 51 семейства. Ввод чисел с последовательного порта.
курсовая работа [18,4 K], добавлен 23.08.2009Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.
курсовая работа [106,6 K], добавлен 16.06.2014Набор требований к программному продукту "Калькулятор". Тестовые сценарии для модульного тестирования. Использование системы визуального проектирования. Разработка программного кода. Вычисление цикломатического числа и построение графы каждого модуля.
контрольная работа [170,4 K], добавлен 04.11.2014Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Формирование калькулятора большой "конечной" арифметики для четырех действий. Реализация построения таблиц сложения, вычитания, умножения и переноса по данным действиям. Защита калькулятора от некорректного ввода данных. Реализация функции сравнения.
курсовая работа [181,0 K], добавлен 11.08.2014Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Разработка приложения "Калькулятор" для подсчитывания количества символов или букв в арабском тексте. Проектирование программной системы, определение функциональных требований к приложению. Алгоритм разработки модульной структуры мобильного приложения.
презентация [853,9 K], добавлен 08.04.2019Позиционирование и предназначение бюджетного калькулятора и калькулятора Windows. Определение математической модели приложения. Диаграмма классов. Проектирование бизнес логики. Описание программного продукта, его тестирование. Инструкция пользователя.
дипломная работа [1,0 M], добавлен 06.06.2017Разработка клиентского приложения для информационной системы "Работа торгового склада" с помощью языка объектно-ориентированного программирования Delphi 6 и технологии InterBase Express. Описание реляционной модели данных и этапы ее проектирования.
курсовая работа [1,0 M], добавлен 19.03.2009Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.
курсовая работа [2,2 M], добавлен 14.04.2019Правила создания и особенности работы с приложением Windows Application. Рассмотрение структуры панели Properties и ее функционального назначения. Возможности пункта меню "View". Практическая разработка приложения - калькулятора для сложения двух чисел.
лабораторная работа [99,1 K], добавлен 01.12.2011Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.
курсовая работа [2,2 M], добавлен 20.09.2014