JustPaste.it

Dane liczbowe w języku Pascal

744d70e6507849e798eeedc4ab20458b.gif

Liczby bez znaku

Ten typ danych odpowiada kodowaniu wartości całkowitych w naturalnym kodzie dwójkowym.

byte

1-bajtowa liczba całkowita bez znaku (8 bitów).
Zakres od 0 do 28 - 1 (255).

word

2-bajtowa liczba całkowita bez znaku (16 bitów).
Zakres od 0 do 216 - 1 (65535).

longword

4-bajtowa liczba całkowita bez znaku (32 bity)
Zakres od 0 do 232 - 1 (4294967295).

cardinal

Jest to standardowy dla danej platformy typ liczb bez znaku. W Dev-Pascalu odpowiada on typowi longword, ponieważ kompilator ten został przygotowany dla 32-itowego środowiska programowania. Całkiem prawdopodobne, iż w niedalekiej przyszłości typ ten będzie odnosił się do danych 64-bitowych wraz z upowszechnieniem się nowych procesorów.

Liczby ze znakiem

Ten typ danych odpowiada kodowaniu wartości całkowitych w kodzie uzupełnieniowym do 2 - U2.

shortint

1-bajtowa liczba całkowita ze znakiem w kodzie U2 (8 bitów).
Zakres od -27 (-128) do 27 - 1 (127).

smallint

2-bajtowa liczba całkowita ze znakiem w kodzie U2 (16 bitów).
Zakres od -215 (-32768) do 215 - 1 (32767).

longint

4-bajtowa liczba całkowita ze znakiem w kodzie U2 (32 bity).
Zakres od -231 (-2147483648) do 231 - 1 (2147483647)

int64

8-bajtowa liczba całkowita ze znakiem w kodzie U2 (64 bity).
Zakres od -263 (-9223372036854775808) do 263 - 1 (9223372036854775807).

integer

Standardowy typ danych całkowitych ze znakiem. W Dev-Pascalu odpowiada on typowi longint z powodów identycznych jak dla typu cardinal.

Podsumowanie

Typy całkowite
bez znaku - NBC ze znakiem - U2
byte 8b - 1B Zakres 0...28-1 shortint 8b - 1B Zakres -27...27-1
word 16b - 2B Zakres 0...216-1 smallint 16b - 2B Zakres -215...215-1
longword 32b - 4B Zakres 0...232-1 longint 32b - 4B Zakres -231...231-1
      int64 64b - 8B Zakres -263...263-1
cardinal 32b - 4B Zakres 0...232-1 integer 32b - 4B Zakres -231...231-1

c606afab0f8c021ae8376209db7cb108.gif

Obecnie wszystkie procesory komputerów IBM są zintegrowane wewnętrznie z koprocesorem arytmetycznym, który sprzętowo (zatem bardzo szybko) wykonuje złożone operacje na liczbach zmiennoprzecinkowych. Podstawowe typy danych zmiennoprzecinkowych odpowiadają bezpośrednio typom danych, które obsługuje koprocesor. Koprocesor arytmetyczny pracuje w standardzie IEEE 754.

single

32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji w standardzie IEEE 754 (4 bajty).
Zakres od - 3,4 x 1038 do 3,4 x 1038. Precyzja około 7 cyfr znaczących.

double

64-bitowa liczba zmiennoprzecinkowa o podwójnej precyzji w standardzie IEEE 754 (8 bajtów).
Zakres od - 1,8 x 10308 do 1,8 x 10308. Precyzja około 15...16 cyfr znaczących.

comp

Ten typ jest typem pośrednim pomiędzy liczbami całkowitymi a liczbami zmiennoprzecinkowymi. Liczba typu comp traktowana jest przez koprocesor jak liczby zmiennoprzecinkowa całkowita bez wykładnika. Najczęściej typ ten stosujemy do przechowywania dużych wartości całkowitych, takich jak sumy pieniężne. W tym przypadku suma jest wyrażona w groszach. Aby uzyskać wartość w złotówkach, dzielimy ją przez 100.

64-bitowa liczba całkowita ze znakiem w kodzie U2. Odpowiada typowi int64.
Zakres od -263 (-9223372036854775808) do 263 - 1 (9223372036854775807).

real

Typ real jest standardowym typem zmiennoprzecinkowym dla danej platformy. Odpowiada on typowi double.

extended

Jest to wewnętrzny tym reprezentacji liczb zmiennoprzecinkowych w koprocesorze arytmetycznym. Aby zminimalizować błędy obliczeniowe koprocesor wykonuje wewnętrznie obliczenia na rozszerzonym formacie do 80-bitów. Dzięki temu wzrasta zakres oraz precyzja przetwarzanych liczb. Koprocesor po wykonaniu obliczeń automatycznie przelicza wynik z typu extended na typ single lub double.

