1. dia -...

92
2014/2015 v0.8

Upload: dangdien

Post on 29-Aug-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

2014/2015

v0.8

Page 2: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Célok

Bemutatni a programozás alapvető fogalmait.

Algoritmizálási képesség fejlesztése.

Az eljárásorientált programozási módszer megtanulása.

A Turbo Pascal programozási nyelv elsajátítása.

Objektum orientált programozási elvek megismerése.

2

Page 3: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Témakörök

Szoftverfejlesztés:

Program, szoftver

Elemzés, tervezés, kódolás, tesztelés, dokumentálás, karbantartás

Algoritmizálás:

Algoritmus

Algoritmus leíró eszközök

Programozási nyelvek:

Fejlődés

Eljárásorientált, objektumorientált

3

Page 4: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Témakörök

Programkészítés menete:

Forrásszöveg szerkesztés

Fordítás

Kapcsolatszerkesztés

Hibakeresés, debugolás

Turbo Pascal programozási nyelv:

Nyelvi elemek, adattípus, egyszerű

adattípusok

Nevesített konstans, Változó, kifejezés

4

Page 5: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Témakörök

Vezérlési szerkezetek:

○ Szekvencia

○ Szelekció

○ Iteráció

Karakterlánc

Összetett adattípusok (tömb, rekord,

halmaz)

Alprogramok:

○ Eljárás

○ Függvény

5

Page 6: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Témakörök

Egyéb algoritmusok:

Rendezés

Keresés

Összefésülés

Fájlkezelés:

Szöveges

Típusos

Típus nélküli

Objektum-orientált alapfogalmak

6

Page 7: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

7

Page 8: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Program - Szoftver

Program: A mikroprocesszor számára

végrehajtható utasítások sorozata.

Szoftver: A számítógépet működtető

programok összessége.

8

Page 9: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

CPU utasítás végrehajtás lépési

9

Page 10: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Szoftverfejlesztés

Egy adott problémának számítógép segítségével való megoldása egy hosszú és bonyolult munkafolyamat végeredménye.

A program elkészítésének munkafolyamatát a felmerülő problémától a késztermékig programfejlesztésneknevezzük.

Nagy feladat esetén, amikor több programból álló rendszerről van szó, rendszerfejlesztésről beszélünk.

10

Page 11: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Szoftverfejlesztés lépései

Elemzés (analízis)

Tervezés

Kódolás

Tesztelés

Dokumentálás

Karbantartás

11

Page 12: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Nagy rendszerek esetén

Stratégiai tervezés – projekt létrehozás

Pl. PRINCE (Projektirányítási Módszertan)

A stratégiának része lehet egy

számítógépes szoftver létrehozása.

Pl. SSADM (Strukturált Rendszer Elemzési

és Tervezési Módszertan)

○ Magát a szoftvert valamilyen szoftverfejlesztő

eszközzel készítik.

Pl. Visual C++, Delphi, NetBeans, Oracle

12

Page 13: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Igény, Ötlet – Specifikáció

Első lépésként valakinek kipattan a

fejéből a nagy ötlet, hogy valamilyen

probléma megoldása mennyivel

egyszerűbb lenne egy számítógépes

programmal.

Ezt az igényt meg is kell tudnunk

fogalmazni. A specifikáció nem más mint

a megoldandó, megvalósítandó feladat

megfogalmazása.

13

Page 14: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Elemzés I.

Az elemzés során felmérjük a helyzetet: mire van szükség, mik a lehetőségek.

A probléma megoldásának ebben a szakaszában a szóban forgó problémátminden szempontból egyértelműen definiálni kell, ezzel a problémamegoldás többi fázisát időben lényegesen lecsökkenthetjük és hibamentesebbé tehetjük.

Ehhez az szükséges, hogy a feladat megfogalmazása legyen teljes, érthető, egyértelmű, pontos, tömör, szemléletes, előrelátó, jól felépített és tagolt.

14

