Basic Pascal Tutorial/Chapter 1/Variables and Data Types/bg
│
български (bg) │
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
한국어 (ko) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Променливи и типове данни
(author: Tao Yue, state: changed)
Променливите са подобни на константите, но техните стойности могат да се променят, докато програмата работи. В Pascal променливите трябва първо да бъдат декларирани преди да могат да бъдат използвани:
var
IdentifierList1 : DataType1;
IdentifierList2 : DataType2;
IdentifierList3 : DataType3;
...
IdentifierList е поредица от идентификатори, разделени със запетаи (, ). Всички идентификатори в списъка се декларират като от същия тип данни.
Основните типове типове променливи в Pascal включват:
Стандартният Pascal не предвижда тип за символен низ (string), но повечето съвременни компилатори го имат.
Повече информация за типовете данни на Pascal:
- Типът Integer може да съдържа цели числа. Размерът на цяло число зависи от компилатора и процесора. На компютрите преди 80386 „цяло число“ означава 16-битови цели числа в диапазона от -32768 до 32767 (-215 до +215-1). Това е диапазона, който може да се съхранява в 16-битова дума със знак и е наследство от епохата, когато повечето процесори са били 16-битови. За съвместимост 32-битовото цяло число със знак е longint и може да съдържа значително по-голям диапазон от стойности: -2147483648 до 2147483647 (-231 до +231-1).
- Типът Word е 16-битов integer без знак, което означава диапазон от 0 до 65535 (216-1).
- Типът Real има диапазон от 3.4x10-38 до 3.4x1038, както и същия диапазон в отрицателните числа. Реалните стойности се съхраняват в компютъра подобно на научната нотация, с мантиса и експонента, при това с някои усложнения. В Pascal можете да изразявате реални стойности във вашия код или в нотация с фиксирана точка, или в научна нотация, като знакът E разделя мантисата от експонентата. Така 452.13 означава същото като 4.5213e2
- Типът данни Char съдържа символи. Не забравяйте да ги затворите в единични кавички: 'a' 'B' '+' Стандартният Pascal използва 8-битови символи, а не 16-битови, така че Unicode, който се използва за представяне на всички световни езикови набори в една UNIfied CODE система, не се поддържа.
- WideChar е двубайтов символ (елемент от DBCS: Двубайтов набор от символи) и може да съдържа Unicode символ. Забележка: някои Unicode символи изискват по два WideChars. Вижте „UTF-16“.
- Free Pascal поддържа типа данни на Delphi PChar. PChar е дефиниран като указател към тип Char, но позволява допълнителни операции. Типът PChar може да се опише най-добре като Паскалски еквивалент на низовете в езика 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: поредица от символи с незадължително указване на размера. Той също така поддържа AnsiStrings (с неограничена дължина), както в Delphi. Може да се декларира като:
variable_name : string; // if no length is given, it defaults to 255
variable_name : string[length]; // where: 1 < length <= 255
- Предварително дефинираният тип ShortString се дефинира като низ с размер 255.
- AnsiStrings са низове, които нямат ограничение на дължината. Те имат брояч на препратките (refcount) и гарантирано завършват с нулев символ (#0). Вътрешно AnsiString се третира като указател: съдържанието на низа се съхранява в heap, заделя се толкова памет, колкото е необходимо.
- WideStrings (за представяне на символни низове на unicode) сa същите като AnsiStrings, с тази разлика, че са масиви от 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 or longint | 2 или 4 |
Cardinal | longword | 4 |
Longint | -2147483648 .. 2147483647 | 4 |
Longword | 0..4294967295 | 4 |
Int64 | -9223372036854775808 .. 9223372036854775807 | 8 |
QWord | 0 .. 18446744073709551615 | 8 |
Free Pascal прави автоматично преобразуване на типове в изрази, където се използват различни видове цели числа.
Тип | Диапазон | Значещи цифри | Байтове |
---|---|---|---|
Real | в зависимост от платформата | ??? | 4 или 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 |
- Имайте предвид, че за Windows 64-bit и не-Intel процесори, Extended е псевдоним за Double.
Тип | Байтове | Ord(True) |
---|---|---|
Boolean | 1 | 1 |
ByteBool | 1 | Всяка ненулева стойност |
WordBool | 2 | Всяка ненулева стойност |
LongBool | 4 | Всяка ненулева стойност |