© Tóth Ákos, Óbudai Egyetem, 2010

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Vezérlő utasítások.
Programozás I. Szelekciók: egy- és kétágú szelekció
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Ismétlés: Döntések a feltétel egy logikai kifejezés if feltétel then
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
Objective- C Bereczki Gréta Tamara
A C nyelv utasításai. Kifejezés+ ; Utasítás printf("Hello")printf("Hello"); a=b+ca=b+c; fuggveny(a,b)fuggveny(a,b); Blokkok: több utasítás egymás után,
3. előadás (2005. március 1.) Utasítások, tömbök
Programozási Nyelvek (C++) Gyakorlat Gyak 01.
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
JavaScript.
Programozás alapjai.
Dinamikus tömbök.
Sztringek.
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Programozás I. Horváth Ernő.
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
C++ alapok, harmadik óra
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Vizuális és web programozás II.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás C# -ban Elágazások.
A Pascal programozási nyelv alapjai
Ismétlés A pascal program szerkezete: program programnev; Programfej
Félévi típus feladatok
Feladatok: Algoritmusok Pszeudokódban
A Pascal programozási nyelv alapjai
Klasszikus Programozás a FoxPro-ban FELADATOK
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Nevezetes algoritmusok
Java programozási nyelv Vezérlési szerkezetek
Algoritmusok.
Programozási tételek.
Objektum orientált programozás
Programozási tételek.
Objektum orientált programozás
Programozás I. Típus algoritmusok
Egyágú elágazás Szintaxis: if (feltétel)
Feladatok (értékadás)
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Excel programozás (makró)
Fájlkezelés Programozási tételek
Struktúrák a C nyelvben 1 Akkor használjuk, ha az egy egyedre jellemző különböző típusú adatokat együtt akarjuk tárolni. Lényegében típusdeklaráció. A.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozási tételek.
Előadás másolata:

© 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 © Tóth Ákos, Óbudai Egyetem, 2010 Toth.akos@bgk.uni-obuda.hu 1

© 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; } 1 2 3 4 © szerző, intézmény, évszám em@il 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; } 1 2 3 4 © szerző, intézmény, évszám em@il 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 ==, !=, <, <=, >, >= © szerző, intézmény, évszám em@il 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ó © szerző, intézmény, évszám em@il 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; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 © szerző, intézmény, évszám em@il 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; } 1 2 3 4 © szerző, intézmény, évszám em@il 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” © szerző, intézmény, évszám em@il 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; 1 2 3 4 © szerző, intézmény, évszám em@il 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 © szerző, intézmény, évszám em@il 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 © szerző, intézmény, évszám em@il 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 © szerző, intézmény, évszám em@il dátum/idő

© szerző, intézmény, évszám Prímszám keresés Az első 10 000 prímszám előállítása db=0; for (i=2;db<10000;i++) { s=0; for(j=2;j<i;j++) { if ((i % j) ==0) {s=1;} } if (s==0) {a[db]=i;db++; printf("%d\n",a[i]) 1 2 3 4 © szerző, intézmény, évszám em@il dátum/idő

© szerző, intézmény, évszám Prímszám keresés Az első 10 000 prímszám előállítása hatékonyabban db=0; for (i=3;db<MAX;i=i+2) // csak a páratlan számok { s=0; for(j=2;j<ceil(sqrt(float(i)))+1;j++) // csak a gyökéig { if ((i % j) ==0) {s=1; break;} } if (s==0) {a[db]=i;db++; printf("%d\n",a[i]) 1 2 3 4 © szerző, intézmény, évszám em@il dátum/idő

© szerző, intézmény, évszám Prímszámkeresés { 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; © szerző, intézmény, évszám em@il 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; 1 2 3 4 5 6 7 © szerző, intézmény, évszám em@il 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 © szerző, intézmény, évszám em@il 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(); 1 2 © szerző, intézmény, évszám em@il 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); 1 2 3 4 5 6 7 8 9 10 11 12 13 © szerző, intézmény, évszám em@il 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]); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 © szerző, intézmény, évszám em@il 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 © szerző, intézmény, évszám em@il 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]) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 © szerző, intézmény, évszám em@il 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;} 1 2 3 4 5 6 7 © szerző, intézmény, évszám em@il 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); 1 2 3 4 5 6 7 8 9 © szerző, intézmény, évszám em@il dátum/idő

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;} 1 2 3 4 6 7 8 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) ); 1 2 3 4 © szerző, intézmény, évszám em@il dátum/idő

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 © szerző, intézmény, évszám em@il dátum/idő

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); 1 3 4 5 6 7 8 9 © szerző, intézmény, évszám em@il dátum/idő

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); 1 2 3 4 5 6 7 © szerző, intézmény, évszám em@il dátum/idő

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); 1 2 3 4 5 6 7 © szerző, intézmény, évszám em@il 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<MAX;i++) printf(" a [ %d ] = %d \n", i, a[i]); for (int i=0;i<MAX;i++) a[i] =MAX -i; delete a; // felszabadítás a =NULL; // mutató nullázása 1 2 3 4 5 6 7 © szerző, intézmény, évszám em@il 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<n;i++) printf(" a [ %d ] = %d \n", i, a[i]); } int _tmain(int argc, _TCHAR* argv[]) { int *a = new int[MAX]; for (int i=0;i<MAX;i++) a[i] =MAX -i; kiir(a,MAX); delete a; a =NULL; 1 3 4 5 6 7 8 9 10 11 © szerző, intézmény, évszám em@il 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<n;i++) printf(" a [ %d ] = %d \n", i, a[i]); } void kiir3( int *a, int n) printf(" a [ %d ] = %d \n",i, *a+i); 1 3 4 5 6 7 8 9 10 11 © szerző, intézmény, évszám em@il 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 ==, !=, <,>,<=, >=, <> © szerző, intézmény, évszám em@il dátum/idő

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

35