Ezt hogy lehet lekódolni? Vagy valami trükközéssel, de van általános szabály is. Nézzük a trükközést:

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Ezt hogy lehet lekódolni? Vagy valami trükközéssel, de van általános szabály is. Nézzük a trükközést:"

Átírás

1 A struktogramok és átírásuk C++ kóddá A szekvenciális 1 programok (vagy legalábbis az a részük, amit struktogrammal megadunk) alapvetően 5 félék lehetnek: üres utasítás értékadás szekvencia elágazás ciklus Ezek kombinálásából épül fel még a legbonyolultabb program lényegi algoritmusa is. Ebből az következik, ha ezeket az építőköveket tudjuk értelmezni és ezekből kódolni, akkor közvetetten bármilyen összetett programmal is el tudunk bánni, ugyanazzal a megközelítéssel, technikával, a struktúrája mentén. Lássuk az öt féle programot egyesével! Üres utasítás Ez a legegyszerűbb eset, a struktogramban egy kötőjel (esetleg egy SKIP felirat) felel meg neki, kódolása annyi, hogy nem írunk semmit 2 Felmerülhet a kérdés, hogy hol használunk ilyet. Ebben a dokumentumban, később, az elágazásról szóló részben van példa arra, hogy a struktogram szintjén üres utasítást kelljen írnunk. A kód szintjén pedig gyakran előfordul az ún. kivételkezelés során a catch blokkban. De ez nem ennek a félévnek a témája. Értékadás Egy olyan egyszerű utasítás, amely egy vagy több változónak értéket ad. Struktogramban a legyen egyenlő jel baloldalán felsoroljuk a változókat, a jobb oldalán pedig sorrendhelyesen azokat az értékeket vagy kifejezéseket, amelyeket ezeknek a változóknak értékül adunk. Ezt a struktogramban úgy kell érteni, hogy több változónak egyszerre, egy időben adunk értéket (szimultán értékadás), de a C++ kódban ez a fajta párhuzamosság nem megvalósítható. Ha a változóinknak nincs sok köze egymáshoz, akkor felcseréljük a szimultán értékadást egyszerű értékadások szekvenciájára (a sorrend mindegy): a=a+1; b=b+1; vagy b=b+1; a=a+1; 1 a programsorok, mint utasítások egymás utáni végrehajtásán alapuló modell 2 esetleg, írhatnánk csak úgy magában egy darab pontosvesszőt mivel minden utasítást pontosvessző zár le, így az üreset is.

2 Ha viszont egy változót bal és jobb oldalon is felsorolunk, akkor baj van:??? Itt ezt úgy értjük, hogy az értékadás végrehajtása után a növekedjen meg eggyel és b értéke legyen a régi értéke+1, azaz (itt, ebben a példában legalábbis) pontosan az, ami a végrehajtás utáni értéke lesz Ezt hogy lehet lekódolni? Vagy valami trükközéssel, de van általános szabály is. Nézzük a trükközést: a=a+1; b=a; Nyilván ez nem valami általános megoldás, erre a feladatra speciel használható. Mivel a-nak is és b-nek is a régi értéke +1 kell, hogy legyen az új értéke, ezért előbb a-t megnöveljük, majd ezt b-nek értékül adjuk. Nagyon vigyázni kell ezzel, ismernünk kell a műveleteket, amiket használunk. Most képzeljük el mert miért ne hogy a hozzáadás műveletünk úgy működik, hogy minden meghívásakor kiír egy üzentet. Amikor én a stukiba két helyre írok összeadást, akkor számítok erre, hogy ez két üzenetet meg fog jelenni, de a mellékelt kódban csak egy fog megjelenni Tehát, ez a fajta módszer gondokat okozhat az ún. mellékhatásos függvények hívása esetén. Viszont a szimultán értékadásnál nincs sorrendiség a felsorolt változók között (hisz eredetileg mind egyszerre kap értéket), tehát a fentit így is át lehet írni C++-kódra: b=a+1; a=a+1; és így máris két összeadás szerepel a kódban, ugyanúgy mint a struktogramban. Az a=a+1; b=a+1; sorrend már nem lenne helyes, hiszen itt b végül a eredeti értékénél kettővel nagyobb lenne. Amúgy két szám, és a rajtuk elvégzett sima mezei összeadás esetében az első megoldás a javasolt átírás, hiszen hatékonyabb (=kevesebb műveletet kell elvégeznie a processzornak gyorsabb a program), mint a második verzió. Általánosabb megoldás, ha kimentünk minden problémás változót egy-egy segédváltozóba, majd ezen segédváltozók értékét használjuk az értékadásokban: int c=a; a=c+1; b=c+1;

