Home > IT, Programe > Program de evaluare, trasare grafice 2D si 3D, calculare integrale, cautare solutii

Program de evaluare, trasare grafice 2D si 3D, calculare integrale, cautare solutii

Creat de către mine în perioada studenției în limbajul de programare Pascal, programul Math32 evaluează expresia introdusă într-un punct ales, calculează integrala, diferenţiala, realizează graficul acesteia (2D sau 3D), a derivatei şi a primitivei. Expresia introdusă poate fi salvată pe disc, şi ulterior incărcată pentru reluarea lucrului cu aceasta. Graficele care sunt realizate pot fi salvate în format recunoscut de orice editor grafic (*.pcx sau *.bmp). Cuprinde un meniu de opţiuni pentru interpretarea de muzică în timpul lucrului, pentru schimbarea graficii (rezoluţii cuprinse între 320×200 până la 1024×768). Din acelaşi meniu de grafică se setează animaţia pentru grafică tridimensională şi precizarea formatului şi a numelui fişierului în care se salvează graficul. Meniul Diverse include câteva demonstraţii (exemple de proceduri de referinţă realizate în limbajul Borland Pascal).

Utilizarea acestui program începe prin introducerea expresiei matematice cu care se doreşte a se lucra:

01

Programul are implementate constante matematice şi booleene des utilizate e, PI, TRUE, FALSE şi ERROR. Drept operatori există o multitudine printre care:
N1^N2 – Ridicarea lui N1 la puterea N2
N1*N2 – Înmulţirea lui N1 cu N2
A1+A2 – Adunarea lui A1 cu A2
N1-N2 sau -N – Scăderea lui N2 din N1 sau schimbarea de semn a lui N
N1/N2 – Împărţirea lui N1 prin N2
N1divN2 – Împărţirea întreagă a lui N1 prin N2
N1modN2 – Restul împărţirii lui N1 prin N2
(,) – Operatori de precedenţă
sqrt(N) – Extragerea radicalului din N
N! – Factorialul lui N
arrang(N1,N2) – Aranjamente de N1 luate câte N2
comb(N1,N2) – Combinări de N1 luate câte N2
exp(N) – Exponenţiala lui N (10 la puterea a N-a)
ln(N) – Logaritmul lui N în baza e (2,7172…)
log(N) – Logaritmul lui N în baza 10
lg(N1,N2) – Logaritmul lui N2 în baza N1
sin(N) – Sinusul lui N (în radiani)
cos(N) – Cosinusul lui N (în radiani)
tan(N) – Tangenta lui N (în radiani)
cotan(N) – Cotangenta lui N (în radiani)
asin(N) – Arcsinusul lui N (în radiani)
acos(N) – Arccosinusul lui N (în radiani)
atan(N) – Arctangenta lui N (în radiani)
xroot(n,N) – A n-a rădăcina a lui N
int(N) – Partea întreaga a lui N
rnd – Generează un număr aleator
abs(N) – Valoarea absolută a lui N
sum(N1,N2,N3…) – Suma numerelor N1,N2,N3…
mean(N1,N2,N3…) – Media aritmetică a numerelor N1,N2,N3…
sqrsum(N1,N2,N3…) – Suma pătratelor numerelor N1,N2,N3…
nelem(A1,A2,A3…) – Numărul de elemente permise
>,<,>=,<=,=,<> – Operatori de comparaţie (între valori întregi sau cuvinte)
not,and,or,xor,=,<> – Operatori booleeni (non, şi, sau, fără, egal, diferit)
if(B,A1,A2) – Dacă este îndeplinită condiţia B atunci efectuează A1 altfel A2
strupr(S) – Face majuscule literele cuvântului S
strlwr(S) – Face minuscule literele cuvântului S
strlen(S) – Lungimea cuvântului S
insertstr(S1,S2,N) – Inserează cuvântul S2 în S1 începând cu poziţia N
substr(S,N1,N2) – Întoarce cuvântul din S de la poziţia N1 pe lungimea N2
deletestr(S,N1,N2) – Şterge din cuvântul S de la poziţia N1 pe lungimea N2
strpos(S1,S2) – Returnează poziţia lui S1 în cuvântul S2
parse(S) – Analizează cuvântul S
str(A) – Converteşte valoarea lui A în cuvânt
:= – Atribuire
; – Sfârşitul formulei
isstring(A) – Determină dacă A este sau nu cuvant
isboole(A) – Determină dacă A este valoarea booleană
isnumber(A) – Determină dacă A este număr
iserror(A) – Determină dacă A este eroare
N% – Procentul lui N
odd(N) – Întoarce TRUE dacă N este par, altfel FALSE
cmmdc(N1,N2) – Cel mai mare divizor comun dintre N1 şi N2
cmmmc(N1,N2) – Cel mai mic multiplu comun dintre N1 şi N2
max(N1,N2,N3…) – Cea mai mare valoare dintre N1, N2, …
min(N1,N2,N3…) – Cea mai mica valoare dintre N1, N2, …
grrad(N) – Transformă valoarea lui N din grade în radiani
radgr(N) – Transformă valoarea lui N din radiani în grade
frac(N) – Returnează partea fracţionară a lui N

Ordinea de executare a operatorilor este realizată ţinând cont de următoarele reguli:
1: Orice precizat între paranteze ( )
2: rnd, %
3: Orice funcţie sau operator de forma Operator(A1,A2,A3…)
4: + şi ca operatori de semn
5: ^, sqrt şi !
6: div şi mod
7: * şi /
8: + şi ca operaţii de înmulţire sau de scădere
9: =, <=, >=, <>, > şi <
10: Atribuirea :=
11: and, or, xor şi not
12: Operatorul de sfârşit de formulă;

Operatorii sunt sensibili la formatul majuscule – minuscule. La definirea expresiei pentru evaluare, trebuie ca variabilele utilizate să fie declarate şi să li se atribuie valoarea implicită:

02

Pentru realizarea graficului tridimensional, se accesează comanda 3D din meniul Grafic (tasta F3):

03

Se aleg intervalele pentru cele două axe X şi Y şi se confirmă:

04

Se va iniţializa grafica 3D:

05

Graficul tridimensional obţinut poate fi rotit, mărit, privit din perspectivă, salvat în format BMP sau PCX (prin tasta F10):

06

Graficul 2D pentru o funcţie (a*x^2+b*x+c, cu a=2, b=-5, c=-3) se realizează prin comanda 2D din meniul Grafic (tasta F2):

07

Se alege variabila funcţie de care se realizează graficul (se alege de exemplu x) şi se confirmă:

08

Graficul bidimensional pentru f(x)=2*x^2-5*x-3 arată ca în figura de mai jos:

09

Se poate realiza graficul pentru derivata expresiei din meniul Grafic, comanda Derivata (combinaţia de taste Alt+F2):

10

Se poate abandona realizărea graficului cu tasta Esc:

11

Se poate calcula aria de sub grafic pe un anumit interval dat prin integrarea pe respectivul interval a funcţiei din meniul Integrala (combinaţia de taste Alt+T) din meniul Calcul:

12

Pentru exemplificare se alege calcularea integralei funcţiei f(x)=2*x^2-5*x-3, pentru intervalul 0 -10, cu un pas de integrare de 0.1:

13

Este afişat după calculare rezultatul 386,7 (rezultatul este afişat în format ştiinţific 3.867*10^2):

14

Se poate utiliza programul pentru căutarea soluţiilor într-un interval dat prin comanda Cautare solutii (combinaţia de taste Alt+L) din meniul Calcul:

15

Se alege intervalul -10..10 cu un pas de 0.001 pentru variabila x:

16

La fiecare intersectare cu axa x este afişată valoarea lui f(x):

17

Pentru fiecare rădăcină găsită se va afişa un mesaj cu valoarea acesteia:

18

La finalizarea căutării de soluţii se va afişa numărul de rădăcini găsite în interval:

19

Programul include în meniul opţiuni posibilitatea de a interpreta melodii din fişiere cu format HSC, opţiune foarte avansată pentru compilatorul Pascal:

20

Totodată, din meniul Optiuni, se poate alege rezoluţia modului grafic de reprezentare a funcţiilor:

21

Rezoluţiile şi numărul de culori cu care se poate iniţializa modul grafic sunt:

320x200x256
640x400x256
640x480x4
640x480x16
640x480x256
800x600x256
1024x768x256

22

Programul înglobează demonstraţii de programare, lucruri ce pot fi relizate în Pascal în meniul Diverse, comanda Demonstratii:

23

Se poate vedea demonstrarea reproducerii unui foc de artificii. Acestea sunt create, utilizate şi distruse dinamic pentru a nu încărca memoria programului inutil:

24

Programul conţine şi un meniu de ajutor, care permite afişarea informaţiilor de utilizare:

25

Fereastra de Folosirea programului conţine inclusiv o listă cu toţi operatorii ce pot fi utilizaţi în definirea expresiilor:

26

Închiderea aplicaţiei se face din meniul Expresie, prin comanda Iesire sau prin apăsarea pe tasta Esc:

27

