Basic Pascal Tutorial/Chapter 1/Variables and Data Types/bg

From Free Pascal wiki
Revision as of 15:17, 20 August 2022 by Kai Burghardt (talk | contribs) (bypass language bar/categorization template redirect [cf. discussion])
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

български (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 Всяка ненулева стойност
 ◄   ▲   ►