Практическое занятие № 1
Тема: "Расчет элементарных выражений"
Цель работы: получить практические навыки по использованию стандартных функций Object Pascal при решении задач
Ход работы
Составить программу для нахождения значения сложных арифметических функций. При этом оформить программу таким способом:
Окно программы должно запускаться по центру экрана, выключить возможность изменения размера окна и убрать кнопку для разворачивания окна на весь экран. Название программы - "Расчеты функции". Для программы задайте произвольный значок-иконку
Указания: для формы задайте следующие свойства: BorderStyle=bsSingle (окно не растягивается), BorderIcons - biMaximize=false (нет кнопки развертывания окна), Caption=Расчеты функции (заголовок формы), Icon=укажите файл иконки (значок формы), Position=poDesktopCenter.
В окне разместите три текстовых поля для ввода исходных данных и одно поле для отображения результата. Каждое поле должно иметь разный цвет фона, всплывающую подсказку. Шрифт, размер и начертания символов в полях произвольные. В поле для ответа отключить возможность его редактирования с клавиатуры. Для каждого поля с помощью надписей присвойте горячие клавиши.
Указания: на форме разместите три текстовых поля Edit, для которых установите следующие свойства: Text очистить (начальное значение поля), Color=укажите цвет (цвет фона), Font=параметры шрифта в поле, Hint = текст всплывающей подсказки, ShowHint=true (отображение всплывающей подсказки). В поле Edit4 установите свойство Enabled=false (блокирование доступа к полю на форме). Возле каждого из полей разместите метку Label и в свойстве Caption введите текст для подписи каждого поля, при этом перед нужной буквой в надписи введите символ &. Для привязки надписи к полю в свойстве надписи FocusControl укажите имя поля, к которому привязывает надпись.
Разместите на форме кнопку для выполнения расчетов. Кнопка должна иметь рисунок и реакцию на нажатие Enter. При наведении указателя мыши на кнопку, вид указателя должен меняться на заданный.
Указания: на форме разместите кнопку BitButton, задав ей следующие свойства: Kind=bkYes (заготовка с рисунком), Default=true (реакция кнопки на клавишу Enter); Caption=Расчеты (надпись на кнопке), Cursor=любой вид указателя мыши при наведении на кнопку, Name=BitBtn1.
Разместите на форме кнопку для очистки всех текстовых полей. Кнопка должна иметь рисунок и реакцию на нажатие Escape. При наведении указателя мыши на кнопку, вид указателя должен меняться на заданный.
Указания: на форме разместите кнопку BitButton, задав ей следующие свойства: Kind=bkNo (заготовка с рисунком), Cancel=true (реакция кнопки на клавишу Enter); Caption=Расчеты (надпись на кнопке), Cursor=любой вид указателя мыши при наведении на кнопку, Name=BitBtn2.
Первая кнопка выполняет расчет функции вида:

Значения переменных A,B,C берутся из трех текстовых полей на форме. Значение переменной D запрашивается у пользователя с клавиатуры.
Перед выполнением расчета запрашиваться разрешение на выполнение операции.
Результат расчета появляется в четвертом поле.
Указания: в расчетах будем использоваеть функции, для работы с которыми подключите вверху кода формы модуль Math.
Двойным щелчком на кнопке откройте обработчик события OnClick кнопки и введите код:
procedure TForm1.BitBtn1Click(Sender: TObject);
//описываем переменные для расчетов
var a,b,c,d,rez:real;
begin
//выдаем запрос на выполнение расчетов
if Application.MessageBox('Вы подтверждаете расчет функции?',
'Подтвердите операцию',
MB_YesNo+MB_IconQuestion+MB_DefbUtton2)=IdYes then
begin
//если пользователь ответил "да", то выполняем расчет
//конвертируем текстовые поля в числа и записываем в переменные
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=StrToFloat (Edit3.Text);
//вводим четвертую переменную с клавиатуры
//и конвертируем введенное значение в число
d:=StrToFloat(InputBox('Введите четвертое значение для расчета','Окно ввода','1'));
//выполняем расчеты функции
rez:= (7+Exp(Sqrt(a)+1))/(Sqrt(Power(Ln(Power(b,2)-5),3)-4)+
Sin(Power(c,2)))+Power(sin(d),(3/4));
//выводим ответ в текстовое поле на форме
// при этом функция RoundTo округляет ответ до трех знаков
//цифра с минусом указывает на то,
//что округление выполняется до 3 знаков после запятой
Edit4.Text:=FloatToStr(RoundTo(rez,-3));
end;
end;
Выполните проверку: при a=1, b=8, c=3, d=2 ответ=2,644;
Вторая кнопка выполняет очистку всех полей на форме. При этом перед выполнением операции выдается запрос на подтверждение действия. Если разрешение получено (ответ "Да"), то все поля очищаются. Если нет, то ничего не происходит.
Указания: для события OnClick данной кнопки напишем код:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
//выдаем запрос на очистку полей
if Application.MessageBox('Вы подтверждаете очистку всех полей?',
'Подтвердите операцию',
MB_YesNo+MB_IconQuestion+MB_DefButton2)=IdYes then
begin
//если пользователь ответил "да", то очищаем поля
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
//устанавливаем курсор в первое поле
Edit1.SetFocus;
end;
end;
При выходе из программы необходимо запрашивать разрешение на выполнение данной операции;
Указания: для обработки выхода из программы выделите форму, в окне задания свойств перейдите на закладку "Events", найдите событие OnCloseQuery и в правом столбце нужного события выполните двойной щелчок. Откроется обработчик выбранного события, в котором введите код:
procedure TForm1.FormCloseQuery(Sender: TObject; Var CanClose: boolean);
begin
//выдаем запрос на выход из программы
if Application.MessageBox('Выйти из программы?',
'Выход',
MB_YesNo+MB_IconQuestion+MB_DefButton2)=IdNo then
//если пользователь ответил "нет", то окно программы не закрывается
CanClose:=false;
end;