Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2019-07-12 | 67 |
5.00
из
|
Заказать работу |
|
|
Результатом выполнения данной лабораторной работы являются созданный согласно заданию программный продукт. Выполненное задание должно быть предъявлено преподавателю в электронном виде. В ходе защиты лабораторной работы студент должен продемонстрировать свои навыки работы с изученными компонентами и методами проектирования интерфейса пользователя.
Лабораторная работа №8. Создание простейшего калькулятора
Цель: Изучение структуры CASE и особенностей работы с математическими функциями. Преобразование типов и обработка исключительных ситуаций.
Краткие теоретические сведения.
Математические функции языка Object Pascal
abs(x) | Модуль аргумента - |
arctan(x) | Арктангенс аргумента (угол в радианах) |
sin(x) | Синус |
cos(x) | Косинус |
exp(x) | Экспонента - |
sqr(x) | Квадрат аргумента - |
sqrt(x) | Корень квадратный аргумента - |
ln(x) | Логарифм натуральный |
frac(x) | Дробная часть числа |
int(x) | Целая часть числа |
trunc(x) | Отбрасывает дробную часть числа |
round(x) | Округляет x до ближайшего целого значения |
pi | p=3.141592653… |
random(x) | Псевдослучайное число, расположенное в диапазоне 0…(х-1) |
Так как функции тангенса и котангенса в языке Pascal отсутствуют, они выражаются через значения синуса и косинуса:
Десятичный логарифм можно выразить следующим способом –
В языке Pascal нет возведения в степень. Возведение в степень для положительных значений можно выполнить с помощью следующих соотношений:
Примеры выражений:
В Object Pascal это выражение будет выглядеть так:
0.3*exp(5*ln((sqr(sin(x))-sqr(cos(x)))/exp(x))
x*sqrt(abs(cos(x)-1))/sqrt(exp(3*ln(abs(x))))
При использовании окон редактирования для вывода, ввода и редактирования чисел необходимо использовать функции взаимного преобразования строк и чисел. FloatToStr и IntToStr преобразуют соответственно вещественные и целочисленные переменные в строковые. Функция StrToFloat предназначена для преобразование строки в значение с плавающей запятой, и StrToInt — преобразование строки в целое значение.
|
Для реакции на конкретный тип исключительной ситуации применяется блок try..except. В простейшем виде синтаксис его следующий:
try <0ператоры, которые могут вызвать исключительную ситуацию>
except
< Операторы >;
end;
Выполнение блока начинается с секции try. При отсутствии исключительных ситуаций только она и выполняется. Секция except получает управление в случае если они возникли. Например
try
I:= 5 /0;
except
showmessage(‘Делить на ноль нельзя!’);
end;
Ход работы
1. Разместим на форме 2 компонента Panel, 16 компонентов Button и окошко редактирования Edit. Расположим их на форме следующим образом.
Размеры панелей и кнопок могут быть произвольными, в данном примере были использованы следующие параметры:
Panel1 | Panel2 | Button… |
Width-180 | Width-70 | Width-50 |
Height - 235 | Height - 235 | Height – 50 |
Очистим свойство Text компонента Edit1, а свойствам Caption компонентов зададим соответствующие значения.
2. Итак, приступим к коду. Добавим в наш код 4 глобальных переменных.
var
Form1: TForm1;
i,p,r:real;
//они будут сохранять числа введенные пользователем (i- значение первого введенного числа, р – второго, r – полученный результат)
mode:integer;
//режим калькулятора (умножить, разделить и т.д)
Переменная mode будет содержать числовое значение действия: 1 – прибавление, 2 – вычитание, 3 – деление, 4 – умножение.
3. Теперь приступим к нашим кнопкам. В каждой цифровой кнопке обработаем событие OnClick. Код будет идентичен для всех цифровых кнопок (от 1 до 10-й). Приведем пример кода для первой кнопки (цифра 1):
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';// для всех остальных кнопок заменяйте 1 на нужное вам число
end;
Далее пишем обработчики OnClick для кнопок операций.
|
Для кнопки «+»:
procedure TForm1.ButtonPlusClick(Sender: TObject);
begin
i:=StrToFloat(Edit1.Text);
mode:=1;
Edit1.Text:=''; //это две одинарные кавычки
end;
Для кнопки «-»
procedure TForm1.ButtonMinusClick(Sender: TObject);
begin
i:=StrToFloat(Edit1.Text);
mode:=2;
Edit1.Text:='';
end;
Для кнопки «*»
procedure TForm1.ButtonMultiplyClick(Sender: TObject);
begin
i:=StrToFloat(Edit1.Text);
mode:=3;
Edit1.Text:='';
end;
Для кнопки «/»
procedure TForm1.ButtonDIVClick(Sender: TObject);
begin
i:=StrToFloat(Edit1.Text);
mode:=4;
Edit1.Text:='';
end;
Кратко поясним, что мы сделали. При нажатии на кнопку мы сохраняем значения введенного числа в переменной I, затем переменной mode присваиваем значения действия. Теперь у нас есть все необходимые данные для обработки события OnClick для кнопки "=".
procedure TForm1.ButtonRezultClick(Sender: TObject);
begin
case mode of
1:begin
p:=StrToFloat(Edit1.Text);
r:=i+p;
Edit1.Text:=FloatToStr(r);
end;
2:begin
p:=StrToFloat(Edit1.Text);
r:=i-p;
Edit1.Text:=FloatToStr(r);
end;
3:begin
p:=StrToFloat(Edit1.Text);
r:=i*p;
Edit1.Text:=FloatToStr(r);
end;
4:begin
p:=StrToFloat(Edit1.Text);
r:=i/p;
Edit1.Text:=FloatToStr(r);
end;
end;
end;
Создадим обработчик для кнопки С (Сброс):
procedure TForm1.ButtonResetClick(Sender: TObject);
begin
edit1.Text:='';
r:=0; i:=0; p:=0;
end;
Чтобы при появлении окна калькулятора фокус был передан окну ввода напишем обработчик OnShow для Form1.
procedure TForm1.FormShow(Sender: TObject);
begin
edit1.SetFocus;
end;
Аналогичным образом, сделаем так, чтобы при нажатии кнопок «=» и «С», а также кнопок математических операций, фокус передавался окну ввода.
Выполнить самостоятельно
(создание простенького калькулятора):
1. Настроить параметры формы таким образом, чтобы размеры окна нельзя было изменить и кнопка «Развернуть /Maximize/» отсутствовала.
2. Добавить кнопку «,» для ввода разделителя между целой и дробной частью числа. Для этого в обработчик OnClick кнопки добавим:
if pos(',',edit1.Text)<>0 then exit // если символ «,» в строке уже имеется
else edit1.Text:=edit1.Text+','
3. Добавить кнопку «+/-» для изменения знака числа на противоположный.
procedure TForm1.BitBtn2Click(Sender: TObject);
var s:string;
begin
s:=Edit1.Text;
if s[1]='-' then delete(s,1,1) else
insert('-',s,1);
edit1.Text:=s;
end;
4. Запретить ввод с клавиатуры в текстовое окно любых символов кроме цифровых и «-» (минус), «,» (запятая) – смотрим в конспект лекций.
5. Создать кнопки для следующих математических операций:
· возведение в степень r:=exp(p*ln(i));
· целочисленное деление (div) и остаток от деления (mod)– для преобразования типов использовать функцию round;
· возведение в квадрат (sqr);
· извлечение квадратного корня (sqrt);
· вычисления натурального и десятичного логарифма;
· вычисления sin-са, cos-са и tg-са аргумента;
|
· вычисления экспоненты (e^x);
· для вычисления 1/x;
· ввода числа p;
· для нахождения факториала числа.
Результатом выполнения данной лабораторной работы являются созданный согласно заданию программный продукт. Выполненное задание должно быть предъявлено преподавателю в электронном виде. В ходе защиты лабораторной работы студент должен продемонстрировать свои навыки работы с изученными компонентами и методами проектирования интерфейса пользователя.
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!