300 likes | 476 Views
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)
E N D
Programozás II. 2. GyakorlatKö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) Coospaceegyesített kurzusfórum Fogadóóra: Szerda 11-12 (Irinyi 110) (Vagy előre megbeszélt időpont/helyszín)
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…
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.
Követelmények – kötprog A 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
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ó.
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.
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
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. Adattípusok
signed / unsigned char short, int, long float, double, longdouble pointer, tömb enum union, struct Adattípusok
A C és a C++ programok kezdő eljárása minden esetben a main() eljárás. Paraméterei: az argc (argumentcount) a parancssorban szereplő argumentumok száma, az argv (argumentvector) 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.) Main függvény
Alapértelmezett kimenetre ír Első argumentumban string, továbbiak a kiírandó változók. Példa: int x = 5; printf(”x valtozoerteke: %d”, x); stdio.h – printf()
Konverziós karakterek: c: int unsignedchar típusra konvertált karakter d, i: int előjeles decimális egész u:unsigned int előjel nélküli decimális egész f:double előjeles tizedestört o:unsigned int előjel nélküli oktális egész s:char* karaktersorozat 0 végjelig stb… stdio.h – printf()
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…) stdio.h – scanf()
File *fopen (constchar *filename, constchar *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 stdio.h – fopen() – fclose()
printf() és scanf() függvényekhez hasonlóan működnek (konverziós karakterek) intfprintf(FILE *stream,const char * format, ... ); Példa: int x = 5; fprintf( file, "Egy próba %d kiíratás fájlba.\n",x); intfscanf(FILE *stream,const char * format, ... );Példa: int x; fscanf( file, "%d", &x); stdio.h – fprintf() – fscanf()
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: Igazságtáblák - NOT
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: Igazságtáblák - OR
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: Igazságtáblák - XOR
AND (logika ÉS). Igaz, ha mindkét feltétel igaz. Jelölése C-ben: & (bitenkénti), && (logikai) Igazságtáblája: Igazságtáblák - AND
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 Operátorok – aritmetikai 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 Operátorok – bitszintű műveletek
kif && kif : logikai és kif || kif : logikai vagy ! kif : logikai tagadás Operátorok – logikai műveletek
kif == kif : egyenlő kif != kif : nem egyenlő kif < kif : kisebb kif > kif : nagyobb kif <= kif : kisebb-egyenlő kif >= kif : nagyobb-egyenlő Operátorok – relációs 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 Operátorok – értékadó 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 Operátorok – inkrementációs műveletek
C-ben a string egy karakter tömb, melyet ‚\0’ karakter zár le. #include <string.h> size_tstrlen( 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 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 stringbena 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ő) string műveletek
intstrcmp( 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. intstrncmp( 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( constchar *s1)Megfordítja a string tartalmát string műveletek