UNIVERSITATEA ROMANO-AMERICANA
FACULTATEA DE INFORMATICA MANAGERIALA
ANUL I
ALGORITMI
Sistemul informational-sistem informatic
Sistemul informational
Def: Un sistem poate fi privit ca un ansamblu de elemente interconectate si interconditionate prin relatii fizice, sociale si de alta natura care functioneza in vederea relizarii unui scop sau finalizarii unui obiect.
El este deci o metoda de realizare a unui scop.
Procesele desfasurate intr-o activitate organizata nu au loc la intamplare, ci sunt declansate de anumite informatii, care prelucrate, sevesc la luarea unor decizii.
Activitatea defasurata in vederea realizarii unui obiectiv poate fi definita ca rezultatul actiunii conjugate, a trei subsisteme ce actioneaza intr-o stransa interdependenta si care la randul lor pot fi considerate sisteme:
sistemul deconducere sau decizional (S.D.)
sistemul condus,de executie sau operational (S.O.)
sistemul informational
Sistemul de conducere are rolul de dispune, indruma, coordona activitatea in vederea realizarii obiectivelor fixate, cu eficienta maxima.
Sistemul condus are rolul de a executa practic deciziile luate si de a furniza date privind actiunile realizate sau in curs de executie, folosind pentru aceasta resursele materiale, financiare si umane existente, repartizate pe obiective dinainte stabilite.
Sistemul infomational este un instrument indispensabil conducerii, avand ca parti componente mijloacele si procedeele ce asigura legaturile intre elementele de executie si elementele decizionale pentru conducere si organizare.
Sistemul informatic - instrument al conducerii stiintifice a societatilor economice
In acest context sisteul informatic reprezinta un ansamblu de elemente intercorelate functional in scopul automatizarii obtinerii informatiilor necesare conducerii in procesul de elaborare a deciziilor.
Un sistem informatic este compus, in principal, din urmatoarele elemente:
a) Baza tehnica sau HARDWARE-ul sistemului informatic, care este construita din totalitatea mijloacelor tehnice de culegere, transmitere, stocare si prelucrare a datelor, in care locul central revine calculatorului electronic
b) Sistemul de programe sau SOFTWARE-ul sistemului, ce cuprinde totalitatea programelor pentru functionarea sistemului informatic, in concordata cu functiunile si obiectivele ce i-au fost stabilite. Se au in vedere, atat programele de baza ( software-ul de baza), cat si programele aplicative (software-ul aplicativ)
c) Baza stiintifico-metodologica, care este construita din modele matematice ale proceselor si fenomenelor economice, metodologii, metode si tehnici de realizare a sistemelor informatice.
d) Baza informationala cuprinde datele supuse prelucrarii, fluxurile informationale, sistemele si nomenclatorele de coduri.
e) Resursele umane si cadrul organizatoric, care cuprinde personalul de specialitate si cadrul necesar functionarii sistemului informatic. Personalul de specialitate include informaticieni cu studii superioare si pregatire medie, analisti, programatori, ingineri de sistem, administratori de retea, analisti-programatori ajutori, operatori, controlori date.
Clasificare sistemelor informatice
A) In functie de domeniul de utilizare, acestea se clasifica in patru grupe:
a) Sisteme informatice pentru conducerea activitatilor unitatilor economico - sociale, care se caracterizeaza prin aceea ca datele de intrare, de regula, sunt furnizate prin documente, intocmite de om, iar la iesire sunt furnizate de catre sistem tot sub forma de documete pentru perceperea acestora de catre om
b) Sisteme informatice pentru conducerea sistemelor tehnologice, care se caracterizeaza prin aceea ca datele de intrare sunt asigurate prin intermediul unor dispozitive automate care transmit sub forma de semnale informatii despre diversi parametri ai procesului tehnologic, iar datele de iesire se transmit de asemenea sub forma de semnale unor organe de exectie, regulatoare, care modifica automat parametrii procesului tehnologic.
c) Sisteme informatice pentru activitatea de cercetare stiintifica, si proiectare, care asigura automatizarea calculelor tehnico-ingineresti, proiectarea asistata de calculator si alte facilitati necesare specialistilor din domeniile respective.
d) Sisteme informatice speciale, care sunt destinate unor domenii specifice de activitate, ca de exemplu: informare si documetare tehnico-stiintifica, medicina, etc.
B) Nivelul ierarhic ocupat de sistemul economic in structura organizatorica a societatii:
a) Sisteme informatice pentru conducerea activitatii la nivelul unitatilor economice. Aceste pot fi decompuse in subsisteme informatice asociate functiilor economico - sociale sau chiar unor activitati
b) Sisteme informatice pentru conducerea activitatii la nivelul organizatiilor economico - sociale cu structura de grup
c) Sisteme informatice teritoriale. Sunt constituite la nivelul unitatilor administrativ - teritoriale si servesc la fundamentarea deciziilor adoptate de catre organismele locale de conducere
d) Sisteme informatice pentru conducerea ramurilor, subramurilor si activitatilor la nivelul economiei nationale
e) Sisteme informatice functionale generale au ca atribut principal facptul ca intersecteaza toate ramurile si activitatile ce au loc in spatiul economiei nationale, furnizand informatii necesare coordonarii de ansamblu si sincronizarii lor in procesul de reproductiei din cadrul economiei de piata. In acesta categorie sunt cuprinse sistemele pentru planificare, statistica, financiar - bancar.
C) Modul de organizare a datelor in cadrul sistemelor informatice:
a) Sisteme informatice cu organizarea datelor in fisiere clasice. Acest mod de organizarea a datelor are tendinta de rasfrangere sub aspectul aplicabilitatii, datorita neajunsurilor pe care le prezinta.
b) Sisteme informatice cu organizarea datelor in baze de date. Aceasta categorie de sisteme reprezinta o tendinta de extindere si dezvoltare.
Concepte utilizate in organizarea datelor
Concepte de baza
Odata cu aparitia bazelor de date, in terminologia curenta au fost introduse si utilizate trei concepte de baza in organizarea datelor, si anume: entitate, atribut si valoare.
Entitatea reprezinta un obiect concret sau abstract, reprezentat prin proprietatile lui. Pe de alta parte, orice proprietate a unui obiect poate fi descrisa printr-o pereche (atribut, valoare). Prin urmare, o entitate poate fi reprezentata prin mai multe proprietati, deci mai multe perechi de forma (atribut,valoare).
Notiunea de atribut este cunoscuta si sub numele de
Fiecare atribut este caracterizat de natura valorilor pe care le poate lua.
Notiunea de data
In informatica prin date se intelege un model de reprezentare a informatiilor despre obiectele supuse prelucrarii automate, accesibil atat utilizatorului cat si componentelor calculatorului (hard si soft).
In functie de obiectele pe care le reprezinta datele se pot clasifica in:
Date elementare sau scalare, care se prezinta sub forma unor entitati indivizibile
Colectii de date, care se prezinta sub forma unor multimi de date elementare, intre care se definesc si se descriu sau nu anumite relatii
Datele elemetare pot fi tratate sub doua aspecte:
Nivelul fizic - corespunde modului de organizare si reprezentare interna a datelor. Astefel o data elementara se memoreaza intr-o zona de memorie situata la o anumita adresa.
Nivelul logic - corespunde modului de organizare si prelucrare sa datelor de catre utilizatori. Pentru identificare unica a datelor, utilizatorul va preciza, pentru fiecare data, urmatoarele elemente:
o Identificatorul de data sau numele asociat datei.
o Multimea valorilor pe care lepoate lua o data in procesul prelucrarii.
o Atributele datelor precizeaza caracteristicile, proprietatile acestora in procesul de prelucrare.
Se numeste structura de date o colectie de date pentru care s-a definit un mecanism de selectare si identificare a componentelor. Deci, pentru o colectie de date se pot introduce relatii care sa asigure ordonarea datelor dupa criteriile dorite si sa faciliteze prelucrarea lor.
Asemenea datelor elementare, structurile de date pot fi create pentru reprezentarea lor in memoria interna sau pentru reprezentarea pe un suport extern de date. In mod corespunzatori structurile de date vor putea fi:
Structuri de date interne, cu caracter temporar, deoarece sunt realizate in memoria interna de tip RAM(volatila)
Structuri de date externe, care au caracter relativ permanent deoarece sunt memorate pe suporti externi. Aceste structuri de date pot cuprinde:
o Fisiere de date
o Baze de date
o Banci de date
Tipuri de structuri de date
O structura de date reprezinta practic o colectie de date intre care practic s-au definit o serie de relatii care duc la un anumit mecanism de selectie si identificare a datelor.
Aceste relatii pot fi de tipul:
de echivalenta
deordine
de ordine totala
de preordine
Se numeste tip de structura de date o multime ordonata de date, intre care s-au stabilit anumite relatii si care folosesc, pentru realizarea operatiilor, un grup de operatori de baza cu o anumita semantica.
Principalele tipuri de structuri de date (logice sunt):
Structura punctuala, reprezentata de oentitate grup izolata
Structura liniara, definita atunci cand intre elementele unei colectii de date exista o relatie de ordine totala
Structura arborescenta, sau descendenta sau ierarhica este definita atunci cand intre elementele colectiei de date exista o reatie de ordine.
Arbori binari
Datorita specificului lor, arborii binari admin o reprezentare grafica simetrica, axa de simetrie trecand prin radacina arborelui. De aceea, subarborii unui element oarecare sunt denumiti subarbore stang si respectiv subarbore drept, functie de pozitia relativa a acestora fata de elemntul respectiv.
Pentru aplicatiile de prelucrare automata a datelor se utilizeaza structuri arborescente si pentru reprezentarea pe suport a acestor structuri o problema deosebit de importanta o constituie parcurgerea elementelor structurii intr-o anumita ordine.
Astfel, pentru arborii binari, s-au identficat si s-au descris trei modalitati de parcurgere a elemetelor arborelui, denumite:
parcurgere in preordine
parcurgere in inordine
parcurgere in finordine (postordine)
Fisierul se defineste ca o multime de date omogene din punct de vedere a semnificatiei lor si alcerintelor de prelucrare. Aceasta multime este organizata ca o lista liniara, cu elemente structurate arborescente. Aceste elemete ale fisierului, considerat ca o lista liniara, se numesc inregistrari.
Inregistrarile au, in general, o structura arborescenta, elementele structurii fiind numite campuri.
Baza de date se defineste ca o colectie de date aflate in interdependenta, memorata pe un suport impreuna cu descrierea datelor si a relatiilor dintre ele. Ea are sens ca element al unei banci de date.
Banca de date reprezinta un sistem de organizare si prelucrare, respectiv teleprelucrare a datelor.
Structuri de date
Cele mai frecvent utilizate structuri statice de date sunt:
Masive (tablouri)
Articole (inregistrari logice)
Masivul sau tabloul reprezinta o structura de date omogena cu una, doua sau n dimensiuni. Masivul cu o dimensiune se numeste in mod uzual, vector, iar cu doua dimensiuni, matrice.
In memoria interna tabloul se reprezinta liniar, intr-o zona compacta de memorie care se divide in subzone de aceeasi lungime, corespunzatoare fiecarui element al masivului. Adresarea fiecarui element al masivului s va face relativ la adresa de baza (adica adresa de inceput) unde a fost memorat masivul, la care se adauga lungimea elemetelor care il preced.
Articole. Fisiere de date
Articolul sau inregistrarea logica reprezinta o structura de date interna, eterogena, de tipul ,,structura arborescenta".
Un articol este format din capuri de date, care se identifica in mod unic printr-un identificator sau nume asociat.
Campurile de date pot fi date elemetare sau structuri de date incluse intr-un articol, formand asa numitele date de grup.
Fisierul de date este format din articole sau inregistrari logice, care desciu aceleasi entitati si formeaza astefel o colectie de date omogene din punct de vedere al semnificatiei si al cerintelor de prelucrare.
Articolul se constituie ca unitate elementara de organizare si prelucrare a unui fisier de date.
Metodele de organizare a fisierelor definesc regulile care stau la baza constituirii articolelor in fisiere si se stabilesc la operatia de creare a fisierelor.
Astefel fisierele pot avea:
Organizare secventiala, care memoreaza articolele de date secvential, in ordinea introducerii lor
Organizare secvential - indexata, care presupune crearea fisierului de date cu articolele ordonate crescator dupa valoarea unui camp de date numit cheie de indexare, ce are si rolul de identificare a oricarui articol existent in fisier.
Organizare directa, care presupune memorarea si apoi identificarea articolelor printr-o cheie care poate fi un camp de date sau nu, dar a carei valoare se asociaza fiecarui articol in parte
Metodele de acces la articolele unui fisier stabilesc modalitatile prin care selocalizeaza un articol in fisierul de date.
Astfel, pot fi definite urmatoarele tipuri de acces la articolele unui fisier:
Acces secvential, care presupune parcurgerea secventiala, unul dupa altul, incapand cu primul articol, a tuturor articolelor ce preced articolul cautat
Acces direct, care presupune localizarea directa a articolului cautat, pe baza unei informatii de identificare asociate fiecarui articol in parte.
Grafuri
Definitii, tipuri
Notiunile de algoritm si schema logica pot fi definite, explicate si mai ales foarte des utilizate in legatura cu elemete de teoria grafurilor.
Se numeste graf neorientat o pereche ordonata G=(X,U), unde X este o multime finita si nevida de elemente numite noduri (varfuri), iar U este este o multime de perechi (neordonata) de elemente distincte ale lui X, numite muchii
O muchie avand varfurile i s j, numite extremitatile sale, este notata prin [i,j] sau [j,i].
Un
subgraf al lui G este un graf
=(Y,V), unde Y
X, iar V este format din toate muchiile lui U care unesc varfuri
Un graf partial al lui G este un graf (X,V) cu
Se numeste lant intr-un graf G=(X,U) o succesiune de muchii de forma [i1,i2],[i2,i3],..,[in-1,in], notata prescurtat prin [i1, i2, ..., in]
Un lant [i1, i2, ..., in] unde i1, i2, ..., in sunt distecte se numeste lant elementar.
Se numeste ciclu un lant [i1, i2, ..., in, i1] cu [i1, i2, ..., in] lant elementar si n>=3. Ciclul in care varfurile sunt diferite doua cate doua se numeste ciclu elemetar.
Un varf care este extremitatea unei singure muchii se numeste varf terminal.
Doua varfuri unite printr-o muchie se numesc varfuri adiacente.
Un graf neorientat se numeste conex daca oricare varfuri diferite ale sale sunt unite prin cel putin un lant.
Un graf neorientat este o pereche ordonata G=(X,U), deosebirea fata de graful neorientat constand in faptul ca elementele lui U sunt perechi ordonate de varfuri numite arce.
Deci fiecare arc (i,j) are un sens de parcurgere ca anume de la extremitatea sa initiala la extremitatea sa finala.
In cazul grafurilor orientate, notiunile de lant si ciclu isi au corespondent in notiunile de drum si circuit.
Se numeste arbore binar un arbore orientat (prin precizarea radacinii sale), in care fiecare varf are cel mult doi descendenti, facandu-se insa distinctia intre descendentul stang si cel drept al fiecarui varf; in particular, daca un varf are un singur descendent, trebuie precizat daca acesta este descendent stang sau descendent drept.
O problema deosebit de importanta de arbori o reprezinta metodele de parcurgere a arborilor binari. Cele mai utilizate metode sunt cele denumite.
Parcurgere in inordine
Parcurgere in preordine
Parcurgere in postordine
Se numeste arbore de sortare un arbore binar cu proprietatile:
inf(i)>=inf(j) pentru orice varf j din subarborele stang al lui i;
inf(i)<=inf(j) pentru orice varf j din subarborele drept al lui i.
Algoritmi. Definire
Programarea este practic activitatea prin care se concepe si se realizeaza programul pentru dezvoltarea unei probleme, cu ajutorul calculatorului electronic.
Un program reprezinta o succesiune de instructiuni si comenzi apartinand unui/unor limbaje de programare, (Pascal, Basic, C, Visual Basic, Java, etc) care conduc la solutionarea problemei formulate. Calculatorul va efectua aceste comenzi in ordinea stabilita de programator, pentru a obtine rezultatele dorite, in forma de prezentare ceruta.
Formularea problemei - prima etapa in activitatea de programare - este deosebit de importanta, pentru ca in cadrul ei se stabilesc datele de intrare si forma lor de organizare, datele de iesire si forma lor de prezentare, precum si prelucrarile necesare
Formularea problemei clara, completa si corecta reprezinta o cerinta importanta a activitatii de proiectare si realizare a programelor, de ea depinzand intreaga activitate care ii urmeaza.
Daca problema abordata este complexa, atunci activitatea de proiectare si realizarea practica se desfasoara in echipe - formate din analisti, programatori, ingineri de sistem, etc.
Elaborarea algoritmului este o etapa deosebit de importanta in activitatea de programare, deoarece ea presupune analiza corecta, exacta si completa a problemei formulate, pentru gasirea algoritmului ei corect de rezolvare si apoi descrierea lui corecta.
Notiunea de algoritmi
Cuvantul algoritm este de origine araba, derivand din numele matematicianului Abu Ja'far Mohammed ibn Musa al-Kahowarizmi.
Considerata ca notiune primara, notiunea de algoritm a fost definita de matematicianul sovietic A.A. Marcov ca fiind: o perspectiva care determina un proces de calcul si care este precisa, perfect inteligibila, nepermitand nici un fel de interpretari din partea celui care o duce la indeplinire.
Se spune ca o problema este decidabila daca exista un algoritm pentru rezolvarea ei.
Putem spune ca algoritmul reprezinta un sistem de reguli care aplicat unei clase de probleme de acelasi tip, pornit de la datele initiale, conduce la obtinerea solutiei prin intermediul unor operatii succesiv ordonate si unic determinate.
Proprietatile algoritmilor
a) Generalitatea - consta in aceea ca un algoritm nu rezolva in general o singura problema, o problema particulara concreta, ci o clasa de probleme de acelasi tip. Cu alte cuvinte, algoritmul trebuie sa se aplice la date initiale ce pot varia intre anumite limite precizate
b) Finititudinea - presupune ca dupa executia unui anumit numar transformari asupra datelor initiale, sa poata fi obtinuta solutia finala. In caz contrar, algoritmul va permite efectuarea la infinit a transformarilor asupra datelor initiale sau intermediare - se spune atunci ca algoritmul cicleaza, este deci incorect.
c) Determinismul - inseamna cuprinderea tuturor cazurilor posibile ce pot sa apara in rezolvarea clasei respective de probleme, inlaturand ambiguitatile sau neclaritatile.
d) Unicitatea - se refera la faptul ca transformarile, precum si ordinea lor, prin care se trece de la o anumita informatie initiala la informatia finala, sunt univoc determinate de regulile algoritmului. Aceasta inseamna, ca nu este posibil ca, aplicand un algoritm aupra unei aceleiasi informatii de mai multe ori, sa obtine rezultate diferite. Rezultatele obtinute trebuie sa fie aceleasi.
e) Claritatea, precizia algoritmului - sunt deosebit de importante in stabilirea si descrierea unui algoritm. Acesta trebuie sa specifice clar si precis, in fiecare moment, care este etapa imediat urmatoare in rezolvarea problemei respective. In prezentarea unui algoritm nu trebuie deci folosite expresii echivoce.
Structura unui algoritm
Din punct de vedere structural, un algoritm cuprinde urmatoarele etape:
Initializarea - care are rolul de a furniza dateleinitiale ce se vor prelucra si eventualele valori initiale ale unor variabile ce-si modifica valoarea pe parcursul executiei lucrarilor
Prelucrarea - care inseamna de fapt transformarile efective ale datelor initiale cu scopul obtinerii solutiilor finale
Prezentarea solutiei finale - care inseamna prezentarea, afisarea, sau transmiterea formatului dorit, a rezultatelor finale obtinute in urma prelucrarilor specificate.
Descrierea algoritmului
Scheme logice
Practica programarii calculatoarelor a demonstrat ca schemalogica este cea maiutilizata forma de reprezentare a algoritmilor. Ea realizeaza redarea expresiva, sintetica si usor de urmarit, prin vizualizarea clara a etapelor cuprinse in algoritm, a tuturor blocurilor sale componente.
Schema logica este deci o forma de reprezentare a algoritmului si modului de lucru al acestuia sub forma grafica, folosind diferite simboluri grafice.
In cadrul schemelor logice identificam urmatoarele tipuri de blocuri:
Blocul de inceput - indica inceputul descrierii algoritmului cu ajutorul schemei logice. El apare o singura data, la inceputul schemei logice si contine in interiorul lui de regula cuvantul Start sau Inceput.
Blocul de sfarsit - indica sfarsitul procesului de calcul si a schemei logice. El apare o singura data,la sfarsitul scheei logice si contine in interiorul lui de regula unul din cuvintele STOP, SFARSIT sau EXIT.
Blocul de intrare (de citire) - indica citirea, de pe un suport extern, a datelor de intrare necesare pentru functionarea algoritmului de calcul si inscrierea lor in locatii de memorie interna. El poarta eticheta Citeste, iar lista - intrare contine variabile care precizeaza zonele de memorie interna receptoare. Blocul are o intrare si o iesire, pentru a indica continuarea algoritmului de calcul. De regla daca este necesar, acest bloc apare la inceputul schemei logice, dupa blocul de Start.
Blocul de iesire (de scriere) - are aceleasi format cu cel de intrare, numai ca specifica datele de iesire, deci cele care trebuie afisate (scrise) pe un suport extern de date, pentru a putea fi ulterior utilizate, cum ar fi: pe ecran, pe imprimanta sau pe un suport magnetic. Aceastea constituie practic rezultatele prelucrarilor.
Blocul de prelucrare, de calcul sau de atribuire - reprezinta grafic o etapa a procesului de calcul in care se efectuiaza diferite calcule. De regula in acest bloc se calculeaza valoarea unei expresii (e) si sa atribuie rezultatul sau unei variabile (v). Simbolul = este operator de atribuire si nu operatorul relational din matematica. De exemplu x=z inseamna ca valoarea lui z se muta in variabila x sau, altfel spus,variabilei x i se atribuie valoarea lui z.
Blocul de decizie, de ramificatie sau de selectie - marcheaza locul unde se decide, se hotaraste, functie de continutul blocului, pe ce cale se va continua procesului de prelucrare (calcul). El poate fi un bloc de decizie simplu, cu o intrare si doua iesiricorespunzatoare celor doua valori logice posibile la testarea unei conditii logice, si anume de:Adevarat sau False. In interiorul blocului se scrie conditia ce se va testa.
Bloc de conexiune pe aceeasi pagina (conector) - este practic un cerculet folosit pentru a uni doua blocuri de pe aceeasi pagina. Astfel, daca o sageata uneste doua blocuri de pe aceeasi pagina, se foloseste drept conector un cerculet. Un conector se va plasa in acest caz in punctul de intrerupere al sagetii, iar altul in locul unde trebuie sa continue sageata. Cei doi conectori trebuie sa aiba inscris acelasi continut (grup de litere sau cifre).
Conectori de pagina sau bloc de conexiune pe o alta pagina - se utilizeaza in acelasi mod, dar pentru a continua schema logica pe o alta pagina
Scheme logice structurate
O schema logica este structurata, daca indeplineste urmatoarele conditii:
contine un singur bloc de intrare.
contine un singur bloc de iesire.
contine una din structurile de control, denumite sau structuri fundamentale, cum sunt:
- structura secventiala;
- structura alternativa;
- structura repetitiva;
Structuri fundamentale ale algoritmilor
Structura secventiala sau liniara
Desemneaza una sau mai multe operatii ce se executa una dupa cealalta, in mod liniar (secvential).
Structura alternative sau selectia
Structura alternativa desemneaza executia unei secvente de operatii S1 sau a alteia S2 in functie de indeplinirea sau nu a unei conditii.
Structura repetitiva
Structura repetitiva indica repretarea unei operatii sau secvente de operatii , atat timp cat este implinita o anumita conditie.
In functie de momentul in care se face testarea conditiei specificate, structurile repetitive sunt de mai multe tipuri.
Astfel:
conditia poate fi testate anterior executiei secventei de comenzi si atunci avem o structura de tip WHILE - DO
conditia se testeaza posterior executiei secventei de comenzi si atunci avem o structura de tip DO-UNTIL
Structura repetitive mai poate fi analizata si din punct de vedere al numarului de reluari. Din acest punct de vedere, o strucura repetitiva poate fi:
fara numerator, caci nu se cunoaste delainceputnumarul de reluari. Asa este cazul structurii de tip WHILE, indifferent de tip ei.
cu numarator, atunci cand se stie sau se poate calcula automat numarul de reluari. Asa este cazul structurii DO-FOR.
Teoreme ale programarii structurate
Programarea structurata beneficiaza si de un puternic suport teoretic constand intr-o constructie de principii, termeni si teoreme matematice specifice.
Teorema de structura Bohm si Jacopini spune:
orice schema logica este echivalenta cu o schema logica structurata
daca o organigrama cuprinde o multime F de actiuni si o multime P de predicate, pot fi adaugate lui F si P noi functii, respectiv noi predicate, astfel incat organigrama sa fie structurata si sa fie echivalenta cu cea initiala. Teorema de structura (existenta) ilustreaza faptul ca orice program poate fi pus sub forma structurata, adica sa contine numai structuri fundamentale si/sau varinatele acceptate ale acestora, prin utilizarea unor variabile boleene asociate unor functii suplimentare
corolarul ,,de sus in jos" (top - down): Un program structurat este echivalent cu un program scris sub una din urmatoarele forme:
P=Secvential (f,g)
P=Alternativ (p,f,g)
P=Repetitiv(p,f)
Unde p este un predicat al lui P, iar f si g sunt secvente structurate sau functii ale programelor.
Teorema de corectitudine:
Corectitudinea unui program structurat poate fi verificata prin examinarea fiecarui nod din arborescenta sa. Daca fiecare nod se verifica local, se spune ca programul structurat este corect.
Evaluarea corectitudinii algoritmilor
Se stie acum ca algoritmul exprima inmod explicit si neambiguu calea de rezolvare a unei probleme; el se exprima de regula, pentru prelucrarea automata a datelor, sub forma unei secvente de instructiuni scrise intr-un limbaj de programare (program). Dupa ce algoritmula fost creat si deci programul corespunzator a fost scris, este necesar sa i se dovedeasca corectitudinea, deci faptul ca procesul de calcul si prelucrari consecutive conduc, intr-un intervaldetimp finit, la obtinerea solutiei corecte a problemei formulate.
Corectitudinea reprezinta o conditie indispensabila a oricarui algoritm si daca mergem mai departe, in cadrul prelucrarii automate a datelor, a oricarui program.
In literatura de specialitate sunt prezentate numeroare tehnici de verificare si validare a algoritmilor.
Dintre aceste tehnici, metode, amintim urmatoarele:
testarea programelor si depanarea programelor
verificarea formalizata a programelor
cea mai slaba preconditie
cea mai tare postconditie
instructiuni generalizate
sintaxa expresiilor logice, ect
Testarea programelor
Actiunea de testare a programelor se deosebeste de celelalte faze prin care trec acestea prin caracterul ei in aparenta ,,demolator". Astfel, in timp ce alte faze au o esenta constructiva, testarea are in esenta un caracter distructiv, deoarece scopul ei este de a pune in evidenta proasta functionare a programului.
Procesul de detectare si apoi de eliminare a erorilor unui algoritm/program are doua componente, numite: verificare si validare.
Activitatea de validare si verificare a unui progra, urmareste in principal, urmatoarele:
descoperirea defectelor programului
certificarea faptului ca programul va functiona corect in conditii de exploatare curenta
Tehnici de testare a programelor
Prin testarea prograului se intelege deci executarea programului respectiv cu scopul de a descoperi o anomalie sau eroare. Ea se bazeaza pe construirea unor esantioane de date de intrare care sa conduca la depistarea unor erori in functionarea programului, intr-un interval de timp cat mai scurt si cu effort cat mai mic.
In ultimul timp au aparut o serie de metode de elaborare a datelor de test, care ajuta programatorul, oferindu-I posibilitatea de a aborda sistematic activitatea de testare a programelor, cu o probabilitate crescuta de depistare a erorilor.
Aceste metode pot fi denumite:
testarea functionala sau metoda cutiei negre, care presupune construirea datelor de test astfel incat sa permita testarea fiecarei functiuni a programului
testarea structurala sau metoda cutiei transparente, care presupune construirea datelor de test astfel inct toate partile programului sa poata fi testate
Depanarea programelor
Testarea unui program trebuie sa se finalizeze, pentru a fi utila, cu semnalarea erorii si localizarea ei. De aceea, testarea prograului este urmata de depanarea lui.
Depanarea unui program consta in localizarea erorii, determinarea naturii sale si corectarea ei. Ea se poate face in mod:
static, dupa executarea programului
dinamic, in timpul executiei acestuia
Depanarea statica se poate face prin mai multe metode, dintre care mai utilizata este cea denumita ,,storage dump", care presupune analiza continutului locatiilor de memorie, afisate de sistem in sistem de numeratie hexazecimal sau octal.
Depanarea simbolica, o alta metoda de depanare, ofera posibilitatea de a urmari executarea programului la nivelde limbaj sursa. Limbjele de programare ofera,in ultimele lor versiuni, un depanator simbolic integrat, care permite depanarea usoara, placuta si eficienta a programelor.
Verificarea formalizata a programelor
Practica a dovedit, in timp, ca oricat de numeroase ar fi testele efectuate asupra unor programe foarte complexe, ele nu pot garanta functionarea corecta a acestora.
Probleme de testare apar indeosebi atunci cand avem de a face cu algoritmi complexi; daca acestia ar putea fi descompusi, pe baza a unor reguli precise, in elemente simple consecutive, usor de testat, atunci problema ar putea fi mai usor rezolvata.
Astfel de reguli, care sa permita ansamblarea elementelor simple constituive si corecte in algoritmi complxi corecti, sunt urmatoarele:
regula compunerii secventiale, care presupune algoritmul A constituit din doua parti B si C, in ordinea aceasta. In acest caz daca datele de iesire in B sunt date de intrare in C, si daca cei doi algoritmi sunt corecti, algoritmul A este corect
regula implicatiei, care presupune ca daca un algoritm A este corect si urmeaza sa se implice in conditii initiale ,,mai tari" ca P, pentru a obtine rezultate ,,mai slabe" decat Q, atunci el ramane un algoritm corect
regula intructiunii de atribuire, care precizeaza conditiile in care instructiunea de atribuire, fundamentala intr-un limbaj de programare procedural, poate avea efecte laterale, influentand sau chair modificand valorile altor variabile
regula de decizie care stabileste pentru fiecare forma a ei, cate o regula de corectitudine
reguli pentru intructiunile iterative care precizeaza conditiile in care fiecare dintre aceste comenzi sunt corecte. Se stie ca executia unei instructiuni iterative se numeste iteratie, iar o astfel de comanda poate avea zero iteratii, un numar finit de iteratii sau un numar de iteratii infinit, functie de corectitudinea conditiei care controleaza ciclul si al datelor prelucrate
Utilizarea instructiunilor generalizate
Este o metoda utila pentru scrierea mai concisa a algoritmilor, care pot fi astfel mai usor de citit, de inteles si de testat.
Sintaxa expresiilor, aconditiilor si a formulelor logice
Ori de cate ori analizam, testam un algoritm sau depanam unprogram, o atentie deosebita trebuie acordata contructiei si evaluarii conditiilor logice, care pot fi simple dar pot fi si complexe, formate din mai multe conditii simple legate prin operatori logici. In acest sens trebuie verificata ordinea de evaluare a acestora, trebuie folosita si verificata facilitatea de cuprindere a expresiilor simple si/sau complexe, pentru a stabili noua ordine de executie stabilita. Aceste expresii trebuie verificate in mod deosebit, pentru ca stabilesc fie formule de calcul, fie reprezinta conditii de reluare a unui ciclu iterativ sau de selectie intr-un bloc de decizie.
Probleme
Problema 1.
Sa se determine un algoritm eficient prin care sa se preia elementele unei matrice de n linii si m coloane de numere reale. Sa se determine minimul., maximul pentru fiecare linie si coloana si la nivel de matrice cu pozitiile acestor valori. Sa se determine media elementelor nenule pentru fiecare linie, coloana si la nivel de matrice. OBS.: una din conditiile ca algoritmul sa fie eficient este ca parcurgerea elementelor matricei sa se faca de cat mai putine ori. In final se vor afisa toate rezultatele obtinute.
Program matrice;
Var i,j,n,m,g,h,pozmin,pozmax:integer;
a:array[1..100,1..100] of real;
s,ma,min,max:reall;
Begin
Readln(n,m);
For i:=1 to n do
For j:=1 to m do
Readln(a[i,j]);
g:=0;
s:=0;
for i:=1 to n do
begin
For j:=1 to m do
Begin
ma:=0;
h:=0;
If a[i, 1]<>0 then begin
g:=g+1;
s:=s+a[i, 1];
ma:=ma+a[i,1];
h:=h+1;
end;
Min:=a[i, 1];
Max:=a[i, 1];
If (a[i, j]<min) then begin
min:=a[i,j];
pozmin:=j;
end;
If (a[i,j]>max) then begin
max:=a[i,j];
pozmax:=j;
end;
end;
writeln('Elem cel mai mic de pe linia ',k,' este: ',min,' pe poz: ', i,pozmin:2);
writeln('cel mai mare elem de pe linia ',k,' este: ',max,' pe poz: ',i,pozmax:2);
writeln('Med. Aritm. pe linia ',i', este: ',ma/h);
End;
Writeln('Media aritmetica a elem nenule din matrice este: ',s/g);
For j:=1 to m do
begin
Min:=a[1, j];
Max:=a[1, j];
If a[1,j] <>0 then begin
s:=a[1, j];
g:=1;
end
else begin
s:=0;
g:=0;
end;
For i:=2 to n do
Begin
If (a[i, j]<min) then begin
min:=a[i, j ];
pozmin:=i;
end;
If (a[i, j]>max) then begin
max:=a[i, j];
pozmax:=i;
end;
if a[i, j] <>0 then begin
s:=s+a[I,j];
g:=g+1;
end;
end;
writeln('Media aritm. pe col ',j,' este: ',s/g);
writeln('Elem min de pe coloana ',j,' este: ',min,' si se afla pe poz: ', pozmin, j:2);
writekn('elem max de pe col ',j,' este: ',max,' si se afla pe poz: ', pozmax,j:2);
end;
g:=0;
s:=0;
min:=a[1,1];
max:=a[1,1];
pozmax:=0;
h:=0;
for i:=1 to n do
for j:=1 to m do begin
if a[i, j]< min then begin
min:=a[i , j];
s:=i;
g:=j;
end;
if a[i, j]> max then begin
max:=a[i , j];
h:=i;
pozmax:=j;
end;
end;
writeln('Min pe matrice este:' min,' pe poz:' ,s,g:2)
writeln('Max pe matrice e :',max,' pe poz: ',h,pozmax:2);
end.
Problema 2.
Sa se calculeze suma elementelor de rang impar ale unui vector de dimensiune n data. Elementele vectorului sunt numere reale si se introduc de la tastatura.
var x:array[1..100]of real;
n,i:byte;
s:real;
begin
write('dimensiunea vectorului ');readln(n);
for i:=1 to n do begin
write('x[',i,']=');readln(x[i]) end;
s:=0;
for i:=1 to n do
if odd(i) then s:=s+x[i];
writeln('suma = ',s:10:2)
end.
Problema 3.
Determinarea ultimei aparitii a unei valori date intr-un vector neordonat, de dimensiune n.
var x:array[1..100]of real;
n,i,poz:byte;
a:real;
begin
write('dimensiunea vectorului ');readln(n);
for i:=1 to n do begin
write('x[',i,']=');readln(x[i]) end;
write('valoarea cautata ');readln(a);
poz:=0;
for i:=1 to n do
if x[i]=a then poz:=i;
if poz<>0 then writeln('pozitia = ',poz)
else writeln('valoare negasita')
end.
Problema 4.
Determinarea elementului maxim dintr-un vector si a tuturor aparitiilor sale.
var x:array[1..100]of real;
poz:array[1..100]of byte;
n,i,poz:byte;
max:real;
begin
write('dimensiunea vectorului ');readln(n);
for i:=1 to n do begin
write('x[',i,']=');readln(x[i]) end;
max:=x[1];k:=1;poz[k]:=1;
for i:=2 to n do
if x[i]>max then begin max:=x[i];k:=1;poz[k]:=i end
else if x[i]=max then begin k:=k+1;poz[k]:=i end;
write('maximul este ',max:10:2,' pe pozitiile ');
for i:=1 to k do write(poz[i],' ')
end.
Problema 5.
Suma elementelor unei matrice dreptunghiulare, de dimensiune m*n.
var a:array[1..10,1..20]of real;
m,n,i,j:byte;
s:real;
begin
writeln('nr linii');readln(m);
writeln('nr coloane');readln(n);
for i:=1 to m do
for i:=1 to n do begin write('a[',i,',',j,]='); readln(a[i,j]) end;
s:=0;
for i:=1 to m do for j:=1 to n do s:=s+1a[i,j];
writeln('suma',s)
end.
Problema 6.
Determinarea elementelor maxim si minim dintr-o matrice dreptunghiulara, de dimensiune m*n.
var a:array[1..10,1..20]of real;
m,n,i,j:byte;
min,max:real;
begin
writeln('nr linii');readln(m);
writeln('nr coloane');readln(n);
for i:=1 to m do
for i:=1 to n do begin write('a[',i,',',j,]='); readln(a[i,j]) end;
max:=a[1,1];min:=max;
for i:=1 to m do
for j:=1 to n do
if a[i,j]>max then max:=a[i,j]
else if a[i,j]<min then min:=a[i,j];
writeln('maximul=',max:10:2);
writeln('minimul=',min:10:2)
end.
Problema 7.
La o petrecere intre prieteni, Alin sugereaza sa-l sune la telefon pe Catalin pentru a participa si el la acest eveniment. Alin a reusit sa stranga urmatoarele informatii:
Care este numarul lui Catalin
Din 6. rezulta c=2, d=4. Din 3. rezulta e=4. Din 4. rezulta b=1. Din 5. rezulta a=3. Numarul este 31244fg. Din 1. efg=4*bcd => efg=4*124 => efg = 496. Deci numarul este 3124496
Problema 8.
Intr-o camera avem 3 intrerupatoare. Intr-o camera alaturata avem 3 becuri. Becurile sunt legate la intrerupatoare. Intrand o singura data in camera cu intrerupatoare si pe urma in camera cu becuri determinati becul fiecarui intrerupator.
Problema este destul de simpla daca se tine cont de efectele pe care le are curentul electric asupra filamentului unui bec, si anume efectul de incalzire.
Intrand in camera cu intrerupatoare apasam pe doua dintre ele dintre care unul il lasam aprins, iar pe celalalt il stingem dupa o perioada de timp. Intrand in camera cu becuri facem urmatoarea deductie :
becul care este aprins apartine intrerupatorului lasat aprins, cel care este incandescent apaertine celui cu care ne-am " jucat ", iar cel care este rece apartine celui care nu l-am atins.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |