Curs Programarea Calculatoarelor si Limbaje de Programare PRELEGEREA 1 ETAPELE REZOLVĂRII UNEI PROBLEME CU AJUTORUL UNUI SISTEM DE CALCUL

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Laborator 4 suport teoretic Tipuri de date utilizate în limbajul de programare C.

Problema a II - a (10 puncte) Diferite circuite electrice

MARCAREA REZISTOARELOR

Metode de interpolare bazate pe diferenţe divizate

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Criptosisteme cu cheie publică III

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Curs 1 Şiruri de numere reale

Sisteme diferenţiale liniare de ordinul 1

Integrala nedefinită (primitive)

riptografie şi Securitate

III. Reprezentarea informaţiei în sistemele de calcul

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Curs 4 Serii de numere reale

5.4. MULTIPLEXOARE A 0 A 1 A 2

prin egalizarea histogramei

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare


Asupra unei inegalităţi date la barajul OBMJ 2006

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Seminar 5 Analiza stabilității sistemelor liniare

Mulțumim anticipat tuturor acelora care vor transmite critici/observații/sugestii

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu


CARACTERISTICILE LIMBAJULUI DE PROGRAMARE

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Programarea Calculatoarelor

Exemple de probleme rezolvate pentru cursurile DEEA Tranzistoare bipolare cu joncţiuni

Esalonul Redus pe Linii (ERL). Subspatii.

Subiecte Clasa a VIII-a

Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

a. 11 % b. 12 % c. 13 % d. 14 %

V O. = v I v stabilizator

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Curs 2 DIODE. CIRCUITE DR

VII.2. PROBLEME REZOLVATE

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Laborator 11. Mulţimi Julia. Temă

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

Stabilizator cu diodă Zener

Laborator 6. Integrarea ecuaţiilor diferenţiale

Subiecte Clasa a VII-a

1. ALGORITM: DEFINIŢIE, REPREZENTARE, CLASIFICARE.

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Functii Breviar teoretic 8 ianuarie ianuarie 2011

3. Momentul forţei în raport cu un punct...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...4

Aparate de măsurat. Măsurări electronice Rezumatul cursului 2. MEE - prof. dr. ing. Ioan D. Oltean 1

FLUXURI MAXIME ÎN REŢELE DE TRANSPORT. x 4

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

Zgomotul se poate suprapune informaţiei utile în două moduri: g(x, y) = f(x, y) n(x, y) (6.2)

Capitolul 14. Asamblari prin pene

Sisteme liniare - metode directe

Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener

Arhitectura Calculatoarelor. Fizică - Informatică an II. 2. Circuite logice. Copyright Paul GASNER 1

Erori si incertitudini de măsurare. Modele matematice Instrument: proiectare, fabricaţie, Interacţiune măsurand instrument:

Capitolul 4 Amplificatoare elementare

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

2.2.1 Măsurători asupra semnalelor digitale

Examen AG. Student:... Grupa:... ianuarie 2011

1.3 Baza a unui spaţiu vectorial. Dimensiune

LUCRAREA NR. 1 STUDIUL SURSELOR DE CURENT

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

IV. CUADRIPOLI SI FILTRE ELECTRICE CAP. 13. CUADRIPOLI ELECTRICI

