Programozás Alapjai I.

Hasonló dokumentumok
Programozási alapismeretek 4.

C# tanfolyam I. A.Net keretrendszer, programozási technikák és alapismeretek. Kis Balázs

Java programozási nyelv

Széchenyi István Szakképző Iskola

IT - Alapismeretek. Feladatgyűjtemény

Webprogramozás szakkör

IT - Alapismeretek. Megoldások

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Alapismeretek. Tanmenet

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

Programzás I gyakorlat

Széchenyi István Szakképző Iskola

2. Fejezet : Számrendszerek

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

SZÁMÉRTÉKEK (ÁT)KÓDOLÁSA

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

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

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

Programtervezés. Dr. Iványi Péter

Programozás alapjai (ANSI C)

Adatbázis és szoftverfejlesztés elmélet

A programozás alapjai

Szakmai program 2015

Szoftver-technológia I.

Adatbázis rendszerek. dr. Siki Zoltán

Struktúra nélküli adatszerkezetek

Adatszerkezetek 1. Dr. Iványi Péter

Történeti áttekintés

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

2019/02/11 10:01 1/10 Logika

INFORMATIKAI ALAPISMERETEK

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

Kedves Diákok! A feladatok legtöbbször egy pontot érnek. Ahol ettől eltérés van, azt külön jelöljük.

INFORMATIKAI ALAPISMERETEK

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Programozás alapjai Bevezetés

Bevezetés az informatikába

Programozás alapjai. Wagner György Általános Informatikai Tanszék

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

Programozási nyelvek 6. előadás

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

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

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Informatika érettségi vizsga

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

Adatstruktúrák Algoritmusok Objektumok

Java II. I A Java programozási nyelv alapelemei

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

Tudásszint mérés feladatlap

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

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

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

III. Alapfogalmak és tervezési módszertan SystemC-ben

Algoritmizálás és adatmodellezés tanítása 1. előadás

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

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

Informatikus informatikus Térinformatikus Informatikus T 1/9

Verifikáció és validáció Általános bevezető

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

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

elektronikus adattárolást memóriacím

Gyakorló feladatok az 1. nagy zárthelyire

Informatika. Magyar-angol két tanítási nyelvű osztály tanterve. 9. évfolyam

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

INFORMATIKAI ALAPISMERETEK

Hardverközeli programozás 1 1. gyakorlat. Kocsis Gergely

Irányítástechnika Elıadás. PLC-k programozása

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Adatok ábrázolása, adattípusok

Informatika ismeretek érettségi szóbeli témakörök

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

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Algoritmizálás, adatmodellezés tanítása 6. előadás

Fordítóprogramok. Aszalós László szeptember 7.

Logikai áramkörök. Informatika alapjai-5 Logikai áramkörök 1/6

Algoritmusok, adatszerkezetek, objektumok

Programozási nyelvek Java

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

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

Java II. I A Java programozási nyelv alapelemei

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

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

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

Rekurzió. Dr. Iványi Péter

1. tétel. A kommunikáció információelméleti modellje. Analóg és digitális mennyiségek. Az információ fogalma, egységei. Informatika érettségi (diák)

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Már megismert fogalmak áttekintése

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

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

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

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

Készítette: Nagy Tibor István

Bevezetés. Dr. Iványi Péter

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Név: Neptun kód: Pontszám:

Vezérlési szerkezetek

Webes alkalmazások fejlesztése

Átírás:

Programozás Alapjai I. Számítógép felépítése, Logikai és matematikai alapok, programnyelvek, alapfogalmak, programozási technikák Kis Balázs

A számítógép felépítése A számítógép alapvető felépítése, részegységei. Kis Balázs 2

Számítógép felépítése I. A mai számítógép, felépítését tekintve 3 fő elemre épít, mely elengedhetetlen a működéséhez: Alaplap Processzor Memória Ezek az alapelemek minden számítógépben megtalálhatóak. Természetesen a számítógép használatához még szükség van más eszközökre is, illetve a multimédiás PC ezen felül sok más eszközt is tartalmaz. Kis Balázs 3

Számítógép felépítése II. Az alaplap elsődleges feladata, hogy a processzor és a memória között fenntartsa az úgynevezett sínt, vagy buszt mely összeköti a processzort a memóriával, illetve egyéb eszközökkel. Maga a sín vagy busz egy adatvezeték köteg. Régebben a processzor órajelét és a memória címzését is az alaplap oldotta meg. Természetesen egy multimédiás PC alaplapja nagyon sok más feladatot is ellát. Kis Balázs 4

Számítógép felépítése III. A memória feladata, hogy a futtatandó programokat, és az éppen futó programokhoz tartozó szükséges adatokat tárolja a futás idejére. A memória mérete tehát nagyban befolyásolja a számítógép teljesítményét, hiszen, amennyiben kevés áll rendelkezésre belőle, sokkal többször kell a háttértárakról információt betölteni, amik viszont nagyon lassúak. Kis Balázs 5

