Programozási alapismeretek 3. előadás

Slides:



Advertisements
Hasonló előadás
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.
Advertisements

Sorozatszámítás Sorozatszámítás (N,A,s) s := kezdőérték
Programozási alapismeretek
Programozási alapismeretek 9. előadás
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.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
INFOÉRA 2006 Kombinatorika
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
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 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítá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 1. előadás
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.
Fák, bináris fák INFOÉRA Ez így 60 perc.
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.
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
Copyright, 1999 © Szlávi Péter Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
A problémamegoldás lépései
ELTE Adatokkal kapcsolatos fogalmak  Konstans: az az adat, amely a műveletvégzés során nem változtat(hat)ja meg értékét, mindvégig ugyanabban az „állapotban”
Tömbök és programozási tételek
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.
Nevezetes algoritmusok
Programozási tételek.
Algoritmizálás, adatmodellezés tanítása 7. előadás
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Dinamikus programozás
Programozási tételek.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Feladatok (értékadás)
INFOÉRA 2006 Nagypontosságú aritmetika I.
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.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
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.
Programozási alapismeretek 11. előadás
Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
INFOÉRA 2006 Nagypontosságú aritmetika II.
Excel programozás (makró)
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.
Programozási alapok.
Halmazműveletek.
Eljaras linearis_kereses(adatok[],n)
A legkisebb közös többszörös
Programozási alapismeretek 2. előadás
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Programozási tételek.
Előadás másolata:

Programozási alapismeretek 3. előadás 2017.04.04. Programozási alapismeretek 3. előadás Szlávi-Zsakó: Programozási alapismeretek 3. előadás 1

Programozási alapismeretek 2017.04.04. Tartalom Ciklusok – specifikáció+„algoritmika”+kódolás Egy bevezető példa a tömbhöz A tömb Elágazás helyett tömb Konstans tömbök 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 2/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg egy természetes szám (N>1) 1-től különböző legkisebb osztó-ját! Specifikáció: Bemenet: N:Egész Kimenet: O:Egész Előfeltétel: N>1 Utófeltétel: 1<ON és O|N és i (2i<O): i ł N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 3/41 3 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04.2008/2009 Ciklusok A megoldás ötlete: Próbáljuk ki a 2-t; ha nem jó, akkor a 3-at, ha az sem, akkor a 4-et, …; legkésőbb az N jó lesz! Az ezt kifejező algoritmus: i:=2 i ł N i:=i+1 O:=i 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 4/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg egy természetes szám (N>1) 1-től különböző legkisebb és önma-gától különböző legnagyobb osztóját! Specifikáció: Bemenet: N:Egész Kimenet: Lko,Lno:Egész Előfeltétel: N>1 Utófeltétel: 1<LkoN és 1Lno<N és Lko|N és i (2i<Lko): i ł N és Lno|N és i (Lno<i<N): i ł N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 5/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Megjegyzés: Az Lno az utófeltételben az Lko ismere-tében másképp is megfogalmazható: Lko*Lno=N! Az ehhez „illeszkedő” algoritmus: i:=2 i ł N i:=i+1 Lko:=i Lno:=N Div Lko 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 6/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg egy természetes szám (N>1) 1-től és önmagától különböző leg-kisebb osztóját (ha van)! Specifikáció: Bemenet: N:Egész Kimenet: O:Egész, Van:Logikai Előfeltétel: N>1 Utófeltétel: Van=i (2i<N): i|N és Van  O|N és 2O<N és i (2i<O): i ł N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 7/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Algoritmus: Megjegyzés: Ha i osztója N-nek, akkor (N Div i) is osztója, azaz elég az osztókat a szám gyökéig keresni! i:=2 i<N és i ł N i:=i+1 Van:=i<N Van O:=i  I N 2i  N Div i N Div 2 azaz i*i  N azaz i N i:=2 Ciklus amíg i√N és i ł N i:+1 Ciklus vége VAN:= i√N Ha VAN akkor O:=i 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 8/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg egy természetes szám (N>1) osztói összegét! Specifikáció: Bemenet: N:Egész Kimenet: S:Egész Előfeltétel: N>1 Utófeltétel: 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. Szlávi-Zsakó: Programozási alapismeretek 3. 9/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Algoritmus: S:=0 i=1..N i|N S:=S+i  I N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 10/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg egy természetes szám (N>1) páratlan osztói összegét! Specifikáció: Bemenet: N:Egész Kimenet: S:Egész Előfeltétel: N>1 Utófeltétel: S= 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 11/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Algoritmus1: Algoritmus2: S:=0 i=1..N i|N és páratlan(i) S:=S+i  I N S:=0 i=1..N; 2-esével i|N S:=S+i  I N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 12/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg egy természetes szám (N>1) prímosztói összegét! Specifikáció: Bemenet: N:Egész Kimenet: S:Egész Előfeltétel: N>1 Utófeltétel: S= prím(i)??? 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 13/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Algoritmus: a legkisebb osztó biztosan prím; ha N-t oszt-juk vele ahányszor csak tudjuk, a következő osztója (a redukált N-nek) megint prím lesz. S:=0 i:=2 iN i|N S:=S+i  N:=N Div i i:=i+1 I N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 14/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Feladat: Határozzuk meg azon i,j (i,j>1) termé-szetes számok számát, amelyekre i*j<N! Specifikáció: Bemenet: N:Egész Kimenet: S:Egész Előfeltétel: N>1 Utófeltétel: S= 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 15/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Ciklusok Algoritmus1: S:=0 i=2..N Div 2 j=2..N Div 2 i*j<N S:=S+1  i – 1 I N 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 16/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Szlávi-Zsakó: Programozási alapismeretek 3. 2017.04.04. Ciklusok Algoritmus2: Algoritmus3: S:=0 i=2..N Div 2 j:=2 i*j≤N S:=S+1 j:=j+1 2. ???? < a  helyett S:=0 i=2..N Div 2 S:=S+(N Div i)-1 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 17/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás 17

Szlávi-Zsakó: Programozási alapismeretek 3. 2017.04.04. Ciklusok Tanulságok: Ha az utófeltételben , , vagy  jel van, akkor a megoldás mindig ciklus! Ha az utófeltételben  vagy  jel van, ak-kor a megoldás sokszor feltételes ciklus! Ha az utófeltételben  jel van, akkor a megoldás sokszor számlálós ciklus! ( is…) Két egymásba ágyazott  jel esetén két cik-lus lesz egymás belsejében. Feltételes  esetén a ciklusban elágazás lesz. 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 18/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Ciklusok algoritmus – kód Programozási alapismeretek 2017.04.04. Ciklusok algoritmus – kód Feltételes ciklus: feltétel utasítások while (feltétel){ utasítások } Tipikus előfordulás: a beolvasás ellenőrzésénél (l. 2.ea.-ban) utasítások feltétel do{ utasítások }while (feltétel) Számlálós ciklus: i=1..N utasítások for (int i=1;i<=N;++i){ utasítások } i=1..N; x-esével utasítások for (int i=1;i<=N;i+=x){ utasítások } 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 19/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Feladat elágazásra, vagy más megoldás kell? Programozási alapismeretek 2017.04.04. Feladat elágazásra, vagy más megoldás kell? Feladat: A japán naptár 60 éves ciklusokat tartalmaz, az éveket párosítják, s mindegyik párhoz valami-lyen színt rendelnek (zöld, piros, sárga, fehér, fekete). 1,2,11,12, …,51,52: zöld évek 3,4,13,14,…,53,54: piros évek 5,6,15,16,…55,56: sárga évek 7,8,17,18,…57,58: fehér évek 9,10,19,20,…,59,60: fekete évek Tudjuk, hogy 1984-ben indult az utolsó ciklus, amely 2043-ban fog véget érni. Írj programot, amely megadja egy M évről (1984≤M≤2043), hogy milyen színű! 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 20/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Feladat elágazásra, vagy más megoldás kell? Programozási alapismeretek 2017.04.04. Feladat elágazásra, vagy más megoldás kell? Specifikáció1: Bemenet: év:Egész Kimenet: s:Szín Előfeltétel: 1984≤év és év≤2043 Utófeltétel: ((év-1984) Mod 10) Div 2=0 és s=”zöld” vagy ((év-1984) Mod 10) Div 2=1 és s=”piros” vagy … Definíció: Szín:=(”zöld”,”piros”,”sárga”,”fehér”, ”fekete”)  Szöveg Egy még „ismeretlen” halmaz A Szín halmaz definiálása, visszavezetés a Szöveg halmazra 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 21/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Feladat elágazásra, vagy más megoldás kell? Programozási alapismeretek 2017.04.04. Feladat elágazásra, vagy más megoldás kell? Specifikáció2: Bemenet: év:Egész Kimenet: s:Szín Szín=(”zöld”,”piros”,”sárga”, ”fehér”,”fekete”)  Szöveg Előfeltétel: 1984≤év és év≤2043 Utófeltétel: ((év-1984) Mod 10) Div 2=0 és s=”zöld” vagy ((év-1984) Mod 10) Div 2=1 és s=”piros” vagy … A Szín halmaz definiálása itt is lehetséges 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 22/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Feladat elágazásra, vagy más megoldás kell? Programozási alapismeretek 2017.04.04. Feladat elágazásra, vagy más megoldás kell? Algoritmus: y:=((év-1984) Mod 10) Div 2 y=0 y=1 y=2 y=3 y=4 s:= ”zöld” s:= ”piros” s:= ”sárga” s:= ”fehér” s:= ”fekete” Kérdés: Akkor is ezt tennénk, ha 5 helyett 90 ágat kellene írnunk? A válasz előtt egy új adatszerkezet: a tömb. 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 23/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Tömbök Kapcsolódó fogalmak: Sorozat: azonos típusú elemek egymásutánja, az elemei sorszámozhatók. Tömb: véges hosszúságú sorozat, a sorozat i-edik tagjával végezhetünk műveleteket (adott a legkisebb és a legnagyobb index, vagy az elemszám). Index: sokszor 1..N, máskor 0..N–1. Tömbelem-műveletek: elemérték-hivatkozás, elemérték-módosítás (az elem indexeléssel kiválasztva). 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 24/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (algoritmusban) Programozási alapismeretek 2017.04.04. Tömbök (algoritmusban) Deklarációs példák: X:Tömb[1..N:Egész] Y:Tömb[0..4:Szöveg] Az előbbi példa Szín halmazát reprezentál-hatjuk egy konstans tömbbel: Konstans Szín:Tömb[0..4:Szöveg]= (”zöld”,”piros”,”sárga”,”fehér”,”fekete”) Hivatkozási példák: X[1]:=X[N]; Y[i]:=Szín[0] 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 25/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (algoritmusban+kódban) Programozási alapismeretek 2017.04.04. Tömbök (algoritmusban+kódban) Tömb-elemszám  indexelés 0..N indexelés 0..???  Tömb-elemszám Deklarációs példák – X:Tömb[1..N:Egész] Y:Tömb[0..4:Szöveg] Az előbbi példa Szín halmazát reprezentál-hatjuk egy konstans tömbbel: Konstans Szín:Tömb[0..4:Szöveg]= (”zöld”,”piros”,”sárga”,”fehér”,”fekete”) a C++ kódjukkal: int X[N+1] string Y[5] const string Szin[5]={"zöld","piros", "sárga","fehér","fekete"}; 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 26/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (C++ kódban – áttekintés) Programozási alapismeretek 2017.04.04. Tömbök (C++ kódban – áttekintés) Statikus tömbök: Deklaráció: Hivatkozások: const int MaxN=???;//tömb max.elemszáma típus tömb[MaxN]; //tömbdeklaráció //0..MaxN-1 közötti indexekkel … Eltérés a specifikációban és az algoritmusban szokásostól! … tömb[ind] … //tömbérték-hivatkozás … tömb[ind]=kif;//tömbérték-módosítás … 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 27/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (C++ kódban – áttekintés) Programozási alapismeretek 2017.04.04. Tömbök (C++ kódban – áttekintés) Statikus tömb konstansok: Deklaráció: vagy const int N=???;//tömb elemszáma const típus tömb[N]={t1,t2,…,tN}; //konstans tömb deklarációja, //0..N-1 közötti indexekkel const típus tömb[]={t1,t2,…,tN}; //konstans tömb deklarációja const int N=sizeof tömb/sizeof(típus); //tömb elemszáma //indexek: 0..N-1 közötti Figyeljünk a sizeof szintaxisára: más adatra, és más típusra! 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 28/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (C++ kódban – áttekintés) Programozási alapismeretek 2017.04.04. Tömbök (C++ kódban – áttekintés) Dinamikus tömbök: Deklaráció: Létrehozás: Hivatkozások (nincs változás): int N; //tömb aktuális elemszám … N=???;//N meghatározása, pl. beolvasása típus tömb[N];//tömbhelyfoglalás N db //típus típusú elem számára … tömb[ind] … //tömbérték-hivatkozás … tömb[ind]=kif;//tömbérték-módosítás … 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 29/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (C++ kódban – áttekintés) Programozási alapismeretek 2017.04.04. Tömbök (C++ kódban – áttekintés) Tömb beolvasása (ellenőrzéssel): Algoritmikusan: Be: N [HelyesN(N))] bool hiba; //van-e hiba? … do{ cout << "Elemszám:"; cin >> N; hiba=HelyesN(N); if (hiba) { cout << "hibaüzet" << endl; } }while (hiba); A HelyesN-be beleér-tem a szintaktikus és szemantikus ellenőr-zést is. L. még korábban! 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 30/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Tömbök (C++ kódban – áttekintés) Programozási alapismeretek 2017.04.04. Tömbök (C++ kódban – áttekintés) Tömb beolvasása (ellenőrzéssel): Térjünk vissza a kérdésre… Algoritmikusan: Be: v(1..N) [Helyes(v(1..N))] bool hiba; //van-e hiba? … do{ cout << "Elemszám:"; cin >> N; hiba=!HelyesN(N); if (hiba) { cout << "hibaüzet" << endl; } }while (hiba); for (int i=0;i<N;++i) { do{ cout << i+1 << ".:"; cin >> v[i]; hiba=!Helyes(v[i]); if (hiba) { cout << "hibaüzenet" << endl; }; }while (hiba); } A Helyes-be beleértem a szintaktikus és szemantikus ellenőr-zést is. L. még korábban! 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 31/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Szlávi-Zsakó: Programozási alapismeretek 3. 2017.04.04. Elágazás helyett tömb Specifikáció: Bemenet: év:Egész Kimenet: s:Szín Szín=(”zöld”,”piros”,”sárga”, ”fehér”,”fekete”)  Szöveg Konstans Színek:Tömb[0..4:Szín]= (”zöld”,”piros”,”sárga”,”fehér”,”fekete”) Előfeltétel: 1984≤év és év≤2043 Utófeltétel: s=Színek[((év-1984) Mod 10) Div 2] 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 32/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás 32

