Sunteți pe pagina 1din 7

Realizarea aplicaiilor

autor: Tudor Sorin

1. Etape n realizarea unei aplicaii


n informatic prin aplicaie se nelege un program sau ansamblu de programe care se utilizeaz pentru rezolvarea unei probleme practice. Exemplu. n multe uniti economice se utilizeaz o aplicaie numit "personal". Ea este alctuit din mai multe programe care au rolul de a ine evidena personalului, de a calcula automat salariile etc. Realizarea unei aplicaii presupune existena unui personal specializat alctuit din: analiti de sistem - persoane capabile s proiecteze logic aplicaia i care predau programatorilor o documentaie dup care acetia realizeaz programele. Analistul de sistem are cunotine serioase de informatic, dar, de regul, calificarea sa de baz este din domeniul n care se realizeaz aplicaia. De exemplu, pentru aplicaia personal analistul de sistem este economist. programatori - acetia scriu programele conform documentaiei primite. Colaboreaz cu analitii de sistem i cu inginerii de sistem. ingineri de sistem - persoane cu pregtire de excepie n informatic att hard, ct i soft, care au rolul de a ntreine reeaua de calculatoare utilizat, de a acorda consultan tehnic programatorilor; specialiti n testarea programelor -testers- persoane care testeaz aplicaia. Etapele de realizare a aplicaiilor sunt studiate la disciplina "Sisteme informatice", disciplin predat n cadrul facultilor cu profil de informatic. n ce ne privete, prin aplicaie vom nelege un singur program. Prin urmare, n acest paragraf prezentm etapele de realizare a unui program.

Etapa 1. Identificarea datelor de intrare i a celor de ieire. Etapa 2. Elaborarea algoritmului de rezolvare a problemei - ce trebuie s
facem pentru ca, pornind de la datele de intrare s le obinem pe cele de ieire.

1
www.ls-infomat.ro | www.manuale-de-informatica.ro

ncercai s privii problema pe care o avei de rezolvat n mod abstract, adic lipsit de amnuntele nesemnificative. n acest fel datele de intrare/ieire, nu mai sunt, de exemplu: vrstele unor persoane, ci numere naturale de la 1 la 100; numele persoanelor, ci iruri de caractere; ... Pornind de la problema abstractizat, ncercai s vedei dac nu exist un algoritm consacrat care o rezolv. Aici au mare importan cunotinele privitoare la teoria algoritmilor. n ipoteza existenei unui astfel de algoritm este foarte greu, dac nu imposibil, s gsii un alt algoritm, mai performant. n cazul n care nu cunoatei un algoritm consacrat care o rezolv, suntei nevoii s elaborai dvs. unul. Pentru nceput, inventariai mai muli algoritmi care rezolv problema i selectai unul, pe care-l considerai eficient. Criteriile de eficien, adic cele dup care alegei algoritmul dintre toi cei pe care i-ai elaborat, sunt tratate separat. Dac v ajut, redactai algoritmul sub form de pseudocod sau schem logic. n etapa de iniiere, este bine s facei acest lucru. Asigurai-v c algoritmul elaborat de dvs. este corect. n primul rnd, simulai "funcionarea" sa pe cteva seturi de date de intrare, seturi gererate "manual", cu puine date, dar variate. Apoi, ncercai s demonstrai faptul c algoritmul gsit este corect. Aici vei folosi cunotine pe care le vei aprofunda n anii urmtori sau n facultate. Ca o curiozitate, n marile universiti ale lumii sunt muli informaticieni de elit care n-au nici cea mai mic curiozitate sau plcere s scrie programul dup ce au elaborat un algoritm. Dar acolo, nimeni nu "te bag n seam" dac ai elaborat un algoritm la care n-ai demonstraie, dar ai un program care "merge".

Etapa 3. Scrierea programului. Dac limbajul de programare este bine


