Programoz si alapismeretek 2 el ad s
Download
1 / 53

Programozási alapismeretek 2. előadás - PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Programozási alapismeretek 2. előadás' - hammer


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Tartalom

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.


Adatokkal kapcsolatos fogalmak
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.

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


Adatokkal kapcsolatos fogalmak1
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.

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


Az adatjellemz k sszefoglal sa
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.


Az adatjellemz k sszefoglal sa1
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.


Az adatjellemz k sszefoglal sa2
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.


A t pus
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.


A t pus1
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.


A t pus2
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 (de nélkülözhetetlen) egyéb függvé-nyek.

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


A t pus3
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).

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


A t pus4
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.


A t pus5
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.


Elemi t pusok
Elemi típusok

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.


Elemi t pusok1
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.


Elemi t pusok2
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)

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


Elemi t pusok3
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.


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ó algoritmus-magyarázatokat;

a fejlesztés még hátralévő teendőit.

Kódolás(adminisztráció)

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


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.

//Szlávi Péter

//SZPKAFT.ELTE

//[email protected]

#include <iostream>

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


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.

//Szlávi Péter

//SZPKAFT.ELTE

//[email protected]

//

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


A sablon mentése:

Kódolás(adminisztráció)

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


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.


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.


K dol s c alapok
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.


K dol s c alapok1

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

megjegyzés

Figyelem! Nem: <<

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


K dol s beolvas s s ki r s k rd se
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++)

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


K dol s c alapok2

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.


K dol s c alapok3

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.


Hibakeres s hib k
Hibakeresés – hibák

  • Fordítás során kiírt hibák

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


Hibakeres s c alapok
Hibakeresés(C++alapok)

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

Code::Blocks szerkezet és szintaktika…


Hibakeres s c alapok1
Hibakeresés(C++ alapok)

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

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


Hibakeres s c alapok2
Hibakeresés(C++ alapok)

warning: character constant too long for its type

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

A futás után…


Hibakeres s c alapok3
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:


Hibakeres s c alapok4
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):


Feladatok el gaz sra v rcsoport 1
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!

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


Feladatok el gaz sra v rcsoport 11
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.


Feladatok el gaz sra v rcsoport 2
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!

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


Feladatok el gaz sra v rcsoport 21
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.


Feladatok el gaz sra v rcsoport 22
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.


Feladatok el gaz sra v rcsoport 23
Feladatok elágazásra: vércsoport - 2

Algoritmus2:

Sokirányú elágazással.

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


Feladatok el gaz sra v rcsoport 24
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.


Kódolás(C++)

Kód:

kétirányú többirá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.


Kódolás(C++)

Kód:

kétirányú többirá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.


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.


Kódolás(C++)

Kód1:

Kód jegyzet-ként

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


Kódolás(C++)

Kód3:

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


Kódolás(C++)

Kód3:

Kód jegyzet-ként

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


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.


Kódolás(C++)

Ugyanez egyszerűbben:

cout << "kérdés"; cin >> x;if (!Helyes(x)){ cout << "\nhibaüzenet" << endl; exit(hibakód); }

'\n' = sorvégjel

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.

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


K dol s c
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).

A beolvasáshoz szükséges lokális változók.

bool hiba; string tmp;

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


K dol s c1

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

Kódolás (C++)

cin-nek – mint objektumnak (bemeneti folyamnak) vannak metódusai/tagfüggvényei. Pl. a fail().

bool hiba; string tmp;

do{cout<< "kérdés:"; cin >> x; hiba=cin.fail(); if (hiba || !Helyes(x)) {cout << "hibaüzenet" << endl;cin.clear(); getline(cin,tmp,’\n’) }; }while (hiba || !Helyes(x));

Az input-puffer törlése.

Kell: #include <string>

'\n' = sorvégjel;olvasás sorvégjelig

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


K dol s c2
Kódolás (C++)

Ugyanez egyszerűbben:

Pl. ha fájlból történik a beolvasás:

Olvas(fájl,x) [Helyes(x)]

cout << "kérdés:"; cin >> x;if (cin.fail() || !Helyes(x)){cout << "hibaüzenet" << endl; exit(hibakód);};

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


Programozási alapismeretek2. előadás vége


ad