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



Hasonló dokumentumok
Információs Technológia

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

3. Gyakorlat Ismerkedés a Java nyelvvel

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

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

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

Bevezetés a C++ programozásba

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

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

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

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

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

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

Információs Technológia

C programnyelv 1. Kedves Kollegina, Kolléga!

Készítette: Nagy Tibor István

PROGRAMOZÁS ALAPJAI (ANSI C NYELVEN)

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

Osztály és objektum fogalma

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Elôszó a magyar kiadáshoz A Kiadó Elôszó

6. előadás. Matlab 1. (Ismerkedés, környezet, adattípusok) Dr. Szörényi Miklós, Dr. Kallós Gábor. Széchenyi István Egyetem

Függvény deriváltja FÜGGVÉNY DERIVÁLTJA - DIFFERENCIÁLHÁNYADOS. lim határértékkel egyenlő, amennyiben az létezik ( lásd Fig. 16).

Kifejezések. Kozsik Tamás. December 11, 2016

Matematikai alapok. Dr. Iványi Péter

Megoldott programozási feladatok standard C-ben

2.3. A C nyelv utasításai

Digitális technika VIMIAA01

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Stack Vezérlés szerkezet Adat 2.

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

Aritmetikai és logikai műveletek. Adattömb kezelése.

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Pénzügyi algoritmusok

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

Programozás I gyakorlat. 5. Struktúrák

2015, Diszkrét matematika

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

Adatok szűrése, rendezése

M veletek és kifejezések

Bevezetés a C++ programozási nyelvbe

117. AA Megoldó Alfréd AA 117.

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

(2) A R. 3. (2) bekezdése helyébe a következő rendelkezés lép: (2) A képviselő-testület az önkormányzat összes kiadását

A héj vezérlő szerkezetei I.

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Java II. I A Java programozási nyelv alapelemei

2. ábra Soros RL- és soros RC-kör fázorábrája

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

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

3 A C programozási nyelv szintaktikai egységei

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Integrálás helyettesítéssel

INFORMATIKAI ALAPISMERETEK

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.

GAZDASÁGMATEMATIKA KÖZÉPHALADÓ SZINTEN

Programozás alapjai 1. (BMEVIEEA100)

Országzászlók (2015. május 27., Sz14)

A logikai táblázat módszere III.

Adattípusok. Max. 2GByte

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

1 Rev 4. A C++ programozás alapjai- segédlet

Adattípusok. Max. 2GByte

Programozás I gyakorlat

Készítette: Nagy Tibor István

Túlmunkaidő óra Összesen: Egyéb óra Összesen: Éjszakai pótlékos óra Összesen: 100 % pótlékos óra Összesen: Összesen: Összesen: Összesen: Összesen:

Adatbázisok* tulajdonságai

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Analogmeter & Headdisabler Verzió 1.2

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

1. mérés - LabView 1

A MiniRISC processzor

Imperatív és procedurális programozás a Javában

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

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

INFORMATIKA MATEMATIKAI ALAPJAI

A Szekszárdi Waldorf Óvoda, általános Iskola és AMI Munkaterve tanév

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

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

Bodlaki Tamás. Programozás C nyelven. Távoktatási segédlet

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

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

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

Erdélyi Magyar TudományEgyetem (EMTE

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

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.

Operátorok, házi feladat adatszerkezetek

FELADATOK A KALKULUS C. TÁRGYHOZ

Vezérlési szerkezetek

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

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

(arcsin x) (arccos x) ( x

Számolótábla Általános ismeretek

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Átírás:

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

Egy operandus művelet operandus operandus művelet Operátorok Két operandus operandus1 művelet operandus2 2

Aritmetikai műveletek + : összeadás -: kivonás * : szorzás / : osztás % : maradék osztás (csak egészekre) Egész osztás eredménye egész szám!!! 3

Példa 5/ 3 = 1 5 / 3.0 = 1.66666666666666667 5 % 3 = 2 14 % 3 = 2 4

Kiértékelési sorrend Fentről lefelé: Precedencia Előjel (-) Szorzás, osztás, maradék osztás (*, /, %) Összeadás, kivonás (+, -) Balról-jobbra 4/2*2 = 4 és nem 1 Zárójellel módosítható a kiértékelési sorrend 5

Relációs műveletek > >= < <= Egyenlő: == Nem egyenlő:!= Relációs művelete eredménye: igaz (1), hamis (0) Értékadás: = Egyenlőség: = =!!!!! FONTOS!!!!! 6

ÉS: VAGY: NEM:! Logikai műveletek && Kiértékelés balról jobbra történik, és amint a kifejezés igaz vagy hamis értéke meghatározható a kiértékelés megáll. Példa: -5 < < 5 (-5 < ) && ( < 5) 7

Értékadás másképpen y = y + 1 y += 1 y = y 1 y -= 1 y = y * 1 y *= 1 y = y / 1 y /= 1 y = y % 1 y %= 1 y = y * ( + 1) y *= +1 8

Növelő és csökkentő operátorok Növelő: ++ Csökkentő: -- Lehet prefi vagy postfi!!! ++ egyenértékű =+1 ++ egyenértékű =+1 9

Növelő és csökkentő operátorok = 33; y = ++; y = ; = + 1; /* y = 33 = 34 */ = 33; y = ++; = + 1; y = ; /* y = 34 = 34 */ 10

Bitenkénti logikai operátorok & : bitenkénti ÉS : bitenkénti VAGY ^ : bitenkénti KIZÁRÓ VAGY << : bitléptetés balra >> : bitléptetés jobbra ~ : egyes komplemens Csak egész számokra alkalmazható 11

bitenkénti ÉS A művelet eredménye csak akkor1, ha mindkét operandus ugyanazon bitpozíciójában elhelyezkedő bitek értéke egyaránt1. Minden más esetben az eredmény 0. Példa = 2 0000 0010 y = 40 0010 1000 & y = 0000 0000 = 0 Fontos, hogyez más && y = 1 (igaz) 12

bitenkénti VAGY Példa = 2 0000 0010 y = 40 0010 1000 y = 0010 1010 = 44 13

bitenkénti KIZÁRÓ VAGY Példa = 12 0000 1010 y = 40 0010 1000 ^ y = 0010 0010 = 34 14

További bitműveletek Balra tolás = 6 0000 0110 << 3 = 0011 0000 = 48 Jobbratolás = 48 0011 0000 >> 3 = 0000 0110 = 6 Komplemens = 6 0000 0110 ~ = 1111 1001 = 249 15

Operátor () [] ->.! ~ ++ -- + - * & (típus) sizeof * / % + - << >> < <= > >= ==!= & ^ &&?: = += -= *= /= %= &= ^= = <<= >>=, Asszociativitás balról jobbra jobbról balra balról jobbra balról jobbra balról jobbra balról jobbra balról jobbra balról jobbra balról jobbra balról jobbra balról jobbra balról jobbra jobbról balra jobbról balra balról jobbra 16

Precedencia A táblázat sorai azonos precedenciával bírnak. Asszociativitás: azonos precedenciájú operátorokat tartalmazó kifejezésben a kiértékelés iránya Példa: a & b c (a & b) c a = b c a = (b c) 17

Precedencia Mivel a bitműveletek precedenciája kisebb mint az egyenlőségi vizsgálaté ezért a bitműveleteknél zárójelezni kell if(( & mask) == 0)... 18

Asszociativitás Csoportosíthatóság, táblázat szerint Példa: int a, b, c; a = b = c = 26; Zárójelezve: a = (b = (c = 26)) 19

Mellékhatás Bizonyos műveletek feldolgozása során a kifejezés értékének megjelenése mellett változók is megváltozhatnak. Ez a mellékhatás. A mellékhatások kiértékelésének sorrendjét nem határozza meg a C nyelv Kivéve: &&?:, 20

Mellékhatás példa printf( %d %lf\n, ++n, power(2, n)) Eredmény: implementációtól függ Megoldás: Ha valami miatt fontos a kiértékelési sorrend, akkor a közbenső eredményeket segédváltozókban kell tárolni, szét kell szedni vagy zárójelezni kell. ++n printf( %d %lf\n, n, power(2, n)) 21

Speciális példák i j k művelet i j k 3 1 2 k = i+++j k = i++ + j 4 1 4 3 1 2 k = ++i+j++ k = ++i + j++ 4 2 5 3 1 2 k = -i+++j k = (-i)++ + j 4 1-2 3 1 2 k += -i+++j k += (-i)++ + j 4 1 0 22

A? operátor, még egyszer if(a>b) z = a; else z = b; Közvetlen átírás rossz: a>b? z=a : z=b; mivel precedencia figyelembe vételével ezt kapjuk: (a>b? z=a : z) = b; Helyesen: z = (a>b)? a : b; vagy a>b? (z=a) : (z=b); 23

24 Matematikai műveletek #include <math.h> y y arctan ), atan2( arctan ) atan( arcsin ) asin( arccos ) acos( tan ) tan( sin ) sin( cos ) cos( C Matematika e y y log 10 ) log10( ln ) log( ) ep( ) sqrt( ), pow( C Matematika

Adattípusok 25

Adattípusok Definíció char int float double Byte 1 2 4 8 Értelmezés Karakter Egész szám Valós szám, egyszeres pontosság Valós szám, kétszeres pontosság 26

Típuskonverzió Előfordulhat, hogy az operandusok különböző típusúak A művelet elvégzéséhez azonos típusúra kell az operandusokat alakítani Automatikus (implicit) Programozó által előírt (eplicit) 27

Alapszabály Ha az operandusok különböző típusúak, akkor a szűkebb típusú operandus alakul át a szélesebb típusúvá(információ vesztés nélkül), a műveletek elvégzése előtt. Az eredmény szélesebb típusú lesz. 28

Példa implicit konverzióra int i = 5, j; float f = 3.65, g; g = i + f; /* i átalakul float-ra g értéke 8.65 lesz */ j = i + f; /* i átalakul float-ra de j értéke 8, információvesztés */ 29

Konverziók Lebegőpontos egész konverzió Tört rész elhagyása Ha az egész szám nem tudja reprezentálni az egész részt, akkor az eredmény határozatlan Egész típusok konverziója char, short int int Ha int nem elég akkor unsigned int Egész típus mindig konvertálható lebegőpontossá 30

Aritmetikai konverziók Ha valamelyik operandus 1. long double long double 2. double double 3. float float 4. unsigned long int unsigned long int 5. long int és a másik unsigned int akkor vagy long int ha képes tárolni a számot, vagy unsigned long int 6. long int long int 7. unsigned int unsigned int 8. Ha egyik fenti szabály sem, akkor int 31

Értékadás Az értékadás szintén típuskonverzióval jár : a jobboldal értéke átalakula baloldal típusának megfelelően!!! Példa: int a; a = sqrt(25.0); 5 implicit double-int konverzió 32

Eplicit típuskonverzió (casting) (típus)kifejezés A kifejezés eredménye a megadott típusúra konvertálódik a szabályok alapján. Példa: int a; a = (int)(1.2 * 6); 7 33

Példa1. char ch; int i, r; float f; double d; r = (i / ch) + (f * d) (f + i); int double float int double double float double double int double 34

Példa2. char ch; int i, r; float f; double d; r = (i / ch) + (int)(f * d) ((int)f + i); double int int double int int int int int int 35

Konstansok definiálása A program fejlécében: #define pi 3.1415 A programon belül a konstans helyett a név használható: 36

Példa #include <stdio.h> #define pi 3.1415 main() { double sugar, terulet; printf( sugar= ); scanf( %lf, &sugar); terulet = sugar * sugar * pi; } 37

Felsorolt típus enum azonosító { felsorolás }; Egy adattípus, melynek lehetséges értékeit a lista tartalmazza A konstansok int-ek (egészek) lesznek A fordító ellenőrzi, hogy egy változó az adott halmazból való-e 38

Példák enum valasz { igen, nem, talan}; enum valasz { igen, nem=10, talan}; 39

Példa 1. enum napok { hetfo, kedd, szerda, csutortok, pentek, szombat, vasarnap }; enum napok mai_nap; mai_nap = vasarnap; if(mai_nap == vasarnap mai_nap ==szombat) { /* unnep */ } else { /* munkanap */ } 40

Példa 2. enum torpek { tudor, vidor, hapci, kuka, morgo, szende, szundi }; enum torpek a; a = hetfo; /* FIGYELMEZTETES */ a = 26; /* FIGYELMEZTETES */ 41

Elolvasni, megtanulni Kernighan-Ritchie: A C programozási nyelv 2. Fejezet Benkő Tiborné: Programozzunk C nyelven! 3.3. 3.4. Fejezetek, kivéve 3.3.5 alfejezet 42