Sistem de Depistare a Plagiarismului In Productia de Software
CUPRINS
INTRODUCERE
Astăzi, datorită tehnologiilor progresiste și mai ales a tehnologiilor informaționale avem posibilitatea de a reprezenta informația în formă electronică, ceea ce permite transcrierea informației foarte ușor de pe un suport pe altul, de a o imprima și multe alte posibilități facile de prelucrare a informației. Însă aceasta a creat un șir de probleme, legate de încălcarea dreptului de autor. Încălcarea dreptului de autor se exprimă prin publicarea unei lucrări străine sau a unei părți din această lucrare sub numele propriu, fără a indica sursa de proveniență.
Pentru a-și apăra opera de un eventual împrumut fără permisiunea autorului, titularul are dreptul să folosească simbolul ocrotirii dreptului de autor, care se imprimă pe fiecare exemplar al operei și constă din trei elemente:
a) litera latină C inclusă într-un cerc – Copyright;
b) numele (denumirea) titularului drepturilor exclusive de autor;
c) anul primei publicări a operei.
Însă cu toate acestea astăzi se plagiază în toate domeniile: literatură (această temă este ilustrată în capitolul I), muzică(capitolul II), film,designe, chiar și în producția de SoftWare (despre aceasta se va vorbi mai detaliat în capitolul III).
În această lucrare voi prezenta cîteva metode care permit de a depista și demonstra faptul de încălcare a dreptului de autor în cazul cînd scopul acțiunilor nelegitime este un produs program, care conține în corpul programului fragmente de programe străine împrumutate fără de știrea autorului.Deasemena nimic nu-l împiedică pe fiecare să elaboreze metodele sale cu scopul depistării plagiatelor. Deasemena fiecare programator poate elabora metodele sale pentru a proteja produsul său și care să servească drept demonstrație a faptului că este prezent dreptul de autor. Orice program are o anumită ierarhie a structurilor care pot fi dezvăluite, măsurate și utilizate în calitate de caracteristici ale programului. Utilizate la demonstrarea faptului de împrumut, aceste caracteristici trrebuie să se schimbe puțin în catul modificăriiprogramului sau includerii fragmentelor unui program în altul. Fiecare programator în timpul programării își crează un stil anumit. Acesta deasemena poate fi folosit pentru demonstrarea împrumului produsului program.
I. PLAGIARISMUL
1.1. Plagiarismul operelor artistice
Plagiat – furt literar ; prezentare a unei lucrări străine (artistice sau științifice) drept creație personală. Acest termen, furt literar, i s-a atribuit cuvîntului plagiat doar în secolul XVIII. În justiția romană plagium însemna vînzare nelegală în robie a omului liber, pentru care erau pedepsiți cu biciul (ad plagas). Acum prin plagiat se subînțelege îsușirea dreptului de autor, care se exprimă prin publicarea lucrării străine sau a unei părți din ea sub numele propriu. Autorul este persoană fizică prin a cărei muncă creatoare a fost creată opera.Conform constituției Republicii Moldova încălcarea dreptului de autor atrage după sine răspundere judiciară.
Conform legii privind dreptul de autor se prevăd următoarele:
Dreptul de autor se extinde asupra operelor literare, de artă sau științifice exprimate în formă:
a) scrisă (manuscris, dactilografie, note muzicale etc.);
b) orală (rostire publică, interpretare publică etc.);
c) audio- sau videoimprimare (mecanică, magnetică, numerică, optică etc.);
d) de imagine (desen, schiță, tablou, plan, desen tehnic, cine-, tele-, video- sau fotocadru etc.);
e) volumetrico-spațială (sculptură, model, machetă, construcție etc.);
f) în alte forme cunoscute în prezent sau care urmează să fie descoperite.
Obiecte ale dreptului de autor sînt:
a) operele literare (cărți, broșuri, articole, programe pentru computer est.);
b) operele dramatice și muzical-dramatice, scenariile, proiectele de scenarii, libretele, sinopsisul filmului;
c) operele muzicale cu sau fără text;
d) operele coregrafice și pantomimele;
e) operele audiovizuale (cine-, tele-, videofilme, filme cu diapozitive etc.);
f) operele de pictură, sculptură, grafică și alte opere de artă plastică;
g) operele de arhitectură, urbanistică și de artă horticolă;
h) oprele de artă aplicată;
i) operele fotografice și operele obținute print-un procedeu analogic fotografiei;
j) hărțile, planurile, schițele și operele plastice referitoare la geografie, topografie, arhitectură și alte științe;
k) operele derivate și integrante (traducerile, adoptările, prelucrările și orice alte prelucrări ale operelor literare, de artă, științifice, aranjamentele operelor muzicale, precum și enciclopediile, antologiile, culegerile, bazele de date etc.). Operele derivate și alcătuite sînt ocrotite de dreptul de autor, indiferent de faptul dacă operele pe baza cărora acestea au fost create sau pe care le includ sînt sau nu obiecte ale dreptului de autor;
l) alte opere.
Ocrotirea produselor program se extinde asupra tuturor felurilor de produse program (inclusiv asupra sistemelor operaționale), care pot fi exprimate în orice limbaj și sub orice formă, inclusiv textul inițial și codul obiectului.
Dreptul de autor se extinde asupra soluțiilor (operelor) artistico-arhitecturale atît în ansamblu, cît și asupra părților lor componente, inclusiv asupra operelor create ca urmare a îndeplinirii unei misiuni de serviciu.
1.2. Tumorile și comorile scrisului
Ceea ce, în literatură, se numește influență, inspirație , contaminare, împrumut, reminiscențe, similitudini, paralelisme, tangente, contrapuncte – toate astea țin de comorile scrisului. Tumorile lui, însă, le provoacă pastisa și plagiatul (furtul).
Această noțiune,plagiatul, nu are un conținut destul de concret și în multe cazuri nu întotdeauna e posibil de a o separa de noțiunile apropiate a imitării literare, împrumutului și multe alte cazuri de asemănare a lucrărilor literare. În orice caz în coincidența unor idei aparte nu trebuie neapărat să vedem plagiat; condițiile de continuitate a vieții spirituale sunt astfel: fără de însușirea cunoscută a ideii străine nu este posibilă nici o creație. Printre altele omul, ajungînd cu performanțele sale la anumit nivel, deseori se consideră un Columb al dreptății și nedorind să știe despre predecesorii săi (“pereant qui ante nos nostra dixerunt”) , vede în repetarea gîndurilor sale un atentat asupra drepturilor sale. În realitate, obiectivul plagiatului îl prezintă nu ideea, rareori reprezentînd “res communis omnium”, dar ceea ce o consideră membrana exterioară.
Majoritatea operelor literare, care nu include nimic nou în conținut au o formă anumită, nuanțe noi de exprimare și doar însușirea părții individuale poate fi numită plagiat. Dacă anlizăm din acest punct de vedere cazurile de asemănare a creațiilor poetice, nu se poate vedea plagiat nici în împrumutul fabulei (în poveștile lui Tolstoi “tema este împrumutată ” din multe drame de-ale lui Shakespeare), nici în utilizarea de tipuri deja finisate (un procedeu artistic deosebit implementat de Ședrin în opera sa Nozdrev și Molcialina), nemaivorbind de o nouă prelucrare a cunoscutelor în literatura universală caractere (Don Huan, Faust). În egală măsură nu au caracter de plagiat lucrările libere, principalul în care se subînțelege folosirea datelor străine fără o prelucrare individuală. Însă concepțiile despre plagiat se schimbă – și în ceea ce vedeau mai înainte prezența ideii de creație astăzi pare a fi o redare mecanică. Lumea antică era sensibilă față de slăvile autorului, dar permitea împrumutul în limite destul de mari. Deosebit de liber se foloseau de munca predecesorilir săi istoricii și geografii, chiar așa ca Herodot, Plutarh.
Bineînțeles, lumea literară e una a oamenilor delicați care, pentru a tabuiza cît de cît gravitatea noțiunii de furt, folosesc unele sintagme ceva mai ingenioase, jucăuș-aluzive, subțiri în ironie, dar nealterate în semnificație: a strînge birul de la cei mari, a impozita clasicii, a face contrabandă de subiecte; ilegalitatea grafomană, impertinența cosmopolită, contribuabil post-mortem ș.a.
Dar să apelăm la un prim exemplu care, implicit, ar elucida și el subtextele șirului de noțiuni din prologul prezentelor glosari: dat fiind că iscoditorii statisticieni ai literaturii știu deja foarte multe lucruri, în urma altor calcule meticuloase ei au ajuns și la un astfel de rezultat surprinzător: în opera lui Shakespeare, din 6 643 de versuri testate – 1 171 s-au dovedit a fi preluate, copiate de la alți autori. Alte 2 573 de versuri Marele Will le-a prelucrat, reformulîndu-le, retușîndu-le, reinterpretîndu-le. Astfel că, originale, rămîn doar 1 899 de stihuri. Cam sub incidența cărui articol din Codul penal (al literaturii) ar cădea William Shakespeare: influență sau plagiat-furt? Tribunalul literar, imediat și fără drept de recurs, trebuie să-l lipsească pe His Britannic Majesty (Majestatea Sa Britanică) William Shakespeare de supremul titlu de geniu, ba chiar și de multe altele: celebru, mare, nepereche, renumit, planetar etc. Și nu e vorba doar de niște versuri luate aparte. Vinovăția sa e mult mai grava. Actorul de la teatrul "Globus" a filiat drama "Romeo si Julieta" din două nuvele italiene, una aparținînd lui Luigi da Porta, cealaltă – lui Matteo Bandello; "Neguțătorul din Veneția" nu poate nicidecum tăinui contaminările din trei povestiri renascentiste: "Il Pecorone" de Giovani Fiorentino, a doua fiind semnată de Maccario de Salerno, iar cea din urmă, "Fabula casetei", inserată în antologica "Gesta romanorum" (cronici romane în traducere franceză); "Hamlet" descalecă din "Istoria Danemarcei" a lui Saxe; "Othello" (pînă și "Othello") și "Regele Lear" au și ele paternități străine.
După cu adevărat teatrul genial, scris și chiar interpretat de însuși nemuritorul Shakespeare, poți să te dai în spectacol, însă atare procedeu nici pe departe nu echivalează cu a face teatru de valoare. În operele sale măiestria investită și diferențele sau particularitățile domină net similitudinile, alias reluările, imprumuturile etc. Dacă nu e stapînul (ca proprietar) temelor pe care le-a preluat (nu atît le-a preluat, cît le-a resuscitat, pentru că a resuscita înseamnă: a reda funcțiile vitale organismului, a repune în funcțiune, a readuce în simțiri), dacă nu e stapînul-proprietar al temelor, Shakespeare e atoatestăpînitor în desăvîrșiri și profunzimi artistice, e suveranul destinelor personajelor cărora le-a dat alte dimensiuni existențiale, bazate pe raporturi fundamentale față de lume, istorie, în genere – față de personalitatea umană. Dînsul e mare și inconfundabil printr-o viziune irepetabilă, cu valabilitate perpetuă, fapt care-l făcuse pe Lihtenberg să susțină ca ceea ce era de realizat în literatură în mod shakespearean, în mare masură a realizat însuși Shakespeare.
Cu toate că, în cazuri similare, de reluări-contaminări, s-a făcut și teatru, și nu totdeauna de calitate proastă. Spre exemplu, un spectacol pe tema dată îl dădu Alexis Piron, poet si actor comic francez de acum peste două secole. Situația fu următoarea: într-un salon literar, Voltaire citea tragedia sa "Semiramis", în care nu erau greu de depistat nedisimulate influențe din alți autori, inclusiv din Racine și Corneille. De cum dramaturgul ajungea cu lectura la pasajele inspirate de aiurea, Piron se ridica din fotoliu și se inclina cuviincios. După ce termina de citit tragedia, enervat la culme, Voltaire îi ceru lui Piron explicațiile de rigoare: adică, ce e, amice, cu inoportunele tale teme deocheate? Poetul care, era și actor de comedie, răspunse liniștit: "M-am înclinat de fiecare dată cînd am întîlnit cunoștințe de-ale mele mai vechi…"
Revenirea la un context sobru ne-o asigură același Voltaire: în istoria literaturii, dînsul nu a rămas atît cu tragedia "Semiramis", cît cu proza filozoficî din "Candid sau optimistul" si "Naivul", cu "Scrisorile filozofice" și "Dicționarul filozofic". tăți străine.
După cu adevărat teatrul genial, scris și chiar interpretat de însuși nemuritorul Shakespeare, poți să te dai în spectacol, însă atare procedeu nici pe departe nu echivalează cu a face teatru de valoare. În operele sale măiestria investită și diferențele sau particularitățile domină net similitudinile, alias reluările, imprumuturile etc. Dacă nu e stapînul (ca proprietar) temelor pe care le-a preluat (nu atît le-a preluat, cît le-a resuscitat, pentru că a resuscita înseamnă: a reda funcțiile vitale organismului, a repune în funcțiune, a readuce în simțiri), dacă nu e stapînul-proprietar al temelor, Shakespeare e atoatestăpînitor în desăvîrșiri și profunzimi artistice, e suveranul destinelor personajelor cărora le-a dat alte dimensiuni existențiale, bazate pe raporturi fundamentale față de lume, istorie, în genere – față de personalitatea umană. Dînsul e mare și inconfundabil printr-o viziune irepetabilă, cu valabilitate perpetuă, fapt care-l făcuse pe Lihtenberg să susțină ca ceea ce era de realizat în literatură în mod shakespearean, în mare masură a realizat însuși Shakespeare.
Cu toate că, în cazuri similare, de reluări-contaminări, s-a făcut și teatru, și nu totdeauna de calitate proastă. Spre exemplu, un spectacol pe tema dată îl dădu Alexis Piron, poet si actor comic francez de acum peste două secole. Situația fu următoarea: într-un salon literar, Voltaire citea tragedia sa "Semiramis", în care nu erau greu de depistat nedisimulate influențe din alți autori, inclusiv din Racine și Corneille. De cum dramaturgul ajungea cu lectura la pasajele inspirate de aiurea, Piron se ridica din fotoliu și se inclina cuviincios. După ce termina de citit tragedia, enervat la culme, Voltaire îi ceru lui Piron explicațiile de rigoare: adică, ce e, amice, cu inoportunele tale teme deocheate? Poetul care, era și actor de comedie, răspunse liniștit: "M-am înclinat de fiecare dată cînd am întîlnit cunoștințe de-ale mele mai vechi…"
Revenirea la un context sobru ne-o asigură același Voltaire: în istoria literaturii, dînsul nu a rămas atît cu tragedia "Semiramis", cît cu proza filozoficî din "Candid sau optimistul" si "Naivul", cu "Scrisorile filozofice" și "Dicționarul filozofic". Iar drept replica dată causticului Piron, nu este exclus ca domnul Arouet (ne-pseudonimul lui Voltaire) să fi invocat sentința lansată încă de Terentius: "Nullum est iam dictum quod non sit dictum prins" – "Nu s-a spus nimic care să nu fi fost spus mai înainte". De remarcat că Publius Terentius a trăit cu un secol și jumătate înainte de Hristos, ca și cum la începutul lumii. Cu toate că unul și mai vechi de secole, zeiescul Homer, care și-ar fi avut pămînteasca existență cam prin anii 800 și ceva î.Hr., nici chiar el n-a putut fi acceptat ca absolut original. Fără menajamente, Moellendorff susținea că "Iliada" nu e decît "o lamentabilă operă de compilație", alături de alți exegeți demonstrînd că Marele Orb Clarvăzător a avut un auz perfect, trăgînd cu urechea la sonorele recitaluri din literatura poeților populari ai Egiptului. Însă, parafrazîndu-l pe Schumann care se referea la Bach, și readucînd din aria muzicii în cea a literaturii argumentele posibile, putem susține că generații succesive de poeți, în special europeni, îi datorează lui Homer ceea ce o religie datorează fondatorilor ei.
Euristica, știința care studiază legitățile și metodele activității umane ce duc la noi descoperiri și invenții, include în sfera ei de cercetare și creația artistică. Dacă s-ar aplica literaturii principiile euristice în cel mai riguros mod, dogmatic, s-ar încerca o grea dezamăgire: rar scriitor ar putea fi recunoscut drept original, autentic în demersurile sale. Temele, subiectele, genurile, speciile, stilurile, înaintea cărora stă însuși materialul literaturii – limba, nu au paternitate posibil de identificat, decît la modul generalității și genialității colective. Neaparținînd nimănui ca drept de autor (copyright), ele aparțin în egală măsură tuturor autorilor care au fost, sunt și vor veni. Așa că reluările și reelaborările elementelor fundamentale ale artei sunt solicitate imperios de evoluția analogiilor. Unii autori reușesc să disocieze temele pînă la un anumit punct, în concordanța cu specificul conștiinței umane, prezente într-un timp istoric, etic și estetic. De aici încolo, altcineva intrevede o continuare și o modificare de optică. Bineînțeles, în acest caz nu poate fi vorba de necroforii ce se hrănesc din "cadavrul" ideal al spiritului continuu, avîndu-se in vedere doar incontestabil creatori care știu că, pînă la urmă, în artă destinul propriu este condiționat de prevalarea individualului. Aflîndu-se într-un proces intim-familial de interacțiune cu obolul predecesorilor, artistul de talent nu numai că face școala de insușire a datelor profesiei după "lecțiile" altora, ci retranscrie și aplică aceste "prelegeri" într-un mod personal, rar întîlnit, dar posibil totuși, care duce (dacă nu la descoperiri) la revitalizări și nuanțări unice. ( "lectiile" sunt tocmai în spiritul adagiului de pe frontonul templului lui Confucius: "Exemplul maeștrilor – pentru 10 000 de ani"). Pe de altă parte, însușirea unor procedee sau metode de creație noi nu ar însemna, pur și simplu, o discretă sau abilă "retragere la timp" de la izvorul inspirației, deschis de înaintași, ci imperioasa necesitate de a dezvălui și deosebirile talentului de care dispui, ordonîndu-le, sistematizîndu-le și sincronizîndu-le intr-o viziune personală.
Valery Larbaud, unul din experimentații și, uneori, "fericit pățiții" care au avut și descoperiri originale, ne oferă un rezumat intermediar, de etapă, demn de toată atenția și tragerea de învățăminte: "Neîndoielnic, realitatea socială va furniza întotdeauna personaje noi cui va ști să le vadă, iar descrierea sufletului omenesc nu va ajunge niciodată la capăt; rămîne totuși adevărat ca astăzi este mult mai greu să scrii un roman care să nu pară dubletul cine știe cărui model devenit clasic, sau o copie modernizată a acestuia, conform gustului vremelnic al unui moment, o imitație mascată mai mult sau mai puțin abil". De retinut că atare constatări nicidecum nu conțin un adevăr relativ conciliator, cu atît mai mult – unul în ultima instanță. Problema reluărilor, influențelor, contaminărilor, împrumuturilor, similitudinilor, reminescenților ș.a. rămîne deschisă. Opiniile se împart. Precum s-a discutat mii de ani, se va discuta mereu despre paternitate artistică și epigonism, despre simetria asemănărilor și asimetria diferențelor, despre variațiunile semantice și recunoștința contemporanilor față de cei de (înca) pînă la Homer. Și, ca regulă, între încuviințările și dezaprobările ce țin de subiectul dat, se înterpune fremătătoarea nostalgie după originar și original. În virtutea acestui alean,
oricare autor jinduiește și crede posibilă și pentru el o revelație nebănuită, ce ar pune în lumina lumii ceva care "le-a scapat" predecesorilor săi întru creație. Că doar spune Shakespeare, prin gura unui personaj de dramă: "Prietene Horațio, în lume sunt însă atîtea noutăți, ce nici înțelepților nu li s-au arătat".
Speranța, pe cît o poți avea, în revelație e nedespărțită de îndoială că, totuși, poate să-ți scape scînteia divină. Cu puțină autoironie, dar și stăpînit de aceeași irezistibilă nostalgie a originalului, pînă si Mark Twain nota cu pana înduioșată: "Ferice om a fost Adam. Cînd îi trecea ceva hazliu prin cap, el era convins că nu repetă bancuri straine". (Unii "repetă" epopei, romane, drame) în schimb, Montesquieu se credea, probabil, un Adam de peste milenii, caligrafiind apăsat, drept epigraf la lucrarea sa "Spiritul legilor", neduplicitară aserțiune a lui Ovidiu: "Prolem sine mater creatum" – "Prunc procreat fără mamă", prin această cugetătorul galic dorind să sublinieze că a elaborat o operă cu desăvîrșire autentică, fără să se inspire de aiurea. (Cititorul însă, de ce n-ar considera că orgoliosul autor n-a fost întru totul original barem din motivul că a folosit un epigraf de împrumut? Apoi, poți crede multe și toate bune despre tine, dar, ca și fără voia ta, lucrurile pot lua o întorsătură imprevizibilă, precum i se întîmplă și lui Julien Green care, onest, se văzu impus a recunoaște că: "Subiectul lui "Si j'etais vous" (1947), pe care credem că l-am inventat eu în 1920, fusese tratat de cel puțin cinci ori în diferite epoci.
Printre cei care nu acceptau reluările, influențele au fost și Nizami ("Nu spune cea ce deja a spus înțeleptul dinainte, fiindcă într-o perlă nu se poate face doua găuri. Așa cum în munca asta ești o călăuză, nu merge în urma celor ce ți-au fost înaintași"), Hegel care părea să sugereze ideea că ar scrie "neprihănit" ca și cum pînă la el nu a știut nimeni nimic și totul trebuie luat și transpus ab ovo, Andrei Tarkovski ("E necesar ca fiecare om să-și găsească propria experiență, iar artistul în special; experiența acumulată de altcineva, sugerată din exterior, nicicînd nu a dat mari realizări. Pentru a fi sincer și a-și urma pînă în pînzele albe idealul, artistul trebuie să redescopere mereu bicicleta"), Henry Miller care, în pledoaria sa înverșunată pentru deplina emancipare artistică, spunea că, pînă la apariția romanului "Tropicul Cancerului", era un scriitor în derivă, supus influenților, împrumutînd "ab hoc et ab hac" (de ici și de colo): "Eram un literat, s-ar putea spune. Și am devenit un neliterat: am tăiat cordonul ombilical. Mi-am zis: voi face numai ceea ce sunt în stare să fac eu însumi, să mă exprim pe mine. Am hotărît să scriu din punctul de vedere al propriei mele experiențe. Și asta mi-a fost salvarea".
Anatole France ("Noi nu acordăm suficientă atenție faptului că un mare scriitor, chiar și foarte distinct prin personalitatea sa, împrumută mai mult decît compune el insuși. Să fim rezonabili și să recunoaștem că operele noastre nu ne aparțin în exclusivitate doar nouă"), Paul Valery, Albert Camus ("Tentația cea mai periculoasă e să nu semeni cu nimeni"), Heidegger care susținea că nici un filosof nu este original, deoarece el se apropie de esența lucrurilor, demers întreprins deja de multi alții, Delille, acesta afirmînd în cheie paradoxală că: "Niciodată Vergiliu nu este mai original decît atunci cînd imită pe alții". De fapt, în cazul anticilor nu e nimic deosebit în recoltarea polenurilor și mirtului din una și aceeași grădină sau din mai multe odată: elinii, apoi latinii, prelucrau incontinuu teme invariabile, motive cu stagiu îndelungat, folosind sisteme "verificate" de metafore, imagini, rîvnind doar noi și autentice îmbinări argasite de cuvinte și nuanțe stilistice. Poate de aici și îbelșugatii faguri de proverbe și cuvinte zise înaripate pe care ni le-au lăsat. În ce privește metaforele, imaginile trecute pe sub multe stiluri (stil – condei de metal sau de os cu care, în antichitate, se scria pe tăblițele de ceară), evident că străvechii n-ar fi putut să se exprime cu duritate și s-ar fi supărat s-o remarce la alții, precum ar fi și ușor-veninoasa înțepătură din următoarea afirmație a lui Henrich Heine: "Primul ins care a comparat femeia cu o floare a fost un mare poet, cel care a făcut-o mai apoi nu era decît un tîmpit ordinar". În genere, autorii din timpurile mai noi au destul metal în voce, asemeni unor procurori de neînduplecat. La ce i-a folosit lui Jules Renard să lase în urma sa acest postulat: "Ar trebui interzis cu amendă și închisoare oricărui autor modern să împrumute o comparație din mitologie și să vorbească despre harfă, liră, muze, lebede. Mai treacă-meargă despre berze…"? Dacă s-ar fi respectat prescripțiile lui Renard (amendă, închisoare), să ne imaginăm ce l-ar fi putut aștepta pe celebrul La Rochefoucauld căruia, cu mizantropica iscodire, Maurvert i-a descoperit drept neautentice 3/5 din maxime (300 din 504)!
În virtutea faptului că arta nu înseamnă obligatoriu noutate absolută, ci schimb adecvat de viziuni asupra lumii și cosmosului, printre primii autori care acceptaseră contaminările fecunde fusese și Platon, exprimîndu-se nu chiar într-atît de paradoxal precum s-ar părea la prima impresie: "Esența asemănărilor e deosebirea". Dovadă a acestei generoase toleranțe e că însuși marele filosof a fost implicat în opere străine: chiar "Cartea lui Iov" nu e decît o netăinuită imitație a dialogurilor platoniciene. Peste secole, Platon în persoana lui Tolstoi ("De ce să gandești asupra a ceea ce a fost gîndit? Ia de-a gata și mergi înainte. În această constă forța omenirii."), Delacroix ("Geniul nu se afirmă prin noutatea ideilor, ci prin ideea fixă că ce s-a spus nu s-a spus încă destul".), Malraux ("Geniul trăiește din ceea ce anexeaza, nu din ceea ce întîlnește".); iar Marcel Raymond vorbea despre inevitabilitatea ocolirii unor imagini și metafore demult înscrise în catastifele stării civile a literaturii lumii.
Printre oamenii de litere există specimente de-a dreptul uluitoare prin generozitatea lor, aceștia nu că sfătuind pe cineva de unde și ce să ia, ci dăruindu-le ceea ce au și de care nu se vor folosi personal. E cunoscut cazul cu subiectul "Sufletelor moarte" pe care Pușkin i l-a oferit lui Gogol. Axel Munthe (ca și Cehov, slujitor al mărinimosului Hipocrate) spunea că, de ar fi precum remarcase un critic, că romanul său "Cartea de la San Michele" să poată asigura cu subiecte pe mai mulți autori de proze romantice, ei, dușii în ispita, nu au decît să se folosească de întregul material cît le poftește sufletul și-i servește talentul. O reacție contrară o avu Runghe Lardner (de altfel, ca și Munthe, autor de un nivel destul de obișnuit) care, își amintea Francis Scott Fitzgerald, privea neputincios și înrăit la imițătorii săi care "nu-i furase doar cămașa de pe corp; probabil, doar Hemingway a fost supus atît de metodic furțișagurilor". Asociația cu cămașa de pe corp (nu presupunem aici nici o… influență) avu precedent. Imitatorii poetului chinez Li Khani (812-858) șterpeleau din opera maestrului pasaje întregi. Odată, la un spectacol jucat la curtea imperială, apăru un actor, interpretînd rolul renumitului Li Khani. Vesmintele sale erau numai zdrențe. Adresîndu-se publicului, printre care erau și unii din "strîngătorii de bir" literar, personajul spuse: "Privește, onorată asistență, în ce hal m-au penit barzii de curte". Peste mai bine de un mileniu, Julien Green se întreba cu retorică nedumerire: "Cum pot oare niște scriitori să se jefuiască între ei cu atîta bună-știință, cu o ușurință nemaipomenită?", specificînd că, în "Caietele" lui Andrй Gide, împrumuturile din Oscar Wilde sunt frecvente, în special cele din "Portretul lui Dorian Gray", unde faptul este flagrant. "Dar de la cine n-a împrumutat? Omul rămîne ciudat. Uneori mă exaspera și nu ziceam nimic. Poate voi spune asta într-o zi", conchidea cu amărăciune Green. Dar nu este exclus că, în anumite cazuri, Green să fi cazut de acord cu Syrus-eruditul care, acum 2 mii de ani, postula că "Honesta quaedam scelera successus" – "Reușita face ca unele nelegiuiri să fie onorabile". Pentru că, trebuie să se recunoască fără prejudecăți, unele reluări și reinterpretări ale vechilor-străvechilor subiecte sau ale altora, relativ recente, s-au soldat cu reușite incontestabile.
Lucru indubitabil: printre hotomanii literari sunt și destui grafomani și plagiatori bicișnici, întorlocați de Horațiu într-o "servum pecus" – "turma slugarnică". Parafrazările de suprafața sau nici barem atît, la care recurg scribii obscuri în prepararea macaronajului lor confuz rămîn fatalmente la nivelul contrafacerilor artizanale. Pentru a nu le acorda prea multă atenție, fiindcă nu au cum o merită, să-i lăsăm sub inscripția potrivită a unui epitaf de pe o piatră de jalnic mormînt, extrasă din "Cugetările critice" ale lui Jean-Baptiste Du Bos: "Cei ce fac poezii din carpeli, cei mai disprețuiți dintre toți făcătorii de versuri". De ce n-am alătura noțiunii de poezie și pe cele de roman, nuvela, drama etc.?
Oricum, problema denigratoarei decretări a cuiva drept plagiator nu e din cele simple. Precum Honore de Balzac transpusese cu exactitate în romanul său descrierea caracterului feminin după articole de ziar, Herman Melville ia dintr-un tratat despre balene capitole întregi, transcriindu-le, "stricte sic dictus" – "cuvînt cu cuvînt" în "Moby Dick", însă nu se încumeta nimeni să-l introducă în catastiful plagiatorilor. De altfel, nici pe Victor Hugo care, în opinia lui Alfred de Vigny, "ia de peste tot și nu se gîndește decît la formă". Cred că lor li se potrivește spusă lui Anatole France despre scriitorii mari "care nu sunt acei care nu au plagiat, ci acei care nu pot fi plagiați". Mai cunoașteți un al doilea Melville care, preluînd fără ghilimele, să convertească ideile originalului în ample volute contextuale, scoțîndu-le din matricea raționamentelor academice și dîndu-le un suflu vital și o viziune artistică de neîntîlnit în altă parte? Nu tratatul despre balene, ci proza lui Melville a trezit apetitul unor "imitatoare servum pecus" care, după Andrй Gide, nu vor imita "partea cea mai desăvîrșită a operei, ci defectele ei, ca în natură, unde proliferează parazitar în partea umbrită, nu la soare ,(ei reiau) ceea ce e imperfect pentru că spera să-l ducă mai departe".
Printre scriitorii valoroși sau doar buni, au fost și din cei care au dat franc pe fata filiatia operei lor din "caiere" străine. Goethe recunoaște în Shakespeare un furnizor de metafore rare. Și nu numai atît. Autorul lui "Faust" face o mărturisire transanta: "Ce sunt eu? Ce am facut eu? Cărțile mele sunt alimentate de mii și mii de indivizi, toți mi-au oferit gîndurile lor, calitățile, speranțele și felul lor de a trăi; de multe ori eu am cules roada de pe ariile semănate de alții, munca mea e munca unei ființe colective care poartă numele de Goethe". Pînă la el, Dante se adresa lui Vergiliu cu: "Tu duca, tu signore e tu maestro" – "Tu călăuză, stăpîn și maestru (al meu)". Pușkin nu ascundea că "Șalul negru" are la origine un cîntec din folclorul românesc. Michel Foucault declară, pentru ca să știe și maestrul său: "Această carte ("Cuvinte și lucruri", 1966) s-a născut dintr-un text al lui Borges". La intrebarea unui corespondent referitor la influențele pe care le-a suportat, Durell mărturisi instantaneu: "Știți, nu mă prea împac cu termenul influență, pentru că ceea ce admir – copiez. Șterpelesc nu citesc numai de plăcere, citesc ca un salahor, și cînd dau de un lucru de efect, îl studiez și încerc să-l reproduc. Așa că sunt, probabil, cel mai mare hoț imaginabil. Șterpelesc efecte și învăț meseria". Dar, ca model de modestie dezarmantă, exagerată conștient tocmai din marele respect pentru predecesori, rămîne a fi pioasa spovedanie pe care ne-a lăsat-o blajinul Montaigne: "Judecat să fiu pe baza lucrurilor împrumutate de la alții, văzîndu-se dacă am fost în stare să aleg ceea ce depășește valoarea expunerii mele. Deoarece eu preiau de la alții ceea ce nu sunt în stare să exprim la fel de bine din cauza insuficienței îndemînări a limbajului meu sau din motivul slabei mele rațiuni. Nu țin contul împrumuturilor, ci doar le selectez și le utilizez…"
Fără inutile dezvinovățiri, cu onestitate, chinezul Hao Sha își informează cititorii că povestirea "Pisicuța" a fost scrisă după un model de F.D. Beresford: "Oricît m-am căznit, nu am putut găsi procedee originale, așa ca materialul povestirii îmi aparține, iar conceptul e al unui alt autor", conchidea naratorul. Precum îi sta bine unui francez față de altul și ambilor față de Franța, Georges Perec îi recunoaște Umbrei lui Flaubert că, din "Educația sentimentală", "am luat anumite elemente în întregime organizate: călătoria pe vas, demonstrația de stradă, vînzarea la licitație. În sfîrșit, fraze recopiate , retranscrise, pur și simplu". Astfel că, după atare efuziuni de spovedanie bonoma, numaidecat s-ar cere să intervină, ca element distonant, părerea lui Fielding conform căreia: "A împrumuta din clasici chiar fără a recunoaște este absolut legitim".
În perpetua dihotomie "se poate, nu se poate relua, împrumuta?" s-au întîmplat și lucruri destul de curioase, precum cele din anumite legende controversate. Diogene Laertius afirma că Platon achiziționa operele lui Pitagora pentru a le da drept ale sale. Altcineva îl acuza și mai dur pe cel care intenționa să expulzeze poeții din cetate: cica, autorul "Apologiei lui Socrate" avea de gînd să ardă toate scrisorile lui Democrit, pentru că nimeni nicicînd să nu afle de unde s-a inspirat. La rîndul său, Platon se arată nemulțumit de nerecunoscătorul său discipol Aristotel, despre care spunea, adînc deprimat: "Mi-a dat cu piciorul întocmai ca mînzul care dă cu piciorul în mama care l-a născut". (Ah, iubite dascăle Aristotel, oare să nu fi cunoscut dumneata ceva din hindusa "Lege a lui Manu", în care se profetizează că ucenicul care își vorbește de rău maestrul, după moarte se va preface în măgar, dacă îl calomniază – în cîine; de se folosește de foarfecele maestrului fără învoirea acestuia, îl urmărește minuscula reîntrupare în insectă, iar de-l invidiază – vierme va ajunge? (în ce privește patrupedul cu urechile mari, el nu e de condamnat, dacă e, să zicem, "Măgarul de aur" al lui Apuleius, la baza căruia stă legenda ocultă a zeului Tartac, reprezentat, precum se știe, cu o carte în mînă. Adevarata carte e în stare să-l scutească de păcate pe oricine, mai ales dacă acesta e Aristotel, Cărturarul cărturarilor.) (Evident, parantetica remarcă nu-l privește pe celebrul Aristotel, dascăl al excepționalului Alexandru Macedon. Nu o singură dată, i-au facut-o și lui boacăna destui insi care, dorind să fie considerați cu orice preț filozofi, inventau fel de fel de scamatorii aberante, dîndu-le drept idei de-ale lui Aristotel.)
Din exces de zel, anumiți exegeți pripiți caută asemănări acolo unde bietul autor nici că se gîndește. De pildă, unii susțin că Dinno Buzzati e scriitorul puținelor lecturi, adică – un subnutrit din punct de vedere intelectual; alții, din contra, zic că el s-ar fi inspirat din Kafka, Gogol, Kipling, Maeterlink, Chamisso, Hoffman, Hamsun, Mann ș.a. Obsesiv asemănat cu Proust, Italo Svevo, mărturisea că l-a citit pe acest autor francez abia după ce afla că e comparat cu el. De ce nu l-am crede?
Pasul marelui prozator italian l-ar fi înțeles fără suspiciune și reticență Mihai Eminescu, care explicase coincidențele în felul următor: "În fiece organism sunt potentie coardele omenirii întregi… Este același om care trăiește în toți – și naturi inferioare cred cum că s-au plagiat unii pe altii, pe cînd poate nici nu s-au citit". Din acest unghi de întelegere și apreciere, nu pare ceva deosebit nici faptul că deznodămîntul poemului eminescian "Călin" (file din poveste) e uluitor de asemănător cu cel al dramei hinduse "Sakuntala", capodoperă a poetului Kalidasa (sec. V î.Hr.), amintindu-ne și de alte influențe-tangente ale antichității vedice asupra operei genialului nostru poet, unele din ele relevate-descifrate de poemul de referință "Kamadeva", zeul "de la Gangele măreț".
Însă cei care i-au citit pe alții nu înseamnă să fi renunțat la teme și subiecte, mizînd doar pe forța și originalitatea proprie. Pentru că un subiect e ca și un vas, despre care nu pare a fi atît picant, cît instructiv să amintim că – o observaseră încă cei de la începutul civilizațiilor – poate fi reumplut de mai multe ori și cu esențe diferite: vin, apă, boabe, fructe. Iar în cazul în care aluzia ne orientează spre literatura, situația e și mai interesantă, dacă ne referim la operele care ar întruni, parcă, elemente eterogene, dar care, supuse fiind colaționării, formează un tot intreg. Înțeleptul antic spunea ca poate umplea un vas de trei ori la rînd, fără să-l golească barem o singură dată, demonstrînd o atare posibilitate în felul următor: întîi puse într-un ciubar pietre, apoi nisip ce se prefiră printre pietre, pentru ca, la urmă, să toarne apă, confirmînd cu brio adevărul parabolei. Și tocmai din considerentul că un subiect, o temă ar fi asemănătoare unor vase, autorii inspirați din ceea ce i-a inspirat și pe alții nu se jenează nici chiar în fața olimpianului magistru Johan Wolfgang Goethe: ca personaj și motiv de narațiune, Faustul goethean a fost "mobilizat" înca de vreo 72 de ori de către alți autori! Statistica o făcuse, ceva mai demult, Kune Fischer, migălosul neamț neștiind că, după cei 72 de post-goethiști, se vor încumeta, și nu fără succes, să reia tema un Thomas Mann ("Doctorul Faustus") sau un Paul Valery ("Mon Faustus"). Unde mai punem că, începînd cu anul 1590, pînă la Goethe, fuseseră ticluite înca 41 de opere cu subiect faustic.
În tratarea temei care e numită a reluărilor, influențelor, contaminărilor etc. ar părea oarecum nedreptățită și greu de răscumpărat lipsa de atenție, dacă ar fi să trecem marțial de indiferenți pe lîngă literatura noastră, care ne oferă și ea destule exemple similare, mai vechi și mai noi. Pornind ex abrupto constatăm că, din reluările mai recente, în poezie ca element bătător la ochi este imaginea cu "peisajele sufletului" care a prezentat, mai întîi, o tresărire emotivă revelatoare, apoi, prin uzura abuzivă, devalorizîndu-se iremediabil. Fără a căuta să identificăm maternitatea de facto a acestei foste cîndva bijuterii apolinice, avurăm surpriza de a constata că în literatura lumii există deja o întreagă maternitate de "peisaje sufletești": "Sufletul nostru – ales peisaj care nu cunoaște calea de mijloc" (Giuseppe di Lampedusa in "Ghepardul"); "Votre ame est une paysage choisi" (Paul Valery în "Clair de lune"); de la spaniolul Huan Ramon Himenes care spunea și el, pur și simplu, "peisajul sufletului", compatriotul său Banchis deviază nițel spre o nuanță concretă: "los cosas que me son jardin del alma" ("toate cîte sunt grădinile sufletului"); în "Jurnalul" lui Pavese, la 1940, citim: "Cu cît sufletul este absorbit de o preocupare dominantă, cu atît peisajul interior se îmbogățește și se diversifică"; pînă și exegetul în hermeneutica literară Hans Robert Jauss nu rezistă ispitei de a opera cu gașelnița unui poet de foarte, foarte demult, referindu-se la "obiecte stăpîne, ca realități, înstrăinate, peste peisajul sufletesc"; un alt teoretician al literaturii, J. Meyerson, închide cercul, constatînd că: "Ceea ce simbolizează ea (imaginea artistică) suntem noi înșine, lumea noastră interioară și cea exterioară. Aceste peisaje sunt peisajele sufletului".
O altă metaforă care a facut carieră la noi, de la varianta ei cu toiagul ce înverzește în palma bătrînului, la cea a înverzirii tocurilor ferestrelor (de prea multă ploaie), pînă la cea cu corabia ce înverzea, vine, de fapt, de la prea îndepărtata noastră rudă pe linia ginții latine Dante Allighieri care, nu e sigur dacă el primul a scris: "e come albero in nave si levo" – "și cum se redeșteaptă arborele în navă (corabie)". La Paul Celan, "o luntre înmugurește în ploaie", iar la Simion Stolnicu, "înșirînd omagii de-ntuneric (…) / re-nfrunzesc stranele stravechi de monarhi".
O alta zicere din belcanto-ul liricii basarabene – "a plînge în limba ta" – se înrudește cu "Das Kuste mich auf deutsch und aprach auf deutsch" – "El mă sărută în germană și-mi vorbea în germană". De altfel cel mai atent cititor-identificator de influențe, reminescente sau chiar pastise, unele din ele – flagrante, este criticul Eugen Lungu care, nu o singură dată, se văzu vizat neprietenește de nemultumiții autori ce o țineau una și bună: că dînșii sunt autentici și nu outsideri. E drept că exegetul nu le-a purtat pică, făcînd abstracție de pastisele sau influențele (nu păcatele) tinereții lor, unora din respectivii autori, incluzîndu-i generos, necarcotaș, în selecția (prea relativist subintitulată, totuși, antologie) "Portret de grup", găsindu-le autentice sau, uneori, doar presupune afinitați 8-zeciste (de fapt, destul de forțat zise 8-zeciste, selecția înserînd și autori 7-9-zeciști). Lucru de înțeles, dacă reamintim de acea inevitabilitate în ocolirea unor imagini și metafore demult depozitate în catastifele stării civile ale poeziei euro-universale, de care vorbea Marcel Raymond în faimoasa sa lucrare "De la Baudelaire la suprarealism".
Cînd vreun poet chișinăuean spune că lacrima e mai mare decît ochiul, mai întîi îmi amintesc de "Un nor mai mare decît lumea,/ Și un monstru făcut din ochi" a lui Chesterton și, de Mihai Ursache cel care vorbea de "fructul ce dă peste coajă". A spînzura, în poezia basarabeană, cronicarii de limbă e ceva mai puțin spus decît la Eugen Jebeleanu: "Să spînzurăm poeții de arfele din limbă." Reușitul titlu de carte "Altoi pe o tulpină vorbitoare" are afinități cu versul lui Lucian Blaga "altoită pe ființa mea imensa lume".
În fiecare caz aparte, depinde dacă autorii noștri au reușit să aprofundeze raporturile dintre ideile lor și cele reluate. Deoarece, dacă ne referim deseori și cu deplin temei la Mihai Eminescu, să ne amintim și de această dată că și el a avut contaminări benefice: "Luceafărul" întreține o reverberație de ecou cu romanul lui Hцlderlin "Hyperion"; sonetul "Satul de lucru" e o imagine românească în oglindă a "Sonetului XXVII" de Shakespeare; "Mai au un singur dor" depășește ca emoție și trăire dramatică poezia lui Karl Ubermann care i-a servit de sorginte; "Somnoroase păsărele", prin filiera lui Emanuel Geibel, se trage ca motiv din Fr. Rьckert; "Speranța", una din poeziile scrise de Eminescu în adolescență, la 16 ani, e o variantă după "Hoffnung" de Schiller. Alte influențe care au dus la originalitate eminesciană găsim în creația lui Chamisso, Heine, Lenau. Memorabilul adagiu despre părul lung și mintea scurtă e o extragere din glacialitatea raționalistă și investire cu vibrant suflu emotiv a unui gînd al lui Schopenhauer. George Călinescu scria că: "Vom fi oricînd în stare să arătăm cu ce alte gînduri seamănă cugetarea lui Eminescu", una din remarcile sale analitice fiind și aceasta: "Visul sultanului din "Scrisoarea III"… s-a descoperit a fi versificația unui pasaj din "Istoria otomană" a lui Hammer… Cînd ideea este luată dintr-o lucrare neliterară, cum ar fi opera istorică, atunci putem vorbi mai degrabă de material. Cînd ideea este însă împrumutată din altă operă literară, atunci avem mai degrabă de-a face cu o influență". În "Mureșan" de Eminescu găsim și material și influență. "Materialicește, ideea centrală este schopenhaueriană, literalicește ea este goetheană…"
Cu toate astea, Mihai Eminescu a rămas o culme a literaturii, orideunde culegînd motive, idei, reușind în mod suprem să le amplifice în cuprindere și profunzime, pînă la generalizări filozofice și afective personale, ajungînd la noi consecințe și viziuni, care doar vag de tot pot aminti de primul lor impuls. Cînd Călinescu spune că "Veneția" lui Eminescu "e aproape o traducere după un sonet al unui obscur poet austriac, Kaetano Kerri", avem un motiv în plus de a accentua că reprezentarea, în cazul marilor autori, este incompatibilă cu reluarea mecanicistă, oferindu-ne o transfigurare a ideilor, prin completări sau lichidări de detalii, acestea din urma neputînd aparține decît trecutului, iar primele – investite cu o perenă pondere estetică, aparținînd prezentului etern. Prin excelență, și Eminescu a oferit o sumă de argumente că literatura, arta în general, este o prezență în vesnica și plurala metamorfozare, confirmînd a nenumărata oară adevărul rostit de James Russel Lowel: "Vechi de e gîndul, e pînă la urmă al celui ce poate mai bine să-l spună".
Citate:
A fura idei de la cineva, este plagiat. A le fura de la mai mulți, este cercetare.
Dacă împrumutați de la contemporani, sunteți învinuit de plagiat, dacă de la antici – sunteți lăudat pentru erudiție.
Stilul individual – este un plagiat în raport cu tine însuți.
1.3. Imitație și emulație
Imitația se bazează pe ideea, în fond banală, că procedee similare au efecte similare; emulația este mai sofisticată, ea constînd în inventarea de procedee insolite pentru a obține efecte cunoscute si dorite.
Rivalitatea amoroasă și competitivitatea tehnologică se aseamănă prin gama de mijloace și strategii utilizate. Ofensiva economică a Japoniei după al doilea război mondial s-a bazat îndeosebi pe tehnicile imitației. Firmele japoneze au studiat produsele create în Europa Occidentală și Statele Unite, au reconstituit principiul lor de funcționare și le-au recreat în variante mai ieftine si mai bine adecvate la cerințele utilizatorilor. Compania Philips a inventat discul compact, dar Sony l-a răspîndit în lume. Într-o lume de copii, Xerox este originalul, dar pe aproape fiecare birou se află un foto-copiator Cannon. Imitația japoneză nu este pur mimetism, deoarece propune deseori soluții mai comode, dar nici de emulație nu ține, pentru că rivalizează cu concurenta folosind înseși metodele ei.
Occidentalii, cînd nu inovează, emulează. Dezvoltarea industriei informatice oferă exemple impresionante care dovedesc că deseori emulația este mai profitabilă decît inovația. Conceptul de calculator personal, care comunică prietenos și sugesiv cu utilizatorul a fost realizat de compania Apple în 1985, prin lansarea compactului și elegantului Macintosh. Sistemul de operare al acestui calculator a fost conceput pornind de la cîteva idei ingenioase. În primul rînd, s-a considerat că o interfață grafică este mai potrivită, utilizatorul preferînd să dea comenzi și să activeze programe selectînd imagini (icons), decît scriind mesaje la consolă. În al doilea rînd, repertoriul imaginilor și modul lor de articulare se baza pe activitatea de birou familiară oricui, care constă în gestionarea informației. Ecranul calculatorului devenea analogul mesei de lucru pe care se suprapun parțial diverse documente deschise în procesul de lucru. Acestea se copiază, se îndosariază, se clasează, se șterg, fiecare dintre aceste operații manuale avînd echivalentul ei electronic.
În acest timp, compania Microsoft, aflată în formare, prefera sistemul de operare MS-DOS, care consta în schimburi de mesaje cu calculatorul, activitatea utilizatorului fiind marcată de habitudinile lecturii, dar si de ariditatea ei. Bill Gates, fondatorul lui Microsoft, și-a propus să-l concureze pe Steve Jobs, creatorul lui Macintosh, în același mod în care Danielle Darrieux a încercat să-și învingă rivala japoneză: nu prin creație, nici prin imitație, ci prin emulație. Sistemul de operare Windows, dezvoltat de Microsoft se comportă întocmai ca sistemul Macintosh, oferă aceleași facilități pentru utilizator si prezintă aceeași interfață grafică agreabilă. Aceasta nu înseamnă însă nicidecum că el ar fi un plagiat, o imitație, deoarece concepția tehnică, principiul de funcționare si modalitățile de elaborare sunt complet diferite. O muncă de creație independentă este pusă în slujba unui obiectiv definit de către altul. O cale nouă este croită pentru a ajunge în același loc, noi mijloace sunt inventate pentru a atinge un același scop. Dacă lucrurile s-ar opri aici, cel sosit mai tîrziu ar rămîne mereu rivalul de mîna a doua, gîfîind să-l ajungă din urmă pe inițiator. Obiectivul tehnic odată atins prin emulație, urmează promovarea comercială prin circulație. Microsoft a stimulat dezvoltarea aplicațiilor bazate pe sistemul de operare Windows, între care pachetul de programe Microsoft Office a avut un asemenea succes, încît a antrenat după sine sistemul de operare însuși. De altfel aplicațiile birotice cunoscute sub numele de Microsoft Office sunt și ele în mare măsură rezultatul emulării: fișele de calcul Excel reconstituie prin alte mijloace performanțele mai vechiului pachet Lotus 1-2-3.
Bill Gates a reeditat rivalitatea prin emulație în înfruntarea cu Netscape, compania care administra primul instrument eficient de navigare pe world wide web, creat de Marc Andreesen. Microsoft a realizat prin mijloace proprii Internet Explorer, o alternativă la Netscape cu performanțe absolut similare, chiar dacă obținute pe căi diferite. De data aceasta, promovarea produsului odată realizat a fost mai agresivă. Profitînd de popularitatea sistemului Windows, a integrat acestuia browserul Explorer si a conditionat livrarea primului de achiziționarea celuilalt. Piața, care înghite orice, s-ar fi supus și de data aceasta, dar picătura suplimentară de emulație a vărsat paharul frustrației și guvernul a intervenit cu arma legislației, în numele reglementărilor anti-monopoliste. Înfrînt si umilit – cel putin deocamdată – Microsoft este amenințat cu dezmembrarea, soarta sa actuală ilustrînd la fel de bine ca o tragedie greacă mecanismul implacabil al hybris-ului.
Rivalitatea prin emulație pune o problemă de identitate. Cel care emulează reconstituie identitatea exterioară a celui emulat, crezînd că-și păstrează intactă originalitatea interioară. Delimitarea exterior / interior este însă mobilă, ambiguă și imprecisă. Reeditarea unor performanțe exterioare prin mijloace interioare proprii pune sub semnul întrebării însăși specificitatea mijloacelor folosite. Așa cum purtarea îndelungată a unei măști are efecte asupra interiorității, im-personarea poate deveni ușor preludiul de-personalizării, cu atît mai sigur cu cît este mai reușită. Caragiale intuiește perfect această situație în Triumful talentului, de aceea dă celor doi rivali nume similare pînă la confuzie: Ghiță Nitescu si Niță Ghitescu. Amîndoi tind spre același scop, ocuparea unui post de copist, dar folosesc mijloace diferite: ultimul se bazează pe talent, primul pe recomandări. Semnînd lucrările invers, astfel încît cel cu relații să se dovedească și cel mai talentat, ei dezechilibrează dintr-un impuls ludic starea unui sistem socio-profesional corupt, dar funcțional și stabil, producînd amețeală comisiei de concurs, care se încurcă fatal în evaluări.
II. RECUNOAȘTEREA MUZICII
2.1. Evoluția calculatoarelor spre multimedia
John von Neumann este considerat creatorul arhitecturii calculatoarelor așa cum o cunoaștem astăzi. Neumann a ajuns la calculatoare din dorința de a rezolva probleme de fizica fluidelor. Multe ecuații diferențiale nu admit soluții analitice (adică sub forma unei formule), ci pot fi rezolvate doar aproximativ, numeric. Cum calculatoarele cu care avea de a face erau extrem de nefiabile, von Neumann și-a suflecat mînecile și s-a apucat să le amelioreze, pentru a putea găsi soluțiile care-l interesau. El a propus o mulțime de concepte care și astăzi se regăsesc în arhitectura calculatoarelor, cum ar fi separarea funcționalității fizice și logice a circuitelor (adică construcția de porți logice din tuburi – mai tîrziu tranzistoare, și acum circuite integrate, care apoi pot fi mani1pulate independent de modul în care sunt construite, ca niște obiecte matematice ideale), și diviziunea calculatorului în unitate de procesare, unități de intrare-ieșire și memorie în care sunt stocate atît programele cît și datele prelucrate.
Dar, deși a anticipat și dat naștere multor idei seminale, povestea spune că von Neumann a fost foarte supărat pe un colaborator de-al său, care încerca să scrie un asamblor. Asamblorul e un program care ușurează munca programatorului, permițîndu-i să scrie programele într-un limbaj textual în loc de a folosi șiruri de zero și unu, în cod-mașină. Von Neumann spunea că timpul de calcul este irosit făcînd o activitate pe care o poate face foarte bine omul.
Astăzi afirmația lui von Neumann ni se pare absolut anacronică, dar acest lucru se întîmplă pentru că balanța între costul puterii de calcul și cel al muncii omenești s-a schimbat absolut dramatic; la ora de astăzi orice investiție care mută efortul omenesc pe seama unui calculator este productivă.
De-a lungul timpului tipurile de prelucrare făcute de calculatoare s-au diversificat enorm; creșterea capacității de stocare și prelucrare ne-a permis să trecem încetul cu încetul de la procesarea unor cantități infime de date la folosirea unor baze de date enorme, la folosirea interfețelor grafice sofisticate, la comunicații care înglobează tot mai mult imagine, sunet, film, culoare.
Dar dacă astăzi lumea strîmbă din nas la ideea folosirii unui browser în mod text (deși numai în urmă cu 10 ani gopher-ul era cea mai avansată tehnologie), evoluția în complexitatea informației procesată în mod curent de către calculator este departe de a fi încheiată. Chiar dacă astăzi o mulțime de site-uri de web au grafică spectaculoasă, și jocurile în spații tridimensionale sunt banalități, o mulțime de alte operații elementare sunt оncă foarte greu de făcut de către calculator. Chiar stocarea și transmisiunea informației video este extrem de primitivă, cele mai evoluate sisteme putînd transmite imagini de dimensiunea unui timbru ( este vorba de produse disponibile comercial, și nu de experimente în laborator).
În ceea ce privește imaginile și muzica, situația este ceva mai bună: știm să le stocăm, livrăm, reproducem și înregistrăm. Dacă este însă vorba de procesări mai complicate, suntem încă foarte neajutorați.
În textul de față voi investiga felul în care se poate manipula muzica digitală.
2.2. Înregistrarea muzicii
Dar înainte de a putea plonja în detaliile modului în care muzica poate fi indexată și căutată, va trebui să discutăm puțin despre cum se înregistrează muzica în mod digital.
Sunetul se propagă prin aer sub forma unei unde; această undă poate fi caracterizată prin amplitudinea ei în fiecare moment. Un sunet “pur”, fundamental, are amplitudinea descrisă de o sinusoidă. Frecvența sinusoidei (inversul perioadei) se numește “frecvența sunetului”, și se măsoară în hertzi, Hz.
Cînd mai multe surse emit sunete simultan, undele lor se suprapun (se adună) și auzim sunetul rezultant. Dintre sunetele instrumentelor muzicale, cel mai apropiat de un sunet pur este cel al flautului. Toate instrumentele emit de fapt o mixtură de sunete, dintre care unul este preponderent; de aceea nota “la” cîntată la pian sună altfel decоt nota “la” cîntată la vioară, deși ambele au aceeași frecvență (stabilită la 440hz). În natură nu există surse de sunete pure, dar ele pot fi generate electronic, folosind oscilatoare.
Chiar dacă putem genera sunete pure, urechea omenească nu le poate auzi: chiar organele de simț din ureche vibrează ele însele și intră în rezonanță cu alte frecvențe decît cele prezente în sunetul ambiant (generează ceea ce se numesc “armonici auriculare”). Pe lоngă faptul că generează sunete inexistente, urechea omenească este inegal de sensibilă la frecvențe diferite; aparatul auditiv poate percepe sunete între 16hz și 24khz, fiind cel mai sensibil în jurul frecvenței de 4khz (sensibil însemnînd că poate auzi semnalele cu energia cea mai mică). De asemenea, sensibilitatea scade cu vîrsta.
Toate aceste slăbiciuni ale aparatului auditiv uman sunt exploatate de metodele de înregistrare digitală. Toate aceste metode filtrează sunetul în așa fel încît să înregistreze doar o bandă îngustă de frecvențe.
Putem distinge două clase mari de metode de stocare a muzicii sub formă digitală: înregistrările și descrierile simbolice. Ne vom ocupa pe scurt de fiecare dintre ele.
2.2.1. Înregistrări digitale
Înregistrările digitale sunt echivalente cu tehnicile de înregistrare analogică patentate de Edison în urmă cu 127 de ani: captează un semnal din aer, îl prelucrează, codifică și stochează. Spre deosebire de patefon, tehnicile digitale descriu semnalul prin secvențe de cifre și nu prin procese fizice (de exemplu, patefonul descrie semnalul prin forma șanțurilor de pe disc).
Eșantionare și cuantizare
Pentru a putea transforma o mărime continuă într-o serie de numere trebuie să facem două operații distincte: să o eșantionăm și să o cuantizăm.
Semnalele înregistrate sunt funcții continue de timp (a). Semnalul este întîi eșantionat, măsurînd valoarea lui într-un număr finit de puncte, de regulă echidistante (b). Apoi valorile eșantioanelor sunt codificate cu un număr finit de biți în procesul de cuantizare (c). În aceastг figură cuantizarea s-a făcut cu 3 biți, care pot distinge opt valori diferite ale amplitudinii (unele pozitive, unele negative.)
Eșantionarea măsoară semnalul audio din timp în timp, de obicei cu o perioadă fixă. Teorema lui Nyquist arată că dacă vrem să înregistrăm un semnal ale cărui frecvențe componente sunt sub X hz, e suficienă să eșantionăm semnalul cu frecvența 2X hz. Compact-disc-urile de pildă eșantionează sunetul la 44.1 khz, ceea ce este dublul lui 22.05khz, care este o limită mult înafara auzului celor mai multe persoane (dacă nu a tuturor). Teorema lui Nyquist arată că din aceste eșantioane, în număr finit, se poate reconstitui complet, fără nici un fel de pierderi, forma semnalului original, continuu! Figura 1 ilustrează aceste procedee.
Astfel am elucidat problema transformгrii unui semnal continuu într-o secvență finită de valori discrete. Dar fiecare din aceste valori poate fi exprimată printr-un număr real, care ar putea avea nevoie de o precizie infinită pentru a fi exprimat. Sistemele de înregistrare digitală aproximează valorile posibile ale amplitudinii printr-un număr finit; acesta este procesul de cuantizare. Intervalul între amplitudinea zero și o amplitudine maximă posibilă este оmpărțit în segmente (de obicei egale). Numărul de segmente este apoi codificat printr-un număr de biți. De exemplu, compact disc-urile folosesc 16 biți de precizie pentru a descrie o valoare a amplitudinii; asta înseamnă că pot distinge 216 = 65536 de nivele diferite de amplitudine, suficient de fine pentru a păcăli urechea umană.
PCM și CD-urile
Dacă înregistrăm valoarea fiecărui eșantion în ordinea în care apar am înregistrat efectiv sunetul. Acest gen de descriere a unui semnal se numește “modulare cu pulsuri”, Pulse Code Modulation, prescurtat PCM.
Compact-disc-urile stochează informația necomprimată; dimpotrivă, pentru a preveni erorile care pot apărea din cauza zgîrieturilor, expandează informația și o codifică în mod redundant: dacă unii biți dispar, ei pot fi reconstituiți în măsura în care stricăciunile nu sunt prea mari.
Un CD înregistrat stereo are deci două canale care conțin 44100 de valori de 16 biți pentru fiecare secundă de muzică; asta înseamnă o rată de transfer a informației de 2*44100*16 = 1.411Mbps (megabiți pe secundă). Aceasta este viteza cu care informația iese din CD-player-ul calculatorului dumneavoastră; în interior rata este chiar mai mare, din cauza codificării redundante. Un compact disc poate stoca aproximativ 70 de minute de muzică, avînd deci o capacitate de 70*60*1.411 / 8 = 740 MB (megaocteți). Pe un hard-disc de 20 de gigaocteți putem deci stoca aproximativ 25 de CD-uri.
Tipul standard de fișier de sunet în Microsoft Windows este cel cu extensia .wav, care codifică de obicei informația tot оn formă PCM. De asemenea, PCM este metoda folosită pentru codificarea vocii în telefonia digitală și ISDN.
Compresie digitală
Prin eșantionare și cuantizare putem stoca informațiile din orice semnal continuu (în anumite limite de frecvență). Adesea însă informația din acest semnal este foarte amplă și redundantă. Depinzînd de mediul de stocare și transmisie putem dori să reducem informația sau nu.
Mai multe scheme din ce în ce mai sofisticate au fost dezvoltate pentru a comprima muzica. Putem distinge două mari categorii de metode de compresie: compresie cu pierderi și compresie fără pierderi. Compresia fără pierderi poate oricînd reconstitui identic semnalul original; cea cu pierderi decide să arunce la gunoi informațiile “neimportante”.
Compresie fără pierderi
Un program care comprimă un semnal audio se numește codec, de la codor-decodor. Fiecare firmă mare din telecomunicații, industria electronică a echipamentelor audio și din software a dezvoltat propriile codec-uri; cele mai multe dintre acestea sunt secrete bine păzite.
În general, nu putem comprima decît puțin muzica dacă insistăm să nu avem pierderi (lossless), dar pentru aplicații specifice compresia fără pierderi este acceptabilă ca performanță (măsurată prin resurse de calcul consumate pentru a obține o anumită calitate a sunetului). De exemplu, vocea umană are un spectru relativ îngust, și variațiile de intensitate și frecvență nu sunt foarte mari în timp scurt.
Metode eficace de compresie sunt compresia diferențială (DPCM) și compresia adaptivă diferențială (ADPCM). Compresia diferențială, în loc de a codifica fiecare eșantion separat, codifică diferența dintre douг eșantioane succesive; dacă semnalul nu poate varia foarte repede, această diferență va fi întotdeauna mică, și deci va putea fi transmisă cu mai puțini biți (folosind de exemplu un cod Huffmann).
Compresia adaptivă merge chiar mai departe: folosește un model predictiv al semnalului, și calculează în fiecare clipă care este cea mai probabilă valoare a semnalului. Apoi stochează diferența între semnalul real și valoarea prezisă. Dacă predictorul este foarte bun, diferența va fi adesea minusculă. Predictorii înșiși sunt adesea adaptivi, învățînd o serie de coeficienți de predicție în timp ce fac prezicerea (adică învață din propriile erori). Același predictor este folosit atît la sursă cît și la destinație.
Compresie cu pierderi
Compresia fără pierderi poate cel mult obține reduceri de 2-3 ori a cantității de informație din semnal. De aceea cele mai folosite la ora actuală pe scară sunt compresiile cu pierderi (lossy). Cele mai eficace scheme de compresie cu pierderi se bazează pe sensibilitatea urechii umane pentru a deduce ce părți din semnal pot fi aruncate, și de aceea se numesc compresii perceptuale.
De pildă, dacă auzim un sunet foarte puternic, alte sunete slabe din imediata vecinătate temporală sunt acoperite (cîteva milisecunde). Dacă le eliminăm pe acestea din semnal putem transporta mai puțină informație. Sunetele puternice acoperă vecinii lor apropiați atît în timp cît și în frecvență; asta înseamnă că un sunet puternic va împiedica percepția altor sunete de frecvențe apropiate sau care se aud în imediata vecinătate.
Pentru a descoperi părțile nesemnificative, codec-urile perceptuale adesea fac o analiză spectrală a sunetului, extrăgînd frecvențele componente. Apoi calculează cîtă energie sonoră este în fiecare frecvență, și cele care sunt sub pragurile audibile, sau care sunt acoperite de alte frecvențe care se aud mai tare, sunt eliminate din semnal.
Alte trucuri deștepte sunt folosite pentru a reduce informația cînd înregistrăm canale stereo, sau chiar sound surround (cinci canale): de exemplu se înregistrează doar un canal și diferența de la acesta la celălalt, care tinde să fie mică, și se folosesc canale cu bandă de frecvență redusă pentru bași (subwoofers).
Printre cele mai importante formate de compresie cu pierderi sunt:
Dolby Digital numit și AC-3, care este folosit în televiziunea de înaltă rezoluție (HDTV), DVD, discuri laser, televiziune digitală și în unele cinematografe pentru sunetul filmelor.
MPEG audio este o familie mare de standarde, care cuprinde mai multe variante MPEG1, MPEG2, MPEG4, MPEG7; MPEG1 și doi la rîndul lor au sub-nivele 1, 2, 3 și AAC. MP3 este la ora actuală formatul preferat pentru schimb de muzică pe Internet, datorită compresiei care poate ajunge pînă la 12/1; este o prescurtare de la MPEG 2 level 3.
Liquid Audio este un format sofisticat pentru a reprezenta muzica, bazat atît pe Dolby Digital cît și pe MPEG AAC. Permite integrarea unor tipuri de date felurite în fluxul muzical (imagini, text, partitura, preț, versuri, etc.).
Apple quicktime e un format dezvoltat de Apple, care permite codificarea atît a muzicii cît și a informației video.
DVD Audio este încă în curs de dezvoltare; abia apare, dar fabricanții încearcă să dezvolte metode eficiente împotriva copierii.
Formate flux (streaming)
E o diferență foarte mare între a cînta muzică de pe un disc aflat în unitatea calculatorului propriu și a transfera muzica de la distanță prin rețea: discul local poate garanta un flux susținut de informații, fără erori și pierderi. Internet-ul este însă impredictibil, și nu orice tip de format este potrivit pentru transmisiune.
Dacă mai dorim și să reproducem informația în timp ce este primită avem de-a face cu un format de tip flux (streaming). Formatele flux trebuie să prevină erorile care pot apărea. Două tehnologii sunt folosite pentru transmisiune pe o rețea nefiabilă:
Stocarea (buffering): în funcție de variabilitatea (jitter) pachetelor de date care sosesc la receptor, acesta trebuie să întîrzie redarea informației cu cîteva secunde. De pildă, dacă un pachet poate face оntre 3 și 9 secunde de la sursă la destinație, destinatarul trebuie să cînte cu cel puțin 6 secunde întîrziere. În felul acesta, știe că atunci cînd vrea să cînte pachetul următor, acesta a sosit deja.
Codificarea redundantă: pentru că adesea încărcătura serverului și timpul de transmisiune dus-întors face imposibilă re-transmiterea pachetelor pierdute, transmițătorul codifică redundant informația, în așa fel încît un pachet pierdut să poată fi reconstituit în întregime din vecinii săi.
Real Audio este probabil cel mai răspîndit format de tip flux în Internet, dar Microsoft împinge tare propriul format secret, Windows Media Audio.
2.2.2. Formate simbolice
Toate formatele pe care le-am descris pînă acum sunt destinate pentru a “înregistra” o interpretare. Alte formate, cele simbolice, se mulțumesc să descrie forma echivalentă a partiturii muzicale. Acestea sunt deci mult mai compacte, pentru că reprezintă doar notele, duratele lor și informații despre instrumentație.
Cel mai răspîndit standard de reprezentare simbolică este MIDI, Musical Instruments Digital Interface. Acesta este folosit practic de toate instrumentele electronice pentru codificarea informației.
O metodă hibridă este de a reprezenta notele, ca într-o reprezentare simbolică, dar de a le obține prin eșantionare. De exemplu, cînd înregistrăm o melodie la o orgă electronică, ea este înregistrată în acest fel, măsurînd la fiecare 2 milisecunde care clape sunt apăsate. MIDI poate conține multe alte informații: mai multe canale separate, informații despre ritm, intensitate și informații simbolice despre titlul piesei, autor, etc.
Sistemul care va fi descrie în continuare folosește ca mod de reprezentare a muzicii această din urmă metodă. Dacă melodia conține o singură voce (și nu are acompaniament), ea poate fi reprezentată printr-o funcție, ca în figura 2. Graficul acestei funcții arată ca o colecție de segmente orizontale, numite “funcții treaptă”.
Reprezentarea muzicii sub formă de funcții-treaptă reprezintă la fiecare moment de timp nota muzicală cоntată în acel moment. Pauzele sunt indicate prin absența oricărei note. Timpul este eșantionat cu granularitate mică (în jur de 2 milisecunde).
2.3. Căutare multimedia: o problemă nerezolvată
Căutarea de melodii se poate împărți în cîteva categorii. Prima, și cea mai populară, este de departe căutarea de cîntece în format MP3, sau alte formate de bună calitate, care sunt destinate ascultării. Astăzi cererile la motoarele de căutare pentru fișiere MP3 au trecut pe locul întîi ca frecvență. A doua categorie este căutarea de versuri, iar a treia este căutarea de partituri. Obiectele căutate sunt adesea ilegal prezente pe Internet, cei care le oferă încălcînd legea copyright-ului. Sunt ilegale atît publicarea cîntecelor, versurilor, sau partiturilor, cît și obținerea lor de pe Internet, fără încuviințarea posesorului copyright-ului.
Există însă și un alt fel de căutare, care poate fi perfect legală: identificarea cîntecului. În acest tip de căutare rezultatul este numele cîntecului, eventual autorul, albumul, și poate o legătură spre un magazin care oferă piesa spre vînzare. De cîte ori vi s-a întîmplat să nu vă puteți scoate din minte o melodie? Uneori vă amintiți un vers sau două, caz în care Internetul vă poate ajuta să-l identificați. Alteori, tot ce vă mai amintiți este melodia, caz în care singura speranță stă în prieteni: poate dacă încercați să le cîntați un fragment (și dacă vocea vă permite) și dacă prietenii recunosc melodia, atunci veți afla numele cîntecului.
Această ultimă metodă de căutare poartă numele de căutare după conținut; aplicațiile ei sunt nenumărate. Prin analogie, căutarea după conținut în domeniul imaginilor găsește imagini similare pornind de la o imagine-exemplu. Tehnologia căutării după conținut este încă foarte primitivă pentru tipuri de date multimedia. Să vedem care sunt dificultățile în domeniul muzical.
2.3.1. Probleme în căutarea după conținut
Dorim deci ca un utilizator să poată cînta o melodie (întrebarea),și un sistem electronic să o identifice în mod automat într-o bază de date. Pentru aceasta trebuie să fim capabili să comparăm două melodii (sau o melodie cu un fragment – întrebarea), pentru a putea spune cînd două melodii sunt asemănătoare și cînd sunt diferite. Sunt de rezolvat însă mai multe probleme dificile:
Una din problemele cele mai mari este chiar sursa. Nu toți oamenii au ureche muzicală bună și numai o parte dintre aceștia pot cînta bine. Un sistem care cere o reproducere perfectă a fragmentului este util doar pentru o minoritate restrînsă. De aceea căutarea trebuie sa fie tolerantă la erori în “întrebare”: note greșite, note lipsă, note în plus. De asemenea este foarte probabil că fragmentul va fi cîntat mai rapid sau mai lent decît originalul, și în altă tonalitate.
O a doua problemă este extragerea notelor (pitch tracking) din întrebare. În urma înregistrării nu obținem un fișier cu conținut simbolic (ex. MIDI), ci o înregistrare (ex. wav). Căutarea necesită identificarea notelor din acest fișier. Acest proces introduce erori suplimentare: unele note vor ieși fragmentate, cîteodată note identice vor fi concatenate; vocea umană adesea trece între note consecutive în mod continuu (glissando), iar sistemul ar putea decide că trecerea de la “sol” la “la” s-a făcut în alt moment decît intenționa utilizatorul, note fictive pot apărea, de obicei armonicele notei cîntate, pentru că am văzut că sunetele emise nu sunt pure. Extragerea notelor este una din componentele în care s-au înregistrat progrese substanțiale în ultima vreme, și pe care o putem considera rezolvată satisfăcător din punct de vedere ingineresc. Programe precum Digital Ear http://digitalear.iwarp.com/ și Autoscore http://www.wildcat.com/Site/Homepage.htm au ajuns la performanțe uimitoare.
O a treia problemă este cea a bazei de date. Căutarea necesită o bază de date cu toate cîntecele ce se doresc recunoscute, stocate în format simbolic. La ora actuală nu există nici o astfel de colecție care să fie suficient de comprehensivă pentru a fi cu adevărat utilă în aplicații practice.
2.4. Soluții
Să definim noțiunea de distanță între două fragmente muzicale, care măsoară similaritatea dintre ele.
Să vedem ce soluții există pentru toate aceste probleme. Prima problemă constă în inacuratețea reproducerii fragmentului de către utilizatorii sistemului. De aceea, sistemul trebuie sa folosească o măsură a similarității care să aibă următoarele proprietăți:
să fie invariantă la tempo (deci dacă melodia este cîntată mai lent sau mai rapid trebuie să fie totuși recunoscută)
să fie invariantă la gama muzicală (adică dacă melodia este cîntată cu două note mai sus să o recunoască totuși)
să fie tolerantă la note false
Date două fragmente de melodii, putem măsura similaritatea dintre ele prin compararea graficelor lor. Problema similarității a două fragmente de melodii se transformă astfel într-una de comparare a două funcții treaptă.
“Distanța” dintre două melodii reprezentate ca funcții treaptă se poate măsura prin aria dintre ele.
Să presupunem că cele două fragmente au aceeași lungime. Graficele corespunzătoare vor avea și ele aceeași lungime. Dacă le vom vizualiza suprapuse, o bună măsură a distanței dintre ele este aria dintre cele două grafice, ca în figura 3.
Cînd calculăm distanța dintre grafice, trebuie să translatăm unul din grafice pe verticală, astfel încît să minimizăm aria dintre ele. În felul acesta distanța este invariantă la schimbarea gamei și, în același timp, tolerantă la note false.
Pentru a obține invarianță la tempo, încercăm să dilatăm unul din fragmente cu diverși factori, pentru a minimiza aria dintre cele două funcții.
Iată o schiță a algoritmului care calculează distanța dintre un fragment cîntat și o melodie monofonică (care are o singură linie melodică, fără acompaniament):
pentru diverși factori de scalare între 0.5 și 2
calează fragmentul cu factorul curent
translatează graficul lui de-a lungul graficului melodiei (pe orizontală)
pentru fiecare poziție intermediară
translatează fragmentul pe verticală pentru a minimiza aria dintre cele două
raportează cea mai mică arie găsită în acest proces
Funcționarea acestui algoritm este ilustrată în figura 4.
Funcționarea algoritmului de calcul a distanței: (1) date fiind o melodie (linia neagră) și o întrebare (linia roșie) exprimate prin funcții treaptă, trebuie să găsim “potriveala” maximă dintre ele. În prima fază (care nu e ilustrată) întrebarea este translatată în timp pentru a găsi locul unde apare în melodie (nu neapărat la început), apoi (2) întrebarea este scalată în timp, pentru a potrivi tempo-ul cu cel al melodiei, și în fine (3) este scalată în frecvență pentru a fi la aceeași “înălțime” cu piesa. Toți cei trei pași sunt făcuți pînă cînd distanța (aria dintre cele două curbe) este minimizată; calculul distanței este deci un proces de căutare.
2.4.1. Alte probleme de inginerie
Problema teoretică cea mai spinoasă este de a defini o distanță. Aceasta se pretează la o implementare relativ simplă, dar mai sunt de rezolvat cîteva alte probleme neplăcute înainte de a deveni acest sistem cu adevărat practic.
Prima dintre ele este faptul că melodiile nu sunt, în general, monofonice (în vreme ce reproducerile oamenilor sunt). De aceea, înainte de a putea aplica acest algoritm, trebuie să transformăm fiecare cîntec într-o melodie monofonică. Acest lucru este făcut făcînd o analiză spectrală a muzicii și eliminînd toate notele în afară de cea cu energia maximă.
A doua problemă constă în extragerea notelor din fișiere de tip wav (conversia de la o înregistrare la un format simbolic). În mod cert, calitatea programelor ce convertesc wav la MIDI a crescut foarte mult, pentru fișiere monofonice. Distanța pe care o folosim însă este tolerantă și erori introduse de această conversie: fragmentare sau alipire de note, trecerea de la o notă la alta la momente inoportune.
A treia problemă constă în lipsa de cîntece în format simbolic. Un mod de a rezolva această problemă este de culege fișiere MIDI de pe Web. Pe web există cel puțin 100 000 de astfel fișiere, suficient pentru a construi o bază de date respectabilă folosind un “păianjen” (web spider, crawler), asemănător celor folosite de motoarele de căutare. Se estimează că 99.99% dintre cererile de căutare de cîntece pe Internet se referă la mai puțin de 10000 de melodii diferite.
Deși folosirea MIDI este atractivă datorită numărului mare de fișiere disponibile, există și dezavantaje: marea majoritate a acestor fișiere sunt create de către amatori, ceea ce duce la o calitate îndoielnică a reproducerii originalului. Așa cum s-a menționat mai sus, prezența unor multiple canale și a mai multor sunete simultane în fiecare canal este un impediment în folosirea acestor fișiere; cu toate acestea, din punct de vedere practic fișierele MIDI reprezintă un compromis excelent, fiind într-un format ușor de prelucrat, și în număr foarte mare.
În figura 5 este ilustrat sistemul humwistle, http://www.humwistle.com/ în întregime.
Componentele indicate cu albastru sunt în curs de dezvoltare.
O colecție mare de fișiere MIDI este extrasă de pe web. Informațiile textuale inserate în corpul fișierelor MIDI sunt extrase și folosite pentru etichetarea și indexarea fișierelor. Componenta aurie este cea descrisă în acest articol și este partea cea mai inovatoare a sistemului, care permite căutarea după melodii cîntate.
Sistemul este format din trei componente majore. Prima colectează fișiere MIDI de pe web într-un proces continuu, le clasifică și le adaugă la baza de date. A doua componentă preia cererile de căutare pe bază de text (autor, cîntec, album, versuri) și execută o căutare textuală în baza de date, folosind tehnici standard de biblioteci digitale și informațiile simbolice prezente în fișierele MIDI. A treia componentă preia cererile de căutare pe bază de fragmente cîntate, le transformă în fișiere MIDI folosind o subcomponentă de extragere a notelor, apoi caută fragmentul respectiv în cîntecele din baza de date folosind algoritmul de mai sus.
2.5. Alte eforturi de cercetare în biblioteci muzicale
Proiectul humwistle nu este singurul care studiază problema creării și accesării unei biblioteci digitale. Pare însă să fie cel care a rezolvat cu cel mai mare succes problema căutării, datorită funcției distanță folosite pentru măsurători. În această secțiune enumerăm pe scurt alte cîteva proiecte, care sunt din cunoștințele autorilor cele mai avansate în domeniu.
Cercetarea universitară în domeniul similarității melodiilor a început prin anii '70, dar sisteme practice nu au apărut pînă în 1995. Cauzele acestei stagnări sînt multiple; Internet-ul a explodat de curînd, deci cererea de căutare după conținut are mult mai mulți “clienți”. Marile companii de discuri au început să folosească Internet-ul de numai cоțiva ani. De asemenea, fișierele MIDI au devenit cu adevărat populare de curînd.
Asif Ghias și echipa lui de la universitatea Cornell din SUA în 1995 au construit primul sistem experimental de recunoaєtere a unui cîntec. Metoda folosită de ei constă în extragerea notelor din fragmentul cîntat; apoi fragmentul este transcris ca o secvență de simboluri U, D, sau S. O notă este transformată în U (up) dacă este mai înaltă decît nota anterioară, S (same) dacă este aceeași notî sau D (down) dacă este mai joasă. Melodiile din baza de date sunt reprezentate în aceeași manieră. Fragmentul este căutat în baza de date folosind un algoritm binecunoscut de comparare a unor șiruri de caractere, permițînd mai puțin de k diferențe (algoritmul Baesa-Yates).
Sistemul a demonstrat viabilitatea ideii, dar lăsa de dorit din punct de vedere practic: baza de date conținea numai 183 de cîntece, iar algoritmul necesita din ce în ce mai multe note în fragmentul cîntat pe măsură ce baza de date crește, făcîndu-l nepractic pentru 10000 de cîntece.
De departe cele mai bune rezultate în domeniu au fost obținute de McNab și echipa sa, la universitatea Waikato din Noua Zeelandă. Ei au construit un sistem care a testat mai multe funcții distanță diferită. Baza lor de date, asamblată din partituri de cîntece populare germane și chinezești, conținea 10000 de melodii. Metoda de comparare care a dat cele mai bune rezultate constă în exprimarea fiecărei note ca o pereche (interval, durată), unde intervalul este distanța față de nota precedentă. Cîntecele din baza de date erau codificate în același fel, iar distanța folositг era “distanța de editare”. Distanța de editare dintre două șiruri de caractere, edit-distance, este numărul minim de operații de inserare, ștergere sau înlocuire de caracter care trebuie aplicate primului șir pentru a-l obține pe al doilea.
Sistemul a demonstrat performanțe uimitoare: atunci cînd fragmentul cîntat era chiar începutul cîntecului, 12 note erau de ajuns pentru a reduce numărul de melodii candidat la mai puțin de 10. Din păcate publicațiile lor nu spun ce se întîmplă atunci cînd fragmentul de recunoscut poate fi oriunde în cîntec. Cercetări ulterioare sugerează că, în acest caz, numărul de note necesare pentru dezambiguare crește din nou foarte mult, făcînd sistemul nepractic.
Un alt pionier al căutării pe bază de conținut este J. S. Downie, de la universitatea din Western Ontario, Canada. El a observat faptul că atunci cînd baza de date crește este prea costisitor să comparăm fragmentul cîntat cu toate melodiile: numărul de calcule ar fi prea mare. De aceea el a încercat să aplice tehnici clasice de indexare folosite în bibliotecile digitale cu text și de motoarele de căutare de pe World Wide Web. El a definit “cuvintele” ca fiind secvențe de patru sau cinci note consecutive și apoi a construit un index foarte asemănător cu indexul de la sfîrșitul unei cărți tehnice: pentru fiecare cuvînt, indexul indică locul lui de apariție, pagina în cazul cărții, cîntecul în cazul nostru. Un fragment de recunoscut este segmentat în note, apoi scris ca o succesiune de “cuvinte”. Fiecare din aceste cuvinte apare în mai multe cîntece, iar, dintre acestea, cîntecul care apare în listele indicate de toate cuvintele este cel căutat.
Metoda funcționează foarte bine și mai ales rapid, atunci cînd fragmentele căutate sunt reproduceri fidele ale originalului. Din păcate, performanța sistemului se degradează foarte mult atunci cînd o notă sau două sunt greșite, ceea ce, din nou, face sistemul nepractic.
Toate aceste încercări de a construi o bibliotecă digitală muzicală au avut un punct comun: modul lor de reprezentare a melodiilor era o secvență de simboluri discrete, ca un șir de caractere. Un simbol este fie nota, fie diferența în semitonuri față de nota anterioară, fie o pereche de un de număr și o durată. Această reprezentare este problematică pentru construcția unei bune măsuri de similaritate, deoarece o notă fragmentată, sau mai multe note concatenate schimba dramatic reprezentarea unui fragment, deși, în esență, el diferă puțin de original. Reprezentarea de mai sus, în care o melodie nu mai este o înșiruire de simboluri, ci mai degrabă o variație continuă în timp a înălțimii notei. Considerăm că aceasta este cheia care a permis obținerea unor rezultate mai bune decît oricare din cele raportate pînă în prezent.
2.6. Evoluții viitoare
Sistemul humwistle este disponibil pe Internet. În momentul de față numai căutarea textuală este accesibilă on-line. Cînd performanțele căutării pe bază de conținut se vor îmbunătăți suficient pentru o utilizare interactivă, ea va fi de asemenea disponibilă pe web.
Aplicațiile comerciale ale sistemului sunt enorme: companiile de discuri ar putea crea astfel de baze de date în care fiecare piesă în format wav sau PCM (de pe CD) este însoțită de o descriere MIDI, eventual extrasă automat. Utilizatorul poate interoga baza de date, iar sistemul descris poate identifica melodia MIDI corespunzătoare. Apoi utilizatorul poate cumpăra după dorință înregistrările piesei, sau partitura, extrasă direct din MIDI.
Muzicienii ar putea folosi un astfel de sistem pentru a detecta plagiarismul în cantități enorme de cîntece, căutînd temele din propriile lor compoziții.
O aplicație interesantă acestei tehnologii este în calculatoare mobile, unde spațiul ecran este foarte restrîns. Posibilitatea de a selecta cîntece spre ascultare prin cîntarea unui fragment ar putea fi de neprețuit. Un player de MP3-uri conectat la rețeaua de telefonie celulară ar putea sa aducă cîntece la cerere, pornind de la scurte fragmente cîntate.
Imaginați-vă conducînd un automobil peste zece ani, care va include un player de MP3 care are suficientă memorie pentru a stoca toată colecția dumneavoastră de cîntece. Cum ați putea face pentru a selecta o melodie sau un album spre ascultare, fără să trebuiască să luați mîna de pe volan pentru a scotoci în cutia cu discuri? O soluție elegantă ar fi să cîntați un fragment din cîntecul dorit. În plus, această soluție nu necesită luarea mîinilor de pe volan.
III. PLAGIARISMUL ÎN PRODUCȚIA DE SOFTWARE
3.1. Metodele de depistare a plagiatului în programare
Posibilitatea foarte facilă de a transcrie informația, reprezentată în formă electronică, a creat un șir de probleme, legate de încălcarea dreptului de autor.
În editurile textuale și electronice deseori pot fi întîlnite publicațiile despre contrazicerile dintre pirați și deținătorii dreptului de autor a creațiilor pe care pirații le răspîndesc. De regulă în asemenea cazuri unicul (dar nu întotdeauna activează) mijloc de a încheea conflictele sunt judecățile. În asemenea cazuri partea ce a suferit foarte ușor poate găsi dovezi, deoarece pirații rar se stăruie să ascundă faptul că lucrărilepe care ei le răspîndesc nu sunt licenziate.
În această lucrare voi prezenta cîteva metode care permit de a depista și demonstra faptul de încălcare a dreptului de autor în cazul cînd scopul acțiunilor nelegitime este un produs program, care conține în corpul programului fragmente de programe străine împrumutate fără de știrea autorului.
Există mai multe metode de depistare a plagiatelor. Deasemena nimic nu-l împiedică pe fiecare să elaboreze metodele sale cu scopul depistării plagiatelor.
3.2. Analiza caracteristicelor programului
Orice program are o anumită ierarhie a structurilor care pot fi dezvăluite, măsurate și utilizate în calitate de caracteristici ale programului.
Utilizate la demonstrarea faptului de împrumut, aceste caracteristici trrebuie să se schimbe puțin în catul modificăriiprogramului sau includerii fragmentelor unui program în altul.
Numele procedurilor, variabilelor, rîndurilor textuale ș. a. pot fi foarte ușor modificate de către răufăcător și deaceea nu trebuie să fie folosite pentru a primi caracteristica programului. Pentru acest scop se potrivește mai bine succesiunea programului, deaceea modificarea acestei succesiuni necesită o înțelegere a logici funcționării programului și este un proces care necesită un mare volum de muncă.
Pentru a analiza caracteristica programului voi aduce cîteva exemple de analiză a frecvenței de apariție a operatorilor și includerea operatorilor în corpul programului.
Să examinăm frecvența de apariție a operatorilor într-un fragment dat de program.
Frecvența se determină în felul următor: cantitatea apariției unui operator concret împărțită la cantitatea apriției tuturor operatorilor. Frecvențele pot fi reprezentate în formă de histogramă (fig.1). Pe abscisă sunt depuse numărul de ordin a operatorilor, iar pe ordonată – frecvența (în %) apariției acestor operatori.
În cazul mascării fragmentului împrumutat nelegitim, răufăcătorul poate modifica unii operatori și adăuga alți operatori noi, dar în general schimbările vor fi mici și deaceea repartizarea frecvențelor va rămîne practic aceeași. Desigur, valorile apropiate ale fercvențelor în fragmentele diferitor programe încă nu demonsterază faptul de împrumut, însă permit bănuirea acestui fapt.
Acum vom analiza amplasarea operatorilor în corpul programului. Să luăm două consecutivități ale operatorilor și le vom compara pentru a primi o carelare reciprocă a operatorilor acestor succesiuni.
Compararea se va efectua în felul următor. Primul operator al unei succesiuni se compară cu primul operator al altei succesiuni. Dacă operatorii sunt identici, atunci contorul coincidențelor se increnentează. În continuare se iau alți doi operatori, se compară și în caz de coincidență contorul iarăși se incrementează. Acest proces are loc pînă cînd se vor cerceta toți operatorii. În cazul cînd lungimile succesiunilor sunt diferite, compararea se efectuează după lungimea celei mai scurte succesuni. După ce toți operatorii sunt selectați, numărul de coicidențe se memorizează, apoi se repetă compararea. Înainte de aceasta cea mai scurtă succesiune se deplasează în așa fel încît primul ei operator se compară cu al doilea operator din cealaltă succesiune, al doilea cu al treilea și așa mai departe. Cînd vom avea încă un număr care caracterizează cantitatea coincidențelor, el deasemenea se memorizează și iarăși una din succesiuni se deplasează, iarăsi are loc compararea și în așa fel pînă cînd cea mai mică succesiune se va mișca ciclic, de atîtea ori cîți operatori sunt în cea mai mare succesiune. Informația primită se reprezintă în forma unei histograme, pe abscisa căreea se depune mărimea coincidenței unei succesiuni a operatorilor comparativ cu cealaltă, iar pe ordonată – cantitatea coincidențelor opratorilor în astfel de caz.
Histograma corelării reciproce a două programe mici:
Culmea , observată la a șaptea poziție, a apărut din cauza că în aceste programe se întîlnesc fragmente identice. În afară de corelația existentă poate apărea și alta întîmplătoare. Deaceea fiecare caz al valorii mari a corelației terbuie analizat prin alte metode.
Cum s-a spus mai sus, valorile apropiate ale caracteristicilor a două programe diferite încă nu înseamnă că în unul din programe există fragmente din celălalt. Acest motiv prezintă neajunsul acestei metode. Însă e necesar de menționat că ea permite ușor automatizarea procesului de depistare a sectoarelor suspecte ale codului de program și la utilizarea ei cu alte metode poate da rezultate însemnate.
3.3. Analiza stilului de programare
La examinarea stilului de programare deseori se folosesc așa termeni ca „alunițe” („birthmark”) introdus în utilizare de către comunitatea Britanică a tehnicii de calcul (British Computer Society), pentru marcarea particularităților, specific etapelor de elaborare a programului și care devin în continuare o parte integrantă a acestui program. De recunoscut că „alunițele” există obiectiv. Această circumstanță permite de a utiliza stilul de programare pentru a demonstra faptul de împrumut. Cantitatea considerabilă a „alunițelor” apare în program datorită particularităților individuale de rpogramare, specific fiecărui progarmator. În calitate de exemple de astfel de priorități pot fi numite colecțiile prelucrate de programator în procesul de lucru, părți din codul de program ale versiunilor recente ale programului, fragmente scrise în timpul elaborării programului, dar care nu au fost distruse după ce au devenit inutile. În calitate de alunițe deasemenea se examinează greșelile. Reeditarea greșelei poate servi drept demonstrație a împrumutului, deoarece e puțin probabil ca un singur om independent și de sine stătător a repetat aceeași greșeală ca și altcineva. De menționat faptul că unele greșeli pot fi proprii diferitor oameni. Acest mijloc s-a manifestat într-un șir de tehnologii noi, la baza cărora stau concepte greu de rezolvat. La utilizarea acestor tehnologii cercetătorilor le sunt caracteristice greșeli de același tip, însă este clar că dacă greșeala este evidentă , atunci e puțin posibil ca alții să o poată repeta. Particularitățile stilistice nu le sunt evidente autorului, din cauza că acestea sunt propriile particularități necontrolate, deaceea pentru depistarea plagiatului pot fi introduse în program adăugător niște „alunițe”. Acestea pot fi greșeli care nu influențează capacitatea de lucru a programului, sau un cod de prisos, care poate fi inclus cu intenția de a induce răufăcătorul în eroare ( în porticular pentru a-l impune să îndeplinească un lucru în plus pentru a clarifica dacă el este destinat pentru a-l chema în situații excepționale).Analiza stilului de programare este o metodă efectivă, deoarece lichidarea particularităților de stil aduce la transcrierea programului și depistarea părților neefective ale progarmului, care au apărut din cauza utilizării de către programator a nu celor mai efectivi algoritmi. În același timp, dacă programul în care este implementat un fragment al altui program, reprezentat în cod mașină, atunci procedura de căutare a „alunițelor” poate deveni foarte dificilă. Aceasta este condiționată de faptul că compilatoarele înlătură surplusul codului și atenuează particularitățile stilului de produse.
De menționat un avantaj de mare importanță a acestei metode descrise și anume cu ajutorul acestei metode poate fi stabilit dreptul de autora fragmentului de rpogram, chiar dacă elaborarea și răspîndirea progarmului au fost elaborate pînă a se lua măsuri în privințaprotejării de copiere nelegală.
3.4. Analiza amprentelor digitale
Cu termenul de „amprentă digitală” („fingerprint”) eset marcată informația , care codifică confirmarea dreptului de autor printr-o metodă destul de neverosimilă pentru a fi identificat întîmplător și care servește drept demonstrație a faptului că este prezent dreptul de autor. Eficacitatea utilizării „amprentelor digitale” este condiționată de incertitudinea, nedeterminarea și surprinderea amplasării lor. În unele cazuri este necesar de informat despre faptul că ele există. Atunci răufăcătorul depistînd o parte din amprente, el nu va fi sigur că le-a găsit pe toate și aceasta îl poate face să se dezică de la încercările de a împrumuta. Desigur răufăcătorul ar putea în principiu să introducă adăugător semne de identificare, pentru a-l încurca pe autor în cazul unei dezbateri judiciare, dar păstrarea textului original trebuie să înlăture orice îndoieli în vederea autorului real.
Elaborînd semne de identificare , e necesar de ținut minte că ele sunt bine apărate de modificații sau distrigere, înlăturare numai în cazul cînd nu este cunoscut principiul lor de construire. Răspîndirea acestui principiu lipsește de sens folosirea lui, din această cauză exemplul descris mai jos nu se recomandă să fie folosit în practică.
În partea expusă mai sus, dedicată identificării codului program pe baza analizei particularităților stilului de programare s-a menționat despre un așa tip de “alunițe” ca greșelile intenționate. În acest caz s-a presupus că ele nu pot apărea în alte programe numai dacă nu au fost copiate de pe original. Greșelile pot fi folosite pentru codificarea autentificării autorului. Spre exemplu codul programului, care arată la ieșire consecutivitatea cifrelor, aceste cifre pot fi modificate în așa fel ca ultimele două cifre de sfîrșitul rotunjirii să codifice literele alfabetului și în așa fel să arate de exemplu numele autorului codului dat. Este clar că în cazul dat greșelile implementate nu trebuie să modifice mersul efctuării operațiilor.
Dacă inroducerea erorilor nu este posibilă, atunci trebuie să procedăm altfel. Deoarece schimbarea cu locul a operatorilor nu schimbă principiul de lucru al programului, atunci acest fapt îl putem utiliza pentru crearea semnelor de identificare. Desigur crearea semnului de identificare, legat de succesiunea operatorilor este foarte dificilă, deaceea ar fi mai simplu de introdus în program un cod care nu se va executa niciodată. Însă astfel de semne pot aduce roade numai în cazul cînd fragmentul de program a fost împrumutat și răufăcătorul nu va intra în esența principiului de funcționare a acestui program. Cunoașterea de către răufăcător a numelui autorului, denumire companiei sau altă informație de acest fel, prezintă cheea spre problema de detectare și înlăturare a semnelor de identificare. Din care cauză informația care se conține în aceste semne ar trebui cifrată.
3.5. Descrierea sistemului
S-ar putea ca unii studenți nici să nu agreeze existența unui asemenea sistem. Însă ideea este foarte simplă: atunci cînd studentul prezintă sau trimite profesorului un program pentru evaluare, profesorul apasă pe un buton și află dacă acest program a mai fost prezentat sau seamănă exagerat de mult cu un program prezentat de către altcineva în trecut (inclusiv anii anteriori).Dar ar fi bine ca studenții să fie la curent cu existența unui asemenea sistem,deoarece în așa caz nu vor mai încerca să împrumute secvențe de program sau chiar programe întregi de la alți colegi.
Aici voi descrie metoda de testare a programelor. Se vor compara două programe “.pas”. Nici într-un caz nu putem compara două programe spre exemplu unul “.pas” și altul “.cpp” deoarece aceste două limbaje de programare diferite deja presupun folosirea a două tehnici diferite și după cum s-a menționat mai sus aceasta nu presupune imitația ci emulația.
Deci, avem două programe cu extensie “.pas” și trebuie să găsim gradul de asemănare dintre ele. Pentru aceasta vom folosi metoda de analiză a caracteristicelor programului și anume analiza frecvenței de apariție a operatorilor și includerea lor în corpul programului.
Vom analiza următorii operatori: “:=”, “goto”, “if”, “while”, “case”, “repeat”, “for”, “with”. Să examinăm frecvența de apariție a operatorilor într-un fragment dat de program.
Frecvența se determină în felul următor: cantitatea apariției unui operator concret împărțită la cantitatea apriției tuturor operatorilor. Frecvențele le vom reprezenta pe garfic. Pe abscisă sunt depuse numărul de ordin a operatorilor, iar pe ordonată – frecvența (în %) apariției acestor operatori.
Și în continuare voi descrie aplicația.
Fișierul aplicației se numește plagiat.exe.
La lansarea aplicației vom primi forma din figura 8. În partea de sus a ferestrei se află meniul principal al aplicației, care constă din următoarele opțiuni:
File1;
File2;
Edit;
Work;
Opțiunile “File1” și “File2” conțin subopțiunile:
New;
Open;
Save;
Save As…;
Exit.
În rezultatul alegerii opțiunii ”File1” se va lucra cu primul fișier, de exemplu cel original cu care va fi comparat cel de-al doilea fișier. Activînd opțiunea “Open” vom alege din baza de date, unde se conțin programele prezentatedeja profesorului, fișierul unu.
După ce a fost selectat fișierul necesar în fereastra de sus va apărea textul programului.
La fel și pentru fișierul doi. În urma alegerii opțiunii “File2”, mai apoi “Open” vom alege al doilea program, adică cel prezentat profesorului , și în fereastra a doua va apărea textul fișierului doi.
Și acum putem vedea rezultatul comparării.
Prin activarea opțiunii “Work” va fi afișat următorul rezultat:
Într-un tabel vor fi afișați niște parametri care prezintă frecvența de apariție a operatorilor pentru un program și pentru al doilea. Acești parametri sunt prezentați într-un grafic. Putem face următoarele concluzii: valorile foarte apropiate a frecvenței de apariție a operatorilor în corpul unui program cît și în corpul programului doi ne face să fim suspecți în vederea originii provenienței programului dat.
3.5.1. Descrierea mediului Delphi
Delphi și C++ Builder sunt la momentul actual unele din cele mai populare limbaje de programare, datorită combinării reușite a interfețelor utilizatorilor, a arhitecturii componente, a accesului similar la diferite baze de date. Începînd cu tabelele de tip dBase și Paradox și terminînd cu cele de la server SUBD.
Coincidența lui C++ Builder și Delphi nu sunt doar aparente. C++ Builder posedă o arhitectură componentă și e format pe baza componentelor vizuali ai limbajului Delphi, care în ultimii patru ani sunt cele mai populare printre utilizatori. Din acest motiv C++ Builder are o bibliotecă de clase comună cu Delphi, o parte din care e scrisă în Object Pascal.
Totodată coincidența lui C++ Builder cu Delphi nu se epuizează. În proiectele C++ Builder poate fi folosită nu numai biblioteca de clasă a lui Delphi, dar și codul scris în Object Pascal, și de asemenea formele și modulele lui Delphi. C++ Builder a moștenit formele și modulele vizuale create inclusiv în Delphi. Aceste posibilități au devenit reale datorită includerii în C++ Builder a ambelor compilatori – C++ și Object Pascal.
Aceasta ar însemna că pot fi create proiecte comune, folosind ambele mijloace de elaborare și C++ Builder și Delphi. Utilizatorii pot folosi atît C++ Builder cît și Delphi. Important este faptul că C++ poate utiliza componenți creați special pentru Delphi și acești componenți în ultimii ani sunt într-un număr nelimitat. Această bogăție acumulată de programatorii din toată lumea astăzi este în stare să satisfacă cele mai variate cerințe.
Delphi permite programatorului niște posibilități largi de folosire repetată a codului nu numai datorită bibliotecii componentelor dar și din contul susținerii standartului ActiveX ceia ce permite includerea componentelor ActiveX atît ca creatori străini cît și ca creatori elaborați de însuși Delphi.
Un factor nu mai puțin important de care depinde popularitatea acestui limbaj este crearea nu numai a componentelor adăugătoare și elementelor ActiveX, dar și diverșilor experți, redactori ai proprietăților componentelor, care îmbunătățesc funcționarea limbajului dat.
3.5.2. Principiile de elaborare a anexelor în Delphi
La baza anexelor în Delphi stau formele. De obicei la crearea unui proiect a anexei noi apare o fereastră goală cu numele Form1. Crearea interfețelor utilizatorului include adăugarea în fereastră a obiectelor Delphi, care se numesc componente. În continuare urmează crearea codului prelucrării evenimentului la care reacționează componenții din formă.
3.5.3. Crearea proiectului
Primul pas în elaborarea anexelor în Delphi este crearea proiectului, care conduce cu formele și modulele. La crearea anexelor se generează fișierul proiectului. Fișierul proiectului este condus prin crearea formelor și arată forma principală a anexei. Fișierul proiectului conține textul inițial generat de Object Pascal, care devine o parte a anexei cînd ea este compilată și pregătită pentru îndeplinire.
De fiecare dată la lansarea lui Delphi se crează un proiect nou. Dacă Delphi este deja lansat se poate crea un proiect nou alegînd File/New Application. E posibil lucrul simultan a mai multor proiecte.
Delphi crează fișierul proiectului cu numele PROJECT1.BPR și fișierul proiectului cu numele PROJECT1.PAS.
3.5.4.Adăugarea formei noi la proiect
Formele stau la baza anexelor în Delphi, alcătuind scheletul în care se proiectează interfața programei. Proiectul sau anexa de obicei pot avea mai multe forme.
La adăugarea formelor la proiect apar următoarele fișiere adăugătoare:
fișierul .DFM, care conține informația despre interfața elementelor și a altor componenți a formelor.
fișierul .PAS conține codul de prelucrare a evenimentelor scris în pascal.
fișierul h conține descrierea clasei formei Tform1 și informație despre componenții ce se conțin în forma dată.
Fiecare formă în anexă conține aceste trei fișiere. La adăugarea formei noi fișierul proiectului automat se înnoiește. Pentru adăugarea formelor la proiect este nevoie să alegem File/New Form. La proiect se va adăuga o formă goală. De asemenea putem utiliza File/New, să alegem pagina Forms și șablonul convinabil al formei.
3.5.5. Pachetele componentelor și șabloanele lor
Delphi ne dă posibilitatea de a crea așa numitele șabloane a componentelor. La crearea șabloanelor pot fi alese mai multe componente din meniul principal a Delphi, trebuie de ales Component/Create Component Template. După aceasta pe foaie apare pictograma componentei. Dacă vom aranja așa o componentă în formă pe ea vor apărea toți componenții incluși în șablon, în acelaș timp dacă unii componenți au suferit schimbări atunci codul lor va fi regenerat. Componenții incluși în formă din componența șablonului pot fi înlăturați, schimbați cu locul, schimbate proprietățile lor.
Șabloanele componentelor de obicei se folosesc cu scopul transferării a cîtorva componenți împreună cu prelucrarea evenimentelor dintr-o formă în alta.
În Delphi componenții se conțin în așa numitele pachete, care includ în sine biblioteci care pot fi încărcate. Lista lor poate fi prezentată alegînd punctul meniu Project /Options și Packages. În acest dialog poate fi adăugat sau înlăturat un pachet de asemenea pot fi redactate pachete adăugate de utilizatori.
3.5.6. Accesul la date din mediul Delphi
Accesul la date este scopul fundamental pentru care se creează un sistem SGBD. Trebuie să avem la dispoziție o modalitate de acces la toate datele pe care vrem să le păstrăm. De asemenea, este importantă micșorarea volumului de date în scopul accesării lor mai facile. Pagina de componente pentru acces la date – Data Access – din cadrul paletei de componente este în majoritatea cazurilor suficientă. Baza de date trebuie să accepte metodele de conectivitate cu bazele de date deschise (ODBC), interfața de programare a aplicațiilor independente de tipul bazei de date (IDAPI) sau să asigure un tip de driver nativ al mediului Delphi.
3.5.7. Descrierea componentelor Delphi pentru accesul la date
TDataSource
O sursă de date este locul în care se obține accesul la informațiile de care avem nevoie. În timp ce baza de date este locul unde sunt depozitate efectiv toate informațiile înrudite, iar un tabel conține un singur tip de informații, sursa de date ne pune efectiv la dispoziție. O sursă de date poate fi un tabel, o interogare, sau o procedură – tot ceea ce face parte dintr-o bază de date. Acesta este scopul existenței în mediul Delphi a componentului denumit sursă de date el este partea din mediul Delphi care vă permite să conversați cu sistemul SGBD.
TTable
Adeseori, noțiunea de tabel se confundă cu cea de bază de date. Un tabel este gruparea într-un anume fel a unor informații înrudite. Bazele de date conțin, de obicei, unul sau mai multe tabele – o bază de date este o colecție a tuturor informațiilor relative la un anumit set de date. în mod normal, tabelele conțin un set de date. De exemplu, puteți pune numele, adresele și numerele de telefon ale tuturor angajaților într-un singur tabel. Un alt tabel ar putea conține înregistrări individuale ale plăților către un anume angajat, adică suma de bani pe care a primit-o în fiecare zi de plată. Cele două tabele sunt puse în legătură prin numele angajatului, sau orice altă informație de identificare, dar nu conțin același tip de informație. Baza de date care conține aceste două tabele ar putea constitui statul de plată al companiei. Cu alte cuvinte, baza de date conține toate tabelele care au legătură cu statul de plată al companiei. întotdeauna mi-a plăcut să consider că o bază de date este o persoană careia îi pun o întrebare, iar un tabel este subiectul întrebării.
TQuery
Dacă o bază de date reprezintă sursa de răspunsuri, iar tabelul conține răspunsul la o anumită întrebare, acest component este întrebarea însăși. Un component TQuery ne permite să interogăm baza de date sau orice altă sursă de date sub formularul unei întrebări precise și să primiți ca răspuns numai informațiile de care aveți nevoie. în trecut, lumea obișnuia să ia un tabel întreg sau chiar baza de date cu totul, atunci când avea nevoie numai de o anumită informație. Rețelele de calculatoare nu sunt concepute să funcționeze în condițiile unui asemenea trafic de date, în special atunci când câteva sute de utilizatori interoghează bazele de date. Utilizarea unei interogări reduce timpul necesar formulării răspunsului la întrebare și reduce traficul în rețea în același timp. Interogările în mediul Delphi apelează la SQL (Structured Query Language – limbaj de interogare structurat). SQL este o modalitate standard de conversație cu o sursă de date..
TStoredProc
DDE este o metodă de control de la distanță al executării anumitor sarcini – o metodă destul de primitivă de control, sub forma unui program macro. O bază de date poate fi rezidentă pe un sistem mainframe sau pe o altă sursă dificil de accesat. Procedurile stocate sunt programe macro de surse de date. Ele sunt stocate pe serverul de date – care poate fi un server de fișier, un sistem mainframe sau chiar propriul PC local – și folosesc limbajul nativ al aplicației server. Cele mai multe sisteme SGBD folosesc limbajul SQL pentru implementarea acestor proceduri. Așadar, la ce este bună o procedură stocată? Ele permit reducerea volumului de date, sau efectuarea anumitor calcule, înainte de a intra în posesia datelor. Unele dintre cele mai mari avantaje în folosirea procedurilor stocate sunt asemănătoare cu cele care derivă din folosirea procedurilor obișnuite în scrierea codului. De exemplu, ele vă ajută să eliminați posibilitatea de a scrie de două ori același cod și să impuneți anumite standarde de lucru în cadrul companiei. Ele reduc, de asemenea, volumul de muncă pe care trebuie să o depuneți, deoarece nu trebuie să faceți modificări decât într-un singur loc atunci când apare nevoia de a modifica o anumită interogare.
TDatabase
Database este componentul pe care Delphi îl folosește pentru a avea controlul asupra accesului la informații – el furnizează legătura funcțională dintre aplicația dumneavoastră și serverul de date cu care aceasta conversează. De exemplu, componentul TDatabase este responsabil de inițierea tranzacțiilor cum sunt expedierea sau recepționarea unor informații. De asemenea, el răspunde de probleme cum ar fi deschiderea unei sesiuni de lucru cu baza de date pentm acele sisteme SGBD care au și facilitatea de asigurare a securității accesului la date – lucru pe care majoritatea lor o fac. Nu este necesar să adăugați aplicației dumneavoastră un component TDatabase pentru a avea acces la date: mediul Delphi va crea un component virtual de acest tip dacă va avea nevoie. Cu toate acestea, adăugarea unui astfel de component va fumiza un nivel superior de flexibilitate aplicației.
TUpdateSQL
Există situații când nu trebuie să faceți altceva decât să cititi anumite date într-un tabel, nepunîndu-se problema modificării lor. In mod normal, vom folosi o structură de date de tip read-only (protejată la scriere) pentru a reduce traficul prin rețea. Unei asemenea structuri de date i se rezervă o zonă tampon de memorie (buffer) pe mașina dumneavoastră locală. Totuși, dacă folosiți acest tabel în scopul regăsirii unor informații, n-ar fi bine să aveți la dispoziție cele mai recente date? Acesta este rolul componentului TUpdateSQL. El ne permite accesul la zona de memorie tampon pentru a actualiza structura de date read-only, precum și informațiile pe care le vedeți ca rezultat al acestei interogări actualizate.
TReport
El permite crearea unui raport tip ReportSmith din interiorul mediului Delphi pe baza fișierelor deschise în momentul rulării aplicației.
Toate componentele pot lucra cu baza de date fără ca acest lucru să fie mediat de un component de tip TDataSource. Componentele pentru accesul la date pot avea acces la date în mod direct. Componentele de tip Data Control sau QuickRpt trebuie întotdeauna conectate la o sursă de date.
Figura de mai jos vă înfățișează o perspectivă mai apropiată de realitate despre modul în care com-ponentele pentru acces la date conlucrează pentru crearea unei conexiuni între aplicația dum-neavoastră și serverul de baze de date. De asemenea, figura va arăta și modul în care această co-nexiune vă dă posibilitatea de a folosi componentele DataControl și QuickRpt, pe care le voi des-crie în următoarele două secțiuni ale acestui capitol. Atunci când scrieți aplicații, să nu uitați nici-odată că este necesară o conectare a componentelor DataControl si QuickRpt la o sursă de date.
3.5.8. Descrierea componentelor Delphi pentru controlul datelor
TDBGrid
Acest component afișează pe ecran o grilă asemănătoare unei foi de calcul tabelar. îl puteți folosi pentru crearea unor metode de afișare asemănătoare unui browser într-o bază de date. Există două tipuri obișnuite de browsere. Primul este folosit pentru lucrul cu un singur tabel. în mod normal, vom folosi acest tip de afișare pentru căutarea datelor, apoi veți afișa un formular detaliat pentru a permite utilizatorului să vizualizeze toate datele simultan. Cel de-al doilea tip este folosit în contextul unor baze de date relaționale, de tipul „una la mai multe". Vom folosi componentul TDBGrid pentru a afișa înregistrările din bazele de date descendent, care sunt în relație cu înregistrarea curentă din cadrul bazei de date părinte.
TDBText
Ori de cîte ori doriți să creați un formular ajustat pentru a putea afișa o singură înregistrare la un moment dat, veți avea nevoie de unul sau mai multe astfel de componente. Pe scurt, ele realizează afișarea tuturor datelor de tip text pe care le conține un tabel. Utilizatorul nu poate edita (modifica) informațiile conținute de acest component. Avantajul utilizării acestui component este faptul că el își actualizează automat conținutul pe masură ce vă mutați de la o înregistrare la alta. Un component de tip TDBText necesită alocarea unei cantitați mai mari de memorie decât pentru un component TLabel. Dacă aveți nevoie să afișați zone simple de text care nu se modifică, atunci l'olosiți întotdeauna componente de tip TLabel. De exemplu, anteturile și etichetele datelor se vor implementa cu ajutorul componentelor TLabel și nu cu componente de tip TDBText.
Componentele de tip TDBEdit vă permit afișarea informațiilor sub formă de text dintr-un tabel, dintr-o interogare sau o procedură stocată. Marea diferență este faptul că acest component este, de asemenea, „data-aware", adică își actualizează automat conținutul pe măsură ce vă mutați de la o înregistrare la alta în tabel.
Există situații în care va trebui să puneți la dispoziție un component de editare pentru date care nu se modifică, și care totuși să fie inserate în tabel. De exemplu, poate veți dori să introduceți data curentă într-unul dintre câmpurile tabelului. Această necesitate poate apărea în legătură cu o înregistrare dintr-un stat de plată, sau în legătură cu vreun alt câmp aflat într-o relație de tip „una-la-mai-multe". Utilizarea unui component de tip TEdit într-o asemenea situație va economisi memorie, în condițiile în care, în cele mai multe cazuri, integritatea bazei de date nu va fi compromisă.
TDBMemo
Ca și celelalte componente de editare prezentate până acum, și componentul TDBMemo este dependent de date (data-aware). în aproape toate privințele, componentul TDBMemo se comportă la fel ca și componentul TMemo. Iată însă o facilitate interesantă, care îi este specifică. Această facilitate pune la dispoziție proprietatea AutoDisplay care – prin valoarea sa – hotărăște dacă mediul Delphi va afișa automat toate obiectele binare pe care componentul TDBMemo le-ar putea conține. Puteți atribui acestei proprietăți valoarea False pentru a reduce valoarea traficului prin rețea, și valoarea frecvenței de actualizare a imaginii de pe monitor, pentru utilizatorii aplicației dumneavoastră. Metoda LoadMemo vă permite să actualizați manual conținutul coraponentului TDBMemo. Tot ceea ce aveți de făcut este să asociați această metodă cu acțiunea unui buton Update din cadrul formularului.
Componentul TDBMemo pune la dispoziție unele facilități, altele decât facilitatea dependență de date (data-aware), care îl pot face interesant în unele situații. Cu toate acestea, el consumă mai multă memorie atât față de componentul TMemo cât și față de componentul TRichEdit. Cel mai eficient din punctul de vedere al economiei de memorie este componentul TMemo, urmat de TDBMemo componentul TRichEdit. Singura situație care ar trebui să vă determine să folosiți componente de tip TDBMemo este aceea în care aveți nevoie de facilitatea data-aware sau de facilitatea de manipulare a obiectelor binare.
TDBImage
Pentru ca să afișați o imagine dintr-un tabel, folosiți acest component. Capacitățile de manipulare a obiectelor binare de către componentul TDBImage face posibilă manipularea ceva mai mult decât a unor simple imagini grafice. De exemplu, mediul Delphi va manipula obiecte OLE grafice înglobate într-un câmp de tip BLOB al unei baze de date.
Deși un component TDBImage nu consumă prea multe resurse sistem în plus față de un component TImage, el consumă totuși destule. Având acest lucru în vedere, probabil că veți opta pentru folosirea componentelor de tip TImage ori de câte ori este posibil. De exemplu, puteți folosi componentul TImage pentru a afișa sigla companiei. Îl puteți folosi, de asemenea, pe timpul introducerii datelor în combinație cu o listă. Utilizatorul va selecta imaginea dorită alegînd-o dintr-o listă. În acest caz, componentul TImage va arăta imaginea pe măsură ce utilizatorul parcurge elementele listei.
TDBListBox
Folosesc deseori acest component pentru a afișa informații semi-statice pentru utilizatori. De exemplu, îl voi folosi pentru a afișa o listă a instituților, dintr-o evidență a corespondenței gestionată de un sistem SGBD. Avantajele stocării corespondenței sub forma unor intrări în cadrul unui tabel reduce în raod real cerințele de resurse necesare pentru stocarea anumitor tipuri de date. De exemplu, puteți stoca informația despre statul în care se află destinatarul într-un singur octet, în loc de două. Dacă aveți nevoie să adăugați la listă un alt stat, o altă țară sau vreun alt tip de informație semi-statică, nu trebuie decât să modificați, o singură dată, tabelul care conține datele. Utilizatorul va remarca imediat noua înregistrare, la următoarea rulare a aplicației.
Un alt exemplu, dacă ați stocat o listă cu date în cadrul aplicației dumneavoastră și ați folosit un component standard TListBox pentru a-l afișa, va trebui să actualizați aplicația ori de câte ori va trebui să adăugați un nou element la lista respectivă. Folosirea fișierelor de configurare pentru rezolvarea acestei probleme nu este o metodă prea elegantă. Mai mult, utilizând fișierele de configurare lăsați conținutul listei la bunul plac al utilizatorului, iar probabilitatea că el să șteargă din greșeală fișierele de configurare este destul de mare.
Un alt motiv care vine în sprijinul alegerii acestei soluții este viteza de actualizare. Ce s-ar întâmpla dacă ați fi afișat deja un anumit tip de informație semi-statică într-un anumit fel, iar șeful dumneavoastră v-ar fi spus să-1 schimbați? În mod normal, ar trebui să verificați dacă ați modificat modul de afișare a fiecărui element din listă, pe lângă modificările necesare pentru a actualiza procedurile și aplicația, în așa fel încât schimbările să se reflecte în realitate. Folosind o combinație formată dintr-un tabel și un component TDBListBox veți putea să faceți o singură schimbare în baza de date fiecare element din listă are ca fundamentare baza de date, astfel că actualizarea se face imediat.
TComboBox
Acest component lucrează la fel ca și corespondentul său, componentul TComboBox. El permite utilizatorului fie să selecteze o valoare dintre cele conținute într-o listă predefinită, fie să scrie o nouă valoare într-o casetă de editare. Diferența principală dintre aceste două componente este aceea că TDBComboBox are proprietatea „data-aware".
Dacă doriți să limitați gama de valori din care utilizatorul poate face o selecție, veți folosi un component TDBListBox. Pe de altă parte, dacă doriți să permiteți utilizatorilor să adauge noi valori, atunci un component de tip TComboBox este mult mai eficient din punctul de vedere al economiei de memorie. Vă recomand să folosiți acest component numai dacă doriți să permiteți utilizatorului modificarea conținutului unui tabel de căutare în baza de date. Desigur că acest lucru va fi limitat la stadiul unui formular cu rol de administrator, în cele mai multe cazuri.
TDBCheckBox
Folosim această metodă în relație cu valorile de tip boolean, pe care aveți nevoie să le stocați în baza de date. în situația în care caseta de validare este marcată, câmpul respectiv capătă valoarea True. Acest component oferă aceleași capacități ca și componentul TCheckBox. Marea diferență este aceea că posedă facilitatea „data-aware".
TDBRadioGroup
Acest component reprezintă o altă modalitate de implementare a unei liste scurte de elemente, cum ar fi lista de categorii de informații, despre care am vorbit mai devreme. Desigur că va trebui să limitați destul de mult numărul de valori dintre care să se poată face alegerea – ceea ce limitează destul de mult utilitatea acestui component.
În mod normal, bazele de date stochează cantități mari de informații – nu doar cinci sau șase valori. Este adevărat că ați putea folosi un tabel pentru a stoca ceva de genul unei liste scurte de categorii, cel puțin pentru motivul unei actualizări ulterioare foarte facile. Cu toate acestea, dacă lista este într-adevăr scurtă și conținutul său este foarte stabil, în așa fel încât soluția reprezentată de un grup de butoane radio să fie viabilă, atunci probabl că va trebui să optați pentru componentul TRadioGroup standard și veți stoca astfel lista local. Desigur că există un număr mare de excepții de la această regulă și multe dintre acestea au fost menționate deja atunci când am făcut referire la componentul TDBListBox, în cadrul acestui tabel.
Componentele QuickRpt
Acest set de componente reprezintă punctul care marchează jumătatea drumului ce începe cu scrierea manuală a unui cod necesar pentru implementarea unei rutine de tipărire la imprimantă și se termină cu folosirea unei aplicații externe mediului Delphi, cum este ReportSmith, pentru rezolvarea acestei sarcini. Desigur că aplicația ReportSmith va pune la dispoziție mai multe instrumente decât cele pe care le găsiți pe lista de componente QuickRpt, însă pentru a le folosi trebuie să duceți după dumneavoastră o mulțime de alte elemente su-plimentare. Pe de altă parte, din perspectiva utilizatorului, apelarea unei rutine externe pentru realizarea unei sarcini de tipărire nu este o metodă prea elegantă, dar care până la urmă rezolvă problema.
Ca și componentele din pagina Data Control veți constata că și acestea funcționează în mod similar cu corespondentele lor de uz general, cu particularitatea dată însă de sarcina specială de tipărire, pe care trebuie să o îndeplineas-că. De exemplu, componentul TQRLabel este o etichetă standard folosită pentru redirecționarea datelor către imprimantă. Veți folosi acest component pentru afișarea în cadrul unui raport a informației text care nu se modifică, cum ar fi informația referitoare la data calendaristică sau la tidul raportului. Unele dintre aceste componente sunt chiar niște extensii ale componentelor din pagina Data Control. De exemplu, varianta tipărită la imprimantă a componentului TDBText este un component TQRDBText. Ele fac același lucru, dar în tnedii diferite. Pe de altă parte, componentul TQRPreview este conceput strict în relație cu sarcina de tipărire la imprimantă – nu îl veți folosi în cadrul unui formular pentru nimic altceva.
3.5.9.Descrierea componentelor folosite din mediul Delphi din pagina QuickRpt
TQuickReport
Acesta este componentul esențial pentru generarea rapidă a unui raport. El îndeplinește sarcinile privind datele și tipărirea la imprimantă. Pentru a folosi acest component, includeți-1 într-un formular și atribuiți proprietății sale DataSource valoarea reprezentată de numele componentului TTable sau TQuery, care conține datele pe care doriți să le tipăriți la imprimantă. Pentru a formata într-un anumit fel documentul tipărit, adăugați formularului componente cum sunt TQRBand și TQRDBText. Cele două metode principale pe care le veți folosi cu acest component sunt Preview și Print. Pentru a-1 folosi pe primul va trebui să adăugați formularului dumneavoastră un component TQRPreview. Modul de afișare Preview pune la dispoziție și posibilitatea de a declanșa operațiunea de tipărire, îndată ce utilizatorul a văzut cum va arăta documentul.
TQRBand
În esență, o „bandă" este un tip de date singular în cadrul unui raport. Corel Draw folosește această abordare atunci când tipărește la imprimantă diferite niveluri sau zone care țin de fișierul în format grafic curent. Prin schimbarea valorii asociate proprietății BandType, aveți posibilitatea de a modifica tipul benzii. Există o diversitate de tipuri de benzi, care conțin titlul, conținutul propriu-zis, grupuri, note de subsol și anteturi. Ceea ce face, de fapt, componentul TQRBand nu este altceva decât separarea datelor cuprinse în documentul de tipărit, în diferite porțiuni utilizabile.
TQRGroup
TQRGroup este un tip special de component de afișare. El nu afișează direct datele așa cum face un component de editare, ci pune datele la dispoziția raportului ori de câte ori sunt solicitate informații specifice grupului. Pentru a utiliza acest component trebuie să definiți o sursă de date și un câmp de date, la fel cum procedați și în cazul altor componente al căror rol este de a afișa datele. O modificare a valorii câmpului de date semnalează sfârșitul grupului. îndată ce ați definit aceste două proprietăți, va trebui să comunicați mediului Delphi unde să plaseze informația de grup. Aici este locul în care intră în scenă proprietățile HeaderBand și FooterBand -acestea precizează mediului Delphi unde să plaseze infonnația pe care ați furnizat-o. în mod normal, pentru a produce un raport master detaliat, veți cupla un component TQRGroup cu un component TQuery. Rațiunea principală de folosire a componentului TQRGroup este justificată atunci când aveți nevoie să creați rapoarte care conțin mai mult de două niveluri de informații grupate. Dacă aveți nevoie de detalii organizate pe mai multe niveluri de informație, atunci componentul cel mai indicat spre a fi folosit este TQRDetailLink.
TQRDetailLink
Vom folosi acest component pentru a crea rapoarte master/detail pe baza mai multor tabele cu date situate pe același nivel. Aceasta este cea de-a doua metodă prin care se pot realiza rapoarte master/detail (prima metodă este cea reprezentată de componentul TQRGroup). Acest component funcționează prin cuplarea unui component TQRDetailLink cu o bandă a unui grup care conține informații de detaliu. Veți specifica numele tabelului principal pe post de sursă de date pentru componentul TQRDetailLink. Raportul va tipări la imprimantă un grup de informații pentru fiecare înregistrare conținută în tabelul principal.
TQRLabel
Acest component este un component standard de tip Label, dar care este proiectat pentru direcționarea informațiilor către imprimantă, și nu către ecran (cu toate acestea, în faza de proiectare a aplicației puteți vedea continutul componentului). El vă permite să afișați capetele de coloane și alte date care nu se modifică. Dacă doriți să afișați datele dintr-un tabel, atunci va trebui să folosiți componentul TQRText.
TQRMemo
Acesta este un component standard de tip Memo, dar care este proiectat pentru direcționarea informațiilor către imprimantă. în legătură cu folosirea lui trebuie spus că, spre deosebire de afișarea informației pe monitor, informația destinată a fi tipărită la imprimantă nu poate folosi componentele de tip bară de derulare. înseamnă că un text care poate fi afișat integral pe ecran de către componentul TQRMemo nu va putea apărea și în raportul tipărit. Deoarece acest component ia întotdeauna în calcul același necesar de spațiu de memorie – chiar dacă informația text continută în câmpul Memo nu este suficientă pentru a-l ocupa – atunci va trebui să determinați mărimea componentului însuși, în conformitate cu cantitatea de date pe care doriți să o tipăriți la imprimantă. Desigur, această metodă nu este cea mai potrivită pentru afișarea unui text, dar are meritul că funcționează. Spre deosebire de alte componente care funcționează în relație cu bazele de date, nu veți completa cu date conținutul unui component Memo prin specificarea unei surse de date și a unui câmp de date. Acest component folosește proprietatea TStrings pentru a determina tipul datelor pe care le va afișa. Desigur, acest component nu este unul de tip „data-aware", astfel că va trebui să aveți grijă atunci când îl utilizați.
TQRDBText
Componentul TQRDBText este probabil componentul pe care îl veți folosi cel mai des pentru afișarea datelor. Modul său de funcționare este similar cu cel al componentului TDBText, cu deosebirea că trimite datele către imprimantă și nu către ecran. Folosind proprietățile DataSource și DataField puteți specifica datele pe care componentul le va tipări la imprimantă.
TQRSysData
Consider că acest component este foarte util prin faptul că folosind un singur component am posibilitatea de a afișa data sau ora curentă, titlul raportului sau numărul paginii, sau mulți alți parametri ai sistemului. Pentru mine, un interes special l-a prezentat proprietatea prin care se pot contoriza detaliile. Am putut folosi această proprietate pentru a plasa un număr în dreapta sau în stânga fiecărei linii care conține detalii. Singura proprietate căreia trebuie să-i acordați atenție atunci când folosiți acest component este proprietatea Data, care definește tipul datelor pe care doriți să le vedeți (tipăriți).
TQRPreview
Personal, consider că acest component este poate partea cea mai elaborată a unui raport. El vă permite afișarea pe ecran a raportului curent. Utilizatorul se poate deplasa pagină cu pagină în cadrul raportului, sau îl poate direcționa spre tipărire la imprimantă. Există chiar și un factor de scalare astfel că se poate face o mărire a unei anumite porțiuni selectate dintr-un raport. Vom vedea imediat cum lucrează acest component.
Acum, după ce ați avut ocazia de a trece în revistă componentele QuickRpt, v-ați putea întreba ce vă poate determina vreodată să le folosiți. Unele dintre acestea, cum ar fi TQRShape, nu par a fi în măsură să stâmească interesul cuiva. Pe de altă parte, componentul TQRPreview cred că este bine gândit, bine realizat și foarte util, chiar și fără un cod suplementar atașat lui. (Chiar mă întreb dacă nu cumva programatorii se vor plânge de faptul că tipul Quick Reports de componente face o parte prea mare din munca pe care ar trebui să o facă ei.) Iată un motiv important care poate justifica opțiunea pentru crearea rapoartelor cu ajutorul componentelor interne Delphi (com-ponente de tip QuickRpt) și nu opțiunea reprezentată de apelul la serviciile unei aplicații externe (de exemplu ReportSmith). Motivul îl constituie faptul că atunci cînd terminați lucrul la aplicație, obțineți un pachet integrat. Nu este necesar să aveți în execuție vreo versiune a unei alte aplicații pe care ar trebui să o distribuiți clientului dumneavoastră. Toate lucrurile de care are nevoie clientul există în aplicația dumneavoastră.
Există și un al doilea motiv interesant pentru dumneavoastră ca programator. Pentru a crea rapoarte personalizate este nevoie de prea mult timp, iar pentru a putea face cât de cât ceva util folosind aplicația ReportSmith este necesar să învățati limbajul BASIC. Este clar că veți economisi timp folosind rapoartele rapide (care se obțin folosind elementele QuickRpt), în ciuda limitărilor pe care le au în prezent, pentru aproape orice fel de rapoarte, mai puțin pentru realizarea celor complexe.
Nu aș fi deloc suprins dacă, în următoarea versiune a mediului Delphi, Borland va face din QuickRpt categoria principală de componente pentru crearea rapoartelor. Această categorie pune la dispoziție facilitatea pe care aș fi dorit să o conțină prima versiune o cale rapidă de creare a unui rapbrt fără să fie nevoie să înveți un noul limbaj de programare. Se economisește mult timp prin folosirea componentelor QuickRpt în locul aplicației externe ReportSmith.
IV. PARTEA ECONOMICĂ
Managementul ca știință are o amploare deosebită în întreaga lume, alături de științele economice deja recunoscute, datorită tehnicilor pe care le utilizează în abordarea problemelor dificile cu care se confruntă organizațiile de pretutindeni. Tranziția la economia de piață presupune modificarea conceptului de planificare, care rămîne și în prezent una din etapele de bază ale organizării.
Datorită trecerii la economia de piață, întrebarea cu planificarea pe termen îndelungat rămîne și azi una din cele importante. În aceasta luptă concurența o cîștigă sau o va cîștiga acela care este mai larg văzător și alege o strategie teoretic argumentată, atrage pentru soluționarea problemelor potențialul științific și ideile avansate.
Argumentarea economică se va efectua în două etape:
1) Evaluarea cheltuielilor legate de elaborare;
2) determinarea eficienței economice.
4.1. Planificarea rețea a elaborării proiectului
Proiectele tehnologice contemporane sunt caracterizate de următoarele particularități:
tehnica nouă utilizată este foarte complexă și este construită utilizând ultimele elaborări științifice;
accelerarea vitezei de elaborare a proiectelor;
proiectele referitoare la complexele tehnicii de calcul și softului sunt supuse uzurii morale foarte rapide;
necesitatea proiectării de sistemă la elaborarea softului și sistemelor tehnice.
Toate acestea au dus la necesitatea de creare a noi metode de planificare. Una din aceste metode prezintă modelarea procesului de elaborare, adică prezentarea legăturilor și caracteristicilor lucrărilor în procesul elaborării proiectului. Metodele tradiționale de planificare presupun utilizarea celor mai simple modele de tipul construirea diagramelor de tip consecutive și ciclice.
Dar în asemenea diagrame nu este posibil de a prezenta legăturile dintre niște lucrări, de unde rezultă imposibilitatea de a afla cât de importantă este lucrarea dată pentru executarea scopului final. Pot apărea diferite întârzieri în timp, ce apar pe porțiuni de interconectare a lucrărilor, care sunt complicat de prezentat în diagrame. De obicei, în procesul dirijării se culege informația despre lucrările efectuate și aproape nu se culege și nu se prezintă informația referitor la prognoza finisării lucrărilor viitoare, de aceia este imposibil de a prognoza rezultatele diferitor variante de soluționare la modificările planului inițial de lucru. Este de asemenea complicat de a reflecta și dinamica lucrărilor, de a corecta toată diagrama în legătură cu schimbarea termenilor de efectuare a unei lucrări, ce este necesar de a efectua ca să nu schimbăm termenul de efectuare a întregului complex de lucrări.
Aceasta este doar o parte mică din neajunsurile metodelor utilizate în prezent pentru planificare și prezentarea grafică a planurilor de pregătire a producerii. Aceste neajunsuri în mare pare sunt excluse de către sistemele de planificare și dirijare rețea utilizate în prezent.
Sistemele de planificare și gestiune rețea prezintă un complex de metode grafice și de calcul, metode de control și de organizare, care asigură modelarea, analiza și reconstruirea dinamică a planului de executare a proiectelor complexe.
Sistemul de planificare și gestiune rețea este o metodă cibernetică creată pentru gestiunea cu ajutorul sistemelor dinamice complexe cu scopul asigurării condiției de optim pentru careva indicatori. Așa indicatori, în dependență de condițiile concrete, pot fi:
timpul minim pentru elaborarea întregului complex de lucrări;
costul minim al elaborării proiectului;
economia maximală a resurselor.
Particularitățile sistemului de planificare și gestiune rețea în general sunt următoarele:
se realizează metoda proiectării de sistem la rezolvarea problemelor de organizare a gestiunii proceselor.
se utilizează modelul informațional-dinamic special (graful-rețea) pentru descrierea matematico-logică a procesului și calculul automat (conforma algoritmului) a parametrilor acestui proces (durata, costul, forțele de muncă, etc.)
se utilizează sisteme de calcul pentru prelucrarea datelor operative pentru calculul indicatorilor și primirea rapoartelor analitice și statistice necesare.
Documentul de bază în sistemul de planificare și gestiune rețea este graful-rețea (modelul rețea), care prezintă modelul informațional-dinamic, în care sunt prezentate legăturile și rezultatele tuturor lucrărilor, necesare pentru atingerea scopului final.
Toate cheltuielile legate de elaborare se determină conform devizei cheltuielilor pe anumite elemente ale cheltuielilor. Aceste din urmă includ cheltuieli materiale, de muncă și cheltuieli complexe – legate de întreținerea managementului.
Pentru determinarea volumului de lucru a persoanelor responsabile în îndeplinirea proiectului mai întâi de toate se elaborează lista tuturor etapelor și tipurilor de lucrări care sunt necesare de efectuat. Aici trebuie de acordat o deosebită atenție ordinii logice a îndeplinirii lucrărilor. La baza unei astfel de ordini se află analiza conținutului lucrării și determinarea corelației dintre etape.
O importanță deosebită în procesul de analiză o are posibilitatea efectuării paralele a unor lucrări, deoarece acest fapt duce la micșorarea timpului total de efectuare a proiectului. Fiecare tip de lucrare necesită un anumit nivel de calificare a personalului, de aceea oricare etapă își are lucrătorul ei.
Toate cheltuielile legate de elaborare se determină conform devizei cheltuielilor pe anumite elemente ale cheltuielilor. Aceste din urmă includ cheltuieli materiale, de muncă și cheltuieli complexe – legate de întreținerea managementului.
Pentru determinarea volumului de lucru a persoanelor responsabile în îndeplinirea proiectului mai întîi de toate se elaborează lista tuturor etapelor și tipurilor de lucrări care sunt necesare de efectuat. Aici trebuie de acordat o deosebită atenție ordinii logice a îndeplinirii lucrărilor. La baza unei astfel de ordini se află analiza conținutului lucrării și determinarea corelației dintre etape.
O importanță deosebită în procesul de analiză o are posibilitatea efectuării paralele a unor lucrări, deoarece acest fapt duce la micșorarea timpului total de efectuare a proiectului. Fiecare tip de lucrare necesită un anumit nivel de calificare a personalului, de aceea oricare etapă își are lucrătorul ei.
Tab.1
Biblioteca evenimentelor și lucrărilor, efectuate în procesul elaborării
Sistemului Informațional
Continuarea tabelului nr.1
Tab. 2.
Durata efectuării lucrărilor
Tab.2 (continuare)
În figura 8 este prezentată schema reprezentării grafice a grafului-rețea :
unde: cercul – un eveniment;
săgeata – o lucrare;
tij – durata lucrului ij;
Rlij – rezerva liberă de timp a lucrului ij;
Rdij – rezerva deplină de timp a lucrului ij;
Tdi – timpul devreme de începere a evenimentului i;
Tti – timpul târziu de terminare a evenimentului i;
Ri – rezerva liberă de timp a evenimentului i;
Ni – numărul evenimentului i;
Tdj – timpul devreme de începere a evenimentului j;
Ttj – timpul târziu de terminare a evenimentului j;
Rj – rezerva liberă de timp a evenimentului j;
Nj – numărul evenimentului j.
Parametrii calculați ai grafului rețea sunt prezentați în tabelul 3.
Tab. 3.
Calculele parametrilor grafului rețea
Tab.3 (continuare)
Graful-rețea este desenat conform parametrilor calculați și este prezentat în figura 9.
Evaluarea economică a Sistemului Informațional
Din graful-rețea vedem că proiectul durează 34 de zile. Adăugăm o zi de rezervă și obținem 35 de zile sau 7 săptămâni cu 5 zile lucrătoare cu câte 8 ore lucrătoare. Salariul săptămânal al lucrătorilor este prezentat în tabelul 4.
Salariul săptămânal alcătuiește 675 lei. Pe durata proiectului salariul de bază alcătuiește:
7 675 = 4725 lei
Salariul suplimentar (25% din salariul de bază):
4725 25% = 1182,25 lei 1182 lei
Defalcări în Fondul Social (29%)
(4725 + 1182) 29% = 1713,03 lei 1713 lei
Tab. 4
Componența grupului de lucru
Să calculăm cheltuielile de energie electrică. Un calculator personal obișnuit nu are o putere mai mare de 200 W. Toate calculatoarele în sumă vor cheltui 400 W. Pe parcursul proiectului, timp de 35 de zile vor fi consumate:
400 35 8 = 112000 W = 112 kW h
La momentul actual un kW h costă 0,68 lei, deci cheltuielile vor fi:
112 0,68 = 76,16 76 lei
Tab. 5
Costul softului și hardului procurat
Tab. 6.
Costul materialelor utilizate
Deoarece procurarea softului și hardului în domeniul Tehnologiilor Informaționale este considerată investiție capitală, v-om calcula amortizarea acestor cheltuieli pe timpul lucrat fiindcă aceste propuse sânt supuse uzurii morale rapide:
A=S*N*t,
unde: S – suma fondului de amortizare;
N – norma anuală de amortizare,%;
t – perioada de elaborare a proiectului în ani.
A= 33200*0,2*(35/365)=636,71637 lei
Pentru studierea domeniilor noi a fost procurată literatură în sumă de 450 lei.
Tab. 7
Calculul prețului de livrare a Sistemului Informațional
4.3. Evaluarea eficienței implementării Sistemului Informațional
Evaluarea eficacității perfecționării Sistemelor Informaționale cu ajutorul formulei:
Ean = [(Cv + En Kv) – (Cn + En Kn)] Nsoft
unde: Kv – costul fondurilor fixe pentru sistemul vechi;
Cv – cheltuielile de exploatare a sistemului vechi;
Kn – costul fondurilor fixe pentru sistemul nou;
Cn – cheltuielile de exploatare sistemului nou;
En – coeficientul normativ a eficienței investițiilor capitale;
Nsoft – numărul de sisteme informaționale perfecționate.
Toate datele se raportează la un an de exploatare. Pentru sisteme soft coeficientul normativ al eficienței investițiilor capitale En este egal cu 0,35.
En=0,35
În mediu pe an vor fi perfecționate 2 sisteme informaționale,adică
Nsoft=2;
Pentru ambele cazuri avem nevoie de două calculatoare și două modemuri (un calculator – 6600 lei , modem – 6000 lei).În cazul folosirii sistemului vechi este nevoie de două medii de programare, iar în cazul implementării sistemului nou – doar de unul singur (un mediu de programare – 8000 lei).
Costul fondurilor fixe va fi următorul:
Kv=2*6600+2*6000+2*8000=41200 lei
Kn=2*6600+2*6000+1*8000=33200 lei
Cheltuielile de reparație a tehnicii (două calculatoare și două modemuri) alcătuiesc 5% din costul ei:
Rv=Rn=25200*5%=1260 lei
Cheltuielile de energie electrică pentru două calculatoare ce au o putere de 0,200 kW timp de 260 de zile lucrătoare a cîte 8 ore lucrătoare și 0,68 lei pentru un kW*h:
Eel=2*0,2*260*8*0,68=565 lei
În cazul instalării unui nou sistem de programare cheltuielile vor fi:
Sv=10000 lei;
Sn=8000 lei;
Să calculăm cheltiuelile de exploatare a sistemului:
Cv=Rv+Eel+Sv= 1260+565+10000=11825 lei;
Cn=Rn+Eel+Sn= 1260+565+8000=9825 lei.
Eficacitatea utilizării sistemului de depistare a plagiarismului:
Ean=[(11825+0,35*41200)-(9825+0,35*33200)]=15258 lei
Timpul de recuperare a sistemului nou va fi:
Trec=Kn/Ean=2 ani
Coeficienrul de eficiență a investițiilor capitale primit din calcule este:
Ec=1/Trec=0,5>0,35
Din rezultatele obținute vedem că utilizarea Sisstemului Informațional este economic argumentată.
V. PROTECȚIA MUNCII
5.1. Aprecierea pericolului la monitor
Odată cu dezvoltarea tehnicii de calcul tot mai mult se atrage atenția asupra problemelor protecției utilizatorilor, în special acelor care lucrează la calculator, adică lângă monitor. Principalii factori dăunători, care influențează asupra sănătății omului, când acesta lucrează lângă monitor sunt:
radiația sau iradieri ionizate;
câmpul electrostatic;
câmpul electromagnetic, etc.
Iradieri Ionizate reprezintă iradierea electro-magnetică cu o capacitate de ionizare a moleculelor. Dacă se provoacă ionizarea moleculelor organismului uman, atunci legăturile între molecule se distruge și ca rezultat apar diferite boli. Capacitatea de ionizare o au următoarele particule: X- iradieri, fluxul de electroni, substanțele radioactive.
În cazul monitoarelor cel mai semnificativ tip de iradiere ionizată este – iradiere, care însă este foarte mică, de obicei nu depășește normele biologice. Celelalte tipuri de iradieri pot fi neglijate deoarece greu pot fi depistate.
– iradierea apare în urma ciocnirii electronilor cu atomii substanței luminofore sau cu atomii ecranului din sticlă.
Pentru a micșora iradierea ionizată a monitoarelor moderne, pe suprafața lor se aplică o foaie metalică străvezie, care atenuează fluxul de iradiere. O altă cale de apărare împotriva iradierii ionizate este procurarea unui ecran protector, care se instalează pe monitor.
În genere iradierea ionizată asupra omului poate provoca următoarele acțiuni:
locale – acțiuni de scurtă durată cu doze mari, care aduce la traume locale: îmbolnăvirea pieii, pierderea pieii, pierderea unghiilor, defectarea oaselor, cancer;
totale – reprezintă iradieri îndelungate cu doze mici, aduce la îmbolnăvirea sângelui (leucemie).
Cîmpul electrostatic, care apare pe ecranul monitorului este rezultatul bombardării permanente a monitorului cu fascicolul de electroni emis de catod. Astfel sarcina electrică, care se acumulează pe suprafață monitorului, formează câmpul electrostatic. Fenomenul electrizării statice este legat și de starea aerului din mediu. În condiții normale aerul se caracterizează cu proprietăți izolatorii înalte, însă sub acțiunea razelor solare și celor cosmice, radiației materialelor radioactive a scoarței pământului și a altor factori ionizatori, moleculele neutrale a aerului se ionizează, formând ioni pozitivi și negativi – purtători ai sarcinii electrice. Dacă intensitatea câmpului electric, format de materialele, de dispozitivele de curent continuu și de obiectele, care ușor se electrizează, este mare, atunci ionii liberi obțin energie cinetică suficientă pentru a forma ioni noi la ciocnirea lor cu moleculele neutre. În urma ionizării aerul își pierde proprietatea sa de izolator (devine conductibil) și descărcarea electrică latentă se transformă într-o descărcare sferică, adică are loc o străpungere electrică a aerului.
Descărcarea electricității statice poate provoca o explozie, incendiu și alte accidente. La unele întreprinderi, care produc substanțe sintetice, polimeri și produse din aceste substanță, și care posedă proprietăți dielectrice înalte, electrizarea micșorează productivitatea muncii și este unul din motive care duc la scăderea calității producției.
Influența sistematică a câmpului electrostatic de intensitate înaltă asupra corpului omului poate duce la unele dereglări funcționale a sistemului central nervos, a sistemului cardio-vascular și a altor organe. Din aceste motive, intensitatea maxim-admisibilă a câmpului electric la locurile de muncă este normată:
Tab. 8
Intensitatea maxim-admisibilă a câmpului electric la locurile de muncă
Intensitățile admisibile a câmpului electrostatic sânt indicate fără a lua în considerație influența asupra omului a descărcărilor electrice. Normele indicate pentru intensitatea câmpului electrostatic mai mare de 20 kW/m se utilizează numai cu condiția, restul timpului a zilei de lucru intensitatea nu întrece 20 kW/m. Dacă intensitatea câmpului electrostatic între ce valorile indicate, atunci se aplică unele măsuri de micșorare a ei.
Măsurile principale de micșorare a intensității câmpului electric în zona de lucru sânt:
îndepărtarea surselor a câmpurilor electrostatice din zona personalului care deservește aparatura;
ecranarea sursei câmpului sau a locului de muncă;
utilizarea neutralizatorilor de sarcini electrice statice;
umezirea materialului care se electrizează;
schimbarea materialelor, care ușor se electrizează cu materiale ce nu se electrizează;
alegerea suprafețelor care contactează conform condițiilor de electrizare minimă;
modificarea procesului tehnologic în așa mod ca să se micșoreze nivelul de electrizare;
alegerea materialelor și suprafețelor care greu electrizează alte corpuri sau le electrizează cu sarcini de polaritate diferită;
instalarea în toate încăperile, unde se află oameni, a podelelor care conduc curentul electric.
În calitate de măsură de protecție individuală a omului de la electricitatea electrostatică poate servi încălțămintea ce conduce curentul electric, albituri, halat, etc. adică tot ce asigură legătura electrică a corpului omului cu pământul.
În majoritatea monitoarelor moderne problema câmpului electrostatic este parțial rezolvată prin introducerea tehnologiei antistatice. Datorită acestei tehnologii câmpul electrostatic se micșorează până la 10% din intensitatea inițială a acestuia. În afară de această majoritatea ecranelor protectoare, care micșorează iradierea ionizată, mai sigură și atenuarea considerabilă a câmpului electrostatic.
Cîmpul electromagnetic creat de monitor este de asemenea un factor dăunător sănătății.
Influența cîmpurilor electromagnetice de mare intensitate asupra omului constă în absorbția de către țesuturile corpului uman a energiei, însă influența principală îi revine câmpului electric. Nivelul de influență a câmpurilor electromagnetice asupra omului depinde de frecvență, de puterea emisiei, de durata acțiunii, de regimul de emisie (prin impulsuri sau continuu), și de asemenea de proprietățile individuale ale organismului. Influența câmpului electric de frecvență joasă provoacă dereglări în activitatea funcțională a sistemului cardio-vascular, și chiar la schimbări privind componența sângelui.
Influența câmpului electromagnetic de frecvență înaltă se reflectă sub forma efectului termic, care duce la ridicarea temperaturii corpului, la supraîncălzirea locală a țesuturilor corpului și a organelor cu o termoreglare slabă. Ca rezultat unii lucrători suferă din cauză insomniei, simt dureri în regiunea inimii, dureri de cap, ușor obosesc.
Pentru a micșora puterea de emisie a sursei câmpului electromagnetic pot fi utilizate următoarele mijloace tehnice:
utilizarea unui astfel de regim de lucrul, în care dispozitivul lucrează cu o putere mai mică decât cea proiectată;
lichidarea locurilor de emisie suplimentară;
micșorarea undelor reflectate prin ajustarea sarcinilor, etc.
Alegerea corectă a regimului de lucru a personalului și a utilajului permite micșorarea prezenței omului în zona de acțiune a câmpurilor electromagnetice.
Utilizarea sistemelor de dirijare la distanță cu utilajul permite personalului să-și îndeplinească funcțiile în afara zonei de acțiune a câmpurilor electromagnetice.
Procesul de ecranare, des utilizat cu scopul de micșora influența câmpurilor electromagnetice, utilizează fenomenul de absorbție și reflectare a energiei câmpului electromagnetic. Pentru confecționarea ecranului se utilizează materiale cu o conductibilitate electrică înaltă (aluminiu, cupru, oțel), și cu proprietăți de absorbție și reflectare sub formă de foi și plasă. Ecranele obligatoriu se unesc la pământ.
Eficacitatea acțiunii de ecranare a materialului se caracterizează prin adâncimea infiltrării câmpului electromagnetic în ecran, care depinde de materialul de confecționare.
Adâncimea infiltrării câmpului electromagnetic, la care acest câmp scade de 2,718 ori:
unde – permeabilitatea magnetică relativă a materialului ecranului, Hn/m;
– conductibilitatea relativă a materialului ecranului, cm/m;
f frecvența câmpului electromagnetic Hz.
Adâncimea infiltrării a frecvențelor înalte și supraînalte în ecran de obicei nu întrece un milimetru, astfel grosimea ecranului se alege din considerente constructive.
5.2. Calcularea iluminatului artificial în încăpere
Calculul iluminatului artificial în încăpere se efectuiază după formula:
Fl = 1674,4 lm
unde:
E n- iluminarea minimă;
En = 500 lc
Sp – aria podelei;
Sp = 24 m2
Z – coeficientul iluminării neuniforme;
Z = 0.9
K – coeficientul de rezervă care ține cont de preluarea și învechirea becurilor;
K = 1.2
N – numărul de instalații de iluminat;
N = 6
n – numărul becurilor la o instalație;
n = 3
– coeficientul de randament al instalației de iluminat, se găsește în dependență de indiciile încăperii;
= 0.43*100%, care se calculează după formula.
i = 1.2
unde:
A,B – lungimea și lățimea încăperii, m;
A = 6m, B = 4m
Hl – înălțimea instalației de iluminat până la suprafața de lucru; Hl = 2m
Deoarece F = 1674.4lm – tipul de becuri luminiscente ЛДЦ cu fluxul de lumină 1520lm și puterea 40Wt.
5.3. Analiza condițiilor de muncă. Factorii dăunători și periculoși la locul de lucru
Analiza condițiilor de lucru și aprecierea factorilor dăunători se efectuiază conform cerințelor și standardelor elaborate special de comisiile pentru Tehnica Securității care sunt ca criterii de bază pentru analiza condițiilor la locul de lucru. Analiza se efectuiază conform STAS 12.1.05
Tab. 9
Factorii de protecție a muncii
Tab. 9(continuare)
5.4. Cerințele ergonomice privind locul de muncă
Ergonomia și estetica procesului de producere sunt părți componente ale culturii procesului de producere, adică complexului măsurilor de organizare a muncii îndreptate spre crearea condițiilor de lucru prielnice. La baza ridicării culturii de muncă stau cerințele organizării științifice a procesului de muncă. Cultura procesului de muncă poate fi atinsă prin organizarea corectă a procesului de muncă și a relațiilor între coloboratori, organizarea locurilor de muncă, transformarea estetică a mediului înconjurător. Pentru crearea condițiilor de muncă plăcute este necesar de a considera particularitățile psihofiziologice a omului și condițiile igienice generale.
Iluminarea rațională a încăperilor de lucru stă la baza ridicării eficacității de lucru, preîntîmpină oboseala generală și a văzului, crează condiții psihologice optimale și determină dispoziția bună. Iluminarea naturală suficientă creează simțul de legătură directă cu mediul înconjurător. Este necesar de subliniat acțiunea biologică binevenită a razelor solare. De aceea este necesar de amplasat locurile de muncă în așa mod încât ele să nimerească în zona atingerii razelor solare. În dependență de condițiile de muncă și particularitățile lucrului îndeplinit, pentru iluminarea artificială pot fi folosite instalațiile de iluminat, generale și locale, cu o anumită caracteristică de lumină. Lămpile de lumină
directă au fost folosite limitate din cauza creării umbrelor abrupte. Lămpile de lumină reflectată pot fi folosite în cazuri când este necesitatea de o lumină omogenă și slabă. Lămpi de lumină semireflectată ce sunt echipate cu abajur din sticlă mată, care posedă proprietăți de a dispersa lumina se află pe masa de lucru. În calitate de instalație de iluminat general este recomandabil de folosit lămpi cu lumina dispersată. Lămpile de iluminare locală trebuie să fie mobile și la necesitate să asigure schimbarea direcției luminii. Fiecare loc de muncă, indiferent de amplasarea lui față de ferestre trebuie să aibă și instalație de lumină locală. Este recomandabil de folosit lămpi luminescente, spectrul luminii cărora aproape coincide cu cel al luminii naturale. Pentru a exclude reflectarea razelor directe ale luminii de pe ecranul monitorului instalațiile de iluminare se aranjează pe ambele părți de la locul de muncă, paralel cu direcția văzului operatorului, și peretele cu ferestre (desenul 1).
Unde:
1 – ferestre;
2 – instalațiile de iluminat;
3 – locul de muncă;
O astfel de amplasare a instalațiilor de iluminat permite de a le conecta consecutiv în dependență de mărimea iluminatului natural și exclude iritarea ochilor de către linii alterate de lumină și umbră, care apare la amplasare lor paralelă.
Oformarea cu culori a încăperilor și înverzirea lor nu numai micșorează tensiunea nervoasă dar și permanent susține buna dispoziție a lucratorilor și inspirația creativă în lucru.
Culoarea încăperilor de lucru influențează esențial asupra iluminării, stării psihofiziologice a omului, ansamblului arhitectural al încăperii. Este cunoscut că nuanțele întunecate au proprietatea de a consuma o parte mare a luminii și prin aceasta micșorează iluminarea încăperii. Pentru oformarea cu culori a încăperilor se propune de a folosi în primul rând acele culori care reflectă cel puțin 40-50% de lumină care cade pe o suprafață. Culorile pentru oformare a încăperilor trebuie să fie alese în conformitate cu condițiile climaterice. Culorile galben-verzi și verde-albastru influențează în mod liniștitor, pe când culorile albastru deschis, albastru, violet pot influența în mod depresiv. La oformare cu culori a încăperilor trebuie de luat seamă de amplasarea ferestrelor, particularitățile arhitecturale ale încăperilor. Pentru asigurarea condițiilor de lucru optimale, oformarea cu culoare trebuie să fie alese ținând cont de culorile monitorului. În cazul paletei monocrome, peretele înaintea operatorului trebuie să fie vopsite cu culoarea verde deschisă sau bej, iar în cazul paletei colorate – culoarea bej.
Un rol important îl joacă organizarea locului de muncă, care trebuie să satisfacă cerințele comodității a efectuării lucrului și economisirii energiei și a timpului operatorului și utilizării raționale ale suprafețelor de lucru. Este necesar de stabilit zonele de atingere a mîinelor operatorului de display-ul, imprimantă și alte dispozitive periferice. Zonele date sunt stabilite pe baza datelor antropometrice ale corpului uman, permit de a amplasa corect elementele de dirijare.
Mișcările lucrătorului trebuie să fie de așa fel, ca grupurile de mușchi ale lui vor fi încărcate omogen, iar mișcările neproductive vor fi excluse.
Locurile de muncă trebuie să fie aranjate tot în conformitate cu cerințele comodității lucrului și optimizării mișcării. Locul de muncă de obicei este constituit dintr-un birou, scaun, o poliță pentru literatura profesională des folosită. Distanțele între componentele menționate trebuie sî fie optimale, care nu limitează mișcările și în acelaș timp nu provoacă mișcări de prisos.
5.5. Condiționarea aerului
Parametrii necesari al microclimei în încăperile de producție se asigură prin diferite metode. Pentru menținerea normelor aflării substanțelor dăunătoare în aer la locul de lucru se iau măsuri aspre: izolarea izvoarelor de substanțe dăunătoare, limitarea timpului de aflare a oamenilor în încăperile cu conținutul atmosferic dăunător, folosirea tehnologiilor avansate pentru micșorarea conținutului de substanțe dăunătoare în aer.
Una din tehnicile de folosire în procesul de producție pentru eliminarea substanțelor dăunătoare din aerul zonei de lucru este ventilarea. Sistemele de ventilare asigură parametrii necesari ai microclimei în aerul de lucru. Ventilarea este divizată în două categorii în dependență de natura acesteia: ventilarea naturală și ventilare artificială.
La ventilarea artificială schimbul de aer se efectuiază cu ajutorul ventilatorului prin sistemele de canale cu aer. Reeșînd din principiul de lucru a ventilatorului, ventilarea artificială se clasifică în următoarele categorii: de tragere, de extragere, de tragere-extragere. În sistemele de ventilare artificială aerul tras în încăperea de lucru poate fi uscat, umezit, răcit. Adică parametrii aerului tras, la ventilarea artificială pot fi schimbați.
În prezent pentru asigurarea normativelor de ventilare a aerului zonei de lucru sunt folosite dispozitive de condiționare a aerului. Cu ajutorul dispozitivului de condiționare aerul poate fi uscat, umezim, ozonat, dezodorat, răcit sau încălzit.
Conform normativelor sanitar-igienice fiecărui lucrător trebuie de-i asigurat de la 20 m3/oră până la 30 m3/oră. Raportul între volumul încăperii și numărul de persoane care lucrează în această încăpere nu trebuie să fie mai mic decât 20 m3.
În lipsa substanțelor dăunătoare în încăpere, dacă volumul de aer pentru un lucrător e mai mare de 40 m3, normativele de ventilare nu sunt reglementate.
Deoarece sala laboratorului catedrei intră în categoria I – raportul volumului de aer din laborator și numărul de persoane care se află în laborator în timpul lucrărilor este mai mic decât 20 m3 pentru o persoană, aerul zonei laboratorului trebuie ventilat. Volumul de aer care trebuie să fie tras să fie în diapazonul de 20m3/oră pentru o persoană până la 30 m3/oră. Deci trebuie de ales un așa tip de dispozitiv de condiționare care ar asigura cerințele expuse mai sus.
Un așa tip de aparat poate servi dispozitivul de tip BK – 1000, care are următorii parametrii tehnici:
Volumul de aer tras – 1000 m3/oră;
Tensiunea de alimentare 220 V, 50 Hz
1 – canalul aerului din afară
2 – canalul aerului recirculant
3 – filtrul
4,7 – încălzitoare de aer
5 – injectoare
6 – separatorul de picături
– aerul condiționat
5.6. Date din pașaportul tehnic ale condiționerului BK- 2500
Tab.10
5.7. Cerințele securității tehnice la începutul lucrului
Până la începutul propriu zis a lucrului practic în laborator, studenții sunt obligați să studieze locul său de lucru: dislocația dispozitivelor aflate sub tensiune, a întreprinderilor de curent, caracteristica tehnică a utilajului, instrucțiunile de exploatare a dispozitivelor folosite la efectuarea lucrărilor de laborator. Trebuie de studiat principiul de lucru a echipamentului și metodele de operare inofensive în timpul lucrului.
5.8. Cerințele securității tehnice în timpul de lucru
Este interzisă cuplarea echipamentului la rețea fără permisiunea persoanei responsabile de lucrări; cuplarea în rețea a echipamentului care în timpul efectuării lucrării de laborator nu este folosit.
Studenții neatestați de lector nu sunt admiși la lucrări de laborator.
În procesul efectuării lucrării de laborator se interzice categoric:
abaterea de la subiect cât și atragerea altora;
părăsirea locului de lucru lăsând utilajul sub tensiune;
efectuarea lucrului de reparație a utilajului aflat sub tensiune.
Dacă în procesul de lucru apar cazuri ieșite din comun (miros de izolație arsă, fum) utilajul se decuplează, urgent de la rețea informând despre acesta dirigintele de lucrări sau responsabilul de laborator.
5.9. Acțiuni în cazuri fatale
Dacă vre-o persoană nimerește sub tensiune, este necesar de urgență de decuplat tensiunea, despre ce se informează dirigintele de lucrări.
Dacă persoana în cauză a rămas în conștiință trebuie să-i creăm condiții de liniște și odihnă. Apoi în caz de necesitate chemăm medicul. Dacă individul a pierdut cunoștința și nu respiră este necesar de a-i face respirație artificială, chemând totodată salvarea. Respirația artificială se aplică până vine medicul sau până se restabilește respirația.
Pentru toate cazurile fatale se fac procese verbale conform regulamentului.
5.10. Securitatea antiincendiară
Incendiu se numește procesul ne controlat de ardere în afara unui loc de ardere special amenajat, ce aduce daune materiale.
În cadrul oricărei organizații, sau întreprinderi trebuie să existe mijloace de anunțare, de apel rapid la serviciile orășenești antiincendiare în cazul apariției incendiului. Pentru obiectele de o importanță majoră sau periculoase, este recomandată posibilitatea legăturii telefonice directe cu secția antiincendiară orășenească. Semnalizarea antiincendiară se execută cu ajutorul diferitor sisteme. Pentru a anunța despre incendiu se utilizează legătura telefonică, legătura radio, sirena, semnalizarea cu ajutorul clopotelor etc. Mijloacele de anunțare despre incendiu trebuie să fie disponibile toate 24 ore.
Semnalizarea incendiului se execută de diferite sisteme. Cel mai simplu și mai des utilizat este semnalizatorul manual, care se activează prin apăsarea butonului. Așa semnalizatoare se instalează pe scări, în paliere și sânt vopsite în culoarea roșie.
În timpul de față larg se utilizează semnalizatoarele automate, care conform principiului de lucru se împart în cele termice, de fum, combinate și optice.
Semnalizatoarele termice de acțiune maximă acționează la deformarea unei plăci bimetalice, la încălzirea ei până la 60, 80, 100 °C în dependență de reglaj.
În semnalizatoarele termice semiconductoare, în calitate de elemente sensibile sânt termorezistențele, din cauza cărora se schimbă curentul în rețea la încălzirea lor.
Termosemnalizatoarele diferențiale reacționează la ridicarea rapidă a temperaturii (la 30°C timp de 7 secunde), iar în calitate de element sensibil se folosește elementul la încălzirea căruia apare termo-FEM.
În semnalizatoarele de fum în calitate de element sensibil se utilizează camera de ionizare, în care sub acțiunea izotopului radioactiv (plutoniu-239) apare un curent de ionizare. Apariția fumului în cameră mărește consumul de raze ceea ce cauzează micșorarea curentului de ionizare.
În semnalizatoarele combinate se folosește interconectarea semnalizatorului de fum cu cel termic. La camera de ionizare se mai conectează în plus încă o termorezistență.
Semnalizatoarele combinate reacționează atât la apariția fumului, cât și la schimbarea temperaturii. Semnalizatoarele optice reacționează la razele ultraviolete ale spectrului flăcării, deoarece elementul sensibil reprezintă contoarele de fotoni. Semnalizatoarele de diferite tipuri pot controla suprafețe de la 15 până la 100 m2.
Semnalizatoarele de fum și cele combinate nu se instalează în încăperi umede și prăfuite, sau în încăperi în care se conțin vapori de acizi, baze, sau unde temperatura este mai mare decât 80 °C, deoarece în așa locuri poate avea loc acționarea falsă ale semnalizatoarelor.
5.11. Cauzele apariției incendiilor
Procesul de ardere este posibil în cazul când este prezentă substanța arzătoare, sursa de aprindere și oxidantul, care în cele mai dese cazuri este oxigenul, ce se conține în aer. La reducerea concentrației oxigenului din aer până la 12-14% arderea majorității substanțelor se oprește. Procesul de ardere este posibil și în lipsa oxigenului – deoarece hidrogenul, stibiul și unele metale ard în clor. Unele substanțe ( turba, cărbunele, funinginea, cârpele uleioase), numite piriforme pot să se autoinflameze la contactul cu aerul. Auto-aprinderea acestor substanțe are loc în urma proceselor chimice, termice sau microbiologice. Substanțele se încălzesc sub acțiunea căldurii ce vine din afară, ce se elimină în timpul reacțiilor chimice, și de asemenea în rezultatul acțiunii micro-organismelor.
În procesul de producție, incendiul poate apare în urma unor cauze de ordin electric sau ne electric.
La cauzele de ordin ne electric se referă:
funcționarea nesatisfăcătoare a instalațiilor de producție și dereglarea procesului tehnologic; comportarea iresponsabilă sau ne atentă cu focul (fumatul, lăsarea fără supraveghere a dispozitivelor de încălzire);
construcția incorectă sau dereglarea sistemului de ventilare;
autoinflamarea materialelor.
La cauzele de ordin electric se referă:
scurtcircuitul;
supraîncărcarea conductoarelor;
rezistența mare de trecere;
scânteierea;
electricitatea statică și descărcarea fulgerului;
arcul electric ce apare în timpul sudării electrice și în timpul operațiilor greșite cu aparatajul de comutare;
instabilitatea tensiunii electrice din rețea – ca rezultat se aprind unele circuite integrate din calculator, sau monitor, etc.
5.12. Securitatea antiincendiară în sălile de calcul
Pentru a analiza nivelul securității incendiare a locurilor de muncă, a zonelor de producție, a sălilor de calcul se folosește următoarea clasificare :
1.Clasificarea materialelor de construcție și construcțiilor după nivelul de inflamabilitate:
ne inflamabile;
greu inflamabile;
inflamabile;
2. Clasificarea construcțiilor după nivelul rezistență la incendiu (limita nivelului de rezistența la incendiu – timpul în ore din momentul începerii incendiului până la momentul apariției crăpăturilor).
3. Clasificarea încăperilor după RCIE ("Regulile de Construcție a Instalațiilor Electrice"):
cu pericol de explozie;
cu pericol de inflamare.
Criteriile de apreciere:
Conținutul de substanțe inflamabile;
Regimul termic de prelucrare.
4. Clasificarea proceselor de producție după pericolul incendiar:
cu pericol de explozie;
cu pericol de explozie și inflamare;
cu pericol de inflamare;
fără pericol de inflamare;
Conform primei clasificări (clasificarea materialelor de construcție și construcțiilor după nivelul de inflamabilitate) sala de calcul este ne inflamabilă deoarece sânt prevăzute multe măsuri de prevenire a incendiului cum ar fi: sisteme de semnalizare, podele din metal, mese metalice, pereții în sala de calcul se acoperă cu substanțe ne arzătoare.
După clasificarea a doua (clasificarea construcțiilor după nivelul rezistență la incendiu), de obicei sălile de calcul se află în clădiri construite sau din beton armat sau piatră (pentru instituțiile de învățământ). Ambele materiale de construcție au o rezistență la incendiu mare – pereții în sala de calcul se acoperă cu substanțe ne arzătoare.
După clasificarea a treia (după Regulile de Construcție a Instalațiilor Electrice), luând în considerație conținutul mic de substanțe inflamabile și regimul termic de prelucrare, sălile de calcul pot fi caracterizate – cu pericol mic de inflamare.
Sălile de calcul după pericolul incendiar a proceselor de producție se referă la categoria celor cu pericol de inflamare ceea ce se explică prin faptul, că în încăpere se găsesc substanțe inflamabile: de obicei, aceste săli sânt echipate cu utilaj care conține masă plastică, care totuși arde. Trebuie însă de menționat, în ultimul timp masa plastică utilizată la fabricarea tehnicii de calcul are o astfel de componență chimică, care nu arde sau care se stinge după primele secunde de ardere. În sala de calcul de obicei lipsesc așa atribute cum ar fi : covoare, obiecte din lemn, dulapuri cu cărți, etc. Reiese că, cu toate că pericolul de inflamare există, el este foarte mic.
Securitatea antiincendiară poate fi asigurată prin măsuri de profilaxie antiincendiară și prin respectarea regulilor de prevenire a incendiului. Noțiunea de profilaxie antiincendiară include un complex întreg de măsuri, necesare pentru preîntâmpinarea apariției incendiului sau reducerea urmărilor lui.
Concluzii
În teza dată am elaborat un sistem de depistare a plagiarismului în producția de SoftWare. Acest sistem poate fi propus în dosebi profesorilor pentru a verifica lucrările studenților, dacă acestea au fost elaborate de fiecare student individual sau cineva s-a “inspirat” din lucrarea colegului său.
Acest sistem permite automatizarea procesului de depistare a sectoarelor suspecte din codul programului, în cazul cînd acestea au fost împrumutate de la colegi, parțial sau chiar total cu puține modificări.
În lucrarea dată am enumerat mai multe metode de depistare a plagiatului în programare, deasemenea am accentuat și faptul că fiecare poate să-și elaboreze metoda sa de depistare.
La elaborarea sistemului dat de depistare a plagiarismului în producția de SoftWare am implementat metoda ce analizează frecvența operatorilor în cadrul unui program, deoarece această metodă este mai efectivă și dă rezultate mai bune.
Desigur acestă metodă are neajunsurile sale, însă în combinație cu alte metode pot fi realizate rezultate destul de frumoase.
Deasemenea am cercetat și alte domenii afectate de acest fenomen – plagiarismul, încălcarea dreptului de autor.
Interfața a fost realizată în mediul de programare Delphi. Datorită faptului că Delphi este un mediu de creare rapidă a aplicațiilor, sistemul a fost elaborat destul de repede și plus la aceasta cu multe posibilități de manipulare foarte facilă a datelor.
Bibliografie
[1] Dicționar explicativ uzual al limbii române, Chișinău,”Litera” 1999
[2] Б. A. Князевский, П.А. Долин „Охрана труда”,Москва, „Высшая школа” 1982
[3] B.B. Браг „Автоматизированные системы управления предприятиями”, Москва, „Финансы и кредит”, 1989
[4] Ш. Атре „Структурный подход к организации баз данных”, Москва, „Финансы и кредит”, 1983
[5] http://encicloped.narod.ru
[6] http://www.netreport.ro
[7] http://www.cs.cmu.edu
[8] http://net-plagiatu.narod.ru
[9] http://dic.academic.ru
[10] http://www.patent.md
Anexa 1.
Listingul programului
program Project3;
uses
Forms,
Unit2 in '..\..\..\Program Files\Borland\Delphi5\Projects\Unit2.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, OleCtrls, vcfi, StdCtrls, ComCtrls, AxCtrls, vcf1;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
SaveAs1: TMenuItem;
Save1: TMenuItem;
Open1: TMenuItem;
New1: TMenuItem;
Anexa 1. (continuare)
Edit1: TMenuItem;
Paste1: TMenuItem;
Copy1: TMenuItem;
Cut1: TMenuItem;
Work1: TMenuItem;
RichEdit1: TRichEdit;
RichEdit2: TRichEdit;
File2: TMenuItem;
Exit2: TMenuItem;
N1: TMenuItem;
PrintSetup1: TMenuItem;
Print1: TMenuItem;
N2: TMenuItem;
SaveAs2: TMenuItem;
Save2: TMenuItem;
Open2: TMenuItem;
New2: TMenuItem;
F1Book1: TF1Book;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
SaveDialog2: TSaveDialog;
PrinterSetupDialog1: TPrinterSetupDialog;
procedure New2Click(Sender: TObject);
procedure Open2Click(Sender: TObject);
procedure Save2Click(Sender: TObject);
procedure SaveAs2Click(Sender: TObject);
procedure Print1Click(Sender: TObject);
procedure PrintSetup1Click(Sender: TObject);
procedure New1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure SaveAs1Click(Sender: TObject);
Anexa 1. (continuare)
procedure Exit1Click(Sender: TObject);
procedure Exit2Click(Sender: TObject);
procedure Work1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.New2Click(Sender: TObject);
begin
RichEdit1.Lines.Clear;
end;
procedure TForm1.Open2Click(Sender: TObject);
begin
OpenDialog1.Execute;
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
procedure TForm1.Save2Click(Sender: TObject);
begin
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
end;
Anexa 1. (continuare)
procedure TForm1.SaveAs2Click(Sender: TObject);
begin
SaveDialog1.Execute;
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.Print1Click(Sender: TObject);
begin
RichEdit1.Print('');
end;
procedure TForm1.PrintSetup1Click(Sender: TObject);
begin
PrinterSetupDialog1.Execute;
end;
procedure TForm1.New1Click(Sender: TObject);
begin
RichEdit2.Lines.Clear;
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
OpenDialog1.Execute;
RichEdit2.Lines.LoadFromFile(OpenDialog1.FileName);
end;
procedure TForm1.Save1Click(Sender: TObject);
begin
RichEdit2.Lines.SaveToFile(SaveDialog2.FileName);
end;
Anexa 1. (continuare)
procedure TForm1.SaveAs1Click(Sender: TObject);
begin
SaveDialog2.Execute;
RichEdit2.Lines.SaveToFile(SaveDialog2.FileName);
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Exit2Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Work1Click(Sender: TObject);
var m,i:integer;
j:array [1..8]of integer;
nomj:array[1..8]of AnsiString;
minj,locj:integer;
s:extended;
t,nommin:AnsiString;
begin
{j:=100;
F1Book1.SetActiveCell(2,2);
F1Book1.TextRC[2,2]:=IntToStr(j);
F1Book1.NumberRC[2,3]:=j+5;}
nomj[1]:=':=';
nomj[2]:='goto';
nomj[3]:='if';
Anexa 1. (continuare)
nomj[4]:='case';
nomj[5]:= 'while';
nomj[6]:= 'repeat';
nomj[7]:= 'for';
nomj[8]:='with';
for i:=2 to 9 do
begin
F1Book1.NumberRC[2,i]:=0;
end;
for i:=0 to RichEdit1.Lines.Count do
begin
t:=RichEdit1.Lines.Strings[i]+' .';
t:=AnsiLowerCase(t);
while length(t)>0 do
begin
minj:=99999;
for m:=1 to 8 do
begin
j[m]:= AnsiPos(nomj[m],t);
if (j[m]< minj)and (j[m]>0)then
begin
minj:=j[m];
nommin:=nomj[m];
locj:=m;
end;
end;
if minj<>99999 then
begin
F1Book1.NumberRC[2,locj+1]:=F1Book1.NumberRC[2,locj+1]+1;
t:=copy(t,minj+length(nommin),length(t)-minj-length(nommin));
end
else t:='';
Anexa 1. (continuare)
end;//while
end;//for
s:=0;
for i:=2 to 9 do
begin
s:=s+F1Book1.NumberRC[2,i];
end;
for i:=2 to 9 do
begin
F1Book1.NumberRC[2,i]:=F1Book1.NumberRC[2,i]*100/s;
end;
for i:=2 to 9 do
begin
F1Book1.NumberRC[3,i]:=0;
end;
for i:=0 to RichEdit2.Lines.Count do
begin
t:=RichEdit2.Lines.Strings[i]+' .';
t:=AnsiLowerCase(t);
while length(t)>0 do
begin
minj:=99999;
for m:=1 to 8 do
begin
j[m]:= AnsiPos(nomj[m],t);
if (j[m]< minj)and (j[m]>0)then
begin
minj:=j[m];
nommin:=nomj[m];
locj:=m;
end;
Anexa 1. (continuare)
end;
if minj<>99999 then
begin
F1Book1.NumberRC[3,locj+1]:=F1Book1.NumberRC[3,locj+1]+1;
t:=copy(t,minj+length(nommin),length(t)-minj-length(nommin));
end
else t:='';
end;//while
end;//for
s:=0;
for i:=2 to 9 do
begin
s:=s+F1Book1.NumberRC[3,i];
end;
for i:=2 to 9 do
begin
F1Book1.NumberRC[3,i]:=F1Book1.NumberRC[3,i]*100/s;
end;
end;
end.
Anexa 2.
Frecvența apariției operatorilor într-un fragment dat de program
Anexa 3.
Corelarea reciprocă a două programe mici
Anexa 4.
Schema generală a Sistemului Informațional
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistem de Depistare a Plagiarismului In Productia de Software (ID: 148797)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