3 Ez a logika van a swap-művelet (azaz a két változó megcserélése) átírása mögött is: int c=a; a=b; b=c; Szekvencia Két vagy több (akár bonyolultabb) utasítás egymás utáni végrehajtását jelenti. Ennek megfelelően a kódja is mindössze annyi, hogy egymás után sorban leírjuk a szekvenciában részt vevő programrészekhez tartozó kódokat Itt persze számít a sorrend, ami a struktogramban felül van, az kerül a kódban is felülre : a=4; b=a+1; Elágazás Ennek többféle fajtája is van. A struktogram szintjén megkülönböztetjük a két- vagy többágú elágazást, a C++ pedig az egyágú, kétágú, többágú és switch/case eseteket. Nézzük elsőnek a kétágú elágazást: if(a>0) b = a; b = -a; A kétágú elágazás struktogramja mindig egy feltétel vizsgálattal indul. A két átlós pöcök közé egy logikai kifejezést kell írni, pl, hogy a változó pozitív-e Ha ez igaz, akkor a bal oldali (igaz-ág) kódja fut le (itt persze egész nagy, összetett program is lehet), ha nem, akkor pedig a jobb (hamis-ág). Kódban az if kulcsszót a feltétel követi kerek zárójelek között, majd kapcsos zárójelek között 3 az igaz-ág kódja, majd egy (különben) kulcsszót követően kapcsos zárójelek között a hamis-ág kódja. 3 Általános C++-os szabály: ha a kapcsos zárójel közti utasításblokk (if, for, while magjában) csak egy utasításból áll, akkor elhagyható a kapcsos zárójel. Illetve a kapcsos zárójelekbe írt programblokkok után (tehát maga a kapcsos zárójel után) nem kell pontosvesszőt írni, annak ellenére sem, hogy amúgy minden utasítást azzal kellene zárni. Ezeket maga a kapcsos zárójel lezárja.

4 Nézzünk egy ilyen kétágú elágazásos struktogramot: if(a>0) b = a; Ez elég gyakran előforduló helyzet, hogy az egyik ág üres. Ekkor (bár a fenti átírás is működik) használjuk az ilyen csonka kétágú elágazások átírására a C++ egyágú elágazását, azaz az ágat egyszerűen hagyjuk el, ugyanis ha egy C++-os if szerkezetben nem fedünk le minden esetet, akkor a C++-fordító automatikusan hozzágondol egy ilyen üres törzsű ágat. if(a>0) b = a; Persze elvileg a baloldali ág is lehet üres: if(a>0) b = a; Ez bár helyes és működik is, de azért elég ocsmány. Alakítsuk át tagadjuk le a feltételt és cseréljük meg az ágakat, és máris szebb alakú elágazást kapunk. if(a<=0) b = a;

5 Mi a helyzet akkor, ha nem csak két eset van? Ezeket hívjuk többágú elágazásnak. if(a>0) b = 1; if(a==0) b = 0; if(a<0) b = -1; A struktogramot úgy kell érteni, hogy ha a fent felsorolt feltételek valamelyike igazra értékelődik ki, akkor az ő hozzá tartozó ág fut le. Tehát ha a pozitív, akkor b értéke 1 lesz stb. A kétágú elágazás struktogramjánál nem fordulhatott elő, de itt igen, mi van, ha az ágak átfednek, illetve mi van, ha nem fednek le minden esetet? A struktogramban ha az ágak átfednek (pl. van egy és egy feltételű ág is), akkor amikor a változó értéke pozitív, akkor az átfedő ágak valamelyike fog végrehajtódni. Nem tudjuk melyik, de azt tudjuk, hogy csak az egyik. Ha a programot többször is futtatom, nincs rá garancia, hogy mindig ugyanaz az ág fog lefutni. Ezt hívják nemdeterminisztikus működésnek, a C++ viszont ebben a kérdésben determinisztikusan viselkedik. Ha az ágak nem fednek le mindent, tehát pl. a fenti elágazásból kimaradt volna az eset és ha a épp egyenlő 0-val, akkor a struktogram szerint ilyenkor a program elszáll. C++-ban ez se fordulhat elő, hiszen mint már korábban említettem, a C++ mindig hozzáír az elágazásokhoz egy üres ágat, tehát ha egyik ág se teljesül, akkor ez az üres blokk fog lefutni, a program továbblép, nem fagy be. A C++ elágazásában tehát nincs nemdeterminisztikusság, ezt fejezik ki a többágú szerkezet során használt kulcsszavak is. A fenti kód így működik: Megvizsgálja, a pozitív-e. Ha igen, lefut az első ág, és vége az elágazásnak. Ha nem, megvizsgálja 0-e. Ha igen, lefut a 2. ág és vége az elágazásnak. Ha nem, megvizsgálja a 3. feltételt, és ha az igaznak bizonyul, lefut a 3. ág, különben az odaképzelt üres törzsű ág. Tehát a C++-ban leírási sorrendben értékelődnek ki az ágak és kizárják egymást. Tekintsük ezt a példát: if(a>0) b=1; if(a>=0) b=2; Itt b, ha a pozitív, biztosan 1 lesz. Pedig az ezzel közel ekvivalens struktorgram szerint akár 2 is lehetne. Mindez azért, mert az különben pedig nem történik semmi. feltételvizsgálat van előbb. Ha a nulla, akkor b 2 lesz,

