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

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

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

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

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

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. 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

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

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

1. Feladatlap. Függvények. Mőveletek Matlab nyelvben. Példa inverz osztásra >>d=2\1 d= Információkérési lehetıségek help utasítás

C programozási nyelv

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

Karakter- és sztringkezelő függvények, matematikai függvények

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

Elemi függvények. Matematika 1. előadás. ELTE TTK Földtudomány BSc, Környezettan BSc, Környezettan tanár október 4.

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

Elemi függvények. Matematika 1. előadás. ELTE TTK Földtudomány BSc, Környezettan BSc, Környezettan tanár 3. előadás. Csomós Petra

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

Java II. I A Java programozási nyelv alapelemei

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

9.fejezet: Függvények és külső eljárások

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

Programozás C és C++ -ban

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

Matematika A1a Analízis

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

C programozás. 1 óra Bevezetés

Raszteres elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

A Föld középpontja felé szabadon eső test sebessége növekszik, azaz, a

Egyváltozós függvények 1.

Trigonometria Megoldások. 1) Oldja meg a következő egyenletet a valós számok halmazán! (12 pont) Megoldás:

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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.

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

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

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

Egyenletek, egyenlőtlenségek X.

A C# programozási nyelv alapjai

INFORMATIKA javítókulcs 2016

C# gyorstalpaló. Készítette: Major Péter

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

A C# PROGRAMOZÁSI NYELV

B I T M A N B I v: T M A N

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

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

1. Fuggveny ertekek. a) f (x) = 3x 3 2x 2 + x 15 x = 5, 10, 5 B I. x = arcsin(x) ha 1 x 0 x = 1, arctg(x) ha 0 < x < + a) f (x) = 4 x 2 x+log

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

Szkriptnyelvek. 1. UNIX shell

2012. október 9 és 11. Dr. Vincze Szilvia

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

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

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Bevezetés a C++ programozási nyelvbe

LEGO robotok. XII. rész

Informatika terméktervezőknek

Matematika 11. osztály

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Kalkulus S af ar Orsolya F uggv enyek S af ar Orsolya Kalkulus

Elemi függvények. Nevezetes függvények. 1. A hatványfüggvény

Tartalomjegyzék. Tartalomjegyzék Valós változós valós értékű függvények... 2

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Adatbáziskezelés. SQL parancsok. Függvények

5. Gyakorlat. struct diak {

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

Java II. I A Java programozási nyelv alapelemei

First Prev Next Last Go Back Full Screen Close Quit

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

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

Apple Swift kurzus 3. gyakorlat

Assembly programozás: 2. gyakorlat

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

Pénzügyi algoritmusok

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

x a x, ha a > 1 x a x, ha 0 < a < 1

1. Alapok. Programozás II

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)

9. Trigonometria. I. Nulladik ZH-ban láttuk: 1. Tegye nagyság szerint növekvő sorrendbe az alábbi értékeket! Megoldás:

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

DIFFERENCIÁLEGYENLETEK. BSc. Matematika II. BGRMA2HNND, BGRMA2HNNC

Szoftvertervezés és -fejlesztés I.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás

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

Programozási Nyelvek: C++

Szövegek C++ -ban, a string osztály

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

LibreOffice Makró Basic

Objektumorientált Programozás III.

Programozás I gyakorlat. 10. Stringek, mutatók

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Matematika javítóvizsga témakörök 10.B (kompetencia alapú )

Információs Technológia

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

6. ELŐADÁS DIFFERENCIÁLSZÁMÍTÁS II. DIFFERENCIÁLÁSI SZABÁLYOK. BSc Matematika I. BGRMA1HNND, BGRMA1HNNC

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Átírás:

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

A?: operátor Nézzük meg a következő kifejezést: if (a>b) z=a; else z=b; Ez felírható egyszerűbb alakban a?: operátor segítségével: z=(a>b)?a:b; formában 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek I. 2

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 (ezzel nem foglalkozunk) 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 3

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. 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 4

