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

Hasonló dokumentumok
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

C programozási nyelv

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

Óbudai Egyetem. C programozási nyelv

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

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

C programozás. 1 óra Bevezetés

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

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

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

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

Programozás C és C++ -ban

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

BASH script programozás II. Vezérlési szerkezetek

Java programozási nyelv

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

Szkriptnyelvek. 1. UNIX shell

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

Java II. I A Java programozási nyelv alapelemei

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

Vezérlési szerkezetek

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

A programozás alapjai 1 Rekurzió

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

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

INFORMATIKA tétel 2019

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

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

INFORMATIKA javítókulcs 2016

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

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

/* 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.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

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

Occam 1. Készítette: Szabó Éva

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

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

A programozás alapjai

Pénzügyi algoritmusok

S z á m í t ó g é p e s a l a p i s m e r e t e k

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

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Algoritmizálás + kódolás C++ nyelven és Pascalban

A C# programozási nyelv alapjai

Internet programozása. 3. előadás

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Algoritmizálás és adatmodellezés tanítása 1. előadás

AWK programozás, minták, vezérlési szerkezetek

6. fejezet: Ciklusok

1. Jelölje meg az összes igaz állítást a következők közül!

Java II. I A Java programozási nyelv alapelemei

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Bevezetés a C++ programozási nyelvbe

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

AWK programozás, minták, vezérlési szerkezetek

C++ programok fordítása

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

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.

Alprogramok, paraméterátadás

1. Alapok. #!/bin/bash

C programozási nyelv. Dr. Schuster György szeptember 18.

Szoftvertechnológia alapjai Java előadások

Máté: Assembly programozás

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Apple Swift kurzus 3. gyakorlat

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

Stack Vezérlés szerkezet Adat 2.

Haladó DBMS ismeretek 1

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

Informatika terméktervezőknek

Vezérlési szerkezetek. Szelekció Ciklusok

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

A 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

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

Algoritmusok pszeudókód... 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

Tartalomjegyzék Algoritmusok - pszeudókód

3. Osztályok II. Programozás II

Forráskód formázási szabályok

Programozás I. gyakorlat

Rekurzió. Dr. Iványi Péter

Komputeralgebra Rendszerek

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

INFORMATIKA tétel 2018

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Felvételi tematika INFORMATIKA

7/8. gyakorlat Karaktertömbök és sztringkezelés

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Átírás:

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

4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának beépítése a forrásprogramba (#include) szimbólum-helyettesítés (#define) argumentumot tartalmazó makrók (#define) feltételes fordítási direktívák 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 2

4.11.1. Állományok beépítése Formája: #include <állománynév>, vagy #include "állománynév" Idézőjelek esetén a keresés a forráskönyvtárban kezdődik; az állomány hiánya, vagy <> esetén a rendszer által definiált helyről történik az állomány bemásolása. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 3

4.11.2. Makróhelyettesítés Egy definíció általánosan #define név helyettesítő szöveg alakú, és hatására a makróhelyettesítés egyik legegyszerűbb formája indul el: a névvel megadott kulcsszó minden előfordulási helyére beíródik a helyettesítő szöveg. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 4

4.11.2. Makróhelyettesítés A #define utasításban szereplő névre ugyanazok a szabályok érvényesek, mint a változók neveire, a helyettesítő szöveg pedig tetszőleges lehet. A helyettesítés csak az önálló kulcsszavakra (nevekre) vonatkozik és nem terjed ki az idézőjelek közötti karaktersorozatokra sem. Például hiába egy definiált név az, hogy YES, nem jön létre a helyettesítés a printf("yes") utasításban vagy a YESMAN szövegben. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 5

4.11.2. Makróhelyettesítés, példa #define EOS '\0' #define TRUE 1 #define boole int int main(void) boole vege=0; char s[]="hello"; int i=0; do if (s[++i]==eos) vege=true; while (!vege); printf("%d",i); getchar(); int main(void) int vege=0; char s[]="hello"; int i=0; do if (s[++i]== \0 ) vege=1; while (!vege); printf("%d",i); getchar(); 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 6

4.11.2. Makróhelyettesítés példa, veszélyek #define abs(x) ((x) < 0? (-(x)) : (x)) #define min(a, b) ((a) < (b)? (a) : (b)) int i=-5; int j=-6; printf("%d",min(abs(i),abs(j))); Veszélyek: a fentiek szerint definiált min() makró kétszer alkalmazza a beírt kifejezést: min(i++,j++) helyettesítő szövege: ((i++) < (j++)? (i++) : (j++)) azaz a változók értéke kétszer inkrementálódik. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 7

4.11.2. Makróhelyettesítés További példa hibás használatra: hibás használat #define MARGO 2 #define SZELESSEG 8 #define MAGASSAG 10 #define TELJESSZEL SZELESSEG+MARGO #define TERULET TELJESSZEL*MAGASSAG Hibás eredmény Zárójelezéssel kiküszöbölhető #define square(x) x*x square(i+1); helyettesítő szövege i+1*i+1 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 8

4.11.2. Makróhelyettesítés hibás használat kiküszöbölése További példa hibás használatra: #define MARGO 2 #define SZELESSEG 8 #define MAGASSAG 10 #define TELJESSZEL (SZELESSEG+MARGO) #define TERULET TELJESSZEL*MAGASSAG #define square(x) (x)*(x) square(i+1); helyettesítő szövege (i+1)*(i+1) 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 9

4.11.3. Feltételes fordítás Az előfeldolgozási folyamat közben kiértékelt feltételes utasításokkal lehetőségünk van magának az előfeldolgozásnak feltételektől függő vezérlésére is. Ennek hatására szelektíven iktathatunk be sorokat a programba, a fordítás (előfeldolgozás) során kiértékelt feltételek értékétől függően. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 10

4.11.3. Feltételes fordítás Az #if sor hatására az utána álló állandó egész kifejezés (amely nem tartalmaz sizeof, enum vagy kényszerített típusú [cast] állandókat) kiértékelődik, és ha ennek értéke nem nulla, akkor a következő sorok az első #endif, #elif vagy #else utasításig beépülnek a programba. (Az előfeldolgozó #elif utasítása hasonló a C else if utasításához.) A defined(név) kifejezés értéke 1 az #if utasításban, ha a név már definiálva volt, és 0 különben. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 11

4.11.3. Feltételes fordítás Például, ha biztosak szeretnénk lenni abban, hogy a hdr.h állomány tartalma csak egyszer, de egyszer legalább beépül a programba, akkor a hdr.h állomány beépítési helyének környezetébe az alábbi utasításokat kell elhelyezni: #if!defined(hdr) #define HDR /* ide épül be a hdr.h tartalma */ #endif 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 12

