Difference between revisions of "Basic Pascal Tutorial/Chapter 1/Variables and Data Types/ru"
(Created page with "{{Variables_and_Data_Types}} {{TYNavigator|Constants|Assignment_and_Operations}} <font size="5">Переменные и типы данных</font> 1D - Variables and Data ...") |
m (bypass language bar/categorization template redirect [cf. discussion]) |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{Basic Pascal Tutorial/Chapter 1/Variables and Data Types}} |
− | {{TYNavigator|Constants| | + | {{TYNavigator|Chapter 1/Constants|Chapter 1/Assignment and Operations}} |
<font size="5">Переменные и типы данных</font> | <font size="5">Переменные и типы данных</font> | ||
Line 9: | Line 9: | ||
Переменные похожи на константы, но их значения могут быть изменены во время выполнения программы. В Pascal переменные должны быть сначала объявлены, прежде чем они могуть быть использованы: | Переменные похожи на константы, но их значения могут быть изменены во время выполнения программы. В Pascal переменные должны быть сначала объявлены, прежде чем они могуть быть использованы: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
IdentifierList1 : DataType1; | IdentifierList1 : DataType1; | ||
Line 36: | Line 36: | ||
* Free Pascal поддерживает такую-же реализацию типа '''PChar''', как Delphi. PChar определён как указатель на тип Char, но позволяет дополнительные операции. Тип PChar может быть лучше понят как Pascal-эквивалент нуль-терминированной сроки в стиле языка C, т.е. переменная типа PChar является указателем, который указывает на массив типа Char, завершающийся нулевым символом (#0). Free Pascal поддерживает инициализацию типизированных констант PChar, или прямое присваивание. Например, следующие фрагменты кода эквивалентны: | * Free Pascal поддерживает такую-же реализацию типа '''PChar''', как Delphi. PChar определён как указатель на тип Char, но позволяет дополнительные операции. Тип PChar может быть лучше понят как Pascal-эквивалент нуль-терминированной сроки в стиле языка C, т.е. переменная типа PChar является указателем, который указывает на массив типа Char, завершающийся нулевым символом (#0). Free Pascal поддерживает инициализацию типизированных констант PChar, или прямое присваивание. Например, следующие фрагменты кода эквивалентны: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
program one; | program one; | ||
var P : PChar; | var P : PChar; | ||
Line 45: | Line 45: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
program two; | program two; | ||
const P : PChar = 'This is a null-terminated string.'; | const P : PChar = 'This is a null-terminated string.'; | ||
Line 55: | Line 55: | ||
* Free Pascal поддерживает тип '''String''', как он определён в Turbo Pascal: последовательность символов с необязательным указанием размера. Он также поддерживает '''ansistring''' (с неограниченной длиной), как в Delphi. Возможные объявления: | * Free Pascal поддерживает тип '''String''', как он определён в Turbo Pascal: последовательность символов с необязательным указанием размера. Он также поддерживает '''ansistring''' (с неограниченной длиной), как в Delphi. Возможные объявления: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
variable_name : string; // если не указана длина, по умолчанию принимается 255 | variable_name : string; // если не указана длина, по умолчанию принимается 255 | ||
variable_name : string[length]; // где: 1 < length <= 255 | variable_name : string[length]; // где: 1 < length <= 255 | ||
Line 67: | Line 67: | ||
Пример объявления нескольких переменных: | Пример объявления нескольких переменных: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
age, year, grade : integer; | age, year, grade : integer; | ||
Line 115: | Line 115: | ||
|Double ||align="center"|5.0E-324 .. 1.7E308 ||align="center"|15-16 ||8 | |Double ||align="center"|5.0E-324 .. 1.7E308 ||align="center"|15-16 ||8 | ||
|- | |- | ||
− | |Extended ||align="center"|1.9E-4932 .. 1.1E4932 ||align="center"|19-20 ||10 | + | |Extended* ||align="center"|1.9E-4932 .. 1.1E4932 ||align="center"|19-20 ||10 |
|- | |- | ||
|Comp ||align="center"|-2E64+1 .. 2E63-1 ||align="center"|19-20 ||8 | |Comp ||align="center"|-2E64+1 .. 2E63-1 ||align="center"|19-20 ||8 | ||
Line 121: | Line 121: | ||
|Currency ||align="center"|-922337203685477.5808 ||align="center"|922337203685477.5807 ||8 | |Currency ||align="center"|-922337203685477.5808 ||align="center"|922337203685477.5807 ||8 | ||
|} | |} | ||
− | + | ||
+ | <code>*</code> Обратите внимание, что для 64-разрядных версий Windows и целей, не относящихся к Intel, Extended является псевдонимом для Double. | ||
{| style="background-color:#f5f5f5" cellspacing=5 | {| style="background-color:#f5f5f5" cellspacing=5 | ||
Line 136: | Line 137: | ||
|} | |} | ||
− | {{TYNavigator|Constants| | + | {{TYNavigator|Chapter 1/Constants|Chapter 1/Assignment and Operations}} |
Latest revision as of 16:17, 20 August 2022
│
български (bg) │
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 |
*
Обратите внимание, что для 64-разрядных версий Windows и целей, не относящихся к Intel, Extended является псевдонимом для Double.
Тип | Байтов | Ord(True) |
---|---|---|
Boolean | 1 | 1 |
ByteBool | 1 | Любое ненулевое значение |
WordBool | 2 | Любое ненулевое значение |
LongBool | 4 | Любое ненулевое значение |