Вещественный тип в паскале: | Pascal | PASCAL | Pascal Delphi

Содержание

Тип данных Real.

Тип REAL (вещественный). Число типа REAL занимает три слова (шесть байтов). При работе с вещественными числами нужно помнить, что на любом отрезке вещественной оси существует бесчисленное множество чисел. Поскольку для кодирования вещественного числа отведено всего шесть байтов памяти, то расчеты выполняются всегда с конечной точностью, которая зависит от формата числа.

Вещественное число записывается и хранится в памяти компьютера в виде  X=m*Bn, где m – мантисса, В – основание представления числа с плавающей точкой, n – порядок (целое число). Имеют место ограничения –M1<m<+М2; -E1<n<+Е2. В этих выражениях B, Е и М — константы, характеризующие представление числа. В таблице 3 приведены значения этих констант для вещественных типов данных, используемых в Pascal.

Так, для типа REAL основание В равно 10. Размер мантиссы 11—12 десятичных чисел. Диапазон десятичного порядка равен [-39, +38].

Таким образом, на отрезке оси вещественных чисел в заданном диапазоне можно закодировать только конечное число значений, а поскольку на оси таких чисел бессчетное множество, то выбирается интервал, «дискрет», на который этот диапазон (отрезок) делится. Число таких интервалов конечно. Каждый дискрет ставится в соответствие значению вещественного числа. Конечное множество определенных таким образом  представителей вещественных чисел называется континуумом. Результаты вычислений округляются до чисел этого множества, поэтому необходимо говорить о точности вычислений. Округление результата происходит до ближайшего вещественного числа большего данного по модулю. Следует также отметить, что эти интервалы не являются равными. В соответствии с полулогарифмическим способом своего представления интервалы «растягиваются» с увеличением порядка. Наибольшая точность расчетов достигается в центральной части диапазона изменения вещественного числа X (например, в районе 1.0Е+00 погрешность вычислений 0,00000000001), и наименьшая — на его краях (например, в окрестностях числа 1.
0Е+38 погрешность вычисления равна 1000000000000000000000000000).
Существует две формы отображения вещественных чисел (таблица 4): полулогарифмическая (с плавающей точкой) и естественная (с фиксированной точкой).

Над вещественными числами определены операции сложения (+), вычитания (-), умножения (*) и деления (/). Операция возведения в степень не предусмотрена.
Использование типа REAL у начинающего программиста часто вызывает ряд ошибок, приводящих к искажению результата по следующим причинам:

  • ошибки ввода — недостаточная точность исходных данных при сборе, подготовке и их вводе в ЭВМ;
  • ошибки представления обуславливаются ограниченной точностью внутреннего представления данных в конкретной ЭВМ, используемой для расчетов;
  • ошибки вычислений возникают за счет несовершенства математических методов, выбранных для решения задачи. Необходимо оценивать погрешность и держать ее в заданных пределах.

Предыдущая статья: Тип данных Integer.

Оглавление: Лекции по Pascal.

Следующая статья: Тип данных Boolean.


Глава 3 Типы

У всех переменных есть тип. Free Pascal поддерживает те же самые основные типы что и Turbo Pascal с некоторыми дополнительными типами из Delphi.

Программист может объявить свои собственные типы, которые в сущности определяют идентификатор, который может использоваться, чтобы обозначить этот пользовательский тип при объявлении переменных далее в исходном коде. Объявление типа происходит в блоке объявления типов (type) (секции 16.6 Область действия), который представляет собой набор деклараций типов, разделенных точкой с запятой:


Определение типа


Есть 8 главных классов типа:


Типы


Каждый из этих случаев будут рассмотрен отдельно.

3.1 Базовые типы

3.1.1 Перечислимые типы

Целые типы

Булевы типы

Типы перечислений

Типы диапазоны

3.1.2 Вещественные типы

3. 2 Символьные типы

3.2.1 Символ (Char или AnsiChar)

3.2.2 WideChar

3.2.3 Другие символьные типы

3.2.4 Однобайтовые строковые тип

Короткие строки (ShortStrings)

Строки AnsiString

Преобразование кодовой страницы

Необработанная строка байт (RawByteString)

UTF8String

3.2.5 Многобайтные строковые типы

Строки Unicode (UnicodeStrings)

Большие строки (WideStrings)

3.2.6 Строковые константы (Constant strings )

3.2.7 PChar — строки завершённые нулём

3.2.8 Размеры строк

3.3 Структурированные Типы

Упакованные структурированные типы

3.3.1 Массивы

Статические массивы

Динамические массивы

Типы совместимые с Динамическими массивами

Конструктор Динамического массива

Упаковка и распаковка массивов

3.3.2 Записи

Структура и размер Записи

Замечания и примеры

3.3.3 Множества

3.3.4 Файловый тип

3.4 Указатели

3. 5 Предварительное описания типа

3.6 Процедурный тип

3.7 Тип данных Variant

3.7.1 Определение

3.7.2 Вариантные переменные в присвоениях и выражениях

3.7.3 Варианты и интерфейсы

3.8 Псевдоним типа

Зачем нужны типы данных в Паскале?

При программировании на языке Паскаль (Pascal) необходимо выбирать типы данных Паскаль-программы. Программисту важно понимать, что для запуска его программы в оперативной памяти выделяется место для хранения не только команд, но и данных, с которыми эти команды работают.

Все типы данных в Pascal делятся на две группы: простые и структурированные. Для каждого типа данных отводится некоторое количество байт. К простым типам относятся: целые типы (byte, integer и др.), вещественные типы (real, single и др.), логический тип (boolean), символьный тип (char), перечисляемый и интервальный тип. Все они, за исключением вещественных типов, являются порядковыми типами и характеризуются тем, что имеют ограниченный упорядоченный набор значений. Например, переменная, имеющая тип byte, может принимать значения в интервале от 0 до 255 включительно. Такие типы данных в Паскале позволяют применять функции Pred (вычисляет предыдущее значение) и Succ (вычисляет последующее значение), Low (вычисляетет наименьшее значение типа) и High (вычисляет наибольшее значение типа), Ord (вычисляет порядковый номер текущего значение переменной).

Переменная простого типа в качестве значения имеет только одно данное, т.е. одно целое число, дробное число или один символ. Переменные, имеющие простые типы данных, в Паскале должны быть описаны в разделе Var (сокр. от Variables – переменные).

Переменная в программе на языке Паскаль считается полностью заданной, если она имеет название (идентификатор), тип и начальное значение. Название переменной используется при обращении к ней посредством какого-либо оператора. Тип данных определяет диапазон представления (какие значения может принимать переменная), операции, в которых она может участвовать, объем памяти, который требуется для хранения переменной в оперативной памяти. Поэтому при решении задачи следует склоняться к уменьшению количества переменных и рациональному подбору их типов.

Структурированные типы представляют собой упорядоченный набор переменных простых типов. К ним относятся: массивы (array), множества (set of), строки (string), файлы (file), записи (record). Структурированные типы данных в Паскале описываются в разделе type (раздел описания типов).

Массив — самый распространенный из структурированных типов, используется тогда, когда требуется хранить и обрабатывать упорядоченный набор переменных одного типа (любого простого типа). Массивы бывают одномерные, двумерные, многомерные. Примером одномерного массива может служить список учеников в классном журнале, отсортированный по алфавиту, где у каждого ученика есть уникальный порядковый номер. Примером двумерного массива – расположение мест в зрительном зале кинотеатра (каждое место определяется двумя измерениями – номером ряда и номером места).

Элементы множества в отличие от массива неупорядочены, а количество элементов ограничено числом 255. Строка представляет собой упорядоченный набор символов и этим очень похожа на массив, однако элементами строки могут быть только символы.

Файл – это тот же массив, но количество элементов в нем может меняться по ходу выполнения программы. Запись представляет собой набор разнотипных данных.

Научившись применять типы данных в Паскале, можно реализовать достаточно сложные и интересные задачи.

Типы данных. Программирование на Паскале

1. Типы данных.

Программирование на
Паскале.
Функционирование любой программы
связано с обработкой данных.
Данные, предназначенные для обработки,
называются исходными
и задаются обычно в начале программы.
В процессе выполнения программы
исходные данные преобразуются в результаты.

3. Данные – совокупность информации, с которой оперирует компьютер при решении конкретной задачи.

Для обозначения данных используются
идентификаторы (имена).
Идентификатор – последовательность
английских букв, цифр и знака нижней черты,
которая начинается с буквы. В качестве
идентификатора нельзя использовать
зарезервированные слова Паскаля.
Например: K, a12, Elena, Number_1
Данные
Константы
— постоянные величины,
значения которых не
меняются в процессе
выполнения программы
Переменные
— такие данные, которые
могут меняться в процессе
выполнения программы.

6. Константы

Константы — это постоянные величины,
значения которых не меняются в процессе
выполнения программы.
Константы описываются в блоке описания констант в
следующем виде:
CONST =;
Например:
CONST {Служебное слово, с которого начинается блок
описания констант}
PI=3.14;
G=9.8;
Year=2009;
Gr=’Я’; {символьные константы заключаются в апострофы}

7. Переменные

Переменные — это такие данные, которые могут
меняться в процессе выполнения программы.
Описание переменных имеет следующий вид:
VAR :;
Под типом данных понимается множество
допустимых значений этих данных, а также
совокупность операций над ними.
переменные
простые
Предназначены для хранения
одного значения в данный
момент времени.
В оперативной памяти
компьютера отводится одна
ячейка памяти.
Например:
Оперативная память
X
A1
Идентификаторы (имена)
сложные
Предназначены для хранения
нескольких значений в данный
момент времени.
В оперативной памяти
компьютера отводится много
ячеек памяти.
Например:
Оперативная память
B2
Z
Идентификаторы (имена)

9. Стандартные типы простых переменных:

Типы
Числовые
Символьные
?
Целые
?
Логические
?
Вещественные
?
Задание: Вместо знаков вопроса
записать служебные слова,
предназначенные для описания
этих типов (найти дальше)

10. Целый тип

Переменные целого типа могут содержать
только целые числовые значения.
Примером величин, которые могут принимать только
целое значение может быть:
год рождения,
номер квартиры,
количество детей и т. п.
Константы целого типа записываются так же, как
в математике: 234 , 10000 , -11111 , 9999 .

11. Целый тип

В языке Pascal имеется несколько целых типа:
Тип
Диапазон
Размер в
байтах
SHORTINT
-128; 127
1
INTEGER
-32768; 32767
2
LONGINT
-2147483648; 2147483647
4
BYTE
0; 65
1
WORD
0; 65535
2

12. Вещественный тип

Вещественный тип данных используется для описания
вещественных переменных, т.е. таких переменных, значением
которых может быть вещественное или целое число.
Например: 19.56 , -879.17, 0.05.
Следует обратить внимание на то, что в записи вещественных
чисел вместо десятичной запятой (как принято в математике),
используется ДЕСЯТИЧНАЯ ТОЧКА!
Очень большие и очень маленькие числа в математике принято
записывать в специальной форме с помощью умножения значащих
цифр на степень 10. В языке Pasсal такая запись называется
записью числа в плавающем виде и имеет вид:
Обычная запись
1. 3652·108
9.109·10-28
Запись в плавающем виде:
1.3652Е+8
9.109Е-28

