Upload
ahanu
View
33
Download
2
Embed Size (px)
DESCRIPTION
Programozás II. 2. Gyakorlat Követelmények / „C” ismétlés. Elérhetőségek. Horváth István E-mail: ihorvath @ inf.u-szeged.hu Honlap: www.inf.u-szeged.hu /~ ihorvath (Gyakorlatok anyaga itt érhető el) Coospace egyesített kurzusfórum Fogadóóra: Szerda 11-12 (Irinyi 110) - PowerPoint PPT Presentation
Citation preview
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Programozás II.
2. GyakorlatKövetelmények / „C” ismétlés
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Elérhetőségek
Horváth István E-mail: [email protected] Honlap: www.inf.u-szeged.hu/~ihorvath
(Gyakorlatok anyaga itt érhető el)
Coospace egyesített kurzusfórum Fogadóóra: Szerda 11-12 (Irinyi 110)
(Vagy előre megbeszélt időpont/helyszín)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Követelmények - előadás
Előadásra járni kötelező! Ennek ellenőrzésére:
3 „röpdolgozat”
Vizsgaidőszakban előadásvizsga teljesítése Részletek előadáson…
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Követelmények - gyakorlat
Gyakorlatok látogatása is kötelező! (katalógus),max. 2 igazolatlan hiányzás megengedett
1 db évközi teszt (40 pont / min: 20 pont),November 4., 5.
1 db kötelező program (I / N), Nov. 22-ig be kell küldeni (Coospace-es feladatbeadás, gyakorlaton ellenőrzés)
1db gyakorlati ZH (60 pont / min: 30 pont)Szorgalmi időszak utolsó két hetében, előre meghirdetett időpontok, melyekre jelentkezni kell.
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Követelmények – kötprogA kötelező program témája szabadon választható, de a következő elemeknek benne kell szerepelniük:
•Legalább 3 db osztály Legalább 1 db örököltetés (saját osztályból való örököltetés)
•Legalább 3 db operátor overloading, melyek között szerepelnie kell a ( ) vagy a [ ] operátornak ( + - * / = += -= *= /= [] () stb. )
•Legalább 2 db virtuális függvény (destruktoron kívül).
•Legyen benne file-kezelés (olvasás/írás)
•Az osztályok tartalmazzanak dinamikus adattagot (Member adattag, legalább egy darab osztályban legyen )
•Minden osztálynak rendelkeznie kell konstruktorral, destruktorral és copy konstruktorral
•A kód legyen szétszedve külön header-re és külön source-ra
•Legyen egy főprogram, ami bemutatja a program működését
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Javítás
Évközi teszt egyszer javítható / pótolható, Nov. 11. héten (1 héttel a normál teszt után)
Gyakorlati ZH egyszer javítható, vizsgaidőszak elején (szintén előre meghirdetett időpontokra lehet majd jelentkezni)
Kötelező program nem javítható/pótolható.
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
PontozásÓrai munkára, és kihirdetett házi feladatokra max. +10 pont szerezhető. (Órai munkára heti max. 2).
Gyakorlati érdemjegy a pontok függvényében:>= 85% : jeles>= 75% : jó>= 65% : közepes>= 50% : elégséges *< 50% : elégtelen
* Az 50%-os minimum pontszámot plusz pontok nélkül kell teljesíteni! A pluszpontok csak e fölött kerülnek beszámításra.
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Ajánlott irodalom
Előadásanyag!!! Herbert Schildt: C/C++ Referenciakönyv
Panem Kft. Budapest (1998) Bruce Eckel: Thinking in C++ (angol) Computerbooks kiadó: Programozzunk C++
nyelven Bjarne Stroustrup: A C++ programozási nyelv
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Ismétlés – C nyelv
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Adattípusok
Az adattípus olyan egysége a programnak, amely két összetevője által meghatározott:• Értékhalmaz• Az értékhalmaz elemein végezhető
műveletek
Minden adattípus vagy elemi, vagy más adattípusokból képzett összetett adattípus.
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Adattípusok
signed / unsigned char short, int, long float, double, long double pointer, tömb enum union, struct
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Main függvény A C és a C++ programok kezdő eljárása
minden esetben a main() eljárás. Paraméterei:
• az argc (argument count) a parancssorban szereplő argumentumok száma,
• az argv (argument vector) a string alakban tárolt argumentumok címeit tároló tömb (indexelés 0-tól, utolsó arg. után NULL.)
• az envp a string alakban tárolt környezeti változók címeit tároló tömb (indexelés 0-tól, utolsó változó után NULL.)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
stdio.h – printf()
Alapértelmezett kimenetre ír Első argumentumban string, továbbiak a
kiírandó változók. Példa:
int x = 5;
printf(”x valtozo erteke: %d”, x);
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
stdio.h – printf()
Konverziós karakterek:c: int unsigned char típusra konvertált karakterd, i: int előjeles decimális egészu: unsigned int előjel nélküli decimális egészf: double előjeles tizedestörto: unsigned int előjel nélküli oktális egészs: char* karaktersorozat 0 végjeligstb…
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
stdio.h – scanf()
Alapértelmezett bemenetről adatok beolvasása.
Konverziós karakterek használata – printf() függvényhez hasonlóan.
Példa:int x;
printf("Add meg ‚x’ értékét!\n",x);
scanf("%d",&x);
(Ne felejtsük el az & jel használatát…)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
stdio.h – fopen() – fclose()
File *fopen (const char *filename, const char *mode);Fájl megnyitása:• r – read
• w – write
• a – append
int fclose(FILE *stream)Megnyitott fájl bezárására.
Példa:FILE *file;
file = fopen("proba.txt", "r"); //proba.txt megnyitása olvasásra
fclose(file); //bezárása
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
stdio.h – fprintf() – fscanf()
printf() és scanf() függvényekhez hasonlóan működnek (konverziós karakterek)
int fprintf(FILE *stream,const char * format, ... );
Példa:
int x = 5;
fprintf( file, "Egy próba %d kiíratás fájlba.\n",x); int fscanf(FILE *stream,const char * format, ... );
Példa:
int x;
fscanf( file, "%d", &x);
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Igazságtáblák - NOT
NOT (negálás, tagadás). Az eredeti érték ellentettje. Jelölése C-ben: ! (logikai művelet), ~ (bitenkénti
művelet) Igazságtáblája:
bemenet kimenet
A NOT A
0 1
1 0
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Igazságtáblák - OR
AND (logika VAGY). Akkor igaz, ha LEGALÁBB az egyik feltétel igaz.
Jelölése C-ben: | (bitenkénti), || (logikai) Igazságtáblája:
bemenet kimenet
A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Igazságtáblák - XOR
AND (logika KIZÁRÓ VAGY). Akkor igaz, ha PONTOSAN az egyik feltétel igaz.
Jelölése C-ben: ^(bitenkénti) Igazságtáblája:
bemenet kimenet
A BA XOR
B
0 0 0
0 1 1
1 0 1
1 1 0
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Igazságtáblák - AND
AND (logika ÉS). Igaz, ha mindkét feltétel igaz. Jelölése C-ben: & (bitenkénti), && (logikai) Igazságtáblája:
bemenet kimenet
A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Operátorok – aritmetikai műveletek
kif + kif : összeadás kif – kif : kivonás kif * kif : szorzás kif / kif : osztás kif % kif : maradékos osztás - kif : ellentett képzés
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Operátorok – bitszintű műveletek
~kif : komplemens képzés (bitenkénti negálás) kif >> kif : bitléptetés jobbra kif << kif : bitléptetés balra kif & kif : bitenkénti és művelet kif | kif : bitenkénti vagy művelet kif ^ kif : bitenkénti kizáró vagy
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Operátorok – logikai műveletek
kif && kif : logikai és kif || kif : logikai vagy ! kif : logikai tagadás
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Operátorok – relációs műveletek
kif == kif : egyenlő kif != kif : nem egyenlő kif < kif : kisebb kif > kif : nagyobb kif <= kif : kisebb-egyenlő kif >= kif : nagyobb-egyenlő
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Operátorok – értékadó műveletek
változó = kif : értékadás +=, -=, *=, /=, %= : művelettel egybekötött értékadás >>=, <<=, &=, ^=, |= : művelettel egybekötött értékadás
Pl.int x = 2;x += 3; //x = 5
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Operátorok – inkrementációs műveletek
++kif : inkrementálás (növelés 1-el), prefix operátorral. Visszatérési értéke a megnövelt érték!
kif++ : inkrementálás, postfix operátorral. Visszatérési értéke a növelés előtti érték!
--kif, kif-- : dekrementálás (csökkentés 1-el), visszatérési értékei lsd. inkrementálás.
Pl.int x = 0, y = 2;x = ++y; //x = 3, y = 3x = y++; //x = 3; y = 4
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
string műveletek
C-ben a string egy karakter tömb, melyet ‚\0’ karakter zár le.
#include <string.h> size_t strlen( const char *s)
a paraméterként kapott string méretét adja vissza (\0 karakter előttig számolva)
char *strcpy( char *s1, const char *s2) s2 string tartalmát az s1 karaktertömbbe másolja
char *strncpy( char *s1, const char *s2, size_t n)s2 stringből (legfeljebb) n számú karaktert másol s1-be
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
string műveletek
char *strcat( char *s1, const char *s2)s2 string tartalmát hozzáfűzi s1-hez (s1 végi \0-t törli, és a hozzáfűzött s2 végére teszi)
char *strncat( char *s1, const char *s2, size_t n)n karaktert fűz s1 végéhez s2-ből
char *strchr( const char *s, int c)A stringben a megadott c karakter legelső előfordulására mutató pointert ad vissza. (NULL, ha nem fordul elő benne).
char *strrchr( const char *s, int c)A megadott c karakter utolsó előfordulására mutató pointert ad vissza. (NULL, ha nem fordul elő)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
string műveletek
int strcmp( const char *s1, const char *s2)Összehasonlítja s1 és s2 stringet. Visszatérési értéke 0, ha a két string egyforma. <0, ha s1 < s2.>0, ha s1 > s2.
int strncmp( const char *s1, const char *s2, size_t n)strcmp-hez hasonló, az első n karaktert vizsgálja
char *strstr( const char *s1, const char *s2)Ha az s2 string előfordul s1-ben, az s2 kezdetére mutató pointert ad vissza. NULL különben
char *strrev( const char *s1)Megfordítja a string tartalmát