53
Programozási alapismeretek 2. előadás

Programozási alapismeretek 2. előadás

  • Upload
    adolfo

  • View
    29

  • Download
    2

Embed Size (px)

DESCRIPTION

Programozási alapismeretek 2. előadás. Adatokkal kapcsolatos fogalmak A típus – általában Elemi típusok – egész, valós, logikai, karakter Kódolás – adminisztráció Kódolás – C++ alapok Hibakeresés – C++ alapok Elágazások – C++. Tartalom. Adatokkal kapcsolatos fogalmak. - PowerPoint PPT Presentation

Citation preview

Page 1: Programozási alapismeretek  2. előadás

Programozási alapismeretek

2. előadás

Page 2: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

22/54/5423.04.21.23.04.21.

Adatokkal kapcsolatos fogalmak

A típus – általában

Elemi típusok – egész, valós, logikai, karakter

Kódolás – adminisztráció

Kódolás – C++ alapok Hibakeresés – C++ alapok Elágazások – C++

Tartalom

Page 3: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

33/54/5423.04.21.23.04.21.

Adatokkal kapcsolatos fogalmak

Konstansaz 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.

Page 4: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

44/54/5423.04.21.23.04.21.

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 arzenálját.

Page 5: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

55/54/5423.04.21.23.04.21.

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.

Page 6: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

66/54/5423.04.21.23.04.21.

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ó.

Page 7: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

77/54/5423.04.21.23.04.21.

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.)

Page 8: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

88/54/5423.04.21.23.04.21.

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á.

Page 9: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

99/54/5423.04.21.23.04.21.

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.

Page 10: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1010/54/5423.04.21.23.04.21.

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.

Page 11: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1111/54/5423.04.21.23.04.21.

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).

Page 12: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1212/54/5423.04.21.23.04.21.

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.

Page 13: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1313/54/5423.04.21.23.04.21.

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.

Page 14: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1414/54/5423.04.21.23.04.21.

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.

2-bájtos ábrázolást 2-bájtos ábrázolást feltételezve.feltételezve.

Page 15: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1515/54/5423.04.21.23.04.21.

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)

Page 16: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1616/54/5423.04.21.23.04.21.

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)

Page 17: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1717/54/5423.04.21.23.04.21.

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!)

Page 18: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1818/54/5423.04.21.23.04.21.

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ó algoritmus-

magyarázatokat;5.a fejlesztés még hátralévő

teendőit.

Kódolás(adminisztráció)

Page 19: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

1919/54/5423.04.21.23.04.21.

Az 1. a sablonba (a template-be) fixen be-építhető.

1. a szerző adatai (pl.)://Szlávi Péter//Szlávi Péter//SZPKAFT.ELTE//SZPKAFT.ELTE//[email protected]//[email protected]……

#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.

Page 20: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2020/54/5423.04.21.23.04.21.

A továbbiak elkezdhetők (pl.)://Szlávi Péter//Szlávi Péter//SZPKAFT.ELTE//SZPKAFT.ELTE//[email protected]//[email protected]//////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

Page 21: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2121/54/5423.04.21.23.04.21.

A sablon mentése:

Kódolás(adminisztráció)

Page 22: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2222/54/5423.04.21.23.04.21.

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.

Page 23: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2323/54/5423.04.21.23.04.21.

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.

Page 24: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2424/54/5423.04.21.23.04.21.

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ó,…

Page 25: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2525/54/5423.04.21.23.04.21.

É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éss

megjegyzésmegjegyzés

Kódolás (C++ alapok)

Figyelem! Nem: Figyelem! Nem: <<<<

Page 26: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2626/54/5423.04.21.23.04.21.

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++)

Page 27: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2727/54/5423.04.21.23.04.21.

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.

Page 28: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2828/54/5423.04.21.23.04.21.

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)

Page 29: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

2929/54/5423.04.21.23.04.21.

Hibakeresés – hibák

Fordítás során kiírt hibáko 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

Page 30: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3030/54/5423.04.21.23.04.21.

Hibakeresés (C++ alapok)

Code::Blocks szerkezet és szintaktika…

Page 31: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3131/54/5423.04.21.23.04.21.

Hibakeresés (C++ alapok)

A szintaktikus hiba javítása után…

Page 32: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3232/54/5423.04.21.23.04.21.

Hibakeresés (C++ alapok)

A futás után… warning: character constant too long for its type

Page 33: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3333/54/5423.04.21.23.04.21.

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

Page 34: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3434/54/5423.04.21.23.04.21.

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.

Page 35: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3535/54/5423.04.21.23.04.21.

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”.Írjon programot, amely megadja egy ember vércso-portját a génpárja ismeretében!

Page 36: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3636/54/5423.04.21.23.04.21.

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

Page 37: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3737/54/5423.04.21.23.04.21.

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}; B={bb,b0}; AB={ab}; 0={00}.Írjon programot, amely megadja egy ember vércso-portját a génpárja ismeretében!

Page 38: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3838/54/5423.04.21.23.04.21.

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”

Page 39: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

3939/54/5423.04.21.23.04.21.

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

Page 40: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4040/54/5423.04.21.23.04.21.

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”

Page 41: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4141/54/5423.04.21.23.04.21.

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

Page 42: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4242/54/5423.04.21.23.04.21.

Kód: kétirányú többirá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++)

Page 43: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4343/54/5423.04.21.23.04.21.

Kód: kétirányú többirá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++)

Page 44: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4545/54/5423.04.21.23.04.21.

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!

Page 45: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4646/54/5423.04.21.23.04.21.

Kódolás (C++)

Kód1:

Kód Kód jegyzet-jegyzet-

kéntként

Kód Kód jegyzet-jegyzet-

kéntként

Page 46: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4747/54/5423.04.21.23.04.21.

Kódolás (C++)

Kód3:

Page 47: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4848/54/5423.04.21.23.04.21.

Kódolás (C++)

Kód3:

Kód Kód jegyzet-jegyzet-

kéntként

Kód Kód jegyzet-jegyzet-

kéntként

Page 48: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

4949/54/5423.04.21.23.04.21.

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))));;

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))));;

Page 49: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

5050/54/5423.04.21.23.04.21.

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); ); }}

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

Page 50: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

5151/54/5423.04.21.23.04.21.

bool hiba; string tmp; …

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).

Page 51: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

5252/54/5423.04.21.23.04.21.

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{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))));;

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++)

Page 52: Programozási alapismeretek  2. előadás

ELTEELTE

Szlávi - Szlávi - Zsakó: Zsakó: Programozási Programozási alapismeretek 2.alapismeretek 2.

5353/54/5423.04.21.23.04.21.

Pl. ha fájlból történik a Pl. ha 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););};};

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:

Page 53: Programozási alapismeretek  2. előadás

Programozási alapismeretek

2. előadás vége