You are on page 1of 44

Forrs: http://www.doksi.

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 A GYAKORLATBAN

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. Els genercis programozsi nyelvek

Az els programozsi nyelv a gpi kd volt. Ennek a nyelvnek az utastsait a szmtgp


kpes volt kzvetlenl, minden talakts nlkl vgrehajtani, rtelmezni. A problmkat
nagyon preczen kellett megfogalmazni, lpsekre bontani. Emellett a nyelv ersen gpfgg
volt, hiszen minden gpen ms s ms utastsokat hasznlt, az adott problmt minden
gptpus esetn mskppen kellett lerni, megfogalmazni, alkalmazkodva a szmolegysg
sajtossgaihoz. Htrnyai mellett nhny elnyt is meg kell emltennk:

- A leggyorsabb programot eredmnyezi, mivel nem tartalmaz felesleges utastsokat.


- Az egyes utastsok egysges (egy vagy ktcmes) formban vannak lerva.

Plda egy gp kd utastsra:

0B0A 0C0E 0D00

Az els ngy helyen az utasts,


majd az els memriacm,
s ezt kveti a msodik memriacm.

1
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

A gpi kd lehetsgekhez kpest komoly elrelpst jelentett az Assembly nyelvek


megjelense, amelyek tulajdonkppen segdeszkzt jelentettek a gpi kd utastsok
egyszerbb megfogalmazsban. Az egyes gpi kd utastsokhoz egy-egy mneomnikus
kdot rendeltek hozz, a trcmeket pedig a memria kezdethez viszonytott relatv
cmekkel szmtottk. Szintn jdonsgnak szmtott, hogy az egyes memriacmeket
egy-egy szimbolikus nvvel lehetett helyettesteni.

Egy sszeads Assembly nyelven:

ADD X, Y

Az ADD szcska az sszeadsra (addition) utal, az X s Y pedig memriacmeket


szimbolizlnak.

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.

2. Msodik genercis programozsi nyelvek

A szmtgpek alkalmazsi terletnek bvlse szksgess tette a programok fejlesztsi


idejnek cskkentst, azaz felmerlt az igny, hogy a programokat minl gyorsabban rjk
meg a programozk. A gpi kd s az assembly nehzkessge, gphez igazodsa miatt nem
volt erre alkalmas.

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.

Az els vltozatok utastskszlete mg nem tette lehetv a struktrlt programozst,


gyakran kellett alkalmazni az ugr utastsokat (GOTO).

2
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

3. Harmadik genercis programozsi nyelvek

A msodik generci programozsi nyelvei mr lnyegesen fggetlenebbek voltak a gpi


logiktl, mint az els genercis nyelvek, az elksztett programokat tbbfle gpen is
hasznlni lehetett. Azonban a nyelvek tbbsge egy-egy problmacsoport megoldsra
specializldott, ami a programok fejlesztse, javtsa sorn igen komoly akadlyokat
jelentett.

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.

A nyelveket kt csoportra oszthatjuk:

- utasts-orientlt (BASIC, PASCAL)


- kifejezs-orientlt (C)

Az ltalnos cl programozsi nyelvek csaldjba tartoz nyelvek szleskren


alkalmazhatk a gazdasgi szmtsoktl a rendszerprogramozsi fejlesztsekig, szles a
lehetsgek sklja.

A programok blokk-szerkezet felptse mr a strukturltsg koncepcijt vetti elre. A


program tartalmaz egy fprogram rszt, amely kln blokkokban tbb alprogramot foglalhat
magba, az alprogramok egymsba gyazhatk. A fordt a deklarcikat utlag helyezi el a
program elejn.

4. Negyedik genercis programozsi nyelvek

Az utbbi vekben kezdett szleskren elterjedni egy j szemllet programozsi technika,


az objektum-orientlt programozs, amely az eldeinl egyszerbb, hatkonyabb,
biztonsgosabb teszi a programksztsi munkt.

A XX. szzad msodik felben a szmtstechnika forradalmi vltozson ment keresztl. A


