5. előadás Wagner György Általános Informatikai Tanszék
Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk legkisebb elemnek (általában az elsőt), majd az összes többit sorban összehasonlítjuk azzal. Minden alkalommal, amikor kisebbet találunk, megjegyezzük annak a sorszámát, és a továbbiakban már azt tekintjük a legkisebbnek. A keresés legvégén megkaptuk a legkisebb elem sorszámát.
Cserélve kiválasztásos rendezés (2) A rendezés elve: A rendezett halmazban első elem a legkisebb elem. A második elem a második legkisebb, vagyis az elsőtől jobbra levő elemek közül a legkisebb. A harmadik a másodiktól jobbra levő elemek közül a legkisebb Minden elem a tőle jobbra levő elemek közül (beleértve saját magát) a legkisebb. Ügyelni! Az utolsó elemtől jobbra már nincs elem!!
Ciklus az 1. elemtől az utolsó előttiig Cserélve kiválasztásos rendezés (3) For i := 1 To N - 1 Do Begin Állítás Minimum keresés Csere MinI := i; For j := i + 1 To N Do If T [ j ] < T [ MinI ] Then MinI := j; S := T [ i ]; T [ i ] := T [ MinI ]; T [ MinI ] := S; End;
FreePascal típusok Standard Felhasználó által definiált Elemi Összetett Sorszámozottak Valósok Array Egészek Előjelesek Előjelnélküliek ShortInt Byte Integer Word LongInt Single Real Boolean Double Char Extended Comp String Record File
Adatobjektumok típusai ShortInt: -128.. 127 signed 1 byte Integer: -32768.. 32767 signed 2 byte LongInt: -2147483648.. 2147483647 signed 4 byte Byte: 0.. 255 unsigned 1 byte Word: 0.. 65535 unsigned 2 byte Boolean: False, True unsigned 1 byte Char: ASCII ( 0 ).. ASCII ( 255 ) unsigned 1 byte Single: -1.5E-45.. 3.4E+38 7-8) exp+mant 4 byte Real: -2.9E-39.. 1.7E+38 11-12 exp+mant 6 byte Double: -5.0E-324.. 1.7E+308 15-16 exp+mant 8 byte Extended: -3.4E-4932.. 1.1E+4932 19-20 exp+mant 10 byte
Felhasználó által definiált típusok Helye: a deklarációs részben a típus definíciónál Módja: Type <azonosító> = <típusleírás>; {<azonosító> = <típusleírás>;} Névadás Már ismert típus
Felhasználó által definiált típusok Type Var... Valos = Real; Egesz = Integer; Auto = Egesz; {Egesz itt már ismert!} i, j : Egesz; x, y : Valos; b : Auto;
A Char típus (1) Értelmezési tartománya: az ASCII karakterkészlet. 0-255- ig. Sorszámozva (!) tartalmazza a karaktereket, azaz minden karakterhez hozzá van rendelve egy (szám)kód. A karakterek egy-egy byte-ot foglalnak el a memóriában. E byte értéke az adott karakter ASCII kódja, megjelenési formája (pl. képernyőn való kiíratás esetén) a karakter képe.
A Char típus (2) Kapcsolódó függvények: Succ (sorszámozott típus); Succ( A ) B Pred (sorszámozott típus); Pred(6) 5 Chr (Byte); Chr(65) A Ord(sorszámozott típus); Ord( A ) 65
A string típus (1) Vagy másképpen: változó hosszúságú karakter sorozat. (De nem dinamikus módon történt a helyfoglalás.) Hossza: 0.. 255 karakter Összetett típus String konstans: abc String változó: Var <azonosító> : String {[hossz]}; {<azonosító> : String {[hossz]};
A string típus (2) Tárolása: ss := Ez egy példa szöveg ; 19 E z... v e g Aktuális hossz karakterkódok
A string típus (3) Operátorok: Az ANSI Pascal nem támogat egy operátort sem. A FP is csak egyet, a + operátort, két string összefűzésére. Az ANSI Pascalban erre a Concat függvény szolgál. Indexelés: A String-et karaktertömbként értelmezve, abból egy karaktert az indexével ki lehet emelni, de: Var S : String [10 ]; Var S : Array [ 1.. 10 ] Of Char; A String max 11 byte-ot foglal el, míg a Char tömb csak ténylegesen 10-et.
A string típus (4) Relációs operátorok: < <= > >= = <> Két string akkor és csak akkor egyenlő, ha egyforma hosszúságúak, és karaktereik balról kezdve párban megegyeznek. Ha nem, az a nagyobb, amelynek balról számítva első nem egyező karakterének ASCII kódja nagyobb. Ha a rövidebbnek a hosszáig a két string megegyezik, akkor az a nagyobb, amelyik hosszabb.
A string típus (5) Példák: Alma-Ata = Alma-Ata Alma-Ata > Alma Baba > Alma Baba > Alma-Ata Vigyázni! Az ékezetes karakterek ASCII kódja érdekesen alakul...
String kezelő függvények Function Chr (x : Byte) : Char; Function Ord (x : Sorszámozott típus) : LongInt; Function UpCase (x : Char) : Char; Function Copy (S : String; I : Integer; Db : Integer) : String; Procedure Delete (Var S : String; I : Integer; Db : Integer); Procedure Insert (Src : String; Var S : String; I : Integer); Function Length (S : String) : Integer; Function Pos (SubStr, Str : String) : Byte; Procedure Str (X : wkif; Var S : String); Procedure Val (S : String; Var V; Var Hiba : Integer);