80-bitowa liczba zmiennoprzecinkowa o rozszerzonej precyzji w standardzie IEEE 754 (10-bajtów).
Zakres od -1,1 x 104932 do 1,1 x 104932. Precyzja około 19...20 cyfr znaczących.

Informacje na temat typu extended znajdziesz w rozdziale opisującym standard IEEE 754.

Podsumowanie

Typy zmiennoprzecinkowe koprocesora arytmetycznego
single 32b - 4B Zakres ±3,4 x 1038 Precyzja 7...8 cyfr
double 64b - 8B Zakres ±1,8 x 10308 Precyzja 15...16 cyfr
extended 80b - 10B Zakres ±1,1 x 104932 Precyzja 19...20cyfr
comp 64b - 8B Zakres -263 do 263 - 1 Liczba dokładna
real 64b - 8B Zakres ±1,8 x 10308 Precyzja 15...16 cyfr

156340e589be7e8dcdf335bda349f40b.gif

Znaki przechowywane są w pamięci komputera w postaci kodów ASCII (8 bitów) lub Unicode (16 bitów). Kod znaku jest liczbą całkowitą w naturalnym kodzie binarnym.

char

Dana 1-znakowa. Zmienna tego typu przechowuje jeden znak ASCII (8-bitów, 1 bajt). Kod znaku zawiera się w granicach od 0 do 255. Znaki o kodach mniejszych od 32 są zwykle tzw. znakami sterującymi, których celem nie jest prezentacja znaków, lecz wykonanie określonych działań. Na przykład znak NL o kodzie 10 powoduje przejście z wydrukiem do nowego wiersza. Znak CR o kodzie 13 ustawia kursor na początku wiersza.

widechar

Dana 1-znakowa. Przechowuje 16-bitowy kod znaku Unicode. System Unicode wprowadzono, gdy okazało się, iż standardowy kod ASCII jest niewystarczający do reprezentowania wszystkich znaków narodowych. Kod znaku zawiera się w granicach od 0 do 65535. Pierwsze 256 kodów (od 0 do 255) odpowiada znakom ASCII, co znacznie ułatwia wszelkie konwersje.

string

Dana typu string jest 256 elementową tablicą znakową i może przechowywać ciąg znaków. Dostęp do poszczególnych literek przechowywanego tekstu uzyskuje się za pomocą indeksu. Element o indeksie 0 zawiera informację o ilości przechowywanych znaków. Kolejne elementy zawierają poszczególne znaki tekstu. Ilość znaków jest zatem ograniczona do 255.

a26036df7ae7ae77d70a8bb6292d9f1a.gif

 

W zmiennej s umieszczamy napis Janusz.

Zawartość zmiennej typu string
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7]
\6 J a n u s z ?

Zawartość komórek zmiennej s poza obszarem tekstu (s[7]...s[255]) jest niezdefiniowana, tzn. mogą tam być dowolne znaki pochodzące z poprzednich działań nad tą zmienną lub obszarem pamięci przez nią zajmowanym.

longstring, ANSIstring

Dana tego typu jest 32-bitowym (4 bajty) adresem obszaru pamięci, w którym przechowywany jest właściwy tekst. Dostęp do poszczególnych znaków odbywa się za pomocą indeksów identycznie jak w typie string. Ilość znaków nie jest ograniczona do 255, lecz może być dowolna (limitem jest dostępny obszar pamięci). Na końcu przechowywanego tekstu wstawiany jest znak o kodzie 0. Zmienne tego typu są dynamicznie obsługiwane przez Pascala. Ich dokładny opis wymaga osobnego artykułu.

a26036df7ae7ae77d70a8bb6292d9f1a.gif

 

W zmiennej s umieszczamy napis Janusz.

Zawartość zmiennej typu ANSIstring lub longstring
s[1] s[2] s[3] s[4] s[5] s[6] s[7]
J a n u s z \0

4e96588c54eb091ccc27406054ee1302.gif

boolean

Zmienna 8-bitowa (1 bajt). Jeśli wszystkie bity są ustawione na 0, to przedstawia wartość logiczną FALSE. Jeśli chociaż jeden z bitów ma wartość 1, to przedstawia wartość logiczną TRUE. Standardowo wyrażenia logiczne zmieniają zawartość najmłodszego bitu - pozostałe przyjmują zawsze wartość 0:

00000000(BOOLEAN) = FALSE (fałsz)

00000001(BOOLEAN) = TRUE (prawda)

 

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

 

Źródło: mgr Jerzy Wałaszek