Számítógép felépítése IV. A processzor feladata, hogy aritmetikai és logikai számításokat hajtson végre megadott operandusokon. A számítás elvégzése után a processzor a buszra küldi az eredményt, melyet már újra az alaplap feladata a megfelelő helyre eljuttatni (képernyőre, memóriába, stb.). Amennyiben az eredménnyel még további számításokat kell végezni, nem kell kiküldeni a processzorból. Kis Balázs 6

Logika és Számrendszerek Fontos megállapítások a logikában és a számrendszerek felépítése. Kis Balázs 7

Programozás logikai alapjai A programozás alapvetően a matematikai logikára épül, így az ott alkalmazott szabályok érvényesülnek a programozásban is. Az informatika és így a programozás egyik legfontosabb logikai alaptétele, mely megalapozza a mai elektronikai eszközök működési elvét, George Boole megállapítása volt. Kis Balázs 8

George Boole megállapítása Az 1800-as években leírt két munkája alapján, minden komplex művelet levezethető igazak és hamisak sorozatából. Ami alapján bármilyen matematikai művelet, komplexitásától függetlenül levezethető kettes számrendszerben is. E matematikai bizonyítás alapján Neumann János ajánlotta a kettes számrendszer használatát. Kis Balázs 9

Továbbvezetés I. Az elmélet természetesen alapjában nem alkalmas a mai informatika problémáinak megoldására. Komplex logikát kell felépíteni az elmélet alapján, melyben értelmezettek a matematikai és logikai műveletek. Kis Balázs 10

Számrendszerek I. Az informatika története során a fejlesztők több számrendszer alapján is elindultak a fejlesztéssel, így például: 2-es számrendszer 3-mas számrendszer 10-es számrendszer Természetesen a projektek nagy része sikertelen volt, így a 2-es számrendszer az alapja a mai informatikának. Kis Balázs 11

Számrendszerek II. A 2-es számrendszer az alapja ugyan a mai informatikának, de emellett használnak segédszámrendszereket is: 10-es számrendszer A felhasználókkal való eredményközlésre 16-os számrendszer Minden olyan kettes számrendszerbeli számot melyet már túl sok lenne leírni, ebbe a számrendszerbe konvertálják Kis Balázs 12

Számrendszerek III. A segéd számrendszerek természetesen szoftveres szinten jelennek meg, tehát maga a számítógép továbbra is csak 2- es számrendszer segítségével dolgozik. Ugyanakkor a segéd számrendszerek ismerete is elengedhetetlen, hiszen manapság hardver közeli fejlesztést is szoftver közeli szinten oldják meg, a 2-es számrendszer pedig egyre inkább csak a logika alapjaként jelenik meg a programozásban. Kis Balázs 13

Számrendszerek IV. A az egyes számrendszerekre a következő állítások igazak: Minden esetben 0-tól, a számrendszer 1-ig tartó értékek szerepelnek az adott számrendszerben, mivel a számrendszer száma, már egy következő hatványt jelöl. Minden egyes leírt szám, jobbról-balra, 0-tól egyesével emelkedő hatványértékeket takar. Kis Balázs 14

A tízes számrendszer I. A tízes számrendszer az a számrendszer melyet mi magunk is a hétköznapokban alkalmazunk. Az informatikában, mint segéd számrendszer jelenik meg, hiszen az embernek ezzel a számrendszerrel a legegyszerűbb dolgoznia. Az informatikában a szabályok melyeket a matematika felállított a 10-es számrendszeren belül ugyancsak érvényesek. Kis Balázs 15

A tízes számrendszer II. A tízes számrendszerben a 0-9-ig terjedő számok szerepelnek. És ily módon, minden egyes hatványérték ezeket a számokat veheti fel: 9 5 3 5 4 10 4 10 3 10 2 10 1 10 0 9*10000 5*1000 3*100 5*10 4*1 Így látható, hogy ha 10-et felvenné bármelyik szám, az pont a következő hatvány érték lenne Kis Balázs 16

A tizenhatos számrendszer I. Más néven hexadecimális számrendszer. Ez a számrendszer is segéd számrendszerként szerepel az informatikában. Felhasználása nagy jelentőséggel bír a következő területeken: Memória címek jelölésében. Színek keverésében. Az IPv6 címekben. MAC address címekben. Kis Balázs 17

A tizenhatos számrendszer II. A 16-os számrendszer felépítését tekintve a számokat 0-9-ig illetve a betűket A-F-ig tartalmazza. Az A-F betűk sorrendben 10-15-ig jelölik a számokat, ezzel elkerülve, hogy egy-egy tag akár 2 szám is lehessen. A számrendszer azért is oly kedvelt mint segédszámrendszer, mert a kettes számrendszer egyes hatványaival megegyezik a 16-os számrendszer össze hatványa. Kis Balázs 18

A tizenhatos számrendszer III. A tizenhatos számrendszerben tehát egy szám ábrázolása így néz ki: f 2 9 b a 16 4 16 3 16 2 16 1 16 0 15*65536 2*4096 9*256 11*16 10*1 Mint látható a 10-es számrendszerhez hasonlóan a 16-os számrendszerben az egyes tagok, a 16, 0-tól induló hatványait jelölik. Kis Balázs 19

