РефератыИнформатикаПрПрограмма Калькулятор

Программа Калькулятор

Пояснительная записка
к курсовой работе

по дисциплине программирование на языке высокого уровня


Калькулятор


2002 г.


Содержание

Введение


1.Метод решения


2. Описание программы


3. Руководство пользователя


Работа с памятью:


Горячие клавиши:


Использование меню


Измерение углов в градусах и радианах


4. Результаты моделирования


Введение

Программы, работающие на компьютере, можно разделить на три категории:


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


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


3. Инструментальные системы (системы программирования), обеспечивающие создание новых программ.


Данные категории программ в свою очередь так – же разделяются на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Для математических вычислений существует множество различных програмных продуктов. Это известные всем пакеты MathCad, MathLab, Mathematika, Axum. Есть и более порстые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа (Calc.exe), по аналогии с ней было сделано данное задание.


Задание


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


1. Метод решения

В программе «Калькулятор» использовано одно поле для ввода операторов и для вывода результата. В поле вывода данных числа отображаются с точностью 6 знаков после запятой. Проект имеет 6 модулей, каждый из которых содержит свою форму. Главный модуль проекта называется CALC, связанный с первой формой Form1. На данной форме находится меню управления (для выбора действий программы), строка состояния (вывод подсказки), фоновый рисунок (обращение к файлу Fon.jpg).


Формы модулей Unitcalc3 и Unitcalc5 содержат одно поле для ввода и вывода результата. Unitcalc3 – обычный калькулятор, Unitcalc5 – инженерный (расширенный набор действий).


Для представления справочной информации в программе использован модуль Unitcalc2, с обращением компонента Memo к файлу помощи Help.txt.


Модуль Unitcalc4 с формой Form4 имеет заголовок «About». Данный модуль обращается к файлу – рисунку Im.bmp и выводит на экран информацию об авторе.


Модуль Unit6 - выводит на экран мигающую заставку (использован компоненты Timer и Image). Окно заставки содержит кнопку для ее закрытия.


Примечание: файлы Help.txt, Fon.jpg, Im.bmp и Skull1.jpgдолжны находится в том же каталоге, что и основной файл программы.


Предусмотрена возможность выбора типа калькулятора: обычный или инженерный. С помощью обычного режима можно вычислять только четыре элементарные функции: сложение (x + y), вычитание (x - y), умножение (x * y) и деление (x / y). С помощью инженерного можно вычислять: тригонометрические функции для углов в градусах и радианах (блок-схема алгоритма приведена в Приложении 2), возведение в квадрат (y2
), куб (y3
) степень (), факториал (y!=1*2*3*…*y), натуральный логарифм (ln(y)), деление (1/y) и т.п. (блок-схема алгоритма вычисления результатов по нажатию кнопки = приведена в Приложении 1). В тригонометрических вычислениях функция тангенс угла вычисляется с помощью отношения синуса к косинусу (sin/cos).


2. Описание программы

Программа Calcforwin(calc4win.exe) разработана в среде Delphi версии 6.


Для хранения данных в программе используются глобальные переменные типа string, char, real, integer.


Вывод рисунка из файла на диске в форму осуществляется с помощью процедуры LoadFromFile(Name).


Вывод текстовой информации из файла помощи Help.txt производится процедурой Form2.Memo1.lines.Add(s).


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


3. Руководство пользователя

Данная программа предназначена для выполнения математических вычислений, имитируя действия калькулятора. Для работы с ней нужно запустить файл Calc4win.exe. В каталоге, содержащем файл Calc4win.exe, есть графический файл использующийся для оформления информационной формы. Аппаратные требования: мышь/клавиатура. Системные требования: 486 или совместимый процессор, 16 MbRAM, ОС Windows9x. Для работы программы требуется 707 kb дискового пространства.


Для начала работы нужно запустить исполнимый файл Calс4win.exe.


