Программирование на языке Object Pascal
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
?апазон задается границами своих значений внутри базового типа.
Синтаксис записи:
Type
Имя типа = ;
Оценка =
Цифра =
Малая буква =
Day2 =
Тип диапазон также может быть объявлен в разделе описания переменных:
Var
X:=otcenka;
Y:=2..5;
Правила записи типа диапазона:
). Двойная точка воспринимается как единый символ без пробела;
). Левая граница диапазона не должна превышать правую;
). Тип диапазон использует все свойства базового типа, но с ограничением связанным с меньшей мощностью.
2).Вещественный тип.
В отличие от порядковых типов, значение которых сопоставляется с рядом целых чисел и представляет в памяти абсолютно точно, значение вещественных типов определяет произвольное число с некоторой конечной точностью. Точность зависит от внутреннего формата вещественного числа. Все вещественные числа представляются в памяти в экспоненциальной форме записи (т.е. состоят из двух частей: мантиссы и экспоненты, в каждой из которых есть целое число).
Currency - предназначен для хранения информации о деньгах. Все вычисления компилятор для вещественных переменных осуществляет в виде типа Extended, все остальные типы получает из Extended путем его усечения (применяются, как правило, для экономии памяти).
Встроенные функции для работы с вещественными числами:
Abs(x) - модуль (x);
Cos(x) - косинус (x);
Sin(x) - синус (x);
Exp(x) - экспонента;
Pi - возвращает число ?;
Sqrt(x) - квадратный корень из (x);
Ceil(x) - возвращает наименьшее целое большее или равно (x);
Floar(x) - возвращает наибольшее целое меньшее или равное (x);
Frac(x) - возвращает дробную часть числа типа Extended;
Int(x) - возвращает целую часть числа (округляет);
IntPower(x,y) - возводит число (x) в степень (y);
Ldxep(x) - ex*?;
Ln(n) - натуральный логарифм числа (x);
Ln(xp1) - Ln(x+1) - натуральный логарифм от числа (x+1);
Log10(x) - 10-ный логарифм числа (x);
Log2(x) - 2-ичный логарифм числа (x);
LogN(n,x) - Lognx;
max(x,y) - нахождение максимального;
min(x,y) - нахождение минимального;
Power(x,y) - возводит в степень (y) число (x) (с дробными степенями);
Randomize - включает генератор случайных чисел;
Trunk(x) - отсекает дробную часть;
Rondom(x) - (x) - целое число (0..x);
Round(x) - округляет вещественное значение до ближайшего целого (результат имеет тип Int64; если число ровно по середине, то результат всегда четный);
Random - возвращает случайное вещественное число (0..1);
Название:Диапазон:Количество значений 10-ных чисел:Размер (в битах):Real 48 Single Real (Double) Extended CurrencyОт 2,9*10-19 до 1,7*1038 От 1,5*10-45 до 3,4*1038 От 5,0*10-324 до 1,7*10308 От 3,6*10-4951 до 1,1*104938 От -9*1014,### до 9*1014,###10-12 7-8 15-16 19-20 19-2032 48 69 80 64
II.Структурированные типы:
Любая переменная структурированного типа всегда имеет несколько компонентов. Структурированные типы могут быть вложенными. Ограничений на суммарную длину структурированного типа не накладываются. Компилятор OPascal автоматически компактно хранит все структуры в памяти.
1).Массивы.
Массивы бывают двух типов: статические и динамические.
Статические.
Статические имеют фиксированный размер и тип, которые остаются неизменными в течение хода выполнения программы, а динамические - могут изменить свой тип и размер в процессе выполнения программы. Статические, во многом похожи на массивы в языке QBasic. Все компоненты имеют одинаковый тип, доступ к каждому компоненту осуществляется по его уникальному индексу.
Синтаксис записи:
Type
Имя типа = array [диапазон 1, [диапазон 2]…] of тип;
Пример:
= array [1..10] of byte;= array [2..4] of extended;= array [0..5,1..20] of int 64;,b:vector;:matrix;:array [1..15] of bualean;
Если массивы имеют одинаковый тип a=b, то значение массива b переходит в массив a.
a:=b
Все массивы хранятся в памяти линейно. Для обращения к элементу массива используют: [ ].
a[3]:=2;
x[0.17]:=a[2]/4;
Динамические массивы.
Динамический массив может менять в ходе выполнения программы размер.
Он объявляется следующим образом:
Var
Имя: array of тип;
Многомерный динамический массив задается аналогично статическому, но без указания границы:
Var
A: array of byte
Задание размера массива и выделение для него памяти выполняется с помощью процедуры: SetLenght (имя, длина) длина - выражение целого типа. После выполнения этой процедуры выделяется память под этот массив и его индекс может измениться от 0 до -1.
SetLenght - может быть вызвана произвольное количество раз, каждый вызов приводит к изменению длины массива, при этом содержимое массива сохраняется.
Если, при вызове, длинна массива увеличивается, то добавленные элементы заполняются произвольными значениями. Если уменьшается, то содержимое отброшенных элементов теряется:
Var
A: array of array of int64;
Beginlength (a; s);[1]:=1; [???][2]:=2;[312][3]:=3;(a;2);[31] (a;3);[31?]
Организуется с использованием динамической памяти массива.
Поскольку динамические массивы являются динамической структурой данных, то по окончанию работы с ним необходимо удалить их из памяти компьютера.
Существует три способа удаления динамической памяти из системы:
). Установка длинны динамического массива в (0)
SetLenght (имя; 0);
). Присвоение значению длины массива nil:
имя:= nil;
). Присвоение имени finalize (имя);
В OPascal для работы с динамическими массивами предусмотрены встроенные функции:
Copy (имя, начальный индекс, количество элементов) - в