1 / 55

Programozási alapismeretek 2. előadás

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.

berke
Download Presentation

Programozási alapismeretek 2. előadás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 Szlávi - Zsakó: Programozási alapismeretek 2.

  3. 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. Szlávi - Zsakó: Programozási alapismeretek 2.

  4. 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. 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. 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ó. 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.) 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á. 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. 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: • konstrukciós, • szelekciós, illetve • speciális függvények. 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). 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. 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. Szlávi - Zsakó: Programozási alapismeretek 2.

  13. A típus A függvény egy típushoz nem pedig valamely adat-hoz tartozik. • 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. Szlávi - Zsakó: Programozási alapismeretek 2.

  14. Elemi típusok Példaként: 2-bájtos ábrázolást feltételezve. 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 kiíráson és értékadáson túliakkal foglalkozunk csak. 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) 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: 0B = Hamis, –1B = Igaz (esetleg: 1B = Igaz)… ahol xB=x érték „bináris egészként” ábrázolva Szlávi - Zsakó: Programozási alapismeretek 2.

  17. 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: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!) Szlávi - Zsakó: Programozási alapismeretek 2.

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

  19. Az 1. a sablonba (a template-be) fixenbe-építhető. a szerző adatai (pl.): Kódolás(adminisztráció) Ezek a programomnak „csak” a megjegyzései lesznek. A fordító számára érdektelen információk. //Gipsz Jakab //GIJKAFT.ELTE //gija@elte.hu … #include <iostream> … Szlávi - Zsakó: Programozási alapismeretek 2.

  20. A továbbiak elkezdhetők (pl.): Kódolás(adminisztráció) Ezek a programomnak „csak” a megjegyzései lesznek. A fordító számára érdektelen információk. //Gipsz Jakab //GIJKAFT.ELTE //gija@elte.hu // //Feladat: // … 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 <iostream> … A „teendők” („TO-DO”-k) elemei bárhova elhelyezhetők. Szintaxisa: //TODO a teendő szövege Szlávi - Zsakó: Programozási alapismeretek 2.

  21. A sablon mentése: Kódolás(adminisztráció) 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. 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. 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ész float – valósdouble – valós char – karakter string – szöveg bool – logikai Deklaráció:típus adatazonosító,… 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és1&&kifejezés2/*és*/ kifejezés1||kifejezés2/*vagy*/ Kódolás(C++alapok) megjegyzés1 megjegyzés2 Figyelem! Nem: << 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. a C és leszármazottai, így a C++ is.) 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ékcout <<…<< '\n';//konzol…+sorvégalternatív megoldás:cout <<…<< endl;//konzol…+sorvég Kódolás(C++alapok) Ezek leírása található a iostream fájlban. „Olvasd be” operátor Bementi adatfolyam „Tedd bele” operátor Kimenti adatfolyam Szlávi - Zsakó: Programozási alapismeretek 2.

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

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

  30. Hibakeresés(C++alapok) Szlávi - Zsakó: Programozási alapismeretek 2. Code::Blocks szerkezet és szintaktika…

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

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

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

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

  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”. Írjunk programot, amely megadja egy ember vércso-portját a génpárja ismeretében! 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: N I 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,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! 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” Szlávi - Zsakó: Programozási alapismeretek 2.

  39. Feladatok elágazásra: vércsoport - 2 Algoritmus1: Kétirányú elágazások egymásba ágyazásával. I N I N I N Szlávi - Zsakó: Programozási alapismeretek 2.

  40. Feladatok elágazásra: vércsoport - 2 Algoritmus2: Sokirányú elágazással. Szlávi - Zsakó: Programozási alapismeretek 2.

  41. Feladatok elágazásra: vércsoport - 2 Algoritmus3: Segédváltozók bevezetésével. I N I N N I Szlávi - Zsakó: Programozási alapismeretek 2.

  42. Kódolás(C++) Kód: kétirányú sokirányú elágazás (általános) if (Felt){ UtI}else{ UtH} if (Felt1){ Ut1}else if (…) { …}else if (FeltN) { UtN}else { Ut} elhagyható elhagyható Kódolási stílus-változatok(/) Kódolási stílus-változatok(ANSI/K&R) Szlávi - Zsakó: Programozási alapismeretek 2.

  43. Kódolás(C++) Kód: kétirányú sokirányú elágazás (speciális) if (Felt){ UtI}else { UtH} switch (kif){ case érték1: Ut1; break; case … : … ; break; case értékN: UtN; break; default : Ut; } elhagyható elhagyható Kódolási stílus-változatok(K&R/ANSI) Kódolási stílus-változatok(K&R/ANSI) Szlávi - Zsakó: Programozási alapismeretek 2.

  44. „Stílusbeállítás” Code::Blocks-ban Kódolás(C++) Szlávi - Zsakó: Programozási alapismeretek 2.

  45. „Stílusbeállítás érvényesítése” Code::Blocks-ban Kódolás(C++) Szlávi - Zsakó: Programozási alapismeretek 2.

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

  47. Kódolás(C++) Kód1: Kód jegyzet-ként Szlávi - Zsakó: Programozási alapismeretek 2.

  48. Kódolás(C++) Kód3: Szlávi - Zsakó: Programozási alapismeretek 2.

  49. Kódolás(C++) Kód3: Kód jegyzet-ként Szlávi - Zsakó: Programozási alapismeretek 2.

  50. 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 << "kérdés:"; cin >> x; if (!Helyes(x)) { cout << "hibaüzenet" << endl; }; }while (!Helyes(x)); Szlávi - Zsakó: Programozási alapismeretek 2.

More Related