6 Mi van, ha kihagyjuk az szócskát? A kód akkor is értelmes, de elképzelhető, hogy nem azt csinálja, amit várunk: if(a==0) a=1; if(a==1) a=2; Azt várjuk, hogy ha a értéke 0, akkor legyen 1, ha 1, akkor meg legyen 2. Ehelyett mit kapunk? Ha a értéke 0, akkor bizony 2 lesz. Miért? Mert ez nem egy többágú elágazás, hanem két szimpla elágazás egymás után írva (azaz szekvencia). Megnézzük a értéke 0-e. Ha igen, akkor 1-re állítjuk, és elágazás vége. Jön a következő elágazás, a értéke vajon 1-e. Persze, hogy az, mert most állítottuk arra. OK, akkor legyen 2. versus if(a==0) a = 1; if(a==1) a = 2; if(a==0) a = 1; if(a==1) a = 2; (bár ez se teljesen korrekt az automatikusan hozzáíródó üres ág miatt) Többágú elágazást lehet egymásba ágyazott kétágú elágazásokkal helyettesíteni. if(a==0) b = 1; if(a==1) b=2; if(a==2) b=3; ekvivalens ezzel: if(a==0) b = 1; if(a==1) b=2; if(a==2) b=3; De azért az első csak szebb. De azt fontos látni, hogy az első se teljesen azt a nemdeterminisztikus algoritmust valósítja meg, amit egy többágú elágazós struktogram sugall, hanem pontosan azt, amit a jobb oldalon álló egymásba ágyazott kétágú elágazásokból felépülő algoritmus struktogramja lenne.

7 Még egy tipp elágazásokra. Ha adott egy többágú elágazás, ami minden esetet lefed, akkor az utolsó ág feltétele végül is elhagyható: if(a>0) b = 1; if(a==0) b = 0; b = -1; Az elágazások utolsó fajtája a switch/case. Ennek nincs struktogrambeli megfelelője, amúgy is ami switch/case-zel megadható, az iffel is, tehát nem túl fontos téma, lehet nélküle is boldog életet élni, de a teljesség igénye miatt megmutatom. A switch/case arra a helyzetre van kitalálva, amikor arra vagyunk kíváncsiak, hogy egy bizonyos változó értéke egy konkrét konstanst vesz-e fel. Ilyen konstrukciót például menük kódolásakor érdemes használni, ahol a felhasználónak például számokat kell beírnia, és attól függően melyik számot írta be történik más és más. Nézzük meg ezt egy iffel: if(menupont == 1) >>egyes szamu funkcio vegrehajtasa<< if(menupont == 2) >>kettes szamu funkcio vegrehajtasa<< cout<< HIBA! Nem letezo menupont <<endl; Ehelyett alkalmazhatjuk ezt: switch(menupont) case 1: >>egyes szamu funkcio vegrehajtasa<< break; case 2: >>kettes szamu funkcio vegrehajtasa<< break; default: cout<< HIBA! Nem letezo menupont <<endl; break;

8 Kinek a pap, kinek a papné, valakinek ez a forma jobban tetszik. Szerintem nem sok értelme van, hiszen az iffel hasonló méretű erőfeszítéssel lehet kifejezni ugyanazt. Szeretném felhívni a figyelmet a break utasításokra. Ez egy régről örökölt, ún. nemstrukturált elem (az ilyenek használata kerülendő és kiveszőfélben is van). Jelentése az, hogy a legbelső blokkból ahol épp a vezérlés van, lépjünk ki és folytassuk a végrehajtást a blokk után. A blokk az, ami a kapcsos zárójelek között van, tehát a break utasítás hatására történik (ebben a szerkezetben) az, hogy NEM ugrik tovább a következő ágra a vezérlés és hajtódik végre az is, mert hogy a switch/case alapértelmezett működése ez lenne. Egy példa: switch(menupont) case 1: >>egyes szamu funkcio vegrehajtasa<< case 2: >>kettes szamu funkcio vegrehajtasa<< break; default: cout<< HIBA! Nem letezo menupont <<endl; break; Itt, ha a felhasználó az egyes menüpontot választja, akkor végrehajtódik a kettes ág is. A default azért nem, mert a kettes végén break van. Amúgy a default a hagyományos elágazás -ének felel meg. A break mellett még két további nemstrukturált elemet ismerünk, a continue-t és a gotot. Használatuk mellőzendő, mert olvashatatlanná és nehezen követhetővé teszik a kódot. A continue ciklusokban használatos és olyasmit jelent mint a break, azaz szakítsuk meg a blokk (ciklusmag) végrehajtását, de ne a ciklus után folytassuk, hanem lépjünk egy iterációt és futtassuk le újra a ciklusmagot. A program soraihoz lehet ún. címkéket rendelni. A goto paranccsal ilyen címkéhez lehet a vezérlést küldeni. De ennek sűrű használata igen átláthatatlanná és követhetetlenné teszi a kódot, ezért ilyet végképp csak nagyon indokolt esetben használhatunk (azaz soha). Ciklusok Ebből meg 4 féle van: elöltesztelős, hátultesztelős, számlálós és foreach. Foreach ciklus a C++-ban nincs 4. Amúgy az arra való, hogy ha van egy tömbünk 5 és amúgy az indexek nem különösebben érdekelnek, akkor ne az indextartományon menjünk végig, hanem eleve a tömb elemeken. C#, Ada, Java nyelvekben van ilyen szerkezet többek között. Az elöltesztelős (while) ciklus úgy működik, hogy előbb letesztelem az ún. ciklusfeltételt, aztán ha az igaz, végrehajtom a ciklusmagot. Ezután letesztelem a ciklusfeltételt, ha igazat 4 na jó, van, de csak az újabb szabványban amikor én tanultam, még nem volt :P 5 nem csak tömb van ám a világon vannak olyan adatszerkezetek is, amik nem indexelhetők, na ahhoz meg főleg kényelmes ezt használni, mert nem is tudnánk olyan ciklust írni, ami az indextartományán megy végig, ha egyszer nincs olyan neki

