C++ - brza pitanja iz objektno orij. programiranja zaključana tema

poruka: 175
|
čitano: 45.146
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
RE: C++ - brza pitanja iz objektno orij. programir
mbaksa kaže...
Floki kaže...

MBaksa, nemoj razljutiti čovjeka, forum bi dosta izbubio kad bi se on povukao

zašto samo ja nemam dojam da mu "čerećiš" kod liniju po liniju, nego vidim da i drugi misle tako

Jesam li ja ISTA kritizirao njegov zadnji primjer? Ne samo da ga nisam kritizirao, nego sam se u svojoj poruci nastavio na njega. Zato jer je dobar, zato jer dobro pokazuje kad i kako se kreiraju i unistavaju objekti, ovisno o tome jesu li stvoreni staticki ili dinamicki.

Komentar o "razljucivanju" vise govori o tome kakvim covjekom ti Tracera smatras i u to se ne bih mijesao. A to da necu kritizirati pogresno ili lose napisan kod ili (dez)informacije - to ne mozes ocekivati. Ocito ovdje nije problem u kritiziranju, nego o prihvacanju kritike - pogledaj recimo ovu temu (http://www.bug.hr/forum/topic/programiranje/uvod-programiranje/65126.aspx) - seciranje linije po linije koda i nema nikakvih problema, jer je covjek prihvatio kritiku i ispravio ono sto sam kritizirao. I nema filozofa koji sve to nadgledaju i nekonstruktivno filozofiraju o tome bi li nesto trebalo kritizirati ili ne, umjesto da sami daju koristan doprinos temi. Stoga preporucam manje nekonstruktivnog filozofiranja, a vise korisnog rada.

 

da, baš sam "nekonstruktivan filozof"

ovaj  "nekonstruktivan filozof" se samo usudio  upozoriti te da ćeš nam potjerati najboljeg savjetnika za c i c++ sa foruma

sorry stari, bez uvrede, teško ga ti zamjeniš, administratorskim ovlastima usprkos

da sam ljut, jesam, al' "prošla baba s kolačima", ne vrijedi više pričati o tome

EOD

Poruka je uređivana zadnji put sub 28.8.2010 23:05 (Floki).
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir

Zahvali kolegama filozofima, koji su me kvocanjem prisilili da inzistiram na tocnosti/ispravnosti primjera. Da nije bilo njihovog kvocanja, na sto sam morao braniti svoju poziciju isticanjem/dokazivanjem da Tracerov primjer nije dobar, do svega ovoga vrlo vjerojatno ne bi doslo. Nedajboze da vam moderator objasnjava sto je u programiranju ispravno, a sto neispravno. Otkud bi jedan moderator znao takve stvari, jelda?

 

Slazem se s tobom, ne vrijedi vise pricati o tome (iako ne razumijem zbog cega si uopce onda pisao ovu poruku).

 

BTW znas kako se kaze - koga nema, bez njega se moze. Namigiva Tracer ti ionako nije nedostupan - objasnio je na koji ga nacin mozes kontaktirati. A i ako se zeli vratiti na ovaj forum - moze.

17 godina
offline
RE: C++ - brza pitanja iz objektno orij. programir
mbaksa kaže...

Zahvali kolegama filozofima, koji su me kvocanjem prisilili da inzistiram na tocnosti/ispravnosti primjera. Da nije bilo njihovog kvocanja, na sto sam morao braniti svoju poziciju isticanjem/dokazivanjem da Tracerov primjer nije dobar, do svega ovoga vrlo vjerojatno ne bi doslo. Nedajboze da vam moderator objasnjava sto je u programiranju ispravno, a sto neispravno. Otkud bi jedan moderator znao takve stvari, jelda?

 

Slazem se s tobom, ne vrijedi vise pricati o tome (iako ne razumijem zbog cega si uopce onda pisao ovu poruku).

 

BTW znas kako se kaze - koga nema, bez njega se moze. Namigiva Tracer ti ionako nije nedostupan - objasnio je na koji ga nacin mozes kontaktirati. A i ako se zeli vratiti na ovaj forum - moze.

Nije istina. Prvi si poceo sa bug free kodom. Nicim izazvan.

 

Isto tako si u njegovoj temi, gdje je pisao o aplikacijama za net (mislim da su bile ftp, chat ili kakve vec aplikacije), poceo zugeljat zasto koristi gotove komponente.

 

Inace, tracer je cak napisao knjigu o C++. Mislim da je nekakav profesor / predavac / asistent iz tog podrucja. 

 

Bez obzira sto si mod, sto vjerovatno imas dionice Bug-a (ako je Bug d.d.) i veca si "cunka" od svih nas tu po forumu, trebao bi znati do koje granice treba ici. 

I'm going woo woo
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
tnakir kaže...
Nije istina. Prvi si poceo sa bug free kodom. Nicim izazvan.

Evo, to je upravo ono o cemu govorim. Prigovaras, a uopce ne razumijes o cemu je rijec. I opet me tjeras da objasnjavam zasto njegov primjer nije dobar. Znas li ti uopce programirati? Jesi li ti upoznat s OOP-om? Jesi li upoznat s konceptom data hiding? Je li njegov kod dobro ilustirao taj koncept? Nije. Pa on sam je napisao:

Postoje slučajevi gdje varijablama klase ne smiješ pristupati direktno izvana već preko set & get funkcija. Tada se te varijable deklariraju kao privatne, a get i set funkcije kao javne. Razlog je u tome što promjena jedne varijable klase može uzrokovati problem u ostatku klase, a ako se koriste get tj. set funkcije onda će takva set funkcija promjeniti varijablu i napraviti sve ostale potrebne operacije da ne dođe do greške. Nadam se da si skužio.

Je li njegov kod to ilustrirao? Ne, njegov kod je ilustrirao suprotno od ovog sto je napisao (i vec sam u tancine objasnio zasto!)! Pa o cemu onda pricamo? Kakav bug free kod? O cem ti pricas? Nisam se zalio na nikakve bugove niti sam inzistirao da se pise bug free kod (niti sam pricao o razmacima, tocka-zarezima ili cemuvec) - zalio sam se na pogresnu ilustraciju koncepta kojeg je objasnjavao. Nit je stvar u bugovima (iako je koristenjem te klase iznimno lako napraviti bugovit program), nit je stvar o losoj programerskoj praksi (iako to jest losa programerska praksa i to se tako nikad ne radi) - stvar je u tome da primjerom nije ilustrirao ono o cemu je govorio. Tekstom je lijepo objasnio sto znaci data hiding, a kodom je demonstrirao nesto sasvim drugo. Bolje da nije dao nikakav primjer i ostavio da ga netko drugi napise, nego da je dao takav primjer.

 

Zamisli si to ovako - recimo vezano uz fotografije, netko ti pokusava objasniti pravilo trecina i kaze ti: podijelis kadar s dvije paralelne horizontalne i dvije vertikalne crte na trecine. Pravilo trecina nalaze da objekt snimanja stavis na sjeciste tih crta. Na primjer, ako fotkas covjeka, kadrirat ces tako da mu glava bude tamo gdje se sijeku prva horizontalna i druga vertikalna crta. Ili isto imas alternativu, koja se odnosi upravo na "trecine" (a ne na crte kojima se fotografija dijeli na trecine) i kaze: ako imas zanimljivo nebo (s oblacima), onda ces u gornje 2/3 staviti nebo, a u donju trecinu zemlju ili sto vec. Ako imas nezanimljivo nebo, onda ces nebo ostaviti samo unutar prve trecine, a zemlja i druge stvari s detaljima zauzimat ce donje dvije trecine slike. I tako mu to lijepo objasnis, i onda mu za primjer das fotografiju gdje je covjek u sredini ko da ga snajperom gadjas i on je glavni lik (ali recimo jednu ruku, koja je u cijeloj prici nevazan detalj, gurnuo je na neko sjeciste crta, ko fol prema pravilu trecina), do polovice slike je nebo i na drugoj polovici zemlja, trava, suma - sto vec. I jesi li ti sad s tom fotografijom ilustrirao pravilo trecina? Ti se ponasas ko da sad ja za tu fotografiju prigovaram sto je preeksponirana ili sto je promasen white-balance, a ne zbog toga sto je pogresno ilustrirano pravilo trecina - dakle, upravo ona stvar sto je fotografija trebala ilustrirati! Ona stvar koja je smisao pokazivanja te fotografije! Dakle, prigovaras zbog neceg sto ja uopce ne cinim.

 

Ako ni nakon ovoga i nakon analogije s pravilom trecina ne razumijes u cemu je problem, ja ne znam sto bih ti vise rekao. Mi onda vise nemamo o cemu raspravljati. Ja iz toga mogu samo zakljuciti da ne razumijes OOP, da ne razumijes koncept data hidinga, ali i da ne razumijes sto znaci ilustrirati koncept - ikakav koncept.

 

tnakir kaže...

Isto tako si u njegovoj temi, gdje je pisao o aplikacijama za net (mislim da su bile ftp, chat ili kakve vec aplikacije), poceo zugeljat zasto koristi gotove komponente.

Jesam li? Nemoj pricati neistine. Idi citat tu temu pa provjeri za sto sam prigovarao.

 

tnakir kaže...

Inace, tracer je cak napisao knjigu o C++. Mislim da je nekakav profesor / predavac / asistent iz tog podrucja.

Zasto nije prepisao primjer iz svoje knjige?

 

Inace, ne kuzim - zbog toga (neceg) mu ne bi nitko smio prigovoriti ako nesto pogresno napise? Da mu ne povrijedi ego? Ili ides na logicku pogresku "argument iz autoriteta" - tocno je upravo ono sto on napise?

 

tnakir kaže...

Bez obzira sto si mod, sto vjerovatno imas dionice Bug-a (ako je Bug d.d.) i veca si "cunka" od svih nas tu po forumu, trebao bi znati do koje granice treba ici. 

A tu neku tvoju granicu presao sam - cime konkretno? Inace, jednu stvar sam definitivno zeznuo - nisam vam trebao dopustiti off-topicarenje, sto je pocelo s tvojim "Cjepidlacis", i dopustiti si da me uvucete u to - dakle, trebao sam aktivirati svoju moderatorsku funkciju, koju pokusavam sto je vise moguce izbjegavati u temama u kojima sudjelujem, jer vas doprinos temi je - nula.

17 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Sta ste razvezli, Tracer je u*rao primjer i umjesto da pojede humble pie naso se vaditi i praviti pametan, ko da ovo ne citaju i ljudi koji znaju o cem se radi, pa da im se moze prodati svasta.

Dakle Tracerov primjer je bio loš, al umjesto da to prihvati tu je nasao se natezati sa covjekom koji ga je ispravio.

 
1 0 hvala 0
17 godina
offline
RE: C++ - brza pitanja iz objektno orij. programir
mbaksa kaže...

Zahvali kolegama filozofima, koji su me kvocanjem prisilili da inzistiram na tocnosti/ispravnosti primjera. Da nije bilo njihovog kvocanja, na sto sam morao braniti svoju poziciju isticanjem/dokazivanjem da Tracerov primjer nije dobar, do svega ovoga vrlo vjerojatno ne bi doslo. Nedajboze da vam moderator objasnjava sto je u programiranju ispravno, a sto neispravno. Otkud bi jedan moderator znao takve stvari, jelda?

 

Slazem se s tobom, ne vrijedi vise pricati o tome (iako ne razumijem zbog cega si uopce onda pisao ovu poruku).

 

BTW znas kako se kaze - koga nema, bez njega se moze. Namigiva Tracer ti ionako nije nedostupan - objasnio je na koji ga nacin mozes kontaktirati. A i ako se zeli vratiti na ovaj forum - moze.

pisao sam je samo iz razloga što si me nazvao nečim što nisam, "nekonstruktivnim filozofom", 

A neću više  o tome pričati, pošto ne vrijedi

14 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Vidim da se u ovoj temi priča o svemu osim o c++ i programiranju...Molim vas da prekinete s natezanjem.Šutim

optimizam je nedostatak informacija
Moj PC  
0 0 hvala 0
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
Pijavica kaže...

Vidim da se u ovoj temi priča o svemu osim o c++ i programiranju...Molim vas da prekinete s natezanjem.Šutim

Kao sto si mogao vidjeti, prica je bila zavrsena - sad si ti opet zapoceo s off-topicom. Ovo je tvoja tema - odgovorili smo ti na pitanja - reagiraj na odgovore ili postavi neko novo.

17 godina
offline
C++ - brza pitanja iz objektno orij. programiranja

Ajd pocisti ti ovu temu od prepucavanja i gluposti, nek ovo bude brzopotezna help tema za C++

I'm going woo woo
 
0 0 hvala 0
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
tnakir kaže...

Ajd pocisti ti ovu temu od prepucavanja i gluposti, nek ovo bude brzopotezna help tema za C++

Previse je toga da bi se to islo cistiti (trebalo bi se onda ne samo obrisati postove s prepucavanjima, nego i editirati one u kojima ima prepucavanja, ali ima i korisnih stvari). Tako da to ne dolazi u obzir.

 

Mogu eventualno zatvoriti ovu temu i cekati da netko otvori drugu.

14 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Pa evo...prvo bi zamolio da netko napiše cijelli kod rješavanja onog zadatka s sortiranjem stabala koristeči new().

Nakon toga  m zanima način na koji rade mape i za što se koriste. :)

optimizam je nedostatak informacija
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja
  1. #include <iostream>

    #include <iomanip>

    #include <string>

    #include <cmath>

    #include <algorithm>

    #include <stdio.h>
    #include <vector>

     

    using namespace std;

     

    class drvo{

    public:

    drvo();
    drvo(int d,string i);
    ~drvo();


     

    void setduljina(int n);

    int getduljina();

    void setime(string s);

    string getime();

    int duljina;

     

    private:

     

    string ime;

     

    };

     

     

    drvo::drvo(){}
    drvo::drvo(int d,string i)
    {
        duljina=d;
        ime=i;
    }
    drvo::~drvo(){}

    void drvo :: setduljina(int n){duljina = n;}

    void drvo :: setime(string s){ ime = s; }

     

    int drvo :: getduljina(){return duljina;}

    string drvo :: getime(){ return ime; }

     

     

    bool cmp(const drvo &x,const drvo &y){return x.duljina<y.duljina;}
     

    int main()
    {
    int c;
    cout<<"Broj Stabala U vrtu?"<<endl;
    cin>>c;
    vector<drvo> Stabla=vector<drvo>();
    int duljina;
    string ime;
    cout<<"Upisite duljinu,a zatim i ime svakog stabla"<<endl;
    for(int i=0;i<c;i++)
    {
        cin >> duljina;
        cin >> ime;
        Stabla.push_back(drvo(duljina,ime));
    }
    std::sort(Stabla.begin(),Stabla.end(),cmp);
    for(int i=0;i<c;i++)
    {
        cout << Stabla[i].getduljina()<<" ";
        cout  << Stabla[i].getime()<<endl;
    }


    system("PAUSE");

    return 0;

    }
  2. evo to je to, malo je lose napisano, ali valjda ces pohvatati
  3. primjer izvodenja:    Broj Stabala U vrtu?
    4
    Upisite duljinu,a zatim i ime svakog stabla
    1
    jedan
    3
    tri
    0
    nula
    2
    dva
    0 nula
    1 jedan
    2 dva
    3 tri
    Press any key to continue . . .
  4. znam da post cudno izgleda, al kad sam samo c/p svi newline su umrli, pa sam ovako
  5. mapa- pogledaj si na wiki, dobro je objasnjeno http://en.wikipedia.org/wiki/Map_%28C%2B%2B%29

Poruka je uređivana zadnji put čet 2.9.2010 2:57 (Zoidberg).
 
1 0 hvala 0
17 godina
offline
C++ - brza pitanja iz objektno orij. programiranja

Da li ima u "Demistificiranom" sličnih primjera klasa, vektora, stringova i kako je materija objašnjena?

 
0 0 hvala 0
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
Floki kaže...

Da li ima u "Demistificiranom" sličnih primjera klasa, vektora, stringova i kako je materija objašnjena?

Ima. Dobro je objasnjeno, samo sto knjiga ne grca u primjerima, da se tako izrazim. Imas mali primjer za svaku stvar koju objasnjavaju, ali koliko ovako listajuci vidim, nema zalihosti - dakle, da se ista stvar objasnjava s vise primjera. Knjiga iovako ima 800 stranica, tako da da su stavljali jos dodatne primjer, to bi naraslo... Najbitnija stvar sto se tice knjige je sto je teorijski temeljita i precizna. Svaka recenica ima svoj smisao i nema unedogled ponavljanja istih stvari. Ako ti trebaju ekstra primjer, to uvijek mozes naci na netu - Demistificirani C++ je tu da ti da teorijsku podlogu i osnovni primjer. Jedino sto ne bih rekao je da je knjiga za pocetnike - zaista je cijeniti moze tek iskusan korisnik, pocetniku bi mogla biti preteska za pratiti.