13. Вещественный тип

В языке Pascal определено четыре стандартных вещественных типа
Тип
Диапазон значений
Значащих
цифр
Размер в
байтах
REAL
2.9E-39;1.7E38
12
6
SINGLE
1.5E-45;3.4E38
7
4
DOUBLE
5E-324;1.7E308
16
8
EXTENDED
3.4-Е4392;1.1E4932
20
10
Задание: Запишите диапазон значений типа REAL так,
как вы записываете числа на математике.

14. Символьный тип

Символьный тип используется для описания данных, значением
которых может быть любой символ, имеющийся на клавиатуре
ЭВМ. Если точнее, то полный набор ASCII-символов.
Для описания символьных данных используется ключевое
слово CHAR.
Константы символьного типа обязательно ЗАКЛЮЧАЮТСЯ в
АПОСТРОФЫ. Например:
‘F’ ‘@’ ‘Ю’ ‘7’
Значением переменной символьного типа может быть ОДИН
СИМВОЛ (буква, цифра, знак препинания и т.
п.).
Например:
VAR CLASS: CHAR; {Объявлена переменная, значением
которой может быть один символ}
В памяти компьютера под переменную данного типа
отводится один байт.

15. Логический тип

Логический или, так называемый, булевский тип
может принимать одно из двух значений:
True (истина) или False (ложь).
Для описания логических переменных
используется ключевое слово BOOLEAN.
Над значениями логического типа
допустимы операции сравнения, причем
считается, что
False
Значения логического типа занимают 1
байт памяти.

16. Пример описания данных:

Пусть в программе требуется
обрабатывать следующую информацию:
число и номер месяца, количество
отгруженных вагонов, вес вагона, номер
вагона, литера вагона (одна буква) и общий
вес вагонов. Как следует описать эти
данные?

17. Для начала необходимо для каждой переменной придумать название — идентификатор.

Для начала необходимо для каждой
переменной придумать название идентификатор.
Идентификатор
Смысл переменной
Date
число месяца
Month
номер месяца
Kol
количество отгруженных вагонов
Wes
вес вагона
Number
номер вагона
Lit
Sum
литера вагона (одна буква)
общий вес вагонов

18. Пример описания данных:

Далее следует проанализировать, какие
значения могут принимать эти данные? В
результате блок описания переменных
может получить следующий вид:
VAR
Date,Month,Kol,Number: INTEGER;
Wes,Sum: REAL;
lit: CHAR;

19. Задание:

Запишите раздел описания для переменных:
Идентификатор
Смысл переменной
Num
A,B,С
S
Номер
Длины сторон треугольника
Площадь треугольника
Mt
Проверка существования
треугольника

10. Типы данных [DataExpress Wiki]

Переменные бывают разных типов. Тип переменной определяет набор допустимых значений и операций. Типы делятся на простые, составные, строковые, варианты и классы.

Простые типы

Простые типы делятся на порядковые, вещественные и дата-время.

Порядковые типы имеют конечное множество возможных значений, их можно определенным образом упорядочить (отсюда и название) и сопоставить некоторое целое число.

Вещественные типы, строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.

Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.

Порядковые типы

К порядковым типам относятся целые, логические, символьный и перечисляемый. К любому из них применима функция Ord(x), которая возвращает порядковый номер значения выражения X.

Для целых типов функция Ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому, символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 255 (символьный), от 0 до 65535 (перечисляемый).

К порядковым типам можно также применять функции:

  • pred(x) — возвращает предыдущее значение порядкового типа, которое соответствует порядковому номеру ord (X) -1, т. е. Ord(Pred(X)) = Ord(X) - 1;

  • succ(X) — возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ord (X) +1, т. е. Ord(Succ(X)) = Ord(X) + 1.

Например, если в программе определена переменная:

var
  с : Char;
begin
  с := '5';
end;

то функция Pred(C) вернет символ ‘4’, а функция Succ(C) — символ ‘6’.

Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ(X) – для правого конца этого отрезка.

Целые

Ниже приведена таблица поддерживаемых целых типов и диапазон допустимых значений:


Тип данных

Длина, байт

Диапазон допустимых значений

Byte

1

0 .. 255

Shortint

1

-128 .. +127

Smallint

2

-32 768 .. +32 767

Word

2

0 .. 65 535

Integer

4

-2 147 483 648 .. +2 147 483 647

Longint

4

-2 147 483 648 .. +2 147 483 647

Cardinal

4

0 .. 4 294 967 295

LongWord

4

0 . . 4 294 967 295

Int64

8

-9*1018 .. +9*1018

При использовании процедур и функций с целочисленными параметрами следует руководствоваться «вложенностью» типов, т. е. везде, где может использоваться Word, допускается использование Byte (но не наоборот), в Longint «входит» Smallint, который, в свою очередь, включает в себя Shortint.

Логические

Логический тип может принимать 2 значения: True или False. К логическим типам относят: Boolean, ByteBool, WordBool, LongBool. Первый тип является стандартным типом Паскаля, а последние три введены для совместимости с Windows. В данной реализации языка функция Ord вернет для True – 1, для False – 0.

В Pascal Script функция Ord для переменной типа Boolean также возвращает результат типа Boolean.

var
  b: Boolean;
  bb: ByteBool;
begin
  b := True;
  bb := True;
  Debug(Ord(b));		// True
  Debug(Integer(Ord(b)));	// 1
  Debug(Ord(bb));		// 1
end;

Символьный

К символьному типу относится тип Char, вмещает в себя 1 байт, символы с кодом 0. .255. Переменной этого типа можно присвоить один символ:

var
  c: Char;
  n: Byte;
begin
  c := ‘A’;
  c := #65;       // Код символа A
  n := Ord(‘E’);  // Возвращает код символа
end;

Для кодировки символов используется таблица ASCII. Первая половина символов от 0 до 127 является стандартной и приведена в таблице. Вторая половина от 128 до 255 зависит от шрифта.


Код

Символ

Код.

Символ

Код.

Символ

Код

Символ

0

NUL

32

BL

64

@

96



1

ЗОН

33

!

65

А

97

а

2

STX

34



66

В

98

b

3

ЕТХ

35

#

67

С

99

с

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

Е

101

е

6

ACK

38

&

70

F

102

f

7

BEL

39



71

G

103

д

8′

BS

40

(

72

Н

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

К

107

k

12

FF

44

f

76

L

108

1

13

CR

45



77

М

109

m

14

SO

46

.

78

N

110

n

15

SI

47

/

79

0

111

о

16

DEL

48

0

80

Р

112

P

17

DC1

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

S

115

s

20

DC 4

52

4

84

Т

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

v

23

ETB

55

7

87

W

119

W

24

CAN

56

8

88

х

120

x

25

EM

57

9

89

Y

121

У

26

SUB

58

:

90

Z

. 122

z

27

ESC

59

;

91

t

123

{

28

FS

60

<

92

\

124

1

29

GS

61

=

93

]

125

}

30

RS

62

>

94

Л

126

~

31

US

63

f

95

_

127

r

Символы с кодами 0. .31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

Перечисляемый тип

Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:

type
  TColors = (Red, White, Blue);
var
  Color: TColors;
begin
  Color := Red;
end;

Применение перечисляемых типов делает программы нагляднее. Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе — 1 и т. д. Максимальная мощность перечисляемого типа составляет 65536 значений, поэтому фактически перечисляемый тип задает некоторое подмножество целого типа Word и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями 0, 1 и т. д.

В Object Pascal присваивание переменным разных перечисляемых типов значений не своего типа приводит к ошибке несовместимости типов.

Например:

type
  TColors = (Red, Green, Blue);
  TNum = (One, Two, Three, Four);
 
procedure Form_Create;
var
  n: TNum;
  c: TColors;
begin
  n := One;
  c := Four;	    // Несовместимость типов
  Debug(Ord(c));    // Значение 3
end;

Однако компилятор Pascal Script не увидит ошибку и код будет работать. Будьте внимательны.

Вещественные типы

В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляются в ПК абсолютно точно, значения вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа. Pascal Script поддерживает следующие вещественные типы:


Тип данных

Длина, байт

Количество значащих цифр

Диапазон допустимых значений

Single

4

7-8

1. 5*10e-45 .. 3.4*10e38

Double

8

15-16

5.0*10e324 .. 1.7*10e308

Extended

10

19-20

3.4*10-4951 .. 1.1*10e4932

Currency

8

19-20

+/-922 337 203 685 477,5807

В DataExpress числовые поля имеют тип Double.

Сравнение вещественных чисел

Из-за того, что вещественные числа хранят приблизительное значение числа, их нельзя проверять на равенство с числовыми константами. Для сравнения используйте функцию SameValue. Пример:

var
  d: Double;
begin
  d := 0.2;
  // Это условие не выполнится
  if d = 0.2 then …
  // Можно так. Это условие выполнится
  if d – 0.2 < 0.001 then …
  // Так правильно сравнивать вещественные числа
  if SameValue(d, 0.2, 0) then …
end;

Тип дата-время

Тип дата-время определяется стандартным идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он занимает 8 байт и подобно Currency представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной — время.

Дата определяется как количество суток, прошедших с 30 декабря 1899 года, а время — как часть суток, прошедших с 0 часов, так что значение 36444,837 соответствует дате 11.10.1999 и времени 20:05. Количество суток может быть и отрицательным, однако значения меньшие -693594 (соответствует дате 00.00.0000 от Рождества Христова) игнорируются функциями преобразования даты к строковому типу.

Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов. Например, можно без труда определить дату, отстоящую от заданной на сколько-то дней вперед или назад: для этого достаточно соответственно прибавить к заданной дате или отнять от нее нужное целое число. Например, оператор:

IbOutput. Caption := DateToStr(Date + 21);

поместит в метку IbOutput дату, соответствующую текущей дате плюс 3 недели. Чуть сложнее с исчислением времени. Например, чтобы добавить к текущему времени полтора часа, следует использовать выражение:

Time + StrToTime('1:30')

или

Time+1.5/24

Составные типы

К составным типам относятся: массивы, записи и множества. Они характеризуется множественностью образующих этот тип элементов. Каждый элемент, в свою очередь, может принадлежать структурированному типу, что позволяет говорить о возможной вложенности типов. В Object Pascal допускается произвольная глубина вложенности типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 2 Гбайт (в реализации от RemObjects не проверялось).

Строковые типы

Строки представлены типами String, AnyString, AnsiString, WideString и PChar. Для всех типов строк, кроме PChar, память выделяется динамически, по мере необходимости. Типы String, AnyString, AnsiString являются синонимами. Тип String можно представить, как массив символов. Подобно массиву можно обращаться к отдельным символам строки по их индексу. Первый символ строки имеет индекс 1. Примеры работы со строками:

var
  S: String;