4.11.3. Feltételes fordítás Az #ifdef és #ifndef sorok speciális vizsgálatot végeznek: azt ellenőrzik, hogy az adott név definiált-e vagy sem. Ezek felhasználásával az előző példát úgy is írhattuk volna hogy #ifndef HDR #define HDR /* ide épül be a hdr.h tartalma */ #endif 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 13

3.5. Ciklusszervezés while (kifejezés) utasítás; while utasítás Amíg a kifejezés igaz (nem 0) addig futtatja az utasítást. break;utasítás kilép a ciklusból continue; utasítás a következő ellenőrzésre ugrik 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 14

3.5. while példa char c=0; while(++c<10) printf("%d ",c); Eredmény: 1 2 3 4 5 6 7 8 9 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 15

3.5. while példa continue char c=0; while(++c<10) if (c==3) continue; printf("%d ",c); Eredmény: 1 2 4 5 6 7 8 9 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 16

3.5. while példa break char c=0; while(++c<10) if (c==3) continue; if (c==6) break; printf("%d ",c); Eredmény: 1 2 4 5 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 17

3.5. Ciklsszervezés for utasítás for (kif1; kif2; kif3) utasítás Ilyen formájában ekvivalens: kif1; while (kif2) utasítás kif3; Bármelyik kifejezés elhagyható: for (;;) 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 18

3.5. for példa for(c='a';c<'f';c++) printf("%c ",c); printf("ertek ciklus utan: %c ",c); Eredmény: a b c d e Ertek ciklus utan: f 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 19

3.5. for példa continue for(c='a';c<'f';c++) if (c=='b') continue; printf("%c ",c); printf("ertek ciklus utan: %c ",c); Eredmény: a c d e Ertek ciklus utan: f 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 20

3.5. for példa break for(c='a';c<'f';c++) if (c=='b') continue; if (c=='e') break; printf("%c ",c); printf("ertek ciklus utan: %c ",c); Eredmény: a c d Ertek ciklus utan: e 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 21

3.5. for példa több elemű kifejezés (char[] reverse) char tmp,s[]="abcde"; int i,j; for (i=0,j=4;i<j;i++,j--) tmp=s[i]; s[i]=s[j]; s[j]=tmp; printf("%s",s); Output: edcba 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 22

3.6. Ciklusszervezés do-while utasítás do utasítás while (kifejezés); Hátultesztelés (amíg a kifejezés igaz), ellentétben a pascal repeat-until ciklusával. 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 23

3.6. do-while példa int i=1; do printf("%d",++i); while(i<4); Eredmény: 234 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 24

3.6. do-while példa int i=1; do printf("%d",i++); while(i<4); Eredmény: 123 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 25

3.8. goto utasítás és címkék Példa: for (i=0;i<10;i++) printf("%d",i); if (i==5) goto vege; vege: printf("vege"); 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 26

4. Függvények Forma: visszatérési-típus függvénynév(argumentum deklarációk) deklarációk és utasítások Függvény visszatérés: return kifejezés; 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 27

int fakto(int i) int lfakt=1; while (i>1) lfakt*=i--; return lfakt; 4. Függvények példa 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 28

4. Függvények Rekurzív hívás (megemlítés) int fakt (int i) return (i<2)?1:i*fakt(i-1); 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 29

Vége Köszönöm a figyelmet! 2013.05.08. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 30