Programozási alapismeretek 2017.04.04. Elágazás helyett tömb Algoritmus: y:=((év-1984) Mod 10) Div 2 s:=Színek[y] 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 33/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömbök alkalmazása Programozási alapismeretek 2017.04.04. Konstans tömbök alkalmazása Feladat: Írj programot, amely egy 1 és 99 közötti számot betűkkel ír ki! Specifikáció: Bemenet: N:Egész Konstans egyes:Tömb[0..9:Szöveg]= (””, ”egy”,…,”kilenc”) Konstans tizes: Tömb[0..9:Szöveg]= (””, ”tizen”,…,”kilencven”) Kimenet: S:Szöveg Előfeltétel: 1N99 Leglogikusabb helyre téve. Az algoritmus szempontjából bemenet… 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 34/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömbök alkalmazása Programozási alapismeretek 2017.04.04. Konstans tömbök alkalmazása Utófeltétel: N=10  S=”tíz” és N=20  S=”húsz” és N{10,20}  S=tizes[N Div 10]+ egyes[N Mod 10] Algoritmus: N=10 N=20 N{10,20} S:=”tíz” S:=”húsz” S:=tizes[N Div 10]+ egyes[N Mod 10] A szövegek közötti + művelet hamarosan szóba kerül. 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 35/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömbök alkalmazása Programozási alapismeretek 2017.04.04. Konstans tömbök alkalmazása Feladat: Írj programot, amely egy hónapnévhez a sorszámát rendeli! Specifikáció: Bemenet: H:Szöveg Konstans HóNév:Tömb[1..12:Szöveg]= (”január”,…,”december”) Kimenet: S:Egész Előfeltétel: HHóNév Utófeltétel: 1S12 és HóNév[S]=H 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 36/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömbök alkalmazása Programozási alapismeretek 2017.04.04. Konstans tömbök alkalmazása Algoritmus: Kérdés: mi lenne, ha az ef. nem teljesülne? Futási hiba? Végtelen ciklus? i:=1 HóNév[i]H i:=i+1 S:=i 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 37/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömb – mit tárolunk? Programozási alapismeretek 2017.04.04. Konstans tömb – mit tárolunk? Feladat: Egy nap a nem szökőév hányadik napja? Specifikáció1: Bemenet: H,N:Egész Konstans hó:Tömb[1..12:Egész]= (31,28,31,…,31) Kimenet: S:Egész Előfeltétel: 1≤H≤12 és 1≤N≤hó[H] Utófeltétel: 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 38/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömb – mit tárolunk? Programozási alapismeretek 2017.04.04. Konstans tömb – mit tárolunk? Algoritmus: Megjegyzés: Szökőév esetén H≥3 esetén S-et 1-gyel meg kellene növelni! (És az ef. is módosul.) S:=N i=1..H–1 S:=S+hó[i] 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 39/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Konstans tömb – mit tárolunk? Programozási alapismeretek 2017.04.04. Konstans tömb – mit tárolunk? Egy másik megoldás: Tároljuk minden hónapra, hogy az előző hónapokban összesen hány nap van! Specifikáció2: Bemenet: … Konstans hó:Tömb[1..12:Egész]= (0,31,59,90,…,334) Utófeltétel: S=N+hó[H] Kérdés: Ez jobb megoldás? Mi lesz az előfel-tétellel? 2017.04.04. 2017.04.04. Szlávi-Zsakó: Programozási alapismeretek 3. 40/41 Szlávi-Zsakó: Programozási alapismeretek 3. előadás

Programozási alapismeretek 2017.04.04. Programozási alapismeretek 3. előadás vége Szlávi-Zsakó: Programozási alapismeretek 3. előadás