Программа Calcforwin имеет два режима работы: Обычный и Инженерный, которые можно выбрать в меню Вид.


В Обычном режиме калькулятор вычисляет только четыре элементарные функции (сложение, вычитание, умножение и деление).


В Инженерном выполняются такие функции как возведение в степень, факториал, логарифм, тригонометрические вычисления, округление результата до целого, работа с памятью и т.п. Предусмотрен вы
бор угла: градусы или радианы.


Инструкция по эксплуатации программы:


1. Выполнение простых вычислений:


· В меню Вид выберите Обычный или нажмите клавишу F2;


· Введите первое число;


· Нажмите кнопку + (сложение), - (вычитание), * (умножение) или / (деление);


· Введите следующее число;


· Введите необходимый оператор;


· Введите остальные числа и операторы;


· Нажмите кнопку =.


2. Выполнение инженерных вычислений:


· В меню Вид выберите Инженерный или нажмите клавишу F3;


· Выберите систему счисления;


· Введите первое число;


· Выберите нужный оператор;


· Введите следующее число;


· Введите остальные операторы и числа;


· Нажмите кнопку =.


Работа с памятью:

·Чтобы занести число в память, нажмите кнопку M write;


·После сохранения числа над кнопками памяти на панели калькулятора появится индикатор M. Каждое новое число, занесенное в память, заменяет предыдущее;


·Чтобы вызвать число из памяти, нажмите кнопку M read;


·Чтобы очистить память, нажмите кнопку M clear;


·Чтобы сложить
или вычесть
отображаемое число с числом, хранящимся в памяти, нажмите кнопку M +
или M
-
. Чтобы вызвать результат, нажмите кнопку M read;


Горячие клавиши:

F1 – Вызов справки;


F10 – Выход из программы;


F2 – Обычный режим работы;


F3 – Инженерный режим;


Использование меню

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


1. Вид:


– Обычный F2 (определяет Обычный режим работы Калькулятора);


– Инженерный F3 (определяет Инженерный режим работы Калькулятора);


2. Справка:


– Помощь F1 (открывает окно справки для облегченной и правильной работы пользователя с программой);


– About (выводит на экран информацию об авторе);


3. Выход:


– Выход F 10 (служит для правильного выхода их программы).


Измерение углов в градусах и радианах

Режим калькулятора Инженерный дает возможность изменять меру измерения углов. Для этого необходимо только указать в чем должен измеряться аргумент тригонометрической функции. По умолчанию это градусы DEG.


4. Результаты моделирования
Блок–схема алгоритма к кнопке =



Список идентификаторов, использованных в блок-схеме с кратким описанием:


-X, Y, Z – идентификаторы типа real. Переменные используются как в


-Обычном режиме, так и в Инженерном.


Блок–схема алгоритма вычисления факториала


Список идентификаторов, использованных в блок-схеме с кратким описанием:


-Y, Z, Fact - идентификаторы типа real.


-K – идентификатор типа Integer.


ТексткFORM 5


unit Unitcalc5;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, ExtCtrls;


type


TForm5 = class(TForm)


Edit1: TEdit;


Edit2: TEdit;


Button1: TButton;


Button2: TButton;


.


.


Button39: TButton;


Label1: TLabel;


Label2: TLabel;


Bevel1: TBevel;


Bevel2: TBevel;


Bevel3: TBevel;


Bevel4: TBevel;


Bevel5: TBevel;


Bevel6: TBevel;


Bevel7: TBevel;


Bevel8: TBevel;


RadioGroup1: TRadioGroup;


RadioButton1: TRadioButton;


RadioButton2: TRadioButton;


procedure Button1Click(Sender: TObject);


.


.


procedure Button39Click(Sender: TObject);


procedure RadioButton1Click(Sender: TObject);


procedure RadioButton2Click(Sender: TObject);


private


{ Private declarations }


public


{ Public declarations }


end;


var


Form5: TForm5;


