Ход выполнения

Практическая работа № 3

«Разветвляющие вычислительные процессы. Условный оператор if»

Задача 2.2. Выстрел по мишени

 

Дана заштрихованная область (рис.1) и точка с координатами (x,y). Написать программу, определяющую, попадает ли точка в область. Результат вывести в виде текстового сообщения.

 

Рис. 1. Мишень для задачи

 

Запишем условия попадания точки в область в виде формул. Область можно описать как круг, пересекающийся с треугольником. Точка может попадать либо в круг, либо в треугольник, либо в их общую часть:

Первое условие задаёт попадание точки в круг, второе – в треугольник. Переменные x и y – вещественного типа.

Ход выполнения

Открываем систему Lazarus. Далее ФайлСоздать… - Приложение. Данное приложение необходимо сохранить в свою папку. Название проекта – ProShot, название модуля – UnitShot.

Переименуйте созданную вами форму. Для этого перейдите в СвойстваCaption – введите «Область мишени».

На открывшейся форме добавляем надпись типа TLabel(Панель Standard). В свойствах кнопки меняем её текст СвойстваCaption – «Введите значение X:». Измените размер шрифта – FontSize12.

Аналогичным образом создаём вторую надпись «Введите значение Y:».

 

После добавляем поле TEdit для ввода значений х: Панель StandardTEdit. Далее применяем СвойстваNameEditX; Text– очистить.

Аналогично добавляем второе поле для значения y (Name-EditY).

Добавляем кнопку: Панель StandardTButton. Далее применяем СвойстваCaption – «Результат»; Измените имякнопки Name– ButtonRes.

Снова добавляем надпись типа TLabelдля вывода результата. В свойствах кнопки убираем текст СвойстваCaptionочистить. Измените имяName– LabelRes. Измените размер шрифта – FontSize10.

После того, как были расположены все основные элементы на форму, приступаем к написанию кода.

Создадим процедуру, для этого щелкните левой клавишей мыши по кнопке «Результат» 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 – Готовая форма программы