Neumann elvek megjelense s az els memriban trolt gpi nyelv program lefuttatsa
utn alig tven vvel mr informcis rendszerek, kzpontilag vezrelt szmtgp
hlzatok programozsa, dntshozst tmogat rendszerek fejlesztse a clunk.
Nyilvnval, hogy ilyen jelleg munkk elvgzsre a hagyomnyos programozsi nyelvek
ltal biztostott eszkzk nem megfelelek. A hardver eszkzk rohamos fejldsre
tmaszkodva kezdett kialakulni a programozs sorn egy j szemllet, mely az eddigi
alapelvekkel szges ellenttben llt.

Az objektum-orientlt programozsi nyelvek absztrakt adattpusokkal s a hozzjuk tartoz


elre definilt algoritmusokkal segtik a programoz munkjt. Az objektum-orientlt
nyelvek az adatokat s az ket kezel eljrsokat, fggvnyeket egysgbe foglaltan
gynevezett objektumknt kezelik.

3
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Az objektum-orientlt programozs lnyege, hogy a programozs sorn felhasznlt


elemeket a nyelv elre definilja, s klnbz tulajdonsgokkal ruhzza fel. Amikor a
programoz hasznlni szeretn az egyik elemet, csak a tulajdonsgait kell egyni
zlse-illetve a feladatnak megfelel elvrsok szerint belltania.

Ez a programozsi technika sokkal kzelebb ll az emberi gondolkodshoz, mint az eddigi


programozsi mdszerek.

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.

5. tdik genercis programozsi nyelvek

Jellemzjk: termszetes nyelvek, az eljrs orientlt programozsi nyelvek helyett ezek


problmaorientlt nyelvek.

A strukturlt programozs alapttele: Minden algoritmusnak ltezik strukturlt programja.

A STRUKTURLT PROGRAMOZS PTKOCKI


Egy programot akkor neveznk strukturltnak, ha nem tartalmaz felttel nlkli (GOTO)
ugrst, s algoritmusa teljes mrtkben megvalsthat vges mlysgig egymsba
skatulyzott, egyszer s sszetett program struktrkkal (szerkezetekkel).

Bhm s Jacopini ttele

A szekvencia, szelekci s az iterci segtsgvel minden olyan algoritmus felpthet,


amelynek egy belpsi s egy kilpsi pontja van.

A csak szekvencikbl, szelekcikbl s itercikbl ptkez programot strukturlt


programnak nevezzk. A strukturlt programozsban a ciklusbl val kiugrs fogalma
ismeretlen. Ebbl kvetkezik, hogy a program minden szekvencijnak - s gy az egsz
programnak is - egyetlen belpsi s egyetlen kilpsi pontja van, ennlfogva a program
lnyegesen ttekinthetbb.

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.

Programnyelvtl fggetlenl minden program lebonthat hrom alapvet mveletre:

Szekvencia: azt jelenti, hogy a kiadott parancsok egyms utn kvetkeznek be. Mindennapi
letbl plda:

4
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

- Felkelek,
- Megmosakodom,
- Elindulok a munkba stb.

Iterci: azaz ismtlds. Mindennapi letbl plda:

- Htftl pntekig csinld meg a fenti mveleteket


- Addig vezetheted az autt, amg van benne benzin

Dnts: Ha ... akkor ... egybknt. Mindennapi letbl plda:

- Ha ma cstrtk van, akkor elmegyek edzsre (egybknt nem).

1. sszetett utasts szekvencia

A szekvencia egyszeren az utastsok egyms utn rsa, az utastsok egy listja.

- 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.

Felntt emberek esetn az elhzs mrtkt az n. testtmegindex segtsgvel szoktk


meghatrozni. Ha az ember magassga m mter, tmege pedig kg kilogramm, akkor bmi
testtmegindext a bmi = kg / m2 sszefggsbl szmolhatjuk. Ha ez a szm 25 fltt
van, akkor az illet felntt tlslyos, mg 30 fltt elhzott.

5
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Foglaljuk ssze a fenti eljrs algoritmust!

Be: kg, m

bmi = kg/(m*m)

Ha bmi 25-nl kisebb

akkor Ki: n nincs elhzva.

