információs technológiákszucs/oktatea/ea15_04_a_lelek.pdf · 226/6 b it man szoftverek...
TRANSCRIPT
B IT MAN226/1 v: 2015.09.08B IT MAN
4. Ea: A lélek
Információs technológiák
A csak szidható „kézzelfoghatatlan”
B IT MAN226/2
Felhasználói programok
Ellenőrző kérdések
Segédprogramok
Szoftver alapok
Operációs rendszerek
Programfejlesztő eszközök
Témakörök
B IT MAN226/3
A szoftver:
Több, különböző célra megírt program összessége
Csoportosítás funkció szerint:
– Rendszerszoftverek - Operációs rendszerek
– Felhasználói programok
– Segédprogramok
– Programfejlesztő eszközök – Programozási
nyelvek
A szoftver
B IT MAN226/4
H A R D V E R
Operációs rendszer
Alkalmazói
programok
A hardver és a szoftver kapcsolata
Segéd-
programok
Programfejlesztő
eszközök
B IT MAN226/5
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
B IT MAN226/6
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éshatá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.
B IT MAN226/7
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.
B IT MAN226/8
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…)
B IT MAN226/9
Felhasználói programok
Ellenőrző kérdések
Segédprogramok
Szoftver alapok
Operációs rendszerek
Programfejlesztő eszközök
Témakörök
B IT MAN226/11
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é.
Operációs rendszerek
Operációs
rendszer
Alkalmazások
Felhasználók
HARDVER
B IT MAN226/12
Az operációs rendszer részei
CPU Memória Eszközök
Kernel
Alkalmazások
Kernel: Rendszermag
Processzor kezelés
Memória kezelés
Eszközkezelés
API – Alkalmazói programozói interfész
A programok hogyan vehetik igénybe a kernel szolgáltatásait
Shell: Rendszerhéj
Kapcsolattartás a felhasználóval
API Shell
B IT MAN226/13
Betöltődés – Bootolás
1. 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
B IT MAN226/14
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
Operációs rendszerek feladatai
B IT MAN226/15
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ő)
Operációs rendszerek osztályozása (1)
B IT MAN226/16
A felhasználó és a számítógép közötti kapcsolattartás
alapján:
Operációs rendszerek osztályozása (2)
Kötegelt (batch) feldolgozás,
Interaktív feldolgozás
szöveges üzemmód,
menüs vezérlés,
grafikus felületű kezelés
B IT MAN226/17
A rendszer tárolása és indítása alapján:
Operációs rendszerek osztályozása (3)
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)
B IT MAN226/18
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
B IT MAN226/19
UNICS
UNIX
Atari játékgépek
Commodore 64
DOS
ZX Spectrum
Novell NetWare
Mac System 1
Windows 1.0
IBM OS/2
Windows 3.1
Operációs rendszerek megjelenése
1985
1984
1969
1973
1992
1981
1980
1976
1982
FreeBSD 1.0
Linux 1.0
Windows NT 3.5
Windows 95
Windows CE
Suse Linux
Windows XP
Ubuntu Linux
Windows Vista
Windows 7
Windows 8
Windows 10
1994
1995
1987
1994
1996
1993
1983
2000
2004
2001
2006
2009
2012
2015
B IT MAN226/20
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
Operációs rendszerek – Unix család
B IT MAN226/21
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
Operációs rendszerek – Unix család
B IT MAN226/22
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
Operációs rendszerek – Linux család
B IT MAN226/23
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.
Operációs rendszerek – DOS
B IT MAN226/24
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
Operációs rendszerek – Windows
B IT MAN226/25
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
Operációs rendszerek – Mac OS
B IT MAN226/27
Felhasználói programok
Ellenőrző kérdések
Segédprogramok
Szoftver alapok
Operációs rendszerek
Programfejlesztő eszközök
Témakörök
B IT MAN226/28
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…
B IT MAN226/29
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
– …
B IT MAN226/30
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
Felhasználói programok (3)
B IT MAN226/31
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
Felhasználói programok (4)
B IT MAN226/32
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!
Felhasználói programok (5)
B IT MAN226/33
Felhasználói programok
Ellenőrző kérdések
Segédprogramok
Szoftver alapok
Operációs rendszerek
Programfejlesztő eszközök
Témakörök
B IT MAN226/34
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
Segédprogramok (1)
B IT MAN226/40
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)
Segédprogramok (7)
B IT MAN226/41
Felhasználói programok
Ellenőrző kérdések
Segédprogramok
Szoftver alapok
Operációs rendszerek
Programfejlesztő eszközök
Témakörök
B IT MAN226/43
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Algoritmus alapfogalmak
A strukturált programozás alapjai
Programtervezési módszerek
A programkészítés alapjai
Alapalgoritmusok
B IT MAN226/44
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.
B IT MAN226/45
A programfejlesztés lépései
Specifikáció elkészítése
Algoritmus elkészítése
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
STOP
START
Igen
Nem
Be: Specifikáció
Algoritmus készítés
Kódolás
Tesztelés
Van hiba a
programban?
Dokumentáció készítés
Fordítás, végrehajtás
B IT MAN226/46
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.
B IT MAN226/47
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.
B IT MAN226/48
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.
B IT MAN226/49
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.
B IT MAN226/51
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”)
B IT MAN226/52
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:
– 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 MAN226/53
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
B IT MAN226/54
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
B IT MAN226/55
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Algoritmus alapfogalmak
A strukturált programozás alapjai
Programtervezési módszerek
A programkészítés alapjai
Alapalgoritmusok
B IT MAN226/56
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.
B IT MAN226/57
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.
B IT MAN226/58
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.
B IT MAN226/59
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 2.rész 3.rész
A B C D E I
Nagy, összetett programok
esetén hatékony megoldás!
HGF
B IT MAN226/60
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.
B IT MAN226/61
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).
B IT MAN226/62
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.
B IT MAN226/63
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 Műveletek
B IT MAN226/64
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.
B IT MAN226/65
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
B IT MAN226/66
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.
B IT MAN226/67
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.
Adatok Metódusok
Objektum Adatok Metódusok
Objektum
Adatok Metódusok
Objektum
Adatok Metódusok
Objektum
B IT MAN226/68
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Algoritmus alapfogalmak
A strukturált programozás alapjai
Programtervezési módszerek
A programkészítés alapjai
Alapalgoritmusok
B IT MAN226/69
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.
B IT MAN226/70
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.
B IT MAN226/71
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
B IT MAN226/72
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!
B IT MAN226/73
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.
B IT MAN226/74
Pszeudokód – mondatszerű leírás 2.
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 MAN226/75
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.
B IT MAN226/76
Folyamatábra elemek
START
STOP
Be: A,B S:=3*A/(B+2)
N>IIgen Nem
Ki: C
K:=0 K:=I
Ciklus 1-től 5-ig
Be: A[i]
B IT MAN226/77
Folyamatábra – Tojásfőzés
START
Tégy fel vizet forrni
Vedd elő a tojásokat
Forr a víz?
Igen
Nem
Figyeld a vizet
Tedd vízbe a tojásokat
1
1
Ciklus 1-től 5-ig
Nézd az órát
Vedd ki a tojásokat
Törd fel a tojásokat
IgenSósan szereted?
Sózd meg
Edd meg a tojásokat
Nem
STOP
B IT MAN226/79
Struktogram elemek
Be: A
Ki: S
utasítás
feltételIgaz Hamis
utasítás utasítás
feltétel
ciklusmag
feltétel
ciklusmag
Elöl tesztelő
ciklus
Hátul tesztelő
ciklus
szelekció
B IT MAN226/80
Struktogram – Tojásfőzés
i := 1 . . 5
Tedd vízbe a tojásokat
Nézd az órát
Tégy fel vizet forrni
Vedd elő a tojásokat
Figyeld a vizet
Forr a víz?
Vedd ki a tojásokat
Törd fel a tojásokat
Sósan szereted?
Sózd meg
IgenNem
Edd meg a tojásokat
B IT MAN226/81
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Algoritmus alapfogalmak
A strukturált programozás alapjai
Programtervezési módszerek
A programkészítés alapjai
Alapalgoritmusok
B IT MAN226/82
Programfejlesztő eszközök
Elágazások, ciklusok
Adatszerkezetek
A strukturált programozás alapjai
Adatok, változók
Értékadás, kifejezések
Operátorok
B IT MAN226/83
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
B IT MAN226/84
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
– Tömb, karakterlánc, rekord, állomány
B IT MAN226/85
Változók
Típus Pascal C Értelmezési tartomány
Egész Integer Int -32768 .. +32767
Hosszú egész Longint Long -2,1milliárd .. +2,1milliárd
Valós Real Float ±2*1038, pontosság: 8 bit
Valós Double Double ±5*10320, pontosság: 16 bit
Karakterlánc String Char[n] Pascal: 255 karakter
C: Long méret
Logikai Boolean – true vagy false
B IT MAN226/86
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.
B IT MAN226/87
Programfejlesztő eszközök
Elágazások, ciklusok
Adatszerkezetek
A strukturált programozás alapjai
Adatok, változók
Értékadás, kifejezések
Operátorok
B IT MAN226/88
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.
B IT MAN226/89
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
B IT MAN226/90
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;
B IT MAN226/91
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.
Int A=10;
Int *M;
M=&A;
Kiír: *M;
10
*M= *M+3;
Kiír: A;
13
M egy mutató
M A-ra mutat
A egy egész, értéke 10
Azt a változót, amire M mutat, növelem 3-al.
B IT MAN226/92
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étre-
hozni, 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.
B IT MAN226/93
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.
B IT MAN226/94
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.
B IT MAN226/95
Á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.
B IT MAN226/96
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
Berak Kivesz
ABC
C, B, A C, B, A
B IT MAN226/97
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
A
B
C
C, B, A A, B, C
Berak Kivesz
B IT MAN226/98
Programfejlesztő eszközök
Elágazások, ciklusok
Adatszerkezetek
A strukturált programozás alapjai
Adatok, változók
Értékadás, kifejezések
Operátorok
B IT MAN226/99
É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
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 !
Időbeliség!
B IT MAN226/100
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 (+).
B IT MAN226/101
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.
B IT MAN226/102
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ól-
balra.
B IT MAN226/103
Programfejlesztő eszközök
Elágazások, ciklusok
Adatszerkezetek
A strukturált programozás alapjai
Adatok, változók
Értékadás, kifejezések
Operátorok
B IT MAN226/104
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):
– 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 MAN226/105
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.
B IT MAN226/106
Operátorok 3.
Példa1:
3+2*4-4/2*3
– lépés 1.: legmagasabb precedenciájú a *, /, , balról-
jobbra é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
B IT MAN226/107
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ól-jobbra 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!
B IT MAN226/108
Operátorok 5.
– (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
Kiindulás: 5-((5+3)/(2*4)+2)-1
B IT MAN226/109
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
B IT MAN226/110
Relációs operátorok
Fontos: mindig a bal oldalról mondunk véleményt!
< kisebb <= kisebb egyenlő
= egyenlő <> nem egyenlő
> nagyobb >= 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
B IT MAN226/111
Logikai „és”
Jele: AND
Jelentése: Az összetett állítás
akkor igaz, ha mindkét állítás
igaz.
Logikai operátorok 1.
Logikai „nem” - tagadás
Jele: NOT
Jelentése: Igazból hamisat,
hamisból igazat képez.
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 MAN226/112
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.
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 MAN226/114
Logikai operátorok 3.
Példák 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 MAN226/115
Programfejlesztő eszközök
Elágazások, ciklusok
Adatszerkezetek
A strukturált programozás alapjai
Adatok, változók
Értékadás, kifejezések
Operátorok
B IT MAN226/116
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.
feltételigaz hamis
utasítás -
feltétel
igaz
hamis
utasítás
B IT MAN226/117
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.
feltételigaz hamis
utasítás-i
feltétel
igaz hamis
utasítás-h utasítás-i utasítás-h
B IT MAN226/118
Többágú feltételes elágazás
– 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.
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
. . . . . .
utasítás1
utasítás2
utasításN
feltétel1
feltétel2
feltételN
utasítás0
B IT MAN226/120
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.
feltétel
igaz
hamis
utasítások
feltétel
ciklusmag
B IT MAN226/121
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!
igaz
hamis
utasítások
feltétel
ciklusmag
feltétel
B IT MAN226/122
Számláló ciklus
ciklus i= 1..N
utasítások
ciklus vége
– 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.
i= 1..N
ciklusmag
i=1..5
utasítások
igaz
hamis
B IT MAN226/123
Visszafelé számláló ciklus
ciklus i= N..1
visszafelé
utasítások
ciklus vége
– 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.
i= N..1
ciklusmag
i=5..1
utasítások
igaz
hamis
B IT MAN226/124
Egymásba ágyazott ciklusok
i=1..3
h
17 82 6 47 33
26 18 3 7 66
13 43 60 25 20
Be: A[i,j]
j=1..5
i
i
h
Mátrix beolvasásaj
ii=1
Be: A[i,j]
j=1
j<5
j=j+1
i<3
i=i+1
B IT MAN226/125
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Algoritmus alapfogalmak
A strukturált programozás alapjai
Programtervezési módszerek
A programkészítés alapjai
Alapalgoritmusok
B IT MAN226/126
A programkészítés alapjai
A programkészítés menete
A strukturált programozás alapjai
A programozás kialakulása
Programnyelv ABC
B IT MAN226/127
Programnyelv generációk
1GL: Gépi kód
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
Generation Language
B IT MAN226/129
Gépi kód
Műveleti kód Címrész
A műveletben részt vevő adatok helyének
kódja
00111000 10101110 1010101011000110
Összeadás Első szám
helye
Második
szám
helye
Eredmény
helye
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.
B IT MAN226/131
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.
Assembler
MOV
PUSH
PUSH
ADD
CALL
0401C8
0401CA
0401CC
0401D0
0401D4
esp,4
eax,eax
edx
esp,1
esp,8
0111011001101010
1001101010100110
1010110110011010
1101100110101010
1101011001100100
B IT MAN226/132
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
B IT MAN226/133
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
B IT MAN226/134
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!
B IT MAN226/135
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
B IT MAN226/136
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")
B IT MAN226/137
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
B IT MAN226/138
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.
B IT MAN226/139
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
B IT MAN226/140
A programkészítés alapjai
A programkészítés menete
A strukturált programozás alapjai
A programozás kialakulása
Programnyelv ABC
B IT MAN226/141
A programkészítés menete 1.
Elkészítjük a program forráskódját
Szövegszerkesztő
(editor)
Ez egy (esetleg több) szövegfájl
A file kiterjesztése általában utal
a használt programozási nyelvre.
Pl.:
proba.c
Ehhez egy szövegszerkesztő
programot használunk
# include
<stdio.h>
void main ( )
{
printf
(”Helló
Világ! \n”);
}
B IT MAN226/142
A programkészítés menete 2.
Fordító-
program
Lefordítjuk a programot a
fordítóprogrammal (compiler)
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
Szövegszerkesztő
(editor)
# include
<stdio.h>
void main ( )
{
printf
(”Helló
Világ! \n”);
}
1CF7 B00C
37DA 4107
FAC4 660D
00F1 300BD
1FF0 35BB
337DD 239C
410F 396A
C44D 006A
B IT MAN226/143
A programkészítés menete 3.
A tárgykódú modulokhoz hozzá-
vesszük a könyvtári modulokat
A linker összeszerkeszti
A végeredmény a futtatható (exe) program
Fordító-
program
Szövegszerkesztő
(editor)
# include
<stdio.h>
void main ( )
{
printf
(”Helló
Világ! \n”);
}
1CF7 B00C
37DA 4107
FAC4 660D
00F1 300BD
1FF0 35BB
337DD 239C
410F 396A
C44D 006A
410F 396D
5CF3 B00A
3CDA 4107
FAC4 660D
00F1 300BD
CCD4 BAF0
337DD 239C
33F5 0B6A
Linker
10011110
11000011
10101100
10111000
00101100
10010010
10010000
01111011
B IT MAN226/144
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.
B IT MAN226/145
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
B IT MAN226/146
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.
B IT MAN226/147
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.)
B IT MAN226/148
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.
B IT MAN226/149
A programkészítés alapjai
A programkészítés menete
A strukturált programozás alapjai
A programozás kialakulása
Programnyelv ABC
B IT MAN226/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#
A programozási nyelvek megjelenése
1960
1970
1987
1964
1971
1954
1959
1995
1995
1983
1995
2001
B IT MAN226/151
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
B IT MAN226/152
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.
B IT MAN226/153
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
B IT MAN226/155
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.
B IT MAN226/157
Programfejlesztő eszközök
A szoftverfejlesztés alapjai
Algoritmus alapfogalmak
A strukturált programozás alapjai
Programtervezési módszerek
A programkészítés alapjai
Alapalgoritmusok
B IT MAN226/158
Programfejlesztő eszközök
Összefésülés
Megszámlálás
Alapalgoritmusok
Összegzés
Kiválasztás
Kiválasztásos rendezés
Szétválogatás
B IT MAN226/159
Feladat: Adott egy számhalmaz, határozzuk meg a számok
összegét.
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.
Összegzés
7 15 13 5 9 49
B IT MAN226/160
Ö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
B IT MAN226/161
Összegzés
i = 1 .. n
s = 0
s = s + A[ i ]
Be: n
i = 1 .. n
Be: A [ i ]
Ki: s
Tömb elemszámának beolvasása
Tömbelemek beolvasása
Összeg változó (s) kinullázása
Eredmény kiírása
Összegzés
Struktogram:
B IT MAN226/162
Összegzés
START
Be: n
i = 0
i= i + 1
Be: A[ i ]
i < n
1
Igen
Nem
1
s = 0i = 0
i= i + 1
s= s + A [ i ]
i < nIgen
Nem
Ki: s
STOP
n: elemek száma
i: ciklusváltozó
A: elemek tömbje
s: összeg
B IT MAN226/163
Programfejlesztő eszközök
Összefésülés
Megszámlálás
Alapalgoritmusok
Összegzés
Kiválasztás
Kiválasztásos rendezés
Szétválogatás
B IT MAN226/164
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
Megszámlálás
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.
7 15 13 5 9 3
B IT MAN226/165
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
i = 1 .. n
db = 0
Be: n
i = 1 .. n
Be: A [ i ]
Ki: db
A[i] < 10
db=db+1
Igen Nem
Struktogram:
B IT MAN226/166
1
db = 0i = 0
i= i + 1
db = db + 1
i < n
Igen
Nem
Ki: db
STOP
A[i] < 10
Igen
Nem
Megszámlálás
db: darabszámSTART
Be: n
i = 0
i= i + 1
Be: A[ i ]
i < n
1
Igen
Nem
B IT MAN226/167
Programfejlesztő eszközök
Összefésülés
Megszámlálás
Alapalgoritmusok
Összegzés
Kiválasztás
Kiválasztásos rendezés
Szétválogatás
B IT MAN226/168
Feladat: Adott egy számhalmaz, és egy feltétel. Határozzuk
meg, hogy melyik adat tesz eleget leginkább a feltételnek.
7 15 13 5 5
Feltétel: a legkisebb szám
Kiválasztás
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.
Eredmény: a MIN változó értéke.
B IT MAN226/169
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
i = 2 .. n
m = A [1]
Be: n
i < n
Be: A [ i ]
Ki: m
A[i] < m
m=A [i]
Igen Nem
Struktogram:
B IT MAN226/170
Kiválasztásm: legkisebb elem
START
Be: n
i = 0
i= i + 1
Be: A[ i ]
i < n
1
Igen
Nem
1
i= i + 1
i < n
Igen
Nem
Ki: m
STOP
A[i] < m
Igen
Nem
m=A [1]i = 1
m = A [i]
B IT MAN226/171
Programfejlesztő eszközök
Összefésülés
Megszámlálás
Alapalgoritmusok
Összegzés
Kiválasztás
Kiválasztásos rendezés
Szétválogatás
B IT MAN226/172
Feladat: Adott egy számhalmaz, és valamilyen rendezési
szempont (rendezési kulcs). Rendezzük sorba az adatokat.
Szempont: növekvő sorrend
Kiválasztásos rendezés
7 15 13 5 5 7 13 15
B IT MAN226/173
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, …
B IT MAN226/174
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
B IT MAN226/175
Kiválasztásos rendezés
Csere:
8 3
8 3 8
3 83
83 8
Kiindulás:
1. lépés:
Végeredmény:
A B C
2. lépés:
3. lépés:
83 8
C = A
A = B
B = C
B IT MAN226/176
Kiválasztásos rendezés
7 15 13 5Kiindulás:
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 15 135 7 Csere
j=4 15 Csere5 13 7
i=3, j=4 135 7 Csere15
7 15135Végeredmény:
B IT MAN226/177
Kiválasztásos rendezés
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]
c2-vége
i = 1 .. n-1
m = A [1]
Be: n
i = 1 .. n
Be: A [ i ]
c=A[i]A[i]=A[ j]A[ j]=c
j = i+1 .. n
A[ j]<A[i]Igen Nem
i = 1 .. n
Ki: A [i]
Struktogram:Pszeudokód:
B IT MAN226/178
1
i = 1
j = i + 1
c = A [i]A[i] = A[ j]A[ j] = c
j < n
Igen
Nem STOP
A[ j]<A[i]
Igen
Nem
Rendezés
c: segédváltozó
j = j+1
i = i+1
i < n-1Igen
Nem
2
i = 0
i= i + 1
Ki: A[ i ]
i < nIgen
Nem
2START
Be: n
i = 0
i= i + 1
Be: A[ i ]
i < n
1
Igen
Nem
B IT MAN226/179
Programfejlesztő eszközök
Összefésülés
Megszámlálás
Alapalgoritmusok
Összegzés
Kiválasztás
Kiválasztásos rendezés
Szétválogatás
B IT MAN226/180
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
5 7 10 13 15 20
Összefésülés
B IT MAN226/181
Ö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.
B IT MAN226/182
Ö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
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 MAN226/183
1
Összefésülés
2
START
Be: n
i = 0
i= i + 1
Be: A[ i ]
i < n
1
Igen
Nem
Be: m
i = 0
i= i + 1
Be: B[ i ]
i < mIgen
Nem
2
i = 0j = 1k = 1
i = i + 1
Igen
Nem
A[ j]<B[k]Nem
Igen
3
C[i]=A[ j]j = j+1
C[i]=B[k]k = k+1
i < n+m
B IT MAN226/184
Összefésülés
STOP
i = 0
i= i + 1
Ki: C[ i ]
i < n+mIgen
Nem
3
i = 1 .. n+m
j = 1, k = 1
Be: n
i = 1 .. n
Be: A [ i ]
A[ j]<B[k]
C[i]=A[ j]
j = j+1
Igen Nem
Be: m
i = 1 .. m
Be: B [ i ]
C[i]=B[k]
k = k+1
i = 1 .. n+m
Ki: C[ i ]
B IT MAN226/185
Programfejlesztő eszközök
Összefésülés
Megszámlálás
Alapalgoritmusok
Összegzés
Kiválasztás
Kiválasztásos rendezés
Szétválogatás
B IT MAN226/186
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
Feltétel: páros és páratlan számok
10 14 20
5 7 15
Szétválogatás
B IT MAN226/187
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.
B IT MAN226/188
Szétválogatás
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
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
Pszeudokód:
B IT MAN226/189
Szétválogatás
START
Be: n
i = 0
i= i + 1
Be: A[ i ]
i < n
1
Igen
Nem
1
i = 0j = 1k = 1
i = i + 1
Igen
Nem
A[i] mod 2=0Nem
Igen
2
B[ j]=A[ i]j = j+1
C[k]=A[ i]k = k+1
i < n
i = 0
i= i + 1
Ki: B[ i ]
i < j-1Igen
Nem
2
3
B IT MAN226/190
Szétválogatás
STOP
i = 0
i= i + 1
Ki: C[ i ]
i < k-1Igen
Nem
3
i = 1 .. n
j = 1, k = 1
Be: n
i = 1 .. n
Be: A [ i ]
A[i] mod 2=0
B[ j]=A[i]
j = j+1
Igen Nem
C[k]=A[i]
k = k+1
i = 1 .. j-1
Ki: B[ i ]
i = 1 .. k-1
Ki: C[ i ]
B IT MAN226/193
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
B IT MAN226/194
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
B IT MAN226/195
Ellenőrző kérdések 3.
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
5. Írja a vonalak fölé a megfelelő fogalmakat!?
Programnév.c
B IT MAN226/196
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:
B IT MAN226/197
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ő D: A és B csoportra
B: Táblázatkezelő E: B és C csoportra
C: Adatbázis-kezelő F: C és D csoportra
9. Melyik alkalmazói programcsoportra jellemzőek a következő kifejezések: rekord, jelentés ?
A: Szövegszerkesztő D: A és B csoportra
B: Táblázatkezelő E: B és C csoportra
C: Adatbázis-kezelő F: C és D csoportra
B IT MAN226/198
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.
B IT MAN226/199
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ő
B IT MAN226/200
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
B IT MAN226/201
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
B IT MAN226/202
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
B IT MAN226/203
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ó
Ellenőrző kérdések 11.
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
B IT MAN226/204
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.
A magas szintű nyelv gépi kódja az assembly.
B IT MAN226/205
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
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
B IT MAN226/206
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.
Ellenőrző kérdések 14.
B IT MAN226/207
Ellenőrző kérdések 15.
Igen
Nem
a < 5Igen Nem
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
START
be: a
s=3
a= a+1 s= s+a
s < 12
ki: a, s
s= s+3
STOP
B IT MAN226/208
26. Mikor jelent meg az első magas szintű
programnyelv?
A: 1944
B: 1954
C: 1964
D: 1974
Ellenőrző kérdések 16.
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
B IT MAN226/209
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)
B IT MAN226/210
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
Ellenőrző kérdések 18.
31. Melyik adatszerkezet valósítja meg a FIFO elvet?
A: Sor
B: Verem
C: Struktúra
D: Állomány
B IT MAN226/211
32. Melyik adatszerkezeten értelmezhető az
& és a * művelet?
A: String
B: Tömb
C: Struktura
D: Mutató
Ellenőrző kérdések 19.
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
B IT MAN226/212
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.
B IT MAN226/213
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: Típusok:
A: Int E: Real
B: Állomány F: String
C: Rekord G: Tömb
D: Long H: Double
B IT MAN226/214
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
Ellenőrző kérdések 22.
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
B IT MAN226/215
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:
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!
Ellenőrző kérdések 23.
EBEBBEE
B IT MAN226/216
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.
Ellenőrző kérdések 24.
B IT MAN226/217
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.
Ellenőrző kérdések 25.
B IT MAN226/218
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
i = 1 .. n
s = 4, n = 5
Ki: s
s < 10
s=s+n
Igen Nem
s=s+i
B IT MAN226/219
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.
Ellenőrző kérdések 27.
B IT MAN226/220
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)
Ellenőrző kérdések 28.
45. Mely önálló elemekből épül fel egy folyamatábra?
A: Adatbevitel D: Adatkivitel
B: Szelekció E: Kezdőpont, végpont
C: Művelet F: Iteráció
B IT MAN226/221
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
B IT MAN226/222
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:
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!
Ellenőrző kérdések 30.
EBEC(B,2)C(E,2)
B IT MAN226/223
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ó
B IT MAN226/225
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
Felhasznált irodalom