Внастоящее время в компьютерном мире существует множество языков программирования
Вид материала | Документы |
Содержание2.2. Создание программы «попадание точки в фигуру» Events в Object Inspector Name для левого нижнего квадратика – пусть его имя ShapeN |
- Календарный план учебных занятий по дисциплине «Языки и технология программирования», 43.35kb.
- Лекция №3. Состав и работа системы программирования Турбо Паскаль Язык программирования, 84.43kb.
- Лекция 3 Инструментальное по. Классификация языков программирования, 90.16kb.
- Внастоящее время существует большой социальный заказ на психологические методы профилактики, 117.85kb.
- Методические указания для выполнения лабораторных работ и курсовой работы содержание, 1317.09kb.
- Программа дисциплины Языки и технологии программирования Семестры, 20.19kb.
- Теория автоматов и формальных языков составил доцент А. А. Мальцев, 38.01kb.
- Внастоящее время в мире повсеместно и во все более разрастающихся масштабах происходит, 373.75kb.
- Вмире существует множество замечательных повестей, романов, рассказов и стихов, главными, 21kb.
- Пояснительная записка, 185.11kb.
2.2. Создание программы «попадание точки в фигуру»
Задача: Дана сложная фигура, вписанная в квадрат с координатами: левый нижний угол (5,5), верхний правый угол (20,20). Требуется написать программу для определения попадания точки с введенными координатами в указанную фигуру. Примерный вид окна программы показан на рис. 2.6.
Процесс создания программы происходит по следующему алгоритму:
- Запустить программу Delphi;
- Сохранить проект как «Work2», модуль назвать «Main»;
- Создать образ окна:
- Изменить заголовок на «Попадание точки в фигуру»;
- Создать изображение фигуры:
- Поместить в форму элемент Shape, вкладка Additional, значок ;
- Изменить свойства объекта:
- Изменить размер объекта для обеспечения попадания в окно 3 элементов по вертикали и трех по горизонтали, элемент должен быть квадратом;
- Изменить цвет квадратика (свойство Brush/Color и Pen/Color);
- Изменить размер объекта для обеспечения попадания в окно 3 элементов по вертикали и трех по горизонтали, элемент должен быть квадратом;
- С
копировать образ квадратика в буфер обмена (при классической раскладке клавиатуры в Delphi это комбинация);
- Поместить на форму 7 копий квадратика из буфера обмена (
);
- Разместить квадратики в фигуру «квадратный бублик» (см. рис.2.6). Необходимо обеспечить пустое пространство внизу и слева от фигуры для размещения начала координат – в левом нижнем углу фигуры должен «поместиться» как бы еще один квадратик;
- Поместить на форму 7 копий квадратика из буфера обмена (
- Создать 2 элемента для ввода координат точки:
- Поместить на форму 2 элемента SpinEdit, вкладка Samples, значок ;
- Назвать один элемент SECoordX (для координаты X) и SECoordY (для координаты Y) свойство Name (в дальнейшем изменяемое свойство будет обозначаться после стрелки);
- Настроить минимальное возможное значение вводимого числа 0, максимальное – 25, значение по умолчанию 0 и шаг изменения величины 1 соответственно MinValue, MaxValue, Value и Increment;
- Добавить надписи к полям ввода:
- Поместить 2 элемента Label, вкладка Standard, значок ;
- Настроить надписи на «Координата X» и «Координата Y» Caption;
- Добавить метку для вывода результата попадания точки:
- Поместить элемент Label, вкладка Standard, значок ;
- Назвать элемент LResult Name;
- Изменить заголовок на «Мимо» Caption;
- Добавить кнопки для запуска вычислений и выхода из программы:
- Добавить 2 элемента Button, вкладка Standard, значок ;
- Назвать кнопку для выхода BQuit, а кнопку для вычисления BOk Name;
- Изменить заголовки кнопок на «Выход» и «Ok» Caption;
- Образ окна создан!
- Запрограммировать выход – щелкнуть на кнопке BQuit и ввести команду Close;
- Проанализировать форму фигуры для создания алгоритма – в нашем случае проверить попадание в большой квадрат и проверить не попадает ли точка во внутренний квадрат;
- Вернуться на форму (клавиша
) и запрограммировать кнопку BOk:
- Щелкнуть дважды на кнопке BOk;
- Записать оператор проверки координат. (Координаты можно получить у элементов SECoordX и SECoordY через свойства Value – обращение к свойству объекта осуществляется через «точку» - например: SECoordX.Value дает значение свойства Value элемента SECoordX. SECoordX.Value дает значение введенной координаты X, SECoordY.Value дает значение введенной координаты Y.):
If (((SECoordX.Value >= 5) and (SECoordX.Value <= 20) and
{ попадание Х в большой квадрат}
(SECoordY.Value >=5) and (SECoordY.Value <= 20))and
{ попадание Y в большой квадрат}
Not ((SECoordX.Value >10) and (SECoordX.Value < 15) and
{не попадание Х в малый квадрат}
(SECoordY.Value > 10) and (SECoordY.Value < 15)))
{ не попадание Y в малый квадрат}
then LResult.Caption := ‘Попал’{Вывод сообщения «Попал» }
else LResult.Caption := ‘Мимо’;{Вывод сообщения «Мимо» }
- Запустить программу
- Для улучшения программы необходимо:
- Перерисовывать результат сразу при вводе координат;
- Добавить «точку» для визуализации положения точки.
- Для реализации пункта 14а необходимо:
- Выбрать элементы SECoordX и SECoordY (удерживая клавишу
щелкнуть сначала на одном элементе, затем на другом – оба элемента будут отмечены рамочкой - это позволит настраивать общие события для выделенных элементов одновременно);
- Настроить событие (вкладка Events в Object Inspector) onChange так, чтобы оно указывало на событие BOkClick (выбрать это событие из списка). Таким образом, для этих элементов событие onChange будет равносильно событию onClick для кнопки BOk – при смене координат сразу будет выполняться нажатие кнопки «Ok»;
- Так как кнопка «Ok» обрабатывается автоматически можно сделать эту кнопку «невидимой» - изменить свойство Visible в значение false для объекта BOk. При запуске программы кнопка «Ok» видна не будет.
- Настроить событие (вкладка Events в Object Inspector) onChange так, чтобы оно указывало на событие BOkClick (выбрать это событие из списка). Таким образом, для этих элементов событие onChange будет равносильно событию onClick для кнопки BOk – при смене координат сразу будет выполняться нажатие кнопки «Ok»;
- Для реализации пункта 14b необходимо:
- Добавить точку на экран – элемент Shape, вкладка Additional, значок ;
- Изменить свойства этого элемента:
- Name изменить на значение SPoint;
- Shape изменить на stCircle;
- Width изменить на 3 – ширина точки будет равна 3 пикселя;
- Height изменить на 3 – высота точки.
- Name изменить на значение SPoint;
- Пересчитать начало координат «виртуальные» системы координат программы в координаты экрана (координаты экрана отсчитываются с верхнего левого угла экрана вниз и вправо):
- Необходимо выяснить свойство Name для левого нижнего квадратика – пусть его имя ShapeN;
- Элемент ShapeN имеет свои координаты левого верхнего угла – свойства Top и Left; также этот элемент имеет свойства ширины и высоты – Width и Height, таким образом, координаты начала координат равны: ShapeN.Left – ShapeN.Width и ShapeN.Top + 2*ShapeN.Height;
- Рассчитать цену деления координатной сетки: для этого необходимо поделить длину и ширину квадратика на 5. ShapeN.Width div 5 даст шаг по координате X, а ShapeN.Height div 5 - по координатеY.
- Необходимо выяснить свойство Name для левого нижнего квадратика – пусть его имя ShapeN;
- Изменить текст события BOkOnClick:
- Щелкнуть на кнопке BOk;
- В начале процедуры дописать текст присвоения «точке» (объект SPoint) новых координат – к началу координат добавить величину X или Y умноженную на шаг координате X или Y:
- SPoint.Left := ShapeN.Left – ShapeN.Width + SECoordX.Value * (ShapeN.Width div5);
- SPoint.Top := ShapeN.Top + 2*ShapeN.Height - SECoordY.Value * (ShapeN.Height div5);
- Щелкнуть на кнопке BOk;
- Запустить программу (клавиша
)