30
UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 2. Gyakorlat Követelmények / „C” ismétlés

Programozás II

  • 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

Page 1: Programozás II

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

Page 2: Programozás II

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)

Page 3: Programozás II

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…

Page 4: Programozás II

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.

Page 5: Programozás II

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

Page 6: Programozás II

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

Page 7: Programozás II

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.

Page 8: Programozás II

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

Page 9: Programozás II

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

Page 10: Programozás II

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.

Page 11: Programozás II

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

Page 12: Programozás II

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

Page 13: Programozás II

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

Page 14: Programozás II

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…

Page 15: Programozás II

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

Page 16: Programozás II

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

Page 17: Programozás II

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

Page 18: Programozás II

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

Page 19: Programozás II

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

Page 20: Programozás II

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

Page 21: Programozás II

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

Page 22: Programozás II

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

Page 23: Programozás II

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

Page 24: Programozás II

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

Page 25: Programozás II

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ő

Page 26: Programozás II

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

Page 27: Programozás II

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

Page 28: Programozás II

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

Page 29: Programozás II

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

Page 30: Programozás II

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