Van-e pénz?

Van-e idő?

Van-e ember?

Page 15: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Elemzés II.

A fejlesztés e szakaszában tisztázni kell többek között, hogy milyen adatokat vár a program, és milyen adatokat kell annak produkálnia.

A beviteli (input) adatokkal kapcsolatban a következő kérdések merülhetnek fel:

Mik az input adatok?

Milyen a beviteli formájuk?

Milyen kapcsolatok vannak a beviteli adatok között?

15

Page 16: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Elemzés III.

A kiviteli (output) adatoknál többek

között a következőket kell megállapítani:

Milyen adatokat kell megőrizni?

Milyen formában kell az adatokat megőrizni?

Mennyi adatról van szó?

Hogyan tudjuk ezeket az adatokat

előállítani?

16

Page 17: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Elemzés IV.

Az elemzés fázisának dokumentuma

kisebb feladatok esetén a

feladatspecifikáció, vagyis a feladat

pontos megfogalmazása.

Nagyobb rendszerek esetén

rendszertervet kell készíteni.

17

Page 18: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Tervezés I.

A programtervezés feladata, hogy az analízis során összegyűjtött információkat és adatokat alapul véve logikailag véglegesen kialakítsa az adatstruktúrákatés az adatokon manipuláló algoritmusokat.

Hogy milyen tervezési módszert választ az ember, az a következő dolgoktól függhet: Milyen számítógépre készül a program?

Mekkora a megoldandó feladat?

Milyen módszerek állnak rendelkezésre?

Mik a tervező lehetőségei szoftverekben, felkészültségben?

18

Adatmodell

Funkcionális-

modell

Page 19: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Tervezés II.

A programtervezés alapja a részekre

bontás. A feladatot - bonyolultságától

függően - részekre kell szedni.

A törekvés az hogy a részek minél

függetlenebbek legyenek egymástól,

hiszen így a program sokkal

áttekinthetőbb, a hibakeresés,

karbantartás, továbbfejlesztés sokkal

könnyebb, egyértelműbb.

19

Page 20: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Tervezés III.

Programtervezési módszerek:

Moduláris: Lényege, hogy a programot felülről lefelé funkcionálisan egyre kisebb lépésekre (modulokra, eljárásokra) bontjuk.

Jackson: Szintén felülről lefelé bontja a programot, de itt a programszerkezet felépítését az adatok szerkezete határozza meg.

Objektum-orientált: Az egyes objektumok adataikkal és funkcióikkal együtt a program többi részétől függetlenek, és teljes mértékben felelősek a rájuk bízott feladatért.

20

Page 21: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Kiegészítés

A moduláris programozást bonthatjuk: Horizontálisan

21

Alkalmazói

program

Operációs

rendszer

BIOS,

Firmware

Vertikálisan: A programon belüli tagolás, amely szintén lehet horizontális és vertikális.

Page 22: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Tervezés IV.

A tervezési szakasz dokumentációja a

programterv.

A program megtervezésével a probléma

lényegileg meg van oldva, már csak a

kódolás van hátra a megvalósításhoz.

22

Page 23: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Kódolás I.

Ha a terv elkészült, akkor jöhet annak

implementálása (kivitelezése).

Az implementáció első szakasza a

programterv kódolása egy adott

programnyelven, vagyis a forrásprogram

elkészítése.

A forrásprogramból a fordító- és a

kapcsolatszerkesztő program készíti el a

processzor által értelmezhető gépi kódot.

23

Page 24: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Kódolás II.

A kódolási szakasz dokumentációja a

forrásnyelvi lista.

Egy forrásnyelvi lista akkor jó, ha

pontosan a programterv alapján készül,

áttekinthető, olvasható, tömör és

egyértelmű megjegyzésekkel van

megtűzdelve.

24

Page 25: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Tesztelés I.

Próbafuttatáskor még sok hibát

észlelünk, ez természetes.

Azonban minél alaposabbak voltak az

