23
1 METODE NUMERICE ÎN INGINERIE TUDOR PAUNESCU MN4 4. PROGRAMAREA ÎN MATHCAD PARTICULARITĂŢI ALE PROGRAMELOR MATHCAD EDITAREA PROGRAMELOR MATHCAD INSTRUCŢIUNI SUBPROGRAME ŞI RECURSIVITATE DEPANAREA PROGRAMELOR MATHCAD

Programarea in Mathcad

Embed Size (px)

DESCRIPTION

Programare Mathcad

Citation preview

Page 1: Programarea in Mathcad

1

ME

TO

DE

NU

ME

RIC

E

ÎN I

NG

INE

RIE

TUDOR PAUNESCUMN4

4. P

RO

GR

AM

AR

EA

ÎN M

AT

HC

AD

PARTICULARITĂŢI ALE PROGRAMELOR MATHCAD

EDITAREA PROGRAMELOR MATHCAD

INSTRUCŢIUNI

SUBPROGRAME ŞI RECURSIVITATE

DEPANAREA PROGRAMELOR MATHCAD

Page 2: Programarea in Mathcad

2

Page 3: Programarea in Mathcad

3

1. PARTICULARITĂŢI ALE PROGRAMELOR MATHCAD

Programarea în Mathcad 14 se bazează pe zece instrucţiuni, care aparent au o funcţionalitate relativ

limitată, dacă se compară cu posibilităţile de programare existente în alte medii matematice care au cam

aceeaşi complexitate globală, şi mult mai limitată, în comparaţie cu a mediilor generale de programare. În

realitate, cu setul de zece instrucţiuni, la care se adaugă numeroasele funcţii disponibile în biblioteca

Mathcad şi cu şi structurile de mare eficienţă cum ar fi matricele imbricate, se pot elabora programe

sofisticate.

Instrucţiunile 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 funcţii, plasată la stânga operatorului de asignare numerică;

- o parte, situată în dreapta operatorului de asignare, unde se efectuează operaţii specifice.

Nume program

Lista parametrilor formaliCorp program:numără elementele din vectorul vcare sunt mai micidecât aApelare program

Lista parametrilor actuali

2. Un program Mathcad poate apela orice funcţie predefinită în Mathcad, sau creată de utilizator, variabile

definite de utilizator, alte programe, cu respectarea condiţiilor de vizibilitate.

Ultima liniepoate lipsi

Operator atribuire

Page 4: Programarea in Mathcad

4

varianta1

START

xmin,xmax,n

fmin:=f(xmin)

i:=0

i:=i+1

x:=xmin+i.(xmax-xmin)/n

f(x)<fminfmin:=f(x)

xm:=x

i<n

xm,fmin

STOP

da

da

Date input

Inițilizări

Contor

Valoarea curenta x

Retinere min curent

Afișare

EXEMPLUL 1Calculează prin explorare exhaustivă valoarea minimă a unei

funcții monovariabilă, într-un interval

Funcția f(x) este vizibilă în corpul programului

xmin,xmax-limitele intervalului,

n-numărul de pași

Page 5: Programarea in Mathcad

5

Varianta 2. Functia f(x) este utilizată ca parametru actual la apelarea programului minf. Variantele 2 și

3 au generalitate mai mare decât varianta1 deoarece nu sunt dependente de numele funcției a cărui

minim dorim să-l aflăm

varianta2a

PP1. Scrieţi un program care să

calculeze minimum sau maximum

(selectabil) a unei funcţii bivariabile în

intevale date pe x şi y.

Se poate introduce orice nume de funcție respectând regulile de sintaxă,aici s-a utilizat un nume de funcție func

varianta3

Valorile curente ale variabilei x sunt generate aleator în intervalul 0-1

varianta2b

Varianta 2b este independentă de origine și este mai concentrată decât cea anterioarăSALT LA FOR

Page 6: Programarea in Mathcad

6

(S) Observație

Cele două exemple anterioare au scop

didactic, valoarea minimă, maximă unei funcții

în Mathcad se poate determina apelând

funcțiile Minimize, respectiv Maximize

integrate într-un bloc SOLVE (detalii într-un

curs ulterior)

Page 7: Programarea in Mathcad

7

3. Instrucţiunile 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 (șir de caractere). Aceasta este, in general, returnată de ultima instrucţiune

executată de program. Sunt posibile mai multe ieşiri din program, prin întreruperea programului, cu

instrucţiunea 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ă scriem xm şi se apasă pe tasta = Mathcad nu introduce simbolul

de evaluare =, ci pe cel de atribuire :=, deoarece îl consideră pe xm nedefinit (xm a fost definit în corpul

programului și nu este vizibil în exteriorul corpului programului).

7. În programele Mathcad poate fi aplicată recursivitatea.

8. Într-un program Mathcad nu este posibilă utilizarea VPA, în afară de cazul instrucţiunii FOR.

?

Page 8: Programarea in Mathcad

8

9. Într-un program Mathcad 14 se poate defini o funcţie în corpul programului (S).

Exemplu:

Etape

a.

b.

c.

d.

atribuire

Page 9: Programarea in Mathcad

9

2. EDITAREA PROGRAMELOR MATHCAD

- asupra liniilor unui program se pot

efectua operaţii de ştergere (“delete”),

tăiere (”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, sau cu

tasta [ { ];

- operatorul de definire :=, nu poate fi

utilizat în corpul unui program Mathcad.

Liniile programului:

- operatorul de adăugare a unei linii la corpul programului Mathcad este sau tasta [ ] ] ;

- pe fiecare linie se scrie doar o instrucţiune;

- ştergerea unei linii selectate, se efectuează cu tastele [Bksp], [Delete];

Page 10: Programarea in Mathcad

10

Utilizarea unui program, definit într-o foaie de lucru se

face respectând 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ţă poziţională

strictă între parametri actuali şi cei formali.

3. INSTRUCŢIUNI

3.1. Instrucţiunea condiţională (IF)

Inserare

Instrucţiunea IF din paleta Programming, sau tasta [ } ]

Sintaxa

forma simplificată:

valoarea dorită daca condiţia este adevarată IF condiţia (expresia booleană)

forma completă:

valoarea dorită daca condiţia este adevarată IF condiţia (expresia booleană)

valoarea dorită daca condiţia nu este adevarată OTHERWISE

String (șir de caractere)

Page 11: Programarea in Mathcad

11

3.2. Instrucţiuni repetitive (FOR, While)

3.2.1. Instrucţiunea FOR

Inserare

Instrucţiunea FOR din paleta Programming, sau combinaţia de taste [Ctrl]+["].

Sintaxa

Contorul este uzual o VPA (variabilă “range”):

FOR nume indice valoare initiala a indicelui, a doua valoare .. valoare finală (sau varianta simplă a VPA)

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

Observaţii

Instrucţiunea FOR se utilizează când este cunoscut numărul de cicluri.

Dacă contorul este o VPA, acesta se inserează cu operatorul m..n, din paleta Calculator, sau cu tasta [ ; ]

Page 12: Programarea in Mathcad

12

3.2.2. Instrucţiunea WHILE (instrucţiune repetitivă cu test iniţial)

Inserare

Instrucţiunea WHILE din paleta Programming sau [Ctrl]+]

Sintaxa

WHILE condiţie (expresie booleană)

expresia care se evaluează repetat,

dacă condiţia este satisfacută

Observaţii

Instrucţiunea WHILE se utilizează uzual dacă nu se cunoaşte numărul de cicluri, ieşirea din calculele

repetitive făcându-se când nu mai este îndeplinită condiţia. Aceasta trebuie să se refere la o variabilă,

expresie care se modifică în corpul ciclului, fiindcă în caz contrar ciclul este infinit. Dacă iniţial condiţia nu este

satisfăcută expresia nu este evaluată niciodată.

Generare vector cu valori aleatoare

Exemple

Page 13: Programarea in Mathcad

13

FOR versus WHILE

Ciclu cu număr determinat de

paşi.

Test final număr de paşi dacă i<n

se continuă calculele.

Ciclu cu număr nedeterminat de paşi.

Test iniţial îndeplinire condiţie, dacă condiţia

este îndeplinită se continuă calculele.

start start

i:=0

i:=i+1

Bloc calcule

i<n

stop

da

i:=1

conditie

Bloc calcule

da

i:=i+1

stop

nu

nu

Page 14: Programarea in Mathcad

14

3.3. Instrucţiuni pentru controlul execuţiei programului

Mathcad pune la dispoziţia utilizatorului trei instrucţiuni cu rol de întrerupere a rulării programului, enumerate

mai jos, în ordinea descrescătoare a efectului:

1. RETURN întrerupe programul;

2. BREAK întrerupe un ciclu;

3. CONTINUE întrerupe o iteraţie.

Instrucţiunile RETURN, BREAK, CONTINUE se inserează din paleta Programming sau cu combinaţiile de

