You are on page 1of 37

A PROGRAMOZÁS

ALAPJAI
Klatka Tünde
2018.09.15.
A SZÁMÍTÓGÉP
FELÉPÍTÉSE
■ A számítógép főbb egységei:

Memória Processzor Perifériák


■ A memória: általános tároló, amely utasításokat és adatokat
tartalmaz
■ A processzor: beolvassa a memóriából az utasításokat és az
adatokat, az utasítások alapján műveleteket végez, a
műveletek eredményét pedig visszaírja a memóriába,
valamint vezérli a perifériákat
■ A perifériák: adatokat küld számukra és adatokat olvas be
onnan
Memória
■ Olyan mint egy nagyon hosszú táblázat, melynek minden
cellájában egy szám van, ami csak 1 és 0 lehet
0 1 1 1 0 0 1 1 0 1 0 0 1

■ A számítógép kettes számrendszert használ, mivel így


elég egy kapcsoló a szám tárolására. Ha be van
kapcsolva 1, ha ki van kapcsolva 0.
Pl.: sokkal egyszerűbb megállapítani, hogy egy lámpa
világít e vagy sem, mint hogy milyen erősen világít egy 10
fokozatú skálán
■ A kettes, azaz bináris számrendszer számjegyeit angolul
binary digitnek, röviden bitnek nevezzük
■ Ahhoz, hogy a memóriát hatékonyan lehessen használni
a benne tárolt információkhoz tetszőleges sorrendben
hozzá kell férni
■ Ezt a memóriában (RAM) úgy valósítható meg, ,ha
minden bitről tudjuk, hányadig a memória kezdetétől
számítva, és ez alapján hivatkozunk rá.
■ Egy bit nagyon kevés információt tárol, ezért
bitcsoportonkénti címzést vezetek be, amit bájtnak
nevezünk (így egyszerűbb az áramkör felépítése)
■ A számítógép tehát, úgy választja ki a nekünk szükséges
adatot vagy utasítást, hogy megmondjuk, hanyadik bájt
a memória kezdetétől számítva.
■ Ezt a sorszámot nevezzük memóriacímnek.
■ Sokféle bájtméretet használtak, de mára a 8 bites bájt lett
szinte az egyeduralkodó
■ Itt összesen 256 számot tudunk tárolni, azaz 28 ,
0-tól 255-ig.
■ Értelmezhetjük úgy is, hogy az első bit, nem számjegy hanem
előjel, azaz 0 akkor ha pozitív a szám, 1 akkor ha negatív. Így
azonban csak 7 bitünk marad a számot tárolni 0-tól 127-ig.
■ Ha 0…255 közötti számnak tekintjük a bájtot, akkor előjel
nélküli egész számról beszélünk
■ Ha pedig előjeles egész számról, akkor -127 és 127 közti
számot tárolunk
A processzor
■ Bekapcsolás után beolvassa a memória elején lévő
utasítást.
■ Ez fogja megmondani, hogy hol találja a következő
utasítást a memóriában, amit végre kell hajtania.
■ A számítógép elemi utasításai nagyon egyszerűek, hogy
az őket megvalósító áramkörök minél egyszerűbbek, és
ezért minél gyorsabbak legyenek.
■ Ha bonyolult utasítást szeretnénk adni a számítógépnek
azokat elemi utasításokra fogjuk bontani.
Elemi utasítás
■ Elemi utasítás, az az utasítás, amit a számítógép
processzora közvetlenül végrehajt, tehát már nem
bontjuk kisebb utasításokra
■ Két féle létezik: ugró utasítást, és nem ugró utasítás
Nem ugró utasítás
■ A nem ugró utasítástokat a processzor sorban egymás
után azaz szekvenciálisan hajtja végre.
■ Pl.: ilyenek a matematikai műveletek,
összehasonlítások, logikai utasítások… stb.
■ A processzor az adatokat beolvassa a memóriából,
végrehajtja rajtuk az utasítás(ok) által előírt műveletet,
majd az eredményt visszaírja a memóriába.
■ Mivel a memóriában csak egész számokat tudunk
tárolni, az elemi utasításokat is számonként tároljuk
■ Minden utasításhoz tartozik egy szám, ez az utasítás
gépi kódja.
■ A processzor tud adatokat fogadni a perifériáról, és tud
adatokat küldeni a perifériának.
A periféria
■ A perifériák közül számunkra 3 lényeges: billentyűzet,
képernyő, és a háttértárak
A PROGRAMOZÁS
ALAPJAI
■ Eddig a számítógép felépítésének és működésének
alapjaiba pillantottunk be.
■ Most néhány fontos alapfogalommal fogunk
megismerkedni.
■ Programozás: számítógép-algoritmusok és adatszerkezetek
megtervezése és megvalósításuk valamely programozási
nyelv segítségével.
■ Algoritmus: egy bizonyos feladattípus megoldására szolgáló
lépések (utasítások, előírások) véges sorozata, amely alapján
a feladat végeslépésben megoldható.
■ Adatszerkezet: az adatelemek egy olyan véges halmaza,
amelyben az adatelemek között szerkezeti összefüggések
vannak.
■ Programozási nyelv: olyan ember által olvasható és
értelmezhető utasítások sorozata, amivel közvetlenül vagy
közvetve közölhetjük a számítógéppel egy adott feladat
elvégzésének módját.
Az algoritmus deffiniciója
■ egy bizonyos feladattípus megoldására szolgáló lépések
(utasítások, előírások) véges sorozata, amely alapján a
feladat végeslépésben megoldható.
■ Kétszer is szerepel a véges szó!
■ A cselekvések számának végesnek kell lennie, mert
végtelen utasítást nem tudunk leírni.
■ Véges számú ismétlés: különben időben végtelen ideig
tartana a művelet
■ Pl.: ha veszünk egy lapra szerelt könyvespolcot,
általában van a dobozban egy papírlap, rajta ábrákkal,
melyek az összeszerelés folyamatát, azaz az
összeszerelés algoritmusát mutatják.
Adatszerkezet
■ A számítógép adatoka kezel
■ Pl.: ha ki szeretnénk íratni 1-től 10-ig a számokat, akkor
tudnunk kell, hogy éppen hol tart a kiíratás, ez az adat.
■ Átalában ennél jóval komolyabb mennyiségű adatot
kezelünk. Ez akkor lesz hatékony, ha az adatokat olyan
módon tároljuk, ahogy az a legkedvezőbb, azaz
megfelelő adatszerkezetet választunk.
■ Program: algoritmus+adatszerkezet
■ Kódolás: az algoritmus és az adatszerkezet
megvalósítása valamely programnyelven
A programozás alapjainak elsajátítása
■ Megismerünk sok fontos alapvető algoritmust pl.:
kiválasztás, keresés, rendezések, szövegfeldolgozás,
rekurzív algoritmusok stb.
■ Megismerünk néhány adatszerkezetet pl.: tömb,
struktúra, fájl, láncolt listák stb.
■ Megtanulunk kódolni C# nyelven.
■ programozás != kódolás
A programozás menete
1
■ Specifikáció: a program feladatának, bemeneti és
kimenetei adatainak megadása. Pl.: Írjon egy C#
programot, amely…
■ Tervezés: a feladat, azaz a specifikáció ismeretében
választjuk ki a programnyelvet, az algoritmusokat, és az
adatszerkezeteket.
■ Kódolás: a kiválasztott nyelven megvalósítjuk a
megtervezett algoritmusokat és adatszerkezeteket. Ez
részben egyszerre történik a tervezéssel, azaz bizonyos
algoritmikus ill. adatszerkezeti kérdésekben a kódolás
közben döntünk.
■ Tesztelés, hibajavítás: mindig lehet mit javítani a
programkódunkon. Két csoportja van: szintaktikai
(formai) és szemantikai (tartalmi) hiba.
■ Szintaktikai hiba: a formai szabályok megsértése.
Valamit rosszul gépelünk, lemarad egy zárójel stb.
Ezekkel könnyű elbánni, mert a fordítóprogram jelzi, hol
találhatók
■ Szemantikai hiba: a fordítóprogram nem talál hibát,
mert a program formailag jó, csak nem azt csinálja amit
szeretnénk.
■ Dokumentálás: célja, hogy segítsük a program
megértését.
AZ ALGORITMUSOK
MEGADÁSA
■ Algoritmusok megadására a programtervezés illetve
dokumentálás során van szükség.
■ Alapvetően két módon adhatunk meg algoritmusokat:
szövegesen és grafikusan.
■ Szöveges megadás: pszeudokód, programkód
■ Grafikus megadás: folyamatábra, struktogram
Programkód, pszeudokód
■ Hasonlítanak egymásra, a fő különbség, hogy a
programkód megértéséhez érteni kell az adott nyelv
szabályait, míg a pszeudokód igyekszik minden
programozó számára érthető lenni.
■ A pszeudokód vonatkozásában nincsenek kötelező
szabványok.
Folyamatábra, struktogram
■ A struktogram elkészítése és értelmezése igényel némi
programozói tapasztalatot, míg a folyamatábra mindenki
számára érthető.
■ A folyamatábra hátránya, hogy nagyon könnyű vele olyan
algoritmust alkotni, ami nem alakítható közvetlenül
strukturált programkóddás, míg a struktogrammal leírt
algoritmusok mindig strukturáltak.
Teafőző robot
■ Van egy robotunk, akit szeretnénk arra utasítani, hogy
főzzön teát. Hogyan utasítjuk a feladatra?

