Programare pe de rost

Salut! Am și eu o mică-mare problemă. Eu până acum am învățat informatică pe de rost, ca papagalul cum s-ar zice pentru că nu a avut cine să îmi explice efectiv ce și cum se face dat fiind că eu încă mă aflu în școala generală (clasa a 8-a). Deocamdată am probleme la citirea codului. De exemplu dacă un cod sau o funcție conține 2 for-uri și un while, nu pot explica ce face funcția aia exact și asta mă dezavantajează, zic eu. Așa că vin cu întrebarea: e vreo metodă să reiau totul logic ? De preferat în română dar merge și engleză. Țin să menționez că am incercat cu sololearn dar nu m-a ajutat mai deloc.

salutare,
Ne poti da un exemplu cu pseudocodul/codul pe care nu il intelegi?

Metoda de baza este sa iei o foaie si sa iti notezi ce face codul linie cu linie. Poti sa iti faci un tabel cu toate variabilele si dupa fiecare pas notezi o valoare noua la coloana variabilei care s-a schimbat. (practic executi pe hartie ce ar face calculatorul)

For, while sunt structuri repetitive, un articol bunicel ar fi https://www.pbinfo.ro/?pagina=articole-afisare&id=71 ca sa intelegi diferenta intre ele.

2 Likes

Nu e vorba despre o anumită bucată de cod/pseudocod. Mă refer în general.

Nu înțelegi conceptul „iterație”? Nu înțelegi ce se iterează?

Din bucata asta ce linie nu înțelegi?

for ($i=0; $i < 3; $i++) { 
    print $i;
}
1 Like

Trebuie sa inveti algoritmica. Fara asta nu ai cum sa intelegi ce faci acolo si de ce.

1 Like

Poti vedea o paralela cu invatarea cititului din primele clase. Mai intai trebuie sa inveti literele, apoi silabele si apoi sa citesti propozitii. La fel e si in cod. Prima oara o sa mearga mult mai greu, dar cu cat citesti mai mult cu atat o sa inveti sa citesti mai repede.

Din câte am mai citit și am mai încercat să înțeleg, acel for afișează primele 3 cifre începând cu 0. Respectiv 0, 1, 2.

Exact așa am început și eu să învăț programare de prin generală/liceu. Foarte bine că încerci să înțelegi principial și nu mecanic. Ce ți-aș sugera eu este să cauți o carte de programare generală sau pe un anumit limbaj, în funcție de ce îți cere situația actuală. Dacă alegi varianta de programare generală, poți merge pe C++ (deși unii nu ar fi de acord cu mine). E mai ușor să treci de la C++ la Java sau chiar scripting (python de ex) decât invers. Apoi treci la algoritmică, sau pornești în paralel când simți că frustrarea este suportabilă să înveți algoritmică. Ai toată viața înainte și din întrebarea ta deduc că ești serios să înveți calumea.
Aceeași dilemă am avut-o și eu.

În primul rând trebuie să înțelegi algoritmii, așa cum a mai spus cineva.

Sintaxa o poti uita și nici măcar nu avem memorie îndeajuns să le tinem minte pe toate. Mai ales daca folosesti mai multe limbaje si/sau versiuni ale lor.

E foarte ușor să cauți pe Google “python loop syntax”.
Să ai cunoștințele de bază, indiferent dacă retii sau nu sintaxa.
La început îmi era jenă că uitam sintaxa, însă după un timp eram obișnuit să lucrez cu documentația lângă mine.
Cel mai probabil vei retine pe de rost ceea ce folosesti mai des.

Well, îmi poți recomanda tu o carte? Aș fi foarte recunoscător.

Am cautat resursele pe care le aveam salvate:


si desigur ca sa nu te chinuiesti/incurci cu programele necesare la inceput poti folosi https://repl.it/languages (REPL) pentru a incerca aproape fiecare limbaj in browser.

Daca poti, incearca sa citesti in engleza, e mai greu la inceput, dar te obisnuiesti. Trebuie sa te bazezi foarte mult pe cunostiintele tale de a cauta pe Google, daca nu te obisnuiesti cu cuvintele cheie in engleza cat mai rapid cu atat mai greu o sa iti fie cand dai de o problema pe care nu o poti rezolva nicicum.

Cel mai simplu limbaj pe care il poti invata si singur e Python. O sa inveti C++ in liceu, dar nu-ti bate capul singur cu el.

1 Like

