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

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

A C programozási nyelv I. Bevezeté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)

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

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

Típusok és konstansok

Java II. I A Java programozási nyelv alapelemei

Bevezetés a C programozásba

Java II. I A Java programozási nyelv alapelemei

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

Programozás I gyakorlat

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. 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

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

Vezérlési szerkezetek

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

M veletek és kifejezések

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

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

A C# programozási nyelv alapjai

Programozás I gyakorlat

Programozás I gyakorlat

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

Bevezetés a programozásba I.

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

Programozás I gyakorlat

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

Bevezetés a programozásba I.

3 A C programozási nyelv szintaktikai egységei

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

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Készítette: Nagy Tibor István

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

Készítette: Nagy Tibor István

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

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

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

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

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

Vezérlési szerkezetek. Szelekció Ciklusok

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

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

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

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

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

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

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

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

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

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

Programozási Nyelvek: C++

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

Programozás I gyakorlat

Bevezetés a programozásba I.

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

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

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

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

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

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

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

Java programozási nyelv

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

10. gyakorlat. Pointerek Tárolási osztályok

Operátorok, házi feladat adatszerkezetek

1. Alapok. Programozás II

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

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

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

A programozás alapjai

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

Előző óra összefoglalása. Programozás alapjai C nyelv 3. gyakorlat. Karakter típus (char) Karakter konstansok. Karaktersorozatot lezáró nulla

Szoftvertervezés és -fejlesztés I.

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

