Ingineria Sistemelor de Programe - Capitolul 3

Curs
9/10 (2 voturi)
Conține 1 fișier: doc
Pagini : 21 în total
Cuvinte : 10753
Mărime: 67.04KB (arhivat)
Publicat de: Demetra Simon
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Mihail Buricea

Extras din curs

1. Definirea unui algoritm. Proprietati.

Un algoritm reprezintă, în mod uzual, o metodă de descriere a rezolvării unor probleme. Mai exact, un algoritm reprezintă un ansamblu finit de operaţii care se aplică asupra unor informaţii numite mărimi sau date de intrare ale unei probleme in vederea obţinerii unor rezultate numite mărimi sau date de ieşire ale acesteia.

În practica utilizării algoritmilor se disting două etape : descrierea unui algoritm si execuţia algoritmului. Pentru a descrie corect un algoritm, trebuie ales un limbaj adecvat de descriere, cu o suficientă putere expresivă, care să poată descrie operaţiile ce se pot efectua asupra datelor problemei. Execuţia unui algoritm se referă la componenta pragmatică a limbajului de descriere; în mod uzual un algoritm trebuie să poată fi executat de către o persoană care are cunostinţe din domeniul problemei de rezolvat, folosind doar creionul si hârtia.

Unul dintre primele limbaje de descriere a algoritmilor a fost limbajul natural. Acesta are o mare flexibilitate şi permite descrierea multor tipuri de operaţii. În mod uzual, se folosesc propoziţii pentru a descrie fiecare operaţie din cadrul algoritmilor. Pentru a evidenţia succesiunea operaţiilor, acestea se numerotează cu numere crescătoare. O asemenea operaţie descrisă printr-o propoziţie numerotată se mai numeşte pas. În acest mod, un algoritm este reprezentat de o secvenţă de paşi.

Exemplul 1.1. Să se determine cel mai mare divizor comun a două mumere întregi folosind algoritmul lui Euclid.

Analiza problemei :

Se notează cu m şi n numerele pentru care trebuie determinat cel mai mare divizor comun. Astfel, variabilele m şi n reprezintă datele sau variabile de intrare pentru problemă. Algoritmul lui Euclid presupune efectuarea repetată a unor operaţii de împărţire cu rest, până când se obţine un rest zero. Fie de exemplu: m=12, n=16:

12:16=0 rest 12 (r1=12)

16 :12=1 rest 4 (r2=4)

12 :4=3 rest 0 (r3=0)

Ultimul rest diferit de zero (r2=4) va fi solutia problemei.

Pentru generalizare se noteză următoarele variabile: m pentru desemnarea deîmpărţitului, n pentru desemnarea împărţitorului şi r pentru desemnarea restului (câtul nu intervine în algoritm). Se observă faptul că la fiecare pas, în afară de primul, valorile deîmpărţitului m si împărţitorului n se determină din valorile pasului precedent: noua valoare a deîmpărţitului m este vechea valoare a împărţitorului n şi noua valoare a împărţitorului n este vechea valoare a restului r. Astfel, ultimul rest nenul va fi memorat în variabila n, care devine si o variabilă de ieşire.

Descrierea algoritmului:

1. Se citesc de la intrare valori pentru m şi n.

2. Se împarte m la n şi se obţine un rest r.

2. Dacă r=0, atunci scrie la ieşire c.m.m.dc =n şi algoritmul se termină.

3. Dacă r<>0, atunci se atribuie: m=n, n=r şi se face salt la pasul 2.

4. Sfârşit.

Se observă că algoritmul din exemplul precedent se termină la pasul 4. O primă întrebare se refeă la faptul dacă după un număr finit de paşi, restul devine zero pentru ca algoritmul să se termine. O argumentare la această întrebare este următoarea afirmaţie: şirul de resturi: r1, r2, r3, , este un şir descrescător de numere întregi pozitive şi care tinde la zero.

Pe baza examinării algoritmului precedent, se pot descrie principalele caracteristici ale unui algoritm:

1. Generalitatea unui algoritm, se referă la faptul că în mod uzual algoritmii descriu rezolvarea unor categorii de probleme, nu a unor probleme singulare. În exemplul precedent, algoritmul descrie determinarea celui mai mare divizor comun a oricăror numere întregi, nu numai a numerelor 12 şi 16.

2. Cracterul finit al algoritmului, reprezintă cerinţa ca numărul de operaţii efectuate pentru determinarea mărimilor de ieşire să fie finit, altfel algoritmul nu poate să determine soluţiile problemei aferente.

