Графика в Borland Pascal

Автор: Пользователь скрыл имя, 21 Ноября 2011 в 18:11, курсовая работа

Описание работы

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

Содержание

Введение 3
Общая часть 4
Алгоритм. Свойства алгоритмов. Виды алгоритмов 4
Среда программирования ИИО Borland Pascal 6
Алфавит языка Borland Pascal 7
Структура программы 9
Типы данных 10
Операторы ввода- вывода 11
Операции. Стандартные функции 13
Условный оператор 17
Операторы цикла 17
Оператор выбора 20
Одномерные и двумерные массивы 21
Строки. Процедуры и функции для работы со строками 23
Подпрограммы 26
Множества 26
Записи 27
Файлы 27
Динамическая и статистическая память 30
Динамические типы данных 31
Модуль Graph 34
Модуль Crt 35
Модули и модульное программирование 36
2 Постановка задачи 39
3 Описание входных и выходных переменных, процедур и функций 40
4 Проект решения задания 44
5 Текст программы 45
6 Листинг результатов 63
7 Список использованных источников 68
8 Графическая часть

Работа содержит 1 файл

Отчёт (NIKITA).doc

— 408.50 Кб (Скачать)

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

        описывается только указатель на начало поля памяти; доступ к значению, хранящемуся в поле,  осуществляется по указателю;

      оперативная память для размещения структуры  выделяется динамически – во время выполнения программы, по запросу;

      объем выделяемой памяти не фиксирован и  может быть неизвестен до выполнения программы;

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

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

      1.18 Динамические типы данных 
       

      К динамическим типам данных относятся:

  • очередь;
  • стек;
  • связанный список;
  • двоичное дерево.

      Очередь представляет собой линейный список данных, доступ к которому осуществляется по принципу "первый вошел, первый вышел" /иногда сокращенно его называют методом доступа FIFO/. Элемент, который был первым поставлен в очередь, будет первым получен при поиске. Элемент, поставленный в очередь вторым, при поиске будет получен также вторым и т.д. Этот способ является единственным при постановке элементов в очередь и при поиске элементов в очереди. Применение очереди не позволяет делать прямой доступ к любому конкретному элементу.

      Организация стека в определенном смысле противоположна организации очереди, поскольку  здесь используется доступ по принципу "последней вошел, первый вышел" /такой метод доступа иногда называют методом LIFO/. Представим себе стопку тарелок. Нижняя тарелка из этой стопки будет использована последней, а верхняя тарелка /которая была установлена в стопку последней/ будет использована первой. Стеки широко используются в системном программном обеспечении, включая компиляторы и интерпретаторы.

      Исторически сложилось так, что две основные операции для стека - поместить в  стек и выбрать из стека - получили название соответственно "затолкнуть" и "вытолкнуть". Поэтому для реализации стека необходимо создать две функции: "posh" /затолкнуть/, которая помещает элемент в вершину стека, и "pop" /вытолкнуть/, которая выбирает из вершины стека значение. Необходимо также предусмотреть определенную область в памяти, где фактически будет храниться стек. Для этого можно использовать массив или можно выделить область памяти, используя средство динамического распределения памяти, предусмотренное в языке Паскаль. Как и при работе с очередью при выборке значения из стека элемент будет потерян, если его не сохранить где-нибудь в памяти

      Очереди и стеки обладают двумя общими свойствами. Во-первых, доступ к находящимся  в них данных подчиняется строгим  правилам. Во-вторых, операции поиска имеют  разрушительный характер. Если выбранный из стека или очереди элемент не будет где-нибудь сохранен, то он будет потерян. Кроме того, стеки и очереди для своей работы требуют наличия непрерывной области памяти /непрерывность должна обеспечиваться по крайней мере логически.

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

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

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

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

      При описании деревьев используется специальная  терминология. Первый элемент дерева называется его корнем. Каждый элемент  называют вершиной /или листом/ дерева, а часть дерева носит название поддерева. Вершина, которая не имеет поддеревьев, называется терминальной вершиной. Высота дерева равна числу уровней вершин в дереве. В дальнейшем при рассмотрении деревьев можно считать, что в памяти они располагаются так же, как на бумаге.

      [3,26-34] 
 

      1.19 Модуль Graph. Процедуры и функции 
 

      Экран дисплея ПК представляет собой прямоугольное  поле, состоящее из большого количества точек. Дисплей может работать в  текстовом и графическом режимах. Но в отличие от текстового режима в графическом режиме имеется возможность изменять цвет каждой точки.

      Чтобы  сделать процесс графического программирования более эффективным, фирма Borland International разработала специализированную библиотеку Graph (в этом библиотечном модуле содержится 79 графических процедур, функций, различных стандартных констант и типов данных), набор драйверов, позволяющих работать с разными типами мониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.

      Аппаратная  поддержка графики ПК обеспечивается двумя основными модулями: видеомонитором и видеоадаптером. Какой бы адаптер ни был установлен на компьютере, мы можем использовать один и тот же набор графических процедур и функций Турбо Паскаля благодаря тому, что их конечная настройка на конкретный адаптер осуществляется автоматически. Эту настройку выполняют графические драйверы.

      Запуск  и завершение работы в графической  системе осуществляется следующим  образом:

      1. Подключить модуль Graph (библиотеку графических процедур): normal">uses Graph;

      2. Установить графический режим:

    • - описываем переменные, которые определяют графический драйвер и монитор:
    • var gd, gm: integer;
    • - задаем команду ПК для самовыбора значений переменных:
    • gd:=Detect;(значение gm после команды gd:=detect; определяется  автоматически)
    • - инициализируем графический режим:
    • InitGraph( gd, gm,’ указывается путь к драйверу, чем подробнее, тем лучше’)

      С этого момента все графические  средства доступны пользователю.

      3. Завершить работу в графической системе: CloseGraph;  

      Для построения изображений на экране используется система координат. Отсчет начинается от верхнего левого угла экрана, который  имеет координаты (0,0). Значение Х (столбец) увеличивается слева направо, значение Y (строка) увеличивается сверху вниз. Чтобы строить изображения, необходимо указывать точку начала вывода. В текстовых режимах эту точку указывает курсор, который присутствует на экране. В графических режимах видимого курсора нет, но есть невидимый текущий указатель CP (Current Pointer). Фактически это тот же курсор, но он невидим.  
 

      1.20 Модуль Crt 
 

      Модуль CRT (Cathod ray tube - электронно-лучевая трубка) один из наиболее часто используемых. Он содержит процедуры обслуживания процессов вывода информации на экран, ввода с клавиатуры, а также  процедуры и функции вывода звуковых сигналов, работы с окнами на экране и вывода цветных текстовых строк на экран.  

      При работе с экраном через модуль CRT весь экран разбивается на отдельные  строки, а каждая строка - на отдельные  позиции, в каждую из которых можно поместить один символ (в том числе и пробел). Таким образом весь экран разбивается на отдельные неделимые прямоугольные эле- менты. Для каждого элемента можно задать цвет фона (задний план) и цвет символа (передний план). Кроме того, в случае необходимости символ можно сделать мерцающим. 
 

      1.21 Модули и модульное программирование 
 

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

      В языке Turbo Pascal модуль (Unit) по определению считается отдельной программой. Если подпрограмма является структурным элементом Pascal-программы и не может существовать вне ее, то модуль представляет собой отдельно хранимую и независимо компилируемую единицу.

      В самом общем виде модуль представляет собой совокупность программных ресурсов, предназначенных для использования другими модулями и программами. Под ресурсами в данном случае понимаются любые программные объекты языка Turbo Pascal - константы, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой - его объекты используются другими программными единицами.

      Все программные ресурсы модуля можно  разбить на две части:

  • объекты, прямо предназначенные для использования другими программами или модулями;
  • объекты рабочего характера.

      В соответствии с этим модуль, кроме  заголовка, имеет две основные части, называемые интерфейсом и реализацией.

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

      Заголовок модуля составляется из служебного слова Unit и следующего за ним идентификатора, являющегося именем модуля:

      UNIT <имя модуля>;   .

      Интерфейсная часть начинается со служебного слова Interface, за которым следует совокупность обычных описаний. Часть реализации начинается служебным словом Implementation, за которым идут описания скрытых объектов. Завершает модуль, как и программу, служебное слово End с точкой.

      Кроме перечисленных частей, модуль может  содержать так называемый раздел инициализации, предназначенный для  установки начальных значений переменных модуля перед его использованием. Этот раздел следует после раздела  реализации, начинается со служебного слова Begin и содержит последовательность операторов. Таким образом, общая структура модуля может быть представлена следующей схемой:

      Unit <имя модуля>;

      Interface

         <Описания видимых  объектов>

      Implementation

         <Описания скрытых  объектов>

      Begin

         <Операторы инициализации  объектов модуля>

      End.

Информация о работе Графика в Borland Pascal