cunoscut i dac avei redactat algoritmul n pseudocod sau schem logic, aceast etap este "aproape mecanic". Nu facei dect s traducei. n aceast etap este bine s comentai programul. Orice firm de soft cere programatorilor aceasta, n plus programatorii sunt obligai s elaboreze i o documentaie tehnic privind modul n care au elaborat programul. ntr-o astfel de documentaie vei gsi pn i o list a variabilelor, cu semnificaia fiecreia. Dac ai uitat ceva care privete limbajul nu ezitai s consultai HELP-ul mediului de programare pe care-l folosii. n ziua de azi, limbajele pun la dispoziia programatorilor mii de subprograme. Nimeni nu le tie pe toate, chiar la nivelul unui limbaj, i chiar dac s-ar gsi cineva att de naiv ca s le nvee, tot nu i-ar folosi, pentru c n civa ani apare alt limbaj, cu mult mai performant. 2
www.ls-infomat.ro | www.manuale-de-informatica.ro

Etapa 4. Testarea programului. Rulai programul obinut cu mai multe


seturi de date de intrare. S-ar putea ca acesta s conin bug-uri (erori ascunse, care se manifest rar) chiar dac algoritmul dup care a fost redactat este corect.

Etapa 5. Exploatarea programelor. Dac programul pe care l-ai elaborat


nu este unul didactic, ci unul care este utilizat, sunt mari anse ca n prima parte a perioadei de exploatare s mai ias la iveal nite bug-uri. Desigur, m gndesc la programe complexe. Din acest motiv programatorul va ine legtura, o vreme, cu beneficiarul. De multe ori, n practic, programatorul vine cu alt variant, mbuntit a aceluiai program.

2. Cerine n realizarea programelor


2.1. Interfa prietenoas
Multe programe sunt interactive, adic solicit informaii utilizatorului. Acesta, de cele mai multe ori, nu coincide cu persoana care a realizat programul. Utilizatorul trebuie s tie n fiecare moment ce are de fcut, trebuie s aib posibilitatea s corecteze o comand greit pe care a dat-o, etc. Programatorul trebuie s in cont de toate acestea, atunci cnd elaboreaz programul, altfel acesta nu va fi folosit (vndut). Totalitatea formelor prin care un program comunic cu utilizatorul se numete interfaa programului. Despre o interfa care rspunde cerinelor utilizatorului se obinuiete s se spun c este prietenoas. Cu ajutorul cunotinelor dobndite pn n acest moment, este foarte greu, dac nu imposibil, s realizm programe cu interfee prietenoase. Ne mulumim s aplicm numai dou reguli elementare: De cte ori programul cere o dat de intrare, trebuie s se afieze care anume dat este solicitat. Uneori, este bine ca programul s scrie i formatul de intrare al datei. Dar, atenie la utilizarea acestui procedeu! La introducerea repetat a datelor, dac de fiecare dat se dau informaii de acest gen, greu ar rezista cineva fr s se enerveze. n astfel de cazuri, este bine ca informaia lmuritoare s fie afiat pe ecran n loc fix. Din pcate, acest caz nu a fost tratat n acest manual, ntruct nu figureaz n program. De cte ori programul afieaz un rezultat, acesta trebuie precedat de un text care prezint semnificaia sa. n realitate problema este cu mult mai complex. O adevrat interfa se realizeaz cu ferestre, este nsoit de imagini semnificative, permite lucrul cu mouse-ul etc. Luai orice aplicaie din prima parte a manualului i vedei acolo ce nseamn interfaa prietenoas.

3
www.ls-infomat.ro | www.manuale-de-informatica.ro

