9. Visszavezetés egyedi felsorolókkal

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "9. Visszavezetés egyedi felsorolókkal"

Átírás

1 9. Vsszavezetés egyed felsorolókkal Ebben a fejezetben a hét általános programozás tételt olyan feladatok megoldására alkalmazzuk, ahol nem lehet nevezetes felsorolókat sználn, azaz a Frst(), Next(), End() és Current() műveletek előállítása egyed tervezést gényel. A 9.1. alfejezetben olyan példát mutatunk, ahol a feladat megoldásához egy teljesen egyed felsorolót vezetünk be, amelynek semm köze a korábban mutatott nevezetes felsorolókhoz, hszen ebben a feladatban nem szerepel nevezetes gyűjtemény. Gyakorak azonban az olyan feladatok s, ahol ugyan nevezetes gyűjteményt dolgozunk fel, de nem a megszokott módon, ezért egyáltalán nem, vagy csak módosítva sználtjuk a nevezetes felsorolókat. Ilyen az, amkor egy nevezetes gyűjteményt nem a megszokott módon kell bejárn (például egy vektor elemet nem egyesével kell feldolgozn, ezért a Next() műveleten változtatn kell; vagy például nem elejétől a vége felé kell bejárn és ehhez a Frst(), Next(), és End() műveleteket kell újra gondoln). Ide értjük a nevezetes gyűjtemények úgynevezett feltétel fennálláság tartó feldolgozását (9.2. alfejezet) s, amkor az elemeket csak addg kell bejárn, amíg egy adott feltétel teljesül. Ehhez az End() művelet megfelelő felülírására van szükség. Igazán zgalmasak azok a feladatok (9.3. alfejezet), melyek megoldásához szükség van egy nevezetes gyűjtemény bejárására, de a bejárt elemek helyett azok csoportjanak feldolgozására van szükség. Ezért olyan egyed felsorolót kell készítenünk, amely egy-egy lyen csoportot tud a feldolgozás számára bztosítan. Egyed felsorolóra van szükség akkor s, egydejűleg több gyűjtemény elemet kell szmultán módon bejárn (9.4. alfejezet) Felsoroló gyűjtemény nélkül 9.1. Példa. Határozzuk meg egy n poztív egész szám prímosztónak az összegét! A feladat megfogalmaztó egy feltételes összegzésként, amely során az n 1-től különböző osztót tartalmazó [2..n] ntervallum azon elemet kell összeadnunk, amelyek osztják az n-t és prím számok. A = (n:n, sum:n) Ef = ( n=n' n>0 ) Uf = ( Ef sum = n ) 2 n' prm( ) A feladat közönséges összegzésként s megfogalmaztó, bevezetjük azt a felsorolót, amely közvetlenül az n szám prím osztót sorolja fel, és a feladatot ennek megfelelően újraspecfkáljuk. A = (t:enor(n), sum:n) Ef = ( t=t') t ' Uf = ( sum = t ' ) 1 Ezt vsszavezethetjük az általános összegzésre úgy, hogy abban az E=H=N és mnden e természetes számra f(e)= e. 132

2 9.3. Csoportok felsorolása sum := 0 t.frst() t.end() sum := sum + t.current() Az n szám prímosztó közül az elsőhöz, mondjuk a legksebbhez, úgy juttunk hozzá, hogy amennyben n legalább 2, akkor egyesével elndul 2-től és az n az első (legksebb) osztóját megkeressük. Ez bztosan prím. (Ez a tevékenység egy kválasztás.) A soron következő prímosztó kereséséhez a korábban megtalált prímosztót ezt tehát meg kell jegyezn k kell valahogy venn az n számból. Ha elosztjuk vele az n-t ahányszor csak tudjuk (hszen egy prímosztó többszörösen s részt vehet az n szám prímtényezős felbontásában), akkor a hányadosnak (az n új értékének) összes prímosztója az eredet n számnak s prímosztó lesznek, és ezek éppen azok, amelyeket eddg még nem soroltunk fel. A felsorolás addg tart, amíg az egyre csökkenő n nem lesz 1. Ez véges lépésben bztosan be fog következn. Látszk, hogy az mplct módon az összes prímosztóját tartalmazó n szám helyett bevezetett t felsorolót egyfelől a folyamatosan csökkenő n, másfelől annak legutoljára talált prímosztója (d) reprezentálja. A Frst() művelet az eredet n legksebb prímosztóját keres meg, n>1, és elhelyez a d változóban (lkpo). A Next() művelet elosztja az n-t a d-vel ahányszor csak tudja, majd így még mndg n>1, akkor megkeres az n legksebb prímosztóját, és elhelyez a d változóban. A Current() művelet a kszámolt d értékét adja vssza. Az End() n=1 esetén ad gazat. t ~ n, d t.frst() ~ d:=lkpo(n) ~ LOOP(d n; n:=n/d); d:=lkpo(n) t.end() ~ n=1 t.current( ~ d A d:=lkpo(n) részfeladatot az IF(n>1, d : select ( d n) ) program oldja meg. Itt alkalmaztjuk a kválasztás korább, egész számegyenesre megfogalmazott változatát éppúgy, mnt a kválasztás általános programozás tételét, amelyben a :EL feltétel most a (d)= d n lesz. A felsoroló az egész számokat járja be 2-től ndítva, és leállásakor a felsorolást végző ndex megegyezk a kválasztás eredményével. sum:=0; d:=lkpo(n) d2 d:=lkpo(n) n>1 n>1 sum := sum + d d:=2 SKIP d n n:=n/d d:=lkpo(n) d n d:=d+1 133

3 9. Vsszavezetés egyed felsorolókkal 9.2. Feltétel fennálláság tartó felsorolás Sokszor találkozunk olyan feladatokkal, ahol a feldolgozást addg kell végezn, amíg egy bzonyos feltétel ((t,)) fennáll. Természetesen lyenkor fel kell tennünk, hogy a t felsorolása során véges lépés múlva ez a feltétel ms lesz. Ehhez sonló feltétel fennálláság tartó feldolgozásokkal gyűjtemények esetében s találkoztunk. Itt legtöbbször a feltétel két részből áll: egyrészt abból, hogy még nem értünk a gyűjtemény bejárásának végére, másrészt a termnálást már előbb s kváltó extra krtérumból. E kettő konjunkcója (logka és kapcsolata) véges lépésen belül bztos ms lesz, hszen legrosszabb esetben az összes elem bejárása után leáll a feldolgozás. Példa erre az, amkor össze kell adnunk egy egész elemű vektor első nem-poztív számát megelőző értéket, azaz csak az első néhány poztív számot. Hasonló példa, amkor egy bank ügyfelenek tranzakcó között, amelyeket ügyfélazonosító szernt sorba rendeztünk és egy szekvencáls nputfájlba helyeztük el, az első ügyfél legnagyobb pénzfelvételét keressük. Ez egy olyan maxmum-kválasztás, amely addg tart, amíg az első ügyfél azonosítójával megegyező tranzakcókat olvasunk. (A programozás tételenk közül csak a kválasztásnak nncs lyen feltétel fennálláság tartó változata.) Egy gyűjtemény feltétel fennálláság tartó feldolgozásánál egyedül az End() művelet mplementácója tér el a szokásostól: ez a (t,) lesz. A feltétel fennálláság tartó feldolgozásokra s érvényes az, amt korábban a lneárs keresésről vagy a kválasztásról s elmondtunk, nevezetesen, hogy mvel korábban s leállt a feldolgozás, mnt hogy a gyűjtemény összes elemét bejárnánk, a még fel nem sorolt (fel nem dolgozott) elemeket alá lehet vetn tovább feldolgozásnak. Ezért ez a felsoroló s eredménye ezeknek a feldolgozásoknak. A gyűjteményekre alkalmazott feltétel fennálláság tartó feldolgozások specfkácójában a bejárás végét jelző t helyére a (t,) feltételt fogjuk írn. Néhány példa: s, t ( t', ) 1 g( t, ) ( t', ) 1 ( t, ) ( t', )), c, t 1 max, t max g( t ) l, elem, t search ( t' ) 1 ( t', ) Példa. Egy szekvencáls nputfájl elején álló poztív számok között a párosak száma! A = (f:nfle(z), df:z, sf: Státusz, db:z) Ef = ( f=f ) f ' 0 f ' Uf = ( db, sf, df, f = 1 ) 1 2 f ' A számlálást tt nem feltétlenül a fájl végég, nem csak annak első nem-poztív értékég kell végezn. Ezért utal az utófeltétel arra, hogy a számlálás eredménye a db változón kívül a szekvencáls fájl elkezdett felsorolása s, amelyre az sf, df, f együtt hvatkozk. Ezt a feltétel fennálláság tartó feldolgozást s az általános számlálás programozás tételére vezethetjük vssza úgy, hogy a Frst() és Next() műveleteket most s az sf, df, f : read mplementálja; a Current() művelet a df lesz és ennek megfelelően a számlálás feltétele a 2df 134

4 9.3. Csoportok felsorolása kfejezés; a End() műveletet azonban az sf=norm helyett a sf=norm df 0 kfejezés helyettesít. db:=0; sf, df, f : read df>0 sf=norm db:=db+1 2df SKIP sf, df, f : read 9.3. Példa. Egy szekvencáls nputfájlban a banknál számlát nytott ügyfelek e v kvét/betét forgalmát (tranzakcót) tároljuk. Mnden tranzakcónál nylvántartjuk az ügyfél azonosítóját, a tranzakcó dátumát és az összegét, am egy előjeles egész szám (negatív a kvét, poztív a betét). A tranzakcók a szekvencáls fájlban ügyfél-azonosító szernt rendezetten helyezkednek el. Keressük meg az első ügyfél legnagyobb befzetésű tranzakcóját. A = (f:nfle(tranzakcó), df: Tranzakcó, sf: Státusz, max: Tranzakcó) Tranzakcó = rec(azon:n, dátum:n, össz:z) Ef = ( f=f f azon szernt rendezett) Uf = ( max, sf, df, f f '. azon f ' 1. azon f ', max f. össz ) 1 Ezt vsszavezethetjük a maxmum-kválasztás tételére. Nem kell külön eredmény a maxmáls értékre, hszen azt a maxmáls elem (a rekord) tartalmazza. Továbbá, mvel a max változóban tárolt tranzakcó bztosan az első ügyfélhez tartozk, így a max.azon = f 1.azon mndg teljesül, amt a cklusfeltétel felírásában k s sználtunk. sf, max, f : read sf, df, f : read df.azon=max.azon sf=norm df.össz>max.össz max:= df SKIP sf, df, f : read 135

5 9. Vsszavezetés egyed felsorolókkal 9.3. Csoportok felsorolása 9.4. Példa. Több egymás után napon feljegyeztük a nap átlaghőmérsékleteket, és azokat egy szekvencáls nputfájlban rögzítettük. Volt-e olyan nap, amkor a megelőző naphoz képest csökkent az átlaghőmérséklet! A = (f:nfle(r), l:l) Ef = ( f=f ) f ' Uf = ( l search f ' f ' 0) ) 2 ( 1 Vegyük észre, hogy a feladat nem oldtó meg a szekvencáls nputfájl nevezetes bejárásával, hszen az nem ad lehetőséget a szekvencáls nputfájl egymás után következő két elemének vzsgálatára. Helyette olyan felsorolóra van szükség, amely a szekvencáls nputfájl szomszédos elempárjat adja meg egymás után. Ez nem a szekvencáls nputfájl szokásos, nevezetes bejárója, nem egy arra támaszkodó, de attól elvonatkoztatott, absztrakt felsoroló. Újrafogalmazzuk tehát a feladatot egy olyan állapottéren, ahol adottnak vesszük az előbb ktalált felsorolót. A = (t:enor(rec(tegnap:r, ma:r)), l:l) Ef = ( t=t ) t' Uf = ( l search ( t'. ma t'. tegnap 0) ) 1 Az új specfkácó célja az, hogy mnél könnyebben lehessen a feladat megoldását a lneárs keresésre vsszavezetn. Természetesen a bevezetett felsoroló típusát egyed módon kell megvalósítan: az eredet állapottér komponensere támaszkodva reprezentáln kell és a bejárás műveletet pedg mplementáln. Ezzel lényegében részfeladatokra bontottuk az eredet problémát. Részfeladat az új állapottéren megfogalmazott lneárs keresés, és részfeladatok a Frst(), Next(), Current(), End() mplementácó s. Az újrafogalmazott feladat vsszavezethető az általános lneárs keresésre, amelyből mvel ezt specálsan eldöntésre sználjuk az elem:=t.current() értékadást elgytuk. l := ms; t.frst() l t.end() l := (t.current()) Implementáljuk az absztrakt felsoroló műveletet. A Frst() művelet feladata az első felsoroln kívánt elemre, esetünkben az első hőmérséklet-párra, egy tegnap-ma számpárra (ezt nem rekordként, nem két valós számként sználjuk) való ráállás. Ehhez az f szekvencáls nputfájlból az a első hőmérsékletet a tegnap változóba, a másodkat a ma változóba kell beolvasnunk. (A két olvasás akkor s végrejttó, a fájl nem tartalmaz két értéket.) A Next() feladata a soron következő hőmérséklet-párra való ráállás. Ehhez szükség van a korább számpár ma hőmérsékletére (a tegnap mára), amből az aktuáls számpár tegnap 136

6 9.3. Csoportok felsorolása hőmérséklete (a ma tegnap) lesz, tehát tegnap:=ma, valamnt be kell olvasn f fájlból a ma változóba az aktuáls ma hőmérsékletet s. A Current() a tegnap-ma számpárt adja vssza. Az End() addg ms, amíg skerült újabb számpár előállításához újabb értéket olvasn az f fájlból, azaz amíg sf=norm. A fentekből az s kderül, hogy az absztrakt felsorolót a tegnapma számpár, az f szekvencáls nputfájl, és az utolsó olvasás sf státusza reprezentálja. Behelyettesítve az algortmusba Frst(), Next(), Current(), End() mplementácót, megkapjuk a megoldást. sf, tegnap, f : read sf, ma, f : read l:=ms l sf=norm l:= ma-tegnap< 0 tegnap:=ma sf, df, f : read 9.5. Példa. Egy szekvencáls nputfájlban a banknál számlát nytott ügyfelek e v kvét/betét forgalmát (tranzakcót) tároljuk. Mnden tranzakcónál nylvántartjuk az ügyfél számlaszámát, a tranzakcó dátumát és az összegét, am egy előjeles egész szám (negatív a kvét, poztív a betét). A tranzakcók a szekvencáls fájlban számlaszám szernt rendezetten helyezkednek el. Gyűjtsük k azon számlaszámokat és az ahhoz tartozó tranzakcónak egyenlegét, ahol ez az egyenleg ksebb Ft-nál! A feladat specfkácóját nem s olyan könnyű formálsan felírn. A = (x:nfle(tranzakcó), v: outfle(egyenleg)) Tranzakcó = rec(sz:strng, dátum:n, össz:z) Egyenleg = rec(sz: Strng, össz:z) Ef = ( x=x az x sz szernt rendezett) Uf = (?) Az utófeltételt csak nagyon körülményesen lehetne leírn, mert a szekvencáls nputfájl nevezetes bejárása nem lleszkedk a feladathoz. Nekünk nem a tranzakcókat, nem egy számla összes tranzakcónak eredőjét kell egy lépésben feldolgozn. Olyan felsorolóra van szükség, amelyk egy számlaszám mellé ezt az eredőt meg tudja adn. Egy lyen ktalált (absztrakt) felsorolóval a specfkácó megfogalmazása s könnyebb. A = (t:enor(egyenleg), v: outfle(egyenleg)) Ef = ( t=t ) ' t, Uf = ( v t ) 1 t'. össz Ez a feladat vsszavezethető az összegzés programozás tételére, ahol a f:egyenlegegyenleg* típusú, és egy e egyenlegre e.össz< , akkor f(e) megegyezk az <e> egyelemű sorozattal, különben f(e) az üres sorozat. 137

7 9. Vsszavezetés egyed felsorolókkal t.frst() t.end() t.current().össz< v:wrte(t.current()) SKIP Mnd a Frst(), mnd a Next() művelet a soron következő számlaszám tranzakcót összegz. Mvel az x szekvencáls nputfájl számlaszám szernt rendezett, így az ugyanolyan számlaszámú tranzakcók közvetlenül egymás után helyezkednek el. Ezért az egyenleget az x fájl nevezetes bejárására épülő feltétel fennálláság tartó összegzéssel lehet előállítan. A Next() művelet végrejtásakor feltételezzük, hogy az x szekvencáls nputfájl elemenek felsorolása már korábban elkezdődött, és ezért brtokunkban van a legutolsó olvasásának eredménye: sx, dx, x. Meg kell mondanunk, hogy van-e egyáltalán újabb feldolgozandó tranzakcó-csoport (vége), és gen, m ezek egyenlege (akt). A Next = (x: nfle(tranzakcó), dx: Tranzakcó, sx: Státusz, vége:l, akt:egyenleg) Ef Next = ( x = x 1 dx = dx 1 sx = sx 1 x azon szernt rendezett) Uf Next = ( (sx 1 =abnorm vége=gaz ) ( sx 1 =norm vége=ms akt.azon= dx 1.azon x x. sz akt. sz 1 akt. össz, sx, dx, x x. össz ) ) 1 1 sx=norm vége:=ms akt.azon, akt.össz:=dx.azon, 0 sx=norm dx.azon=e.azon akt.össz:=akt.össz+dx.össz sx, dx, x: read vége:=true A Frst() művelet csak egy előreolvasással több a Next()-nél, hszen tt kell elkezden az x fájlnak a felsorolását. Ezután ugyanarra a kérdésre keressük a választ, mnt előbb. A Frst = (x: nfle(tranzakcó), dx: Tranzakcó, sx: Státusz, vége:l, akte:egyenleg) Ef Frst = ( x = x x azon szernt rendezett) Uf Frst = ( sx 1, dx 1, x 1 =read(x ) (sx 1 =abnorm vége=gaz ) 138

8 9.3. Csoportok felsorolása (sx 1 =norm vége=ms akt.azon= dx 1.azon x x. sz akt. sz 1 akt. össz, sx, dx, x x. össz ) ) 1 1 t.frst() sx, dx, x:read Az absztrakt felsorolót tehát az sx, a dx, az x, az akt és a vége adatok együttesen reprezentálják. Az aktuáls számlaszám tranzakcónak egyenlegét (akt) a Current() művelettel kérdezhetjük le, az egyenlegek felsorolásának végét a vége változó jelz: ezt adja vssza az End() Példa. Egy repülőgéppel elrepültünk a Csendes Óceán szgetvlágának egy része felett, és megtározott távolságonként megmértük a felszín tengersznt felett magasságát. Ott, ahol óceán felszínét észleltük, ez a magasság nulla, a szgeteknél poztív. A mérést óceán felett kezdtük és óceán felett fejeztük be. Az így kapott nem-negatív valós értékeket egy n hosszúságú x vektorban tároljuk. Adjuk meg a mérések alapján, hogy mekkora a leghosszabb szget, és a repülés hányadk mérésénél kezdődk ezek közül az egyk. A feladat állapottere az alább: A = (x:n n, max:n, kezd:n) Ezt a feladatot már megoldottuk (6.9. példa) ntervallumos maxmum-kválasztással, ahol egy egész számokon értelmezett rekurzív függvény értéke között kerestük a legnagyobbat. Most s maxmum-kválasztást fogunk sználn, de nem a vektor ndextartományát járjuk be közvetlenül, nem a szgetek hosszat. Ehhez egy olyan felsorolót készítünk, amelyk a szgetek hosszat tudja sorban egymás után megadn azok vektorbel kezdőndexével együtt. A feladat specfkácóját ezért nem az eredet állapottéren, nem a ktalált felsorolóra írjuk fel, amely elrejt az eredet megfogalmazásban szereplő x vektort. Elképzelésünk szernt a felsorolt elemek nemcsak a szgetek hosszat, nem a szgetek vektorbel kezdő ndexet s tartalmazzák. A = (t:enor(szget), max:n, kezd:n) Szget = rec(hossz:n, eleje:z) Ef = ( t=t ) t' Uf = ( max, elem = max 1, t. hossz kezd = elem.eleje) A feladatot maxmum-kválasztás programozás tételére vezetjük vssza, ahol f:szgetn és f(e)=e.hossz. A tétel alkalmazásakor elég a megtalált maxmáls elemet eredményként megadn, hszen az tartalmazza a maxmáls értéket s. Ebből az eredményből közvetlenül kolvastó a leghosszabb szget hossza és kezdőndexe. t.frst() 139

9 9. Vsszavezetés egyed felsorolókkal max, kezd:= t.current().hossz, t.current().eleje t.end() t.current().hossz>max max, kezd := t.current().hossz, t.current().eleje SKIP Mnd a Frst(), mnd a Next() műveletet el lehet készíten úgy, hogy a vektor egy adott pozícójáról ndulva (kezdetben ez az 1) keressék meg a következő szget elejét (az első nemnulla értéket), majd annak a végét (az első nullát), ebből számolják k a szget hosszát és kezdőndexét. Ehhez a felsoroló reprezentálásánál szükségünk van az eredet állapottér 1-től n-g ndexelt x vektorára, és annak ndextartományát befutó ndexre. (A háttérben tehát megjelenk a vektor klasszkus felsorolója.) A Frst() és a Next() művelet közt különbség csak anny, hogy az ndex kezdőértékét a Next() művelet megkapja, míg a Frst() kezdetben 1-re állítja. A Current() művelet a legutoljára talált szget adatat adja meg, ezért a felsoroló reprezentácójában egy akt nevű Szget típusú adatot s rögzíten kell. Az End() azután ad vssza gaz értéket, egy újabb szget keresésénél >n bekövetkezk. Ezt a tényt egy l logka változó fogja jelöln: találtunk újabb szgetet, akkor az értéke gaz, különben ms. Összességében látszk, hogy a szgetek hosszanak felsorolóját a három adat reprezentálja: az l, akt és. Specfkáljuk először a Next() műveletet. A Next = (x:n n, :N, l:n, akt:szget) Q Next = (x = x = ) n R Next = ( x = x l, akt.eleje = search ( x[ ] 0) ' ( l = select ( x[ ] 0 n) akt.hossz=-akt.eleje ) ) akt.eleje Ennek bemenő adata az x vektor és annak egy ndexe (), kmenő adata az akt szget és az ndex. A szget elejének és végének keresését kválasztással oldjuk meg, hszen más nem a vektor vége tárolja ezeket. A Next() még látszólag akkor s előállít egy újabb szgetet, már nncs több szget, és ezt az akt.eleje>n feltétel jelez.a másodk kválasztás előtt nem kell az -nek kezdőértéket adn, hszen az ekkor éppen az akt.eleje értékével azonos. l := ms l n l := x[] = 0 akt.eleje:= :=+1 140

10 9.3. Csoportok felsorolása l x[] 0 n :=+1 akt.hossz:= -akt.eleje SKIP A Frst() művelet specfkácója egyrészt abban tér el a Next() műveletétől, hogy az nem bemenő adat, és az első kválasztás 1-ről ndul, másrészt abban, hogy mvel egy szget bztosan van, ezért tt nem kell eredményként megadn, hogy találtunk-e egyáltalán szgetet: a szget elejének megkeresése lneárs keresés helyett kválasztással történk, az l értéke pedg gaz. A Frst = (x:n n, :N, akt:szget) Q Frst = (x = x ) R Frst = ( x = x akt.eleje = select ( n x[ ] 0) 1 = select ( n x[ ] 0) akt.hossz=-akt.eleje ) akt.eleje t.frst() := Példa. Egy karakterekből álló szekvencáls nputfájl egy szöveget tartalmaz. Számoljuk meg, hogy hány w betűt tartalmazó szó találtó a szövegben! (Egy szó az a szóköz karaktert nem tartalmazó karakterlánc, amelyet egy vagy több szóköz, a fájl eleje vagy vége tárol.) A feladat egy számlálás, de nem a szekvencáls nputfájl karaktere felett, nem a szekvencáls nputfájlban találtó szavak felett. A számláláshoz egy olyan felsorolóra lenne szükség, amely anny darab logka értéket sorolna fel, ahány szó szerepel a fájlban, és az - edk logka érték akkor lenne gaz, amkor a az -edk szó tartalmaz w betűt. A = (t:enor(l), db:n) Ef = ( t=t ) t' Uf = ( db 1) 1 t, db:=0; t.frst() db:=db+1 t.end() t.current() SKIP 141

11 9. Vsszavezetés egyed felsorolókkal Valósítsuk meg az absztrakt felsorolót! A Frst() művelet az első szó kértékelését végz. Ehhez először meg kell keresn az első szó elejét, am a szóközök átlépését, az első nem-szóköz karakter vagy a fájl végének ( nncs egyáltalán szó) megtalálását jelent. Ha megtaláltuk a szó elejét, akkor egy w betűt kezdünk el keresn, de legfeljebb a szó végég. A Next() művelet szóról szóra ugyanazt csnálja, mnt a Frst(), hszen a korább szavak kolvasásuk után már nncsenek az f fájlban, így a soron következő szó a megolvasott fájl első szava. A Current() az utoljára vzsgált szó értékelését adja vssza, az End() pedg azt, hogy elértük-e el a fájl végét a soron következő szó elejének keresése során. Az absztrakt felsoroló reprezentácójába a megolvasott szekvencáls nputfájl (sf:státusz, df:k, f:nfle(k)) mellett tehát két logka értéket s felveszünk: skerült-e újabb szót találn (van_szó:l), és ezen szóban van-e w betű (van_w:l). A szó előtt szóközök átlépése egy kválasztás (nem szóköz vagy fájl végének megtalálása) lesz, a szóban történő w betű keresése egy feltétel fennálláság tartó (amíg a szó tart) lneárs keresés. Ezután mndenképpen el kell jutn a szó végéhez, am egy újabb kválasztás (szóköz vagy fájl vége megtalálása) lesz. A Frst() és a Next() műveletek formáls leírása tehát közös: A = (f: nfle(k), df:k, sf: Státusz, van_szó:l, van_w:l) Ef = ( f = f ) ' ' Uf = ( sf, df, f select ( f f ' ') van_szó=(sf 1 =norm) (van_szó van_ w, sf, df, f search ( f ' w' ) 1 1 f f ' ' 2 2 sf, df, f select ( f f ' ') ) ) Az utófeltételből kolvastó a megoldás három szakasza: az f fájl felsorolására épülő kválasztás, a felsorolás folytatására épülő lneárs keresés, majd tovább folytatva a felsorolást egy újabb kválasztás. Ezen szakaszok tárán a felsoroló állapotat felső ndexekkel különböztettük meg. Nncs vszont szüksége az újabb Next() műveletnek a megelőző Next() vagy Frst() művelet végén végzett utolsó olvasás státuszára és eredményére, ezért az első szakasz kválasztása egy előreolvasással ndul szemben a másk két szakasszal. t.frst()= sf, df, f : read df= sf = norm sf, df, f : read van_szó:= sf=norm van_szó van_w:=ms van_w df sf = norm van_w:=(df= w ) sf, df, f: read df sf = norm SKIP 142

12 9.3. Csoportok felsorolása sf, df, f: read Valósítsuk meg az absztrakt felsorolót most másképpen! Kössük k a Next() művelet mplementácójánál, hogy a szekvencáls nputfájl olyan megolvasott állapotban legyen, hogy nem értük el a fájl végét ( sf=norm), akkor a soron következő szó elejénél álljunk (df ). (Ez a felsoroló objektum típus-nvaránsa.) Ekkor a Next() művelet mplementácója nem gényel előreolvasást, és rögtön a következő szó vzsgálatával kezdődhet ( w betű lneárs keresése majd a szó végének kválasztása), van egyáltalán következő szó.. Vszont e vzsgálat után gondoskodna kell a szó után szóközök átlépéséről (kválasztás) azért, hogy az újabb Next() művelet számára s bztosítsuk a kívánt előfeltételt. A Frst() művelet annyval több, mnt a Next() művelet, hogy először bztosítana kell a fent típus-nvaránst. Ehhez a vezető szóközök átlépésére (kválasztás) van szüksége. A Current() és az End() mplementácója nem változk. A Next = (f: nfle(k), df:k, sf: Státusz, van_szó:l, van_w:l) Q Next = ( f = f 1 df = df 1 sf = sf 1 (sf = normdf ) ) R Next = ( (van_szó=(sf 1 =norm)) 1 1 f f ' (van_szó ( van_ w, sf, df, f search ( f ' w' ) sf, df, f select ( f f ' ') 3 3 sf, df, f select ( f f ' ') ) )) ') A Frst = (f: nfle(k), df:k, sf: Státusz, van_szó:l, van_w:l) Q Frst = ( f = f ) R Frst ' ' = ( sf, df, f select ( f f ' ') A megfelelő algortmusok: (van_szó=(sf 1 =norm) (van_szó ( lásd R Next -ben ) ) ) t.frst() sf, df, f : read df= sf = norm sf, df, f : read van_szó:= sf=norm van_szó:= sf=norm van_szó van_w:=ms van_w df sf = norm van_w:=(df= w ) sf, df, f: read df sf = norm sf, df, f: read SKIP 143

13 9. Vsszavezetés egyed felsorolókkal df= sf = norm sf, df, f: read 144

14 9.3. Csoportok felsorolása 9.4. Összefuttatás Az előző alfejezetekben olyan feladatokat látttunk, ahol a feldolgozáshoz felsorolt értékek egyetlen gyűjteményből származtak. Találkoztunk azonban olyan feladatokkal s, ahol a feldolgozandó elemek több bemenet adatban helyezkednek el. Ilyenkor olyan felsorolást kell adunk, amely során képzeletben egyetlen sorozattá futtatjuk össze a bemenet adatok elem értéket. Vegyük például azt, amkor két lmaz metszetét kell előállítan. Ha fel tudjuk soroln a lmazok összes elemét, akkor készen s vagyunk, hszen ezek közül csak azokat tesszük bele az eredmény lmazba, amelyek mndkét lmazban szerepelnek. Az alább specfkácóban ezt a megközelítést tükröz az utófeltétel másodk alakja, amelyben az unó arra utal, hogy a feldolgozás során nemcsak a közös elemeket kell megvzsgáln, nem az összest. Ezért a megoldás az x y lmaz felsorolására épített összegzés (tt unózás) lesz, amely fokozatosan fogyasztja el a két lmazt. A = (x:set(e), y:set(e), z: set(f)) Ef = ( x = x y = y ) Uf = ( z = x y ) = ( z = U f ( e) ex ' y ' f ( e) ) { e} e x' e y' e x' e y' e x' e y' A feldolgozást azonban nem kell addg végezn, amíg mndkét lmaz üres nem lesz, hszen a közös elemek kgyűjtése véget ér, már az egyk lmaz kürül. Az End() művelet tehát addg ms, amíg egyk lmaz sem üres. A Current() az xy lmazból választ k determnsztkus módon egy elemet (mem(xy)). A Frst() művelet mnt azt a lmazok bejárásánál láttuk az üres program lesz, hszen kezdetben nem kell tenn semmt ahhoz, hogy a Current() műveletet sználssuk. A Next() művelet a felsorolás során aktuálsan kválasztott elemet elvesz az xy lmazból, azaz x-ből, az x-bel, y-ból, y-bel, mndkettőből, mndkettőnek eleme. Ez tehát egy háromágú elágazás. Mvel az aktuálsan kválasztott érték feldolgozásánál s azt kell vzsgáln, hogy az érték melyk lmaznak az eleme, ezért a Next() művelet elágazása a feldolgozás elágazásával összevontó. Így kapjuk az alább programot. z:= x y e:=mem(xy) ex ey ex ey ex ey SKIP SKIP z:= z {e} x:=x {e} y:=y {e} x, y := x {e}, y {e} 145

15 9. Vsszavezetés egyed felsorolókkal Nehezebb a feladat megoldása akkor, hogy a felsorolandó elemek nem két lmazban, nem mondjuk, két vektorban helyezkednek el. Annak eldöntése ugyans, hogy egy (vektorból kválasztott) érték szerepel-e egy (másk) vektorban egy keresést gényel. (Ha rendezett az a vektor, ahol keresünk, akkor logartmkus keresést.) Gyorsabb lesz a megoldás, mndkettő vektor szgorúan monoton növekvő, azaz egy érték egy vektorban legfeljebb egyszer fordul elő, és mndkét vektor eleme azonos szempont szernt növekvően rendezettek. (Természetesen feltételezzük, hogy a vektorok elemenek E lmazán értelmezett egy teljes rendezés.) Ekkor ugyans meg lehet valósítan egy szmultán (összefuttatott, összefésült) bejárást, amely a vektorokban találtó elemeket a rendezettségüknek megfelelően sorolja fel úgy, hogy mnden elemnél megmondja, hogy az csak az egyk, csak a másk vagy mndkettő vektorban szerepel-e. A bejáráshoz két ndexváltozót sználunk: és j. A Frst() művelet rááll a vektorok első elemere (,j:=1,1). A feldolgozás során még nem érntett x-bel elemek x[..n]-ben vannak (pontosabban az elemek ndexe az [..n] tartományba tartoznak), az y-belek y[j..m]ban találtók. A felsorolás során mndvégg gaz, hogy n és j m ez lesz a End(), akkor az x[] az x vektor legksebb, y[j] pedg az y vektor legksebb még feldolgozatlan értéke. Ha x[]<y[j], akkor a soron következő feldolgozandó érték az x[] lesz, hszen ez a legeslegksebb érték az x[..n] és y[j..m] feldolgozatlan eleme között. Ez nylván nem közös eleme a két vektornak, hszen benne lenne y-ban, akkor annak rendezettsége folytán ez állna az y[j] helyén, nem pedg egy ennél nagyobb érték. A feldolgozás tehát x[]-vel nem csnál semmt, a Next() művelet pedg úgy lép a következő elemre, hogy az :=+1 értékadással átlép az x[]-t. Hasonló megfontolásokból x[]>y[j] esetén csak a j:=j+1 értékadásra (lyenkor ez a Next() művelet) van szükség. Ha azonban x[]=y[j], akkor olyan értékkel találkoztunk, amely mndkét vektorban szerepel, ez egy közös érték, amt kírunk a z vektorba, majd a Next() művelet átlép ezt az értéket mndkét vektorban. A Current() művelet a fent három esettől függően vagy az x[]-t, vagy az y[j]-t, vagy az x[]-t adja vssza. Most csak a rmadk esetben kell a felsorolt értéket (x[]-t) feldolgozn. Mvel mnd a Current() művelet, mnd a feldolgozás, mnd a Next() művelet ugyanazon háromágú elágazással írtó le, ezt egyetlen háromágú elágazásba vonjuk össze, amely az alább algortmus cklusmagjában láttó. A feldolgozás eredményét egy z vektorba helyezzük el, amelynek aktuáls méretét a k mutatja. Ez a vektor s egyértelmű és rendezett lesz., j, k := 1, 1, 0 n j m x[]< y[j] x[]>y[j] x[]=y[j] SKIP SKIP k := k+1 z[k] := f(x[]) := +1 j := j+1, j := +1, j+1 Ha nemcsak a közös elemeket kell feldolgozn, nem az összes elem felsorolására szükség van, akkor a End() művelet az x j y -ra módosul. Ematt a hármas elágazás feltételrendszere s bonyolultabbá válk. Ugyans nemcsak az utal arra, hogy az x[] elemet kell feldolgozn, x j y x[]<y[j], nem az s, x j> y, azaz amkor már az y vektor elemet már mnd feldolgoztuk. Analóg módon, y[j] a feldolgozandó elem akkor, 146

16 9.4. Összefuttatás ( x j y x[]>y[j]) (> x j y ). A rmadk eset feltétele: x j y x[]=y[j]. Fgyelembe véve, hogy ezek a feltételek egy olyan cklus magjában kerülnek kértékelésre, amelynek cklusfeltétele: x j y, az elágazás feltétele egyszerűsödnek. Általánosítsuk a fent problémát felsorolókra! Dolgozzuk fel egyenként az x és y felsorolók által szgorúan növekedően rendezett sorrendben előállított elemeket, és a feldolgozásuk eredményét fűzzük egy z sorozatba. A = (x: enor(e), y: enor(e), z:seq(e)) f1( e) Ef = ( x = x y = y x y) f ( e) f 2 ( e) Uf = ( z f ( e) f ( e) e{ x'} { y'} 3 e { x'} e { y'} e { x'} e { y'} e { x'} e { y'} A specfkácóban a t jelöl azt, hogy t szgorúan növekvően rendezett, és természetesen feltételezzük, hogy E-n értelmezett egy teljes rendezés. A {t}-vel egy t felsorló elemeből képzett lmazt jelöltük. Mvel feltettük, hogy a felsorolt értékek nem smétlődnek, így azok gondolatban történő lmazzá alakítása nem okoz adatvesztést. A feladatot a felsorolt elemek összefuttatása mellett összegzés oldja meg, amelyk addg tart, amíg a felsorolások végére nem érünk. Ennek alapját egy olyan egyed felsoroló adja, amelynek Current() művelete az x.current() és y.current() elemek közül a ksebbet, csak az egyk adott, akkor azt, egyezés esetén az egyező elemet adja meg. A Frst() művelet az x.frst() és y.frst() egydejű végrejtásából áll, hszen ez teremt meg a lehetőséget arra, hogy az x.current() és y.current() értelmezhető legyen. A Next() művelet az aktuálsan feldolgozott elemet eldobja azért, hogy a Current() a soron következőt tudja majd megadn. Ehhez egy háromágú elágazás kell. Ha x.current()<y.current() (vagy y.end() és x.end()), akkor az x.current() a feldolgozott elem, azt kell lecseréln az x.next()-tel. Ha x.current()>y.current() (vagy x.end() és y.end()), akkor az y.next()-re van szükség. Ha x.current()=y.current(), akkor mndkét felsorolóval tovább kell lépn. Mvel az aktuálsan kválasztott érték feldolgozásánál s ugyanezt a három feltételt kell vzsgáln, a Next() művelet elágazása a feldolgozás elágazásával összevontó. Az End() művelet akkor lesz gaz, mnd az x, mnd az y felsoroló véget ért, azaz x.end() y.end(). Fontos észrevenn, hogy az eredmény sorozat s egyértelmű és rendezett lesz. y.end() (x.end() x.current()<y.current()) x.frst(); y.frst(); z := <> x.end() y.end() x.end() (y.end() x.current()>y.current()) x.end() y.end() x.current()=y.current() z:wrte(f 1 (x.current())) z:wrte(f 2 (x.current())) z:wrte(f 3 (x.current())) x.next(); y.next() x.next(); y.next() Ezek alapján az összefuttatásos feldolgozás könnyen adaptáltó sorozatok vagy szekvencáls nputfájlok összefuttatására s. Az összefuttatás alkalmazásának egyk klasszkus példája az alább szekvencáls karbantartás. 147

17 9. Vsszavezetés egyed felsorolókkal 9.8. Példa. Adott egy árukészletet az áruk azonosítója szernt egyértelmű és növekvően rendezett szekvencáls nputfájl, továbbakban törzsfájl, és az egyes árukra vonatkozó változtatásokat tartalmazó áruk azonosítója szernt egyértelmű és növekvően rendezett másk szekvencáls nputfájl, továbbakban módosító fájl. A változtatások három félék lehetnek: új áru felvétele (beszúrás), meglevő áru leselejtezése (törlés) és meglevő áru mennységének módosítása (módosítás). Készítsük el a változtatásokkal megújított, úgynevezett dőszerűsített árukészletet. A törzsfájl Áru=rec(azon:N, menny:n) típusú elemek; a módosító fájl pedg Változás=rec(azon:N, müv:{i,d,u}, menny:z) típusú elemek sorozata. Az I (beszúrás), D (törlés), U (módosítás) a megfelelő változtatás típusára utal, a mennység a törlés esetén érdektelen, módosítás esetén ennyvel kell az eddg mennységet módosítan. Az új törzsfájl a rég törzsfájllal megegyező szerkezetű. A feladat állapottere: A= (t:nfle(áru), m:nfle(változás), u:outfle(áru)) Ef = ( t = t' m = m' t és m szekvencáls nputfájlok t és m az azon mező szernt szgorúan növekedően rendezett) Szükségünk van egy olyan felsorolóra, amelyk fel tudja soroln a két szekvencáls nputfájlban előforduló összes áruazonosítót, meg tudja mondan, hogy az melyk nputfájlban találtó (törzsfájl, módosító fájl vagy mndkettő), és képes megadn az aktuáls áruazonosítóhoz tartozó törzsfájlbel lletve módosító fájlbel rekordot. Az azon(t ) az összes t -bel azonosítót tartalmazó lmazt, az azon(m ) az összes m -bel azonosítót tartalmazó lmazt jelöl. Ha aazon(t ), akkor a(t ) a t -bel a azonosítójú rekordot jelöl. Hasonlóan, aazon(m ), akkor az a(m ) az m -bel a azonosítójú rekord. A= (x:enor(n), u: outfle(áru)) Ef = ( x = x' ) x' S = ( u f ( x' ) ) 1 f ( a) a( t') f ( a) 2 f ( a) 3 a azon( x') a azon( y') a azon( x') a azon( y') a azon( x') a azon( y') ( a, a( m' ). menny) f 2 ( a) hba kül e. müv I hba f 3 ( a) ( a, a( t' ). menny a( m' ). újmenny) e. müv I e. müv D e. müv U A feladat megoldását a fent körvonalazott felsoroló felett összegzésre (am tt egy elemenként feldolgozás) vezetjük vssza. A felsorolót a két előreolvasott nputfájl (st, dt, t, sm, dm, m) reprezentálja. A Frst() művelet végz el a kezdet előreolvasásokat. Az End() akkor lesz gaz, mndkét fájl kürült, azaz st=anorm és sm=abnorm. A Current() művelet a soron következő azonosítót és az ahhoz kapcsolódó adatokat adja vssza, amely a dt és dm-ből 148

18 9.4. Összefuttatás olvastó k. Ha valamelyk fájlra az utolsó olvasás abnorm státuszt adott vssza, akkor értelemszerűen a másk fájlból olvasott aktuáls elem a soron következő, mndkét fájl olvasás státusza norm, akkor a két aktuáls elem közül a ksebb azonosítójú, egyenlőség esetén mndkettő aktuáls elem együtt. Ezek három esetben foglaltók össze: t -bel aktuáls elemet (dt) dolgozunk fel, m -bel aktuáls elemet (dm) vagy t és m aktuáls elemet. A Next() művelet a feldolgozott aktuáls elem helyére próbál újabbat olvasn a fent három esetnek megfelelően: egyk nputfájlból, másk nputfájlból vagy mndkettőből. sm=abnorm (st=norm dt.azon<dm.azon) u:wrte(dt) st, dt, t: read; sm, dm, m: read; u := <> st=norm sm=norm st=abnorm (sm=norm dt.azon>dm.azon) dm.müv=i u:wrte(dm.a, dm.menny) st=norm sm=norm dt.azon=dm.azon dm.müv= I D U HIBA HIBA SKIP u:wrte(dt.a, dt.menny+ dm.menny) st, dt, t: read sm, dm, m: read st, dt, t: read; sm, dm, m: read Az tt megoldott feladatot úgy s átfogalmaztjuk, hogy nem követeljük meg azt, hogy a módosító fájl egyértelmű legyen, azaz egy azonosítóhoz több változtatást s rendelhetünk. Ennek egyk megoldása az lehet, hogy a fent algortmusban a módosító fájlnak nem az egyes elemet, nem a megegyező azonosítójú csoportjat olvassuk be és futtatjuk össze a törzsfájl elemevel. A csoportok kolvasásához pedg a korábban (9.3. alfejezet) mutatott technkával tudunk felsorolót készíten. Egy másk lehetőséget kínál a megoldásra egy olyan felsoroló készítése, amelyk azonosító szernt növekedve úgy sorolja fel az elemeket, hogy egy adott azonosítóhoz először a törzsfájlbel elemet, lyen nncs, akkor egy specáls üres elemet adja meg, majd az lyen azonosítójú módosító fájlbel elemeket sorolja fel. A feladatot ekkor egy rekurzív függvény kszámításával oldtjuk meg. (lásd feladatok között) Hasonló problémát vet fel az, amkor a módosítások több különböző módosító fájlban találtók. Ilyenkor előbb össze kell futtatn ezeket egyetlen módosító fájlba, vagy legalábbs egy olyan felsorolót kell bevezetn, amely egyetlen, azonosító szernt növekvő sorozatként bánk a módosító fájlokkal. Ennek lényegét emel k a következő feladat Példa. Adott n darab egész számokat tartalmazó szekvencáls nputfájl, mndegyk egyértelmű és növekvően rendezett. Készítsünk olyan felsorolót, amely a fájlokban előforduló összes egész számot felsorolja úgy, hogy egy számot csak egyszer ad meg. A felsorolót az összes előreolvasott szekvencáls nputfájllal reprezentáljuk. Ez három 1-től n-g ndexelhető tömbbel ábrázoltó: f:nfle(z) n, df:z n, sf:státusz n. A kezdet beolvasásokat a Frst() művelet végz. Az End() művelet akkor ad gazat, mndegyk fájl olvasás státusza abnorm lesz. Ennek eldöntésére az 1..n ntervallum felett egy optmsta 149

19 9. Vsszavezetés egyed felsorolókkal lneárs keresésre van szükség: vzsgáljuk, hogy [1..n]:sf[]=abnorm teljesül-e. A Current() művelet a soron következő egész számot az aktuálsan beolvasott egész számok között mnmum-kereséssel tározza meg, de k kell gyna a vzsgálatból azon fájlokat, amelyek olvasás státusza már abnorm. Vegyük észre, hogy ez a feltételes mnmum-keresés egyben az End() műveletet s mplementálja, hszen mellékesen eldönt, hogy van-e még nem üres fájl. Ezért tegyük bele ezt a Frst() (és később a Next()) művelet mplementácójába, a felsoroló reprezentácójához pedg vegyük hozzá a mnmum keresés eredményét tároló l logka értéket, és mn egész számot. Ekkor az End() értéke egyszerűen a l lesz, a Current() értéke pedg a mn. A Next() műveletnek mndazon fájlokból kell új elemet olvasna, amelyek aktuálsan kolvasott értéke megegyezk a mn értékkel, majd végre kell jtana az előbb említett feltételes mnmum-keresést. Mnd a Frst(), mnd a Next()-bel cklusok összevontók egy cklusba. Frst() =1..n sf[],df[],f[]:read l, mn := mn df [ ] n 1 sf [ ] norm Next() =1..n sf[]=norm df[]=mn sf[],df[],f[]:read SKIP l, mn := mn df [ ] n 1 sf [ ] norm 150

20 9.5. Feladatok 9.5. Feladatok 9.1. Egy kémrepülőgép végg repült az ellenség dállása felett, és rendszeres dőközönként megmérte a felszín tengersznt felett magasságát. A mért adatokat egy szekvencáls nputfájlban tároljuk. Tudjuk, hogy az ellenség a dászat rakétát a lehető legmagasabb horpadásban szokta elhelyezn, azaz olyan helyen, amely előtt és mögött magasabb a tengersznt felett magasság (lokáls mnmum). Mlyen magasan találtók az ellenség rakétá? 9.2. Számoljuk meg egy karakterekből álló szekvencáls nputfájlban a szavakat úgy, hogy a 12 betűnél hosszabb szavakat duplán vegyük fgyelembe! (Egy szót szóközök vagy a fájl vége tárol.) 9.3. Alakítsunk át egy btsorozatot úgy, hogy az első btjét megtartjuk, utána pedg csak számokat írunk annak megfelelően, hogy hány azonos bt követ közvetlenül egymást! Például a sorozat tömörítve a számsorozat lesz Egy szöveges fájlban a bekezdéseket üres sorok választják el egymástól. A sorokat sorvége jel zárja le. Az utolsó sort zártja a fájl vége s. A sorokban a szavakat a sorvége vagy elválasztójelek tárolják. Adjuk meg azon bekezdések sorszámat, amelyek tartalmazzák az előre megadott n darab szó mndegykét! (A nem-üres sorokban mndg van szó. Bekezdésen a szövegnek azt a szakaszát értjük, amely tartalmaz legalább egy szót, és vagy a fájl eleje lletve vége, vagy legalább két sorvége jel tárolja.) 9.5. Egy szöveges állomány legfeljebb 80 karakterből álló sorokat tartalmaz. Egy sor utolsó karaktere mndg a specáls \eol karakter. Másoljuk át a szöveget egy olyan szöveges állományba, ahol legfeljebb 60 karakterből álló sorok vannak; a sor végén a \eol karakter áll; és ügyelünk arra, hogy az eredetleg egy szót alkotó karakterek továbbra s azonos sorban maradjanak, azaz sorvége jel ne törjön ketté egy szót. Az eredet állományban a szavakat egy vagy több szótároló jel választja el (Az \eol s ezek közé tartozk), amelyek közül elég egyet megtartan. A szótároló jelek egy karaktereket tartalmazó szótár nevű lmazban találtók. Feltehetjük, hogy a szavak 60 karakternél rövdebbek Adott egy keresztneveket és egy vrágneveket tartalmazó szekvencáls fájl, mndkettő abc szernt szgorúan növekedően rendezett. Határozzuk meg azokat a keresztneveket, amelyek nem vrágnevek, lletve azokat a neveket, amelyek keresztnevek s, és vrágnevek s! 9.7. Egy x szekvencáls nputfájl egy könyvtár nylvántartását tartalmazza. Egy könyvről smerjük az azonosítóját, a szerzőjét, a címét, a kadóját, a kadás évét, az aktuáls példányszámát, az ISBN számát. A könyvek azonosító szernt szgorúan növekvően rendezettek. Egy y szekvencáls nputfájl az aznap könyvtár forgalmat mutatja: melyk könyvből hányat vttek el, lletve hoztak vssza. Mnden bejegyzés egy azonosítót és egy előjeles egészszámot - elvtték: negatív, vsszahozták: poztív - tartalmaz. A bejegyzések azonosító szernt szgorúan növekvően rendezettek. Aktualzáljuk a könyvtár nylvántartást! A feldolgozás során keletkező hbaeseteket egy h sorozatba írjuk bele! 9.8. Egy vállalat dolgozónak a fzetésemelését kell végrejtan úgy, hogy az azonos beosztású dolgozók fzetését ugyanakkora százalékkal emeljük. A törzsfájl dolgozók 151

21 9. Vsszavezetés egyed felsorolókkal sorozata, ahol egy dolgozót három adat helyettesít: a beosztáskód, az egyén azonosító, és a bér. A törzsfájl beosztáskód szernt növekvően, azon belül azonosító szernt szgorúan monoton növekvően rendezett. A módosító fájl beosztáskód-százalék párok sorozata, és beosztáskód szernt szgorúan monoton növekvően rendezett. (Az egyszerűség kedvéért feltehetjük, hogy csak a törzsfájlban előforduló beosztásokra vonatkozk emelés a módosító fájlban, de nem feltétlenül mndegykre.) Adjuk meg egy új törzsfájlban a dolgozók emelt béret Egy egyetem kurzusra járó llgatóknak három gépterm zárthelyt kell írna a félév során. Két félévközt, amelykből az egyket.net/c#, a máskat Qt/C++ platformon. Azt, hogy a rmadk zárthelyn k mlyen platformon dolgozk, az dönt el, hogy a félévköz zárthelyken hogyan szerepelt. Ak mndkét félévköz zárthelyt teljesítette, az szabadon választt platformot. Ak egyket sem, az nem vehet részt a félévvég zárthelyn, számára a félév érvénytelen. Ak csak az egyk platformon írta meg a félévközt, annak a félévvégt a más platformon kell teljesítene. Mnden gyakorlatvezető elkészít azt a kmutatást (szekvencáls fájl), amely tartalmazza a saját csoportjába járó llgatók félévköz teljesítményét. Ezek a fájlok llgató azonosító szernt rendezettek. A fájlok egy eleme egy llgató azonosítóból és a teljesítmény jeléből (X mndkét platformon teljesített, Q csak Qt platformon, N csak.net platformon, 0 egyk platformon sem) áll. Rendelkezésünkre állnak továbbá a félévvég zárthelyre bejelentkezett llgatók azonosító rendezett formában egy szekvencáls fájlban. Állítsuk elő azt a szekvencáls outputfájlt, amelyk a zárthelyre bejelentkezett llgatók közül csak azokat tartalmazza, akk legalább az egyk félévköz zárthelyt teljesítették. Az eredmény fájlban mnden lyen llgató azonosítója mellett tüntessük fel, hogy mlyen platformon kell a llgatónak dolgozna:.net-en, Qt-vel vagy szabadon választt Egy vállalat raktárába több különböző cég szállít árut. A raktárkészletet egy szekvencáls nputfájlban (törzs fájl) tartják nylván úgy, hogy mnden áruazonosító mellett feltűntetk a készlet mennységét. A beszállító cégek mnden nap elküldenek egy-egy ezzel megegyező formájú szekvencáls nputfájlt (módosító fájl), amelyek az adott napon szállított áruk mennységét tartalmazzák. Mnden szekvencáls fájl áruazonosító szernt szgorúan növekvően rendezett. Aktualzáljuk a raktárnylvántartást. 152

8. Programozási tételek felsoroló típusokra

8. Programozási tételek felsoroló típusokra 8. Programozás tételek felsoroló típusokra Ha egy adatot elem értékek csoportja reprezentál, akkor az adat feldolgozása ezen értékek feldolgozásából áll. Az lyen adat típusának lényeges jellemzője, hogy

Részletesebben

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás OAF Gregorcs Tbor: Mnta dokumentácó a 4. ház feladathoz 1. Feladat Adott egy szöveges fájlbel szöveg, ahol a szavakat szóközök, tabulátor-jelek, sorvége-jelek lletve a fájlvége-jel határolja. Melyk a leghosszabb

Részletesebben

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek Bevezetés progrmozásb 3. Elődás Algortmusok, tételek 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

Részletesebben

KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára. Szita formula

KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára. Szita formula KOMBINATORIKA ELŐADÁS osztatlan matematka tanár hallgatók számára Szta formula Előadó: Hajnal Péter 2015. 1. Bevezető példák 1. Feladat. Hány olyan sorbaállítása van a a, b, c, d, e} halmaznak, amelyben

Részletesebben

1. Számoljuk meg egy számokat tartalmazó mátrixban a nulla elemeket!

1. Számoljuk meg egy számokat tartalmazó mátrixban a nulla elemeket! ELTE IK, Programozás, Gyakorló feladatok a 3. zárthelyihez. Mátrix elemeinek felsorolása: 1. Számoljuk meg egy számokat tartalmazó mátrixban a nulla elemeket! 2. Igaz-e, hogy sorfolytonosan végigolvasva

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy

Részletesebben

d(f(x), f(y)) q d(x, y), ahol 0 q < 1.

d(f(x), f(y)) q d(x, y), ahol 0 q < 1. Fxponttétel Már a hétköznap életben s gyakran tapasztaltuk, hogy két pont között a távolságot nem feltétlenül a " kettő között egyenes szakasz hossza" adja Pl két település között a távolságot közlekedés

Részletesebben

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter Programozás(A szakirány) II. beadandó feladat 2014.05.05. Farkas András HP6S15 fafee@fafeecorp.com 1. csoport Veszprémi Anna / Hudoba Péter Feladat: Egy szöveges állományban bekezdésekre tördelt szöveg

Részletesebben

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás. Statsztka próbák Paraméteres. A populácó paraméteret becsüljük, ezekkel számolunk.. Az alapsokaság eloszlására van kkötés. Nem paraméteres Nncs lyen becslés Nncs kkötés Ugyanazon problémára sokszor megvan

Részletesebben

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika Fuzzy rendszerek A fuzzy halmaz és a fuzzy logka A hagyományos kétértékű logka, melyet évezredek óta alkalmazunk a tudományban, és amelyet George Boole (1815-1864) fogalmazott meg matematkalag, azon a

Részletesebben

VISSZAVEZETÉSES FELADATOK

VISSZAVEZETÉSES FELADATOK VISSZAVEZETÉSES FELADATOK INTERVALLUMOS PROGRAMOZÁSI TÉTELEK Egyetlen programozási tétellel megoldható feladatok: 1. Vezesse vissza összegzésre az alábbi feladatokat: a. Két nem-negatív szám szorzatának

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

Programozás Minta programterv a 2. házi feladathoz 1.

Programozás Minta programterv a 2. házi feladathoz 1. Programozás Minta programterv a. házi feladathoz 1. Gregorics Tibor. beadandó/0.feladat 01. január 11. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy szöveges állományban bekezdésekre tördelt szöveg

Részletesebben

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1 OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Különféle élőlények egy túlélési versenyen vesznek részt. A lények egy pályán haladnak végig, ahol váltakozó terep viszonyok vannak.

Részletesebben

Programozási tételek. Dr. Iványi Péter

Programozási tételek. Dr. Iványi Péter Programozási tételek Dr. Iványi Péter 1 Programozási tételek A programozási tételek olyan általános algoritmusok, melyekkel programozás során gyakran találkozunk. Az algoritmusok általában számsorozatokkal,

Részletesebben

Békefi Zoltán. Közlekedési létesítmények élettartamra vonatkozó hatékonyság vizsgálati módszereinek fejlesztése. PhD Disszertáció

Békefi Zoltán. Közlekedési létesítmények élettartamra vonatkozó hatékonyság vizsgálati módszereinek fejlesztése. PhD Disszertáció Közlekedés létesítmények élettartamra vonatkozó hatékonyság vzsgálat módszerenek fejlesztése PhD Dsszertácó Budapest, 2006 Alulírott kjelentem, hogy ezt a doktor értekezést magam készítettem, és abban

Részletesebben

ELEMI PROGRAMOZÁSI TÉTELEK

ELEMI PROGRAMOZÁSI TÉTELEK ELEMI PROGRAMOZÁSI TÉTELEK 1. FELADATMEGOLDÁS PROGRAMOZÁSI TÉTELEKKEL 1.1 A programozási tétel fogalma A programozási tételek típusalgoritmusok, amelyek alkalmazásával garantáltan helyes megoldást adhatunk

Részletesebben

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok és programozási tételek

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.

Részletesebben

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK 1. ALGORITMUS FOGALMA ÉS JELLEMZŐI Az algortmus egyértelműen végreajtató tevékenység-, vagy utasítássorozat, amely véges sok lépés után befejeződk. 1.1 Fajtá: -

Részletesebben

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 3. gyakorlat PLanG: 2011.09.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok

Részletesebben

Algoritmusok és adatszerkezetek I. 10. előadás

Algoritmusok és adatszerkezetek I. 10. előadás Algortmusok és adatszerkezetek I. 10. előadás Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyekkel kfzethető-e F fornt? Megoldás: Tegyük fel, hogy F P P... P... m! 1 2 m 1 Ekkor F P P P P......,

Részletesebben

Méréselmélet: 5. előadás,

Méréselmélet: 5. előadás, 5. Modellllesztés (folyt.) Méréselmélet: 5. előadás, 03.03.3. Út az adaptív elárásokhoz: (85) és (88) alapán: W P, ( ( P). Ez utóbb mndkét oldalát megszorozva az mátrxszal: W W ( ( n ). (9) Feltételezve,

Részletesebben

4 2 lapultsági együttható =

4 2 lapultsági együttható = Leíró statsztka Egy kísérlet végeztével általában tetemes mennységű adat szokott összegyűln. Állandó probléma, hogy mt s kezdjünk - lletve mt tudunk kezden az adatokkal. A statsztka ebben segít mnket.

Részletesebben

Hipotézis vizsgálatok. Egy példa. Hipotézisek. A megfigyelt változó eloszlása Kérdés: Hatásos a lázcsillapító gyógyszer?

Hipotézis vizsgálatok. Egy példa. Hipotézisek. A megfigyelt változó eloszlása Kérdés: Hatásos a lázcsillapító gyógyszer? 01.09.18. Hpotézs vzsgálatok Egy példa Kérdések (példa) Hogyan adhatunk választ? Kérdés: Hatásos a lázcsllapító gyógyszer? Hatásos-e a gyógyszer?? rodalomból kísérletekből Hpotézsek A megfgyelt változó

Részletesebben

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek Adatbázis és szoftverfejlesztés elmélet Témakör 8. 1. Egy sorozathoz egy érték hozzárendelése Az összegzés tétele Összefoglalás Programozási tételek Adott egy számsorozat. Számoljuk és írassuk ki az elemek

Részletesebben

Egy negyedrendű rekurzív sorozatcsaládról

Egy negyedrendű rekurzív sorozatcsaládról Egy negyedrendű rekurzív sorozatcsaládról Pethő Attla Emlékül Kss Péternek, a rekurzív sorozatok fáradhatatlan kutatójának. 1. Bevezetés Legyenek a, b Z és {1, 1} olyanok, hogy a 2 4b 2) 0, b 2 és ha 1,

Részletesebben

Az entrópia statisztikus értelmezése

Az entrópia statisztikus értelmezése Az entrópa statsztkus értelmezése A tapasztalat azt mutatja hogy annak ellenére hogy egy gáz molekulá egyed mozgást végeznek vselkedésükben mégs szabályszerűségek vannak. Statsztka jellegű vselkedés szabályok

Részletesebben

1.Tartalomjegyzék 1. 1.Tartalomjegyzék

1.Tartalomjegyzék 1. 1.Tartalomjegyzék 1.Tartalomjegyzék 1 1.Tartalomjegyzék 1.Tartalomjegyzék...1.Beezetés... 3.A matematka modell kálasztása...5 4.A ékony lap modell...7 5.Egy más módszer a matematka modell kálasztására...10 6.A felületet

Részletesebben

Összetett programozási tételek

Összetett programozási tételek Összetett programozási tételek 3. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 19. Sergyán (OE NIK) AAO 03 2011. szeptember

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

Részletesebben

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember

Részletesebben

A bankközi jutalék (MIF) elő- és utóélete a bankkártyapiacon. A bankközi jutalék létező és nem létező versenyhatásai a Visa és a Mastercard ügyek

A bankközi jutalék (MIF) elő- és utóélete a bankkártyapiacon. A bankközi jutalék létező és nem létező versenyhatásai a Visa és a Mastercard ügyek BARA ZOLTÁN A bankköz utalék (MIF) elő- és utóélete a bankkártyapacon. A bankköz utalék létező és nem létező versenyhatása a Vsa és a Mastercard ügyek Absztrakt Az előadás 1 rövden átteknt a két bankkártyatársasággal

Részletesebben

METROLÓGIA ÉS HIBASZÁMíTÁS

METROLÓGIA ÉS HIBASZÁMíTÁS METROLÓGIA ÉS HIBASZÁMíTÁS Metrológa alapfogalmak A metrológa a mérések tudománya, a mérésekkel kapcsolatos smereteket fogja össze. Méréssel egy objektum valamlyen tulajdonságáról számszerű értéket kapunk.

Részletesebben

Tanult nem paraméteres próbák, és hogy milyen probléma megoldására szolgálnak.

Tanult nem paraméteres próbák, és hogy milyen probléma megoldására szolgálnak. 8. GYAKORLAT STATISZTIKAI PRÓBÁK ISMÉTLÉS: Tanult nem paraméteres próbák, és hogy mlyen probléma megoldására szolgálnak. Név Illeszkedésvzsgálat Χ próbával Illeszkedésvzsgálat grafkus úton Gauss papírral

Részletesebben

Algoritmizálás, adatmodellezés tanítása 1. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás Algoritmizálás, adatmodellezés 1. előadás Az algoritmus fogalma végrehajtható (van hozzá végre-hajtó) lépésenként hajtható végre a lépések maguk is algoritmusok pontosan definiált, adott végre-hajtási

Részletesebben

Egyszerű algoritmusok

Egyszerű algoritmusok Egyszerű algortmusok Tartalomjegyzék Összegzés...2 Maxmum kválasztás...3 Mnmum kválasztás...4 Megszámlálás...5 Eldöntés...6 Eldöntés - wle...8 Lneárs keresés...10 Készítette: Gál Tamás Creatve Commons

Részletesebben

s n s x A m és az átlag Standard hiba A m becslése Információ tartalom Átlag Konfidencia intervallum Pont becslés Intervallum becslés

s n s x A m és az átlag Standard hiba A m becslése Információ tartalom Átlag Konfidencia intervallum Pont becslés Intervallum becslés A m és az átlag Standard hba Mnta átlag 1 170 Az átlagok szntén ngadoznak a m körül. s x s n Az átlagok átlagos eltérése a m- től! 168 A m konfdenca ntervalluma. 3 166 4 173 x s x ~ 68% ~68% annak a valószínűsége,

Részletesebben

VARIANCIAANALÍZIS (szóráselemzés, ANOVA)

VARIANCIAANALÍZIS (szóráselemzés, ANOVA) VARIANCIAANAÍZIS (szóráselemzés, ANOVA) Varancaanalízs. Varancaanalízs (szóráselemzés, ANOVA) Adott: egy vagy több tetszőleges skálájú független változó és egy legalább ntervallum skálájú függő változó.

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések Algortmusok és adatszerkezetek gyakorlat 09 Rendezések Néhány órával ezelőtt megsmerkedtünk már a Merge Sort rendező algortmussal. A Merge Sort-ról tuduk, hogy a legrosszabb eset dőgénye O(n log n). Tetszőleges

Részletesebben

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Programozási tételek, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok

Részletesebben

A mágneses tér energiája, állandó mágnesek, erőhatások, veszteségek

A mágneses tér energiája, állandó mágnesek, erőhatások, veszteségek A mágneses tér energája, állandó mágnesek, erőhatások, veszteségek A mágneses tér energája Egy koncentrált paraméterű, ellenállással és nduktvtással jellemzett tekercs Uáll feszültségre kapcsolásakor az

Részletesebben

1. beadandó feladat: Programozási tételek alkalmazása. Közös követelmények:

1. beadandó feladat: Programozási tételek alkalmazása. Közös követelmények: 1. beadandó feladat: Programozási tételek alkalmazása Közös követelmények: A feladatokat programozási tételek segítségével kell megoldani. A programozási tételeket a feladatnak megfelelően kell kiválasztani.

Részletesebben

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

Algoritmizálás és adatmodellezés tanítása 3. előadás

Algoritmizálás és adatmodellezés tanítása 3. előadás Algoritmizálás és adatmodellezés tanítása 3. előadás Szövegfájl Fájl típus A szövegfájl karakterek sorozata: input fájl Műveletei: nyit, zár, olvas, vége? output fájl Műveletei: nyit, zár, ír Pap Gáborné,

Részletesebben

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat 9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:

Részletesebben

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK Mérési Utasítás Linux/Unix jogosultságok és fájlok kezelése Linux fájlrendszerek és jogosultságok Linux alatt, az egyes fájlokhoz való hozzáférések szabályozása érdekében a fájlokhoz tulajdonost, csoportot

Részletesebben

Párhuzamos algoritmusok

Párhuzamos algoritmusok Párhuzamos algortmusok. Hatékonyság mértékek A árhuzamos algortmusok esetében fontos jellemző az m ( n, P, ) munka, amt a futás dő és a rocesszorszám szorzatával defnálunk. A P árhuzamos algortmus az A

Részletesebben

Az elektromos kölcsönhatás

Az elektromos kölcsönhatás TÓTH.: lektrosztatka/ (kbővített óravázlat) z elektromos kölcsönhatás Rég tapasztalat, hogy megdörzsölt testek különös erőket tudnak kfejten. Így pl. megdörzsölt műanyagok (fésű), megdörzsölt üveg- vagy

Részletesebben

Philosophiae Doctores. A sorozatban megjelent kötetek listája a kötet végén található

Philosophiae Doctores. A sorozatban megjelent kötetek listája a kötet végén található Phlosophae Doctores A sorozatban megjelent kötetek lstája a kötet végén található Benedek Gábor Evolúcós gazdaságok szmulácója AKADÉMIAI KIADÓ, BUDAPEST 3 Kadja az Akadéma Kadó, az 795-ben alapított Magyar

Részletesebben

Alkalmazott modul: Programozás

Alkalmazott modul: Programozás Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Feladatgyűjtemény Összeállította: Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Frissítve: 2015.

Részletesebben

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat 2012. április 13. Például (bemenet/pelda.

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat 2012. április 13. Például (bemenet/pelda. Berezvai Dániel 1. beadandó/4. feladat 2012. április 13. BEDTACI.ELTE Programozás 3ice@3ice.hu 11. csoport Feladat Madarak életének kutatásával foglalkozó szakemberek különböző településen különböző madárfaj

Részletesebben

Objektum Orientált Programozás VII.

Objektum Orientált Programozás VII. Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk

Részletesebben

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai 1. feladat: Repülők (20 pont) INFORMATIKA II. (programozás) kategória Ismerünk városok közötti repülőjáratokat.

Részletesebben

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. 7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while, select, case,

Részletesebben

XI. ERDÉLYI TUDOMÁNYOS DIÁKKÖRI KONFERENCIA

XI. ERDÉLYI TUDOMÁNYOS DIÁKKÖRI KONFERENCIA XI. ERDÉLYI TUDOMÁNYOS DIÁKKÖRI KONFERENCIA KOLOZSVÁR, MÁJUS 23-24 OBJEKTUM-ORIENTÁLT ADATBÁZIS RENDSZEREK INDEXELÉSE Irányító tanár: Dr. Varga Vorca, Docens Babes-Bolya Tudományegyetem, Matematka és Informatka

Részletesebben

Másolásra épülő algoritmusok

Másolásra épülő algoritmusok Másolásra épülő algortmusok Tartalomjegyzék Másolás...2 Másolás és módosítás...3 Másolás és módosítás plusz...4 Tömbelemek módosítása...5 Kválogatás...6 Szétválogat...7 Unó...8 Metszet...9 Összefuttatás...10

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

Dr. Ratkó István. Matematikai módszerek orvosi alkalmazásai. 2010.11.08. Magyar Tudomány Napja. Gábor Dénes Főiskola

Dr. Ratkó István. Matematikai módszerek orvosi alkalmazásai. 2010.11.08. Magyar Tudomány Napja. Gábor Dénes Főiskola Dr. Ratkó István Matematka módszerek orvos alkalmazása 200..08. Magyar Tudomány Napja Gábor Dénes Főskola A valószínűségszámítás és matematka statsztka főskola oktatásakor a hallgatók néha megkérdezk egy-egy

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Programozási Módszertan definíciók, stb.

Programozási Módszertan definíciók, stb. Programozási Módszertan definíciók, stb. 1. Bevezetés Egy adat típusát az adat által felvehető lehetséges értékek halmaza (típusérték halmaz, TÉH), és az ezen értelmezett műveletek (típusműveletek) együttesen

Részletesebben

4 205 044-2012/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

4 205 044-2012/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme HU 4 205 044-2012/11 Változtatások joga fenntartva Kezelés útmutató UltraGas kondenzácós gázkazán Az energa megőrzése környezetünk védelme Tartalomjegyzék UltraGas 15-1000 4 205 044 1. Kezelés útmutató

Részletesebben

Algoritmusok, adatszerkezetek I.

Algoritmusok, adatszerkezetek I. NEUMANN JÁNOS INFORMATIKAI KAR Sergyán Szabolcs Algortmusok, adatszerkezetek I. ÓE-NIK 5014 Budapest, 2015. Készült az Óbuda Egyetem án az ÓE-NIK 5014. sz. jegyzetszerződés kereten belül 2014-ben. Szerző:

Részletesebben

Periodikus figyelésű készletezési modell megoldása általános feltételek mellett

Periodikus figyelésű készletezési modell megoldása általános feltételek mellett Tanulmánytár Ellátás/elosztás logsztka BME OMIKK LOGISZTIKA 9. k. 4. sz. 2004. júlus augusztus. p. 47 52. Tanulmánytár Ellátás/elosztás logsztka Perodkus fgyelésű készletezés modell megoldása általános

Részletesebben

32. A Knuth-Morris-Pratt algoritmus

32. A Knuth-Morris-Pratt algoritmus 32. A Knuth-Morris-Pratt algoritmus A nyers erőt használó egyszerű mintaillesztés műveletigénye legrosszabb esetben m*n-es volt. A Knuth-Morris-Pratt algoritmus (KMP-vel rövidítjük) egyike azon mintaillesztő

Részletesebben

The original laser distance meter. The original laser distance meter

The original laser distance meter. The original laser distance meter Leca Leca DISTO DISTO TM TM D510 X310 The orgnal laser dstance meter The orgnal laser dstance meter Tartalomjegyzék A műszer beállítása - - - - - - - - - - - - - - - - - - - - - - - - - 2 Bevezetés - -

Részletesebben

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László adat Távközlés és Médanformatka Tanszék Budapest Műszak és Gazdaságtudomány Egyetem Eurecom Telecom Pars Elosztott rendszerek játékelmélet elemzése: tervezés és öszönzés Toka László Tézsfüzet Témavezetők:

Részletesebben

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

Szövegfeldolgozás II.

Szövegfeldolgozás II. Szövegfeldolgozás II. Szövegfeldolgozási alapfeladatok Tömörítés: egy szöveget vagy szövegfájlt alakítsunk át úgy, hogy kevesebb helyet foglaljon (valamint alakítsuk vissza)! Keresés: egy szövegben vagy

Részletesebben

Bevezetés a programozásba. 5. Előadás: Tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és

Részletesebben

Bevezetés a programozásba. 4. Előadás Sorozatok, fájlok

Bevezetés a programozásba. 4. Előadás Sorozatok, fájlok 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

Részletesebben

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa: 1. Tétel Az állomány két sort tartalmaz. Az első sorában egy nem nulla természetes szám van, n-el jelöljük (5

Részletesebben

C. A. R. Hoare E. W. Dijkstra Fóthi Ákos

C. A. R. Hoare E. W. Dijkstra Fóthi Ákos ELŐSZÓ A programozás az a mérnök tevékenység, amkor egy feladat megoldására programot készítünk, amelyet azután számítógépen hajtunk végre. Ezen látszólag egyszerű meghatározás mögött több fgyelemre méltó

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Elágazás Bevezetés a programozásba I. 2. gyakorlat, tömbök Surányi Márton PPKE-ITK 2010.09.14. Elágazás Elágazás Eddigi programjaink egyszer ek voltak, egy beolvasás (BE: a), esetleg valami m velet (a

Részletesebben

Térinformatikai algoritmusok Elemi algoritmusok

Térinformatikai algoritmusok Elemi algoritmusok Cserép Máté Analóg programozásnak nevezzük azt, amikor egy feladat megoldásához egy már ismert és megoldott feladat megoldását használjuk fel. Általában nem pontosan ugyanazt a feladatot oldottuk meg korábban,

Részletesebben

Algoritmizálás, adatmodellezés tanítása 2. előadás

Algoritmizálás, adatmodellezés tanítása 2. előadás Algoritmizálás, adatmodellezés tanítása 2. előadás Programozási tételek Mi az, hogy programozási tétel? Típusfeladat általános megoldása. Sorozat érték Sorozat sorozat Sorozat sorozatok Sorozatok sorozat

Részletesebben

Dinamikus programozás

Dinamikus programozás Dnamkus programozás (Horváth Gyula és Szláv Péter előadása felsználásával) Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyekkel kfzethető-e F fornt? Megoldás: Tegyük fel, hogy F P P... P... m!

Részletesebben

Orosz Gyula: Markov-láncok. 4. Statisztikus golyójátékok

Orosz Gyula: Markov-láncok. 4. Statisztikus golyójátékok . Statsztkus golyójátékok Egy urnában kezdetben különböző színű golyók vannak. Ezek közül véletlenszerűen kválasztunk egyet, és a követett stratégától függően kveszünk vagy beteszünk újabb golyókat az

Részletesebben

ORVOSI STATISZTIKA. Az orvosi statisztika helye. Egyéb példák. Példa: test hőmérséklet. Lehet kérdés? Statisztika. Élettan Anatómia Kémia. Kérdések!

ORVOSI STATISZTIKA. Az orvosi statisztika helye. Egyéb példák. Példa: test hőmérséklet. Lehet kérdés? Statisztika. Élettan Anatómia Kémia. Kérdések! ORVOSI STATISZTIKA Az orvos statsztka helye Élettan Anatóma Kéma Lehet kérdés?? Statsztka! Az orvos döntéseket hoz! Mkor jó egy döntés? Mennyre helyes egy döntés? Mekkora a tévedés lehetősége? Példa: test

Részletesebben

Szerelési útmutató FKC-1 síkkollektor tetőre történő felszerelése Junkers szolár rendszerek számára

Szerelési útmutató FKC-1 síkkollektor tetőre történő felszerelése Junkers szolár rendszerek számára Szerelés útmutató FKC- síkkollektor tetőre történő felszerelése Junkers szolár rendszerek számára 604975.00-.SD 6 70649 HU (006/04) SD Tartalomjegyzék Általános..................................................

Részletesebben

M. 33. Határozza meg az összes olyan kétjegyű szám összegét, amelyek 4-gyel osztva maradékul 3-at adnak!

M. 33. Határozza meg az összes olyan kétjegyű szám összegét, amelyek 4-gyel osztva maradékul 3-at adnak! Magyar Ifjúság 6 V SOROZATOK a) Három szám összege 76 E három számot tekinthetjük egy mértani sorozat három egymás után következő elemének vagy pedig egy számtani sorozat első, negyedik és hatodik elemének

Részletesebben

Műszaki folyamatok közgazdasági elemzése. Kevert stratégiák és evolúciós játékok

Műszaki folyamatok közgazdasági elemzése. Kevert stratégiák és evolúciós játékok Műszak folyamatok közgazdaság elemzése Kevert stratégák és evolúcós átékok Fogalmak: Példa: 1 szta stratéga Vegyes stratéga Ha m tszta stratéga létezk és a 1 m annak valószínűsége hogy az - edk átékos

Részletesebben

Hatékonyság 1. előadás

Hatékonyság 1. előadás Hatékonyság 1. előadás Mi a hatékonyság Bevezetés A hatékonyság helye a programkészítés folyamatában: csak HELYES programra Erőforrásigény: a felhasználó és a fejlesztő szempontjából A hatékonyság mérése

Részletesebben

A korlátozás programozás alapjai

A korlátozás programozás alapjai A korlátozás programozás alapa Kovács András akovacs@mt.bme.hu Bevezetés Ez a segédlet a Mesterséges Intellgenca Labor c. tárgyat felvett hallgatókhoz szól, és feltételez a logka programozás elmélet alapanak,

Részletesebben

Gyakorló feladatok az 1. nagy zárthelyire

Gyakorló feladatok az 1. nagy zárthelyire Gyakorló feladatok az 1. nagy zárthelyire 2012. október 7. 1. Egyszerű, bevezető feladatok 1. Kérjen be a felhasználótól egy sugarat. Írja ki az adott sugarú kör kerületét illetve területét! (Elegendő

Részletesebben

Algoritmizálás és adatmodellezés 2. előadás

Algoritmizálás és adatmodellezés 2. előadás Algoritmizálás és adatmodellezés 2 előadás Összetett típusok 1 Rekord 2 Halmaz (+multialmaz, intervallumalmaz) 3 Tömb (vektor, mátrix) 4 Szekvenciális fájl (input, output) Pap Gáborné, Zsakó László: Algoritmizálás,

Részletesebben

INFORMATIKA javítókulcs 2016

INFORMATIKA javítókulcs 2016 INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.

Részletesebben

Térinformatikai algoritmusok Elemi algoritmusok

Térinformatikai algoritmusok Elemi algoritmusok Cserép Máté 2016. szeptember 14. Analóg programozásnak nevezzük azt, amikor egy feladat megoldásához egy már ismert és megoldott feladat megoldását használjuk fel. Általában nem pontosan ugyanazt a feladatot

Részletesebben

Leica DISTOTMD510. X310 The original laser distance meter. The original laser distance meter

Leica DISTOTMD510. X310 The original laser distance meter. The original laser distance meter TM Leca DISTO Leca DISTOTMD510 X10 The orgnal laser dstance meter The orgnal laser dstance meter Tartalomjegyzék A műszer beállítása - - - - - - - - - - - - - - - - - - - - - - - - - 2 Bevezetés - - -

Részletesebben

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I. Számelmélet I. DEFINÍCIÓ: (Osztó, többszörös) Ha egy a szám felírható egy b szám és egy másik egész szám szorzataként, akkor a b számot az a osztójának, az a számot a b többszörösének nevezzük. Megjegyzés:

Részletesebben

2. személyes konzultáció. Széchenyi István Egyetem

2. személyes konzultáció. Széchenyi István Egyetem Makroökonóma 2. személyes konzultácó Szécheny István Egyetem Gazdálkodás szak e-learnng képzés Összeállította: Farkas Péter 1 A tananyag felépítése (térkép) Ön tt áll : MAKROEGENSÚL Inflácó, munkanélkülség,

Részletesebben

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb 1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb #include main() { int a, b; printf( "a=" ); scanf( "%d", &a ); printf( "b=" ); scanf( "%d", &b ); if( a< b ) { inttmp = a; a =

Részletesebben

Darupályák ellenőrző mérése

Darupályák ellenőrző mérése Darupályák ellenőrző mérése A darupályák építésére, szerelésére érvényes 15030-58 MSz szabvány tartalmazza azokat az előírásokat, melyeket a tervezés, építés, műszak átadás során be kell tartan. A geodéza

Részletesebben

Bevezetés a kémiai termodinamikába

Bevezetés a kémiai termodinamikába A Sprnger kadónál megjelenő könyv nem végleges magyar változata (Csak oktatás célú magánhasználatra!) Bevezetés a kéma termodnamkába írta: Kesze Ernő Eötvös Loránd udományegyetem Budapest, 007 Ez az oldal

Részletesebben