226
B IT M A N 226/1 v: 2015.09.08 B IT M A N 4. Ea: A lélek Információs technológiák A csak szidható „kézzelfoghatatlan”

Információs technológiákszucs/oktatea/EA15_04_A_lelek.pdf · 226/6 B IT MAN Szoftverek jogállása 1. A számítógépes programokat szerzői jogi törvényvédi (1999. évi LXXVI-os

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

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/10

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/26

Windows vs. MAC

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/35

Ashampoo FireWall

Segédprogramok (2)

B IT MAN226/36

Eset NOD32 Antivirus

Segédprogramok (3)

B IT MAN226/37

Spybot

Segédprogramok (4)

B IT MAN226/38

Sajátgép \ JobbKlikk \ Kezelés

Segédprogramok (5)

B IT MAN226/39

Sajátgép \ JobbKlikk \ Kezelés

Segédprogramok (6)

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/42

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/50

Szemantikai hiba!

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/78

Folyamatábra: Betyárkodás

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/113

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/119

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/128

5GL – Egy természetes nyelv

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/130

Az igazi programozó kódja bináris!

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/154

Fontosabb programnyelvek 3.5

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/156

C C++Pascal Visual Basic JAVA

A programozók csoportosítása

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/191

B IT MAN226/192B IT MAN

Ellenőrző kérdések

Információs technológiák

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/224

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

B IT MAN226/226

VÉGEVÉGE