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)
22
Embed
A programozás alapjai 1. előadásvitez/Progalap1/Progalap01.pdf5 Módszer (eljárás): gépiesen (gondolkodás nélkül) végrehajtható lépések sorozata, amely elvezet a megoldáshoz
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!