Variables and Data Types/ru

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko) русский (ru) 中文(中国大陆)‎ (zh_CN)

 ◄   ▲   ► 

Переменные и типы данных

1D - Variables and Data Types (author: Tao Yue, state: changed)


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

var
  IdentifierList1 : DataType1;
  IdentifierList2 : DataType2;
  IdentifierList3 : DataType3;
  ...

IdentifierList - несколько идентификаторов, разделённых запятыми (,). Все идентификаторы в списке объявляются как имеющие одинаковый тип.

Основные типы данных Pascal включают:

  • integer
  • real
  • char
  • boolean

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

Дополнительная информация о типах данных Pascal:

  • Тип данных integer может содержать целые числа от -32768 до 32767. Это знаковый диапазон, который может быть сохранён в 16-битном слове, и является наследием эпохи, когда были распространены 16-битные процессоры. Для обратной совместимости 32-битный знаковый integer является longint и может содержать гораздо больший диапазон значений.
  • Тип данных real имеет диапазон от 3.4x10-38 до 3.4x1038, в дополнение к такому-же диапазону в отрицательной области. Вещественные значения хранятся внутри компьютера сходно с научной нотацией - с мантиссой и экспонентой, с некоторыми усложнениями. В Pascal вы можете выразить вещественое значение в вашем коде либо в нотации с фиксированной точкой, либо в научной нотации с символом E, отделяющим мантиссу от экспоненты. Таким образом, 452.13 и 4.5213e2 эквивалентны.
  • Тип данных char содержит символы. Обязательно заключайте их в апострофы, например, так: 'a', 'B', '+'. Стандартный Pascal использует 8-битные символы, а не 16-битные, поэтому Unicode, который используется для представления наборов всех мировых языков в одной системе UNIfied CODE, не поддерживается.
  • WideChar - это двухбайтный символ (элемент DBCS: Double Byte Character Set) и может содержать юникодный символ.
  • Free Pascal поддерживает такую-же реализацию типа PChar, как Delphi. PChar определён как указатель на тип Char, но позволяет дополнительные операции. Тип PChar может быть лучше понят как Pascal-эквивалент нуль-терминированной сроки в стиле языка C, т.е. переменная типа PChar является указателем, который указывает на массив типа Char, завершающийся нулевым символом (#0). Free Pascal поддерживает инициализацию типизированных констант PChar, или прямое присваивание. Например, следующие фрагменты кода эквивалентны:
program one;  
var P : PChar;  
begin  
  P := 'This is a null-terminated string.';  
  WriteLn (P);  
end.
program two;  
const P : PChar = 'This is a null-terminated string.';  
begin  
  WriteLn (P);  
end.
  • Free Pascal поддерживает тип String, как он определён в Turbo Pascal: последовательность символов с необязательным указанием размера. Он также поддерживает ansistring (с неограниченной длиной), как в Delphi. Возможные объявления:
variable_name : string;                    // если не указана длина, по умолчанию принимается 255
variable_name : string[length];            // где:  1 < length <= 255
  • Предопределённый тип ShortString определён как строка длиной 255.
  • AnsiString - строки, которые не имеют ограничения по длине. Это строки с подсчётом ссылок и гарантированно завершающиеся нулевым символом. Внутренне ansistring рассматривается как указатель: реальное содержимое строки хранится в куче, в которой выделяется столько памяти, сколько необходимо для хранения содержимого строки.
  • Тип Widestring (используется для представления строк юникодных символов) реализован во многом подобно ansistring: с подсчётом ссылок, нуль-терминированный массив, только реализованный как массив WideChar вместо обычных Char.
  • Тип данных boolean может иметь только два значения: TRUE (истина) и FALSE (ложь).

Пример объявления нескольких переменных:

var
  age, year, grade : integer;
  circumference : real;
  LetterGrade : char;
  DidYouFail : Boolean;

Из документации FPC:

Целые типы
Тип Диапазон Байтов
Byte 0 .. 255 1
Shortint -128 .. 127 1
Smallint -32768 .. 32767 2
Word 0 .. 65535 2
Integer smallint или longint 2 or 4
Cardinal longword 4
Longint -2147483648 .. 2147483647 4
Longword 0..4294967295 4
Int64 -9223372036854775808 .. 9223372036854775807 8
QWord 0 .. 18446744073709551615 8

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


Вещественные типы
Тип Диапазон Значащих цифр Байтов
Real зависит от платформы ??? 4 or 8
Single 1.5E-45 .. 3.4E38 7-8 4
Double 5.0E-324 .. 1.7E308 15-16 8
Extended 1.9E-4932 .. 1.1E4932 19-20 10
Comp -2E64+1 .. 2E63-1 19-20 8
Currency -922337203685477.5808 922337203685477.5807 8


Логические типы
Тип Байтов Ord(True)
Boolean 1 1
ByteBool 1 Любое ненулевое значение
WordBool 2 Любое ненулевое значение
LongBool 4 Любое ненулевое значение
 ◄   ▲   ►