s,s1,c:string;t,i,j:integer;


x,y,z,m,f:real;cf:char;


implementation


{$R *.dfm}


procedure operat(x,y:real;c:string;var z:real);


begin


if c='+' then z:=x+y;


if c='-' then z:=x-y;


if c='*' then z:=x*y;


if c='x^y' then z:=exp(y*ln(x));


if (c='/') th

en


if (y<>0) then z:=x/y else


messagedlg('На 0 делить нельзя',mterror,[mbok],0);


if c='' then z:=y;


end;


procedure okr(var c:string);


var i,j:integer;x:real;


begin


i:=length(c); j:=i;


while copy(c,j,1)='0' do


begin


delete(c,j,1);


j:=j-1;


end;


val(c,x,i);


if (x>1E+16) or (x<-1E+16) then


begin


s:=' 0';


messagedlg('Слишком большое чиссло',mtcustom,[mbok],0);


end;


end;


procedure o(p:string; var c,c1:string);


begin


if length(c)<16 then


begin


c:=c+p;c1:=c;


end;


end;


procedure TForm5.Button10Click(Sender: TObject);


begin


o('0',s,s1);


edit1.text:=(' '+s)


end;


procedure TForm5.Button1Click(Sender: TObject);


begin


o('1',s,s1);


edit1.text:=(' '+s)


end;


.


.


.


procedure TForm5.Button9Click(Sender: TObject);


begin


o('9',s,s1);


edit1.text:=(' '+s)


end;


procedure TForm5.Button20Click(Sender: TObject);


begin


if copy(s,1,1)='-'


then delete(s,1,1)


else s:='-'+s ;


s1:=s;


edit1.text:=(' '+s)


end;


procedure TForm5.Button16Click(Sender: TObject);


begin


val(s1,y,i);


operat(x,y,c,z);


x:=z; c:='+';


str(z:6:6,s); okr(s);


edit1.text:=(' '+s);


s:='' ;t:=0;


end;


procedure TForm5.Button21Click(Sender: TObject);


begin


val(s1,y,i);


operat(x,y,c,z);


x:=z; c:='-';


str(z:6:6,s);okr(s);


edit1.text:=(' '+s);


s:='' ;t:=0;


end;


procedure TForm5.Button15Click(Sender: TObject);


begin


val(s1,y,i);


operat(x,y,c,z);


x:=z; c:='*';


str(z:6:6,s);okr(s);


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button14Click(Sender: TObject);


begin


val(s1,y,i);


operat(x,y,c,z);


x:=z; c:='/';


str(z:6:6,s); okr(s);


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button26Click(Sender: TObject);


begin


val(s1,y,i);


z:=y*y;


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button27Click(Sender: TObject);


begin


val(s1,y,i);


z:=y*y*y;


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button12Click(Sender: TObject);


begin


c:='';


t:=0;


s:='';


s1:=s;


y:=0;


edit1.text:=(' 0');


end;


procedure TForm5.Button30Click(Sender: TObject);


begin


val(s1,y,i);


z:=round(y);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button13Click(Sender: TObject);


begin


val(s1,y,i);


operat(x,y,c,z);


x:=z;


c:='';


str(z:6:6,s);


okr(s);


s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button19Click(Sender: TObject);


begin


val(s1,y,i);


if y<>0 then


begin


z:=1/y;


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


end else


begin


messagedlg('На 0 делитьнельзя',mterror,[mbok],0);


{ edit1.text:=('E ') ;}


end;


s:='';t:=0;


end;


procedure TForm5.Button37Click(Sender: TObject);


begin


t:=0;


s:='';


s1:=s;


edit1.text:=(' 0');


end;


procedure TForm5.Button18Click(Sender: TObject);


begin


val(s1,y,i);


begin


if radiobutton1.Checked then


f:=y*3.14159265359/180


else f:=y; end;


z:=cos(f);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button22Click(Sender: TObject);


