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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

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

C programozás. 1 óra Bevezetés

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

Bevezetés a programozásba I.

Programzás I gyakorlat

Bevezetés a programozásba I.

Típusok és konstansok

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

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

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

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

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

Java II. I A Java programozási nyelv alapelemei

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

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

1. Alapok. Programozás II

Pénzügyi algoritmusok

Bevezetés a programozásba. 6. Előadás: C++ bevezető

C programnyelv 1. Kedves Kollegina, Kolléga!

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

Java II. I A Java programozási nyelv alapelemei

Programozás I gyakorlat

Programozás I. gyakorlat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadá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)

Információs Technológia

Programozási nyelvek (ADA)

Programozási alapismeretek 1. előadás

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

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

Programozás. Programozás villamosmérnököknek

Alapismeretek. Programozás I. Hatwágner F. Miklós szeptember 29. Széchenyi István Egyetem, Gy r

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

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Bevezetés a C++ programozási nyelvbe

M veletek és kifejezések

Programozási nyelvek JAVA EA+GY 1. gyakolat

C programozási nyelv

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

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

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

Flex tutorial. Dévai Gergely

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

Programozás I gyakorlat

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

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

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

A C# programozási nyelv alapjai

Szoftvertervezés és -fejlesztés I.

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

3 A C programozási nyelv szintaktikai egységei

Python tanfolyam Python bevezető I. rész

Java programozási nyelv

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

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

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

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Maximum kiválasztás tömbben

Bevezetés a programozásba I.

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

BASH SCRIPT SHELL JEGYZETEK

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Alkalmazott modul: Programozás. C++ alapismeretek. C++ alapismeretek Történet

Adatszerkezetek és algoritmusok

Adatbázis és szoftverfejlesztés elmélet

PROGRAMOZÁSI NYELVEK - CPP. ELŐADÁS JEGYZET

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

Programozás C++ -ban 2007/1

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

Szoftvertechnológia alapjai Java előadások

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Bevezetés a programozásba I.

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

Programozási Nyelvek: C++

1. Alapok. #!/bin/bash

Bevezetés a programozásba Előadás: A const

A C# PROGRAMOZÁSI NYELV

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

C++ programok fordítása

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

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

Bevezetés a C++ programozásba

El feldolgozó. Programozás I. Hatwágner F. Miklós október 16. Széchenyi István Egyetem, Gy r

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

Stack Vezérlés szerkezet Adat 2.

A TANTÁRGY ADATLAPJA

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

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Vezérlési szerkezetek

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

Átírás:

Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18.

Informatikai rendszerek fejlesztése Rendszertervezés (System Engineering) Üzleti folyamat tervezés (Business Process Engineering) Terméktervezés (Product Engineering) Szoftvertervezés (Software Engineering) Követelményspecikáció, -elemzés Tervezés Implementáció Validáció, tesztelés Telepítés (Karbantartás, követés, továbbfejlesztés) Irodalom: Dr. Ulbert Zsolt: Szoftverfejlesztési folyamatok és szoftver min ségbiztosítás

Programozási nyelvek Gépi kód Assembly pelda02.asm (Forrás: Agárdi Gábor: Gyakorlati Assembly) P e l d a 0 2 Segment ; S z e g m e n s d e f i n i c i o. assume c s : Pelda02, d s : P e l d a 0 2 ; Cs e s ds r e g i s z t e r e k b e a l l i ; t a s a a szegmens e l e j e r e. S t a r t : mov ax, P e l d a 0 2 ; A ds r e g i s z t e r b e a l l i t a s a. mov ds, a x mov ax, 0 b800h ; A kepernyomemoria szegmens mov es, a x ; c i m e t e s r e g i s z t e r b e t o l t i. mov d i, 1 1 4 6 ; A d i i n d e x r e g i s z t e r b e ; b e a l l i t j a az o f f s e t c i m e t. mov a l, " A " ; Al r e g i s z t e r b e az "A" b e t u ; a s c i i k o d j a t t o l t i. mov ah, 7 ; A b e t u s z i n e t f e k e t e a l a p o n ; f e h e r s z i n u r e a l l i t j a. mov e s : [ d i ], a x ; Az e s : d i a l t a l m u t a t o t t ; c i m r e i r j a ax t a r t a l m a t a z a z ; a f e k e t e a l a p o n f e h e r "A" ; b e t u t. mov ax, 4 c00h ; K i l e p e s a DOS b a. i n t 21 h P e l d a 0 2 Ends ; A szegmens v e g e. End S t a r t ; A program v e ge

Programozási nyelvek C C++ Dennis Ritchie, Bell Laboratories (1969-1973): C programnyelv UNIX operációs rendszer Szabványok: K&R (1978), ANSI (vagy C89, 1989), C99, C11. Tulajdonságok: általános célú, imperatív (parancsoló, a programnak hogyan kell m ködnie a megfelel állapotváltozások eléréséhez), strukturált (forrásfájlok, blokkok, ciklusok, stb. áttekinthet ség) Bjarne Stroustroup (1979): C with Classes Szabványok: C++ (1983), The C++ Programming Language (1985),..., ISO/IEC 14882:2017 Tulajdonságok, általános célú, procedurális, funkcionális, objektum-orientált, nagyrészt C kompatibilis

Programozási nyelvek Irodalom Brian W. Kernighan, Dennis M. Rithcie: A C programozási nyelv - Az ANSI szerint szabványosított változat Benk László, Benk Tiborné, Tóth Bertalan: Programozzunk C nyelven! - Kezd knek - középhaladóknak Bauer Péter: C programozás Bauer Péter, Hatwágner F. Miklós: Programozás I-II Bjarne Stroustrup: A C++ programozási nyelv I-II. kötet Szoftverek Microsoft Visual Studio QT Creator IDE GNU Compiler Collection Code::Blocks Geany

Programozási nyelvek Tiobe programozási nyelv népszer ségi index, 2018. január

Programozási nyelvek #i n c l u d e <i o s t r e a m > u s i n g n a m e s p a c e s t d ; i n t main ( ) { f o r ( i n t i =1; i <=10; i ++) c o u t << i << ' ' ; cout << endl ; r e t u r n 0 ; } c l a s s Szamok { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { f o r ( i n t i =1; i <=10; i ++) System. out. p r i n t ( i + " " ) ; System. out. p r i n t l n ( ) ; } } <?php f o r ( $ i =1; $ i <=10; $ i ++) e c h o $ i. ' ' ;?> v a r u z e n e t = "" ; f o r ( v a r i =1; i <=10; i ++) u z e n e t += i + " " ; a l e r t ( u z e n e t ) ;

Forrásfájltól a futtatásig 1 Forrásszöveg megszerkesztése (többnyire.cpp kiterjesztés, ASCII szövegfájl) // Ez a s o r egy m e g j e g y z e s #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( ) { c o u t << " Ez az e l s o C++ programunk! " << e n d l ; r e t u r n 0 ; }

Forrásfájltól a futtatásig 2 Összeállítás (build) g++ -Wall -o elso elso.cpp 3 Futtatás Linux terminál wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/ea01$./elso Ez az elso C++ programunk! wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/ea01$

Forrásfájltól a futtatásig Az összeállítási folyamat résztevékenységei 1 Fordítás (compiler) elso.cpp fordító elso.o Fordítás (compile) GCC-vel g++ -Wall -c elso.cpp Üzenetek típusai: hibaüzenetek (error) szintaktikai hiba, nem jön létre tárgymodul gyelmeztet üzenetek (warning) gyelmeztetés gyanús megoldásra, javaslattétel, létrejön a tárgymodul (object le)

Forrásfájltól a futtatásig Az összeállítási folyamat résztevékenységei 2 Kapcsoló-szerkesztés (link) fv.-ek tárgykódja: statikus könyvtárakban (.lib, run-time library vagy standard library) g++ -o elso elso.o elso.o indító program (.o) könyvtárak (.lib) kapcsolószerkesztő elso A kapcsoló-szerkeszt hibaüzenetei

Forrásfájltól a futtatásig Összeállítás g++ -Wall -o elso elso.cpp { elso.cpp } Fordítás g++ -Wall -c elso.cpp elso.o indító program könyvtárak Kapcsoló-szerkesztés } elso g++ -o elso elso.o

Forrásfájltól a futtatásig // Ez a s o r egy m e g j e g y z e s #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( ) { c o u t << " Ez az e l s o C++ programunk! " << e n d l ; r e t u r n 0 ; }

Forrásfájltól a futtatásig Megjegyzések: // után a sor végéig /* és */ között akár több soron át Az el feldolgozó törli ket Direktívák: # kezdet sorok #include<... > beszerkeszti a fejfájl (header) tartalmát pl. konstansok, könyvtári függvények használatához (pl. /usr/include/c++/4.8.4/iostream) Direktíva, megjegyzés: el feldolgozó (preprocessor) dolgozza fel elso.cpp előfeldolgozó fordító elso.o

Forrásfájltól a futtatásig A main függvény Függvény: adatok és végrehajtható utasítások csoportja. M ködésük paraméterekkel hangolható, értéket adhatnak vissza. Függvény deníció: teljes információt szolgáltat a függvényr l típus függvénynév(formális-paraméterlista) { függvény-test } A main speciális: a program belépési pontja (entry point) Állapotkódot ad vissza az OS-nek (0: minden OK) Visszatérési érték: return után ; utasítás (statement) végének jelzése

