Содержание: Автор: Юдин Андрей Борисович МКОУ Плесская СОШ Алгоритм работы калькулятора Описание процедур Ссылки на материалы о калькуляторах Литература по программированию ООП Электронный справочник для самостоятельной разработки приложения «Инженерный калькулятор » Переход по слайдам осуществляется при помощи кнопок. Завершение работы с презентацией клавиша ESC.
3 3 Основное меню
4 4 Операции требующие одной кнопки a:=StrToFloat(Edit1.Text); c:= операция; Edit1.text:=FloatToStr(c); Запоминаем число из окна ввода Далее
4 4 Операции требующие одной кнопки a:=StrToFloat(Edit1.Text); c:= операция; Edit1.text:=FloatToStr(c); Выполняем операцию Далее Назад
4 4 Операции требующие одной кнопки a:=StrToFloat(Edit1.Text); c:= операция; Edit1.text:=FloatToStr(c); Возвращаем результат в окно ввода Далее Назад
5 5 Операции требующие двух кнопок a:=StrToFloat(Edit1.Text); k:= число; Edit1.text:=''; b:=StrToFloat(Edit1.Text); if k=число then begin c:=операция; Edit1.text:=FloatToStr(c); end; Запоминаем первое число Далее Назад
5 5 Операции требующие двух кнопок a:=StrToFloat(Edit1.Text); k:= число; Edit1.text:=''; b:=StrToFloat(Edit1.Text); if k=число then begin c:=операция; Edit1.text:=FloatToStr(c); end; Запоминаем код операции Далее Назад
5 5 Операции требующие двух кнопок a:=StrToFloat(Edit1.Text); k:= число; Edit1.text:=''; b:=StrToFloat(Edit1.Text); if k=число then begin c:=операция; Edit1.text:=FloatToStr(c); end; Очищаем окно ввода Далее Назад
5 5 Операции требующие двух кнопок a:=StrToFloat(Edit1.Text); k:= число; Edit1.text:=''; b:=StrToFloat(Edit1.Text); if k=число then begin c:=операция; Edit1.text:=FloatToStr(c); end; Запоминаем второе число Далее Назад
5 5 Операции требующие двух кнопок a:=StrToFloat(Edit1.Text); k:= число; Edit1.text:=''; b:=StrToFloat(Edit1.Text); if k=число then begin c:=операция; Edit1.text:=FloatToStr(c); end; Проверяем код операции Далее Назад
5 5 Операции требующие двух кнопок a:=StrToFloat(Edit1.Text); k:= число; Edit1.text:=''; b:=StrToFloat(Edit1.Text); if k=число then begin c:=операция; Edit1.text:=FloatToStr(c); end; Выполняем операцию и выводим результат Меню Назад
Сложение procedure Button1OnClick; begin // сложение a:=StrToFloat(Edit1.Text); k:=1; Edit1.text:=''; end; Далее Запоминаем первое слагаемое, номер операции сложения и очищаем поле ввода
Сложение b:=StrToFloat(Edit1.Text); if k=1 then begin c:=a+b; Edit1.text:=FloatToStr(c); end; Меню Назад Запоминаем второе слагаемое, если номер операции 1 (сложение) выполняем сложение и выводим результат на поле ввода. Остальные операции объясняются в соответствующих кнопках
Вычитание, умножение, деление procedure Button2OnClick; begin a:=StrToFloat(Edit1.Text); k:=2; Edit1.text:=''; end; procedure Button3OnClick; begin a:=StrToFloat(Edit1.Text); k:=3; Edit1.text:=''; end; procedure Button4OnClick; begin a:=StrToFloat(Edit1.Text); k:=4; Edit1.text:=''; end; Далее Запоминаем первое число, номер операции: вычитания (2), умножения (3), деления (4) и очищаем поле ввода
Вычитание, умножение, деление if k=2 then begin c:=a-b; Edit1.text:=FloatToStr(c); end; if k=3 then begin c:=a*b; Edit1.text:=FloatToStr(c); end; if k=4 then begin c:=a/b; Edit1.text:=FloatToStr(c); end; Меню Назад Эти условия необходимо добавить в процедуру кнопки равно. В них проверяется какая до этого была нажата кнопка и выполняется действие соответствующее номеру (k) этой кнопке
Квадратный корень procedure Button5OnClick; begin // квадратный корень a:=StrToFloat(Edit1.Text); c:=Sqrt(a); Edit1.text:=FloatToStr(c); end; Меню Запоминаем число под корнем, вычисляем квадратный корень и выводим результат на поле ввода
Квадрат procedure Button6OnClick; begin // квадрат a:=StrToFloat(Edit1.Text); c:=a*a; Edit1.text:=FloatToStr(c); end; Меню Запоминаем число которое возводим в квадрат, вычисляем квадрат числа и выводим результат на поле ввода
Произвольная степень procedure Button7OnClick; begin // Произвольная степень a:=StrToFloat(Edit1.Text); k:=5; Edit1.text:=''; end; Далее Запоминаем основание, номер операции и очищаем поле ввода для показателя степени.
Произвольная степень if k=5 then begin c:=exp (b * ln (a)); Edit1.text:=FloatToStr(c); end; Меню Назад Проверяем код операции, если он равен 5 выполняем возведение в n-ю степень и выводим результат на поле ввода. Для этой операции воспользуемся следующим соотношением a b = e bln a
Корень произвольной степени procedure Button7OnClick; begin // Корень n-ой степени a:=StrToFloat(Edit1.Text); k:=6; Edit1.text:=''; end; Далее Запоминаем подкоренное число, номер операции и очищаем поле ввода для степени корня.
Корень произвольной степени if k=6 then begin c:=exp(ln(abs(a))/b); if a<0 then c:=-c; Edit1.text:=FloatToStr(c); end; Меню Назад Проверяем код операции, если он равен 6 выполняем вычисление корня n-ой степени и выводим результат на поле ввода. Для этой операции воспользуемся следующим соотношением, это возведение в 1/n –ю степень: a b =e ln|a|/b или a b =e 1/bln|a| Для вычисления корня n-ой степени воспользуемся следующим правилом
Натуральный логарифм procedure Button9OnClick; begin // Натуральный логарифм a:=StrToFloat(Edit1.Text); c:=ln(a); Edit1.text:=FloatToStr(c); end; Меню Запоминаем число, из которого вычислим натуральный логарифм, и выводим результат в поле вывода.
Десятичный логарифм procedure Button10OnClick; begin // Десятичный логарифм a:=StrToFloat(Edit1.Text); c:=ln(a)/ln(10); Edit1.text:=FloatToStr(c); end; Меню Для вычисления десятичного логарифма воспользуемся формулами.
Обыкновенный логарифм procedure Button11OnClick; begin // логарифм // ввод логарифмируемого // числа a:=StrToFloat(Edit1.Text); k:=7; Edit1.text:=''; end; Далее Запоминаем, логарифмируемое число и код операции (основание будет введено при нажатии кнопки «Равно»)
Обыкновенный логарифм if k=7 then Begin // b –основание логарифма c:=ln(a)/ln(b); Edit1.text:=FloatToStr(c); end; Меню Назад Для вычисления произвольного логарифма воспользуемся формулами.
Факториал procedure Button12OnClick; var i:integer; Begin // Факториал a:=StrToFloat(Edit1.Text); c := 1; for i := 2 to trunc(a) do c := c * i; Edit1.text:=FloatToStr(c); end; Меню Для вычисления факториала используем его итеративное определение Организуем цикл, в котором второй параметр преобразуется к целому типу (trunc)
Проценты procedure Button13OnClick; Begin // проценты a:=StrToFloat(Edit1.Text); k:=7; Edit1.text:=''; end; Далее Запоминаем число от которого будут вычисляться проценты, номер операции и очищаем поле ввода для процентов.
Проценты if k=8 then begin c:=b*a/100; Edit1.text:=FloatToStr(c); end; Меню Назад Если номер операции 8, то вычисляем a процентов от b и выводим результат в поле ввода
Обратная пропорциональность procedure Button14OnClick; begin a:=StrToFloat(Edit1.Text); c:=1/a; Edit1.text:=FloatToStr(c); end; Меню Запоминаем число, выполняем операцию, и выводим результат в поле ввода
Синус procedure Button15OnClick; begin a:=StrToFloat(Edit1.Text); c:=sin(a); Edit1.text:=FloatToStr(c); end; Меню Запоминаем число, выполняем операцию, и выводим результат в поле ввода
Косинус procedure Button16OnClick; begin a:=StrToFloat(Edit1.Text); c:=cos(a); Edit1.text:=FloatToStr(c); end; Меню Запоминаем число, выполняем операцию, и выводим результат в поле ввода
Тангенс procedure Button17OnClick; begin a:=StrToFloat(Edit1.Text); c:=sin(a)/cos(a); Edit1.text:=FloatToStr(c); end; Меню Запоминаем число, выполняем операцию, и выводим результат в поле ввода. Для вычисления тангенса воспользуемся следующей формулой
Котангенс procedure Button18OnClick; begin a:=StrToFloat(Edit1.Text); c:=cos(a)/sin(a); Edit1.text:=FloatToStr(c); end; Меню Запоминаем число, выполняем операцию, и выводим результат в поле ввода. Для вычисления котангенса воспользуемся следующей формулой
Число Пи procedure Button19OnClick; begin c:=Pi; Edit1.text:=FloatToStr(c); end; Меню Для вывода поле ввода числа π воспользуемся встроенной функцией Pi
Експонента procedure Button20OnClick; Begin a:=StrToFloat(Edit1.Text); c:=exp(a); Edit1.text:=FloatToStr(c); end; Меню Вычисляем е х (экспоненту)
25 procedure Button21OnClick; Begin a:=StrToFloat(Edit1.Text); c:=a*180/Pi; Edit1.text:=FloatToStr(c); end; Меню Для перевода из радиан в градусы воспользуемся формулой:
26 procedure Button22OnClick; Begin a:=StrToFloat(Edit1.Text); c:=a*Pi/180; Edit1.text:=FloatToStr(c); end; Меню Для перевода из градусов в радианы воспользуемся формулой:
27 procedure Button23OnClick; Begin Edit1.text:=''; end; Меню Очищаем окно ввода, поместив туда пустую строку
28 procedure Button24OnClick; Begin s:=Edit1.Text; if (length(s)>=0)then delete(s,length(s),1); Edit1.Text:=s; end; Меню Для удаления последнего символа в поле ввода копируем его содержимое в переменную S. И если в этой строке есть символы удаляем последний. Затем помещаем значение S обратно в поле ввода
29 procedure Button25OnClick; Begin Form1.Close; end; Меню Закрываем программу
31 procedure Button31OnClick; begin Edit1.Text:=Edit1.Text+'9'; end; Меню Для каждой цифры создадим 10 процедур. В каждой из них будет к тому что есть в поле ввода в права добавляться одна цифра
32 procedure Button34OnClick; var f,i:integer; begin f:=0; for i:=1 to length(Edit1.Text) do if Edit1.Text[i]='.' then f:=1; if f=0 then Edit1.Text:=Edit1.Text+'.'; end; Меню Так как точку в числе можно поставить один раз, необходимо проверять а есть ли в поле ввода десятичная точка. Переменная f является флагом. Перебирая циклом символы в поле ввода ищем точку. Если точка нашлась, f становится равной 1 и еще одна точка не ставится.
33 if Edit1.Text[1]<>'-' then Edit1.Text:='-'+Edit1. Text else begin s:=Edit1.Text; delete(s,1,1); Edit1.Text:=s; end; Меню Для смены знака перед числом в поле ввода проверяем первый символ. Если он не равен минусу, то приписываем к содержимому поля ввода знак минус иначе удаляем первый символ в поле ввода.
34 Калькуляторы в Internet Сайт ПРИКЛАДНАЯ МАТЕМАТИКА, статья о калькуляторе. Фестиваль педагогических идей «Открытый урок».Проект на Delphi «Стандартный Калькулятор». Автор: Панов Сергей Иванович, учитель физики и информатики html Кибер Форум, ветвь Delphi - Калькулятор Пишем калькулятор на Delphi 7 (есть видео уроки) delphi.htmlhttp://delphicomponent.ru/120-kalkulyator-v- delphi.html Обычный калькулятор на Delphi. Автор: Кротов Роман. Далее
35 Калькуляторы в Internet kalkulyator.htmlhttp://cybern.ru/delphi-dlya-nachinayushhix-urok-6-pishem-svoj- kalkulyator.html Delphi для начинающих. Пишем свой калькулятор. Идея с визуализацией примеров, можно использовать (идею) для дальнейшего развития нашего калькулятора. na-delphihttp://koder.kz/articles/ishodniki-programm-na-delphi/kalkulyator- na-delphi Исходник полноценного калькулятора на Delphi 2010 для реализации всех функций заимствован код на Assembler. В программе использованы только стандартные компоненты Delphi. Исходник содержит большое количество комментариев. Готовый проект «Научный калькулятор» Меню Назад
1. Delphi Алгоритмы и программы: О. В. Чеснокова Санкт- Петербург, НТ Пресс, 2008 г. 2. Основы программирования в интегрированной среде DELPHI: А. Желонкин Москва, Бином. Лаборатория знаний, 2004 г. 3. Программирование в Turbo Pascal. Переход к Delphi: Ю. А. Шпак Москва, МК-Пресс, 2006 г. 4. Занимательное программирование: М. Мозговой – СПб, Питер, 2005 г. 5.Delphi. Программирование на языке высокого уровня: Фаронов В.В. Учебник для вузов. – СПб.: Питер, – 640 с.: ил. И интернет ресурсы: 1. Королевство Delphi - виртуальный клуб программистов Мастера Delphi 3. Сайт о Lazarus. Алгоритмы, статьи, библиотеки и много всего интересного 36 Список литературы и интернет источников Меню