A programozás alapjai

Hasonló dokumentumok
Vezérlési szerkezetek

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

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

Internet programozása. 3. előadás

Óbudai Egyetem. C programozási nyelv

Szkriptnyelvek. 1. UNIX shell

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

Java programozási nyelv

Rekurzió. Dr. Iványi Péter

C programozás. 1 óra Bevezetés

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

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

Java II. I A Java programozási nyelv alapelemei

Vezérlési szerkezetek. Szelekció Ciklusok

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

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

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

Java II. I A Java programozási nyelv alapelemei

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

Programozási nyelvek JAVA EA+GY 1. gyakolat

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

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

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

Webprogramozás szakkör

A programozás alapjai 1 Rekurzió

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

Bevezetés a C++ programozási nyelvbe

Szkriptnyelvek II. Perl programok

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

Programozás I. 5. Előadás: Függvények

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

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

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Alprogramok, paraméterátadás

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Imperatív programozás

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 C++ -ban 2007/7

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

Informatika terméktervezőknek

Programozas 1. Strukturak, mutatok

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

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

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

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

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

Haladó DBMS ismeretek 1

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

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

Stack Vezérlés szerkezet Adat 2.

Eljárások és függvények

Szelekció. Döntéshozatal

Apple Swift kurzus 3. gyakorlat

Szoftvertechnológia alapjai Java előadások

A JavaScript főbb tulajdonságai

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

4. Programozási nyelvek osztályozása. Amatőr és professzionális

A C# programozási nyelv alapjai

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Pénzügyi algoritmusok

Programozási nyelvek Java

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

A C programozási nyelv I. Bevezetés

3. Gyakorlat Ismerkedés a Java nyelvvel

1. Alapok. #!/bin/bash

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

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

Objektumorientált Programozás III.

Oktatási segédlet 2014

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

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

A C programozási nyelv I. Bevezetés

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Készítette: Nagy Tibor István

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

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Szoftvertervezés és -fejlesztés I.

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

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

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 III. Pointerek és tömbök.

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

A programozási nyelvek elemei

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

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

Komputeralgebra Rendszerek

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

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

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

Eljárások, függvények

Labor gyakorlat Mikrovezérlők

Programozási nyelvek (ADA)

Adatszerkezetek 1. Dr. Iványi Péter

Programozási nyelvek 6. előadás

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

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Átírás:

A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan, az adattáblában. Némelyik programozási nyelv a változókat egy külön karakterrel jelöli (pl. $, @, %), de pl. a C, C++ nem alkalmaz ilyen konvenciót A változó a típusától függő mennyiségű helyet foglal el a memóriában: egész (integer) tipikusan 4 byte, a dupla pontos (double) 8 byte, a karakterlánc a karakterlánc hossza (plusz 1) byteot, a bonyolultabb objektumok az objektum nagyságának megfelelő helyet. Minden változóról a programnak tudnia kell a típusát (mennyi adatot kell az adattáblából kiszedni). Néhány nyelv automatikus változófelismerést alkalmaz egy nagyos véges mennyiségű változótípussal. Speciális változó: mutató. Ez egy memóriacímre mutat, ahol a hozzá tartozó adat kezdődik. A mutató általában nem mondja meg az adat típusát, ezt meg kell mondani a programnak.

