Programozás # 1
Programozás Program = egy feladat megoldására szolgáló, a számítógép számára értelmezhető utasítássorozat. ADATOK
PROGRAM
EREDMÉNY
A programkészítés lépései 1. A feladat meghatározása • A cél kitűzése • A kimenetek (jelentések, kimutatások, …) elemzése • A bemenetek (űrlapok, számlák, …).meghatározása
2. Programtervezés (SPECIFIKÁCIÓ) • • • •
Menüszerkezet Képernyőtervek Adatszerkezetek Algoritmusok elkészítése
3. Kódolás (PROGRAMOZÁS) • Programnyelv generációk (GENERATION LANGUAGE) 1GL: gépi kód 2GL: assembly (MNEMONIC) 3GL: magasszintű procedurális utasítás-orientált (BASIC, PASCAL) kifejezés-orientált (C) 4GL: probléma-orientált nyelvek funkcionális (LISP) logikai (PROLOG) adatbázis-kezelő (SQL) objektum-orientált (C++, JAVA) 5GL: természetes nyelvek • Fordítás: A fordítóprogram (COMPILER) a forrásprogramot gépi kódra fordítja. Utána a program futtatásához se a forráskód, se a fordító nem kell. • Értelmezés: Az értelmező program (INTERPRETER) a forrásprogramot utasításonként értelmezi és hajtja végre minden futáskor, így a program végrehajtása lassabb lesz.
FORDÍTÓ
Gépi kódú program
Forrásprogram ÉRTELMEZŐ
Végrehajtás
4. Tesztelés 5. Dokumentálás (FELHASZNÁLÓI ÉS FEJLESZTŐI KÉZIKÖNYV)
Futtatás
Programozás # 2
Algoritmusok Algoritmus = egy feladat megoldására szolgáló lépéssorozat Az algoritmus jellemzői 1. 2. 3. 4. 5. 6.
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 adekvát output halmazt eredményez (az adatok meghatározzák az eredményt) egy feladatosztály megoldására szolgál
Algoritmusok tervezése Modularitás - Önálló részfeladatokra bontás, egymástól független elkészítés, kapcsolódás, adatelrejtés Top-down tervezés - Lépésenkénti finomítás Bottom-up tervezés - Alulról felfelé építkezés kész modulokból Strukturált programozás - Egy algoritmus a következő elemekből építhető fel: • Szekvencia: Egymás után végrehajtandó tevékenységek sorozata. • Szelekció: Adott tevékenységek közötti választás. • Iteráció: Adott tevékenységek többszöri ismételt végrehajtása. • Feltétel nélküli ugrás: A vezérlés átadása a program egy másik pontjára.
Áttekinthetőbb program, Dijkstra, Böhm és Jacopini tétele
Algoritmus leíró eszközök 1. Pszeudokód Mondatszerű leírás. 2. Folyamatábra Blokkdiagram. 3. Struktogram Egyetlen téglalap tagolása, amely a teljes feladat részekre bontását jelenti. Felülről lefelé történő tervezés, strukturált programozási stílus. 4. Jackson-ábra Szerkezeti ábra. A vezérlőszerkezeteteket ábrázoló téglalapok kifejtése külön téglalapokban történik.
Programozás # 3
Folyamatábra Program eleje START
Bevitel Be: változó(k)
Kivitel Ki: változó(k)
Tevékenység tevékenység
Elágazás I
H feltétel
Címke C C Program vége
STOP
Programozás # 4
Programszerkezetek Szekvencia tevékenység1 tevékenység2 Szelekció Egyágú szelekció
feltétel
Kétágú szelekció
I
tevékenység
tev2
H
felt
I tev1
H
Iteráció Elöltesztelő ciklus
Hátultesztelő ciklus
tevékenység feltétel
I
tevékenység feltétel
H
H
Növekményes ciklus
i := 1 vált := tól .. ig
tevékenység
i
I
tevékenység i := i + 1
I
Programozás # 5
Példa folyamatábrára FELADAT: Két természetes szám osztási maradéka
START
Be: a, b
a∈N ∧ b∈N
H
I m := b mod a
H
a>b
Ki: m
STOP
I
m := a mod b
Programozás # 6
Struktogram Program eleje Modulnév
Bevitel Be: változó(k)
Kivitel Ki: változó(k)
Tevékenység tevékenység Elágazás
I
feltétel
tevékenység1
H
tevékenység2
Ciklus feltétel tevékenység
Programozás # 7
Programszerkezetek Szekvencia tevékenység1 tevékenység2 Szelekció Egyágú szelekció
Kétágú szelekció: feltétel
I
H -
tevékenység1
I
feltétel
tevékenység1
tevékenység2
Többágú szelekció: feltétel_1
feltétel_2
...
egyébként
tevékenység1
tevékenység2
...
tevékenység
Iteráció Elöltesztelő ciklus feltétel tevékenység Növekményes ciklus vált := tól .. ig tevékenység
H
Hátultesztelő ciklus tevékenység feltétel
Programozás # 8
Példa a struktogramra FELADAT: Két természetes szám osztási maradéka
Maradék
Be: a, b ¬ (a∈N ∧ b∈N)
I
a>b
m := a mod b
H m := b mod a
Ki: m
Programozás # 9
Példák a programszerkezetekre PÉLDA A SZEKVENCIÁRA: Egy téglalap kerületének és területének kiszámítása Változók: a: Valós b: Valós k: Valós T: Valós
START
a téglalap egyik oldala a téglalap másik oldala a téglalap kerülete a téglalap területe
Be: a, b
TÉGLA
k := 2 * ( a + b )
Be: a, b
T := a * b
k := 2 * ( a + b ) T := a * b
Ki: k, T
Ki: k, T STOP
PÉLDA A SZELEKCIÓRA: Egy számelőjele az előjel függvény szerint Változók: x: Valós szám sign: Valós a szám előjele
START
Be: x
1, ha x > 0 sign( x) := 0, ha x = 0 − 1, ha x < 0
sign := -1
I
H x=0
H
x>0
I
sign := 1
Ki: sign STOP
sign:=0
Programozás # 10
PÉLDA AZ ITERÁCIÓRA: Két természetes szám legnagyobb közös osztója 1. megoldás START Be: a, b H
x := b
I
a
a&b mod x = 0
x := a
H
x := x - 1
I Ki: x
STOP 2. megoldás: Euklides algoritmusa a 40 25 10 10 5
b 15 15 15 5 5
3. megoldás: Javított Euklides a 40 10 10 0
b 15 15 5 5
LNKO
LNKO
Be: a,b
Be: a,b
a ≠ b
a*b ≠ 0
a>b a:=a-b Ki: a
b:=b-a
a>b a:=a mod b b:=b mod a Ki: a+b
Programozás # 11
PÉLDA: Egy természetes számról el kell dönteni, hogy prímszám e FOLYAMATÁBRA
START Be: x H
x∈Ν I i := 2
x osztója i i
H
i := i+1
I H
Ki: nem
I
i=x
Ki: prim
STOP STRUKTOGRAM
PRIM
Be: x x∈Ν i := 2 i nem osztója x-nek i := i + 1 I
i=x Ki: prim
H Ki: nem prim