előző fázisok, annál nagyobb a

valószínűsége, hogy a program úgy fog

működni, ahogy elképzeltük.

A tesztelés folyamán különböző

próbaadatokkal futtatjuk a programot,

amelyeket úgy kell összeállítani, hogy

minden lehetséges értéket felvegyenek.25

Page 26: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Tesztelés II.

A program tesztelésekor a következőkre kell figyelni: Pontosan úgy működik a program, ahogy az a

feladat leírásában szerepel?

Nem lehet elrontani?

Elég hatékony?

Biztonságos a használata?

A program felhasználóbarát (kényelmes a használata, esztétikus, nem idegesítő)?

A tesztelési fázis dokumentációja a kész program és a tesztadatok listája.

26

Page 27: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Dokumentálás I.

Minden fázisnak megvan a maga

„terméke", dokumentációja.

A program fejlesztésének befejeztével a

teljes dokumentációt (vagyis mind a

négy fázis dokumentációját) meg kell

őrizni. Csak a teljes dokumentáció

birtokában lehet később a programon

változtatásokat végezni.

27

Page 28: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Dokumentálás II.

A program fejlesztését végigkísérő

dokumentációk összességét fejlesztői

dokumentációnak nevezzük.

Részei:

a feladatspecifikáció,

a programterv,

a forrásprogram,

a kész program,

a tesztadatok listája,

a program használatának ismertetése.

28

Page 29: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Dokumentálás III.

A felhasználói dokumentáció részei: a feladat leírása,

a szükséges hardver környezet,

a szoftver környezet (operációs rendszer, a futtatáshoz szükséges egyéb szoftverek),

a program betöltése, indítása,

a program használatának részletes leírása: billentyűk, menük stb. használata, működési leírás,

képernyőtervek, listatervek,

hibalehetőségek, a hibaüzenetek felsorolása,

biztonsági előírások (pl. adatok időszakos mentése).

29

Page 30: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Rendszerbevezetés

A letesztelt programok üzemeltetésre

készek.

A rendszerbevezetés az installálással

kezdődik.

Az üzemeltetőket, felhasználókat ki kell

képezni a program kezelésére, hibák

elhárítására.

A program üzemeltetése során szükség

lehet apró módosításokra

karbantartás.30

Page 31: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

31

Page 32: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus I.

Amikor egy problémát meg akarunk

oldani, ajánlatos először a konkrét

programozási nyelvet félretenni, és azon

gondolkodni, milyen lépéseket kell

megtenni a probléma megoldásának

érdekében.

A legjobb, ha egyszerűen leírjuk a

megoldáshoz vezető út lépéseit.

A szoftverfejlesztés tervezési fázisához

tartozik.32

Page 33: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus II.

Definíció: Azon tevékenységek sorozatát, amelyek egy feladat megoldásához vezetnek algoritmusnak nevezzük.

Definíció: Egy feladat megoldására irányuló, véges számú jól definiált elemi lépések egyértelműen megadott sorozata, melyek véges időn belül véget érnek, s elérik a kitűzött célt.

Definíció: Algoritmusnak nevezzük az aritmetikai, logikai, stb... műveletek olyan célszerűen összeállított sorozatát, amely a kitűzött feladat egyértelmű megoldásához vezet.

33

Page 34: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa

Sobri Jóska betyárbandája egy csárdában ütötte fel tanyáját. A vezér utasította egyik betyárját, hogy:

menjen ki az útkereszteződéshez,

rejtőzzék el, és várjon.

Ha jön egy kereskedő, üsse le,

vegye el minden pénzét, majd

nézze meg, hogy mennyi az idő. Ha már elmúlt este 8 óra, térjen vissza a csárdába,

ha nem, várjon tovább.

34

Page 35: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa

35

Persze, az

algoritmusnak van

némi hibája!(A betyár éhen halhat!)

Page 36: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa I.

Az algoritmus tehát egy út a felvetődött

probléma megoldásához.

Nézzünk egy példát az algoritmusra:

Hogyan tudnánk krétát szerezni az

egyetemen?

36

Page 37: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa II.

Lehet, hogy az algoritmus néhány elemi

tevékenység egymás után végrehajtódó

(szekvenciális) sorozata.

Például:

Menj be a tanszékre!

Keresd meg az adminisztrátort!

Kérj tőle két darab krétát!

Hozd be a krétát az előadóba!

37

Page 38: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa III.

Lehet, hogy a megoldás bizonyos pontokon nem látható előre és feltételektől (szelekció) függően más és más megoldást kell választanunk.

Például: Menj be a tanszékre!

Keresd meg az adminisztrátort!

Ha megtalálod, akkorKérj tőle két darab krétát!

KülönbenKeress máshol krétát!

Gyere vissza az előadóba!

38

Page 39: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa IV.

Előfordulhat, hogy egy tevékenységet

nem lehet egyből végrehajtani. A lépést

részletezni (összetett tevékenység) kell.

Például a „Menj be a tanszékre!”:

Menj ki az előadóból!

Menj el a C/1 épületbe!

Az első emeleten keresd meg a 104-es ajtót!

Kopogtass!

Lépj be az ajtón!

39

Page 40: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmusra példa V.

Előfordulhat, hogy a megoldás

érdekében valamely tevékenységet

többször is végre kell hajtani, vagyis

ismételni (iterálni) kell.

Például „Kérj tőle két darab krétát!”

Csináld kétszer:

Kérj tőle egy darab krétát!

40

Page 41: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus III.

Az algoritmus szerkezetét (struktúráját)

tehát szekvenciák, szelekciók illetve

iterációk adják, amelyeket tetszőleges

mélységben egymásba lehet ágyazni.

41

Page 42: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus tulajdonságai I.

Az algoritmus lépésekből (elemi tevékenységekből, utasításokból) áll.

Minden lépésnek egyértelműen végrehajthatónak kell lenni.

Egy algoritmusban hivatkozhatunk összetett lépésekre is, melynek részletezését később adjuk meg.

A végrehajtásnak mindig van valamilyen tárgya. Kell valami, amin az utasításokat végrehajthatjuk. Ezeket a programozásban adatoknak nevezzük.

42

Page 43: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus tulajdonságai II.

A végrehajtandó tevékenységnek mindig valamilyen célja van.

Az algoritmusnak vannak bemenő (input) adatai, melyeket felhasznál.

Az algoritmusnak legalább egy kimenő (output) adatot eredményeznie kell.

Az algoritmus legyen hatékony! Az utasítások legyenek könnyen követhetők, pontosak, egyszerűek és azokat minél rövidebb idő alatt végre lehessen hajtani.

Az algoritmus legyen elronthatatlan!

Az algoritmus legyen felhasználóbarát!

43

Page 44: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Az algoritmus legyen

Helyes

Teljes

Hatékony

Egyértelmű

Célorientált

Elronthatatlan

44

Page 45: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus tervezése

Top – Down (Felülről – Lefelé)

A megoldást felülről lefelé fokozatosan,

lépésenként finomítjuk és a kis

feladatokat csak a végső fázisban oldjuk

meg.

Bottom – Up (Alulról – Felfelé)

Először megoldjuk a kisebb feladatokat,

és aztán gondolkodunk az összeállítás

srtuktúráján.

45

Page 46: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus IV.

Egy tetszőleges algoritmus a következő elemekből építhető fel:

Szekvencia: egymás után végrehajtandó tevékenységek sorozata.

Szelekció: választás megadott tevékenységek közül.

Iteráció: megadott tevékenységek ismételt, többszöri végrehajtása.

Feltétel nélküli ugrás: vezérlés átadása a program egy megadott pontjára.

46

Page 47: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Strukturált program

A csak szekvenciákból, szelekciókból és iterációkból építkező programot strukturált programnak nevezzük.

