Anda di halaman 1dari 31

Programozs

NTSZKI

1 A programozs trtnete
Kezdetek: Az ember mr az skortl fogva hasznlt a szmllshoz segdeszkzket. Kezdetben az ujjait, utbb klnbz eszkzket: kveket, fadarabokat, plckba vsett rovsokat, zsinegre kttt csomkat. A szmols, a ngy alapmvelet megknnytsre mr az korban ksztettek egyszer szmoleszkzt, az abakusz-t.
A kzpkorban megjelentek a teljesen mechanikus gpek.

1642 - Blaise Pascal - 20 ves korban tervezett s ptett egy hathelyirtkes fogaskerekes sszead-kivon gpet, mely Prizsban ma is lthat.

Nulladik generci (1930 - 1946): Az els, mai rtelemben vett szmtgp az amerikai Vannevar Bush 1930-as konstrukcija, melyben elszr alkalmazott e clra jelfogkat, ms nven relket. Ezzel kezdett vette a rels szmtgpek korszaka, amely az 1946-ban megjelen elektroncsves gpek megjelensig tartott. A rels gpeket a szmtgpek nulladik genercijnak is szoks nevezni.
Konrad Zuse 1938-ban (otthon, szlei laksnak nappali szobjban)

ptette Z1 nven az els szabadon programozhat szmtgpet, amely kettes szmrendszerben, lebegpontos brzols szmokkal mkdtt. Adatokat billentyzet segtsgvel lehetett betpllni, az eredmnyt villanygk sorozata (fnymtrix) jelezte. A szmolm s a trol telefonrelkbl kszlt.
Jellemzen kettes szmrendszert hasznltak s specilis clra pltek ennek a

genercinak a szmtgpei. A korszak f ramkri pteleme a rel. A vezrlprogramot lyukkrtya tartalmazta.(Zuse kiselejtezett 35 mm-es filmekre lyuggatta a programot.)

Els generci (1946 - 1954):


1946 kztt a Pennsylvania Egyetemen Eckert s Mauchly, valamint Goldstine

irnytsval megplt a vilgon az els modern rtelemben vett, kizrlag elektronikus gpe, az ENIAC.(Electronic Numerical Integrator And Calculator = elektronikus s digitlis integrtor s szmtgp) Az ENIAC els vltozat tbbek kztt 18000 elektroncsvet tartalmazott. Tmege tbb mint 30 tonna volt. A gp mintegy 70 m2 terletet foglalt el, hossza 30 m, magassga 3 m volt. Az sszeadsokat 0,8 ; a szorzsokat 2,8 msodperc alatt vgezte el, kb. 2000-szeres mvelet-sebessg nvekedst jelentett a legjobb rels gpekkel szemben. Az ENIAC-ot 1947-ben talaktottk a Neumann-elvek szerint, gy mkdtt 1955-ig. Fbb jellemzi: Bonyolult volt a programvezrls, a sok elektroncs alkalmazsa nagy fogyasztst, gyakori meghibsodst, magas javtsi kltsget hozott magval. Mindssze hsz szmot lehetett benne trolni. Jelentsge: digitlis, univerzlis gp volt, elektronikus elven alapult, bizonytotta, hogy az elektronikus elven kszlt gpek is megbzhatak.
A korszak f ramkri pteleme az elektroncs. A programozs gpi

kdban, majd assembly szint gpi nyelven trtnt. Fleg tudomnyosmszaki szmtsokra hasznltk ket. Msodik generci (1954 1964): Jellemz ramkri eleme a tranzisztor s dida (diszkrt flvezetk). Kapcsolsi id, gpi mretek, energia igny cskken, sokkal megbzhatbban mkdnek. Ezek a gpek 50-100ezer mvelet/msodperc sebessget rtek el. Megjelennek a magasabb szint programozsi nyelvek: FORTRAN - tudomnyos, mszaki nyelv, COBOL - adatfeldolgozsra, gazdasgi feladatokra alkalmas, ALGOL60 - matematikai pontossggal lert nyelv, mig hivatkoznak r. Ltrehozsuk oka a gpi kd alkalmazsnak knyelmetlenn vlsa, valamint az automatizls lehetsgnek felmerlse. Az 1963-ban megjelent PDP 5 (DEC) gp volt az els, ami nagyjbl elfrt egy asztalon.
3

Harmadik generci (1964 1971): Jellemz ramkri eleme az integrlt ramkr (IC) sok flvezet egy tokban. Mveleti sebessgk elrtk az 1 milli mvelet/msodperc rtket. Tovbbi magas szint programozsi nyelvek jelennek meg: ALGOL68 tl bonyolult, elmleti jelentsg PL/1 opercis rendszerek fejlesztsre terveztk. Negyedik generci (1971 1993): Jellemz ramkri eleme a CHIP (pl. mikroprocesszor, mikrokontroller), vagyis az egy szilrd testben megvalstott teljes mkdsi egysg. Az 1971-ben feltallt els, Intel 4004 jelzs mikroprocesszor indtotta el a mai tmegmretekben gyrtott szmtgpek (PC -k) fejlesztst. j magas szint programozsi nyelvek: PASCAL, C, C++, ADA (kategrijban a cscs). A nagyobb teljestmny hardver sszetettebb, knnyebben kezelhet programok ksztst tette lehetv. Ezrt a szmtgpek egyre gyorsabb processzorokkal, egyre nagyobb httrtrakkal s egyre nagyobb memrival kszltek. Megjelennek az els szmtgp-hlzatok. tdik generci (1993-tl): Modern programozsi nyelvek: Java, PHP, C# Ebben a generciban mr megjelentek a nem Neumann-elv, prhuzamos (az els 1993-ban) vagy asszociatv mkds mikroprocesszorok, szmtgp architektrk. Mestersges intelligencia fejlesztse jellemz. Az informatika fejldse tbb prhuzamos, ugyanakkor eltr irnyt vett. Kutatsi terletek: optikai (fnyimpulzusok alapjn mkd) szmtgp (els eredmnyek 1993-ban), kvantum szmtgp (az anyag kvantumfizikai tulajdonsgait hasznlja ki), biolgiai (pl. DNS alap) mkds szmtgp.
4