A kettes számrendszer I. A kettes számrendszer valójában az informatika alapja. A számrendszerben mindösszesen 2 szám található 0 és 1. A számrendszer azért a legalkalmasabb elektronikai eszközökön való számítások végzésére, és működtetésére, mivel az elektronikában könnyen reprodukálható a számrendszer. Kis Balázs 20

A kettes számrendszer II. Hiszen a számrendszer elektronikai eszközökön a feszültség van/nincs segítségével felépíthető. A magas, azaz igaz jel mindig az 1-es, az alacsony, azaz hamis jel a 0-ás értéket jelöli. A programozásban is nagy szerepet játszik a kettes számrendszer, hiszen a matematikai logika, mely erre a számrendszerre alapoz, a programozás alapja. Kis Balázs 21

A kettes számrendszer III. A kettes számrendszer felépítése tehát a következők szerint alakul: 1 0 1 1 0 2 4 2 3 2 2 2 1 2 0 1*16 0*8 1*4 1*2 0*1 A kettes számrendszer is ugyan azon elveken épül fel mint az előzőekben látott két számrendszer. Kis Balázs 22

Logika I. A kettes számrendszer mint azt George Bool megállapításai alapján is láthattunk a logika alapjának is tekinthető, hiszen az 1 mint igaz, a 0 mint hamis érték tekinthető. Ezáltal a matematikai logika (kijelentés logika és következtetés logika, illetve bool algebra) alapvető megállapításokat, axiómákat tart rajta értelmezve. Kis Balázs 23

Logika II. A kettes számrendszerben, a logikai kapcsolatok a követkőképpen alakulnak: És kapcsolat (AND) A végeredmény akkor igaz, ha minden érték igaz. Vagy kapcsolat (OR) A végeredmény akkor igaz, ha bármely érték igaz. Kizáró vagy kapcsolat (XOR) A végeredmény akkor igaz, ha bármely érték igaz, azonban az összes érték egyszerre nem igaz. Kis Balázs 24

Logika III. És kapcsolat igazságtáblája: Vagy kapcsolat igazságtáblája: A B A ÉS B 0 0 0 0 1 0 1 0 0 1 1 1 A B A VAGY B 0 0 0 0 1 1 1 0 1 1 1 1 Kis Balázs 25

Logika IV. Kizáró vagy kapcsolat igazságtáblája: A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0 A programozásban is a matematikában felírt szabályok érvényesek. Kis Balázs 26

Logika V. Az eddigiekben átvett logikai műveletek mindegyike két operandusos művelet volt, ami azt jelenti, hogy a művelet két logikai érték között hajt végre műveletet. A formátum: A @ B Azonban létezik olyan művelet is, ami egy operanduson hajt végre műveletet: A Nem A Negáló művelet (NOT): 0 1 Negálja egy megadott operandus értékét. 1 0 Kis Balázs 27

Logika VI. A logikában további nagyon fontos törvényszerűség, a De Morgan azonosság: Nem(A ÉS B) = Nem A VAGY Nem B Nem(A VAGY B) = Nem A ÉS Nem B Így tehát a két formula megegyezik tehát konvertálható az egyik a másikba. Kis Balázs 28

Feladat I. Határozzuk meg a következő számok 10-es számrendszerbeli értékét: 01101001001 11001011010 1D3F Írjuk fel a 234 számot kettes számrendszerbeli alakjában! Kis Balázs 29

A Program és generációi Program fogalma és Programnyelvek generációi. Kis Balázs 30

A program avagy alkalmazás Programnak vagy alkalmazásnak nevezzük azokat a speciális adatállományokat, amelyek futtathatók bizonyos célkörnyezetben és valamilyen célfaladat érdekében utasítások sorát hajtatják végre a céleszközzel. A program, futása során különböző erőforrásokat használhat, illetve beavatkozásokra reagálhat, melyek módosíthatják működését. Kis Balázs 31

Programnyelv generációk A programnyelveket csak úgy mint a számítógépeket generációkba oszthatjuk, melyek egyfajta fejlettségi szintet jelölnek: 1. Gépi kódú programozás 2. Assembly 3. Procedurális nyelvek 4. OOP 5. Specializált nyelvek 6. Mesterséges intelligencia Kis Balázs 32

Gépi kódú programozás A számítógépek hőskorszakában használatos programozási módszer, mely teljesen hardver közeli programozást valósít meg. Semmilyen mai programozásban megszokott elem nincs benne, kizárólagosan processzor utasítások sora binárisan, mely így igen nagy programkódot eredményezett. Lyukkártyán és lyukszalagon láthattunk ilyet élőben utoljára. Kis Balázs 33

Assembly Olyan programnyelv, mely még mindig processzor közeli, azonban itt már rövidítések, illetve értelmes utasítások is megjelennek, így a megjegyzése, tanulása lényegesen egyszerűbb. Ilyen nyelveket manapság még mikroprocesszoros áramkörök vezérlésére használnak. Minden program amit megírunk végül assembly-re fordul le. Kis Balázs 34

