programarea calculatoarelor

6
ROMÂNIA Universitatea Politehnica din Bucuresti Facultatea de Antreprenoriat, Ingineria si Managementul Afacerilor Programarea Calculatoarelor - Laboratorul 1 Responsabil: Bogdan Ţigănoaia, [email protected] Obiectivele laboratorului sunt urmatoarele: Introducere in programarea calculatoarelor si prezentarea notiunii de algoritm Prezentarea notiunii de program Limbaje de programare 1. Introducere in programarea calculatoarelor si prezentarea notiunii de algoritm Programarea calculatoarelor este procesul de proiectare, implementare, testare, depanare a codului sursa a programelor de calculator.Codul sursa este scris intr-un limbaj de programare si poate fi o modificare a unei surse existente sau ceva complet nou.Obiectivele programarii calculatoarelor este de a crea programe care corespund unui comportament anume.Scrierea 1

Upload: oana-chiriac

Post on 03-Feb-2016

213 views

Category:

Documents


0 download

DESCRIPTION

Programarea calculatoarelor

TRANSCRIPT

Page 1: Programarea calculatoarelor

ROMÂNIA

Universitatea Politehnica din Bucuresti

Facultatea de Antreprenoriat, Ingineria si Managementul Afacerilor

Programarea Calculatoarelor - Laboratorul 1

Responsabil: Bogdan Ţigănoaia, [email protected]

Obiectivele laboratorului sunt urmatoarele:

Introducere in programarea calculatoarelor si prezentarea notiunii de algoritm

Prezentarea notiunii de program

Limbaje de programare

1. Introducere in programarea calculatoarelor si prezentarea notiunii de algoritm

Programarea calculatoarelor este procesul de proiectare, implementare, testare, depanare a

codului sursa a programelor de calculator.Codul sursa este scris intr-un limbaj de programare

si poate fi o modificare a unei surse existente sau ceva complet nou.Obiectivele programarii

calculatoarelor este de a crea programe care corespund unui comportament anume.Scrierea

1

Page 2: Programarea calculatoarelor

programelor (a codului sursa) necesita de cele mai multe ori o bogata expertiza in diferite

subdomenii, incluzand cunostinte de logica formala si algoritmi.

Notiunea de algoritm se refera la o succesiune de etape care se poate aplica mecanic pentru

rezolvarea unei clase de probleme. Pentru redactarea unui algoritm, putem folosi una din

urmatoarele mijloace:

Scheme logice

Pseudocod - este o scriere intermediară, menită să simplifice scrierea unui algoritm

într-un limbaj de programare i să ajute la realizarea clarită ii algoritmului, în timpș ț

scurt.

Mental, fara pseudocod sau scheme logice

Cerintele obligatorii pentru un algoritm sunt :

Claritate, algoritmul nu trebuie sa aiba ambiguitati

Generalitate, algorimul trebuie sa rezolve o intreaga clasa de probleme si nu

probleme particulare

Finitudine, algoritmul trebuie sa furnizeze un rezultat intr-un timp finit

Intrebare: O problema poate avea mai multi algoritmi de rezolvare? Care e cel mai

bun?

Obiectele cu care lucreaza algoritmii:

Date – de intrare, de iesire.

Dupa tipul datelor – intregi, reale, logice ( 0/1 sau False/True), caractere (‘a’), siruri

de caractere “abc”.

Constante – date din program care nu trebuie citite sau calculate – PI, e, etc.2

Page 3: Programarea calculatoarelor

Variabile – au un nume unic, dar continutul nu ; Caracteristici ale variabilelor -

nume, tip, valoarea la un moment dat, adresa variabilei (locul in memorie).

Ex: x este de tip intreg, are valoare 10 si adresa la care se afla in memorie: 0xFF38

Expresii – sunt construite cu ajutorul constantelor, variabilelor si a operatorilor, fiind

de mai multe tipuri, ca si variabilele. Exemplu:10*x+2; x>y; x+y

Operatii - intrarea - preluarea unor date de la un dispozitiv de intrare si trecerea

unei date din memorie catre un dispozitiv de iesire (iesirea) ; decizia, atribuirea -

x=7; y=x+y ( se evalueaza expresia din dreapta atribuirii, valoarea obtinuta este

atribuita variabilei din stanga, care isi pierde vechea valoare).

2. Prezentarea notiunii de program si limbaje de programare

Prin program se intelege o descriere precisa si concisa a unui algoritm intr-un anumit

limbaj de programare.

Limbaje de programare:

Limbaje de nivel coborat, dependent de calculator:limbaj de asamblare (mnemonice

pentru operatii, simboluri pentru adrese, este un limbaj dependent de masina, greu de

programat)

Limbaje de nivel inalt, independente de structura calculatorului: Fortran -1955,

pentru probleme tehnico stiintifice, Cobol -1959, pentru probleme economice,

Programare structurata –’70, Programarea orientata obiect –‘80.

Programarea structurata – se refera la programarea top-down, adica se bazeaza pe

descompunerea unei probleme complexe in subprobleme mai simple numite module.

3

Page 4: Programarea calculatoarelor

Teorema de structura a lui Bohm si Jacopini : Orice algoritm poate fi compus cu ajutorul

a trei structuri de calcul (fiecare va avea o singura intrare si o singura iesire):

structura secventiala - secventa

structura alternativa – decizia

structura repetitiva – ciclul

Programarea orientata obiect - POO: http://ro.wikipedia.org

Programarea orientată pe obiect (Programare Orientată Obiectual) este unul din cei mai

importan i pa i făcu i în evolu ia ț ș ț ț limbajelor de programare spre o mai puternică abstractizare

în implementarea programelor. Ea a apărut din necesitatea exprimării problemei într-un mod

mai natural fiin ei umane. O mare problemă a ț programării structurate era separarea datelor de

unită ile care prelucrau datele(subrutinele), ceea ce făcea foarte dificilă extinderea iț ș

între inerea unui program. Astfel s-a pus problema ca aceste două ț entită iț (date i subrutine)ș

să fie grupate într-un anumit mod, astfel încât subrutinele să " tie" în permanen ă ce dateș ț

prelucrează i, mai mult decăt atât, ele să formeze un modul, adică o unitate care separăș

implementarea de interfa ă, ceea ce implică posibilitatea refolosirii codului. A apărut astfelț

conceptul de clasă. Clasa realizează, în spe ă, ceea ce am văzut mai înainte: grupează dateleț

i unită ile de prelucrare a acestora într-un modul, unindu-le astfel într-o entitate mult maiș ț

naturală. Clasa, pe lângă faptul că abstractizează foarte mult analiza/sinteza problemei, are

proprietatea de generalitate, ea desemnând o mul ime de obiecte care împart o serie deț

proprietă i.De exemplu: Clasa "floare" desemnează toate plantele care au flori, precum clasaț

"Fruct" desemnează toate obiectele pe care noi le identificam ca fiind fructe. Bineîn eles, înț

implementarea efectivă a programului nu se lucrează cu entită i abstracte, precum clasele ciț

se lucrează cu obiecte, care sunt "instan ieri" ale claselor. Altfel spus, plecând de la exemplulț

de mai sus, dacă se construie te un program care să lucreze cu fructe, el nu va prelucraș 4

Page 5: Programarea calculatoarelor

entitatea "fruct" ci va lucra cu entită i concrete ale clasei "fruct", adică "măr", "pară",ț

"portocală", etc.Apare însă următoarea problemă: "cum se trece de la o structură generală la

una particulară, mai precis ce înseamnă efectiv procesul de instan iere?". Instan iereaț ț

(trecerea de la clasă la obiect) înseamnă atribuirea unor proprietă i specifice clasei, astfelț

încât aceasta să indice un obiect anume, care se diferen iază de toate celelalte obiecte dinț

clasă printr-o serie de atribute. Dacă vom considera ca "fruct_exotic" care desemnează clasa

tuturor fructelor exotice con ine proprietatea "culoare" atunci atribuind acesteia valoareaț

"galben" noi vom crea o nouă mul ime( clasa fructelor exotice care au culoarea galbenă ) careț

este o subclasă a clasei "fruct_exotic", deci realizăm astfel o particularizare. Mai mult decât

atât, dacă vom adăuga noi i noi atribute vom individualiza clasa astfel încât să ajungem la unș

caz concret, care este Obiectul. Principiile de baza ale POO sunt urmatoarele:

• Abstractizarea – Este posibilitatea ca un program să ignore unele aspecte ale

informa iei pe care o manipulează, adică posibilitatea de a se concentra asupraț

esen ialului. Fiecare obiect în sistem are rolul unui “actor” abstract, care poateț

executa ac iuni, î i poate modifica i comunica starea i poate comunica cu alteț ș ș ș

obiecte din sistem fără a dezvălui cum au fost implementate acele facilita i. Procesele,ț

func iile sau metodele pot fi de asemenea abstracte, i în acest caz sunt necesare oț ș

varietate de tehnici pentru a extinde abstractizarea:

• Încapsularea – numită i ascunderea de informa ii: Asigură faptul că obiectele nu potș ț

schimba starea internă a altor obiecte în mod direct (ci doar prin metode puse la

dispozi ie de obiectul respectiv); doar metodele proprii ale obiectului pot accesaț

starea acestuia. Fiecare tip de obiect expune o interfa ă pentru celelalte obiecte careț

specifică modul cum acele obiecte pot interac iona cu el.ț

• Polimorfismul – Este abilitatea de a procesa obiectele în mod diferit, în func ie deț

tipul sau de clasa lor. Mai exact, este abilitatea de a redefini metode pentru clasele 5

Page 6: Programarea calculatoarelor

derivate. De exemplu pentru o clasă Figura putem defini o metodă arie. Dacă Cerc,

Dreptunghi, etc. vor extinde clasa Figura, acestea pot redefini metoda arie.

• Mo tenirea ș – Organizează i facilitează polimorfismul i încapsularea, permi ândș ș ț

definirea i crearea unor clase specializate plecând de la clase (generale) deja definiteș

- acestea pot împărtă i ( i extinde) comportamentul lor, fără a fi nevoie de a-lș ș

redefini. Aceasta se face de obicei prin gruparea obiectelor în clase i prin definirea deș

clase ca extinderi ale unor clase existente. Conceptul de mo tenire permite construireaș

unor clase noi, care păstrează caracteristicile i comportarea, deci datele i func iileș ș ț

membru, de la una sau mai multe clase definite anterior, numite clase de bază, fiind

posibilă redefinirea sau adăugarea unor date i func ii noi. Se utilizează ideea:ș ț

”Anumite obiecte sunt similare, dar în acela i timp diferite”. O clasă mo tenitoare aș ș

uneia sau mai multor clase de bază se nume te clasă derivată. Esen a mo teniriiș ț ș

constă în posibilitatea refolosirii lucrurilor care func ionează.ț

Task 1: Scrieti pseudocodul pentru interschimbarea a doua variabile ce contin numere

reale.

Task 2: Scrieti pseudocodul pentru a rezolva o ecuatie de grad doi cu coeficienti reali.

Bibliografie: http://www.curs.cs.pub.ro, www.wikipedia.org

6