9 ad akkor lefuttatom a ciklusmagot, stb. Ha egyszer hamis lesz a feltétel, akkor a ciklus utáni részre lép a végrehajtás, ha sose lesz hamis, akkor a program sose áll le (végtelen ciklus). Simán előfordulhat az is, hogy a ciklusmag egyszer se fut le, ha már eleve hamis a feltétel. Ez nem feltétlenül baj, sőt általában összhangban van a programozó szándékával. while(a>0) --a; Ez a ciklus voltaképpen 0-ra állítja a-t. Ha a eleve 0, vagy annál kisebb, akkor viszont úgy hagyja ahogy van. A ciklushoz nagyon gyakran tartozik valami inicializáló lépés. Pl. itt van egy tömbbejárás: i=0; while(i<n) ( [ ]) valami(t[i]); ++i; Viszont ez nem a ciklus szerves része, hanem egy szekvenciával a ciklus elé ragasztott (többnyire) értékadás csupán. Hátultesztelős ciklus Az elöltesztelőshöz nagyon hasonló, viszont itt a ciklusfeltételt mindig a ciklusmag futtatása után ellenőrizzük, szóval egyszer biztosan lefut. Adatbekérésekkor szoktuk leginkább használni, de akkor se mindig. ( ) do bekeres(a); while(a<0); Tehát itt a változóba addig kérek be egy számot, amíg a bekért szám negatív. Így lehet mondjuk azt biztosítani, hogy a egy természetes szám legyen. Számlálós ciklus Ezt a ciklusfajtát akkor használjuk, ha előre tudjuk azt, hogy a ciklusmagot hányszor kell lefuttatni. Az előző két esetben mindig valami feltétel került a ciklus fejébe, most pedig egy számlálóval fogunk végigjárni egy intervallumot, és minden egyes intervallumbeli értékre le fog futni egyszer a ciklusmag. A C++ szintjén a for és a while ciklus ekvivalens, mindkettő helyettesíthető a másikkal a megfelelő paraméterezéssel.

10 for(int i=1;i<=n;++i) a+=i; Tehát itt egy csak a for ciklusban élő segédváltozóval bejárjuk az [1..n] intervallumot, és például megnöveljük a-t a segédváltozó aktuális értékével. A segédváltozó (általában i-vel jelöljük) csak ebben a ciklusban használható, épp ezért ha sok for ciklust írunk egymás után, akkor nyilván az ő i-jeiknek semmi közük nem lesz egymáshoz. Viszont ha egymásba ágyazunk ciklusokat, akkor nyilván a belső ciklus változóját illik máshogy hívni, mint a külső ciklusét. Azonban ez a C++-ban nem kötelező! Ez egy érdekes sajátossága a nyelvnek, a jelenséget elfedésnek (shadowing) hívják és nagyon meglepő következményei lehetnek: for(int i=0;i<3;++i) for(int j=0;j<2;++j) cout<<j<<" "; cout<<endl; Ez a kód 3 sort fog kiírni (mert a külső for ciklus három kört megy), mindannyiszor két számot (mert a belső for ciklus kétszer fut le), 0-t és 1-et, mert ezeket az értékeket veszi fel j minden körben. for(int i=0;i<3;++i) for(int i=0;i<2;++i) cout<<i<<" "; cout<<endl; Most semmi se változott, csak az, hogy j helyet i-nek hívom a belső változót. És ezt szabad vajon? Már deklaráltam egy i nevű változót kívül, ami ugyan csak a külső for cikluson belül él, na de hát a másik for ciklus a külső for cikluson belül van, tehát ez legalább gyanús. Szabad ilyet csinálni, igen. Nem szabad csak úgy újradeklarálni egy változót, de egy beágyazott blokkon belül (pont ilyen a belső for ciklus) igen. Ez jelenti az elfedést, mert így a külső i változóhoz (ami ugyanúgy létezik és semmi köze a belső i-hez) már belül nem férek hozzá. Ha a cout<<endl; sornál ahol a belső for ciklus már nem él, de a külső igen íratnám ki i-t, akkor a külső for szerinti értéke íródna ki, hiszen a belső i-je ott nem is létezik. Tehát ez a megoldás, ha a külső i-re nincs belül szükségünk, csak azt szeretnénk, hogy 3-szor fusson le, akkor végül is teljesen rendben van, bár általában nem tudatosan szoktak ilyet írni. Ezért kicsit sajnálatos, hogy a C++ nem jelez hibát, mert ez tipikusan olyan hibákat tud eredményezni, ami hosszas, eredménytelen hibakeresésbe torkollhat.