B4. Matematikai függvények: a <math.h> header sin(x) az x argumentum szinusza; cos(x) az x argumentum koszinusza; tan (x) az x argumentum tangense; asin(x) az x argumentum arkuszszinusza, az értékkészlet a [-π/2, π/2] tartomány, x E [-1, 1]; acos(x) az x argumentum arkuszkoszinusza, az értékkészlet a [0, π] tartomány, x E [-1, 1]; atan(x) az x argumentum arkusztangense, az értékkészlet a [-π/2, π/2] tartomány; atan2(y, x) az y/x érték arkusztangense, az értékkészlet a [-π, π] tartomány; sinh(x) az x argumentum szinusz hiperbolikusa; cosh(x) az x argumentum koszinusz hiperbolikusa; tanh(x) az x argumentum tangens hiperbolikusa; exp(x) az e x exponenciális függvény; log(x) az x argumentum természetes alapú logaritmusa (ln(x))), x>0; log10(x) az x argumentum tízes alapú logaritmusa (lg(x))), x>0; 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 5

B4. Matematikai függvények: a <math.h> header fabs(x) ldexp(x, n) frexp(x, int *exp) modf(x, double *ip) fmod(x, y) pow(x, y) sqrt(x) ceil(x) floor(x) az x argumentum abszolút értéke ( x ); az x*2 n függvény értéke; a függvény az x argumentum értékét az [1/2, 1) intervallumba eső normált törtrésszé alakítja és ezzel az értékkel tér vissza. A 2 hatványaként értelmezett kitevő a *exp című változóba tárolódik. Ha x=0, akkor az eredmény törtrésze és kitevője egyaránt nulla lesz; result = frexp (8, &n); -> result=0.5, n=4 az x argumentum eredeti x előjelével azonos előjelű egész- és törtrészre bontása. Az egészrész az *ip című változóban tárolódik, a függvény visszatérési értéke a törtrész lesz; fractpart = modf (3.14, &intpart); -> fractpart=0.14,intpart=3 az x/y lebegőpontos osztás lebegőpontos maradéka, ami ugyanolyan előjelű mint x. Ha y=0, akor az eredmény a gépi megvalósítástól függ. fmod (5.3,2)->1.3 az x y alakú hatványfüggvény, értelmezési tartomány hiba lép fel, ha x=0 és y<0, vagy ha x<0 és y értéke nem egész szám; az x argumentum négyzetgyöke, x>0; az x argumentumnál nem kisebb legkisebb egész szám, double típusra konvertálva; az x argumentumnál nem nagyobb legnagyobb egész szám, double típusra konvertálva; 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 6

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. 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 7

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. 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 8

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(); } 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 9

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. 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 10

4.11.2. Makróhelyettesítés hibás használat 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 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 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 11

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) 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 12

5.3. Tömbök (Statikus tömbök) A tömbök segítségével azonos elemekből álló adathalmazt tárolhatunk a memóriában és műveleteket hajthatunk végre rajta. Általános alakjuk: típus tömbnév[elemszam]; Például: int a[10]; deklaráció egy tízelemű tömböt jelöl ki, azaz tíz egymást követő, a[0]...a[9] névvel ellátott objektumot. Az a[i] jelölés az a tömb i-edik elemére hivatkozik. 2016.03.01. Dr. Bécsi Tamás: Járműfedélzeti rendszerek II. 13

Tömbök inicializálása int t[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // teljesen feltöltve int t[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // ugyanaz, mint az előző int t[10] = {1, 2, 3, 4}; // csak 4 elemet inicializáltunk, de a tömb 10 méretű

Több dimenziós tömbök int t[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11}; int t[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11}; int t[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9,10,11}};

Karakter tömbök char s[200] = "Hello"; char s[200] = {'H', 'e', 'l', 'l', 'o', '\0'}; // Az előzővel egyenértékő. // Figyeljük meg, hogy az utolsó karakter után még van egy 0 // kódú karakter, az zárja a stringet. char s[] = "Hello"; // a tömb mérete 5+1=6 lesz a lezáró 0 miatt

Gyakorló példa Lottószelvény ellenőrzött kitöltése

Köszönöm a figyelmet