- •Методические указания
- •1.Пакет TurboPascal
- •1.1.Режим File
- •1.2. Режим edit
- •1.3. Режим run
- •1.4. Режимы, не рассматриваемые в учебном процессе
- •2. Базовые элементы языка pascal
- •2.1. Знаки
- •2.2. Виды данных
- •2.3. Структура программы
- •3. Операторы
- •3.2. Оператор ввода (read, readln)
- •3.3. Оператор вывода (write, writeln)
- •3.4. Оператор goto
- •3.5. Составной оператор
- •3.6. Условный оператор (if – then – else)
- •3.7 Оператор выбора (case – of – else – end)
- •3.8. Оператор цикла с предусловием (while – do)
- •3.9. Оператор цикла с постусловием (repeat – until)
- •3.10. Операторы повторения (for – to – do), (for – downto – do)
- •4.4. Процедуры преобразования числовых величин в строковые и обратно (str;val)
- •5.2. Обращение к записям
- •5.3. Оператор “раскрытия записи” (With - do)
- •6. Массивы (тип Array)
- •7. Множества (тип Set)
- •7.1. Объявление множеств
- •7.2. Операции над множествами
- •8. Файлы (file)
- •8.1. Объявление файлов
- •8.2. Открытие файла для чтения (assign – reset - close)
- •8.3. Открытие файла для записи (assign - rewrite - close)
- •9. Модули (Unit...)
- •9.1. Структура модулей
- •9.2. Стандартные модули
- •10. Процедуры (Procedure)
- •10.1. Объявление процедур
- •10.2. Некоторые стандартные процедуры TurboPascal 5.5
- •11. Функции (Function)
- •11.1. Объявление функций
- •11.2. Стандартные функции
- •12. Графический режим
- •12.1. Основные графические процедуры
- •12.2. Функции графического режима
- •13. Сообщения об ошибках
11.1. Объявление функций
При объявлении функций используется управляющее слово function, за которым указывается название функций, перечень и тип параметров, передаваемых функций, тип результата функции и помещается операторный блок, заключенный между управляющими словами begin и end. В операторном блоке обязательно присвоение значения идентификатору функции, использованному в названии.
Пример: function stepen(a,b:real): real;
begin
stepen:=exp(b*ln(a));
end; {конец функции}
Приведен пример объявления функции возведения в степень «b» числа «a» . При вызове функции необходимо записать выражение:Y:= stepen(a,b), где a,b имеет тип real, y – тип real
11.2. Стандартные функции
Abs(n:real or integer):real or integer {System} – модуль (n),
ArcTan(n:real):real {System} – арктангенс n (угол в радианах),
Cos(n:real):real {System} – косинус угла n (угол в радианах),
Exp(n:real):real {System} – показательная функция аргумента n,
KeyPressed:Boolean {Crt} – проверка нажатия клавиши (используется в операциях отношения) – при нажатии – true,
Ln(n:real):real {System} – натуральный логарифм числа n,
Odd(n:longint):Boolean {System} – проверка четности n (нечетное – true, четное – false),
Random:real {System} – генерация случайного числа >=0 и <=1,
Random(n:word):word {System} – генерация случайного числа >=0 и <n,
Round(n:real):longint {System} – округление числа n,
Sin(n:real):real {System} – синус угла n (угол в радианах),
Sqr(n:real or integer):real or integer {System} – квадрат числа n,
Sqrt(n:real):real {System} – квадратный корень из числа n.
12. Графический режим
Для перехода в графический режим необходимо подключение графического модуля (Uses Graph), описание переменных DriverVar – тип графического драйвера и ModeVar – тип видеорежима, а также включение в программу оператора инициализации графического режима (InitGraph).
По окончанию работы в графическом режиме выполняется оператор CloseGraph – закрытие режима.
Пример1: Program Grafika;
Uses
Graph;
Const
DriveVar: integer = 1;
ModeVar: integer = 1;
………………………………..
begin
………………………………..
InitGraph (DriverVar, ModeVar, ‘ ‘ );
…………………………………
CloseGraph;
…………………………………
{Задаётся режим 320х200, где первое число – количество пикселей (точек растра) по горизонтали, второе – количество пикселей по вертикали}
Пример2: Program Grafika;
Uses
Graph;
var
DriveVar, ModeVar: integer;
……………………………………..
begin
……………………………………..
DriveVar: = Detect;
InitGraph (DriveVar, ModeVar, ‘E:\TP5\Graph’);
………………………………………
CloseGraph;
………………………………………
{Автоматически определяется и задаётся максимально возможный для данного дисплея режим (до 720х348)}
12.1. Основные графические процедуры
Позволяют рисовать на экране графические примитивы с заданными координатами. Начало координат в левом верхнем углу. Приращение координаты по горизонтали означает смещение вправо. Приращение координаты по вертикали означает смещение вниз.
Line (x1, y1, x2, y2: integer); - вывод на экран линии от точки с координатами х1, у1, до точки с координатами х2, у2, где х1, х2 – расстояние от левой стороны, у1, у2 – расстояние сверху.
LineTo (x, y: integer); - рисует линию от места курсора до точки х, у.
MoveTo (x, y: integer); - устанавливает курсор в точку х, у.
Circle (x, y, r: word); - рисует окружность с центром х, у радиусом r.
Arc (x, y, ug1, ug2, r: word); - рисует дугу с центром х, у начальным и конечным углами ug1, ug2 (угол = 0 вправо по горизонтали, приращение угла – против часовой стрелки), радиусом r.
Ellipse (x, y, ug1, ug2, xr, yr: word); - рисует эллиптическую дугу с центром х, у начальным и конечным углами ug1, ug2 (угол = 0 вправо по горизонтали), радиусом xr и yr.
Rectangle (x1, y1, x2, y2: integer); - рисует прямоугольник по диагональным точкам с координатами х1, у1 и х2, у2.
Bar (x1, y1, x2, y2: integer); - рисует закрашенный прямоугольник по диагональным точкам с координатами х1, у1 и х2,у2.
Floodfill (x, y, bc: word); - закрашивает текущим цветом область, в которой находиться точка с координатами х, у,ограниченная линиией цвета bc.
ClearDevice; - очищает экран, устанавливает курсор в точку 0,0.
GetImage (x1, y1, x2, y2: integer; buf); - запоминает изображение прямоугольника с координатами x1, y1, x2, y2 в памяти как переменную buf.
PutImage (x, y: integer; buf; mode: word); - выводит на экран изображение из переменной buf, начиная с левой верхней точки с координатами x,y.
Пример: Line (1, 199, 160, 1);
Line (160, 1, 319, 199);
Line (319, 199, 1, 199);
{Строится равнобедренный треугольник с основанием, параллельным нижней стороне экрана дисплея и вершиной в середине верхней стороны дисплея}
Пример: Line (0, 100, 320, 100);
Line (160, 0, 160 200);
i: = - 160;
while i <160 do
begin
i: = i + 4;
j: = round (sin (i/30)*50)
Rectangle (160 +i, 100, 160 +(i+2), 100 – j);
end;
{В программе вычерчивается синусоида, заполненная вертикальной штриховкой}