Ha bmi 25 s 30 kz esik

akkor Ki: n tlslyos.

Ha bmi 30-nl tbb

akkor Ki: n elhzott.

Teht az elgazs olyan vezrlsi szerkezet, amely az utastsok egy adott csoportjt attl
fggen hajtja vgre, hogy egy adott logikai felttel teljesl-e.

Az elgazsoknak alapveten kt fajtjt klnbztetjk meg:

- ktirny elgazs (if, ifelse),


- tbbirny elgazs (switchcase).

Ktirny elgazs

Az elgazs legegyszerbb vltozatt a kvetkez algoritmus adja meg:

Ha logikai felttel akkor

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.

Az elgazs msik vltozatt a kvetkez algoritmus adja meg:

Ha logikai felttel akkor

utastsok

Klnben

6
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

utastsok

Ha vge

Az utastsok rsz akkor s csak akkor hajtdik vgre, ha a logikai felttel teljesl, ellenkez
esetben a "klnben" g hajtdik vgre.

2. bra. Ktirny elgazs

Egymsba gyazott elgazsok

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

3. bra. Tbbirny elgazs

3. Ciklusok (itercik)

A ciklusok olyan programrszletek, amelyek tbbszr egyms utn vgrehajtdnak, s az,


hogy hnyszor, egy bizonyos feltteltl fgg.

Tpusai

- Htultesztels ciklus

Mkdse: egyszer mindenkppen vgrehajtdik az utasts, majd ha a felttel igaz, a ciklus


vgrehajtsa folytatdik, ellenkez esetben, pedig lell. Vannak feladatok, amiket nlkle
csak krlmnyesen lehet megoldani. Alkalmazzuk pldul adatok ellenrzssel trtn
beolvassa esetn.

8
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

4. bra. Htultesztels ciklus

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.

5. bra. Elltesztels ciklus

Nvekmnyes ciklus

9
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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.

6. bra. Nvekmnyes ciklus

sszegezve:

A ciklus fajtja A futsok szma Legkevesebb hnyszor fut le?

Elltesztel elre nem ismert lehet lehet hogy egyszer sem

Htultesztel elre nem ismert legalbb egyszer

Szmlls elre ismert lehet lehet hogy egyszer sem

4. Adattpusok

Programozs sorn a programok bizonyos adatokkal vgeznek klnbz mveleteket.


Hogy mely adatokkal mit lehet kezdeni az az adat tpustl fgg. A klnbz
programnyelvek ms-ms adattpusokat definilnak, melyek kzl a legtbb ismeri a
szmokat, (termszetes s vals szmok) karaktereket, logikai vltozkat.

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Az adattpusok segtsgvel definilhatunk:

- vltozkat (program futsa sorn vltozik az rtke) s


- konstansokat (program futsa sorn az rtke vltozatlan, lland.)

A vltozk, konstansok definilsa: adattpus vltoznv=kezdrtk alakban trtnik.

ADATTPUSOK JELLEMZI

1. Integer (egsz szm)

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:

1 bjt esetn: -128 s 127 kztti szmok lehetnek,

2bjt esetn: -32768 s 32767 kztti szmok lehetnek.

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 (< >)

Negatv egsz szm kettes komplemens alakjnak meghatrozsa:

- felrjuk a szm abszolt rtkt s tvltjuk kettes szmrendszerbe


- a szmot bitenknt invertljuk.
- majd hozzadunk 1-et.

Termszetesen a pozitv egsz szmok brzolsa esetn egyszeren csak trjuk a szmot
kettes szmrendszerbe.

Lssunk egy pldt:

brzoljuk a -1-t kettes komplemens kdban:

abszolt rtk: 00000001


bitenknt invertl: 11111110
plusz 1: 11111111

2. REAL, FLOAT, DOUBLE (vals szmok)

Clja: a szmbrzolsi tartomny nvelse (ezzel a pontossg bizonyos mrtkben


cskken).

11
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Alapelve: az n. norml (normalizlt) alak.

Pldul: 10-es szmrendszerben minden szm felrhat m*10k alakban, ahol