C változók. Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! int main() {

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

Programozas 1. Strukturak, mutatok

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

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

Bevezetés a programozásba I.

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.

Informatika terméktervezőknek

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

OOP #14 (referencia-elv)

Információs Technológia

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

Megoldott programozási feladatok standard C-ben

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

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

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

Algoritmusok. Dr. Iványi Péter

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

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

Programozási nyelvek 6. előadás

Átírás:

Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29.

Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { p r i n t f ( " T e r m e s z e t e s szamok n e g y z e t e i \n\n" ) ; p r i n t f ( "1^2=1\n" ) ; p r i n t f ( "2^2=4\n" ) ; p r i n t f ( "3^2=9\n" ) ; p r i n t f ( "4^2=16\n" ) ; p r i n t f ( "5^2=25\n" ) ; p r i n t f ( "6^2=36\n" ) ; p r i n t f ( "7^2=49\n" ) ; p r i n t f ( "8^2=64\n" ) ; p r i n t f ( "9^2=81\n" ) ; p r i n t f ( "10^2=100\n" ) ; r e t u r n 0 ; }

Kimenet Termeszetes szamok negyzetei 1^2=1 2^2=4 3^2=9 4^2=16 5^2=25 6^2=36 7^2=49 8^2=64 9^2=81 10^2=100 Problémák: Most mi számoljuk ki az eredményt, nem a számítógép! Nagyon sok ismétl d kódrészlet Könny hibát ejteni a kódban, de nehéz felfedezni

Feladat: próbáljuk elérni, hogy a számítógép számolja ki a hatványokat! 1 #i n c l u d e <s t d i o. h> 2 3 i n t main ( v o i d ) { 4 p r i n t f ( " T e r m e s z e t e s szamok n e g y z e t e i \n\n" ) ; 5 p r i n t f ( "%d^2=%d\n", 1, 1 1 ) ; 6 p r i n t f ( "%d^2=%d\n", 2, 2 2 ) ; 7 p r i n t f ( "%d^2=%d\n", 3, 3 3 ) ; 8 p r i n t f ( "%d^2=%d\n", 4, 4 4 ) ; 9 p r i n t f ( "%d^2=%d\n", 5, 5 5 ) ; 10 p r i n t f ( "%d^2=%d\n", 6, 6 6 ) ; 14 p r i n t f ( "%d^2=%d\n", 10, 1 0 1 0 ) ; 15 r e t u r n 0 ; 16 }

Kimenet Termeszetes szamok negyzetei 1^2=1 2^2=4 3^2=9 4^2=16 5^2=25 6^2=36 7^2=49 8^2=64 9^2=81 10^2=100 Literálok: forrásszövegbe gépelt konstansok Egész konstansok Karakter konstansok: '-ok között Karakterlánc (string) konstansok: "-ek között Műveleti jel (operátor) printf("%d^2=%d\n", 5, 5*5); Kifejezés { Karakterlánc konstans Egész konstansok

{ { Kifejezés (expression): értéket állít el konstansok, változók, m veletek (operátorok) segítségével Ua. további paraméter, formátumsztring mint ahány form. spec. printf("%d^2=%d\n", 5, 5*5); formátumspecifikátor { Néhány aritmetikai operátor { { Escape szekvencia Operátor Leírás Példa + Összeadás 5 + 3 == 8 - Kivonás 5 3 == 2 * Szorzás 5 3 == 15 / Egészosztás 5/3 == 1 % Maradék képzés 5%3 == 2

1 #i n c l u d e <s t d i o. h> 2 3 i n t main ( v o i d ) { 4 i n t a l a p ; 5 p r i n t f ( " T e r m e s z e t e s szamok n e g y z e t e i \n\n" ) ; 6 a l a p = 1 ; 7 p r i n t f ( "%d^2=%d\n", a l a p, a l a p a l a p ) ; 8 a l a p = a l a p + 1 ; 9 p r i n t f ( "%d^2=%d\n", a l a p, a l a p a l a p ) ; 10 a l a p = a l a p + 1 ; 11 p r i n t f ( "%d^2=%d\n", a l a p, a l a p a l a p ) ; 12 a l a p = a l a p + 1 ; 25 p r i n t f ( "%d^2=%d\n", a l a p, a l a p a l a p ) ; 26 r e t u r n 0 ; 27 }

Változók Pl.: int alap; típus az adat jellege (numerikus, szöveges) hogyan tárolják a memóriában milyen m velet végezhet vele memóriaterület értéket tárolja típusnak megfelel en lokális változók ({ és } közötti blokkokban) kezd értéke deniálatlan, memóriaszemét név, vagy azonosító (funkcióra utaló, beszédes elnevezés)

Azonosítóképzési szabályok Els karakter: kis- vagy nagybet, ill. _ További karakterek: u. a., és számjegyek Nem lehet kulcsszó vagy védett azonosító Kis- és nagybet re érzékenyek Ajánlás: ne kezd djön egy vagy két _ karakterrel Szignikáns karakterek száma Mi lehet a gond? Gipsz Jakab 66_os_ut Men _Manó auto OK meno_mano Meno_Mano sokreszbolosszeteve

Fontosabb egész típusok (xpontos ábrázolás) Típus Leírás char Ált. el jeles, 8 bites egész signed char El jeles 8 bites egész unsigned char El jel nélküli, 8 bites egész short signed short El jeles rövid egész signed short int unsigned short unsigned short int El jel nélküli rövid egész signed int El jeles egész signed int unsigned unsigned int El jel nélküli egész long signed long El jeles hosszú egész signed long int unsigned long unsigned long int El jel nélküli hosszú egész

Megjegyzések: Típusmódosítók: signed/unsigned, short/long Egész literál ábrázolása: int char típus mérete: mindig 1 bájt, de a karakter literál int-ben! char típus el jel-kezelése: platformtól és fordítótól függ, de ált. el jeles és beállítható 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long), ahol sizeof a típus/változó méretét bájtban megadó operátor

Változó deníció Általános alak: típus azonosítólista; Azonosító, típus megadása, memóriaterület foglalása Pl.: int x; int i, j, k; unsigned int y; Értékadás Operátor: = balérték = jobbérték; balérték értékét jobbértékre változtatja balérték: többnyire változó (nem lehet pl. konstans vagy tömb, de a tömb egy konkrét eleme már igen) Eredmény: a programunk sorai nagyon hasonlóak, másolással sokszorosíthatók Probléma: túl sok ismétl d kódrészlet meg kellene kérni a gépet, hogy az azonos részeket ismételje!

#i n c l u d e <s t d i o. h> i n t main ( v o i d ) { i n t a l a p ; p r i n t f ( " T e r m e s z e t e s szamok n e g y z e t e i \n\n" ) ; a l a p = 1 ; w h i l e ( a l a p <= 10) { p r i n t f ( "%d^2=%d\n", a l a p, a l a p a l a p ) ; a l a p = a l a p + 1 ; } r e t u r n 0 ; }

Relációs operátorok Operátor Leírás == egyenl!= nem egyenl < kisebb <= kisebb, vagy egyenl > nagyobb >= nagyobb, vagy egyenl

Elöltesztel ciklus while(feltétel kifejezése) { } tevékenységek A ciklusmag (ismételt rész) lehet egyetlen egyszer utasítás összetett utasítás: több utasításból képzett blokk

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 (feltételes végrehajtás) ágazhat el. Végrehajtási sorrendet rögzíti.

Folyamatábra elemei v = kifejezés n feltétel i tevékenységek É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ó. Elöltesztel ciklus Az ismétlend tevékenységet ciklusmagnak nevezik. Ciklusmagnak hatással kell lennie a feltétel értékére végtelen ciklus? Lehet, hogy a ciklusmag egyszer sem hajtódik végre.

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.

Start Ki: "Természetes számok négyzetei" alap = 1 alap <= 10 n Stop Ki: alap, alap*alap i alap = alap+1

Adatszerkezeti táblázat: a folyamatábra nem árul el eleget a változók típusáról, alkalmazásuk céljáról. Funkció Azonosító Típus Jelleg A hatvány alapja alap egész munka/output

Páros, páratlan Egy egész számról döntsük el, hogy páros-e! #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { i n t szam ; szam = 4 2 ; i f ( szam%2 == 0) { p r i n t f ( "A szam p a r o s. \ n" ) ; } e l s e { p r i n t f ( "A szam p a r a t l a n. \ n" ) ; } r e t u r n 0 ; }

Páros, páratlan Szelekció feltétel n feltétel n tevékenység1 i tevékenység1 i tevékenység2 if(kifejezés) utasítás1 if(kifejezés) utasítás1 else utasítás2 Utasítások lehetnek összetettek többirányú elágazás

Mutatók Mi az a mutató (pointer), és mire használható? Memóriacím tárolására használható típus Többféle típusa létezik, hogy kifejezze az ott tárolt adat típusát Technikai megvalósítása hasonlít az egész számokéhoz Mutatódeníció: alaptípus* azonosító; Például int i; int* pi; // egész típusú változó // egészet címz mutató

Mutatók Memóriacím képzése az & operátorral lehetséges Adott címen lév érték elérése (indirekció): * operátorral #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { i n t i ; i n t p i ; i = 4 2 ; p r i n t f ( " ' i ' e r t e k e : %d\n", i ) ; p r i n t f ( " ' i ' cime : %p\n", &i ) ; p i = &i ; p r i n t f ( "A ' p i ' cimen l e v o e r t e k : %d\n", p i ) ; p r i n t f ( " ' p i ' e r t e k e : %p\n", p i ) ; p r i n t f ( " ' p i ' cime : %p\n", &p i ) ; r e t u r n 0 ; }

Mutatók Kimenet 'i' erteke: 42 'i' cime: 0x7ffc6d188df4 A 'pi' cimen levo ertek: 42 'pi' erteke: 0x7ffc6d188df4 'pi' cime: 0x7ffc6d188df8 A mutató formátumspecikátora: %p p r i n t f ( " ' i ' cime : %p\n", &i ) ;

Mutatók 0x7ffc6d188df3 0x7ffc6d188df4 0x7ffc6d188df5 0x7ffc6d188df6 0x7ffc6d188df7 0x7ffc6d188df8 0x7ffc6d188df9 0x7ffc6d188dfa 0x7ffc6d188dfb 0x7ffc6d188dfc i memóriaterülete, tartalma: 42 pi memóriaterülete, tartalma: 0x7ffc6d188df4 } }

Páros, páratlan Feladat: dolgozzon a program felhasználó által adott értékkel! #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { i n t szam ; p r i n t f ( " Adjon meg egy e g e s z szamot, a m i r o l " " e l d o n t h e t j u k, hogy p a r o s e vagy " " p a r a t l a n! \ n\n" ) ; s c a n f ( "%d", &szam ) ; i f ( szam%2 == 0) { p r i n t f ( "A szam p a r o s. \ n" ) ; } e l s e { p r i n t f ( "A szam p a r a t l a n. \ n" ) ; } r e t u r n 0 ; }

Páros, páratlan p r i n t f ( " Adjon meg egy e g e s z szamot, a m i r o l " " e l d o n t h e t j u k, hogy p a r o s e vagy " " p a r a t l a n! \ n\n" ) ; Az el feldolgozó egyesíti a karakterlánc konstansokat, ha csak fehér karakterek (white space) választják el ket egymástól. s c a n f ( "%d", &szam ) ; Beolvasás a szabvány bemenetr l scanf függvénnyel történik Els paramétere a formátumsztring (hasonló a printf-hez), amit annyi további paraméter követ, ahány formátumspecikátort használtunk. A beolvasott, konvertált értékeket tároló változók címeit kell átadni!

Páros, páratlan Start Ki: "Adjon meg egy számot,..." Be: szam szam%2 == 0 n Ki: "A szám páratlan" Ki: "A szám páros" i Stop

Páros, páratlan M veleti sorrend (kifejezések) zárójelezés m veletek prioritása Operátor Asszociativitás sizeof jobbról balra * / % balról jobbra + - balról jobbra < <= > >= balról jobbra ==!= balról jobbra = jobbról balra Vezérlési szerkezetek szekvencia iteráció szelekció