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

Hasonló dokumentumok
A C# programozási nyelv alapjai

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

Maximum kiválasztás tömbben

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

Informatika terméktervezőknek

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

Bevezetés a programozásba I.

Gregorics Tibor Egyszerű programok C++ nyelvi elemei 1

1. Alapok. Programozás II

Gregorics Tibor Egyszerű programok C++ nyelvi elemei 1

Java II. I A Java programozási nyelv alapelemei

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

A C programozási nyelv I. Bevezetés

Java II. I A Java programozási nyelv alapelemei

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

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

A C# PROGRAMOZÁSI NYELV

A C programozási nyelv I. Bevezetés

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

Gregorics Tibor Egyszerű programok C++ nyelvi elemei 1

Programozási nyelvek Python

Mintavételes szabályozás mikrovezérlő segítségével

A C programozási nyelv II. Utasítások. A függvény.

Bevezetés a C++ programozási nyelvbe

Bevezetés a programozásba I.

Bevezetés a programozásba. 9. Előadás: Rekordok

Bevezetés a C++ programozásba

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

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

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

Algoritmizálás és adatmodellezés tanítása 1. előadás

Szoftvertechnológia alapjai Java előadások

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

Alkalmazott modul: Programozás 2. fejezet. C++ alapismeretek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

EAF I C++ nyelvi elemek felsorolása 1. Alapvet típusok

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

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

Bevezetés a C++ programozási nyelvbe

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

Pénzügyi algoritmusok

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozási alapismeretek 2009/2010

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

Szoftvertervezés és -fejlesztés I.

Bevezetés a programozásba I.

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

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

Pénzügyi algoritmusok

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

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

Programozási alapismeretek 3. előadás

Készítette: Nagy Tibor István

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

5. Gyakorlat. struct diak {

Programozas 1. Strukturak, mutatok

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

Alkalmazott modul: Programozás. C++ alapismeretek. C++ alapismeretek Történet

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

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

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozás C és C++ -ban

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Programozási alapismeretek 1. előadás

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

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

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

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

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

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

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

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

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

117. AA Megoldó Alfréd AA 117.

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!

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

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

Programozás alapjai. 5. előadás

Bevezetés a programozásba. 11. Előadás: Esettanulmány

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás C++ -ban 2007/1

Programozás alapjai II. (2. ea) C++

Programozás alapjai II. (2. ea) C++

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Vezérlési szerkezetek

Programozás. C++ típusok, operátorok. Fodor Attila

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

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

INFORMATIKA tétel 2018

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

A C++ Standard Template Library rövid összefoglalás

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

C++ függelék. Tartalom

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Átírás:

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, szabvány 1989 első szabvány 2007 legújabb szabvány 2/42

C++ I. A nyelv története C++ 1983 Bjarne Stroustrup 1998 első szabvány 2011, 2014 legújabb szabvány Fejlesztő eszközök Dev C++ Code::Blocks Visual C++ Windows KDevelop Linux 3/42

C++ II. A nyelv jellemzői Program = több fordítási egység Nagybetű kisbetű Függvényorientált A változók kezdőértéke nem definiált Utasításlezáró jel a ; Védett azonosítók 4/42

A program szerkezete C++ #include <iostream> (szabványos beolvasás és kiírás) #include <fstream> (szöveges állományok kezelése) #include <string> (karakterláncok kezelése) using namespace std; int main(){ } 5/42

Deklaráció C++ típusnév változó; típusnév változó 1, változó 2, változó 3 ; Kezdőérték típusnév változó = érték; típusnév változó = kifejezés; Konstans deklaráció const típus név=érték; 6/42

C++ A program szerkezete... globális változók deklarációi int main(){ lokális változók deklarációi return 0; } 7/42

C++ típusok Egész típus típusnév: int értékhalmaz: -2 31 2 31-1 (gyakran) műveletek: + - * / % ==!= < <= > >= += -= *= %= További egész típusok (típusmódosítók) Ami biztos: short<int<long<long long short értékhalmaz: -2 15 2 15-1 (gyakran) long értékhalmaz: -2 31 2 31-1 (gyakran) long long értékhalmaz: -2 63 2 63-1 (gyakran) unsigned értékhalmaz: 0 2 32-1 (gyakran) 8/42

C++ típusok Relációk kifejezés==kifejezés /* azonos? */ kifejezés!=kifejezés /* nem azonos? */ kifejezés<=kifejezés /* kisebb-egyenlő? */ kifejezés<kifejezés /* kisebb? */ kifejezés>=kifejezés /* nagyobb-egyenlő? */ kifejezés>kifejezés /* nagyobb? */ 9/42

C++ típusok Valós típus típusnév: double 8 byte-os, kb. 3.4*10 308 (gyakran) értékhalmaz: - műveletek: + - * / ==!= < <= > >= += -= *= /= További valós típusok (módosítók) float értékhalmaz: 4 byte-os, kb. 1.7*10 38 long double értékhalmaz: 12 byte (gyakran) 10/42

C++ típusok Karakter típus típusnév: char értékhalmaz: karakterek, \, kódok műveletek: ==!= < <= > >= Logikai típus típusnév: bool értékhalmaz: false, true műveletek: &&! ==!= 11/42

C++ típusok Szöveg típus (#include <string>) típusnév: string értékhalmaz: valami műveletek: size() + [] c_str() substr() ==!= s.size() az s hossza (karaktereinek száma) s[i] az s i-edik karaktere s + vége két karakterlánc összefűzése s.c_str() s átalakítása C stílusú lánccá s.substr(i,j) s részének kivágása atoi(s.c_str()) s számmá konvertálása 12/42

C++ típusok Szöveg típus (#include <string>) s.find(mit) a mit helye az s szövegben, string::npos. s.replace(tól,db,mivel); //s-ben tól-tól kezdődően db jelet helyettesít mivel-lel. (Több változata van.) s.length() az s hossza (karaktereinek száma) s.at(i) az s i-edik karaktere ellenőrzötten 13/42

C++ típusok Tömb típus típusnév: típus változó[elemszám] Az elemszám lehet konstans (statikus tömb) vagy változó (dinamikus tömb). indexelés: 0..elemszám-1 hivatkozás: változó[index] Mátrix típus típusnév: típus változó[sorok száma][oszlopok száma] hivatkozás: változó[sorindex][oszlopindex] 14/42

C++ típusok Tömb típus példa int t[100]; // 100 elemű tömb int n; // tényleges méret: n<=100 cin >> n; for(int i=0;i<n;++i){ // tömb feltöltése cin >> t[i]; } 15/42

C++ típusok Tömb típus int n; cin >> n; int t[n]; // n elemű tömb for(int i=0;i<n;++i){ // tömb feltöltése cin >> t[i]; } 16/42

C++ típusok Tömb kezdőértékkel int t[3]={1,3,5}; // 3 elemű tömb int u[]={1,3,5,7}; // 4 elemű tömb char v[]= abc // 4 elemű tömb, utolsó eleme a 0 kódú karakter Konstans tömb const string Szinek[5]={"zöld","piros", "sárga","fehér","fekete"}; 17/42

C++ típusok Rekord típus típusnév: struct Nev { tipus 1 mező 1 ; tipus 2 mező 2 ;... }; hivatkozás: változónév.mezőnév 18/42

C++ típusok Szöveges állomány (#include <fstream>) típusnév: ifstream, ofstreem nyitás: f.open(fnev.c_str()); zárás: f.close(); hibafüggvény: f.fail(); igaz, ha hiba történt hibaállapot megszüntetése: f.clear(); olvasás: f >> valtozo; getline(f,sor); f.get(kar); írás: f << kifejezes; vége?: f.eof() 19/42

C++ típusok Speciális műveletek & - bitenkénti ÉS ^ - bitenkénti KIZÁRÓ VAGY - bitenkénti VAGY ~ - bitenkénti TAGADÁS << - bitek BALRA léptetése >> - bitek JOBBRA léptetése Példa: int a = 5; // bináris: 0000000000000101 int b = a << 3; // bináris: 0000000000101000, // vagy 40 tizes számrendszerben int c = b >> 3; // bináris: 0000000000000101, // vagy 3 bittel vissza, a kezdőértékhez 20/42

C++ típusok Speciális műveletek (típusnév) változónév típuskonverzió sizeof(típusnév) típus mérete byte-okban sizeof(változó) a változó mérete byte-okban Felsorolás enum név {értékek} Példa: enum szin {piros,feher,zold}; enum szin {piros=3,feher=5,zold=7}; 21/42

C++ típusok További hasznos típusok stringstream állományszerűen kezelt szöveg #include <sstream> Példa: szövegből egész szám konvertálása string s("1204"); int i; stringstream(s) >> i; 22/42

C++ típusok További hasznos típusok vector változtatható méretű tömb #include <vector> Példa: vector <int> a; vector int b(10); a.resize(n); for(int i=0;i<(int)a.size();++i) {a[i]=i;} a.push_back(n); //növeli az elemszámot b.pop_back(); //csökkenti az elemszámot b.clear(); //minden elemet töröl a.back()=a.front() //utolsó is legyen az első 23/42

C++ típusok Mutató típus &változó a változó címe *változó a változó címen levő érték Mutató típus deklarálása típusnév *változó a változó típusnév típusú értékre mutat Mutató típushoz memóriafoglalás változó=new típusnév //egy elemnek változó=new típusnév[elemszám] //tömbnek Mutató típushoz memóriafelszabadítás delete változónév vagy delete []változónév 24/42

C++ típusok Mutatóval megadott rekord mezőinek elérése ekvivalens leírások rekordmutató->mezőnév (*rekordmutató).mezőnév de nem ekvivalens ezzel: *rekordmutató.mezőnév Mutató és tömb int *q; q=new int[db]; for (int i=0;i<db;i++){q[i]=i;} delete[] q; 25/42

C++ típusok Új típus typedef struktúra újtípusnév Példák: typedef int egesz; typedef int kistomb[5]; typedef struct{int x; int y;} pont; kistomb x; for (int i=0;i<5;++i) x[i]=i; pont p; p.x=5; p.y=6; 26/42

C++ utasítások Értékadás változó=kifejezés Az értékadásnak értéke is van, azaz továbbadható újabb változónak: v1=v2=v3=kifejezés Speciális értékadások: i++, ++i i=i+1 i++ i kezdeti értéke, ++i i megnövelt értéke i--, --i i=i-1 i-- i kezdeti értéke, --i i csökkentett értéke a=++i vagy a=i++ Mi a különbség? v+=kifejezés v=v+kifejezés v-=kifejezés v=v-kifejezés feltétel? kifejezés 1 : kifejezés 2 27/42

Elágazás C++ utasítások if(feltétel) if(feltétel) utasítás; { else utasítás; akkor ág } else { különben ág } A különben ág elhagyható. A feltétel bármi lehet, ami feltételként kiértékelhető: hamis=0; igaz 0. 28/42

C++ utasítások Elágazás sokfelé if(feltétel 1 ){ első ág } else if(feltétel 2 ){ második ág } else{ utolsó ág } 29/42

C++ utasítások Elágazás kifejezés szerint switch (kifejezés) { case konstans 1 : utasítássorozat 1 ; break; case konstans 2 : utasítássorozat 2 ; break; case konstans 3 : case konstans 4 : utasítássorozat 4 ; break; default : utasítássorozat 5 ; } Az egyéb esetben végrehajtandó ág elhagyható. (A break elhagyható jelentés ilyenkor módosul!) 30/42

C++ utasítások Feltételes ciklus (elöltesztelős) while(feltétel){ ciklusmag } Feltételes ciklus (hátultesztelős) do{ ciklusmag }while(feltétel) 31/42

C++ utasítások Számlálós ciklus for(kezdet;feltétel;növelés){ ciklusmag } Példák for(int i=0;i<n;++i){ int i=0; ciklusmag for(;i<n;){ } ciklusmag; ++i; for(i=0,j=n;j>0;++i,--j){ } ciklusmag } for(i=1;i<=n;i+=2){ ciklusmag } 32/42

Speciális vezérlésátadások continue folytatás break Példák C++ utasítások abbahagyás while(){ i++; if(i<=5) continue; if(i==n) break; ciklusmag } 2014.11.24. 12:10 33/42

C++ utasítások Beolvasás és kiírás #include <iostream> cin >> változó 1 >> változó 2 ; cout << kifejezés 1 << kifejezés 2 ; cout << endl; cout << \n ; getline(cin,str); 34/42

Beolvasás ellenőrzéssel C++ utasítások do{ cout << "kérdés:"; cin >> x; bool hiba=cin.fail(); if (hiba!helyes(x)) { cout << "hibaüzenet" << endl; cin.clear(); getline(cin,tmp, \n ) }; }while (hiba!helyes(x)); 35/42

C++ utasítások Megjegyzés Egy soros megjegyzés esetén: // megjegyzés Több soros megjegyzés esetén: /* */ megjegyzés 36/42

C++ utasítások Függvények típusnév függvénynév(formális paraméterek) { utasítások; return függvényérték; } A típusnév lehet void, ekkor nincs függvényérték. Lehet két függvénynek azonos neve, ha a paramétereik különbözőek. exit(kód) a programot fejezi be, ezzel a kóddal Függvények hívása függvénynév(aktuális paraméterek) 37/42

C++ utasítások Paraméter érték szerint int negyzet(int i){ int j=i*i; return j; } int k=negyzet(6); int n=negyzet(k+2); Paraméter cím (hivatkozás) szerint void negyzet(int i, int &j){ j=i*i; } negyzet(6,k); negyzet(k+2,n); 38/42

C++ utasítások Alapelv: a tömbök mindig hivatkozás szerint adódnak át! Bemenő paraméter int negyzet(const int x[], int n){...} int negyzet(const int x[maxn], int n){...} Kimenő paraméter int x[maxn] vagy int* x=new int[n]; //már definiált méretű int negyzet(int x[], int &n){...} int negyzet(int x[maxn], int &n){...} 39/42

C++ utasítások Paraméter feltételezett értéke int hatvany(int i, int k=2){ int h=1 for(int j=0;j<k;++j) h*=i; return (h); } int k=hatvany(6,2); int n=hatvany(6); 40/42

C++ utasítások Speciális, kódba behelyettesítendő függvény inline típus név(paraméterek){ utasítások } Függvény előredefiniálás típus név(paraméterek); Példák: int negyzet(int i); 41/42

Programozási nyelvek I. 5. előadás vége