11 Még ennél is sokkal rosszabb ez a megoldás, ami szintén lefordul és lefut: for(int i=0;i<3;++i) for(i=0;i<2;++i) cout<<i<<" "; cout<<endl; Itt az a különbség van a fentivel szemben, hogy a belső for ciklusban nem deklaráltam i-t. Ezért itt nincs elfedés, itt bizony a belső for ciklus ciklusváltozója megegyezik a külsőével. Ez a kód egészen váratlan módon csak annyit fog kiírni: 0 1 Ez azért van így, mert amikor a külső for ciklus elindul, i értéke 0. Majd a belső ezt ismét 0-ra állítja, majd kiírja. Ezért látjuk kiíva, hogy 0. Ez után a belső továbblép, kiírja, hogy 1, i értéke ekkor 1. Majd a belső továbblép, i értéke 2, és a belső kilép, hiszen i már nem kisebb 2-nél. A külső kiírja az endl-t, majd továbblép, de mivel i értéke legutóbb még 2 volt, ezért most 3 lesz. És mivel 3 nem kisebb, mint 3 ezért ezzel be is fejeződött a külső ciklus is. Ha a külső ciklus fejében a 3-as felső határt 4-re írjuk, akkor hasonló okokra visszavezethető módon a program folyamatosan, vég nélkül a 0 1 sort fogja kiírni. Hát persze, amikor véget ér a belső ciklus, akkor i értéke most is 3 lesz. De 3<4, ezért a külső ciklus folytatja működését, a belső ciklus megint 3-ra állítja i-t, és így megy ez a végtelenségig. Tanulság: ha egymásba ágyazunk for ciklusokat, mindegyiknek legyen külön, a for fejében deklarált ciklusváltozója; illetve akármilyen for ciklus esetében a ciklusváltozót a for törzsében ne módosítsuk, mert meglepő dolgok történhetnek, és nagyon nehezen fogjuk tudni megfejteni a furcsaságok okát. A legfontosabb alapelv amikor programozunk, hogy a kód olvasható legyen, logikus legyen, ne tartogasson meglepetéseket. A ciklusváltozó értékét kiolvasni természetesen szabad. A for ciklus első paramétere 6 adja meg a segédváltozót kezdőértékestül, a második azt a feltételt, ameddig a fornak mennie kell, ez nyilván valami olyasmi, hogy i elért egy bizonyos felső határt, a harmadik paraméter pedig i növeléséről gondoskodik. Ez az utasítás mindig a ciklusmag aktuális lefutása után fut le. Persze lehet visszafelé, vagy többesével is lépkedni: for(int i=n;i>=1;--i) a+=i; 6 Igazából az első és a 3. paraméterhez tetszőleges utasítást, a 2-hoz tetszőleges feltételvizsgálatot írhatunk. Csak így szokás. Írhatunk üres utasításokat is: például a for(;i<n;++i) nem inicializálja i-t semmire mert mondjuk korábban megtettük.

12 Egyéb különbségek for(int i=1;i<=10;i+=2) a+=i; Egyenlőségvizsgálat, relációs jelek, értékadás szintaktikája: Struktogramban: Kódban: a==b //vizsgalat a>b a<b a>=b a<=b a = b //ertekadas Tömbindexelés: Ha a specifikációban és algoritmusban adott egy [ ] indexelésű tömb, azt a C++-ban [ ] indextartományúként fogjuk kezelni. Ezen kívül az is fontos, hogy általában ez az n egy bemenő adat, tehát a tömb mérete a felhasználó akaratától függ. Egyelőre ezt C++-ban nem engedjük, ezért mindig megadunk egy konstans maximum értéket n-re, a tömb a valóságban akkora, mint ez a maximum, de csak az első n darab értékét használjuk. ( [ ]) i=0; while(i<n) valami(t[i]); ++i; ( [ ]) for(int i=0;i<n;++i) valami(t[i]); Nyilván az i<n úgy is írható lenne, hogy i<=n-1. De így rövidebb.

13 Matematikai dolgok: Struktogramban: Kódban: i=i+1; i+=1; Igazából bármelyik használható, bár árnyalatnyi különbség van köztük: A + két tetszőleges kifejezést ad össze és ezt egy változónak értékül adhatjuk (a változónak nem kell hogy bármi köze legyen a két kifejezéshez), a += egy változót megnöveli egy kifejezés értékével, a ++ egy változót megnövel eggyel. Ha előre írom a ++-t, akkor megnöveli, és maga a ++i kifejezés felveszi i új értékét, ha hátulra, akkor is megnöveli de a kifejezés értéke még i régi értéke marad. Mivel ez utóbbi megvalósítása eggyel több műveletet tartalmaz, mint a prefixes ++-é (hiszen ki kell mentenie i eredeti értékét egy segédváltozóba), ezért általában i++ ++i illik a ++-t a változó elé írni, mert az a megoldás hatékonyabb. Logikai műveletek: Struktogramban: Kódban: a&&b a b Egy feltételvizsgálatban, ha a vizsgálandó feltétel egy logikai változó igazságértéke, akkor fölösleges 7 == true-t vagy == false-t írni, még akkor se, ha a struktogram ezt sugallja, hanem ezt sokkal egyszerűbb szintaktikával is meg lehet oldani:!a while(a) if(!b) c = 1; c = 2; Láthatjuk, ha arra vagyunk kíváncsiak, vajon egy változó igaz-e, akkor csak odaírjuk a nevét, ha a hamisságot szeretnénk vizsgálni, akkor pedig egy felkiáltójellel (tagadás jele) lehet jelölni szándékunkat. 7 de szabadni szabad

