Limbaje de Program Are Ingineresti

download Limbaje de Program Are Ingineresti

of 42

Transcript of Limbaje de Program Are Ingineresti

Limbaje de programare inginereti Tema 1 Sisteme de operare Obiectivele disciplinei Studiul acestei discipline face ca studentii sa se familarizeze cu notiunile, metodele si tehnicile specifice programarii calculatorului, astfel nct acesta sa devina un instrument curent de lucru, deosebit de util, att n abordarile practice ale celorlalte discipline pe parcursul anilor de studiu, cat si n activitatea ulterioara - dupa absolvirea studiilor. Cursul urmrete introducerea noiunilor fundamentale ale diferitelor limbaje de programare pentru implementarea algoritmilor stiintifici si tehnici. Se urmaresc cu precadere limbajele procedurale (imperative) cu detalieri ale limbajului C, limbajele matriciale cu exemplificari in MATLAB si limbajele bazate pe fluxul de date cu exemplificari din limbajul LabVIEW.

Definiie: SO - Un program care acioneaz ca un intermediar ntre un utilizator al sistemului de calcul i hardware-ul acestuia. SO are urmtoarele funcii principale: - Funcii de administrare a resurselor software, hardware i a informaiilor - Funcia de abstractizare i de extindere a funcionalitii sistemului de calcul

CLASIFICAREA SO S.O. au aprut i au evoluat odat cu evoluia sistemelor de calcul. 1. Calculatoare mainframe: calculatorul era programat direct nu existau sisteme de operare in memorie rula cel mult un program odat cu apariia tranzistoarelor: apare primul limbaj de programare i primul S.O. care utiliza conceptul de procesare pe loturi (batch-jobs) i conceptul de job. Procesorul era slab utilizat deoarece perifericele aveau vitez foarte sczut; apare multiprogramarea pentru a ine procesorul ocupat in mod optim. n memorie se ncarc mai multe programe iar planificatorul alege unul din acestea. 2. Sisteme interactive (cu partajarea timpului): permit interaciunea utilizatorului cu programele care ruleaz n memorie apare noiunea de multitasking care reprezint o extensie a multiprogramrii i n care comutarea ntre programe se realizeaz att de rapid nct utilizatorul are senzaia c se execut mai multe programe simultan.

3. Sisteme Desktop 4. Sisteme de tip real 5. Sisteme ncorporate 6. Sisteme cu multiprocesor 7. Sisteme distribuite 8. Clustere 9. Reele peer-to-peer 10. Reele client server Nucleul sistemului de operare Partea principal a unui S.O. (miezul, kernel) se ncarc n memorie la pornirea calculatorului, rmne rezident n memorie i are rol de supervizor. Funciile principale ale unui S.O. aflate n kernel sunt legate de: gestiunea proceselor gestiunea procesorului comunicarea ntre procese, sincronizare gestiunea memoriei gestiunea operaiilor legate de ntreruperi gestiunea fiierelor

Structura unui sistem de operare Monolitic: kernelul format dintr-un fiier; majoritatea fiierelor se afl n kernel; este o colecie de funcii fr nici o ierarhizare intern; Modular : sistemul este structurat pe module cu functionaliti bine precizate Stratificat: este compus din straturi suprapuse, fiecare strat oferind servicii stratului superior i abstractiznd structura i operaiile cu operaiile stratului inferior; Exokernel: majoritatea serviciilor sunt n afara kernelului i ruleaza n user-mode; kernelul pstreaz funciile de comunicare ntre procese i de izolare; se mai numete kernel la purttor; creeaz maini virtuale, crora le aloc resurse, fiecare main virtual rulnd propriul S.O. i propriile procese;

Maina virtual: similar cu exokernelul, cu deosebirea ca mainile virtule sunt copii ale hardului pe care ruleaz, avnd propria copie a kernelului i ntreruperi proprii: pot rula S.O. diferite; Sisteme client-server ( microkernel) : majoritatea serviciilor ruleaz in user-mode, kernelul asigurnd comunicaia i Sincronizarea ntre procesele client i server; exemple server: fiiere, memorie, terminale; Sisteme distribuite: similar cu client-server, cu deosebirea c serverul i clientul pot fi pe maini diferite; Exemple: MSDOS monolitic, nestructurat Windows XP arhitectura stratificat BSD Unix , Solaris arhitectura modular True 64 UNIX, QNX - mikrokernel Linux arhitectura monolitica Mach microkernel Mac OS X stratificat, modular Minix microkernel Componente SO 1. Componenta de management a memoriei: Procesul citete instruciuni, citete si scrie date din memorie. Perifericele controlate prin mecanismul DMA citesc si scriu date n memorie. Programele sunt ncrcate de pe disk n memorie. Dac un program se executa, acesta citete instruciunile si datele din memorie, accesd memoria prin adresele de memorie reprezentate pe 16, 32 sau 64 de bii. Odat terminat un program, el este eliberat din memorie si spaiul su este alocat altui program. Pentru a mbuntii utilizarea CPU si pentru a mri viteza de reacie a sistemului fa de utilizatori sistemul de operare trebuie sa in n memorie mai multe programe n acelai timp (multiprogramare). Exist mai multe scheme de management a memoriei, selectarea unei anumite scheme pentru un S.O. depinznd de mai muli factori, n special de platforma hardware a sistemului destinaie. Sistemul de operare asigur urmtoarele operaii n ceea ce privete managementul memoriei: aloc si dezaloc memorie la cerere; menine o situaie a memoriei alocate i a memoriei libere. decide ce proces s fie ncrcat n memorie cnd aceasta devine disponibil

2. Managementul proceselor: Sistemul de operare este responsabil cu gestiunea proceselor. Modulul (componenta) unui sistem de operare care gestioneaz procesele trebuie sa asigure urmtoarele funcii: funcii de creare a unui proces (user sau proces de sistem); tergerea sau eliberarea unui proces din memorie; s asigure mecanisme de sincronizare a proceselor; s asigure mecanisme de comunicare ntre procese; s asigure mecanisme de gestionare a interblocrilor. creeaz i elibereaz procese; suspend i reia executarea proceselor; asigur mecanismele de comunicare i sincronizare ntre procese; se ocup de evitarea interblocarilor; 3. Planificarea procesorului: asigur accesul proceselor la resursa procesor ntr-un mod echitabil; utilizeaz algoritmi de planificare pentru a mpari timpul de lucru al procesorului ntre procesele din memorie; 4. Gestiunea fiierelor 5. Gestiunea componentelor de Intrare/Ieire: gestioneaz perifericele; asigur alocarea corect a acestora ctre procese; controleaz operaiile de Intrare/Ieire. 6. Managementul dispozitivelor de stocare Asigur: managementul spaiului liber ; alocarea spaiului la cerere; planificarea i controlul accesului la discuri. 7. Componenta de reea 8. Sistemul de protecie 9. Interfaa de programare a aplicaiilor (API): ofer programatorului un set de funcii de nivel nalt prin care acesta poate accesa n programare serviciile oferite de celelalte componente ale S.O. Serviciile sunt oferite ctre utilizatorul programator: ncrcarea i executarea programelor operaii (servicii) de I/O. manipularea sistemelor de fiiere (creare, tergere, scriere i citire). comunicaii ntre procese (prin memorie partajat sau prin transfer direct de mesaje ntre procese); detectarea erorilor i recuperare dup eroare (eroare de CPU, de memorie, de scriere, citire, de reea, imprimant).

Dicionar API Interfaa de programare a aplicaiilor Batch (limbaje batch) limbaje cu control de flux. Se mai numesc limbaje shell Compilator un program (sau set de programe) care traduce textul scris ntr-un limbaj de programare (limbajul surs) ntr-un alt limbaj de calculator (numit limbaj int) CPU central processing unit, unitatea central de calcul GUI graphical user interface, interfa grafic cu utilizatorul I/O input/output, sisteme de intrare/ieire Interpretor un program special care analizeaz i execut comenzile i instruciunile dintr-un alt program, pas cu pas, una dup alta, fr o compilare anterioar PDA personal digital assistant, palmtop computer

Limbaje de programare inginereti Tema 2 Tipuri de limbaje Un limbaj de programare este un sistem de convenii adoptate pentru realizarea unei comunicri ntre programator i calculator . Limbajele folosite pentru programarea unui calculator sunt extrem de asemntoare limbajelor naturale . Ele sunt compuse din : cuvinte (rezervate) ; punctuaie ; propoziii i fraze ; reguli sintactice etc Limbaje de nivel sczut de nivel nalt Nivelul unui limbaj este apreciat prin poziia pe care o ocup pe scara constituit de limbajul recunoscut de microprocesor ( limbaj main ) i limbajul natural al programatorului ( limba romn , limba englez ) . Un limbaj de nivel sczut este foarte apropiat de main , el manipuleaz cu elemente de nivel hardware , fizic , cum ar fi : registru , microprocesor , locaie de memorie , port de intrare / ieire etc . Un limbaj de nivel nalt sau foarte nalt manipuleaz cu concepte apropiate de limbajul natural , concepte de nivel logic , cum ar fi : colecie de date , nume de operaie ( sort , writeln , open ) , variabile , constante ( asemntoare ca neles cu cele din matematic). Cu ajutorul unui limbaj de nivel nalt programatorul se face mult mai uor neles de ctre calculator. Uneori o singur linie de program scris cu un astfel de limbaj poate echivala cu sute de linii de program scrise n limbaj main . Deci din punct de vedere al reducerii timpului de realizare a unui program i al siguranei n funcionare ( absena erorilor de programare ) este de preferat un limbaj de nivel ct mai ridicat ( nalt sau foarte nalt ) .n schimb, pe msur ce limbajul are un nivel mai ridicat execuia programului conceput cu ajutorul su va fi mai lent , dect a unui program ce realizeaz aceleai operaii dar este scris n limbaj de asamblare

O alt diferen esenial ntre cele dou tipuri de limbaje o reprezint portabilitatea , adic posibilitatea transferrii programelor pe un alt tip de main dect cea pe care au fost construite . Din acest punct de vedere limbajul de asamblare este neportabil deoarece el este specific microprocesorului . Programele realizate pe un tip de main trebuie rescrise integral pentru noul tip de main , folosind un nou set de instruciuni care de obicei difer foarte mult . Lucrurile stau altfel cu programele concepute cu ajutorul unui limbaj de nivel nalt , deoarece acestea sunt detaate de main . ntre un astfel de program i calculator se interpune compilatorul ( sau interpretorul ) care rezolv corect transformarea fiierului-surs n fiier-executabil . Limbaje procedurale neprocedurale Limbajele neprocedurale sunt concepute pentru a gndi un program la nivel de instruciune , pe cnd cele procedurale , oblig programatorul s conceap programe la nivel de bloc . ntr-un limbaj procedural (numit i limbaj structurat) programele sunt scrise instruciune cu instruciune , dar ele sunt organizate logic n blocuri (grupuri de instruciuni ) ce realizeaz o aciune bine determinat .n general un bloc are un punct de intrare i un punct de ieire nu mai multe . Un limbaj procedural ofer posibilitatea utilizrii unui nivel ridicat de concepere a unui program i duce la realizarea de programe coerente i protejate la erori . Prin contrast , limbajele neprocedurale nu favorizeaz programatorul n a se desprinde de nivelul instruciune i duc deseori la programe greu de controlat mai ales n cazul programelor de dimensiuni mari . Limbajele neprocedurale sunt nc preferate de unii utilizatori datorit timpului foarte scurt ct decurge nvarea i utlizarea lor . Limbaje orientate Din punctul de vedere al aplicabilitii unui limbaj , limbajele pot fi orientate pe o anumit problem sau concepute pentru soluionarea oricrui tip de problem limbaje de uz general sau altfel spus , neorientate pe o problem . Limbajele orientate prezint un grad nalt de specificitate pe cnd un limbaj neorientat reprezint un cadru general ce permite introducerea de ctre utilizator a conceptelor i prelucrrilor dorite. Deci , diferena esenial dintre cele dou tipuri de limbaje o constitue nivelul conceptual definit . Cele specializate posed deja integral suportul necesar i permit programatorului s se concentreze la ansamblul problemei , pe cnd cele nespecializate las n sarcina programatorului manevrarea nivelelor inferioare ale problemei . Limbaje concurente Un limbaj concurent permite definirea de procese (prelucrri ) paralele , execuia sa fiind ramificat la un anumit moment de timp . Prin contrast limbajele neconcurente ( majoritatea limbajelor ) au o desfurare liniar , fiind activ un singur proces la un moment dat . Procesele concurente presupun n mod obligatoriu un sistem multi-tasking ce poate gestiona mai multe sarcini la un moment dat .

Exemple de limbaje Limbaje de nivel sczut . Aceast categorie de limbaje are un reprezentant autoritar i anume : limbajul de asamblare . Diferenierile care se pot face pentru limbajele de nivel sczut sunt urmtoarele : a) dup tipul de main ; Regulile respectate de versiunile limbajului de asamblare sunt : o nou versiune o include complet pe cea anterioar , versiunea nou ofer funcii suplimentare i le realizeaz pe cele vechi mai rapid . b) dup mediul de programare oferit . Aspectul unui limbaj poate fi schimbat radical de mediul de programare oferit . Pentru limbajul de asamblare exist mai multe implementri disponibile , ncepnd cu pachete ce opereaz n mod linie i culminnd cu medii integrate n care toate operaiile se pot declana de la un acelai pupitru de comand . Nu sunt luate n considerare dect aceste medii integrate ( denumite generic medii Turbo) , dintre care se detaeaz Turbo Asamblorul firmei Borland TASM Limbaje de nivel nalt neorientate . 1. BASIC A fost creat n 1964 la Darmooth College (S.U.A.) . Denumirea sa provine de la iniialele cuvintelor Beginners Allpurpose Symbolic Instruction Code ( Cod de instruciuni simbolice , de uz general , destinat nceptorilor ) . Are urmtoarele caracteristici fundamentale : simplu de nvat ; instruciunile sale sunt cuvinte din limba englez sau prescurtri ale acestora ; neorientat pe un anumit tip de problem ; permite construirea de aplicaii; este un limbaj nestructurat , ceea ce i permite s fie uor nvat . Din cauz c a cunoscut o larg rspndire , au fost implementate noi versiuni de Basic : GW-BASIC , QUICK BASIC , TURBO BASIC , VISUAL BASIC (Basic for Windows ) . 2. FORTRAN Limbajul Fortran este decanul de vrst al limbajelor de larg folosin . A aprut n 1956 i i datoreaz numele prescurtrii cuvintelor : FORmula TRANslation ( Traducere de formule ). Iniial reprezenta un limbaj orientat pe calcule tiinifice avnd definite concepte precum : matrice , funcii trigonometrice , numere reale n dubl precizie . Versiunile ulterioare care au cunoscut o mare popularitate au extins posibilitile limbajului trasformndu-l ntr-un limbaj eficient , de uz general .n prezent exist pentru IBM-PC dou implementri mai importante ale limbajului : Microsoft Fortran , Fortran for Windows . Dei nu poate fi considerat depit din punct de vedere conceptual ( este un limbaj algoritmic structurat ) este neindicat folosirea lui datorit absenei unor medii de programare performante i pentru c tendina actual i este defavorabil

