Mutatók. Programozás II. Hatwágner F. Miklós március 4. Széchenyi István Egyetem, Gy r
|
|
- Emil Kiss
- 5 évvel ezelőtt
- Látták:
Átírás
1 Mutatók Programozás II. Széchenyi István Egyetem, Gy r március 4.
2 Dinamikus memóriakezelés A C fordító a memóriát három részre osztja: 1 els dleges adatterület konstansok, statikus objektumok 2 verem (stack) lokális objektumok, függvények paraméterei 3 heap dinamikusan, futásid ben foglalt, változó méret memóriablokkok Memóriakezel fv.-ekhez beszerkesztend : stdlib.h void* calloc(size_t darab, size_t meret) darab*meret bájt méret blokk lefoglalása és nullázása void* malloc(size_t meret) meret bájt méret blokk lefoglalása Tulajdonságok: V. t. érték: lefoglalt terület címe, vagy NULL, ha sikertelen volt a m velet Automatikus tárillesztés, méret illesztés bármilyen objektum elhelyezhet
3 Dinamikus memóriakezelés void* realloc(void* blokk, size_t uj_meret) Átméretezi a korábban lefoglalt blokk -ot. V. t. sikeres esetben az átméretezett terület címe (egyezhet a régi értékkel). A régi blokk tartalmát igyekszik meg rizni. Sikertelen esetben a v. t. érték NULL, de adat nem vész el. void free(void* blokk) Korábban lefoglalt blokk felszabadítása. NULL átadása esetén azonnal visszatér, de érvénytelen mutató átadása végzetes hibát okozhat!
4 Dinamikus memóriakezelés Egydimenziós tömb (vektor) használata #include <stdio.h> #define MERET 3 int main(void) { int tomb[meret] = {1, 2, 3}; int i; printf("'tomb' elemei: \n"); for(i=0; i<meret; i++) { printf("%d ", tomb[i]); } putchar('\n'); } Kimenet 'tomb' elemei: 1 2 3
5 Dinamikus memóriakezelés Dinamikus, egydimenziós tömb #include <stdio.h> #include <stdlib.h> #define MERET 3 int main(void) { int *dintomb, i; if((dintomb = (int*)malloc(meret*sizeof(int)))) { *dintomb = 1; *(dintomb+1) = 2; dintomb[2] = 3; printf("'dintomb' elemei: \n"); for(i=0; i<meret; i++) printf("%d ", *(dintomb+i)); putchar('\n'); free(dintomb); } else { fprintf(stderr, "Nem sikerült memóriát foglalni " "'dintomb' részére.\n"); } return 0; } Kimenet 'dintomb' elemei: 1 2 3
6 Dinamikus memóriakezelés Egydimenziós mutatótömb #include <stdio.h> #define MERET 3 int main(void) { char* muttomb[meret] = {"Egy", "két", "há"}; int i; printf("'muttomb' elemei: \n"); for(i=0; i<meret; i++) printf("%s (%p) (%p)\n", muttomb[i], &muttomb[i], &muttomb[i][0]); putchar('\n'); return 0; } Kimenet 'muttomb' elemei: Egy (0xbfa8e490) (0x80485b0) két (0xbfa8e494) (0x80485b4) há (0xbfa8e498) (0x80485b9)
7 Dinamikus memóriakezelés Dinamikus, egydimenziós mutatótömb (1/2) #include <stdio.h> #include <stdlib.h> #include <string.h> #define MERET 3 #define MACSEK "Lukrécia" int main(void) { char** dinmuttomb; int i; if((dinmuttomb = (char**)malloc(meret*sizeof*dinmuttomb))) { *dinmuttomb = "Frakk"; *(dinmuttomb+1) = "Szerénke"; if((dinmuttomb[2] = (char*)malloc(strlen(macsek)+1))) { strcpy(*(dinmuttomb+2), MACSEK); printf("'dinmuttomb' elemei: \n"); for(i=0; i<meret; i++) printf("%s ", *(dinmuttomb+i)); putchar('\n'); free(dinmuttomb[2]);
8 Dinamikus memóriakezelés Dinamikus, egydimenziós mutatótömb (2/2) } else { fprintf(stderr, "Nem sikerült memóriát foglalni %s " "részére.\n", MACSEK); } free(dinmuttomb); } else { fprintf(stderr, "Nem sikerült memóriát foglalni " "'dinmuttomb' részére.\n"); } return 0; } Kimenet 'dinmuttomb' elemei: Frakk Szerénke Lukrécia
9 Dinamikus memóriakezelés Kétdimenziós tömb (mátrix) #include <stdio.h> #define MERET 3 int main(void) { int mtx[meret][meret] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, i, j; printf("'mtx' elemei (és címeik): \n"); for(i=0; i<meret; i++) { printf("mtx[%d]: (%p)\n ", i, &mtx[i]); for(j=0; j<meret; j++) printf("[%d][%d]=%d (%p) ", i, j, mtx[i][j], &mtx[i][j]); putchar('\n'); } return 0; } Kimenet 'mtx' elemei (és címeik): mtx[0]: (0xbfcfde34) [0][0]=1 (0xbfcfde34) [0][1]=2 (0xbfcfde38) [0][2]=3 (0xbfcfde3c) mtx[1]: (0xbfcfde40) [1][0]=4 (0xbfcfde40) [1][1]=5 (0xbfcfde44) [1][2]=6 (0xbfcfde48) mtx[2]: (0xbfcfde4c) [2][0]=7 (0xbfcfde4c) [2][1]=8 (0xbfcfde50) [2][2]=9 (0xbfcfde54)
10 Dinamikus memóriakezelés Dinamikus, kétdimenziós tömb (mutatótömb) (1/2) #include <stdio.h> #include <stdlib.h> #define MERET 3 int main(void) { int** dinmtx, i, j; if((dinmtx = (int**)calloc(meret, sizeof(int*)))) { for(i=0; i<meret; i++) { if((*(dinmtx+i) = (int*)malloc(meret*sizeof**dinmtx))) { for(j=0; j<meret; j++) *(*(dinmtx+i)+j) = i*meret+j+1; } else { fprintf(stderr, "Nem sikerült memóriát foglalni " "'dinmtx[%d]' részére.\n", i); } } printf("'dinmtx' elemei (és címeik): \n"); for(i=0; i<meret; i++) { if(dinmtx[i]) { printf("dinmtx[%d]: (%p)\n ", i, &dinmtx[i]); for(j=0; j<meret; j++) printf("[%d][%d]=%d (%p) ", i, j, dinmtx[i][j],&dinmtx[i][j]); putchar('\n'); free(*(dinmtx+i)); } } free(dinmtx);
11 Dinamikus memóriakezelés Dinamikus, kétdimenziós tömb (mutatótömb) (2/2) } else { fprintf(stderr, "Nem sikerült memóriát foglalni " "'dinmtx' részére.\n"); } return 0; } Kimenet 'dinmtx' elemei (és címeik): dinmtx[0]: (0x8ee0008) [0][0]=1 (0x8ee0018) [0][1]=2 (0x8ee001c) [0][2]=3 (0x8ee0020) dinmtx[1]: (0x8ee000c) [1][0]=4 (0x8ee0028) [1][1]=5 (0x8ee002c) [1][2]=6 (0x8ee0030) dinmtx[2]: (0x8ee0010) [2][0]=7 (0x8ee0038) [2][1]=8 (0x8ee003c) [2][2]=9 (0x8ee0040)
12 Dinamikus memóriakezelés Dinamikus, kétdimenziós tömb (alternatív megoldás) #include <stdio.h> #include <stdlib.h> #define MERET 3 int main(void) { int* dinmtx2, i, j; if((dinmtx2 = (int*)calloc(meret*meret, sizeof(int)))) { for(i=0; i<meret; i++) *(dinmtx2+i*meret+i) = 1; printf("'dinmtx2' elemei: \n"); for(i=0; i<meret; i++) { for(j=0; j<meret; j++) printf("%d ", *(dinmtx2+i*meret+j)); putchar('\n'); } free(dinmtx2); } else { fprintf(stderr, "Nem sikerült memóriát foglalni " "'dinmtx2' részére.\n"); } return 0; }
13 Dinamikus memóriakezelés Kimenet 'dinmtx2' elemei:
14 Dinamikus memóriakezelés Karakterláncnak futásid ben memóriát foglaló getline() (1/2) #include <stdio.h> #include <stdlib.h> int dingetline(char** eredm) { int i = 0, meret = 16; char *s = NULL, *uj, c; if(!(s = (char*)malloc(meret))) { *eredm = NULL; return 0; } while((c=getchar())!='\n' && c!=eof) { *(s+i++) = c; if(i == meret-1) { meret *= 2; uj = (char*)realloc(s, meret); if(uj) s = uj; else break; } } *(s+i) = '\0'; *eredm = s; return i; }
15 Dinamikus memóriakezelés Karakterláncnak futásid ben memóriát foglaló getline() (2/2) int main(void) { char* s; printf("adjon meg egy tetsz leges hosszúságú szöveget!\n"); dingetline(&s); if(s) { printf("ezt adta meg: %s\n", s); free(s); } else { fprintf(stderr, "Sikertelen memóriafoglalás.\n"); } return 0; } Kimenet Adjon meg egy tetsz leges hosszúságú szöveget! Ezt adta meg: Ld. még: getline()
16 Tömb paramétert fogadó függvények Vektor átadása függvénynek #include <stdio.h> #define MERET 3 /* void nyomtat(int[], int); */ void nyomtat(int*, int); int main(void) { int tomb[meret] = {1, 2, 3}; /* tomb++; error: lvalue required as increment operand */ nyomtat(tomb, MERET); return 0; } void nyomtat(int* t, int db) { int* utso = t+db; while(t<utso) printf("%d ", *t++); putchar('\n'); } Kimenet 1 2 3
17 Tömb paramétert fogadó függvények Mutatótömb átadása függvénynek #include <stdio.h> #define MERET 3 void nyomtat(char* [], int); int main(void) { char* tomb[meret] = {"Nils Holgersson", "Pocok", "Márton"}; nyomtat(tomb, MERET); return 0; } void nyomtat(char* t[], int db) { int i; for(i=0; i<db; i++) printf("%s ", *t++); putchar('\n'); } Kimenet Nils Holgersson Pocok Márton
18 Tömb paramétert fogadó függvények Mátrix átadása függvénynek (1/2) #include <stdio.h> #define MERET 3 void nyomtat(int (*)[], int, int); /* void nyomtat(int [][MERET], int, int); */ /* void nyomtat(int [MERET][MERET], int, int); */ /* void nyomtat(int**, int, int); */ /* void nyomtat(int [][], int, int); error: array type has incomplete element type */ int main(void) { int tomb[meret][meret] = {{1, 2, 3}, {8, 9, 4}, {7, 6, 5}}; nyomtat(tomb, MERET, MERET); return 0; } void nyomtat(int (*t)[meret], int s, int o) { /* void nyomtat(int t[][meret], int s, int o) { */ /* void nyomtat(int t[meret][meret], int s, int o) { */ /* void nyomtat(int **t, int s, int o) { expected `int **' but argument is of type `int (*)[3]' */ /* void nyomtat(int (*t)[], int s, int o) { error: increment of pointer to unknown structure error: arithmetic on pointer to an incomplete type */
19 Tömb paramétert fogadó függvények Mátrix átadása függvénynek (2/2) int i, j, *elem; for(i=0; i<s; i++) { elem = *t++; for(j=0; j<o; j++) printf("%d ", *elem++); putchar('\n'); } } Kimenet
20 Tömböt visszaadó függvények Automatikus tárolási osztályú tömb (címe) nem adható vissza biztonságosan! Mátrixot visszaadó függvény #include <stdio.h> #define MERET 3 int mtx[meret][meret] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int (*vissza(void))[meret] { return mtx; } int main(void) { int (*pmtx)[meret], i, j; printf("'mtx' elemei:\n"); pmtx = vissza(); for(i=0; i<meret; i++) { for(j=0; j<meret; j++) printf("%d ", pmtx[i][j]); putchar('\n'); } return 0; }
21 Tömböt visszaadó függvények Ennél a megoldásnál az egymást követ hívások ugyanazt a puert használják; mi lenne, ha különféleképpen paraméterezett itoa() hívások szerepelnének ugyanannak a printf()-nek paramétereiként? Vektort visszaadó függvény #include <stdio.h> #define MAX 128 char* itoa(int i) { static char buf[max]; sprintf(buf, "%d", i); return buf; } #define ERTEK 123 int main(void) { printf("%d karakteres alakja: %s\n", ERTEK,itoa(ERTEK)); return 0; }
22 Tömböt visszaadó függvények Vektort visszaadó függvény (dinamikus változat) #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 128 char* itoa(int i) { char buf[max], *s; int hossz; sprintf(buf, "%d", i); hossz = strlen(buf); if((s = (char*)malloc(hossz+1))) { strcpy(s, buf); return s; } else return NULL; } #define ERTEK 123 int main(void) { char *s1, *s2; printf("%d és %d karakteres alakjai: %s, %s.\n", ERTEK, ERTEK*2, s1=itoa(ertek), s2=itoa(ertek*2)); free(s1); free(s2); return 0; }
23 Parancssori paraméterek Minden C programban lennie kell pontosan egy, programot indító main() fv.-nek (konzol alk. esetén). Paraméterei: elhagyhatóak, nem ANSI szabványosak. A main() lehetséges alakjai: int main(); Nem mondunk semmit a paraméterezésr l. int main(void); Nem fogad paramétereket. int main(int argc); Csak a paraméterek száma ismert (beleszámítja a program nevét is). int main(int argc, char* argv[]); A paraméterek száma és értéke is ismert; argv mutatótömb, melynek argc index eleme NULL mutató.
24 Parancssori paraméterek Parancssori paraméterek lekérdezése, 1. változat #include <stdio.h> int main(int argc, char* argv[]) { while(*argv) printf("%s\n", *argv++); return 0; } Parancssori paraméterek lekérdezése, 2. változat #include <stdio.h> int main(int argc, char* argv[]) { int i; for(i=0; i<argc; i++) printf("%s\n", argv[i]); return 0; } Kimenet./proba 42 Lolka "Batka manó"./proba 42 Lolka Batka manó
25 Parancssori paraméterek Microsoft-specikus megoldás: az stdlib.h bekapcsolása után elérhet ek: extern int argc extern char** argv Parancssori paraméterek lekérdezése, 3. változat #include <stdio.h> #include <stdlib.h> int main(void) { int i; for(i=0; i< argc; i++) printf("%s\n", argv[i]); return 0; } Megjegyzés: argv[0] azt a karakterláncot tartalmazza, amivel a programot elindították.
26 Példa parancssori paraméterek használatára pelda30m.c (1/3) /* pelda30m.c -- Adott szöveg keresése szöveg soronként Indítas: pelda30m -x -n keresend _szöveg */ #include <stdio.h> #include <string.h> #include <ctype.h> #define MAXSOR 1000 int getline(char s[], int lim); int main(int argc, char *argv[]) { char sor[maxsor+1]; /* Beolvasott sor */ char *k; /* Mutató a parancssor elemzéséhez */ long sorszam = 0L; /* Sorszámláló */ int kiveve = 0; /* Ha 1, azon szöveg sorok írandók ki, melyekben nincs benn a ker. szöveg */ int szam = 0; /* Ha 1, a kiírt szöveg sorokat sorszámmal kell ellátni. */
27 Példa parancssori paraméterek használatára pelda30m.c (2/3) /* A parancssor opcionális paramétereinek (-x -n) lekezelése */ while(--argc>0 && (*++argv)[0]=='-') for(k=argv[0]+1; *k!='\0'; k++) switch(tolower(*k)) { case 'x': kiveve = 1; break; case 'n': szam = 1; break; default: printf("\n\r\tkeresés: -%c illegális kapcsoló!\n", *k); argc = 0; break; } /* A keresett szöveg paraméter */ if(argc!=1) printf("\n\rindítás: pelda30m -x -n keresend _szöveg!!!\n"); else { printf("gépeljen be szöveg sorokat üres sorig vagy EOF-ig!\n" "Kiírjuk%s, melyikben %sszerepel %s!\n", szam?" sorszámával együtt":"",kiveve?"nem ":"",*argv);
28 Példa parancssori paraméterek használatára pelda30m.c (3/3) while(getline(sor, MAXSOR)>0) { sorszam++; if((strstr(sor, *argv))!= kiveve) { if(szam) printf("%ld: ", sorszam); printf("%s\n", sor); } } } return 0; } int getline(char s[], int lim) { /* */ } Kimenet./pelda30m -n alma Gépeljen be szöveg sorokat üres sorig vagy EOF-ig! Kiírjuk sorszámával együtt, melyikben szerepel alma! eper Balmazújváros 2: Balmazújváros
29 Környezeti változók Kulcs-érték párok = jellel elválasztva. Feladatuk lehet pl. programok m ködését befolyásoló paraméterek tárolása, programok keresési útvonalainak tárolása (PATH), stb. Ahány konzolt nyitunk, annyi halmaz jön létre a változókból! Környezeti változók használata C:\Users\hatwagner>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\hatwagner\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files C:\Users\hatwagner>set kulcs A következõ környezeti változó nem definiált: kulcs. C:\Users\hatwagner>set kulcs=ertek C:\Users\hatwagner>set kulcs kulcs=ertek C:\Users\hatwagner>set kulcs= C:\Users\hatwagner>set kulcs A következõ környezeti változó nem definiált: kulcs.
30 Környezeti változók Környezeti változók lekérdezésének módjai: a main() fv. harmadik paraméterén keresztül int main(int argc, char* argv[], char* env[]); char *getenv(const char *name); Beszerkesztend az stdlib.h, csak a kulcsot kell megadni; ha nem létezik a kulcs, NULL értéket ad vissza A visszaadott mutató nem alkalmas a változó értékének biztonságos módosítására! Módosítás és törlés: int putenv(char *string); Beszerkesztend az stdlib.h. string alakja: kulcs=érték. Ha nincs ilyen kulcs, létrehozza a megadott értékkel, egyébként módosítja az értéket. Csak kulcs megadásával lehet a változót törölni. 0 v. t. érték jelzi a sikeres módosítást, 1 pedig a hibát.
31 Környezeti változók Változók listázása #include <stdio.h> int main(int argc, char* argv[], char* env[]) { while(*env) printf("%s\n", *env++); return 0; } Változó lekérdezése, módosítása (1/2) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define KULCS "szereplo" #define ERTEK "Pumukli" #define CSERE "Eder mester" int main(void) { char* kv; char uj[128]; SetConsoleOutputCP(1250);
32 Környezeti változók Változó lekérdezése, módosítása (2/2) if((kv = getenv(kulcs))) { printf("%s értéke %s\n", KULCS, kv); if(!strcmp(kv, CSERE)) { sprintf(uj, "%s=%s", KULCS, ERTEK); putenv(uj); printf("%s értékét %s-ra cseréltük.\n", KULCS, ERTEK); } } else { printf("%s nem definiált.\n\n", KULCS); } return 0; }
33 Programbefejezés A main() fv. int típusú v. t. értéke a státusz kód, vagy kilépési kód. Megállapodás szerint 0 jelzi a sikeres programlefutást bármely más érték pedig a különféle hibákat. stdlib.h beszerkesztése szimbolikus állandók: EXIT_SUCCESS 0 EXIT_FAILURE 1 Státuszkód el állítható: main()-ben kiadott return segítségével bármely fv.-ben kiadott exit(), abort() hívásokkal (stdlib.h)
34 Programbefejezés void exit(int status); status értékét kapja meg a szül folyamat meghívja a regisztrált kilépési függvényeket (ld. atexit()) puereket üríti nyitott fájlokat lezárja void abort(void); stderr Abnormal program termination SIGABRT jelzést vált ki ha nincs regisztrált jelzéskezel (ld. signal()), 3-as státuszkóddal kilép
35 Programbefejezés vissza.c #include <stdio.h> int main(void) { char c; printf("adja meg a visszatérési értéket 0-9 között! "); while((c=getchar())<'0' c>'9'); return c-'0'; } off vissza.exe if ERRORLEVEL 2 goto ketto if ERRORLEVEL 1 goto egy if ERRORLEVEL 0 goto nulla :nulla ECHO A program hibamentesen lefutott. goto vege :egy ECHO Hibakod: 1. goto vege :ketto ECHO Hibakod: 2, vagy tobb. :vege
36 Függvény (kód) mutatók Függvények belépési pontját címz mutatók int fv(double, int); int (*pfv)(double, int); int *ipfv(double, int); egészet címz mutatóval visszatér függvény pfv: kódmutató változó, fv: konstans kódmutató Értékadás hozzárendeléssel: pfv = fv; Inicializációval: int (*pfv)(double, int) = fv; Prototípus is elég a hozzárendeléshez Meghatározatlan paraméterlistájú függvényt címz mutató is kaphat értéket: int (*mpfv)() = fv; Függvényhívás: int i = fv(1.2, 3); int i = (*pfv)(1.2, 3); Függvény bármilyen függvényre mutató kifejezéssel meghívható
37 Függvény (kód) mutatók Kódmutatókkal végezhet m veletek: címük képzése sizeof operátor operandusai lehetnek végrehajtható rajtuk az indirekció értéket kaphatnak meghívhatók velük függvények paraméterként átadhatók függvényeknek kódmutatótömbök hozhatók létre függvény visszatérési értéke lehet explicit típuskonverzióval más típusra alakíthatóak Nem alkalmazható rájuk mutatóaritmetika, kivéve egyenl ségi relációk (== és!=)
38 Kódmutató paramétert fogadó függvények Rekurzív gyorsrendezés: stdlib.h void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); Szövegsorok sorba rendezése (1/2) #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 100 int hasonlit(const void *, const void *); int getline(char*, int); int main(void) { char* sorok[max]; char sor[max]; int db, hossz, i;
39 Kódmutató paramétert fogadó függvények Szövegsorok sorba rendezése (2/2) printf("szövegsorok olvasása üres sorig vagy EOF-ig,\n" "majd sorba rendezett kiírása.\n"); for(db=0; (hossz=getline(sor, MAX)); db++) { if(!(sorok[db] = (char*)malloc(hossz+1))) break; strcpy(sorok[db], sor); } qsort(sorok, db, sizeof(char*), hasonlit); printf("sorba rendezve:\n"); for(i=0; i<db; i++) { printf("%s\n", sorok[i]); free(sorok[i]); } return 0; } int hasonlit(const void *p1, const void *p2) { return strcmp(*(const char**)p1, *(const char**)p2); } int getline(char *s, int lim) { /* */ }
40 Kódmutató paramétert fogadó függvények Kilépési fv. regisztrálása: stdlib.h int atexit(void (*function)(void)); Normál programbefejezéskor (main() return, exit()) meghívásra kerülnek Hívás a regisztrálással ellentétes sorrendben Hiba esetén nem zérus értéket ad vissza Kilépési függvények kipróbálása #include <stdio.h> #include <stdlib.h> void kfv1(void) { printf("els kilépési függvény!\n"); } void kfv2(void) { printf("második kilépési függvény!\n"); }
41 Kódmutató paramétert fogadó függvények Kilépési függvények kipróbálása int main(void) { printf("kilépési függvények\n"); if(atexit(kfv1)) { fprintf(stderr, "Hiba az 1. fv. regisztrálásakor!\n"); return 1; } if(atexit(kfv2)) { fprintf(stderr, "Hiba a 2. fv. regisztrálásakor!\n"); return 2; } return 0; } Kimenet Kilépési függvények Második kilépési függvény! Els kilépési függvény!
42 Kódmutatótömb, kódmutató visszatérési érték Kódmutatókból álló tömbök is létrehozhatók: Kódmutatótömb int fv1(double, int); int fv2(double, int); int fv3(double, int); int (*pfvt[])(double, int) = {fv1, fv2, fv3}; int i; i = (*pfvt[1])(1.2, 3); Kódmutató visszatérési érték: signal.h void ( *signal(int signum, void (*handler)(int)) ) (int); A függvény neve signal Paraméterei: int (jelzés azonosítója) és void(*handler)(int) (jelzéskezel fv., vagy SIG_IGN, SIG_DFL) V.t. érték: void(*)(int) (mint a 2. paraméter; régi jelzéskezel, vagy SIG_ERR hiba esetén)
43 Kódmutató visszatérési érték Jelzés kezelése #include <stdio.h> #include <stdlib.h> #include <time.h> #include <signal.h> void jk(int jelzes) { printf("%d: Kilépés a programból.\n", jelzes); exit(0); } int main(void) { printf("véletlenszámok el állítása CTRL+C-ig\n"); srand((unsigned)time(null)); if(signal(sigint, jk)==sig_err) { fprintf(stderr, "Jelzéskezel regisztrálása " "sikertelen.\n"); return 1; } while(1) printf("%d\t", rand()); return 0; }
44 Kódmutató visszatérési érték Kimenet./muvelet ^C : Kilépés a programból.
45 Explicit típuskonverzió, típusdeníció (typedef) Típuskonverzió int fv(double, int), i; int (*pfv)(double, int) = fv; void (*vpfv)(double); vpfv = ( void(*)(double) )pfv; (*vpfv)(1.2); /* Vajon m ködni fog? */ pfv = ( int(*)(double, int) )vpfv; i = (*pfv)(1.2, 3); /* OK */ Meglév típusokhoz új nevet deniálhatunk (szinonímák) a typedef segítségével. Általános alak: typedef tipus azonosito; Növeli a programkód hordozhatóságát (típusok paraméterezhet sége), olvashatóság javítása Az új típusnév elfedi a típus jellegét (tömb, függvény, egyszer változó, stb.) A típusdeníció korábbi típusdeníciókat is felhasználhat
46 Típusok és típusdeníció (typedef) Típusok megadása típusdenícióval és anélkül /* i1, i2 egészek */ int i1; typedef int ti; ti i2; /*pi1, pi2 egészet címz mutatók */ int *pi1; typedef int *tpi; tpi pi2; /* ia1, ia2 3 elem, egészekb l álló tömbök */ int ia1[3]; typedef int tia[3]; tia ia2; /* ipa1, ipa2 3 elem mutatótömbök */ int *ipa1[3]; typedef int *tipa[3]; tipa ipa2; /* pia1, pia2 3 elem, egészekb l álló tömböt címz mutatók */ int (*pia1)[3]; typedef int (*tpia)[3]; tpia pia2; /* pf1, pf2 egésszel visszatér, paramétert nem fogadó függvényt címz mutatók */ int (*pf1)(void); typedef int (*tpf)(void); tpf pf2;
47 Típusok és típusdeníció (typedef) Típusok megadása típusdenícióval és anélkül /* f1, f2 értéket vissza nem adó függvények, melyek olyan függvényt címz mutatót várnak paraméterként, mely egésszel tér vissza és double paramétert fogad */ void f1(int(*pf)(double)); typedef void tf(int(*pf)(double)); tf f2; /* fr1, fr2 paramétert nem fogadó függvények, melyek olyan függvényt címz mutatót adnak vissza, ami egész visszatérés és double paramétert fogad */ int (*fr1(void))(double); typedef int (*tfr(void))(double); tfr fr2; /* int atexit(void (*function)(void)); */ typedef void (*ft)(void); int atexit(ft function); /* void (*signal(int signum,void(*handler)(int)))(int); */ typedef void (*jt)(int); jt signal(int signum, jt handler);
48 Típusdeníció (typedef) Bináris keresés: stdlib.h void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); M velet végzése parancssorban megadott értékekkel (1/3) #include <stdio.h> #include <stdlib.h> #include <string.h> typedef double(*fv)(double, double); double osszeadas(double, double); double szorzas(double, double); int hasonlit(const void *, const void *); int main(int argc, char* argv[]) { double eredm; char **n, *nev[] = {"osszeadas", "szorzas"}; fv aktmuv, muvelet[] = {osszeadas, szorzas}; int i;
49 Típusdeníció (typedef) M velet végzése parancssorban megadott értékekkel (2/3) printf("m veletek végzése számokkal\n"); if(argc<3) { printf("használat:./muvelet osszeadas szorzas " "szam1 szam2 \n"); return 1; } n = bsearch(argv+1, nev, sizeof(nev)/sizeof(*nev), sizeof(char*), hasonlit); if(!n) { printf("ismeretlen m velet!\n"); return 2; } aktmuv = muvelet[n-nev]; eredm = atof(argv[2]); for(i=3; i<argc; i++) eredm = (*aktmuv)(eredm, atof(argv[i])); printf("eredmény: %.3f\n", eredm); return 0; }
50 Típusdeníció (typedef) M velet végzése parancssorban megadott értékekkel (3/3) double osszeadas(double a, double b) { return a+b; } double szorzas(double a, double b) { return a*b; } int hasonlit(const void *p1, const void *p2) { return strcmp(*(const char**)p1, *(const char**)p2); } Kimenet./muvelet osszeadas M veletek végzése számokkal Eredmény: /muvelet szorzas M veletek végzése számokkal Eredmény: /muvelet kivonas M veletek végzése számokkal Ismeretlen m velet!
Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r
Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. április 4. Számok rendezése Feladat: Fejlesszük tovább úgy a buborék rendez algoritmust bemutató példát, hogy a felhasználó adhassa meg a
RészletesebbenProgramozás 6. Dr. Iványi Péter
Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak
RészletesebbenA C programozási nyelv V. Struktúra Dinamikus memóriakezelés
A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.
RészletesebbenProgramozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE
Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor
RészletesebbenA C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
RészletesebbenJárműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a
RészletesebbenA C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. május 6. Parancssori paraméterek Parancssorban történ programindításkor a program nevét követ en szóközökkel elválasztva paraméterek (command
RészletesebbenA C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
RészletesebbenMiről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.
Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Dinamikus memóriakezelés Dinamikus tömbök Dinamikus stringek Program kapcsolata a
RészletesebbenProgramozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért
RészletesebbenA C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
RészletesebbenProgramozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)
Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
RészletesebbenFüggvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.
Függvény pointer Több feladat közül futási időben döntöm el, hogy melyiket hajtom végre. A függvényre mutató pointer a függvény kódjának a címére mutat, azon keresztül meghívhatom a függvényt. A pointernek
RészletesebbenSzövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
RészletesebbenProgramozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r
RészletesebbenC programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
RészletesebbenProgramozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
RészletesebbenFüggvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
RészletesebbenMutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában
Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
RészletesebbenA C programozási nyelv VI. Parancssori argumentumok File kezelés
A C programozási nyelv VI. Parancssori argumentumok File kezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv VI. (Parancssori argumentum, file kezelés) CBEV6 / 1 Parancssori
RészletesebbenMérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás
Mérnöki programozás 7 Szerkesztette: dr. Vass Péter Tamás Függvények Függvény (function) egyedi azonosítónévvel ellátott számítási egység. A függvények formájában kidolgozott programkódok viszonylag egyszerűbb
RészletesebbenProgramozás II. 4. Dr. Iványi Péter
Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include
Részletesebben1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
RészletesebbenC programozás. 6 óra Függvények, függvényszerű makrók, globális és
C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,
RészletesebbenProgramozas 1. Strukturak, mutatok
Programozas 1 Strukturak, mutatok Strukturak Tömb: több egyforma típusú változó együttese Struktúra: több különböző típusú de logikailag egybetartozó változó együttese, amelyet az egyszerű kezelhetőség
RészletesebbenProgramozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union
Programozás alapjai C nyelv 10. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -1- Standard függvények Standard függvények amelyeket
Részletesebbenmain int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main
main int main(int argc, char* argv[]) { return 0; main main int int main int return 0; main (int argc, char* argv[]) main #include #include int main(int argc, char* argv[]) { double
RészletesebbenTartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.
Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
RészletesebbenProgramozás 5. Dr. Iványi Péter
Programozás 5. Dr. Iványi Péter 1 Struktúra Véges számú különböző típusú, logikailag összetartozó változó együttese, amelyeket az egyszerű kezelhetőség érdekében gyűjtünk össze. Rekord-nak felel meg struct
RészletesebbenProgramozás I gyakorlat. 10. Stringek, mutatók
Programozás I gyakorlat 10. Stringek, mutatók Karakter típus A char típusú változókat karakerként is kiírhatjuk: #include char c = 'A'; printf("%c\n", c); c = 80; printf("%c\n", c); printf("%c\n",
RészletesebbenObjektumok tulajdonságai
Programozás I. Széchenyi István Egyetem, Gy r 2013. november 4. Objektumok attribútumai objektum Konstans vagy változó érték(ek)et tartalmazó, azonosítható memóriaterület. deklaráció Kapcsolatot teremt
RészletesebbenKeresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala
RészletesebbenInformációs Technológia
Információs Technológia A C programozási nyelv elemei, rendező algoritmusok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010.
RészletesebbenProgramozás I. 5. Előadás: Függvények
Programozás I 5. Előadás: Függvények Függvény Egy alprogram Egy C program általában több kisméretű, könnyen értelmezhető függvényből áll Egy függvény megtalálható minden C programban: ez a main függvény
RészletesebbenProgramozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 31. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 31. Városok közötti távolság Feladat: két város nevének beolvasása, városok közötti távolság megjelenítése. Kilépés azonos városok
RészletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
RészletesebbenProgramozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények Dr. Bécsi Tamás 6. Előadás Bevezetés Egy idő után az egyetlen main(){ függvénnyel megírt programunk túl nagy méretű lesz. Vannak
RészletesebbenProgramozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)
Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index
RészletesebbenC memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.
C memóriakezelés Ez a kis segédanyag az adatszerkezetek órán használt eszközök megértését hivatott elősegíteni. A teljesség igénye nélkül kerül bemutatásra a mutató típus és a dinamikus memóriakezelés.
RészletesebbenMutatók és mutató-aritmetika C-ben március 19.
Mutatók és mutató-aritmetika C-ben 2018 március 19 Memória a Neumann-architektúrában Neumann-architektúra: a memória egységes a címzéshez a természetes számokat használjuk Ugyanabban a memóriában van:
RészletesebbenProgramozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 27. Háromszög szerkeszthet ségének ellen rzése ANSI C (C89) megvalósítás #i n c l u d e i n t main ( v
Részletesebben10. gyakorlat. Pointerek Tárolási osztályok
10. gyakorlat Pointerek Tárolási osztályok Pointer A pointer egy mutató egy memóriacellára, egyfajta "parancsikon", csak nem fájlokra, hanem változókra. Létrehozás: tipus * név;, ahol a típus a hivatkozott
Részletesebben1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3
Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás
Részletesebben/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;
1. Írjunk programot, amely függvény alkalmazásával meghatározza n a értékét, (a az n-edik gyök alatt), az általunk megadott pontossággal, iterációval. Az iteráció képlete a következő: ahol : n-1 x uj =
RészletesebbenA verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása
A verem (stack) A verem egy olyan struktúra, aminek a tetejére betehetünk egy új (vagy sorban több) elemet a tetejéről kivehetünk egy (vagy sorban több) elemet A verem felhasználása Függvény visszatérési
RészletesebbenTípusok és konstansok
Programozás I. Széchenyi István Egyetem, Gy r 2013. október 3. Szimbólumok Forráskód részei: szimbólumok (szintaktikai egységek, tokenek) fehér karakterek (összevonás, gyelmen kívül hagyás) Szimbólumok:
RészletesebbenKivételkezelés a C++ nyelvben Bevezetés
Kivételkezelés a C++ nyelvben Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Kivételkezelés a C++ nyelvben CPP9 / 1 Hagyományos hibakezelés Függvény visszatérési értéke (paramétere) hátrányai:
RészletesebbenProgramozás alapjai 9.Gy: Struktúra 2.
Programozás alapjai 9.Gy: Struktúra 2. Ördögi részletek P R O A L A G 35/1 B ITv: MAN 2018.11.10 Euró árfolyam statisztika Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR).
RészletesebbenProgramozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók Dr. Bécsi Tamás 7. Előadás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza.
RészletesebbenProgramozás C nyelven (10a. ELŐADÁS) Sapientia EMTE
Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE 2015-16 1 Karakterláncok A karakterláncokat char-tömbökben tároljuk. Egy karakterlánc végét a karakterlánc-végjel jelzi: \0 char s[10] = sapi ;... s
RészletesebbenProgramozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
RészletesebbenOOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
RészletesebbenJava II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
RészletesebbenA C programozási nyelv II. Utasítások. A függvény.
A C programozási nyelv II. Utasítások. A függvény. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv II (Utasítások, fuggvények) CBEV2 / 1 Kifejezés utasítás Kifejezés utasítás, blokk
RészletesebbenBevezetés a C++ programozási nyelvbe
Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet
RészletesebbenBevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa
Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C programozási nyelvbe Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Oktatási segédletek a levelező műszaki informatikus hallgatók
RészletesebbenStruktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:
Struktúrák (struct) A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. A struktúra definíciójában leírjuk, hogy a struktúra hogyan épül fel. A struktúra
RészletesebbenProgramozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 15. Leghosszabb 3D vektorok kikeresése 1 #i n c l u d e 2 #i n c l u d e 3 #d e f i n e MAX 1000
Részletesebben6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések
RészletesebbenM veletek és kifejezések
Programozás I. Széchenyi István Egyetem, Gy r 2013. szeptember 29. M veletek & kifejezések M veletek az operandusok száma szerint: Egyoperandusos, operátor operandus, pl. 6, sizeof(long) Kétoperandusos,
RészletesebbenBevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu
RészletesebbenProgramozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
Részletesebben11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.
11. gyakorlat Sturktúrák használata I. Új típus új műveletekkel 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. typedef struct datum { int ev; int ho; int nap;
RészletesebbenProgramozás C nyelven (9. ELŐADÁS) Sapientia EMTE
Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE 2015-16 1 POINTEREK ismétlés double x = 3.14, *px = &x; unsigned char *p, *p1, *p2; p1 = (unsigned char*)px; p2 = p1 + sizeof(double); for ( p = p2-1 ;
RészletesebbenJava II. I A Java programozási nyelv alapelemei
Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve
Részletesebben7/8. gyakorlat Karaktertömbök és sztringkezelés
7/8. gyakorlat Karaktertömbök és sztringkezelés 1. feladat: Karaktertömb kezelése Egy beolvasott karaktert lineáris kereső eljárással keressen meg az angol ábécében (az ábécé betűit tárolja inicializált
RészletesebbenProgramozás I gyakorlat
Programozás I. - 9. gyakorlat Sztringkezelés, mutatók Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 2, 2009 1 tar@dcs.vein.hu Tar
Részletesebben10. gyakorlat Tömb, mint függvény argumentum
10. gyakorlat Tömb, mint függvény argumentum 1. feladat: A 6. gyakorlat 1. feladatát oldja meg a strukturált programtervezési alapelv betartásával, azaz minden végrehajtandó funkciót külön függvényben
RészletesebbenProgramozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
RészletesebbenProgramozás C nyelven (10. ELŐADÁS) Sapientia EMTE
Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE 2015-16 1 const ódosító jelző int x = 1914; // I. világháború ++x; // HELYES, mert x változó Vedd észre, hogy bár: x *p ++x helyes és ++(*p) helytelen
RészletesebbenInformatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
RészletesebbenProgramozási Nyelvek: C++
Programozási Nyelvek: C++ Gyakorló feladatkönyv Umann Kristóf #include "CppStudent.h" int main() { CppStudent *reader = new CppStudent(); reader->readbook(); while(!reader->doesunderstand()) { reader->exercise();
RészletesebbenA PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere
2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda
RészletesebbenProgramozás alapjai 1. (BMEVIEEA100)
Programozás alapjai 1. (BMEVIEEA100) Gyakorlat anyaga az 6. oktatási héten (4-5. gyakorlat) A 7. oktatási hét péntekje előbbre csúszik a 6. hét szombatjára, ezért a 7. heti anyagot a szokottnál előbb kapjátok
RészletesebbenMit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
RészletesebbenA helyi információ és az id kezelése
A helyi információ és az id kezelése Programozás II. Széchenyi István Egyetem, Gy r 2014. május 28. Helyi információ Helyi információ elemei ( helyi kategóriák): ország nyelv alkalmazott karakterkódolás
RészletesebbenC# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
Részletesebbenértékel függvény: rátermettségi függvény (tness function)
Genetikus algoritmusok globális optimalizálás sok lehetséges megoldás közül keressük a legjobbat értékel függvény: rátermettségi függvény (tness function) populáció kiválasztjuk a legrátermettebb egyedeket
RészletesebbenAlgoritmizálás + kódolás C++ nyelven és Pascalban
Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t
RészletesebbenApple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
RészletesebbenInformációs Technológia
Információs Technológia (Struktúra, mutatók, függvényhívás) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 október 14/21. Struktúra
RészletesebbenMegoldott programozási feladatok standard C-ben
Megoldott programozási feladatok standard C-ben MÁRTON Gyöngyvér Sapientia Erdélyi Magyar Tudományegyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro Tartalomjegyzék
RészletesebbenProgramozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
RészletesebbenKivételek, kivételkezelés a C++ nyelvben
2009. Kivételek, kivételkezelés a C++ nyelvben Haladó C++ programozás Kurucz Attila ELTE - IK 2009.06.09. Tartalomjegyzék Tartalomjegyzék... 2 Mi a kivételkezelés?... 3 Alapfogalmak... 3 Kivétel... 3 Try
RészletesebbenAlprogramok, paraméterátadás
ELTE Informatikai Kar, Programozási Nyelvek és Fordítóprogramok Tanszék October 24, 2016 Programozási nyelvek Alprogramok Függvények, eljárások Metódusok Korutinok stb. Alprogramok Alprogram: olyan nyelvi
Részletesebben8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
Részletesebbentétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is
A tétel (record) tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel elemei mezők. Például tétel: személy elemei: név, lakcím, születési
RészletesebbenProgramozás alapjai 8.Gy: Program struktúra
Programozás alapjai 8.Gy: Program struktúra Elvarázsolt matekóra P R O A L A G 32/1 B ITv: MAN 2018.11.02 Programozás történelem Kezdetben egy program egyetlen kódsorozat volt (ún. monolitikus program)
RészletesebbenProgramozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
Részletesebben5. Gyakorlat. struct diak {
Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus
RészletesebbenPHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT
alapjai, bevezetés Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu PHP Personal Home Page (Tools) Script nyelv -> interpretált Elsősorban weboldal (dinamikus) tartalmak előállítására
RészletesebbenOrszágzászlók (2015. május 27., Sz14)
Országzászlók (2015. május 27., Sz14) Írjon programot, amely a standard bemenetről állományvégjelig soronként egy-egy ország zászlójára vonatkozó adatokat olvas be! Az egyes zászlóknál azt tartjuk nyilván,
RészletesebbenProgramozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
RészletesebbenAdatszerkezetek és algoritmusok
Adatszerkezetek és algoritmusok 1 Bevezetés Adatszerkezet egyszerű vagy összetett alapadatok rendszerének matematikai, logikai modellje elég jó ahhoz, hogy tükrözze a valós kapcsolatokat elég egyszerű
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract
Részletesebben