Bevezetés a C++ programozásba

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

Download "Bevezetés a C++ programozásba"

Átírás

1 Bevezetés a C++ programozásba A program fogalma: A program nem más, mint számítógép által végrehajtható utasítások sorozata. A számítógépes programokat különféle programnyelveken írhatjuk. Ilyen nyelvek a Logo, C, C++, Pascal, Python, Java, PHP, stb. Sajnos a számítógép ezeket a nyelveket alapállapotban nem érti meg, ezért ún. fordítóprogramokra van szükségünk. A fordítóprogram az általunk megírt programot a számítógép saját nyelvére az ún. gépi kódra fordítja. A fordítás történhet a program készítésekor (compiler fordítók) vagy a program futtatásakor (interpreter fordítók). Az előbbire példa a C, C++ és a Pascal, az utóbbira a Logo, Python, JavaScript és a PHP. (A Java mindkét módszert alkalmazza.) A változó fogalma: A számítógépes programok működésük folyamán különféle típusú adatokat tárolnak hosszabb-rövidebb ideig. Az adatok tárolására szolgálnak az ún. változók. A változó nem más, mint egy névvel ellátott rekesz a memóriában. Olyan, mint egy fiók egy sokfiókos szekrényben. Egy változóban egyszerre csak egy adat lehet. Ha újabb adatot teszünk bele, a régi törlődik. A változókat a program elején létre kell hozni (úgymond: deklarálni kell). Deklarálásnál meg kell adni a változó nevét és típusát, azaz, hogy milyen típusú adatot akarunk benne tárolni. A legfontosabb adattípusok a következők: INT FLOAT CHAR STRING egész szám valós szám (törtek és egészek is) egy karakter (betű) szöveg Az első C++ programunk: kiírás, beolvasás, összeadás Az itt következő program bemutatja a C++ programozási nyelv legfontosabb jellegzetességeit. A programsorok végén ún. megjegyzések szerepelnek, amelyben leírtuk a programsor jelentését. (A megjegyzések a // jellel kezdődnek és a programozó eligazodását segítik a programban. A megjegyzéseket a számítógép nem tekinti utasításoknak.) Az alábbi program beolvas két egész számot és kiírja az összegüket: //Ezt a két sort minden program elejére odaírjuk //(Egyelőre elég ennyit tudnunk róluk ) int main() //Itt kezdődik a program fő része int x,y; //Egész típusú változók létrehozása (deklarációja) cout << "Irjon be egy szamot!\n"; //Szöveg kiírása soremeléssel cin >> x; //Adatbeolvasás a billentyűzetről az x változóba cout << "Irjon be meg egy szamot!\n"; cin >> y; cout << "A ket szam osszege: " << x+y << endl; //többszörös kiírás, a végén soremelés return(0); //Itt a program fő részének vége A számítógépes programok tehát a számítógépnek adott utasításokból állnak. A program utasításait felülről lefelé haladva, egymás után hajtja végre a számítógép. Az adatok beolvasására és kiírására szolgálnak a következő utasítások: cout << kiírandó adat Egy szövegnek, számnak, vagy egy változó értékének kiírása a képernyőre. Ha szöveget akarunk kiíratni, akkor azt idézőjelek közé kell tenni. Ha a kiírás után új sort szeretnénk kezdeni, akkor használjuk a \n vagy az endl jelet. cin >> változónév Valamilyen adat beolvasása a billentyűzetről, és tárolása egy változóba. Ennél az utasításnál tehát nem azt kell megadni, hogy mit olvasson be a gép (ezt nem is tudhatja a programozó), hanem, hogy a beolvasott adatot hol raktározza el! Bevezetés a C++ programozásba (1/10. oldal)

2 Figyelem: A C++ programozási nyelv különbséget tesz a kis- és a nagy betűk között! A legtöbb utasításnak kisbetűsnek kell lennie! A változók neve tartalmazhat nagybetűket is, de a nyelv itt is megkülönbözteti a kis- és nagybetűket. A változók nevének betűvel kell kezdődnie és csak betűket, számjegyeket és aláhúzás karaktert tartalmazhat. A változókban kétféleképpen tárolhatunk adatokat: Egyrészt a már megismert módon a billentyűzetről beolvasva (cin >> változónév), másrészt az ún. értékadó operátor (=) segítségével. Például a következő utasítás az x változóba teszi a 34 számot: x = 34 ; Ha egy változó szöveg típusú, akkor értékét idézőjelek között kell megadnunk, ha pedig karakter típusú, akkor az angol nyelvben használatos aposztrofok közé kell tennünk: szovegvaltozo = "ezt a szöveget akarjuk beletenni ; betuvaltozo = A ; Operátorok A programozásban operátoroknak nevezzük a különféle műveleti jeleket. Az operátorok az adatokon operálnak, azaz különféle műveleteket végeznek az adatokkal. Ezeket az adatokat operandusoknak is nevezzük. Például az műveletben a + jel az operátor, az 5 és 6 számok az operandusok. A legfontosabb aritmetikai operátorok a négy alapművelet, a szokásos szimbólumokkal. (+ * /) Mind a négy művelet egész és valós típusú operandusok esetén is működik, de az osztás esetében vigyáznunk kell arra, hogy egész típusú operandusok osztásakor egész eredményt fogunk kapni, és az osztási maradék elvész! Tekintsük például a következő programrészletet: int a=12; int b=5; float f; f=a/b; A programrészlet után az f valós típusú változó értéke a 2.0 érték lesz (és nem 2.4)! Amennyiben a hányados törtrészére is szükségünk van, akkor az a és b változókat valós (float) típusúnak kell deklarálni, vagy a művelet során (ideiglenesen) valós típusúvá kell alakítani a következő módon: int a=12; int b=5; float f; f=float (a) / float (b); Szintén fontos a maradékos osztás operátora a % jel. A művelet az osztás maradékát adja vissza, és természetesen csak egész típusú változók használata esetén alkalmazható. Pl: 12 % 5 eredménye 2. (Hiszen a 12-t 5-tel osztva 2 maradékot kapunk.) A programokban gyakran kell összehasonlítani különböző értékeket. Ennek elvégzésére az összehasonlító operátorokat használjuk. Ezek a következők: <, >, <=, >=, = = és!=. Ha ezekkel két változót vagy kifejezést hasonlítunk össze, akkor az eredmény igaz, vagy hamis lehet. Figyeljünk arra, hogy az egyenlőség operátora két egymás után írt egyenlőségjel! (Az egyszeres egyenlőségjel ugyanis az értékadó operátor jele!) A!= operátor jelentése: nem-egyenlő. A logikai kifejezésekben gyakran összetett feltételeket is meg kell fogalmazni, erre szolgálnak a logikai operátorok. Ezek a következők:! a tagadás (NEM), && a logikai ÉS, a logikai VAGY művelete. A léptető operátorok a változó értékének eggyel való növelésére, vagy csökkentésére szolgálnak. A ++ eggyel növeli, a eggyel csökkenti a változó értékét. (A C++ nyelvben nem szokás a más programnyelvekben használatos a=a+1 értékadás, helyette inkább a léptetést használjuk.) Bevezetés a C++ programozásba (2/10. oldal)

3 Véletlenszámok generálása, elágazás a programban A következő program egy egyszerű szorzótábla gyakorló. A program kisorsol két egész számot 0 és 10 között, kiírja a számokat, megkérdezi a szorzatukat és ellenőrzi az eredményt. #include <cstdlib> #include <ctime> int main() int x,y,tipp; srand(time(0)); x=rand()%11; y=rand()%11; cout<<"irja be a helyes eredmenyt!\n"; cout << x << " X " << y << " = " ; cin >> tipp; if (tipp==x*y) cout << "Helyes!\n"; //ezek a véletlenszám-generátor //működéséhez kellenek //változók létrehozása //a véletlenszámok összekeverése //véletlenszám generálása 0 és10 között //(a % művelet a maradékképzés) //kérdésfeltevés //a válasz beolvasása //ha a tipp helyes, akkor kiírjuk, hogy helyes, else cout<<"hibas! A helyes eredmeny: "<<x*y<<endl ; //különben ezt írjuk ki return(0); A programokban lehetnek olyan utasítások, sőt akár egész programrészek, amelyeket csak bizonyos feltétel teljesülése esetén kell végrehajtania a számítógépnek. Például a fenti programban csak akkor dicsérjük meg a felhasználót, ha helyesen adja meg a szorzás végeredményét, ellenkező esetben a gép írja ki a helyes eredményt. Az ilyen programszerkezetet elágazásnak, vagy feltételes utasításnak nevezik. A feltételes utasításnak két formája van. Az egyszerűbb forma a feltétel teljesülése esetén végrehajtja az utasítást, egyébként nem csinál semmit: if (feltétel) utasítás; Ha például a fenti programban az alábbi utasítássort írtuk volna: if (tipp==x*y) cout << "Helyes valasz, ugyes vagy!\n" ; Akkor helyes válasz esetén a gép megdicsérné a felhasználót, hibás válasz esetén viszont nem történne semmi! Amennyiben a feltétel után több utasítást szeretnénk megadni, akkor ún. utasítás-blokkot kell alkalmaznunk: if (feltétel) utasítás1 ; utasítás2 ; A feltételes utasítás másik formája lehetőséget ad arra is, hogy a feltétel nem-teljesülése esetén is történjen valami. Ha a feltétel igaz, akkor az utasítás1-et hajtja végre a gép, különben az utasítás2-t. if (feltétel) utasítás1; else utasítás2; Összetett feltételek az elágazásokban Feltételvizsgálatoknál gyakran szükségünk van a logikai operátorok használatára. Az alábbi példaprogrammal a testtömeg-indexünket vizsgálhatjuk meg: int main() Bevezetés a C++ programozásba (3/10. oldal)

4 float magassag, tomeg, tti; cout<<"irja be a testmagassagat meterben!\n"; cin>>magassag; cout<<"irja be a testtomeget kilogrammban!\n"; cin>>tomeg; tti=tomeg/(magassag * magassag); if (tti<18) cout<<"on nagyon sovany!\n"; if (18<=tti&&tti<25) cout<<"on normalis testalkatu.\n"; if (25<=tti&&tti<30) cout<<"on tulsulyos!\n"; if (30<=tti) cout<<"on veszelyesen elhizott!!!\n"; return(0); //ha a tti 18 ÉS 25 között van Ciklusok, avagy ismétlés a programban Ez a program a korábbi szorzótábla-gyakorló program továbbfejlesztett, többmenetes változata. #include <cstdlib> #include <ctime> int main() srand(time(0)); int x,y,tipp; int jo=0,rossz=0; char v; do x=rand()%10+1; y=rand()%10+1; cout<<"irja be a helyes eredmenyt!\n"; cout<<x<<" X "<<y<<" = "; cin>>tipp; if (tipp==x*y) cout<<"helyes!\n"; jo++; else //a véletlenszámok összekeverése //változódeklaráció //változódeklaráció kezdőérték-adással //karakter típusú változó deklarációja //ciklus indul //véletlenszám generálása 1 és10 között //(a % művelet a maradékképzés) //ha a tipp helyes //változó növelése 1-gyel //különben-ág cout<<"hibas! A helyes eredmeny: "<<x*y<<endl; rossz++; cout<<"eddig "<<jo<<" helyes, valamint "<<rossz<<" hibas valasza volt.\n"; cout<<"szeretne meg gyakorolni? (i/n)"; cin>>v; while (v=='i'); //ciklus vége. Ide a ciklus folytatásának feltétele kell! return(0); A programozásban gyakran van szükség arra, hogy a program egy részét megismételjük, azaz újra végrehajtassuk a számítógéppel. Az ilyen programszerkezetet ciklusnak nevezik. Az előző programban például addig ismételtük a szorzótábla gyakorlását, amíg azt a felhasználó óhajtotta. A C++ nyelvben ezt az ismétlést a következőképpen írhatjuk le: do utasítás-blokk while (feltétel) ; Bevezetés a C++ programozásba (4/10. oldal)

5 A ciklusban szereplő utasítás-blokkot ciklusmagnak nevezzük. A számítógép mindaddig ismétli a ciklusmag utasításainak végrehajtását, amíg a feltétel igaz marad. (A ciklusmag utasításai egyszer mindenképpen végrehajtódnak, mivel a feltételt csak a ciklusmag végrehajtása után vizsgálja meg a gép.) Óvatlan programozók időnként ún. végtelen ciklust készítenek, amelynek feltétele mindig igaz marad (soha nem válik hamissá) és így a program soha nem ér véget, örök körforgásban marad. A fenti ciklus-szerkezet az ún. hátultesztelő ciklus, mivel a feltételt a ciklusmag végrehajtása után vizsgálja a gép. Lehetőség van ún. elöltesztelő ciklus készítésére is, amelyben a ciklusmag végrehajtása előtt vizsgálja a feltételt a gép: while (feltétel) utasítás-blokk A számlálós ciklust akkor használjuk, ha előre tudjuk, hogy egy utasítást (utasítás-blokkot) hányszor akarunk végrehajtani. A számlálós ciklus általános alakja a következő: for ( kifejezés1 ; kifejezés2 ; kifejezés3 ) utasítás-blokk A kifejezés1-ben állítjuk be a ciklusváltozó kezdő értékét, a kifejezés2-ben adjuk meg a ciklusmag végrehajtásának feltételét, ami a leggyakrabban egy logikai kifejezés, a kifejezés3-ban pedig léptetjük a ciklusváltozót. A számlálós ciklus elöl tesztel és a végén növel, azaz a ciklusmag végrehajtása előtt vizsgálja a kifejezés2-ben megadott feltételt és a ciklusmag végrehajtása után növeli meg a ciklusváltozó értékét (kifejezés3). Például az alábbi ciklus kiírja az első 9 pozitív egész számot. (Az i a ciklusváltozó.) for ( i=1 ; i<=9 ; i++ ) cout << i << endl ; Az adattípusokról bővebben A karakterekről részletesebben A char típus egyszerre jelent számot (8 bites, előjeles, ) és karaktert. (ASCII táblázat szerint) A cout << a utasítás egy karaktert fog kiírni, a cout << int(a) utasítás pedig az ASCII kódját, mert az átalakítással számként kezelést kértünk. Szövegek tárolása: Az eredeti C nyelvben nincs külön adattípus a szövegek (stringek) tárolására, hanem karaktertömböket használnak erre a célra. A szöveg végét egy speciális karakter a \0 jelzi a tömbben. A C++ nyelvben bevezették a string típust, de ez is hasonlóképpen működik. char sz[]= C-nyelv vagy char sz[10] vagy string sz Amennyiben a fordítóprogram hibát jelez a string típus használatakor, használjuk a program elején az #include <string> direktívát! Szövegekkel kapcsolatos műveletek A szöveg hossza: s.length () A szöveg i-edik karaktere: s [i] Figyelem: a szöveg első karakterének indexe 0! A szöveg része: s.substr (kezdőindex, darabszám) Egy szövegben egy szövegrész kezdőindexe: s1.find (s2) Figyelem: ha nincs benne az s1 szövegben az s2 szövegrész, akkor bármit kaphatunk eredményül! Szövegek összefűzése: s1+s2 Amit a logikai típusról tudni érdemes A C nyelvben nincs logikai típus, erre a célra bármelyik sorszámozott alaptípus használható. A logikai igaz értéket az 1, a hamisat a 0 jelenti. Az operátorok közt vannak logikai jellegűek (például az összehasonlító operátorok), ezek mindig a fenti két érték valamelyikét szolgáltatják eredményül. Bevezetés a C++ programozásba (5/10. oldal)

6 Ugyanakkor azok az operátorok, illetve utasítások, amelyek logikai jellegű értéket várnak (például a feltételes elágazás), egy ennél tágabb értelmezést használnak: a 0 jelenti továbbra is a hamis logikai értéket, azonban minden más, nem 0 adatot igaznak fogadnak el. A C++ nyelvben már bevezették a logikai típust (bool), de itt is sokszor találkozunk a false==0 true ==1 jelenséggel. Változótömbök deklarációja: Típus tömbnév[méret] több dimenziós tömbök esetén: Típus tömbnév[méret1][méret2] A tömbök indexelése mindig 0-tól kezdődik! Új adattípusok definíciója Bonyolultabb szerkezetű adatok tárolásakor szükség lehet arra, hogy új adattípusokat definiáljunk. Ennek általános formája a következő: typedef típus típusnév Leginkább akkor van új típus definiálására szükség, ha különféle típusú elemi adatokat szeretnénk egyetlen változóban, vagy változótömbben tárolni. Ilyenkor ún. adatstruktúrát kell kialakítanunk. Például ha emberek nevét, életkorát és nemét szeretnénk tárolni, akkor létrehozhatjuk az ember nevű adattípust: typedef struct string nev; int kor; char nem; ember ; Ezután már használhatjuk az ember adattípust a változó-deklarációkban: ember szemely1, szemely2 ; ember szemelyek[20] ; Az adatstruktúra egyes elemeit, ún. mezőit a következő módon érhetjük el: szemely1.nev = "Kis Lajos" ; szemelyek[6].kor = 45 ; Az adatstruktúrák maguk is tartalmazhatnak további tömböket és adatstruktúrákat, így tetszőlegesen összetett adatszerkezeteket fel lehet építeni. Modulok és fejléc-fájlok (include) A C++ nyelv (a Pascalhoz hasonlóan) modulokból épül fel. Ez a gyakorlatban azt jelenti, hogy bizonyos utasításokat és adatszerkezeteket csak akkor használhatunk, ha a program elején feltüntetjük a megfelelő modul-fejlécet az include direktívával. Pl: A legfontosabb modulok a következők: <iostream> : kimenet, bemenet (cout, cin) <fstream> : fájlkezelés (ifstream, ofstream) <string> : szövegekkel kapcsolatos műveletek <cmath> : matematikai függvények ( sin(x), abs(x) ) <cstdlib> : véletlen szám (rand, srand) <ctime> : rendszeridő (time) Névterek (namespace) A névterek használata arra való, hogy ugyanazt a nevet használhassuk más-más kontextusban, más-más értelemben. Mi a standard (std) névteret fogjuk használni. Például a cout teljes neve std::cout, aminek az olvasata: a cout azonosító, amelyik az std névtérben van. A using namespace std azt eredményezi, hogy ezeket az std:: előtagokat nem kell kiírni. Bevezetés a C++ programozásba (6/10. oldal)

7 Adatbevitel és adatkivitel (Input / output) A forrás >> változó típusos olvasás, tehát a változó típusától függően működik. Például a cin >> változó utasítás mindig a változó típusának megfelelő mennyiségű adatot olvas be a bemenetről. Tehát a cin >> a >> b >> c utasítás egy sorban 3 egész számot olvas be, amelyek például szóköz karakterrel vannak elválasztva. A számok rendre az a, b, c változókba kerülnek. A cin >> sz utasítással vigyázni kell, ha szöveget akarunk beolvasni, ugyanis csak a szövegsor első szavát fogja beolvasni! (Az első szóköz vagy tab karakterig.) Helyette használjuk inkább a getline (cin, sz) utasítást! A getline(forrás, szövegesváltozó) típus nélküli olvasás, kizárólag szöveges változóba lehet így olvasni. Fájlkezelés A fájlok kezelése a C++ nyelvben két objektum-osztály használatával történik. Az ifstream osztállyal kezelhetjük a bemenő adatfájlokat (olvasás), az ofstream osztállyal a kimenő adatfájlokat (írás). Ezen osztályok használatához a program elején be kell illesztenünk a megfelelő fejléc-fájlt: # include <fstream> Fájlból olvasáshoz először is létre kell hozni egy bemenő adatfájl típusú fájlváltozót: (Pontosabban fogalmazva: létre kell hozni az ifstream osztály egy objektum-példányát.) ifstream fájlváltozó ; Ezután meg kell nyitni a fájlt. Ekkor történhet a fájlnév hozzárendelése a fájlváltozóhoz: fájlváltozó.open ( fájlnév ) ; Fájlból olvasni a standard beolvasáshoz hasonlóan lehet: fájlváltozó >> változó1 >> változó2 ; illetve: A fájl végének elérését az eof ( ) függvény hívásával ellenőrizhetjük: fájlváltozó.eof ( ) A fájl használatának befejeztével le kell zárni a fájlt: fájlváltozó.close ( ) ; getline(fájlváltozó, szöveges_változó) Fájlba íráshoz először is létre kell hozni egy kimenő adatfájl típusú fájlváltozót: (Pontosabban fogalmazva: létre kell hozni az ofstream osztály egy objektum-példányát.) ofstream fájlváltozó ; Ezután meg kell nyitni a fájlt. Ekkor történhet a fájlnév hozzárendelése a fájlváltozóhoz: fájlváltozó.open ( fájlnév ) ; Fájlba írni a standard kiíráshoz hasonlóan lehet: fájlváltozó << "szöveg" << "\n" << változó << endl ; A fájl használatának befejeztével le kell zárni a fájlt: fájlváltozó.close ( ) ; Létező fájlhoz hozzáírni (append) úgy lehet, hogy a kimenő adatfájlt a következőképp nyitjuk meg: fájlváltozó.open ( fájlnév, ios::app) ; Függvények használata A függvény nem más, mint a program egy önállóan működő része, amely a program egy részfeladatának elvégzéséért felelős. Egyszerűbb programokban nem szoktunk függvényeket használni, komolyabb programokban azonban fontossá válnak. Ennek két oka van: Bevezetés a C++ programozásba (7/10. oldal)

8 Egyrészt a program áttekinthetőbbé válik, ha az egyes részfeladatokat végző programrészletek világosan elkülönülnek egymástól. Másrészt függvények használatával elérhető, hogy egy programrészletet többször is felhasználjunk anélkül, hogy újra bele kellene írnunk a programba. Az alábbi példaprogram hatvanyoz nevű függvénye például természetes kitevőjű hatványozást végez: float hatvanyoz (float alap, int kitevo ) //ez a függvény ún. deklarációja //az alap és a kitevo a függvény paraméterei //itt kezdődik a függvény definíciója int i ; float x ; //i és x a függvény saját (lokális) változói x = 1 ; for (i=1 ; i<=kitevo ; i++) x *= alap ; return x ; //a függvény itt kapja meg az ún. visszatérési értékét int main() //itt kezdődik a főprogram float a ; int n ; cin >> a ; cin >> n ; cout << a << " szam " << n << " edik hatvanya: " << hatvanyoz (a,n) << endl ; return(0); A függvények kapcsán fontos kitérnünk a változók hatókörének kérdésére. A függvények belsejében deklarált változók a függvény saját, ún. lokális változói. Ezek a változók csak a függvény belsejében érvényesek, a függvényen kívül, például a főprogramban nem érhetők el. Mivel a C++ nyelvben a főprogram maga is egy függvény (int main ( )) ezért a főprogramban deklarált változók sem érhetők el a függvények belsejében. Hogyan adhat át adatokat a főprogram a függvényeknek és viszont: a függvények a főprogramnak? Erre a célra alapvetően a függvény paraméterei szolgálnak. Alapesetben a függvény a paraméterein keresztül kapja meg a működéséhez szükséges adatokat, az eredményt pedig az ún. visszatérési értékében adja vissza a főprogramnak. Ez történik a fenti példaprogramban is. A függvényeknek tetszőleges számú és típusú paraméterük lehet, és a visszatérési értékük is tetszőleges, akár összetett típusú is lehet. Készíthetünk olyan függvényt is, amelynek nincs visszatérési értéke. (Az ilyen alprogramokat eljárásnak is szokták nevezni.) Ebben az esetben a függvényt void típusúnak kell deklarálnunk, továbbá nem szerepelhet benne a return utasítás. Előfordulhat azonban, hogy egy függvény olyan feladatot végez a programon belül, amelynek során közvetlenül hozzá kell férnie a főprogramban használt változókhoz. Tipikus példa erre, ha egy függvény a háttértárról adatokat olvas be a memóriába. Ilyenkor a kérdéses változókat ún. globális változóként kell létrehozni. Ez azt jelenti, hogy a változót nem a main függvény definíciós részében, hanem azon kívül, a függvények definíciói előtt kell deklarálni. Pl: int x; void fuggveny () cout << x; int main( ) x=4; fuggveny(); //ez a globális változó Bevezetés a C++ programozásba (8/10. oldal)

9 return (0); Az operátorokról részletesebben A ++ és egyoperandusú műveletek, postfix és prefix alakban is írhatók. Ha egy kifejezésben csak egy változó szerepel, akkor mindegy, hogy a postfix, vagy a prefix alakját használjuk az operátoroknak, azaz a++ egyenértékű ++a-val. Ha azonban egy kifejezés kiértékelésében használjuk, akkor már óvatosabban kell bánni a két alakkal. Lássuk az alábbi példát: int a=4, x, y; x=++a; y=a++; A programrészletben az első értékadás előtt az a változó értéke 1-gyel nő így 5 lesz, ezt kapja az x változó, tehát annak értéke is 5 lesz. A második értékadásban az y megkapja a pillanatnyi értékét az ötöt, majd az a értéke 1-gyel nő, azaz 6 lesz. A bitenkénti operátorok operandusai csak char, short, int és long típusú előjel nélküli egészek lehetnek. A műveletek első csoportjába a bitenkénti logikai műveletek tartoznak: a & bitenkénti és, a bitenkénti vagy, a ^ bitenkénti kizáró vagy. Ezeket a műveleteket leggyakrabban maszkolásra, vagy bitek törlésére szoktuk használni. A kizáró vagy érdekes tulajdonsága, hogy ha ugyanazt a maszkot kétszer alkalmazzuk egy értékre, akkor visszakapjuk az eredeti értéket. A műveletek másik csoportjába a biteltoló műveletek tartoznak. << eltolás balra, >> eltolás jobbra. A felszabaduló pozíciókba 0 kerül, a kilépő bitek elvesznek. A műveletek két operandusúak. a<<2 az a változó bitjeit 2-vel tolja balra. Nyilvánvalóan az n bittel való balra tolás 2 n -nel való szorzást, míg az n bittel való jobbra tolás 2 n -nel való egész-osztást eredményez. Az értékadó operátorral már korábban megismerkedtünk. Az értékadás történhet a más nyelvekben megszokottak szerint. a=érték, vagy a=kifejezés formában Van azonban olyan forma is, mely a hagyományos nyelvektől teljesen idegen. b=2*(a=4)+5 Ebben az esetben az a és a b változó is kap értéket. Az értékadó operátor mindig jobbról balra értékelődik ki, tehát a kiértékelés után a fenti kifejezésben az a változó értéke 4, a b változó értéke pedig 13 lesz. A kiértékelés ilyen sorrendje miatt van az, hogy a C++ nyelvben az összetett értékadás is működik: a=b=c=0 értékadás után mindhárom változó értéke 0 lesz. Van az értékadásnak C++ nyelvben egy tömörebb formája is. Általános alakban a következőképpen írható le: változó = változó operátor kifejezés helyett a változó operátor = kifejezés Ez a forma általában gyorsabb kódot és áttekinthetőbb programszöveget eredményez. A C++ programokban természetesen mindkettő forma használható. A mellékelt táblázatban összefoglaljuk ezeket a rövidített értékadásokat. A feltételes operátor a C++ nyelvben az egyetlen operátor, melynek három operandusa van. Általános alakja a következő: Hagyományos forma a=a+b a=a-b a=a*b a=a/b a=a%b a=a<<b a=a>>b a=a&b a=a b a=a^b Tömör forma a+=b a-=b a*=b a/=b a%=b a<<=b a>>=b a&=b a =b a^=b Bevezetés a C++ programozásba (9/10. oldal)

10 kifejezés1? kifejezés2 : kifejezés3 Itt először a kifejezés1 értékelődik ki, ha ennek értéke nem 0, azaz IGAZ, akkor a kifejezés2 adja a feltételes kifejezés értékét, különben pedig a kifejezés3. A feltételes kifejezés típusa mindig a kifejezés2 és kifejezés3 típus közül a nagyobb pontosságú típusával egyezik meg. A következő példában a c változó értéke az a és b közül a kisebbel lesz egyenlő. c = a < b? a : b A C++ nyelvben kétfajta típuskonverzió (típusátalakítás) létezik, az implicit (automatikus) és az explicit. Az első a C++ nyelvbe rögzített szabályok szerint történik a programozó beavatkozása nélkül, a második pedig a típuskonverziós operátor segítségével. Ennek általános alakja: (típusnév) kifejezés Az implicit konverzióval kapcsolatban elmondhatjuk, hogy általában a szűkebb operandus információveszteség nélkül konvertálódik a szélesebb operandus típusára. int i,j; float f,m; m=i+f; Ebben az esetben az i float-ra konvertálódik. j=i+f; Itt viszont vigyáznunk kell, mert adatvesztés lép fel, az összeg törtrésze elveszik! Explicit konverziót kell végrehajtanunk a következő példában, ha f-be nemcsak az egész osztás hányadosát szeretnénk betenni int a = 12, b = 5; float f; f = (float) a / (float) b; A C++ nyelvben használt operátorokat foglalja össze az alábbi táblázat: Operátor Jelentés + * / Szokásos matematikai; az osztás maradékos is lehet! ++ Növelés / csökkentés 1-gyel % Osztási maradék << >> Bitenkénti eltolás balra / jobbra < <= > >= Relációs jelek = =!= Egyenlő, nem egyenlő & Bitenkénti és ^ Bitenkénti kizáró vagy Bitenkénti vagy! Logikai nem && Logikai és Logikai vagy = Értékadás += -= *= /= %= Érték megváltoztatása Pl: a += b Hagyományos formában: a = a + b?: Feltételes értékadás Pl: c = a < b? a : b Hagyományosan: if ( a < b ) c = a else c = b ; Bevezetés a C++ programozásba (10/10. oldal)

0.1. Mi az a standard be- és kimenet?... 1. 0.2. A két mintafeladat leírása

0.1. Mi az a standard be- és kimenet?... 1. 0.2. A két mintafeladat leírása KöMaL Technikai tanácsok az I- és S-jelű pontversenyhez A standard be- és kimenet kezelése Tartalomjegyzék 0.1. Mi az a standard be- és kimenet?............................. 1 0.2. A két mintafeladat leírása.................................

Részletesebben

Programozás 3. Dr. Iványi Péter

Programozás 3. Dr. Iványi Péter Programozás 3. Dr. Iványi Péter 1 Egy operandus művelet operandus operandus művelet Operátorok Két operandus operandus1 művelet operandus2 2 Aritmetikai műveletek + : összeadás -: kivonás * : szorzás /

Részletesebben

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE motiabt@inf.elte.

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE motiabt@inf.elte. Programozási alapismeretek :: beadandó feladat Készítő adatai Név: Molnár Tamás EHA: MOTIABT.ELTE E-mail cím: motiabt@inf.elte.hu Gyakorlatvezető: Horváth László Feladat sorszáma: 23. Felhasználói dokumentáció

Részletesebben

117. AA Megoldó Alfréd AA 117.

117. AA Megoldó Alfréd AA 117. Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember

Részletesebben

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3) Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index

Részletesebben

C programnyelv 1. Kedves Kollegina, Kolléga!

C programnyelv 1. Kedves Kollegina, Kolléga! C programnyelv 1 Kedves Kollegina, Kolléga! A jegyzetet Önnek készítettem azért, hogy referencia anyaga legyen a Programnyelv és a Programfejlesztés tárgyakhoz. Szeretném a segítségét igénybe venni abból

Részletesebben

8. Mohó algoritmusok. 8.1. Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

8. Mohó algoritmusok. 8.1. Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete 8. Mohó algoritmusok Optimalizálási probléma megoldására szolgáló algoritmus gyakran olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Sok optimalizálási probléma esetén

Részletesebben

3. Gyakorlat Ismerkedés a Java nyelvvel

3. Gyakorlat Ismerkedés a Java nyelvvel 3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM

Részletesebben

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Bevezetés a programozásba. 6. Előadás: C++ bevezető Bevezetés a programozásba 6. Előadás: C++ bevezető ISMÉTLÉS PLanG features Utasítások Értékadás, KI:, BE: Programkonstrukciók Elágazás Ciklus Típusok Egész, valós, logikai, szöveg, karakter, fájl Típuskonstrukciók

Részletesebben

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C++ programozási nyelvbe Oktatási segédlet Összeállította: Ficsor Lajos 2001. 1. A C++ programozási nyelv története A C++ programozási nyelv

Részletesebben

Géptermi zh-írás forgatókönyve

Géptermi zh-írás forgatókönyve Géptermi zh-írás forgatókönyve 1. A feladat és a tesztelés körülményeinek a megértése A feladat több részbıl áll. A megoldó program kötött szerkezető fájlból kapja az adatokat, ezért azt komolyan kell

Részletesebben

C# gyorstalpaló. Készítette: Major Péter

C# gyorstalpaló. Készítette: Major Péter C# gyorstalpaló Készítette: Major Péter Adattípusok Logikai változó Egész szám (*: előjel nélküli) Lebegőponto s szám Típus Típusnév másképpen (egyenértékű) Helyigény (bit) Példa bool Boolean 8 (!) true,

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek emelt szint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK EMELT SZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM

Részletesebben

Országzászlók (2015. május 27., Sz14)

Országzászlók (2015. május 27., Sz14) Országzászlók (2015. május 27., Sz14) Írjon programot, amely a standard bemenetről állományvégjelig soronként egy-egy ország zászlójára vonatkozó adatokat olvas be! Az egyes zászlóknál azt tartjuk nyilván,

Részletesebben

Programozás I gyakorlat. 5. Struktúrák

Programozás I gyakorlat. 5. Struktúrák Programozás I gyakorlat 5. Struktúrák Bemelegítés Írj programot, amely beolvassa 5 autó adatait, majd kiírja az adatokat a képernyőre. Egy autóról a következőket tároljuk: maximális sebesség fogyasztás

Részletesebben

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C programozási nyelvbe Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Oktatási segédletek a levelező műszaki informatikus hallgatók

Részletesebben

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

Részletesebben

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán Publication date 2011 A tananyag a TÁMOP-4.1.2-08/1/A-2009-0046

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

Bevezetés a programozásba 2

Bevezetés a programozásba 2 Bevezetés a programozásba 2 7. Előadás: STL konténerek, sablonok http://digitus.itk.ppke.hu/~flugi/ Vector int int main() { vector v(10); int int sum=0; for for (int i=0;i

Részletesebben

4. Öröklődés. Programozás II

4. Öröklődés. Programozás II 4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()

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

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/12 Input-output

Részletesebben

2.3. A C nyelv utasításai

2.3. A C nyelv utasításai 2.3. A C nyelv utasításai A C szabvány hét csoportban osztályozza a C nyelv utasításait: Csoport Kulcsszavak, ill. jelölések Kifejezés utasítás Üres utasítás: ; Összetett utasítás: } Szelekciós utasítások:

Részletesebben

Rekurzió. Horváth Gyula. horvath@inf.elte.hu

Rekurzió. Horváth Gyula. horvath@inf.elte.hu 1. ábra. Rekurzió Horváth Gyula horvath@inf.elte.hu 1. Feladat: Sorbaállítások száma Hány féleképpen lehet sorbaállítani az osztály tanulóit? Bemenet: a tanulók n száma. Kimenet: ahány félekeppen az n

Részletesebben

Analóg és digitális jelek. Az adattárolás mértékegységei. Bit. Bájt. Nagy mennyiségû adatok mérése

Analóg és digitális jelek. Az adattárolás mértékegységei. Bit. Bájt. Nagy mennyiségû adatok mérése Analóg és digitális jelek Analóg mennyiség: Értéke tetszõleges lehet. Pl.:tömeg magasság,idõ Digitális mennyiség: Csak véges sok, elõre meghatározott értéket vehet fel. Pl.: gyerekek, feleségek száma Speciális

Részletesebben

A héj vezérlő szerkezetei I.

A héj vezérlő szerkezetei I. Tartalom A héj vezérlő szerkezetei I. 1.Vezérlés a héj programozásban...1 1.1.Vezérlési szerkezetek...1 1.2.Az igaz/hamis feltétel a héjprogramozásban...1 2.Az &&, és! szerkezetek...2 3.A test és az expr

Részletesebben

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál? Típus definiálás Ennek általános alakja: typedef típus név Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál? typedef double vector[3];

Részletesebben

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető

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

Körkörös listák. fej. utolsó. utolsó. fej

Körkörös listák. fej. utolsó. utolsó. fej Körkörös listák fej utolsó fej utolsó Példa. Kiszámolós játék. Körben áll n gyermek. k-asával kiszámoljuk őket. Minden k-adik kilép a körből. Az nyer, aki utolsónak marad. #include using namespace