A strukturált programozásban a ciklusból való kiugrás fogalma ismeretlen. Ebből következik, hogy a program minden szekvenciájának - és így az egész programnak is - egyetlen belépési és egyetlen kilépési pontja van, ennélfogva a program lényegesen áttekinthetőbb.

47

Page 48: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Algoritmus készítése

Egy bonyolultabb algoritmust nem lehet

fejben megtervezni, ahhoz eszközök

kellenek.

Olyan eszközre van szükség, mely

általánosan elfogadott, és mások is

ismerik, használják.

Ilyen a mondatszerű leírás, a

folyamatábra, vagy a struktogram.

48

Page 49: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra I.

A folyamatábra segítségével a program dinamikus viselkedését, folyamatát részletekbe menően ábrázolni tudjuk.

A program folyását nyilak mutatják, ahol történik valami, ott valamilyen csomópontvan.

Tevékenység-csomóponton áthaladva a tevékenység végrehajtódik.

Döntéscsomóponthoz érkezve a Feltételtőlfüggően a vezérlés az Igaz vagy a Hamis(Igen vagy Nem) ágon folytatódik.

A gyűjtőcsomóponton való áthaladás mindig egyértelmű.

49

Page 50: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra II.

50

Page 51: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra III.

Bármely program e három elem

segítségével felépíthető, a többi jelölés

csak ábrázolási könnyebbség.

Kapcsolódási pontot akkor használunk,

ha helyhiány miatt ábránkat egy másik

lapon folytatjuk.

Az adatbevitel és az adatkiírás

jelölésére is külön elemeket használunk.

51

Page 52: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra IV.

52

Page 53: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra V.

Az iterációkat a következőképpen építjük fel: a vezérlés ismételten visszatér a ciklusmag elé, de az újbóli végrehatás előtt egy döntéscsomópont található, mely megengedi a ciklus elhagyását. Alapvetően két fajta iteráció létezik - az egyik a ciklusmag előtt tesztel, a másik a ciklusmag után, ezek az előfeltételes (előltesztelő) illetve végfeltételes (hátultesztelő) ciklusok.

53

Page 54: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra VI.

54

Page 55: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A folyamatábra VII.

A növekményes ciklus azt jelenti, hogy a ciklusmagban megadott tevékenység előre meghatározott számban, valamely változó (ciklusváltozó) növekvő értékeire hajtódik végre valamettől valameddig.

Olyan iterációknál használjuk, amelyeknél pontosan tudjuk a végrehajtások számát.

A növekményes ciklust folyamatábrán előltesztelő ciklussal tudjuk megvalósítani úgy, hogy az ábrába beépítjük a ciklusváltozó értékének beállítását, illetve módosításait.

55

Page 56: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Krétás példa Megkérdezem, vállalkozik-e valaki arra,

hogy bemenjen krétáért a Tanszékre. Ha igen,

○ Menjen be a Tsz-re.

○ Kérje meg Editet, adjon egy darab krétát.

○ Ha nincs Edit,

Keressen valaki mást, s kérjen tőle krétát.

○ Jöjjön vissza a krétával, adja ide.

○ Ha nem talál senkit,

jöjjön vissza üres kézzel.

Ha nem vállalkozik senki a hallgatók közül,

○ Bemegyek én.

○ Kiveszek a szekrényből egy darab krétát.

○ Visszajövök az előadóba, s folytatjuk az órát.

56

Page 57: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

57

Page 58: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Sobri Józska helyes algoritmusa

58

Page 59: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Struktogram I.

A struktogram egy strukturált ábrázolási

módszer, megalkotója Chapin (ezért

Chapin chart-nak is hívják). E jelölés

annyiban hasonlít a folyamatábrához,

hogy a tervezés itt is kívülről befelé

történik.

Ahogy a struktúrában lejjebb megyünk,

úgy egyre kevesebb hely marad

tevékenységeink leírásához.

59

Page 60: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Struktogram I.

