Professional Documents
Culture Documents
hu
Szab Mria
Programozs - Strukturlt
programozs a gyakorlatban
A kvetelmnymodul megnevezse:
Informatikai ismeretek
A kvetelmnymodul szma: 1155-06 A tartalomelem azonost szma s clcsoportja: SzT-018-50
Forrs: http://www.doksi.hu
PROGRAMOZS-STRUKTRLT PROGRAMOZS
ESETFELVETS - MUNKAHELYZET
n egy oktatsi feladatokat ellt cgnl dolgozik informatikusknt. Azt a feladatot kapta,
hogy tervezzen egy olyan kisebb strukturlt programot, ami alkalmasan bemutatja, a
strukturlt programozs legfontososabb jellemzit.
SZAKMAI INFORMCITARTALOM
TRTNETI TTEKINTS
1
Forrs: http://www.doksi.hu
ADD X, Y
Teht az Assembly egy olyan alacsony szint programozsi nyelv, amelynl a mvelet s a
trcm szimbolikusan megadhat.
Termszetesen, ha egy Assembly programot szeretnnk futtatni, azt mindig meg kell elznie
egy talaktsi, fordtsi mveletnek, amikor az Assembly utastsokat gpi utastsokk
alaktjuk t. A fordtprogramok compiler tpusak voltak. Az Assembly legtbb utastsa
egyetlen gpi utastst reprezentlt, azaz az Assembly 1:1 tipus nyelv. Volt nhny utasts,
amely tbb gpi kd utastst jelentett, ezeket makrknak neveztk.
Az Assembly nyelv a gpi kd programozs utn igen nagy elrelpst jelentett, ltala
sokkal knyelmesebb vlt a programfejlesztsi munka. Napjainkra az alacsony szint
programozsi nyelvek httrbe szorultak. Az Assembly-t ma mr csak olyan feladatok
esetn hasznljk, ahol hardver szint vezrlst kell megvalstani.
A 60-as vek elejn jelentek meg az els magas szint programozsi nyelvek. Az j nyelvek
struktrja mr nem a szmtgp sajtossgaihoz, hanem a problmhoz igazodott, a
programozknak itt mr nem kellett a gpi vgrehajtssal foglalkoznia.
A magas szint programozsi nyelvek 1:N tpus nyelvek, azaz egyetlen magas szint
programnyelvi utasts tbb gpi kd utastst reprezentl. Termszetesen a magas szint
nyelven rt programokat is le kell fordtani - az assembly-hez hasonlan - de komoly elny,
hogy ezeknl a nyelveknl mr sokkal kisebb a hibalehetsg, a forrsprogram sokkal
ttekinthetbb.
2
Forrs: http://www.doksi.hu
A 60-as vek derekn ksreltek meg elszr olyan programozsi nyelvet fejleszteni, amely
rendelkezik az elz nyelvek j tulajdonsgaival, emellett tbbfle problmacsoport
megoldsra alkalmas, univerzlis. Az j korszakot a procedurlis programozsi szemllet
s az adatok struktrjnak hangslyozsa jellemezte.
3
Forrs: http://www.doksi.hu
Meg kell emltennk a nyelvek nyilvnval elnyei mellett nhny rossz tulajdonsgot is. A
program hatkonysgnak nvekedsvel egyenes arnyban n a program hardverignye
elssorban memria ignye is, a lefordtott program mretrl nem is beszlve.
Egy bonyolultabb algoritmust nem lehet fejben megtervezni, ahhoz eszkzk kellenek.
Olyan eszkzre van szksg, mely ltalnosan elfogadott, s msok is ismerik, hasznljk.
Az algoritmusok ttekinthet formban val lersra szmtalan eszkz ltezik. Ilyen a
mondatszer lers, a folyamatbra, vagy a struktogram. Ezeket rszletesen megismerheti a
"Programtervezs" tartalomelembl.
Szekvencia: azt jelenti, hogy a kiadott parancsok egyms utn kvetkeznek be. Mindennapi
letbl plda:
4
Forrs: http://www.doksi.hu
- Felkelek,
- Megmosakodom,
- Elindulok a munkba stb.
- Minden szekvencia elemnek egy belpsi s egy kilpi pontja lehet. (tiszta
szerkezet, rszekre tagolhat, egyik rsz kimenete a msik rsz bemenete)
- Minden szekvencia bellrl tetszlegesen strukturlhat.
1. bra. Szekvencia
2. Elgazs
Elfordulhat, hogy egy feladat nem egyms utn megoldand rszfeladatokra, hanem
alternatv mdon megoldand rszfeladatokra tudunk csak felbontani. Ilyenkor elgazsra
lesz szksgnk.
5
Forrs: http://www.doksi.hu
Be: kg, m
bmi = kg/(m*m)
Ha bmi 25 s 30 kz esik
Teht az elgazs olyan vezrlsi szerkezet, amely az utastsok egy adott csoportjt attl
fggen hajtja vgre, hogy egy adott logikai felttel teljesl-e.
Ktirny elgazs
utastsok
Elgazs vge
Az utastsok rsz akkor s csak akkor hajtdik vgre, ha a logikai felttel teljesl. A fenti
szerkezet egy egysget alkot, ennek egy rsze csupn az utastsok blokk. Az utastsok
blokk beljebb kezdsvel ez kln is hangslyozhat, s jobban ttekinthet maga a
programkd is.
utastsok
Klnben
6
Forrs: http://www.doksi.hu
utastsok
Ha vge
Az utastsok rsz akkor s csak akkor hajtdik vgre, ha a logikai felttel teljesl, ellenkez
esetben a "klnben" g hajtdik vgre.
Egy elgazs utastsblokkjban szksgnk lehet jabb elgazsokra, ekkor nem kell mst
tennnk, mint egy msik felttellel megfogalmazott "Ha" utastst elhelyezni az utastsok
blokkjban.
Tbbirny elgazs
A tbbirny elgazsok esetn egy kifejezs rtke alapjn a programunk tbb irnyban is
folytatdhat. Ebben az elgazs tpusban tbbszrs ktirny elgazs egyszerre
megvalsthat.
A szerkezet bemutatsra egy egyszer pldt vlasztunk. Gyakori feladat, hogy egy
tulajdonsg klnfle rtkeinek elfordulsi szmt kell meghatroznunk. A feladat,
amelyet kivlasztottunk a kvetkez:
Hatrozzuk meg, hogy egy adott karakter tpus vltoz rtkei kzl hnyszor fordulnak
el az egyes magnhangzk! Ha nem magnhangz karakter kerlt a vltozba, akkor annak
szmt is hatrozzuk meg! A feladat termszetesen megoldhat ktirny elgazsok
egymsba gyazsval, de lnyegesen egyszerbb a tbbirny elgazs alkalmazsa.
7
Forrs: http://www.doksi.hu
3. Ciklusok (itercik)
Tpusai
- Htultesztels ciklus
8
Forrs: http://www.doksi.hu
Elltesztels ciklus
Az elltesztels ciklus teht elszr megvizsglja, hogy a felttel fennll-e. Ha igen, akkor
lefuttatja a ciklusmagot, s az jbl kezddik. Ha nem, akkor a program a ciklus utni
ponton folytatdik tovbb, azaz a ciklusmag kimarad. Lehetsges teht, hogy az
elltesztels ciklus egyszer sem fog lefutni. Az elltesztel ciklus alkalmazsnak tipikus
pldja az adatllomnyok fjlbl trtn beolvassa. Elfordulhat ugyanis, hogy az
llomny res, s ilyenkor nincs mit beolvasni. Hasonl a helyzet a knyvtrak listzsakor
is, hiszen a knyvtrban nem biztos, hogy van llomny.
Nvekmnyes ciklus
9
Forrs: http://www.doksi.hu
Az ismtlsek szma elre ismert. Ebben az esetben a ciklus az elre megadott rtkig fut. A
megadott rtk csak egsz szm lehet, trt szm esetn hiba lp fel. A megadott szm
minden esetben csak eggyel nhet illetve cskkenhet, ez a feltteltl fgg. Megadhatjuk a
kezd illetve a vgrtket is. A programnyelvek tbbsgben a nvekmnyes ciklus a "for"
kulcsszval rhet el. A for ciklusban mindenkppen szksg van egy vltozra, aminek az
rtke vagy n vagy cskken.
sszegezve:
4. Adattpusok
Egy adattpus definilsa annyit jelent, hogy megadjuk hogy mi az rtkkszlet (rtelmezsi
tartomny) s milyen mveleteket vgezhetnk velk, mely mvelet mit jelent.
10
Forrs: http://www.doksi.hu
ADATTPUSOK JELLEMZI
Mret: 1 vagy 2 bjton brzoljuk (azaz 8 vagy 2*8biten) amibl az els bit eljelbit. Ha az
els bit 1 akkor a szm negatv, klnben pozitv (vagy nulla).
Intervallum:
Mveletek: sszeads (+), kivons (-), szorzs (*), egsz oszts =maradkos oszts (DIV),
maradkkpzs =egsz oszts utni maradk(MOD), negls (-1 el val szorzs),
hatvnyozs (^).
Relcis mveletek: kisebb (<), nagyobb (>), egyenl (=), kisebb vagy egyenl(<=) ,
nagyobb vagy egyenl (>=), nem egyenl (< >)
Termszetesen a pozitv egsz szmok brzolsa esetn egyszeren csak trjuk a szmot
kettes szmrendszerbe.
11
Forrs: http://www.doksi.hu
Ehhez a tizedes vesszt (pontot) addig kell tolnunk a megfelel irnyba, hogy 1 s 10 kz
es szmot kapjunk ( lebeg tizedes pont). Az eltols irnytl s mrtktl fgg a
karakterisztika (kitev) eljele illetve rtke.
Formtumok:
S: a szm eljele
- 0: ha a szm pozitv
- 1: ha a szm negatv
12
Forrs: http://www.doksi.hu
Relcis mveletek: kisebb (<), nagyobb (>), egyenl (=), kisebb vagy egyenl(<=) ,
nagyobb vagy egyenl (>=), nem egyenl (< >)
Mret: brzolshoz elg lenne egyetlen bit. 0=hamis, 1=igaz. Gyakorlatilag mgis a
legkisebb foglalsi egysg a bjt, ezrt 1 logikai vltoz esetn is knytelenek vagyunk
minimum 1 bjtot lefoglalni.
Relcis mveletek: kisebb (<), nagyobb (>), egyenl (=), kisebb vagy egyenl(<=) ,
nagyobb vagy egyenl (>=), nem egyenl (< >)
brzols (mret):
Intervallum: ASCII 0-255 kd jelek. Tartalmazzk az angol abc kis s nagybetit, tovbb
nhny kezetes bett. A tartalmazott betk nem abc sorrendben kvetik egymst, mert
kln tartomnyt kpeznek a kis s a nagybetk. Ezen kvl tartalmazzk az rsjeleket, s
nhny specilis karaktert. (http://hu.wikipedia.org/wiki/ASCII cmen meg lehet nzni az
egyes karaktereket)
Relcis mveletek: vannak, (kd alapjn) de ez nem logikus csak egy rsztartomnyon bell
(pl. A<B<a).
13
Forrs: http://www.doksi.hu
SSZETETT ADATTPUSOK
1. szveges tpus
Mveletei:
- Sztringek hossza
- Sztringek sszefzse
- Rszsztringek ksztse
- Keress sztringben
- sszehasonlts
- Trls
- Beszrs
2. tmb tpus
A tmbknek egy igen fontos tpusa a dinamikus tmb. Mrete megvltoztathat futsi
idben. A dimenzik szmra ltalban nincs korlt. Az egyes elemekre a [] opertorral
hivatkozhatunk.
3. Rekord tpus
Rugalmas szerkezet, tetszleges szm, klnbz tpus rsz szerepelhet benne. Rekord
egy elemre gy hivatkozunk, hogy a rekord-vltoz neve utn ponttal elvlasztva rjuk az
elem azonostjt
14
Forrs: http://www.doksi.hu
ADATTPUSOK ALKALMAZSA:
Klnbz adattpusokon ms-ms mveletek vgezhetk el. Klnsen kell gyelni a
szmbrzols mlysgre. Rosszul megvlasztott adattpus a program hibs mkdst
eredmnyezheti.
TANULSIRNYT
Megoldsi javaslat: ha 2 s a szm ngyzetgyke kzt nem tall osztt, akkor a szm
prm.
Megoldsi javaslat: ksztsen lptet ciklust, ami 1-tl a kisebbik szmig vizsglja az
oszthatsgot. Ha kzs osztt tall, az lesz a legnagyobb kzs oszt.
15
Forrs: http://www.doksi.hu
3. llaptsuk meg kt billentyzetrl bekrt szmrl, hogy relatv prmek-e! Akkor relatv
prmek, ha a legnagyobb kzs osztjuk az 1. Ksztsk el a megolds algoritmust, illetve
az n ltal tanult programnyelven ksztsen programot.
Pldul 360=2*2*2*3*3*5!
16
Forrs: http://www.doksi.hu
5. llaptsuk meg, hogy egy adott intervallumba es szmok kzl melyik a legnagyobb
prmszm! Az intervallum als s fels hatrnak rtkt krjk be billentyzetrl!
Prbljunk keresni id-hatkony megoldsokat! Ksztsk el a megolds algoritmust,
illetve az n ltal tanult programnyelven ksztsen programot.
6. rjon olyan programot az n ltal tanult programnyelven, amely egy ciklussal kiszmolja
s kirja az albbi szmtani sorozat els 20 elemnek sszegt! Ksztsk el a megolds
algoritmust is!
3,5,7,9,11,stb.!
17
Forrs: http://www.doksi.hu
7. rjunk olyan programot, amely kiszmolja s kirja az albbi vltoz nvekmny sorozat
els 20 elemnek sszegt! Ksztsk el a megolds algoritmust is!
3,5,8,12,17,23,30,stb.
8. rjunk olyan programot illetve algoritmust, amely bekri egy tetszleges szmtani sorozat
els elemt s a differencit! Ezek utn kirja a kpernyre a szmtani sorozat els 15
elemt, illetve ezek sszegt s tlagt!
18
Forrs: http://www.doksi.hu
9. rjunk olyan programot illetve algoritmust, amely bekri egy tetszleges mrtani sorozat
els elemt s a hnyadost! Ezek utn kirja a kpernyre a mrtani sorozat els 20 elemt,
illetve ezek sszegt s tlagt! gyeljen a megfelel adattpus kivlasztsra!
10. rjon olyan programot az n ltal tanult programnyelven, amely kiszmolja s kirja 2n
els 20 elemnek rtkt! Ksztsk el a megolds algoritmust is! N rtkei: 1,2
Megoldsi javaslat: ha ismerjk (egy vltoz rtkeknt) pl. 23-t, akkor 2-vel val
szorzssal egyszeren elllthat 24 rtke.
19
Forrs: http://www.doksi.hu
11. rjon olyan programot az n ltal tanult programnyelven, amely egy ciklussal kiszmolja
s kirja az albbi sorozat els 10 elemnek sszegt! Ksztsk el a megolds algoritmust
is! A sorozat: an = an -5 + 2*n. a1 = 3.
12. rjon olyan programot az n ltal tanult programnyelven, amely kiszmolja az els N
ngyzetszm sszegt! Billentyzetrl krje be N rtkt! Ksztsk el a megolds
algoritmust is!
20
Forrs: http://www.doksi.hu
13. Hatrozzuk meg egy [a,b] intervallum belsejbe es ngyzetszmokat, s azok sszegt!
Az a s b rtkt krjk be billentyzetrl!
21
Forrs: http://www.doksi.hu
14. rjon olyan programot az n ltal tanult programnyelven, amely egy ciklussal kiszmolja
s kirja a Fibonacci sorozat els 15 elemnek sszegt! Ksztsk el a megolds
algoritmust is!
- a1 = 1
- a2 = 1
- an = an-1 + an-2 ha n>2
22
Forrs: http://www.doksi.hu
23
Forrs: http://www.doksi.hu
18. Hatrozzuk meg N (N>1) termszetes szmnl nem nagyobb szmok kzl a
legnagyobb ngyzetszmot!
24
Forrs: http://www.doksi.hu
25
Forrs: http://www.doksi.hu
22. Adott a tmb[N,N] mtrix. A mtrix fdiagonlisba rjunk olyan rtkeket, hogy a mtrix
minden sorban az elemek sszege 0 legyen!
26
Forrs: http://www.doksi.hu
23. Egy osztly tesztlapokat tlttt ki. Minden krdsre 4 lehetsges vlasz volt, s csak 1
j. A vlaszokat egy mtrixban troljuk. Ksztsnk programot, amely sszehasonltja a
vlaszokat a helyessel, majd megmondja, melyik tanul hny j vlaszt adott. A helyes
vlaszokat troljuk egy vektorban.
Megoldsi javaslat: vegyen fel egy vltozt, amely rtkt nvelje 1-gyel, ha azonos
index helyen azonos rtket tall.
24. rj programot, mely kirja kt szmokat tartalmaz tmb kzs elemeit! Ksztsk el a
megolds algoritmust, illetve az n ltal tanult programnyelven ksztsen programot.
27
Forrs: http://www.doksi.hu
28
Forrs: http://www.doksi.hu
29
Forrs: http://www.doksi.hu
NELLENRZ FELADATOK
1. feladat
Ciklusmag utastsai
Ciklus vge
_________________________________________________________________________________________
_________________________________________________________________________________________
2. feladat
Ciklus
Ciklusmag utastsai
Ciklus vge
_________________________________________________________________________________________
_________________________________________________________________________________________
3. feladat
Ciklusmag utastsai
Ciklus vge
30
Forrs: http://www.doksi.hu
_________________________________________________________________________________________
_________________________________________________________________________________________
4. feladat
Utasts(ok)
Elgazs vge
Utasts(ok)1
Egybknt
Utasts(ok)2
Elgazs vge
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
31
Forrs: http://www.doksi.hu
5. feladat
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
6. feladat
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
32
Forrs: http://www.doksi.hu
7. feladat
_________________________________________________________________________________________
_________________________________________________________________________________________
8. feladat
33
Forrs: http://www.doksi.hu
9. feladat
34
Forrs: http://www.doksi.hu
10. feladat
11. feladat
35
Forrs: http://www.doksi.hu
8. bra.
36
Forrs: http://www.doksi.hu
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
37
Forrs: http://www.doksi.hu
MEGOLDSOK
1. feladat
Nvekmnyes (szmll).
2. feladat
Htul tesztels.
3. feladat
Ell tesztels.
4. feladat
5. feladat
6. feladat
Igaz.
7. feladat
Ciklus
8. feladat
Program
Ciklus
Ciklus vge
Ciklus
38
Forrs: http://www.doksi.hu
Ciklus vge
Program vge
9. feladat
Program
vletlenszm-genertor inicializlsa
Ciklus vge
Program vge
10. feladat
Program
Ciklus
Be: n
amg (n<= 0)
ciklus vge
39
Forrs: http://www.doksi.hu
Ki: "*"
ciklus vge
Program vge
40
Forrs: http://www.doksi.hu
IRODALOMJEGYZK
FELHASZNLT IRODALOM
Sipos Mariann: A visual C++ s az MFC; INNOVADIDACT Bt., 2004
41
Forrs: http://www.doksi.hu
Felels kiad:
Nagy Lszl figazgat