m a mantissza abszolt rtke,


k a karakterisztika k=0;(egsz).

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.

Lebegpontos alak kialaktsa:

- a szm talaktsa kettes szmrendszerbe


- normalizls
nullra - az els rtkes jegy 0 (pl.: 0,110011)
egyesre - az els rtkes jegy 1 (pl.: 1,0011)
- karakterisztika kialaktsa
a karakterisztika meghatrozott rtkhez hozzadjuk a tblzatbl
kiolvashat szmot. Pldul 4 bjt esetn 127 (128).

az gy kialaktott alak: m*2k

- A lebegpontos alak felrsa

Formtumok:

pontossg hossz Karakterisztika (k*) Mantissza (m*)

egyszeres 4 byte (32 bit) 8 bit (eltolt 127) 23 bit

dupla 8 byte (64 bit) 11 bit (eltolt 1023) 52 bit

kiterjesztett 10 byte (80 bit) 15 bit (eltolt 16383) 64 bit

7. bra. Lebegpontos alak

S: a szm eljele

- 0: ha a szm pozitv
- 1: ha a szm negatv

Nzznk egy pldt a lebegpontos alak kialaktsra:

12
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

a=9.75 = 1001.11bin = 0.100111*24, a karakterisztika: 4+127=131=10000011bin,


teht a 32 bitnk: 0_10000011_100111 00 0000 0000 0000 0000

-9.75 esetn: 1_10000011_100111 00 0000 0000 0000 0000 (a szkzk s az alhzsok


csak az olvashatsgot segtik)

Mveletek: sszeads(+), kivons(-), szorzs(*), oszts(/), hatvnyozs(^), negls(~)

Relcis mveletek: kisebb (<), nagyobb (>), egyenl (=), kisebb vagy egyenl(<=) ,
nagyobb vagy egyenl (>=), nem egyenl (< >)

3. BOOLEAN (logikai tpus)

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.

Intervallum: igaz/hamis. sszesen kt rtket vehet fel.

Mveletek: AND (s), OR (vagy), NOT(nem, negls), XOR(kizr vagy)

Relcis mveletek: kisebb (<), nagyobb (>), egyenl (=), kisebb vagy egyenl(<=) ,
nagyobb vagy egyenl (>=), nem egyenl (< >)

4. CHAR (karakter tpus)

brzols (mret):

- ASCII kdtbla szerint 1 bjton 0-255 kd jelek.


- UNICODE-16 szerint 2 bjt
- UNICODE-32 szerint 4 bjt
- UNICODE-64 szerint 8 bjt

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)

Mveletek: nincs karakter specifikus mvelet.

Relcis mveletek: vannak, (kd alapjn) de ez nem logikus csak egy rsztartomnyon bell
(pl. A<B<a).

13
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

SSZETETT ADATTPUSOK

1. szveges tpus

- karakterek trolsra alkalmas tpus


- a karakterek betk, szmok, vagy tetszleges, a billentyzetrl (vagy mshonnan)
bevihet jeleket jelentenek.
- egyes esetekben specilis jelents tulajdonthat nekik
- egyes programnyelvek esetn a stringek hossza maximlisan 255 karakter
- Hasonlan a tbbi vltozhoz, a string-eket is deklarlni kell.
- A stringek kezelhetek vektorknt is. Hivatkozhatunk rjuk elemenknt, mint a
karakterekettartalmaz tmbkre

Mveletei:

- Sztringek hossza
- Sztringek sszefzse
- Rszsztringek ksztse
- Keress sztringben
- sszehasonlts
- Trls
- Beszrs

2. tmb tpus

- A tmb egy sszetett homogn adatstruktra


- Tetszleges, de elre meghatrozott szm eleme van
- Az elemek tpusa azonos
- A tmb lehet egy vagy tbbdimenzis, a dimenzi szma nem korltozott

A tmb elemeinek elrse

A tmb elemein vgiglpkedhetnk egy egyszer szmll ciklus alkalmazsval.

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

ADATTPUSOK ALKALMAZSA:
Klnbz adattpusokon ms-ms mveletek vgezhetk el. Klnsen kell gyelni a
szmbrzols mlysgre. Rosszul megvlasztott adattpus a program hibs mkdst
eredmnyezheti.

TANULSIRNYT

1. llaptsuk meg egy billentyzetrl bekrt szmrl, hogy prmszm-e! A prmszmok


pozitv egszek, pontosan kt osztjuk van, 1 s nmaga. Ksztsen algoritmust s
programot, az n ltal tanult programnyelven.

Megoldsi javaslat: ha 2 s a szm ngyzetgyke kzt nem tall osztt, akkor a szm
prm.

2. llaptsuk meg kt billentyzetrl bekrt szmrl, hogy mi a legnagyobb kzs osztjuk!

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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.

Megoldsi javaslat: az elz feladat alapjn hatrozza meg a legnagyobb kzs


osztt. Ha az 1, akkor a szmok relatv prmek, klnben nem. A fogalmat pozitv
egszek halmazn rtelmezzk.

4. lltsuk el egy szm prmtnyezs felbontst! Ksztsk el a megolds algoritmust,


illetve az n ltal tanult programnyelven ksztsen programot.

Pldul 360=2*2*2*3*3*5!

Megoldsi javaslat: 2-tl indulva keressnk osztt. Ha tallunk rassuk ki a


kpernyre, s az osztst is vgezzk el a szmon. Az gy megvltozott szmmal
ismteljk a mveletet mindaddig, amg a szm 1 nem lesz.

16
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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.

Megoldsi javaslat: az elz feladatok megoldsait hasznljuk.

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.!

Ellenrizzk le az eredmnyt a szmtani sorozat sszegkplete segtsgvel!

17
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Megoldsi javaslat: a nvekmnyes ciklus 3-mal kezddik, 11-gyyel vgzdik. A


ciklusvltoz 2.

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.

Megoldsi javaslat: hasznljon elltesztels ciklust, amely nem csak az sszeg


ellltst vgzi, hanem a ciklusvltozja is nvekszik 1-gyel!

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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.

Megoldsi javaslat: hasznljon nvekmnyes ciklust!

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

13. Hatrozzuk meg egy [a,b] intervallum belsejbe es ngyzetszmokat, s azok sszegt!
Az a s b rtkt krjk be billentyzetrl!

Megoldsi javaslat: gyeljen arra, hogy a < b.

21
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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!

A sorozatrl tudjuk a kvetkezket:

- a1 = 1
- a2 = 1
- an = an-1 + an-2 ha n>2

15. Hatrozzuk meg kt N dimenzis vektor skalris szorzatt, ha adottak a kt vektor


koordinti. Ksztsk el a megolds algoritmust, illetve az n ltal tanult programnyelven
ksztsen programot.

Megoldsi javaslat: a skalris szorzatot meghatrozhatjuk, ha az azonos index


elemeket sszeszorozzuk, majd ezeket a szorzatokat sszeadjuk.

22
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

16. 5 km-enknt megmrtk a felszn tengerszint feletti magassgt. (sszesen N mrst


vgeztnk) A mrseket szrazfld felett kezdtk s fejeztk be. Ott van tenger, ahol a
mrs eredmnye 0, msutt >0. Hatrozzuk meg, van-e ezen a tengerszakaszon sziget!
Ksztsk el a megolds algoritmust, illetve az n ltal tanult programnyelven ksztsen
programot.

Megoldsi javaslat: a mrsi eredmnyeket N dimenzis tmbben troljuk, melynek


elemei nemnegatv szmok. Az els s utols szm pozitv. Sziget ott van, ahol a
pozitv szmokat nulla hatrolja.

17. Az elz feladatbl mondjuk meg

- Hny szigeten jrtunk?


- Adjuk meg azt a szigetet, ahol a legmagasabb cscs van!

23
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

18. Hatrozzuk meg N (N>1) termszetes szmnl nem nagyobb szmok kzl a
legnagyobb ngyzetszmot!

19. lltsunk el 50 vletlen szmot 1 s 500 kztt. Ksztsk el a megolds algoritmust,


