Ştiri:

Vă rugăm să citiţi Regulamentul de utilizare a forumului Scientia în secţiunea intitulată "Regulamentul de utilizare a forumului. CITEŞTE-L!".

Main Menu

Tangente despre limbajul de programare C++

Creat de b12mihai, Noiembrie 19, 2009, 07:44:49 PM

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

b12mihai

Citat din: HarapAlb din Noiembrie 19, 2009, 01:10:29 AM
Citat din: gothik12 din Noiembrie 17, 2009, 06:30:06 PM
Eu de exemplu nici acum nu am inteles foarte multe chestii din C++ (cum ar fi recursivitatea sau backtracking-ul - ce-i drept nici nu mi-am dat silinta sa le studiez profund), ...
Recursivitatea si backtracking-ul sunt tehnici de programare, nu au de-a face cu limbajul C++, ele putandu-se folosi si in C, Pascal... Recursivitatea tine de modul cum este implementat limbajul, mai precis daca suporta apeluri recursive, din cate imi amintesc limbajul Basic-ul nu accepta apeluri recursive.

Citat
Uite un exemplu de program C++ cu functia de gradul 2 facut de mine...
Ce ai facut tu acolo nu e C++, ci e C cu 'cin' si 'cout', de altfel se poate scrie la fel de eficient si in Basic. Vorbim de C++ cand avem programare orientata pe obiecte (mosteniri, clase, functii virtuale...). Daca ai fi folosit o clasa "Ecuatie" cu metodele ei gen AreSolutii(), Rezolva(), era alta treaba.

Ok, atunci la scoala de ce ne spune ca ala e C++ ? Inseamna ca tot ce am invatat la scoala e de fapt C, iar recursivitatea si backtrackingul (am sa caut exemple concrete din manualul de informatica de a XI-a si din caietul de informatica, dar nu le am acum la indemana) ne-a invatat la scoala, la orele de informatica la C++....ce mai informatica facem in scoala romaneasca :o
Fiecare are scopul lui in lumea asta nebuna.

bbb

Chiar, daca asta nu e C++, de ce ni se spune la scoala ca e C++ ?...

b12mihai

Interesant e ca HarapAlb nu e primul care imi spune...si aia la dreamincode.net mi-au spus ca programez cam demodat...Adevarul este ca inca nu suntem in secolul XXI cu informatica...daca invatam pe Borland 3.1 care e depasit demult...in fine...
Fiecare are scopul lui in lumea asta nebuna.

Adi

Acum vad ce a spus HarapAlb si are dreptate. Mihai, iti sugerez sa refaci programul folosind o clasa care are functii care dau acele raspunsuri. Cum si eu ma lupt cu C++ pe care il folosesc la cercetare, putem sa incercam impreuna si sa ne ajutam unul pe altul. Si asa vei avea un exemplu concret de cum folosesti o clasa sa faca o chestie simpla. Si asa inveti programare adevarata, pe obiecte si vei intelege puterea ei. Ce zici?
Pagina personala: http://adrianbuzatu.ro

Mihnea Maftei

Citat din: Bianca Sala din Noiembrie 19, 2009, 08:04:39 PM
Chiar, daca asta nu e C++, de ce ni se spune la scoala ca e C++ ?...

Pai, asta e C++, numai ca Gothik nu a folosit in programul lui (aproape) nimic care sa nu fie in si in C.

Adi

In C++ poti face tot ce poti face in C, plus chestii noi. De aia ii zice C plus si inca in plus. Totusi, se recoamanda noilor incepatori nici sa nu invete ce se poate face in C, ci doar ce aduce nou C++. Noua asa ne-au spus la cursul de C++ de la Fermilab.
Pagina personala: http://adrianbuzatu.ro

Adi

Citat din: Adi din Noiembrie 19, 2009, 08:18:26 PM
Acum vad ce a spus HarapAlb si are dreptate. Mihai, iti sugerez sa refaci programul folosind o clasa care are functii care dau acele raspunsuri. Cum si eu ma lupt cu C++ pe care il folosesc la cercetare, putem sa incercam impreuna si sa ne ajutam unul pe altul. Si asa vei avea un exemplu concret de cum folosesti o clasa sa faca o chestie simpla. Si asa inveti programare adevarata, pe obiecte si vei intelege puterea ei. Ce zici?

Am scris cod intr-un fisier care foloseste o clasa Equation care apoi are o metoda (o functie) care sa calculeze si sa printeze solutiile. Apoi in acelasi fisier ai metoda main, care creeaza (defineste) un obiect de tip Equation si il initializeaza cu cele trei valori ale constantelor a, b, c. In acelasi timp (in metoda constructor), aceste valori a, b, c sunt salvate in variabilele interne obiectului a_, b_, c_, iar totodata este calculata o alta variabile interna d2_ care este delta la patrat. Obiectul eq de tip Equation stie despre el aceste valori si ti le poate returna cu o comanda de genul eq.GetA(); si iti poate printa solutiile. In functie de faptul daca d2_ e mai mic sau mai mare ca zero, iti afiseaza starea solutiilor.

Fisierul este atasat. Nu am calculat toate diversele caracteristici ale functiei pe care le are Gothik in fisierul lui. S-a vrut a fi un model simplu, care merge, pe care apoi sa poata dezvolta el sau altii.

Daca aveti feedback, este binevenit. Poate il putem pune chiar pe acel site, daca poate ajuta pe cineva.
Pagina personala: http://adrianbuzatu.ro

HarapAlb

Citat din: gothik12 din Noiembrie 19, 2009, 08:06:47 PM
Interesant e ca HarapAlb nu e primul care imi spune...si aia la dreamincode.net mi-au spus ca programez cam demodat...
Nu programezi demodat, e programare in C. Trecerea la programare orientata pe obiecte nu se face peste noapte pentru ca trebuie sa-ti schimbi modul de gandire. La fel mi s-a intamplat si mie cand am trecut de la C la C++. Incearca sa citesti Thinking in C++ de Bruce Eckel, are si exercitii  :)

b12mihai

#8
Citat din: Adi din Noiembrie 19, 2009, 08:18:26 PM
Acum vad ce a spus HarapAlb si are dreptate. Mihai, iti sugerez sa refaci programul folosind o clasa care are functii care dau acele raspunsuri. Cum si eu ma lupt cu C++ pe care il folosesc la cercetare, putem sa incercam impreuna si sa ne ajutam unul pe altul. Si asa vei avea un exemplu concret de cum folosesti o clasa sa faca o chestie simpla. Si asa inveti programare adevarata, pe obiecte si vei intelege puterea ei. Ce zici?

De acord, dar nu am invatat niciodata asa ceva, nici macar individual (sincer, pentru ca nu m-am preocupat de domeniu, mi-a placut mai mult dezvoltarea web si programarea pentru web ;D ). Crede-ma ca am incercat sa citesc si sa inteleg codul pe care l-ai propus tu insa nu am citit deloc despre chestiunile pe care tu le folosesti acolo.

Citat din: Adi din Noiembrie 19, 2009, 08:51:17 PM
In C++ poti face tot ce poti face in C, plus chestii noi. De aia ii zice C plus si inca in plus. Totusi, se recoamanda noilor incepatori nici sa nu invete ce se poate face in C, ci doar ce aduce nou C++. Noua asa ne-au spus la cursul de C++ de la Fermilab.

Vezi tu...asta e diferenta dintre noi si straini. La noi, profii de informatica nu prea vor sa se adapteze la ce e nou. Ne invata si ajungem sa scriem codurile asa cum le-am scris eu (colac peste pupaza iti zice ca e C++  :o )...Merge treaba, macar inteleg cate ceva de prin cartile in romana,dar cand vine vorba sa ma adaptez la ce e nou imi este greu si se irosesc timp si energie aiurea pentru adaptare. Bine, eu unul daca invat intai C, apoi C++ ma prind repede, pentru ca nah...exista o oaresce legatura intre ele, C++ s-a dezvoltat pe baza lui C, nu?


Citat din: HarapAlb din Noiembrie 21, 2009, 10:14:42 AM
Nu programezi demodat, e programare in C. Trecerea la programare orientata pe obiecte nu se face peste noapte pentru ca trebuie sa-ti schimbi modul de gandire. La fel mi s-a intamplat si mie cand am trecut de la C la C++. Incearca sa citesti Thinking in C++ de Bruce Eckel, are si exercitii  :)

Multumesc de carte si de clarificari (o sa am ce studia, e excelent ca are exercitii, altfel nu stiu cum as putea invata, decat exersand si aplicand...asa m-am invatat, nu stiu daca e bine). Uite...alta curiozitate: stiati ca ce invatati la scoala e, de fapt C, nu C++? :D Chiar, ca am vazut ca si Adi si Mihnea si HarapAlb ziceau ceva pe aici: e un mod "total diferit" de gandire in C decat in C++, sau care e treaba?

Fiecare are scopul lui in lumea asta nebuna.

Adi

Citat din: HarapAlb din Noiembrie 21, 2009, 10:14:42 AM
Citat din: gothik12 din Noiembrie 19, 2009, 08:06:47 PM
Interesant e ca HarapAlb nu e primul care imi spune...si aia la dreamincode.net mi-au spus ca programez cam demodat...
Nu programezi demodat, e programare in C. Trecerea la programare orientata pe obiecte nu se face peste noapte pentru ca trebuie sa-ti schimbi modul de gandire. La fel mi s-a intamplat si mie cand am trecut de la C la C++. Incearca sa citesti Thinking in C++ de Bruce Eckel, are si exercitii  :)

Mersi mult, am luat-o si eu si pare foarte faina. Chiar imi trebuia zilele astea asa carte, cand studiezi C++ mai aprofundat, pentru a imi folosi la scris cod pentru cercetarea mea.
Pagina personala: http://adrianbuzatu.ro

Adi

Intr-adevar, Gothik, odata ce te-ai invatat sa gandesti ca in C, e greu sa inveti sa gandesti ca in C++. Pentru tine ca elev care ai facut cateva teme in C, nu va fi greu sa treci la C++, dar pentru profesori care au ani de experienta in C, plus grijile vietii de zi cu zi, cu salarii mici, etc, cu blazarea ce o aduce varsta, cu atat mai greu e pentru ei.

Ideea e ca daca nu stii nimic din C, absolut nimic, ci studiezi direct C++, nu doar ca nu pierzi nimic, ba chiar castigi, tocmai pentru ca nu trebuie sa "unlearn" ceea ce ai "learned" deja in C. Nu stiu care sunt termenii in romana.

Da, modul de gandire e altul in C++ fata de C. Este programare proiectata pe obiecte. Si este tare usoara cand o iei pas cu pas. Si eu acum asta fac, desi am lucrat de cativa ani in C++, bazele ce le stiam imi erau suficiente la ce faceam pana acum (adica doar sa modific pe alocuri codul altora cu chestiile de fizica cerute de mine), dar acum am nevoie de mai mult, adica sa dezvolt eu cod care sa faca chestia mea de la inceput pana la sfarsit. Asa ca eu voi invata C++ saptamanile astea si putem face impreuna exercitii si proiecte, daca vrei.
Pagina personala: http://adrianbuzatu.ro

b12mihai

Interesant...sunt bine de stiut...Vad ca ai mutat topicul ca nu il mai gaseam la locul lui..Precizeaza la curiozitati acolo unde era initial sa stie lumea ca s-a mutat o parte din discutie aici.

Citat din: Adi din Noiembrie 21, 2009, 05:28:57 PM
Intr-adevar, Gothik, odata ce te-ai invatat sa gandesti ca in C, e greu sa inveti sa gandesti ca in C++. Pentru tine ca elev care ai facut cateva teme in C, nu va fi greu sa treci la C++, dar pentru profesori care au ani de experienta in C, plus grijile vietii de zi cu zi, cu salarii mici, etc, cu blazarea ce o aduce varsta, cu atat mai greu e pentru ei.

De aici nu putem trage decat o singura concluzie: nu sunt pasionati de ceea ce fac, iar cei pasionati si buni in domeniu au fugit din tara pentru ca aici nu castiga mai nimic.

Citat
Ideea e ca daca nu stii nimic din C, absolut nimic, ci studiezi direct C++, nu doar ca nu pierzi nimic, ba chiar castigi, tocmai pentru ca nu trebuie sa "unlearn" ceea ce ai "learned" deja in C. Nu stiu care sunt termenii in romana.

Ah, ce bine. Am inteles ideea. Nu trebuie sa ma dezvat de tot ceea ce am invatat deja in C...ideea e ca mare lucru la programare la scoala nu prea am invatat si nici nu m-am omorat sa invat. Am fost dintotdeauna adeptul studiului individual la informatica, pentru ca aici cu greu am gasit pe cineva care sa imi explice astfel incat sa inteleg. Asa am luat calea forumurilor de specialitate/de pasionati si a cartilor electronice.


Citat
Da, modul de gandire e altul in C++ fata de C. Este programare proiectata pe obiecte. Si este tare usoara cand o iei pas cu pas. Si eu acum asta fac, desi am lucrat de cativa ani in C++, bazele ce le stiam imi erau suficiente la ce faceam pana acum (adica doar sa modific pe alocuri codul altora cu chestiile de fizica cerute de mine), dar acum am nevoie de mai mult, adica sa dezvolt eu cod care sa faca chestia mea de la inceput pana la sfarsit.