3. Claritatea algoritmului, se referă la cerinţa ca operaţiile din algoritm să fie clare şi concise, fiind astfel înlăturate nedeterminismul şi ambiguităţile anumitor operaţii.

4. Intrarea în algoritm, este reprezentată introducerea sau citirea a zero sau mai multe mărimi care trebuie specificate algoritmului, pantru ca el să poată fi executat. În mod uzual intrarea în algoritm se face prin intermediul unor varabile de intrare, care la începutul execuţiei algoritmului vor fi iniţializate cu valorile de intrare curente.

5. Ieşirea din algoritm, constă în extragerea sau scrierea unei mărimi sau mai multor mărimi de ieşire care sunt determinate prin execuţia algoritmului, mărimi ce reprezintă rezultatele problemei aferente algoritmului. Ieşirea se realizează în mod uzual prin intermediul unor variabile de ieşire. Algoritmii pot să nu aibe mărimi de intrare, dar trebuie obligatoriu să aibe mărimi de ieşire adică rezultate, pentru că acestea reprezintă soluţiile problemelor aferente.

Toate caracteristicile, în fara caracteristicii 3, sunt verificate de algoritmul din exemplul 1. Ambiguităţile care pot apare se referă la semnificaţia operaţiilor efectuate în algoritm: de exemplu, nu se specifică dacă valorile variabilelor m şi n sunt întregi sau reale. În cazul în care valorile sunt reale, nu are sens efectuarea unor operaţii cu rest.

În general, limbajul natural nu permite eliminarea completă a ambiguităţilor operaţiilor. Din acest motiv, pentru specificarea algoritmilor se utilizează limbaje de descriere cu o semantică mai puternică.

2. Limbajul algoritmic

Limbajul algoritmic (sau limbajul pseudocod) reprezintă o metodă uzuală de descriere a algoritmilor, mai formalizată decât limbajul natural. Avantajul constă în faptul că descrierea operaţiilor unui algoritm poate fi făcută mai clar şi cu mai puţine ambiguităţi decât în cazul utilizării limbajului natural.

2.1 Elemente de gramatică

Este necesară prezentarea unui set minim de reguli pentru a putea defini sintaxa acestui limbaj.

Majoritatea propoziţiilor din limbaj sunt propoziţii imperative, adică instrucţiuni, fiecare având o semnificaţie foarte clară şi desemnând operaţii precise. Puţinele propoziţii declarative au doar rolul de a delimita din punct de vedere sintactic algoritmii, sau de a specifica în cazul funcţiilor şi procedurilor modul în care se face transferul de informaţie între funcţia/procedura apelată şi algoritmul apelant.

În afara acestor propoziţii, în cadrul algoritmilor pot apare propoziţii dintr-o categorie aparte, numite comentarii. Comentariile nu sunt luate în considerare la execuţia algoritmilor, ele având doar un rol de explicare a anumitor operaţii din cadrul acestora. Un comentariu începe cu şirul de caractere // şi se termină la sfârşitul liniei curente.

Desemnarea acţiunilor din cadrul propoziţiilor imperative, adica a instrucţiunilor, se face prin intermediul unuia sau a mai multor cuvinte cheie. Acestea sunt cuvinte rezervate şi nu pot fi utilizate de către programator în alte scopuri. A doua categorie importantă de cuvinte sunt cuvintele utilizator, numite şi identificatori, care sunt nume date de programatori anumitor obiecte din algoritm. Pentru a deosebi cuvintele din cele două categorii, cuvintele cheie sunt subliniate. Identificatorii sunt şiruri de caractere alfabetice, care încep întotdeauna cu o literă.

În mod curent, identificatorii desemnează nume de variabile. Întrucât o mare parte a problemelor, a căror rezolvare poate fi descrisă algoritmic, sunt de natură ştiinţifică, o parte a noţiunilor şi conceptelor din matematică au fost preluate în limbajul algoritmic. Astfel, noţiunea de variabilă reprezintă o entitate cu două atribute: numele variabilei, care este un identificator, şi valoarea sa curentă sau instantanee. În timpul execuţiei unui algoritm, valoarea curentă a unei variabilă se poate modifica. Acţiunea prin care unei variabile i se asociază o valoare curentă se numeşte asignarea variabilei respective.

O altă noţiune utilizată este cea de expresie. O expresie este formată din operanzi, operatori şi perechi de paranteze rotunde. Operanzii pot fi constante, variabile şi apeluri de funcţii. Operatorii reprezintă operaţiile elementare ce se pot efectua asupra operanzilor.

Evaluarea unei expresii presupune aplicarea operatorilor asupra operanzilor într-o anumită ordine, pentru obţinerea rezultatului final. Schimbarea ordinii de evaluare se realizează prin utilizarea parantezelor rotunde.

Pentru a nu formaliza excesiv acest limbaj, anumite noţiuni din limbajele de programare de nivel înalt nu sunt luate în considerare. De exemplu, noţiunea de tip de date este utilizată în mod implicit. Tipul de date al unei variabile reprezintă mulţimea valorilor pe care variabila le poate lua în timpul execuţiei unui algoritm. Se subînţelege faptul că o variabilă nu poate lua valori diferite în timpul execuţiei unui algoritm (valori întregi şi valori logice de exemplu).

Preview document

Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 1
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 2
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 3
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 4
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 5
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 6
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 7
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 8
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 9
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 10
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 11
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 12
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 13
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 14
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 15
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 16
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 17
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 18
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 19
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 20
Ingineria Sistemelor de Programe - Capitolul 3 - Pagina 21

Conținut arhivă zip

  • Ingineria Sistemelor de Programe - Capitolul 3.doc

Alții au mai descărcat și

Algoritmi Simpli Algoritmi de Sortare

Notiunea de algoritm este o notiune de baza pentru programarea calculatoarelor, astfel ca trebuie sa începem cu un studiu atent al acestui concept....

Manual Limbaj C

1. Generalitati asupra limbajului C 1.1. Introducere Limbajul C a fost creat la începutul anilor '70 de catre Brian W Kernigham si Dennis M...

Fișiere în limbajul C

Capitolul I Fisiere in ingineria programarii in C 1.1 Generalitati Un fisier este o multime de informatii referitoare la o clasa de obiecte...

Structuri de Date

Curs2 1.TIPURI DE DATE 1.1. DATE SI INFORMATII În practica se face deosebire între o data si o informatie. Exemplele oferite în cele mai multe...

Laboratoare C

1. Sa se evalueze urmatoarea functie: f: R → R f(x) = namespace _1.Functia_f { class Program { static void Main(string[] args) { float x,...

Masive - Seminar

Masivele sunt structuri de date omogene cu un numar finit si cunoscut de elemente, ce ocupa un spatiu contiguu de memorie. Structurile de date de...

Analiza multidimensională

SQL Server a fost creat de către Microsoft şi este un DBMS (DataBase Management Systems) de întreprindere care se utilizează de mulţi ani. În...

Te-ar putea interesa și

Proiectare și verificarea unui sașiu spațial folosind programe soft dedicate

Memoriu justificativ Tema lucrării de diplomă este “Proiectarea şi verificarea unui şasiu spatial sudat utilizând pachete software dedicate”. Ea...

Echipamente Birotice Utilizate în Munca de Secretariat

CAPITOLUL I BIROURILE DE SECRETARIAT – SPAŢII ALE ACTIVITĂŢLOR INFORMATIONALE ŞI COMUNICAŢIONALE 1.1. Birotica – ştiinţa automatizării...

Sistem Informatic pentru Creditarea Persoanelor Juridice

INTRODUCERE În conţinutul lucrării îmi propun să cuprind elementele de bază ale limbajului de programare C#.NET, a transferului de date între...

Ingineria Sistemelor de Producție

I. DATE INIŢIALE 1.1. Tema proiectului Programarea şi conducerea fabricaţiei a trei repere în condiţii de resurse nelimitate fără date impuse şi...

Clasificarea Virușilor

1.Istoria viruşilor Istoria viruşilor de calculatoare este lungă şi interesantă. Dar ea a devenit cu adevărat palpitantă abia din momentul în care...

Bazele Sistemelor Automatizate

Obiectivele urmarite - Obiectivele acestui curs se refera la sistemele care functioneaza in domeniul continuu de timp; - Sistemele care...

Fișiere în limbajul C

Capitolul I Fisiere in ingineria programarii in C 1.1 Generalitati Un fisier este o multime de informatii referitoare la o clasa de obiecte...

Ingineria Sistemelor de Programe - Capitolul 2

Capitolul II Structuri complexe de date in ingineria programarii 1. Generalitati Variabilele utilizate in Limbajul C/C++, din punct de vedere al...

Ai nevoie de altceva?