60

Page 61: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Mondatszerű leírás I.

A mondatszerű leírás lényege, hogy a

programot mondatszerű elemekből

építjük fel. Annyiban tér el a folyamatos

írástól, hogy bizonyos szabályokat be

kell tartanunk, a struktúrák képzésére

megállapodás szerinti formákat és

szavakat használunk.

61

Page 62: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Mondatszerű leírás II.

Be- és kivitel

Be: ...felsorolás...[megszorítások]

Ki: ...felsorolás...[kiírási formák]

Szekvencia

Tevékenység1

Tevékenység2

Tevékenység3

62

Page 63: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Mondatszerű leírás III.

Egyágú szelekció

Ha Feltétel teljesül, akkor

Tevékenység(ek) végrehajtásra

kerül(nek), egyébként nem. A program

az Elágazás vége után folytatódik:

Ha Feltétel akkor

○ Tevékenység(ek)

Elágazás vége

63

Page 64: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Mondatszerű leírás IV.

Kétágú szelekcióHa Feltétel teljesül, akkor Tevékenység(ek)1 kerül(nek) végrehajtásra, egyébként Tevékenység(ek)2. Mindkét esetben a program az Elágazás vége után folytatódik: Ha Feltétel akkor

○ Tevékenység(ek)1

egyébként

○ Tevékenység(ek)2

Elágazás vége

64

Page 65: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

65

Page 66: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Kezdetek I.

1951-ben készült el Neumann János tervei alapján az EDVAC nevet viselő számítógép, amely az első Neumann-elvek alapján épített gép volt.

Innen kezdődik a programozási nyelvek története.

Az EDVAC volt az első számítógép, amelyen „programot lehetett végrehajtani”, elsősorban matematikai problémák megoldására specializálva.

66

Page 67: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Kezdetek II.

A programozás kezdeti időszakára jellemző volt, hogy a programok általában csak azon a gépen futottak le, amely gépen elkészítették őket, azaz a programok „gépfüggőek” voltak.

A továbbiakban bővült a számítógép által megoldandó problémák köre, egyre több területen kezdtek el számítógépet használni, és az újabb alkalmazási területek újabb problémákat vetettek fel. Az évek során a programozási munka könnyítése, gyorsítása érdekében a programozási technikák és eszközök(programozási nyelvek) is fejlődtek.

67

Page 68: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Kezdetek III.

A 60-as években egyre több számítógép került a nagyvállalatokhoz, ahol már nem csak a számítások elvégzése volt az igény, hanem más nem számolást igénylő feladatot is meg szerettek volna oldani (adatkezelés).

A hosszú nehéz munkával készített programok igen gyorsan elavultak, és máris lehetett hozzákezdeni következő írásához.

Tehát új, gyorsabb, egyszerűbb programfejlesztési módszerekre volt szükség.

68

Page 69: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Programozási nyelvek generációi

0. GL: gépi kód, Assembly

1. GL: IBM ősnyelvei: FORTRAN, COBOL

2. GL: ALGOL60 és környéke

3. GL: PL/1, C, PASCAL, C++, JAVA

4. GL: Visual C++, Delphi, JBuilder

69

Alacsony szintű

nyelvek

Magas szintű nyelvek

1:N típusú nyelvek, azaz egyetlen magas

szintű programnyelvi utasítás több gépi

kódú utasítást reprezentál.

Page 70: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Negyedik Generációs Nyelvek

Tulajdonságai:

Kezelői felület létrehozása Form Designer, Report Designer

Kommunikációs felület létrehozása előre definiált környezetet tételeznek fel (pl. relációs adatbáziskezelő, ipari mérésadatgyűjtő, korházi betegfelügyelő, robotvezérlés), nyílt rendszerek illesztése (ODBC, JDBC)

Alkalmazáslogika implementálására(létrehozására) magas szintű objektum-orientált nyelveket használnak.

70

Page 71: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Programozási nyelvek osztályozása