Observaii ! 1. S-a vzut c liniile necesare unui program pentru realizarea interfeei reprezint aproximativ 80% din totalitatea liniilor. Cu alte cuvinte, este mai greu s scrii interfaa dect algoritmul propriu-zis. Dumneavoastr credei c fiecare care are de scris un program cu interfa prietenoas pierde acest timp? Nici vorb. Acesta preia subprograme gata scrise i le folosete. 2. La ora actual este de mare importan programarea vizual. Mediile serioase de programare, pun la dispoziia programatorilor aplicaii specializate, prin care acetia aleg ferestrele, butoanele etc. Alegerea se face prin selecia cu mouse-ul, dintr-o list. Interfeele astfel construite poat denumirea de "resurse". Codul necesar pentru ca resursele s fie prezente n programe este generat automat. Programatorul va trebui s scrie secvena de instruciuni care se execut atunci cnd "apsm" un anumit buton. Filosofia modern de a programa este urmtoarea: programul "ateapt" ca un anumit eveniment (de exemplu, o "apsare" de buton) s aib loc. Atunci execut operaia corespunztoare. Programul i termin execuia atunci cnd un anumit buton este "apsat". 3. Mecanismul care face acest lucru posibil se numete programare orientat pe obiecte i va fi studiat n anii urmtori.

2.2. Protecie la date incorecte


De multe ori, din neatenie, se fac anumite greeli atunci cnd se introduc datele. Dac programul nu are prevzut o protecie corespunztoare, rezultatele pot fi catastrofale: introducerea greit a datelor de intrare, deci rezultate eronate, ntreruperea execuiei programelor prin eroare etc. Reinei: atunci cnd vei realiza programe care sunt utilizate n practic, orice dat (chiar dac este numeric) se introduce sub form de ir de caractere. Data propriu-zis este obinut prin conversia irului ctre tipul dorit. n timpul acestei conversii data este validat - adic se verific dac este corect sau nu. Validrile pot fi: Numerice - se verific dac toate caracterele irului pot reprezenta un numr. De exemplu, pentru numere naturale caracterele pot fi doar cifre de la 0 la 9. Alfabetice - se verific dac toate caracterele irului sunt litere ale alfabetului latin. Logice - se verific dac data introdus este ntre anumite limite. Exemplu: vrsta unei persoane trebuie s fie ntre 1 i 100. Pentru a v reaminti modul de realizare a acestor validri, revedei algoritmii utilizai n prelucrarea irurilor de caractere.

4
www.ls-infomat.ro | www.manuale-de-informatica.ro

O alt situaie nefericit este cea n care se ncearc crearea unui fiier care are acelai nume fizic cu un altul, deja existent. n acest caz, acesta din urm se terge. V dai seama de consecinele acestui fapt n cazul n care fiierul care se terge are foarte multe informaii i nu este salvat? Alt exemplu: tentativa de consultare a unui fiier inexistent. Revedei modul de lucru cu fiiere, pentru a v reaminti cum s prentmpinai toate acestea. n realitate, n exploatare apar foarte multe cazuri n care datele incorecte conduc la rezultate nedorite. Natura lor este determinat de aplicaia propriu-zis. O parte dintre acestea pot fi intuite nainte de scrierea programului, n funcie de experiena pe care o avei. Cealalt parte se corecteaz n perioada de test a programului respectiv.

2.3. Criterii de eficien


n acest paragraf ne propunem s rspundem la urmtoarea ntrebare: fiind dai mai muli algoritmi care rezolv corect o problem, pe care dintre ei l alegem pentru a scrie programul? Criteriul fundamental este acela de a estima numrul operaiilor elementare pe care acesta le efectueaz.

S ne amintim faptul c un algoritm efectueaz trei operaii de baz: intrare / ieire, atribuire, decizie. n general, operaiile de intrare / ieire sunt o constant pentru algoritmii care rezolv o anumit problem. De exemplu, dac citim n valori numerice i o afim pe cea maxim, orice algoritm am folosi tot se execut n operaii de intrare i una de ieire. Din acest motiv renunm la analiza acestor operaii. Pentru a simplifica calculul celorlalte operaii (de atribuire i de decizie), vom considera c una dintre ele este cea de baz i vom estima de cte ori se execut aceasta. O vom alege pe cea a crui numr de execuii poate fi mai uor estimat, sau cea care necesit mai mult timp de execuie. De cele mai multe ori se alege operaia de decizie. Exemplul 1. Calculul maximului dintr-un ir de n numere reale. Reamintim, pe scurt, algoritmul: unei variabile - numit max - i se atribuie valoarea primei valori. fiecare din cele n-1 valori rmase, se compar, pe rnd, cu valoarea variabilei max, iar n cazul n care coninutul este mai mare dect al variabilei max, acesteia i se atribuie valoarea acelei componente.

