Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 2).doc
Скачиваний:
98
Добавлен:
15.04.2015
Размер:
2.24 Mб
Скачать

Модуль Graph

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек -пикселов (pixel, сокращение от picture element). Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали (разрешение экрана) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы — графического драйвера.

В состав оболочки входят несколько драйверов, каждый из которых может работать в нескольких режимах. Режим устанавливается при инициализации графики либо автоматически, либо программистом. Самый «мощный» режим, поддерживаемый модулем Graph, — 640 х 480 точек, 16 цветов.

Модуль Graph обеспечивает:

  • вывод линий и геометрических фигур заданным цветом и стилем;

  • закрашивание областей заданным цветом и шаблоном;

  • вывод текста различным шрифтом, заданного размера и направления;

  • определение окон и отсечение по их границе;

  • использование графических спрайтов и работу с графическими страницами.

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

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

Эти параметры устанавливаются с помощью соответствующих процедур. Возможные значения параметров определены в модуле Graph в виде многочисленных констант. Например, константа DottedLn определяет пунктирную линию, а константа CenterText — выравнивание текста по центру .отведенного ему поля.

Структура графической программы

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

  • Подключение модуля Graph.

  • Перевод экрана в графический режим.

  • Установка параметров изображения.

  • Вывод изображения.

  • Возврат в текстовый режим.

  1. Записи

В программах часто возникает необходимость логического объединения данных. Например, база данных предприятия содержит для каждого сотрудника его фами­лию, дату рождения, должность, оклад и т. д.; программа моделирования движения поездов — пункты отправления и прибытия, время, количество вагонов и многое другое. Однотипные данные, как вы уже знаете, организуются в массивы, а для объединения разнотипных данных предназначен тип «запись». Он вводится с по­мощью ключевого слова record. Элементы записи называются полями.

Синтаксическая диаграмма:

type

имя_типа = record

описание 1-го поля записи;

описание 2-го поля записи;

……………….

описание n-го поля записи;

end;

Поля записи могут быть любого типа, кроме файлового.

Переменные типа «запись» описываются обычным образом. Можно задавать опи­сание типа при описании переменной, создавать массивы из записей, записи из массивов и т. д.:

С записями целиком можно делать то же, что и с массивами: присваивать одну запись другой, если они одного типа.

Все остальные действия выполняются с отдельными полями записи. Есть два способа доступа к полю записи: либо с помощью конструкции <имя_записи>.<имя_поля>, либо с использованием оператора присоединения with.

Оператор with удобнее использовать, если требуется обращаться к нескольким полям одной и той же записи.

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

const g : goods = (name : 'boots'; price : 200: number : 10);

Записи с вариантной частью

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

Синтаксическая диаграмма:

Вариантная часть может быть только одна, ее длина равна длине наибольшего из вариантов.

Записи с вариантной частью применяются только тогда, когда известно, что любая конкретная запись может содержать набор полей только из одного варианта. Какой именно вариант используется, можно определить по значению поля <вариант>, о форми­ровании значения которого должен позаботиться сам программист.

Поле варианта должно быть порядкового типа. Часто его делают перечисляемым.

Можно не хранить в записи поле варианта, в этом случае его имя не указывается.

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

  1. Файлы

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

Файловые типы языка Паскаль бывают стандартные и определяемые програм­мистом. Стандартными являются текстовый файл (text) и нетипизированный файл (file). Они описываются в программе, например, так:

var

ft : file;

fb : text;

Программист может определить файл, состоящий из элементов определенного типа. Такой файл называется компонентным, или типизированным:

var

fc : file of <тип_компонент>;

Компоненты могут быть любого типа, кроме файлового. Любой файл, в отличие от массива и записи, может содержать неограниченное количество элементов.

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

Типизированные и нетипизированные файлы хранят данные в том же виде, в котором они представлены в оперативной памяти, то есть при обмене с файлом происходит побитовое копирование информации.

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

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

Для понимания сути работы с файлами полезно разделить их по признаку нали­чия или отсутствия преобразования информации при выполнении чтения-запи­си и по способу доступа.

Классификация файлов Паскаля

Файл

Преобразование

Прямой доступ

Текстовый

+

Типизированный

+

Нетипизированный

+

Чтобы не путать файлы в программе и файлы на диске, переменные файлового типа называют логическими файлами, а реальные устройства и файлы на диске — физическими файлами. Их имена задаются с помощью строк символов, например:

'primer.pas' - имя файла в текущем каталоге;

'd:\pascal\input.txt' - полное имя файла

'CON' 'NUL' 'COM1' 'PRN' - имена устройств

Для организации ввода-вывода в программе необходимо выполнить следующие действия.

1. Объявить файловую переменную.

2. Связать ее с физическим файлом.

3. Открыть файл для чтения и/или записи.

4. Выполнить операции ввода-вывода.

5. Закрыть файл.

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

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

Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.

В Паскале есть подпрограммы, применяемые для файлов любого типа, а также подпрограммы для работы только с определенными типами файлов. Рассмотрим сначала первые.

Процедуры и функции для работы со всеми типами файлов

Процедуры

assign(var f; filename : string)

Связывает логический файл f с физическим файлом, имя которого задано в стро­ке filename. Если путь к файлу не задан, предполагается, что он находится в теку­щем каталоге.

close(var f)

Закрывает открытый логический файл. Вызов процедуры close необходим при завершении работы с файлом, который был открыт для записи, поскольку при ее выполнении происходит выгрузка содержимого буфера. При отсутствии проце­дуры close последнее содержимое буфера вывода может быть утеряно. Для вход­ных файлов закрывать файл не обязательно.

erase(var f)

Уничтожает физический файл, который был связан с файловой переменной f. Файл к моменту вызова этой процедуры должен быть закрыт.

rename(var f; newname : string)

Переименовывает физический файл на диске, связанный с логическим файлом f. Переименование возможно после закрытия файла.

reset(var f)

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

rewrite(var f)

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

Соседние файлы в папке WORD