1. Változótípusok az Object Pascalban 2. Elágazások, ciklusok Negyedik Generációs Nyelvek ( Delphi ) 1. Változótípusok az Object Pascalban 2. Elágazások, ciklusok
1. VÁLTOZÓTÍPUSOK
Értékadó utasítás Változó-azonosító := Kifejezés ; A := 5 ; B := A + 3 ; A := (B + 7) * 2 ; A kifejezés tartalmazhat: l Változót A l Konstanst 3 l Műveletet + l Zárójelet () l ...
Ezek a típusok nem osztályok, mint a Javaban, hanem valós típusok ! Változótípusok Egyszerű típusok Összetett típusok Pointer Procedural Variant Ezek a típusok nem osztályok, mint a Javaban, hanem valós típusok !
Object Pascal típusok
Egyszerű típusok
Egyszerű típusok sorszámozott valós egész karakter logikai felsorolt résztartomány valós
Összetett típusok string struktúrált típusok halmaztípus tömbtípus rekord típus fájltípus osztálytípus osztályhivatkozás típus interfész típus
Egész típusok
Valós típusok
Logikai típusok Delphi logikai típusok Boolean, ByteBool, WordBool, és LongBool A Boolean és a ByteBool (Byte) típus 1bájtnyi memóriát foglal, WordBool 2 bájtot (Word), és a LongBool típus 4 bájtot (LongInt).
Memóriában foglalt hely Stringek Típus Max. hossz Memóriában foglalt hely Használt karakterek ShortString 255 karakter 2-től 256 byte-ig AnsiString ~2^31 karakter 4 byte-tól 2GB-ig 8-bit (ANSI) karakterek WideString ~2^30 karakter Unicode karakterek
Stringek Turbo Pascal karakterlánc: max. 256 elemű #6 D e l p h i Nulla végzésű karakterláncok Turbo Pascal karakterlánc: max. 256 elemű #6 D e l p h i C típusú karakterlánc: max. 64 K -1 elemű D e l p h i #0
Stringek (OP új lehetőségei) Nulla végzésű karakterláncok Object Pascal - ban: String PChar = ^ Char; Array [0..Max] Of Char; Helyfoglalás: String és Array[0..Max] of Char esetén a fordító PChar esetén Mi Pascal C típusú
Konverziós függvények Egész számok átalakítása Stringek átalakítása Lebegőpontos számok átalakítása Dátumok átalakítása
Egész számok átalakítása IntToStr(Value: Integer): string; Integerből string IntToStr(Value: Int64): string; Int64-ből string IntToHex(Value: Integer; Digits: Integer): string; Integerből hexadecimális szám, amely string típusként kezelendő IntToHex(Value: Int64; Digits: Integer): string; Int64 típusból hexadecimális string
Egész számok átalakítása A Digits paraméter,a hexadecimális szám(amely persze string típusú) minimum helyi értékeinek számát állítja be. IntToHex(5,2) 05 IntToHex(50,2) 32 IntToHex(500,2) 1F4
Stringek átalakítása A következő függvények stringet alakítanak át egész típussá, ha a konverzió nem sikerül EConvertError kivétel keletkezik lsd. Kivételek kezelése StrToInt(const S: string):Integer; Stringből integer StrToIntDef(const S: string; Default: Integer): Integer; Stringből integer, megadható egy Default érték, amelynek az a feladata, hogy konverziós hiba esetén nem kivétel képződik, hanem a függvény ezt az értéket adja vissza
Stringek átalakítása pl.: a:=StrToIntDef('15',100); a értéke 15 a:=StrToIntDef('15',100); a értéke 100 StrToInt64(const S: string):Int64; Stringből Int64 típus StrToInt64Def(const S: string; const Default: Int64): Int64; Stringből Int64 típus A második paraméter alapérték, amellyel hiba esetén tér vissza
Stringek átalakítása StrToFloat(const S: string): Extended; stringből lebegőpontos szám StrToFloatDef(const S:string; const Default: Extended): Extended; stringből lebegőpontos szám, hiba esetén alapértékkel
Stringek átalakítása StrToDate(const S: string): TDateTime; stringből dátum típus StrToTime(const S: string): TDateTime; stringből idő típus StrToDateTime(const S:string): TDateTime; stringből dátum-idő típus
Lebegőpontos számok átalakítása FloatToCurr(const Value: Extended): Currency; Extendedből Currency CurrToStr(Value: Currency): string; Currency típusból string FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string; extendedből string a formátum megválasztásával, a Precision paraméterrel a szám jegyeinek számát adhatjuk meg, a Digits paraméterrel a minimális tizedesjegyek számát
Lebegőpontos számok átalakítása CurrToStrF(Value: Currency; Format: TFloatFormat; Digits: Integer): string; currencyből string a formátum megválasztásával
Lebegőpontos számok átalakítása A FloatToStrF és CurrToStrF függvények esetében a következő formátumokat választhatjuk: ffGeneral általános ffExponent kitevős, normálalakos ffFixed tizedestört, ahol a tizedesjegyek számát pontosan meg lehet adni ffNumber tizedestört ezres tagolással ffCurrency pénznem Megj.: ha a szám teljes hosszát kisebbre állítjuk, mint a szám hossza, minden esetben –a Format paramétertől függetlenül- kitevős alakban jelenik meg
Lebegőpontos számok átalakítása FormatFloat(const Format: string; Value: Extended): string; Extendedből string formátummegadással FormatCurr(const Format: string; Value: Currency): string; Currencyből string formátummegadással A FormatFloat és a FormatCurr függvényeknél használhatunk formátumkódokat
Lebegőpontos számok átalakítása Formátumkód jelentése # számjegy, ha nem áll annyi számjegyből, akkor nem jelenik meg semmi 0 számjegy, ha nem áll annyi számjegyből, akkor 0 jelenik meg . tizedestört megjelenítés , ezres-elávasztójel E+ E- e+ e- kitevős alakú megjelenítés ’szoveg’ ”szoveg” szoveg megjelenése a szám után ; a formátumkód a pozítiv, negatív és a nulla formátumkódjait tartalmazza, a ; ezeket választja el
Dátumok átalakítása DateToStr(Date: TDateTime): string; dátum formátumból string formátum TimeToStr(Time: TDateTime): string; idő formátumból string formátum DateTimeToStr(DateTime: TDateTime): string; idő/dátum formátumból string formátum
Tömbök A Pascalben a tömbök azonos típusú, adatokat tárolnak Var Tömbnév : Array[Kezd..Vég] Of Típus; A Kezd a kezdőindex, a Vég az utolsó index. A Delphiben az ilyen típusú tömböket nevezzük statikus tömböknek dinamikus tömb: elemszáma futáskor dől el nyitott tömb paraméter: az azonos típust sem kell biztosítanunk, tárolhatunk egyazon tömbben különböző típusú elemeket
Tömbök (dinamikus tömb) A Delphi 4 verziótól kezdve támogatja a dinamikus tömbök kezelését. A dinamikus tömb mérete nem fordításkor, hanem futáskor dől el. A dinamikus tömb bármikor bővíthető elemekkel, kitörölhetünk elemeket, ill. megszüntethetjük A dinamikus tömb deklarációja Var T : Array Of Real;
Tömbök (dinamikus tömb) A SetLength eljárás segítségével bővíthetjük a tömböt: Pl.: SetLength(T, 5) hatására a tömb 6 elemű lesz, az elemek értékei T[0]=0, T[1]=0, T[2]=0, T[3]=0, T[4]=0, T[5]=0 A Length függvény(System unit) a tömb elemeinek darabszámát adja vissza, a Low függvény az alsó, míg a High a felső indexet adja vissza. Dinamikus tömbök esetében az alsó index mindig 0. A dinamikus tömb megszüntetése: T:=Nil; SetLength(T,0); //a memóriából nem törlődik! Finalize(T);
Nyitott tömb paraméterek A nyitott tömb paraméter lehetőséget biztosít arra, hogy olyan alprogramokat alakítsunk ki, melyek hívása nem függ a paramétertömb méretétől. Pl. Var Ntömb : Array Of Integer; Az alprogramon belül a Low függvénnyel a nyitott tömb paraméter első elemének indexét (legtöbbször 0), a High függvénnyel az utolsó elemének indexét kérhetjük le.
Variant típus A Variant változókban az összes Delphi típus tárolható. A Delphi automatikusan elvégzi a konverziókat, így nem kell foglalkoznunk a változó típusával. A Variant változók használata lassúbb, mint más változóké a konverziók miatt, memóriaigénye sem a legjobb (16 byte), mégis kerülhetünk olyan helyzetbe, hogy a használata elkerülhetetlen. A Variant típus használata megkönnyíti az OLE ügyfél vagy kliens automatizmusok írását
Változók deklarációja Pascal-ban a változókat deklarálni kell! Var Letszam : Integer ; { 2 byte } Fejadag, Osszesen : Real ; { 6-6 byte }
Sorszámozott típusok Low : A függvény viszaaadja a paraméterként adott változó típusának alsó értékhatárát. Tömb típusnál a tömb legkisebb elemének indexét adja vissza High : A függvény viszaaadja a paraméterként adott változó típusának felső értékhatárát. Tömb típusnál a tömb legnagyobb elemének indexét adja vissza Pred : A függvény a paraméterként megadott változó típusának értékkészletéből visszaadja az előtte álló értékét.
Sorszámozott típusok Succ : A függvény a paraméterként megadott változó típusának értékkészletéből visszaadja a mögötte álló értékét. Dec : Az eljárás a paraméterként megadott változó értékét csökkenti. Inc : Az eljárás a paraméterként megadott változó értékét növeli.
2. ELÁGAZÁSOK, CIKLUSOK
Elágazások Egyágú Kétágú Esetszétválasztás (Case) If F1 Then U1 ; vagy If F1 Then Begin U11 ; U12 ; ... U1n ; End; Kétágú Esetszétválasztás (Case)
Elágazások (kétágú) If F1 Then Utasítás1 Else Utasítás2 ; Vagy Begin Utasítások ; End Else Begin Utasítások ; End;
Esetszétválasztás Sorszámozott típusú konstans kifejezés Case kifejezés Of érték(ek)1 : utasítás1 ; érték(ek)2 : utasítás2 ; ... [Else utasítás ] End ;
Esetszétválasztás Case Kor Of 0..13 : Write('Gyerek') ; 14..17 : Write('Fiatal') ; 18..23 : Write('Ifjú') ; 24..59 : Write('Felnőtt') Else Write('Idős'); End ;
A ciklusban maradás feltétele Ciklusok Előltesztelős While F1 Do Begin Utasítások ; End ; Hátultesztelős Repeat Until F1 ; Számlálós A ciklusban maradás feltétele A kilépés feltétele
Ciklusok Számlálós ciklus For Cv:=Kezdőérték To Végérték Do Begin Utasítások ; End ; For Cv:=Végérték DownTo Kezdőérték Do