Eu îți recomand să începi cu “Totul despre C si C++ - Manualul fundamental de programare in C si C++” sau “Arta programarii calculatoarelor : vol. 1 : Algoritmi fundamentali / Donald E. Knuth”. Nu îți recomand să te îndopi de teorie, ci îți recomand să înveți în cicluri teorie+practică. Vei găsi lucruri pe care le vei înțelege din teorie și lucruri pe care nu le vei înțelege decât dacă pui tu mâna și scrii cod și vezi ce face. Totuși, nu te împotmoli la vreun capitol sau subcapitol care nu îți intră nicicum în cap nici din teorie nici din practică. Mergi mai departe.
Joacă-te cu codul, experimentează, fii curios, fă ce te ajută să înțelegi mai bine. Dacă C++ ți se pare imposibil iar cartea de algoritmică greu de digerat, poți să încerci o carte de Java, C# sau Python. Ideea este ca pe parcurs să descoperi ce stil de învățat și care limbaj ți se potrivesc cel mai bine.
Python are o pantă de învățare destul de accesibilă, dar mie îmi lasă impresia că nu prea îți permite să aprofundezi lucrurile prea mult. C++ e mult mai greoi la început, dar cu timpul îți va permite să stăpânești lucrurile mult mai bine și dacă vrei să treci pe alte limbaje îți va fi mult mai ușor decât invers (Python este scris în C++spre exemplu). Sunt multe limbaje în ziua de azi iar șansele să rămâi toată viața pe unul singur sunt destul de mici.
Sper că ți-am fost de ajutor.

As zice ca din carti e cel mai greu sa inveti.

Cel mai bine e sa faci programe de unul singur. Incep cu chestii de baza si tot progresezi in dificultate. Ai internetul la dispozitie, de ce sa inveti ca si in urma cu 40 de ani?

“Arta programarii calculatoarelor : vol. 1 : Algoritmi fundamentali / Donald E. Knuth”

NU. Asa ceva nu e pentru ‘a incepe invatatul’. E buna de referinta, dar in nici un caz pentru un incepator, sa ‘inceapa’.

6 Likes

Sunt cel puțin două cărți care au un titlu înșelător:

Ai putea crede că sunt niște cărți nu doar potrivite, ci destinate începătorilor. La naiba, una dintre ele are chiar introduction în titlu!

Doar că nu, nu este deloc așa. Materialul e dens, nici pe departe potrivit pentru un începător. Eu personal nu știu prea mulți oameni care ar putea considera titlurile de mai sus o lectură ușoară. Și cunosc oameni mult mai deștepți decât mine.

A le recomanda oricare dintre aceste cărți unui începător nu arată decât că tu, personal, nu le-ai citit.

2 Likes

Am cartea. Are peste 1000 de pagini. Nu mi se pare atractiva. Nu as recomanda-o unui începător. De fapt nu o recomand :smiley:

Back to topic
Poti sa iți faci un cont pe platforma WellCode. Am văzut ca au lecții unde explica foarte bine conceptele fundamentale. Poti sa intri și pe grupul de facebook. Acolo se postează întrebări, lumea se ajuta.

1 Like

asta e de colectie :slight_smile:

Cartea cu algoritmi mi-a recomandat-o un prieten, nu m-am uitat peste ea inca foarte deep.
Si da, sunt de acord cu tine, nu pare un material usor de digerat. Tocmai de aceea i-am recomandat sa nu zaboveasca pe ceva ce nu ii e utila.

Introduction to Algorithms e lecturabila comparativ cu Arta Programarii Calculatoarelor (mie asta mi se pare plictisitoare la greu), dar da, nu e tocmai pentru un incepator clasa a 8a.

Cel mai bine când e vorba să vezi dacă ești bun la programare e să te uiți la tine în cameră. Dacă e vraiște pe acolo, clar programarea va fi o provocare.

Cea mai mare problemă pe care o am cu „colegii” nu e lipsa de cunoștințe technice. Da, știu cuvinte cheie pe pâine. E lipsa de organizare. Și fără capacitatea de a abstractiza problemele, iese un terci. Mereu.

E ok să știi algoritmi și să știi SQL, dar dacă nu ești organizat iese un cod netestabil, imposibil de modificat și de înțeles.

Un caz pe care mereu îl văd e când rezolvi o problemă și apare o excepție. Toată lumea bagă un IF pe acolo și asta e. Iar mai încolo mai apare un caz aparte. Încă un IF. Apoi apar funcții/metode de genul fixOrder($order).

Ei bine, cum se rezolvă situația asta elegant?

2 Likes