Procedurális nyelvek Olyan programnyelvek, melyek már különböző parancsokkal rendelkeznek, melyek valójában mini alprogramok. Ezekben a nyelvekben lehetőségünk van magunknak is létrehozni új alprogramokat. Ezekben a nyelvekben jelentek meg először a manapság ismeretes szerkezetek. Ilyen például a Pascal nyelv. Kis Balázs 35

OOP Objektum-Orientált programozásnak nevezzük a procedurális programozás egyfajta továbbfejlesztését. Az OOP alapú nyelvekben elsődleges eltérés a Procedurális nyelvekhez képest, hogy nagy hangsúly van azon, hogy a kezelendő adat, és az azon értelmezett feladatok, alprogramok egymás mellé legyenek zárva, így adat egységeket képezve. További fontos átalakulás, hogy nagyobb hangsúly lett fektetve a program továbbfejleszthetőségre, illetve a csapatmunkára. Kis Balázs 36

Specializált nyelvek Olyan programozási nyelvek, melyek egy bizonyos specifikus feladatra lettek kifejlesztve. Ezeket a nyelveket, globális feladatok megoldására nem lehet, vagy nem érdemes alkalmazni, azonban a célterületen amire kifejlesztették sokkal optimálisabbak mint más programnyelvek az adott területen. Ilyen például az SQL. (Standard Query Language) Kis Balázs 37

Mesterséges Intelligencia A mesterséges intelligencia is egyfajta programozási generáció. Itt olyan nyelvek jönnek szóba, amik különböző, géptől megszokott intelligencián túlmutató, képességekkel rendelkező programok fejlesztésében használatosak. Ilyenek jelenleg főként az adathalász, adatbányászatban használatos rendszerek. Kis Balázs 38

Programnyelvek Programnyelvek típusai, csoportosítása. Kis Balázs 39

Programnyelvek I. A programnyelveket több csoportosítási rendszer szerint is csoportosíthatjuk. Elsődleges csoportosítási elv a programnyelv programozási elve alapján történik: Funkcionális programozás Strukturált programozás Kis Balázs 40

Funkcionális programnyelvek Ezek a programnyelvek alapvetően a Specializált nyelvek alapjait adják. Ezen nyelveknek az elsődleges feladata, hogy a matematikai logika alapján felépített program készüljön el, mely nem kifejezetten felhasználói rendszert alkot, hanem egyes programok kiszolgálását végzik el. Ilyen nyelv például az Microsoft Visual F# Kis Balázs 41

Strukturált programnyelvek Ezek azok a programnyelvek, melyek a köztudatban mint programozási nyelvek élnek. Ezek a nyelvek szolgálnak különböző felhasználói, webes, szerverkiszolgáló programok összerakására. A tanfolyamon mi ezeknek a programozási nyelveknek alapjaival fogunk megismerkedni. Kis Balázs 42

Programnyelvek II. A programnyelvek további csoportosítási elve lehet a felhasználás területe is. Ebben az esetben ugyancsak két nagy csoportra bonthatjuk őket: Webfejlesztő programnyelvek. Lokális fejlesztést lehetővé tevő nyelvek. Természetesen ez a csoportosítás egyre jobban összemosódik. Kis Balázs 43

Programnyelvek III. Lokális fejlesztés Pascal C# (nem minden része) Java (nem minden része) C / C++ Delphi Objective C Webfejlesztés Java script (Ecma script) PHP ASP Java Flash (Action Script) Silverlight Kis Balázs 44

Webprogramozási nyelvek I. Ezek a nyelvek, melyeket előzőekben már láthattunk, az webre szánt programok fejlesztésében használatosak. Ez nem feltétlenül jelenti azt, hogy másra nem alkalmasak, azonban erre optimalizáltak. Ezek a nyelvek általában script nyelvek, mely azt jelenti, hogy a program végrehajtja a kívánt feladatokat, visszaadja az eredményt és kilép. Kis Balázs 45

Webprogramozási nyelvek II. Természetesen a weben ezek a programnyelvek tökéletesen megfelelnek, hiszen egy HTML alapú kimenetet adnak vissza legtöbbször (kivéve ha külön program értelmezi a visszaadott kódot). A weben jelenleg üzemelő weboldalak legnagyobb része már nem statikus, hanem egy program generálja a kimenetet. Kis Balázs 46

Lokális programozási nyelvek I. Ezek a programnyelvek régebben hasonlóak voltak mint a manapság már csak weben alkalmazott nyelvek. Mára már szinte kivétel nélkül mindegyik lokális programozásra szánt, legalább 4. generációs, nyelv rendelkezik GUI-val (Graphical User Interface) is, melynek segítségével a program vizuálisan jelenik meg. Kis Balázs 47

Lokális programozási nyelvek II. A vizuálisan megjelenő programok, azonban már nem lehetnek lefutás alapúak, hiszen a program működése a különböző vezérlőkön (gomb, címke, beviteli mező, stb.) keresztül történik, mely így nem egy bizonyos vonalat követve fut. Természetesen a programnyelvek nagy részének továbbra is megmaradt script nyelvekhez hasonló változata is. Kis Balázs 48