illetve az n ltal tanult programnyelven ksztsen programot.

- Vlogassuk ki a 100-nl nagyobb pratlan szmokat!


- Vlogassuk ki a hrommal nem oszthat pros szmokat!
- Vlogassuk ki a 200-nl nem nagyobb szmok kzl azokat, melyek szmjegyeinek
sszege ttel oszthat!
- Vlogassuk ki a 100 s 300 kz es, 3-as szmjegyet tartalmaz szmokat!
- Keressk meg a legnagyobb 3-mal nem oszthat, de 7-el oszthat szmot!
- Keressk azt a legkisebb szmot, mely tartalmaz 3-as szmjegyet!

24
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

20. Ksztsk el egy ts lottsorsols programjt! Ksztsk el a megolds algoritmust is.


gyeljnk arra, hogy egy szmot csak egyszer hzhat ki!

Megoldsi javaslat: kt egymsba gyazott elltesztels ciklust hasznljon. A kls


ciklus lltja el a szmot, a bels ciklus pedig sszehasonltja a mr kihzott
rtkkel. Ha mr elfordult a szm, jra generljuk.

25
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

21. Hatrozzuk meg tmb[N,N] mtrix fels hromszg elemeinek sszegt!

Megoldsi javaslat:egy elem a fels hromszgmtrixban van, ha a sorindex kisebb


mint az oszlopindex. Az els index a sorindex, a msodik az oszlopindex.

Oldja meg a feladatot az als hromszgmtrix elemeire is!

22. Adott a tmb[N,N] mtrix. A mtrix fdiagonlisba rjunk olyan rtkeket, hogy a mtrix
minden sorban az elemek sszege 0 legyen!

Megoldsi javaslat: fdiagonlis esetn az oszlop- s sorindex azonos.

26
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

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

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

25. rja fel

(a) -87-t kettes komplemens alakban

(b) -103-t kettes komplemens alakban

26. rja fel 4 bjton 12,125-t lebegpontos alakban!

28
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

29
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

NELLENRZ FELADATOK

1. feladat

Melyik tpus ciklusszervezs a kvetkez algoritmus?

Ciklus ciklusvltoz = I kezdrtktl N vgrtkig k lpskzzel

Ciklusmag utastsai

Ciklus vge

_________________________________________________________________________________________

_________________________________________________________________________________________

2. feladat

Melyik tpus ciklusszervezs a kvetkez algoritmus?

Ciklus

Ciklusmag utastsai

mgnem Kilpsi felttel

Ciklus vge

_________________________________________________________________________________________

_________________________________________________________________________________________

3. feladat

Melyik tpus ciklus szervezs a kvetkez algoritmus?

Ciklus amg Lefutsi felttel

Ciklusmag utastsai

Ciklus vge

30
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

_________________________________________________________________________________________

_________________________________________________________________________________________

4. feladat

Mi a klnbsg a kt szelekci kztt? Keressen pldt alkalmazsukra!

(a) Ha Felttel akkor

Utasts(ok)

Elgazs vge

(b) Ha Felttel akkor

Utasts(ok)1

Egybknt

Utasts(ok)2

Elgazs vge

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

31
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

5. feladat

Keresse meg pl. az internet lehetsgeit kihasznlva, hogy a strukturlt programozs


ltalnos mdszereinek kidolgozsa kinek a nevhez ktdik! Ksztsen letrajzrl rvid
esszt vagy prezentcit!

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

6. feladat

Igaz-e a kvetkez llts?

A felttel nlkli ugrs nem szksges elem a strukturlt programozsban, gyakori


hasznlata ttekinthetetlenn teszi a programot.

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

32
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

7. feladat

Minek a defincija a kvetkez llts?

- Valamely tevkenysg sorozat ismtelt vgrehajtst jelenti.


- Az ismtls felttelhez kttt.

_________________________________________________________________________________________

_________________________________________________________________________________________

8. feladat

Ksztsen algoritmust, majd ehhez az n ltal tanult programozsi nyelven ksztsen


programot, amely bekri egy felntt testmagassgt (110-210 cm) s testslyt (30-150
kg), majd kirja azokat. Csak a megadott hatrok kztti rtkeket fogadhat el.

