Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

© Tóth Ákos, Óbudai Egyetem, 2010 C programozás C alapok Hello Vilag Számolás Elágazás Ciklusok Egydimenziós tömb Kétdimenziós.

Hasonló előadás


Az előadások a következő témára: "© Tóth Ákos, Óbudai Egyetem, 2010 C programozás C alapok Hello Vilag Számolás Elágazás Ciklusok Egydimenziós tömb Kétdimenziós."— Előadás másolata:

1 © Tóth Ákos, Óbudai Egyetem, 2010 C programozás C alapok Hello Vilag Számolás Elágazás Ciklusok Egydimenziós tömb Kétdimenziós tömb Függvények Mutatók

2 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Helló Világ – Kiírás printf paranccsal – #include – printf() kiírás – getch() billentyűleütésre várás – A return 0 jelenti hogy rendben végrehajtódott #include ”conio.h” int _tmain(int argc, _TCHAR* argv[]) {printf(„ Hello Vilag \n "); getch(); return 0; }

3 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Egyszerű számolás (egész típus) – Kiírás printf paranccsal #include ”conio.h” int _tmain(int argc, _TCHAR* argv[]) { int x,y,z ; printf("Kerem az elso szamot"); scanf("%i",&x); printf("\n Kerem a masodik szamot"); scanf("%i",&y); printf("\n Az osszeg %d", x+y); printf("\n Az kulonbseg %d", x-y); printf("\nA szorzat %d", x*y); printf("\nA hanyados %d", x /y); printf("\nA maradek %d", x % y); getch();return 0; }

4 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Elágazás – if (kifejezés) { utasítás1; utasitas2 ; } else{ utasitas3; utasitas4 } Logikai operátorok – És && – Vagy || (alt W, alt 124) – Relációs operátorok – ==, !=,, >=

5 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Elágazás Olvasson be egy számot, írja ki hogy nagyobb e 10 nél vagy sem – Írjon programot ami egy beírt évszámról eldönti hogy szökőév-e. Szökőév ha 4 el osztható, 100 al nem osztható, 400 al osztható

6 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Elágazás – Írjon programot ami egy beírt évszámról eldönti hogy szökőév-e. Szökőév ha 4 el osztható, 100 al nem osztható, 400 al osztható #include ”conio.h” int ev; int Oszthato4el, Oszthato100al, Oszthato400al; printf("Kerem adja meg az evszamot"); scanf("%i", &ev); Oszthato4el = ev % 4; Oszthato100al = ev % 100; Oszthato400al = ev % 400; if ((Oszthato4el ==0 && Oszthato100al !=0) || Oszthato400al==0) printf("Ez szokoev"); else printf("Nem szokoev"); getch(); return 0;

7 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Elágazás – Feltételkezelő operátor feltétel ? Teljesül_ág: Nem_teljesül_ág #include ”conio.h” int _tmain(int argc, _TCHAR* argv[]) { int x,y; scanf("%i", &x); printf("x = %d\n", x); y = (x > 10) ? 1: 0; printf("y = %d \n", y); // semmi ertelme, csak illusztráció printf("Elojel =%i \n", (x <0) ? -1: (x==0) ? 0:1); // kiirja az előjelét getch(); return 0; }

8 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Elágazás – Többirányú elágazás switch (kifejezes) { case érték1 :utasítás1 utasítás2 break; case érték2 :utasítás3 utasítás4 break; default :utasítás1 utasítás2 break; } – Írjunk programot ami egy valtozó értékét vizsgálva, ha az érték 1 akkor kiírja hogy „Egy” ha 2 akkor kiírja hogy „Kettö”, 3, 4, 5 különben írja ki hogy „érvénytelen”

9 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Ciklusok – for (kezd;veg;noveles) { } { int DB, i, Szazalek; int SzazalekOsszeg =0; int EgyesekSzama=0; float Atlag; printf("Hany százalekot kivan beirni?"); scanf("%i", &DB); for (int i =1; i<=DB;i++){ printf ("Kerem a %i edik elemet",i); scanf("%i",&Szazalek); SzazalekOsszeg =SzazalekOsszeg+Szazalek; if (Szazalek <50) EgyesekSzama++; } Atlag = (float) SzazalekOsszeg /DB; printf("Az atlag %.2f\n", Atlag); printf("Az elegtelenek szama %i\n", EgyesekSzama); getch(); return 0;

10 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Egydimenziós tömbök – int TombNev[meret] 0..meret-1 db egész szám. Elérés TombNev[1] {}{} 1

11 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Tömbök – int TombNev[meret] 0..meret-1 db egész szám. Elérés TombNev[1] Feladatok – Oldjuk meg az előző feladatot tömbökkel – Válasszuk ki a legnagyobb és a legkisebb pontszámot – Rendezzük növekvő sorrendbe az értékeket – Számoljon gyakoriságot, hányszor volt 1, 2,..100 –as érték. A nemnulla elemeket írja ki

12 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Tömbök – Töltsünk fel 1 dimenziós tömböt 1, 2, 3, N értékekkel! Írassuk ki a tömböt a képernyőre ! – Állítson elő két N dimenziós, egész elemű tömböt Az első páros számokat tartalmazzon a második az első N prímszámot. – Írja ki a két vektor értéket a képernyőre egymás mellé 2 oszlopba – Számolja ki a két vektor összegét, és 3 oszlopba írja ki a képernyőre

13 verziódátum/idő © szerző, intézmény, évszám Prímszám keresés Az első prímszám előállítása db=0; for (i=2;db<10000;i++) { s=0; for(j=2;j

14 verziódátum/idő © szerző, intézmény, évszám Prímszám keresés Az első prímszám előállítása hatékonyabban db=0; for (i=3;db

15 verzió Prímszámkeresés dátum/idő © szerző, intézmény, évszám { int DB, i, Szazalek; int SzazalekOsszeg =0; int EgyesekSzama=0; float Atlag; printf("Hany százalekot kivan beirni?"); scanf("%i", &DB); for (int i =1; i<=DB;i++){ printf ("Kerem a %i edik elemet",i); scanf("%i",&Szazalek); SzazalekOsszeg =SzazalekOsszeg+Szazalek; if (Szazalek <50) EgyesekSzama++; } Atlag = (float) SzazalekOsszeg /DB; printf("Az atlag %.2f\n", Atlag); printf("Az elegtelenek szama %i\n", EgyesekSzama); getch(); return 0;

16 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Többdimenziós tömbök. Például int M[4][4] 5*5 os egész számokból álló tömb Int M[4][5] ={{},{},{},{}} kezdeti értékadás, lehet részleges is { int M [5][5] = {{1,2},{3,4}}; for (int i=0; i<5;i++){ for (int j=0; j<5;j++){ printf("%4i", M[i][j]); } printf("\n"); } getch(); return 0; }

17 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Tömbök (többdimenzió) – Állítson elő két 3*3 dimenziós, egész elemű tömböt Az első páratlan számokat tartalmazzon a második az indexek összegét – Írja ki a két tömb értéket a képernyőre egymás alá, formátumozva – Számolja ki a két tömb összegét, és írja ki a képernyőre A B A+B formában – Számolja ki a két tömb szorzatát, és írja ki a képernyőre A B A*B formában

18 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Függvények – C –ben csak függvények vannak, eljárások nincsenek. A függvények érték szerint paraméterezhetőek, – void : nincs paraméter, nincs visszaadott érték, ha megpróbálnánk akkor hiba void uzenetKiiiras(void) { printf(„ csak kiirok valamit\n”); // lehetne return 0, de ha nem irunk semmit akkor az ua-t jelenti } int main (void) { printMessage(); } 1212

19 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Függvények – Paraméterek, lokális változók – Vegyük észre hogy x,y értéke nem változott meg int lnko(int u, int v) { int temp; while (v!=0){ temp =u %v; u=v; v =temp; } return u;} int _tmain(int argc, _TCHAR* argv[]) { int x,y, eredmeny ; printf ("\nKerem az elso szamot"); scanf("%i",&x); printf ("Kerem a masodik szamot"); scanf("%i",&y); eredmeny = lnko(x,y); printf ("x = %i y = %i legnagyobb kozos oszto %i",x,y,eredmeny); }

20 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Függvények, tömbök – Írjunk függvényt ami megkeresi a tömb minimális elemét int minimum (int ertekek[10]) { int minErtek, i; minErtek =ertekek[0]; for (i=1;i<10;++i){ if (ertekek[i]< minErtek); minErtek=ertekek[i]; ertekek[i] =0; //bug} return minErtek; } int _tmain(int argc, _TCHAR* argv[]) { int pontok[10]={3,2,10,23,4,5,1,21,32,1}; int i, minPont; int minimum (int ertekek[10]); for (i=0;i<10;i++){ printf("%i ",pontok[i]); } // kiírjuk előtte minPont= minimum(pontok); printf ("\nminimum pont = %i \n",minPont); for (i=0;i<10;i++){ printf("%i ",pontok[i]); }

21 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Ajánlások a függvényekkel kapcsolatban – Ha nem definiálunk viszatérési értéket, akkor int lesz – Ha int et szeretnénk akkor irjuk oda hogy int.et szeretnénk – Ha tudjuk hogy nincs visszatérési érték akkor irjunk void-ot – A biztonság kedvéért deklaráljunk minde fuggvenyt a program elején, még akkor is ha abban a modulban van (később esetleg átrakjuk máshova) Feladat – Írjunk abszolút érték számító függvényt

22 verziódátum/idő © szerző, intézmény, évszám C Programozás (1) Függvények, többdimenziós tömbök – Írjunk fv ami a tömb összes értékét egy értékkel megszorozza void skalarSzorzas(int matrix [3][5], int ertek); void kiirMatrix(int matrix [3][5])

23 verziódátum/idő © szerző, intézmény, évszám C Programozás Mutatók Mutatók – int count =20; // közvetlen elérés – int *int_mutato; // indirekt elérés * jelöli hogy az int_mutato egy egész értékre mutat – &count a count változó címe int count =10,x; int *int_pointer; // egészre mutat int_pointer =&count; // int_pointer oda fog mutatni ahova count x=*int_pointer; // x megkapja az int_pointer által mutatott értéket printf("count = %i, x = %i \n", count, x); getch(); return 0;}

24 verziódátum/idő © szerző, intézmény, évszám C Programozás Mutatók Mutatók – Egy összetettebb példa mutatók alkalmazására – A 7. sorban látszik, hogy eléggé átláthatatlan is lehet a kód int i1, i2, i3; int *p1, *p2; i1 =2; p1=&i1; i2=*p1 /2 +2; p2=p1; i2*=*p1++**p2/ *p1*i1**p2++; printf("i1 =%i,",i1); printf("i2 =%i,",i2);

25 verziódátum/idő © szerző, intézmény, évszám C Programozás Mutatók. Tömbök Tömb elemeinek összege mutatók használatával – Egy összetettebb példa mutatók alkalmazására – A hívó eljárás int tombOsszeg(int *tomb, const int n) {int sum =0; int * const tombVeg =tomb+n; // konstans mutató, nem szeretnénk ha megváltozna az értéke for (;tomb < tombVeg;tomb++) sum+=*tomb; return sum;} int _tmain(int argc, _TCHAR* argv[]) int tombOsszeg(int *tomb, const int n); int ertekek[10] ={2,4,18,6,5,3,2,2,-10}; printf ("Az osszeg %i \n", tombOsszeg(ertekek,10) );

26 verziódátum/idő © szerző, intézmény, évszám C Programozás Bitműveletek A bitműveletek – & bitenkénti ÉS, a = b & c; – | bitenkénti VAGY a = b | c; – ^ bitenkénti KIZÁRÓ VAGY a=b^c; – ~ bitenkénti NEGÁCIÓ a =~a – << eltolás balra a = a << 1 – >> eltolás jobbra a = a >> 1 printf() kiírási paraméterei – %o oktális – %x hexadecimális Érték megadás – unsigned int a1 = 077u; // oktálisan előjel nélküli – Unsigned int a2 = 0xAA; // hexadecimalisan

27 verziódátum/idő © szerző, intézmény, évszám C Programozás Bitműveletek Érték megadás, kiírás oktálisan, hexadecimálisan int _tmain(int argc, _TCHAR* argv[]) unsigned int a, b, c; a =10; b =010; c = 0x10; printf("a b c decimalisan %d %d %d \n", a, b,c ); printf("a b c oktalisan %o %o %o \n", a, b, c); printf("a b c hexadecimalisan %X %X %X \n", a, b, c);

28 verziódátum/idő © szerző, intézmény, évszám C Programozás Fájl kezelés Tömb elemeit fájlba írjuk – A hívó eljárás int _tmain(int argc, _TCHAR* argv[]) FILE *stream; int tomb[10] ={0,1,2,3,4,5,6,7,8,9}; fopen_s(&stream, "adat.txt", "w"); for (i=0;i<10;i++) { fprintf(stream, "%d", tomb[i]); } fclose(stream);

29 verziódátum/idő © szerző, intézmény, évszám C Programozás Fájl kezelés Tömb elemeit fájlból beolvassuk – A hívó eljárás int _tmain(int argc, _TCHAR* argv[]) FILE *stream; int tomb[10] ; fopen_s(&stream, "adat.txt", "r"); for (i=0;i<10;i++) { fscanf(stream, "%d", &tomb[i]); } fclose(stream);

30 verziódátum/idő © szerző, intézmény, évszám C Programozás Tömb dinamikusan – A hívó eljárás #define MAX 100 // konstans megadás, nem lehet más a sorban int _tmain(int argc, _TCHAR* argv[]) { int *a = new int[MAX]; // foglalás for (int i=0;i

31 verziódátum/idő © szerző, intézmény, évszám C Programozás Tömb dinamikusan, kiírás függvénnyel – A hívó eljárás #define MAX 10 void kiir( int *a, int n){ for (int i=0;i

32 verziódátum/idő © szerző, intézmény, évszám C Programozás Tömb dinamikusan, kiírás másképp – A hívó eljárás void kiir2( int a[], int n) { for (int i=0;i

33 verziódátum/idő © szerző, intézmény, évszám Függelék printf() paraméterei – %i, %2i integer – %f %7.3f float Műveletek (egész): + - * / % (mod) Kiértékelés sorrend megváltoztatás () Relációs operátorok ==, !=,, =, <>

34 verziódátum/idő © szerző, intézmény, évszám Irodalomjegyzék Stephen G. Kochan : Programfejlesztés C nyelven. Kiskapu, 2008

35


Letölteni ppt "© Tóth Ákos, Óbudai Egyetem, 2010 C programozás C alapok Hello Vilag Számolás Elágazás Ciklusok Egydimenziós tömb Kétdimenziós."

Hasonló előadás


Google Hirdetések