по дисциплине программирование на языке высокого уровня
Калькулятор
2002 г.
Введение
1.Метод решения
2. Описание программы
3. Руководство пользователя
Работа с памятью:
Горячие клавиши:
Использование меню
Измерение углов в градусах и радианах
4. Результаты моделирования
Программы, работающие на компьютере, можно разделить на три категории:
1. Прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ: редактирование текстов, рисование, обработку информационных массивов и т.д.
2. Системные программы, выполняющие различные вспомогательные функции, например диагностика компьютера или резервное копирование информации.
3. Инструментальные системы (системы программирования), обеспечивающие создание новых программ.
Данные категории программ в свою очередь так – же разделяются на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Для математических вычислений существует множество различных програмных продуктов. Это известные всем пакеты MathCad, MathLab, Mathematika, Axum. Есть и более порстые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа (Calc.exe), по аналогии с ней было сделано данное задание.
Задание
Написать программу «Калькулятор». Использовать одно поле для ввода операторов и для вывода результата. Предусмотреть возможность выбора типа калькулятора: обычный или инженерный. С помощью инженерного можно вычислять: тригонометрические функции (для углов в градусах и радианах), возведение в степень, факториал, логарифм, экспоненту, целочисленное деление и т.п.
В программе «Калькулятор» использовано одно поле для ввода операторов и для вывода результата. В поле вывода данных числа отображаются с точностью 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).Программа Calcforwin(calc4win.exe) разработана в среде Delphi версии 6.
Для хранения данных в программе используются глобальные переменные типа string, char, real, integer.
Вывод рисунка из файла на диске в форму осуществляется с помощью процедуры LoadFromFile(Name).
Вывод текстовой информации из файла помощи Help.txt производится процедурой Form2.Memo1.lines.Add(s).
Предусмотрен вывод сообщений с помощью функции MessageDlg при делении на нуль, извлечении корня из отрицательного числа, а также вычислению логарифма отрицательного числа и выхода значений числовой переменной за пределы определенных числовых типов.
Данная программа предназначена для выполнения математических вычислений, имитируя действия калькулятора. Для работы с ней нужно запустить файл 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.
Список идентификаторов, использованных в блок-схеме с кратким описанием:
-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='/') then
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);