taste: [Ctrl]+ [I], respectiv [Ctrl]+ [{ ], respectiv [Ctrl]+ [[].

Ca şi în cazul celorlalte instrucţiuni de programare este interzisă inserarea prin tastatură literă cu literă.

3.3.1. Instrucţiunea RETURN

Instrucţiunea RETURN permite întreruperea rulării programului şi returnarea unei valori calculate,

oriunde în corpul programului.

Sintaxa

RETURN expresia sau şirul de caractere care se returnează

Deseori, instrucţiunea RETURN se utilizează în combinaţie cu instrucţiunea IF

RETURN expresie returnată IF condiţia (expresia booleană)

Efecte descrescătoare

Page 15: Programarea in Mathcad

15

Programul alăturat extrage dintr-un

vector prima valoare mai mare decât

o valoare dată.

3.3.2. Instrucţiunea BREAK

Instructiunea BREAK se utilizeazã în corpul instructiunilor ciclice FOR, sau WHILE pentru intreruperea

ciclului şi executarea instrucţiunii imediat urmatoare după ciclu.

Sintaxa

Instrucţiunea BREAK se utilizează în combinaţie cu instrucţiunea IF:

BREAK IF condiţia (expresia booleană)

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

Page 16: Programarea in Mathcad

16

3.3.3. Instrucţiunea CONTINUE

Instrucţiunea CONTINUE se utilizează în corpul instrucţiunilor ciclice, pentru întreruperea unei iteraţii a

ciclului şi executarea instrucţiunii imediat următoare din ciclu.

Sintaxa

La fel ca instrucţiunile anterioare, CONTINUE se utilizează în combinaţie cu instrucţiunea IF:

CONTINUE IF condiţia (expresia booleană)

Page 17: Programarea in Mathcad

17

3.4. Instrucţiuni pentru gestiunea erorilor ON ERROR, ERROR

3.4.1. Instrucţiunea ON ERROR (S)

Instrucţiunea ON ERROR este destinată manipularii erorilor neprevizibile. Aceasta are funcţionalitatea

unei instrucţiuni condiţionale.

Inserare

Paleta Programming sau [Ctrl]+[ , ].

Sintaxa

expresie, funcţie evaluată dacă există eroare ON ERROR expresie, funcţie evaluată daca NU există

eroare

Page 18: Programarea in Mathcad

18

3.4.2. Instrucţiunea ERROR

Afişează scurte mesaje, stabilite de utilizator (“tip” sau “hint”), dacă nu sunt îndeplinite anumite condiţii.

Inserarea nu se face din paleta Programming ci din Insert Function.

Sintaxa

Instrucţiunea ERROR se utilizează de obicei în combinaţie cu instrucţiunea IF:

ERROR ('' mesaj stabilit de utilizator'') IF condiţia (expresia booleană)

3.4.3. Alte instrucţiuni pt. protecţie IsArray, IsNaN, IsPrime, IsScalar, IsString returnează 1 pt OK și 0 în caz

contrar

Obs. IsPrime poate fi

evaluată doar simbolic

Page 19: Programarea in Mathcad

19

4. SUBPROGRAME ŞI RECURSIVITATE

4.1. Subprograme

Mathcad 14 permite utilizarea subprogramelor, care pot fi imbricate pe oricâte nivele. Subrutinele sunt

recomandate în scopul stăpânirii complexităţii programării. Un program astfel structurat este mult mai lizibil,

se poate testa şi depana mult mai uşor, în plus dă posibilitatea refolosirii codului.

sau mai simplu utilizând funcţia factorial existentă în biblioteca Mathcad (vezi toolbox-ul Calculator)

Page 20: Programarea in Mathcad

20

4.2. Recursivitate

Deşi utilizarea recursivităţii în definirea unei funcţii permite scrierea unui cod minimal, resursele de memorie

nu sunt eficient utilizate.

O funcţie definită recursiv trebuie să conţină două părţi: o definire a funcţiei dependentă de o valoare

anterioară a argumentului şi o condiţie iniţială, pentru a evita ciclarea.

Page 21: Programarea in Mathcad

21

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

În vederea depanării unui program se utilizează funcţiile 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 opţional dacă se urmăreşte o singură variabilă, în caz contrar este un string

(şir de caractere) care conţine codul de control al locaţiei argumentului S (prima poziţie, a doua etc).

x, y, z sunt expresii valide în MC.

Pentru a se urmări evoluţia variabilelor selectate în fereastra trace, clic pe al treilea buton (Toggle Debugging)

Page 22: Programarea in Mathcad

22

Exemplu de inserarea a funcţiei trace în program, în interiorul unui ciclu for.

Exemplu de inserarea a funcţiei trace în program, în interiorul unui ciclu for, cu afişarea valorilor indexului i şi a valorii curente x.

Exemplu de inserarea a funcţiei pause în program, în interiorul unui ciclu for. La fiecare apăsare a butonului resume de pe bara de instrumente Debug, în fereastra Trace este afişat câte un rând care conţine elementele vectorului

Pentru operaţii simple de editare a conţinutului ferestrei Trace clic ButD

Exemplu de inserarea al funcţiilor trace şi pause în corpul programelor

Page 23: Programarea in Mathcad

23Exemplu de utilizarea funcţiei trace în programul de calcul al erorilor axei unui element centrat prin intermediul unei bucşe cilindrice