Informatică clasa a X-a: texte și subprograme
Organizează studiul pentru clasa a X-a: șiruri de caractere, funcții, recursivitate și structuri de date, cu lecții legate și verificări practice.
În acest material
Pentru nivelul clasei a X-a, următorul pas după tablouri este să descrii mai bine datele și să împarți programele în operații clare. Acest parcurs leagă textele, funcțiile, recursivitatea și structurile de date din Algo25. Organizarea este un reper de studiu, fără să înlocuiască programa și planul profesorului.
Înainte de a începe, verifică dacă poți parcurge un vector fără să depășești limitele și dacă poți explica o condiție de oprire. Dacă aceste idei sunt încă nesigure, revino la parcursul clasei a IX-a. Noile instrumente devin mai ușoare când nu trebuie să repari simultan și bazele.
Texte: reprezentare înainte de prelucrare
Începe cu șirurile de caractere. Pentru char[], urmărește capacitatea și terminatorul zero. Pentru std::string, urmărește dimensiunea și valoarea npos la căutări. În ambele reprezentări, citirea unei linii cu spații este diferită de citirea unui singur cuvânt.
Construiește exemple cu șir gol, un singur caracter și separatori consecutivi. La numărarea cuvintelor, definește mai întâi separatorii; altfel două programe pot produce rezultate diferite fără ca diferența să fie evidentă. Citește apoi copierea, concatenarea și căutarea, inclusiv efectul modificator al lui strtok.
Funcții cu intrări și rezultate clare
În subprograme, formulează contractul fiecărei funcții: ce primește, ce întoarce și ce are voie să modifice. Transmiterea prin valoare și prin referință nu este doar o diferență de simboluri. Ea stabilește dacă apelul poate schimba variabila apelantului.
Încearcă să separi citirea de calcul. O funcție care primește două numere și calculează CMMDC este mai ușor de testat decât una care citește, calculează și afișează totul într-un singur loc. Alege nume care exprimă operația și evită variabilele globale când ascund dependențele dintre apeluri.
Recursivitate și divide et impera
Pentru fiecare funcție recursivă, scrie cazul de bază și mărimea care scade. Desenează apelurile pentru o intrare mică, apoi urmărește și revenirea, când rezultatele sunt combinate. A înțelege numai coborârea în apeluri lasă neclară jumătate din execuție.
Continuă cu Merge Sort și Quick Sort. Compară împărțirea problemei, combinarea rezultatelor și costul memoriei. Nu deduce eficiența doar din faptul că un algoritm este recursiv: unele recursii sunt logaritmice ca adâncime, altele liniare sau au foarte multe ramuri.
Structuri și primele abstracții
Folosește struct când mai multe câmpuri descriu aceeași entitate. Un elev cu nume și punctaj sau un interval cu două capete trebuie păstrat coerent la sortare. Sortarea unui singur câmp separat poate rupe asocierea dintre date.
După aceste baze, explorează containerele STL și pointerii și listele. Tratează memoria dinamică drept o temă separată, cu proprietate și durată de viață. Clasele și polimorfismul sunt extinderi utile, dar nu o condiție pentru rezolvarea fiecărei probleme de text sau vectori.
Exersează
Proiectează o funcție care numără vocalele dintr-un text fără să îl modifice. Precizează dacă lucrezi doar cu litere ASCII, dacă majusculele sunt acceptate și ce rezultat obții pentru șirul gol. Răspunsul pentru textul gol este zero; celelalte convenții trebuie fixate înaintea implementării, nu ghicite dintr-un singur exemplu.
După fiecare lecție, alege o problemă din catalog, explică soluția și revino asupra unui caz-limită. Când poți justifica stările recursive și costurile parcurgerilor, continuă cu tehnicile și grafurile din parcursul clasei a XI-a.
Întrebări frecvente
Cu ce încep dacă textele mi se par dificile?
Cu reprezentarea și citirea, înainte de algoritmi. Urmărește terminatorul zero pentru char[] și dimensiunea pentru std::string.
Cum știu dacă o funcție trebuie să modifice un parametru?
Scrie contractul rezultatului. Dacă modificarea este parte din cerință, folosește o formă potrivită de transmitere; altfel păstrează intrarea nemodificată.
Ce verific prima dată la o recursie?
Cazul de bază și progresul către el. Apoi verifică ce se întâmplă după revenirea din apelurile recursive.
Trebuie să învăț liste înainte de vectori?
Nu. Vectorii și indexarea sunt o bază mai simplă. Listele adaugă legături, alocare și gestionarea duratei de viață.
Pot studia aceste lecții în altă clasă?
Da. Clasele sunt repere de parcurs; alege după cunoștințele necesare și după obiectivul tău, nu doar după eticheta anului.