( ) Recapitulare formule de calcul puteri ale numărului 10 = Problema 1. Să se calculeze: Rezolvare: (

Noţiuni introductive

Profesor Blaga Mirela-Gabriela DREAPTA

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Profil informatică Teste pentru licenţă

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

Tranzistoare bipolare şi cu efect de câmp

14. Grinzi cu zăbrele Metoda secţiunilor...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Ovidiu Gabriel Avădănei, Florin Mihai Tufescu,

Ecuatii trigonometrice

CIRCUITE LOGICE CU TB

3.4. Minimizarea funcţiilor booleene

TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:

Lucrarea Nr. 5 Circuite simple cu diode (Aplicaţii)

M. Stef Probleme 3 11 decembrie Curentul alternativ. Figura pentru problema 1.

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

8 Intervale de încredere

Transcript:

PRELEGEREA 1 ETAPELE REZOLVĂRII UNEI PROBLEME CU AJUTORUL UNUI SISTEM DE CALCUL 1. Formularea problemei Presupunem că problema care urmează a fi rezolvată cu ajutorul sistemului de calcul se referă la soluţionarea unor relaţii matematice care descriu starea de funcţionare a unui sistem oarecare (de ex. un circuit electric, mişcarea unui mobil, starea unui amestec gazos, etc.). Formularea problemei presupune precizarea mărimilor care trebuiesc iniţial cunoscute (date de intrare/ date iniţiale) precum şi a mărimilor care urmează a fi calculate (date de ieşire/ date calculate, rezultate). Este necesar să se aibă în vedere următoarele: deoarece se vor face referiri la sisteme tehnice, este obligatoriu să se precizeze din această etapă unităţile de maură care vor fi folosite pentru datele iniţiale şi în care vor fi exprimate rezultatele calculelor; toate datele iniţiale trebuiesc să fie întotdeauna cunoscute prin valorile lor numerice; datele calculate se aleg astfel încât să fie posibilă alcătuirea unui sistem de relaţii matematice care să permită obţinerea valorilor lor numerice pornind numai de la datele iniţiale; datele de ieşire trebuie să fie astfel alese încât rezultatele obţinute în urma calculelor să permită cunoaşterea modului de funcţionare a sistemului şi eventual adoptarea deciziilor necesare pentru îmbunătăţirea performanţelor acestuia; se aleg ca date de ieşire mărimile strict necesare îndeplinirii scopurilor menţionate anterior. Fixarea ca date de ieşire şi a unor mărimi suplimentare nenecesare cunoaşterii sistemului tehnic nu este recomandată deoarece programul de calcul se complică inutil iar durata calculelor poate creşte semnificativ simultan cu precizarea datelor de intrare si de ieşire, se alege şi denumirea (identificatorul) sub care fiecare dintre acestea va fi reprezentată în programul de calcul; precizări privind semnificaţia identificatorului: - identificatorul reprezintă mărimile variabile dintr-o problemă. Este alcătuit dintr-un grup de litere din alfabetul englez şi cifre arabe. Obligatoriu, primul semn trebuie să fie întotdeauna o literă. Deoarece în C/C++ se face distincţie între literele mari şi literele mici, pentru evitarea confuziilor se recomandă să se utilizeze întotdeauna literele mici; - identificatorii nu pot cuprinde semne speciale(+,-,*), indici sau exponenţi; - identificatorul are atât o semnificaţie abstractă (mărimea reprezentată) cât şi o semnificaţie concretă. Aceasta constă în locaţia din memoria calculatorului în care se va înscrie valoarea efectivă a mărimii reprezentate prin acesta. De aceea, se spune că identificatorii reprezintă de regulă variabilele programului. Există însă şi posibilitatea, mai puţin utilizată, ca şi constantele să se reprezinte prin identificatori; 1

- identificatorul se alege astfel încât să sugereze mărimea (parametrul) din problema pe care o reprezintă. Astfel codificarea algoritmului sub formă de program devine mai simplă. Exemplul 1. Folosind problema de mai jos se va exemplifica modul de parcurgere a etapelor de rezolvare a unei probleme printr-un program de calcul. Fie un circuit RLC de curent alternativ. Datele de intrare Datele calculate u=220 [V] - tensiunea i [A] - intensitatea curentului f=50 [Hz] - frecvenţa fi [grade] - unghiul de defazaj r=300 [ohm] - rezistenţa activă dp [kw] - pierderea de putere activă xl=430 [ohm] - reactanţa inductivă c=10-4 [F] - capacitatea Se observă că : - datele de intrare s-au precizat prin: identificatorii lor, valoarea numerică a fiecărui parametru şi unitatea de măsură; - datele calculate sunt precizate prin: identificatorul ales şi unitatea de măsură. Evident, valorile numerice urmează a fi obţinute cu ajutorul programului de calcul; - pentru unghiul de defazaj φ s- a ales identificatorul fi deci fără litere greceşti; - identificatorul pentru reactanţa inductivă este xl, deci fără indice (x l ). Identic se va alege şi identificatorul pentru reactanţa capacitivă (x c ) ; - pentru pierderea de putere activă s-a ales unitatea de măsură tehnică [kw]; - denumirea identificatorului se alege astfel încât să sugereze mărimea reprezentată ( u = tensiunea, i = intensitatea curentului, etc). 2. Alcătuirea modelului matematic Modelul matematic este alcătuit din totalitatea relaţiilor de calcul care permit obţinerea datelor calculate în funcţie de datele de intrare. Pentru obţinerea unor relaţii mai simple se pot introduce şi mărimi (variabile) intermediare. Relaţiile de calcul trebuie să fie puse sub forma: v = expresie, unde: - v reprezintă identificatorul mărimii calculate; - expresie este o relaţie de calcul între mărimi cunoscute. În cuprinsul unei expresii pot fi introduse: constante, nume de variabile sau nume de funcţii recunoscute de limbaj(de ex. funcţii matematice cum ar fi sin(x), etc.). 2

Se precizează că un sistem de calcul poate efectua numai evaluarea unor expresii de calcul. În nici un caz un sistem de calcul nu poate rezolva direct nici cea mai simplă ecuaţie. De exemplu, o relaţie de forma ax+b=0 (a, b date iniţiale, x valoarea calculată) nu poate fi evaluată de calculator. Pentru a fi acceptată de calculator relaţia trebuie pusă sub forma x = -b/a. Operatorii pentru reprezentarea operaţiilor algebrice într-o expresie sunt: + ; - ; *(inmulţirea) ; / (impărţirea). Pentru circuitul electric anterior relaţiile de calcul sunt următoarele: omega = 2 * π * f i=u/z xc =1/ (omega *c) fi=180/ π * arctg ((xl-xc)/r) z = r 2 + (xl xc) 2 dp=10-3 *r*i 2 Se observă că: - omega (pulsaţia), z (impedanţa) si x c (reactanţa capacitivă) reprezintă variabile intermediare; - în expresia variabilei dp s-a introdus coeficientul 0.001 pentru a se obţine exprimarea pierderilor de putere activă în kw. 3. Algoritmul de calcul (vezi şi referatul lucrării de laborator Algoritmi ) Algoritmul de calcul reprezintă succesiunea finită de operaţii care trebuie parcursă pentru a calcula, pornind de la datele iniţiale rezultatele dorite(datele de ieşire). Algoritmul se obţine prin completarea modelului matematic cu operaţiile necesare rezolvării complete a problemei. Astfel de operaţii pot fi: introducerea (citirea) valorilor datelor iniţiale, verificarea corectitudinii datelor de intrare, afişarea valorilor datelor de ieşire (rezultatelor) etc. Algoritmul se alcătuieşte astfel încât fiecare operaţie să poată fi transpusă (codificată) printr-o operaţie executabilă de calculator. Deci, fiecare operaţie din algoritm se va codifica în programul de calcul printr-o instrucţiune (comandă) specifică limbajului de programare ales (în cazul nostru C/C++). Algoritmii se pot reprezenta sub două forme: pseudocod şi organigramă (schema logică, schema bloc). Fiecare variantă are avantajele şi dezavantajele sale. Pseudocodul este apropiat de forma de alcătuire a programului deoarece foloseşte cuvinte cheie şi simboluri echivalente acelora din limbajul de programare. Organigrama este o reprezentare prin simboluri grafice înlănţuite într-o succesiune unică (secvenţială). Deoarece succesiunea de operaţii este reprezentată grafic depanarea programului se simplifică. Considerăm ca fiind utilă folosirea organigramelor în reprezentarea algoritmului deoarece şi funcţionarea instalaţiilor de automatizare este reprezentată prin scheme bloc. Organizarea algoritmului, indiferent de varianta aleasă pentru codificare, trebuie să se facă sub formă structurată. De aceea algoritmii se numesc şi algoritmi structuraţi. Aceasta presupune ca operaţiile sa fie astfel organizate încât să se evidenţieze numai 3

structurile tip (secvenţială, de decizie şi repetitivă). Numai algoritmii alcătuiţi structurat pot fi codificaţi în limbajele de programare actuale (C/C++, PASCAL ). Pentru exemplul ales algoritmul de calcul este prezentat în continuare în ambele variante. În cele ce urmează se va prezenta algoritmul şi programul de calcul corespunzător unui algoritm secvenţial. Algoritmii secvenţiali au o formă liniară şi sunt specifici programelor pentru efectuarea unor calcule simple, fără operaţii de decizie sau repetitive. a) Reprezentarea prin pseudocod program circuit citeşte u, f, r, xl, c afişează u, f, r, xl, c //ECOU omega=2*3.14*f xc=l/(omega*c) z = r 2 + ( xl xc) *( xl xc) i = u/z fi= 180/3.14*arctg((xl-xc)/r) dp=l.e-3*r*i*i //dp=0.00l * r * i*i afişează i, fi dp sfârşit program Caracterele // marchează introducerea unui comentariu, adică a unui text introdus în program numai cu rol explicativ şi care este ignorat la prelucrarea programului( / slash). Se observa că: - algoritmul s-a obţinut prin completarea modelului matematic cu operaţiile de introducere a valorilor datelor iniţiale (citeşte) şi afişare a rezultatelor calculelor (afisează); - constanta π din modelul matematic s-a reprezentat în algoritm prin valoarea sa (3.14); - constanta 10-3 se poate reprezenta sub două forme: 0.001 (forma raţională) sau 1.e-3 (forma exponenţială a unui număr în baza 10); - începutul şi sfârşitul algoritmului sunt marcate prin două operaţii tip: program circuit respectiv sfârşit program. Aceste operaţii NU se vor regăsi în programul de calcul. 4