14 Egy komplex példa: int i = 0; while(i<n) for(int j=1;j<=10;++j) [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] if(t[i]<=j) t[i] = 0; if(t[i]>j && t[i]<2*j) t[i] = i+1; (értelmet ne nagyon keressetek ebben a stukiban :D) if(t[i]>2*j) t[i] = j; i += 1; i végig a 0..n-1 vonalon mozog, mivel tömbindex, j viszont a kódban is annyi, amennyi a struktogramban, mert őneki tényleg az értékét használjuk, nem pedig indexelésre, mint i-t. t tömbben számértékek vannak, és amikor az alg. szerint i-t kellett beírni, i+1-et írtam be, ugyanis itt i nem egy index, hanem egy szám (de ez már nagyon elfajult dolog, ilyen nem lesz zh-ban). Az elágazás üres programos ágát elhagytam, hiszen így is-úgy is üres programot (=semmit) fog végrehajtani.

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

Webprogramozás szakkör

Webprogramozás szakkör Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását

Részletesebben

6. fejezet: Ciklusok

6. fejezet: Ciklusok 6. fejezet: Ciklusok Mint a nyelvekben általában, itt is léteznek ciklusok. Az alapvető három ciklus-típus: elöltesztelő, hátultesztelő és számláló. Lássuk ezeket sorban! Elöltesztelő = while. A while

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05. C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb

Részletesebben

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK 1. ELÁGAZÁSOK ÉS CIKLUSOK SZERVEZÉSE Az adatszerkezetek mellett a programok másik alapvető fontosságú építőkövei az ún. algoritmikus szerkezetek.

Részletesebben

Óbudai Egyetem. C programozási nyelv

Óbudai Egyetem. C programozási nyelv Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási nyelv II. Dr. Schuster György 2016. március 12. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C2016. programozási március 12. nyelv Utasításo

Részletesebben

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:

Részletesebben

Nézzük tovább a lexikai egységeket!

Nézzük tovább a lexikai egységeket! Utasítások Osztályozásuk: Nézzük tovább a lexikai egységeket! - értékadó utasítások - ugró utasítások[vezérlő utasítások (a program vezérlési szerkezetét adják meg)] - feltételes utasítások - ciklusszervező

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 3. előadás Vezérlési szerkezetek Elágazás Gyakran előfordul, hogy meg kell vizsgálnunk egy állítást, és attól függően, hogy igaz vagy hamis, a programnak más-más

Részletesebben

Szelekció. Döntéshozatal

Szelekció. Döntéshozatal Szelekció Döntéshozatal Elágazásos algoritmus-szerkezet Eddig az ún. szekvenciális (lineáris) algoritmust alkalmaztunk a parancsok egyenként egymás után hajtüdnak végre. Bizonyos esetekben egy adott feltételtől

Részletesebben

Internet programozása. 3. előadás

Internet programozása. 3. előadás Internet programozása 3. előadás Áttekintés Hogyan használjuk az if szerkezetet arra, hogy bizonyos sorok csak adott feltételek teljesülése mellett hajtódjanak végre? Hogyan adhatunk meg csak bizonyos

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás

Részletesebben

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK, Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás OE-NIK, 2013 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk

Részletesebben

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19. Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19. Programkészítés Megrendelői igények begyűjtése Megoldás megtervezése (algoritmuskészítés)

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 3. előadás A Math osztály (System.Math) Metódus Művelet Math.Sin(x) sin(x), ahol az x szög értékét radiánban

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Occam 1. Készítette: Szabó Éva

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása

Részletesebben

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv PHP A PHP rövidítés jelentése hivatalosan: PHP Hypertext Preprocessor. Ez egy kiszolgáló-oldali parancsnyelv, amit jellemzően HTML oldalakon használnak. A különbség a két nyelv között az, hogy a kiszolgáló

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek 5. ÓRA Vezérlési szerkezetek Az elõzõ órában létrehozott programok minden futtatáskor ugyanazt az eredményt adták, mindig ugyanazok az utasítások hajtódtak végre ugyanabban a sorrendben. Ez nem biztosít

Részletesebben

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis I. ALAPALGORITMUSOK 1. Prímszámvizsgálat Adott egy n természetes szám. Írjunk algoritmust, amely eldönti, hogy prímszám-e vagy sem! Egy számról úgy fogjuk eldönteni, hogy prímszám-e, hogy megvizsgáljuk,

Részletesebben

