Személyes eszközök
Keresés

 

A InfoWiki wikiből


Programozási stílusok

A problémák (megoldandó feladatok) sok esetben hasonlóak. Felfedezhető bizonyos problémaosztályok jelenléte, melyek jól körvonalazhatóak. Ha egy cég dolgozóinak nevét sorba kell rendezni ABC sorrendbe, vagy egy könyvesboltban előforduló kiadványok árait kell rendezni - a megoldás menete ugyanaz. Nem függ az adatok mennyiségétől (10 könyv, 10000 könyv), nem függ a rendezendő adatok milyenségétől (számok, nevek).

A problémaosztályok leírása, a megoldás lépéseinek leírása az Algoritmus tárgy feladata. A programozó akkor tud dolgozni, ha számára már egyértelművé vált a megoldandó feladat mely problémaosztályba tartozik, és milyen lépéssorozat vezet a megoldáshoz.

A programozó feladata, hogy a megoldás lépéssorozatát kódolja. Ehhez választania kell egy programozási nyelvet, és ismervén annak szintaktikai és szemantikai szabályait - a lépéssorozatot le kell írnia.

Érdekes megfigyelni, hogy a programozási nyelvek milyen más-más gondolkodási sémákat várnak el a programozóktól. Ezek képezik a programozási stílusokat.

Imperatív programozási stílus

Az imperatív (tapasztalati) vagy más néven procedurális nyelvek közös jellemzője, hogy a program fejlesztése értékadó utasítások megfelelő sorrendben történő kiadására koncentrálódik. Az értékadó utasítás baloldalán egy változó áll, a jobb oldalán pedig egy megfelelő típusú kifejezés.

A szelekció (elágazás) csak azt a célt szolgálja, hogy bizonyos értékadó utasításokat csak bizonyos esetben kell végrehajtani. A ciklusok pedig azért vannak, hogy valamely értékadó utasításokat többször is végrehajthassunk.

Az értékadó utasítások során a változóinkba részeredményeket számolunk ki – végül megkapjuk a keresett végeredményt.

A = 0
B = 1
C = A+B
D = B+C
E = C+D
F = D+E
kiir F

A fenti kód a Fibonacci számsorozat hatodik elemét számolja ki. A Fibonacci számsorozat első két eleme 0 és 1. A további elemeket mindíg úgy kapjuk meg, hogy az előző (már ismert) két sorozat-elemet összeadjuk, vagyis: 0,1,2,3,5,8,...

A megoldás közben változókat használunk: (A,B,C,D,E,F), melyekbe részeredményeket (a sorozat adott sorszámú elemének értékét) tudjuk eltárolni. Amennyiben már kiszámoltunk egy részeredményt, és eltároltuk egy névvel ellátott változóban, úgy a további számításainkban ezeket a részeredményeket fel tudjuk használni az őket tároló változókra a nevükkel hivatkozva.

Applikatív nyelvek

Az applikatív, más néven funkcionális nyelvek közös jellemzője, hogy egyszerűen nem létezik az értékadás fogalma bennük. Helyette a kiszámolandó kifejezést adjuk meg, megfelelő mennyiségű bemenő adattal. A programozó munkája a kifejezés kiszámításának leírására szolgál. A program futása közben egyszerűen kiszámítja a szóban forgó kifejezést.

Egy funkcionális nyelvben nincs változó, általában nincs ciklus (helyette rekurzió van). Értékadó utasítás sincs, csak függvény visszatérési értékének megadása létezik. A funkcionális nyelvek tipikus felhasználási területének a természettudományos alkalmazások tekinthetőek

Start::Int
Start = Nfib 6
 
Nfib::Int -> Int
Nfib n	
  | n == 1   =  0
  | n == 2   =  1
             = Nfib (n - 1) + Nfib (n - 2) + 1

A program feladata a Start kifejezés eredményének kiértékelése. Ebben a példában ez a feladat az NFib függvény értékének kiszámítása a konkrét 6 értékre.

Az NFib függvény három ággal rendelkezik:

  • ha n paraméter értéke 1, akkor a függvény visszatérési értéke 0
  • ha n paraméter értéke 2, akkor a függvény visszatérési értéke 1
  • egyéb esetekben ki kell számolni az NFib függvény értékét (n-1) és (n-2) értékekre, és a két kiszámított érték összege adja meg a választ

Logikai nyelvek

A logikai nyelveken sem ciklus sem elágazás a hagyományos értelemben nem létezik. Három fő részből állnak:

  • tudásbázis. Ezek egyszerű tények leírását tartalmazzák: a nap keleten kel fel, Lajos 22 éves, Marika vőlegénye Zoltán, Attila nem kedveli Lajost, Lajos felnőtt, stb...
  • igaz állítások: a férfiak kedvelik a nőket, a gyerekek fiatalabbak a felnőtteknél, a gyerekeknek nincs vőlegényük, stb...
  • kérdés: egyetlenegy logikai állítás, mely vagy igaz, vagy hamis értékű lehet: "Lajos gyerek".

A logikai nyelven megírt program egyetlen feladattal bír: a kérdést ki kell értékelni, a benne foglalt állítás igazságát el kell dönteni oly módon, hogy össze kell vetni a tudásbázissal, és az állításokkal. Egy kérdés igaz, ha a tudásbázisbeli tényekből a szabályok (állítások) segítségével levezethető.

A logikai nyelveket szakértői rendszerek fejlesztésére használják.

Objektum-orientált nyelvek

Az OOP nyelveken a program működése egymással kölcsönhatásban álló objektumok működését jelenti. Az objektumok egymás műveleteit aktiválják, melyeket interface-ek írnak le. Ha egy művelet nem végrehajtható, akkor az adott objektum a hívó félnek szabványos módon (kivételkezelés) jelzi a probléma pontos okát.

A probléma megoldása (kódolás) az objektumok fejlesztésével kezdődik. Az objektumok általános módon kerülnek megírásra, ezért hasonló problémák megoldása során általában újrahasznosíthatóak. Egy nagy mennyiségű objektumot kifejlesztett programozócég a következő megoldandó feladatot rövidebb idő alatt (és olcsóbban) képes megoldani, emiatt előnybe kerül más cégekkel. Amennyiben a következő feladat egy már kész programjuk újabb verziójának megírása - természetesen az is könnyedén megy.

Az objektumok mint építőelemek fejlesztése, megosztása más programozókkal, más cégekkel ma már az internetnek köszönhetően nagyon egyszerű és gyors. Az OOP technológia a mai fejlesztések leggyakoribb választása.

Hernyák Zoltán
A lap eredeti címe: „http://wiki.ektf.hu/wiki/Mp1/page007
Nézetek
nincs sb_3.239.109.55 cikk