begin


val(s1,y,i);


begin


if radiobutton1.Checked then


f:=y*3.14159265359/180


else f:=y; end;


z:=sin(f);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button23Click(Sender: TObject);


begin


val(s1,y,i);


if y<>0


then begin


if radiobutton1.Checked


then


f:=y*3.14159265359/180


else f:=y;


z:=sin(f)/cos(f);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


end else


begin


messagedlg('На 0 делитьнельзя',mterror,[mbok],0);


end;


s:='';t:=0;


end;


procedure TForm5.Button24Click(Sender: TObject);


begin


val(s1,y,i);


if y<>0


then begin


if radiobutton1.Checked


then


f:=y*3.14159265359/180


else f:=y;


z:=cos(f)/sin(f);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


end else


begin


messagedlg('На 0 делитьнельзя',mterror,[mbok],0);


end;


s:='';t:=0;


end;


procedure TForm5.Button25Click(Sender: TObject);


begin


val(s1,y,i);


if y>=0 then begin


z:=sqrt(y);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


end else begin


messagedlg('Кореньизотрицательногочислаизвлечьнельзя',mterror,[mbok],0);


end;


s:='';t:=0;


end;


procedure TForm5.Button28Click(Sender: TObject);


begin


val(s1,y,i);


operat(x,y,c,z);


x:=z;


c:='x^y';


str(z:6:6,s);okr(s);


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button32Click(Sender: TObject);


begin


z:=3.14159265359;


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button29Click(Sender: TObject);


begin


val(s1,y,i);


if y>=1 then begin


z:=ln(y);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


end else


begin


messagedlg('LN X<=0 неопределён',mterror,[mbok],0);


end;


s:='';t:=0;


end;


procedure TForm5.Button31Click(Sender: TObject);


var k:integer; fact:real;


begin


val(s1,y,i);


fact:=1;


k:=1;


if (y>1) and (y<=18) then


begin


y:=round(y);


repeat


k:=k+1;


fact:=fact*k;


until k=y;


end


else


begin


s:=' 0';


messagedlg('Слишком большое чиссло',mtcustom,[mbok],0);


end;


z:=round(fact);


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button38Click(Sender: TObject);


begin


val(s1,y,i); m:=m+y;


s:='';t:=0;


if m<>0 then edit2.text:=('M ')


else edit2.text:=(' ');


end;


procedure TForm5.Button39Click(Sender: TObject);


begin


val(s1,y,i); m:=m-y;


s:='';t:=0;


if m<>0 then edit2.text:=('M ')


else edit2.text:=(' ');


end;


procedure TForm5.Button34Click(Sender: TObject);


begin


val(s1,y,i); m:=y;


s:='';t:=0;


if m<>0 then edit2.text:=('M ')


else edit2.text:=(' ');


end;


procedure TForm5.Button35Click(Sender: TObject);


begin


str(m:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


procedure TForm5.Button36Click(Sender: TObject);


begin


m:=0;


if m<>0 then edit2.text:=('M ')


else edit2.text:=(' ');


end;


procedure TForm5.Button11Click(Sender: TObject);


begin


if t=0 then


begin


s:=s+'.'; s1:=s;


edit1.text:=(' '+s);


t:=1


end;


end;


procedure TForm5.RadioButton1Click(Sender: TObject);


begin


radiobutton1.checked:=true;


radiobutton2.checked:=false;


end;


procedure TForm5.RadioButton2Click(Sender: TObject);


begin


radiobutton2.checked:=true;


radiobutton1.checked:=false;


end;


procedure TForm5.Button17Click(Sender: TObject);


begin


val(s1,y,i);


z:=random;


str(z:6:6,s);okr(s);s1:=s;


edit1.text:=(' '+s);


s:='';t:=0;


end;


end.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Программа Калькулятор

Слов:1935
Символов:21404
Размер:41.80 Кб.