Forrásfájltól a futtatásig Szabványos folyamok Kimenet (stdout, képerny ), használata cout-tal Bemenet (stdin, billenty zet), használata cin-nel Hiba (stderr, képerny ), használata cerr-rel (nem puerelt) A cout üzenetek megjelenítése << operátor (m veleti jel): adat folyamba írása endl újsor karakter + puer ürítése Képerny re íráskor valójában függvényhívás történik

Forrásfájltól a futtatásig Névtér: halmaz, melyben minden azonosító egyedi elso.cpp // Ez a s o r egy megjegyzes #i n c l u d e <i o s t r e a m > u s i n g n a m e s p a c e s t d ; i n t main ( ) { cout << "Ez az e l s o C++ programunk! " << endl ; r e t u r n 0 ; } // Ez a s o r egy megjegyzes #i n c l u d e <i o s t r e a m > i n t main ( ) { s t d : : c o u t << "Ez az e l s o C++ programunk! " << s t d : : e n d l ; r e t u r n 0 ; }

Forrásfájltól a futtatásig Átmeneti állományok meg rzése g++ -save-temps -Wall -o "elso" "elso.cpp" Fájlok:,. Feladat: írjuk ki az els 10 természetes szám négyzetét!

Négyzetszámok #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( ) { c o u t << " T e r m e s z e t e s szamok n e g y z e t e i \n\n" ; c o u t << 1 << ' \ t ' << 1 1 << ' \n ' ; c o u t << 2 << ' \ t ' << 2 2 << ' \n ' ; c o u t << 3 << ' \ t ' << 3 3 << ' \n ' ; c o u t << 4 << ' \ t ' << 4 4 << ' \n ' ; c o u t << 5 << ' \ t ' << 5 5 << ' \n ' ; c o u t << 6 << ' \ t ' << 6 6 << ' \n ' ; c o u t << 7 << ' \ t ' << 7 7 << ' \n ' ; c o u t << 8 << ' \ t ' << 8 8 << ' \n ' ; c o u t << 9 << ' \ t ' << 9 9 << ' \n ' ; c o u t << 10 << ' \ t ' << 10 10 << ' \n ' ; r e t u r n 0 ; }

Négyzetszámok Kimenet Termeszetes szamok negyzetei 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100

Négyzetszámok 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 Vezérl karakterek, nem nyomtatható jelek, szintaktikai jelentéssel bíró jelek megadása escape jelsorozat (escape sequence), \ jel vezeti be, leggyakrabban használtak: Esc. szekv. Jelentés \b visszalépés (backspace) \n új sor (new line) \r kocsi vissza (carriage return) \t vízszintes tabulátor (horizontal tab, HTAB) \\ fordított törtvonal (backslash) \' aposztróf \" idéz jel \ooo oktális szám \xhh hexadecimális szám \0 zérus ASCII kódú karakter

Négyzetszámok Néhány aritmetikai operátor Megjegyzések: 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 Kis egész kitev j hatványok szorzás(ok) Meddig tart majd a gépelés (+kódméret n, +hibalehet ségek), ha az els 1000 szám négyzetére lesz szükség?!

Négyzetszámok #i n c l u d e <i o s t r e a m > using namespace s t d ; i n t main ( ) { cout << " T e r m e s z e t e s szamok n e g y z e t e i \n\n" ; i n t szam ; szam = 1 ; while ( szam <= 10) { cout << szam << ' \ t ' << szam szam << ' \n ' ; szam = szam + 1 ; } r e t u r n 0 ; }

Négyzetszámok Változók Pl.: int szam; 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)

Négyzetszámok 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

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

Négyzetszámok 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

Négyzetszámok 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; kifejezés (expression): értéket állít el konstansok, változók, m veletek (operátorok) segítségével

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

Négyzetszámok Elöltesztel ciklus feltétel tevékenységek i n <megel z tevékenységek> while(feltétel kifejezése) { tevékenységek } <további 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

Páros, páratlan Olvassunk be egy egész számot, majd döntsük el, hogy páros-e! #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( ) { i n t szam ; c o u t << " Adjon meg egy e g e s z e t, a m i r o l e l d o n t j u k, " << " hogy p a r o s e vagy p a r a t l a n! " << e n d l ; c i n >> szam ; i f ( szam%2 == 0) { c o u t << "A szam p a r o s. " << e n d l ; } e l s e { c o u t << "A szam p a r a t l a n. " << e n d l ; } r e t u r n 0 ; }

Páros, páratlan Beolvasás szabvány bemenetr l: std::cin 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

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