Bevezetés a C programozásba

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

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

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

A C programozási nyelv I. Bevezetés

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

A C programozási nyelv I. Bevezetés

Programozás I gyakorlat

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

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

MT Algoritmusok és V Algoritmusok és isual Basic programoz ás alapjai isual Basic programoz Algoritmus Muhammad Ibn Músza Al-Hvárizmi

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Bevezetés a programozásba INF-501

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

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

Számítógépek felépítése, alapfogalmak

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

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Assembly programozás: 2. gyakorlat

Informatikai Rendszerek Alapjai

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Informatika érettségi vizsga

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

Máté: Számítógép architektúrák

M veletek és kifejezések

1. Fejezet: Számítógép rendszerek

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

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

Java II. I A Java programozási nyelv alapelemei

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Készítette: Nagy Tibor István

Java II. I A Java programozási nyelv alapelemei

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

Programozás alapjai (ANSI C)

1. Fejezet: Számítógép rendszerek. Tipikus számítógép hirdetés

Bevezetés a programozásba I.

Bevezetés a programozásba I.

INFORMATIKA MATEMATIKAI ALAPJAI

Számítógépek felépítése, alapfogalmak

Bevezetés az informatikába

Aritmetikai kifejezések lengyelformára hozása

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

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

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

Adatok ábrázolása, adattípusok

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

2. Fejezet : Számrendszerek

Készítette: Nagy Tibor István

A mikroprocesszor felépítése és működése

Számítógép architektúra

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

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

A C# programozási nyelv alapjai

Bevezetés az informatikába

Adatszerkezetek és algoritmusok

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

Algoritmusok. Dr. Iványi Péter

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

Bevezetés a számítástechnikába

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

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

Összeadás BCD számokkal

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Matematikai programok

3 A C programozási nyelv szintaktikai egységei

Algoritmusok tervezése

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

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

Dr. Oniga István DIGITÁLIS TECHNIKA 2

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

4. Fejezet : Az egész számok (integer) ábrázolása

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

A számítógép alapfelépítése

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

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

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Aritmetikai utasítások I.

Az algoritmusok alapelemei

Számítógépek felépítése

Számítógép architektúrák

Számítógép felépítése

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

Alapfogalmak. Dr. Kallós Gábor A Neumann-elv. Számolóeszközök és számítógépek. A számítógép felépítése

Programozási alapismeretek 1. előadás

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

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

Máté: Számítógép architektúrák

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

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

Matematikai programok

Programozás I gyakorlat

Architektúra, megszakítási rendszerek

Bevezetés a programozásba. 5. Előadás: Tömbök

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Programozás I gyakorlat

Átírás:

Bevezetés a C programozásba Programozás I. Széchenyi István Egyetem, Gy r 2015. szeptember 5.

Számítógép lehet ségei Tisztázandó kérdések: Mit tud a számítógép? (programnyelvek, programok,... ) A feladat melyik részét célszer számítógéppel megoldani? Egyedi feladat általános megoldás Számítógép: információfeldolgozó eszköz Beviteli (input) egységek Számítógép (háttértárakkal) Kimeneti (output) egységek Információ: adat program

Számítógép lehet ségei Adat Egy feladat adatai mindazok az információk, amelyekb l kiindulva, ezekkel m veleteket végezve, átalakítva a megoldásig eljuthatunk; és adat minden olyan információ, a megoldást megadó is, amely a kiinduló adatokból a m veletvégzés, az átalakítás során keletkezik. Program Program az az információ, amely leírja a számítógépnek, hogy hogyan m ködjön ahhoz, hogy a kiindulási adatokból a keresett megoldás el álljon. A program: utasításokból (információközlés, alaptevékenységek kérése) áll sorrend meghatározása

A Neumanni alapelvek Lényege: Részei: Soros utasítás végrehajtás Bináris (kettes) számrendszer használata Operatív tárban találhatóak az adatok és a program is (ld. még Harvard-architektúra) Elektronikus m ködés Általános felhasználhatóság Központi vezérl egység (automatikus m ködés) Központi egység (Central Processing Unit, CPU) Memória Aritmetikai/logikai egység (Arithmetic/Logic Unit, ALU) Vezérl egység (Control Unit, CU) I/O egységek Ld. Neumann-elvek

Sínrendszer számítógép funkcionális modellje Processzor Memória ALU ROM RAM CU Regisztertömb Sínvezérlő és meghajtó Órajelgenerátor és meghajtó Periféria vezérlő DMA vezérlő I/O Megszakítás vezérlő Prioritás vezérlő Perifériák

Adatok Számítógép érdekes tulajdonságai: Hogyan ábrázolja/kezeli az adatokat? Milyen átalakítások/m veletek végezhet k ezeken? Milyen alaptevékenységekre alkalmas? Hogyan adható meg a tevékenységek sorrendje? Adatok kezelése: konstansként (megfelel helyre írva) változókkal Tárolt adat mennyisége szerint a változó: egyszer (egyszerre egy adat) összetett (adatcsoport)

Adatok Egyszer változók tulajdonságai név (azonosító) felhasználható karakterek, funkció, beszédes elnevezés típus hogyan tárolják a memóriában milyen m velet végezhet vele az adat jellege (numerikus, szöveges adatábrázolás) memóriaterület értéket tárolja típusnak megfelel en kezdetben deniálatlan

Fixpontos számábrázolás El jel nélküli eset 2013 10 = 2 10 3 + 0 10 2 + 1 10 1 + 3 10 0 2013 10 = 0000 0111 1101 1101 2 = 1 2 10 + 1 2 9 + 1 2 8 + 1 2 7 + 1 2 6 + 1 2 4 + 1 2 3 + 1 2 2 + 1 2 0 2013 10 = 3735 8 = 3 8 3 + 7 8 2 + 3 8 1 + 5 8 0 2013 10 = 7DD 16 = 7 16 2 + 13 16 1 + 13 16 0 2013 3 201 1 20 0 2 2 0 2013 D 125 D 7 7 0

Fixpontos számábrázolás Jellemz hosszok: 8, 16, 32, 64 bit (1, 2, 4, 8 bájt; jellemz en a bájt a legkisebb címezhet egység prexumok) V unsigned integer = N 1 i=0 b i 2 i Intervallum: [0; 2 N 1] Bitek száma Értékek száma 8 256 16 65 536 32 4, 29 10 9 64 1, 84 10 19

Fixpontos számábrázolás El jelek használata Kettes komplemens ábrázolás Egyes komplemens képzés, majd +1 Érték 1-szerese: kivonás 2 N -b l El jelbit el jelet jelz bit V two's complement = b N 1 2 N 1 + N 2 i=0 b i 2 i Intervallum: [ 2 N 1 ; 2 N 1 1] 1 0000 0000 0100 1100 1011 0100 256 76 180 Bitminta Érték 0111 1111 127 0111 1110 126.. 0000 0001 1 0000 0000 0 1111 1111 1 1111 1110 2.. 1000 0000 128

Lebeg pontos számábrázolás Valós számok ábrázolására számok normálalakja m 2 k, ahol m a mantissza, k a karakterisztika 1/2 m < 1 0, 11111011101 2 11 = 2013 10 Minta 128 többletes karakterisztikával adott adatra: 01111011 10100000 00000000 10001011 2 = 2013 10 IEEE754

Karakterek kódolása Karakterek bet k, számjegyek, írásjelek,... PC-világ: ASCII (American Standard Code for Information Interchange) 7 bites kód: az alsó 128 karakter mindig ua., a fels k kódlapfügg k (pl. 852) az els 32 érték vezérl jel bet k: ABC-sorrend, számjegyek érték szerint növekv en új karakterkódolási módok (ld. Unicode) Szöveg kódolása karakterlánc (sztring, karaktersorozat, karakterfüzér,... ) C nyelv: lánczáró 0 karakter méret: karakterek száma + 1 Másutt esetleg: els bájt a karakterlánc hossza 'J' 'a' 'n' 'i' '\0' 74 97 110 105 0 0100 1010 0110 0001 0110 1110 0110 1001 0000 0000 4A 61 6E 69 00

Összetett változók Adatcsoportot ír le. Típusai: tömb struktúra (másutt: rekord) Tömb 4. tulajdonsága a dimenziója, az adatok elrendezése: egydimenziós (vektor, sor) kétdimenziós (mátrix, táblázat) Indexelés: elemek megszámozása 0 x < méret, x N T[0], T[1],..., T[10] T 0 1 2 3 4 5 6 7 8 9 10

Összetett változók Tömb minden típusból képezhet. Tömbelem mindenhol használható, ahol egyszer változó is. A karakterlánc egydimenziós tömb. s 'J' 'a' 'n' 'i' '\0' 0 1 2 3 4 Vegyük észre, hogy a bet k száma 4, és s[4] a lánczáró '\0'. Jelek tekinthet k: karakternek egész számértéknek

M veletek Aritmetikai m veletek + összeadás - egyoperandusos: az operandus értékének 1-szerese, pl. -b kétoperandusos: kivonás * szorzás / osztás % maradék képzés Kétoperandusos m veleteknél az eredmény valós, ha legalább egy operandus valós, különben egész a / egészrész képzés. Pl. 6/4 == 1 6./4 == 1.5 6%4 == 2

