Programozás alapjai 5. előadás Wagner György Általános Informatikai Tanszék
Programozás alapjai
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.
Programozás alapjai
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!! Programozás alapjai
Cserélve kiválasztásos rendezés (3)
Ciklus az 1. elemtől az utolsó előttiig
For i := 1 To N - 1 Do Begin
Állítás
MinI := i;
Minimum keresés
For j := i + 1 To N Do If T [ j ] < T [ MinI ] Then MinI := j;
Csere
S := T [ i ]; T [ i ] := T [ MinI ]; T [ MinI ] := S; End; Programozás alapjai
FreePascal típusok Standard Elemi Sorszámozottak
Felhasználó által definiált
Összetett
Valósok
Array String
Egészek Előjelesek
Előjelnélküliek
Boolean Char
ShortInt
Byte
Integer
Word
LongInt
Single
Record
Real
File
Double Extended Comp
Programozás alapjai
Adatobjektumok típusai • • • • • • •
ShortInt: Integer: LongInt: Byte: Word: Boolean: Char:
-128 .. 127 -32768 .. 32767 -2147483648 .. 2147483647 0 .. 255 0 .. 65535 False, True ASCII ( 0 ) .. ASCII ( 255 )
signed signed signed unsigned unsigned unsigned unsigned
1 byte 2 byte 4 byte 1 byte 2 byte 1 byte 1 byte
• • • •
Single: Real: Double: Extended:
-1.5E-45 .. 3.4E+38 -2.9E-39 .. 1.7E+38 -5.0E-324 .. 1.7E+308 -3.4E-4932 .. 1.1E+4932
exp+mant exp+mant exp+mant exp+mant
4 byte 6 byte 8 byte 10 byte
7-8) 11-12 15-16 19-20
Programozás alapjai
Felhasználó által definiált típusok • Helye: a deklarációs részben a típus definíciónál • Módja: • Type
= ; { = ;}
Névadás
Már ismert típus
Programozás alapjai
Felhasználó által definiált típusok … Type Valos = Real; Egesz = Integer; Auto = Egesz; Var i, j : Egesz; x, y : Valos; b : Auto; ...
{Egesz
Programozás alapjai
itt már ismert!}
A Char típus (1) • Értelmezési tartománya: az ASCII karakterkészlet. 0-255ig. • 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.
Programozás alapjai
A Char típus (2) • Kapcsolódó függvények: Succ (sorszámozott típus); Pred (sorszámozott típus); Chr (Byte); Ord(sorszámozott típus);
Programozás alapjai
Succ(’A’) Pred(6) Chr(65) Ord(’A’)
’B’ 5 ’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 : String {[hossz]}; { : String {[hossz]}; Programozás alapjai
A string típus (2) • Tárolása: ss := ’Ez egy példa szöveg’; … 19 ’E’ ’z’ ’ ’
Aktuális hossz
...
karakterkódok
Programozás alapjai
’v’ ’e’ ’g’ …
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. Programozás alapjai
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. Programozás alapjai
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... Programozás alapjai
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); Programozás alapjai