La închiderea aplicaţiei este arătată o ultimă realizare permisă de compilatorul Pascal şi anume redarea de animaţii din fişiere cu extensia FLI:

28

CONSTANTE
Programul are implementate constante matematice si booleene
des utilizate e, PI, TRUE, FALSE si ERROR. Acestea sunt:
e = 2,7172…
PI = 3.1416…
TRUE = adevarat
FALSE = fals
ERROR = eroare

OPERATORI
N1^N2 Ridicarea lui N1 la puterea N2
N1*N2 Inmultirea lui N1 cu N2
A1+A2 Adunarea lui A1 cu A2
N1-N2 sau -N Scaderea lui N2 din N1 sau schimbarea de semn
a lui N
N1/N2 Impartirea lui N1 prin N2
N1divN2 Impartirea intreaga a lui N1 prin N2
N1modN2 Restul impartirii lui N1 prin N2
(,) Operatori de precedenta
sqrt(N) Extragerea radicalului din N
N! Factorialul lui N
arrang(N1,N2) Aranjamente de N1 luate cate N2
comb(N1,N2) Combinari de N1 luate cate N2
exp(N) Exponentiala lui N (10 la puterea a N-a)
ln(N) Logaritmul lui N in baza e (2,7172…)
log(N) Logaritmul lui N in baza 10
lg(N1,N2) Logaritmul lui N2 in baza N1
sin(N) Sinusul lui N (in radiani)
cos(N) Cosinusul lui N (in radiani)
tan(N) Tangenta lui N (in radiani)
cotan(N) Cotangenta lui N (in radiani)
asin(N) Arcsinusul lui N (in radiani)
acos(N) Arccosinusul lui N (in radiani)
atan(N) Arctangenta lui N (in radiani)
xroot(n,N) A n-a radacina a lui N
int(N) Partea intreaga a lui N
rnd Genereaza un numar aleator
abs(N) Valoarea absoluta a lui N
sum(N1,N2,N3…) Suma numerelor N1,N2,N3…
mean(N1,N2,N3…) Media aritmetica a numerelor N1,N2,N3…
sqrsum(N1,N2,N3…) Suma patratelor numerelor N1,N2,N3…
nelem(A1,A2,A3…) Numarul de elemente permise
>,<,>=,<=,=,<> Operatori de comparatie (intre valori intregi
sau cuvinte)
not,and,or,xor,=,<> Operatori booleeni (non, si, sau, fara, egal,
diferit)
if(B,A1,A2) Daca este indeplinita conditia B atunci efec-
tueaza A1 altfel A2
strupr(S) Face majuscule literele cuvantului S
strlwr(S) Face minuscule literele cuvantului S
strlen(S) Lungimea cuvantului S
insertstr(S1,S2,N) Insereaza cuvantul S2 in S1 incepand cu
pozitia N
substr(S,N1,N2) Intoarce cuvantul din S de la pozitia N1 pe
lungimea N2
deletestr(S,N1,N2) Sterge din cuvantul S de la pozitia N1 pe
lungimea N2
strpos(S1,S2) Returneaza pozitia lui S1 in cuvantul S2
parse(S) Analizeaza cuvantul S
str(A) Converteste valoarea lui A in cuvant
:= Atribuire
; Sfarsitul formulei
isstring(A) Determina daca A este sau nu cuvant
isboole(A) Determina daca A este valoarea booleana
isnumber(A) Determina daca A este numar
iserror(A) Determina daca A este eroare
N% Procentul lui N
odd(N) Intoarce TRUE daca N este par, altfel FALSE
cmmdc(N1,N2) Cel mai mare divizor comun dintre N1 si N2
cmmmc(N1,N2) Cel mai mic multiplu comun dintre N1 si N2
max(N1,N2,N3…) Cea mai mare valoare dintre N1, N2, …
min(N1,N2,N3…) Cea mai mica valoare dintre N1, N2, …
grrad(N) Transforma valoarea lui N din grade in radiani
radgr(N) Transforma valoarea lui N din radiani in grade
frac(N) Returneaza partea fractionara a lui N

ORDINEA DE EXECUTARE A OPERATORILOR
1: Orice precizat intre paranteze ( )
2: rnd, %
3: Orice functie sau operator de forma Operator(A1,A2,A3…)
4: + si – ca operatori de semn
5: ^, sqrt si !
6: div si mod
7: * si /
8: + si – ca operatii de inmultire sau de scadere
9: =, <=, >=, <>, > si <
10: Atribuirea :=
11: and, or, xor si not
12: Operatorul de sfarsit de formula ;

Operatorii sunt sensibili la formatul majuscule – minuscule.

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: