SlideShare una empresa de Scribd logo
1 de 48
Programozási alapismeretek 
2. előadás
ELTE 
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++ 
2014.10.06. 2/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Adatokkal kapcsolatos 
fogalmak 
 Konstans 
az 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. 
2014.10.06. 3/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Adatokkal kapcsolatos 
fogalmak 
 Értékadás 
az 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ípus 
olyan „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. 
2014.10.06. 4/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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. 
2014.10.06. 5/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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. 
2014.10.06. 6/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
A beolvasáson, a kiíráson 
és értékadáson túliakkal 
ELTE 
Elemi típusok 
Egész típus 
 Értékhalmaz: –231..+231 –1 
(Min'Egész..Max'Egész) 
Példaként: 4-bájtos 
ábrázolást feltételezve. 
 Műveletek: +, – , *, Div (egészosztás) , Mod 
(osztási maradék), – (unáris mínusz), ^ 
(pozitív egészkitevős hatványozás) 
 Relációk: =, <, , , , > 
 Ábrázolás: kettes komplemens kódú 
 Változatai: méret és előjel szerint sokfélék 
foglalkozunk csak. 
2014.10.06. 7/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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 len-ne, 
ha e típust racionálisnak neveznénk, mert csak 
racionális számot képes ábrázolni) 
2014.10.06. 8/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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 logikai 
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 
 Megjegyzés: a rendezésnek nem nagy a gyakorlati 
jelentősége. 
2014.10.06. 9/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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!) 
2014.10.06. 10/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(adminisztráció) 
 Célszerűen a programok forrása 
tartalmazzák: 
1. a szerző adatait, 
2. a feladat szövegét és 
3. a feladat specifikációját; valamint 
4. használható algoritmusmagyarázatokat; 
5. a fejlesztés –esetleg– még hátralévő 
teendőit. 
2014.10.06. 11/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(adminisztráció) 
Kis szívesség a Code::Blocks-tól: 
A szerző adatai (1.) a sablonba (a 
template-be) fixen beépíthetők. 
1. Pl.: 
//Gipsz Jakab 
//GIJKAFT.ELTE 
//gija@elte.hu 
… 
#include <iostream> 
… 
Ezek a programomnak 
„csak” a megjegyzései 
lesznek. A fordító 
számára érdektelen 
információk. 
2014.10.06. 12/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
Ezek a programomnak 
„csak” a megjegyzései 
ELTE 
Kódolás 
(adminisztráció) 
Sőt a továbbiak is elkezdhetők. Pl.: 
//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> 
… 
lesznek. A fordító 
számára érdektelen 
információk. 
A „teendők” („TO-DO”-k) 
elemei bárhova elhelyezhetők. 
Szintaxisa: 
//TODO a teendő szövege 
2014.10.06. 13/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(adminisztráció) 
 A sablon mentése: 
2014.10.06. 14/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(adminisztráció) 
 A sablon alapján egy új projekt 
létrehozása: 
… és a helye: 
Ebből következik, h. csak az 
általam „mindig” használt 
gépen használható szolgáltatás. 
2014.10.06. 15/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(adminisztráció) 
 A tennivalók „kikeresése”: 
A kérdéses teendőre kattintva a 
kurzor a forráskód megfelelő 
sorának az elejére kerül. 
2014.10.06. 16/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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 long – egész 
float – valós double – valós 
char – karakter string – szöveg 
bool – logikai 
 Deklaráció: 
típus adatazonosító,…; 
2014.10.06. 17/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++ alapok) 
 Értékadás: 
megjegyzés1 
képlet, formula 
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): 
megjegyzés2 
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 */ 
Figyelem! Nem: << 
2014.10.06. 18/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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.) 
2014.10.06. 19/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++ alapok) 
 Konzol input: 
cin >> változó; //változókonzol 
 Konzol output: 
cout << kifejezés; //konzolkifejezés-érték 
cout << … << 'n'; 
//konzol… +sorvég 
alternatív megoldás: 
cout << … << endl; 
//konzol… +sorvég 
Ezek leírása található a 
iostream fájlban. 
„Olvasd be” operátor 
Bementi adatfolyam 
„Tedd bele” operátor 
Kimenti adatfolyam 
2014.10.06. 20/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++ alapok) 
 String (=karakterlánc) konstans: 
"kl" – kl = tetszőleges hosszúságú karakterlánc 
 Karakter konstans: 
'k' – k = egyetlen karakter 
 Könyvtárfájlok (header-fájlok): 
o #include <…> – a rendszeré 
o #include "…" – saját 
 Névtér 
o using namespace … 
2014.10.06. 21/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Hibakeresés, hibajavítás 
* 
hibák 
Fordítás során kiírt hibák javítása 
o Hibaüzenet értelmezése 
o A hiba okának kiderítése 
o A hiba keletkezési helyének keresése 
o A hiba kijavítása 
Futtatás során fellépő hibák javítása 
o Tesztelés 
o A hiba keletkezési helyének keresése 
o A hiba kijavítása 
2014.10.06. 22/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Hibakeresés 
(C++ alapok) 
Code::Blocks szerkezet és szintaktika… 
2014.10.06. 23/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Hibakeresés 
(C++ alapok) 
A szintaktikus hiba javítása után… 
2014.10.06. 24/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Hibakeresés 
(C++ alapok) 
A futás után… warning: character constant too long for its type 
2014.10.06. 25/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
Feltételes fordítás 
ELTE 
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 DEBUG definiált 
2014.10.06. 26/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
Feltételes fordítás 
ELTE 
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 definiált. 
2014.10.06. 27/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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! 
2014.10.06. 28/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Feladatok elágazásra: 
vércsoport – 1 
Specifikáció: 
 Bemenet: x,yK 
 Kimenet: vS 
 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="+" 
I N 
v:="Rh+" v:="Rh–" 
2014.10.06. 29/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás 
Innentől kezdve el-hagyjuk 
a program-paraméterek 
dekla-rálását, 
a beolvasást, 
és kiírást 
K=Karakterek halmaza 
S=Karakter-sorozatok 
(szövegek) halmaza 
Elolva-sandó 
a jegyzet!
ELTE 
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! 
2014.10.06. 30/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Feladatok elágazásra: 
vércsoport – 2 
Specifikáció: 
 Bemenet: x,yK 
 Kimenet: vS 
 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" 
2014.10.06. 31/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Feladatok elágazásra: 
vércsoport – 2 
Algoritmus1: 
x="a" és y≠"b" vagy x≠"b" és y="a" 
I N 
v:="A" x="b" és y≠"a" vagy 
x≠"a" és y="b" 
I N 
v:="B" x="a" és y="b" vagy 
x="b" és y="a" 
I N 
v:="AB" v:="0" 
Kétirányú elágazások egymásba ágyazásával. 
2014.10.06. 32/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Feladatok elágazásra: 
vércsoport – 2 
Algoritmus2: 
x="a" és 
y≠"b" vagy 
x≠"b" és 
y="a" 
x="b" és 
y≠"a" vagy 
x≠"a" és 
y="b" 
v:="A" v:="B" v:="AB" v:="0" 
Sokirányú elágazással. 
x="a" és 
y="b" vagy 
x="b" és 
y="a" 
x="0" 
és 
y="0" 
2014.10.06. 33/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Feladatok elágazásra: 
vércsoport – 2 
Algoritmus3: 
vana:= x="a" vagy y="a" 
vanb:= x="b" vagy y="b" 
vana 
Lokális változók 
deklarálása 
I N 
vanb vanb 
I N I N 
v:="AB" v:="A" v:="B" v:="0" 
Segédváltozók bevezetésével. 
2014.10.06. 34/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás 
Változó 
vana, 
vanb:Logikai
ELTE 
Kód: 
Kódolás 
(C++) 
kétirányú sokirányú 
elágazás (általános) 
if (Felt) 
{ 
UtI 
} 
else 
{ 
elhagyható 
UtH 
} 
if (Felt1) { 
Ut1 
} 
else if (…) { 
… 
} 
else if (FeltN) { 
UtN 
} 
else { 
Ut 
Kódolási stílus- elhagyható 
} 
változatok 
(ANSI/K&R) 
2014.10.06. 35/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kód: 
Kódolás 
(C++) 
kétirányú sokirányú 
elágazás (speciális) 
if (Felt) { 
UtI 
} 
else { 
UtH 
} 
elhagyható 
switch (kif) 
{ 
case érték1: Ut1; break; 
case … : … ; break; 
case értékN: UtN; break; 
default : Ut ; 
} 
elhagyható 
Kódolási stílus-változatok 
(K&R/ANSI) 
2014.10.06. 36/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
 „Stílusbeállítás” Code::Blocks-ban 
(Settings/Editor…) 
2014.10.06. 37/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
 „Stílusbeállítás érvényesítése” 
Code::Blocks-ban 
2014.10.06. 38/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
Kód1: 
//név: Szabó Emerencia 
//ETR-azonosító: SZEKAAT.ELTE 
//drótposta-cím: sze@elte.hu 
//Feladat: Vércsoport meghatározás I. - A,B,O 
#include <iostream> 
using namespace std; 
int main() 
{ 
char x,y; 
string v; 
cout<<"Vercsoport meghatarozasa"<<endl<<endl; 
do { 
cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; 
cin>>x; 
}while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet 
do { 
cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; 
cin>>y; 
}while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 
Ciklus (!), amelyből a 
kilépés az Ef. 
teljesülésekor. 
L. még korábban is! 
2014.10.06. 39/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
Kód1: 
//név: Szabó Emerencia 
//ETR-azonosító: SZEKAAT.ELTE 
//drótposta-cím: sze@elte.hu 
//Feladat: Vércsoport meghatározás I. - A,B,O 
if (((x=='a')&&(y!='b'))||((x!='b')&&(y=='a'))){ //az a és b domináns gén 
v="A"; 
} 
else{ 
if ((((x=='b')&&(y!='a'))||((x!='a')&&(y=='b')))){//az a és b domináns gén 
#include <iostream> 
v="B"; 
} 
else{ 
using namespace std; 
int main() 
{ 
if ((((x=='b')&&(y=='a'))||((x=='a')&&(y=='b')))){ 
v="AB"; 
} 
else{ 
char x,y; 
string v; 
cout<<"Vercsoport v="0"; 
meghatarozasa"<<endl<<endl; 
do { 
} 
} 
cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; 
cin>>x; 
} 
}while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet 
do { 
cout<<v<<" a vercsoportja!"<<endl; 
return 0; 
cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; 
cin>>y; 
}while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 
} 
Kód 
jegyzet-ként 
2014.10.06. 40/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
Kód3: 
//név: Szabó Emerencia 
//ETR-azonosító: SZEKAAT.ELTE 
//drótposta-cím: sze@elte.hu 
//Feladat: Vércsoport meghatározás III. - A,B,O 
#include <iostream> 
using namespace std; 
int main() 
{ 
char x,y; 
string v; 
bool vana,vanb; 
cout<<"Vercsoport meghatarozasa"<<endl<<endl; 
do { 
cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; 
cin>>x; 
}while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet 
do { 
cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; 
cin>>y; 
}while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 
2014.10.06. 41/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
Kód3: 
//név: Szabó Emerencia 
vana=((x=='a')||(y=='a')); 
//ETR-azonosító: SZEKAAT.ELTE 
vanb=((x=='b')||(y=='b')); 
//drótposta-if (vana) cím: { 
sze@elte.hu 
//Feladat: Vércsoport meghatározás III. - A,B,O 
if (vanb) { 
v="AB"; 
} 
else { 
#include <iostream> 
v='A'; 
using namespace std; 
} 
} 
else { 
int main() 
{ 
if (vanb) { 
v='B'; 
char x,} 
y; 
string else v; 
{ 
bool vana,v='vanb; 
0'; 
} 
cout<<"Vercsoport meghatarozasa"<<endl<<endl; 
do { 
cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; 
cin>>x; 
} 
cout<<v<<" a vercsoportja!"<<endl; 
return 0; 
}while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet 
do { 
cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; 
cin>>y; 
}while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 
} 
Kód 
jegyzet-ként 
2014.10.06. 42/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
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)); 
2014.10.06. 43/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Kódolás 
(C++) 
Ugyanez egyszerűbben: 
cout << "kérdés"; cin >> x; 
if (!Helyes(x)) 
{ 
cout << "nhibaüzenet" << endl; 
exit(hibakód); 
} 
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. 
'n' = sorvégjel 
2014.10.06. 44/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
A beolvasáshoz szükséges 
ELTE 
Kódolás 
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; 
… 
lokális változók. 
(C++) 
2014.10.06. 45/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
cin-nek –mint objektumnak 
(bemeneti folyamnak)– vannak 
metódusai/tagfüggvényei. 
ELTE 
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). 
bool hiba; 
do{ 
string tmp; 
… 
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)); 
Ilyen a fail() is. 
Az input-puffer ürítése. 
'n' = sorvégjel; 
olvasás sorvégjelig 
2014.10.06. 46/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
ELTE 
Ugyanez egyszerűbben: 
Például, ha majd fájlból történik a beolvasás: 
Olvas(fájl,x) [Helyes(x)] 
Kódolás 
(C++) 
cout << "kérdés:"; cin >> x; 
if (cin.fail() || !Helyes(x)) 
{ 
cout << "hibaüzenet" << endl; 
exit(hibakód); 
} 
2014.10.06. 47/48 
Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás 
Elolva-sandó 
a jegyzet!
Programozási alapismeretek 
2. előadás vége

Más contenido relacionado

Destacado

組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)
組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)
組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)
株式会社ヒューマンバリュー
 

Destacado (7)

Programozás alapismeretek EA
Programozás alapismeretek EAProgramozás alapismeretek EA
Programozás alapismeretek EA
 
Web Components With Rails
Web Components With RailsWeb Components With Rails
Web Components With Rails
 
Whats app Sniffer - How To Hack Whatsapp Messages
Whats app Sniffer - How To Hack Whatsapp Messages Whats app Sniffer - How To Hack Whatsapp Messages
Whats app Sniffer - How To Hack Whatsapp Messages
 
земля в солнечной системе
земля в солнечной системеземля в солнечной системе
земля в солнечной системе
 
Strength training as we age
Strength training as we ageStrength training as we age
Strength training as we age
 
Prosody
ProsodyProsody
Prosody
 
組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)
組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)
組織の成長を "見える化" する「Ocapi」とは?(What's Ocapi?)
 

Similar a Előadás2

Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...
Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...
Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...
Ferenc Szalai
 
Interface Design
Interface DesignInterface Design
Interface Design
pzsigi
 
Learning Design a gyakorlatban
Learning Design a gyakorlatbanLearning Design a gyakorlatban
Learning Design a gyakorlatban
Papp Gyula
 

Similar a Előadás2 (7)

Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...
Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...
Miért vagyok Python rajongó? - avagy kalandozások egy nyílt forrású programoz...
 
KRL Kuka Robot Language - Timotei István Erdei - Timotei-Robotics
KRL Kuka Robot Language - Timotei István Erdei - Timotei-RoboticsKRL Kuka Robot Language - Timotei István Erdei - Timotei-Robotics
KRL Kuka Robot Language - Timotei István Erdei - Timotei-Robotics
 
Interface Design
Interface DesignInterface Design
Interface Design
 
Learning Design a gyakorlatban
Learning Design a gyakorlatbanLearning Design a gyakorlatban
Learning Design a gyakorlatban
 
Nlp és termékfejlesztés
Nlp és termékfejlesztésNlp és termékfejlesztés
Nlp és termékfejlesztés
 
Forráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analíziseForráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analízise
 
Egységtesztek automatikus generálása forráskódból
Egységtesztek automatikus generálása forráskódbólEgységtesztek automatikus generálása forráskódból
Egységtesztek automatikus generálása forráskódból
 

Előadás2

  • 2. ELTE 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++ 2014.10.06. 2/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 3. ELTE Adatokkal kapcsolatos fogalmak  Konstans az 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. 2014.10.06. 3/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 4. ELTE Adatokkal kapcsolatos fogalmak  Értékadás az 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ípus olyan „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. 2014.10.06. 4/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 5. ELTE 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. 2014.10.06. 5/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 6. ELTE 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. 2014.10.06. 6/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 7. A beolvasáson, a kiíráson és értékadáson túliakkal ELTE Elemi típusok Egész típus  Értékhalmaz: –231..+231 –1 (Min'Egész..Max'Egész) Példaként: 4-bájtos ábrázolást feltételezve.  Műveletek: +, – , *, Div (egészosztás) , Mod (osztási maradék), – (unáris mínusz), ^ (pozitív egészkitevős hatványozás)  Relációk: =, <, , , , >  Ábrázolás: kettes komplemens kódú  Változatai: méret és előjel szerint sokfélék foglalkozunk csak. 2014.10.06. 7/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 8. ELTE 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 len-ne, ha e típust racionálisnak neveznénk, mert csak racionális számot képes ábrázolni) 2014.10.06. 8/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 9. ELTE 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 logikai 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  Megjegyzés: a rendezésnek nem nagy a gyakorlati jelentősége. 2014.10.06. 9/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 10. ELTE 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!) 2014.10.06. 10/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 11. ELTE Kódolás (adminisztráció)  Célszerűen a programok forrása tartalmazzák: 1. a szerző adatait, 2. a feladat szövegét és 3. a feladat specifikációját; valamint 4. használható algoritmusmagyarázatokat; 5. a fejlesztés –esetleg– még hátralévő teendőit. 2014.10.06. 11/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 12. ELTE Kódolás (adminisztráció) Kis szívesség a Code::Blocks-tól: A szerző adatai (1.) a sablonba (a template-be) fixen beépíthetők. 1. Pl.: //Gipsz Jakab //GIJKAFT.ELTE //gija@elte.hu … #include <iostream> … Ezek a programomnak „csak” a megjegyzései lesznek. A fordító számára érdektelen információk. 2014.10.06. 12/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 13. Ezek a programomnak „csak” a megjegyzései ELTE Kódolás (adminisztráció) Sőt a továbbiak is elkezdhetők. Pl.: //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> … lesznek. A fordító számára érdektelen információk. A „teendők” („TO-DO”-k) elemei bárhova elhelyezhetők. Szintaxisa: //TODO a teendő szövege 2014.10.06. 13/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 14. ELTE Kódolás (adminisztráció)  A sablon mentése: 2014.10.06. 14/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 15. ELTE Kódolás (adminisztráció)  A sablon alapján egy új projekt létrehozása: … és a helye: Ebből következik, h. csak az általam „mindig” használt gépen használható szolgáltatás. 2014.10.06. 15/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 16. ELTE Kódolás (adminisztráció)  A tennivalók „kikeresése”: A kérdéses teendőre kattintva a kurzor a forráskód megfelelő sorának az elejére kerül. 2014.10.06. 16/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 17. ELTE 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 long – egész float – valós double – valós char – karakter string – szöveg bool – logikai  Deklaráció: típus adatazonosító,…; 2014.10.06. 17/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 18. ELTE Kódolás (C++ alapok)  Értékadás: megjegyzés1 képlet, formula 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): megjegyzés2 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 */ Figyelem! Nem: << 2014.10.06. 18/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 19. ELTE 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.) 2014.10.06. 19/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 20. ELTE Kódolás (C++ alapok)  Konzol input: cin >> változó; //változókonzol  Konzol output: cout << kifejezés; //konzolkifejezés-érték cout << … << 'n'; //konzol… +sorvég alternatív megoldás: cout << … << endl; //konzol… +sorvég Ezek leírása található a iostream fájlban. „Olvasd be” operátor Bementi adatfolyam „Tedd bele” operátor Kimenti adatfolyam 2014.10.06. 20/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 21. ELTE Kódolás (C++ alapok)  String (=karakterlánc) konstans: "kl" – kl = tetszőleges hosszúságú karakterlánc  Karakter konstans: 'k' – k = egyetlen karakter  Könyvtárfájlok (header-fájlok): o #include <…> – a rendszeré o #include "…" – saját  Névtér o using namespace … 2014.10.06. 21/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 22. ELTE Hibakeresés, hibajavítás * hibák Fordítás során kiírt hibák javítása o Hibaüzenet értelmezése o A hiba okának kiderítése o A hiba keletkezési helyének keresése o A hiba kijavítása Futtatás során fellépő hibák javítása o Tesztelés o A hiba keletkezési helyének keresése o A hiba kijavítása 2014.10.06. 22/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 23. ELTE Hibakeresés (C++ alapok) Code::Blocks szerkezet és szintaktika… 2014.10.06. 23/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 24. ELTE Hibakeresés (C++ alapok) A szintaktikus hiba javítása után… 2014.10.06. 24/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 25. ELTE Hibakeresés (C++ alapok) A futás után… warning: character constant too long for its type 2014.10.06. 25/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 26. Feltételes fordítás ELTE 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 DEBUG definiált 2014.10.06. 26/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 27. Feltételes fordítás ELTE 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 definiált. 2014.10.06. 27/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 28. ELTE 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! 2014.10.06. 28/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 29. ELTE Feladatok elágazásra: vércsoport – 1 Specifikáció:  Bemenet: x,yK  Kimenet: vS  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="+" I N v:="Rh+" v:="Rh–" 2014.10.06. 29/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás Innentől kezdve el-hagyjuk a program-paraméterek dekla-rálását, a beolvasást, és kiírást K=Karakterek halmaza S=Karakter-sorozatok (szövegek) halmaza Elolva-sandó a jegyzet!
  • 30. ELTE 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! 2014.10.06. 30/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 31. ELTE Feladatok elágazásra: vércsoport – 2 Specifikáció:  Bemenet: x,yK  Kimenet: vS  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" 2014.10.06. 31/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 32. ELTE Feladatok elágazásra: vércsoport – 2 Algoritmus1: x="a" és y≠"b" vagy x≠"b" és y="a" I N v:="A" x="b" és y≠"a" vagy x≠"a" és y="b" I N v:="B" x="a" és y="b" vagy x="b" és y="a" I N v:="AB" v:="0" Kétirányú elágazások egymásba ágyazásával. 2014.10.06. 32/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 33. ELTE Feladatok elágazásra: vércsoport – 2 Algoritmus2: x="a" és y≠"b" vagy x≠"b" és y="a" x="b" és y≠"a" vagy x≠"a" és y="b" v:="A" v:="B" v:="AB" v:="0" Sokirányú elágazással. x="a" és y="b" vagy x="b" és y="a" x="0" és y="0" 2014.10.06. 33/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 34. ELTE Feladatok elágazásra: vércsoport – 2 Algoritmus3: vana:= x="a" vagy y="a" vanb:= x="b" vagy y="b" vana Lokális változók deklarálása I N vanb vanb I N I N v:="AB" v:="A" v:="B" v:="0" Segédváltozók bevezetésével. 2014.10.06. 34/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás Változó vana, vanb:Logikai
  • 35. ELTE Kód: Kódolás (C++) kétirányú sokirányú elágazás (általános) if (Felt) { UtI } else { elhagyható UtH } if (Felt1) { Ut1 } else if (…) { … } else if (FeltN) { UtN } else { Ut Kódolási stílus- elhagyható } változatok (ANSI/K&R) 2014.10.06. 35/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 36. ELTE Kód: Kódolás (C++) kétirányú sokirányú elágazás (speciális) if (Felt) { UtI } else { UtH } elhagyható switch (kif) { case érték1: Ut1; break; case … : … ; break; case értékN: UtN; break; default : Ut ; } elhagyható Kódolási stílus-változatok (K&R/ANSI) 2014.10.06. 36/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 37. ELTE Kódolás (C++)  „Stílusbeállítás” Code::Blocks-ban (Settings/Editor…) 2014.10.06. 37/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 38. ELTE Kódolás (C++)  „Stílusbeállítás érvényesítése” Code::Blocks-ban 2014.10.06. 38/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 39. ELTE Kódolás (C++) Kód1: //név: Szabó Emerencia //ETR-azonosító: SZEKAAT.ELTE //drótposta-cím: sze@elte.hu //Feladat: Vércsoport meghatározás I. - A,B,O #include <iostream> using namespace std; int main() { char x,y; string v; cout<<"Vercsoport meghatarozasa"<<endl<<endl; do { cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; cin>>x; }while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet do { cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; cin>>y; }while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 Ciklus (!), amelyből a kilépés az Ef. teljesülésekor. L. még korábban is! 2014.10.06. 39/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 40. ELTE Kódolás (C++) Kód1: //név: Szabó Emerencia //ETR-azonosító: SZEKAAT.ELTE //drótposta-cím: sze@elte.hu //Feladat: Vércsoport meghatározás I. - A,B,O if (((x=='a')&&(y!='b'))||((x!='b')&&(y=='a'))){ //az a és b domináns gén v="A"; } else{ if ((((x=='b')&&(y!='a'))||((x!='a')&&(y=='b')))){//az a és b domináns gén #include <iostream> v="B"; } else{ using namespace std; int main() { if ((((x=='b')&&(y=='a'))||((x=='a')&&(y=='b')))){ v="AB"; } else{ char x,y; string v; cout<<"Vercsoport v="0"; meghatarozasa"<<endl<<endl; do { } } cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; cin>>x; } }while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet do { cout<<v<<" a vercsoportja!"<<endl; return 0; cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; cin>>y; }while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 } Kód jegyzet-ként 2014.10.06. 40/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 41. ELTE Kódolás (C++) Kód3: //név: Szabó Emerencia //ETR-azonosító: SZEKAAT.ELTE //drótposta-cím: sze@elte.hu //Feladat: Vércsoport meghatározás III. - A,B,O #include <iostream> using namespace std; int main() { char x,y; string v; bool vana,vanb; cout<<"Vercsoport meghatarozasa"<<endl<<endl; do { cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; cin>>x; }while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet do { cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; cin>>y; }while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 2014.10.06. 41/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 42. ELTE Kódolás (C++) Kód3: //név: Szabó Emerencia vana=((x=='a')||(y=='a')); //ETR-azonosító: SZEKAAT.ELTE vanb=((x=='b')||(y=='b')); //drótposta-if (vana) cím: { sze@elte.hu //Feladat: Vércsoport meghatározás III. - A,B,O if (vanb) { v="AB"; } else { #include <iostream> v='A'; using namespace std; } } else { int main() { if (vanb) { v='B'; char x,} y; string else v; { bool vana,v='vanb; 0'; } cout<<"Vercsoport meghatarozasa"<<endl<<endl; do { cout<<"Kerem a vercsoportot meghatarozo egyik gent (a/b/0):"; cin>>x; } cout<<v<<" a vercsoportja!"<<endl; return 0; }while ((x!='a') && (x!='b')&& (x!='0')); //az előfeltétel szerint csak a,b vagy 0 lehet do { cout<<"Kerem a vercsoportot meghatarozo masik gent (a/b/0):"; cin>>y; }while ((y!='a') && (y!='b')&& (y!='0')); //az előfeltétel szerint csak a,b vagy 0 } Kód jegyzet-ként 2014.10.06. 42/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 43. ELTE 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)); 2014.10.06. 43/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 44. ELTE Kódolás (C++) Ugyanez egyszerűbben: cout << "kérdés"; cin >> x; if (!Helyes(x)) { cout << "nhibaüzenet" << endl; exit(hibakód); } 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. 'n' = sorvégjel 2014.10.06. 44/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 45. A beolvasáshoz szükséges ELTE Kódolás 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; … lokális változók. (C++) 2014.10.06. 45/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 46. cin-nek –mint objektumnak (bemeneti folyamnak)– vannak metódusai/tagfüggvényei. ELTE 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). bool hiba; do{ string tmp; … 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)); Ilyen a fail() is. Az input-puffer ürítése. 'n' = sorvégjel; olvasás sorvégjelig 2014.10.06. 46/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás
  • 47. ELTE Ugyanez egyszerűbben: Például, ha majd fájlból történik a beolvasás: Olvas(fájl,x) [Helyes(x)] Kódolás (C++) cout << "kérdés:"; cin >> x; if (cin.fail() || !Helyes(x)) { cout << "hibaüzenet" << endl; exit(hibakód); } 2014.10.06. 47/48 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 2. előadás Elolva-sandó a jegyzet!

