Felhasználói eszközök

Eszközök a webhelyen


inf-prog-fszi:adattipusok_valtozok

Adattípusok. Állandók. Változók deklarálása. Összetett adattípusok. Rekord típus

Állandók

Az állandók deklarálás a const szakaszban történik.

allando.txt
const
  azonosító = érték;

Példa.

allandok.pas
const
  pi = 3.14;
  avogadro = 6.022E23;
  ev = 2017;
  nev = 'Marci';
  megfelelt = true;

Típusos állandók

tipusos_allandok.pas
const
  r : real = 20;

Változók

A változók deklarálás a var szakaszban történik.

valtozo.txt
var
  azonosító : adattípus;

Adattípusok

A Pascal alapvető elemi típusai:

  • integer - egész: -32768-től 32767-ig
  • real - valós: 3.4×10-38-tól 3.4×1038-ig
  • char - karakter: pl. 'a' , ' ' , '+' , '#9' , '#$10' stb.
  • boolean - logikai: true (igaz) vagy false (hamis)

A szöveges adattípusokat karakterláncokban tárolják, úgynevezett string típusban, melynek hossz maximum 255 karakter lehet.

Példa

valtozok.pas
var
  ev, ho, jegy : integer;
  trulet : real;
  betu : char;
  leadva : boolean;
  keresznev : string;  

Egyéb FreePascal szöveges adattípusok:

  • WideChar - két byte-os, azaz unicode vagy UTF-16 kódolású karakter
  • PChar - null-karakter ( '#0' ) végződésű karakterlánc
  • ShortString - maximum 255 karakter hosszúságú karakterlánc
  • AnsiString - ennek a karakterlánc-típusnak a hossza nincs korlátozva
  • Widestrings - unicode vagy UTF-16 kódolású karaktereket tároló karakterlánc

Egész típusok a FreePascal-ban

Típus Értékhalmaz Tárfoglalás bájtokban
Byte 0 .. 255 1
Shortint -128 .. 127 1
Smallint -32768 .. 32767 2
Word 0 .. 65535 2
Integer smallint vagy longint 2 vagy 4
Cardinal longword 4
Longint -2147483648 .. 2147483647 4
Longword 0 .. 4294967295 4
Int64 -9223372036854775808 .. 9223372036854775807 8
QWord 0 .. 18446744073709551615 8

Valós típusok a FreePascal-ban

Típus Értékhalmaz Értékes jegyek Tárfoglalás bájtokban
Real platformfüggő ??? 4 vagy 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

Saját típus deklarálása

sajattipus.txt
type
  adattípus_azonosító = típus_specifikáció;

Felsorolás típus

Formátum

felsorolas.txt
type
  adattípus_azonosító = (azonosító_1, azonosító_2, ... , azonosító_n);

Példa

felsorolas.pas
program kartyazas;
type
  kartya_szin = (tok, makk, piros, zold);
var
  piros_kartya : kartya_szin;
begin
  piros_kartya := piros;
end.

Tartomány típus

Formátum

tartomany.txt
type
  tartomany_tipus_azonosító = alsó_korlát .. felső_korlát;

Példa

tartomany.pas
program kartyaszinek;
type
  kartya_szin = (tok, makk, piros, zold);
  kartya_szin_tartomany = piros .. zold;
var
  piros_kartya : kartya_szin_tartomany;
begin
  piros_kartya := piros;
end.

Halmaz típus

Formátum

halmaz.txt
type
  halmaz_azonosito = set of alaptípus;

Példa

halmazok.pas
program halmazok;
type
    abc = set of 'a'..'z'; 
    szamok = set of 0..9; 
    evszak = set of (tavasz, nyar, osz, tel);
var a, b, c : szamok;
begin
  {egyesítés}
  A := [0, 2, 5, 9]; 
  B := [1, 2, 4, 6]; 
  C := A + B;           
  {eredmény: 
   C = [ 0, 1, 2, 4, 5, 6, 9]}
 
  {metszet}
  A := [0, 2, 5, 9]; 
  B := [1, 2, 4, 6]; 
  C := A * B;
  {eredmény: C = [2]}
 
  {különbség}
  A := [0, 2, 5, 9]; 
  B := [1, 2, 4, 6]; 
  C := A - B;
  {eredmény: 
   C = [0, 5, 9]}
 
end.

Rekord típus

Formátum

rekord.txt
type  
  rekordtpíus_azonosító = record
    mezőnév_1 : adattípus_1;
    ...
    mezőnév_n : adattípus_n;
  end;

Rekord mezőhöz való hozzáférés:

rekord_hozzafer.txt
rekordtípus_azonosító.mezőnév_1

Példa rekordok kezelésére

rekord.pas
program rekord;
type
  tanulo_tipus = record
    nev : string;
    szuletesi_ev : word;
  end;
var 
  tanulo: tanulo_tipus;
begin
  tanulo.nev := 'Kelep Elek';
  tanulo.szuletesi_ev := 2000;
end.

A With parancs segít leegyszerűsíteni a rekord mezőihez való hozzáférést.

with.txt
With rekord_változó do
  mezőnév_1 := érték_1;
    ...
end;

Példa a With parancs használatára

with.pas
With tanulo do
  nev := 'Kelep Elek';
  szuletesi_ev := 2000;
end;

Mutató adattípus

Formátum

mutato.txt
type
  mutató_típus = ^adattípus;

Példa

mutatok.pas
program mutatok;
type
  egesz_mutato = ^integer;
var 
  p_egesz: egesz_mutato;
begin
  Writeln('A lefoglalas elott: ',memavail);
  {Szabad memória: 262080}
 
  {A memória lefoglalása}
  New(p_egesz);
  Writeln('A lefoglalas utan: ',memavail);
  {Szabad memória: 262064}
 
  {Értékadás}
  p_egesz^ := 5;
 
  {A memória felszabadítása}
  Dispose(p_egesz);
  Writeln('A felszabaditas utan: ',memavail);
  {Szabad memória: 262080}
  Readln;
end.

Előre definiált mutató.

eloremutato.pas
type
  PLancoltLista = ^LancoltLista;
  LancoltLista = record
    adat : integer;
    next : PLancoltLista;
  end;
inf-prog-fszi/adattipusok_valtozok.txt · Utolsó módosítás: 2017/06/17 16:02 szerkesztette: beistvan