begin
  S := ‘hello, World’;	  // Строка в кодировке UTF-8
  S[1] := ‘H’;		  // Меняем h на H. Индекс первого символа равен 1.
  S := S + ‘!!!’;	  // Сложение строк.
  S := ‘Привет, МИР!!!’;  // Строка в кодировке UTF-8
  Debug(S[1]);		  // Будет выведен знак «?», потому что для кодирования символов 				
                          // кириллицы требуется более одного байта.
end;

Строка может хранить данные в кодировке ANSI или UTF-8. В кодировке ANSI символ занимает 1 байт. Символ в кодировке UTF-8 может занимать от 1 до 4 байт. Если строка хранит данные в этой кодировке, то обращение к элементам массива строки уместно только, если обрабатываются символы первой половины таблицы ASCII с кодами от 1 до 127. В ином случае нужно применять функции для работы со строками UTF-8. Для символов, кодируемых более чем одним байтом, в UTF-8 принята следующая система кодировки: в первом байте от двух до четырёх старших битов заняты единицами — их количество соответствует количеству байт в символе, во втором и последующих байтах первые два бита заняты соответственно единицей и нулём. В символах кодируемых одним байтом старший бит всегда занят нулём. Таким образом, при побайтном рассмотрении строки, однобайтный символ не может быть случайно принят за часть многобайтного.

UTF-8 является основной кодировкой, база данных и скрипты используют именно эту кодировку.

К строкам применимы операции сравнения. Сравнение происходит посимвольно.

S := ‘Hello World’;
S2 := ‘Hello world’;
// Условие ложно, потому что W <> w
if S = S2 then …
// Условие истинно, потому что W < w
if S < S2 then …

Тип WideString хранит строки в кодировке UTF-16. Каждый символ кодируется двумя байтами (за исключением символов с номерами больше FFFF — для обозначения таких символов используется четыре байта). Несмотря на то, что каждый символ занимает 2 байта, вы можете обратиться к символу по индексу, как если бы для кодирования использовался 1 байт. Строки этого типа используются OLE-объектами и функциями Windows API.

var
  S: WideString;
begin
  S := ‘Hello, МИР!!!’;
  Debug(S[8]);	// Символ «М»
end;

Символы, кодируемые четырьмя байтами всегда состоят из пары двухбайтовых слов (т.наз. «суррогатной пары»), первое из которых принадлежит диапазону D800..DBFF, а второе — диапазону DC00..DFFF. Символы, кодируемые двумя байтами не могут входить ни в один из этих диапазонов. Что позволяет при посимвольном обходе строки легко отличать двухбайтовые символы от частей четырёхбайтовых

Тип PChar представляет строки с завершающим нулем. Переменная типа PChar содержит указатель на массив строк. Концом строки считается символ с кодом #0. В чистом виде тип PChar не используется, т. к. Pascal Script не работает с указателями. Предположительно, он введен только для совместимости с функциями Windows API.

Pascal Script автоматически преобразует строку из одного типа в другой, так что работа со строками разных типов является прозрачной для разработчика.

function MessageBoxA(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer; external '[email protected] stdcall';
function MessageBoxW(hWnd: Integer; lpText, lpCaption: WideString; uType: Cardinal): Integer; external '[email protected] stdcall';
 
var
  S: String;
  WS: WideString;
begin
  S := ‘Строка’;
  WS := ‘Привет, МИР!!!’;
  WS := S;
  S := WS;
  MessageBoxA(0, S, ‘Сообщение’, 0);
  MessageBoxW(0, WS, ‘Сообщение’, 0);
end;

Варианты

Переменная вариантного типа может принимать хранить значение следующих типов: целый, вещественный, логический, строка, дата-время, OLE-объект. Вариант представляет собой структуру, в которой хранятся сведения о типе и значении переменной. В выражениях и при передаче параметров в процедуры происходит попытка преобразования варианта к нужному типу. Если это не удается, будет ошибка “invalid variant type cast”. Вариант может хранить специальное значение Null (пусто, неизвестно).

Любая арифметическая операция с null даст в результате null. Попытка автоматического преобразования null к какому-либо типу (кроме Variant) приведет к ошибке ‘could not convert variant of type (Null) into type (…)’.

var
  V1, V2, V3, V4, V5: Variant;
begin
  V1 := 1;
  V2 := ‘4’;
  V3 := V + V2;		   // Результат 5 или ‘5’
  V4 := V3 + Null;	   // V4 = Null
  V5 := V1 + ‘sdfsdf’;	   // invalid variant type cast
  MsgBox(‘Сообщение’, V4); // Could not convert variant of type (Null) into type (String) 
end;

Варианты широко используются при работе с OLE-объектами. С помощью специальных функций можно узнать значение какого типа хранится в варианте или преобразовать значение к нужному типу.

ЗНАКОМСТВО С ЯЗЫКОМ ПАСКАЛЬ

Программа на языке Паскаль близка по своему виду к описанию на алгоритмическом языке. Если сравнить алгоритм решения задачи рассматриваемой ранее с соответствующей программой на Паскале:

Необходимо создать алгоритм для вычисления площади прямоугольно треугольника, если известны длины его катетов.

На алгоритмическом языке это будет выглядеть так:

На Паскале:

Структура программы на Паскале

Заголовок программы начинается со слова Program, за которым следует произвольное имя, придуманное программистом:

Program <имя программы>;

Имя программы, имена констант, переменных и других объектов программы называются ИДЕНТИФИКАТОРАМИ. Они записываются по правилам:

1. Имя должно лаконично отражать сущность объекта.

S,v,t — общепринятые обозначения;

Summa, N_max — значения суммы номера максимума.

2. Длина идентификатора не должна превышать 127 символов, но для Паскаля значимы только первые 63 знака.

3. В запись идентификатора могут входить только цифры, английские буквы и знак подчеркивания.

4. Начинаться идентификатор должен с буквы или знака подчеркивания.

5. Маленькие и большие буквы в записи идентификаторов Паскаль не различает
.

Раздел описания переменных начинается со слова Var (variables – переменные), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существует два типа числовых величин: вещественный и целый.

Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real.  Например, раздел описания переменных может быть таким:

var a, b: integer; c, d: real;

Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.

Раздел операторов – основная часть программы. Начало и конец раздела операторов программы отмечаются служебными словами begin (начало) и end (конец).

В самом конце программы ставится точка:

begin

<операторы>

end.

Операторы ввода, вывода и присваивания

Ввод исходных данных с клавиатуры происходит по оператору read или readln:

read(<список переменных>)

или readln(<список переменных>)

При выполнении команды ввода компьютер ожидает действий пользователя. Пользователь набирает на клавиатуре значения переменных в том порядке, в каком они указаны в списке, отделяя их друг от друга пробелами. Одновременно с набором данных на клавиатуре они появляются на экране. В конце нажимается клавиша <ВВОД>(<ENTER>).

Разница в выполнении операторов readln и read состоит в том, что после выполнения ввода по оператору readln экранный курсор перемещается в начало новой строки, а по оператору read этого не происходит.

 

Вывод результатов происходит по оператору write или writeln:

write(<список вывода>)

или writeln(<список вывода>)

Результаты выводятся на экран компьютера в порядке их перечисления в списке. Элементами списка вывода могут быть константы, переменные, выражения.

Разница выполнения операторов writeln и write состоит в том, что после выполнения вывода по оператору writeln экранный курсор перемещается в начало новой строки, а по оператору write этого не происходит.

Арифметические выражения

Арифметический оператор присваивания на Паскале имеет следующий формат:

<числовая переменная>:=<арифметическое выражение>

Арифметическое выражение может содержать числовые константы и переменные, знаки арифметических операций, круглые скобки. Кроме того в арифметических выражениях могут присутствовать функции.

Некоторые формы записи арифметических операций:

Действие

Результат

Смысл

2 + 3

5

плюс

4 — 1

3

минус

2 * 3

6

умножить

10 / 5

2

разделить

17 div 5

3

целочисленное деление

17 mod 5

2

остаток от целочисленного деления

Ещё несколько функций:

Pi

3. 1415..

число пи

Frac(23.192)

0.192

дробная часть числа

Int(3.98)

3.0

целая часть числа

Round(5.8)

6

округление

Abs(-20)

20

абсолютная величина (модуль) числа

Random

0.73088

случайное число из диапазона (0-1)

Random(200)

106

случайное целое число из диапазона (0-199)

 

Правила записи арифметических выражений:

 

1.     Арифметическое выражение записывается в строку.

2.    Нельзя ставить подряд два знака арифметических операций.

3.    Нельзя опускать знак умножения.

4.    Можно использовать только круглые скобки.

5.    Приоритет выполнения арифметических операций следующий:

     a)  Действия в скобках;

     б)  Вычисление функций;

     в)  Умножение, деление, DIV, MOD;

     г)   Сложение, вычитание;

 

Почти во всех языках программирования, и уж конечно в Паскале, в десятичных дробях принято вместо запятой ставить точку. Пример: 62.8- шестьдесят две целых восемь десятых.

Пунктуация Паскаля

Точка с запятой ставится в конце заголовка программы, в конце раздела описания переменных, является разделителем переменных в разделе переменных и разделителем операторов. Текст программы заканчивается точкой.

В программу можно вставлять комментарии, они записываются в фигурных скобках.

Пример программы

Дана функция: y=12x-19. С клавиатуры вводится число x, программа должна вывести значение y.

Для вывода текста на экран необходимо ставить верхний апостроф в английской раскладке до и после выражения.

Задание: напишите программы для решения первых трех задач вашего варианта.

Типы данных в языке Pascal | Костыльный программист

Многообразие

Многообразие

Добрый день, товарищи! В этой статье я расскажу вам о основных типах данных, и о том, зачем те или иные используются.

На самом деле самых главных типов, которыми вы будете пользоваться в 95% случаев всего 5:

  1. целочисленный
  2. вещественный
  3. символьный
  4. строковый
  5. логический

А теперь обо всем поподробнее.

1. Целочисленный тип Integer

Integer — это один из самых частоиспользуемых типов. Это все целые числа. Небольшой пример того, что принадлежит этому типу данных:

Целочисленный тип

Целочисленный тип

Кроме того есть небольшие подтипы, о которых знать, в целом, не обязательно (я ими, например, ни разу не пользовался)

Это longint и shortint. (длинный и короткий инт соответственно)

Отличия — в доступном количестве символов и занимаемой памяти, на деле — на данном этапе программирования абсолютно лишняя информация.

2. Вещественный тип Real