Imperatív nyelvek:

Algoritmikus nyelvek: a programozó algoritmust

kódol, és ez a kód működteti a processzort.

A program utasítások sorozata.

Legfőbb programozási eszköze a változó.

Szorosan kötődik a Neumann- architektúrához.

Alcsoportjai:

○ Eljárás-orientált: C, Pascal

○ Objektum-orientált: C++, Object Pascal, Java, C#

71

Page 72: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Programozási nyelvek osztályozása

Deklaratív nyelvek:

Nem algoritmikus nyelvek: A programozó csak

a problémát adja meg, a nyelvi

implementációkba van beépítve a megoldás

megkeresésének módja.

Alcsoportjai:

○ Funkcionális nyelvek: LISP

○ Logikai nyelvek: PROLOG, (MPROLOG)

Egyéb nyelvek:

Szimulációs nyelvek: SIMULA, GPSS

72

Page 73: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Programozási nyelvek hierarchiája

73

Page 74: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Assembly – gépi kód példa

MOV AX,1234h ;0B8h 34h 12h

MUL WORD PTR [5678h] ;0F7h 26h 78h 56h

MOV [5678h],AX ;0A3h 78h 56h

Némi magyarázat a programhoz:

az első sor egy számot (1234h) rak be az AX regiszterbe, amit most tekinthetünk mondjuk egy speciális változónak

a második sor a fenti értéket megszorozza a memória egy adott címén (5678h) található értékkel

a harmadik sor az eredményt berakja az előbbi memóriarekeszbe

a pontosvessző utáni rész csak megjegyzés

az első oszlop tartalmazza a mnemonikot

a memóriahivatkozásokat szögletes zárójelek ( [ és ] ) közé írjuk

74

Page 75: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Az Assembly előnyei

korlátlan hozzáférésünk van a teljes

hardverhez, beleértve az összes

perifériát (billentyűzet, nyomtató stb.)

pontosan ellenőrizhetjük, hogy a gép

tényleg azt teszi-e, amit elvárunk tőle

ha szükséges, akkor minimalizálhatjuk a

program méretét és/vagy sebességét is

(ez az ú.n. optimalizálás)

75

Page 76: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Az Assembly hátrányai

a forrás sokszor áttekinthetetlen még a szerzőnek is

a kódolás nagy figyelmet, türelmet, és főleg időt igényel

sok a hibalehetőség

a hardver alapos ismerete elengedhetetlen

a forrás nem hordozható, azaz más alapokra épülő számítógépre átírás nélkül nem vihető át (ez persze igaz a gépi kódra is)

76

Page 77: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

77

Page 78: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Forrásprogram I.

A processzornak saját nyelve van, csak

azt beszéli! Ez a gépi kód (gépi utasítás)

Utasításkészlet.

A magas szintű nyelven megírt

programot forrásprogramnak,

forrásszövegnek nevezzük.

Minden magas szintű nyelv egyben

formális nyelv, amely meghatározott

nyelvtan szerint használható.

78

Page 79: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Forrásprogram II.

A program forrásszövegére vonatkozó formai, „nyelvtani” szabályok összességét szintaktikai szabályoknakhívjuk.

A tartalmi, értelmezési, jelentésbeli szabályok alkotják a szemantikai szabályokat.

Egy magasszintű programozási nyelvet szintaktikai és szemantikai szabályainak együttese határoz meg.

79

Page 80: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Programkészítés

Egy magasszintű programozási nyelven

megírt forrásszövegből elő kell állítani a

processzor számára érthető gépi kódú

programot.

Erre két technika létezik:

fordítóprogramos

interpreteres

80

Page 81: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Fordítóprogramos technika

81

Forrásszöveg Fordítóprogram

Tárgykód Egyéb tárgykód Kapcsolatszerkesztő

Futtatható program Betöltő

Folyamat, ProcessFuttató rendszer

Fordítás

Kapcsolat

szerkesztés

Betöltés a

