programozási nyelvek i. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/cpp.pdf · zsakó...

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

Upload: others

Post on 30-Aug-2019

5 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Programozási nyelvek I.

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

Page 2: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++

2014.11.24. 12:03

I. A nyelv története

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

Page 3: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++

2014.11.24. 12:03

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

Page 4: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++

2014.11.24. 12:03

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

Page 5: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++

2014.11.24. 12:03

A program szerkezete

#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

Page 6: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++

2014.11.24. 12:03

Deklaráció 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

Page 7: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++

2014.11.24. 12:03

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

Page 8: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

Egész típus

típusnév: int

értékhalmaz: -231…231-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: -215…215-1 (gyakran)

long értékhalmaz: -231…231-1 (gyakran)

long long értékhalmaz: -263…263-1 (gyakran)

unsigned értékhalmaz: 0…232-1 (gyakran)

8/42

Page 9: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 10: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

Valós típus

típusnév: double 8 byte-os, kb. 3.4*10308 (gyakran)

értékhalmaz: -…

műveletek: + - * / == != < <= > >= += -= *= /=

További valós típusok (módosítók)

float értékhalmaz: 4 byte-os, kb. 1.7*1038

long double értékhalmaz: 12 byte (gyakran)

10/42

Page 11: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 12: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 13: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 14: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 15: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 16: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 17: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 18: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

Rekord típus

típusnév: struct Nev { tipus1 mező1;

tipus2 mező2;

...

};

hivatkozás: változónév.mezőnév

18/42

Page 19: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 20: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

Speciális műveletek

& - bitenkénti ÉS | - bitenkénti VAGY

^ - bitenkénti KIZÁRÓ 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

Page 21: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 22: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 23: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 24: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 25: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

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

Page 26: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − típusok

2014.11.24. 12:03

Ú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

Page 27: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

É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és1 : kifejezés2

27/42

Page 28: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Elágazás

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

28/42

Page 29: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Elágazás sokfelé

if(feltétel1){

első ág

}

else if(feltétel2){

második ág

}

else{

utolsó ág

}

29/42

Page 30: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Elágazás kifejezés szerint

switch (kifejezés) {

case konstans1 : utasítássorozat1 ; break;

case konstans2 : utasítássorozat2 ; break;

case konstans3 :

case konstans4 : utasítássorozat4 ; break;

default : utasítássorozat5 ;

}

Az egyéb esetben végrehajtandó ág elhagyható.

(A break elhagyható – jelentés ilyenkor módosul!)

30/42

Page 31: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Feltételes ciklus (elöltesztelős)

while(feltétel){

ciklusmag

}

Feltételes ciklus (hátultesztelős)

do{

ciklusmag

}while(feltétel)

31/42

Page 32: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

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

Page 33: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:10

Speciális vezérlésátadások

continue folytatás

break abbahagyás

Példák

while(){

i++;

if(i<=5) continue;

if(i==n) break;

ciklusmag

}

33/42

Page 34: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Beolvasás és kiírás

#include <iostream>

cin >> változó1 >> változó2;

cout << kifejezés1 << kifejezés2;

cout << endl;

cout << ‘\n’;

getline(cin,str);

34/42

Page 35: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Beolvasás ellenőrzéssel

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

Page 36: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

Megjegyzés

Egy soros megjegyzés esetén:

// megjegyzés

Több soros megjegyzés esetén:

/*

megjegyzés

*/

36/42

Page 37: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

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

Page 38: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

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

Page 39: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

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

Page 40: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

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

Page 41: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Zsakó László: Programozási nyelvek I.

C++ − utasítások

2014.11.24. 12:03

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

Page 42: Programozási nyelvek I. - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/Cpp.pdf · Zsakó László: Programozási nyelvek I. C++ 2014.11.24. 12:03 I. A nyelv története

Programozási nyelvek I.

5. előadás vége