Ход выполнения
Практическая работа № 3
«Разветвляющие вычислительные процессы. Условный оператор if»
Задача 2.2. Выстрел по мишени
Дана заштрихованная область (рис.1) и точка с координатами (x,y). Написать программу, определяющую, попадает ли точка в область. Результат вывести в виде текстового сообщения.
Рис. 1. Мишень для задачи
Запишем условия попадания точки в область в виде формул. Область можно описать как круг, пересекающийся с треугольником. Точка может попадать либо в круг, либо в треугольник, либо в их общую часть:
Первое условие задаёт попадание точки в круг, второе – в треугольник. Переменные x и y – вещественного типа.
Ход выполнения
Открываем систему Lazarus. Далее Файл – Создать… - Приложение. Данное приложение необходимо сохранить в свою папку. Название проекта – ProShot, название модуля – UnitShot.
Переименуйте созданную вами форму. Для этого перейдите в Свойства – Caption – введите «Область мишени».
На открывшейся форме добавляем надпись типа TLabel(Панель Standard). В свойствах кнопки меняем её текст Свойства – Caption – «Введите значение X:». Измените размер шрифта – Font – Size – 12.
Аналогичным образом создаём вторую надпись «Введите значение Y:».
После добавляем поле TEdit для ввода значений х: Панель Standard – TEdit. Далее применяем Свойства – Name – EditX; Text– очистить.
Аналогично добавляем второе поле для значения y (Name-EditY).
Добавляем кнопку: Панель Standard – TButton. Далее применяем Свойства – Caption – «Результат»; Измените имякнопки – Name– ButtonRes.
Снова добавляем надпись типа TLabelдля вывода результата. В свойствах кнопки убираем текст Свойства – Caption – очистить. Измените имя – Name– LabelRes. Измените размер шрифта – Font – Size – 10.
После того, как были расположены все основные элементы на форму, приступаем к написанию кода.
Создадим процедуру, для этого щелкните левой клавишей мыши по кнопке «Результат» 2 раза. Откроется окно кода, и автоматически создастся процедура: procedure TForm1.ButtonResClick(Sender: TObject);
Для начала обозначим исходные данные и разместим их в разделе описания переменных:
procedure TForm1.ButtonResClick(Sender: TObject);
var
x,y : real;
Далее описываем составной оператор begin.. end.
begin
x:= StrToFloatDef(EditX.text,0); {перевод введённого символа в число;
пустое значение обнуляется;
присваивание числа к значению X}
y:= StrToFloatDef(EditY.text,0);
if (sqr(x)+sqr(y)<=1) or (x<=0) and (y<=0) and (y >=-x-2)
then
LabelRes.Caption:= 'Точка попадает в область '
else
LabelRes.Caption:= 'Точка не попадает в область ';
if (editx.Text<>'0') and (x=0) then LabelRes.Caption:='Ошибка ввода';
if (edity.Text<>'0') and (y=0) then LabelRes.Caption:='Ошибка ввода';
end;
После написания кода, запустите Компиляцию программы .
В результате у вас получится следующая форма вашей программы (Рис.2):
Рис. 2 – Готовая форма программы