3. PASCAL Conceptualizat n anul 1970 de ctre Niklaus Wirth , limbajul PASCAL poart numele matematicianului i filosofului BLAISE PASCAL , n semn de recunoatere a meritelor sale n teoretizarea mainilor de calcul . Creat dup acumularea de cunotiine temeinice n tiina limbajelor formale , din confruntarea cu probleme concrete ale programrii , limbajul PASCAL a constituit la vremea respectiv un limbaj modern , meninndu-se ca atare i n prezent , datorit faptului c posed o solid baz conceptual. Limbajul PASCAL a introdus n versiunea sa iniial noiunea de programare structurat i ulterior noiunile de date (structuri) dinamice , date (structuri ) definite de utilizator Standardul implementrilor PASCAL cuprinde urmtoarele elemente : programare structurat de tip algoritmic ; definirea de noi funcii sau proceduri ; tipuri de date definibile de ctre utilizator ; structuri de date dinamice ; adresri indirecte ale datelor ; recursivitate ; rutine complete de intrare / ieire ; funcii de conversie a datelor din ASCII n format intern i invers ; set complet de funcii matematice ; funcii elementare de grafic 2D ; posibilitatea inserrii direct n surs a instruciunilor n limbaj de asamblare ; posibilitatea definirii de overlay-uri pentru program . Versiunile standard ale implementrilor PASCAL sunt cele oferite de Microsoft i Borland , cu avantaj pentru cele din urm ( TURBO PASCAL 5.0 , TURBO PASCAL 5.5 ) datorit mediului de lucru performant (de tip TURBO ) . Combinaia PASCAL + TURBO a reprezentat un succes imens n rndul programatorilor avnd ca singur rival cealalt combinaie : C+TURBO . 4. Limbajul C Acest limbaj de programare , cu cel mai scurt nume , a fost creat n 1971 de ctre Dennis Ritchie i Brian Kernigham pentru dezvoltarea sistemului de operare UNIX . Principalele caracteristici ale limbajului sunt : limbaj structurat de nivel nalt ; posed concepte de nivel sczut , ceea ce permite exploatarea portabil a caracteristicilor intime unei maini ; rutine de conversie a datelor foarte evoluate ; tipuri de date definibile de ctre utilizator ; gestionarea elaborat a datelor de tip dinamic ; definirea de noi funcii ; adresri indirecte ale datelor , variabilelor ( pointer-i ) ; recursivitate ; set complet de funcii matematice ; funcii pentru realizarea de grafic elementar 2D; funcii de apel servicii DOS ; posibilitatea definirii de overlay-uri pentru un program ; concizie deosebit a limbajului .

Pentru versiunile standard ale implementrilor limbajului C exist medii de programare de tip TURBO ce aparin firmelor : Microsoft produsul QUICK C i firmei Borland produsele TURBO C . 5. Limbajul ADA A fost creat special pentru a gestiona totalitatea aplicaiilor dezvoltate i utilizate de N.A.S.A. Noutatea limbajului ( de tip structurat , algoritmic ) o constitue concurena , deci posibilitatea lansrii de procese paralele ( sincronizate interactiv n finalul execuiei lor ) . Saltul calitativ este evident i deschide un nou domeniu n programare dar nu pentru IBM-PC . Versiunile implementrilor limbajului ADA pe IBM-PC nu posed tocmai acest parte de concuren , reducnd limbajul la un simplu limbaj structurat de uz general . Deci , ADA este un limbaj ultramodern din punct de vedere teoretic dar ineficient din punct de vedere practic pentru IBM-PC-uri . Limbaje orientate pe gestiunea bazelor de date Necesitile actuale n practica utilizrii calculatoarelor se ndreapt cu precdere spre gestionarea bazelor de date de mari dimensiuni . O explicaie a acestei orientri e dat de faptul c o baz de date reprezint o informaie , iar cel ce deine informaii complete i rapide ntr-o anumit problem este indiscutabil cu un pas naintea celorlali . Concurena din domeniul economic poate fi numit pe bun dreptate o btlie informaional . Un sistem de gestionare a bazelor de date ( S.G.B.D.) de tip clasic opereaz cu urmtorii termeni fundamentali : cmp o locaie n care se poate memora o informaie bine determinat nregistrare mai multe cmpuri alctuiesc mpreun o nregistrare ; baza de date colecie de nregistrri Tendina modern n exploatarea bazelor de date const n deplasarea interesului ctre bazele de date relaionale . Diferena esenial const n definirea unui nivel logic suplimentar ntre datele gestionate . Acestea nu mai sunt privite ca simple fie izolate ntre ele ci pot fi analizate pe baza legturilor ( relaiilor ) ce exist ntre ele . Noiunile cu care opereaz un S.G.B.D. relaional sunt urmtoarele : tabel structur fundamental de depozitare a datelor ; linie n tabel echivalentul unei nregistrri clasice ; coloan n tabel echivalentul unui cmp de tip clasic ; baz de date o colecie de tabele , conectate prin valorile anumitor coloane . Spre deosebire de S.G.B.D. urile clasice , un mediu relaional presupune ca cerin minimal posibilitatea manipulrii datelor prin intermediul conexiunilor logice stabilite . Pentru aceasta exist definit ( i impus ca standard unanim recunoscut ) limbajul de interogare SQL ( Structured Query Language limbaj de cereri structurate ) . Prin intermediul su sunt permise urmtoarele operaii : regsire date ( conexate logic ) ce ndeplinesc o anumit condiie ; definire ordine de returnare a datelor ; redefinire conectri logice ale datelor ;

exploatare ; programare .

Avantajele unui S.G.B.D. clasic sunt : simplitate n manevrare ; deci efort de studiu redus ; pot funciona pe un sistem de calcul ce nu implic resurse speciale , ci doar spaiu de stocare extern suficient pentru problema dat ; pre de cost redus fa de cele relaionale . Avantajele unui S.G.B.D. relaional sunt : nivel logic superior ( corelaii , structuri 1 : n ) , prelucrri ( regsiri ) de date cu un nalt nivel de complexitate ; nivel superior de portabilitate a aplicaiilor , datelor AICI CURS VIITOR S.G.B.D. uri clasice . 1. dBASE III Cel mai rspndit sistem de gestiune a bazelor de date este dBASE , n diversele lui versiuni . El poate fi considerat un BASIC al bazelor de date. La momentul apariiei a constituit o adevrat revoluie n domeniul S.G.B.D.-urilor . Meritele sale principale care l-au impus ateniei utilizatorilor i programatorilor sunt : foarte simplu de utilizat ; limbaj de nivel foarte nalt , simplu de nvat ; interactivitate bun a sistemului ; poate funciona cu resurse extrem de restrnse ; Dezavantajele principale ale dBASE ului sunt : vitez de lucru extrem de sczut ; limbaj de programare cu lacune greu de surmontat ( nu posed salturi , funcii matematice reduse , erori de implementare ) ; aplicaiile create slab interactive ; imposibilitateta conectrii cu un alt limbaj . Cele mai importante implementri ale sale sunt : dBASE III Plus i dBASE IV . 2. COBOL A fost creat n 1950 i reprezenta singura posibilitate de gestionare a unei baze de date . Reprezint n primul rnd un limbaj de programare special conceput pentru informatica de gestiune . Dac facem o comparaie , sugestiv , COBOL este echivalentul FORTRAN-ului pentru sistemele de gestiune a bazelor de date ( din punct de vedere istoric i al performanelor ) . Limbajul este considerat greoi i inflexibil , iar pentru crearea unui program foarte simplu e nevoie de scrierea unui adevrat eseu . Singurul avantaj real al COBOL-ului este portabilitatea sa ridicat .

