De unde începi?
Autor: Ștefan-Cosmin Dăscălescu
Introducere#
Fie că vrei să înveți pentru a fi mai bun la clasă, pentru a obține un job mai bun sau pentru a ajunge olimpic, toată lumea pleacă de undeva și până și cei mai buni programatori au plecat de la zero.
În acest articol, vom prezenta câteva lucruri pe care să le faci la început pentru a putea avea o fundație cât mai solidă și pentru a putea pleca într-o direcție bună spre a putea ajunge să înveți cât mai mulți algoritmi și a putea fi tot mai bun la rezolvarea problemelor de informatică și nu numai.
Fundamente#
În primul rând, pentru a putea fi un bun programator, trebuie să ai cunoștințe decente de matematică. Nu trebuie să fii olimpic sau să ai alte cunoștințe avansate, dar un nivel decent este important. Mai formal, drept un minim, trebuie să fii familarizat cu noțiunile de matematică din clasele primare și ideal, și cele din clasele V-VIII (dacă ești în gimnaziu și citești asta, trebuie să fii la zi cu materia de la clasă, iar pe parcurs, pe măsură ce veți învăța mai multe, vei putea fi înaintea materiei).
De asemenea, trebuie să ai cunoștințe de bază despre un limbaj de programare. În conformitate cu materia predată în școlile din România, această arhivă este centrată pe limbajul C++, deci înțelegerea de bază a acestui limbaj va fi esențială.
Noțiuni cu care să începi#
Pentru a începe studiul algoritmicii, recomandăm învățarea bazelor limbajului. Dintre cele mai importante noțiuni inițiale, vom aminti următoarele capitole, precum și unde le găsiți la noi în arhivă. Pentru fiecare secțiune, recomandăm în mod strict citirea noțiunilor în ordinea dată aici.
Observație
Pentru cei familiarizați cu programa pentru olimpiadă, această listă este foarte similară cu programa clasei a cincea de la olimpiadă. Chiar dacă multe alte roadmap-uri online sugerează prioritizarea structurilor de date mai avansate, tehnicile de rezolvare a problemelor sunt mult mai importante pentru început.
Elemente de limbaj#
- Instalarea primului editor/IDE C++
- Primul program în C++
- Variabile și tipuri de date simple
- Operatori și expresii. Cunoștințe matematice de bază
- Citirea și afișarea datelor
- Structura alternativă
- Structura repetitivă
- Coding Style
- Vectori (tablouri unidimensionale)
Algoritmi și tehnici introductive#
- Prelucrarea cifrelor unui număr
- Maxime și minime
- Generarea șirurilor de numere
- Divizibilitatea
- Abordarea problemelor cu secvențe
- Principiul lui Dirichlet (principiul cutiei)
- Algoritmi de sortare - Doar algoritmii în \(O(n^2)\) și funcția std::sort
Sfaturi practice#
Pentru a putea stăpâni cât mai bine tehnicile prezentate în articolele recomandate, va trebui să lucrați probleme cât mai variate și dacă aveți nelămuriri, recomandăm să ne întrebați pe serverul nostru.
De asemenea, după ce sunteți siguri pe voi, puteți participa la competiții online, cele mai potrivite concursuri fiind fie competițiile românești, fie rundele Div. 4 și Div. 3 de pe Codeforces. Evident, dacă sunteți mai buni și vreți o provocare în plus, puteți participa oricând la olimpiadă, dar cerințele sunt mai mari acolo.
Concluzii#
Pentru a deveni bun la algoritmică, trebuie să începem cu noțiunile de bază, care dacă sunt înțelese cum trebuie, vă vor ajuta să deveniți tot mai buni. Chiar dacă sunt multe alte capitole care trebuie învățate, ne-am concentrat doar pe esențial pentru a face procesul de învățare cât mai ușor. Fiecare dintre articolele recomandate are o serie de resurse suplimentare pe care le recomandăm, pe lângă cele prezentate în articole.