Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/552014. 07. 14.2014. 07. 14.2014. 07. 14.  Sorozatszámítás.

Slides:



Advertisements
Hasonló előadás
Adatbázisrendszerek elméleti alapjai 2. előadás
Advertisements

Kiválasztás (N,A,sorszam) i := 1 Ciklus amíg (A(i) nem T) i := i+1 Ciklus vége sorszam := i Eljárás vége Kiválasztás.
Programozási alapismeretek
Gépelemek II. előadás 6-7.hét
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Algoritmizálás, adatmodellezés tanítása 4. előadás
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Programozási ismeretek oktatása: kód vagy algoritmus
Adatbázisrendszerek elméleti alapjai 5. előadás
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Sztringek.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Máté: Orvosi képfeldolgozás10. előadás1 Több kompartmentes modell, pl.: Lineáris tagok. Pl. k 32 jelentése: a 3-ba a 2-ből jutó tracer mennyisége lineárisan.
EKG kapuzott (ECG gated) szív vizsgálat
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
Adatbázisrendszerek elméleti alapjai 7. előadás
Specifikáció Specifikáció Követelményei: Tömör legyen, egyértelmű, precíz, jól formalizált, szemléletes, érthető Meg kell adni a program bemenő adatait.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Csempe Programozás érettségi mintafeladat
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Egyenesvonalú (lineáris) adatszerkezetek
Programozási tételek.
V 1.0 ÓE-NIK-AII, Programozás I. Karaktersorozatok Feladatok.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Máté: Orvosi képfeldolgozás10. előadás1 Két kompartmentes modell F = F(t) C A (t)(artériás koncentráció) (flow) k 12 k sejt közötti tér 2. sejten.
Máté: Orvosi képfeldolgozás8. előadás1 Kondenzált képek Transzport folyamat, pl. mukocilliáris klírensz (a légcső tisztulása). ROI kondenzált kép F 1 F.
Üreges mérőhely üreg kristály PMT Nincs kollimátor!
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 7. előadás.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Máté: Orvosi képfeldolgozás5. előadás1 Mozgó detektor: előnyHátrány állójó időbeli felbontás nincs (rossz) térbeli felbontás mozgójó térbeli felbontás.
Máté: Orvosi képfeldolgozás12. előadás1 Regisztrációs probléma Geometriai viszony meghatározása képek között. Megnevezései: kép regisztráció (image registration),
Máté: Orvosi képfeldolgozás5. előadás1 yy xx Linearitás kalibráció: Ismert geometriájú rács leképezése. Az egyes rácspontok képe nem az elméletileg.
Programozási alapismeretek 11. előadás
Geometriai feladatok programozása Geometriai programozás Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010.
Fájlkezelés Programozási tételek
Programozási alapismeretek 4. előadás. ELTE  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.
INFOÉRA 2006 Nagypontosságú aritmetika III.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Nevezetes algoritmusok
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Programozási tételek.
Előadás másolata:

Programozási alapismeretek 7. előadás

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás – rekordok: jövedelem Sorozatszámítás  Maximumkiválasztás – rekordok: legkorábbi születésnap Maximumkiválasztás  Függvény a feltételben Függvény a feltételben  Mátrixok Mátrixok  Szöveges fájl Szöveges fájl  Rekordok vektora Rekordok vektora  Vektorok rekordja Vektorok rekordja Tartalom

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás3/ Sorozatszámítás rekordok: jövedelem Feladat: Mennyi a jövedelmünk, ha ismertek a bevé- teleink és a vele szemben elszámolt kiadása- ink? Specifikáció 1 :  Bemenet: N:Egész, Bev,Kia:Tömb[1..N:Egész]  Kimenet: S:Egész  Előfeltétel: N  0  Utófeltétel: S= Bev[i]-Kia[i] Így specifikáltuk ezt az 5. előadásban. Így specifikáltuk ezt az 5. előadásban. Sorozatszámítás (szumma-) tétel.

