Bevezetés progrmozásb 4. Elődás Soroztok, fájlok
ISMÉTLÉS Specfkácó Előfeltétel: mlyen körülmények között követelünk helyes működést Utófeltétel: mt várunk kmenettől, m z összefüggés kmenet és bemenet között Ezek feltételek, tehát vgy teljesülnek, vgy nem. H teljesülnek, kkor progrm megoldj feldtot. A specfkácó feltételekből áll, nem utsításokból, mert feldtot írj le, és nem progrmot.
ISMÉTLÉS Elágzás PROGRAM elágzás VÁLTOZÓK: : : EGÉSZ BE: HA HA > 0 AKKOR KI: "poztív" KÜLÖNBEN KI: "nem poztív" HA_VÉGE PROGRAM_VÉGE
ISMÉTLÉS Cklus PROGRAM soroztösszedó VÁLTOZÓK: n, n,,, összeg, : : EGÉSZ BE: BE: n 0 összeg 0 CIKLUS AMÍG < n BE: BE: összeg összeg + + 1 CIKLUS_VÉGE KI: KI: összeg PROGRAM_VÉGE
ISMÉTLÉS Összegzés tétele Változók: összeg, : T összeg 0 CIKLUS AMÍG nncs vége soroztnk következő elem összeg összeg + f() f() CIKLUS_VÉGE
ISMÉTLÉS Számlálás tétele VÁLTOZÓK: sz: EGÉSZ, :T sz sz 0 CIKLUS AMÍG nncs vége soroztnk következő elem HA HA feltétel() AKKOR sz sz sz sz + 1 HA_VÉGE CIKLUS_VÉGE
ISMÉTLÉS Lneárs keresés tétele VÁLTOZÓK: hol,: EGÉSZ, vn: vn: LOGIKAI, : : T vn vn HAMIS HAMIS hol hol 0 0 CIKLUS AMÍG AMÍG nncs nncs vége vége soroztnk ÉS ÉS NEM NEM vn vn következő elem elem + 1 HA HA feltétel() AKKOR AKKOR vn vn IGAZ IGAZ hol hol HA_VÉGE CIKLUS_VÉGE
ISMÉTLÉS Mxmum keresés tétele VÁLTOZÓK:,, hol: hol: EGÉSZ, EGÉSZ,,, mx: mx: T 1 első első elem elem mx mx f() f() hol hol 1 CIKLUS CIKLUS AMÍG AMÍG nncs nncs vége vége soroztnk soroztnk következő következő elem elem + 1 HA HA mx mx < f() f() AKKOR AKKOR mx mx f() f() hol hol HA_VÉGE HA_VÉGE CIKLUS_VÉGE
Soroztok A jellemző műveletek: Következő elem olvsás Sorozt végének felsmerése/lekérdezése Inclzálás (kezdet értékek beállítás, olvsás lehetővé tétele) Pl z előző példákbn sorozt hosszánk beolvsás
Ismert hosszú sorozt A sorozt hossz smert, vgy beolvshtó Számoljuk z olvsások számát, és h elérjük sorozt hosszát, bbhgyjuk Változók:,n,n : egész, X :: T n Sorozt hossz, (pl: (pl: BE: BE: n) n) 0 CIKLUS AMÍG <n <n BE: BE: X X feldolgozás...... +1 CIKLUS_VÉGE
Ismert hosszú soroztr péld Számok ntervllum Tábláztoknál szokás először jelezn méreteket Kép és hng formátumok sokszor lyenek (.wv,.bmp)
Végjeles sorozt A sorozt értékkészletét megszorítv lehetővé válk, hogy specáls jelentésű értékeket hsználjunk Például csup nemnegtív elem vn soroztbn, és z első negtív elem jelz sorozt végét Előnye: könnyen bővíthető sorozt Hátrány: nem hsználhtjuk z dott típus teljes készletét
Végjeles sorozt Jellegzetesség: beolvsás után még el kell dönten, hogy soroztelemről vn-e szó, vgy végjelről, m nem része soroztnk Tehát beolvsás és feldolgozás között kell lenne z ellenőrzésnek Az ellenőrzésnek cklusfeltételben kell lenne Következésképpen A beolvsásnk cklus utolsó lépésének kell lenne A cklus előtt s kell olvsn
Végjeles sorozt Változók: X : T BE: X CIKLUS AMÍG X nem végjel X feldolgozás...... BE:X CIKLUS_VÉGE
Előreolvsás Áltlános technk: cklusfeltételhez szükséges dtokt cklus előtt elő kell állítn, különben még nem kpott kezdet értéket hb vn Ez kár z első néhány elem előreolvsását s jelenthet, h végjel úgy vn megfoglmzv Hátrány, hogy beolvsás többször szerepel kódbn
Végjeles soroztokr péld Szöveges állományokbn részsoroztoknál bevett módszer üres sorrl jelezn, hogy vége soroztnk, pl..srt mozfelrt formátumbn Bzonyos kódolásokbn létezk üzenet vége krkter A Morse kód kterjesztésében s vn befejezést jelző kód Ksebb progrmoknál, sját formátumoknál kedvelt form z egyszerűsége mtt
Fájlok A fájl névvel zonosított dttároló Áltlábn vgy olvsunk belőle, vgy írunk bele z olvsott fájlok trtlm hsznált közben nem változk meg hsonló vselkedése, mnt sm kmenetnek és bemenetnek lekérdezhető, hogy vége vn-e Sokféle rendszer vn, sokféle nyelv, sokféle kontextus mndegykre vn kvétel
Fájlok és PLnG PlnGbn fájlok nem jelennek meg z operácós rendszer fájlrendszerében, vrtuáls fájlokról vn szó Hsznált előtt meg kell nytn fájlt, megdv nevét, után pedg llk lezárn H PlnG kódbn megjelenk egy megnytás, bemenet és kmenet fülek bővülnek A sm BE: és KI: mntájár hsználhtó z olvsás és z írás, ugynolyn működésűek
Fájlok és PLnG PROGRAM fájlos VÁLTOZÓK: BEFÁJL, n: n: EGÉSZ MEGNYIT "olvsnvlo" BE BE n KI: n LEZÁR fb fb PROGRAM_VÉGE
Fájlok A fájlok kezelése sokbn hsonlít végjeles sorozthoz fájl végének kezelésében A nyelvek kétféle strtégávl dolgoznk, vgy kkor d gzt vége vn fájlnk? kérdés, h már nncs több olvsnvló elem, vgy kkor, h már leglább egyszer próbáltunk olvsn skertelenül Nylvánvlón ez utóbb helyzetben skertelenül olvsás mellékhtásként beolvsott változó trtlm nem sorozt része, tehát nem szbd feldolgozn, hogy végjelet sem szbd
Fájlok és PLnG PROGRAM fájlos-soroztos VÁLTOZÓK: BEFÁJL, n: n: EGÉSZ EGÉSZ MEGNYIT "olvsnvlo" BE BE n CIKLUS AMÍG AMÍG NEM NEM VÉGE VÉGE fb fb KI: KI: n, n, SV SV BE BE n CIKLUS_VÉGE LEZÁR LEZÁR fb fb PROGRAM_VÉGE
Fájlok Lekérdezhető fájl vége Egyszerre több fájlból olvshtunk, ezek egymástól függetlenül lépnek előre A kfájl és befájl típusú változók szerepe számon trtn, hogy hol trtunk fájlbn ezért nem elég csk fájl nevét írn olvsáskor Ipr nyelveknél fájl íráskor lezárás elmulsztás veszteséget okozht: mndg mnden fájlt zárjunk le, még h nem s fordítás vgy futásdejű hb ennek elhgyás
Fájlok H egy fájlt lezárunk és újr megnytunk, kkor elölről kezdődk z olvsás. Ennek khsználás nem szép dolog, de h egy feldt nem elemenként feldolgozhtó, és túl sok dt vn tömbhöz* kkor szükségmegoldásnk megtesz A félév ház feldt, és gépterm ZH feldt nem lyenek * lásd jövő héten
Fájlok, műveletek összefogllás KIFÁJL, BEFÁJL Típusok fájlok kezeléséhez, ezeken keresztül érjük el z dtokt Megnyt f: fájlnév Fájlnév rendelése KIFÁJL/BEFÁJL változóhoz KI f: X / BE f: X Írás/olvsás megdott fájlb/fájlból VÉGE f Logk kfejezés, értéke: Olvstunk-e már skertelenül f-ből?
Fájl kezelése áltlábn PLnGbn VÁLTOZÓK: BEFÁJL, : : T MEGNYIT "fájlnév" BE BE CIKLUS AMÍG NEM VÉGE fb fb feldolgozás BE BE CIKLUS_VÉGE LEZÁR fb fb
Péld: Mxmumkeresés fájlr PROGRAM PROGRAM fjlos fjlos VÁLTOZÓK: VÁLTOZÓK: BEFÁJL, BEFÁJL,,, mx: mx: VALÓS, VALÓS,,, hol: hol: EGÉSZ EGÉSZ MEGNYIT MEGNYIT "olvsnvlo" "olvsnvlo" 1 1 BE BE mx mx hol hol 1 1 CIKLUS CIKLUS AMÍG AMÍG NEM NEM VÉGE VÉGE fb fb HA HA > > mx mx AKKOR AKKOR mx mx hol hol HA_VÉGE HA_VÉGE + + 1 1 BE BE CIKLUS_VÉGE CIKLUS_VÉGE KI: KI: hol, hol, ".: ".: ", ", mx mx LEZÁR LEZÁR fb fb PROGRAM_VÉGE PROGRAM_VÉGE
Péld: Mxmumkeresés fájlr VÁLTOZÓK:,, hol: hol: EGÉSZ, EGÉSZ,,, mx: mx: T 1 első első elem elem mx mx f() f() hol hol 1 CIKLUS CIKLUS AMÍG AMÍG trt trt még még sorozt sorozt következő következő elem elem + 1 HA HA mx mx < f() f() AKKOR AKKOR mx mx f() f() hol hol HA_VÉGE HA_VÉGE CIKLUS_VÉGE PROGRAM PROGRAM fjlos fjlos VÁLTOZÓK: VÁLTOZÓK: BEFÁJL, BEFÁJL,,, mx: mx: VALÓS, VALÓS,,, hol: hol: EGÉSZ EGÉSZ MEGNYIT MEGNYIT "olvsnvlo" "olvsnvlo" 1 1 BE BE mx mx hol hol 1 1 CIKLUS CIKLUS AMÍG AMÍG NEM NEM VÉGE VÉGE fb fb HA HA > > mx mx AKKOR AKKOR mx mx hol hol HA_VÉGE HA_VÉGE + + 1 1 BE BE CIKLUS_VÉGE CIKLUS_VÉGE KI: KI: hol, hol, ".: ".: ", ", mx mx LEZÁR LEZÁR fb fb PROGRAM_VÉGE PROGRAM_VÉGE
Formátumok Beolvsás egyértelműsége Technk megkötések A PLnG szám beolvsáskor nem tud különbséget tenn szóközzel elválsztás és sorvégével elválsztás között, tehát z form, hogy z összetrtozó számok egy sorbn vnnk, és következő sor már megkülönböztetendő, nem jó formátum PLnG-bn A szöveg beolvsás soronként történk, tehát két megkülönböztetendő szöveget ne írjunk egy sorb
Péld formátumr Feldt kezeln egy középskol osztályt egyk tnár szemszögéből: vn sok dák, mndegyknek vlhány jegye Fájlbn két sor ír le egy dákot z első sor neve Mvel h egy sorbn lennének jegyek s, név beolvsáskor z s belekerülne szövegbe, és z lenne név, hogy Gpsz Jkb 5 3 4 5... következő sorbn vnnk jegyek, és végén -1 Ez megtehető, mert jegy eleve szűk értékkészletű, így z áltlánosság megszorítás nélkül vehetünk fel végjelet z egész számok közül Az s jó lenne, h jegyek számávl kezdődne sor
Néhány elterjedt egyszerű formátum.sub mozfelrt: elválsztó krkterek között kezdet képkock és befejező képkock sorszám, ztán sor végég z tt kírndó szöveg.n: [] jelek között külön sorbn fejezetcím, mjd kulcs = érték párok, sem kulcs, sem z érték nem trtlmzhtj '=' krktert.csv: tábláztformátum, melyben vesszővel elválsztv vnnk mezők, szöveges mezők jelek között szerepelnek
Összehsonlítás Teljes értékkészlet Beszúrássl bővíthető Előre olvsást gényel Nyelvtől független Ismert hosszú Végjeles Fájl