Programnyelvek IV. További lehetőség a csoportosításra, az ősök alapján való csoportosítás. Kis Balázs 49

Programnyelvek konklúzió A program nyelveket nagyon sok szempont szerint lehet csoportosítani. Alapvetően mi a működési célterület szerinti csoportosítást fogjuk alkalmazni, mivel eszerint lehet megkülönböztetni azt is, hogy milyen követelményei vannak az adott programnyelvnek. Kis Balázs 50

Programozási alapismeretek Programozási alapfogalmak, alapvető elemek Kis Balázs 51

Alapfogalmak I. Szintaktika Az a séma, melyet az adott programozási nyelv előír számunkra. Ezt a sémát kell követnünk ahhoz, hogy hibátlanul tudjuk futtatni a programunkat. Szintaktikai hiba: ha eltérünk ettől a sémától, pl.: for helyett fro-t írunk. Szemantika Az a séma, melyet a matematika és logika szab meg. Szemantikailag hibás program például egy végtelenségig futó program, vagy egy 0-val való osztás. Kis Balázs 52

Alapfogalmak II. Interpreter Lexikális értelmező, mely a fordítókörnyezetek, illetve manapság egyre inkább az IDE-k (Integrated Development Environment) részét képezi. Feladata, hogy a programozó által leírt programkódot értelmezze. Compiler Fordító egység, melynek feladata, hogy az Interpreter által feldolgozott kódot, a megadott helyre, az adott nyelvben értelmezett célkódban előállítsa. Kis Balázs 53

Alapfogalmak III. Konstans: Olyan név érték páros, mely a program futásához elengedhetetlen, de megváltoztatni a program futása közben nem lehet. Változó: Olyan név érték páros, mely a program futása alatt megváltozhat, ha a programban mi utasítást adunk rá. Ezek az értékek a memóriában tárolódnak, és onnan tudjuk őket feldolgozni. Kis Balázs 54

Változó és Konstans I. A változókat és konstansokat azért érjük el nevük szerint a memóriából, mert azt, hogy adott futásnál pontosan a memória melyik részén vagyunk nem tudjuk, mivel az Operációsrendszer dönti el, hova kerülünk minden induláskor. A memóriában az adatok és a programok egymás mellett szerepelnek (Neumann elv), így nehéz lenne kitalálni hol van adat, és hol van program. Kis Balázs 55

Alapfogalmak IV. Deklaráció: Az a folyamat, melynek során létrehozunk valamilyen változót, vagy konstanst. Egy definiálási folyamat, melyben megadjuk az értelmezőnek, hogy innentől valamilyen új adattárolót szeretnénk használni. Kezdőérték: A deklarációs folyamat részeként, az adott tároló létrejön ugyan, de ekkor még semmi nem szerepel benne. Az érték amit először töltünk az adott tárolóba. Kis Balázs 56

Alapfogalmak V. Adatszerkezet Olyan szerkezet, mely adatok, valamilyen rendszer szerinti tárolását, szervezését végzi el oly módon, hogy a szerkezetben lévő adatok valamilyen szempont szerint könnyen feldolgozhatóak legyenek. Az adatszerkezet megszabja a benne tárolt adatok elérhetőségét és tárolási módjukat is, tehát, hogy hogyan lesznek tárolva a memóriában. Kis Balázs 57

Alapfogalmak VI. Tömb (vektor, array) Adatszerkezet, melyben összetartozó, vagy legalább egyforma típusú elemek tárolhatók: 1 2 1 4 8 3 6 9 10 5 A tömb tehát olyan mint összetartozó változók összessége. A tömb mindig egy irányú kiterjedéssel rendelkezik. A tömb indexelhető adatszerkezet, tehát az egyes elemeit közvetlen elérhetjük. Kis Balázs 58

Mátrix (multidimensional array) Többdimenziós tömb Alapfogalmak VII. 1 5 4 8 3 9 2 5 8 43 5 2 8 5 2 8 4 99 5 3 Ugyan azok a szabályok érvényesek rá mint a tömbre, tehát ugyancsak összetartozó vagy legalább egyforma típusú értékek találhatók benne. A mátrix, kiterjedését tekintve akármekkora lehet, tehát akárhány dimenziós kiterjedése lehet. Kis Balázs 59

Tömb adatszerkezet I. A tömb és a mátrix felépítését tekintve azonos adatszerkezetnek tekinthető Működésük arra épül, hogy az elemek nem csak használati szempontból következnek egymás után, hanem fizikailag is egymás után kell következzenek a memóriában. Ezért lehetséges index rendszer szerinti bejárásuk, hiszen ha ismerjük a típust, és tudjuk, hogy hányadik elemet keressük, egyszerűen kezdőcím + típusfoglalás * hányadik címre kell ugranunk. Kis Balázs 60

Tömb adatszerkezet II. Ez az elrendezés igen gyorssá teszi az adatszerkezet bejárását, használatát, de egyúttal helypazarlást is eredményez: X X X = Foglalt terület X X X X X X Az első, sematikus memóriában, nem tudunk egy 5 elemű tömböt létrehozni, habár lenne rá elegendő hely. A másodikban már lehetséges lenne. Kis Balázs 61

Alapfogalmak VIII. Elágazás: Olyan programrész, ahol a program futása szétágazik két, vagy több ágra. Iszik, vagy vezet Egyszerre mindig csak egy ágon folytathatja a program a futását. Az egyik legfontosabb program vezérlő elem, hiszen segítségével a program nem egyirányú, hanem megfelelő esetben más úton is folytathatja futását. Kis Balázs 62

Alapfogalmak IX. Az elágazásokhoz minden esetben szükség van egy feltételre, melynek igaz, hamis kimenetűnek kell lennie. Kivételt képez ez alól a többszörös elágazás. A logikai feltétel bonyolultságát tekintve korlátlan, és természetesen az előzőekben tanult logikai operátorok alkalmazhatók benne. Kis Balázs 63

Alapfogalmak X. Ciklus Olyan programrész, amely egy bizonyos logikai feltétel teljesüléséig ciklikusan lefut. Addig szárítom a hajam, amíg meg nem szárad Addig mosogatok, míg el nem mostam az összes edényt A ciklus feltételét nagyon figyelmesen kell megírni, mivel ha a feltétel mindig teljesül, pl.: 1<2, akkor a program végtelen ciklusba kerül. Kis Balázs 64

Alapfogalmak XI. A ciklusoknak nyelvtől függően 3-4 típusa létezik: Elöl tesztelős ciklus A feltételt a ciklus belépésekor teszteli, ezáltal, ha a feltétel elve nem teljesül, le sem fut. Minden esetben bennmaradási feltételt kell megadni, tehát, amíg teljesül a feltétel, addig fut le újra a ciklus. Hátul tesztelős ciklus A feltételt a ciklus végén teszteli, így ha a feltétel nem teljesül, akkor is minimum egyszer lefut a ciklus. C nyelvekben bennmaradási feltételt kell ide is megadni, Pascal alapú nyelvekben kilépési feltételt vár a nyelv. Kis Balázs 65

Alapfogalmak XII. Számlálós ciklus: Egy bizonyos szám szor fut le a ciklusmag. Valójában egy speciális elöl tesztelős ciklus, azonban ebben az esetben a feltétel az, hogy már elértük-e a kívánt lefutást. Bejáró ciklus: Egy speciális ciklusfajta, mely nem minden nyelvben található meg. Feladata, hogy tömböket, szekvenciálisan bejárható adatszerkezeteket a lehető legegyszerűbben lehessen bejárni. Kis Balázs 66

Alapfogalmak XIII. A változónál és konstansnál tudjuk, hogy névhez kötötten van egy memória címünk, amin keresztül elérjük az adatunkat. De a memóriában a legkisebb címezhető egység a Bájt, tehát 8 Bitnél kisebb egységet nem érünk el, és minden egyes bájtnak címe van. Azonban nem biztos, hogy csak 1 bájtnyi adatot akarunk tárolni 1 változóban lásd tömb Megoldás: Meg kell adni, hogy a változó pontosan mekkora területet foglal a memóriában, így ha tudjuk a kezdő címét, már tudjuk, hogy onnan még hány bájt tartozik hozzá. Kis Balázs 67

Alapfogalmak XIV. Típus: Az a jellemzője, egy változónak, konstansnak, tömbnek, mátrixnak, bármely adattárnak, mely azt szabja meg, hogy az adott tárolóban milyen érték / értékek tárolhatók el. Megszabja az értéktartományt, az értékkészletet, és az adaton értelmezhető műveleteket. Megadása azért fontos, mivel a memóriában nem mindegy, hogy mekkora helyet kell a számára fenntartani. A típus megadása manuálisan egyes nyelveken nem lehetséges, vagy nem kötelező. Kis Balázs 68

Alapfogalmak XV. Gyakori típusok: Egész számokat tárolni képes típusok: Egész 2^32 bit szélességű értékmező. Azaz ~4000000000-ig a számokat tárolni képes típus lenne, amennyiben nem tárolnánk benne negatív számokat, így ~-2000000000 - ~2000000000-ig a számokat tárolni képes típus. Bájt 2^8 bit szélességű értékmező 0-255-ig a számokat képes tárolni. Logikai érték tárolására képes típus Logikai Igaz/hamis értékeket tud tárolni. Kis Balázs 69

Alapfogalmak XVI. Tört számokat tárolni képes típusok Valós 7-8 szám pontossággal a tört számokat tárolni képes típus. A Karakterisztika 32 bites egész szám (integer) A Mantissza 10-7/8 -ig terjedő szám Szöveges típusok: Karakter Egy karakter tárolására alkalmas típus. Szöveg Karakter lánc tárolására alkalmas típus. Kis Balázs 70

Operátorok I. Operátoroknak nevezzük azokat a matematikai, logikai jelölőket, melyek egyfajta műveletet jelölnek. A programozásban, sok egyedi operátor mellett, a matematikában használatos operátorok ugyancsak szerepelnek. Az operátorok jelölése, az egyes nyelvcsoportokban eltérő lehet. Alapvetően két nyelvcsoport operátorai az elterjedtek: Pascal alapú jelölés (verbose kifejtett, bő leírású) C alapú jelölés (terse tömör, jelölt leírású) Kis Balázs 71