Szoftvertervezés és -fejlesztés I.

Szoftvertervezés és -fejlesztés I. Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.

Részletesebben

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt

Részletesebben

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk

Részletesebben

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei Strukturált C-Strukturált Egyéb elemek Strukturált C-Strukturált Egyéb elemek Adminisztrációs feladatok Strukturált programok A C programnyelv elemei A programozás alapjai. álózati Rendszerek és Szolgáltatások

Részletesebben

7. fejezet: Mutatók és tömbök

7. fejezet: Mutatók és tömbök 7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t

Részletesebben

A programozás alapjai

A programozás alapjai A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,

Részletesebben

Gyakorló feladatok Gyakorló feladatok

Gyakorló feladatok Gyakorló feladatok Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

A C# PROGRAMOZÁSI NYELV

A C# PROGRAMOZÁSI NYELV A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

Vezérlési szerkezetek. Szelekció Ciklusok

Vezérlési szerkezetek. Szelekció Ciklusok Vezérlési szerkezetek Szelekció Ciklusok Szelekciós vezérlés A program egy feltétel teljesülése alapján választja ki, hogy mely műveleteket hajtsa végre. Alakja: if ( feltétel ) { műveletek, ha feltétel

Részletesebben

Apple Swift kurzus 3. gyakorlat

Apple Swift kurzus 3. gyakorlat Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben

Objektumorientált Programozás III.

Objektumorientált Programozás III. Objektumorientált Programozás III. Vezérlési szerkezetek ismétlés Matematikai lehetőségek Feladatok 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes

Részletesebben

1. Egyszerű (primitív) típusok. 2. Referencia típusok

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

Részletesebben

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi. Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód

Részletesebben

S z á m í t ó g é p e s a l a p i s m e r e t e k

S z á m í t ó g é p e s a l a p i s m e r e t e k S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami

Részletesebben

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával) Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával) I. A nyelv története C++ C (ős: B???) 1972 Ritchie AT&T Bell laboratórium UNIX 1978 Kernighan & Ritchie az első tankönyv,

Részletesebben

Komputeralgebra Rendszerek

Komputeralgebra Rendszerek Komputeralgebra Rendszerek Programozás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. február 23. TARTALOMJEGYZÉK 1 of 28 TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Értékadás MAPLE -ben SAGE -ben 3

Részletesebben

Oktatási segédlet 2014

Oktatási segédlet 2014 Oktatási segédlet 2014 A kutatás a TÁMOP 4.2.4.A/2-11-1-2012- 0001 azonosító számú Nemzeti Kiválóság Program Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és működtetése

Részletesebben

Kezdő programozók hibái

Kezdő programozók hibái Kezdő programozók hibái Azok a buktatók, amikről ha nem tudsz, napokat töprenghetsz hiába Java-tanulás közben 2016.03.01. www.programozas-oktatas.hu Pasztuhov Dániel Miért írom ezt az útmutatót? Programozás-oktatói

Részletesebben

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus

Részletesebben

Kifejezések. Kozsik Tamás. December 11, 2016

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának

Részletesebben

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >> I. Alapok Interaktív shell-ben vagy shell-scriptben megadott karaktersorozat feldolgozásakor az első lépés a szavakra tördelés. A szavakra tördelés a következő metakarakterek mentén zajlik: & ; ( ) < >

Részletesebben

Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmizálás + kódolás C++ nyelven és Pascalban Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban

Részletesebben

AWK programozás Bevezetés

AWK programozás Bevezetés 09 AWK programozás Bevezetés AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa és feldolgozhatóvá

Részletesebben

Bevezetés a programozásba. 5. Előadás: Tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és