ELTE Így specifikálhatjuk a 6. előadás után. Így specifikálhatjuk a 6. előadás után. Szlávi-Zsakó: Programozási alapismeretek 7. előadás4/ Sorozatszámítás rekordok: jövedelem Specifikáció 2 :  Bemenet: N:Egész, Jöv:Tömb[1..N:TNyer], TNyer=Rekord(bev,kia:Egész)  Kimenet: S:Egész  Előfeltétel: N  0  Utófeltétel: S= Jöv[i].bev–Jöv[i].kia Megjegyzés: értelmezhetjük úgy, hogy  (Jöv[1..N]):=  (Jöv[1..N – 1])  Jöv[N], ahol S  F:= S+F.bev–F.kia   Utófeltétel: S= Sorozatszámítás (szumma-) tétel.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás5/ Algoritmus 1 – „régi” változat : Algoritmus 2 – „új” változat : 1. Sorozatszámítás rekordok: jövedelem S:=0 i=1..N S:=S+Bev[i]–Kia[i] S:=0 i=1..N S:=S  Jöv[i] Megírandó a operátor! Megírandó a  operátor!

ELTE Kód – operátor (egy „minimum program”) : 1. Sorozatszámítás rekordok: jövedelem Típus- és függvényfej- definíciók. Függvények definíciói. Kód jegyzet- ként

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás7/ Maximum – rekordok: legkorábbi születésnap Feladat: Melyik a legkorábbi a születésnap? Specifikáció 1 :  Bemenet: N:Egész, Hó,Nap:Tömb[1..N:Egész]  Kimenet: Min:Egész  Előfeltétel: N>0 …  Utófeltétel: 1  Min  N és  i (1  i  N): Hó[Min]<Hó[i] vagy Hó[Min]=Hó[i] és Nap[Min]  Nap[i]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás8/ Maximum – rekordok: legkorábbi születésnap Specifikáció 2 :  Bemenet: N:Egész, Szül:Tömb[1..N,TSzül], TSzül=Rekord(hó,nap:Egész)  Kimenet: Min:Egész  Előfeltétel: N>0 …  Utófeltétel: 1  Min  N és  i (1  i  N): Szül[Min]  Szül[i]  Definíció:  : TSzül  TSzül  Logikai sz1  sz2:=sz1.hó<sz2.hó vagy sz1.hó=sz2.hó és sz1.nap  sz2.nap

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás9/ Maximum – rekordok: legkorábbi születésnap Min:=1 i=2..N Szül[Min]>Szül[i] Min:=i  Természetesen meg kell még írni az TSzül típusra a > relációt megvalósító függvényt (operátort). Az világos, hogy a specifikációban felbukkanó  és az algo- ritmusbeli > a relációk egymással kifejezhetők. I N

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás10/ Függvény a feltételben Feladat: Adjunk meg egy magánhangzót egy magyar szóban! Specifikáció:  Bemenet: N:Egész, Szó:Tömb[1..N:Karakter] Konstans Mag:Tömb[1..14:Karakter]= (”a”,”á”,…,”ű”)  Kimenet: S:Egész  Előfeltétel: N>0 és  i(1  i  N): MagánhangzóE(Szó[i])  Utófeltétel: 1  S  N és MagánhangzóE(Szó[S])  Definíció: MagánhangzóE:Karakter  Logikai MagánhangzóE(B)=  i (1  i  14): B=Mag[i] Kiválasztás tétel.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás11/ Függvény a feltételben Algoritmus: i:=1 nem MagánhangzóE(Szó[i]) i:=i+1 S:=i MagánhangzóE(B:Karakter):Logikai i:=1 i≤14 és B≠Mag[i] i:=i+1 MagánhangzóE:=i≤14 Kiválasztás tétel. Eldöntés tétel.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás12/ Mátrixok Feladat: Egy N*M-es raszterképet nagyítsunk a két- szeresére pontsokszorozással: minden régi pont helyébe 2*2 azonos színű pontot rajzolunk a nagyított képen. 

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás13/ Mátrixok Problémák/válaszok:  Hogyan ábrázoljunk egy képet? A kép rendezett pontokból áll, azaz biztosan valamilyen sorozatként adható meg.  Nehézkes lenne azonban a pontokra egy sorszámozást adni. Könnyebb azt megmondani, hogy egy kép- pont a kép hányadik sorában, illetve oszlopá- ban található, azaz alkalmazzunk dupla in- dexelést! A kétindexes tömböket hívjuk mátrixnak.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás14/ Mátrixok Specifikáció:  Bemenet: N,M:Egész K:Tömb[1..N,1..M:Egész]  Kimenet: NK:Tömb[1..2*N,1..2*M:Egész]  Előfeltétel: N,M  0  Utófeltétel:  i (1  i  N):  j (1  j  M): NK[2*i,2*j]=K[i,j] és NK[2*i–1,2*j]=K[i,j] és NK[2*i,2*j–1]=K[i,j] és NK[2*i–1,2*j–1]=K[i,j]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás15/ Mátrixok Algoritmus: Megjegyzés: programozási nyelvekben a mátrix elemének elérésére más jelölés is lehet, pl.: C++ esetén K[i][j]. i=1..N j=1..M NK[2*i,2*j]:=K[i,j] NK[2*i – 1,2*j]:=K[i,j] NK[2*i,2*j – 1]:=K[i,j] NK[2*i – 1,2*j – 1]:=K[i,j]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás16/ Mátrixok Egy mátrix kódolási példa: Írjunk mátrixbeolvasó eljárást! Megoldás: Kód jegyzet- ként "Hibás elem!");

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás17/ Mátrixok Feladat: Egy N*M-es raszterképet kicsinyítsünk a fe- lére (N/2*M/2 méretűre) pontátlagolással: a kicsinyített kép minden pontja az eredeti kép 2*2 pontjának „átlaga” legyen!  „átlag”: színkódok átlaga

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás18/ Mátrixok Specifikáció:  Bemenet: N,M:Egész K:Tömb[1..N,1..M:Egész]  Kimenet: KK:Tömb[1..N/2,1..M/2:Egész]  Előfeltétel: N,M  0 és PárosE(N) és PárosE(M)  Utófeltétel:  i (1  i  N/2):  j (1  j  M/2): KK[i,j]=(K[2*i,2*j]+K[2*i–1,2*j]+ K[2*i,2*j–1]+K[2*i–1,2*j–1])/4  Definíció: PárosE : …

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás19/ Mátrixok Algoritmus: Megjegyzés: a színes képeknél az átlagolással baj lehet! Milyen szín egy piros és egy kék színű pont átlaga? RGB esetén a szín: Rekord(piros, zöld, kék:Egész); és az átlag? i=1..N/2 j=1..M/2 KK[i,j]:=(K[2*i,2*j]+K[2*i–1,2*j]+ K[2*i,2*j–1]+K[2*i–1,2*j–1])/4

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás20/ Mátrixok Feladat: A Rák-köd képére alkalmazzunk egyféle Rank-szűrőt! Minden pontot helyettesítsünk magának és a 8 szomszédjának maximumá- val! 

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás21/ Mátrixok Specifikáció:  Bemenet: N,M:Egész K:Tömb[1..N,1..M:Egész]  Kimenet: RK:Tömb[1..N,1..M:Egész]  Előfeltétel: N,M  0 és  i (1  i  N):  j (1  j  M): K[i,j]  0  Utófeltétel:  i (1<i<N):  j (1<j<M): RK[i,j]= és  i (1  i  N):  j (1  j  M): RK[1,j]=K[1,j] és RK[N,j]=K[N,j] RK[i,1]=K[i,1] és RK[i,M]=K[i,M]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás 22/55 Mátrixok Algoritmus: i=2..N–1 j=2..M–1 Max:=0 p=i–1..i+1 q=j–1..j+1 K[p,q]>Max Max:=K[p,q]  RK[i,j]:=Max … I N

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás 23/ Mátrixok Algoritmus: i=2..N–1 j=2..M–1 Max:=0 p=i–1..i+1 q=j–1..j+1 K[p,q]>Max Max:=K[p,q]  RK[i,j]:=Max … I N Maximumérték- kiválasztás tétel.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás24/ Mátrixok Algoritmus (folytatás) : i=1..N RK[i,1]:=K[i,1] RK[i,M]:=K[i,M] … j=1..M RK[1,j]:=K[1,j] RK[N,j]:=K[N,j]  

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás25/ Mátrixok Feladat: Egy kép egy adott (fehér színű) tartományát egy (A,B) belső pontjából kiindulva fessük be vilá- goskékre!  Festendők a „belső pontok”, azaz Belső(i,j)=(i=A és j=B vagy Fehér(i,j) és ( Belső(i–1,j) vagy Belső(i+1,j) vagy Belső(i,j–1) vagy Belső(i,j+1)) )

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás26/ Mátrixok Specifikáció:  Bemenet: N,M:Egész K:Tömb[1..N,1..M:Egész], A,B:Egész  Kimenet: KK:Tömb[1..N,1..M:Egész]  Előfeltétel: N,M  0  Utófeltétel:  i (1≤i≤N):  j (1≤j≤M): Belső(i,j)  KK[i,j]=világoskék és nem Belső(i,j)  KK[i,j]=K[i,j]  Megoldás: KK:=K Festés(A,B)

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás27/ Mátrixok Algoritmus: Festés(i,j:Egész) KK[i,j]:=világoskék KK[i–1,j]=fehér Festés(i–1,j)  KK[i+1,j]=fehér Festés(i+1,j)  KK[i,j–1]=fehér Festés(i,j–1)  KK[i,j+1]=fehér Festés(i,j+1)  I N I N I N I N és i>1 és i<N és j>1 és j<M

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás28/ Fájlok Bevezető gondolatok:  Honnan lesznek a képek?  Fájlban tároljuk őket, melyeket névvel azo- nosítunk!  Szekvenciális input fájl: olyan sorozat, amelyet sorban lehet olvasni az elejétől kezdve. ( A billentyűzet is ilyen. )  Szekvenciális output fájl: olyan sorozat, amelynek csak a végére lehet írni. ( A kép- ernyő is ilyen. )  Ezek is sorozat típusok, de nincs indexelés és elemszám műveletük!sorozat

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás29/ Szövegfájl-kezelési alapok Specifikáció: Fel sem tűnik! Esetleg a fájlnév mint paraméter, de ekkor Ef/Uf-ben kapcsolat létesül a Be/Ki ada- tok és a fájltartalom között. Pl.: Bemenet: fN  S, N  N, szsz  S* … Előfeltétel:  SzövegFájl(fN)=f és Sora(f,1)=Szöveg(N) és  i  [1..N] Sora(f,i+1)=szsz i Sora:SzövegFájl  Egész  Szöveg  fájlnak mint adatfolyamnak az adottadik sora. Szöveg:Egész  Szöveg  konverzió szám  szöveg A fájltartalom. A fájlnév.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás30/ Szövegfájl-kezelési alapok Algoritmus:  Fájlfajták:  Input / Output  Fájldeklaráció – Input iF:InputSzövegFájl  Műveletek – Input Megnyit(iF,fN) – fN : Szöveg; fN fájlnév SorOlvas(iF,s) – s : Szöveg Olvas(iF,s) – olvasás elválasztó jelig Olvas(iF,k) – k : Karakter; karakterolvasás Vége?(iF) – logikai függvény: fájlvég-e Lezár(iF) –

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás31/ Szövegfájl-kezelési alapok Algoritmus ( folytatás ):  Fájldeklaráció – Output oF:OutputSzövegFájl  Műveletek – Output Megnyit(oF,fN) – fN : Szöveg; fN fájlnév SorÍr(oF,s) – s : Szöveg; sorvégjelet hozzáír Ír(oF,s) – sorhoz írás Ír(oF,k) – k : Karakter; karakterírás Lezár(oF) –

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás32/ Szövegfájl-kezelési alapok Kód (C++):  Fájlműveletek „lelőhelye”: fstream: #include  Fájldeklaráció – Input ifstream iF; // iF:InputSzövegFájl  Műveletek – Input iF.open(fN.c_str()); // Megnyit(iF,fN) getline(iF,s); // SorOlvas(iF,s) iF >> s; // Olvas(iF,s) iF.get(k); // Olvas(iF,k) … iF.eof() … // Vége?(iF) iF.close(); // Lezár(iF) string.c_str(): c_string  string  c-string konverzió

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás33/ Szövegfájl-kezelési alapok Kód ( folytatás ):  Fájldeklaráció – Output ofstream oF; // oF:OutputSzövegFájl  Műveletek – Output oF.open(fN.c_str()); // Megnyit(oF,fN) oF << s << endl; // SorÍr(oF,s) oF << s; // Ír(oF,s) oF.close(); // Lezár(oF)  Egyebek – ifstream iF(fN.c_str()); // deklaráció + megnyitás egyszerre ofstream oF(fN.c_str());// … … iF.is_open() … // nyitás-siker ellenőrzése

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás34/ Szövegfájl-kezelési alapok Kódolási alapfeladatok: Írjuk meg az alábbi feladatokat elvégző függ- vényeket! 1. Inputfájl ( adott hosszal )  tömb Inputfájl-szerkezet: 1. n – a sorok száma sor – az első sor szövege … i+1. i. sor – az i. sor szövege … n+1. n. sor – az n. sor szövege Output: const int maxN=100; int n; //a sorok száma string t[maxN]; //a sorok int fajlbol_string_tombbe (string fN, int &n, string t[], int maxN); (string fN, int &n, string t[], int maxN); 0, ha OK; 1, ha nem létező fájl; 2, ha túl nagy az n; 3, ha inkonzisztens a fájl.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás35/ Szövegfájl-kezelési alapok A lényeg kódja:

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás36/ Szövegfájl-kezelési alapok A lényeg kódja: Inputfájl-szerkezet: 1. n – a sorok száma sor – az első sor szövege … i+1.i. sor – az i. sor szövege … n+1.n. sor – az n. sor szövege

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás37/ Szövegfájl-kezelési alapok … és egy próbaprogram:

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás38/ Szövegfájl-kezelési alapok … és a próbaprogram: Kód jegyzet- ként

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás39/ Szövegfájl-kezelési alapok Kódolási alapfeladatok ( folytatás ): 2. Inputfájl ( ismeretlen hosszal )  tömb Mi a teendő, ha maxN-nél több sor van? Inputfájl-szerkezet: sor – az első sor szövege … i. i. sor – az i. sor szövege … n. n. sor – az n. sor szövege Output: const int maxN=100; int n; // a sorok száma string t[maxN]; //a sorok void fajlbol_string_tombbe (string fN,int &n, string t[], int maxN); (string fN, int &n, string t[], int maxN); 0, ha OK; 1, ha nem létező fájl; 2, ha túl nagy az n.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás40/ Szövegfájl-kezelési alapok Kódolási alapfeladatok ( folytatás ): 3. ( - 4. ) Az előző két feladat megoldását módo- sítsuk úgy, hogy a tömb elemének típusa nem string, hanem int, és minE, maxE közötti! Soronként most is egyetlen adat legyen! void fajlbol_int_tombbe (string fN,int &n, int t[], int maxN, int minE, int maxE); (string fN, int &n, int t[], int maxN, int minE, int maxE); 0, ha OK; 1, ha nem létező fájl; 2, ha túl nagy az n; 3, ha inkonzisztens a fájl; 4, ha valamely eleme nem OK.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás41/ Szövegfájl-kezelési alapok Kódolási alapfeladatok ( folytatás ): 5. ‘Inputfájl ( adott hosszal )  tömb’ feladat megoldását módosítsuk úgy, hogy a tömb elemének típusa nem string, hanem int, és minE, maxE közötti! Az összes adat egyet- len sorban legyen! void fajlbol_int_tombbe (string fN,int &n, int t[], int maxN, int minE, int maxE); (string fN, int &n, int t[], int maxN, int minE, int maxE); 0, ha OK; 1, ha nem létező fájl; 2, ha túl nagy az n; 3, ha inkonzisztens a fájl; 4, ha valamely eleme nem OK.

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás42/ Szövegfájl-kezelési alapok Kódolási alapfeladatok ( folytatás ): 6. Tömb  Outputfájl ( adott hosszal ) Az 1. feladat „inverze”. Input: const int maxN=100; int n; // a sorok száma string t[maxN]; //a sorok int string_tombbol_fajlba (string fN, int n, const string t[]); 0, ha OK; 1, ha már létező fájl. Outputfájl-szerkezet: 1. n – a sorok száma sor – az első sor szövege … i+1. i. sor – az i. sor szövege … n+1. n. sor – az n. sor szövege

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás43/ Rekordok vektora Feladat: Egy adott napon N-szer volt földrengés. Is- merjük az egyes rengések időpontját. Mond- juk meg, hogy hány másodpercenként volt földrengés! Megoldás felé:  Definiálni kellene, mi az idő!  Az időt megadhatjuk az (óra, perc, másod- perc) hármassal, azaz az idő egy rekord: TIdő=Rekord(o,p,mp:Egész)

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás44/ Rekordok vektora Specifikáció:  Bemenet: N:Egész, R:Tömb[1..N:TIdő] TIdő=Rekord(o,p,mp:Egész)  Kimenet: T:Tömb[1..N–1:Egész]  Előfeltétel: N  0 és  i (1≤i≤N): 0≤R[i].o≤23 és 0≤R[i].p≤59 és 0≤R[i].mp≤59 és  i (1≤i<N): R[i]<R[i+1]  Utófeltétel:  i (1≤i≤N–1): T[i]=R[i+1]–R[i]  Definíció: – :TIdő  TIdő  Egész i1 – i2 := … ??? … Bár értelmes lehetne: TIdő is!

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás45/ Rekordok vektora Idők különbsége 1. megoldási ötlet: Felfoghatjuk úgy, mint két háromjegyű szám különbsége, ahol a három jegy más-más számrendszerben van. ( Vegyes alapú számrend- szer. ) Majd másodpercekké konvertáljuk. 2. megoldási ötlet: Átalakíthatjuk az időket másodpercre, s így már két egész szám különbségét kell kiszá- molni. másodpercekben(i):=i.o*3600+i.p*60+i.mp Meggondolandó, h. mekkora egész szám kell hozzá? ( 24*3600= ) Milyen típusú lehet? ( >2 byte )

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás46/ Rekordok vektora Specifikáció:  Bemenet: N:Egész, R:Tömb[1..N:TIdő] TIdő=Rekord(o,p,mp:Egész)  Kimenet: T:Tömb[1..N–1:Egész]  Előfeltétel: N  0 és  i (1≤i≤N): 0≤R[i].o≤23 és 0≤R[i].p≤59 és 0≤R[i].mp≤59 és  i (1≤i<N): R[i]<R[i+1]  Utófeltétel:  i (1≤i≤N–1): T[i]=R[i+1]–R[i]  Definíció: – :TIdő  TIdő  Egész i1 – i2 := i1.o*3600+i1.p*60+i1.mp – (i2.o*3600+i2.p*60+i2.mp)

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás47/ Rekordok vektora Algoritmus 1 : Megjegyzések: 1. Egy S segédtömböt használunk. 2. A TIdők közötti „–” operátor az S-en ke- resztül, közvetve kerül az algoritmusba. i=1..N S[i]:=R[i].o*3600+ R[i].p*60+R[i].mp i=1..N–1 T[i]:=S[i+1]–S[i]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás48/ Rekordok vektora Algoritmus 2 : Megjegyzések: 1. A másodpercben fv. megvalósítandó! 2. Ha a különbség (óra, perc, másodperc)-ben kell, akkor T[i]-ből vissza kell alakítani! Újabb művelet. i=1..N S[i]:=másodpercben(R[i]) i=1..N–1 T[i]:=S[i+1]–S[i]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás49/ Rekordok vektora Algoritmus 3 : Megjegyzés: A másodpercben fv. segítségével ( sőt anélkül is ) megspórolható az S segédtömb; és így az előkészítő ciklus… de cserében majdnem minden R[i]-t kétszer számítunk át másod- percekre. i=1..N–1 T[i]:=másodpercben(R[i+1])– másodpercben(R[i])

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás 50/ Rekordok vektora Algoritmus 4 : Megjegyzés: A – operátort definiálni kell, amelyben a másodpercekben fv. (v. annak törzse) fel- használható! i=1..N–1 T[i]:= R[i+1]–R[i]

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás51/ Vektorok rekordja Feladat: Ismerjük egy ember összes telefonszámát és e-levél címét. Egy adott telefonszámról és e- levél címről el kell döntenünk, hogy lehet-e az adott emberé! Kérdések/válaszok:  Hogyan ábrázoljuk? TEmber=Rekord( dbt,dbe:Egész, telefon:Tömb[1..MaxT:Szöveg], elevél: Tömb[1..MaxE:Szöveg] )  Mi az a MaxT, MaxE? ???

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás52/ Vektorok rekordja Specifikáció:  Bemenet: X:TEmber, Tel,Elev:Szöveg, TEmber=Rekord(…)  Kimenet: Lehet:Logikai  Előfeltétel: X.dbt  [0..MaxT] és X.dbe  [0..MaxE] …  Utófeltétel: Lehet=Tel  X.telefon és Elev  X.elevél Megjegyzés: s  S  s=S[1] vagy s=S[2] … = eldöntés tétel x  [A..B]  A  x és x  B Figyeljünk a műveletek paramétereinek a típusára!

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás53/ Vektorok rekordja i:=1 i≤X.dbt és X.telefon[i]≠Tel i:=i+1 i≤X.dbt j:=1  j≤X.dbe és X.elevél[j]≠Elev j:=j+1 Lehet:= i≤X.dbt és j≤X.dbe Algoritmus: I N Eldöntés tétel

ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás54/ Vektor-rekord További példák: KÉP[i,j].piros – az (i,j) képpont RGB kódjának piros része EMBER[j].telefon[i].körzetszám – a j-edik ember i-edik telefonszámának a körzetszáma.x T.lap[i].él[j].pont[1].x –a T test i-edik lapja j-edik éle 1. végpontjának x-koordinátája

Programozási alapismeretek 7. előadás vége