Nu stiam ca Programarea Orientata pe Obiecte (POO) <=> C++ (cum ar zice matematicianul  ;D ). E numai bine, sper ca si aici, unde ma duc eu la Politehnica, sa ma invete macar chestiunile elementare (ca am vazut ca au cursuri). Restul e o chestiune de vointa sa le invat.

CitatAsa ca eu voi invata C++ saptamanile astea si putem face impreuna exercitii si proiecte, daca vrei.

Numai la informatica/C++ nu mi-e gandul zilele astea. Momentan ma preocup de teza de la fizica de clasa a XII-a, de fizica in general (ca am ramas cam in urma un pic cu studiul si pentru bac si cel curent) si de matematica (unde treaba merge cel mai bine, am pana acum un 10 la integrale si 9 la recapitulare - ca am fost neatent la ultimul test :( ). Cel mai mult ma poti ajuta trimitandu-mi materialele dupa care inveti.

Sfatul meu e sa iti faci cont la www.dreamincode.net (because it's worth!!!  ;D) si oricand ai nelamuriri sa le pui intrebari ca oamenii de obicei raspund destul de prompt, la obiect si te ajuta. Sa le trimiti coduri (snippet-uri sau tutoriale) pe care le faci si ei ti le corecteaza si apoi ti le publica (mie mi-au dat feedback la acel cod cu functia de gradul 2). Ei fac cam ce faci tu cu StiintaAzi, numai ca e o comunitate ceva mai mare si e in limba engleza, nu in romana. Nu stiu daca te vor putea ajuta/vor intelege partea de fizica a programului, dar erorile de programare cu siguranta nu le vor scapa din vederi si sugestiile de imbunatatire.
Fiecare are scopul lui in lumea asta nebuna.

Adi

Gothik, mersi de raspuns. Cateva comentarii.

Am facut acum link catre acest topic la topicul precedent. Mersi de sugestie.

Tocmai ca trebuie sa uiti ce ai invatat deja in C, numai ca ce ai invatat nu e mult, asa ca odata la Poli invata C++ din prima.

Si JAVA e tot limbaj in POO, deci nu poti spune ca C++ este echivalent cu POO, dar poti spune ca C nu are POO si C++ are.

Buna sugestia ta sa imi fac cont la ei si sa le cer ajutor lor. Ca m-am chinuit mult cu unele chestii simple pana am gasit raspunsuri pe forumuri pe internet. Dar asa ii pot intreba pe ei direct si ei imi pot raspunde prompt. Mersi mult.
Pagina personala: http://adrianbuzatu.ro

Adi

Mi-am facut cont pe www.dreamincode.net (user Nariad). Pare facut profesional acel site. La C++ au o serie de resurse, intre care si una pentru care ii multumesc lui Gothik al nostru! Felicitari!

cppreference.com - Thanks to gothik12! in acest post.
Pagina personala: http://adrianbuzatu.ro

HarapAlb

Citat din: gothik12 din Noiembrie 21, 2009, 05:50:53 PM
Nu stiam ca Programarea Orientata pe Obiecte (POO) <=> C++ (cum ar zice matematicianul  ;D ). E numai bine, sper ca si aici, unde ma duc eu la Politehnica, sa ma invete macar chestiunile elementare (ca am vazut ca au cursuri). Restul e o chestiune de vointa sa le invat.
C++ nu este echivalent cu POO. Sunt lucruri distincte, C++ e un limbaj de programare, iar POO este o tehnica de programare. Nu putem compara o tehnica cu un limbaj  ;) De altfel C++ nu este singurul limbaj care admite programarea cu obiecte, vezi aici http://en.wikipedia.org/wiki/Object-oriented_programming

La nivel de liceu cred ca accentul trebuie pus mai mult oe tehnicile de programare, gen recursivitate, liste, arbori etc. decat pe limbaj propriu-zis. Avantajul C-ului este ca ofera destule resurse ca sa poata invata tehnicile de programare de baza, desi la o adica poti face si obiecte (structuri + functii). Evident ca anumite probleme se formuleaza mult mai elegant folosind conceptul de obiect. Este o problema de timp si efort, si nu stiu cat de adecvata este introducerea POO-ului in programa de informatica de liceu. In general, dupa liceu urmeaza facultatea si acolo se studiaza mult mai in detaliu limbajele de programare si tehnicile.