memóriába

+

+

+

+

Page 82: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Fordítóprogram

Fordítóprogram: Egy speciális szoftver. Előállít egy gépi kódú, a processzor által megérthető, de még nem futtatható programot. Mindig a teljes forrásszöveget elemzi és állítja elő belőle a tárgykódot.

A tárgykód (object, *.obj) független az őt létrehozó programozási nyelvtől. Így támogatja a kevert nyelvű programfejlesztést is.

A szintaktikai hibák mindig fordítás során derülnek ki.

82

Page 83: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

A fordítás részletei

lexikális elemzés: Szövegelemekre bontás. Az embernek szóló részt kihagyja (megjegyzések, szóközök, stb.), számára értelmezhető részekre bontja a forrásszöveget. Tokenizál, közbenső formára hoz.

szintaktikai elemzés: Ellenőrzi, hogy teljesülnek-e a nyelv szintaktikai szabályai. Hiba esetén kiírja az üzeneteket és leáll a fordítás.

szemantikai elemzés: Arra készíti fel a programot, hogy a szemantikai hibák kiderüljenek.

kódgenerálás: Előállítja a tárgyprogramot.83

Page 84: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

További lépések

Kapcsolatszerkesztő: Általában több tárgykódú programból állít elő egy futtatható programot.

Betöltő: Egy speciális szoftver. Elhelyezi a memóriában a futtatható programot, és átadja neki a vezérlést.

Futtató rendszer: A futtató rendszer felügyelete mellett fut a program. A futó program része, nem az operációs rendszeré!

A program futása során derülnek ki a szemantikai hibák.

84

Page 85: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Interpreteres technika

Nem a teljes forrásszöveget tekinti alapnak, mindig csak bizonyos szöveg elemekkel dolgozik (utasítások).

Nem generál tárgykódot.

Szövegelemenként végrehajt egy szövegelemzést, tokenizálást, szintaktikai elemzést. Ha a szintaktikai elemzés rendben volt, akkor jöhet a interpretálás.

Az adott tevékenységet azonnal végrehajtja a processzor. Minden egyes szövegelem mögött van egy gépi kód. Az interpreter csak kiválasztja az adott szövegelemnek megfelelő gépi kódot.

85

Page 86: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Egyebek

Előfordítás: Ha egy forrásszövegben vannak nem a nyelvhez tartozó elemek is, akkor egy előfordítás szükséges. Az előfordítás során csak nyelvi elemeket tartalmazó forrásszöveg keletkezik.

Hivatkozási nyelv: Egy magas szintű programozási nyelv szabványa. Ebből minden időpillanatban egy aktuális létezik.

Implementációk: A hivatkozási nyelvnek megfelelően, egy adott platformon (processzor, operációs rendszer) realizált fordítóprogramok, vagy interpreterek. Sok van belőlük.

86

Page 87: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

IDE

Az implementációk manapság egy integrált

fejlesztői környezetben (Integrated

Development Environment – IDE) érhetők el.

Részei:

editor (szövegszerkesztő a forrásszöveg

készítéséhez)

compiler (fordító), interpreter (értelmező)

linker (kapcsolat szerkesztő)

debuger (nyomkövető, hibakereső) – A

szemantikai hibák feltárásában segít.

87

Page 88: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

Egyéb fogalmak

Paradigma: eljárásmód,

eszközrendszer, gondolkodásmód.

Absztrakció: adat absztrakció,

procedurális absztrakció.

Modellezés: A problématér leképezése a

feladat szempontjából fontos, releváns

modelltérre.

88

Page 89: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

89

Page 90: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

90

Page 91: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

91

Page 92: 1. dia - szerencsiszakkepzo.sulinet.huszerencsiszakkepzo.sulinet.hu/jegyzet/info/SzoftFejlAlapGyakNZS_v0.8.pdf · Célok Bemutatni a programozás alapvető fogalmait. Algoritmizálási

ASCII kódtábla

92