Részletesebben

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE 2015-16 Classic Empire - A turn Based Wargame Classic Empire is a real time, multiplayer, Internet-based game, featuring military, diplomatic, and economic

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

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

Elôszó a magyar kiadáshoz A Kiadó Elôszó

Elôszó a magyar kiadáshoz A Kiadó Elôszó Elôszó a magyar kiadáshoz A C programnyelvet eredetileg a Bell Laboratóriumban az UNIX operációs rendszerhez, az alatt fejlesztették ki PDP-11_ számítógépen. A kifejlesztése óta eltelt évek során bebizonyosodott,

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

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt Beépített változók (paraméterezés): $# - paraméterek száma $1...9 - az adott paraméter értéke $0 - az adott héjprogram neve $* - az összes paraméter egyben Idézőjelek típusai: ' ' - belső szöveg stringként

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

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

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere 2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda

Részletesebben

Alkalmazott modul: Programozás

Alkalmazott modul: Programozás Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Feladatgyűjtemény Összeállította: Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Frissítve: 2015.

Részletesebben

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek

Részletesebben

15. Programok fordítása és végrehajtása

15. Programok fordítása és végrehajtása 15. Programok fordítása és végrehajtása Programok fordítása és végrehajtása. (Fordítás és interpretálás, bytecode. Előfordító, fordító, szerkesztő. A make. Fordítási egység, könyvtárak. Szintaktikus és

Részletesebben

C# feladatok gyűjteménye

C# feladatok gyűjteménye C# feladatok gyűjteménye Készítette: Fehérvári Károly I6YF6E Informatika tanár ma levelező tagozat 1) Feladat: ALAPMŰVELETEK Készítsünk programot, amely bekér két egész számot. Majd kiszámolja a két szám

Részletesebben

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu

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

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk Elméleti anyag: Processzoros vezérlés általános tulajdonságai o z induló készletben

Részletesebben

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia (Struktúra, mutatók, függvényhívás) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 október 14/21. Struktúra

Részletesebben

A DBM függvények használata

A DBM függvények használata 11. ÓRA A DBM függvények használata Ha nem is férünk hozzá valamilyen SQL adatbáziskezelõhöz (mint a MySQL vagy az Oracle), majdnem biztos, hogy valamilyen DBM-szerû adatbázisrendszer rendelkezésünkre

Részletesebben

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók STL Elsődleges komponensek: Tárolók Algoritmusok Bejárók Másodlagos komponensek: Függvény objektumok Adapterek Allokátorok (helyfoglalók) Tulajdonságok Tárolók: Vektor (vector) Lista (list) Halmaz (set)

Részletesebben

Elıírt lépésszámú ciklusok

Elıírt lépésszámú ciklusok Programozás tankönyv VI. Fejezet Elıírt lépésszámú ciklusok Ismétlés a tudás anyja. Hernyák Zoltán 61/312 Az eddig megírt programok szekvenciális mőködésőek voltak. A program végrehajtása elkezdıdött a

Részletesebben

INFORMATIKA tétel 2018

INFORMATIKA tétel 2018 INFORMATIKA tétel 2018 ELIGAZÍTÁS: 1 pont hivatalból; Az 1-4 feladatokban (a pszeudokód programrészletekben): (1) a kiír \n utasítás újsorba ugratja a képernyőn a kurzort; (2) a minden i = n,1,-1 végezd

Részletesebben

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

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról

Részletesebben

Fordítóprogramok felépítése, az egyes programok feladata. A következő jelölésmódot használjuk: program(bemenet)(kimenet)

Fordítóprogramok felépítése, az egyes programok feladata. A következő jelölésmódot használjuk: program(bemenet)(kimenet) Fordítóprogramok. (Fordítóprogramok felépítése, az egyes komponensek feladata. A lexikáliselemző működése, implementációja. Szintaktikus elemző algoritmusok csoportosítása, összehasonlítása; létrehozásuk

Részletesebben

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

Az INTEL D-2920 analóg mikroprocesszor alkalmazása Az INTEL D-2920 analóg mikroprocesszor alkalmazása FAZEKAS DÉNES Távközlési Kutató Intézet ÖSSZEFOGLALÁS Az INTEL D 2920-at kifejezetten analóg feladatok megoldására fejlesztették ki. Segítségével olyan

Részletesebben

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok Alkalmazott Informatikai Intézeti Tanszék MŰSZAKI INFORMATIKA Dr.Dudás László 0. Excel VII. Visual Basic programozás alapok A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

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

A sed folyamszerkesztő

A sed folyamszerkesztő A sed folyamszerkesztő 1.Bevezető...1 2.A sed parancssora...1 3.A sed működése...2 4.A sed parancsai...3 4.1.A címek megadása...3 4.2.Gyakran használt parancsok...5 4.3.Ritkábban használt parancsok...8

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

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

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

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 8. gyakorlat Fájlkezelés Surányi Márton PPKE-ITK 2010.11.02. Fájlkezelés C++-ban C++-ban van lehet ségünk fájlok kezelésére. Itt már tényleges fájlokkal dolgozunk, nem pedig

Részletesebben

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Egységes és objektumközpontú adatbázis-kezelés (2. rész) Egységes és objektumközpontú adatbázis-kezelés (2. rész) A folytatásában a bemutatjuk, hogyan kezelhetünk Qt rendszer alatt SQL sormutatót, és készíthetünk grafikus felületet programoknak a Qt Designer

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

1. Az utasítás beolvasása a processzorba

1. Az utasítás beolvasása a processzorba A MIKROPROCESSZOR A mikroprocesszor olyan nagy bonyolultságú félvezető eszköz, amely a digitális számítógép központi egységének a feladatait végzi el. Dekódolja az uatasításokat, vezérli a műveletek elvégzéséhez

Részletesebben

Halmazok. Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai.

Halmazok. Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai. Halmazok Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai. 1. lapfogalmak halmaz és az eleme fogalmakat alapfogalmaknak tekintjük, nem deniáljuk ket. Jelölés: x H,

Részletesebben

Programozás alapjai 9.Gy: Struktúra 2.

Programozás alapjai 9.Gy: Struktúra 2. Programozás alapjai 9.Gy: Struktúra 2. Ördögi részletek P R O A L A G 35/1 B ITv: MAN 2018.11.10 Euró árfolyam statisztika Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR).

Részletesebben

OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK

OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK ÁTIRÁNYÍTÁSOK KIMENET ÁTIRÁNYÍTÁSA A standard output > >> 1> root@ns:/var/tmp# date > datum.txt root@ns:/var/tmp# cat datum.txt 2016. márc. 2., szerda, 07.18.50

Részletesebben

Rekurzió. 1. Feladat: Sorbaállítások száma. 2. Feladat: Zsebpénz. Horváth Gyula horvath@inf.elte.hu. Megoldás. Megoldás

Rekurzió. 1. Feladat: Sorbaállítások száma. 2. Feladat: Zsebpénz. Horváth Gyula horvath@inf.elte.hu. Megoldás. Megoldás Rekurzió Horváth Gyula horvath@inf.elte.hu 1. Feladat: Sorbaállítások száma Hány féleképpen lehet sorbaállítani az osztály tanulóit? Bemenet: a tanulók n száma. Kimenet: ahány félekeppen az n tanuló sorbaállítható.

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

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Készítette: Gregorics Tibor Szabóné Nacsa Rozália Alakítsunk át egy infix formájú aritmetikai kifejezést postfix

Részletesebben

INFORMATIKA javítókulcs 2016

INFORMATIKA javítókulcs 2016 INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.

Részletesebben

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

Részletesebben

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat PM-04 p. 1/18 Programozási módszertan Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu

Részletesebben

4. Programozási nyelvek osztályozása. Amatőr és professzionális

4. Programozási nyelvek osztályozása. Amatőr és professzionális 4. Programozási nyelvek osztályozása. Amatőr és professzionális programozási nyelvek. Számítási modellek (Neumann-elvű, automataelvű, funkcionális, logikai). Programozási nyelvekkel kapcsolatos fogalmak

Részletesebben

Matematikai alapok. Dr. Iványi Péter

Matematikai alapok. Dr. Iványi Péter Matematikai alapok Dr. Iványi Péter Számok A leggyakrabban használt adat típus Egész számok Valós számok Bináris számábrázolás Kettes számrendszer Bitek: 0 és 1 Byte: 8 bit 128 64 32 16 8 4 2 1 1 1 1 1

Részletesebben

Az Ügyfélkapu és a magyarorszag.hu

Az Ügyfélkapu és a magyarorszag.hu Az Ügyfélkapu Tartalom Bevezető... 2 A regisztráció folyamata... 3 Regisztráció indítása az interneten keresztül... 3 Személyes regisztráció... 5 Regisztráció elektronikus aláírással... 7 Külföldiek regisztrációja...

Részletesebben

Készítette: niethammer@freemail.hu

Készítette: niethammer@freemail.hu VLogo VRML generáló program Készítette: Niethammer Zoltán niethammer@freemail.hu 2008 Bevezetés A VLogo az általános iskolákban használt Comenius Logo logikájára épülő programozási nyelv. A végeredmény

Részletesebben

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.4. Relációs algebra (áttekintés) 5.1.

Részletesebben

Programozás C++ -ban 2007/1

Programozás C++ -ban 2007/1 Programozás C++ -ban 2007/1 1. Különbségek a C nyelvhez képest Több alapvető különbség van a C és a C++ programozási nyelvek szintaxisában. A programozó szempontjából ezek a különbségek könnyítik a programozó

Részletesebben

A meteorológia az időjárás tudománya

A meteorológia az időjárás tudománya Ismerd meg! A meteorológia az időjárás tudománya A meteorológia a légkörben végbemenő folyamatok, jelenségek vizsgálatával foglalkozó tudomány, amelyen belül különös hangsúlyt fektetnek az időjárási és

Részletesebben

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Bevezetés a programozásba. 8. Előadás: Függvények 2. Bevezetés a programozásba 8. Előadás: Függvények 2. ISMÉTLÉS Helló #include using namespace std; int main() cout

Részletesebben

Számolótábla Általános ismeretek

Számolótábla Általános ismeretek Számolótábla Általános ismeretek A legenda szerint a táblázatos számítások gyorsabb elvégzésére találták ki a számítógépet. Tény, hogy a tüzérségi számításokat táblázatos formában végezték, hogy az első

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

Bevezetés a programozásba I 7. gyakorlat. C++: szövegkezelés, szekvenciális fájlkezelés. Szövegkezelés Karakterkezelés

Bevezetés a programozásba I 7. gyakorlat. C++: szövegkezelés, szekvenciális fájlkezelés. Szövegkezelés Karakterkezelés Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 7. gyakorlat C++: szövegkezelés, szekvenciális fájlkezelés 2011.10.25. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Osztály és objektum fogalma

Osztály és objektum fogalma Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály

Részletesebben

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa! Tartalomjegyzék Általános Információ! 2 Felhasználói dokumentáció! 3 Feladat! 3 Környezet! 3 Használat! 3 Bemenet! 3 Példa! 3 A program eredménye! 3 Példa! 3 Hibalehetőségek! 3 Példa! 3 Fejlesztői dokumentáció!

Részletesebben

HÁZI FELADAT ELSŐ GYAKORLAT MIELŐTT ELKEZDENÉNK ELINDULÁS. ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés

HÁZI FELADAT ELSŐ GYAKORLAT MIELŐTT ELKEZDENÉNK ELINDULÁS. ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés 1 ELSŐ GYAKORLAT HÁZI FELADAT A feladat megoldása során a Word 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: A súgó használata. Microsoft Office Word testreszabása. Dokumentumok

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Folyamok kezelése Fájlok írása/olvasása Folyamok kezelése Szabvány folyamok Eddig Kiírás a szöveges konzolra:

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

Programozás II. Fájlkezelés

Programozás II. Fájlkezelés Programozás II. Fájlkezelés Kocsis Zoltán Tamás 2013. 03. 28 Fájlkezelés Az stdio.h-ban megadott FILE* típusú pointerrel és függvényekkel lehet elérni a fájlunkat. FILE *fp; /* fájl mutató (file pointer/handle)

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 1321 ÉRETTSÉGI VIZSGA 2014. október 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ EMBERI ERŐFORRÁSOK MINISZTÉRIUMA

Részletesebben

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait. Mérési útmutató A/D konverteres mérés 1. Az A/D átalakítók főbb típusai és rövid leírásuk // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait. Csoportosítás polaritás szempontjából:

Részletesebben

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 8. gyakorlat C++: szövegfolyamok, intelligens tömbök 2011.11.08. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben