Функциональное и логическое программирование

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Содержание

 

1.Техническое задание

1.1 Постановка задачи. Вариант 30.

1.1.1 Программа на языке F#:

1.1.2 Программа на языке LISP:

1.2 Входные данные

1.3 Выходные данные

2. Руководство программиста

2.1 Чтение данных из файла

2.2 Идентификация фигуры

2.2.1 Поиск первой точки фигуры

2.2.2 Захват фигуры

2.2.3 Поиск треугольников

2.2.4 Алгоритм поиска треугольника

2.2.5 Проверка замкнутости фигуры

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

2.2.7 Поиск наиболее отдаленной от отрезка точки

2.3 Построение измененного треугольника

2.4Вывод результата работы программы

2.4.1 Вывод обработанного изображения

2.4.2 Вывод информации о распознанных фигурах

2.5Применение макросов в программе

2.6 Блок-схема программы

3. Руководство пользователя

Заключение

Список использованной литературы

 

1.Техническое задание

 

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

Microsoft Visual Studio 2008.

FSharp.

clisp.exe или любое другое инструментальное средство языка Lisp.

txt2bmp.exe - осуществляет преобразование файлов форматов bmp, png в текстовый файл и наоборот. Можно использовать другие исполняемые программы.

 

.1 Постановка задачи. Вариант 30

 

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

Требуется написать две программы:

1.Программа на языке F#.

.Программа на языке Lisp.

 

.1.1 Программа на языке F#:

1.Имеет графический интерфейс.

.Отображает обрабатываемое изображение.

.Запускает батник, который выполняет следующие действия: .запускает txt2bmp.exe - осуществляет преобразование графического файла в текстовый файл;.запускает программу, написанную на языке LISP;.запускает txt2bmp.exe - осуществляет преобразование текстового файла в графический файл.

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

 

.1.2 Программа на языке LISP:

1.Считывает текстовый файл в память.

.Идентифицирует фигуры.

.Преобразует фигуры.

.Сохраняет результат в текстовый файл, а также в отдельный файл лог (информацию: какие фигуры распознаны, преобразованы с указанием координат и размеров).

Кроме этого необходимо выполнить следующие пункты:

1.Программы должны корректно обрабатывать нештатные ситуации

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

.При написании программы необходимо разработать собственные макросы.

 

.2 Входные данные

 

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

 

Рис.1 Пример корректных исходных данных.

 

Рис. 2 Пример Некорректных исходных данных.

 

Треугольник считается некорректным и игнорируется в случае, если:

.Треугольник не замкнут

.Треугольник пересекается с другой фигурой

.Сторона треугольника не идеально прямая.

 

.3 Выходные данные

 

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

 

Рис. 3 Пример результата работы программы.

треугольник программа преобразование

 

2.Руководство программиста

 

2.1 Чтение данных из файла

 

Сначала преобразуем графический файл в текстовый, используя утилиту txt2bmp. В результате получает текстовый файл out.txt заполненный нулями и единицами. 0 - цвет пикселя изображения белый, 1 - цвет пикселя чёрный.

Текстовый файл считываем в список. Каждый элемент списка - строка нулей и единиц считанная из текстового файла.

 

Рис.1. Хранение изображения в памяти.

 

.2 Идентификация фигуры

 

.2.1 Поиск первой точки фигуры

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

 

Рис.2. Обход матрицы изображения. Поиск первой точки.

 

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

 

.2.2 Захват фигуры

Координаты первой единичной ?/p>