14 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Hvala na primjeru =D.

 

bool cmp(const drvo &x,const drvo &y){.....

 

zasto &x i &y?

 

 

KOlika je cijena demifisticiranog i gdje ga uoce ima za kupit :/?

 

 

optimizam je nedostatak informacija
Moj PC  
0 0 hvala 0
17 godina
offline
RE: C++ - brza pitanja iz objektno orij. programir
Pijavica kaže...

Hvala na primjeru =D.

 

bool cmp(const drvo &x,const drvo &y){.....

 

zasto &x i &y?

 

 

KOlika je cijena demifisticiranog i gdje ga uoce ima za kupit :/?

 

 

to su pokazivaci...

&x ce vratiti adresu varijable x dok ce

*(&x) vratiti vrijednost koja se nalazi na adresi &x. (ili *x)

 

Inace, pokazivaci su jako zgodna stvar, iako opasna ako se nezna ispravno koristiti.

I'm going woo woo
Poruka je uređivana zadnji put čet 2.9.2010 21:04 (tnakir).
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
Pijavica kaže...

KOlika je cijena demifisticiranog i gdje ga uoce ima za kupit :/?

Koliko vidim, 300 kuna kosta trece izdanje, a 275 kuna drugo izdanje. Ja se vise ne sjecam koliko sam svoju platio - bilo je to prije devet i pol godina. Ako ti je to previse, mozes mozda pregledati oglasnike (ili daj oglas), provjeriti kod ljudi koji idu na informaticke fakseve - vjerujem da dosta ljudi kupi knjigu reda radi, prodje programerske kolegije i onda ne znaju sto bi s njom, jer se programiranjem ne misle baviti.

17 godina
offline
C++ - brza pitanja iz objektno orij. programiranja

Dakle, nema ti druge nego najprije svladati teoriju, to gore što si pitao je prototip funkcije u kojem se predaja argumenata vrši pokazivačima tj. call by reference

To u stvari znači da moraš prije OOP-a svladati i pokazivače i funkcije i polja i još puno toga

Gore sam spomenuo Demistificirani C++, a moje osobno mišljenje na osnovu toga što mi je MBaksa rekao za Demistificirani C++

jest da je početniku lakše krenuti sa C++ Analiza i primjena, a poslije nje preći na Demistificirani C++. Dobro bi bilo sačekati novo izdanje, navodno je u pripremi.

Bez teorije teško je skužiti izraz "funkcija vraća vrijednost na adresu varijable x), samo za taj mali programski odsječak treba znanje funkcja i pokazivača, a to treba znati sve prije prelaska na OOP.

 

 

int a=5, *p; // deklariramo i inicijaliziramo varijablu a i deklariramo pokazivač p

p = &a;     // inicijaliziramo pokazivač p (dodjeljujemo mu vrijednost memorijske adrese varijable a)

*p = 10;    // pokazivačem p varijabli a dodjeljujemo vrijednost 10

 

Ovim smo vrijednost varijable a izmijenili sa 5 na 10 preko pokazivača p

Pokazivači su u stvari varijable koje za vrijednost imaju memorijske adrese drugih varijabli, dakle "pokazuju" na njih. To nam omogućava da preko pokazivača mijenjamo

vrijednosti varijabli na koje ti pokazivači pokazuju, kao u gornjem primjeru.

 

Sve je to bolje učiti iz knjige (bar meni), a može i odavde:

http://www.cplusplus.com/doc/tutorial/pointers/

Poruka je uređivana zadnji put sub 4.9.2010 13:15 (Floki).
 
1 0 hvala 0
17 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Vidim, bilo je i žrtava egotrip ratova, no stvar je gotova pa se može komentirati.

 

Ono što želim komentirati je Baksina izjava o mogućnosti velikog arraya. Želim reći, da se ne smije u niti jednom trenutku oslanjati na kompajler u pisanju fundamentalnog koda.

Mnogi kompajleri danas dopuštaju promjenu veličine stacka, ali taj potez nije pretjerano preporučljiv iz prostog razloga što takav pristup nije dobar i statička alokacija velikih vektora nije pametna.

Kod s v[2825796781] ti možda radi na vlastitom računalu koje sada imaš, a možda neće na nekom drugom ili ti radi na kompajleru koji sada koristiš, ali neće na nekom drugom.

Dinamička alokacija je preferirani izbor za velike, pogotovo strukture s promjenjivom veličinom čak i zbog samog zauzeća memorije.

 

Što se tiče C++a, koji je tema, arraye bi trebalo izbjegavati. Vector klasa je daleko pametniji izbor za jednodimenzionalni niz (može i dvodimenzionalni), a arrayi su (u 95% slučajeva) ostavština iz C-a, koja zapne većini C programera koji su doučili C++, jer im uglavnom C++ stil pisanja vizualno nije privlačan (nešto je kompliciraniji, pa time i ružniji).

boost:multi_array, std::vector ono je što treba koristiti u C++u.

 

Iz tih razloga Baksin primjer navodi na lošu praksu, ali općenito u kontekstu naslova teme, pitanja vezanog uz nizove i jezika C++, i Baksa i Tracer su promašili važnu stvar.

Pravi znak inteligencije nije znanje, već mašta - Albert Einstein
Moj PC  
0 0 hvala 0
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
naxeem kaže...
Ono što želim komentirati je Baksina izjava o mogućnosti velikog arraya. Želim reći, da se ne smije u niti jednom trenutku oslanjati na kompajler u pisanju fundamentalnog koda.

Mnogi kompajleri danas dopuštaju promjenu veličine stacka, ali taj potez nije pretjerano preporučljiv iz prostog razloga što takav pristup nije dobar i statička alokacija velikih vektora nije pametna.

Kod s v[2825796781] ti možda radi na vlastitom računalu koje sada imaš, a možda neće na nekom drugom ili ti radi na kompajleru koji sada koristiš, ali neće na nekom drugom.

Dinamička alokacija je preferirani izbor za velike, pogotovo strukture s promjenjivom veličinom čak i zbog samog zauzeća memorije.

...

Iz tih razloga Baksin primjer navodi na lošu praksu

Mozes li detaljnije objasniti na koji nacin moj primjer navodi na losu praksu? Naime, primjer s ogromnim poljem je primjer za losu programersku praksu (dakle, za nesto sto se moze napraviti, ali se ne bi trebalo ili smjelo napraviti), sto sam i detaljno objasnio. Na koji nacin onda taj primjer navodi na losu praksu, kad dam taj primjer i napisem da se to tako ne radi?!

17 godina
neaktivan
offline
RE: C++ - brza pitanja iz objektno orij. programir
naxeem kaže...

Vidim, bilo je i žrtava egotrip ratova, no stvar je gotova pa se može komentirati.

 

Ono što želim komentirati je Baksina izjava o mogućnosti velikog arraya. Želim reći, da se ne smije u niti jednom trenutku oslanjati na kompajler u pisanju fundamentalnog koda.

Mnogi kompajleri danas dopuštaju promjenu veličine stacka, ali taj potez nije pretjerano preporučljiv iz prostog razloga što takav pristup nije dobar i statička alokacija velikih vektora nije pametna.

Kod s v[2825796781] ti možda radi na vlastitom računalu koje sada imaš, a možda neće na nekom drugom ili ti radi na kompajleru koji sada koristiš, ali neće na nekom drugom.

Dinamička alokacija je preferirani izbor za velike, pogotovo strukture s promjenjivom veličinom čak i zbog samog zauzeća memorije.

 

Što se tiče C++a, koji je tema, arraye bi trebalo izbjegavati. Vector klasa je daleko pametniji izbor za jednodimenzionalni niz (može i dvodimenzionalni), a arrayi su (u 95% slučajeva) ostavština iz C-a, koja zapne većini C programera koji su doučili C++, jer im uglavnom C++ stil pisanja vizualno nije privlačan (nešto je kompliciraniji, pa time i ružniji).

boost:multi_array, std::vector ono je što treba koristiti u C++u.

 

Iz tih razloga Baksin primjer navodi na lošu praksu, ali općenito u kontekstu naslova teme, pitanja vezanog uz nizove i jezika C++, i Baksa i Tracer su promašili važnu stvar.

 

mbaksa kaže...
naxeem kaže...
Ono što želim komentirati je Baksina izjava o mogućnosti velikog arraya. Želim reći, da se ne smije u niti jednom trenutku oslanjati na kompajler u pisanju fundamentalnog koda.

Mnogi kompajleri danas dopuštaju promjenu veličine stacka, ali taj potez nije pretjerano preporučljiv iz prostog razloga što takav pristup nije dobar i statička alokacija velikih vektora nije pametna.

Kod s v[2825796781] ti možda radi na vlastitom računalu koje sada imaš, a možda neće na nekom drugom ili ti radi na kompajleru koji sada koristiš, ali neće na nekom drugom.

Dinamička alokacija je preferirani izbor za velike, pogotovo strukture s promjenjivom veličinom čak i zbog samog zauzeća memorije.

...

Iz tih razloga Baksin primjer navodi na lošu praksu

Mozes li detaljnije objasniti na koji nacin moj primjer navodi na losu praksu? Naime, primjer s ogromnim poljem je primjer za losu programersku praksu (dakle, za nesto sto se moze napraviti, ali se ne bi trebalo ili smjelo napraviti), sto sam i detaljno objasnio. Na koji nacin onda taj primjer navodi na losu praksu, kad dam taj primjer i napisem da se to tako ne radi?!

Podebljano je bitno, a ti si podebljano strateški obrisao...

Dakle - cijela rasprava je loša praksa, kao i inzistiranje na "mogućnosti" alokacije nečega, što nikada nebi trebalo uopće ni uzimati u obzir. Veliki nizovi poput onoga tehnički se mogu alocirati ovisno o situaciji, ali nitko normalan to nikada neće napraviti.

Ako ti čak i treba fiksni niz, koristit ćeš std::vector::reserve a nećeš koristiti fiksne nizove.

 

Ovo je C++, a ne C.

 

Pravi znak inteligencije nije znanje, već mašta - Albert Einstein
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
naxeem kaže...
Podebljano je bitno, a ti si podebljano strateški obrisao...

Dakle - cijela rasprava je loša praksa, kao i inzistiranje na "mogućnosti" alokacije nečega, što nikada nebi trebalo uopće ni uzimati u obzir. Veliki nizovi poput onoga tehnički se mogu alocirati ovisno o situaciji, ali nitko normalan to nikada neće napraviti.

Ti si sad "nepodebljano" strateski ignorirao. Poanta rasprave na temi gdje su se pojavila polja bila je objasniti razliku izmedju dinamicke i staticke alokacije objekata.

17 godina
neaktivan
offline
RE: C++ - brza pitanja iz objektno orij. programir

Ali za C++ jezik, ne C.

Također, vrlo bitna komponenta objašnjavanja je i važna napomena da se statička alokacija velikih nizova treba izbjegavati. To je važan dio objašnjenja statičke i dinamičke alokacije, zar ne?

Ja sam pročitao Tracerovu tvrdnju da se prevelikim statičkim alokacijama može doći do "stack overflowa", a ti si rekao da ti možeš alocirati ogromne nizove, što početnika može navesti na mišljenje da Tracer govori gluposti, a što nije slučaj. Naprotiv, najnovija praksa sugerira minimalno korištenje statičke alokacije, a s obzirom da se radi o C++u, korisno je i u ranim početničkim primjerima koristiti std.

Put korištenja C konstrukcija (npr. dobar dio nas voli printf umjesto couta), kao malloc i sl. nije dobar za edukaciju o C++u.

Pravi znak inteligencije nije znanje, već mašta - Albert Einstein
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
naxeem kaže...

Ali za C++ jezik, ne C.

Također, vrlo bitna komponenta objašnjavanja je i važna napomena da se statička alokacija velikih nizova treba izbjegavati. To je važan dio objašnjenja statičke i dinamičke alokacije, zar ne?

Hoces reci da to nije objasnjeno? Malo bolje zapni za citanje poruka. Ne samo da je konstatirano da to nije dobra praksa, nego je i u tancine objasnjeno zasto to nije dobra praksa! Ako si lijen za procitati tih nekoliko poruka u cijelosti, onda nemoj tvrditi da nije objasnjeno nesto sto je objasnjeno.

 

naxeem kaže...
Ja sam pročitao Tracerovu tvrdnju da se prevelikim statičkim alokacijama može doći do "stack overflowa", a ti si rekao da ti možeš alocirati ogromne nizove što početnika može navesti na mišljenje da Tracer govori gluposti, a što nije slučaj.

Zar te obje tvrdnje ne mogu istovremeno biti istinite? Mogu - i jesu. Nisam nigdje rekao da ne moze doci do stack overflowa. Stovise, malo dalje u toj istoj poruci napisao sam ("faktor" se odnosi na odluku hoce li se nesto alocirati staticki ili dinamicki):

Velicina stoga moze biti faktor, ali nije jedini faktor niti je nuzno glavni. Dinamicki ces kreirat objekte zato da ih imas u memoriji onda i onoliko koliko ti ih u danom trenutku treba.

Ne znam, valjda pisem na madjarskome. Procitaj cijele moje poruke i to s razumijevanjem, jer prigovaras bezveze. Mozes poceti od ove poruke. Slobodno kod daljnjeg eventualnog prigovaranja i citiras ono na sto prigovaras - da se prigovaranje ne svodi samo na tvoju proizvoljnu interpretaciju mojih izjava.

17 godina
neaktivan
offline
RE: C++ - brza pitanja iz objektno orij. programir

Uzmemo li, hipotetski dok ne provjerim detaljno, da je to točni, i dalje stoji ono što mi je inicijalno upalo u oko: spominjanje jedno i višedimenzionalnih nizova u obliku običnih []... umjesto mnogo boljih i preporučenih vektora i sl.

Ali pročitat ću detaljnije tijekom jutra.

Pravi znak inteligencije nije znanje, već mašta - Albert Einstein
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
naxeem kaže...

Uzmemo li, hipotetski dok ne provjerim detaljno, da je to točni, i dalje stoji ono što mi je inicijalno upalo u oko: spominjanje jedno i višedimenzionalnih nizova u obliku običnih []... umjesto mnogo boljih i preporučenih vektora i sl.

Polja su usla u pricu kad sam govorio o razlici izmedju staticke i dinamicke alokacije objekata - na kakav je drugaciji nacin moguce ilustrirati/demonstrirati staticko alociranje velikog broja objekata, ako ne preko polja?

 

Dalje - polja nisu zabranjena u C++-u - ovisi o zadatku, problemu kojega rjesavas - klasa (odnosno predlozak klase) vector nije svrha sama sebi - ako neces dodavati/brisati elemente, sto ce ti? Koristi ono sto ti u danom trenutku najbolje odgovara - polje, vektor, lista. Nemam nista protiv. Alociranje jednog po jednog objekta objasnio sam na "rucno napravljenoj" jednostruko vezanoj listi. Iako da, moglo se to ilustrirati i na vektoru (sto je Zoidberg kasnije objasnio) ili na predlosku klase list ili deque. Nisam se upustao u to jer mi za objasnjavanje nije bilo potrebno (poanta primjer je bila dinamicki alocirati jedan po jedan objekt, onda kad ti trebaju, sto se moglo i ovako), jer sam rucno vezanom listom usput demonstrirao koristenje pokazivaca i kako povezati objekte, jer nije izravno povezano s onim o cemu smo raspravljali (staticka vs. dinamicka alokacija), te jer nisam htio komplicirati primjer uvodjenjem predlozaka klasa, za koje sam prepostavljao da pocetnik nije upoznat, a i htio sam sebe postediti proucavanja predlozaka klasa vector i list jer s njima nisam radio.

 

Slazem se da bi se takve stvari inace trebale raditi preko predlozaka klasa vector, deque, list. Ako cemo biti precizni, za onaj moj primjer, da smo isli to napraviti do kraja (dakle, da omogucimo korisniku da sam umece i brise elemente), zapravo bi vise imalo smisla koristiti list ili deque, nego vector. Namigiva

 

Poruka je uređivana zadnji put pet 17.9.2010 5:40 (mbaksa).
14 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Kako(kada) početi vizualno programirati? Mislim na prozore i to...Kao što je Tracer dao onaj svoj kod da križić kružič?

optimizam je nedostatak informacija
Moj PC  
0 0 hvala 0
17 godina
moderator
online
RE: C++ - brza pitanja iz objektno orij. programir
Pijavica kaže...

Kako(kada) početi vizualno programirati? Mislim na prozore i to...Kao što je Tracer dao onaj svoj kod da križić kružič?

Vizualno programiranje je nesto sasvim drugo. Ovo o cemu govoris je programiranje aplikacije s grafickim korisnickim suceljem. Kako/kada? Ako uzmes Borland (ili kako se vec sad zove) C++Builder, mozes odmah, jer ima jednostavan i mocan VCL framework. Za Visual C++ ne mogu nista reci, jer nisam u njemu radio - ne znam jel ima kakav noviji, dobar framework (MFC u starijim verzijama Visual C++-u je smece od frameworka). Postoji i alternativa u obliku wxWindows frameworka - imas wxDev-C++ koji ti omogucuje i vizualnu izradu prozora - nisam se u to previse upustao.

 

Uglavnom, jedna stvar ti mora biti jasna - programiranje uz koristenje grafickog korisnickog sucelja (u C++Builderu, Visual C++-u...) u osnovi ne mijenja logiku tvog programa. Graficko korisnicko sucelje ti treba biti upravo to - sucelje - spona (veza) izmedju korisnika i logike programa - dakle, mora sluziti za isto ono za sto ti sluzi tekstualno korisnicko sucelje (konzola) - unos i ispis podataka, pozivanje odredjenih funkcija/metoda. U slucaju krizic-kruzica, kad ti imas dobro napravljenu logiku programa, ti klikanjem na gumbic samo mijenjas jednu vrijednost u matrici (dvodimenzioalnom polju) ili vektoru - gumbici na ekranu su samo reprezentacija te matrice. Isto tako reprezentacije te matrice mogu biti znakovi u "X", "O" i " " u tekstualnom modu.

17 godina
neaktivan
offline
RE: C++ - brza pitanja iz objektno orij. programir
mbaksa kaže...
Pijavica kaže...

Kako(kada) početi vizualno programirati? Mislim na prozore i to...Kao što je Tracer dao onaj svoj kod da križić kružič?

Vizualno programiranje je nesto sasvim drugo. Ovo o cemu govoris je programiranje aplikacije s grafickim korisnickim suceljem. Kako/kada? Ako uzmes Borland (ili kako se vec sad zove) C++Builder, mozes odmah, jer ima jednostavan i mocan VCL framework. Za Visual C++ ne mogu nista reci, jer nisam u njemu radio - ne znam jel ima kakav noviji, dobar framework (MFC u starijim verzijama Visual C++-u je smece od frameworka). Postoji i alternativa u obliku wxWindows frameworka - imas wxDev-C++ koji ti omogucuje i vizualnu izradu prozora - nisam se u to previse upustao.

 

Uglavnom, jedna stvar ti mora biti jasna - programiranje uz koristenje grafickog korisnickog sucelja (u C++Builderu, Visual C++-u...) u osnovi ne mijenja logiku tvog programa. Graficko korisnicko sucelje ti treba biti upravo to - sucelje - spona (veza) izmedju korisnika i logike programa - dakle, mora sluziti za isto ono za sto ti sluzi tekstualno korisnicko sucelje (konzola) - unos i ispis podataka, pozivanje odredjenih funkcija/metoda. U slucaju krizic-kruzica, kad ti imas dobro napravljenu logiku programa, ti klikanjem na gumbic samo mijenjas jednu vrijednost u matrici (dvodimenzioalnom polju) ili vektoru - gumbici na ekranu su samo reprezentacija te matrice. Isto tako reprezentacije te matrice mogu biti znakovi u "X", "O" i " " u tekstualnom modu.

VCL je fantastičan, ali i .NET je dostupan za C++ kao managed framework (i C++ ima svoju managed verziju).

MFC nije baš smeće, mislim da je nepravedno tako ga nazvati, ali je bio dosta surov, kompliciran i nepristupačan u odnosu na VCL i time mnogima odbojan, iako prilično moćan i "čišći" od VCL-a što se tiče "dependency/dll hella" (naravno, ne pošteđen, jer VCL je bio drugačiji samo zato što je tražio dodatne biblioteke).

 

Za sučelje u svakom slučaju preporučio bih mu WPF za Windowse i QT(C++) za ostalo, s tim da uz WPF osim C#a može koristiti i unmanaged C++ (koji importira kao eksterne komponente itd...). Mogućnosti i kombinacije su mnogobrojne.

 

Naravno, spomenuti VCL je najbolji izbor za LOB C++ aplikacije s vizualnim sučeljem, ali C++ sam po sebi nije najsretniji izbor za taj tip aplikacija i.... to prelazi u posve drugu temu, pa da ne zagađujem ovu, umuknut ću. :))

 

Slažem se, tj. složili smo se u onom tvom gornjem postu.

Pravi znak inteligencije nije znanje, već mašta - Albert Einstein
14 godina
neaktivan
offline
C++ - brza pitanja iz objektno orij. programiranja

Ok i hvala :)

 

 Kako sam ja kao totalni početnik u programiranju odmah počeo s c++ - om uopće se ne razumijem u ostale jezike...

Zanima me koje su razlike između c++ i c# i da li se isplati sad njega počinjati raditi s njim (Usavršavati).

optimizam je nedostatak informacija
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice