C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Hasonló dokumentumok
Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

A C programozási nyelv II. Utasítások. A függvény.

Programozás II. 2. Dr. Iványi Péter

Programozás C és C++ -ban

Java II. I A Java programozási nyelv alapelemei

Programozás I. 5. Előadás: Függvények

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A C programozási nyelv I. Bevezetés

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

A programozás alapjai 1 Rekurzió

A C programozási nyelv I. Bevezetés

A C programozási nyelv III. Pointerek és tömbök.

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

A C programozási nyelv III. Pointerek és tömbök.

Alprogramok, paraméterátadás

Java II. I A Java programozási nyelv alapelemei

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Programozás alapjai 9.Gy: Struktúra 2.

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

10. gyakorlat Tömb, mint függvény argumentum

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

C programozási nyelv Pointerek, tömbök, pointer aritmetika

5. Gyakorlat. struct diak {

Bevezetés a C++ programozási nyelvbe

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Fü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. Függvények. Függvények(2)

1. Alapok. Programozás II

Programozás 6. Dr. Iványi Péter

C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Programozás II. 4. Dr. Iványi Péter

C programozási nyelv

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

Pénzügyi algoritmusok

Mintavételes szabályozás mikrovezérlő segítségével

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Információs Technológia

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozás 5. Dr. Iványi Péter

Stack Vezérlés szerkezet Adat 2.

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

A C# programozási nyelv alapjai

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutató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 I gyakorlat. 10. Stringek, mutatók

Programozás I. gyakorlat

A C programozási nyelv IV. Deklaráció és definíció

Programozás C++ -ban

Típusok és konstansok

3. Osztályok II. Programozás II

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Informatika terméktervezőknek

C++ programozási nyelv Konstruktorok-destruktorok

Programozás C++ -ban 2007/1

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Programozás 1. Dr. Iványi Péter

7. fejezet: Mutatók és tömbök

Memóriakezelés, dinamikus memóriakezelés

C programozás. 1 óra Bevezetés

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

Pénzügyi algoritmusok

Programozás II. Fájlkezelés

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Programozás alapjai. 7. előadás

Programozás alapjai. 5. 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

Bevezetés a programozásba. 9. Előadás: Rekordok

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

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

Programozás alapjai 8.Gy: Program struktúra

Mutatók és mutató-aritmetika C-ben március 19.

és az instanceof operátor

Kivételkezelés a C++ nyelvben Bevezetés

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Programozás II gyakorlat. 4. Öröklődés

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Átírá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, kis és nagy betű számít!!!) pl.: szam, _alap 2. Deklaráció és definíció a.) Minden névről meg kell mondani mire szeretnénk használni, mert így a fordító nem tud mit kezdeni az adott névvel. DEKLARÁCIÓ A név tulajdonságait (típus, tárolási osztály, láthatóság) közöljük a fordítóval. b.) Ha az a cél, hogy a deklarációnak megfelelő objektum is létrejöjjön a memóriában akkor DEFINÍCIÓT kell alkalmazni.

Tehát a DEFINÍCIÓ olyan DEKLARÁCIÓ, amely helyfoglalással jár. Objektum: olyan memóriaterület jelöl, amely egy vagy több értéket tartalmaz.

3. Függvények Mire jók a függvények - tagolásra, struktúráltság növelésére - külső, könyvtári függvények használatára Definíció nem Deklaráció Függvénydefiníció alakja: <visszatérési típus> név ( <paraméterlista> ) { <lokális definíciók és deklarációk> <utasítások> }

Pl.: double LegkisebbTombben (double t[], int n) { int x; double min; for (min = t[0], x=1; x < n; x++) if (t[x] < min) min = t[x]; return min; /* visszatérés és érték megadása */ } /* LegkisebbTombben () */ Hívása pl.: main () /* ez is egy speciális függvény... */ {... #define tombmeret 2000 double dt [tombmeret], mm; int x;... x=...; mm = LegkisebbTombben (dt,x*2-1); /* fv. hívása */... }

Függvénydeklaráció alakja: <visszatérési típus> név ( <paraméterlista> ); azaz csak a függvényfejet adjuk meg, utána pontosvessző. Ezt nevezik fv. prototípusnak is. Pl.: double Egyik (int p1, double p2); double Egyik (int, double); megadja azokat az információkat, melyek a függvény hívásához kellenek: függvény neve, visszatérési típusa, paraméterek száma és típusa, de nem adja meg a függvény által végrehajtandó utasításokat.

double Egyik (int p1, double p2); ; van a végén: deklaráció void Masik (char *p1, unsigned t[]) : definíció, mert blokk követi: {... if (Egyik(...) >0)... : Egyik hívása... } /* Masik() */ double Egyik (int p1, double p2) : Egyik definíciója {... Masik (... ); : Masik hívása... } /* Egyik() */

C-ben csak értékparaméter van! Visszaadott érték: - függvény visszatérési értékével - globális, azaz file-szintű változóval - pointer formális-, cím aktuális argumentum segítségével: Pl. tömbben legkisebb és legnagyobb elem meghatározása: nincs visszatérési értéke:

void MinMax (double t[], int n, double *minp, double *maxp) { int x; *minp = *maxp = t[0]; /* első elem értéke a minp és maxp által mutatott helyekre kerül */ for (x=1; x<n; x++) { double tx=t[x]; /* blokk lokális változója */ if (tx < *minp) *minp=tx; else if (tx > *maxp) *maxp=tx; } /* for x */ return; /* itt elhagyható */ } Hívása pl.: ff (...) :egy másik függvény, MinMax után { double dd [...], min, max;... MinMax (dd, 100, &min, &max); :dd, min és max címét adja át, az eredmény min-be és max-ba kerül... } /* ff() */ MinMax() végrehajtása alatt: minp *minp min maxp *maxp max Megjegyzés: a pointer-tömb rokonság miatt a függvény feje lehetne ilyen is: void MinMax (double *t, int n, double *minp, double *maxp)

Függvények további szabályai A visszatérési érték alapértelmezése int, lehet pointer, de nem lehet függvény vagy tömb. Pl.: ff (float f)... int ff (float f)... Függvény csak file-szinten definiálható, blokkban lokális függvény nem definiálható, de deklarálkató, pl.:

int f2 (double p) { : file szintű definíció, benne: void f3 (float fp); : lokális függvény Deklaráció: OK. } int Negyzet (int x) { return x*x; } : HIBA: fv. definíció csak file szinten lehet... f3 (3.2*f1("szöveg")); : f3 és f1 hívása char *f4 (void) { : paraméter nélküli függvény... } f3(4.1f);... : HIBA: f3 itt nem ismert void f3 (float fp) {...} : f3 definíciója Egymást követő, azonos típusú formális paraméterek típusát külön-külön ki kell írni, pl.: void fx (int p1, p2) void fx (int p1, int p2) HIBÁS!!! Helyes

Paraméter nélküli függvény definíciója illetve deklarációja pl.: void f4 (void)... : paraméter nélküli függvény Ennek hívása:... f4()... : ki kell írni: () Deklarációban a paraméternevek elhagyhatóak. pl.: double Egyik (int, double); : paraméter név itt nem fontos, de definícióban igen

Deklaráció alakja csak prototípus lehet: void f5 (int p1, char p2); Rossz: void f5 (p1,p2); int p1; char p2;

3.Függvényszer ű makrók #include <stdio.h> #define sqr(x) ((X) * (X)) #define max(x,y) ((X) > (Y)? (X) : (Y)) #define abs(x) ((X) < 0? (-(X)) : (X)) #define sqr(x) ((X) * (X)) #define sqr1(x) (X * X) a a+1 sqr ( (a) * (a) ) ( (a+1) * (a+1) ) sqr1 ( a * a ) ( a+1 * a+1 )