a programozás alapjai 1. előadásvitez/progalap1/progalap01.pdf5 módszer (eljárás): gépiesen...
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
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