3. FOXBASE Sistemul dBASE a incantat firmele productoare de soft , datorit popularitii sale i pe de alt parte a calitilor sczute ale implementrilor originale furnizate de firma Ashton-Tate . Au aprut noi implementri ale limbajului care au ncercat s furnizeze unelte profesionale pe baza acestui suport conceptual . Versiunile FOXBASE 2.10 i FOXBASE PRO se constitue n medii performante att pentru programatori ct i pentru utilizatori 4. ISIS Este distribuit gratis de ctre UNESCO , ceea ce l face cu adevrat distinct . Caracteristicile ce l fac interesant sunt : interactivitate bun ; posibilitate definire structuri 1 : n ; suport de reea local ; un limbaj intern( o versiune de PASCAL ) cu care se prelucreaz datele ; adaptabilitate foarte bun . S.G.B.D. uri relaionale 1. ORACLE Se poate afirma fr teama de a grei c ORACLE reprezint cel mai performant S.G.B.D. disponibil la momentul actual . Pe lng faptul c posed avantajele unui mediu de tip relaional, ORACLE este gndit ca un sistem exhaustiv pentru rezolvarea problemelor de utilizare sau programare . Limbajul intern folosit este SQL Plus i este permis conectarea cu alte limbaje externe evoluate ( orientate ctre C ) . Putem meniona : vitez de lucru foarte bun ; exploatare interactiv la nivel SQL ; limitri de lucru greu sau imposibil de atins ( maxim 65535 caractere ntr-un cmp , numr nelimitat de cmpuri , de nregistrri ) ; exploatare eficient a spaiului pe disc ( memorarea cmpurilor n format variabil ) . Oracle este implementat pe majoritatea tipurilor de computere mari , ceea ce ofer portabilitatea aplicaiilor , dar mai ales posibilitatea conectrii la calculatoare puternice 2. PARADOX Reprezint un S.G.B.D. cu adevrat profesional . El ndeplinete toate cerinele unui produs cu adevrat modern i performant i anume : interactivitate foarte bun ; vitez de lucru mare ; servicii i auxiliare ; limbaj de programare evoluat ( PAL Paradox Application Language ) , dotat cu compilator .

Limbaje orientate pe calcul tabelar . 1. LOTUS 1-2-3 Lotus 1-2-3 , produs al firmei Lotus Development este n mod sigur cel mai rspndit produs din aceast categorie . Datorit popularitii sale el s-a constituit ntr-un adevrat standard ( neoficial ) pentru spread-sheet-uri . La nivel de ansamblu , LOTUS se preuint ca o aplicaie cu bun interactivitate . Reprourile ce i se pot aduce sunt : meniurile ( uneori stufoase i nelogic ramificate ) i help-ul care nu totdeauna este la obiect . 2. QUATRO PRO 2.0 Spread-sheet-ul QUATRO , realizat de firma Borland este cel mai nou i puternic produs din categoria sa . El combin ntr-un mod fericit tot ceea ce este pozitiv la rivalii si adugnd i multe faciliti proprii. 3. EXCEL Produsul firmei Microsoft , EXCEL este o aplicaie care funcioneaz sub Windows . De aici rezult n mod direct unele din caracteristicile sale ( utilizare mai comod , meniuri foarte clare i standardizate , funcii grafice deosebit de puternice , vitez de lucru inferioar lui Quatro ) . Limbaje orientate pe calcul matematic simbolic Specialitii din domeniul cercetrii matematice au la dispoziie unelte de lucru extrem de utile pentru eliminarea calculului matematic rutinier . n acest scop au fost create limbaje de programare care pot recunoate i rezolva formule sau ecuaii matematice complexe . Expresiile manevrate pot conine operaii algebrice elementare , operatori de derivare , de integrare , operatori difereniali care sunt recunoscui de sistem ca atare . n plus sunt oferite instruciuni absolut necesare pentru a controla un program . Cele mai importante produse de acest gen sunt REDUCE , SYMNON , MATHCAD , MATHEMATICA , MATHLAB . Limbaje orientate pe programarea inteligenei artificiale Acest tip de limbaje difer esenial de cele algoritmice . Modalitatea de programare este descriptiv i are intenia declarat de simulare a raionamentului uman . Pentru rezolvarea unei probleme sunt furnizate seturile de reguli i informaii necesare , iar apoi se descrie n ce const problema ca atare . Limbajul este capabil s opereze deduciile ( deciziile ) necesare pentru a rezolva problema ntr-un caz particular ce apare n practic . Aadar , aceste limbaje descriu problema de rezolvat ( n termenii deduciilor logice ) pe cnd limbajele de tip algoritmic descriu metoda de rezolvare a problemei . Domeniile de aplicabilitate pentru limbajele de programare a inteligenei artificiale sunt cu predilecie : realizarea de sisteme expert ( programe ce nlocuiesc experii umani ) , computerizarea procesului de producie , robotic , tratarea limbajelor naturale . Cele mai importante limbaje de acest tip sunt : PROLOG ( PROgramming in LOGic ) creat n 1973 i implementat pe PC-uri abia n 1986 de firma Borland sub forma Turbo-Prolog .