1. változat
Főzz teát!  ha van ilyen utasítás, akkor semmi más
teendőnk nincs, mint kiadni az utasítást. Ha nincs ilyen
utasítás, akkor meg kell magyarázzuk neki, mit is várunk
tőle!
2. változat „Főzz teát!” parancs:
Tölts vizet a kannába!
Kapcsold be a tűzhelyet!
Tedd rá a kannát!
Amíg nem forr
Várj egy percet!
Dobd bele a teatojást!
Vedd le a tűzről!
Ha kell cukor
Tedd bele!
Egyébként
Ha kell méz
Tedd bele!
Töltsd csészébe!
VÉGE.
■ Ez a teafőzés pszeudokódja.
■ Ebben a kódban megjelenik a strukturált programozás
mindhárom alkotóeleme:
■ Ahol egy oszlopban kezdődnek az egymást követő utasítások,
az a szekvencia.
■ Az „amíg” kezdetű utasításblokk egy ciklus, más néven
iteráció. A ciklus magjában lévő utasítás vagy utasítások
addig ismétlődnek, amíg az „amíg” után álló feltétel igaz.
■ Feltételes elágazás a „ha” kezdetű utasításblokk. Ha a „ha”
utáni állítás igaz, akkor végrehajtódik a feltétel magjában
lévő utasítás vagy utasítások. A feltételes elágazásnak lehet
(de nem kötelező) egy„egyébként” ága is, ami akkor hajtódik
végre, ha a „ha” utáni állítás hamis.
■ A folyamatábrán jól látszik a ciklus és az elágazás közötti
különbség: ciklus esetén visszaugrunk, elágazásnál pedig
előre haladunk.
■ Megnéztük a formát, beszéljünk a tartalomról! Ha
végignézzük az algoritmust, valószínűleg felvetődik önben,
hogy nem ön nem így főzne teát. Miért nem filtert
használunk? Miért a kannába tesszük a cukrot vagy a mézet
és nem a csészébe? Stb. A specifikáció nem rögzítette ezeket
a részleteket. Egészen pontosan semmit sem rögzített, csak
azt, hogy a robot főzzön teát. Ez alapján akár minden ízesítés
elhagyható lett volna, vagy továbbiakkal lehetne kiegészíteni.
Az algoritmus készítője hozta meg a döntéseket úgy, ahogy
neki tetszett.
■ Általában is elmondható, hogy a programozó dönt
rengeteg algoritmikus kérdésben, a specifikáció
általában nem ad választ minden kérdésre.
■ Szükség esetén konzultálhatunk is a megbízóval, hogy
mik az elvárásai.
■ Ez a felbontás akkor jó, ha a robot ismeri az összes
benne szereplő utasítást. Ha nem ismeri, tovább kell
bontanunk az algoritmust egészen addig, amíg olyan
utasításokhoz nem érünk, amit a robot is ismer.
■ A robot által ismert utasításokat elemi utasításoknak
nevezzük, ezekből lehet bonyolultabb programokat
készíteni.
Feladat 1
■ Adjunk algoritmust a robotunknak rántottakészítéshez!
Ábrázoljuk az algoritmust folyamatábrával is!
Feladat 2.
■ A kalauz nem tudja kezelni a jegyeket a vonaton, mert a
neki adott utasítások összekeveredtek. Segítsen neki,
és írja be a pszeudokód soraiba a magfelelő utasítás
betűjelét! Minden sorba csak egy betű kerülhet, és
minden betű csak egyszer használható. Minden betűt fel
kell használnia!
a) Ha nincs bérlet ______
b) Lyukaszd! ______
c) VÉGE. ______
d) Szállj át a következő kocsiba! ______
e) Amíg van kezeletlen utas ______
f) Kérd a jegyet vagy a bérletet! ______
g) Adj pótdíjcsekket! ______
h) Ha nem ért a szerelvény végére ______
i) Ha van jegy ______
j) Amíg nem ér a szerelvény végére ______
k) Menj a következő utashoz! ______
l) Egyébként ______

You might also like