Részletesebben

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere Szekvenciális programok kategóriái strukturálatlan strukturált NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE Hoare-Dijkstra-Gries módszere determinisztikus valódi korai nem-determinisztikus általános fejlett

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Elágazás Bevezetés a programozásba I. 2. gyakorlat, tömbök Surányi Márton PPKE-ITK 2010.09.14. Elágazás Elágazás Eddigi programjaink egyszer ek voltak, egy beolvasás (BE: a), esetleg valami m velet (a

Részletesebben

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük

Részletesebben

Java programozási nyelv 9. rész Kivételkezelés

Java programozási nyelv 9. rész Kivételkezelés Java programozási nyelv 9. rész Kivételkezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/24 Tartalomjegyzék

Részletesebben

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Programozás I. 3. előadás Tömbök a C#-ban Metódusok C#-ban Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

BATCH Programozás. Tartalomjegyzék

BATCH Programozás. Tartalomjegyzék BATCH Programozás Tartalomjegyzék 1. Bevezetés 2. Általános információk a batch file-okról 3. A legegyszerűbb batch file-ok 4. Paraméterezhető batch file-ok 5. Gyakran használatos batch parancsok 6. Elágazások

Részletesebben

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28

Részletesebben

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Maximum kiválasztás tömbben

Maximum kiválasztás tömbben ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while

Részletesebben

Python tanfolyam Python bevezető I. rész

Python tanfolyam Python bevezető I. rész Python tanfolyam Python bevezető I. rész Mai tematika Amiről szó lesz (most): Interpretált vs. fordított nyelvek, GC Szintakszis Alaptípusok Control flow: szekvencia, szelekció, iteráció... Függvények

Részletesebben

Algoritmus fogalma. Mi az algoritmus? HF: Al Khwarizmi. Egy adott probléma megoldásának leírása elemi lépések sorozatával

Algoritmus fogalma. Mi az algoritmus? HF: Al Khwarizmi. Egy adott probléma megoldásának leírása elemi lépések sorozatával Algoritmusok Algoritmus fogalma Mi az algoritmus? Egy adott probléma megoldásának leírása elemi lépések sorozatával HF: Al Khwarizmi Követelmények Véges: nem állhat végtelen sok lépésből Teljes: teljes

Részletesebben

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz 2018/2019 ősz Elérhetőségek Előadó: (safaro@math.bme.hu) Fogadóóra: hétfő 9-10 (H épület 3. emelet 310-es ajtó) A pontos tárgykövetelmények a www.math.bme.hu/~safaro/kalkulus oldalon találhatóak. A mátrix

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 3. gyakorlat PLanG: 2011.09.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok

Részletesebben

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6. Programkonstrukciók Definíció Legyen π feltétel és S program A-n. A DO A A relációt az S-ből a π feltétellel képezett ciklusnak nevezzük, és (π, S)-sel jelöljük, ha 1. a / [π] : DO (a) = { a }, 2. a [π]

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

sallang avagy Fordítótervezés dióhéjban Sallai Gyula sallang avagy Fordítótervezés dióhéjban Sallai Gyula Az előadás egy kis példaprogramon keresztül mutatja be fordítók belső lelki világát De mit is jelent, az hogy fordítóprogram? Mit csinál egy fordító?

Részletesebben

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15 Matlab alapok Baran Ágnes Elágazások, függvények Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15 Logikai kifejezések =, ==, = (két mátrixra is alkalmazhatóak, ilyenkor elemenként történik

Részletesebben

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban...

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban... A kódgenerálás helye a fordítási folyamatban Forrásprogram Forrás-kezelő (source handler) Kódgenerálás I. (kifejezések és vezérlési szerkezetek) Fordítóprogramok előadás (A,C,T szakirány) 2008. őszi félév

Részletesebben

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14. Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett

Részletesebben

Aritmetikai kifejezések lengyelformára hozása

Aritmetikai kifejezések lengyelformára hozása Aritmetikai kifejezések lengyelformára hozása Készítették: Santák Csaba és Kovács Péter, 2005 ELTE IK programtervező matematikus szak Aritmetikai kifejezések kiértékelése - Gyakran felmerülő programozási

Részletesebben

Forráskód formázási szabályok

Forráskód formázási szabályok Forráskód formázási szabályok Írta: Halmai Csongor, Webcenter Bt. A php és html kódrészletek Ugyanazon fájlon belül nem szerepelhet php kód és html tartalom. E kettő különválasztására smarty-t vagy más

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. november 20. 10. El adás SQLite SQLite: Adatbázis kezel rendszer SQL standardokat nagyrészt követi Nagyon elterjedt, pl böngész kben is használt Nehéz olyan programnyelvet

Részletesebben

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 2. előadás Adattípusok megvalósítása egységbe zárással 2014.02.17. Giachetta Roberto groberto@inf.elte.hu

Részletesebben

Szövegek C++ -ban, a string osztály

Szövegek C++ -ban, a string osztály Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string

Részletesebben

3 A C programozási nyelv szintaktikai egységei

3 A C programozási nyelv szintaktikai egységei 3 A C programozási nyelv szintaktikai egységei 3.1 Azonosítók Betűk és számjegyek sorozata, betűvel vagy _ (aláhúzás) karakterrel kell kezdődnie. A nagy- és kisbetűk különbözőek. Az azonosítók tetszőleges

Részletesebben

Bevezetés a programozásba

Bevezetés a programozásba Bevezetés a programozásba 1. Előadás Bevezetés, kifejezések http://digitus.itk.ppke.hu/~flugi/ Egyre precízebb A programozás természete Hozzál krumplit! Hozzál egy kiló krumplit! Hozzál egy kiló krumplit

Részletesebben

A JavaScript főbb tulajdonságai

A JavaScript főbb tulajdonságai JavaScript alapok A JavaScript főbb tulajdonságai Script nyelv azaz futás közben értelmezett, interpretált nyelv Legfőbb alkalmazási területe: a HTML dokumentumok dinamikussá, interaktívvá tétele Gyengén

Részletesebben

Kezdő programozók hibái Azok a buktatók, amikről ha nem tudsz, napokat töprenghetsz hiába programozás-tanulás közben

Kezdő programozók hibái Azok a buktatók, amikről ha nem tudsz, napokat töprenghetsz hiába programozás-tanulás közben Kezdő programozók hibái Azok a buktatók, amikről ha nem tudsz, napokat töprenghetsz hiába programozás-tanulás közben 2011.07.01. www.programozas-oktatas.hu Pasztuhov Dániel Miért írom ezt az útmutatót?

Részletesebben