33
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

9. feladat

Ksztsen algoritmust, majd ehhez az n ltal tanult programozsi nyelven ksztsen


programot amely elllt 0 s 50 kztti vletlen-szmokat addig, amg a 25-s szm
generlsa is megtrtnt. rassuk ki a kapott szmokat.

34
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

10. feladat

Ksztsen algoritmust, majd ehhez programot az n ltal tanult programozsi nyelven,


amely n darab * karaktert r ki a kpernyre. N rtkt a felhasznltl olvassa be!

11. feladat

Mit csinl a kvetkez algoritmus?

35
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

8. bra.

36
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

37
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

MEGOLDSOK

1. feladat

Nvekmnyes (szmll).

2. feladat

Htul tesztels.

3. feladat

Ell tesztels.

4. feladat

Az (a) feladat egyg, a (b) pedig ktg szelekci.

5. feladat

E. W. Dijkstra dolgozta ki.

6. feladat

Igaz.

7. feladat

Ciklus

8. feladat

Program

Vltozk: magassag, suly (pozitv vals rtkek)

Ciklus

Be: magassg [110-210 cm]

amg (magassag < 110 vagy magassag > 210)

Ciklus vge

Ciklus

38
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Be: suly [30-150 kg]

amg (suly < 30 vagy suly > 150)

Ciklus vge

Ki: magassag, suly

Program vge

9. feladat

Program

Vltozk: szam (pozitv egsz)

vletlenszm-genertor inicializlsa

szam = random (51) //elreolvass

Ciklus amg (szam <> 25)

Ki: szam //feldolgozs

szam = random (51) //elreolvass

Ciklus vge

Ki : "Megvan a 25-s !"

Program vge

10. feladat

Program

Vltozk: n darabszm, pozitv egsz

i ciklusvltoz, pozitv egsz

Ciklus

Be: n

amg (n<= 0)

ciklus vge

Ciklus i= 1 kezdrtktl n vgrtkig 1 lpskzzel

39
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

Ki: "*"

ciklus vge

Program vge

40
Forrs: http://www.doksi.hu

PROGRAMOZS - STRUKTRLT PROGRAMOZS A GYAKORLATBAN

IRODALOMJEGYZK

FELHASZNLT IRODALOM
Sipos Mariann: A visual C++ s az MFC; INNOVADIDACT Bt., 2004

Ills Zoltn: Programozs C# nyelven; Jedlik Oktatsi Stdi Budapest, 2008

Trey Nash: C#2008; Panem Kft, 2008

41
Forrs: http://www.doksi.hu

A(z) 1155-06 modul 018-as szakmai tanknyvi tartalomeleme


felhasznlhat az albbi szakkpestsekhez:

A szakkpests OKJ azonost szma: A szakkpests megnevezse


54 481 01 1000 00 00 CAD-CAM informatikus
54 481 04 0010 54 01 Gazdasgi informatikus
54 481 04 0010 54 02 Infostruktra menedzser
54 481 04 0010 54 03 Ipari informatikai technikus
54 481 04 0010 54 04 Mszaki informatikus
54 481 04 0010 54 05 Tvkzlsi informatikus
54 481 04 0010 54 06 Telekommunikcis informatikus
54 481 04 0010 54 07 Trinformatikus

A szakmai tanknyvi tartalomelem feldolgozshoz ajnlott raszm:


20 ra
Forrs: http://www.doksi.hu

A kiadvny az j Magyarorszg Fejlesztsi Terv


TMOP 2.2.1 08/1-2008-0002 A kpzs minsgnek s tartalmnak
fejlesztse keretben kszlt.
A projekt az Eurpai Uni tmogatsval, az Eurpai Szocilis Alap
trsfinanszrozsval valsul meg.

Kiadja a Nemzeti Szakkpzsi s Felnttkpzsi Intzet


1085 Budapest, Baross u. 52.
Telefon: (1) 210-1065, Fax: (1) 210-1063

Felels kiad:
Nagy Lszl figazgat

You might also like