Программирование на языке 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 (имя, начальный индекс, количество элементов) - в