LISP ( LISt Processing language ) conceput n 1976 i implementat pe PC-uri de firma Microsoft sub forma MuLISP . Limbaje de programare inginereti Curs 3 Algoritmi Scurt istoric Algoritm: -pronuntia fonetica: Abu Ja`far Mohammed ibn Musa al-Khowarizmi (780-850); al-Khowarizmi (din orasul Khowarizm) Algoritmul lui Euclid Definitii: Prin algoritm se nelege o metod de soluionare a unei clase de probleme, reprezentat de o succesiune finit de operaii bine definite, numite instruciuni Prin algoritm vom nelege o secven finit de comenzi explicite i neambigue care executate pentru o mulime de date (ce satisfac anumite condiii iniiale) conduce n timp finit la rezultatul corespunztor.

Caracteristicile algoritmilor 1 generalitate Un algoritm destinat rezolvrii unei probleme trebuie s permit obinerea rezultatului pentru orice date de intrare i nu numai pentru date particulare de intrare. Exemplu: 3x2-5x+7=0 ax2+bx+c=0, a,b,cR, a 0 a,b,cR 2 rigurozitate(unicitate) Prelucrrile algoritmului trebuie specificate riguros, fr ambiguiti. n orice etap a execuiei algoritmului trebuie s se tie exact care este urmtoarea etap ce va executat. Toate transformrile prin care trece informaia iniial pentru a obine rezultatul r sunt bine determinate de regulile algoritmului. Fiecare pas din execuia algoritmului d rezultate bine determinate i precizeaz n mod unic pasul urmtor. Altfel spus, ori de cte ori am executa algoritmul, pornind de la aceeai informaie admisibil x, transformrile prin care se trece i rezultatele obinute sunt aceleai. 3 finitudine

Prin finitudine se nelege c textul algoritmului este finit, compus dintr-un numr finit de propoziii. Mai mult, numrul transformrilor ce trebuie aplicate unei informaii admisibile x pentru a obine rezultatul final corespunztor este finit. Clase de algoritmi: Algoritmi cu numr finit de pai, a priori cunoscut Produs scalar ntre dou mulimi Algoritmi cu numr finit de pai, a posteriori cunoscut CMMDC ntre dou numere Numerele prime pn la o limit dat Algoritmi cu numr infinit de pai Rezolvarea unei ecuaii transcendente Numrarea unor elemente care ndeplinesc o condiie dat 4 eficienta Eficien. Algoritmii pot fi efectiv utilizai doar dac folosesc resurse de calcul n volum acceptabil. Prin resurse de calcul se nelege volumul de memorie i timpul necesar pentru execuie. Reprezentarea algoritmilor Limbaj natural Pseudocod Scheme logice Diagrame arborescente Tabele de decizie Reprezentarea algoritmilor prin scheme logice Blocurile delimitatoare Start i Stop vor marca nceputul respectiv sfritul unui algoritm dat printr-o schem logic. Descrierea unui algoritm prin schem logic va ncepe cu un singur bloc Start i se va termina cu cel puin un bloc Stop. Blocurile de intrare/ieire Citete i Tiprete indic introducerea unor date de intrare respectiv extragerea unor rezultate finale. Ele permit precizarea datelor iniiale cunoscute n problem i tiprirea rezultatelor cerute de problem.

Blocurile de atribuire (calcul) se utilizeaz n descrierea operaiilor de atribuire. Printro astfel de operaie, unei variabile var i se atribuie valoarea calculat a unei expresii expr Blocurile de decizie marcheaz punctele de ramificaie ale algoritmului n etapa de decizie. Ramificarea poate fi dubl (blocul logic) sau tripl (blocul aritmetic). Blocul de decizie logic indic ramura pe care se va continua execuia algoritmului n funcie de ndeplinirea sau nendeplinirea unei condiii. Blocul de decizie aritmetic va hotr ramura de continuare a algoritmului n funcie de semnul valorii expresiei aritmetice nscrise n acest bloc. Reprezentarea algoritmilor prin pseudocod Limbajul Pseudocod este un limbaj inventat n scopul proiectrii algoritmilor i este format din propoziii asemntoare propoziiilor limbii romne, care corespund structurilor de calcul folosite n construirea algoritmilor. Pseudocodul conine un set de cuvinte cheie. Un algoritm scris n pseudocod este de fapt o succesiune de instruciuni scrise n pseudocod.

Instructiunile pseudocodului sunt: 1) Instruciunea de citire: citeste (a,b,c,) ; 2) Instruciunea de scriere (afiare): scrie (a,b,c,) ; 3) Instruciunea de atribuire: x:=y+2; 4) Instruciunea alternativ: dac-atunci dac condiie atunci instruciune altfel instruciune ; 5) Instruciunea repetitiv: repet-pn cnd repet bloc de instruciuni pn cnd condiie ; 6) Instruciunea repetitiv: ct timp-execut ct timp condiie execut bloc de instruciuni ; 7) Instruciunea repetitiv: pentru pentru v=vin, vfin, p execut bloc de instruciuni ; observatii 1. La terminarea unei instruciuni se pune " ; "

2. nainte de " altfel " nu se pune punct i virgul 3. La sfritul unei instruciuni alternative sau repetitive se pune o linie sf 4. La nceputul i sfritul algoritmului se pun linii de nceput i sfrit Structuri de control

Structura secventiala (liniara) Structura alternativa Structura repetitiva cu conditionare anterioara Structura repetitiva cu conditionare posterioara Structura repetitiva cu un numar cunoscut de pasi

Paii realizrii unui algoritm1. Citirea cu atenie a enunului problemei. 2. Identificarea datelor de intrare i a celor de ieire. 3. Rezolvarea propriu-zis a problemei pe cazuri particulare i reprezentative. n acest moment nu se ncearc scrierea programului ci doar determinarea metodei de rezolvare, generalizarea i nelegerea acesteia. 4. Descrierea n limbaj natural a soluiei problemei. Dac nu suntei capabili s descriei metoda folosit n limbaj natural e puin probabil s o putei face ntr-un limbaj de programare care e mai restrictiv dect limbajul natural. 5. Scrierea algoritmului. 6. Testarea algoritmului. Testarea se face pe mai multe seturi de date care s acopere cazurile posibile ce pot aprea.

Probleme i condiii1.Nu orice problem poate rezolvat algoritmic. a. Fiind dat un numr n s se determine toi divizorii si. Pentru aceast problem se poate scrie un algoritm foarte uor. b. Fiind dat un numr n s se determine toi multiplii si. Pentru aceast problem nu se poate scrie un algoritm deoarece nu cunoatem un criteriu de oprire a operaiilor.

2.Un algoritm trebuie s funcioneze pentru orice date de intrare. Fiind date numerele a, b, c s se afieze maximul dintre ele. O posibil soluie ar fi: se compar a cu b i c i dac e mai mare se afieaz a, iar apoi se compar b cu a i c i dac e mai mare se afieaz b, iar apoi se compar c cu b i a i dac e mai mare se afieaz c

Algoritmul nu funcioneaz dac 2 valori sunt identice i de valoare maxim.

3. Un algoritm trebuie sa se opreasc. Se consider urmtoarea secven de prelucrri: Pas 1. Atribuie variabilei x valoarea 1; Pas 2. Mreste valoarea lui x cu 2; Pas 3. Daca x este egal cu 100 atunci se oprete prelucrarea altfel se reia de la Pas 2. Este usor de observat ca x nu va lua niciodat valoarea 100, deci succesiunea de prelucrri nu se termin niciodat. Din acest motiv nu poate considerat un algoritm corect.

4. Prelucrrile dintr-un algoritm trebuie s fie neambigue. Consideram urmtoarea secven de prelucrri: Pas 1. Atribuie variabilei x valoarea 0; Pas 2. Fie se mrete x cu 1 fie se micoreaz x cu 1; Pas 3. Daca x aparine [-10; 10] se reia de la Pas 2, altfel se oprete algoritmul.

5. Un algoritm trebuie s se opreasc dup un interval rezonabil de timp. Fiind dat un numr n se cere s se determine de cte ori a aprut o cifr c n reprezentarea tuturor numerelor naturale mai mici ca n. O rezolvare simpl ar fi s lum toate numere mai mici ca n i s vedem de cte ori apare cifra c n fiecare dinte ele. Soluia e simpl i pentru valori mici ale lui n algoritmul se termin ntr-un interval de timp rezonabil, dar pentru valori mari timpul de terminare al algoritmului crete nepermis de mult.

Tipuri de algoritmi n funcie de modul de implementare, un algoritm poate fi: recursiv - face uz de sine nsui, n mod repetat iterativ (repetitiv) serial sau paralel deterministic sau aleatoriu (probabilistic) exact sau aproximativ n funcie de paradigma utilizat, ei pot fi: algoritmi backtracking algoritmi de gen divide et impera algoritmi de programare dinamic algoritmi de tip greedy Algoritmi de tipul for brut algoritmi probabilistici, genetici, euristici .a

aplicatie Fiind date trei valori reale A,B,C s se determine i s se afieze cea mai mare i cea mai mic dintre ele.

Matlab Ce este MATLAB ? MATLAB (MATtrix LABoratory) este un pachet de programe de nalt performan, interactiv, destinat calculului matematic, tiinific i ingineresc. MATLAB integreaz calcul, programare i vizualizare, ntr-un mediu de lucru prietenos, soluionarea problemelor presupunnd folosirea notaiilor matematice clasice. Utilizarea programului MATLAB include: Matematic i calcul numeric Programare i dezvoltare de algoritmi Modelare i simulare Analiz de date, exploatarea rezultatelor i vizualizare Grafic tiinific i inginereasc Dezvoltare de aplicaii software, incluznd construcie de interfee grafice cu utilizatorul (GUI) Etc. MATLAB este un produs al companiei americane The Mathworks, Inc. [http://www.mathworks.com] i lucreaz sub Windows, Unix, LINUX i Machintosh. MATLAB include toate facilitile unui limbaj complet de programare, admind interfee cu limbajul de programare C, C++ i FORTRAN. Versiunea cea mai recent a pachetului de programe MATLAB este versiunea 6. MATLAB a cunoscut o puternic evoluie n decursul ultimilor ani, reprezentnd astzi n mediile universitare o unealt standard de calcul, fiind asociat diverselor

cursuri introductive sau avansate n matematic, tiin i inginerie. n industrie, MATLAB este recunoscut ca un mijloc de investigaie numeric performant, utilizat n sprijinul unei activiti de cercetare, dezvoltare i analiz de nalt nivel. Structura sistemului matlab Mediul de dezvoltare. Este alctuit dintr-un set de unelte care faciliteaz folosirea funciilor i fiierelor MATLAB. Multe dintre acestea reprezint de fapt interfeele grafice i includ fereastra principal MATLAB sau MATLAB Desktop, fereastra de comenzi sau Command Window, fereastra ce memoreaz istoria comenzilor sau Command History, i browser-ele de Help, Workspace, Files, Search Path etc. Biblioteca de funcii matematice MATLAB. Aceasta const ntr-o vast colecie de algoritmi de calcul, pornind de la funcii elementare precum sum, sinus, cosinus i aritmetic complex, pan la funcii mai sofisticate precum inversare de matrici, calcul de valori proprii, funcii Bessel, i transformata Fourier. Limbajul MATLAB. Limbajul MATLAB este un limbaj matrice/vector de nalt nivel ce include instruciuni de control al buclelor, funcii, structuri de date, comenzi de intrare/ieire i instruciuni de programare orientat pe obiecte. Limbajul MATLAB permite att programarea superficial pentru crearea rapid a unor mici programe de calcul specifice, ct i "programarea n detaliu" n vederea dezvoltrii unor programe complexe de nivel superior. Handle Graphics. Handle Graphics reprezint sistemul de grafic MATLAB i include att comenzi de nalt nivel pentru vizualizarea 2D i 3D a datelor, procesare de imagini, animaie i grafic, ct i comenzi de jos nivel ce permit personalizarea complet a reprezentrilor grafice i construirea integral a interfeelor grafice (GUI) pentru aplicaiile MATLAB. MATLAB Application Program Interface (API). Aceasta este o bibliotec ce permite scrierea programelor C i Fortran ce interacioneaz cu MATLAB. Biblioteca conine facilitai de apel de subrutine din MATLAB (dynamic linking), de apelare a MATLAB-ul ca pe o main de calcul, i de citire i scriere de fiiere MAT-files

Matlab Fereastra principala

Matlab Ferestrele Desktop-uluiUrmtoarele ferestre sunt supervizate de MATLAB Desktop, dei nu toate apar implicit dup lansare: Fereastra de comenzi (Command Window), permite lansarea comenzilor MATLAB; Fereastra Command History, permite memorarea, vizualizarea, editarea i relansarea funciilor lansate anterior n Command Window. Fereastra Launch Pad, permite lansarea uneltelor i accesarea documentaiei MATLAB Fereastra Current Directory Browser, permite controlul asupra fiierelor MATLAB i a celor asociate

Urmtoarele ferestre sunt supervizate de MATLAB Desktop, dei nu toate apar implicit dup lansare: Fereastra Help Browser, permite vizualizarea i cutarea documentaiei MATLAB Fereastra Workspace Browser permite vizualizarea i schimbarea coninutului spaiului de lucru Fereastra Array Editor permite editarea i vizualizarea coninutului variabilelor ntr-un format tabelar Fereastra Editor/Debugger permite crearea, editarea i verificarea fiierelor Mfiles ce conin funcii MATLAB. Alte unelte i ferestre MATLAB cum ar fi ferestrele grafice nu sunt supervizate de MATLAB Desktop.

Matlab Manipulare Matrici Se pot defini matrici in MATLAB pe mai multe ci : Introduce o lista explicita de elemente. ncrca matrice din fiiere de date externe. Genera matrice folosind funcii incluse. Crea matrice folosind propriile funcii scrise in M-files La introducerea unei matrice ca o lista de elemente,trebuiesc respectate cteva convenii de baza: Separarea elementelor unui rnd cu spatii blanc sau virgule. Folosirea unui semn punct si virgula, ;, pentru a indica sfarsitul fiecrui rnd. Includerea ntregii liste intre paranteze ptrate, [ ]. Astfel pentru a defini o matrice, se tasteaz la linia de comanda in CommandWindow: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] MATLAB va afia matricea : A= 16 3 5 10 9 6 4 15 2 13 11 8 7 12 14 1

Limbaje de programare inginereti Tema 4 MATLAB. Ce este matlab? Versiunea complet a pachetului de programe MATLAB conine o ntreag familie de module specifice, denumite tool-box-uri, respectiv blockset-uri, care permit rezolvarea unor aplicaii din diverse domenii cum ar fi: maini, aparate i acionri electrice, control de sistem, aplicaii DSP, procesarea materialelor i electro-tehnologii, procesare de semnal, mecanic, industria aeronautic i de automobile, statistic, finane i multe altele. Aceste module sunt colecii de funcii MATLAB (M-files), uor de asimilat, care extind puterea de calcul a pachetului de programe MATLAB n vederea rezolvrii unor clase particulare de probleme. Colecia de module MATLAB conine: Simulink, DSP, Control System, SimPowerSystems, SimMechanics, Data Acquisition, Fuzzy Logic, Image Processing, Partial Differential Equations, Neural Network, Optimization, System Identification, Financial, Statistics, Communications, Database, Virtual Reality etc. Tipuri de date Numere. MATLAB folosete pentru numere notaia zecimala convenional, cu punct zecimal opional si semne plus sau minus. Notaia stiintific folosete litera e pentru a specifica 10 la puterea corespunztoare. Numerele imaginare folosesc fie i fie j ca sufix. Iata cateva exemple de numere: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i Toate numerele sunt stocate intern folosind formatul long standardizat, avnd o precizie de circa 16 cifre semnificative i variind intre aproximativ 10-308 i 10+308. Pentru a economisi memorie, numerele pot fi folosite i n forma ntreg sau zecimal cu simpl precizie. n afara datelor de tip numeric, MATLAB lucreaz i cu date de tip logic sau de tip caracter.

Caractere speciale : () [] @ . , ; % ! = [,] [;] Se foloseste la generarea diviziunilor Folosite pentru corpul unei functii Pentru desemnarea unei matrici/vector Simbol pentru anuntarea unei functii de tip FUNCTION_HANDLE Indicator de operatie aritmetica element cu element Continuarea unei comenzi Matlab pe linia de comanda urmatoare Separator intre instructiuni pe aceiasi linie de comanda (cu ecou pe ecran) Separator intre instructiuni pe aceiasi linie de comanda ( fara ecou pe ecran) Se foloseste pentru a anunta comentarii in program Parasirea mediului Matlab pentru o sesiune de lucru externa Asignare Transpusa unei matrici Separator intre elementele aceleiasi linii intr-o matrice/vector Separator intre liniile unei matrici

Variabile MATLAB nu necesit nici un tip de instruciuni de declarare sau dimensionare a variabilelor. Cnd MATLAB intlnete un nou nume de variabil, acesta creeaz automat variabila i aloc memoria necesar. Dac variabila deja exist, MATLAB schimb coninutul acesteia i dac este necesar aloca o alt cantitate de memorie. Numele de variabile ncep obligatoriu cu o liter, urmat de orice numr de litere, cifre, etc. MATLAB folosete doar primele 63 de caractere ale unui nume de variabil. MATLAB face deosebirea ntre litere mari i mici. A si a nu reprezint aceeai variabil. ATENIE ! Dac unei variabile i se d numele unei funcii, funcia nu mai poate fi folosit pn cnd variabila nu este tears. Exist i un numr de cuvinte rezervate, care nu pot fi folosite ca nume de variabile ('break, 'continue, 'else, 'end, 'for, 'function, 'if, 'return, 'switch, 'while, etc) Datorit faptului c ntr-o sesiune de lucru numrul de variabile folosite poate fi foarte mare, MATLAB dispune de o serie de comenzi i funcii care s uureze munca programatorului. Acestea sunt: who - pentru a lista variabilele din workspace-ul curent; whos - pentru a lista variabilele si informaii despre dimensiunile si clasa lor. exist nume - pentru a vedea daca variabila specificata se afla in workspace. isvarname nume - verific dac numele variabilei propuse este valid, returnnd valorile 0 sau 1. which -all nume - verific dac numele variabilei propuse este folosit de o funcie. clear nume terge din memorie numele variabilei. Folosit fr un nume, comanda terge din memorie toate variabilele.

Valori speciale pi i j eps realmin realmax inf NaN 3.14159265... sqrt(-1) sqrt(-1) Precizia relativa in virgula mobila 2.2204e-016 Cel mai mic numr in virgula mobila 2.2251e-308 Cel mai mare numr in virgula mobila 1.7977e+308 Infinit Not-a number

Operatori n MATLAB operatorii pot fi: aritmetici, logici sau relaionali. Operatorii matematici + .* ./ .\ + .^ .' ' * / \ ^ Adunare Scdere nmulire mprire la dreapta mprire la stnga Plus unar Minus unar Putere Transpus Transpus complex conjugat nmulire de matrice mprire la dreapta a matricelor mprire la stnga a matricelor Ridicarea la putere a matricelor

Functii

MATLAB pune la dispoziie un mare numr de funcii matematice standard, incluznd abs, sqrt, exp, i sin. Extrgnd radical sau aplicnd logaritm pe un numr negativ nu este eroare ci rezultatul este un numr complex calculat automat. MATLAB dispune de trei categorii de funcii: funcii elementare, funcii avansate i funcii speciale pentru matrice. Multe dintre aceste funcii accepta argumente complexe. O lista a funciilor elementare se poate obine tastnd help elfun. Pentru a obine o lista a funciilor avansate de matematica si de manipulare a matricelor se tasteaz help specfun, help elmat.

Manipularea matricelor Se poate defini o matrice in MATLAB pe mai multe cai: Se introduce o lista explicita de elemente. Se ncarc matricea din fiiere de date externe. Se genereaz matricea folosind funcii incluse. Se creaz matricea folosind propriile funcii. Pentru introducerea unei matrice ca o lista de elemente trebuiesc respectate cteva convenii de baza: Se separ elementele unui rnd cu spatii blanc sau virgule. Se folosete un semn punct si virgula, ;, pentru a indica sfarsitul fiecrui rnd. Se include ntreaga lista intre paranteze ptrate, [ ]. Exemplu A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] MATLAB dispune de mai multe funcii de generare a matricilor de baza, cum ar fi: zeros ones rand randn eye diag linspace logspace Matrice doar cu elemente nule Matrice doar cu elemente unitate Matrice cu elemente aleatoare uniform distribuite Matrice cu elemente aleatoare normal distribuite Matrice cu elemente nule cu exceptia diagonalei principale plina cu elemente unitate Matrice diagonala Vectori cu elemente avand valori distribuite liniar Vectori cu elemente avand valori distribuite logaritmic

Operaiile matematice efectuate asupra matricelor reprezint obiectul de studiu al algebrei liniare. De pilda adugnd la o matrice transpusa sa se obine o matrice simetrica: A + A' ans = 32 8 11 17 8 20 17 23 11 17 14 26 17 23 26 2

Matlab Algebra liniarDeoarece matricea este singulara, aceasta nu are inversa. Daca incercati sa calculai inversa cu: X = inv(A) Vei obine un mesaj de avertizare Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.175530e017. Erorile de trunchiere ingreuiaza algoritmul de detectare cu precizie a singularitatii. Dar valoarea lui rcond, care desemneaza nivelul de conditionare a matricei este de ordinul lui eps, adica precizia relative in virgula mobila, deci precizia de calcul a inversei este mediocra. Valorile proprii ale matricei A se calculeaza cu: e = eig(A) e= 34.0000 8.0000 0.0000 -8.0000

Operatorul de multiplicare ,*, aplicat matricelor determina multiplicarea matricelor implicnd produs intern intre rnduri si coloane. Inmultind transpusa unei matrici cu matricea insasi se obine o matrice simetrica: A'*A ans = 378 212 206 360

212 370 368 206

206 368 370 212

360 206 212 378

Determinantul matricei A este zero, indicand ca matricea este singulara. d = det(A) d= 0

Matlab VectoriOperaiile aritmetice aplicate pe vectori sunt efectuate element cu element. Aceasta nseamn ca adunarea si scderea sunt aceleai pentru vectori si matrici, dar inmultirea este diferita. MATLAB folosete un punct, ca o parte de notaie pentru operaia de inmultire a vectorilor. Lista de operatori include: Operator + .* ./ .\ .^ . Operaie Adunare Scdere Inmultire element cu element Impartire element cu element Impartire la stnga element cu element Putere element cu element Transpusa ne-conjugata element cu element

Daca matricea A se inmulteste cu ea insasi folosind inmultirea vectoriala element cu element A.*A Rezultatul este o matrice continand ptratele elementelor matricei A iniiale: ans = 256 9 4 169 25 100 121 64 81 36 49 144 16 225 196 1

Matlab Construrea tablourilorOperaiile cu vectori sunt folositoare pentru construirea tablourilor. Sa presupunem ca n este vectorul coloana n = (0:9)'; Atunci pows = [n n.^2 2.^n] construiete un tablou cu ptratele si puterile lui 2 de la 0 la 9. pows = 0 0 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 1 2 4 8 16 32 64 128 256 512Functiile matematice elementare opereaza asupra vectorilor element cu element. Dac se tasteaz: format short g x = (1:0.1:2)'; logs = [x log10(x)] Rspunsul MATLAB consta in construcia unui tabel de logaritmi. logs = 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 0 0.04139 0.07918 0.11394 0.14613 0.17609 0.20412 0.23045 0.25527 0.27875 0.30103

Matricele si scalarii pot fi combinai in multe feluri. De pilda, un scalar este sczut dintr-o matrice prin scderea acestuia din fiecare element. Tastai de pilda: B = A - 8.5 Se formeaz astfel o matrice avnd sumele elementelor coloanelor egale cu zero. B= 7.5 -3.5 0.5 -4.5 -5.5 1.5 -2.5 6.5 -6.5 2.5 -1.5 5.5 4.5 -0.5 3.5 -7.5 Sum(B) ans = 0 0 0 0

Matlab Adunare cu scalari

Prin adunarea cu scalari, MATLAB asigneaza un anumit scalar tuturor indicilor dintr-un domeniu. De pilda, B(1:2,2:3) = 0 afecteaz valoarea zero unei poriuni a matricei B. B= 7.5 -3.5 0.5 -4.5 0 0 -2.5 6.5 0 4.5 0 -0.5 -1.5 3.5 5.5 -7.5

Limbaje de programare inginereti Tema 5 MATLAB. Adunarea cu scalari Matricele si scalarii pot fi combinai in multe feluri. De pilda, un scalar este sczut dintro matrice prin scderea acestuia din fiecare element. Tastai de pilda: B = A - 8.5 Se formeaz astfel o matrice avnd sumele elementelor coloanelor egale cu zero. B= 7.5 -3.5 0.5 -4.5 -5.5 1.5 -2.5 6.5 -6.5 2.5 -1.5 5.5 4.5 -0.5 3.5 -7.5 Sum(B) ans = 0 0 0 0

Prin adunarea cu scalari, MATLAB asigneaza un anumit scalar tuturor indicilor dintr-un domeniu. De pilda, B(1:2,2:3) = 0 afecteaz valoarea zero unei poriuni a matricei B.

B= 7.5 -3.5 0.5 -4.5 0 0 -2.5 6.5 0 4.5 0 -0.5 -1.5 3.5 5.5 -7.5

Indexare logica Vectorii logici creeati din operatii logice si relationale pot fi folositi pentru a face referinta la subvectori. Daca presupunem ca X este o matrice clasica si L o matrice de aceasi dimensiune care este rezultatul unei operatii logice. Atunci X(L) furnizeaza elementele lui X unde elementele lui L sunt diferite de zero. Indexarea elementelor unei matrici se poate efectua specificand o operatie logica. Sa presupunem ca avem urmatorul set de date sub forma de vector: x= 2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8 NaN este un simbol pentru (Not-a-Number). Pentru a elimina aceasta data irelevanta folosind indexare logica, folositi functia finite(x), care este adevarata pentru toate valorile numerice finite si falsa pentru NaN si Inf. x = x(finite(x)) MATLAB va raspunde cu: x= 2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8

Functia find Funcia find determina indicii elementelor unui vector care indeplinesc o conditie logica data. In forma sa cea mai simpla, find ntoarce un vector coloana de indici. Transpunad acel vector se obtine un vector de tip rand de indici. De pilda, k = find(isprime(A))' Gaseste locatiile, numerelor prime folosind indexare unidimensionala in matricea A. k= 2 5 9 10 11 13

Cnd folosii k ca pe un index stnga intr-o instruciune de asignare, structura matricei este pstrata. De pilda tastai:

A(k) = NaN A= 16 NaN NaN NaN NaN 10 NaN 8 9 6 NaN 12 4 15 14 1

Reguli Diferenierea intre litere mari si litere mici. MATLAB face diferena intre litere mici si litere mari. De pilda, nu putei lansa funcia Plot ci trebuie sa lansai funcia plot. In mod similar, variabila a nu este tot una cu variabila A. Trebuie notat faptul ca daca folosii funcia help, numele funciilor sunt afiate cu litere mari, de pilda, PLOT, insa doar cu scopul de a le scoate in evidenta fata de restul textului. Nu folosii litere mari cnd lansai funcii MATLAB. Anumite funcii de interfatare cu Java intr-adevr folosesc minuscule si majuscule si trebuiesc introduse ca atare. Spatiile de tip blanc in jurul operatorilor cum ar fi -, :, si ( ), sunt opionali, si pot imbunatati claritatea programului. Introducerea mai multor funcii pe o linie de comanda. Pentru a introduce mai multe functii intr-o singura linie de comanda, separati functiile cu o virgula ( , ) sau punct si virgula ( ; ). Prin folosirea semnului punct si virgula ( ; ) se elimina afisarea rezultatului comenzii precedente. De pilda, plasati 3 functii pe o linie pentru a construi un tabel de logaritmi : >> format short; x = (1:10)'; logs = [x log10(x)] apoi apasati Enter sau Return pentru a lansa functiile in ordine de la stanga la dreapta .

Introducerea liniilor de comanda lungi. Daca o instruciune nu ncape pe o linie, folosii (3 puncte, ...) pentru a indica faptul ca aceasta instruciune continua pe linia urmtoare, apasati apoi Enter sau Return pentru a avansa la linia urmtoare, si apoi continuai introducerea instruciunii. De pilda: s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12; sau de pilda: headers = ['Author Last Name, Author First Name, ' ... 'Author Middle Initial']

MATLAB va afia: headers = Author Last Name, Author First Name, Author Middle Initial Numrul maxim de caractere permis pe o singura linie este de 4096. Tasta Tasta control Operaiune Ctrl+P Re-apeleaz linia anterioara Ctrl+N Re-apeleaz linia urmtoare Ctrl+B Muta cursorul napoi cu un caracter Ctrl+F Muta cursorul nainte cu un caracter Ctrl + Ctrl+R Muta cursorul la dreapta cu un cuvnt Ctrl + Ctrl+L Muta cursorul la stnga cu un cuvnt Home Ctrl+A Muta cursorul la nceputul unei linii End Ctrl+E Muta cursorul la sfarsitul unei linii Esc Ctrl+U terge linia Delete Ctrl+D terge caracterul din dreapta cursorului Backspace Ctrl+H terge caracterul din stnga cursorului Ctrl+K terge caracterele pana la sfarsitul liniei Shift+Home Selecteaz caracterele pana la nceputul liniei Shift+End Selecteaz caracterele pana la sfarsitul liniei Eliminarea afisarii comenzilor. Daca o linie de comanda se ncheie cu punct si virgula ( ; ), MATLAB lanseaz instruciunea dar nu afiseaza nimic pe ecran cnd apasati tasta Enter sau Return. Aceasta comanda devine foarte utila in cazul generrii matricelor mari. De pilda, daca tastai: A = magic(100); Si apoi apasati tasta Enter sau Return MATLAB creaza matricea A dar nu o afiseaza pe ecran.

Matlab Elemente de grafica 2D sau 3D MATLAB dispune de o multitudine de facilitai pentru reprezentarea grafica a vectorilor si matricelor, respectiv editarea si printarea acestor grafice. Crearea unui grafic O funcie de baza utilizata la trasarea graficelor este functia plot care are diferite forme, in funcie de argumentele de intrare. Daca y este un vector, plot(y) produce un grafic,

liniar pe poriuni, al elementelor lui y, in funcie de index-ul elementelor lui y. Daca specificai doi vectori ca argumente, plot(x ,y) creeaz un grafic al lui y funcie de x.

Pentru exemplificare, daca se tasteaza: x = 0:pi/100:2*pi; y = sin(x); plot(x, y) Acum se pot adaug graficului notaii pe cele doua axe, respectiv un titlu. Folosind caracterele \pi se creeaz simbolul .

xlabel('x = 0:2\pi') ylabel('Sine of x') title('Plot of the Sine Function','FontSize',12) In urma execuiei comenzilor de mai sus se obine graficul .

Elemente de grafica Funcia Destinaia Plot Grafica 2D cu scara liniara pe ambele axe X si Y Plot3 Grafica 3D cu scara liniara pe ambele axe X si Y Loglog Grafica 2D cu scara logaritmica pe ambele axe X si Y Semilogx Grafica 2D cu scara logaritmica pe axa X si scara liniara pe axa Y Semilogy Grafica 2D cu scara logaritmica pe axa Y si scara liniara pe axa X Plotyy Grafica cu etichetare pe partea dreapta si stnga Stem Grafica 2D pentru seturi de date discrete Stem3 Grafica 3D pentru seturi de date discrete Bar Grafica 2D, reprezentare cu bare Barh Grafica 2D, reprezentare cu bare orizontale Bar3 Grafica 3D, reprezentare cu bare Bar3h Grafica 3D, reprezentare cu bare orizontale Stairs Grafica 2D, reprezentare in scara Area Grafica 2D, reprezentare cu arii Fill Grafica 2D, de reprezentare a poligoanelor Fill3 Grafica 3D, de reprezentare a poligoanelor

Matlab Reprezentri multiple in acelai sistem de coordonate Perechi multiple (x, y) de argumente creeaz reprezentri grafice multiple printr-un singur apel al funciei plot. MATLAB acceseaz automat un set predefinit de diverse culori (setul poate fi modificat) ce permit diferenierea vizuala intre seturile de date. De pilda, instruciunile ce urmeaz afiseaza trei curbe de variaie funcie de x, fiecare curba cu o culoare diferita: y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,x,y2,x,y3)

elemente de grafica

Comanda legend permite o cale uoara de identificare a curbelor individuale. legend('sin(x)','sin(x-.25)','sin(x-.5)')

Matlab Specificarea tipului de linie si culoarea -28apr Este posibila setarea culorii, a tipului de linie, a markerului (de exemplu simbolul + sau o) cnd afisati datele folosind funcia plot. plot(x,y,'culoare_stil_marker') culoare_stil_marker este un string continand de la 1 la 4 caractere ce desemneaz o culoare, un stil de linie, si un tip de marker: Caracterele ce desemneaz culori sunt 'c', 'm', 'y', 'r', 'g', 'b', 'w', si 'k'. Acestea corespund culorilor cyan, magenta, yellow, red, green, blue, white, si black. Stilul de linie este indicat de string-urile: '-' pentru solid, '- -' pentru linie lunga ntrerupta, ':' pentru linie scurta ntrerupta, '-.' pentru linie punct. Nu precizai nici unul din stilurile de linie pentru linie solida. Tipurile de marker sunt '+', 'o', '*', 'x' si 's' pentru ptrat, 'd' pentru romb, '^' pentru triunghi cu vrful in sus, 'v' pentru triunghi cu vrful in jos, '>' pentru triunghi cu vrful la dreapta, '