A Neumann elvek Neumann Jnos(Budapest, 1903.12.28. Washington D.C., 1957.02.08.) a XX. szzad legnagyobb hats matematikusa volt. A matematika majd minden gban j eredmnyeket rt el, s j matematikai diszciplnkat hozott ltre. A vilg szmra mgis a matematikn kvli tevkenysge rvn vlt ismert. Neve a Manhattanprojekttel s a modern elektronikus szmtgppel is sszekapcsoldott. A Financial Times 1999. december 24-i szmban a XX. szzad embernek deklarlta. 1. A szmtgp legyen soros mkds: A gp az egyes utastsokat egyms utn, egyenknt hajtja vgre 2. A szmtgp a kettes szmrendszert hasznlja, s legyen teljesen elektronikus: A kettes szmrendszert s a rajta rtelmezett aritmetikai ill. logikai mveleteket knny megvalstani ktllapot ramkrkkel (pl.: 1- magasabb feszltsg, 0 - alacsonyabb feszltsg) 3. A szmtgpnek legyen bels memrija: A szmtgp gyors mkdse miatt nincs lehetsg arra, hogy minden egyes lps utn a kezel beavatkozzon a szmts menetbe. A bels memriban trolhatk az adatok s az egyes szmtsok rszeredmnyei, gy a gp bizonyos mveletsorokat automatikusan el tud vgezni. 4. A trolt program elve: A programot alkot utastsok kifejezhetk szmokkal, azaz adatknt kezelhetk. ezek a bels memriban trolhatk, mint brmelyik ms adat. Ezltal a szmtgp nllan kpes mkdni, hiszen az adatokat s az utastsokat egyarnt a memribl veszi el. 5. A szmtgp legyen univerzlis: A szmtgp klnfle feladatainak elvgzshez nem kell specilis berendezseket kszteni. Ugyanis, Turing angol matematikus bebizonytotta, hogy az olyan gp, amely el tud vgezni nhny alapvet mveletet, akkor az elvileg brmilyen szmts elvgzsre is alkalmas.

2 Programozs alapfogalmak
Algoritmus: Olyan eljrssorozat, mellyel vges lpsben eljuthatunk egy ltalnos problma megoldsig. Program: Egy vagy tbb algoritmus megvalstsa konkrt feladatra, konkrt programozsi nyelven. Programozs mdja: Alacsony szint: gpi kd, vagy assembly jelleg nyelven trtnik a programozs, ismerni kell hozz a rendszer hardverszint mkdst. Nagyon gyorsan mkd alkalmazsok fejleszthetek gy. Magas szint: Az elvonatkoztats mrtke a konkrt hardvertl magasabb, eszkzfggetlenebb kdot lehet kszteni ilyen nyelveken. Jl tervezett fordtprogramok kpesek az alacsony szint programhoz hasonlan hatkony kdot ellltani. Szintaktika: A szveg sszelltsra vonatkoz szablyok sszessge. Szemantika: A program mkdsre vonatkoz szablyok sszessge. Fordtprogramos technika: (forrskd) >> fordt >> (trgyprogram) >> szerkesztprogram >> (futtathat program) >> betlt A szintaktikai hibk a fordtsnl, a szemantikai hibk a program futsa alatt (vagy egyltaln nem) derlnek ki. Csak szintaktikailag helyes szvegnek van trgykdja. A szerkesztprogram kszti a futtathat programot, a betlt feladata a futtathat program betltse a trba s elindtsa. Interpreteres (rtelmezs) technika: Nincs fordtprogram (>> nincs trgykd), nincs szerkesztprogram (>> nincs futtathat program). A forrsszveget elemei szerint rtelmezi, az rtelmezs utn rgtn az eredmnyt szolgltatja. Htrnya, hogy trgykd hinyban llandan kirtkel (pl. ciklusoknl), s elfordulhat, hogy az esetleges hibk helyre a tesztels ideje alatt egyltaln nem kerl a vezrls (pl. elgazsoknl), teht egyes szintaktikai hibk rejtve maradhatnak.

Azonost: Olyan karaktersorozat, amely betvel kezddik s betvel vagy szmjeggyel folytathat. A programoz sajt objektumainak megnevezsre hasznlhatja, s a programban mint nvre hivatkozhat r. Cmke: Lexiklis elem, az utasts azonostsra szolgl, a program ms pontjrl tudunk egy adott utastsra hivatkozni. Formailag eljel nlkli egsz szm vagy azonost lehet. Vltoz: Olyan programozsi eszkz, amelynek ngy komponense van: 1. Nv: Egyedi azonost, a program szvegben a vltoz mindig a nevvel jelenik meg, ez hordozza a komponenseket. 2. Attribtumok: A vltoz futs kzbeni viselkedst, az ltala felvehet rtkeket hatrozzk meg. A legfontosabb attribtum a tpus. Vltozhoz attribtum rendels deklarci segtsgvel trtnhet. 3. Cm A tr azon terletnek a cme, ahol az adott vltoz rtke elhelyezkedik. 4. rtk Az adott trrszen elhelyezked bitkombinci. A tpus eldnti, hogy hny byte-on, milyen brzolsi mddal van brzolva a vltoz, s meghatrozza az rtkhatrokat. Az rtkkomponens hozzrendelse a vltoz nevhez leggyakrabban rtkad utastssal trtnik. ltalnos formja: <vltoz neve> <rtkadsjel> <kifejezs> Pl.: A = 5; Adattpus: Az adattpust egyrtelmen meghatrozza: Tartomny: a megfelel tpus objektum innen veheti fel az rtkt) Reprezentci: brmely tartomnybeli elem megjelense a trban, azaz az brzolsi hossz (byte-ban) s az brzolsi md Az adott tpuson vgrehajthat mveletek. Tpusok csoportjai: Skalr (egyszer) tpus: Tartomnynak elemei atomiak (tpuskezel nyelvi eszkzkkel tovbb nem bonthatak), megjelenhetnek literlknt (llandknt) a program szvegben. Strukturlt (sszetett) tpus: Tartomnynak elemei egy tpuskszletbl valak (ltalban rtkcsoportot kpviselnek), adatszerkezetek megvalstsra hasznljuk. A program objektumait tpussal elltni a deklarcis utastsban kell.
7

C tpusok aritmetikai integrlis egsz int long short karakteres char vals float double szrmaztatott tmb struktra union mutat fggvny

Java tpusok elemi tpusok logikai boolean numerikus egsz char byte short int long Kifejezs: A kifejezs a programnyelvek olyan szintaktikai egysge, mely mr ismert rtkek alapjn j rtket hatroz meg. Kt komponense van: rtk s tpus. Formlisan operandusokbl, opertorokbl s kerek zrjelekbl ll. Operandusok: Az rtket kpviselik, egy operandus nmagban is kifejezst alkot (a legegyszerbb kifejezs). Operandus lehet: konstans, nevestett konstans, vltoz vagy fggvnyhvs. Opertorok: Az operandusokon vgezend mveleteket jelentik. Minden nyelv definilja sajt opertorait, nhol a programoz is definilhat sajtot. Zrjelek: Feladatuk a precedenciatblzat fellbrlsa vagy egy rszkifejezs kiemelse. ltalban megengedett a redundns zrjelek hasznlata. Kifejezs kirtkelse: Az a folyamat, amikor meghatrozdik egy kifejezs rtke s tpusa. A mveletek elvgzsnek sorrendjt befolysolja a balrl jobbra (ill. a jobbrl balra) szably s a precedenciatblzat. vals float double referencia tpusok tmb osztly

3 Utastsok:
Az utastsok a program szvegnek azon egysgei, amelyeket a fordtprogramnak elssorban fel kell ismernie, mert a fordtprogram ezekkel az utastsokkal dolgozik. Deklarcis utastsok: A fordtprogramnak szlnak, a mkdst befolysoljk, szolgltatst krnek, zemmdot vltanak, informcival ltjk el, amelyet a fordtprogram felhasznl kd generlsnl. Nem ll mgttk kd, a fordtprogram nem fordtja le ket. Pldk: Egy darab egsz tpus vltoz deklarcija: int a; Kett darab vals tpus vltoz deklarcija: float f, g; vagy double f; double g; Vgrehajthat utastsok: Kd ll mgttk, a fordtprogram lefordtja, s ezekbl generlja a trgyprogramot. Pldk: Kirja, hogy Hello! : printf(Hello!); //C vagy System.out.println(Hello!); // Java Feltteles utasts (ktirny elgaztat utasts): A program egy adott pontjn kt tevkenysg kzl valamelyiket kivlasztom s azt hajtom vgre. Alakja: HA felttel AKKOR tevkenysg1 KLNBEN tevkenysg2 A felttel logikai kifejezs, vagy amelyik nyelvben nincs logikai tpus, ott logikainak megfelel rtk kifejezs. Mkdse: 1. Ha a kirtkelds utn 2. a kifejezs rtke igaz, akkor az AKKOR utni tevkenysg hajtdik vgre. 3. Ha az rtke hamis s van KLNBEN g, akkor a KLNBEN gban lv utastsokat hajtja vgre. 4. Ezutn mindkt esetben a program a feltteles utasts utni utastson folytatdik. C s Java nyelven: if(felttel) tevkenysg1 else tevkenysg2 Pldk: Ha a vltoz rtke pozitv, kirja, hogy pozitiv, klnben azt, hogy negativ: if( a >= 0) printf(pozitiv); else printf(negativ);
9

Tbbszrs elgaztat utastsok: Feladata, hogy a program egy adott pontjn akrhny tevkenysg kzl tudjak egyet vlasztani. A vlaszts ltalban egy kifejezs rtkei szerint trtnik, lnyeges a kifejezs tpusa. C s Java nyelven: switch(kifejezs){ case rtk1: tevkenysg1 ... case rtkN: tevkenysgN default: tevkenysgM } Ciklusszervez utastsok: Feladata a program adott pontjn egy tevkenysg egyms utni tbbszrs vgrehajtsa. A ciklusnak formlisan van:
fej mag vg

fej, vg: Kln utastsokkal adjuk meg, az ismtldsre vonatkoz informcit tartalmazzk. mag: Az ismtlend tevkenysget rja le.

Feltteles ciklus: Az ismtldst egy logikai kifejezs vagy ennek megfelel tpus kifejezs szablyozza. 1. ELFELTTELES CIKLUS A felttelt a fej tartalmazza. Mkdse: 1. A felttel kirtkeldik. 2. Ha rtke igaz, a ciklusmag vgrehajtdik s elrl kezddik. 3. Ha hamis, a ciklus befejezdik. Szlssgei: Ha a felttel mr az els kirtkelsnl hamis, a mag egyszer sem hajtdik vgre: res ciklus. A kifejezs mindig igaz, a mag jra s jra vgrehajtdik: vgtelen ciklus. A ciklusmagban kell a felttelt hamiss tenni. C s Java nyelven: while(felttel){mag}

10

Pldk:
Kirja 1-tl 10-ig a szmokat: int i = 1;

