Sunteți pe pagina 1din 20

PARTICULARITI ALE PROGRAMELOR MATHCAD

4. PROGRAMAREA N MATHCAD

METODE NUMERICE N INGINERIE

EDITAREA PROGRAMELOR MATHCAD

INSTRUCIUNI

SUBPROGRAME I RECURSIVITATE

DEPANAREA PROGRAMELOR MATHCAD

MN

1
TUDOR PAUNESCU

1. PARTICULARITI ALE PROGRAMELOR MATHCAD


Programarea n Mathcad 14 se bazeaz pe zece instruciuni, care aparent au o funcionalitate relativ limitat, dac se compar cu posibilitile de programare existente n alte medii matematice care au cam aceeai complexitate global, i mult mai limitat, n comparaie cu a mediilor generale de programare. n realitate, cu setul de zece instruciuni, la care se adaug numeroasele funcii disponibile n biblioteca Mathcad i cu i structurile de mare eficien cum ar fi matricele imbricate, se pot elabora programe sofisticate. Instruciunile de programare pot fi apelate prin intermediul paletei Programming, sau prin meniul View Toolbars Programming. 1. Un program Mathcad este format din dou structuri:

- o parte, care este identic cu cea a unei funcii, plasat la stnga operatorului de asignare numeric;
- o parte, situat n dreapta operatorului de asignare, unde se efectueaz operaii specifice.

Nume program Corp program Lista parametrilor formali Apelare program

2
Lista parametrilor actuali

2. Un program Mathcad poate apela orice funcie predefinit n Mathcad, sau creat de utilizator, variabile definite de utilizator, alte programe, cu respectarea condiiilor de vizibilitate valabile ntr-o foaie de lucru.
Exemplu.

Programul minf calculeaz minimum unei funcii monovariabile pe un interval


dat prin explorare n pai. Precizia determinrii este dependent de numrul de pai n care este parcurs intervalul. Varianta 1. Functia f(x) definit de utilizator este utilizat direct n corpul programului minf. Varianta 2. Functia f(x) este utilizat ca parametru actual la apelarea programului minf. Varianta 2 are generalitate mai mare dect var.1. PP1. Scriei un program care s calculeze minimum sau maximum ntr-un bivariabile unei funcii inteval dat pe x i y.

varianta1

Vezi i solutia exact n fiierul min functie iterativ1.xmcd

varianta2

3. Instruciunile de programare se introduc doar prin intermediul paletei Programming, sau prin hot keys, nu prin scrierea lor caracter cu caracter. 5. Ca orice expresie, un program Mathcad returneaz o valoare de natur scalar, vectorial, matriceal, matriceal imbricat sau string. Aceasta este, in general, returnat de ultima instruciune executat de program. Sunt posibile mai multe ieiri din program, prin ntreruperea programului, cu instruciunea return. 6. O variabil definit ntr-un program este local programului, deci nu este vizibil in exteriorul corpului acestuia.

?
De exemplu n programul de mai sus dac se scrie xo i se apas pe tasta = Mathcad nu introduce simbolul de evaluare =, ci pe cel de atribuire :=, deoarece l consider pe xo nedefinit. 7. n programele Mathcad poate fi aplicat recursivitatea. 4

8. ntr-un program Mathcad 14 se poate defini o funcie n corpul programului (S). Exemplu: Etape a.
atribuire

b.

c.

d.

9. Nu este posibil utilizarea VPA, n afar de cazul instruciunii FOR

2. EDITAREA PROGRAMELOR MATHCAD Liniile programului: - operatorul de adugare a unei linii la corpul programului Mathcad este - pe fiecare linie se scrie doar o instruciune; - tergerea unei linii selectate, se efectueaz cu tastele [Bksp], [Delete]; - asupra liniilor unui program se pot efectua operaii de tergere (delete), tiere (cut), copiere (copy), lipiere (paste); Atribuirea operatorul de asignare (atribuire) se poate utiliza doar in corpul unui program Mathcad. Acesta se insereaza din paleta Programming, tasta [ { ]; - operatorul de definire :=, nu poate fi utilizat n corpul unui program Mathcad. 6 sau cu sau tasta [ ] ] ;

