Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/542014. 07. 14.2014. 07. 14.2014. 07. 14.  Adatokkal kapcsolatos.

Slides:



Advertisements
Hasonló előadás
Hatékonyságvizsgálat, dokumentálás
Advertisements

Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Algoritmus és programozás
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Műveletek logaritmussal
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)
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
Euklidészi gyűrűk Definíció.
JavaScript.
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 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
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 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.
Turbo Pascal Változók.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Halmazok, relációk, függvények
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/
Programozás Az adatokról C# -ban.
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”
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Programozási nyelvek Páll Boglárka.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Operátorok Értékadások
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Objektum orientált programozás
Az informatika logikai alapjai
INFOÉRA 2006 Nagypontosságú aritmetika I.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
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.
Free pascal feladatok
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.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
Geometriai feladatok programozása Geometriai programozás Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
INFOÉRA 2006 Nagypontosságú aritmetika III.
Programozási nyelvek csoportosítása.
Informatikai gyakorlatok 11. évfolyam
a programegységek között
Kifejezések C#-ban.
Programozási nyelvek típusossága.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozási alapismeretek 2. előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmus készítés.
Előadás másolata:

Programozási alapismeretek 2. előadás

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos fogalmak Adatokkal kapcsolatos fogalmak  A típus – általában A típus  Elemi típusok – egész, valós, logikai, karakter Elemi típusok  Kódolás – adminisztráció Kódolás  Kódolás – C++ alapok Kódolás  Hibakeresés – C++ alapok Hibakeresés  Elágazások – C++ Elágazások Tartalom

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.3/ 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 ugyanab- ban az „állapotban” marad.  Változó az ilyen adatféleségnek lényegéhez tartozik a „változékonyság”, más szóval: vonatkozhatnak rá olyan műveletek is, ame- lyek új értékkel látják el. Tudományosabban fogalmazva nem egyelemű az állapothalmaza.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.4/ Adatokkal kapcsolatos fogalmak  Értékadás az az utasítás, ami révén a pillanatnyi állapot- ból egy másikba (a meghatározottba) kerül át a változó. (Nyilvánvaló, hogy konstans adat- ra nem vonatkozhat értékadás, az egy, kez- dőértéket meghatározón kívül.)  Típus olyan „megállapodás” (absztrakt kategória), amely adatok egy lehetséges körét jelöli ki az által, hogy rögzíti azok állapothalmazát és az elvégezhető műveletek arzenálját.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.5/ Az adatjellemzők összefoglalása Azonosító Az a jelsorozat, amellyel hivatkozhatunk a tartal- mára, amely által módosíthatjuk tartalmát. Kezdőérték A születéskor hozzárendelt érték. Konstansoknál nyilvánvaló; változóknál dek- larációban kap-e, adható-e, vagy futáskor szerez értéket magának.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.6/ Az adatjellemzők összefoglalása Hozzáférési jog Adatokat módosítani, illetve értéküket lekérdez- ni, használni lehet; egy adat hozzáférés szem- pontjából háromféle lehet:  lekérdezhető és módosítható;  lekérdezhető és nem módosítható;  nem lekérdezhető, de módosítható.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.7/ Az adatjellemzők összefoglalása Hatáskör A programszöveg azon tartománya, amelyben az adathoz hozzáférés megengedett. Élettartam A futási időnek az az intervalluma, amelyben az adat azonosítója végig ugyanazt az objektumot jelö- li. Megjegyzés: a fenti kissé talányos megfogalma- zás az alprogramok bevezetésével világossá válik. (Lokális vs. globális adatok.)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.8/ A típus Értéktípus (röviden: típus) Az adatoknak az a tulajdonsága, hogy értékei mely halmazból származnak és tevékenysé - geknek (függvények, operátorok, utasítások) mely „készlete, amely létrehozza, felépíti, lerom - bolja és részekre bontja” alkalmazható rá.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.9/ A típus Összetettség (strukturáltság) szempontjá- ból beszélhetünk  strukturálatlan (vagy skalár, elemi) típusról, ha (az adott szinten) szerkezetet nem tulaj- donítunk neki; vagy  strukturált (más szóval: összetett) típusról, ha (elemibb) összetevőkre bontjuk.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.10/ A típus Műveletek, operátorok  Értékadás = azonos típusúak közötti adat- mozgatás, másolatkészítés.  Típusátviteli függvények = valamely típus érté- keit egy másik típus értékeire képezik le. A típusátviteli függvényeknek nevezetes faj - tái vannak, ezek: o konstrukciós, o szelekciós, illetve o speciális (de nélkülözhetetlen) egyéb függvé- nyek.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.11/ A típus  Beolvasás = adott típusú érték bejuttatása a program számára (karakteres formáról belső ábrázolásra alakítása).  Kiírás = adott típusú érték kijuttatása a fel- használó számára (belső ábrázolásról karak- teres formára váltása).

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.12/ A típus  Azonosság = két, azonos típusú adat érték- egyezőségét vizsgáló logikai értékű operátor.  Rendezések = rendezett típus esetén, két, azo- nos típusú adat sorrendjét vizsgáló logikai értékű operátorok.  Számosság - függvény = megadja (ha megadha - tó), hogy mennyi az adott típus „számossá - ga”, azaz az értékhalmazát alkotó konstan - sok száma. A függvény egy típushoz nem pedig valamely adat- hoz tartozik.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.13/ A típus  Min/Max-függvény = az értékhalmaz legkisebb, illetve legnagyobb eleme (feltéve, hogy ren - dezett típusról van szó.  Transzformációs függvények = az adott típuson (esetleg direktszorzatán) értelmezett, az adott típusra képező függvények, operátorok. Ezek –értelemszerűen– típustól függően mások és mások lehetnek. A függvény egy típushoz nem pedig valamely adat- hoz tartozik.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.14/ Elemi típusok Egész típus  Értékhalmaz: – (Min'Egész..Max'Egész)  Műveletek: +, –, *, Div (egészosztás), ^ (pozitív egészkitevős hatványozás), Mod (osztási maradék), – (unáris mínusz)  Relációk: =,  Ábrázolás: kettes komplemens kódú  Változatai: méret és előjel szerint sokfélék A beolvasáson, a kiíráson és értékadáson túliakkal foglalkozunk csak. 2-bájtos ábrázolást feltételezve.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.15/ Elemi típusok Valós típus  Értékhalmaz: ????..???? (Min'Valós..Max'Valós nem definiáltak, vagy imple - mentáció­függőek)  Műveletek: +, –, *, /, ^, – (unáris mínusz)  Relációk: =,  Ábrázolás: lebegőpontos ábrázolás (pontosabb lenne, ha e típust racionálisnak neveznénk, mert csak racionális számot képes ábrázolni)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.16/ Elemi típusok Logikai típus  Értékhalmaz: Hamis..Igaz (Min'Logikai..Max'Logikai: Hamis, illetve Igaz)  Műveletek: nem, és, vagy (a szokásos logi- kai műveletek)  Relációk: =,  Ábrázolás: 0 = Hamis, –1 = Igaz (esetleg: 1 = Igaz)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.17/ Elemi típusok Karakter típus  Értékhalmaz: kódú jelek – ASCII (Min'Karakter..Max'Karakter: a 0, illetve a 255 kódú karakter)  Műveletek: karakter-specifikus nincs (esetleg a Kód:Karakter  Egész függvény, és inverze a Karakter:Egész  Karakter függvény, amelyek a belső ábrázolással hozza kapcsolatba)  Relációk: =, (a belső ábrázolásuk alapján – nem ABC-sorrend!)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.18/  Célszerűen a forrás(ok) tartalmazzák 1. a szerző adatait, 2. a feladat szövegét és 3. a feladat specifikációját; valamint 4. használható algoritmus-magyarázatokat; 5. a fejlesztés még hátralévő teendőit. Kódolás (adminisztráció)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.19/ Az 1. a sablonba ( a template-be ) fixen be - építhető. 1. a szerző adatai (pl.): //Szlávi Péter #include #include … Kódolás (adminisztráció) Ezek a programomnak „csak” a megjegyzései lesznek. A fordító számára érdektelen információk.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.20/ A továbbiak elkezdhetők (pl.): //Szlávi Péter // … itt a szöveg … ////Specifikáció: //… itt a specifikáció … ////Teendők: //TODO a feladatszöveg kitöltése //TODO a specifikáció megalkotása //TODO … #include #include … Kódolás (adminisztráció) Ezek a programomnak „csak” a megjegyzései lesznek. A fordító számára érdektelen információk. A „teendők” („TO-DO”-k) elemei bárhova elhelyezhetők. Szintaxisa: //TODO a teendő szövege

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.21/  A sablon mentése: Kódolás (adminisztráció)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.22/  A sablon alapján egy új projekt létrehozása: … és a helye: Kódolás (adminisztráció) Ebből következik, h. csak az általam „mindig” használt gépen használható szolgáltatás.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.23/  A tennivalók „kikeresése”: Kódolás (adminisztráció) A kérdéses teendőre kattintva a kurzor a forráskód megfelelő sorának az elejére kerül.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.24/ Kódolás (C++ alapok)  Programszerkezet – main függvény int main() { lokális adatdeklarációk … a függvénytörzs végrehajtható utasításai … return fvÉrt é k }  Alaptípusok: int – egészfloat – valós double – valóschar – karakter string – szövegbool – logikai  Deklaráció: típus adatazonosító, …

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.25/  Értékadás: változ ó = kifejezés ; //t í pusegyezés!!!  Értékazonosság ( pl. logikai kifejezésben ): kifejezés == kifejezés /* típusegyezés */  Egyéb relációk ( pl. logikai kifejezésben ): kifejezés != kifejezés /* nem azonos? */ kifejezés <= kifejezés /* kisebb-egyenlő? */ kifejezés < kifejezés /* kisebb? */ …  Logikai operátorok: kifejezés 1 && kifejezés 2 /* és */ kifejezés 1 || kifejezés 2 /* vagy */ megjegyzés megjegyzés Kódolás (C++ alapok) Figyelem! Nem: <<

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.26/ Kódolás (beolvasás és kiírás kérdése)  Beolvasás és kiírás ( valamint fájlkezelés ) szempontjából a nyelvek kétfélék le- hetnek:  A nyelv (eleve) tartalmaz beolvasó és kiíró utasításokat. (Pl. Pascal.)  A nyelv szabványos eljáráskönyvtár- ban tartalmaz beolvasó és kiíró eljá- rásokat (függvényeket). (Pl. C és C++)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.27/  Konzol input: cin >> változ ó ; //változó  konzol  Konzol output: cout << kifejezés ; //konzol  kifejezés-érték cout << … << '\n'; //konzol  … +sorvég alternatív megoldás: cout << … << endl; //konzol  … +sorvég Bementi adatfolyam Kimenti adatfolyam „Olvasd be” operátor „Tedd bele” operátor Kódolás (C++ alapok) Ezek leírása található a iostream fájlban.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.28/  String (=karakterlánc) konstans: " karakterlánc "  Karakter konstans: ' karakter '  Könyvtárfájlok (header fájlok): o #include – a rendszeré o #include "…" – saját  Névtér o using namespace … Kódolás (C++ alapok)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.29/ Hibakeresés – hibák  Fordítás során kiírt hibák o Hibaüzenet értelmezése o A hiba okának kiderítése o A hiba keletkezési helyének keresése o A hiba kijavítása  Futtatás során fellépő hibák javítása o Tesztelés o A hiba keletkezési helyének keresése o A hiba kijavítása

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.30/ Hibakeresés (C++ alapok) Code::Blocks szerkezet és szintaktika…

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.31/ Hibakeresés (C++ alapok) A szintaktikus hiba javítása után…

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.32/ Hibakeresés (C++ alapok) A futás után… warning: character constant too long for its type

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.33/ Hibakeresés (C++ alapok) Nyomkövetés debugger nélkül – nyomkö- vetést támogató saját kiírások: Csak akkor fordul be a kódba, ha DEBUG definiált Feltételes fordítás

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.34/ Hibakeresés (C++ alapok) Nyomkövetés debugger nélkül – nyomkö- vetést támogató saját kiírások (folytatás) : Most a DEBUG nem definiált. Feltételes fordítás Most a DEBUG nem definiált.

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.35/ Feladatok elágazásra: vércsoport - 1 Feladat: Egy ember vércsoportját (Rh negatív vagy pozitív) egy génpár határozza meg. Mindkét gén lehet „+” vagy „–” típusú. A „++” és a „+–” típusúak az „Rh pozitívok”, a „– –” típusúak pedig „Rh nega- tívok”. Írj programot, amely megadja egy ember vércsoportját a génpárja ismeretében!

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.36/ Feladatok elágazásra: vércsoport - 1 Specifikáció:  Bemenet: x,y:Karakter  Kimenet: v:Szöveg  Előfeltétel: x,y  {”+”, ”–”}  Utófeltétel: (x=”+” vagy y=”+”) és v=”Rh+” vagy (x=”–” és y=”–”) és v=”Rh–” Algoritmus: x=”+” vagy y=”+” v:=”Rh+”v:=”Rh–” I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.37/ Feladatok elágazásra: vércsoport - 2 Feladat: Egy ember vércsoportját (A, B, AB vagy 0) egy gén- pár határozza meg. Mindkét gén lehet a, b vagy 0 típusú. A vércsoport meghatározása: A={aa, a0}; B={bb,b0}; AB={ab}; 0={00}. Írj programot, amely megadja egy ember vércsoportját a génpárja ismeretében!

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.38/ Feladatok elágazásra: vércsoport - 2 Specifikáció:  Bemenet: x,y:Karakter  Kimenet: v:Szöveg  Előfeltétel: x,y  {”a”, ”b”, ”0”}  Utófeltétel: (x=”a” és y≠”b” vagy x≠”b” és y=”a”) és v=”A” vagy (x=”b” és y≠”a” vagy x≠”a” és y=”b”) és v=”B” vagy (x=”a” és y=”b” vagy x=”b” és y=”a”) és v=”AB” vagy x=”0” és y=”0” és v=”0”

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.39/ Algoritmus 1 : Kétirányú elágazások egymásba ágyazásával. Feladatok elágazásra: vércsoport - 2 x=”a” és y≠”b” vagy x≠”b” és y=”a” v:=”A”x=”b” és y≠”a” vagy x≠”a” és y=”b” v:=”B”x=”a” és y=”b” vagy x=”b” és y=”a” v:=”AB”v:=”0” I N I N I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.40/ Algoritmus 2 : Sokirányú elágazással. Feladatok elágazásra: vércsoport - 2 x=”a” és y≠”b” vagy x≠”b” és y=”a” x=”b” és y≠”a” vagy x≠”a” és y=”b” x=”a” és y=”b” vagy x=”b” és y=”a” x=”0” és y=”0” v:=”A”v:=”B”v:=”AB”v:=”0”

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.41/ Algoritmus 3 : Segédváltozók bevezetésével. Feladatok elágazásra: vércsoport - 2 vana:= x=”a” vagy y=”a” vanb:= x=”b” vagy y=”b” vana vanb v:=”AB”v:=”A”v:=”B”v:=”0” I N I N I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.42/ Kód: kétirányútöbbirányú elágazás (általános) if (Felt) { Ut I } else { Ut H } if (Felt 1 ) { Ut 1 } else if (…) { … } else if (Felt N ) { Ut N } else { Ut } elhagyható elhagyható Kódolási stílus- változatok (/) Kódolási stílus- változatok (ANSI/K&R) Kódolási stílus- változatok (ANSI/K&R) Kódolás (C++)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.43/ Kód: kétirányútöbbirányú elágazás (speciális) if (Felt) { Ut I } else { Ut H } elhagyható switch (kif) { case érték 1 : Ut 1 ; break; case … : … ; break; case érték N : Ut N ; break; default : Ut ; } elhagyható Kódolási stílus- változatok (K&R/ANSI) Kódolási stílus- változatok (K&R/ANSI) Kódolási stílus- változatok (K&R/ANSI) Kódolási stílus- változatok (K&R/ANSI) Kódolás (C++)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.44/  „Stílusbeállítás” Code::Blocks-ban Kódolás (C++)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.45/ Kód 1 : Ciklus (!), amelyből a kilépés az Ef. teljesülésekor. Ciklus (!), amelyből a kilépés az Ef. teljesülésekor. L. még korábban is!korábban Kódolás (C++) Figyeljünk föl egy tipikus kódolási hibára: a bemenet önhatalmú nagybetűssé tételére!

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.46/ Kódolás (C++) Kód 1 : Kód jegyzet- ként

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.47/ Kódolás (C++) Kód 3 :

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.48/ Kódolás (C++) Kód 3 : Kód jegyzet- ként

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.49/ Kódolás (C++) A konzol input kódolása az előfelté- tel alapján (skalár változóba) : Előfeltétel: Helyes(x) ahol a Helyes(x) egy x-től függő logikai kifeje- zést rövidít most do{ cout > x; cout > x; if (!Helyes(x)) { if (!Helyes(x)) { cout << "hibaüzenet" << endl; cout << "hibaüzenet" << endl; }; }; }while (!Helyes(x)); }while (!Helyes(x)); do{ cout > x; cout > x; if (!Helyes(x)) { if (!Helyes(x)) { cout << "hibaüzenet" << endl; cout << "hibaüzenet" << endl; }; }; }while (!Helyes(x)); }while (!Helyes(x));

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.50/ Kódolás (C++) Ugyanez egyszerűbben: cout << "kérdés"; cin >> x; if (!Helyes(x)) { cout << "\nhibaüzenet" << endl; exit(hibakód); } cout << "kérdés"; cin >> x; if (!Helyes(x)) { cout << "\nhibaüzenet" << endl; exit(hibakód); } cout << "kérdés"; cin >> x; if (!Helyes(x)) { cout << "\nhibaüzenet" << endl; exit(hibakód); } cout << "kérdés"; cin >> x; if (!Helyes(x)) { cout << "\nhibaüzenet" << endl; exit(hibakód); } Jó szokás a hibátlansághoz rendelni a 0 megállási kódot, s ettől eltérőt a különleges hibaesetekhez. '\n' = sorvégjel

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.51/ bool hiba; string tmp; … bool hiba; string tmp; … A beolvasáshoz szükséges lokális változók. Kódolás (C++) Szintaktikus (és szemantikus) ellenőrzéssel: Értelemszerűen csak bizonyos típusú változóba történő olvasásnál alkalmazható (pl. valamely szám típusúba).

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.52/ Szintaktikus (és szemantikus) ellenőrzéssel: Értelemszerűen csak bizonyos típusú változóba történő olvasásnál alkalmazható (pl. valamely szám típusúba). bool hiba; string tmp; … bool hiba; string tmp; … do{ cout > x; hiba=cin.fail(); if (hiba || !Helyes(x)) { cout > x; hiba=cin.fail(); if (hiba || !Helyes(x)) { cout << "hibaüzenet" << endl; cin.clear(); getline(cin,tmp,’\n’) }; }while (hiba || !Helyes(x)); cin -nek – mint objektumnak (bemeneti folyamnak) vannak metódusai/tagfüggvényei. Pl. a fail(). Az input-puffer törlése. Kell: #include Kell: #include '\n' = sorvégjel; olvasás sorvégjelig Kódolás (C++)

ELTE Szlávi - Zsakó: Programozási alapismeretek 2.53/ Pl. ha fájlból történik a beolvasás: Olvas(fájl,x) [Helyes(x)] cout > x; if (cin.fail() || !Helyes(x)) { cout > x; if (cin.fail() || !Helyes(x)) { cout << "hibaüzenet" << endl; exit(hibakód); }; Kódolás (C++) Ugyanez egyszerűbben:

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