while( i <= 10){ printf(%d, i); //C System.out.println(i); i = i + 1; }

//JAVA

2. VGFELTTELES CIKLUS A felttel a vgben van. Mkdse: 1. A mag lefut. 2. Kirtkeldik ki a felttel. 3. Ha igaz, elrl kezddik. 4. Ha hamis, a ciklus befejezdik. Szlssgei: A mag egyszer mindenkppen lefut, ezrt res ciklus nem lehet. Vgtelen ciklus lehet. C s Java nyelven: do {mag} while(felttel); Pldk: Kirja 1-tl 10-ig a szmokat: int i = 1; do{ printf(%d, i); //C System.out.println(i); //JAVA i = i + 1; }while( i <= 10)

11

Elrt lpsszm ciklus: Az ismtldsre vonatkoz informci a fejben van. Mindig tartozik hozz egy ciklusvltoz. A ciklus magja a ciklusvltoz egy-egy adott rtkre fut le. rtkeit egy tartomnybl veheti fel, ez a fejben van megadva (kezd- s vgrtkkel). Felvehet minden rtket a tartomnybl vagy lpskznknt egyet-egyet. Ekkor a ciklusfejben kell megadni a lpskzt. A ciklusvltoz az adott intervallumot befuthatja nvekvleg s cskkenleg is, plusz informciknt az irnyt is meg kell adni. Mkdse: 1. A futtat rendszer megvizsglja a ciklusfejet, hogy a megadott irnyban nem res-e (tartomnyteszt). 2. Ha res, ekkor res ciklus s vge, 3. klnben a ciklusvltoz felveszi az rtket, a mag lefut s elrl kezddik. Szlssgei: Lehet res s vgtelen ciklus is. C s Java nyelven: for(kezdrtkads(tartomny eleje); felttel(tartomny vge); lpskz){mag} Pldk: Kirja 1-tl 10-ig a szmokat: int i; for(i = 1; i<=10; i = i + 1){ printf(%d, i); //C System.out.println(i); //JAVA }

Ugr utastsok (nyelvspecifikus!): goto: Felttel nlkli vezrlstads. Alakja: goto cmke; Ha a cmke ltezik, a program ott folytatdik. break: Blokkbl val kilps ciklus illetve switch utastson bellrl. A program futsa a megszaktott blokk utni els utastson folytatdik. continue: Ciklusok belsejben hasznlhat, a mag htralv utastsait mr nem hajtja vgre, hanem elrl kezdi a ciklust (a kvetkez itercira ugrik). return: Befejezi az ppen fut alprogram futtatst s visszaadja a vezrlst a hvnak. Ha a hv az opercis rendszer volt, akkor a program vget r.

12

Programegysgek Az eljrs-orientlt nyelvekben a program szvegnek egymstl tbbkevsb fggetlen, nll jellemzkkel rendelkez rszeit programegysgeknek hvjuk. A programegysgek ngy fajtja az eljrs-orientlt nyelvekben: alprogram, blokk, csomag s taszk. Nem minden nyelv ismeri mind a ngyet. A klnbz programegysgek paramterekkel, globlis vltozkkal vagy llomnyok segtsgvel kommuniklnak. Minden nyelvben ltezik egy kitntetett programegysg, amelyet fprogramnak hvunk. Szerepe, hogy az opercis rendszer betltprogramja ezt indtja egy program futtatsakor, neki adja t a vezrlst. Kzvetett vagy kzvetlen mdon a tbbi egysg vezrlst is vgzi s leggyakrabban is fejezi be a programot.

Blokk Formlisan van:


fej trzs vg

Feje, vge: ltalban egy-egy alapszval vagy specilis jelsorozattal jellve. Trzse: Tetszleges utastsok helyezhetek el benne, akr deklarcis utastsok is.

Az Algol60 vezette be. Olyan programegysg, amely csak ms programegysgen bell helyezhet el, nllan fordtani nem lehet. A program szvegn bell brhol elhelyezhet, tetszlegesen egymsba skatulyzhatak. Belpni csak a fejn keresztl lehet, ha odar a vezrls, elindul, vagy GOTOval r lehet ugrani. A blokknak szerepe a hatskr definilsnl van.

13

Alprogram Egy bemeneti adatcsoportbl produkl kimeneti adatcsoportot, jl definilt specifikci alapjn. Formlis kinzete:
fej trzs vg fej: A specifikcit tartalmazza.

trzs: Tetszleges utastsok, tetszleges szmban s tetszleges sorrendben. vg: A fej s a vg ltalban kln alapszval van megadva.

Tartalmilag ngy komponense van: 1. Nv: Ez egy azonost, ezrt az alprogramot is deklarlni kell. 2. Formlis paramterek (formlis paramterlista): A procedurlis absztrakcit teszi lehetv. A fejben tallhat, ltalban kerek zrjelek kztt. A paramterlistn szerepl nevek a trzsben felhasznlhatak. 3. Trzs: Az implementcit tartalmazza, azaz itt valsulnak meg a bemeneti adatokon vgzett mveletek a kimenet (eredmny) ellltsa rdekben.
4.

Krnyezet: A globlis vltozk egyttese.

Jelentsge az jrafelhasznlhatsgban s az ltalnostsban (procedurlis absztrakci) rejlik. (jrafelhasznlhatsg: Ha a program klnbz rszein ugyanaz az utastssorozat fordul el, akkor ki lehet emelni. Procedurlis absztrakci: Lehetsg van a kiemelt szvegrsz paramterezsre, gy nem csak egy tevkenysg, hanem egy tevkenysgcsoport vgrehajtsra kpes.)

Kt fajtja ltezik, a nyelvek ltalban kln alapszval jelzik az alprogram fejben, hogy melyikrl van sz: 1. eljrs 2. fggvny

14

Eljrs Adattranszformcit hajt vgre vagy tetszleges tevkenysget vgez. Hatst paramtereinek, krnyezetnek vagy mindkettnek megvltoztatsval fejti ki. Hvsa: Utastsszeren, vgrehajtand utastsnak tekinthet. A program szvegbe brhol elhelyezhet eljrshvs, ahol vgrehajtand utasts lehet.

Befejezse: 1. Magtl, termszetes mdon: az utastsok elfogynak, a vezrlst visszaadja a hvst kvet utastsra. 2. Szablyosan, kln befejeztet utastssal. Brhol kiadhat, a program a hvst kvet utastsra tr vissza. 3. Szablytalanul ugr utastssal (GOTO).

Fggvny A matematikai fogalom megvalstsa, feladata egy darab rtk meghatrozsa. Mg egy komponense van, a fggvny ltal visszaadott rtk (visszatrsi rtk) tpusa. Ezt a fggvny neve hordozza, a fejben szerepel, a specifikci rsze. Hvsa: Csak kifejezsben hvhat meg, mert a fggvny neve ltal hordozott rtket fel kell hasznlni. Operandusknt viselkedik, a kifejezsben a visszatrsi rtkvel jelenik meg. Befejezse s rtk-hozzrendels: 1. Elklnl az rtk-hozzrendels s a visszatrs. A fggvny neve az eljrs trzsn bell mint vltoz hasznlhat (rtkad utasts bal s jobb oldaln is), befejezskor az rtke a legutoljra kapott rtk. A fggvny befejezdik, ha elrtk a vgt. 2. Nem klnl el, egy utasts van az rtk-hozzrendelsre ami rgtn vissza is tr a hvs helyre. 3. Szablytalanul, ugr utastssal. Mellkhats: Ha a fggvny megvltoztatja paramtereit vagy krnyezett, akkor ezt a tevkenysget mellkhatsnak hvjuk. A nyelvek ltalban nem javasoljk, de megengedett.

15

Rekurzi Alprogramok hvsnak lpsei: 1. vezrlstads 2. kdvgrehajts 3. befejezs 4. vezrls-visszaads Alprg1 Alprg2

Ha ez a folyamat tbbszr ismtldik, hvsi lncrl beszlnk. A lnc dinamikusan vltozik, eleje mindig a fprogram. Fggetlenl attl, hogy mkdik-e, minden elemt aktvnak nevezzk. Aktv alprogram jra meghvst rekurzv hvsnak (rekurzinak) nevezzk. Kzvetlen rekurzi: A rekurzi egyszer esete, az alprogram sajt magt hvja meg. Kzvetett rekurzi: Az alprogram egy msik, a hvsi lncban szerepl alprogramot hv meg. Kzvetlen rekurzi: Kzvetett rekurzi:

16

Paramtertads A paramter a kommunikci eszkze, a paramtertads akkor trtnik meg, amikor kommunikci lezajlik. Mindig van hv s hvott fl, k kommuniklnak. A hv tetszleges program lehet, a hvott pedig lehet fggvny vagy eljrs. A hvsnl definiljuk, hogy az aktulis paramternek milyen komponense kerl t a hvotthoz (pl. rtke vagy cme) Paramter-fajtk: Formlis paramterek: Az alprogram fejben (specifikciban) szerepl tpus-nv prok, alprogramonknt egy van belle. Aktulis paramterek: Az alprogram hvsakor meghatrozott, konkrt rtkek, informcik, melyeket a formlis paramterek kapnak meg a paramtertads sorn. Ahny hvs, annyi van belle. Paramtertadsi mdok: rtk szerinti paramtertads: Egyirny kapcsolat, az alprogram nem tud semmit a hvrl, a kapott rtket dolgozza fel. Az aktulis paramter kifejezs (valamilyen rtk) lehet. Cm szerinti paramtertads: Ktirny kapcsolat, az alprogram ismeri a hv cmt, meg tudja vltoztatni a hv oldaln lv vltozt. Az aktulis paramter vltoz lehet.

Hatskr A nevekhez kapcsold fogalom, a nevek jellemzje. A hatskr a program szvegnek azon rsze, ahol egy adott nv ugyanazt az objektumot nevezi meg (az adott nv jellemzje, felhasznlsi mdja ugyanaz). Minden nvhez meg kell tudni mondanom, hogy a program szvegnek mely rszn jelenti ugyanazt az objektumot. lettartam A vltozk fontos jellemzje, a futsi id azon rsze, amelyben az adott vltoznak van cmkomponense. Mind a hatskr, mind az lettartam a programegysgekhez ktdik.

17

4 Adatszerkezetek s algoritmusok
Rendszer: A vals vilgban rendszerekrl beszlnk. A dolgok sszetevi egymssal klcsnhatsban vannak, viselkednek, tulajdonsgaik vannak. Rendszernek nevezzk a kzs ismrv alapjn sszetartoz, egymssal meghatrozott kapcsolatban lv elemek jl krlhatrolt egyttest. Elem: Az elem a rendszer azon rsze, amelyet azrt vlasztunk ki, hogy vizsgldst vgezznk rajta. Segtsgvel jellemezhet a rendszer. Klcsnhats: A klcsnhats az elemek kztti olyan kapcsolat, relci, amely az adott elemeket a rendszer rszv teszi. Modellezs: A vals rendszerek tlsgosan komplexek, a teljes sszetettsgkben ltalban nem tudjuk kezelni ket, gy egyszerstsi mdszerekre van szksg. Clunk a komplex rendszerek leegyszerstse. A modellezs lnyege az absztrakci, azaz az elemek lnyegt, kzs tulajdonsgait kiemeljk, a klnbzsgeket elhanyagoljuk s a modellbe ezeket a kzs tulajdonsgokat vonjuk be. A modellben vizsglunk, krdseket tesznk fel, kvetkeztetseket vonunk le, amit a vals rendszerre visszavezetnk. Clja, hogy a vals vilgrl olyan ismereteket szerezznk, melyek helyesen tkrzik a vals vilgot. Adatnak nevezzk a tnyek, elkpzelsek nem rtelmezett, de rtelmezhet formban rgztett alakjt (pl. 1995). Az informci az adatokon vgzett gondolati mvelet (rtelmezs) eredmnyeknt ll el (pl. 1995-vszm). A rendszerben az elemek tulajdonsgait, klcsnhatsait adatokkal rjuk le. Ezt nevezzk adatmodellnek. Az elemek viselkedst, a rendszer mdosulsait eljrsmodellnek nevezzk.

18

Adatszerkezetek osztlyozsa

Homogn adatszerkezet: Az adatelemek azonos tpusak. Heterogn adatszerkezet: Az adatelemek klnbz tpusak.

Brmely adatszerkezet mindig vges szm adatelemet tartalmaz.

19

Mveletek az adatszerkezetekkel Ltrehozs: Nem volt adatszerkezet, ltrehozs utn lesz. Bvts vagy beszrs (csak dinamikus adatszerkezeteknl): j adatelemek kerlnek be az adatszerkezetbe, az adatelemek szma n.

Trls: Megklnbztetjk a logikai s fizikai trlst: fizikai trls: Cskken az adatszerkezet elemeinek a szma, az addig ott lev eleme(ke)t tvoltom el. logikai trls: Az adatszerkezet elemeinek a szma nem cskken, a trlni kvnt elemeket egy specilis jelzssel (trlt jellel) ltom el, ezek a tovbbi feldolgozsban nem vesznek rszt.

Csere: Az elemek szma nem vltozik, csak valamely elem vagy elemek rtke, mert kicserlem egy msik rtkre. Rendezs: Valamilyen szempont szerint sorrendet lltok fel az elemek kztt. Keress: Egy adott (kvnt) tulajdonsg elemet kivlasztok a tbbi kzl. Bejrs (elrs): Az adatszerkezet minden elemt rinteni akarom, a krds az, hogy ezt milyen sorrendben tehetem meg. Feldolgozs: Az adott adatszerkezet hogyan s mire hasznlhat.

Adatszerkezetek trolsa A logikai adatszerkezeteket le kell kpezni a trba. A memriban ktfle mdon trolhatunk adatszerkezeteket. Folytonos (szekvencilis, vektorszer) trolssal. A memriban trolt elemek egy folytonos trterleten egyms utn helyezkednek el, s az adatttelek trolsi jellemzi azonosak (tpus, brzolsi md, hossz). Ismerni kell a trterlet kezdcmt, a trolsi jellemzket, s az elemek szmt. Ilyen trolsnl minden elemet kzvetlenl meg tudok fogni. Minden adatszerkezet trolhat ilyen mdon. Sztszrt trols. Az adatelemek trolsi jellemzi klnbzek lehetnek. Minden adatszerkezet trolhat sztszrtan. A tnyleges adatelem mellett ltezik a trrsznek egy gynevezett mutat rsze is, amely olyan informcit tartalmaz, hogy az adott elem utn melyik msik elem kvetkezik az adott adatszerkezetben.

20

Struktra nlkli adatszerkezetek Az egyes adatelemek fggetlenek, nincs kzttk kapcsolat. Az elemek kztt nincs sorrend, mindegy, hogy hol helyezkednek el egymshoz kpest. Az egyes elemekrl meg tudom mondani, hogy az adatszerkezetnek elemei-e, mg ha megkeverem ket, akkor is. Halmaz Matematikai halmazfogalom megjelense adatszerkezet szinten. A halmaz dinamikus s homogn. Specilis adatszerkezeti mveleteik vannak (, , , \ | IN, +, *, ): , IN: Segtsgkkel meg lehet llaptani, hogy egy adott elem benne van-e a halmazban, vagy sem. Eredmnye mindig logikai rtk. , +: A multihalmazban az uni az sszes elem unijt jelenti, teht ha pl. az egyik halmazban "a" tszr szerepel, a msik halmazban hromszor, akkor unijukban nyolcszor fog. Ha A B = C , akkor |A| + |B| = |C|. , *: Ugyanez igaz a metszetkpzsre is, teht az elbb emltett kt halmaz metszetben "a" hromszor fog szerepelni. MVELETEK Ltrehozs: Megadhatok egy felttelt. Azok az elemek lesznek a halmaz elemei, amelyek igazz teszik a felttelt, pl. X={200-nl nem nagyobb pozitv egsz szmok} Felsorolhatom a halmaz elemeit, azaz konkrtan megadom ket, pl. Y={fekete, piros, kk, fehr, srga} Van egy res halmazom, s ehhez unival pakolom hozz az elemeket, s gy jn ltre a halmaz. Bvts: Unikpzssel. Trls: Klnbsgkpzssel. Csere: Nem ltezik, mert nem tudom megfogni az elemeket. Szimullt csert hajthatok vgre, ha kitrlk egy elemet, s jat viszek be helyette. Keress: Nincs, mert nem tudom megfogni az elemeket. Rendezs: Nem rtelmezhet. Bejrs: Nincs, mert nem tudom megfogni az elemeket. Feldolgozs: A definilt mveletek alkalmazsa.

21

Asszociatv adatszerkezetek Tmb A legismertebb, a leggyakrabban alkalmazott statikus adatszerkezet, minden adatelem megfoghat. A tmb minden eleme egsz szmok sorozatn keresztl rhet el (ezek az egsz szmok a tmbindexek), az indexek alkalmazsa teszi azt lehetv, hogy minden elem megfoghat legyen. Az index tetszleges egsz szm lehet, ltalban nulltl vagy egytl kezddik. Van fels s als hatra, amelyek az indextartomnyt definiljk. A tmbhz hozztartozik, hogy minden dimenziban rgztem az indexek kezd s vgrtkt, rgztek egy intervallumot, ez meghatrozza az elemek szmt. Ha az adatelemekbl egy adott elem kivlasztst egy index segtsgvel meg tudom valstani, akkor egydimenzis tmbrl vagy vektorrl beszlnk. Ha minden elemet kt index segtsgvel lehet kivlasztani, akkor ktdimenzis tmbrl, mtrixrl beszlnk. A ktdimenzis tmb sorokbl s oszlopokbl ll. MVELETEK Ltrehozs: A szerkezet ltrehozsa, nem az rtkek. Megmondom a dimenzik szmt s minden dimenziban az indextartomnyt. A szerkezetet hozom ltre, s mivel a szerkezet statikus, gy mr az elejn eldl, hogy a tmb hny elemet tartalmaz. Ebbe a szerkezetbe pakolom bele az elemek rtkt. Bvts: Nem ltezik olyan, hogy j helyre j elem bevitele, mivel a tmb statikus, az adatelemek szmt ltrehozskor fixltam. Trls: Errl sem beszlhetnk, mert az adatelemek szmt nem tudom cskkenteni. Csak logikai trlsrl beszlhetnk, mikor az adatelemek rtket egy specilis rtkre lltom. Csere: Indexek alapjn brmelyik elemet kivlaszthatom, s rtkt fellrhatom. Elrs: kzvetlen. Brmelyik elem a tbbitl fggetlenl megfoghat, az indexekkel hivatkozom r. Rendezs: ltalban egydimenzis tmbnl foglalkozunk vele, ekkor az sszes rendezsi mdszer alkalmazhat. Keress: Mindenfle tmbnl rtelmezhet, az sszes keressi algoritmus alkalmazhat. Bejrs: rtelmezhet, tbbdimenzis tmbknl igazn rdekes. Feldolgozs: Az indexeken alapul, azon, hogy segtsgkkel brmely elem kzvetlenl elrhet, feldolgozhat.
22

Egyszer algoritmusok Tmbk ltrehozsa, kezelse C s Java nyelven: Deklarci: tpus nv[] = {rtk1, rtk2, , ertkN}; // C tpus[] nv = {rtk1, rtk2, , ertkN}; // Java Pl: egsz szmokat tartalmaz, t elem tmb: int T[] = {4, 6, 2, 7, 10}; // C int[] T = {4, 6, 2, 7, 10}; // Java Elemekhez val hozzfrs az indexeken keresztl (indextartomny: 0-tl (N-1)-ig tart, azaz a fenti deklarcit hasznlva T-re: 0..4): T[0] rtke: 4 T[1] rtke: 6 ... T[4] rtke: 10 CSERE ALGORITMUSA Egy segdvltoz segtsgvel a tmb kt elemnek rtkt kicserljk pl. az 1-es s 3-as index elemeket: int S; S = T[1]; T[1] = T[3]; T[3] = S;

BEJRS ALGORITMUSA
Minden tmbelemen vgigmegy oly mdon, hogy egy ciklus segtsgvel egy vltoz (pl.: I) az indextartomnybl minden sorszmot felvesz, amit aztn a ciklusmagban felhasznlunk az elemekhez val hozzfrshez: int I; //Ez lesz a ciklusvltoz for(I = 0; I < 5; I++){ T[I] //A ciklusmagban gy frnk hozz a tmbelemhez } Hasznlhat pldul a tmb minden elemnek kiratsra, ekkor a ciklusmag a kvetkez lesz: printf(%d, T[I]); System.out.println(T[I]); //C //Java

23

SSZEGZS ALGORITMUSA A tmb minden elmre elvgznk egy mveletet, pl. sszeadst vagy szorzst: int I; //Ez lesz a ciklusvltoz int Osszeg = 0; //Ez trolja az sszeget for(I = 0; I < 5; I++){ Osszeg = Osszeg + T[I]; //A ciklusmagban gy vgezzk el az adott mveletet } printf(%d, Osszeg); //C System.out.println(Osszeg); //Java MEGSZMLLS ALGORITMUSA Megszmoljuk, hny darab elem rendelkezik a tmbben egy adott tulajdonsggal pl. hny darab 5-nl nagyobb szmot tartalmaz?: int I; //Ez lesz a ciklusvltoz int Darab = 0; //Ez szmolja az elemeket for(I = 0; I < 5; I++){ if(T[I] > 5) Darab++; //Ha az elem adott tulajdonsg, nveljk a Darab-ot } printf(%d, Darab); //C System.out.println(Darab); //Java KIVLASZTS ALGORITMUSA Lineris keress megkeresi sorban az els olyan tmbelemet, amely rendelkezik egy adott tulajdonsggal, majd megmondja annak sorszmt (indext) pl: melyik elem rtke egyenl 7-tel?: int I; //Ez lesz a ciklusvltoz int Sorszam = (-1); //Ez lesz a kivlasztott elem sorszma for(I = 0; I < 5; I++){ if(T[I] == 7){ Sorszam = I; //Ha az elem adott tulajdonsg, eltroljuk az indext break; //..s befejezzk a keresst. } } //Ha a kezdeti, specilis sorszm (-1) nem vltozott, akkor nem talltuk meg, klnben kirjuk az indext if(Sorszam == (-1)) printf(Nincs meg!); else printf(%d, Sorszam); //C if(Sorszam == (-1)) System.out.println(Nincs meg!); else System.out.println(Sorszam); //Java

24

MINIMUM-MAXIMUM KERESS ALGORITMUSA Kikeresi egy tmb legkisebb ill. legnagyobb rtk elemt: int I; //Ez lesz a ciklusvltoz int Min = T[0]; //Ez trolja a keresett szls rtket int Max = T[0]; //Ez trolja a keresett szls rtket for(I = 1; I < 5; I++){ //Ha az aktulis elem kisebb/nagyobb, mint az eddigi, akkor eltroljuk if(T[I] > Max) Max = T[I]; //gy maximum keress if(T[I] < Min) Min = T[I]; //gy minimum keress } printf(%d, %d, Min, Max); //C System.out.println(Legkisebb: + Min + Legnagyobb: + Max); //Java EGYSZER CSERS RENDEZS sszehasonlt minden elemet minden elemmel, s ha olyant tall, aminek nem j egymshoz kpest a sorrendje, akkor megcserli ket: int I, J; //Ezek lesznek a ciklusvltozk for(I = 1; I < (5-1); I++) for(J = I+1; J < 5; J++) if(T[I] > T[J]) csere(T[I], T[J]); if(T[I] < T[J]) csere(T[I], T[J]); //gy nvekv sorba rendez //gy cskken sorba rendez

25

5 Adatbevitel s -kivitel
A fjl, mint programozsi eszkz I/O (input-output): Az az eszkzrendszer, amit a programban akkor hasznlunk, ha a perifrikkal akarunk kommuniklni. Hardverfgg, opercis rendszer-fgg, a leginkompatibilisebb rsze a nyelveknek. Az I/O alapja az llomny. A PROGRAM SZVEGBEN VAL MEGJELENS ALAPJN: Implicit llomny: Nem jelenik meg a program szvegben. Ilyenkor az utasts a szabvny ki- ill. bemenetet hasznlja rsra, olvassra. Pl.: printf(Hello!); a kpernyre r (szabvny kimenet). Explicit llomny: Megjelenik a program szvegben, logikai llomnyknt hasznlom. A MEGJELENS HELYE ALAPJN: Logikai llomny: A program szvegben ezzel az llomnnyal dolgozom. Nvvel rendelkez objektum (programozsi eszkz), teht deklarlni kell. Fizikai llomny: A perifrin megjelen adatllomny. AZ LLOMNY FUNKCIJA SZERINT LEHET: Input llomny: Csak olvasni lehet belle. A feldolgozs eltt mr lteznie kellett, s utna is vltozatlanul ltezni fog. Output llomny: Csak rni lehet, a feldolgozs eltt nem ltezett. Input-output llomny: rni s olvasni is lehet (vltoztathat), a feldolgozs eltt nem felttlenl ltezik. AZ ADATTVITEL A TR S A PERIFRIA KZTT LEHET: Konverzi nlkl: Binris adattvitel. Az adatbrzols nem vltozik, ugyanaz a bitminta jelenik meg mindkt helyen (perifrin s a trban). Van konverzi: Ms az adatok reprezentcija a trban s a perifrin. Pl: Az adat a perifrin egy folytonos karakterlnc (12 - kt bet, kt bjton brzolva), a trban pedig valamilyen reprezentci (pl. egsz szm 12 egy bjton brzolva).

26

MVELETEK LLOMNYOKKAL

1. Logikai llomny deklarlsa: Deklarlsnl a nyelv llomnyrendszernek megfelel objektum jn ltre, egy vltoz keletkezik. 2. Logikai s a fizikai llomny sszerendelse: Megmondom, hogy a deklarlsnl ltrejtt objektumhoz (vltozhoz - logikai) melyik kls (perifrin lv - fizikai) fjl tartozik. Az egyetlen szituci, ahol a fizikai llomny megjelenik a program szvegben. 3. Megnyits: A megnyits folyamn a futtatrendszer ellenrzi, hogy az sszerendelt logikai s fizikai llomnyok jellemzi egyeznek-e, vgrehajthat-e a mvelet (jogosultsgok!). Csak nyitott llomnnyal lehet dolgozni. Az llomny funkcija (input/output) ltalban itt dl el. 4. rs/olvass: A nyelv r-olvas eszkznek meg kell adni a logikai llomnyt, s sok minden ms paramtert is (formtum, maszk, egyb informci) melyek a mvelet elvgzshez kellenek. Itt trtnik meg maga az adattvitel s a konverzi is benne, ha szksges. 5. llomny lezrsa: Sok rendszer-adminisztrcis tevkenysggel jr, a knyvtri bejegyzsek is ekkor szletnek meg a fjlrendszerben. Az output llomnyokat le kell, az input llomnyokat illik lezrni. A rendszer a program vgn mindenesetre lezrja ket. A fjl mint adatszerkezet A LOGIKAI LLOMNY FOGALMI RENDSZERE A logikai llomny adatelemekbl (adatttelekbl) pl fel. Az adatelem (adatttel) a logikai llomny legkisebb, nllan rtelmezhet rsze. Jellemzi: nv tpus: milyen tpus rtket vehet fel hossz: ltalban karakterekben rtend Az adatcsoport az adatelemek nll nvvel elltott egyttese. (pl. a lakcm tartalmazza az irnytszmot, teleplsnevet, utct, hzszmot). A logikai rekord az adatelemek s adatcsoportok adott sorrend, logikailag sszetartoz egyttese. Nincs nll neve. A logikai rekordazonostnak nevezzk azt az adatelemet, vagy az adatelemeknek azon egyttest, amelynek rtke minden rekordra nzve egyedi, azaz minden konkrt rekordban ms s ms (pl. szemlyi szm, sorszm stb.). Ha ez egyetlen adatelem, akkor egyszer, egybknt sszetett rekordazonostrl beszlnk.

27

A FIZIKAI LLOMNY FOGALMI RENDSZERE A mez klcsnsen egyrtelmen felel meg az adatelemnek. A klnbsg az, hogy jellemzje az brzolsi md (bitminta), hiszen megjelenik a httrtron. A hossz itt byte-okban rtend. A mezcsoport megfeleltethet az adatcsoportnak, az adatcsoport megjelentsre szolgl. A blokk megfeleltethet a logikai rekordnak. A blokk az az adatmennyisg, amely egyszerre mozog a tr s a perifria kztt. Az adattvitel egysge, byteban rtend. Kezelse rendszerfgg. MVELETEK Mindig logikai rekordra vonatkoznak. Ltrehozs: Az llomnyt valamelyik httrtron hozom ltre. Ki kell vlasztanom a fizikai llomny szervezsi mdjt, vagyis az llomny trolsi szerkezett. Az adott szervezsi mdnak megfelelen kell a logikai rekordokat elhelyeznem a fizikai llomnyban. Egyszer llomnyszerkezetek: szerilis, szekvencilis, direkt Jellemzsk: llomnyszerkezet Van-e kapcsolat a logikai Van-e kapcsolat a logikai rekordazonost s a rekordazonostk kztt? logikai rekord httrtron elfoglalt helye kztt? Szerilis: Szekvencilis: Direkt: nem nem igen nem igen igen

Szerilis llomny: Olyan llomny, amelynek nincs szerkezete, a rekordok sorrendje tetszleges. Nem hasznlja fel, hogy van rekordazonost. Mindenfle httrtron megjelenhet, mindenfle rekordformtumot tud kezelni. A C-nyelv ezt hasznlja. Szekvencilis llomny: Olyan llomny, ahol a rekordok az azonost (elsdleges kulcs) szerint rendezettek. Ez egyrtelm sorrendet ad, gy biztostja a szerkezetet. Ltrehozhat mind szalagon, mind lemezen. Direkt llomny: Az azonostk s az adott azonostj rekord lemezen elfoglalt helye kztt klcsnsen egyrtelm lekpezs van. Ha tudom az azonostt, meg tudom mondani a helyt s fordtva. Csak lemezen (kzvetlen elrs perifrin) hozhat ltre.

28

Bvts: Az llomny rekordjainak darabszma n, j rekord kerl be az llomnyba. Trls: Logikai trls: Az llomny rekordjainak darabszma nem vltozik, de a logikailag trlt rekordok meg vannak jellve, a tovbbiakban a feldolgozsban nem vesznek rszt. Rendszerfgg a megvalstsa: a) Trlbjtot alkalmaznak, hogy eldnthet legyen, hogy tnyleges rekord-e, vagy mr logikailag trlt. Ez plusz 1byte-on trolhat. b) Logikai trlst jelentheti valamelyik mez tartalmnak fellrst specilis bitkombincira. Fizikai trls: lesen elvlik a logikai trlstl. Ilyenkor az llomny rekordjainak darabszma cskken, a rekordok nem nyerhetek vissza. Nehezebb vgrehajtani. A krds az, hogy a rendszer egyltaln tud-e ilyet. ltalnos az a vlasz, hogy nem. Csere: A rekord brmely mezjnek (kivve a rekordazonostt) rtkt cserlhetem valamely ms rtkre. Elrs: Olyan tevkenysg, mikor az llomny brmely rekordjt akarom megfogni. Figyelembe kell-e venni a tbbi rekordot? soros elrs: Alapja a rekordok fizikai sorrendje (ahogyan elhelyezkednek a rekordok a httrtron). szekvencilis elrs: Az alapja valamilyen logikai sorrend, az x. rekordot csak az eltt llk elrse utn rhetem el. kzvetlen elrs: Alapja az elsdleges, vagy msodlagos kulcs, brmely rekordot egybl megtallok, fggetlenl a fizikai s logikai sorrendtl. Ilyen elrs csak lemezen lehetsges. Keress: Soros s szekvencilis elrsnl egy kitntetett rekordot kell megfognom. Rendezs: Kulcs alapjn trtnik. Feldolgozs: Egy adott llomnyban lv informcihoz akarok hozzfrni. Egy-egy szerkezetet az minst, hogy a feldolgozst mennyire segti. A feldolgozs alapja a szerkezet s az elrs, keress. jraszervezs: Az llomnyt a httrtr egy msik terletn jra ltrehozzuk gy, hogy kzben megvltozik vagy a szerkezete, vagy a tartalma, esetleg mindkett.

29

Pldk az I/O eszkzrendszer hasznlatra klnbz nyelvekben LOGIKAI FJL DEKLARLSA C: FILE * fAdataim; //Ez az egyetlen (szerilis) fjltpus ltezik Java: Reader fAdataim = new FileReader(c:\\adatok.txt); //Input szveges fjl OutputStream fAdataim = new FileOutputStream(adatok.dat); //Output binris Pascal: fAdataim : Text; //Szveges fjl fAdataim : File; //Tpus nlkli fjl LOGIKAI S FIZIKAI FJL SSZERENDELSE C: fAdataim = fopen(c:\\adatok.txt, rt); fAdataim = fopen(c:\\adatok.dat, wb); Java: lsd deklarciban Pascal: assign(fAdataim, adatok.txt); FJL MEGNYITSA C: lsd sszerendelsnl Java: lsd deklarciban Pascal: reset(fAdataim); rewrite(fAdataim);

//Input szveges fjl //Output binris fjl

//Input fjl //Output fjl

RS / OLVASS C: char c = fgetc(fAdataim); //Egy karakter beolvassa szveges fjlbl fwrite(buffer, 1, 32, fAdataim); //32 bjt adat kirsa pufferbl binris fjlba Java: int c = fAdataim.read(); //Egy adatelem olvassa (itt bjt vagy karakter) fAdataim.write(a); //Egy adatelem rsa (itt bjt vagy karakter) Pascal: readln(fAdataim, a); //Olvass szveges fjlbl BlockWrite(fAdataim, buffer, 1); //Egy blokknyi adat rsa pufferbl binris fjlba LEZRS C: fclose(fAdataim); Java: fAdataim.close(); Pascal: close(fAdataim);

30

Tmb elemeinek kirsa szveges llomnyba: C NYELVEN, A BEJRS ALGORITMUST FELHASZNLVA FILE * fAdataim = fopen(tombom.txt, wt); int T[] = {2, 4, 8, 3, 1, 9, 12}; int i; for(i = 0; i < 7; i++){ fprintf(fAdataim, %d , T[i]); } fclose(fAdataim); JAVA NYELVEN UGYAN EZ: Writer fAdataim = new FileWriter(tombom.txt); int[] T = {2, 4, 8, 3, 1, 9, 12}; for(int i = 0; i < T.length(); i++){ fAdataim.write(T[i]); } fAdataim.close();

31

Anda mungkin juga menyukai