programoz si alapismeretek 2 el ad s
Download
Skip this Video
Download Presentation
Programozási alapismeretek 2. előadás

Loading in 2 Seconds...

play fullscreen
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.

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

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

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

slide21
A sablon mentése:

Kódolás(adminisztráció)

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

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

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

slide42

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.

slide43

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.

slide44

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.

slide45

Kódolás(C++)

Kód1:

Kód jegyzet-ként

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

slide46

Kódolás(C++)

Kód3:

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

slide47

Kódolás(C++)

Kód3:

Kód jegyzet-ként

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

slide48

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.

slide49

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.

ad