Тоже числа. Но на этот раз числа с плавающей точкой (определение стоит запомнить, потому что часто встречается как «вещественный» так и «с плавающей точкой» типы. (одно и то же).

Иными словами — все нецелые дроби.

Вещественный тип

Вещественный тип

Аналогично с longint и shortint в типе с плавающей точкой есть короткий и длинный варианты (снова так же нам сейчас не нужные).

Это single и double, отличаются так же количеством доступной памяти и размером числа.

Дальше будут более интересные типы.

3. Символьный тип Char

Данный тип — символы. Заданный символ заключается в одинарные кавычки. Этит тип данных может содержать лишь один символ.

Кроме того, можно задать код символа в диапазоне 0..255, после чего вместо числа будет выведен символ.

Символьный тип

Символьный тип

Символьный тип можно считать младшим братом строкового — с ним мы ознакомимся дальше

4. Строковый тип String

Это строки. И тема работы со строками очень большая и обширная, когда нибудь мы дойдем до нее, но сейчас, для ознакомления, покажу как работает этот тип данных

Со строками можно делать много что, например, выводить пользователю его же введенные сообщения, ну, это самый минимум. Все в вашей фантазии и задании.

5. Логический тип Boolean

Переменные этого типа могут иметь только два значения — 1 и 0. Что, в свою очередь, будет означать правду и ложь (True, False). Именно английские выражения используются в Pascal.

Часто используется для сравнения чего-то с чем-то, в конструкциях If, и прочих логических операциях. Могут использоваться как «Флаги» в более сложных программах:

Например, когда совершается какое либо действие флаг из false становится true, что означает, что это действие выполнено.

Логический тип

Логический тип

В этой публикации вы ознакомились с самыми основными типами данных, которые точно понадобятся вам в ваших программах. Более подробный разбор, с различными неосновными типами я могу выпустить, если вы его попросите.

Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.

По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!

Доброго вам всем здоровьица в эти трудные времена!

вещественных типов

вещественных типов
— 2.2.6.6. — Содержание
2. Описание языка TMT Pascal
2.2. Структура языка Pascal
2.2.6. Типы
2.2.6.6. Реальные типы

2.2.6.6. Реальные типы


Реальные типы данных содержат как целые значения, так и дробную часть. Каждый действительный тип, также известный как числа с плавающей запятой, состоит из значимого, дробная часть и показатель степени, являющийся степенью десяти.

TMT Pascal следует стандарту IEEE для чисел с плавающей запятой числовое представление. В TMT доступно пять реальных типов данных. Паскаль: Real48, Real, Single, Double и Extended.

Тип Диапазон Формат
Одиночный 1,5 x 10 -45 . . 3,4 x 10 38 От 6 до 7 значащих цифр,
32-бит
Real48 2,9 x 10 -39 .. 1.7 х 10 38 От 11 до 12 значащих цифр,
48-бит
Реальный 2,9 x 10 -39 .. 1,7 x 10 38 От 11 до 12 значащих цифр,
48-бит
Двойной 5,0 x 10 -324 .. 1,7 x 10 308 От 15 до 16 значащих цифр,
64-бит
Расширенный 1,9 x 10 -4951 .. 1,1 x 10 4932 19-20 значащих цифр,
80-бит
Для сохранения обратной совместимости типов данных в Borland Pascal реальный тип был изменен обратно на 6-байтовую версию.В версии 4.x sizeof (real) было 8. Тип данных double идентичен типу данных real . тип данных был в TMT Pascal версии 4. x.

Real48 поддерживается для обратной совместимости со старыми версиями компилятора. Поскольку его формат хранения не является родным для процессоров Intel, это приводит к более медленной производительность по сравнению с другими типами с плавающей запятой.



— 2.2.6.6. —

Справочное руководство программиста Ири Паскаль

Справочное руководство программиста Ири Паскаль

Содержание | Предыдущая | Следующий

7.6.1 Вызов внешних функций и процедур

Как расширение Standard Pascal, Irie Pascal поддерживает функции и процедуры вызова в библиотеках DLL Windows, используя внешняя директива. ПРИМЕЧАНИЕ: только В настоящее время поддерживаются 32-битные библиотеки DLL.

Ряд включаемых файлов с объявлениями для многих функций Windows API распространяется с Ири Паскаль. Вы можете использовать эти включаемые файлы, чтобы получить доступ ко многим предварительно написанные объявления функций Windows API без необходимости создавать свои собственные объявления для этих функций.

Чтобы написать собственные объявления для внешних функций и процедур, вам необходимо: немного понять о соглашение о вызовах, используемое библиотеками Windows. Библиотеки DLL Windows поддержка двух соглашений о вызовах, stdcall и cdecl , наиболее часто используется stdcall . По умолчанию Ири Паскаль предполагает, что вызывающий соглашение — stdcall , если не указано cdecl . К сожалению, два соглашения о вызовах не реализуются одинаково всеми компиляторами Windows.Поэтому, если вы хотите вызывать функции и процедуры в DLL, вам может потребоваться знать, какой компилятор был использован для его создания (а также какие параметры компилятора использовались).

Этот документ не описывает различные способы, которыми разные компиляторы реализуют Соглашения о вызовах stdcall и cdecl . Вместо того, что этот документ Это описывает, как Ири Паскаль реализует эти соглашения.

  • Irie Pascal передает параметры справа налево как для stdcall , так и для cdecl соглашения о вызовах.
  • Ири Паскаль ожидает, что вызываемая функция или процедура извлечет параметры из стек после вызова, когда используется соглашение о вызове stdcall , но вызывающий абонент выталкивает параметры из стека после вызова, когда cdecl используется соглашение о вызовах.
  • Для обоих соглашений о вызовах Ири Паскаль ищет функцию или процедуру в DLL с указанным именем, но если функция или процедура не найдены, то «_» ставится перед именем, и выполняется повторный поиск в DLL. ПРИМЕЧАНИЕ: Это сделано потому, что некоторые компиляторы автоматически префикс функций и процедур с «_» , но другие компиляторы этого не делают.
  • Для обоих соглашений о вызовах Ири Паскаль ожидает, что результаты функции будут порядковый тип, тип указателя, или тип адреса, который должен быть возвращен в регистре EAX.
  • Для обоих соглашений о вызовах Ири Паскаль ожидает, что результаты функции будут настоящий тип, одиночный тип, или двойной тип, возвращаемый математическим сопроцессором куча.
  • Для обоих соглашений о вызовах Ири Паскаль ожидает, что результаты функции будут тип записи или тип массива для быть возвращенным с использованием указателя, переданного вызывающей стороной.Ожидается, что вызывающий передаст указатель на место в памяти, куда функция должна поместить возвращаемое значение.
  • Для обоих соглашений о вызовах Irie Pascal возвращает , а не . значения следующих типов: (каталог, файл, список, объект, набор или строка) из внешние функции и процедуры.
  • Для обоих соглашений о вызовах Irie Pascal поддерживает передачу выражения следующих типов по значению (порядковые типы, типы указателей, типы записей, адрес, двойной, одиночный и настоящий).
  • Для обоих соглашений о вызовах Irie Pascal поддерживает передачу переменные следующих типов по ссылке (типы массивов, порядковые типы, типы указателей, типы записей, типы строк, адрес, двойной, одиночный и настоящий).
  • Irie Pascal еще не поддерживает передачу функций или процедур с использованием любого вызова соглашение.
Для успешного вызова внешних функций и процедур вам может потребоваться понимание немного о том, как хранятся значения типов Irie Pascal.Ниже приводится краткое описание того, какие значения типов Irie Pascal хранятся:

Сначала простые типы:

  • байт — беззнаковое 8-битное значение.
  • char — беззнаковое 8-битное значение.
  • double — 64-битное значение с плавающей запятой (см. Стандарт ANSI / IEC 754-1985).
  • перечислимое (включая логическое) — 32-битное значение со знаком.
  • целое — 32-битное значение со знаком.
  • вещественное — 64-битное значение с плавающей запятой (см. Стандарт ANSI / IEC 754-1985).
  • shortint — 16-битное значение со знаком.
  • короткое слово — беззнаковое 16-битное значение.
  • single — 32-битное значение с плавающей запятой (см. Стандарт ANSI / IEC 754-1985).
  • слово — 32-битное беззнаковое значение.
  • поддиапазон — типы поддиапазонов хранятся так же, как и их типы хоста (например, поддиапазоны char хранятся как символы, а поддиапазоны целых чисел хранятся как целые числа).
Далее сложные типы:
  • массив — это непрерывные последовательности элементов.Например
      массив [1..4] целых чисел  

    — это просто последовательность из 4 целых чисел (без пробелов между ними). Многомерные массивы трактуются следующим образом:

      массив [m] [n] [o] [p] типа  

    рассматривается как

      массив [m] массива [n] массива [o] массива [p] типа.  

    ПРИМЕЧАНИЕ: Это противоположно тому, как измерения упорядочиваются компиляторами языка C.

  • адрес — это 32-битное значение, которое является адресом операционной системы (т.е.е. адрес, который имеет значение для внешних функций и процедур).
  • cstring — Это последовательности символов с завершающим нулем (то же формат, используемый программами C. для хранения строк.
  • указатель — это 32-битное значение, которое является виртуальным адресом (т. Е. Смещением от начала сегмента данных исполняемого файла IVM). Виртуальный адрес, вероятно, не имеет значения для внешних функций и процедур, поэтому вам следует использовать встроенные функция addr для преобразования виртуальных адресов в адреса операционной системы перед их передачей во внешние функции или процедуры.
  • запись — Это просто последовательности полей. Размер зазоров (если любой) между полями определяется размером полей и текущим параметром выравнивания.
  • строка — это последовательности символов с префиксом длины. Струны с максимальные длины, меньшие или равные 255, начинаются с байта, содержащего фактическую длину. строки. Строка с максимальной длиной больше или равной 256 имеет префикс целое число, содержащее фактическую длину строки. ПРИМЕЧАНИЕ: Это представление типично для представления строк в программах на языке Pascal, но сильно отличается от способ, которым строки повторяются в программах на C (то есть последовательности символов с завершающим нулем).
  • Другие типы (например, файл и список ) не описаны здесь, потому что они не могут быть переданы во внешние функции или процедуры или из них.
Большинство функций в библиотеках DLL Windows написаны на C, поэтому вы обычно будете конвертировать обратно вперед между типами C и типами Irie Pascal.

ПРИМЕЧАНИЕ: Типы C, написанные заглавными буквами, такие как BOOL, WORD и DWORD, не являются фактически определены как часть языка C, но являются общими типами, объявленными в программах C.

Использование параметров BOOL

В языках C не определяется логический тип, поэтому для программ на C характерно его определять, однако есть два популярных способа сделать это. Один из способов — определить логический тип как char или unsigned char , в этом случае ближайший тип Irie Pascal байт .Другой распространенный способ определения логического типа — это перечислимый тип. со значениями FALSE и TRUE . Однако иногда компиляторы C обрабатывать перечисляемые типы с менее чем 256 элементами как unsigned char , а при в других случаях как int (имя C для целочисленного типа). Итак, если логический тип определяется как перечислимый тип, то его можно рассматривать как unsigned char , в этом случае ближайший тип Irie Pascal — байт или int , в этом случае ближайший тип Irie Pascal — boolean .

Использование параметров int и long

В большинстве компиляторов C типы int и long подписаны 32-битными целочисленные типы, поэтому ближайший тип Ири Паскаль — целое число .

Использование DWORD, unsigned int и unsigned long Параметры

В большинстве компиляторов C типы DWORD , unsigned int и unsigned long — это 32-битные целочисленные типы без знака, поэтому ближайший тип Irie Pascal это слова .

Использование коротких параметров

В большинстве компиляторов C тип short является 16-битным целочисленным типом со знаком, поэтому Ближайший тип Irie Pascal — shortint .

Использование беззнаковых коротких параметров

В большинстве компиляторов C тип unsigned short является беззнаковым 16-битным целочисленным типом поэтому ближайший тип Ири Паскаль — , короткое слово .

Использование параметров массива

Передача многомерных массивов между Irie Pascal и C требует осторожности, поскольку порядок используется Паскалем и C для размеров противоположно (т.е.

  a: массив [1..4] [1..2] целых чисел;  

эквивалентен

  int a [2] [4];  

Использование указателя Параметры

  1. Язык C не поддерживает вызов по ссылке, поэтому обычно при передаче переменной в функцию, которую нужно изменить, чтобы передать указатель на переменную. Функция не может изменить указатель, но может изменить то, на что указывает указатель (т.е. переменную). Паскаль поддерживает вызов по ссылке, поэтому вы можете использовать его в тех случаях, когда функция C или процедура ожидает указатель на переменную.
  2. Язык C также не поддерживает передачу массивов функциям, однако связь между массивами и указателями в C означает, что передача указателя на первый элемент в массиве почти эквивалентен передаче массива. Ири Паскаль поддерживает передачу массивы, поэтому в этом случае вы должны передать массив по ссылке на функцию или процедуру C.
  3. Особым случаем передачи массивов является передача строк C (массивов символов с завершающим нулем). В этом случае вы можете передать cstring по ссылке.
  4. В случаях, когда указатель указывает на переменную, тип которой не фиксирован, или может быть передано нулевое значение или указатель указывает на переменную, размер которой не фиксирован тогда вы можете напрямую передать адрес переменной операционной системы.
Если вы хотите вызвать функцию C, которая ожидает параметр указателя, вам решать определить (возможно, прочитав описание функции), какой из четырех сценариев только что описанный в процессе использования.

Пример программы winhello. pas — это пример того, как вызвать функцию в Windows DLL. ПРИМЕЧАНИЕ: Эта программа использует winuser.inc include файл, распространяемый с Irie Pascal, чтобы получить доступ к заранее написанному объявлению для функция Windows API MessageBox .

Содержание | Предыдущая | Следующий

% PDF-1.2 6 0 объект > эндобдж 8 0 объект (I Язык Паскаль) эндобдж 10 0 объект > эндобдж 12 0 объект (Токены Паскаля) эндобдж 14 0 объект > эндобдж 16 0 объект (Символы) эндобдж 18 0 объект > эндобдж 20 0 объект (Комментарии) эндобдж 22 0 объект > эндобдж 24 0 объект (Зарезервированные слова) эндобдж 26 0 объект > эндобдж 28 0 объект (Зарезервированные слова Turbo Pascal) эндобдж 30 0 объект > эндобдж 32 0 объект (Зарезервированные слова Delphi) эндобдж 34 0 объект > эндобдж 36 0 объект (Зарезервированные слова Free Pascal) эндобдж 38 0 объект > эндобдж 40 0 объект (Модификаторы) эндобдж 42 0 объект > эндобдж 44 0 объект (Идентификаторы) эндобдж 46 0 объект > эндобдж 48 0 объект (Числа) эндобдж 50 0 объект > эндобдж 52 0 объект (Этикетки) эндобдж 54 0 объект > эндобдж 56 0 объект (Строки символов) эндобдж 58 0 объект > эндобдж 60 0 объект (Константы) эндобдж 62 0 объект > эндобдж 64 0 объект (Обычные константы) эндобдж 66 0 объект > эндобдж 68 0 объект (Типизированные константы) эндобдж 70 0 объект > эндобдж 72 0 объект (Строки ресурсов) эндобдж 74 0 объект > эндобдж 76 0 объект (Типы) эндобдж 78 0 объект > эндобдж 80 0 объект (Базовые типы) эндобдж 82 0 объект > эндобдж 84 0 объект (Порядковые типы) эндобдж 86 0 объект > эндобдж 88 0 объект (Целые числа) эндобдж 90 0 объект > эндобдж 92 0 объект (Логические типы) эндобдж 94 0 объект > эндобдж 96 0 объект (Типы перечисления) эндобдж 98 0 объект > эндобдж 100 0 объект (Типы поддиапазонов) эндобдж 102 0 объект > эндобдж 104 0 объект (Реальные типы) эндобдж 106 0 объект > эндобдж 108 0 объект (Типы персонажей) эндобдж 110 0 объект > эндобдж 112 0 объект (Char) эндобдж 114 0 объект > эндобдж 116 0 объект (Струны) эндобдж 118 0 объект > эндобдж 120 0 объект (Короткие струны) эндобдж 122 0 объект > эндобдж 124 0 объект (Ansistrings) эндобдж 126 0 объект > эндобдж 128 0 объект (Постоянные строки) эндобдж 130 0 объект > эндобдж 132 0 объект (PChar) эндобдж 134 0 объект > эндобдж 136 0 объект (Структурированные типы) эндобдж 138 0 объект > эндобдж 140 0 объект (Массивы) эндобдж 142 0 объект > эндобдж 144 0 объект (Типы записей) эндобдж 146 0 объект > эндобдж 148 0 объект (Установить типы) эндобдж 150 0 объект > эндобдж 152 0 объект (Типы файлов) эндобдж 154 0 объект > эндобдж 156 0 объект (Указатели) эндобдж 158 0 объект > эндобдж 160 0 объект (Процедурные виды) эндобдж 162 0 объект > эндобдж 164 0 объект (Объекты) эндобдж 166 0 объект > эндобдж 168 0 объект (Декларация) эндобдж 170 0 объект > эндобдж 172 0 объект (Поля) эндобдж 174 0 объект > эндобдж 176 0 объект (Конструкторы и деструкторы) эндобдж 178 0 объект > эндобдж 180 0 объект (Методы) эндобдж 182 0 объект > эндобдж 184 0 объект (Вызов метода) эндобдж 186 0 объект > эндобдж 188 0 объект (Статические методы) эндобдж 190 0 объект > эндобдж 192 0 объект (Виртуальные методы) эндобдж 194 0 объект > эндобдж 196 0 объект (Абстрактные методы) эндобдж 198 0 объект > эндобдж 200 0 объект (Видимость) эндобдж 202 0 объект > эндобдж 204 0 объект (Классы) эндобдж 206 0 объект > эндобдж 208 0 объект (Определения классов) эндобдж 210 0 объект > эндобдж 212 0 объект (Создание экземпляра класса) эндобдж 214 0 объект > эндобдж 216 0 объект (Методы) эндобдж 218 0 объект > эндобдж 220 0 объект (призыв) эндобдж 222 0 объект > эндобдж 224 0 объект (Виртуальные методы) эндобдж 226 0 объект > эндобдж 228 0 объект (Методы сообщения) эндобдж 230 0 объект > эндобдж 232 0 объект (Характеристики) эндобдж 234 0 объект > эндобдж 236 0 объект (Выражения) эндобдж 238 0 объект > эндобдж 240 0 объект (Синтаксис выражения) эндобдж 242 0 объект > эндобдж 244 0 объект (Вызов функций) эндобдж 246 0 объект > эндобдж 248 0 объект (Установить конструкторы) эндобдж 250 0 объект > эндобдж 252 0 объект (Типы значений) эндобдж 254 0 объект > эндобдж 256 0 объект (Оператор) эндобдж 258 0 объект > эндобдж 260 0 объект (Операторы) эндобдж 262 0 объект > эндобдж 264 0 объект (Арифметические операторы) эндобдж 266 0 объект > эндобдж 268 0 объект (Логические операторы) эндобдж 270 0 объект > эндобдж 272 0 объект (Булевы операторы) эндобдж 274 0 объект > эндобдж 276 0 объект (Строковые операторы) эндобдж 278 0 объект > эндобдж 280 0 объект (Установить операторы) эндобдж 282 0 объект > эндобдж 284 0 объект (Операторы отношения) эндобдж 286 0 объект > эндобдж 288 0 объект (Заявления) эндобдж 290 0 объект > эндобдж 292 0 объект (Простые утверждения) эндобдж 294 0 объект > эндобдж 296 0 объект (Задания) эндобдж 298 0 объект > эндобдж 300 0 объект (Описание процедуры) эндобдж 302 0 объект > эндобдж 304 0 объект (Заявления Goto) эндобдж 306 0 объект > эндобдж 308 0 объект (Структурированные отчеты) эндобдж 310 0 объект > эндобдж 312 0 объект (Составные заявления) эндобдж 314 0 объект > эндобдж 316 0 объект (Заявление Case) эндобдж 318 0 объект > эндобдж 320 0 объект (Если. .then..else заявление) эндобдж 322 0 объект > эндобдж 324 0 объект (Заявление For..to / downso..do) эндобдж 326 0 объект > эндобдж 328 0 объект (Заявление Repeat..until) эндобдж 330 0 объект > эндобдж 332 0 объект (Заявление While..do) эндобдж 334 0 объект > эндобдж 336 0 объект (Заявление With) эндобдж 338 0 объект > эндобдж 340 0 объект (Заявления об исключениях) эндобдж 342 0 объект > эндобдж 344 0 объект (Заявления ассемблера) эндобдж 346 0 объект > эндобдж 348 0 объект (Использование функций и процедур) эндобдж 350 0 объект > эндобдж 352 0 объект (Объявление процедуры) эндобдж 354 0 объект > эндобдж 356 0 объект (Объявление функции) эндобдж 358 0 объект > эндобдж 360 0 объект (Списки параметров) эндобдж 362 0 объект > эндобдж 364 0 объект (Параметры значения) эндобдж 366 0 объект > эндобдж 368 0 объект (Переменные параметры) эндобдж 370 0 объект > эндобдж 372 0 объект (Постоянные параметры) эндобдж 374 0 объект > эндобдж 376 0 объект (Параметры открытого массива) эндобдж 378 0 объект > эндобдж 380 0 объект (Массив констант) эндобдж 382 0 объект > эндобдж 384 0 объект (Перегрузка функции) эндобдж 386 0 объект > эндобдж 388 0 объект (Вперед определенные функции) эндобдж 390 0 объект > эндобдж 392 0 объект (Внешние функции) эндобдж 394 0 объект > эндобдж 396 0 объект (Функции ассемблера) эндобдж 398 0 объект > эндобдж 400 0 объект (Модификаторы) эндобдж 402 0 объект > эндобдж 404 0 объект (псевдоним) эндобдж 406 0 объект > эндобдж 408 0 объект (cdecl) эндобдж 410 0 объект > эндобдж 412 0 объект (экспорт) эндобдж 414 0 объект > эндобдж 416 0 объект (в линию) эндобдж 418 0 объект > эндобдж 420 0 объект (прерывать) эндобдж 422 0 объект > эндобдж 424 0 объект (паскаль) эндобдж 426 0 объект > эндобдж 428 0 объект (всплывающий стек) эндобдж 430 0 объект > эндобдж 432 0 объект (общедоступный) эндобдж 434 0 объект > эндобдж 436 0 объект (регистр) эндобдж 438 0 объект > эндобдж 440 0 объект (регистры сохранения) эндобдж 442 0 объект > эндобдж 444 0 объект (безопасный звонок) эндобдж 446 0 объект > эндобдж 448 0 объект (стандартный вызов) эндобдж 450 0 объект > эндобдж 452 0 объект (Неподдерживаемые модификаторы Turbo Pascal) эндобдж 454 0 объект > эндобдж 456 0 объект (Перегрузка оператора) эндобдж 458 0 объект > эндобдж 460 0 объект (Введение) эндобдж 462 0 объект > эндобдж 464 0 объект (Заявления оператора) эндобдж 466 0 объект > эндобдж 468 0 объект (Операторы присваивания) эндобдж 470 0 объект > эндобдж 472 0 объект (Арифметические операторы) эндобдж 474 0 объект > эндобдж 476 0 объект (Оператор сравнения) эндобдж 478 0 объект > эндобдж 480 0 объект (Программы, блоки, блоки) эндобдж 482 0 объект > эндобдж 484 0 объект (Программы) эндобдж 486 0 объект > эндобдж 488 0 объект (Единицы) эндобдж 490 0 объект > эндобдж 492 0 объект (Блоки) эндобдж 494 0 объект > эндобдж 496 0 объект (Сфера) эндобдж 498 0 объект > эндобдж 500 0 объект (Объем блока) эндобдж 502 0 объект > эндобдж 504 0 объект (Объем записи) эндобдж 506 0 объект > эндобдж 508 0 объект (Объем класса) эндобдж 510 0 объект > эндобдж 512 0 объект (Объем блока) эндобдж 514 0 объект > эндобдж 516 0 объект (Библиотеки) эндобдж 518 0 объект > эндобдж 520 0 объект (Исключения) эндобдж 522 0 объект > эндобдж 524 0 объект (Заявление о повышении) эндобдж 526 0 объект > эндобдж 528 0 объект (Попытка. .. кроме заявления) эндобдж 530 0 объект > эндобдж 532 0 объект (Заявление о попытке … наконец) эндобдж 534 0 объект > эндобдж 536 0 объект (Вложенность обработки исключений) эндобдж 538 0 объект > эндобдж 540 0 объект (Исключительные классы) эндобдж 542 0 объект > эндобдж 544 0 объект (Используя ассемблер) эндобдж 546 0 объект > эндобдж 548 0 объект (Заявления ассемблера) эндобдж 550 0 объект > эндобдж 552 0 объект (Процедуры и функции ассемблера) эндобдж 554 0 объект > эндобдж 556 0 объект (II Ссылка: Системный блок) эндобдж 558 0 объект > эндобдж 560 0 объект (Системный блок) эндобдж 562 0 объект > эндобдж 564 0 объект (Типы, константы и переменные) эндобдж 566 0 объект > эндобдж 568 0 объект (Типы) эндобдж 570 0 объект > эндобдж 572 0 объект (Константы) эндобдж 574 0 объект > эндобдж 576 0 объект (Переменные) эндобдж 578 0 объект > эндобдж 580 0 объект (Список функций по категориям) эндобдж 582 0 объект > эндобдж 584 0 объект (Обработка файлов) эндобдж 586 0 объект > эндобдж 588 0 объект (Управление памятью) эндобдж 590 0 объект > эндобдж 592 0 объект (Математические процедуры) эндобдж 594 0 объект > эндобдж 596 0 объект (Обработка строк) эндобдж 598 0 объект > эндобдж 600 0 объект (Функции операционной системы) эндобдж 602 0 объект > эндобдж 604 0 объект (Разные функции) эндобдж 606 0 объект > эндобдж 608 0 объект (Функции и процедуры) эндобдж 610 0 объект > эндобдж 612 0 объект (Abs) эндобдж 614 0 объект > эндобдж 616 0 объект (Адрес) эндобдж 618 0 объект > эндобдж 620 0 объект (Добавить) эндобдж 622 0 объект > эндобдж 624 0 объект (Арктан) эндобдж 626 0 объект > эндобдж 628 0 объект (Назначать) эндобдж 630 0 объект > эндобдж 632 0 объект (Назначенный) эндобдж 634 0 объект > эндобдж 636 0 объект (BinStr) эндобдж 638 0 объект > эндобдж 640 0 объект (Blockread) эндобдж 642 0 объект > эндобдж 644 0 объект (Blockwrite) эндобдж 646 0 объект > эндобдж 648 0 объект (Ломать) эндобдж 650 0 объект > эндобдж 652 0 объект (Чдир) эндобдж 654 0 объект > эндобдж 656 0 объект (Chr) эндобдж 658 0 объект > эндобдж 660 0 объект (Закрывать) эндобдж 662 0 объект > эндобдж 664 0 объект (CompareByte) эндобдж 666 0 объект > эндобдж 668 0 объект (CompareChar) эндобдж 670 0 объект > эндобдж 672 0 объект (СравнитьDWord) эндобдж 674 0 объект > эндобдж 676 0 объект (СравнитьСлово) эндобдж 678 0 объект > эндобдж 680 0 объект (Конкат) эндобдж 682 0 объект > эндобдж 684 0 объект (Продолжать) эндобдж 686 0 объект > эндобдж 688 0 объект (Копия) эндобдж 690 0 объект > эндобдж 692 0 объект (Cos) эндобдж 694 0 объект > эндобдж 696 0 объект (CSeg) эндобдж 698 0 объект > эндобдж 700 0 объект (Декабрь) эндобдж 702 0 объект > эндобдж 704 0 объект (Удалить) эндобдж 706 0 объект > эндобдж 708 0 объект (Утилизировать) эндобдж 710 0 объект > эндобдж 712 0 объект (DSeg) эндобдж 714 0 объект > эндобдж 716 0 объект (Eof) эндобдж 718 0 объект > эндобдж 720 0 объект (Эолн) эндобдж 722 0 объект > эндобдж 724 0 объект (Стереть) эндобдж 726 0 объект > эндобдж 728 0 объект (Выход) эндобдж 730 0 объект > эндобдж 732 0 объект (Опыт) эндобдж 734 0 объект > эндобдж 736 0 объект (Filepos) эндобдж 738 0 объект > эндобдж 740 0 объект (Размер файла) эндобдж 742 0 объект > эндобдж 744 0 объект (FillByte) эндобдж 746 0 объект > эндобдж 748 0 объект (Филлчар) эндобдж 750 0 объект > эндобдж 752 0 объект (FillDWord) эндобдж 754 0 объект > эндобдж 756 0 объект (Филворд) эндобдж 758 0 объект > эндобдж 760 0 объект (Промывать) эндобдж 762 0 объект > эндобдж 764 0 объект (ГРП) эндобдж 766 0 объект > эндобдж 768 0 объект (Freemem) эндобдж 770 0 объект > эндобдж 772 0 объект (Getdir) эндобдж 774 0 объект > эндобдж 776 0 объект (Getmem) эндобдж 778 0 объект > эндобдж 780 0 объект (GetMemoryManager) эндобдж 782 0 объект > эндобдж 784 0 объект (Остановка) эндобдж 786 0 объект > эндобдж 788 0 объект (HexStr) эндобдж 790 0 объект > эндобдж 792 0 объект (Привет) эндобдж 794 0 объект > эндобдж 796 0 объект (Высокий) эндобдж 798 0 объект > эндобдж 800 0 объект (Inc) эндобдж 802 0 объект > эндобдж 804 0 объект (ИндексБайт) эндобдж 806 0 объект > эндобдж 808 0 объект (IndexChar) эндобдж 810 0 объект > эндобдж 812 0 объект (IndexDWord) эндобдж 814 0 объект > эндобдж 816 0 объект (IndexWord) эндобдж 818 0 объект > эндобдж 820 0 объект (Вставлять) эндобдж 822 0 объект > эндобдж 824 0 объект (IsMemoryManagerSet) эндобдж 826 0 объект > эндобдж 828 0 объект (Инт) эндобдж 830 0 объект > эндобдж 832 0 объект (IOresult) эндобдж 834 0 объект > эндобдж 836 0 объект (Длина) эндобдж 838 0 объект > эндобдж 840 0 объект (Ln) эндобдж 842 0 объект > эндобдж 844 0 объект (Lo) эндобдж 846 0 объект > эндобдж 848 0 объект (LongJmp) эндобдж 850 0 объект > эндобдж 852 0 объект (Низкий) эндобдж 854 0 объект > эндобдж 856 0 объект (Строчные) эндобдж 858 0 объект > эндобдж 860 0 объект (Отметка) эндобдж 862 0 объект > эндобдж 864 0 объект (Maxavail) эндобдж 866 0 объект > эндобдж 868 0 объект (Memavail) эндобдж 870 0 объект > эндобдж 872 0 объект (Мкдир) эндобдж 874 0 объект > эндобдж 876 0 объект (Переехать) эндобдж 878 0 объект > эндобдж 880 0 объект (MoveChar0) эндобдж 882 0 объект > эндобдж 884 0 объект (Новый) эндобдж 886 0 объект > эндобдж 888 0 объект (Странный) эндобдж 890 0 объект > эндобдж 892 0 объект (Офс) эндобдж 894 0 объект > эндобдж 896 0 объект (Порядок) эндобдж 898 0 объект > эндобдж 900 0 объект (Paramcount) эндобдж 902 0 объект > эндобдж 904 0 объект (Paramstr) эндобдж 906 0 объект > эндобдж 908 0 объект (Число Пи) эндобдж 910 0 объект > эндобдж 912 0 объект (Поз. ) эндобдж 914 0 объект > эндобдж 916 0 объект (Сила) эндобдж 918 0 объект > эндобдж 920 0 объект (Пред) эндобдж 922 0 объект > эндобдж 924 0 объект (Птр) эндобдж 926 0 объект > эндобдж 928 0 объект (Случайный) эндобдж 930 0 объект > эндобдж 932 0 объект (Перемешать) эндобдж 934 0 объект > эндобдж 936 0 объект (Читать) эндобдж 938 0 объект > эндобдж 940 0 объект (Чтение) эндобдж 942 0 объект > эндобдж 944 0 объект (Real2Double) эндобдж 946 0 объект > эндобдж 948 0 объект (Выпуск) эндобдж 950 0 объект > эндобдж 952 0 объект (Переименовать) эндобдж 954 0 объект > эндобдж 956 0 объект (Перезагрузить) эндобдж 958 0 объект > эндобдж 960 0 объект (Переписать) эндобдж 962 0 объект > эндобдж 964 0 объект (Rmdir) эндобдж 966 0 объект > эндобдж 968 0 объект (Круглый) эндобдж 970 0 объект > эндобдж 972 0 объект (Runerror) эндобдж 974 0 объект > эндобдж 976 0 объект (Искать) эндобдж 978 0 объект > эндобдж 980 0 объект (SeekEof) эндобдж 982 0 объект > эндобдж 984 0 объект (SeekEoln) эндобдж 986 0 объект > эндобдж 988 0 объект (Сегмент) эндобдж 990 0 объект > эндобдж 992 0 объект (SetMemoryManager) эндобдж 994 0 объект > эндобдж 996 0 объект (SetJmp) эндобдж 998 0 объект > эндобдж 1000 0 объект (SetLength) эндобдж 1002 0 объект > эндобдж 1004 0 объект (SetTextBuf) эндобдж 1006 0 объект > эндобдж 1008 0 объект (Грех) эндобдж 1010 0 объект > эндобдж 1012 0 объект (Размер) эндобдж 1014 0 объект > эндобдж 1016 0 объект (Sptr) эндобдж 1018 0 объект > эндобдж 1020 0 объект (Кв. ) эндобдж 1022 0 объект > эндобдж 1024 0 объект (Sqrt) эндобдж 1026 0 объект > эндобдж 1028 0 объект (SSeg) эндобдж 1030 0 объект > эндобдж 1032 0 объект (Ул.) эндобдж 1034 0 объект > эндобдж 1036 0 объект (StringOfChar) эндобдж 1038 0 объект > эндобдж 1040 0 объект (Succ) эндобдж 1042 0 объект > эндобдж 1044 0 объект (Менять) эндобдж 1046 0 объект > эндобдж 1048 0 объект (Trunc) эндобдж 1050 0 объект > эндобдж 1052 0 объект (Усечь) эндобдж 1054 0 объект > эндобдж 1056 0 объект (Upcase) эндобдж 1058 0 объект > эндобдж 1060 0 объект (Вал) эндобдж 1062 0 объект > эндобдж 1064 0 объект (Писать) эндобдж 1066 0 объект > эндобдж 1068 0 объект (WriteLn) эндобдж 1070 0 объект > эндобдж 1072 0 объект (Блок OBJPAS) эндобдж 1074 0 объект > эндобдж 1076 0 объект (Типы) эндобдж 1078 0 объект > эндобдж 1080 0 объект (Функции и процедуры) эндобдж 1082 0 объект > эндобдж 1084 0 объект (AssignFile) эндобдж 1086 0 объект > эндобдж 1088 0 объект (CloseFile) эндобдж 1090 0 объект > эндобдж 1092 0 объект (Freemem) эндобдж 1094 0 объект > эндобдж 1096 0 объект (Getmem) эндобдж 1098 0 объект > эндобдж 1100 0 объект (GetResourceStringCurrentValue) эндобдж 1102 0 объект > эндобдж 1104 0 объект (GetResourceStringDefaultValue) эндобдж 1106 0 объект > эндобдж 1108 0 объект (GetResourceStringHash) эндобдж 1110 0 объект > эндобдж 1112 0 объект (GetResourceStringName) эндобдж 1114 0 объект > эндобдж 1116 0 объект (Хеш) эндобдж 1118 0 объект > эндобдж 1120 0 объект (Paramstr) эндобдж 1122 0 объект > эндобдж 1124 0 объект (ResetResourceTables) эндобдж 1126 0 объект > эндобдж 1128 0 объект (ResourceStringCount) эндобдж 1130 0 объект > эндобдж 1132 0 объект (ResourceStringTableCount) эндобдж 1134 0 объект > эндобдж 1136 0 объект (SetResourceStrings) эндобдж 1138 0 объект > эндобдж 1140 0 объект (SetResourceStringValue) эндобдж 1142 0 объект > эндобдж 1146 0 объект> ручей x ڍ J0} [0cf & $ T \ ADPZЮtU} Ӵ [WAr ‘(T’ {pDyP% feEj`e1_! 5+ վ ^ YTDD9C | UI $ # 87i CD

% PDF-1. 2 % 918 0 объект > эндобдж xref 918 131 0000000016 00000 н. 0000002973 00000 н. 0000041072 00000 п. 0000041231 00000 п. 0000041404 00000 п. 0000041643 00000 п. 0000041903 00000 п. 0000042227 00000 п. 0000042467 00000 п. 0000042645 00000 п. 0000042842 00000 п. 0000043104 00000 п. 0000043286 00000 п. 0000043496 00000 п. 0000043869 00000 п. 0000044201 00000 п. 0000044482 00000 п. 0000044791 00000 п. 0000045107 00000 п. 0000045374 00000 п. 0000045600 00000 п. 0000045917 00000 п. 0000046222 00000 п. 0000046575 00000 п. 0000046955 00000 п. 0000047263 00000 п. 0000047579 00000 п. 0000047793 00000 п. 0000048105 00000 п. 0000048398 00000 п. 0000048640 00000 п. 0000048949 00000 н. 0000049123 00000 п. 0000049331 00000 п. 0000049548 00000 п. 0000049812 00000 п. 0000050002 00000 п. 0000050240 00000 п. 0000050505 00000 п. 0000050697 00000 п. 0000051072 00000 п. 0000051124 00000 п. 0000051372 00000 п. 0000051648 00000 н. 0000051877 00000 п. 0000052122 00000 п. 0000052329 00000 п. 0000052630 00000 п. 0000052900 00000 п. 0000053217 00000 п. 0000053526 00000 п. 0000053861 00000 п. 0000054133 00000 п. 0000054445 00000 п. 0000054612 00000 п. 0000054779 00000 п. 0000055004 00000 п. 0000055318 00000 п. 0000055512 00000 п. 0000055775 00000 п. 0000056101 00000 п. 0000056239 00000 п. 0000056546 00000 п. 0000056986 00000 п. 0000057511 00000 п. 0000057752 00000 п. 0000058301 00000 п. 0000058593 00000 п. 0000058878 00000 п. 0000059140 00000 п. 0000060244 00000 п. 0000060444 00000 п. 0000060607 00000 п. 0000061033 00000 п. 0000061463 00000 п. 0000061947 00000 п. 0000062145 00000 п. 0000062537 00000 п. 0000062746 00000 п. 0000063218 00000 п. 0000063867 00000 п. 0000064450 00000 п. 0000065105 00000 п. 0000065334 00000 п. 0000065717 00000 п. 0000066328 00000 п. 0000066520 00000 п. 0000066573 00000 п. 0000066838 00000 п. 0000067105 00000 п. 0000067322 00000 п. 0000067551 00000 п. 0000067861 00000 п. 0000068121 00000 п. 0000068342 00000 п. 0000068514 00000 п. 0000068688 00000 п. 0000068883 00000 п. 0000069160 00000 п. 0000069368 00000 п. 0000069636 00000 п. 0000069846 00000 п. 0000070118 00000 п. 0000070382 00000 п. 0000070641 00000 п. 0000070869 00000 п. 0000071137 00000 п. 0000071363 00000 п. 0000071634 00000 п. 0000071814 00000 п. 0000072040 00000 п. 0000072261 00000 п. 0000072522 00000 п. 0000072774 00000 п. 0000074381 00000 п. 0000074632 00000 п. 0000074883 00000 п. 0000075138 00000 п. 0000075386 00000 п. 0000075563 00000 п. 0000075790 00000 п. 0000076166 00000 п. 0000076219 00000 п. 0000076326 00000 п. 0000076583 00000 п. 0000077038 00000 п. 0000077207 00000 п. 0000077354 00000 п. 0000077559 00000 п. 0000003030 00000 н. 0000041047 00000 п. трейлер ] >> startxref 0 %% EOF 919 0 объект > эндобдж 1047 0 объект > ручей H ܔ WSYo 曛 `HBa4v

Какие типы данных существуют в Паскале?

При программировании на языке Паскаль (Pascal) вы должны выбрать типы данных программы Pascal.Программисту важно понимать, что для запуска его программы в оперативной памяти выделяется место для хранения не только команд, но и данных, с которыми эти команды работают.

Все типы данных в Паскале делятся на две группы: простые и структурированные. Для каждого типа данных выделяется определенное количество байтов. Простые типы включают: целочисленные типы (байтовые, целочисленные и т. Д.), Вещественные типы (действительные, одиночные и т. Д.), Логический тип (логический), символьный тип (char), перечислимый и интервальный тип. Все они, за исключением реальных типов, являются порядковыми типами и характеризуются ограниченным упорядоченным набором значений.Например, переменная типа byte может принимать значения в диапазоне от 0 до 255 включительно. Эти типы данных в Паскале позволяют использовать функцию Pred (вычисляет предыдущее значение) и Succ (вычисляет последующее значение), Low (вычисляет наименьшее значение типа) и High (вычисляет наибольшее значение типа), Ord (вычисляет порядковый номер текущей переменной).

Переменная простого типа в качестве значения имеет только одно данное, то есть одно целое, дробное число или один символ.Переменные, которые имеют простые типы данных в Паскале, должны быть описаны в разделе Var (сокращение от Variables).

Переменная в программе на Паскале считается заданной, если у нее есть имя (идентификатор), тип и начальное значение. Имя переменной используется при доступе к ней с помощью оператора. Тип данных определяет диапазон представления (какие значения может принимать переменная), операции, в которых она может участвовать, объем памяти, необходимый для хранения переменной в ОЗУ.Поэтому при решении задачи следует стремиться к уменьшению количества переменных и рациональному выбору их типов.

Структурированные типы — это упорядоченный набор переменных простых типов. К ним относятся: массивы, наборы, строки, файлы и записи. Структурированные типы данных в Паскале описаны в разделе типов.

Массив является наиболее распространенным из структурированных типов, используется, когда вы хотите хранить и обрабатывать упорядоченный набор переменных одного и того же типа (любого простого типа). Массивы бывают одномерными, двумерными, многомерными.Примером одномерного массива может быть список студентов в журнале занятий, отсортированный по алфавиту, где каждый студент имеет уникальный порядковый номер. Примером двумерного массива является расположение мест в зрительном зале кинотеатра (каждое место определяется двумя измерениями — номером ряда и номером места).

Элементы набора, в отличие от массива, неупорядочены, а количество элементов ограничено 255. Строка — это упорядоченный набор символов, и это очень похоже на массив, но только символы могут быть строковыми элементами.

Файл — тот же массив, но количество элементов в нем может меняться в процессе выполнения программы. Запись — это набор данных разных типов.

Научившись применять типы данных в Паскале, вы можете реализовывать довольно сложные и интересные задачи.

Сравнение компьютерных языков — Типы данных

Сравнение компьютерных языков — Типы данных Visual Basic | Delphi | C ++ Builder | Ява

Типы данных

Байт Базовый C ++ Паскаль Ява
Строка 0–2 ГБ
0–64 К
0–256
Размер x как строка
Размер x как строка * длина
Размер x $
char * x;
знаков x [256];
x: строка;
г: ShortString;
z: AnsiString;
Строка x
( Строка должна быть заглавной)
Строка const «тест» «тест» ‘тест’ «тест»
Символ const 1 или 2 НЕТ ‘a’ — 8 бит ‘a’ — 8 бит
Chr (97)
‘a’ — 16 бит
Байт
0-255 (без знака)
-128 до +127 (со знаком)
char зависит от компилятора
1 Размер x как байт char x;
беззнаковый символ x;
знаковый символ x;
x: Байт;
x: Shortint;
байт x;
Логическое значение — ложь = 0
истина = 1 истина = -1
истина ложь
Значение истинное зависит от языка.
2 Dim x As Boolean bool x; x: логический;
истина = 1
логический x;
Целое число
от 32 768 до 32 767 (со знаком)
от 0 до 65 535 (без знака)
2 Dim x As Integer
Dim x%
короткий x;
беззнаковый короткий x;
int x; (16-битный компилятор)
x: SmallInt
x: Word;
короткий x;
знаков x; (Юникод)
Длинное целое число
от -2 147 483 648 до
2 147 483 647
4 Разм. X до
Разм. X &
30000 &
внутр x; (32-битный компилятор)
unsigned int x;
long x;
беззнаковое длинное x;
x: Longint;
x: целое число;
x: Длинное слово;
x: Кардинал;
внутр x;
Очень длинное целое
-9,223,372,036,854,775,808 до
9,223,372,036,854,775,807
8 НЕТ НЕТ x: Int64; длинный x;
Одиночный
1. От 401298E-45 до
3.402823E38
4 Dim x As Single
Dim x!
float x; x: одиночный; float x;
Двойной
4.94065645841247E-324 до
1.79769313486232E308
8 Разм. X Как Двойной
Разм. X #
двойной х;
длинный двойной х;
x: Двойной;
x: Реальный;
двойной х;
Расширенный
19 значащих цифр
10 НЕТ НЕТ x: Расширенный; НЕТ
Дата / время
1 января 100 г. по 31 декабря 9999 г.
8 Разм x как Дата НЕТ x: TDateTime; НЕТ
Варианты
Не использовать
16 или 22 Размер x, y НЕТ V1: вариант;
V1: OleVariant;
НЕТ
Массивы Dim x (5)
Dim x (5, 4) как целое число
Разм. X (от 1 до 10)
Разм. X ()
int x [5];
int x [5] [4];
НЕТ
НЕТ
x: Массив [1..20] байта;
x: массив [1..40,1..6] байтов
То же, что C ++
Тип Литой НЕТ (новый тип) var1 newType (var1)
Отправитель как TButton
Константы

и HA5A5 (шестигранник)

\ b (backspace)
\ 010 (восьмеричное)
\ x008 (шестнадцатеричное)

$ a000 (шестнадцатеричный)

Указатели 4 Адрес X пусто * ptr = 0;
char * str;
P: ^ Целое число;
P: = @X;
Y: = P ^;


Visual Basic 6.

0 Варианты могут содержать практически любой тип данных. Преобразование между различными типами вариантов обычно происходит автоматически. Однако такое использование приводит к плохо спроектированным приложениям. Использование вариантов в циклах примерно в 6 раз медленнее, чем целые числа. Как правило, никогда не следует использовать Варианты . К сожалению, многие функции требуют вариантов 🙁

Всегда используйте Option Explicit , чтобы требовать, чтобы все переменные были определены.

Когда объявлены переменные, инициализировать их невозможно.

 Тусклый флаг как логическое значение
   flag = false 
Const EM_LINESCROLL = & HB6
[Публичный | Частный] Константа имя константы [как тип] = выражение
 

Важные константы

    VisualBasic 3.0 VisualBasic 6.0
         КРАСНЫЙ vbRed
         KEY_RIGHT vbKeyRight
  ESC $ = Chr $ (KEY_ESCAPE) ESC $ = Chr $ (vbKeyEscape)
   cr $ = Chr $ (KEY_RETURN) cr $ = Chr $ (vbKeyReturn)

   Постоянный. txt является частью VB 3.0; его точно нет в VB 6.0.
   Похоже, я скопировал Constant.txt для создания globcons.bas
   а затем включил globcons.bas в свои программы. (Я не могу вспомнить.)
   Во всяком случае, имена констант в VB 6.0 теперь другие.
   (большая поддержка) :(
 
Будьте осторожны при работе с константами. Короткие целые числа должны быть меньше 32 КБ.
 l & = 30000 + 30000 'не удается, потому что он пытается вычислить короткое int
                         'а затем преобразует это в длинное int
    i & = 30000 & + 30000 & 'работает, потому что константы длинные, целые 
Это также не сработает, если будут добавлены 2 целочисленные переменные.

Следующее

    Dim iA, iB, iC как целое число 
объявляет 2 варианта и 1 целое число. В Паскале это было бы 3 целых числа. Если вам нужно 3 целых числа, используйте
    Dim iA как целое число, iB как целое число, iC как целое число 

Шестнадцатеричные константы — & HA5A5 ‘Short — & H0B00C004 &’ Long

Оператор AddressOf недоступен в большинстве версий VBA (VisualBasic для приложений). В частности, он недоступен в MS Access 97. Без этого оператора невозможно вызвать функции Windows API, которые требуется указатель на функцию.


Delphi / Pascal

Delphi не чувствителен к регистру.

  вар
    X, Y, Z: реальные;
    I, J, K: целое число;
    I: целое число = 7; // Инициализация работает только с глобальными переменными
  const
    fileName = 'test.ini';
 

Шестнадцатеричные константы — $ a000

Чтобы разместить одинарную кавычку в строке, используйте две последовательные одинарные кавычки.

 «Ты не можешь остановиться» 
Имена строк не могут содержать знак доллара.

Типы переменных Integer (со знаком) и Cardinal (без знака) может быть 16 или 32 бит, в зависимости от компилятора.

В Delphi переменная типа string может объявлять либо длинный (AnsiString), либо короткий (ShortString) строка в зависимости от флага компилятора.

Константы с действительным знаком всегда имеют тип расширенный


C ++

Шестнадцатеричные константы — \ x008

Большинство переменных размещены в стеке.Чтобы разместить переменные в куче, используйте новый . Каждый раз, когда новый используется для выделения памяти, delete должен быть вызван до выхода из программы. Иначе в программе будет утечка памяти. (сделать его недоступным для других программ). Массивы должны быть освобождены с помощью delete [] .

При объявлении переменной

  • тип * Имя делает Имя переменной который указывает на память, обрабатываемую как , тип .Пробелы могут быть по обе стороны от звездочки.
  • type * Name = & N1 делает Name переменной который инициализируется адресом N1 .
  • x = * Name2 возвращает значение, на которое указывает Name2 .
  • type & Name делает Name ссылочной переменной.
  • константный тип Имя = значение; — Имя не может быть изменено
    const отсутствует в индексе файла справки
Чтобы компилятор рассматривал переменную как другой тип, или преобразовать из одного типа в другой, используйте оператор cast .
 a = (с плавающей запятой) i; 
симв. * X; Выделяет переменную, которая может указывать на строку но не имеет выделенной памяти —
x = new char [20]; подойдет.
симв. X [256]; Назначает переменную, которая указывает на строку и память для хранения строки. Строка фактически содержит все байты до первого нулевой байт ‘\ 0’.Программист должен убедиться, что не написал за пределами выделенного места.
внутр x; Это может быть различный размер в зависимости от компилятора. Используйте короткий или длинный , если вы хотите контролировать.
симв. X; Является ли char подписанным или беззнаковым, зависит от компилятора
Последовательности побега
\ a Bell (оповещение)
\ b Backspace
\ f Подача
\ n Новая строка
\ r возврат каретки
\ t Горизонтальная вкладка
\ v Вертикальная табуляция
\ 'Одинарная кавычка
\ "Двойные кавычки
\\ Обратная косая черта ( Предупреждение:  требуется в путях к файлам DOS)
\? Вопросительный знак
\ ooo Восьмеричная константа
\ xhhh Шестнадцатеричная константа
 
#define EM_LINESCROLL 0x00B6
long i = 0;

 


Ява

Java похож на C ++, но без указателей.Переменные можно инициализировать, когда они определены.

  int n = 0;
  int j = n; // Может инициализироваться значением переменной
  Строка FileName = "autoexec.bat"; // Обратите внимание, что  Строка  должна быть заглавной
  char SingleCharacter = 'а'; // В Java 'a' - это 16 бит, в C - 8 бит
 
\ n = Новая строка работает в некоторых программах Java, но проблема с использованием awt.
Автор: Роберт Клемензи — clemenzi @ cpcug.org
URL: http: // cpcug.org / Пользователь / Clemenzi / технический / Языки / DataTypes.htm

(PDF) Компилятор Glasgow Pascal с векторными расширениями

86 БИБЛИОГРАФИЯ

[18] К. Э. Айверсон, Язык программирования, John Wiley & Sons, Inc., Нью-Йорк (1962),

p. 16.

[19] Айверсон, К. Э. Обозначение как инструмент мысли. Коммуникации ACM, 23 (8),

444-465, 1980.

[20] Айверсон К. Э., Личный взгляд на APL, IBM Systems Journal, Том 30, № 4, 1991.

[21] Айверсон, Кеннет Э. , Дж. Введение и словарь, Iverson Software Inc. (ISI ),

Торонто, Онтарио, 1995. 4, стр. 347-361, 2000.

[22] Дженсен, К., Вирт, Н., PASCAL User Manual and Report, Springer 1978.

[23] Johnston, D., C ++ Parallel Systems, ECH: Engineering Computing Newsletter, №

55, Лаборатория Дарсбери / Лаборатория Резерфорда Эпплтона, март 1995 г., стр. 6-7.

[24] Кнут, Д., Компьютеры и набор текста, Аддисон Уэсли, 1994.

[25] Кралл, А., Лелайт, С., Методы компиляции для мультимедийных процессоров, Международный журнал параллельного программирования. , Vol. 28, No. 4, pp. 347-361, 2000.

[26] Lamport, L., L

A

T

EXa, система подготовки документов, Addison Wesley, 1994.

[27] Leupers, R ., Оптимизация компилятора для медиапроцессоров, EMMSEC 99 / Швеция

1999.

[28] Меткалф М. и Рид Дж., Язык программирования F, OUP, 1996.

[29] Пелег, А., Вилке С., Вайзер У., Intel MMX для мультимедийных ПК, Comm. ACM, том

40, вып. 1 1997.

[30] Шеннон К., Математическая теория коммуникации, The Bell System Technical

Journal, том 27, стр. 379-423 и 623-656, 1948.

[31] Снайдер Л. , Руководство программиста по ZPL, MIT Press, Кембридж, Массачусетс, 1999.

[32] Среман, Н., Говиндараджан, Г., Компилятор векторизации для мультимедийных расширений —

, Международный журнал параллельного программирования, Vol. 28, No. 4, pp. 363-400,

2000.

[33] Strachey, C., Fundamental Concepts of Programming Languages, University of Ox-

Ford, 1967.

[34] Этьен Ганьон, SABLECC , ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ РАМА компилятора —

РАБОТА, Школа компьютерных наук Университета Макгилла, Монреаль, март 1998 г.

[35] Texas Instruments, TMS320C62xx Справочное руководство по процессору и набору команд TMS320C62xx, 1998 г.

[36] Тернер Т. Вектор Паскаль: компьютерный язык программирования для массива FPS-164.

процессор Iowa State Univ.

Author: alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *