Tabelul unic versus "bază de date" (între practică şi teorie)
Programa şcolară distinge "teorie" de "practică", indicând 1 oră teorie şi 2 ore laborator; ruperea este iminentă… Manualele propun mereu să se scrie un program care, vizând cam imprudent scrierea, în loc de construirea (realizarea) programului. Rezultanta în practica obişnuită a adoptării unor astfel de portiţe de evitare a eforturilor de corelare, constă în programe monolitice: o singură funcţie - void main() - sau în orice caz, un singur fişier (nume.CPP) şi un singur "tabel" - anulând astfel, orice "teorie" şi orice legătură cu realitatea.
Cu Perl, de la ORAR.XLS (orarul şcolii) la Web
Avem un fişier .XLS conţinând orarul unei şcoli, în forma de editare tabelară cea mai obişnuită. Pe de altă parte, avem o aplicaţie Web, pentru expunerea în diverse moduri şi pentru întreţinerea orarului, aplicaţie constituită pe o bază de date MySQL, cu o anumită organizare internă (tabele relaţionate corespunzător pentru şcoli, schimburi, obiecte, profesori, încadrări). Redăm aici prin secvenţe Perl instructive, diverse prelucrări necesare pentru extragerea şi organizarea convenabilă a datelor din fişierul .XLS iniţial, în vederea încorporării lor în aplicaţia "Orarul şcolii".
Plugin jQuery pentru paginarea unui tabel HTML
Ataşează unui tabel HTML o bară de navigare (cu handlere corespunzătoare), încât tabelul să fie redat pe pagini de câte un anumit număr de rânduri (cu posibilitate de trecere de la o pagină la o alta), părţile de antet/subsol fiind însă menţinute pe fiecare pagină.
Tabelele trebuie să poată fi paginate în mod independent (unul faţă de celălalt) şi trebuie avut în vedere (pe cât este firesc) şi cazul tablourilor imbricate.
Un bookmarklet pentru calculul dinamic al mediei şcolare
Definim un obiect G care în primul rând, conţine trei containere - respectiv pentru Note, Teză şi Medie; acestea sunt ele însele nişte obiecte (şi anume nişte obiecte predefinite), încât putem folosi proprietăţile şi metodele specifice lor (în cadrul obiectului G definit de noi).
Note şi Teză sunt "de tip" <input>; ca obiect, un <input> are predefinite nişte metode de interacţiune - onClick(), onKeypress(), onKeyup(), onMouseover(), etc. iar acestea se pot "redefini" pentru a răspunde în modul dorit unor evenimente precum apăsarea unei taste sau click în cadrul containerului aferent, sau în exteriorul lui, etc.
Redefinim în obiectul G, metodele onKeyup() pentru <input>-urile Note şi Teză, în aşa fel încât fiecare tastare (sau ştergere) de notă/teză să declanşeze procedura de calcul şi înscriere a mediei.
După definirea astfel a obiectului G, adăugăm o funcţie care să-l creeze conform specificaţiilor lui şi să-l anexeze documentului. În final, includem totul în "paranteze de invocare" (...)();, astfel că toate variabilele implicate rămân ne-vizibile din afară şi pe de altă parte, funcţia finală (care şi ea trebuie inclusă în paranteze de invocare) va fi pusă în execuţie imediat după încărcarea scriptului.
După ce o punem la punct astfel, transformăm aplicaţia rezultată într-un bookmarklet: eliminăm comentariile şi spaţiile (folosind un compressor), eventual escapăm şi codificăm URL anumite caractere şi apoi adăugăm scriptul rezultat în Bookmarks (implicând pseudo-protocolul javascript: în loc de obişnuitul http:).
Un plugin jQuery pentru calculul dinamic al mediei şcolare
Care este media şcolară pentru notele 9, 10, 10 şi nota în teză 9?
Unele programe/calculatoare dau 9.50, ceea ce este corect (9.4(9) = 9.5); numai că regula precizată de minister este de a calcula media "cu două zecimale exacte", rezultând nu 9.4(9) ci 9.49 - adică media şcolară este 9 (şi nu 10).
Vizăm aici modelarea corectă a calculelor cu n zecimale exacte; "media şcolară" ca formular independent (<form>, setTimeout(), onkeypress); "media şcolară" ca plugin jQuery (de montat pe un tabel de elevi).
vezi Cărţile mele (de programare)