Operátorok II. Operátorok: Értékadás: := Egy változó értéket kap, melyet ezután a memóriában fog tárolni a program végéig. Pl.: c := 2 Összeadás/Kivonás/Szorzás/Osztás + - * / Használata ugyan úgy működik mint a matematikában. Pl.: c := 2 + d e * 2 Kis Balázs 72

Operátorok III. Logikai operátorok: = Egyenlő-e a két érték. Pl.: b := a = c <> Nem egyenlő-e a két érték. Pl.: b := a <> c < > Kisebb, vagy nagyobb az adott érték mint az utána jövő Pl.: b := a < c <= >= Kisebb, vagy egyenlő, vagy nagyobb, vagy egyenlő az adott érték mint a következő. Pl.: b := a <= c Kis Balázs 73

Operátorok IV. AND OR XOR Olyan operátorok, melyek két logikai formula közti kapcsolatot jelenti. Pl.: b := a<c AND c<d OR e Példa: a := 2 c := a + 2 e := igaz b := a < c OR e Kis Balázs 74

Algoritmus Algoritmizálási technikák, algoritmusok típusai. Kis Balázs 75

Az algoritmus Olyan leíróeszköz, mely egy programot, vagy annak egy részét, tudja modellezni. Az algoritmus célja, hogy egy programnyelv független programunk legyen, melyet a megtervezés és leírás után akármelyik programnyelvbe lehet implementálni. Hasznos lehet, nagyobb projektek kisebb részeinek megtervezéséhez, illetve akkor, ha nekünk csak egy ötletünk van egy programra, de a célnyelvben nem tudjuk magunktól megírni azt. Kis Balázs 76

Algoritmus típusok Alapvetően 3 féle algoritmusról beszélhetünk: Szöveges (Pszeudó kód) Folyamatábrás Struktogrammos Mindhárom algoritmus alkalmas egy program megtervezésére. A legtöbbek által ismert a folyamatábrás, ám a szöveges áll a legközelebb a programozáshoz. Kis Balázs 77

Pszeudó kód I. A Pszeudó kód, egy programozás közeli algoritmus típus. Előnye ugyan az mint a hátránya, hogy szöveges, és valójában, ahogy mondjuk, úgy írjuk technológia, vagyis mindenki a saját nyelvén írja le Mégis ez a legelterjedtebb algoritmus típus, mivel könnyen, gyorsan értelmezhető, és gyorsan fordítható programnyelvre. Kis Balázs 78

Pszeudó kód II. Első példa: a, b : egész be a be b Ha a<b akkor ki b-a Különben ki a-b Elágazás vége Második példa: (Optimális?) a, i : egész be a i:=0 Ha a>0 akkor Ciklus amíg i<a ki i i:=i+1 Ciklus vége Elágazás vége Kis Balázs 79

Feladat II. Írjunk algoritmust, mely bekéri egy osztály jegyeit, majd kiszámolja az átlagukat. Kis Balázs 80

Folyamatábra I. Egy merőben vizuális algoritmizáló lehetőség. Ábrákkal szimbolizálja az egyes egységeket a programban. Előnye, hogy könnyű szerkeszteni. Hátránya, hogy bonyolult program esetén hatalmas ábrát igényel. Kis Balázs 81

Folyamatábra II. Első példa: Második példa: Kis Balázs 82

Feladat III. Írjunk folyamatábrás algoritmust egy összeadó, kivonó gépre, mely a felhasználó döntésétől függően összead vagy kivon. Kis Balázs 83

Struktogram I. Egy blokkosított kinézetű algoritmus. Egyetlen nagy négyzetbe írjuk meg az egész programot Előnye, hogy könnyen áttekinthető elkészülte után. Hátránya, hogy ha bővíteni kell a kódot, már igen nehézkesen férünk el benne. Kis Balázs 84

Struktogram II. Első példa: Második példa: Kis Balázs 85

Feladat IV. Készítsünk algoritmust egy olyan programra, amely bekér két számot és a két szám között lévő összes szám négyzetét kiírja! Kis Balázs 86

Algoritmus feltételei Egy algoritmus esetén nagyon fontos definiálni, hogy milyen elő és milyen utófeltétele van az algoritmusban foglalt programnak. Előfeltétel Meghatározza, hogy minek kell teljesülni a futás előtt. Utófeltétel Meghatározza, hogy mi fog történni az algoritmus futása után. Kis Balázs 87

Programozási technikák Programfejlesztési technikák fejlődése, fejlődésük oka, tulajdonságaik Kis Balázs 88

Programozási technikák Alapvetően 4 fajta programozási technikát különböztetünk meg: Monolitikus programozás Moduláris programozás Strukturált/Procedurális programozás Objektum Orientált Programozás Kis Balázs 89

