Információs technológiák 4. Ea: A lélek A csak szidható „kézzelfoghatatlan”
B IT M A N
226/1
2015.09.08 B ITv: M AN
Témakörök
Szoftver alapok
Operációs rendszerek
Felhasználói programok
Segédprogramok Programfejlesztő eszközök
226/2
Ellenőrző kérdések
B IT M A N
A szoftver A szoftver: Több, különböző célra megírt program összessége Csoportosítás funkció szerint:
– – – –
226/3
Rendszerszoftverek - Operációs rendszerek Felhasználói programok Segédprogramok Programfejlesztő eszközök – Programozási nyelvek
B IT M A N
A hardver és a szoftver kapcsolata
Alkalmazói programok
Programfejlesztő eszközök
Segédprogramok
Operációs rendszer
HARDVER
226/4
B IT M A N
A szoftverekkel kapcsolatos teendők Beszerzés
– Vásárlás, letöltés, speciális esetben: szoftver írás Telepítés
– Varázsló, – Működési környezet beállítása Frissítés
– Verzió Eltávolítás
– Varázsló – Vezérlőpult \ Programok telepítése vagy eltávolítása 226/5
B IT M A N
Szoftverek jogállása 1. A számítógépes programokat szerzői jogi törvény védi
(1999. évi LXXVI-os tv.), amely kimondja: – Az eredeti számítógépes program az azt létrehozó személy vagy vállalat szellemi tulajdona. – A számítógépes programok engedély nélküli másolása törvénybe ütköző cselekedet. Egy adott szoftver esetében a licenc szerződés határozza meg a szerzői jog tulajdonosa által megengedett szoftverhasználat feltételeit. A szoftver licenc szerződés amennyiben eltérően nem rendelkezik, a vevőnek csak egyetlen “biztonsági másolat” készítését engedélyezi, arra az esetre, ha az eredeti szoftver lemeze meghibásodna, vagy megsemmisülne. 226/6
B IT M A N
Szoftverek jogállása 2. Illegális szoftver használat: valaki egy számítógépes
programot jogosulatlanul másol le és használ, ezzel megsértve a szerzői jogi törvényt. A hamisítás a szerzői jogvédelem alá eső szoftver nem jogszerű sokszorosítása és eladása. Internet kalózkodás (warez): Egy szerzői jogvédelem alá eső szoftver a jogtulajdonos kifejezett engedélye nélkül felkerül egy nyilvános vagy korlátozott hozzáférésű kiszolgálóra, ahonnan ingyen, vagy díjazás fejében letölthetővé válik. A Business Software Alliance (BSA) egy nemzetközi szervezet, amely a vezető szoftvergyártók érdekeit képviseli és küzd a szoftverkalózkodás ellen. 226/7
B IT M A N
Szoftverek jogállása – Licenc típusok Jogdíjas (fizetni kell a használatáért) Shareware - kis ideig szabadon használható, aztán
fizetni kell Freeware - ingyen használható, de csak saját célra, üzleti célra nem Public Domain - teljesen ingyenes bármilyen célra Demo - ingyen használható, de sok funkciója hiányzik (mentés, nyomtatás…)
226/8
B IT M A N
Témakörök
Szoftver alapok
Operációs rendszerek
Felhasználói programok
Segédprogramok Programfejlesztő eszközök
226/9
Ellenőrző kérdések
B IT M A N
226/10
B IT M A N
Operációs rendszerek Fogalma: Egymással együttműködő programokból álló szoftverrendszer, amelynek feladata: a számítógép hardver elemeinek összehangolt, hatékony működtetése, a hardver kényelmes használhatóságának biztosítása – a gépet kezelő személyek felé, – a gépen futó alkalmazások felé. Alkalmazások
Felhasználók
Operációs rendszer
HARDVER 226/11
B IT M A N
Az operációs rendszer részei Alkalmazások API
Shell Kernel
CPU
Kernel: Rendszermag Processzor kezelés
Memória
Eszközök
Shell: Rendszerhéj Kapcsolattartás a felhasználóval
Memória kezelés Eszközkezelés API – Alkalmazói programozói interfész
B IT M A N
226/12 A programok hogyan vehetik igénybe a kernel szolgáltatásait
Betöltődés – Bootolás Bekapcsolási önteszt – processzor, – memória, – vezérlő-kártyák, – háttértárak. 2. Betölthető operációs rendszer megkeresése 3. Betöltő program elindítása – Kernel, – Hardver elemek meghajtó programjai, – Szolgáltatások elindítása, – Bejelentkeztetés 1.
226/13
B IT M A N
Operációs rendszerek feladatai Erőforrások kihasználásának ütemezése, A számítógép adatforgalmának lebonyolítása, A kiadott parancsok értelmezése, végrehajtása, Hiba esetén a hiba javításának megpróbálása, ha nem megy: hibajelzés, Több felhasználó egyidejű munkájának megszervezése, Több számítógép együttműködésének megvalósítása, Adatvédelem, hozzáférési jogok ellenőrzése
226/14
B IT M A N
Operációs rendszerek osztályozása (1) A működtetett számítógép teljesítménye szerint:
személyi számítógépekhez mini gépekhez nagygépekhez
Egy időben futó programok száma szerint: Egyprogramos üzemmódú Többprogramos üzemmódú
A számítógéppel egyszerre dolgozó személyek száma szerint: Egy felhasználós üzemmód Több felhasználós üzemmód
A felügyelt számítógépek száma szerint: Központosított (egy számítógép) Elosztott (hálózatot felügyelő) 226/15
B IT M A N
Operációs rendszerek osztályozása (2) A felhasználó és a számítógép közötti kapcsolattartás alapján: Kötegelt (batch) feldolgozás, Interaktív feldolgozás szöveges üzemmód, menüs vezérlés, grafikus felületű kezelés
226/16
B IT M A N
Operációs rendszerek osztályozása (3) A rendszer tárolása és indítása alapján: ROM memóriában tárolt rendszerek Régen: pl. Commodore C64 Ma: Telefonok, GPS rendszerek, autók számítógépei, Fix, nem változtatható, rugalmatlan megoldás
Háttértárról betöltődő rendszerek
Csak telepítés (installálás) után működőképesek! ROM-ban tárolt program kezdi a betöltést (bootolás) Hardver ellenőrzés Rendszerfájlok betöltése Hardver eszközök kezelőprogramjainak (driver) betöltése Programok elindítása (pl. víruskereső, tűzfal) 226/17
B IT M A N
Operációs rendszerek UNIX
– Több felhasználós, több programos, nagygépes, szöveges/grafikus, DOS – Egy felhasználós, egy programos, PC-s, szöveges WINDOWS – Egy felhasználós, több programos, PC-s, grafikus LINUX – Több felhasználós, több programos, PC-s, szöveges/grafikus Novell Netware – Több felhasználós, több programos, elosztott
226/18
B IT M A N
Operációs rendszerek megjelenése 1969
UNICS
1993
FreeBSD 1.0
1973
UNIX
1994
Linux 1.0
1976
Atari játékgépek
1994
Windows NT 3.5
1980
Commodore 64
1995
Windows 95
1981
DOS
1996
Windows CE
1982
ZX Spectrum
2000
Suse Linux
1983
Novell NetWare
2001
Windows XP
1984
Mac System 1
2004
Ubuntu Linux
1985
Windows 1.0
2006
Windows Vista
1987
IBM OS/2
2009
Windows 7
1992
Windows 3.1
2012
Windows 8
2015
Windows 10
226/19
B IT M A N
Operációs rendszerek – Unix család 1969 – Bell labs: Thompson és Ritchie unatkozik, és elkezd írni egy működtető környezetet a sarokban álló PDP-7-re. Assembly nyelv, neve: UNICS 1970 – Thompson utálja az assemblyt, ezért megalkotja a „B” magas szintű programozási nyelvet 1971 – Ritchie megírja a „C” nyelvet 1973 – „C” nyelven újraírják a működtető környezetet, és elnevezik UNIX-nak. Tartalma: Fájlrendszer (könyvtárak, fájlok), Parancsértelmező rendszer, Programokat és memóriát kezelő rendszer, Szövegszerkesztő program, C nyelvű programfejlesztő környezet 226/20
B IT M A N
Operációs rendszerek – Unix család 1978 – CB UNIX 1981 – UNIX System 1985 – Mach (utolsó verzió: 1995, Mach 4) További UNIX származékok AIX Solaris HP-UX UnixWare IRIX Linux
226/21
B IT M A N
Operációs rendszerek – Linux család 1986-1990 – Andrew Tanenbaum: MINIX Sinclair számítógépen fut Nyílt forráskódú, tetszőlegesen alakítható 1991 – Megjelenik a 386-os PC Linus Torvalds egyetemista átírja a MINIX-et 386-ra Freax, azt tudja, amit a Unix, de PC-n, és ingyen! 1992 – Freax -> Linux 0.96 X Window kb. 100 ember fejleszti, de 100 000 használja 1995 – kb. 1 millió user 1999 – kb 10 millió user Sok disztribúció: Debian, Gentoo, Inspire, Red Hat, SuSE, YelloDog 226/22 B IT M A N
Operációs rendszerek – DOS Disk Operating System - Lemezes Operációs Rendszer személyi számítógépekre, egy felhasználós, egy programos, szöveges üzemmódú, 1981 – 1995 (utolsó frissítés: v6.22), Ma: Kellékek \ Parancssor.
226/23
B IT M A N
Operációs rendszerek – Windows Windows - Grafikus felhasználói felületű segédprogram, mely a DOS kezelését teszi könnyebbé! 1985 - Windows 1.0 - nagy bukás! 1987 - Windows 2.0 - néhány alkalmazással 1990 - Windows 3.0 - tényleg működik! 1992 - Windows 3.1 - nem csak angolul! 1995 – Windows 95 - már önálló operációs rendszer 1998 – Windows 98 – (SE: stabil működés) 2000 – Windows 2000 2003 – Windows XP 2006 – Windows Vista 2008 – Windows 7 2012 – Windows 8 2015 – Windows 10 226/24 B IT M A N
Operációs rendszerek – Mac OS Mac OS – PC méretű, de attól eltérő architektúrájú gépek operációs rendszere 1984 – Mac System 1 Apple Macintosh gépekre, Grafikus felület! 2001 – Mac OS 9.2 2001 – Mac OS X 2005 – Magyarul is Verziók: Puma, Jaguar Panther, Tiger Leopard, Snow Leopard 226/25
B IT M A N
Windows vs. MAC
226/26
B IT M A N
Témakörök
Szoftver alapok
Operációs rendszerek
Felhasználói programok
Segédprogramok Programfejlesztő eszközök
226/27
Ellenőrző kérdések
B IT M A N
Felhasználói programok (1) Általános célú programok, melyekkel a felhasználó munkát végezhet, és új dokumentumokat hozhat létre. Csoportosításuk: Futtatási környezet alapján – Windows (verzió), Linux… Igényelt szaktudás alapján – Elegendő az általános számítástechnikai képzettség • Szövegszerkesztők, táblázatkezelők… – Speciális tudást igénylő programok • Könyvelő, bérügyi programok, multimédiás alkalmazások… 226/28
B IT M A N
Felhasználói programok (2) Csoportosításuk: Funkció alapján – Szövegszerkesztők – Táblázatkezelők – Adatbázis-kezelők – Grafikai programok – Multimédiás programok – Kommunikációs programok – Bemutató-készítő programok – Tervezői rendszerek – Játékok –… 226/29
B IT M A N
Felhasználói programok (3) Szövegszerkesztők Alapvető funkciók: szövegírás, javítás, módosítás, szövegformázás, nyomtatás Pl: MS Word, OO Writer Táblázatkezelők Alapvető funkciók: táblázat létrehozás, számolás az adatokkal (képletek, függvények), diagramok készítése, nyomtatás Pl: MS Excel, OO Calc Adatbázis-kezelők Alapvető funkciók: adatbázis létrehozás, adatbevitel, adatmódosítás, lekérdezés készítés, jelentés készítés, adatvédelem Pl: MS Access, OO Base 226/30
B IT M A N
Felhasználói programok (4) Grafikus programok
rajzoló programok (rajzolás, átméretezés, forgatás, térhatások) képnézegetők (sokféle képformátum, konvertálás) animációs programok Multimédiás programok
zenei programok (lejátszók, szerkesztők, zenekészítők) mozgókép (video) programok (lejátszók, szerkesztők, felvevők) ismeretterjesztő, oktató programok Kommunikációs programok
Levelező programok Böngészők FTP programok (fájlátvivő programok) Chat programok
226/31
B IT M A N
Felhasználói programok (5) Programcsomagok – Több program együtt olcsóbban, mint külön-külön MS Office 2007 Professional:
Word, Excel, PowerPoint, Access, Publisher, Outlook – csak új géppel együtt, kb: 120 000 Ft
OpenOffice: Writer, Calc, Base, Impress – Ingyen!
226/32
B IT M A N
Témakörök
Szoftver alapok
Operációs rendszerek
Felhasználói programok
Segédprogramok Programfejlesztő eszközök
226/33
Ellenőrző kérdések
B IT M A N
Segédprogramok (1) Olyan programok, melyek segítik a felhasználók munkáját, de általában nem lehet velük új dokumentumot létre hozni. Csoportjaik (a teljesség igénye nélkül) Kommanderek: parancskiadást segítő kezelői felületek Total Commander Biztonságot növelő programok: Tűzfalak (Ashampoo) Víruskeresők (NOD32) Kémprogram keresők (SpyBot) Diagnosztikai programok Sandra Windows \ Kezelés 226/34
B IT M A N
Segédprogramok (2) Ashampoo FireWall
226/35
B IT M A N
Segédprogramok (3) Eset NOD32 Antivirus
226/36
B IT M A N
Segédprogramok (4) Spybot
226/37
B IT M A N
Segédprogramok (5) Sajátgép \ JobbKlikk \ Kezelés
226/38
B IT M A N
Segédprogramok (6) Sajátgép \ JobbKlikk \ Kezelés
226/39
B IT M A N
Segédprogramok (7) Archiváló programok: cd, dvd írók Nero ImgBurn Tömörítők WinRar ZIP Multimédia programok Kodekek Képnézők Lejátszók WinAmp Media Player Classic Átalakítók (konvertálók) 226/40
B IT M A N
Témakörök
Szoftver alapok
Operációs rendszerek
Felhasználói programok
Segédprogramok Programfejlesztő eszközök
226/41
Ellenőrző kérdések
B IT M A N
226/42
B IT M A N
226/43
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Programtervezési módszerek
Algoritmus alapfogalmak
A strukturált programozás alapjai
A programkészítés alapjai
Alapalgoritmusok
B IT M A N
A szoftverfejlesztés alapjai A különböző szoftverek szűkebb értelemben vett
fejlesztése elsősorban az informatikus feladata, de legtöbbször az informatikusnak és az adott terület szakemberének szorosan együtt kell működni az alkalmazás kifejlesztésében, tesztelésében és menedzselésében. Ezért nagyon fontos, hogy a nem informatikus
szakemberek is tisztában legyenek a szoftverfejlesztés alapfogalmaival.
226/44
B IT M A N
START
A programfejlesztés lépései
Be: Specifikáció
Specifikáció elkészítése Algoritmus elkészítése
Algoritmus készítés
Kódolás
Kódolás
Program ellenőrzés:
– Szintaktikai – Szemantikai Dokumentáció elkészítése: – Programozói – Felhasználói Karbantartás, verziókövetés
Fordítás, végrehajtás Tesztelés
Igen
Van hiba a programban?
Nem Dokumentáció készítés
226/45
STOP IT
B
MAN
Specifikáció Specifikáció:
– A feladat pontos megfogalmazása, – Az algoritmussal szemben támasztott követelmények rendszere, – A bemenő adatok és – az eredmények részletes felsorolása. A kész programnak a specifikáció szerint kell működnie.
226/46
B IT M A N
Algoritmus Az algoritmus, egy probléma megoldásának véges számú lépésben történő egyértelmű és teljes leírása. Az algoritmus nem kötődik konkrét számítógéphez, általában valamilyen algoritmus leíró nyelven szokták megfogalmazni. Top-down tervezési módszer: lépésenkénti finomítás
– A feladatot felbontjuk néhány önálló, elkülöníthető tevékenységre. – Minden tevékenységet felbontunk további részekre. – A felbontást addig végezzük, amíg el nem érkezünk az elemi tevékenységeket tartalmazó algoritmusig. 226/47
B IT M A N
Kódolás Az algoritmust a számítógéppel egy programozási nyelv
segítségével kell közölni. Azt a folyamatot, amely során egy algoritmus lépéseit egy programnyelv utasításaival leírjuk, kódolásnak nevezzük. Az algoritmust olyan részletességgel kell leírni, hogy a
kódolás már egyszerűen elvégezhető legyen.
226/48
B IT M A N
Fordítás, végrehajtás A kódolást követi a fordítás, majd a végrehajtás. Bármilyen gondosan végeztük a tervezést, és a
kódolást, a program általában számos hibát tartalmaz. – Szintaktika: a nyelvtan, szintaktikailag helyes valami, ha helyesen van leírva. – Szemantika: a jelentés, szemantikailag helyes valami, ha helyesen működik. A programokat szintaktikailag tudja ellenőrizni a fordító, szemantikailag nem! A szemantikai hibák kiderítéséhez futtatni, tesztelni kell a programot. 226/49
B IT M A N
Szemantikai hiba!
226/50
B IT M A N
Tesztelés Két fontos terület:
– Verifikáció: A szoftver megfelel-e specifikációjának? • Hiányosság tesztelés: meg van-e minden funkció? • Statisztikai teszt: tesztesetek – Célok, bemenő adatok → eredmények – Működési mód, helyesség – Mindenféle lehetséges elágazás kipróbálása – Validáció: A szoftver kielégíti a kliens igényeit, megfelel a vásárló elvárásainak? • Kényelem, érthetőség, megtanulhatóság, gyorsaság • Naiv tan esete („Marinéni”) 226/51
B IT M A N
Fejlesztői dokumentáció Olyan szinten ismerteti a programot, hogy hozzáértő
személy szükség esetén el tudja végezni a módosításokat, a program fejlesztését, vagy az utólag felismert hibák javítását. Tartalma: – – – – – – – – 226/52
Részletes specifikáció, Futási környezet, Fejlesztői környezet (programozási nyelv), Részletes algoritmus, Forráskód, Teszt adatsorok, eredmények, A hatékonyság elemzése, Továbbfejlesztési lehetőségek.
B IT M A N
Felhasználói dokumentáció A felhasználók számára készül Tartalma:
– A program rövid áttekintő leírása – Futási környezet (hardver- és szoftverfeltételek, operációs rendszer, perifériák, stb.) – A program telepítése, indítása, a használat leírása – Bemenő adatok és eredmények – Példafuttatás – Hibaüzenetek, a hibák lehetséges okai
226/53
B IT M A N
Program minőségi jellemzők Helyesség Hibatűrés Karbantarthatóság, bővíthetőség
Újrafelhasználhatóság Kompatibilitás Felhasználó barátság Hordozhatóság Hatékonyság Ellenőrizhetőség
226/54
B IT M A N
226/55
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Programtervezési módszerek
Algoritmus alapfogalmak
A strukturált programozás alapjai
A programkészítés alapjai
Alapalgoritmusok
B IT M A N
Monolitikus programozás 1950 körül kezdődött Egyszerű programok Egy programot csak egy programozó írt
Egy probléma megoldása mindig egyetlen lineáris kódsor Később bonyolultabb programokat is így próbáltak megírni
Sok hiba, átláthatatlan kód, nehézkes javítás, módosítás Néhányan elkezdenek azzal foglalkozni, hogyan kellene
programokat írni.
226/56
B IT M A N
Moduláris programozás Bizonyos bonyolultság után a teendők átláthatatlanok,
ezért részfeladatokra bontjuk azokat. A részfeladatokra ki kell dolgozni a megoldás menetét, majd az egyes részeket újra össze kell állítani, hogy azok együttműködve, egymásra épülve a teljes feladat megoldását szolgáltassák. A moduláris programozás olyan programozási mód, melyben a teljes program modulokból áll. Az egyes modulok jól meghatározott részfeladat megoldását végzik, kezelhető méretűek, egyértelmű céljuk van és jól definiáltan csatlakoznak a program többi moduljához. A modulokat szubrutinnak (alprogramnak) szokás nevezni. 226/57
B IT M A N
Moduláris programozás 2. A moduláris programozás irányelvei: "Oszd meg és uralkodj" elv: A feladatokat egyértelműen le kell osztani modulokra. A modulok belső működésébe más modul nem szólhat bele. A modul a saját feladatának tökéletes elvégzéséért felelős. Fontos, hogy a modulok lehetőleg egymástól függetlenül működjenek, mert így a hibák kiszűrése egyszerűbb, a feladat átláthatóbb, könnyebben módosítható. Adatok (információ) elrejtésének elve: Az egyes modulok csak saját adataikon dolgozzanak, csak akkor használjanak közös adatokat, ha ez elkerülhetetlen.
226/58
B IT M A N
Moduláris programozás 3. Felülről lefelé (top-down) tervezés esetén a megoldást
felülről lefelé, fokozatosan, lépésenként finomítjuk. A feladatot részfeladatokra, a részfeladatokat ésszerű határokig ismét kisebb feladatokra bontjuk. A kialakított egységek interface-eken keresztül kommunikálnak, de csak a szintek közötti kommunikáció megengedett, a szinten belüli moduloké tilos! Teljes feladat
1.rész
A 226/59
B
2.rész
C
D
Nagy, összetett programok esetén hatékony megoldás! 3.rész
E
F G H
I
B IT M A N
Moduláris programozás 3. Az alulról felfelé (bottom-up) tervezés lényege, hogy már
meglévő, kész modulokból építkezünk. Erre akkor kerül sor, ha bizonyos részfeladatokat egy előző feladat kapcsán már megoldottunk (gondolva a későbbi felhasználásokra is), vagy amikor egy rutingyűjteményt (szoftvert) vásároltunk. Pl.: Hardver közeli programozás. Vásárolunk egy kézi adatgyűjtő számítógépet, és a hozzá kapott kis programocskákból építünk fel egy használható kezelő programot.
226/60
B IT M A N
Strukturált programozás A strukturált programozás jelenti valamennyi ma
használatos programtervezési módszer alapját. Széles körben elfogadott az a nézet, hogy a strukturált programozás a programfejlesztés egyetlen lehetséges módja. A strukturált programok építőelemei (Dijkstra): – Szekvenciák (utasítássorok) – Döntési szerkezetek (elágazások v. szelekciók) – Iterációk (ismétlődő részek v. ciklusok) Az 1970-es évektől, amikor a strukturált programozás népszerű technikává vált, olyan új programozási nyelvek születtek, melyek támogatták, hangsúlyozták a módszer alkalmazását (Pascal, Ada). 226/61
B IT M A N
Strukturált programozás 2. 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 nem megengedett a feltétel nélküli ugrás, így többek között a ciklusból sem ugorhatunk ki. Ebből az is következik, hogy a program minden vezérlő szerkezetének (szekvencia, szelekció, iteráció) - és magának a teljes programnak is - egyetlen belépési és egyetlen kilépési pontja van, így a program lényegesen áttekinthetőbb. Böhm és Jacopini tétele (1966): A szekvencia, szelekció és az iteráció segítségével minden olyan algoritmus felépíthető, amelynek egy belépési és egy kilépési pontja van. 226/62
B IT M A N
Strukturált programozás 3. A strukturált szemléletmód:
– A programot két részre osztjuk: • Adatok, • Műveletek.
– A tervezés különálló modellek segítségével történik: • Adatmodellek az adatokhoz, • Funkcionális modellek (algoritmusok) a műveletekhez.
– A megvalósításban az adatok és műveletek szigorúan elkülönülnek egymástól, és csak szükség esetén rendelődnek egymáshoz. Adatok 226/63
Műveletek
B IT M A N
Strukturált programozás 4. A strukturált programozás módszertana az 1980-as
évekre rendszerfejlesztési, programtervezési technológiává vált, Megjelentek különböző algoritmus leíró módszerek, Elkezdték a módszertant oktatni, Sokan tanulták meg, Sokan írtak egyre komolyabb programokat.
Ma általánosan elfogadott és támogatott nézet, hogy
első programnyelvként érdemes valamilyen strukturált nyelvet megtanulni, és ezután ismerkedni más programozási nyelvekkel. 226/64
B IT M A N
Objektum-orientált programozás Az objektum-orientált programozás (OOP) sok
tekintetben a moduláris programozás továbbfejlesztett változata, mely lassan háttérbe szorítja a strukturált programozást. Az egyes elemeket itt nem moduloknak, hanem
objektumoknak nevezzük, melyek tulajdonságaikban és egymáshoz való viszonyukban különböznek a moduloktól. Kialakulása: 80-as évek eleje Néhány OOP nyelv:
– C++, Java, Delphi 226/65
B IT M A N
Objektum-orientált programozás 2. Az objektum létrehozásakor definiáljuk a szerkezetét, és
azokat az algoritmusokat, melyek leírják a viselkedését, így a későbbiekben mindent együtt kezelhetünk, ami az adott objektumhoz tartozik. Fő tulajdonságok:
– Az adatokat összekapcsoljuk az azokat kezelő eljárásokkal és függvényekkel (metódusokkal), így kapjuk az alapegységet, az objektumot. – Egy létre jövő objektum a korábban definiált objektumoktól adatokat és metódusokat vehet át (örökölhet). Az öröklődés az objektum-orientált nyelvekre jellemző speciális képesség. 226/66
B IT M A N
Objektum-orientált programozás 3. Az objektumorientált megközelítés:
– A program együttműködő objektumok halmaza – Az objektumok adatokkal (ismeretekkel) rendelkeznek – Az objektumok feladatokat végeznek: kérésre végrehajtják a hozzájuk tartozó metódusokat. Objektum Adatok Metódusok
Objektum Adatok Metódusok
Objektum Objektum 226/67
Adatok Metódusok
Adatok Metódusok
B IT M A N
226/68
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Programtervezési módszerek
Algoritmus alapfogalmak
A strukturált programozás alapjai
A programkészítés alapjai
Alapalgoritmusok
B IT M A N
Az algoritmusok építőelemei Az algoritmus alapvető összetevői, építőelemei:
– Szekvencia: Két utasítás (programrész) közvetlen egymás után írása. – Szelekció: Adott feltételtől függően más-más utasítás végrehajtása (elágazás) – Iteráció: Egy utasítást (utasítás csoportot) feltételtől függően többször is végrehajtunk (ciklus) A strukturált programozás alaptétele (Dijsktra):
Bármely program megadható ekvivalens strukturált program formájában is, amelyben a fenti három konstrukciós művelet szerepel. 226/69
B IT M A N
Az algoritmusok építőelemei 2. Szelekciós műveletet a döntési pontokban végzünk: a
döntés kimenetelétől függően a folyamat vagy az egyik, vagy a másik irányban folytatódik. A döntési pont egy feltételt (logikai kifejezés) tartalmaz, melynek igaz vagy hamis eredménye alapján ágaztatjuk el a folyamatot. Iterációnak egy vagy több művelet ismétlését nevezzük,
az ismétlődés addig tart, amíg ezt valamilyen feltétel teljesülése meg nem állítja. Az iterációkat szekvenciákból és szelekciókból építjük fel. Az iteráció legalább egy szelekciót (döntési pontot) tartalmaz. A műveletek ismétlődése a döntési pontban megfogalmazott feltétel (logikai kifejezés) eredményétől függ. 226/70
B IT M A N
Az algoritmusok jellemzői: Elvégezhető (elemi, végrehajtható lépésekből áll) Meghatározott (minden lépés pontosan definiált) Véges (véges számú lépés után véget ér)
Meghatározott input halmazra érvényes Adekvát output halmazt eredményez (az adatok
meghatározzák az eredményt) Egy feladatosztály megoldására szolgál
226/71
B IT M A N
Algoritmusok szöveges megadása Tojásfőzés algoritmusa:
– Tedd a forró vízbe a tojásokat, 5 perc múlva vedd ki őket, tisztítsd meg, ha gondolod sózd meg őket, és edd meg!
226/72
B IT M A N
Pszeudokód – mondatszerű leírás Az algoritmust először mondatokkal fogalmazzuk meg. A rövidebb felíráshoz elhagyjuk a szabályos nyelvtani
mondat szerkezetet. A pszeudokódban – mondatszerű leírásban – hiányos mondatok szerepelnek. A feltételes elágazásokhoz és ciklusokhoz tartozó utasításokat behúzással írjuk. Ezzel a strukturált elrendezéssel kiemeljük az algoritmus szerkezetét.
226/73
B IT M A N
Pszeudokód – mondatszerű leírás 2.
226/74
Tegyél fel vizet forrni Vedd elő a tojásokat Ciklus amíg nem forr a víz figyeld a vizet Ciklus vége Tedd a vízbe a tojásokat Ciklus 5 percig: Nézd az órát Ciklus vége Vedd ki a tojásokat Törd fel a tojásokat Ha sósan szereted, akkor sózd meg őket Elágazás vége Edd meg a tojásokat
B IT M A N
Folyamatábra A folyamatábra az algoritmus lépéseinek sorrendjét
utasítástípusonként különböző geometriai alakzatok felhasználásával szemléltető ábra. – Utasítástípusok: • • • •
Kezdő és befejező utasítások. Be/kiviteli utasítások. Értékadó utasítások. Elágazások.
– Az utasítások sorrendjét nyilak jelzik.
226/75
B IT M A N
Folyamatábra elemek Nem
Igen START
N>I
STOP K:=0
Be: A,B
K:=I
S:=3*A/(B+2)
Ciklus 1-től 5-ig
Ki: C
226/76
Be: A[i]
B IT M A N
1
Folyamatábra – Tojásfőzés START
Ciklus 1-től 5-ig
Tégy fel vizet forrni
Nézd az órát
Vedd elő a tojásokat
Figyeld a vizet
Nem
Forr a víz?
Igen
Vedd ki a tojásokat Törd fel a tojásokat Sósan szereted?
Nem
Igen Sózd meg
Tedd vízbe a tojásokat Edd meg a tojásokat
1 226/77
STOP
B IT M A N
Folyamatábra:
226/78
Betyárkodás
B IT M A N
Struktogram elemek Be: A
feltétel
Igaz
Hamis
utasítás
szelekció
utasítás
Ki: S
utasítás
feltétel ciklusmag
ciklusmag feltétel
226/79
Elöl tesztelő ciklus
Hátul tesztelő ciklus
B IT M A N
Struktogram – Tojásfőzés Tégy fel vizet forrni Vedd elő a tojásokat Figyeld a vizet Forr a víz? Tedd vízbe a tojásokat i := 1 . . 5 Nézd az órát Vedd ki a tojásokat Törd fel a tojásokat
Sósan szereted? Nem Igen Sózd meg Edd meg a tojásokat 226/80
B IT M A N
226/81
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Programtervezési módszerek
Algoritmus alapfogalmak
A strukturált programozás alapjai
A programkészítés alapjai
Alapalgoritmusok
B IT M A N
Programfejlesztő eszközök
226/82
A strukturált programozás alapjai
Adatok, változók
Adatszerkezetek
Értékadás, kifejezések
Operátorok
Elágazások, ciklusok
B IT M A N
Változó A programokban az adatok változók formájában jelennek
meg – változókban tároljuk az adatokat. A változó névvel ellátott tároló hely a számítógép memóriájában. A változó értéke ezen tároló hely pillanatnyi értéke. A változó jellemzői: – Neve – azonosítója – Típusa – Értéke – Tárbeli kezdőcíme
226/83
B IT M A N
Típus Egy típus meghatározza a tároló tartalmának
értelmezését. Egy nyelv egy típusának jellemzése: – Felvehető értékek halmaza, adatábrázolás – Konstansai – A típuson végezhető műveletek – Rendelkezésre álló eljárások, függvények Elemi típusok: – Egy értéket vehetnek fel egy adott tartományból – Egész, valós, karakter, logikai, mutató Összetett típusok: – Adatszerkezetek 226/84 B IT – Tömb, karakterlánc, rekord, állomány
MAN
Változók Típus Egész Hosszú egész Valós
Pascal Integer Longint Real
Valós Karakterlánc
Double String
Logikai
226/85
C Int Long Float
Értelmezési tartomány -32768 .. +32767 -2,1milliárd .. +2,1milliárd ±2*1038, pontosság: 8 bit
Double ±5*10320, pontosság: 16 bit Char[n] Pascal: 255 karakter C: Long méret Boolean – true vagy false
B IT M A N
Változók deklarálása Deklaráció: a változók bevezetése (kihirdetése)
használat előtt. Eredménye: helyfoglalás a memóriában. Sok programnál megkell adni a változók típusát is. E szerint a programnyelv lehet: – Típus nélküli nyelv: a változóhoz nem rendelünk típust, a futás során bármilyen értéket felvehet. – Típusos nyelv esetén kötelező megadni a változók típusát. – Erősen típusos nyelveknél már a fordítónak is ismernie kell a típust.
Pl. Int a; Int a=10; Int a,b,c; Konstans: a programban előforduló állandó értékű
adatokat konstansként deklaráljuk, és nevükkel hivatkozunk rájuk. 226/86
B IT M A N
Programfejlesztő eszközök
226/87
A strukturált programozás alapjai
Adatok, változók
Adatszerkezetek
Értékadás, kifejezések
Operátorok
Elágazások, ciklusok
B IT M A N
Tömb A legalapvetőbb, leggyakrabban használt adatszerkezet. Több, egyforma típusú elemből áll. Az egyes elemeket a tömb nevével, és a tömbön belüli
helyükkel, az indexükkel azonosítjuk. Tömb: azonos névvel ellátott, sorszámmal
megkülönbözetett változók csoportja. Lehet 1 dimenziós: vektor, 2 dimenziós: mátrix, több dimenziós. Műveletek: – Elem kiválasztása indexeléssel (pl. A[2]), – Egy elemre az összes művelet értelmes, ami az elemtípusra. 226/88
B IT M A N
Sztring Sztring (string):
– Karakterekből álló speciális tömb, karakter sorozat – Kezelése eltér a normál tömbök kezelésétől – Műveletek: • Hossz (karakterek száma) • Összefűzés • Keresés • Beszúrás • Rész kimásolása
226/89
B IT M A N
Mutató Mutató – pointer:
– A memória egy adott helyére mutat, értéke a mutatott hely memóriacíme. – Mindig valamilyen adott típusú objektumra mutat (pl. egész számra) – A pointer és az általa mutatott objektum nem egyszerre keletkeznek és szűnnek meg, bizonyos értelemben teljesen önálló életet élnek. – Deklaráció: meg kell adni, hogy pointer változóról van szó, és a hivatkozott adatok típusát. Ekkor csak a pointer (az általa tárolt memória cím) számára foglalódik hely, a mutatott objektumnak nem. Pl. Int *m; 226/90
B IT M A N
Mutató 2. Két speciális, csak mutatókon értelmezett művelet:
– Ha ‘A’ egy változó, akkor &A az A változó memóriacíme. – Ha ‘*M’ egy mutató típusú változó, akkor M az a memóriacím, amelyre *M mutat. A egy egész, értéke 10 M egy mutató
Int A=10; Int *M; M=&A; Kiír: *M;
*M= *M+3; Kiír: A;
Azt a változót, amire M mutat, növelem 3-al.
M A-ra mutat 10 226/91
13
B IT M A N
Rekord / Struktúra Rekord / struktúra:
– Szemantikailag összetartozó, egymáshoz rendelt, különböző típusú elemek halmaza. – Minden elemének (mezőknek) saját neve van. – Használatának előnye, hogy egy egységbe foglalja össze az összetartozó adatokat. – Pl. Egy ember neve, fizetése – A rekord használatához előbb egy új típust kell létrehozni, ezután lehet az új típusból változót deklarálni. – Műveletek: • Elemkiválasztás (pl. Ember[2].fizetés), • A kiválasztott elemen a típusnak megfelelő összes művelet értelmezett. 226/92
B IT M A N
Objektum Objektum:
– A rekordok/struktúrák továbbfejlesztése: logikailag összetartozó adatok és rajtuk dolgozó metódusok összessége. – Jellemzők: • Öröklődés: az utód osztály örökli az ős adatait, metódusait, valamint tartalmazhat újakat, és felülírhat régi metódusokat. • Polimorfizmus – többalakúság: ugyanarra az üzenetre (kérelemre), azaz metódus hívásra, különböző objektumok különbözőképpen reagálhatnak. • Bezárás, az információ elrejtése: az adatokat csak interfészeken (metódusok) keresztül lehet elérni.
226/93
B IT M A N
Változók ↔ Állományok A változók az adatok programfutás-közbeni tárolásának
és kezelésének eszközei, de csak belső tárolásúak, azaz a memóriában léteznek. (Ha kikapcsoljuk a gépet, elveszítik értéküket) A gyakorlati programozáshoz a belső adattárolás nem elegendő, mert: – Az adatokat két feldolgozás, programfutás között is meg kell őrizni. – Az adatok mennyisége olyan nagy lehet, hogy egyszerre nem fér be a memóriába. A megoldás a külső tárolókon, a háttértárakon történő adattárolás. 226/94
B IT M A N
Állomány Állomány (fájl):
– A háttértáron tárolt adatok definiálására és kezelésére szolgáló adatszerkezet. – Azonos típusú (mely lehet egyszerű vagy összetett) elemek sorozata (szekvenciája). – Egyszerre egy elem férhető hozzá (írható vagy olvasható), ezt egy író-olvasó pointer (rekordmutató) jelöli ki. – A fájl deklarálásakor a fájlhoz egy azonosítót rendelünk, ez a fájl változó. Ezt a "logikai" fájlt egy "fizikai", valamely periférián létező fájlhoz kell hozzárendelni. A logikai fájlt kezeljük, a változások megjelennek a fizikai fájlban is. 226/95
B IT M A N
Speciális adatszerkezetek Sor:
– A sor adatszerkezetbe egyesével tehetjük be, és egyesével vehetjük ki az elemeket. – Ahhoz az elemhez férünk hozzá legelőször, amelyiket először betettünk, ezért nevezik FIFO (first in first out) adatszerkezetnek. – Műveletek: berakás, kivétel C, B, A
C, B, A C
Berak 226/96
B
A Kivesz
B IT M A N
Speciális adatszerkezetek Verem:
– Verem esetén azt az elemet vehetjük ki legelőször, amelyiket utoljára tettük be. Működési módja miatt LIFO (last in first out) adatszerkezetnek nevezik. – Műveletek: berakás, kivétel C, B, A
Berak
A, B, C
C
Kivesz
B A 226/97
B IT M A N
Programfejlesztő eszközök
226/98
A strukturált programozás alapjai
Adatok, változók
Adatszerkezetek
Értékadás, kifejezések
Operátorok
Elágazások, ciklusok
B IT M A N
Értékadás Értékadás: amikor egy változónak értéket adunk, vagy
meglévő értékét módosítjuk. Szintaktikája (formája, alakja): – Változó = kifejezés – Pl. a = 2*b – c vagy a = a+1
Időbeliség!
Szemantikája (jelentése):
– A kifejezés kiértékelődik, majd a változó felveszi értékül a kifejezés eredményét. – Mivel előbb értékelődik ki a kifejezés és csak utána változik meg a változó értéke, ezért a változó szerepelhet a kifejezésben és ott a program a változó korábbi értékével számol. – Fontos: mindig a bal oldal kap értéket! a=b ≠ b=a ! 226/99
B IT M A N
Kifejezések Kifejezés: értéket képviselő programelemek össze-
kapcsolva operátorokkal, ahol a kifejezés elem lehet: – Konstans, – Változó, – Függvényhívás, – Zárójelezett kifejezés. Pl: 5*(a+2)-b – A kifejezés tartalmaz egy konstanst (5), egy zárójelezett kifejezést (a+2), egy változót (b), valamint két operátort a szorzást (*), és a kivonást (-). – A zárójelezett kifejezés tartalmaz egy változót (a), egy konstanst (2) és egy operátort az összeadást (+). 226/100
B IT M A N
Kifejezések 2. Kifejezés kiértékelés: Ha egy kifejezés több operátort is
tartalmaz, akkor a kiértékelésük sorrendjét a precedencia szabályok határozzák meg. A zárójelezett kifejezésben szereplő operátorok a teljes kifejezés kiértékelése szempontjából nem számítanak, hiszen a zárójelezett kifejezés külön értékelődik ki. Precedencia szintek: Minden operátor be van sorolva valamilyen precedencia szintre. Egy precedencia szinten lehet több operátor is.
226/101
B IT M A N
Kifejezések 3. Precedencia szabályok: A különböző precedencia szintű operátorok esetén mindig a magasabb precedenciájú hajtódik végre először (tehát nem leírás sorrendjében!!). Az azonos precedencia szintű operátorok közül a leírás sorrendisége dönt. A legtöbb precedencia szint esetén a leírás sorrendjében, azaz balról-jobbra hajtódnak végre. Egyes precedencia szinteknél előfordul, hogy jobbrólbalra.
226/102
B IT M A N
Programfejlesztő eszközök
226/103
A strukturált programozás alapjai
Adatok, változók
Adatszerkezetek
Értékadás, kifejezések
Operátorok
Elágazások, ciklusok
B IT M A N
Operátorok Operátorok: – Egy operandusú operátorok: pl. logikai tagadás operátor, előjel operátor, növelő operátor, stb. – Két operandusú operátorok: pl. összeadás, szorzás, stb. – Három operandusú operátor: a C szerű nyelvekben létezik egy feltételes operátor, amely három operandusú A leggyakrabban használt operátorok (az első szint a
legmagasabb): – – – – – 226/104
Szint 1: előjel operátor:-, logikai tagadás operátor: ! Szint 2: szorzás: *, osztás: / Szint 3: összeadás: +, kivonás: Szint 4: relációk: <, >, <=, >= Szint 5: értékadó operátorok (C szerű nyelvek esetén): =, +=, -=, *=, /=, stb. (jobbról-balra!!!) B IT M A N
Operátorok 2. Az egyes nyelvek ettől sokkal több operátort ismernek,
és több precedencia szint is létezik. Általánosságban elmondható, hogy az egyoperandusú operátorok magasabb precedenciájúak, mint a kétoperandusúak. A legtöbb szint balról-jobbra értékel ki, kivételek az értékadó operátorok, valamint legtöbb egyoperandusú operátor (hiszen ezeket elé szokás írni és az értékelődik ki hamarabb, amely közelebb áll az operandushoz.
226/105
B IT M A N
Operátorok 3. Példa1: 3+2*4-4/2*3 – lépés 1.: legmagasabb precedenciájú a *, /, , balróljobbra értékelődik tehát első lépésben a 2*4 értékelődik ki. Ezután marad a: 3+8-4/2*3 – lépés 2.: 4/2. Marad a 3+8-2*3 – lépés 3.: 2*3. Marad a 3+8-6 – lépés 4: 3+8. Marad a 11-6 – lépés 5: 11-6 – Eredmény: 5
226/106
B IT M A N
Operátorok 4. Példa2: 2+3-((5+3)/(2*4)+2)-1 – lépés 1: A kifejezésben levő operátorok +, -, -, azaz mindegyik azonos precedenciájú, kiértékelésük balróljobbra történik: 2+3, marad a 5-((5+3)/(2*4)+2)-1 – lépés 2: A kiértékelésben következő operátor jobb oldalán egy zárójelezett kifejezés áll, így a kivonás kiértékelése előtt ki kell értékelni a zárójelezett kifejezést. – Következik: (5+3)/(2*4)+2 kiértékelése!
226/107
B IT M A N
Operátorok 5.
Kiindulás: 5-((5+3)/(2*4)+2)-1
– (5+3)/(2*4)+2 kiértékelése: • lépés 1: két operátor van: /, +. Magasabb precedenciájú a / ennek baloldalán egy zárójelezett kifejezés áll, tehát ki kell értékelni: – lépés 1: 5+3. Marad: 8 / (2*4) +2 a / operátor jobboldali operandusa is zárójelezett kifejezés: (2*4) kiértékelése: – lépés 2: 2*4. Marad: 8 / 8 +2 • tehát az osztás: 8/8. Marad: 1+2 • lépés 2: 1+2, eredménye tehát: 3 Eredmény: 5-((5+3)/(2*4)+2)-1 → 5-3-1 226/108
B IT M A N
Operátorok 6. – 5-3-1: először az 5-3 hajtódik végre, eredmény: 2 – lépés 3: 2-1, az eredmény 1 2+3-((5+3)/(2*4)+2)-1 = 1
226/109
B IT M A N
Relációs operátorok Fontos: mindig a bal oldalról mondunk véleményt!
< kisebb = egyenlő > nagyobb
<= kisebb egyenlő <> nem egyenlő >= nagyobb egyenlő
Az összehasonlítás eredménye igaz, vagy hamis lehet. Logikai operátorok: segítségükkel összetett logikai
állításokat képezhetünk
226/110
B IT M A N
Logikai operátorok 1. Logikai „nem” - tagadás Jele: NOT Jelentése: Igazból hamisat, hamisból igazat képez.
Logikai „és” Jele: AND Jelentése: Az összetett állítás akkor igaz, ha mindkét állítás igaz. 226/111
A NOT(A)
Igaz Hamis Hamis Igaz
A
B
A AND B
Igaz
Igaz
Igaz
Igaz
Hamis
Hamis
Hamis
Igaz
Hamis
Hamis
Hamis
Hamis
B IT M A N
Logikai operátorok 2. Logikai „megengedő vagy” Jele: OR Jelentése: Az összetett állítás akkor igaz, ha legalább az egyik állítás igaz. Logikai „kizáró vagy” Jele: XOR Jelentése: Az összetett állítás akkor igaz, ha a két állítás különbözik. 226/112
A
B
A OR B
Igaz
Igaz
Igaz
Igaz
Hamis
Igaz
Hamis
Igaz
Igaz
Hamis
Hamis
Hamis
A
B
A XOR B
Igaz
Igaz
Hamis
Igaz
Hamis
Igaz
Hamis
Igaz
Igaz
Hamis
Hamis
Hamis
B IT M A N
226/113
B IT M A N
Logikai operátorok 3. Példák
– – – – – –
– –
– – 226/114
A=2, B=3 A < 5 OR B > 3 A > 5 AND B > 3 NOT(A > 5) AND B <= 3 NOT(A = 2) OR B <> 3 NOT(A = 2) AND NOT(B = 3) NOT(A < 4) AND ((B > 3) OR (B > 3)) ((A < 4) AND (A >= 2)) OR ((B > 2) AND NOT(B <> 3)) NOT(A <> 2) AND NOT(B <= 3) AND (A < 5 OR B > 3) (A > 5 AND B > 3) XOR ((B > 2) AND NOT(B <> 3)) (NOT(A > 5) AND B <= 3) XOR (NOT(B <= 3) AND A > 5)
B IT M A N
Programfejlesztő eszközök
226/115
A strukturált programozás alapjai
Adatok, változók
Adatszerkezetek
Értékadás, kifejezések
Operátorok
Elágazások, ciklusok
B IT M A N
Feltételes művelet – Egyágú elágazás Ha feltétel akkor utasítás Elágazás vége
– Ha a feltétel teljesül, akkor az utasítás végrehajtásra kerül, ha nem teljesül, akkor az elágazás vége után folytatódik a program. – Az utasítás helyén több utasítás is állhat. hamis
igaz
feltétel
utasítás
226/116
-
feltétel hamis
igaz utasítás
B IT M A N
Feltételes (kétágú) elágazás Ha feltétel akkor utasítás-i különben utasítás-h Elágazás vége
– Ha a feltétel teljesül, akkor az utasítás-i kerül végrehajtásra, ha nem akkor az utasítás-h. – Mindkét esetben az elágazás vége után folytatódik a program.
igaz igaz
feltétel
feltétel hamis
utasítás-i utasítás-h
226/117
hamis
utasítás-i
utasítás-h
B IT M A N
Többágú feltételes elágazás Elágazás feltétel1 akkor utasítás1 feltétel2 akkor utasítás2 …. feltételN akkor utasításN különben utasítás0 Elágazás vége
feltétel1
utasítás1
feltétel2
utasítás2
...
...
feltételN
utasításN
különben
utasítás0
226/118
– Ha az i-edik feltétel teljesül, akkor az utasítási kerül végrehajtásra, ha egyik feltétel sem teljesül, akkor az utasítás0. – Bármely esetben az elágazás vége után folytatódik a program. feltétel1
utasítás1
feltétel2
utasítás2
feltételN
utasításN
utasítás0
B IT M A N
226/119
B IT M A N
Elöltesztelő ciklus ciklus amíg feltétel ciklusmag ciklus vége
– Amíg a feltétel teljesül, addig a ciklusmag utasításai végrehajtásra kerülnek, ha már nem teljesül, akkor a ciklus vége után folytatódik a program.
hamis feltétel ciklusmag
feltétel
igaz utasítások
226/120
B IT M A N
Hátultesztelő ciklus ciklus ciklusmag amíg feltétel ciklus vége
– A ciklusmag mindaddig végrehajtásra kerül, amíg a feltétel teljesül. Ha már nem teljesül, akkor a ciklus vége után folytatódik a program. – Egyszer a ciklusmag mindenféleképpen végrehajtódik!
utasítások
ciklusmag feltétel
igaz feltétel
hamis 226/121
B IT M A N
Számláló ciklus ciklus i= 1..N utasítások ciklus vége
i= 1..N ciklusmag
– A ciklusváltozó (i) a kezdeti értéktől a végértékig egyesével növekszik, közben minden értéknél végrehajtódik a ciklusmag. – Ha a ciklusváltozó meghaladja a végértéket, a ciklus vége után folytatódik a program.
hamis
i=1..5
igaz utasítások
226/122
B IT M A N
Visszafelé számláló ciklus ciklus i= N..1 visszafelé utasítások ciklus vége
i= N..1 ciklusmag
– A ciklusváltozó (i) a kezdeti értéktől a végértékig egyesével csökken, közben minden értéknél végrehajtódik a ciklusmag. – Ha a ciklusváltozó értéke a végérték alá csökken, a ciklus vége után folytatódik a program. hamis
i=5..1
igaz utasítások
226/123
B IT M A N
Egymásba ágyazott ciklusok j
Mátrix beolvasása
i
17 82
6 47 33
26 18
3
i=1
7 66
13 43 60 25 20 j=1
h i=1..3 Be: A[i,j]
i j=1..5
i Be: A[i,j]
226/124
j=j+1
h i=i+1
j<5
i<3
B IT M A N
226/125
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Programtervezési módszerek
Algoritmus alapfogalmak
A strukturált programozás alapjai
A programkészítés alapjai
Alapalgoritmusok
B IT M A N
A
226/126
programkészítés alapjai A strukturált programozás alapjai
A programozás kialakulása
A programkészítés menete
Programnyelv ABC
B IT M A N
Programnyelv generációk 1GL: Gépi kód
Generation Language
2GL: Assembly 3GL: Magasszintű, procedurális nyelvek
– Utasítás-orientált (BASIC, PASCAL) – Kifejezés-orientált (C) 4GL: Probléma-orientált nyelvek – Funkcionális (LISP) – Logikai (PROLOG) – Adatbázis-kezelő (SQL) – Objektum-orientált (C++, JAVA) 5GL: Természetes nyelvek 226/127
B IT M A N
5GL – Egy természetes nyelv
226/128
B IT M A N
Gépi kód A gépi kódú (bináris kódú) program a számítógép
számára végrehajtható utasítások sorozata, ezért futtatható programnak (executable program) is nevezik. Egy gépi kódú program adatokat és utasításokat is tartalmaz. Műveleti kód
Címrész
A műveletben részt vevő adatok helyének kódja 11000110 Összeadás 226/129
00111000
10101110
Első szám Második helye szám helye
10101010
Eredmény helye
B IT M A N
Az igazi programozó kódja bináris!
226/130
B IT M A N
Assembly A programozó az utasításokat egy szöveges állományba
írja, ez az assembly forrásprogram. Ez nem futtatható, ezért gépi kódúvá kell alakítani. Assembler: program, amely elemzi és gépi kódúvá alakítja, lefordítja a forrásprogramot. További feladata, hogy információt adjon a forrásprogramban előforduló hibákról. MOV PUSH PUSH ADD CALL
0401C8 0401CA 0401CC 0401D0 0401D4
esp,4 eax,eax edx esp,1 esp,8
0111011001101010 1001101010100110 1010110110011010 1101100110101010 1101011001100100 Assembler
226/131
B IT M A N
Alacsony szintű programnyelvek A gépi kód és az assembly olyan programozási nyelv,
melyben a vezérlés és az adatstruktúra közvetlenül visszatükrözi a gép architektúráját. Előnyük: – Gyors, és kis helyfoglalású program írható – Vannak olyan erősen a hardverhez kötődő feladatok, amelyeket csak így lehet megoldani Hátrányuk: – A programozónak sokat kell dolgoznia – A kód nehezen érthető, módosítható – Géptípusonként külön kell megírni a kódot 226/132
B IT M A N
A gépi kódú program A számítógép a működése során gépi utasításokat
(instrukciókat) hajt végre egymás után Az instrukciók csak primitív műveleteket tudnak végrehajtani. Például: – regiszterekben tárolt egész számok összeadása – egy regiszter tartalmának adott memóriacímre másolása – stb. Az instrukciók gép-specifikusak, a processzorral együtt tervezik meg azokat
226/133
B IT M A N
A gépi kódú programozás hátrányai Egy feladat megfogalmazása a gép nyelvén rendkívül
aprólékos munka A gépi kódú programozáshoz a hardware elemek pontos ismerete szükséges Ha egy gép hardware összetétele megváltozik, a programot ennek megfelelően módosítani kell. Ha a programot egy másik processzorral épített gépen akarjuk futtatni, a programot teljesen újra kell írni, a gépi kódú programok nem hordozhatók!
226/134
B IT M A N
A megoldás Az operációs rendszer (egyik szolgáltatásaként) elrejti a
hardware elemek kezelésének részleteit (pl. egy lemez tartalmát file-rendszerként kezelhetjük) - de ez egy másik tárgy témája. A programok írására magas szintű programozási nyelvet használunk, amely processzor és - többnyire - hardware független utasításokat tartalmaz. A programok hordozhatók, egy másik processzorra változtatás nélkül áttehető a program
226/135
B IT M A N
A megoldás 2. A programozási nyelv az emberi nyelvhez közelebb áll,
mint a gépi nyelvhez - könnyebben megtanulható. A programozási nyelv utasításai bonyolultabb folyamatokat írnak le, mint az instrukciók - ugyanannak a problémának a leírása sokkal kevesebb utasítást igényel. A gyakran előforduló részfeladatokra előre elkészített programrészek (könyvtári rutinok) használhatók. ("Library")
226/136
B IT M A N
A programozási nyelv A természetes nyelvhez hasonlít a felépítése Számos nyelv létezik, de mindegyiknek precíz definíciója
van. Egy nyelv definíciójának összetevői: – Alapelemek (szintaktikai egységek) - mint a természetes nyelvekben a szavak – Formális szabályok az alapelemek összeépítésére (szintaktika)- mint a nyelvekben a nyelvtan – A nyelvi szerkezetek jelentésének definíciói (szemantika) - mint a nyelvekben a használat szabályai 226/137
B IT M A N
Megoldandó problémák Egyetlen processzor sem érti egyetlen magas szintű
programozási nyelv utasításait sem! – Megoldás: a programot le kell fordítani instrukciók sorozatára. A munka automatizálható: fordítóprogram (compiler) segítségével. – Minden operációs rendszer - processzor párosra külön fordítóprogram kell. Ez azonban megoldja a gépfüggetlen programok írását.
226/138
B IT M A N
Megoldandó problémák 2. Egy programot általában több részben (modulban) írunk
meg Felhasználunk előre elkészített modulokat is (könyvtári rutinokat) – Megoldás: ezeket össze kell építeni a linker (tárgykódú szerkesztő) program segítségével
226/139
B IT M A N
A
226/140
programkészítés alapjai A strukturált programozás alapjai
A programozás kialakulása
A programkészítés menete
Programnyelv ABC
B IT M A N
A programkészítés menete 1. # include <stdio.h> void main ( ) { printf (”Helló Világ! \n”); }
Elkészítjük a program forráskódját
Ez egy (esetleg több) szövegfájl Ehhez egy szövegszerkesztő programot használunk
Szövegszerkesztő (editor)
A file kiterjesztése általában utal a használt programozási nyelvre. Pl.:
proba.c 226/141
B IT M A N
A programkészítés menete 2. # include <stdio.h> void main ( ) { printf (”Helló Világ! \n”); }
Fordítóprogram
1CF7 B00C 37DA 4107 FAC4 660D 00F1 300BD 1FF0 35BB 337DD 239C 410F 396A C44D 006A
Lefordítjuk a programot a fordítóprogrammal (compiler) Szövegszerkesztő (editor)
226/142
A tárgykódú modul egy speciális szerkezetű bináris file, amelynek formátuma már nem függ a programozási nyelvtől. Kiterjesztése általában .obj vagy .o
B IT M A N
A programkészítés menete 3. # include <stdio.h> void main ( ) { printf (”Helló Világ! \n”); }
Fordítóprogram
1CF7 B00C 37DA 4107 FAC4 660D 00F1 300BD 1FF0 35BB 337DD 239C 410F 396A C44D 006A
Linker
410F 396D 5CF3 B00A 3CDA 4107 FAC4 660D 00F1 300BD CCD4 BAF0 337DD 239C 33F5 0B6A
Szövegszerkesztő (editor)
A tárgykódú modulokhoz hozzávesszük a könyvtári modulokat
10011110 11000011 10101100 10111000 00101100 10010010 10010000 01111011
A linker összeszerkeszti A végeredmény a futtatható (exe) program 226/143
B IT M A N
Megjegyzések A forrásprogram szövegfájl, elkészítéséhez
szövegszerkesztő (text editor) és nem dokumentum szerkesztő alkalmas. Windows alatt például a "Jegyzettömb" alkalmazás, és nem a Word. Az előző ábrák azt az esetet mutatják, amikor parancssoros felületen, az egyes programok egyedi indításával készítjük el a programot. Ma már a legegyszerűbb fejlesztőeszközök is integrálják az editor, compiler, a linker és a hibakereső (debugger) programokat, ezzel egyszerűsítve a munkát.
226/144
B IT M A N
Egy C nyelvű fejlesztő környezet
Lépések: 1. Programírás 2. Mentés (pld.c) 3. Fordítás (pld.exe) 4. Futtatás
226/145
B IT M A N
Megjegyzések 2. Mivel egy valóságos program több tárgykódú modulból
és esetenként több könyvtár felhasználásával szerkeszthető össze, a linkernek fel kell sorolni a szükséges modulokat. Erre is tartalmaz eszközöket egy integrált fejlesztő eszköz. Az előbb vázolt eszközök csak egyszerű programok és nem alkalmazások fejlesztését teszik lehetővé. – Egy programozási nyelv például általában nem tartalmaz ablakos felhasználói felület készítésére alkalmas eszközöket. (Ez alól részben kivétel a Java nyelv.) Valódi alkalmazások fejlesztésére összetettebb (és drágább) fejlesztő környezet szükséges. 226/146
B IT M A N
A program és az alkalmazás különbsége 1. A program egy technikai fogalom: algoritmusok
számítógépes megvalósítása. Az alkalmazás felhasználó vagy felhasználók egy csoportjának a munkáját vagy egyéb tevékenységét segítő számítógépes rendszer. Egy alkalmazás legfontosabb részei: – Program vagy programok rendszere – Működtető környezet (hardware/software) – Adatok – Dokumentációk A program tehát egy szűkebb fogalom, mint az alkalmazás (A tárgy keretében a gyakorlás érdekében programokat írunk.)
226/147
B IT M A N
A program és az alkalmazás különbsége 2. Az alkalmazás mindig felhasználó(k) érdekében készül. Az alkalmazás kifejlesztése vagy megvásárlása pénzbe
kerül, tehát termék, áru. A termékek megfelelő minőségű gyártásához szükséges ismeretek együttesét szoftver technológiának hívjuk. A mai szóhasználatban a software szó a legtöbbször alkalmazást jelöl.
226/148
B IT M A N
A
226/149
programkészítés alapjai A strukturált programozás alapjai
A programozás kialakulása
A programkészítés menete
Programnyelv ABC
B IT M A N
A programozási nyelvek megjelenése 1954 1959 1960 1964
1970 1971 1983 1987 1995 1995 1995 2001
226/150
FORTRAN – FORmula TRANslator COBOL – COmmon Business Oriented Language ALGOL – Algorithmic Language BASIC – Beginner’s All purpose Symbolic Instruction Code Pascal C – Dennis Ritchie C++ Perl Java Delphi: Pascalból, objektum orientált PHP – Hypertext Preprocessor C#
B IT M A N
Fontosabb programnyelvek 1. Assembly
– Gépi kódú programozást segítő nyelv – A megírt program nehezen hordozható – Ma már főleg az operációs rendszerek készítői, ill. a hardvergyártók programoznak ilyenben. Pascal – Eredetileg a strukturált programozás tanulónyelvének szánták – Továbbfejlesztett változata, a TURBO PASCAL a modulok, illetve ma már az OOP-t is támogatja – A valós életben a C miatt nem tudott érvényesülni, illetve a DELPHI-ben él tovább 226/151
B IT M A N
Fontosabb programnyelvek 2. C
– Közép szintű nyelvként szokták emlegetni, mert egyesíti az assembly és a magas szintű nyelvek elemeit. – Hatékony és könnyű programozni – Kis terjedelmű nyelv: kevés utasítás – Minden (fontos) géptípusra van C fordító -> hordozható nyelv – Régen minden általánosat C-ben írtak, ma a helyét egyre jobban átveszi a C++, ami objektum orientált módszert (OOP) tesz lehetővé. – Ahol megmarad, az a rendszerprogramozás. 226/152
B IT M A N
Fontosabb programnyelvek 3. C++
– A C nyelv objektum-orientált továbbfejlesztése – Ma már a legtöbb géptípusra van C++ fordító is -> jól hordozható nyelv – Napjainkban minden (általános) programot ebben írnak
226/153
B IT M A N
Fontosabb programnyelvek 3.5
226/154
B IT M A N
Fontosabb programnyelvek 4. Java
– Egy képzeletbeli (virtuális) Java-gép programnyelve – Szintaktikája nagyon hasonlít a C++ -hoz – A nyelv szabványos részét képezik a leggyakrabban kellő alapkönyvtárak,mint pl. a grafika, felhasználói felület, hálózat programozás, adatbázis-kezelés. – Java nyelven lehet appleteket írni, amelyek beszúrhatók HTML oldalakba is – Tökéletesen hordozható nyelv – Az Internet-programozás fő nyelve.
226/155
B IT M A N
A programozók csoportosítása Pascal
226/156
C
C++
Visual Basic
JAVA
B IT M A N
226/157
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Programtervezési módszerek
Algoritmus alapfogalmak
A strukturált programozás alapjai
A programkészítés alapjai
Alapalgoritmusok
B IT M A N
Programfejlesztő eszközök
226/158
Alapalgoritmusok
Összegzés
Megszámlálás
Kiválasztás
Kiválasztásos rendezés
Összefésülés
Szétválogatás
B IT M A N
Összegzés Feladat: Adott egy számhalmaz, határozzuk meg a számok összegét. 7
15
13
5
9
49
Megoldás: Egy változó értékét beállítjuk 0-ra (kinullázzuk) Ciklus segítségével végigmegyünk a sorozat elemein, és a kinullázott változóhoz rendre hozzáadjuk a sorozat aktuális elemét. Az eredmény az eredetileg kinullázott változó aktuális értéke.
226/159
B IT M A N
Összegzés Pszeudokód: Be: N ciklus i= 1 .. N ismétel Be: A[ i ] ciklus vége Összeg = 0 ciklus i= 1 .. N ismétel Összeg = Összeg + A[ i ] ciklus vége Ki: Összeg 226/160
B IT M A N
Összegzés Struktogram: Be: n
Tömb elemszámának beolvasása
i = 1 .. n Be: A [ i ] s=0
Tömbelemek beolvasása Összeg változó (s) kinullázása
i = 1 .. n s = s + A[ i ]
Ki: s
226/161
Összegzés Eredmény kiírása
B IT M A N
Összegzés
1
START Be: n
n: elemek száma
i=0
i: ciklusváltozó
s=0 i=0
s: összeg
i= i + 1 s= s + A [ i ]
i= i + 1 A: elemek tömbje Be: A[ i ]
Igen
i
Igen
i
STOP 1
226/162
Ki: s
B IT M A N
Programfejlesztő eszközök
226/163
Alapalgoritmusok
Összegzés
Megszámlálás
Kiválasztás
Kiválasztásos rendezés
Összefésülés
Szétválogatás
B IT M A N
Megszámlálás Feladat: Adott egy számhalmaz, és egy feltétel. Határozzuk meg, hogy az adatok közül hány darab tesz eleget a feltételnek. Feltétel: a szám legyen kisebb 10-nél 7
15
13
5
9
3
Megoldás: Kinullázunk egy változót. Ciklus segítségével végigmegyünk a tömb elemein. Megvizsgáljuk őket, és ha a tömbelem a feltételnek megfelel, a kinullázott változóhoz hozzáadunk egyet. Az eredmény az eredetileg kinullázott változó aktuális értéke.
226/164
B IT M A N
Megszámlálás Pszeudokód: Be: N ciklus i= 1 .. N ismétel Be: A[ i ] ciklus vége S=0 ciklus i=1 .. N ismétel Ha A[ i ] < 10 akkor S = S+1; ciklus vége Ki: S 226/165
Struktogram: Be: n i = 1 .. n Be: A [ i ] db = 0 i = 1 .. n
A[i] < 10 Igen
Nem
db=db+1
Ki: db
B IT M A N
1
Megszámlálás db: darabszám
START Be: n
db = 0 i=0
i= i + 1 Nem
i=0
A[i] < 10 Igen
db = db + 1
i= i + 1
Igen
Be: A[ i ] i
i
Ki: db
Nem
1 226/166
Nem
STOP
B IT M A N
Programfejlesztő eszközök
226/167
Alapalgoritmusok
Összegzés
Megszámlálás
Kiválasztás
Kiválasztásos rendezés
Összefésülés
Szétválogatás
B IT M A N
Kiválasztás Feladat: Adott egy számhalmaz, és egy feltétel. Határozzuk meg, hogy melyik adat tesz eleget leginkább a feltételnek. Feltétel: a legkisebb szám
7
15
13
5
5
Megoldás: Egy változóba (MIN) berakjuk a tömb első elemének az értékét. Ezután a 2. elemtől kezdve egy ciklussal végignézzük a tömb elemeit, és ha a vizsgált elem kisebb a MINértékénél, akkor berakjuk az értékét a MIN-változóba, így a MIN-értéke az addig megvizsgált elemek közül mindig a legkisebbet tartalmazza. 226/168 B IT M A N Eredmény: a MIN változó értéke.
Kiválasztás Pszeudokód: Be: N ciklus i= 1 .. N ismétel Be: A[i] ciklus vége MIN = A[1] ciklus i= 2 .. N ismétel Ha A[i] < MIN akkor MIN = A[i]; ciklus vége Ki: MIN 226/169
Struktogram: Be: n i
m = A [1] i = 2 .. n A[i] < m Igen
Nem
m=A [i] Ki: m
B IT M A N
1
Kiválasztás m: legkisebb elem
START Be: n
m=A [1] i=1
i= i + 1 Nem
i=0
A[i] < m Igen
m = A [i]
i= i + 1
Igen
Be: A[ i ] i
i
Ki: m
Nem
1 226/170
Nem
STOP
B IT M A N
Programfejlesztő eszközök
226/171
Alapalgoritmusok
Összegzés
Megszámlálás
Kiválasztás
Kiválasztásos rendezés
Összefésülés
Szétválogatás
B IT M A N
Kiválasztásos rendezés Feladat: Adott egy számhalmaz, és valamilyen rendezési szempont (rendezési kulcs). Rendezzük sorba az adatokat. Szempont: növekvő sorrend
7
226/172
15
13
5
5
7
13
15
B IT M A N
Kiválasztásos rendezés Feladat: Adott egy tömb, rendezzük az elemeit növekvő
sorrendbe. Módszer: – Keressük ki a legkisebb elemet, és tegyük azt a tömb első helyére. – Lépjünk egy hellyel odébb (második elem), és keressük ki a maradék elemek közül a legkisebbet. Tegyük ezt a második helyre. – Lépjünk eggyel odébb, …
226/173
B IT M A N
Kiválasztásos rendezés Megoldás: Visszavezetjük a rendezést a kiválasztásra
– Két egymásba ágyazott ciklust alkalmazunk. – A külső (I-változójú) azt vezérli, hogy hányadik helyre keressük a megfelelő adatot. – A belső (J-változójú) a maradék elemek közül választja ki a megfelelőt. – Ha csere szükséges, akkor azt egy segédváltozó (C) bevezetésével valósítjuk meg
226/174
B IT M A N
Kiválasztásos rendezés Csere: A
B
Kiindulás:
8
3
1. lépés:
8
3
8
C=A
2. lépés:
3
3
8
A=B
3. lépés:
3
8
8
B=C
Végeredmény:
3
8
8
226/175
C
B IT M A N
Kiválasztásos rendezés Kiindulás:
7
15
13
5
Külső ciklus: i – melyik helyre keressük a legkisebb elemet Belső ciklus: j – végigmegy az i-től magasabb indexű elemeken i=1, j=2
7
15
13
5
j=3
7
15
13
5
Nincs csere Nincs csere
j=4
7
15
13
5
Csere
i=2, j=3
5
15
13
7
Csere
j=4
5
13
15
7
Csere
i=3, j=4
5
7
15
13
Csere
Végeredmény:
5
7
13
15
226/176
B IT M A N
Kiválasztásos rendezés Pszeudokód:
Be: N c1-ciklus i= 1 .. N ismétel Be: A[i] c1-vége ck-ciklus i=1 .. N-1 ismétel cb-ciklus j= i+1 .. N ismétel ha A[j] < A[i] akkor C:=A[i], A[i]:= A[ j], A[ j]:=C feltétel vége cb-vége ck-vége c2-ciklus i= 1 .. N ismétel Ki: A[i] 226/177 c2-vége
Struktogram:
Be: n i = 1 .. n
Be: A [ i ] m = A [1] i = 1 .. n-1 j = i+1 .. n Igen
A[ j]
Nem
c=A[i] A[i]=A[ j] A[ j]=c i = 1 .. n Ki: A [i]
B IT M A N
1
Rendezés
i=1
2
START j=i+1 Be: n
Nem
i=0 i = i+1
A[ j]
i=0
Igen
j = j+1
c = A [i] A[i] = A[ j] A[ j] = c
i= i + 1
i= i + 1 Ki: A[ i ] Igen
Igen
Be: A[ i ] Igen
i
Nem
Nem Igen
STOP
i < n-1
Nem
1 226/178
j
i
Nem
c: segédváltozó 2
B IT M A N
Programfejlesztő eszközök
226/179
Alapalgoritmusok
Összegzés
Megszámlálás
Kiválasztás
Kiválasztásos rendezés
Összefésülés
Szétválogatás
B IT M A N
Összefésülés Feladat: Adott két vagy több rendezett számhalmaz. Egyesítsük úgy az adatokat, hogy az eredmény halmaza is rendezett legyen.
5
10
13
7
15
20
226/180
5
7
10
13
15
20
B IT M A N
Összefésülés Két tömb elemeinek összefésülése növekvő sorrendben: 1-re beállítjuk két segédváltozó értékét, ezek jelzik, hogy a két kiinduló tömb hányadik elemét vizsgáljuk meg. Indítunk egy ciklust, melynek lépésszáma a két tömb elemszámának az összege, így tudunk majd mindkét kiinduló tömb elemein végigmenni. A ciklusban megállapítjuk, hogy a segédváltozók által jelzett tömbelemek közül melyik a kisebb, és ezt az elemet áttesszük az eredmény tömbbe, és amelyik kiinduló tömbből áttettük az elemet, annak a segédváltozóját megnöveljük 1-el. Eredmény az eredmény tömb. 226/181
B IT M A N
Összefésülés Pszeudokód: Be: N ciklus i= 1 .. N ismétel Be: A[i] ciklus vége Be: M ciklus i= 1 .. M ismétel Be: B[i] ciklus vége
226/182
j= 1, k= 1 ciklus i= 1 .. N+M ismétel ha A[ j] < B[k] akkor C[i] = A[ j] j= j+1 különben C[i] = B[k] k= k+1 feltétel vége ciklus vége ciklus i= 1 .. N+M ismétel Ki: C[i] ciklus vége
B IT M A N
2
Összefésülés START
1
Be: n
Be: m
i=0
i=0
i=0 j=1 k=1
i=i+1 Igen
Nem
A[ j]
i= i + 1
i= i + 1
Be: A[ i ]
Be: B[ i ] Igen
i
C[i]=B[k] k = k+1
Igen
i<m
Igen
i < n+m
Nem
1 226/183
C[i]=A[ j] j = j+1
2
Nem
3
B IT M A N
Összefésülés
Be: n i = 1 .. n
3
Be: A [ i ] i=0
Be: m i = 1 .. m Be: B [ i ]
i= i + 1
j = 1, k = 1 Ki: C[ i ] Igen
i < n+m Nem
STOP
i = 1 .. n+m A[ j]
Nem
C[i]=A[ j] C[i]=B[k] j = j+1 k = k+1 i = 1 .. n+m Ki: C[ i ]
226/184
B IT M A N
Programfejlesztő eszközök
226/185
Alapalgoritmusok
Összegzés
Megszámlálás
Kiválasztás
Kiválasztásos rendezés
Összefésülés
Szétválogatás
B IT M A N
Szétválogatás Feladat: Adott egy számhalmaz, és egy (vagy több) feltétel. Válogassuk szét az adatokat a feltételnek megfelelően több halmazba.
5
7
10
14
15
20
10
14
20
5
7
15
Feltétel: páros és páratlan számok
226/186
B IT M A N
Szétválogatás Páros vagy páratlan számok: 1-re beállítjuk két segédváltozó értékét, ezek jelzik, hogy a két eredmény tömb (páros, páratlan) hányadik helyére kerül a kiinduló tömb aktuálisan vizsgált eleme. Ciklus segítségével végigmegyünk a kiinduló tömbön. Ha az aktuális elem 2-vel elosztva 0 maradékot ad (páros), akkor a páros tömbbe, a segédváltozója által jelzett helyre rakjuk, és a segédváltozót növeljük 1-el. Ha a maradék 1, akkor a vizsgált elem a páratlan tömbbe kerül, és ennek segédváltozóját növeljük meg. Eredmény a két eredmény tömb.
226/187
B IT M A N
Szétválogatás Pszeudokód:
Be: N ciklus i= 1 .. N ismétel Be: A[i] ciklus vége j= 1, k= 1 ciklus i= 1 .. N ismétel ha A[i] mod 2 = 0 akkor B[ j] = A[i] j= j+1 különben C[k] = A[i] k= k+1 feltétel vége ciklus vége 226/188
ciklus i= 1 .. j-1 ismétel Ki: B[i] ciklus vége ciklus i= 1 .. k-1 ismétel Ki: C[i] ciklus vége
B IT M A N
1
Szétválogatás
i=0 j=1 k=1
START
2
Be: n
i=0 i=i+1
i=0 Igen
Nem
i= i + 1
A[i] mod 2=0
i= i + 1 B[ j]=A[ i] j = j+1
Be: A[ i ]
C[k]=A[ i] k = k+1
Ki: B[ i ] Igen
i < j-1 Igen
i
Igen
i
Nem
1 226/189
Nem
3
Nem
2
B IT M A N
Szétválogatás Be: n 3
i = 1 .. n Be: A [ i ]
i=0
j = 1, k = 1 i = 1 .. n
i= i + 1
A[i] mod 2=0 Igen Nem
Ki: C[ i ]
B[ j]=A[i] C[k]=A[i] j = j+1 k = k+1 Igen
i < k-1
i = 1 .. j-1 Ki: B[ i ]
Nem
STOP
i = 1 .. k-1 Ki: C[ i ]
226/190
B IT M A N
226/191
B IT M A N
Információs technológiák Ellenőrző kérdések
B IT M A N
226/192
B IT M A N
Ellenőrző kérdések 1. 1. Melyik nem operációs rendszer? A: AIX B: LINUX C: COBOL D: UNIX E: OS/2 2. Milyen jogállású programra igaz az alábbi leírás: Kis ideig szabadon használható, aztán fizetni kell érte. A: Jogdíjas B: Shareware C: Freeware D: Public Domain 226/193
B IT M A N
Ellenőrző kérdések 2. 3. Melyik operációs rendszer verziói a következők: Puma, Jaguar, Leopard, Tiger? A: UNIX B: LINUX C: MAC D: Windows 4. Melyek a kernel feladatai? Processzor kezelés Memória kezelés Eszközkezelés Kapcsolattartás a felhasználóval 226/194
B IT M A N
Ellenőrző kérdések 3. 5. Írja a vonalak fölé a megfelelő fogalmakat!? Programnév.c
6. Számozza be az egyes lépések sorrendjét. Kezdje a legkorábbival! Mentés Programírás Futtatás Algoritmus alkotás Fordítás 226/195
B IT M A N
Ellenőrző kérdések 4. 7. Felhasználói program (F), segédprogram (S), vagy egyéb program (E)? Tűzfal: Táblázatkezelő: Tömörítő: Rajzoló program: Linux: Víruskereső: Java: Böngésző: CD-író program: 226/196
B IT M A N
Ellenőrző kérdések 5. 8. Melyik alkalmazói programcsoportra jellemzőek a következő kifejezések: cella, képlet, függvény ? A: Szövegszerkesztő B: Táblázatkezelő C: Adatbázis-kezelő
D: A és B csoportra E: B és C csoportra F: C és D csoportra
9. Melyik alkalmazói programcsoportra jellemzőek a következő kifejezések: rekord, jelentés ?
A: Szövegszerkesztő B: Táblázatkezelő C: Adatbázis-kezelő 226/197
D: A és B csoportra E: B és C csoportra F: C és D csoportra
B IT M A N
Ellenőrző kérdések 6. 10. Igaz vagy Hamis az állítás? Az első Windowst a Microsoft adta ki, 1974-ben. A freeware jogállású program teljesen ingyenes bármilyen célra. A UNIX-ot eredetileg UNICS-nak nevezték. A felhasználói programok operációs rendszer nélkül is futtathatók. Az operációs rendszer nem program. A C nyelv középszintű programozási nyelv. Az assembly nyelven írt programot az assemblerrel fordítják le gépi kódúra. Az ADD utasítás egy gépi kódú utasítás. A kémprogram kereső olyan program, ami ellen védekezni kell. 226/198
B IT M A N
Ellenőrző kérdések 7. 11. Mi az operációs rendszer? A: A hardver elemeket összefogó keretrendszer. B: Műtéteknél használt beavatkozási környezet. C: A hardver és a szoftver közötti programok gyűjteménye. D: A számítógép alapvető működéséért felelős programcsomag. 12. Melyik a kakukktojás? A: szövegszerkesztő B: képszerkesztő C: böngésző D: operációs rendszer E: táblázatkezelő 226/199
B IT M A N
Ellenőrző kérdések 8. 13. Word, Excel, PowerPoint. Mik ezek? A: szövegszerkesztő programok B: a Microsoft által gyártott hardverek C: alkalmazói programok D: segédprogramok 14. Melyik a kakukktojás? A: word B: excel C: firefox D: access E: powerpoint 226/200
B IT M A N
Ellenőrző kérdések 9. 15. Melyik állítás igaz a compilerre? A: Egyszerre lefordítja az egész forrásprogramot B: Egyszerre a forrásprogram egyetlen utasítását fordítja és hajtja végre C: Kimenete minden esetben gépi kód D: A forrásnyelven megírt programot lefordítja és rögtön végrehajtja 16. Jelölje be az összes állítást, mely igaz a változóra! A: A változó egy memóriaterület, melynek változhat az értéke B: A változó logikailag tovább nem bontható, elemi egység C: A változót azonosítani kell D: A változónak meg kell adni a típusát 226/201
B IT M A N
Ellenőrző kérdések 10. 17. Mit csinál a programszerkesztő (linker)? A: A linkerrel a forrásprogramot szerkeszthetjük meg B: A linker a külön lefordított tárgykódú modulokból kapcsolja össze a futtatható kódot. C: A linkerrel tárgykódú programot lehet írni D: A linkerrel végrehajtható kódot lehet írni 18. Tegye helyes sorrendbe a programfejlesztés lépéseit! Dokumentálás Kódolás Algoritmus készítés Specifikáció készítés 226/202
B IT M A N
Ellenőrző kérdések 11. 19. Jelölje be az összes helyes párosítást! A: Editor – Programszerkesztő B: Bináris kód – Gépi kód C: Fortran – Magas szintű programnyelv D: Interpreter – Fordító 20. Mi a szekvencia? Jelölje be az összes jó választ! A: Választás megadott tevékenységek között B: Megadott tevékenységek feltételtől függő, ismételt végrehajtása. C: Egymás után végrehajtandó tevékenységek sorozata D: Feltétel nélküli, időben egyszerre végrehajtandó tevékenységek 226/203
B IT M A N
Ellenőrző kérdések 12. 21. Igaz vagy Hamis az állítás? A linker ugyanaz, mint az editor . A memória tartalma a program futása közben nem változik. A fordító kiszűri a szemantikai hibákat. Az assembly alacsony szintű programozási nyelv. Egy algoritmusnak több kezdési pontja is lehet. Az assembly nyelv előnye, hogy gyorsabb és kisebb helyfoglalású program írható vele. Egy gépi kódú program csak gépi kódú utasításokat tartalmaz, adatokat nem. A fordítóprogram output-ja a forráskód. 226/204A magas szintű nyelv gépi kódja az assembly. B IT M A N
Ellenőrző kérdések 13. 22. Mit ír le az alábbi pszeudokód? Ha feltétel, akkor utasítás Elágazás vége A: Szekvenciát B: Egyágú szelekciót C: Elöltesztelő ciklust D: Növekményes ciklust 23. Mi jellemzi a szoftver minőségét? Jelölje be az összes jó választ! A: Program mérete B: Szabványosság C: Felhasználóbarátság D: Hibatűrés 226/205 B IT M A N
Ellenőrző kérdések 14. 24. Igaz vagy Hamis az állítás? A hátultesztelő ciklusra jellemző, hogy a ciklusmag egyszer mindenképpen végrehajtódik. A strukturált algoritmusra nem jellemző a többágú szelekció alkalmazása. Az algoritmus minden lépésének egyértelműen végrehajthatónak kell lennie. A folyamatábra az algoritmus leírására szolgáló, mondatszerű elemekből felépülő jelölésrendszer. A pszeudokód egy programozási nyelv. Az algoritmus egy adott tevékenység ismételt végrehajtása, mely a feladat megoldását célozza. 226/206
B IT M A N
Ellenőrző kérdések 15. 25. Beolvasáskor az a változó 4-es értéket kap. Kövesse a folyamatábrát! Mit ír ki az algoritmus? A: 15, 7 B: 7, 14 C: 5, 15 D: 21, 14 E: 5, 19 F: 6, 19 G: 12, 17 H: 20, 17 226/207
START s=3
be: a
Igen
Nem a<5
a= a+1
s= s+3
s= s+a
Igen s < 12 Nem ki: a, s
STOP
B IT M A N
Ellenőrző kérdések 16. 26. Mikor jelent meg az első magas szintű programnyelv? A: 1944 B: 1954 C: 1964 D: 1974 27. Kinek a nevéhez kötődik a strukturált programozás alaptétele? A: Bill Gates B: Neumann János C: Böhm-Jacopini D: Dijsktra 226/208
B IT M A N
Ellenőrző kérdések 17. 28. Értékelje ki a kifejezéseket! 3+5*2-6*2/3 4*(5-3)/2 6/3*2+4/2*3 5+6*2-3*(7-2)*2 29. Igaz vagy Hamis az állítás? (2 > 3 or 5 <= 4) (5 = 3 and 3 > 2) (4 < 6 and 5 < 4 xor 3 < 5) (not(3 = 5) or 6 > 3 and 2 < 3) 226/209
B IT M A N
Ellenőrző kérdések 18. 30. Melyik programozási módszer alkalmazza az öröklődés lehetőségét? A: Moduláris programozás B: Gépi kódú programozás C: Strukturált programozás D: Objektum-orientált programozás 31. Melyik adatszerkezet valósítja meg a FIFO elvet? A: Sor B: Verem C: Struktúra D: Állomány 226/210
B IT M A N
Ellenőrző kérdések 19. 32. Melyik adatszerkezeten értelmezhető az & és a * művelet? A: String B: Tömb C: Struktura D: Mutató 33. Írja be a megfelelő fogalom betűjelét! Különböző típusú elemek halmaza Egyforma típusú elemek halmaza Adatok és metódusok halmaza A: Objektum B: Tömb C: Rekord 226/211
B IT M A N
Ellenőrző kérdések 20. 34. Mi a helyes viszonya az alábbi fogalmaknak? A: Algoritmus < Alkalmazás < Program B: Algoritmus < Program < Alkalmazás C: Alkalmazás < Program < Algoritmus D: Alkalmazás < Algoritmus < Program 35. A változó… (melyik igaz?) A: a memória egy adott helyére mutató programelem. B: egymáshoz tartozó adatok elnevezése. C: értéket képviselő programelem. D: névvel ellátott tároló hely a számítógép memóriájában. 226/212
B IT M A N
Ellenőrző kérdések 21. 36. Alakítson ki két kategóriát, nevezze el azokat, és sorolja az alábbi típusokat az egyes kategóriákba! Kategóriák:
A: Int B: Állomány C: Rekord D: Long 226/213
Típusok:
E: Real F: String G: Tömb H: Double
B IT M A N
Ellenőrző kérdések 22. 37. Jelölje meg azokat a fogalmakat, amelyek a következő meghatározáshoz kapcsolódnak! Azt az elemet vehetjük ki legelőször, amelyiket utoljára tettük be. A: FIFO
B: LIFO
C: Sor
D: Verem
38. Melyik ciklust kell alkalmazni a következő feladat megoldására: Addig kell beolvasni számokat, még a számok kisebbek egy megadott értéknél! A: Elöltesztelő ciklus B: Hátultesztelő ciklus C: Számláló ciklus 226/214
B IT M A N
Ellenőrző kérdések 23. 39. Ábrát rajzolunk programmal. Az E betű 1 egységnyi rajzolást jelent, a B betű balrafordulást (rajzolás nélkül), a J betű jobbra fordulást (rajzolás nélkül). A legelső E betű hatására mindig balról jobbra haladva rajzolódik egy egységnyi vonal. Egy kis minta ábra, és programja: EBEBBEE
A: Mit rajzol ki a következő program: EBEEJE? B: Mit rajzol ki a következő program: EBEJEJEBE? C: Írja meg az egységnyi oldalú négyzet megrajzolásához szükséges programot!
226/215
B IT M A N
Ellenőrző kérdések 24. 40. Egészítse ki a következő mondatokat! A logikai IGAZ értéket 0-val, a logikai HAMIS értéket ............ jelöljük. Ha egy reláció teljesül akkor logikai értéke ............ , ha nem teljesül akkor ........... lesz. A logikai ÉS művelet eredménye csak akkor egy, ha ............. komponens értéke egy. A logikai VAGY művelet eredménye csak akkor nulla, ha ............ komponens értéke nulla. A logikai ÉS művelet eredménye ............., ha egy komponens értéke HAMIS. A logikai VAGY művelet eredménye ............, ha egy komponens értéke IGAZ. 226/216 B IT M A N
Ellenőrző kérdések 25. 41. Egészítse ki a következő mondatokat! Értékadáskor mindig a ……… oldal kapja meg a ……… oldalon álló kifejezés értékét. Ha egy kifejezés több operátort is tartalmaz, akkor a kiértékelésük sorrendjét a ………………………… határozzák meg. A ………………. szereplő operátorok a teljes kifejezés kiértékelése szempontjából nem számítanak, mert azok külön értékelődnek ki. A különböző ……………….. operátorok esetén mindig a ……………………….. hajtódik végre először, ha ez azonos, a …………………………. dönt. 226/217
B IT M A N
Ellenőrző kérdések 26. 42. Kövesse a struktogramot! Mit ír ki az algoritmus? A: 11 B: 13 C: 15 D: 21 E: 23 F: 24 G: 26 H: 30
226/218
s = 4, n = 5 i = 1 .. n Igen
s < 10
s=s+n
Nem
s=s+i
Ki: s
B IT M A N
Ellenőrző kérdések 27. 43. Igaz vagy Hamis az állítás? Az Assembly magas szintű programnyelv. Alacsony szintű programnyelven könnyebb programozni. A szemantika a programozás nyelvtani szabályrendszere. A szemantikai hibákat kijelzi a fordítóprogram. A forráskódot compilerrel fordítjuk le gépi kódra. Létezik végtelen számú lépésből álló algoritmus. A kinullázás egy változónak nulla érték adását jelenti. A pszeudokód egy téglalap alakú ábra egy algoritmus leírására. 226/219
B IT M A N
Ellenőrző kérdések 28. 44. Adott egy tömb, elemei: [ -5, 9, 6, -3, -7, 1 ] Mely algoritmus adja a legnagyobb értéket eredményül, a tömbön lefuttatva? A: Összegzés B: Megszámlálás (5-nél nagyobb elemek) C: Kiválasztás (legnagyobb elem) 45. Mely önálló elemekből épül fel egy folyamatábra? A: Adatbevitel B: Szelekció C: Művelet 226/220
D: Adatkivitel E: Kezdőpont, végpont F: Iteráció
B IT M A N
Ellenőrző kérdések 29. 46. Alakítson ki két kategóriát, és sorolja az alábbi tesztelési megállapításokat az egyes kategóriákba! Kategóriák:
Megállapítások:
A: A program lassú B: Nehéz kezelni a programot C: A program hibás eredményt ad D: Zavaró az ablakok színösszeállítása E: Hiányzik a nyomtatás funkció F: Nem lehet kiválasztani a szükséges adatot G: A rendezés menü nem működik 226/221
B IT M A N
Ellenőrző kérdések 30. 47. Ábrát rajzolunk programmal. Az E betű 1 egységnyi rajzolást jelent, a B betű balrafordulást (rajzolás nélkül), a J betű jobbra fordulást (rajzolás nélkül), a C ciklust: C(művelet, ismétlésszám). A legelső E betű hatására mindig balról jobbra haladva rajzolódik egy egységnyi vonal. Egy kis minta ábra, és programja: EBEC(B,2)C(E,2) A: Mit rajzol ki a következő program: EBC(EJ,2)EBE? B: Mit rajzol ki a következő program: EC(BE,2)C(EJ,3)C(E,2) ? C: Írja meg az egységnyi oldalú négyzet megrajzolásához szükséges legrövidebb programot! 226/222
B IT M A N
Ellenőrző kérdések 29. 48. Jelölje be az összes helyes párosítást! A: Editor – Programszerkesztő B: Bináris kód – Gépi kód C: Fortran – Magas szintű programnyelv D: Interpreter – Fordító
226/223
B IT M A N
226/224
B IT M A N
Felhasznált irodalom IHM: IT – Alapismeretek elektronikus jegyzet Szijártó Miklós: Informatika I. elektronikus jegyzet
Knuth, D.E: A számítógép-programozás
művészete 1-3, Műszaki Könyvkiadó, Budapest, 1987-88. Brian W. Kernighan – Dennis M. Ritchie: A C programozási nyelv, Műszaki Könyvkiadó, 1988 Wirth, N: Algoritmusok + Adatstruktúrák = Programok, Műszaki Könyvkiadó, Budapest, 1982
226/225
B IT M A N
VÉGE 226/226
B IT M A N