Utilizarea unui program, definit ntr-o foaie de lucru se face respectnd regulile de vizibilitate. Se scrie numele programului, urmat de lista parametrilor actuali, ntre paranteze rotunde, folosind ca separatori virgulele. Dup cum se tie, exist o coresponden poziional

strict ntre parametri actuali i cei formali.


3. INSTRUCIUNI

3.1. Instruciunea condiional (IF) Inserare Instruciunea IF din paleta Programming, sau tasta [ } ] Sintaxa forma simplificat: valoarea dorit daca condiia este adevarat forma complet: valoarea dorit daca condiia este adevarat IF condiia (expresia boolean) OTHERWISE 7 valoarea dorit daca condiia nu este adevarat IF condiia (expresia boolean)

3.2. Instruciuni repetitive (FOR, While) 3.2.1. Instruciunea FOR

Inserare Instruciunea FOR din paleta Programming, sau combinaia de taste [Ctrl]+["]. Sintaxa

Contorul este uzual o VPA (variabil range):


FOR nume indice valoare initiala a indicelui, a doua valoare .. valoare final expresia care se evalueaz repetat Se utilizeaz mai rar i alte contoare: FOR nume indice vector sau list scalari sau list de VPA sau list de vectori expresia care se evalueaz repetat Observaii Instruciunea FOR se utilizeaz cnd este cunoscut numrul de cicluri. Dac contorul este o VPA, acesta se insereaz cu operatorul m..n, din paleta Calculator, sau cu tasta [ ; ] 8

3.2.2. Instruciunea WHILE Inserare

Instruciunea WHILE din paleta Programming sau [Ctrl]+]

Sintaxa WHILE condiie (expresie boolean)

expresia care se evalueaz repetat, dac condiia este satisfacut


Observaii Instruciunea WHILE se utilizeaz uzual dac nu se cunoate numrul de cicluri, ieirea din calculele repetitive fcndu-se cnd nu mai este ndeplinit condiia. Aceasta trebuie s se refere la o variabil, expresie care se modific n corpul ciclului. Dac iniial condiia nu este satisfcut expresia nu este evaluat 9 niciodat, deoarece WHILE este o instruciune repetitiv cu test iniial.

FOR

versus

WHILE

Ciclu cu numr determinat de pai. Test final numr de pai dac i<n se continu calculele.

Ciclu cu numr nedeterminat de pai. Test iniial ndeplinire condiie, dac condiia este ndeplinit se continu calculele. start

start

i:=0 i:=i+1

i:=1 nu conditie stop

Bloc calcule nu da i<n i:=i+1

da Bloc calcule

stop 10