Monolitikus Programozás Ez a technika manapság már szinte teljesen kihalt technika, még ritkán a script nyelvekben fordul elő. Line by Line programozás. Lényege, hogy valójában a parancsokat egymás után felsoroljuk, mindenfajta strukturálás nélkül. Hátrányai: Hosszú, átláthatatlan programkód. Újrahasznosíthatóság nincs. Továbbfejlesztés problémás. Kis Balázs 90

Moduláris Programozás A programozás a kezdetektől fogva hatalmas kódot eredményezett, azonban az ember képtelen hatalmas kódot áttekinteni, pláne módosítani, javítani. A moduláris programozás ebben segít, hiszen a programkódot nem egyben kezeljük, hanem modulonként (egy-egy modul, egy-egy funkcionális rész), így könnyen átlátható marad a program. A program továbbra is monolitikus. Előnye: A program személyiség független. Hátrányai: Nem strukturált felosztás. Integrációs bumm. Kis Balázs 91

Procedurális Programozás Procedurális programozás alatt azt értjük, mikor a programot, már nem egyszerű parancsok sokaságára építjük, hanem az elvégzendő feladatokat csoportosítjuk és alprogramokba szervezzük, majd ezeket a alprogramokat hívjuk meg egymás után. Valójában sok kisebb alprogramunk lesz, melyek egymástól függetlenül állnak. De egymástól nem függetlenül futnak. Előnyei: A kód átláthatóbb lesz, könnyen végigvezethető. A program könnyebben továbbfejleszthető. Hátránya: Túl sok alprogram esetén nehézkes az újrafelhasználhatóság. Kis Balázs 92

Objektum Orientált Programozás Jelenleg a legelterjedtebb programozási technika. OOP esetén már osztályokról és objektumokról beszélünk, melyek különféle kapcsolatokban állhatnak egymással. Előnyei: Kategorizált részegységek. Könnyű újrafelhasználhatóság. Valós világ könnyebb implementálása. Hátránya: Nagyobb memória igény. Kis Balázs 93

Programozás a gyakorlatban Szoftverfejlesztés lépései. Kis Balázs 94

Szoftverfejlesztés lépései A szoftverek fejlesztése a gyakorlatban 4 + 1 lépésből áll: Analízis A probléma feltárása, elemzése. Tervezés A probléma körbejárása, a megoldás megtervezése. Fejlesztés A tervek alapján való lefejlesztés. Tesztelés A végtermék tesztelése. Követés Folyamatos bővítés, hibajavítás a szoftver használata során. Kis Balázs 95

Analízis Az analízis fázisban feltárjuk a probléma részleteit, illetve meghatározzuk, hogy a probléma megoldása egyáltalán megvalósítható-e Erre azért van szükség, mivel annak már a legelején ki kell derülnie, ha a projekt megvalósíthatatlan. Az elemzés során a megvalósíthatóságnál fontos a gazdasági kivitelezhetőség is, tehát, hogy anyagilag kivitelezhető-e a projekt. Kis Balázs 96

Tervezés I. A program tervezése alatt azt értjük, hogy a program egyes részeit specifikáljuk. Leírjuk, hogy mire lesz képes, és az hogy illeszkedik a végleges programba. Majd egységben véve végiggondoljuk, hogy az elgondolt terv, valóban életképes-e. Szükség esetén módosítjuk. Kis Balázs 97

Tervezés II. A gyakorlatban, a szoftverfejlesztő cégek, komoly előmunkálatok árán specifikálják a szoftverterméket. Ez szükséges a projekt biztosításához. A projekt lefutását is itt kell megtervezni, amit általánosan valamilyen modell alapján építenek fel. Pl.: Waterfall, Cleanroom, Scrum, RUP, stb. Kis Balázs 98

Fejlesztés Az elkészült tervezet alapján készülhet el maga a szoftver. A szoftvernek pontosan tükröznie kell terveket, mivel ezzel biztosítható, hogy a megtervezett szoftver is készül el. Az elkészült szoftver ezután verifikáción és validáción (V&V) esik át. Verifikáció: A szoftver megfelel a tervezetnek. Validáció: A szoftver megfelel a megrendelőnek. Optimális esetben a program sikeres verifikációja egyben a sikeres validációt is biztosítja. Kis Balázs 99

Tesztelés Az elkészült szoftvert teszteljük, hiszen a szemantikai hibákat csak tesztelés segítségével lehet feltárni. A tesztelésnek több típusa is létezik: Manuális tesztelés: A szoftvert manuálisan, valós felhasználókkal teszteltetjük. Automatikus tesztelés: A szoftvert egy szoftver segítségével teszteljük, mely megadott pontokon szándékosan próbál helytelen műveleteket véghezvinni és azt jegyzi, hogy mire mit reagált a program. Kis Balázs 100

Követés Miután a tesztek lementek, a szoftver éles környezetben lesz felhasználva, azonban a tesztelés sem szűrhet ki minden hibát, illetve a felhasználás során felmerülő újabb igényeket is implementálni kell a szoftverbe. A követés során a fejlesztő a már megírt és kiadott szoftvert javítja, fejleszti tovább a felhasználói igényeknek megfelelően. Kis Balázs 101