M veletek Karakterlánc m veletek C-ben nincsenek másutt pl. a + összef zést jelöl Logikai m veletek logikai nem (NOT,!) logikai (megenged ) vagy (OR, ) logikai és (AND, &&) Eredményük igaz (1, vagy nem nulla) vagy hamis (0) lehet. Igazságtábla Boole-algebra, logikai kapuk a b!a a b a&&b 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0

Relációk Kétoperandusos m veletek, eredményük logikai > nagyobb >= nagyobb vagy egyenl < kisebb <= kisebb vagy egyenl == egyenl (az = hozzárendelést jelöl!)!= nem egyenl Figyelem! Intervallumba esés ellen rzése: Helytelen A < x <= B Helyes A<x && x<=b!(a>=x x>b)

Relációk Karakterek (ASCII-kódjai) összehasonlíthatóak: '0' < '1' < '2' <... < '9' 'a' < 'b' < 'c' <... < 'z' 'A' < 'B' < 'C' <... < 'Z' Karakterláncok nem hasonlíthatók össze!

Matematikai függvények Aritmetikai adatokból újabb adatot állítanak el. Folyamat: függvényhívás. Pl. x abszolút értékének megállapítása y = abs(x); y az eredmény változó x a függvény (aktuális) paramétere abs a fv. neve

Matematikai függvények Fv. neve fabs(x) labs(x) abs(x) sin(x) cos(x) tan(x) pow(x, y) exp(x) log(x) log10(x) sqrt(x) Tevékenység abszolút érték szinusz koszinusz tangens hatványozás e x természetes és 10-es alapú logaritmus x

Kifejezések Kifejezés: adatokon végzend m veletek megadása. Kif. kiértékelése: a kif.-ben adott konstansokon/változókon m veletek végzése: kapott érték: kif. értéke kapott típus: kif. típusa Utóbbi az operandusoktól függ: egy-egy m velet eredményének típusa egyértelm a kif. m veleteit rendre egyenként kell végrehajtani a sorrend kötött, szabályai: 1 zárójelezés 2 precedencia szabály (prioritás) 3 balról jobbra

Kifejezések Matematikai alak {[(3 + 4) 2 + 5] 9 + 7} 8 Programnyelvi alak (((3 + 4) 2 + 5) 9 + 7) 8 Prioritási sorrend (csökken ) ( ) fv. hívás értékének meghatározása! egyoperandusos m veletek * / % + relációk && = hozzárendelés

Alaptevékenységek Input tevékenység adatok beolvasása változókba: C-ben ez nem alaptevékenység Output tevékenység konstansként, változóval vagy kifejezéssel adott adatok kiírása érték jelenik meg C-ben ez sem alaptevékenység Értékadó tevékenység kiértékelt kifejezés értékét tetsz leges, de adott változóba írja. A változó és a kifejezés típusának azonosnak, vagy legalább átalakíthatónak kell lennie (implicit típuskonverzió)! Aritmetikai típusok és karakterlánc között nincs átalakítás!

Vezérl tevékenységek Szekvenciális (szekvencia) Leírás sorrendjében történ végrehajtás Szelekciós Logikai kif. értékét l függ en elágazik, végrehajtásra kiválaszt tevékenységeket Iterációs Logikai kif. (feltétel) függ en tevékenységeket ismétel

Adatszerkezet, algoritmus Feladatmegoldáshoz megtervezend : Adatszerkezet, adatstruktúra: melyek a kiindulási adatok mi lesz a végeredmény milyen részeredmények kiszámítása szükséges milyen változókkal kezeljük ezeket milyen adatok lesznek konstansok,... Algoritmus: elvégzend tevékenységek ezek sorrendje Algoritmus + adatstruktúra = program Ha több megoldás lehetséges, akkor más adatszerkezet más algoritmus más algoritmus más adatszerkezet pl. takarékos er forrás használat gyors végrehajtás

Adatstruktúra megadása Táblázattal, tulajdonságok megadásával Funkció melyik adatot kezeli a változó, mire használjuk Azonosító a változó neve (utal a funkcióra) Típus Jelleg az adat, a változó típusa, tárolásmódja összetett változót jellemz információ megadása, pl. tömb dimenziói kiindulási adat (input) végeredmény (output) részeredmény (munka) A változó lehet többfunkciós/többjelleg, de típusa nem változhat!

Példa: téglalap területének, kerületének meghatározása Funkció Azonosító Típus Jelleg téglalap egyik oldala a valós input szomszédos oldal b valós input téglalap kerülete K valós output téglalap területe T valós output a b T=a*b K=2*(a+b) K T Szöveges algoritmus-megadás: 1 Beolvasandók a téglalap szomszédos oldalainak hosszai! 2 Kiszámítandó a téglalap területe és kerülete! 3 Megjelenítend ek a kiszámított értékek!

Folyamatábra elemei Start Stop Kezd pont és végpont jelei. Háromszöges változat: részalgoritmus leírására. Egy programban egyetlen kezd -, és egyetlen végpont lehet. Kezd pontban egyetlen kimen nyíl lehet, beérkez nem. Végpontban... Haladási irány jele. Csak szelekciónál ágazhat el. Végrehajtási sorrendet rögzíti.

Folyamatábra elemei v = kifejezés Értékadó tevékenység jele. Egy nyíl be, egy ki. Meghatározandó a kifejezés értéke és típusa, majd v változó felveszi ezt az értéket. Több értékadás összevonható. Be: v1, v2 Beolvasás (input tevékenység) jele. Egy nyíl be, egy ki. Beolvasandó v1, v2

Folyamatábra elemei Ki: k, v, kif Kiírás (output tevékenység) jele. Egy nyíl be, egy ki. Kijelzend a k konstans, v változó és kif kifejezés értéke. Ezek alapján a téglalap kerületének és területének meghatározása folyamatábrával: Start Be: a, b Deníció szerint lehet rövidíteni, így T és K elhagyható. T = a*b K = 2*(a+b) Ki: a*b, 2*(a+b) Ki: T, K Stop

Folyamatábra elemei Szelekció, elágazás jele. feltétel n Egy nyíl be, és pontosan kett ki. tevékenység1 i tevékenység2 Ha a feltétel teljesül (igaz), az i ágon folytatódik a végrehajtás, különben az n-en. Megengedett, hogy valamelyik ágon semmilyen tevékenység se legyen. Példa: másodfokú egyenlet megoldása: ax 2 + bx + c = 0 Funkció Azonosító Típus Jelleg együtthatók a, b, c valós input diszkrimináns d valós munka gyökök x1, x2 valós output

Folyamatábra elemei Start Be: a, b, c a == 0 i n Ki: "Az egyenlet nem másodfokú!" d = b*b + 4.*a*c d >= 0 n i Ki: "Nincs valós gyök!" x1 = (-b + sqrt(d)) / (2.*a) x2 = (-b - sqrt(d)) / 2. /a Ki: x1, x2 Stop

Folyamatábra elemei Iteráció (ciklus) feltétel n tevékenységek tevékenységek i i feltétel n a) előltesztelő b) hátultesztelő Az ismétlend tevékenységet ciklusmagnak nevezik. Ciklusmagnak hatással kell lennie a feltétel értékére végtelen ciklus? El ltesztel : lehet, hogy a ciklusmag egyszer sem hajtódik végre, hátultesztel : legalább egyszer biztosan

Folyamatábra elemei Léptet /növekményes ciklus CV = KE CV <= VE n CV = KE, VE, LE ciklusmag i ciklusmag CV = CV+LE a) előltesztelő b) növekményes El ltesztel speciális esete CV ciklusváltozó, KE kezd érték, VE végérték, LE lépésköz Ha LE negatív, akkor a feltétel: CV >= VE LE alapértelmezett értéke 1, elhagyható

Példa: maximális érték keresése Feladat: adott valós értékek közül a legnagyobb kikeresése. Funkció Azonosító Típus Jelleg valós értékek száma n egész input eddigi legnagyobb valós érték max valós input/munka aktuális valós érték a valós input ciklusváltozó i egész munka

Példa: maximális érték keresése Start Be: n n < 1 n Be: max i Ki: "Legalább egy értéknek lennie kell!" i = 1, n-1 Ki: "Maximum:", max Be: a Stop a > max n i max = a

Függvények Áttekinthet bb programok, kódismétlés elkerülése Az adatstruktúra a fv. nevével kezd dik Van visszatérési érték a típus annak típusa, a jelleg fv. v. t. érték Ezt a formális paraméterek követik (ha vannak) Ezek jellege paraméter Függvény hívása fvnév(aktuális paraméterlista) változó = fvnév(aktuális paraméterlista) Függvény deníció fvnév(formális paraméterlista)

Függvények Fv. kezdetének és végének jelölése: Visszatérési érték jelölése: Vissza: kifejezés

Felhasznált irodalom Marton László, Pukler Antal, Pusztai Pál Bevezetés a programozásba Novadat, Gy r, 1993. Dr. Szijártó Miklós Informatika I. elektronikus jegyzet L. Howard Pollard Computer Design and Architecture University of New Mexico, Englewood Clis, N.J. : Prentice Hall, c 1990.