Kezdőoldal » Számítástechnika » Programozás » Miert van szuksegunk funciokra...

Miert van szuksegunk funciokra meg osztalyokra c++-ban?

Figyelt kérdés

Kezdo vagyok meg c++-ban,interneten tutorialokbol tanulok es nem ertem mi szuksegem lesz vagy van osztalyokra es funkciokra...(azt ertem nagyjabol hogy mit csinalnak...)

14/f



2016. szept. 11. 13:17
 1/9 anonim ***** válasza:
Majd megérted.
2016. szept. 11. 13:45
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Ok De valaki kicsit elmagyarazna?
2016. szept. 11. 13:50
 3/9 anonim ***** válasza:
Szerintem mindegyik tutorial magyarázza ezeket.
2016. szept. 11. 13:57
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
Az elején felejtsd el az osztályokat és a függvényeket. Koncentrálj a kódolásra. Ha majd eléggé jól fog menni és akarsz majd egy komplikáltabb kódot írni akkor majd érezni fogod az osztályoknak és a függvényeknek a szükségességét.
2016. szept. 11. 14:10
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

Ennek a magyarázata elég komplex dolog, így kénytelen leszek pongyolán fogalmazni, a kollégáktól előre is elnézést kérek.


A dolog alapvető lényege az egységbezárás és a kód újrafelhasználhatósága.


Az első azt jelenti, hogy adott műveletsorokat és a hozzájuk tartozó adatokat elzárod a külvilág elől, így nem tudod őket egy másik, független kódrészletből véletlenül elbarmolni.


A második pedig azt, hogy nem kell kétszer megírnod ugyanazt a kódot, hanem a szubrutint meghívva tudod a folyamatrészt lefuttatni. A kollégák majd feltehetőleg felhoznak neked egy-két használható példát is, én viszont most keltem és még nem kávéztam :)


A copy-paste egy programban főbenjáró bűn. DRY, azaz Don't Repeat Yourself. Ha többször írod meg ugyanazt a kódrészletet, többször is tudod elszúrni (akár többféleképpen) és ha módosítani kell rajta, minél több másolatod van, annál nagyobb eséllyel fogsz valamelyikről megfeledkezni, aztán mehet a fejvakarás, hogy miért nem csinálja azt a program, amit szeretnél. Látható, hogy ez szubrutinokkal elkerülhető, mert csak egyszer, egyetlen helyen írod meg az adott funkciót, majd a kód más részein ezután már csak hivatkoznod kell rá. A kódismétlés mindig bajt hoz, érdemes kerülni.


Egy harmadik, szintén elég fontos, de a kezdők által gyakran meg nem értett, esetenként elhanyagolt tulajdonság, hogy a szubrutinok többnyire (a kivételeket most nem tárgyalnám) névvel rendelkeznek, egy jól megválasztott név pedig kiválóan tudja dokumentálni az adott kódrészt, anélkül, hogy karbantartásigényes, zavaró és egyéb sajátos veszélyekkel bíró kommentekkel kellene telehányni a forráskódot.


Ha nekikezdtél már a programozásnak, akkor valószínűleg most is használsz szubrutinokat és osztályokat, legfeljebb nem vetted még észre (C++ -ban mondjuk osztályok nélkül még meg lehet úszni, de ez nem jelenti azt, hogy érdemes). Ott van például a vector. Ha nem lenne a vector osztály és metódusai, turkálhatnál ömlesztett adatok után a memóriában. Belátható, hogy ez olvashatatlan és veszélyes lenne.


Egy kissé erőtlen példára talán azért futja így félálomban:


/**

˙* Tudom, skacok, std::string ...

˙*/

int main() {

˙˙˙˙char *nev1 = "Albert";

˙˙˙˙char *nev2 = "Béla";

˙˙˙˙char *nev3 = "Cecil";

˙˙˙˙char *nev4 = "Csaba";


˙˙˙˙std::cout << "Szia, " << nev1 << std::endl;

˙˙˙˙std::cout << "Szia, " << nev2 << std::endl;

˙˙˙˙std::cout << "Szia, " << nev3 << std::endl;

˙˙˙˙std::cout << "Szia, " << nev4 << std::endl;

˙˙˙˙return EXIT_SUCCESS;

};


Hát ez így elég borzasztó. Feleslegesen sok sor, feleslegesen sok ismétlés, feleslegesen sok hibalehetőség, pedig végig ugyanaz a megy végbe: Köszöntünk egy nevet.


Nézzük, hogyan segíthet itt egy szubrutin:


void sayHello(char *name) {

˙˙˙˙std::cout << "Szia," << name << endl;

};


int main() {

˙˙˙˙sayHello("Albert");

˙˙˙˙sayHello("Béla");

˙˙˙˙sayHello("Cecil");

˙˙˙˙sayHello("Csaba");

˙˙˙˙return EXIT_SUCCESS;

};


Ezt még meg lehetne fejelni egy sayHelloToAll szubrutinnal, ami megkapja egyszerre az összes nevet, végigmegy rajtuk és egyenként meghívja mindre a sayHello-t, de nem akarom túlbonyolítani.


Az osztályok erre még rátesznek egy remek lapáttal, de mivel kómázás közepette félő, hogy valami marhaságot ideírok, meg amúgy sem vagyok egy kifejezett tanáralkat, most inkább takarékra teszem magam, és meghagyom a dolog kifejtését másoknak.


A kollégáktól pedig mégegyszer elnézést kérek a tálalásért.

2016. szept. 11. 14:18
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:
0%
Az okos a más kárán (is) tanul. Lehet, hogy te nem vagy 'az okos', ezért neked a magad kárán kell tanulni - persze, ha nagyon buta vagy, így sem fog menni. Nem látod, hogy Móricka példákon keresztül nem látható be a függvények és osztályok szükségessége, másnak meg nem hiszed el, olvasni meg nem szoktál. Minden valamire való programozást tanító könyv leírja, amit kérdezel.
2016. szept. 11. 15:31
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

A hatos elég nagy paraszt, de amúgy igaza van, tényleg leírja minden OOP nyelvet tanító könyv, hogy miért is jó nekünk ha megértjük(és használjuk) ezt a koncepciót.


Egyébként ennyi idősen(vagy inkább úgy mondom, hogy kevés\nulla tapasztalattal) szerintem egy egyszerűbb nyelv mindenképp jobb választás, c++ ban nagyon sokat fogsz szívni.

2016. szept. 12. 08:56
Hasznos számodra ez a válasz?
 8/9 endka ***** válasza:

SZERINTEM:

Csak a tutorialok kevesek...

Bmilyen könyv megfelel, utánna a tutorial.

A Függvények a moduláris programozás alapjai, szubrutinnak is hívhatjuk őket. Velük szervezheted meg a programod működését. Pl, egy olyan részt, ami többször lefut berakod egy szubruitinba, ellátod egy megfelelő névvel, ami utal arra amit csinál és kész a fügvény.

Az osztályok pedig az OOP (objektum orientált programozás) fundamentumai. Egyenlőre ne foglalkozz velük, ha a függvények sem tiszták még.

2016. szept. 12. 12:34
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Koszonom a valaszokat!
2016. szept. 12. 22:09

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!