
- •1. Постановка задачи:
- •Структура программы на Паскале
- •Классификация типов
- •Стандартные типы данных Логические типы Внутреннее представление
- •Операции
- •Целые типы Внутреннее представление
- •Операции
- •Стандартные функции и процедуры
- •Вещественные типы Внутреннее представление
- •Операции
- •Стандартные функции
- •Символьный тип
- •Порядковые типы
- •Алфавит языка
- •6.2. Идентификаторы
- •6.3. Константы
- •6.4. Выражения
- •6.5. Операции
- •Составной оператор
- •Оператор if выполняется так:
- •Оператор if может иметь сокращенную форму. Её синтаксис:
- •10.1. Процедура
- •10.2. Функция
- •10.3. Формальные и фактические параметры
- •10.3.1. Параметры-значения
- •Динамическая память
- •1. Объявление указателей
- •2. Выделение и освобождение динамической памяти
- •3. Процедуры и функции для работы с динамической памятью
- •Работа с файлами на языке программирования pascal. Типы файлов, команды для работы с файлами, типизированные, нетипизированные и текстовые файлы
- •Работа с файлами в языке Pascal. Файлы прямого доступа.
- •16. Графические возможности языка. Модуль Graph.
- •6.1. Массив
- •6.2. Строка типа string
- •6.3. Asciiz-строка
- •6.4. Запись
- •6.5. Множество
- •6.6. Файл
- •3.1. Алгоритмы обработки массивов
- •3.2. Ввод-вывод элементов одномерного массива
- •3.3. Вычисление суммы элементов массива
- •3.4. Вычисление произведения элементов массива
- •3.5. Поиска максимального элемента в массиве и его номера
- •3.6. Сортировка элементов в массиве
- •3.6.1. Сортировка методом "пузырька"
- •3.6.2. Сортировка выбором
- •3.6.3. Сортировка вставкой
- •3.7. Удаление элемента из массива
- •3.8. Примеры алгоритмов обработки массивов
- •20.Алгоритмы обработки массивов: алгоритмы на двумерных массивах.
- •21.Динамические структуры данных: очередь.
- •Занесение элемента в очередь
- •Извлечение элемента из очереди
- •Занесение элемента в стек
- •Извлечение элемента из стека
- •Абстрактные типы данных
- •Объекты и классы
- •Базовые принципы ооп
- •Пакетирование (инкапсуляция)
- •Наследование
- •Полиморфизм
- •Описание объектного типа
- •Иерархия типов (наследование)
- •Полиморфизм и виртуальные методы
- •Статические методы
- •Виртуальные методы
Работа с файлами в языке Pascal. Файлы прямого доступа.
Начало см.14 вопр.
Прямой доступ предполагает, что файл представляет собой линейную
последовательность блоков. Если файл содержит n блоков, то они нуме-
руются от 1 через 1 до n. Кроме того, вводится понятие условной гра-
ницы между блоками, при этом условная граница с номером 0 расположена
перед блоком с номером 1, граница с номером 1 расположена перед бло-
ком с номером 2 и, наконец, условная граница с номером n находится
после блока с номером n.
Реализация прямого доступа осуществляется с помощью функций и про-
цедур FileSize, FilePos, Seek и Truncate.
Функция FileSize( var f ): Longint возвращает количество блоков в
открытом файле f.
Функция FilePos( var f ): Longint возвращает текущую позицию в
файле f. Позиция в файле - это номер условной границы. Для только что
открытого файла текущей позицией будет граница с номером 0. Это зна-
чит, что можно записать или прочесть блок с номером 1. После чтения
или записи первого блока текущая позиция переместится на границу с
номером 1, и можно будет обращаться к ьлоку с номером 2. После проч-
тения последней записи значение FilePos равно значению FileSize.
Процедура Seek( var f; N: Longint) обеспечивает назначение текущей
позиции в файле (позиционирование). В параметре N должен быть задан
номер условной границы, предшествующей блоку, к которому будет произ-
водиться последующее обращение. Например, чтобы работать с блоком 4,
необходимо задать значение N, равное 3. Процедура Seek работает с от-
крытыми файлами.
Процедура Truncate( var f ) устанавливает в текущей позиции приз-
нак конца файла и удаляет (стирает) все последующие блоки.
Пример. Пусть на НМД имеется текстовый файл ID.DAT, который содер-
жит числовые значения действительного типа по два числа в каждой
строке - значения аргумента и функции соответственно. Количество пар
чисел не более 200. Составить программу, которая читает файл, значе-
ния аргумента и функции записывает в одномерные массивы, подсчитывает
их количество, выводит на экран дисплея и записывает в файл компо-
нентного типа RD.DAT.
Program F;
var
rArg, rF: Array[1..200] of Real;
inf: Text;
outf: File of Real;
n, l: Integer;
begin
Assign(inf,'ID.DAT');
Assign(outf,'RD.DAT');
Reset(inf);
Rewrite(outf);
n:=0;
while not EOF(inf) do
begin
n:=n+1;
ReadLn(inf,rArg[n],rF[n])
end;
for l:=1 to n do
begin
WriteLn(l:2,rArg[l]:8:2,rF[l]:8:2);
Write(outf,rArg[l], rF[l]);
end;
close(outf)
end.
16. Графические возможности языка. Модуль Graph.
Язык программирования Паскаль 7.0 содержит обширный набор типов, констант и функций для управления графическим режимом работы экрана, объединенных в стандартный библиотечный модуль GRAPH. С помощью подпрограмм, входящих в данный модуль, можно создавать сложные графические изображения, основанные на использовании разнообразных геометрических фигур- При необходимости замкнутые фигуры могут быть закрашены различными цветами и стилями (образцами) закраски. Для вывода текстовых надписей на графический экран могут быть использованы четыре штриховых и один матричный шрифт. Подпрограммы модуля GRAPH могут поддерживать различные типы аппаратных графических средств. Настройка на конкретные технические средства осуществляется с помощью специальных программ — драйверов, поставляемых вместе с данным модулем. Установка графического режима работы Переход в графический режим в среде Паскаль осуществляется с помощью входящей в модуль GRAPH процедуры InitGraph, служащей для инициализации графического экрана. Данная процедура имеет следующий формат: InitGraph(var Driver, Mode:integer; Path:string), где переменные Driver и Mode должны содержать тип графического драйвера и его режим работы. Допускается указать Driver=0 для автоматического определения данных параметров по результатам тестирования аппаратуры. Параметр Path определяет маршрут поиска файла графического адаптера. Графические операторы языка Паскаль позволяют адресоваться к любому элементу (пикселю) графического окна и управлять светимостью этого элемента. Для указания пикселя используется следующая система координат: начало координат (0,0) располагается в левом верхнем углу экрана; горизонтальная координата X увеличивается слева направо, вертикальная координата Y увеличивается сверху вниз. При стандартном графическом адаптере VGA (в режиме 640x480) правый нижний угол экрана имеет координаты (639,479), а центр экрана - координаты (319,239). Для выхода из графического режима достаточно воспользоваться процедурой CloseGraph. Использование цветов Язык программирования Паскаль 7.0 поддерживает 16 основных цветов, обозначаемых соответственно номерами от 0 до 15 (см. таблицу 1). Таблица 1 Константы цвета
Константа цвета |
Цвет |
Константа цвета |
Цвет |
0(Black) |
Черный |
8 (DarkGray) |
Гемносерый |
1 (Blue) |
Синий |
9 (LightBlue) |
Яркосиний |
2 (Green) |
Зеленый |
lO(LightGreen) |
Яркозеленый |
3 (Cyan) |
Голубой |
11 (LightCyan) |
Яркоголубой |
4 (Red) |
Красный |
12 (LightRed) |
Розовый |
5 (Magenta) |
Фиолетовый |
13 (LightMagenta) |
Малиновый |
6 (Brown) |
Коричневый |
14 (Yellow) |
Желтый |
7 (LightGray) |
Светлосерый |
15 (White) |
Белый |
Основными графическими операторами по работе с цветами являются процедуры модуля GRAPH под именами SetBkColor (служит для установки цвета фона) и SetColor (для установки цвета рисования). Формат данных операторов следующий". SetBkColor (Color: word); SetColor (Color: word), где переменная Color, имеющая целочисленный тип word, служит для указания требуемого номера цвета. Например, операторы SetBkColor (I); SetColor (14) позволяют установить режим рисования желтым цветом по синему фону. Создание графических объектов В состав модуля GRAPH входит достаточно большое количество подпрограмм, служащих для вывода на экран разнообразных графических объектов. Основными процедурами данного типа являются: Rectangle(xl, yl, х2, y2: integer) - служит для рисования прямоугольников, задаваемых координатами двух своих противоположных углов; Bar(xl, yl, x2, y2: integer) - служит для рисования заштрихованных прямоугольников, используя при этом текущий стиль и цвет штриховки; SetFillStyle(Pattern, Color: word) - устанавливает образец штриховки и ее цвет, где переменная Pattern обозначает номер шаблона штриховки (см. таблицу 2), a Color - номер цвета штриховки (см. таблицу 1); Circle(x, у: integer; r: word) - рисует окружность радиуса г с центром в точке (х, у); Line(xl, yl, x2, y2: integer) - рисует линию от точки (xl, yl) до точки (х2, у2); PieSHce(x, у: integer; StAngle, EndAngle, nword) - рисует и заштриховывает сектор окружности радиусом г с центром в (х, у) от начального угла StAngleк конечному углу EndAngle. При этом используется текущий стиль и цвет штриховки (см. процедуру SetFillStyle); PutPixel(x, у: integer; Color:word) - выводит на экран точку цвета Color с координатами (х, у); OutTextXY(x, y:integer; TextString:string) — выводит техт TextString в заданное координатами (х, у) место экрана. Таблица 2 Шаблоны штриховки
Номер |
Стиль штриховки |
Номер |
Стиль штриховки |
0 |
Нет штриховки |
6 |
Наклонная влево |
1 |
Сплошная (заливка) |
7 |
В клетку по образцу +++ |
2 |
Горизонтальными линиями |
8 |
В клетку по образцу ххх |
3 |
Наклонная вправо |
9 |
Штриховка в мелкую клетку |
4 |
Наклонная вправо толстыми линиями |
10 |
Редкими точками |
5 |
Наклонная влево толстыми линиями |
11 |
Частыми точками |
Стандартный режим работы в среде Турбо Паскаля - текстовый. В этом режиме на экран выводятся только известные компьютеру символы. В графическом режиме экран дисплея можно рассматривать как совокупность близко расположенных точек. Точку экрана называют пиксель или пиксел (pixel). Светимость этих точек может регулироваться программой. Пикселы образуют прямоугольную таблицу - растр с нумерацией элементов относительно левого верхнего угла экрана - точки с координатами (0; 0). Для представления символов текстовой информации используется матрица с фиксированным количеством пикселов. Знакоместо каждого символа - прямоугольник размером, к примеру, 8x8, 8x14, 8x16 и т.д.; - в знакоместо при помощи программы помещается растровое изображение символа. Графические возможности конкретного видеоадаптера (видеокарты) определяются разрешающей способностью (разрешением) монитора, т.е. общим количеством пикселов, а также количеством цветов (оттенков), которыми может светиться каждый из них. Современные мониторы поддерживают разрешение 800x600 точек, 1024x768 точек и более. Чем выше разрешающая способность монитора, тем качественнее изображение. Многие видеоадаптеры могут работать с несколькими графическими страницами. Графическая страница - область оперативной памяти, используемая для создания "карты" экрана -информации о светимости (цвете) каждого пиксела. На одном и том же компьютере количество точек и количество возможных цветов можно изменять в процессе работы, выбирая графический режим - одну из предусмотренных в конструкции компьютера комбинаций значений. Драйвер - это программа, управляющая определенным устройством ПК. Графический драйвер управляет дисплейным адаптером в графическом режиме. Графические драйверы обычно располагаются на диске в подкаталоге BGI рабочего каталога в виде файлов с расширением .BG1 (BorlandGraphic Interface). В ТП 7.0 есть стандартный библиотечный модуль Graph - библиотека подпрограмм, обеспечивающих управление графическими режимами видеоадаптеров: CGA, EGA, VGA, MCGA, Hercules, PC 3270, AT&T 6300, IBM 8514. Библиотека Graph содержит около 80 графических процедур и функций, а также десятки констант и описаний типов данных [6, 7]. Подключение модуля происходит при помощи зарезервированного слова USES (uses Graph;). Модуль Graph - файл GRAPH.TPU. Для работы с графикой этот файл должен быть доступным для компилятора, т.к. GRAPH.TPU не входит в состав библиотеки TURBO.TPL. В поле UNIT опции DIRECTORIES / OPTIONS главного меню среды Турбо Паскаля следует указать каталог, в котором размещен файл GRAPH.TPU. Для использования различных шрифтов при выводе текста (кроме кириллицы) нужно скопировать файлы с расширением .CHR в рабочий каталог. При запуске программы с кириллицей скопируйте файл EGAVGA.BGI в рабочий каталог. Любая программа для работы с графикой должна содержать блоки вызова процедуры инициализации графического режима InitGraph - правильность выполнения этой процедуры проверяется функцией GraphResult (0-в случае успеха) - и процедуры выхода из графического режимаCloseGraph. Процедуры и функции из библиотеки Graph Обращение Действие InitGraph (Driver, Mode, F) Инициирует графический режим работы адаптера CloseGraph Завершает работу адаптера в графическом режиме RestoreCrtMode Служит для кратковременного возврата в текстовый режим ClearDevice Очищает экран, закрашивает его в цвет фона ClearViewPort Очищает графическое окно SetGraphMode(Mode) Устанавливает новый графический режим работы адаптера; значения Mode - в конце главы SetViewPort(Xl, Yl, X2, Y2, Т) Устанавливает прямоугольное окно на экране: X1,Y1 - координаты левого верхнего, Х2, Y2 - координаты правого нижнего углов окна, Т - выражение типа Boolean, определяющее "отсечку" не умещающихся в окне элементов изображения (True - "отсекать") SetPalette(Reg, Col) Формирует новое значение Col в регистре с номером Reg (установка одного цвета палитры) SetAllPalette(Palette) Производит смену кодов цветности во всех регистрах палитры SetBkColor (Color) Устанавливает цвет фона (целое число от 0 до 15) SetColor (Color) Устанавливает цвет для выводимых символов и линий, Color - выражение типа Word PutPixel (X, Y, Color) Выводит точку с координатами X, Y цветом Color Line (XI, Yl, X2, Y2) Рисует отрезок линии по коордимнатам его концов LineRel (Xh, Yh) Вычерчивает линию от текущего положения указателя до положения, заданного приращениями его координат Xh и Yh (выражения типа Integer) LineTo (X, Y) Вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами MoveRel (DX, DY) Устанавливает новое положение указателя в координатах относительно предыдущего MoveTo (X, Y) Устанавливает новое положение указателя OutText (Т) Выводит текст Т (кроме кириллицы), начиная с текущего положения указателя OutTextXY (X, Y, Т) Выводит текст Т, начиная с позиции X строки Y Circle (X, Y, R) Рисует окружность радиуса R типа Word с центром в точке с координатами (X; Y) Ваг (XI, Y1, Х2, Y2) Заполняет прямоугольную область экрана, заданную координатами диагонали Bar3D (XI, Yl, X2, Y2, D, Top) Чертит трехмерное изображение параллелепипеда (D -глубина) и закрашивает его переднюю грань; Тор - выражение типа Boolean, если Тор = True, верхняя грань вычерчивается, если False - нет Rectangle (XI, Yl, X2, Y2) Вычерчивает прямоугольник по координатам левого верхнего и правого нижнего углов
Arc (X, Y, А, В, R) Чертит дугу окружности: X, Y - координаты центра, А, В - начальный и конечный углы дуги(в градусах), отсчет углов ведется против часовой стрелки^ - радиус (в пикселах); Ellipse (X, Y, А, В, RX, RY) Чертит эллипсную дугу: X, Y - координаты центра, А, В - начальный и конечный углы дуги (в градусах), RX, RY - горизонтальный и вертикальный радиусы Sector (X, Y, А, В, RX, RY) Рисует и штрихует сектор эллипса радиусами RX и RY с центром в точке X, Y от угла А к углу В SetFillStyle (Pattern, Color) Устанавливает образец штриховки и цвет SetLineStyle (LineStile,Pattern,Thickness) Устанавливает толщину и стиль линии SetTextStyle (Font, Direction,CharSize) Устанавливает текущий шрифт (0-9), направление (по горизонтали-0/вертикали-1) и размер символов (0-13) FillEllipse (X, Y, RX, RY) Рисует закрашенный эллипс FloodFill (X, Y, С) Заполняет любую замкнутую фигуру, используя текущий стиль заполнения (узор и цвет), X, Y - координаты точки внутри этой области, С - цвет границы FillPoly (N, Coords) Обводит линией и закрашивает замкнутый многоугольник; N - количество вершин, Coords - переменная типа PointType, содержащая координаты вершин (см. сноску под таблицей) Getlmage (X1,Y1, X2,Y2, Bui) Помещает в буфер памяти Buf копию прямоугольного фрагмента изображения Putlmage (X,Y, Buf, ModePut) Выводит в заданное место экрана (X,Y - координаты верхнего левого угла) копию фрагмента изображения из буфера Buf, ModePut - способ копирования (в конце главы) ImageSize (X1,Y1,X2,Y2) Возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения GraphResult Возвращает 0, если последняя графическая операция выполнилась без ошибок GraphErrorMsg (Code) Возвращает значение типа String с текстовым сообщением об ошибке; Code – код ошибки GetGraphMode Возвращает значение типа Integer, в котором содержится код текущего режима работы графического адаптера GetX Возвращает текущую координату указателя по горизонтали / вертикали (тип Integer) GetY GetMaxX Возвращает максимальную координату экрана по горизонтали / вертикали (тип Word ) в текущем режиме работы.
Структурированные типы данных: массивы, строки, записи.
Структурированные типы данных определяют наборы однотипных или разнотипных компонент.
Типы компонент образуются из других типов (простых, структурированных, указателей и т. д.)
данных. В языке Паскаль существуют следующие структурированные типы:
- тип-массив;
- тип-запись;
- тип-множество;
- тип-файл.
В Turbo Pascal имеется еще два структурированных типа:
- тип-строка string и
- тип-строка PChar, являющиеся разновидностями массива.
В дальнейшем объекты структурированных типов для краткости будут называться теми же
именами, что и их типы, без указания слова "тип": массив, запись, множество, файл, строка.
В стандарте языка существуют упакованные (packed) и неупакованные структурированные
типы. В Turbo Pascal слово packed, характеризующее упакованный тип, не оказывает никакого
влияния; в случае, когда это возможно, упаковка данных осуществляется автоматически.