"Elemente de OOP" la clasa a XI-a - modelarea matricelor
Momentul cel mai potrivit pentru a aborda OOP este acela în care elevii au asimilat un nou "tip de date". Faptul că în primele câteva săptămâni la matematică se studiază capitolul "Matrice", ne oferă un excelent prilej de a demara OOP: să modelăm în C++, ceea ce la matematică se notează prin Mn,m(R) - mulţimea matricelor "de tip (n,m) peste mulţimea numerelor reale", împreună cu anumite operaţii posibile între elementele acestei mulţimi.
"Hello" şi "Goodbye" - constructor, destructor şi this în C++
Să se scrie un program C++ care să afişeze "Hello!" după lansarea în execuţie şi "Goodbye!" la încheiere, dar al cărui funcţie main() să fie vidă (dintr-o baterie de teste pentru angajare).
O soluţie constă în a instanţia un obiect (exemplar de struct, sau de class) "învăţat" să afişeze anumite mesaje în momentul creării şi respectiv, în momentul invocării finale a destructorului (desigur, ţinem seama că execuţia unui program C/C++ începe cu "startup code" - iniţializând în prealabil, variabilele globale). Şi neavând nevoie decât de un constructor şi de un destructor - este suficient să folosim struct (din C++, nu cel din C).
Lecţie recapitulativ-anticipativă la începutul clasei a XI-a şi complemente
Când vom studia "metoda backtracking" ne vom reîntâlni cu "problema damelor"; dar pentru început, să discutăm şi să formulăm în C++ o schemă de rezolvare mai primitivă (în fond, reformulând mot à mot):
1. aşază (oricum) N dame pe tablă;
2. dacă vezi dame care se atacă, atunci reia de la pasul 1;
3. (altfel) reţine soluţia găsită (N dame care nu se atacă una cu alta).
Variantele subiectelor de bacalaureat şi principiul "less is more"
"Recapitularea" angajează şi variantele de subiecte; ne interesează conţinutul propriu-zis (nu şi antetele sau adnotările publicitare de pe fişierele PDF iniţiale) şi nu neapărat pentru a tipări, cât pentru a selecta şi extrage problemele după dorinţă. http://bacmath.docere.ro variante_bac_mate redă firesc variantele respective (prin text obişnuit, nu ca stream-uri PDF) pentru "matematică", permiţând căutarea şi selectarea după conţinut sau criteriu şi are în mod voit o exprimare simplă, dar cu suficiente valenţe ("less is more").
Reducerea la regiunea vizibilă şi "împăturirea" unor pagini PDF
Avem 300 de fişiere PDF de câte o pagină "A4"; câte 100 dintre ele reprezintă subiectul I, II şi respectiv III ale variantelor de subiecte de bacalaureat "MT1_2009".
Pentru fiecare variantă 1..100, accesăm cele trei fişiere aferente ei, reducem paginile de la formatul "A4" la regiunea vizibilă şi creem un fişier PDF care "împătureşte" cele trei pagini tocmai reduse; datorită reducerii pe verticală, vizualizatorul va arăta aceste trei pagini aproape la fel ca în cazul uneia singure.
Folosim pentru aceasta Ghostscript (implicat într-un script Bash) şi modulul Python pyPdf.
vezi Cărţile mele (de programare)