b) Prezentarea algoritmului sub formă de organigramă (schemă logică) 5

Simboluri folosite în organigramă: - începutul programului(calculelor) - sfârşitul programului - operaţia de calcul(blocul de calcul) - operaţia de introducere a valorilor datelor de intrare (iniţiale) - operaţia de afişare a valorilor datelor de ieşire(rezultatele) Operaţia ECOU prin care se afişează valorile rezultatelor citite este necesară pentru a se verifica valorile preluate de la tastatură. Se evită astfel introducerea unor valori numerice eronate. 4. Programul de calcul Algoritmul se codifică sub forma programului de calcul. De aceea, programul de calcul este cunoscut şi sub numele de COD. Evident, forma codului este determinată de limbajul de programare ales. Întotdeauna însă se evidenţiază anumite zone tip (fixe, predefinite) în structura unui program. În cele ce urmează ne vom referi la regulile impuse de varianta standard a limbajului C denumit şi C ANSI. Programele în C/C++ sunt alcătuite din doua zone distincte: secţiunea iniţială şi secţiunea operaţiilor de calcul. Structura unui program C/C++ Secţiunea iniţială (secţiunea directivelor) 6

void main(void) linia // linia de definiţie a funcţiei principale (main) { //deschiderea funcţiei main - declaraţii instrucţiunile funcţiei main - operaţii secţiunea de calcul } // închiderea funcţiei main Secţiunea iniţială Această secţiune cuprinde instrucţiunile necesare completării programului utilizatorului cu alte biblioteci de funcţii. O funcţie este o grupare distinctă de instrucţiuni care realizează o operaţie bine definită. De regulă, bibliotecile de funcţii care se ataşează programelor C/C++ sunt ataşate limbajului de programare. De exemplu: - operaţia de citire se efectuează cu funcţia scanf(); - operaţia de afişare se efectuează cu funcţia printf(); - operaţia de extragere a radicalului de ordinul 2 se efectuează cu funcţia sqrt(). Funcţiile realizează operaţii foarte diferite între ele, de exemplu: citire, afişare, calcule matematice, reprezentări grafice etc. De aceea ele sunt grupate în biblioteci distincte (funcţii pentru operaţii de citire şi afişare - biblioteca stdio, funcţii pentru calcule matematice - biblioteca math etc.). Folosirea bibliotecilor de funcţii scuteşte utilizatorul de a include în programul său instrucţiuni pentru fiecare operaţie care urmează a fi executată de calculator (citire, afişare). Comanda de ataşare a unei biblioteci la program se numeşte directivă. Structura unei directive este: #<nume fişier funcţie> Fişierul unei biblioteci de funcţii are extensia h (stdio.h, conio.h, math.h). Secţiunea de calcul Secţiunea se organizează sub formă de entităţi (unităţi independente) denumite funcţii. Orice program de calcul cuprinde obligatoriu o funcţie principală (main). Un program C/C++ conţine o singură funcţie main. Programele C/C++ pot include şi alte funcţii, dar numai daca sunt alcătuite de utilizator. În zona instrucţiunilor de calcul se găsesc de regulă instrucţiuni pentru apelarea funcţiilor sau pentru efectuarea calculelor (evaluarea unor expresii de calcul). Instrucţiunile pentru apelarea funcţiilor sunt de forma: <nume funcţie> (argumente) Semnificaţia argumentelor este prezentată în fişierul bibliotecii care cuprinde funcţia respectivă (fişierul cu extensia.h). De ex. pentru funcţia scanf, informaţiile se găsesc în fişierul stdio.h. Forma instrucţiunilor de calcul a fost prezentată mai sus şi este următoarea: Identificator = expresie calculată 7

Identificatorul reprezintă numele variabilei a cărei valoare se calculează respectiv locaţia de memorie în care se va înscrie valoarea rezultatului. Pentru efectuarea calculelor este necesar ca variabilele (identificatorii) care se regăsesc în expresia de calcul să fie cunoscute (precizate) anterior executării instrucţiunii de calcul. Programul de calcul corespunzător ex.1 Secţiunea iniţială a programului cuprinde directivele necesare ataşării bibliotecilor stdio, conio şi math. Secţiunea de calcul este alcătuită numai din funcţia main care este delimitată prin linia de definiţie si cele doua acolade{ }. În zona de declaraţii se precizează faptul că valorile parametrilor (variabilelor) reprezentate prin identificatorii u şi f sunt constante întregi, iar omega, r, xl, c, i, fi, dp, xc, z au valori reale. Comentariile incluse în textul programului, care se marchează prin //, au şi rolul de a introduce elemente de terminologie specifice programării calculatoarelor. // SECTIUNEA INIŢIALĂ. // stdio (conţine funcţiile de citire, afişare ); //conio (conţine funcţiile pentru citirea codului unei taste apăsate, ştergerea ecranului, monitorului ); // math (conţine funcţiile pentru calculul radicalului de ordinul 2, arctangentei, exponenţialei ). #include <stdio.h> #include <conio.h> #include <math.h> //SECŢIUNEA DE CALCUL // programul conţine numai funcţia main void main void) { //DECLARAŢII int u,f; float omega, r, xl, c, i, fi, dp, xc, z; // OPERAŢII // se apelează funcţia pentru ştergerea ecranului clrscr(); // se apelează funcţia pentru citirea datelor scanf( %d %d %f %f %f, &u,&f,&r,&xl,&c); // ECOUL printf( \n %d %d %f %f %f, u,f,r,xl,c); omega=2*3.14*f ; xc=1/(omega*c); z=sqrt(r*r+pow((xl-xc),2)); i=u/z; fi=180/3.14*atan((xl-xc)/r); dp=l.e-3*r*pow(i,2); // se poate folosi şi forma dp=0.001*r*pow(i,2);această formă a // instrucţiunii evidenţiază folosirea funcţiei exponenţiale // (a x = pow (a,x)) // afişarea rezultatelor printf("\n %f %f %f,i,fi,dp); // comanda încheierii executării programului şi a revenirii pe 8

// ecranul monitorului a textului programului(programul sursă) getch(); } Precizări privind alcătuirea instrucţiunilor programului În scopul însuşirii cunoştinţelor minime necesare alcătuirii unui program în cele ce urmează se fac câteva precizări necesare înţelegerii modului de completare a instrucţiunilor programului. Ulterior se va face o prezentare completă a limbajului C/C++. Rolul secţiunii iniţiale (a directivelor) a fost prezentat mai sus. Declaraţii Instrucţiunile (comenzile) pentru declaraţii au rolul de a rezerva (atribui) locaţii de memorie pentru toate variabilele definite (folosite) în instrucţiunile funcţiei. Numai în acest mod este posibilă înscrierea (memorarea) valorilor atribuite respectivelor variabile. Rezultă că în zona de declaraţii trebuie să se regăsească toţi identificatorii. Forma de memorare a unei valori numerice diferă în funcţie de tipul constantei memorate (real- float, întreg - int, caracter - litera - char). Corespunzător structura unei declaraţii este: tipul variabilei indentificatorii variabilelor. Ex: - pentru variabile reale: float omega, r, xl, c, i, fi, dp, xc, z; - pentru variabile întregi: int u, f; - pentru variabilele caracter (literele): char m, n. Zona de operaţii Secţiunea cuprinde instrucţiunile de citire, afişare şi de calcul. a) Instrucţiunea de citire permite preluarea de la tastatură a valorii atribuite unei variabile. Structura tip a instrucţiunii de citire este: scanf ( informaţii privind tipul valorii citite, adresele locaţiilor de memorie la care se înscriu valorile citite ); - tipul valorii este indicat prin specificatorii de format: %d (tipul întreg); %f (tipul real); %c (tipul caracter). Specificatorii se separă prin caracterul blank (spaţiu); - adresele la care se memorează valorile citite se obţin ataşând fiecărui identificator operatorul & ( ex. &u, &r,.). Instrucţiunea pentru citirea valorilor u şi r este: scanf ( %d %f,&u,&r); b) Instrucţiunea de afişare permite afişarea pe monitor a valorii unei variabile: printf ( \n informaţii privind tipul valorii afişate, identificatorii locaţiilor de memorie la care se află memorate valorile care se afişează ); Caracterele \n sunt opţionale şi au rolul de a comanda începerea afişării de pe rândul următor(rând nou). Instrucţiunea pentru afişarea valorilor u şi r este: printf ( \n %d %f, u, r); c) Instrucţiunea de calcul a valorii unei variabile are structura: identificator = expresia calculată Expresia calculată conţine operatori şi operanzi. 9

Operatorii pot fi: constante, nume de variabile ale căror valori sunt cunoscute şi nume de funcţii aflate într-una din bibliotecile ataşate programului. Operanzii sunt reprezentaţi prin caracterele: + ; - ; * ; /. Ordinea de executare a operaţiilor se poate stabili folosind numai parantezele rotunde (). Pot exista mai multe niveluri de paranteze. Întotdeauna este obligatorie prezenţa operatorului. 5. Executarea programului Etapele executării unui program sunt : compilarea ; link-editarea (editarea de legături) şi executarea propriu-zisă. a) Compilarea este operaţia de transformare a instrucţiunilor programului într-un format direct interpretabil de către calculator. Pe parcursul compilării se verifică dacă textul programului este sintactic corect. Eventualele erori sunt indicate, precizându-se locul şi tipul erorii. Operaţia de compilare este declanşată de utilizator prin activarea tastei F9. b) Link-editarea (editarea de legături) urmează compilării şi se execută numai dacă operaţia de compilare a fost finalizată cu success. Editarea de legături constă în asamblarea programului într-un tot unitar, prin asocierea la programul utilizatorului a funcţiilor apelate de acesta. Pentru ca operaţia să fie realizată cu succes este necesar ca toate funcţiile apelate să se regăsească în bibliotecile ataşate programului. Începerea operaţiei se realizează automat,fără o comandă din partea utilizatorului. c) Executarea programului presupune interpretarea şi efectuarea succesivă a instrucţiunilor programului. Operaţia este comandată de utilizator prin activarea concomitentă a tastelor Ctrl + F9. Dacă sistemul de calcul constată că o operaţie nu se poate executa ( de ex. împărţirea prin zero) executarea va fi abandonată şi se furnizează un mesaj de eroare. Operaţia de executare se încheie cu interpretarea ultimei instrucţiuni a programului: getch(). 6. Interpretarea rezultatelor Valorile rezultatelor se preiau de pe monitor. Interpretarea acestora şi adoptarea unor măsuri care să crească performanţele tehnice de funcţionare ale sistemului studiat sunt determinate de modul în care a fost formulată problema (pct 1). Pentru exemplul 1 nu sunt precizate condiţii care trebuiesc îndeplinite de valorile parametrilor calculaţi. Valorile afişate pe monitor sunt: i = 0,4413 ; fi = 53,0296 ; dp = 0,0584 Cu titlu demonstrativ se consideră că s-a impus condiţia i < i max (evitarea supraîncălzirii circuitului). Dacă aceasta nu este îndeplinită realizarea unor condiţii normale de funcţionare presupune micşorarea intensităţii curentului. Aceasta se poate obţine prin creşterea valorii rezistenţei circuitului(măsura adoptată). Exemplul 2. Să se alcătuiască programul pentru calculul valorii funcţiei f(x)= x 2 + x +1 pentru două valori ale lui x. Se consideră că cele două valori x sunt citite cu aceeaşi instrucţiune. Valorile variabilei x sunt numere reale. Date de intrare: x1 ; x2 Date calculate: f1 ; f2 10

1. Modelul matematic f1 = x1 2 + x1 + 1 ; f2=x2 2 + x2 + 1 2. Algoritmul de calcul program calcul_funcţie citeşte x1,x2 afişează x1,x2 f1 = x1 2 + x1 + 1 f2=x2 2 + x2 + 1 afişează f1, f2 sfârşit program 3. Programul de calcul # include <stdio.h> # include <conio.h> void main (void) { float x1,x2,f1,f2; clrscr(); scanf ( %f %f,&x1,&x2); // ECOUL printf ( %f %f,x1,x2); f1 = x1 2 + x1 + 1; f2=x2 2 + x2 + 1; printf ( \n%f %f, x1,f1); printf ( \n%f %f, x2,f2); // \n este comanda pentru ca afişarea să înceapă de la un rând nou getch(); } Alte modalităţi de realizare a operaţiilor de citire şi afişare a rezultatelor Pentru o urmărire uşoară a modului de introducere a datelor şi de afişare a rezultatelor este recomandat ca programul să afişeze identificatorul fiecărei mărimi care urmează a fi citită. Aceasta presupune ca fiecare instrucţiune de citire să fie imediat precedată de o instrucţiune de scriere prin care să se afişeze pe monitor identificatorul variabilei a cărei valoare va fi citită. Totodată instrucţiunea de afişare a rezultatelor va fi completată în aşa fel încât valorile parametrilor calculaţi, care se afişează pe monitor, să fie însoţite de identificatorul aferent şi unitatea de măsură a mărimii reprezentate. În continuare se prezintă forma adaptată a programului anterior în conformitate cu precizările făcute mai sus. 11

#include <stdio.h> #include <conio.h> #include <math.h> void main() { int u,f; float omega, r, xl, c, i, fi, dp, xc, z; clrscr(); printf ("u[v]="); scanf("%d",&u); printf ("f[hz]="); scanf("%d",&f); printf ("r[ohmi]="); scanf("%f",&r); printf ("xl[ohmi]="); scanf("%f",&xl); printf ("c[f]="); scanf("%f",&c); omega=2*3.14*f ; xc=1/(omega*c); z=sqrt(r*r+pow((xl-xc),2)); i=u/z; fi=180/3.14*atan((xl-xc)/r); dp=1.e-3*r*pow(i,2); printf("z=%f \n",z); printf("i[a]= %f \n fi[grade]= %f \n dp[kw]= %f", i, fi, dp); getch(); } Observaţii: - pentru fiecare variabilă de intrare s-a introdus câte o instrucţiune de citire; - instrucţiunea de citire a valorii unei variabile este precedată de instrucţiunea de afişare a identificatorului şi a unităţii de măsură respective; - instrucţiunea de afişare a rezultatelor include numele variabilelor şi unitatea de măsură a mărimii reprezentate. Tema1. Să se reprezinte algoritmul şi sub formă de organigramă. Tema 2. Se cere să se execute programul de la pag. 11 şi să se comenteze diferenţele faţă de executarea programului de la pag. 8. Tema 3. Să se realizeze o altă formă de afişare a rezultatelor din problema precedentă. Tema 4. Să se alcătuiască programul anterior în ipoteza că cele două valori x se preiau de la tastatură cu instrucţiuni de citire diferite. Tema 5. Să se definească o problemă de fizică/ chimie şi să se alcătuiască programul de calcul pentru rezolvarea acesteia. 12

Întrebări de autocontrol 1. Care sunt etapele rezolvării unei probleme pe calculator? 2. Ce mărimi se definesc în etapa 1? 3. Ce este un identificator? 4. Care este semnificaţia abstractă a identificatorului? 5. Care este semnificaţia tehnică (concretă) a unui identificator? 6. Care dintre noţiunile de mai jos reprezintă identificatori: ax1; aa; a_1; a+1; 1a; ab_cd; ab+cd; a(x)? 7. Identificatorii de mai jos reprezintă mărimi diferite? Explicaţi. a1; A1; a_1. 8. Care sunt diferenţele dintre modelul matematic şi algoritm? 9. Ce reprezintă pseudocodul? 10. Ce reprezintă o schemă bloc? 11. Realizaţi schema logică a unui algoritm secvenţial. 12. Care este structura unui program de calcul? 13. Ce este o funcţie în C/C++? 14. Care este structura principială tip a unei funcţii? 15. Care este structura funcţiei scanf? Ce semnificaţie au parametrii? Ce este ECOUL? Este necesar? Justificaţi. 16. Care este structura funcţiei printf? Ce semnificaţie au parametrii? 17. Pentru utilizarea funcţiilor matematice ce instrucţiuni trebuiesc incluse în program? 18. Ce implică verificarea rezultatelor? 19. Ce verificări se pot impune datelor de intrare din ex. 1? 20. Care este sintaxa funcţiei pentru ştergerea ecranului? 13