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

Programozási alapismeretek 2. előadás

  • Upload
    berke

  • View
    60

  • Download
    9

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/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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/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

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

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/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ó)

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/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//[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/55/5523.04.24.23.04.24.

A továbbiak elkezdhetők (pl.)://Gipsz Jakab//Gipsz Jakab//GIJKAFT.ELTE//GIJKAFT.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/55/5523.04.24.23.04.24.

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

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

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

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/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: <<<<

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

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

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

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/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

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/55/5523.04.24.23.04.24.

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/55/5523.04.24.23.04.24.

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/55/5523.04.24.23.04.24.

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/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

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

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

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/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

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

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/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”

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/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

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/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”

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/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

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

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

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

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

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

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

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

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!

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

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

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

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:

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

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

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

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

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

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

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

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

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

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

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

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:

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

Programozási alapismeretek

2. előadás vége