Янв
10th

Работа с графикой в PascalABC

Графическое изображение, созданное в PascalABCПосле запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно.

Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой.

С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.

Подключение осуществляется в разделе описаний.

Формат подключения модуля GraphABC:

Uses GraphABC;

(ещё…)

Март
26th

Урок 35. Построение выпуклой оболочки.

Урок из серии “Геометрические алгоритмы”

Вычисление выпуклой оболочки важно не только само по себе, но и как промежуточный этап для многих задач вычислительной геометрии.  Например, задача о наиболее удаленных точках.  Дано множество из  N точек. Нужно выбрать пару максимально удаленных друг от друга точек.

Выпуклой оболочкой конечного числа точек N называется наименьший, выпуклый многоугольник, содержащий все точки из N (некоторые из точек могут быть внутри многоугольника, некоторые на его сторонах, а некоторые будут его вершинами).

Наглядно это можно представить себе так: в точках N вбиваются гвозди, на которые натянута резинка, охватывающая их все – эта резинка и будет выпуклой оболочкой множества гвоздей.

Задача. На плоскости задано множество S точек. Найти вершины выпуклой оболочки этого множества.

(ещё…)

Март
23rd

Урок 34. Площадь многоугольника

Урок из серии «Геометрические алгоритмы»

Здравствуйте, дорогой читатель.

Решения многих задач вычислительной геометрии основывается на нахождении площади многоугольника. На этом уроке мы выведем формулу для вычисления площади многоугольника через координаты его вершин, напишем функцию для вычисления этой площади.

Задача. Вычислить площадь многоугольника, заданного координатами своих вершин, в порядке их обхода по часовой стрелке.

(ещё…)

Март
22nd

Урок 33. Точка в многоугольнике

Урок из серии “Геометрические алгоритмы

Здравствуйте, дорогой читатель! Продолжим знакомиться с геометрическими алгоритмами.

Полученный на прошлом уроке метод нахождения пересечения отрезков позволяет очень красиво решить задачу на принадлежность точки многоугольнику.

Задача. Даны точка P и простой N-угольник. Определить, принадлежит ли точка многоугольнику.

(ещё…)

Март
21st

Урок 32. Пересекаются ли два отрезка?

Урок из серии «Геометрические алгоритмы»

Здравствуйте,  дорогой читатель. Напишем еще три новые функции.

Функция LinesCross() будет определять, пересекаются ли два отрезка. В ней взаимное расположение отрезков определяется с помощью векторных произведений. Для вычисления векторных произведений напишем  функцию – VektorMulti().

Функция RealLess() будет использоваться для реализации операции сравнения  “<” (строго меньше) для вещественных чисел.

(ещё…)

Март
21st

Урок 31. Проверка принадлежности точки отрезку

Урок из серии «Геометрические алгоритмы»

Здравствуйте, дорогой читатель!

Сегодня мы рассмотрим еще одну типовую задачу из серии геометрические алгоритмы. Напишем функцию, которая будет проверять принадлежность произвольной точки отрезку, заданному координатами своего начала и конца.

Для реализации операций сравнения над вещественными данными напишем еще две функции: функцию EqPoint(), которая ,будет проверять, совпадают ли две точки на плоскости и функцию RealMoreEq() , которую будем использовать для проверки отношения “>=” (больше или равно).   Причина ввода специальных функций нам уже известна.

(ещё…)

Март
20th

Урок 30. Определение координат точки пересечения двух линий

Урок из серии «Геометрические алгоритмы»

Здравствуйте, дорогой читатель!

Продолжим знакомиться с геометрическими алгоритмами. На прошлом уроке мы нашли уравнение прямой линии по координатам двух точек. У нас получилось уравнение вида:

clip_image002

Сегодня мы напишем функцию, которая по уравнениям двух прямых линий будет находить координаты их точки пересечения (если такая имеется). Для проверки равенства вещественных чисел, будем использовать специальную функцию RealEq().
(ещё…)

Март
19th

Урок 29. Нахождение уравнение прямой по двум точкам

Урок из серии «Геометрические алгоритмы»

Здравствуйте, дорогой читатель!

Сегодня мы начнем изучать алгоритмы, связанные с геометрией. Дело в том, что олимпиадных задач по информатике, связанных с вычислительной геометрией, достаточно много и решение таких задач часто вызывают затруднения.

За несколько уроков мы рассмотрим ряд элементарных подзадач, на которые опирается решение большинства задач вычислительной геометрии.

На этом уроке мы составим программу для нахождения уравнения прямой, проходящей через заданные две точки.  Для решения геометрических задач нам понадобятся некоторые знания из вычислительной геометрии. Часть урока мы  посвятим знакомству с ними.

(ещё…)

Фев
12th

Урок 28. Сортировка массива

Урок из серии: “Программирование на языке Паскаль”

Процесс обработки и поиска информации при решении многих задач  проходит быстрее и эффективнее, если данные расположены в определенном порядке. Например, различные списки студентов, учащихся, сотрудников – в алфавитном порядке, числовые данные от большего значения к меньшему (или наоборот) и т.д.

Существует довольно много различных методов сортировки массивов, отличающихся друг от друга степенью эффективности, под которой понимается количество сравнений и количество обменов, произведенных в процессе сортировки. Рассмотрим подробно некоторые из них.

(ещё…)

Фев
2nd

Урок 27. Вставка элементов в массив

Урок из серии: “Программирование на языке Паскаль”
Продолжим знакомиться с алгоритмами обработки одномерных массивов. Сегодня рассмотрим алгоритмы для вставки элементов в массив. Как и в алгоритмах с удалением элементов, будем различать два случая: вставку одного элемента и вставку нескольких элементов. Алгоритмы получаются разные.

Вставка одного элемента

Вставить элемент можно до или после данного элемента, номер этого элемента можно вводить с клавиатуры или искать при определённых условиях.
Рассмотрим вставку элемента после элемента с данным номером, номер этого элемента будем вводить с клавиатуры.

Рассмотрим несложную задачу.
(ещё…)