Post on 19-Mar-2016
description
Programozási alapismeretek
2. előadás
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
22/55/5523.04.24.23.04.24.
Adatokkal kapcsolatos fogalmak
A típus – általábanElemi típusok – egész, valós,
logikai, karakterKódolás – adminisztrációKódolás – C++ alapok Hibakeresés – C++ alapok Elágazások – C++
Tartalom
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
33/55/5523.04.24.23.04.24.
Adatokkal kapcsolatos fogalmak
Konstansaz az adat, amely a műveletvégzés során nem változtathatja 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.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
44/55/5523.04.24.23.04.24.
Adatokkal kapcsolatos fogalmak
Értékadásaz 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ípusolyan „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 készletét.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
55/55/5523.04.24.23.04.24.
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ékA 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.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
66/55/5523.04.24.23.04.24.
Az adatjellemzők összefoglalása
Hozzáférési jogAdatokat 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ó.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
77/55/5523.04.24.23.04.24.
Az adatjellemzők összefoglalása
HatáskörA programszöveg azon tartománya, amelyben az adathoz hozzáférés megengedett.
ÉlettartamA 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.)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
88/55/5523.04.24.23.04.24.
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á.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
99/55/5523.04.24.23.04.24.
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.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1010/55/5523.04.24.23.04.24.
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 függvények.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1111/55/5523.04.24.23.04.24.
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).
Megjegyzés: akár a típusátviteli függvények közé is sorolhatnánk, hiszen a karakter-soro-zat mint típus és egy másik típus között végez átalakítás.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1212/55/5523.04.24.23.04.24.
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 A függvény egy
típustípushoz nem pedig hoz nem pedig valamely adat-hoz valamely adat-hoz
tartozik.tartozik.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1313/55/5523.04.24.23.04.24.
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 A függvény egy típustípushoz nem pedig hoz nem pedig valamely adat-hoz valamely adat-hoz
tartozik.tartozik.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1414/55/5523.04.24.23.04.24.
Elemi típusok
Egész típus Értékhalmaz: –32768..+32767
(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 A beolvasáson, a kiíráson és kiíráson és
értékadáson értékadáson túliakkal túliakkal
foglalkozunk csak.foglalkozunk csak.
Példaként: 2-bájtos Példaként: 2-bájtos ábrázolást ábrázolást
feltételezve.feltételezve.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1515/55/5523.04.24.23.04.24.
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)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1616/55/5523.04.24.23.04.24.
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: 0B = Hamis, –1B = Igaz
(esetleg: 1B = Igaz)… ahol xB=x érték „bináris egészként” ábrázolva
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1717/55/5523.04.24.23.04.24.
Elemi típusok
Karakter típus Értékhalmaz: 0..255 - 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:KarakterEgész függvény, és inverze a Karakter:EgészKarakter függvény, amelyek a belső ábrázolással hozza kapcsolatba)
Relációk: =, <, , , , > (a belső ábrázolásuk alapján – nem ABC-sorrend!)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1818/55/5523.04.24.23.04.24.
Célszerűen a forrás(ok) tartalmazzák
1.a szerző adatait,2.a feladat szövegét és3.a feladat specifikációját;
valamint4.használható
algoritmusmagyarázatokat;5.a fejlesztés még hátralévő
teendőit.
Kódolás(adminisztráció)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
1919/55/5523.04.24.23.04.24.
Az 1. a sablonba (a template-be) fixen be-építhető.
1. a szerző adatai (pl.)://Gipsz Jakab//Gipsz Jakab//GIJKAFT.ELTE//GIJKAFT.ELTE//gija@elte.hu//gija@elte.hu……
#include <iostream>#include <iostream>
……
Kódolás(adminisztráció)
Ezek a Ezek a programomnak programomnak
„csak” a „csak” a megjegyzésmegjegyzései ei
lesznek. A fordító lesznek. A fordító számára számára
érdektelen érdektelen információk.információk.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2020/55/5523.04.24.23.04.24.
A továbbiak elkezdhetők (pl.)://Gipsz Jakab//Gipsz Jakab//GIJKAFT.ELTE//GIJKAFT.ELTE//gija@elte.hu//gija@elte.hu//////Feladat://Feladat:// … itt a szöveg// … itt a szöveg … …//////Specifikáció://Specifikáció://… itt a specifikáció …//… itt a specifikáció …//////Teendők://Teendők://TODO a feladatszöveg kitöltése//TODO a feladatszöveg kitöltése//TODO a specifikáció megalkotása//TODO a specifikáció megalkotása//TODO …//TODO …
#include <iostream>#include <iostream>
……
Kódolás(adminisztráció)
Ezek a Ezek a programomnak programomnak
„csak” a „csak” a megjegyzésmegjegyzései ei
lesznek. A fordító lesznek. A fordító számára számára
érdektelen érdektelen információk.információk.
A „teendők” („TO-DO”-A „teendők” („TO-DO”-k) elemei bárhova k) elemei bárhova
elhelyezhetők. elhelyezhetők. Szintaxisa:Szintaxisa:
//TODO//TODO a teendő szövege a teendő szövege
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2121/55/5523.04.24.23.04.24.
A sablon mentése:
Kódolás(adminisztráció)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2222/55/5523.04.24.23.04.24.
A sablon alapján egy új projekt létrehozása:
… és a helye:
Kódolás(adminisztráció)
Ebből következik, h. Ebből következik, h. csak az általam csak az általam
„mindig” használt „mindig” használt gépen használható gépen használható
szolgáltatás.szolgáltatás.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2323/55/5523.04.24.23.04.24.
A tennivalók „kikeresése”:
Kódolás(adminisztráció)
A kérdéses teendőre A kérdéses teendőre kattintva a kurzor a kattintva a kurzor a forráskód megfelelő forráskód megfelelő sorának az elejére sorának az elejére
kerül.kerül.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2424/55/5523.04.24.23.04.24.
Kódolás(C++ alapok)
Programszerkezet – main függvényint main(){ lokális adatdeklarációk … a függvénytörzs végrehajtható utasításai … return fvÉrték}
Alaptípusok:int – egész float – valósdouble – valós char – karakter string – szöveg bool – logikai
Deklaráció:típus adatazonosító,…
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2525/55/5523.04.24.23.04.24.
É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és1 && kifejezés2 /* és */kifejezés1 || kifejezés2 /* vagy */
megjegyzémegjegyzéss11
megjegyzésmegjegyzés22
Kódolás (C++ alapok)
Figyelem! Nem: Figyelem! Nem: <<<<
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2626/55/5523.04.24.23.04.24.
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. a C és leszármazottai, így a C++ is.)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2727/55/5523.04.24.23.04.24.
Konzol input:cin >> változó; //változókonzol
Konzol output:cout << kifejezés; //konzolkifejezés-értékcout << … << '\n'; //konzol… +sorvégalternatív megoldás:cout << … << endl; //konzol… +sorvég
Bementi Bementi adatfolyamadatfolyam
Kimenti Kimenti adatfolyamadatfolyam
„„Olvasd be” Olvasd be” operátoroperátor
„„Tedd bele” Tedd bele” operátoroperátor
Kódolás(C++ alapok)
Ezek leírása Ezek leírása található a található a iostreamiostream
fájlban.fájlban.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2828/55/5523.04.24.23.04.24.
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éro using namespace …
Kódolás (C++ alapok)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
2929/55/5523.04.24.23.04.24.
Hibakeresés – hibák
Fordítás során kiírt hibák javításao Hibaüzenet értelmezéseo A hiba okának kiderítéseo A hiba keletkezési helyének kereséseo A hiba kijavítása
Futtatás során fellépő hibák javítása
o Teszteléso A hiba keletkezési helyének kereséseo A hiba kijavítása
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3030/55/5523.04.24.23.04.24.
Hibakeresés (C++ alapok)
Code::Blocks szerkezet és szintaktika…
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3131/55/5523.04.24.23.04.24.
Hibakeresés (C++ alapok)
A szintaktikus hiba javítása után…
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3232/55/5523.04.24.23.04.24.
Hibakeresés (C++ alapok)
A futás után… warning: character constant too long for its type
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3333/55/5523.04.24.23.04.24.
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 Csak akkor fordul be a kódba, ha
DEBUG definiáltDEBUG definiált
Feltételes fordítás
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3434/55/5523.04.24.23.04.24.
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 Most a DEBUG nem
definiált.definiált.
Feltételes fordítás
Most a DEBUG nem Most a DEBUG nem definiált.definiált.
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3535/55/5523.04.24.23.04.24.
Feladatok elágazásra:
vércsoport - 1Feladat:
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”.Írjunk programot, amely megadja egy ember vércso-portját a génpárja ismeretében!
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3636/55/5523.04.24.23.04.24.
Feladatok elágazásra:
vércsoport - 1Specifiká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
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3737/55/5523.04.24.23.04.24.
Feladatok elágazásra:
vércsoport - 2Feladat:
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,0a}; B={bb,b0,0b}; AB={ab,ba}; 0={00}.Írjunk programot, amely megadja egy ember vércso-portját a génpárja ismeretében!
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3838/55/5523.04.24.23.04.24.
Feladatok elágazásra:
vércsoport - 2Specifiká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”
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
3939/55/5523.04.24.23.04.24.
Algoritmus1:
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
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4040/55/5523.04.24.23.04.24.
Algoritmus2:
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”
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4141/55/5523.04.24.23.04.24.
Algoritmus3:
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”
vanavanb vanb
v:=”AB”
v:=”A” v:=”B” v:=”0”
I N
I NIN
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4242/55/5523.04.24.23.04.24.
Kód: kétirányú sokirányú
elágazás (általános)
if (if (FeltFelt)){{ Ut UtII}}elseelse{{ Ut UtHH}}
if (if (FeltFelt11)) {{ Ut Ut11}}else if (else if (……) ) {{ … …}} else if (else if (FeltFeltNN) ) {{ Ut UtNN}}else else {{ Ut Ut}}
elhagyhatóelhagyható
elhagyhatóelhagyhatóKódolási stílus-Kódolási stílus-változatokváltozatok
(/)(/)
Kódolási stílus-Kódolási stílus-változatokváltozatok
(ANSI/K&R)(ANSI/K&R)
Kódolás(C++)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4343/55/5523.04.24.23.04.24.
Kód: kétirányú sokirányú
elágazás (speciális)
if (if (FeltFelt)) {{ Ut UtII}}else else {{ Ut UtHH}}elhagyhatóelhagyható
switch (switch (kifkif)){{ case case értékérték11: : UtUt11; ; break;break; case … case … : … : … ; break;; break; case case értékértékNN: : UtUtNN; break;; break; default default : : UtUt ;;}}
elhagyhatóelhagyható
Kódolási stílus-Kódolási stílus-változatokváltozatok
(K&R/ANSI)(K&R/ANSI)
Kódolási stílus-Kódolási stílus-változatokváltozatok
(K&R/ANSI)(K&R/ANSI)
Kódolás(C++)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4444/55/5523.04.24.23.04.24.
„Stílusbeállítás” Code::Blocks-ban
Kódolás(C++)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4545/55/5523.04.24.23.04.24.
„Stílusbeállítás érvényesítése” Code::Blocks-ban
Kódolás(C++)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4646/55/5523.04.24.23.04.24.
Kód1:
CiklusCiklus (!), (!), amelyből a amelyből a
kilépés az Ef. kilépés az Ef. teljesülésekor.teljesülésekor.
L. még korábban is!
Kódolás(C++)
Figyeljünk föl egy tipikus Figyeljünk föl egy tipikus kódolási hibára: a bemenetkódolási hibára: a bemenet
önhatalmú nagybetűssé önhatalmú nagybetűssé tételére!tételére!
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4747/55/5523.04.24.23.04.24.
Kódolás (C++)
Kód1:
Kód Kód jegyzet-jegyzet-
kéntként
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4848/55/5523.04.24.23.04.24.
Kódolás (C++)
Kód3:
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
4949/55/5523.04.24.23.04.24.
Kódolás (C++)
Kód3:
Kód Kód jegyzet-jegyzet-
kéntként
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
5050/55/5523.04.24.23.04.24.
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{do{
cout << "cout << "kérdéskérdés:"; cin >> x;:"; cin >> x; if (if (!!HelyesHelyes(x)(x))) { { cout << "cout << "hibaüzenethibaüzenet" << endl;" << endl; };}; }while (}while (!!HelyesHelyes((xx))));;
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
5151/55/5523.04.24.23.04.24.
Kódolás (C++)
Ugyanez egyszerűbben:
cout << "kérdés"; cin >> x;cout << "kérdés"; cin >> x;if (if (!!HelyesHelyes(x)(x))){{ cout << "\nhibaüzenet" << endl; cout << "\nhibaüzenet" << endl; exit( exit(hibakódhibakód); ); }}
Jó szokás a hibátlansághoz Jó szokás a hibátlansághoz rendelni a 0 megállási rendelni a 0 megállási kódot, s ettől eltérőt a kódot, s ettől eltérőt a különleges hibaesetekhezkülönleges hibaesetekhez..
'\n' = '\n' = sorvégjelsorvégjel
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
5252/55/5523.04.24.23.04.24.
bool hiba; string tmp; …
A beolvasáshoz A beolvasáshoz szükséges lokális szükséges lokális változók.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).
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
5353/55/5523.04.24.23.04.24.
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; …
do{do{ coutcout << "<< "kérdéskérdés:"; cin >> x;:"; cin >> x; hiba= hiba=cin.fail();cin.fail(); if ( if (hiba ||hiba || ! !HelyesHelyes((xx)))) { { cout << "cout << "hibaüzenethibaüzenet" << endl;" << endl; cin.clear(); getline(cincin.clear(); getline(cin,tmp,’,tmp,’\n\n’’)) }; }; }while ( }while (hiba ||hiba || ! !HelyesHelyes((xx))));;
cincin-nek – mint -nek – mint objektumnak objektumnak (bemeneti folyamnak) (bemeneti folyamnak) vannak vannak metódusai/tagfüggvénymetódusai/tagfüggvényei. Pl. a ei. Pl. a fail()fail()..
Az input-puffer Az input-puffer törlése.törlése.Kell: Kell: #include <string>#include <string> '\n' = '\n' =
sorvégjel;sorvégjel;olvasás olvasás
sorvégjeligsorvégjelig
Kódolás (C++)
ELTEELTE
Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.
5454/55/5523.04.24.23.04.24.
Például ha majd fájlból történik a Például ha majd fájlból történik a beolvasás:beolvasás:Olvas(Olvas(fájl,xfájl,x) [) [HelyesHelyes(x)(x)]]
cout << "cout << "kérdéskérdés:"; cin >> x;:"; cin >> x;if (if (cin.fail() ||cin.fail() || ! !HelyesHelyes((xx)))){{ cout << "cout << "hibaüzenethibaüzenet" << endl;" << endl; exit( exit(hibakódhibakód););};};
Kódolás (C++)
Ugyanez egyszerűbben:
Programozási alapismeretek
2. előadás vége