3.3. Instruciuni pentru controlul execuiei programului Mathcad pune la dispoziia utilizatorului trei instruciuni cu rol de ntrerupere a rulrii programului, enumerate mai jos, n ordinea descresctoare a efectului: 1. RETURN ntrerupe programul; 2. BREAK ntrerupe un ciclu; 3. CONTINUE ntrerupe o iteraie. Instruciunile RETURN, BREAK, CONTINUE se insereaz din paleta Programming sau cu combinaiile de taste: [Ctrl]+ [I], respectiv [Ctrl]+ [{ ], respectiv [Ctrl]+ [[]. Ca i n cazul celorlalte instruciuni de programare este interzis inserarea prin tastatur liter cu liter. 3.3.1. Instruciunea RETURN Instruciunea RETURN permite ntreruperea rulrii programului i returnarea unei valori calculate, oriunde n corpul programului. Sintaxa RETURN expresia sau irul de caractere care se returneaz Deseori, instruciunea RETURN se utilizeaz n combinaie cu instruciunea IF RETURN expresie returnat IF condiia (expresia boolean) 11

Programul alturat extrage dintr-un vector prima valoare mai mare dect o valoare dat.

3.3.2. Instruciunea BREAK Instructiunea BREAK se utilizeaz n corpul instructiunilor ciclice FOR, sau WHILE pentru intreruperea ciclului i executarea instruciunii imediat urmatoare dup ciclu. Sintaxa Instruciunea BREAK se utilizeaz n combinaie cu instruciunea IF: BREAK IF condiia (expresia boolean)

i este contorul vectorului care se proceseaya (v) j este indicele subvectorului extras

12

3.3.3. Instruciunea CONTINUE Instruciunea CONTINUE se utilizeaz n corpul instruciunilor ciclice, pentru ntreruperea unei iteraii a ciclului i executarea instruciunii imediat urmtoare din ciclu. Sintaxa

La fel ca instruciunile anterioare, CONTINUE se utilizeaz n combinaie cu instruciunea IF:


CONTINUE IF condiia (expresia boolean)

13

3.4. Instruciuni pentru gestiunea erorilor ON ERROR, ERROR 3.4.1. Instruciunea ON ERROR Instruciunea ON ERROR este destinat manipularii erorilor neprevizibile. Aceasta are funcionalitatea unei instruciuni condiionale. Inserare Paleta Programming sau [Ctrl]+[ , ]. Sintaxa expresie, funcie evaluat dac exist eroare ON ERROR expresie, funcie evaluat daca NU exist eroare

14

3.4.2. Instruciunea ERROR Afieaz scurte mesaje, stabilite de utilizator (tip sau hint), dac nu sunt ndeplinite anumite condiii.

Inserarea se face din paleta Programming.


Sintaxa Instruciunea ERROR se utilizeaz de obicei n combinaie cu instruciunea IF: ERROR ('' mesaj stabilit de utilizator'') IF condiia (expresia boolean)
Atenie la funcionalitatea diferit fa de utilizarea textului stringfr error, vezi exemplul slide 8

3.4.3. Instruciuni pentru protecie IsArray, IsNaN, IsPrime, IsScalar, IsString

Obs. IsPrime poate fi evaluat doar simbolic

15

4. SUBPROGRAME I RECURSIVITATE
4.1. Subprograme Mathcad 14 permite utilizarea subprogramelor, care pot fi imbricate pe oricte nivele. Subrutinele sunt recomandate n scopul stpnirii complexitii programrii. Un program astfel structurat este mult mai lizibil, se poate testa i depana mult mai uor, n plus d posibilitatea refolosirii codului.

sau mai simplu utiliznd funcia factorial existent n biblioteca Mathcad (vezi toolbox-ul Calculator)

16

4.2. Recursivitate Dei utilizarea recursivitii n definirea unei funcii permite scrierea unui cod minimal, resursele de memorie nu sunt eficient utilizate. O funcie definit recursiv trebuie s conin dou pri: o definire a funciei dependent de o valoare anterioar a argumentului i o condiie iniial, pentru a evita ciclarea.

17

5. DEPANAREA PROGRAMELOR MATHCAD (S) Depanarea programelor Mathcad 14 utilizeaz o fereastr diferit de foaia de lucru: View Trace Windows. Controlul procesului de depanare a unui program se face cu o bar specializat de instrumente:

View Toolbars Debug sau prin intermediul meniului Tools Debug Togle Debug.

Pornire depanare

ntrerupere

Stare depanare on/off Vedere/ascundere fereastr depanare

Pentru a se urmri evoluia variabilelor selectate n fereastra trace, clic pe al treilea buton (Toggle Debugging)

n vederea depanrii unui program se utilizeaz funciile trace(S, x, y, z, ...), pause(S, x, y, z, ...) care se insereaz n codul programului sau direct n foia de lucru, cu parametrii: S este un parametru opional dac se urmrete o singur variabil, n caz contrar este un string (ir de caractere) care conine codul de control al locaiei argumentului S (prima poziie, a doua etc). x, y, z sunt expresii valide n MC. 18

Exemplu de inserarea al funciilor trace i pause n corpul programelor

Exemplu de inserarea a funciei trace n program, n interiorul unui ciclu for.

Exemplu de inserarea a funciei trace n program, n interiorul unui ciclu for, cu afiarea valorilor indexului i i a valorii curente x.

Exemplu de inserarea a funciei pause n program, n interiorul unui ciclu for. La fiecare apsare a butonului resume de pe bara de instrumente Debug, n fereastra Trace este afiat cte un rnd care conine elementele vectorului

Pentru operaii simple de editare a coninutului ferestrei Trace clic ButD

19

Exemplu de utilizarea funciei trace n programul de calcul al erorilor axei unui element centrat prin 20 intermediul unei buce cilindrice

S-ar putea să vă placă și