Algoritmizálás és adatmodellezés tanítása 9. előadás
Szöveges típusok (ismétlés) karakter típus szöveg típus szövegfájl típus (input, illetve output szövegfájl) 2018. 01. 2/30
Karakterábrázolás fix kódhossz (ASCII, EBCDIC,..., több karakterkészlet) változó kódhossz (pl. morze, Huffman) telex: betű-számváltó UTF-8-ban minden ékezetes magyar betű 2 byte-ot foglal el, míg egyéb speciális karakterek akár ennél hosszabbak is lehetnek. 2018. 01. 3/30
Szövegábrázolás fix hossz változó hossz karakterszámmal végjellel (pl. 0 kódú karakter) Műveletek hossz(s) relációk, értékadás + (azaz egymásután írás) 2018. 01. 4/30
A. A szöveg karakterek tömbje indexelés s(i) B. A szöveg karakterek sorozata első(s), elsőutániak(s), utolsó(s), utolsóelőttiek(s), elejére(s,k), végére(s,k) C. A szöveg szövegekből áll függvények: bal(s,db), jobb(s,db), közép(s,k,db), közép(s,k,v) vagy részképzés s(a..b), s(a..), s(..b) 2018. 01. 5/30
B. A szöveg karakterek sorozata Függvény első(s):karakter első:=s(1) Függvény vége. Függvény elsőutániak(s):szöveg t:= Ciklus i=2-től hossz(s)-ig t:=t+s(i) Ciklus vége elsőutániak:=t Függvény vége. Függvény elejére(s,k):szöveg elejére:=k+s Függvény vége. 2018. 01. 6/30
C. A szöveg szövegekből áll Függvény bal(s,db):szöveg t:= Ciklus i=1-től db-ig t:=t+s(i) Ciklus vége bal:=t Függvény vége. 2018. 01. 7/30
Fogalmak (azaz új típusok): karakter szó sor lap dokumentum Szöveges típusok Fogalmak a megjelenítéshez: képsor képlap 2018. 01. 8/30
Szó típus fogalma szó=sorozat(karakter) Szó típus műveletei: végére(szó,karakter) elejéről(szó,karakter) Szöveges típusok Ha írásjelek vannak a szövegben, akkor azok tartozzanak az adott szóhoz! 2018. 01. 9/30
Műveletek megvalósítása: Szöveges típusok Eljárás végére(szó,karakter): szó:=szó+karakter Eljárás elejéről(szó,karakter): karakter:=első(szó) szó:=elsőutániak(szó) 2018. 01. 10/30
Sor típus fogalma: sor=sorozat(szó) Sor típus műveletei: végére(sor,szó) elejéről(sor,szó) Szöveges típusok Elválasztó jel szavak között: szóköz sorvég 2018. 01. 11/30
Műveletek megvalósítása: Eljárás végére(sor,szó): Ha sor= akkor sor:=szó különben sor:=sor+ +szó Eljárás elejéről(sor,szó): szó:= Ciklus amíg sor és első(sor) szó:=szó+első(sor); sor:=elsőutániak(sor) Ciklus vége Ha sor akkor sor:=elsőutániak(sor) Figyelem! Itt és a későbbi algoritmusokban használt első() és elsőutániak()a szöveg típus műveleteit jelentik! 2018. 01. 12/30
Lap típus fogalma lap=sorozat(sor) Lap típus műveletei: végére(lap,sor) elejéről(lap,sor) Végjel sorok után: sorvég Szöveges típusok 2018. 01. 13/30
Műveletek megvalósítása: Eljárás végére(lap,sor): lap:=lap+sor+sorvég Eljárás elejéről(lap,sor): sor:= Ciklus amíg első(lap) SORVÉG sor:=sor+első(lap); lap:=elsőutániak(lap) Ciklus vége lap:=elsőutániak(lap) 2018. 01. 14/30
Dokumentum típus fogalma dokumentum=sorozat(lap) Dokumentum típus műveletei: végére(dokumentum,lap) elejéről(dokumentum,lap) Végjel lapok után: lapvég Mi van, ha az utolsó lap után nincs lapvég-jel? 2018. 01. 15/30
Műveletek megvalósítása: Eljárás végére(dokumentum,lap): dokumentum:=dokumentum+lap+lapvég Eljárás elejéről(dokumentum,lap): lap:= Ciklus amíg első(dokumentum) LAPVÉG lap:=lap+első(dokumentum) dokumentum:=elsőutániak(dokumentum) Ciklus vége dokumentum:=elsőutániak(dokumentum) 2018. 01. 16/30
Meggondolandó: mondat típus A. A mondat szavak sorozata, ahol az utolsó szó utolsó karaktere mondat-vég jel (. vagy? vagy!). Eljárás végére(sor,mondat,jel): Ha sor= akkor sor:=mondat+jel különben sor:=sor+ +mondat+jel 2018. 01. 17/30
Meggondolandó: mondat típus A. A mondat szavak sorozata, ahol az utolsó szó utolsó karaktere mondat-vég jel (. vagy? vagy!). Eljárás elejéről(sor,mondat,jel): mondat:= Ciklus amíg első(sor) {.,?,! } mondat:=mondat+első(sor) sor:=elsőutániak(sor) Ciklus vége jel:=első(sor); sor:=elsőutániak(sor) 2018. 01. 18/30
Meggondolandó: Szó típus B. Az írásjel ne legyen része a szónak! Eljárás elejéről(sor,szó,jel): szó:= ; jel:= Ciklus amíg sor és első(sor) { } Írásjelek szó:=szó+első(sor); sor:=elsőutániak(sor) Ciklus vége Ha sor akkor Ha első(sor) akkor jel:=első(sor); sor:=elsőutániak(sor) sor:=elsőutániak(sor) 2018. 01. 19/30
Műveletek a formázáshoz: ElsőKépsor BalrólLevág JobbrólLevág BalraIgazít JobbraIgazít KözépreIgazít Sorkizárt Szöveges típusok 2018. 01. 20/30
Műveletek megvalósítása: Eljárás ElsőKépsor(sor,képsor): elejéről(sor,képsor) Ha sor akkor elejéről(sor,x); van:=igaz Ciklus amíg hossz(képsor)+hossz(x)+1 KSHOSSZ és van képsor:=képsor+ +X Ha sor akkor elejéről(sor,x) különben van:=hamis Ciklus vége Ha van akkor sor:=x+ +sor Elágazás vége Elágazás vége 2018. 01. 21/30
Műveletek megvalósítása: Eljárás BalrólLevág(ks): Ciklus amíg ks és ks(1)= ks:=elsőutániak(ks) Ciklus vége Eljárás JobbrólLevág(ks): Ciklus amíg ks és ks(hossz(ks))= ks:=utolsóelőttiek(ks) Ciklus vége 2018. 01. 22/30
Műveletek megvalósítása: Szöveges típusok Eljárás BalraIgazít(ks): BalrólLevág(ks) Eljárás Jobbraigazít(ks): JobbrólLevág(ks) Ciklus amíg hossz(ks)<kshossz ks:= +ks Ciklus vége 2018. 01. 23/30
Műveletek megvalósítása: Szöveges típusok Eljárás KözépreIgazít(ks): BalrólLevág(ks); JobbrólLevág(ks) Ciklus amíg hossz(ks)<kshossz-1 ks:= +ks+ Ciklus vége Ha hossz(ks)<kshossz akkor ks:=ks+ 2018. 01. 24/30
Műveletek megvalósítása: Szöveges típusok Eljárás Sorkizárt(ks): BalrólLevág(ks); JobbrólLevág(ks) kell:=kshossz-hossz(ks); db:=szoszamol(ks)-1 kellplusz:=kell MOD db; kell:=kell DIV db Elejéről(ks,szó,jel); uj:=szó+jel Ciklus i:=1-től db-ig Ha i kellplusz akkor uj+=szöközök(kell+1) különben uj+=szöközök(kell) Elejéről(ks,szó,jel); uj+=szó+jel Ciklus vége ks:=uj 2018. 01. 25/30
Algoritmizálás és adatmodellezés tanítása 9. előadás vége