Notas del editor

  1. 2014.10.06.
  2. 2014.10.06.
  3. 2014.10.06.
  4. 2014.10.06.
  5. 2014.10.06.
  6. 2014.10.06.
  7. 2014.10.06.
  8. 2014.10.06.
  9. 2014.10.06.
  10. 2014.10.06.
  11. 2014.10.06.
  12. 2014.10.06.
  13. 2014.10.06.
  14. 2014.10.06.
  15. 2014.10.06.
  16. 2014.10.06.
  17. 2014.10.06.
  18. 2014.10.06.
  19. 2014.10.06.
  20. 2014.10.06.
  21. 2014.10.06.
  22. 2014.10.06.
  23. 2014.10.06.
  24. 2014.10.06.
  25. 2014.10.06.
  26. 2014.10.06.
  27. 2014.10.06.
  28. 2014.10.06.
  29. 2014.10.06.
  30. 2014.10.06.
  31. 2014.10.06.
  32. 2014.10.06.
  33. 2014.10.06.
  34. 2014.10.06.
  35. 2014.10.06.
  36. 2014.10.06.
  37. 2014.10.06.
  38. 2014.10.06.
  39. 2014.10.06.
  40. 2014.10.06.
  41. 2014.10.06.
  42. 2014.10.06.
  43. 2014.10.06.
  44. 2014.10.06.
  45. 2014.10.06.
  46. 2014.10.06.
  47. 2014.10.06.
  48. 2014.10.06.