- •Содержание
- •Линейные алгоритмы
- •Язык программирования Turbo Passcal
- •Типы переменных в Паскале:
- •Стандартные операции и функции от скалярных данных.
- •Структура программы на Pascal
- •Команда присваивания
- •Команды ввода и вывода
- •Справка по работе с системой Turbo Pascal
- •Условный оператор, оператор множественного выбора Алгоритмы с ветвлением
- •Ветвление в Pascal Логические выражения
- •Логические операции
- •Команды ветвления
- •1. Условный оператор if
- •2. Оператор Case.
- •3. Команда безусловного перехода goto
- •Циклы Алгоритмы с циклами
- •1. Цикл с предусловием
- •2. Цикл с постусловием.
- •Циклы в Pascal
- •1. Цикл с параметром
- •2. Цикл с предусловием.
- •3. Цикл с постусловием
- •Вложенные циклы
- •Подпрограммы
- •Функции пользователя
- •Процедуры
- •Массивы Одномерные массивы
- •Стандартные задачи обработки массивов:
- •Двумерные массивы
- •Обработка строк и символов
- •Процедуры и функции обработки строк.
- •Основные алгоритмы обработки строк
- •Графика в Pascal
- •Основные графические процедуры и функции
- •Работа с файлами
- •Процедуры и функции для работы с файлами.
Графика в Pascal
Г рафическое изображение на экране монитора состоит из совокупности светящихся точек – пикселей. Каждый пиксель определяется своими координатами, которые отсчитываются от левого верхнего угла экрана. Разрешающая способность экрана, т.е. количество точек по осям x, y зависит от установки графического режима. Возможны значения 320*200, 640*200, 640*480, 1024*768.
Для построения графических изображений используются специальные процедуры и функции, которые размещены в модуле Graph.tpu. Для использования этих процедур и функций, необходимо после заголовка программы указать Uses Graph;
Основные графические процедуры и функции
1) Initgraph(var driver, mode: integer, path : string); - инициализация графического режима.
driver – код графического драйвера (драйвер – программа, управляющая работой адаптера; адаптер – устройство, управляющее работой экрана),
mode – код графического режима,
path – путь к драйверу. Если код драйвера равен нулю, то драйвер выбирается автоматически и устанавливается режим с максимальным разрешением, т.е. для адаптера VGA устанавливается размер экрана 640х480 пикселов и 16 цветов.
Каждая программа, использующая графические процедуры и функции, должна содержать строки:
uses graph;
Var dr, reg: integer;
begin
dr:=0; Initgraph(dr, reg, 'c:\program files\tpascal.71\bgi');
{ Driver := Detect; InitGraph(Driver, Mode, ''); - из справки паскаля}
2) closegraph; - выход из графического режима.
3) cleardevice; - очистка всего экрана с перемещением курсора в начало координат.
4) setbkcolor(color : word); - установка цвета фона.
5) setcolor(color : word); - установка рисующего цвета.
Коды цветов приведены в таблице.
Констан. |
Код |
Цвет |
Константа |
Код |
Цвет |
Black |
0 |
Черный |
Darkgray |
8 |
Темно-серый |
Blue |
1 |
Синий |
Lightblue |
9 |
Светло-синий |
Green |
2 |
Зеленый |
Lightgreen |
10 |
Светло-зеленый |
Cyan |
3 |
Голубой |
Lightcyan |
11 |
Светло-голубой |
Red |
4 |
Красный |
Lightred |
12 |
Бледно-красный |
Magenta |
5 |
Малиновый |
Lightmagenta |
13 |
Розовый |
Brown |
6 |
Коричневый |
Yellow |
14 |
Желтый |
Lightgray |
7 |
Светло-серый |
Whiet |
15 |
Белый |
|
|
|
Blink |
16 |
Мерцание |
6) outtextxy(x,y,txt:string); - процедура выводит текст, заданный параметром txt, в точке с координатами x, y. Для вывода значения числовой переменной v необходимо предварительно перевести число в текс процедурой str(v [:w:d]; txt: string), где w – ширина поля для числа, d – число знаков после запятой, txt – строка результата перевода.
7) getmaxx; getmaxy; - функции, определяющие максимальное количество точек по осям x и y.
8) putpixel(x,y:integer; c: word); – закраска пиксела с координатами x, y цветом c.
9) moveto (x, y: integer); - процедура перемещает указатель в точку с координатами x, y.
10) moverel (dx, dy: integer); - процедура смещает указатель на dx пикселей по оси x и dy пикселей – по y.
11) line(x1,y1,x2,y2:integer); – процедура рисует линию из точки с координатами x1, y1 в точку с координатами x2, y2.
12) lineto(x,y:integer); – процедура рисует линию из точки с текущими координатами в точку с координатами x, y.
13) rectangle(x1,y1,x2,y2:integer); – процедура рисует прямоугольник с координатами левого верхнего угла – x1, y1 и координатами правого нижнего угла – x2, y2.
14) circle(x,y:integer; r : word) – процедура рисует окружность, x, y – координаты центра, r – радиус.
15) arc(x, y, r, a1, a2); - процедура рисует дугу окружности, r – радиус, a1, a2 – углы в гадусах, определяющие начало и конец дуги.
16) setfillstyle(s,c: integer); - процедура задает текущий стиль (s) и цвет(c) заливки. S=1 – сплошная заливка.
17) fillellipse(x,y,rx, ry); - процедура рисует закрашенный эллипс, x, y – координаты центра, rx, ry – горизонтальный и вертикальный радиусы эллипса.
18) bar(x1,y1,x2,y2:integer); – процедура рисует закрашенный прямоугольник с координатами левого верхнего угла – x1, y1 и координатами правого нижнего угла – x2, y2.
Пример 1. Отобразить точку красного цвета в центре экрана.
Program pr1;
uses graph;
Var dr, reg: integer;
begin
dr:=0; Initgraph(dr, reg, 'c:\program files\tpascal.71\bgi');
{ Driver := Detect; InitGraph(Driver, Mode, ''); - из справки паскаля}
putpixel(getmaxx div 2, getmaxy div 2, 4);
readln;
end.
Записи
Запись представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем.
Описание записи:
Type
<имя>=record
<список полей>
End;
Type
vedom=record
N: integer;
Fio: string [30];
NZ: integer;
OZ: integer;
End;
После описания типа «Запись», можно в разделе описания переменных объявлять переменную данного типа. Например, Var a: vedom;
После объявления переменной можно вводить и обрабатывать данные, которые могут быть представлены в виде таблицы. Например, тип Vedom описывает данные таблицы вида:
№ |
Fio |
Nz |
Oz |
1 |
Антонов |
33153 |
5 |
… |
… |
… |
… |
Для всей переменной типа record допустима единственная операция – команда присваивания. Например, b:=a; Обращение к отдельным полям записи осуществляется указанием имени записи и конкретного поля:
a.n:=1;
a.fio:=’Антонов’;
a.nz:=33153;
a.oz:=5;
Для полей записи допустимы все операции, которые определены для данного типа. Поля одного типа можно объединять в секции, перечисляя их имена через запятую.
Например, данные о книгах, хранящихся в библиотеке, можно описать с помощью типа ‘Запись’.
Type
Lib=record
IN:string [6];
Avt, nazv, izd: string [30];
Gi: integer;
End;
in |
avt |
nazv |
izd |
Gi |
123456 |
Пушкин |
Евгений Онегин |
Просвещение |
1987 |
… |
… |
… |
… |
|
Компонентой записи может быть также запись. В таком случае структура их описания может быть следующей:
Type
student=record
Fio=record
F, I, o: string[20]
End??
Data=record
D, m, g : integer;
End??
End;
Var a:student;
…
a.fio.f:=’Антонов’;
a.data.d:=7;
Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with.
with <имя записи> do <оператор>;
Например, With a do Writeln(n, fio, nz, oz);
Пример 1. Создайте пользовательский тип данных – запись, описывающий данные человека (Фамилия, Имя, Отчество), опишите в программе массив таких записей, состоящий из пяти элементов. В цикле, при помощи оператора read заполните массив данными ваших товарищей.
Program primer;
Type
Chelovek=Record
Fam: String[15];
Ima: String[15];
Otch: String[15];
End;
Var
Klass:Array[1..5] Of Chelovek;
k:Integer;
Begin
For k:=1 To 5 Do
With Klass[k] Do
Begin
Writeln('Введите фамилию’); Readln(Fam);
Writeln('Введите имя’); Readln(Ima);
Writeln('Введите отчество’); Readln(Otch);
End;
Readln;
End.