Extras din laborator
1.1. LIMBAJE DE PROGRAMARE SI ALGORITMI
1.1.1. Definitia si proprietatile algoritmilor
Limbajele de programare sunt mijloace de comunicare între om si calculator. Ce
transmite un om, utilizatorul, calculatorului? În general, prelucrarile care trebuie sa fie
executate de catre calculator. Se stie ca un calculator este un obiect inert atâta timp
cât nu i se indica operatiile care trebuie executate. Aceste indicatii sunt exprimate sub
forma unor comenzi sau indicatii transmise spre executie calculatorului. Descrierea de
catre programator a succesiunii acestor operatii se numeste program.
Scrierea unui program implica doua aspecte:
a) exprimarea a ceea trebuie sa faca un calculator, respectiv modul în care
calculatorul va rezolva problema data; pentru aceasta utilizatorul transmite
calculatorului un algoritm. Limbajul de programare este modul în care descriem acest
algoritm.
b) precizarea datelor care vor fi prelucrate (prelucrarea datelor înseamna
modificarea datelor de intrare astfel încât sa se ajunga la rezultate). Precizarea
datelor înseamna precizarea tipului datelor, organizarea lor, relatiile dintre ele.
Limbajul de programare trebuie sa puna la dispozitia utilizatorului facilitati
corespunzatoare de descriere a datelor.
Un algoritm este o succesiune de operatii pe care le facem asupra unor date
(numite date - marimi de intrare) pentru a obtine anumite rezultate (numite si date –
marimi de iesire). Pentru a fi util un algoritm trebuie sa fie precis, neambiguu si sa
specifice, pentru toate cazurile posibile, o secventa unica si finita de actiuni care sa
conduca la un rezultat previzibil.
Operatiile unui algoritm pot fi executate fie de o persoana, fie de un calculator.
Un algoritm trebuie sa aiba urmatoarele proprietati:
1. Generalitate. Nu scriem un algoritm pentru rezolvarea unei probleme
particulare, ci pentru rezolvarea unei întregi clase de probleme. De exemplu: nu
scriem un algoritm pentru rezolvarea ecuatiei
0 2 3 = + x
ci pentru rezolvarea ecuatiei de gradul I, ecuatie care are forma:
0 = + b ax
2. Claritate. Aceasta proprietate se refera la construirea algoritmului. Operatiile
algoritmului si succesiunea executarii lor trebuie sa fie descrise clar, precis, fara
ambiguitati astfel încât sa permita executia mecanica, automata a actiunilor
2
algoritmului. Actiunile care alcatuiesc algoritmul pot fi grupate în blocuri de actiuni
pentru ca algoritmul sa poata fi usor explicat, înteles, testat si modificat.
Aceste grupuri de actiuni, din care este format algoritmul, trebuie sa fie astfel
interconectate încât sa poata fi înlocuite într-o versiune îmbunatatita a algoritmului,
fara a rescrie algoritmul în întregime.
3. Eficienta. Pentru rezolvarea unei anumite probleme pot exista mai multi
algoritmi (exista mai multe solutii). Vom alege acel algoritm care are o viteza de
executie mai mare (numarul operatiilor care trebuie executate este mai mic) si/sau
dimensiunea sa este mai mica.
4. Un algoritm trebuie sa fie complet. Pentru aceasta toate actiunile sale trebuie
sa fie exact definite.
5. Neambiguitatea. Un set de instructiuni vor fi neambigue daca exista o
singura interpretare a lor.
6. Un algoritm trebuie sa fie determinist. Aceasta semnifica faptul ca, daca
sunt urmate instructiunile din algoritm, cu siguranta vom obtinute întotdeauna
rezultatul dorit.
7. Finitudinea. Acest lucru înseamna ca algoritmul trebuie sa se termine dupa
un numar finit de pasi (chiar daca acest numar este foarte mare). Aceasta cerinta nu
se refera numai la numarul finit de pasi pe care trebui sa-l execute algoritmul, dar si
la folosirea unui numar finit de variabile (date) folosite pentru atingerea rezultatului
dorit. Aceasta proprietate deosebeste notiunea de algoritm de cea de metoda
(procedeu, regula) de calcul. Se poate spune ca un algoritm este o metoda de calcul
cu un numar finit de operatii. De exemplu, procedeul învatat în gimnaziu de extragere
a radacinii patrate dintr-un numar care nu este un patrat perfect este o metoda de
calcul, dar nu este un algoritm pentru ca numarul de zecimale al radacinii patrate fiind
infinit, procedeul va cuprinde o infinitate de operatii. Metoda de extragere a radacinii
patrate poate deveni un algoritm daca limitam numarul zecimalelor rezultatului.
În afara acestor proprietati la scrierea unui algoritm trebuie bine stabilite de la
început datele de intrare (intrarea algoritmului – datele pe care le avem la dispozitie
prin tema de proiectare – enuntul problemei) si datele de iesire (iesirea algoritmului
– rezultatele pe care vrem sa le obtinem). Atât pentru datele de intrare, cat si pentru
datele de iesire trebuie sa stabilim:
¾ tipul lor (date de tip întreg, real, siruri de caractere)
¾ domeniul în care aceste date pot lua valori. (de exemplu daca se specifica în
problema: se citeste un numar natural mai mic decât 20, trebuie sa verificam daca
3
valoarea citita este într-adevar mai mica decât 20 si mai mare ca zero – validarea
datelor).
Executia unui algoritm înseamna executia pas cu pas a operatiilor
(instructiunilor) descrise de algoritm. Algoritmii se considera executati pe masini
abstracte / virtuale (ale caror caracteristici le abstractizeaza pe cele ale masinile /
sistemelor de calcul existente la un moment dat).
Preview document
Conținut arhivă zip
- Programarea Calculatoarelor
- Laboratoare PC
- L10
- F1.TXT
- L10_1.CPP
- L10_2.CPP
- L10_3.CPP
- L10_4.CPP
- L10_5.CPP
- L10_6.CPP
- L10_P3.CPP
- L9_P1.CPP
- L9_P2.CPP
- L11
- LAB11_1.CPP
- LAB11_2.CPP
- LAB11_3.CPP
- LAB11_4.CPP
- LAB11_5.CPP
- L2
- EUCLID.CPP
- P3_1_L2.CPP
- P3_2_L2.CPP
- P3_L2.CPP
- P4_L2.BAK
- P4_L2.OBJ
- P5_L2.BAK
- P5_L2.EXE
- P5_L2.OBJ
- PRB1_L2.CPP
- PRB3_L2.CPP
- PROBL2.CPP
- PROBL3.CPP
- PROBL4.CPP
- PROG1.CPP
- PROG5.CPP
- PROGMAX.CPP
- TRIUNGHI.CPP
- L3
- P1_3.CPP
- P1_L3.CPP
- P2_3.CPP
- P2_L3.CPP
- P3_3.CPP
- P3_L3.CPP
- P4_3.CPP
- P4_L3.CPP
- P5_3.CPP
- P6_3.CPP
- L4
- CHAR.CPP
- CHAR.EXE
- CHAR.OBJ
- CITIRE.CPP
- L4_1.DSK
- L4_1.EXE
- L4_1.PRJ
- L4_1AFIS.BAK
- L4_1AFIS.CPP
- L4_1AFIS.OBJ
- L4_1B.DSK
- L4_1B.EXE
- L4_1B.PRJ
- L4_1CITI.BAK
- L4_1CITI.CPP
- L4_1CITI.OBJ
- L4_1MAIN.BAK
- L4_1MAIN.CPP
- L4_1MAIN.OBJ
- L4_1MAX.BAK
- L4_1MAX.CPP
- L4_1MAX.OBJ
- L4_1MIN.BAK
- L4_1MIN.CPP
- L4_1MIN.OBJ
- L4_2.DSK
- L4_2.PRJ
- L4_2MAIN.BAK
- L4_2MAIN.CPP
- L4_2SORT.BAK
- L4_2SORT.CPP
- L4_2SORT.OBJ
- L4_3.DSK
- L4_3.PRJ
- P4_3interclas.CPP
- P4_3INTR.BAK
- P4_3INTR.CPP
- P4_3INTR.OBJ
- P4_3IN~1.BAK
- P4_3MAIN.BAK
- P4_3MAIN.CPP
- P4_3MAIN.OBJ
- P4_4.DSK
- P4_4.EXE
- P4_4.PRJ
- P4_4BACK.BAK
- P4_4BACK.OBJ
- P4_4MAIN.BAK
- P4_4MAIN.CPP
- P4_4MAIN.OBJ
- L5
- GRAFTEXT.OBJ
- LAB5_1.CPP
- LAB5_1.EXE
- LAB5_1.OBJ
- LAB5_2.CPP
- LAB5_2.EXE
- LAB5_2.OBJ
- LAB5_3.CPP
- LAB5_3.EXE
- LAB5_3.OBJ
- LAB5_4.CPP
- LAB5_4.OBJ
- L6
- L6_P1.BAK
- L6_P1.CPP
- L6_P1.EXE
- LAB6_1.BAK
- LAB6_1.CPP
- LAB6_1.OBJ
- Lab6_2.cpp
- LAB6_2.EXE
- LAB6_2.OBJ
- TEMP.CPP
- TEMP.EXE
- TEMP.OBJ
- TEXT.H
- TEXT1.BAK
- TEXT1.CPP
- L7
- P1
- FUNCTII.BAK
- FUNCTII.CPP
- FUNCTII.OBJ
- MAIN.BAK
- MAIN.OBJ
- P1.DSK
- P1.EXE
- P1.PRJ
- SIR.BAK
- SIR.H
- FUNCTII.CPP
- MAIN.CPP
- SUMA.H
- NEW
- FACT.TXT
- OPBIN.TXT
- Prolog
- l4
- EX4.PRO
- EXP3.PRO
- PR2.PRO
- PROBII2.PRO
- TEM1.PRO
- TEM3.PRO
- WORK_EX2.PRO
- Laboratoare
- CROSSWRD.PRO
- EVAL.PRO
- LOG1.TXT
- LOG10.TXT
- LOG10.WP
- LOG2.TXT
- LOG2.WP
- LOG3.TXT
- LOG3.WP
- LOG4.TXT
- LOG4.WP
- LOG5.TXT
- LOG5.WP
- LOG7.TXT
- LOG7.WP
- LOG8.TXT
- LOG8.WP
- LOG9.TXT
- LOG9.WP
- MAKETREE.PRO
- PARSE.PRO
- RUSFARM.PRO
- SUMMUL.PRO
- WORK.PRO
- Scoala
- PRB1_L2.CPP
- L9_P1.CPP
- L9_P2.CPP
- L1 - Introducere in programare.pdf
- L10.pdf
- L11.pdf
- L12.pdf
- L13.pdf
- L2.pdf
- L3.pdf
- L4.pdf
- L5.pdf
- L6.pdf
- L7.pdf
- L7A.pdf
- L8.pdf
- L9.pdf