a programozás alapjai 1. előadásvitez/progalap1/progalap01.pdf5 módszer (eljárás): gépiesen...

22
1 A programozás alapjai 1 1. előadás Híradástechnikai Tanszék A tárgy címe: A programozás alapjai Amiről szó lesz: A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási paradigma, adattípus fogalma, változók Amiről szó lesz: A C programozási nyelv Amiről szó lesz: Kifejezések, kalkuláció verem alkalmazásával, RPN (Reverse Polish Notation), vezérlési szerkezetek (elöl- és hátultesztelő ciklusszervezés, igazságértékre ill. egész típusokra alapozott választásos vezérlésszervezés)

Upload: others

Post on 07-Mar-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

1

A programozás alapjai 1

1. előadás

Híradástechnikai Tanszék

A tárgy címe:

A programozás alapjai

Amiről szó lesz:

A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási paradigma, adattípus fogalma, változók

Amiről szó lesz:

A C programozási nyelv

Amiről szó lesz:

Kifejezések, kalkuláció verem alkalmazásával, RPN (Reverse Polish Notation), vezérlési szerkezetek(elöl- és hátultesztelő ciklusszervezés, igazságértékre ill. egész típusokra alapozottválasztásos vezérlésszervezés)

2

Amiről szó lesz:

A Struktúrált programozás alapjai, top-down és bottom-up programtervezés,programszegmensek, név-, érték-, referencia szerinti paraméterátadás

Amiről szó lesz:

Összetett típusok: halmazok, vektorok, konglomerátumok, szekvenciális és véletlen elérésűadatállományok

Amiről szó lesz:

Klasszikus vektoralgoritmusok: eldöntés, keresés, kiválasztás, leválogatás, rendezés, összefésülés, rekurzió: az elegancia veszélyei, a rekurzió megvalósításánakprocesszor oldali támogatása

Amiről szó lesz:

Dinamikus adatszerkezetek: listák, fák, listák különleges alkalmazásai: sorok, prioritásos sorok, verem, fák tipikus alkalmazásai: K-ágú fák: bináris rendezőfa, bejárás, kiegyensúlyozás,

Amiről szó lesz:

Adatbázisokban alkalmazottadatszerkezetek, több kulcs szerinti rendezett táblák, indexek használata, hash kódolás

Amiről szó lesz:

Az eseményvezérelt(állapotváltozóra alapozott) program modell, adatfeldolgozás,visszalépéses algoritmus, tipikus feladatok

3

Ajánlott irodalom

Benkő TibornéDr. Poppe András

Együtt könnyebba programozás

C

Ajánlott irodalom

N. Wirth

algoritmusok+adatstruktúrák=programok

Ajánlott irodalom

W. Amsbury

Data Structures

from Arraysto Priority Queues

Programozás:

előírni a számítógépnek, hogy mit csináljon

Programozási paradigmák:

azok az elvek, amelyek menténa problémát megközelítjük

Paradigmák:

Imperatív Deklaratív

- struktúrált - logikai- funkcionális

4

számítógép külvilág

processzor

memória

perifériák

regiszterek

műveletvégzőegység

processzor

adatok

végrehajthatókód

memória

háttér tárolók

ember-gépkapcsolateszközei

perifériák

számítógép külvilág

processzor

memória

perifériák

Algoritmus:

gépiesen (gondolkodás nélkül) végrehajtható lépések véges sorozata, amely elvezet a megoldáshoz

5

Módszer (eljárás):

gépiesen (gondolkodás nélkül) végrehajtható lépések sorozata, amely elvezet a megoldáshoz

Mielőtt az algoritmust kódolni kezdjük,meg kell győződni róla, hogy

helyes, teljes és véges

Valóban azt a feladatot oldja meg, amire szánjuk.Minden lehetséges esetben megoldja.

Véges sok lépésben befejeződik.

Nem elég kipróbálni, bizonyítani kell!

Példa:

Egy szám köbgyökét úgykapjuk, ha elosztjuk 4-gyel.

Próba:

8 : 4 = 22 · 2 · 2 = 8

1 kísérlet nem kísérlet!

-8 : 4 = -2-2 · -2 · -2 = -8

Na még egyet!