5
www.ls-infomat.ro | www.manuale-de-informatica.ro

Cte operaii de decizie efectueaz algoritmul? n mod evident, n-1 operaii. Cte operaii de atribuire efectueaz algoritmul? Acest numr depinde de datele de intrare. S-ar putea ca prima dat introdus s fie cea maxim. n acest caz algoritmul efectueaz o singur atribuire. S-ar putea ca datele de intrare s fie n ordine strict cresctoare. n acest caz se efectueaz n atribuiri. Din acest motiv, pentru a estima eficiena algoritmului vom alege operaia de decizie. n concluzie, vom spune c algoritmul efectueaz n-1 operaii elementare. Exemplul 2. Se consider un vector cu n numere naturale. Se cere s se listeze cteva dintre acestea, a cror sum se divide cu n O analiz superficial a problemei va conduce la acest algoritm: considerm toate submulimile mulimii celor n numere naturale; pentru fiecare dintre ele testm dac suma elementelor se divide la n, iar cnd am gsit o astfel de submulime, algoritmul se oprete. Categoric, aceasta este o rezolvare corect. Dac analizm timpul de rezolvare a problemei vom observa c avem 2n submulimi ale unei mulimi cu n elemente. Chiar dac ar fi posibil s generm o submulime printr-o singur operaie elementar, tot sunt necesare 2n operaii elementare. Altfel: Vom ncepe prin a forma, pe rnd, sumele: S1=x1; S2=x1+x2; ... Sn=x1+x2+...+xn. Dac exist un i ntre 1 i n pentru care suma Si se mparte la n, atunci numerele cutate sunt x1, x2, ..., xi. Dac nici una nu se mparte la n, innd cont de faptul c restul acestor sume prin mprirea la n aparine mulimii {1,2...,n-1} (avem n-1 posibiliti de rest i n sume), rezult c exist cel puin dou sume care dau acelai rest prin mprirea la n. Atunci, diferena acestor dou sume se divide cu n. Fie Si i Sj aceste sume. Si=x1+x2+...+xi; Sj=x1+x2+...+xj; ... Sj-Si=xi+1+...+xj.

6
www.ls-infomat.ro | www.manuale-de-informatica.ro

Cum estimm timpul de calcul? Vom considera ca operaie de baz decizia. Dispunem de n resturi. Cutm un rest nul. Pentru aceasta se fac cel mult n operaii de decizie. Presupunem c nici un rest nu este nul. Urmeaz s identificm dou resturi egale. Se compar primul rest cu resturile 2, ..., n, ceea ce necesit (n-1) comparaii, al doilea cu resturile 3, ..., n (n-2 comparaii), ... penultimul rest cu ultimul (o singur comparaie). n concluzie, se efectueaz cel mult n(n-1)/2 comparaii. n total se efectueaz n+n(n+1)/2 comparaii (operaii de decizie).

Cu excepia cazului n=1, acest numr este cu mult mai mic dect 2n. n concluzie, se alege a doua variant. Exerciiu. Generai un fiier text cu n>100 astfel de numere. Scriei programele care rezolv aceast problem n cele dou variante. Vei vedea "pe viu" diferena la timpul de execuie. Nici nu cred c vei avea rbdare s ateptai rezultatul pentru programul obinut n prima variant de rezolvare a acestei probleme. Observaie. Un alt criteriu de selecie, secundar, al unui algoritm este acela al memoriei interne necesare. Evident, c este de preferat un algoritm care necesit mai puin memorie intern. ntruct organizarea memoriei interne nu a fost studiat n acest an, acest criteriu nu va fi prezentat.

7
www.ls-infomat.ro | www.manuale-de-informatica.ro