Lehetnek konstans változók, melyek értékét a program nem változtathatja meg. A programnak lehetősége van új adattömböket létrehoznia, ezek menedzsmentje az operációs rendszer feladata ( szivárog a memória ). A függvényhívások során a függvény argumentuma(i) felkerülnek az ú.n. stack-re. A stack egy verem, a memória egy jól meghatározott helyén, melybe egymás után betehetünk adatokat, és kivehetünk onnan, fordított sorrendben (az először betett adat jön ki utoljára). A meghívott függvény kiszedi a megfelelő számú argumentumot (ezért a hívó eljárásnak, ill. a függvénynek konzisztensnek kell lennie), majd a végeredményt visszahelyezi a stackre. Pl. int add(int a, int b) { return(a+b); Az ilyen típusú függvényhívás tulajdonsága, hogy a változó függvénybeli változtatása nem hat vissza a változó értékére a hívott eljárásban. Pl.: c = dupla(a); int dupla(int a) { a =* 2; return(a);

A nagy programokat csapatok fejlesztik, modulokban. Ezért fontos, hogy a változók ne akadjanak össze : o Lokális változók: csak az adott függvényben értelmezettek: a=5; // lokális változó a hívó eljárásban c = dupla(a); int dupla(int x) { int a=2; // lokális változó a hívott eljárásban x =* a; return(x); o Globális változók: a teljes programban értelmezettek, és lehetővé teszik az adatmegosztást a különböző függvények között.

A programozás története Az első ismert programozható gépet 1801-ben alkották meg és a szövőgépek mintáját vezérelte. Ezt fejlesztette tovább Herman Hollerith az IBM lyukkártya megalkotásával (US Statisztikai Hivatal) A kép egy áthuzalozással programozható gépet mutat A Neumann arhitektúra kialakulásával lehetővé vált a program memóriában való tárolása. Az első programok assembly nyelven (gépi kód) íródtak. IBM 402 programozható könyvelőgép Később kialakulnak a magasszintű nyelvek, melyek általában fordítóprogramot igényelnek. A rövidebb feladatok megoldására kitalálják az interpreter nyelveket. interpreter fordítandó szintaxis laza Kötött sebesség lassú Gyors

Vezérlés Alapestben a program szekvenciálisan, az egymás után megadott utasítások végrehajtásával hajtódik végre (egy szál esetében). Ezt a sorrendet a vezérlési utasítások tudják megváltoztatni. A különböző programozási nyelvek ezt különféleképpen valósítják meg, de általánosan a következő típusokat különböztetjük meg: A program folytatása egy másik utasításon (ugrás) Egy utasítássorozat végrehajtása adott feltétel teljesülése esetén (választás) Egy utasítássorozat ismételt végrehajtása (ciklus az utasítássorozat egy korábbi elemére való ugrás) Egy távoli utasítássorozat végrehajtása, mely után a vezérlés visszatér a hívó pontra (szubrutin / függvény) A program leállítása (halt) Az interrupt is a szubrutinhoz hasonló módon változtatja meg a vezérlést, de ezt nem a programból hívható vezérlési utasítással éri el! Egyéb lehetőség még az önmagát átíró kód (csak profiknak). A gépi kódban a legtöbbször csak feltételes, illetve feltétel nélküli ugrás áll rendelkezésre, a fordítónak kell a fenti típusokat erre visszavezetni.

Ugrás A GOTO utasítás a megadott címkéjű sorra ugrik: goto abrakadabra; abrakadabra: i=0; A GOTO utasítás és a címke helyzete tetszőleges (előre, illetve hátraugrás). A GOTO általában valamilyen feltételhez van kötve. A címke pontos alakja függ a programozási nyelvtől (BASIC vagy FORTRAN esetében szám, C, stb. esetében azonosító).

Választás Az IF utasítás kiértékeli az utána következő logikai kifejezést, és IGAZ érték esetén végrehajta a logikai kifejezést követő utasítás(sorozato)t: if (valasz eq igen ) then print Ez jó választás ; elsif (valasz eq nem ) then print Sajnálom ; elsif (valasz eq talan ) then print Látom, óvatos vagy ; else print Nem tudom értelmezni a választ ; end if; A C nyelv nem ismeri az elsif (else if) szerkezet, viszont van benne switch: switch (valasz){ case i : printf( Ez jó választás\n ); break; case n : printf( Sajnálom\n ); break; default: printf( Nem tudom értelmezni a választ ; A logikai kifejezés helyett szerepel aritmetikai kifejezés is (0: hamis, nem nulla: igaz)

Ciklus A FOR utasítás a ciklusszámlálóra alapozott ciklust valósít meg: for(i=0;i<1000;i++){ A WHILE utasítás feltételre alapozott ciklust valósít meg: i=0; while(i<1000){ ; i++; A CONTINUE utasítás a cikluson belül a következő iterációra ugrik, a BREAK pedig kilép a ciklusból: for(i=0;i<1000;i++){ If(i>100) continue; If(i==666) break; Ha a ciklusszámlálóra alapozott ciklusnál a ciklus belsejében átírjuk a ciklusváltozót, vagy a feltételre alapozott ciklusnál a feltétel sohasem lesz hamis, végtelen ciklusra jutunk.

Szubrutin Subroutine, függvény, eljárás, metódus: gyakran használt programrészletek külön blokkba rendezése. A szubrutinok paraméterrel láthatók el (bemenő adatok), és visszatérési értéket adhatnak. Néhány programozási nyelv megengedi a rekurziót (stack-en átadott változókkal!) A szubrutin átláthatóbbá testi a programot, könnyebb az ellenőrzés, fejlesztés, de kissé lassítja a program futását. Néhány fordító ezért hajlamos a szubrutin befordítani a fő programba (növelve ezzel a méretét, de csökkentve a futási időt). Speciális szubrutinok a kivételek (exception): ezek olyankor futnak le, amikor valami előre definiált esemény következik be (nullával való osztás, érvénytelen művelet pl. negatív szám gyöke, túlcsordulás)

Kilépés A programok az utolsó sorhoz érve leállnak. Egy program hamarabb is leállhat: Tervezett módon (exit valamilyen feltétellel pl.) Váratlan módon (le nem kezelt kivétel történik).