2013. február 12., kedd

SZF 21 - Programozás módszertan


Programozás módszertan

Algoritmusok
-----------------

- A legrégebbi előkerült algoritmus i.e. IV. század, Euklidész -> két természetes szám közös osztója.

a., Programozás
--------------------

- Mennyiségek, információk közötti kapcsolat közötti leírása és e kapcsolatok kiértékelése, ahol értékeket helyettesítünk nevek helyébe.

Pl.:  x+y

x=2
y=3

2+3=5


Műveletek:

- Minden adaton lehet egyszerű műveleteket végrehajtani.

Pl.: számokra definiált : összeadás, kivonás, szorzás, osztás
-> Egy programozó ezekből az egyszerű műveletekből állítja össze a programot.

Információk

- Az információt adatként írjuk le.

- Több féle adat van:
- Egyszerű (atomi, oszthatatlan) -> pl. számok
- Összetett, mint pl. a számsorozatok
- Az adat tulajdonképpen megmutatja az információt, de fontos, hogy az adat értelmezése ránk van bízva.
Pl: 13,56 -> hőmérséklet, idő, távolság

Programozás gyakorlati megközelítés:
------------------------------------------------
- A problémát felbontjuk egyszerű a számítógép által is megértett lépésekre
- A program: Egy feladat megoldására szolgáló, a számítógép számára értelmezhető utasítássorozat.

Program elemei:

- Bemenet
- Kimenet
- Operátorok, műveletek
- Változók

==> bemeneteken történik meg a művelet és ebből kapjuk meg a kimenetet : bemenet->művelet->kimenet

Fizikálisan bontva:

Bemenetek: 
- billentyűzet
- egér
- fájl
- port (USB, soros, stb)
Kimenet:
- képernyő
- fájl
- port
Változók:
- adatokat változókban tároljuk
Jellemzője:
- Név (egy hely, ahol tárolunk)
- Érték (a tárolt adat)
- Értékadás (adott helyre beteszünk egy adatot)
Adatok (egyszerű)

- Milyen típusú adatokat tudunk tárolni?
- Számok (bináris)
- Egész
- Valós
- Komplex
- Karakterek

--> Ugyanaz az adat többféle képpen is tárolható. Egy szám pl. 1 lehet számadat is és karakter is.

- Származtatott, összetett adatok
- Karakterláncok, string, szöveg
- Vektorok
- Tömbök, mátrixok
- listák
- stb.
--> ezek programnyelvtől függenek

Műveletek, operátorok
- Adatok manipulálása
- Aritmetikai: +,-,*,/
- Relációs műveletek: <=,>, ....
- Logikai: igen, nem, és, vagy

- Műveletek sorrendje

pl.: a=6+12*5

- Általában belról jobbra végezzük el a műveleteket
- Precedencia elve: léteznek olyan műveletek, amelyek elsőbbséget élveznek
- A sorrendet meghatározhatja a zárójelezés is:

a=(6+12)*5
a=6+(12*5)

Program algoritmizálása
-------------------------------

- Egy program több algoritmusból is állhat

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
- Megfelelő outputot eredményez
- Egy feladat megoldására szolgál

Programozás módszertanok áttekintése

1., Monolitikus programozás
- Régi módszer, kb. 60-as években alakult ki
- Jellemzői: egy programozó ír egy programot, programoknak nincsen szerkezete

!!! FONTOS !!!

A jó program legfontosabb kritériumai:

- Jól áttekinthető szerkezete van
- Jól dokumentált
- "Bizonyítható" módon azt csinálja, amit kell

2., Moduláris programozás

- Oszd meg és uralkodj elv!

a., Top-down dekompozíció
- A feladatot részfeladatokra bontjuk, majd azokat további részfeladatokra, míg kezelhető méretű részproblémákhoz nem jutunk.

b., Bottom-up kompozíció
- Szintén részfeladatokat oldunk meg, de előre nem tudható, hogy hogyan fognak kapcsolódni egymáshoz.

Moduláris programozás előnyei:

- Részprogramok könnyen áttekinthetők
- Könnyebben megírható
- Könnyebben tesztelhető
- Több modul írható egyidőben (párhuzamos problémamegoldás)
- Könnyebben javítható
- A modulok szabványosíthatók
- A modulok külön tárolhatók
- Újrafelhasználhatók

Megjegyzés:

Moduláris programozásban előfordulhatnak olyan programozási feladatok, melyek közösek bizonyos modulokban vagy elengedhetetlenek a program futásához, illetve a modulok megfelelő működéséhez. Ezeket a programozási elemeket komponenseknek hívjuk.

Struktúrált programozás

- Top-down dekompozíciót egészít ki
- az eredeti feladat részfeladatra bontása-> keletkezik egy absztrakt program, mely egy absztrakt számítógépen működik és mivel az eredeti nagy specifikációból indulunk ki (tehát nem a részekre szedettből), bizonyíthatóan működik.

Minden algoritmikus program vezérlési szerkezete leírható 3 vezérlőszerkezet segítségével: (Boehm, Jackopini)

1., elágazás
2., döntés
3., ciklus

Mills tovább gondolása alapján:

- Minden program szerkezete egy szekvencia
- Minden szekvencia elemnek egy belépési és egy kilépési pontja lehet
- Minden szekvencia belülről tetszőlegesen struktúrálható.

Az algoritmusok ábrázolása, leírása
--------------------------------------------

1., Pszeudo kód -> Mondatszerű leírás. (Részletes specifikáció)
2., Folyamatábra -> Blokkdiagram
3., Stuktogram -> egy téglalap tagolása, amely a teljes feladat részekre bontását jelenti

Vezérlő szerkezetek

Ugrás
Feltételes elágazás
Többszörös elágazás
Számláló ciklus
Elöltesztelő ciklus
Hátultesztelő ciklus
(Alprogramok)

Ugrás

• A program egy megadott utasítánál folytatódik,
nem a következőnél
• Nehezen követhető struktúrát eredményez
• Nem használjuk!!!

Nincsenek megjegyzések:

Megjegyzés küldése