12 : 4 = 33 · 3 · 3 = 27

6

7

8

9

10

11

12

13

14

15

16

17

A kezelhetetlen probléma definíciója

- Azok a problémák amelyek a futási időtekintetében a feladat méreténekexponenciális függvényével jellemezhetők,

vagy

- Memória szükséglet tekintetébenpolinomiálisak

számítástechnikai szempontból kezelhetetlenek

18

Algoritmusok kódolása:

STRUKTÚRÁLATLAN és STRUKTÚRÁLTeszközökkel

Gépközeli programozás:

Struktúrálatlan és struktúrált eszközökegyaránt megengedettek

Magas szintű nyelvi programozás:

Struktúrálatlan eszközök kerülendők

A nyelvek használatukat lehetővé teszik

(= tartalmaznak olyan elemeket,amelyek segítségévelszükség esetén megvalósíthatók)

Magas szintű nyelvi programozás:

Struktúrált eszközökből építkezünk

A nyelvek használatukat támogatják

(= olyan elemeket tartalmaznak,amelyek a megvalósítástközvetlenül elősegítik)

A programok építőkockái:

ELEMI TEVÉKENYSÉG

A programok építőkockái:

ÖSSZETETT TEVÉKENYSÉG

19

A programok építőkockái:

ÖSSZETETT TEVÉKENYSÉG KIFEJTÉSE

A programok építőkockái:

DÖNTÉSI PONT

Megvalósulás a processzor utasításkészletében:

SZUBRUTIN HÍVÁS

Megvalósulás a processzor utasításkészletében:

SZUBRUTIN

BELÉPÉSI PONT

VISSZATÉRÉS

Megvalósulás a processzor utasításkészletében:

FELTÉTELES VEZÉRLÉSÁTADÁS

AZ ÁLLAPOTSZÓEGY BITJE SZERINT

A struktúrált programok építőkockái:

TEVÉKENYSÉG

BELSŐ STRUKTÚRÁJA LEHET !

20

A struktúrált programok építőkockái:

?

A struktúrált programok építőkockái:

SZEKVENCIA

A struktúrált programok építőkockái:

ELÖL TESZTELŐ CIKLUS

A struktúrált programok építőkockái:

HÁTUL TESZTELŐ CIKLUS

A struktúrált programok építőkockái:

IGAZSÁGÉRTÉKRE ALAPOZOTT VÁLASZTÁS

A struktúrált programok építőkockái:

EGÉSZ TÍPUSRA ALAPOZOTT VÁLASZTÁS

21

A struktúrált programok építőkockái:

EGÉSZ TÍPUSRA ALAPOZOTT VÁLASZTÁS

α λβ

X

tevékenység1 tevékenység2 tevékenység11

A struktúrált programok építőkockái:

IGAZSÁGÉRTÉKRE ALAPOZOTT VÁLASZTÁS

X = α

tevékenység1

A struktúrált programozás alaptétele:

Minden algoritmusnak létezikstruktúrált programja

Az algoritmus leírásábanmegengedett elemek:

elemi tevékenységszekvenciaelágazás (döntés függvényében)becsatlakozás

A struktúrált program leírásábanmegengedett elemek:

elemi tevékenységszekvenciaciklus (elöl- és hátultesztelő)választás (igazságértékre alapozott)

Ekvivalens átalakításokkal mindenegy bemenetű és egy kimenetűgráf megengedett alakra hozható.

22

Matematikai értelemben nem teljesenkorrekt, de elfogadott a következőszemléletes bizonyítás.

A problémát a struktúlálatlanvezérlésátadások okozzák.

Vezessünk be egy segédváltozót!A program kezdetekor állítsuk nullára!Minden becsatlakozást számozzunk meg!Amikor számozott ponthoz érkezünk,

állítsuk be a változó értékét, és a tevékenységet hagyjuk abba!

Ciklusban keressük a folytatás helyét,és mindig a kívánt ágat hajtsuk végre!

Példa:

A

B

C

N← →Y

Példa:

A

B

C

N← →Y Példa:

X ← 0

X

X ← 1 X ← 3X ← 1 X ← 2 X ← 2

X<3

0 1 2

C BA

N← →Y