Sunteți pe pagina 1din 87

Tema nr.

II Programarea anvasat pe calculator


2/87

1. Problema nr.1
Iniiere n Fotran 90. Crearea unui program Fortran simplu, de tip Hello World, n limbajul Fortran,
sub Microsoft Visual Studio
1. Paii urmai n rezolvarea problemei:
- Se d dublu click pe iconia mediului de programare:

Fig.1.1 Iconia MVS 08

- Se obine pagina de start:

Fig.1.2 Fereastra iniial a MSV 08

Se selecteaz meniurile: File > New > Project


Fig.1.3 Deschiderea unui nou proiect

Tema nr. II Programarea anvasat pe calculator
3/87


i se obine fereastra New Project

Fig.1.4 Fereastra New Project

n fereastra New Project se selecteaz, mai nti, din subfereastra din stnga sus
(Project types) tipul Intel Fortran, subtipul Console Application. Apoi se alege Main
Program Code din subfereastra din dreapta sus (Templates). Se d un nume proiectului Fortran,
de exemplu salut n partea de jos a ferestrei , n dreptul rubricii Name.


Fig.1.5 Operaiile efectuate n fereastra New project

n mod automat, se genereaz un program de tip Hello World!

Se introduce numele dorit
Se alege locul unde se va salva programul
Tema nr. II Programarea anvasat pe calculator
4/87


Fig.1.6 Fereastra de lucru a compilatorului MSV 08

Deoarece sunt introduse unele comentarii (liniile ce ncep cu caracterul !) se vor
terge acestea, iar mesajul se poate nlocui, de exemplu cu mesajul Bun ziua!. A se nota c s-a
adugat i instruciunea read * care are drept scop reinerea ferestrei de tip consol pn la
apsarea tastei Enter.


Fig.1.7 Corpul programului hello


Apoi, pentru compilare, linkeditare i rularea programului se apas pe butonul
triunghiular (Start Debugging) de lng butonul list Debug.

Fig.1.8 Butonul de rulare a programului
Tema nr. II Programarea anvasat pe calculator
5/87

Apare un dialog anunnd faptul c proiectul nu este adus la zi i, ca urmare, se cere
permisiunea re/crerii formei sale executabile. Se selecteaz Yes.

Fig.1.9 Fereastra pentru alegerea construirii fiierului Debug

Programul este compilat, linkeditat i rulat. Rezultatul este o fereastr de tip aplicaie
(cu scriere alb pe negru) n care apare mesajul prevzut prin program (Bun ziua!).


Fig.1.10 Fereastra cu rezultatele n urma rulrii programului



Tema nr. II Programarea anvasat pe calculator
6/87

2. Problema nr. 2 (Varianta I)
Calculul ariei unui triunghi folosind formula lui Heron
1.Enunul problemei
Cunoscnd laturile unui triunghi s se
calculeze aria acestuia folosind formula lui Heron.
2.Anliza problemei
Date de intrare:a,b,c (reprezint laturile
triunghiului).
Date de ieire:p semiperimetrul,S aria
triunghiului.
Metoda de rezolvare:
( ) ( ) ( )
Formula lui Heron
unde:


p = semiperimetrul triunghiului
3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
program ariet1

implicit none
! calculul ariei unui triunghi cu formula lui Heron
real a,b,c,p,s

! instructiuni executabile
write(*,*)
write(*,*)'============================================================'
write(*,*)'CALCULUL ARIEI UNUI TRIUNGHI'
write(*,*)'============================================================'

! citire date de intrare a,b,c (laturile triunghiului)
write(*,*) 'a='
read(*,*)a

write(*,*) 'b='
read(*,*)b

write(*,*) 'c='
read(*,*)c

! calculul semiperimetrului
p=(a+b+c)/2.
write (*,*)'semi=perimetrul triunghiului este p=',p
s= sqrt(p*(p-a)*(p-b)*(p-c))
write(*,*)
b
a
c
S=aria
c
Tema nr. II Programarea anvasat pe calculator
7/87

write(*,*)'============================================================'
write (*,*)'ARIA TRIUNGHIULUI ESTE: s=',s
write(*,*)'============================================================'

! finalizare program
print *, 'sfarsitul programului'
read *
end program ariet1
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.2.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezintun set de date de intrare pentru rezolvarea problemei:
a=6,b=8,c=10

Fig.2.2 Rezultatul problemei
Tema nr. II Programarea anvasat pe calculator
8/87


5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare laturile triunghiului.
Utiliznd formula lui Heron i compilatorul MSV 08 sa reuit interpretarea problemei.
Rezultatele afiate demonstreaz corectitudinea rezolvrii.
Programul executabil (ariet1.exe) poate fi folosit de ctre orice utilizator,sub
sistemele de operare Windows ( nu e necesar ca utilizatorul s dein un limbaj de progrmare).
Pentru ca programul s ruleze corect, valorile introduse trebuie s fie laturile unui
triunghi.
3. Problema nr. 2 (Varianta II)
Calculul ariei unui triunghi folosind formula lui Heron
1.Enunul problemei
Cunoscnd laturile unui triunghi s se
calculeze aria acestuia folosind formula lui Heron. Varianta
cu introducerea datelor folosind un format.
2.Anliza problemei
Date de intrare:a,b,c (reprezint laturile
triunghiului).
Date de ieire: p semiperimetrul, S aria
triunghiului.
Metoda de rezolvare:
( ) ( ) ( )
Formula lui Heron
unde:


p = semiperimetrul triunghiului
3.Programarea problemei
Vom folosi un format de afiare a valorilor citite. Valorile vor fi afiate pe aceeai
linie cu denumirea lor.
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program arietr2

!Masterand Ciobanu Andrei-Florin
implicit none
! calculul ariei unui triunghi cu formula lui Heron
! varianta cu introducerea datelor folosind un format
real a,b,c,p,s

! instructiuni executabile
write(*,*)
b
a
c
S=aria
c
Tema nr. II Programarea anvasat pe calculator
9/87

write(*,*)'============================================================'
write(*,*)'CALCULUL ARIEI UNUI TRIUNGHI'
write(*,*)'============================================================'

! citire date de intrare a,b,c (laturile triunghiului)
write(*,1)
1 format('a=',$)
read(*,*)a


write(*,2)
2 format('b=',$)
read(*,*)b


write(*,3)
3 format('c=',$)
read(*,*)c

! calculul semiperimetrului
p=(a+b+c)/2.
write (*,*)'semi=perimetrul triunghiului este p=',p
s= sqrt(p*(p-a)*(p-b)*(p-c))
write(*,*)
write(*,*)'============================================================'
write (*,*)'ARIA TRIUNGHIULUI ESTE: s=',s
write(*,*)'============================================================'

! finalizare program
print *, 'sfarsitul programului'

read *

end program arietr2
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.3.1 Fereastra de lucru a compilatorului MSV 08


Tema nr. II Programarea anvasat pe calculator
10/87

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:
a=6,b=3,c=5

Fig.3.2 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare laturile triunghiului.
Utiliznd formula lui Heron i compilatorul MSV 08 sa reuit interpretarea problemei.
Rezultatele afiate demonstreaz corectitudinea rezolvrii.
Putem observa c utiliznd formatul impus de noi valorile datelor se introduc pe
aceeai linie cu denumirea acestora. n formatul inplicit valorile datelor erau introduse pe o alt linie
fa de denumirea lor.
Pentru ca programul s ruleze corect, valorile introduse trebuie s fie laturile unui
triunghi.

4. PROBLEMA NR. 2. (Varianta III)
Calculul ariei unui triunghi folosind formula lui Heron
1.Enunul problemei
Cunoscnd laturile unui triunghi s se calculeze
aria acestuia cu formula lui Heron.Varianta cu folosirea
instruciunii if structurat.
2.Anliza problemei
Date de intrare:a,b,c (reprezint laturile
triunghiului);
Date de ieire:p semiperimetrul,S aria triunghiului;
Metoda de rezolvare:
( ) ( ) ( )
b
a
c
S=aria
c
Tema nr. II Programarea anvasat pe calculator
11/87

Formula lui Heron
unde:


p = semiperimetrul triunghiului
3.Programarea problemei
Acest program folosete o instruciune condiional (if) varianta structurat n care se
pun condiii legate de datele de intrare i anume:
- valorile laturilor sa fie pozitive;
- suma a doua laturi s fie mai mare dect cea de-a treia latura.
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.
program arietr3

!Masterand Ciobanu Andrei-Florin
implicit none
! calculul ariei unui triunghi cu formula lui Heron
! varianta cu introducerea datelor folosind un format
! varianta cu folosirea instructiunii if structurat
real a,b,c,p,s

! instructiuni executabile
write(*,*)
write(*,*)'============================================================'
write(*,*)'CALCULUL ARIEI UNUI TRIUNGHI'
write(*,*)'============================================================'

! citire date de intrare a,b,c (laturile triunghiului)
write(*,1)
1 format('a=',$)
read(*,*)a

write(*,2)
2 format('b=',$)
read(*,*)b

write(*,3)
3 format('c=',$)
read(*,*)c

!conditii asupra datelor de intrare
if(a>0 .and. b>0 .and. c>0 .and. a+b>c .and. b+c>a .and. c+a>b) then
write(*,*)'ramura de adevar'
p=(a+b+c)/2.
write(*,*)'============================================================'
write (*,*)'semi=perimetrul triunghiului este p=',p
write(*,*)'============================================================'
s= sqrt(p*(p-a)*(p-b)*(p-c))
write(*,*)
write(*,*)'============================================================'
write (*,*)'ARIA TRIUNGHIULUI ESTE: s=',s
write(*,*)'============================================================'
else
write(*,*)'ramura de fals'
write(*,*)'----------------------------------------------------------'
write (*,*)'a,b,c nu sunt laturile unui triunghi'
Tema nr. II Programarea anvasat pe calculator
12/87

write(*,*)'------------------------------------------------------------'
endif


! finalizare program
print *, 'sfarsitul programului'

read *
end program arietr3

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.4.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint mai multe seturi de date,pentru rezolvarea problemei:
a=6,b=8,c=10
Tema nr. II Programarea anvasat pe calculator
13/87

Fig.4.2 Rezultatul problemei

a=-3, b=8, c=9

Fig.4.3 Rezultatul problemei

a=10, b=100, c=2
Tema nr. II Programarea anvasat pe calculator
14/87


Fig.4.4 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare laturile triunghiului.
Utiliznd formula lui Heron i compilatorul MSV 08 sa reuit interpretarea problemei.
Utiliznd instruciunea if structurat am reuit s afim, atunci cnd datele erau
eronate, mesaje de eroare.

5. Problema nr. 2 (Varianta IV)
Calculul ariei unui triunghi folosind formula lui Heron
1.Enunul problemei
Cunoscnd laturile unui triunghi s se calculeze
aria acestuia cu formula lui Heron. Varianta cu
reintroducerea datelor de intrare n caz de eroare.
2.Anliza problemei
Date de intrare: a,b,c
(reprezintlaturiletriunghiului);
Date de ieire:p semiperimetrul,S aria triunghiului;
Metoda de rezolvare:
( ) ( ) ( )
Formula lui Heron
unde:


b
a
c
S=aria
c
Tema nr. II Programarea anvasat pe calculator
15/87

p = semiperimetrul triunghiului
3.Programarea problemei
Am folosit instruciunea repetitiv go to pentru reluarea introducerii datelor n caz de
eroare.
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
program arietr4

implicit none
! calculul ariei unui triunghi cu formula lui Heron
! varianta cu introducerea datelor folosind un format
! varianta cu intoarcere la citirea datelor in caz de eroare
! Varianta cu reintroducerea datelor in caz de eroare
real a,b,c,p,s

! instructiuni executabile
write(*,*)
write(*,*)'============================================================'
write(*,*)'CALCULUL ARIEI UNUI TRIUNGHI'
write(*,*)'============================================================'

! citire date de intrare a,b,c (laturile triunghiului)
10 write(*,1)
1 format('a=',$)
read(*,*)a

write(*,2)
2 format('b=',$)
read(*,*)b

write(*,3)
3 format('c=',$)
read(*,*)c

!conditii asupra datelor de intrare
if(a>0 .and. b>0 .and. c>0 .and. a+b>c .and. b+c>a .and. c+a>b) then
write(*,*)'ramura de adevar'
p=(a+b+c)/2.
write(*,*)'============================================================'
write (*,*)'semi=perimetrul triunghiului este p=',p
write(*,*)'============================================================'
s= sqrt(p*(p-a)*(p-b)*(p-c))
write(*,*)
write(*,*)'============================================================'
write (*,*)'ARIA TRIUNGHIULUI ESTE: s=',s
write(*,*)'============================================================'
else
write(*,*)'ramura de fals'
write(*,*)'----------------------------------------------------------'
write (*,*)'a,b,c nu sunt laturile unui triunghi'
write(*,*)'------------------------------------------------------------'
write(*,*)'reluati introducerea datelor'
go to 10
endif
! finalizare program
print *, 'sfarsitul programului'

read *

Tema nr. II Programarea anvasat pe calculator
16/87

end program arietr4



Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.5.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date, pentru rezolvarea problemei:
a=9,b=6,c=2, se reia introducerea datelor pn cnd se va introduce un set de date corect.

Fig.5.2 Rezultatul problemei


Tema nr. II Programarea anvasat pe calculator
17/87


5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare laturile triunghiului.
Utiliznd formula lui Heron i compilatorul MSV 08 sa reuit interpretarea problemei.
Programul va relua introducerea datelor, n caz c datele introduse sunt eronate, pn
acesta va introduce un set de date corect.

6. Problema nr. 2 (Varianta V)
Calculul ariei unui triunghi folosind formula lui Heron
1.Enunul problemei
Cunoscnd laturile unui triunghi s se
calculeze aria acestuia cu formula lui Heron. Varianta cu
reintroducerea datelor de intrare n caz de eroare.
2.Anliza problemei
Date de intrare: a,b,c (reprezint laturile
triunghiului);
Date de ieire:p semiperimetrul,S aria
Metoda de rezolvare:
( ) ( ) ( )
Formula lui Heron
unde:


p = semiperimetrul triunghiului
3.Programarea problemei
Cu ajutorul instruciunii if logic, punnd condiia: dac rspunsul este da s se reia
introducerea datelor, se pote reintroduce un nou set de date la cererea utilizatorului.
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program arietr5

!Masterand Ciobanu Andrei-Florin
implicit none
! calculul ariei unui triunghi cu formula lui Heron
! varianta cu introducerea datelor folosind un format
! varianta cu intoarcere la citirea datelor in caz de eroare
! varianta cu intoarcere pentru un nou calcul la solicitarea utilizatorului
real a,b,c,p,s
character*8 rasp
! instructiuni executabile
100 write(*,*)
b
a
c
S=aria
c
Tema nr. II Programarea anvasat pe calculator
18/87

write(*,*)'============================================================'
write(*,*)'CALCULUL ARIEI UNUI TRIUNGHI'
write(*,*)'============================================================'

! citire date de intrare a,b,c (laturile triunghiului)
10 write(*,1)
1 format('a=',$)
read(*,*)a

write(*,2)
2 format('b=',$)
read(*,*)b

write(*,3)
3 format('c=',$)
read(*,*)c

!conditii asupra datelor de intrare
if(a>0 .and. b>0 .and. c>0 .and. a+b>c .and. b+c>a .and. c+a>b) then
write(*,*)'ramura de adevar'
p=(a+b+c)/2.
write(*,*)'============================================================'
write (*,*)'semi=perimetrul triunghiului este p=',p
write(*,*)'============================================================'
s= sqrt(p*(p-a)*(p-b)*(p-c))
write(*,*)
write(*,*)'============================================================'
write (*,*)'ARIA TRIUNGHIULUI ESTE: s=',s
write(*,*)'============================================================'
else
write(*,*)'ramura de fals'
write(*,*)'----------------------------------------------------------'
write (*,*)'a,b,c nu sunt laturile unui triunghi'
write(*,*)'------------------------------------------------------------'
write(*,*)'reluati introducerea datelor'
go to 10
endif
!afisarea intrebarii
write(*,20)
20 format('dortiti un nou calcul de arie?(da/*) ',$)
!citire raspuns
read(*,*) rasp
! prelucrarea raspunsului
! if logic
if (rasp =='da') go to 100


! finalizare program
11 print *, 'sfarsitul programului'

read *
end program arietr5
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Tema nr. II Programarea anvasat pe calculator
19/87

Fig.6.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date, pentru rezolvarea problemei:
a=3,b=3,c=3, se reia introducerea datelor doar la solicitarea utilizatorului..

Fig.6.2 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare laturile triunghiului.
Utiliznd formula lui Heron i compilatorul MSV 08 sa reuit interpretarea problemei.
Programul va relua introducerea datelor doar la solicitarea utilizatorului.

Tema nr. II Programarea anvasat pe calculator
20/87

7. Problema nr. 3 (Varianta I)
Compararea unui numr real a cu valoarea lui .
1.Enunul problemei
Cunoscnd valoarea lui a s se compare cu valoarea lui . Varianta n care se utilizeaz
instruciunea if aritmetic.
2.Anliza problemei
Date de intrare: a - de tip real; de tip real (=3,1415926535)
Date de ieire: un mesaj prin care s se arate dac a este mai mic, mai mare sau egal
cu .
Metoda de rezolvare: scdem valoarea lui a din valoarea lui i rezultatul este
comparat cu 0:
dac rezultatul este > 0 rezult a>;
dac rezultatul este = 0 rezult a=;
dac rezultatul este < 0 rezult a<.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
! Masterand Ciobanu Andrei-Florin
program lectiaIII
! Comparatie a unui nr. dat cu pi

! declaratii de tip

implicit none
! citire numar a
real a,pi

! initializari
pi= 3.14159

write(*,*) 'a='
read(*,*), a
write(*,*)'s-a citit a=',a
! comparare a lui a cu pi si afisare rezultat
if (a-pi) 1,2,3
1 write (*,*)'a este mai mic decat pi'
go to 10
2 write (*,*)'a este egal pi'
go to 10
3 write (*,*)'a este mai mare decat pi'
go to 10

! final

10 print *, 'Sfarsitul programului'
read *

end program lectiaIII
Tema nr. II Programarea anvasat pe calculator
21/87

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.7.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:
a=5

Fig.7.2 Rezultatul problemei

a=2
Tema nr. II Programarea anvasat pe calculator
22/87


Fig.7.3 Rezultatul problemei

a=3,14159

Fig.7.4 Rezultatul problemei


5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare a i
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui a, programul compara valoarea lui a cu valoarea lui i
se afieaz un mesaj funcie de rezultatul comparaiei.
Tema nr. II Programarea anvasat pe calculator
23/87

8. Problema nr. 3 (Varianta II)
Compararea unui numr real a cu valoarea lui .
1.Enunul problemei
Cunoscnd valoarea lui a s se compare cu valoarea lui . Varianta n care se utilizeaz
instruciunea if logic.
2.Anliza problemei
Date de intrare: a - de tip real; de tip real (=3,1415926535)
Date de ieire: un mesaj prin care s se arate dac a este mai mic, mai mare sau egal
cu .
Metoda de rezolvare: se pune condiia a> s se afieze mesajul a este mai mare ca
, se pune condiia dac a= s se afieze mesajul a este egal cu , dac nici una din aceste dou
condiii nu sunt ndeplinite se va afia mesajul a este mai mic dect .
3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program lectieIIIiflogic
! masterand Ciobanu Andrei Florin
! Comparatie a unui nr. dat cu pi

! declaratii de tip

implicit none
! citire numar a
real a,pi

! initializari
pi= 3.14159

write(*,*) 'a='
read(*,*), a
write(*,*)'s-a citit a=',a
! comparare a lui a cu pi si afisare rezultat
!initializare if logic
if (a>pi) go to 3
if(a==pi) go to 2
!a<pi
write (*,*)'a este mai mic decat pi'
go to 10
!a==pi
2 write (*,*)'a este egal pi'
go to 10
!a>pi
3 write (*,*)'a este mai mare decat pi'
go to 10

! final

10 print *, 'Sfarsitul programului'
read *
end program lectieIIIiflogic
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Tema nr. II Programarea anvasat pe calculator
24/87

Fig.8.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:
a=4

Fig.8.2 Rezultatul problemei

a=3
Tema nr. II Programarea anvasat pe calculator
25/87


Fig.8.3 Rezultatul problemei

a=3,14159

Fig.8.4 Rezultatul problemei


5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare a i
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui a, programul compara valoarea lui a cu valoarea lui i se
afieaz un mesaj funcie de rezultatul comparaiei.
Tema nr. II Programarea anvasat pe calculator
26/87

9. Problema nr. 3 (Varianta III)
Compararea unui numr real a cu valoarea lui .
1.Enunul problemei
Cunoscnd valoarea lui a s se compare cu valoarea lui . Varianta n care se utilizeaz
instruciunea if structurat.
2.Anliza problemei
Date de intrare: a - de tip real; de tip real (=3,1415926535)
Date de ieire: un mesaj prin care s se arate dac a este mai mic, mai mare sau egal
cu .
Metoda de rezolvare: se pune condiia a>, dac condiia este ndeplinit atunci se
merge pe ramura de adevr i se afieaz mesajul a este mai mare ca , dac condiia nu este
ndeplinit atunci se merge pe ramura de fals unde se pune o noua condiie a=, dac condiia este
adevrat se merge pe ramura de adevr i se afieaz mesajul a este egal cu , dac condiia nu
este ndeplinit atunci se merge pe ramura de fals unde se afieaz mesajul a este mai mic ca .

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program lectiaIIIifstructurat
! masterand Ciobanu Andrei Florin
!varianta cu instructiunea if structurat
! Comparatie a unui nr. dat cu pi

! declaratii de tip

implicit none
! citire numar a
real a,pi

! initializari
pi= 3.14159

write(*,*) 'a='
read(*,*), a
write(*,*)'s-a citit a=',a
! comparare a lui a cu pi si afisare rezultat
! initializare if structurat simplu
if (a>pi) then
!a>pi
write (*,*)'a este mai mare decat pi'
go to 10
else
if(a==pi) then
!a==pi
write (*,*)'a este egal pi'
go to 10
else
!a<pi
write (*,*)'a este mai mic decat pi'
go to 10
endif
endif
Tema nr. II Programarea anvasat pe calculator
27/87

!a>pi
! final
10 print *, 'Sfarsitul programului'
read *
end program lectiaIIIifstructurat
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.9.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:
a=4

Fig.9.2 Rezultatul problemei

Tema nr. II Programarea anvasat pe calculator
28/87

a=3

Fig.9.3 Rezultatul problemei

a=3,14159

Fig.9.4 Rezultatul problemei


5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare a i
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui a, programul compara valoarea lui a cu valoarea lui i se
afieaz un mesaj funcie de rezultatul comparaiei.
Tema nr. II Programarea anvasat pe calculator
29/87

10. Problema nr. 3 (Varianta IV)
Compararea unui numr real a cu valoarea lui .
1.Enunul problemei
Cunoscnd valoarea lui a s se compare cu valoarea lui . Varianta n care se utilizeaz
instruciunea if n cascad.
2.Anliza problemei
Date de intrare: a - de tip real; de tip real (=3,1415926535)
Date de ieire: un mesaj prin care s se arate dac a este mai mic, mai mare sau egal
cu .
Metoda de rezolvare: n aceast variant condiiile sunt puse n cascad , se pune
condiia a>, dac e adevrat se afieaz mesajul a este mai mare ca , dac nu se pune
urmtoarea condiie a=, care se leag de program cu cuvntul elseif, dac aceasta este
corect atunci se afieaz mesajul a este egal cu , dac nu se afieaz mesajul a este mai
mic dect .
3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program LectieIIIifcascada
! masterand Ciobanu Andei Florin
! Comparatie a unui nr. dat cu pi
! varianta cu instructiunea if cascada
! declaratii de tip

implicit none
! citire numar a
real a,pi

! initializari
pi= 3.14159

write(*,*)
write(*,*)'============================================================'
write(*,*)'COMPARATIA UNUI NUMAR CU PI'
write(*,*)'============================================================'

write(*,*) 'a='
read(*,*), a
write(*,*)'s-a citit a=',a
! comparare a lui a cu pi si afisare rezultat
! initializare if structurat simplu
if (a>pi) then
!a>pi
write(*,*)
write(*,*)'============================================================'
write(*,*)'A ESTE MAI MARE CA PI'
write(*,*)'============================================================'
go to 10
elseif(a==pi) then
!a==pi
write(*,*)
write(*,*)'============================================================'
write(*,*)'A ESTE EGAL CU PI'
Tema nr. II Programarea anvasat pe calculator
30/87

write(*,*)'============================================================'
go to 10
else
!a<pi
write(*,*)
write(*,*)'============================================================'
write(*,*)'A ESTE MAI MIC CA PI'
write(*,*)'============================================================'
go to 10

endif

! final

10 print *, 'Sfarsitul programului'
read *
end program LectieIIIifcascada
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.10.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:









Tema nr. II Programarea anvasat pe calculator
31/87

a=4

Fig.10.2 Rezultatul problemei

a=3

Fig.10.3 Rezultatul problemei






Tema nr. II Programarea anvasat pe calculator
32/87

a=3,14159

Fig.10.4 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare a i
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui a, programul compara valoarea lui a cu valoarea lui i se
afieaz un mesaj funcie de rezultatul comparaiei.
11. Problema nr. 4 (Varianta I)
Calcularea sumei primelor n numere naturale.
1.Enunul problemei
S se calculeze suma primelor n numere naturale. Varianta n care se utilizeaz
instruciunea if logic.
s = 1+2+3+...........+n
2.Anliza problemei
Date de intrare: n - de tip ntreg.
Date de ieire: s - de tip ntreg, suma primelor n numere naturale.
Metoda de rezolvare: se iniializeaz suma s i contorul i, suma s primete valoarea
s= valoarea anterioar a sumei plus contorul i i contorul i se mareste cu o unitate(i=i+1). Cu
ajutorul instruciuni if logic repetm operaiile de calcul pn cnd contorul i ajunge s fie egal cu
numul n dat de utilizator. Atunci cnd condiia este ndeplinut se va afia valoarea final a sumei.


Tema nr. II Programarea anvasat pe calculator
33/87

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
! masterand Ciobanu Andrei Florin

program suma1
! calculul sumelor primelor n numere naturale
! folosirea instructiuni de tip if
implicit none
! declaratii de tip
!afisare titlu program
integer n,i,s

! citire date de intrare
write(*,1)
1 format('n=',$)
read(*,*)n
! procesarea datelor de intrare (n>0)
!initializari
s=0
!initializarea contorului i
i=1
! operatie curenta
10 s=s+i
!implementarea contorului
i=i+1
!comparatia contorului cu valoarea sa finala
! if logic
if (i<=n) go to 10
! afisare rezultat
write(*,*)'suma primelor ',n,' numere naturale este:',s

! finalizare program
print *, 'sfarsitul programului'

read *
end program suma1
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Tema nr. II Programarea anvasat pe calculator
34/87

Fig.11.1 Fereastra de lucru a compilatorului MSV 08
4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:
n=6

Fig.11.2 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare n.
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui n, programul calculeaz suma primelor n numere naturale.

Tema nr. II Programarea anvasat pe calculator
35/87

12. Problema nr. 4 (Varianta II)
Calcularea sumei primelor n numere naturale.
1.Enunul problemei
S se calculeze suma primelor n numere naturale. Varianta n care se utilizeaz
instruciunea do.
s = 1+2+3+...........+n
2.Anliza problemei
Date de intrare: n - de tip ntreg.
Date de ieire: s - de tip ntreg, suma primelor n numere naturale.
Metoda de rezolvare: se iniializez suma s (s=0), cu ajutorul instruciunii do se
calculez suma s ct timp i ia valori de la 1 pn la n.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
! masterand Ciobanu Andrei Florin

! masterand Ciobanu Andrei Florin

program suma2
! calculul sumelor primelor n numere naturale

implicit none
! declaratii de tip
!afisare titlu program
integer n,i,s

! citire date de intrare
write(*,1)
1 format('n=',$)
read(*,*)n
! procesarea datelor de intrare (n>0)

!initializari
s=0
!initializarea contorului i

! folosirea instructiune do

do i=1,n
s=s+i
enddo
! afisare rezultat
write(*,*)'suma primelor ',n,' numere naturale este:',s

! finalizare program
print *, 'sfarsitul programului'

read *
end program suma2

Tema nr. II Programarea anvasat pe calculator
36/87

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.12.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:
n=8

Fig.12.2 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare n.
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui n, programul calculeaz suma primelor n numere naturale.
Tema nr. II Programarea anvasat pe calculator
37/87

13. Problema nr. 4 (Varianta III)
Calcularea sumei primelor n numere naturale.
1.Enunul problemei
S se calculeze suma primelor n numere naturale. Varianta n care se utilizeaz
instruciunea do while.
s = 1+2+3+...........+n
2.Anliza problemei
Date de intrare: n - de tip ntreg.
Date de ieire: s - de tip ntreg, suma primelor n numere naturale.
Metoda de rezolvare: se iniializez suma s (s=0) i contorul i (i=1), folosind
instruciunea do while programul calculeaz suma s i contorul i primeste valoarea i+1 att timp cat
i este mai mic sau egal cu n.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
! masterand Ciobanu Andrei Florin
program suma3

! calculul sumelor primelor n numere naturale
! folosirea instructiuni de tip do while
implicit none
! declaratii de tip
!afisare titlu program
integer n,i,s

! citire date de intrare
write(*,1)
1 format('n=',$)
read(*,*)n
! procesarea datelor de intrare (n>0)
!initializari
s=0
!initializarea contorului i
i=1
! operatie curenta

! folosirea instructiune do

do while (i<=n)
s=s+i
i=i+1
enddo
! afisare rezultat
write(*,*)'suma primelor ',n,' numere naturale este:',s

! finalizare program
print *, 'sfarsitul programului'

read *
end program suma3
Tema nr. II Programarea anvasat pe calculator
38/87

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.13.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:
n=7

Fig.13.2 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare n.
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui n, programul calculeaz suma primelor n numere naturale.

Tema nr. II Programarea anvasat pe calculator
39/87

14. Problema nr. 5 (Varianta I)
Calculul lui sin(x) prin descompunere n serie.
1.Enunul problemei
S se calculeze valoarea sin(x), . Varianta cu numr cunoscut de pai.
Se folosete relaia:

()

( )

2.Analiza problemei
Date de intrare: x argumentul funciei sinus; n numrul de termeni luai n
considerare
Date de ieire: sin(x) -> notaie vfcs.
Modelarea problemei: se iniializeaz valoarea funciei sinus cu termenul iniial al seriei
vfcs=tc, termenul iniial al seriei fiind tc=x. Cu ajutorul instruciunii do se calculeaz valoarea
funciei sinus atat timp ct contorul k ia valori de la 2 pn la n. Termenul curent se obine
nmulind termenul anterior cu

()

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
program fcsin1
! calculul valorii sin(x) prin descompunere in serie
! varianta cu numar finit si cunoscut de termeni
implicit none
real x,vfcs,tc
! x este argumentul functiei sin
! vfcs este valoarea functiei sin
! tc este termenul curent

integer n,k
! n este nr. de termeni considerati
! k este ordinul curent al termenilor

! afisarea inceput program
write(*,*)
write (*,*)'autor masterand Ciobanu Andrei Florin'
write(*,*)'============================================================'
write(*,*)'CALCULUL LUI SIN(X) PRIN DESCOMPUNERE IN SERIE'
write(*,*)'============================================================'

! introducerea datelor de intrare
write(*,1)
1 format('argumentul functiei sinus, x=',$)
read (*,*)x
write(*,2)
2 format('numarul de termeni din serie, n=',$)
read (*,*)n
! calculul argumentului modulo 2*pi
x= modulo(x,2.*3.141593)

! initializari
Tema nr. II Programarea anvasat pe calculator
40/87

tc=x ! primul termen al seriei
vfcs=tc ! valoarea initiala a functiei sinus
do k=2,n
write(*,*) 'k=',k
! calculul termenului curent
tc=-tc*x**2/(2*k-2)/(2*k-1)
! actualizarea valorii fc. sinus
vfcs=vfcs+tc
write(*,*) 'tc=',tc, 'sin(x)=',vfcs
enddo
write(*,*)'============================================================'
write (*,*)'sin(',x,')=',vfcs
write (*,*)'conform functiei din calculator =',sin(x)
write(*,*)'============================================================'
print *, 'sfarsitul programului'
read *
end program fcsin1
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.14.1 Fereastra de lucru a compilatorului MSV 08
4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

x=10, n=13
Tema nr. II Programarea anvasat pe calculator
41/87


Fig.14.2 Rezultatul problemei
5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare x argumentul funciei sinus
i n numrul de pai
Rezultatele obinute au validat programul realizat, observndu-se c, dup un anumit
numr de pai, valoarea termenilor din serie devine practic zero. De aceea, varianta cu o valoare
impus maxim pentru ultimul termen adunat este mult mai eficient.
15. Problema nr. 5 (Varianta II)
Calculul lui sin(x) prin descompunere n serie.
1.Enunul problemei
S se calculeze valoarea sin(x), . Varianta cu numr necunoscut de pai.
Se folosete relaia:

()

( )

2.Analiza problemei
Date de intrare: x argumentul funciei sinus; epsilon valoarea maxim a ultimului
termen, sub aceast valoare termenii nu se mai nsumeaz.
Date de ieire: sin(x) -> notaie vfcs.
Modelarea problemei: se iniializeaz contorul k = 1 i valoarea funciei sinus cu
termenul iniial al seriei vfcs=tc, termenul iniial al seriei fiind tc=x. Cu ajutorul instruciunii do
Tema nr. II Programarea anvasat pe calculator
42/87

while se calculeaz valoarea funciei sinus att timp ct valoarea absolut a termenului curent este
mai mic dect valoarea absolut a lui epsilon . Termenul curent se obine nmulind termenul
anterior cu

()

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
program fcsin2
! calculul valorii sin(x) prin descompunere in serie
! varianta cu numar finit si nr necunoscut de termeni
! se impune o precizie epsilon
implicit none
real x,vfcs,tc,epsilon
! epsilon este valoare sub care nu se mai insumeaza termeni
! x este argumentul functiei sin
! vfcs este valoarea functiei sin
! tc este termenul curent
integer k
! k este ordinul curent al termenilor
! afisarea inceput program
write(*,*)
write (*,*)'autor masterand Ciobanu Andrei Florin'
write(*,*)'============================================================'
write(*,*)'CALCULUL LUI SIN(X) PRIN DESCOMPUNERE IN SERIE'
write(*,*)'============================================================'

! introducerea datelor de intrare
write(*,1)
1 format('argumentul functiei sinus, x=',$)
read (*,*)x
write(*,2)
2 format('precizia epsilon, epsilon=',$)
read (*,*)epsilon
! calculul argumentului modulo 2*pi
x= modulo(x,2.*3.141593)

! initializari
tc=x ! primul termen al seriei
vfcs=tc ! valoarea initiala a functiei sinus
k=1
do while (abs(tc)>abs(epsilon))
! implementare ordin
k=k+1
! calculul termenului curent
tc=-tc*x/(2.*k-2.)*x/(2.*k-1.)
! actualizarea valorii fc. sinus
vfcs=vfcs+tc
write(*,*)'k=',k, 'tc=',tc, 'sin(x)=',vfcs
enddo
write(*,*)'============================================================'
write (*,*)'sin(',x,')=',vfcs
write (*,*)'conform functiei din calculator =',sin(x)
write(*,*)'============================================================'
print *, 'sfarsitul programului'
read *
end program fcsin2
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Tema nr. II Programarea anvasat pe calculator
43/87



Fig.15.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

x=10, epsilon=1^-10

Fig.15.2 Rezultatul problemei
Tema nr. II Programarea anvasat pe calculator
44/87

5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare x argumentul funciei sinus
i epsilon valoarea sub care termenii nu se mai adun
Rezultatele obinute au validat programul realizat, observndu-se c, numrul de pai
este funcie de precizia epsilon.

16. Problema nr. 5 (Varianta III)
Calculul lui sin(x) prin descompunere n serie.
1.Enunul problemei
S se calculeze valoarea sin(x), . Varianta cu numr cunoscut de pai, cu dubl
precizie.
Se folosete relaia:

()

( )


2.Analiza problemei
Date de intrare: x argumentul funciei sinus; n numrul de termeni luai n
considerare
Date de ieire: sin(x) -> notaie vfcs.
Modelarea problemei: toate valorile utilizate n program vor fi date cu dubl precizie. Se
iniializeaz valoarea funciei sinus cu termenul iniial al seriei vfcs=tc, termenul iniial al seriei
fiind tc=x. Cu ajutorul instruciunii do se calculeaz valoarea funciei sinus atat timp ct contorul k
ia valori de la 2 pn la n. Termenul curent se obine nmulind termenul anterior cu

()

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
program fcs3

! calculul valorii sin(x) prin descompunere in serie
! varianta cu numar finit si cunoscut de termeni
! cxalculul in dubla precizie
implicit none
real*8 x,vfcs,tc
! double precision x,vfcs,tc
! x este argumentul functiei sin
! vfcs este valoarea functiei sin
! tc este termenul curent
integer n,k
! n este nr. de termeni considerati
! k este ordinul curent al termenilor
! afisarea inceput program
write(*,*)
write (*,*)'autor masterand Ciobanu Andrei Florin'
Tema nr. II Programarea anvasat pe calculator
45/87

write(*,*)'============================================================'
write(*,*)'CALCULUL LUI SIN(X) PRIN DESCOMPUNERE IN SERIE'
write(*,*)'============================================================'

! introducerea datelor de intrare
write(*,1)
1 format('argumentul functiei sinus, x=',$)
read (*,*)x
write(*,2)
2 format('numarul de termeni din serie, n=',$)
read (*,*)n
! calculul argumentului modulo 2*pi
x= modulo(x,2.d0*3.141592653589793d0)

! initializari
tc=x ! primul termen al seriei
vfcs=tc ! valoarea initiala a functiei sinus
do k=2,n
write(*,*) 'k=',k
! calculul termenului curent
tc=-tc*x**2.d0/(2.d0*k-2.d0)/(2.d0*k-1.d0)
! actualizarea valorii fc. sinus
vfcs=vfcs+tc
write(*,*) 'tc=',tc, 'sin(x)=',vfcs
enddo
write(*,*)'============================================================'
write (*,*)'sin(',x,')=',vfcs
write (*,*)'conform functiei din calculator =',dsin(x)
write(*,*)'============================================================'
print *, 'sfarsitul programului'
read *
end program fcs3
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.16.1 Fereastra de lucru a compilatorului MSV 08

Tema nr. II Programarea anvasat pe calculator
46/87

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

x=10, n=13

Fig.14.2 Rezultatul problemei
5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare x argumentul funciei sinus
i n numrul de pai, putem observa c spre deosebire de varianta I aici toate valorile sunt cu
dubl precizie.
Rezultatele obinute au validat programul realizat, observndu-se c, dup un anumit
numr de pai, valoarea termenilor din serie devine practic zero. De aceea, varianta cu o valoare
impus maxim pentru ultimul termen adunat este mult mai eficient.
17. Problema nr. 5 (Varianta IV)
Calculul lui sin(x) prin descompunere n serie.
1.Enunul problemei
S se calculeze valoarea sin(x), . Varianta cu numr necunoscut de pai cu dubl
precizie.
Se folosete relaia:

()

( )


Tema nr. II Programarea anvasat pe calculator
47/87

2.Analiza problemei
Date de intrare: x argumentul funciei sinus; epsilon valoarea maxim a ultimului
termen, sub aceast valoare termenii nu se mai nsumeaz.
Date de ieire: sin(x) -> notaie vfcs.
Modelarea problemei: toate valorile utilizate n program vor fi date cu dubl precizie. Se
iniializeaz contorul k = 1 i valoarea funciei sinus cu termenul iniial al seriei vfcs=tc, termenul
iniial al seriei fiind tc=x. Cu ajutorul instruciunii do while se calculeaz valoarea funciei sinus
att timp ct valoarea absolut a termenului curent este mai mic dect valoarea absolut a lui
epsilon . Termenul curent se obine nmulind termenul anterior cu

()

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin

program fcsin4
! calculul valorii sin(x) prin descompunere in serie
! varianta cu numar finit si nr necunoscut de termeni
! se impune o precizie epsilon
implicit none
real*8 x,vfcs,tc,epsilon
! epsilon este valoare sub care nu se mai insumeaza termeni
! x este argumentul functiei sin
! vfcs este valoarea functiei sin
! tc este termenul curent

integer k
! k este ordinul curent al termenilor

! afisarea inceput program
write(*,*)
write (*,*)'autor masterand Ciobanu Andrei Florin'
write(*,*)'============================================================'
write(*,*)'CALCULUL LUI SIN(X) PRIN DESCOMPUNERE IN SERIE IN DUBLA PRECIZIE'
write(*,*)'============================================================'

! introducerea datelor de intrare
write(*,1)
1 format('argumentul functiei sinus, x=',$)
read (*,*)x
write(*,2)
2 format('precizia epsilon, epsilon=',$)
read (*,*)epsilon
! calculul argumentului modulo 2*pi
x= modulo(x,2.d0*3.141592653589793d0)

! initializari
tc=x ! primul termen al seriei
vfcs=tc ! valoarea initiala a functiei sinus
k=1.d0
do while (dabs(tc)>dabs(epsilon))
! implementare ordin
k=k+1
! calculul termenului curent
tc=-tc*x/(2.d0*k-2.d0)*x/(2.d0*k-1.d0)
! actualizarea valorii fc. sinus
vfcs=vfcs+tc
write(*,*)'k=',k, 'tc=',tc, 'sin(x)=',vfcs
Tema nr. II Programarea anvasat pe calculator
48/87

enddo
write(*,*)'============================================================'
write (*,*)'sin(',x,')=',vfcs
write (*,*)'conform functiei din calculator =',dsin(x)
write(*,*)'============================================================'
print *, 'sfarsitul programului'
read *
end program fcsin4
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.17.1 Fereastra de lucru a compilatorului MSV 08
4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

x=10, epsilon=1^-10
Tema nr. II Programarea anvasat pe calculator
49/87


Fig.17.2 Rezultatul problemei
5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare x argumentul funciei sinus
i epsilon valoarea sub care termenii nu se mai adun, putem observa c spre deosebire de
varianta II aici toate valorile sunt cu dubl precizie.
Rezultatele obinute au validat programul realizat, observndu-se c, numrul de pai
este funcie de precizia epsilon.
18. Problema nr. 6 (Varianta I)
Iniiere n lucrul cu fiiere
1.Enunul problemei
S se creeze dou fiiere, unul pentru date de intrare iar cellalt pentru date de ieire.
2.Analiza problemei
Date de intrare: a de tip caracter (80 de caractere), datele de intrare vor fi introduse n
fiierul textintrare.
Date de ieire: a de tip caracter, textul va fi citit din textintrare i afiat n textieire
.
Modelarea problemei: dup rularea programului se vor creea dou fiiere: textintrare
i textieire. n textintrare se va introduce irul a de caractere i se va rula programul. Dup
rularea programului se va afia n textieire irul a de caractere.
3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
Tema nr. II Programarea anvasat pe calculator
50/87

program lucfisI
! exemplificare a lucrului cu fisiere in Fortran
implicit none
character*80 a

open(unit=11,file='textintrare')
open(12,file='textiesire')
read(11,1)a

write(*,1)a
write(12,1)a
1 format(a80)

close(11)
close(12)
print *, 'sfarsitul programului'
read *
end program lucfisI
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.18.1 Fereastra de lucru a compilatorului MSV 08
4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:



Fig.18.3 Rezultatul problemei
Fig.18.2 Datele de intrare
Tema nr. II Programarea anvasat pe calculator
51/87


5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare un ir de caractere a, care a
fost introdus n fiierul textintrare, iar rezultatul a fost afiat n fiierul textiesire.
Rezultatele obinute au validat programul realizat.
Programul realizat citete doar prima linie din fiierul textintrare.
19. Problema nr. 6 (Varianta II)
Iniiere n lucrul cu fiiere
1.Enunul problemei
S se creeze dou fiiere, unul pentru date de intrare iar cellalt pentru date de ieire.
Varianta cu citirea ntregului fiier.
2.Analiza problemei
Date de intrare: a de tip caracter (80 de caractere), datele de intrare vor fi introduse n
fiierul textintrare.
Date de ieire: a de tip caracter, textul va fi citit din textintrare i afiat n textieire
.
Modelarea problemei: dup rularea programului se vor creea dou fiiere: textintrare
i textieire. n textintrare se va introduce irul a de caractere i se va rula programul. Dup
rularea programului se va afia n textieire irul a de caractere. Cu ajutorul instruciunii go to se
realizeaz citirea tuturor randurilor din fiier.
3.Programarea problemei
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.

!Masterand Ciobanu Andrei-Florin
program lucfisII
! exemplificare a lucrului cu fisiere in Fortran
! varianta cu citerea intregului fisier
implicit none
character*80 a

open(11,file='textintrare')
open(12,file='textiesire')
100 read(11,1,end=200)a

!write(*,1)a
write(12,1)a
1 format(a80)

go to 100

200 close(11)
close(12)
print *, 'sfarsitul programului'
read *

Tema nr. II Programarea anvasat pe calculator
52/87

end program lucfisII
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.18.1 Fereastra de lucru a compilatorului MSV 08


4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:
Fig.19.2 Date de intrare Fig.19.3 Rezultatul problemei

5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare un ir de caractere a, care a
fost introdus n fiierul textintrare, iar rezultatul a fost afiat n fiierul textiesire.
Rezultatele obinute au validat programul realizat.
Programul realizat citete doar prima linie din fiierul textintrare.

Tema nr. II Programarea anvasat pe calculator
53/87

20. Problema nr. 6 (Varianta III)
Iniiere n lucrul cu fiiere
1.Enunul problemei
S se creeze dou fiiere, unul pentru date de intrare iar cellalt pentru date de ieire.
Varianta cu preluarea numeric.
2.Analiza problemei
Date de intrare: a, b, c numere reale.
Date de ieire: a, b, c numere reale.
Modelarea problemei: dup rularea programului se vor creea dou fiiere: textintrare
i textieire. n textintrare se vor introduce numerele reale a, b, c i se va rula programul. Dup
rularea programului se va afia n textieire numerele reale a, b, c. Cu ajutorul instruciunii go to
se realizeaz citirea tuturor randurilor din fiier.
3.Programarea problemei
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.

!Masterand Ciobanu Andrei-Florin
program kucfisIII
! exemplificare a lucrului cu fisiere in Fortran
! varianta cu citerea intregului fisier
! prelucrare numerica
implicit none
real a,b,c

open(11,file='textintrare')
open(12,file='textiesire')
100 read(11,*,end=200)a,b,c
2 format(3f10.3)
!write(*,1)a
write(12,2)a,b,c
!1 format(a80)

go to 100

200 close(11)
close(12)
print *, 'sfarsitul programului'
read *

end program kucfisIII
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:

Tema nr. II Programarea anvasat pe calculator
54/87


Fig.20.1 Fereastra de lucru a compilatorului MSV 08


4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

Fig.20.2 Date de intrare Fig.20.3 Rezultatul problemei

5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare 3 numere reale, a, b, c n
fiierul textintrare, iar rezultatul a fost afiat n fiierul textiesire.
Rezultatele obinute au validat programul realizat.
Putem observa c datele de ieire au fost afiate n formatul indicat de noi n program.




Tema nr. II Programarea anvasat pe calculator
55/87

21. PROBLEMA NR. 2. (Varianta VI)
Calculul ariei unui triunghi folosind formula lui Heron
1.Enunul problemei
Cunoscnd laturile unui triunghi s se calculeze aria acestuia cu formula lui
Heron.Varianta cu folosirea fiierelor.
2.Anliza problemei
Date de intrare:a,b,c (reprezint laturile
triunghiului);
Date de ieire:p semiperimetrul,S aria
triunghiului;
Metoda de rezolvare: datele de intrare (laturile
triunghiului) vor fi introduse ntr-un fiier numit laturi, iar
datele de ieire (ariile corespunztoare laturilor introduse)
vor fi afiate intr-un fiier numit arii.
( ) ( ) ( )
Formula lui Heron
unde:


p = semiperimetrul triunghiului
3.Programarea problemei
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.
!Masterand Ciobanu Andrei-Florin
program arie6
! Calculul arie unui triunghi cu formula lui Heron cu date preluate din fiser
! varianta cu citerea intregului fisier
! rezultatele se obtin in fiserul arii
implicit none

real a,b,c,p,s,j
character*8 rasp

open(11,file='laturi')
open(12,file='arii')

write(12,*)
write(12,*)'============================================================'
write(12,*)'CALCULUL ARIEI UNUI TRIUNGHI'
write(12,*)'Masterand Ciobanu Andrei-Florin'
write(12,*)'============================================================'
j=0
100 read(11,*,end=200)a,b,c
j=j+1
write(12,*)'setul numarul',j
write(12,*)
write(12,*)
write(12,*)'a=',a,b,c
b
a
c
S=aria
c
Tema nr. II Programarea anvasat pe calculator
56/87


if(a>0 .and. b>0 .and. c>0 .and. a+b>c .and. b+c>a .and. c+a>b) then

p=(a+b+c)/2.
!write(12,*)'============================================================'
! write (12,*)'semi=perimetrul triunghiului este p=',p
! write(12,*)'============================================================'
s= sqrt(p*(p-a)*(p-b)*(p-c))
write(12,*)
write(12,*)'============================================================'
write (12,*)'ARIA TRIUNGHIULUI ESTE: s=',s
write(12,*)'============================================================'
else
write(12,*)'ramura de fals'
write(12,*)'----------------------------------------------------------'
write (12,*)'a,b,c nu sunt laturile unui triunghi'
write(12,*)'------------------------------------------------------------'
write(12,*)'reluati introducerea datelor'

endif
go to 100

200 close(11)
close(12)
print *, 'sfarsitul programului'
read *


end program arie6
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Fig.21.1 Fereastra de lucru a compilatorului MSV 08




Tema nr. II Programarea anvasat pe calculator
57/87


4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:
Fig.20.2 Date de intrare













Fig.20.3 Rezultatul problemei
5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare laturile triunghiului.
Utiliznd formula lui Heron i compilatorul MSV 08 sa reuit interpretarea problemei.
Sau creat dou fiiere, un fiier cu date de intrare intitulat laturi i un fiier cu date
de ieire intitulat arii. n primul fiier se introduc laturile triunghiului iar n fisierul arii, dup
rularea programului, se vor afia ariile respective.







Tema nr. II Programarea anvasat pe calculator
58/87

22.Problema nr. 7
Creare unei csue de dialog. Procedur general
Crearea dialogului n Fortran
Se deschide un nou proiect Fortran.


Din meniul Project alegem Add new item.


i se obine urmtoarea fereastr:
Tema nr. II Programarea anvasat pe calculator
59/87



Se alege Resource File (.rc, cu numele implicit Resource1.rc. Se apas pe butonul Add.

Mediul Visual studio se schimb dup cum urmeaz

Se observ n stnga un director numit Resource1.rc iar n partea dreapt, se remarc
apariia fiierului Resource1.rc n cadrul subdirectorului Source Files:
Tema nr. II Programarea anvasat pe calculator
60/87



Se lucreaz n partea stng (tab-ul Resource1.rc), se selecteaz directorul
Resource1.rc i se apas butonul dreapta al mouse-ului.

Se alege Add resource i se obine meniul urmtor:

din care se selecteaz Dialog i se apas butonul New. Visual Studio aduce pe ecran
dialogul nou creat:
Tema nr. II Programarea anvasat pe calculator
61/87



Dialogul nou creat are numele implicit IDD_DIALOG1. l schimbm n fereastra

Se salveaz toate fiierele din proiect, apsnd butonul Save all


n partea stng (Solution Explorer) se selecteaz Resouce files i se deschide cu
butonul dreapta al mouse-ului un submeniu

Tema nr. II Programarea anvasat pe calculator
62/87


i se obine o list cu fiierele existente n proiect (se alege All files (*.*) din dreapta
jos):

Se selecteaz resource.h i se apas butonul Add. Se observ c fiierul
resource.h a fost adugat n Solution Explorer

Tema nr. II Programarea anvasat pe calculator
63/87



n Solution Explorer se selecteaz resorce.h i se apas cu butonul dreapta al
mouse-ului.

Se alege Properties i se obine un dialog dup cum urmeaz:
Tema nr. II Programarea anvasat pe calculator
64/87


n care se selecteaz din stnga Custom Build Step i se completeaz n dreapta
rubrica Command Line cu deftofd resource.h resource.fd respectiv, rubrica Outputs cu
resource.fd i se apas butonul OK.
Din meniul principal Build se activeaz Build Solution



Tema nr. II Programarea anvasat pe calculator
65/87

La fel cum s-a procedat cu aducerea fiierului resource.h n proiect, se va proceda i
cu fiierul resource.fd


n acest moment putem lucra cu fereastra creat i sa i implementm un program de
calcul.
23. Problema nr. 8 (Varianta I)
Calculul momentului de inerie la o seciune circular.
1.Enunul problemei
S se calculeze momentul de inerie la o seciune circular. Datele de intrare i cele de
ieire s fie cuprinse ntr-o csu de dialog.
I = (*D^4)/64
2.Analiza problemei
Date de intrare: D diametrul seciunii circulare.
Date de ieire: I momentul de inerie al seciunii circulare.
Modelarea problemei: se preia fereastr de dialog intitulat fereastra n program, sub
denumirea de numint. Se introduce valoarea diametrului n csua txtdiam de pe fereasstra de
dialog. Dac aceast valoare este real atunci se calculeaz momentul de inerie i se afieaz
valoarea momentului de inerie n csua txtmom, iar n csua txtmesaj se afieaz mesajul
date corecte, dac valoarea introdus n csua txtdiam nu este real atunci se va afia un mesaj
de eroare n csua txtmesaj. Dup rularea programului fereastra de dialog se va redeschide pentru
a putea fi citit rezultatul.
Tema nr. II Programarea anvasat pe calculator
66/87

3.Programarea problemei
Fereastra de dialog intitulat Moment de inertie a fost modelat cu ajutorul
programului Microsoft Visual Studio 2008. Folosindu-ne de Toolbox putem introduce n
fereastra de dialog elementele necesare.

Fig.23.1 Mediu de lucru n fereastra de dialog
Fiecare element introdus n fereastra de dialog poate fi apelat n program cu ajutorul
unui ID. Acest ID poate fi introdus de ctre utilizator din meniul de propritai al fiecrui element
nparte. De exemplu pentru caseta unde va fi introdus diametrul (de tip Edit Control) are ID-ul
txtdiam.

Fig.23.2 Mediu de lucru n fereastra de dialog
Introducerea unui text ntr-un buton sau a unei csue de tip Static Text sau a altui
element se realizeaz introducnd tectul dorit n Caption din meniul de propriti al fiecrui
element.
Tema nr. II Programarea anvasat pe calculator
67/87


Fig.23.3 Mediu de lucru n fereastra de dialog
Introducerea unei imagini n fereastra de dialog se face urmnd paii:
- desenul trebuie salvat cu extensia .bmp;
- trebuie introdus imaginea n fiierul Resource1.rc;

Fig.23.4 Clic dreapta pe Resource.rc Fig.23.5 Fereastra de dialog Add Resource...
- se import imaginea cu extensia .bmp din locul de unde este salvat;
- n fereastra de dialog se introduce o csu de tip Picture Control
- n meniul de proprieti se vor face urmtoarele modificri:
Tema nr. II Programarea anvasat pe calculator
68/87


Fig.23.6 Meniul proprieti al casetei de tip Picture Control

Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.

program testdlg1

!Masterand Ciobanu Andrei Florin
! Acest program este un exemplu de lucru cu dialogul
! Varianta I-deschiderea dubla a dialogului
use iflogm
implicit none
include 'resource.fd'
type(dialog) numint
integer rez
character *20 sir
real diametru, mominert, pi
pi=3.14
rez=dlginit(fereastra,numint)
rez=dlgmodal(numint)
rez=dlgget(numint,txtdiam,sir)
read(sir,1,iostat=rez)diametru
1 format(f15.0)

if(rez==0) then
mominert=pi*diametru**4/64
!write(*,*)'sirul din fereastra este:',sir
!write(*,*)'diametrul din sir este=',diametru
!write(*,*)'rez=',rez
write(*,*)'momentul este=',mominert
write(sir,*)mominert
mominert=dlgset(numint,txtmom,sir)

rez=dlgset(numint,txtmesaj,'date corecte')
else
rez=dlgset(numint,txtmesaj,'eroare')
! write(*,*)'eroare'
endif

rez=dlgmodal(numint)
Tema nr. II Programarea anvasat pe calculator
69/87


print *, 'stop'
read *
end program testdlg1

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:

Fig.23.7 Fereastra de lucru a compilatorului MSV 08


4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:

Fig.23.8 Date de intrare Fig.23.9 Date de ieire
Tema nr. II Programarea anvasat pe calculator
70/87


Fig.23.10 Date de intrare Fig.23.11 Date de ieire

5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare diametrul seciunii circulare.
Datele din intrare i cele de ieire sunt afiate intr-o fereastr de dialog intitulat Moment de
inerie
Rezultatele obinute au validat programul realizat.
Putem observa c valoarea diametrului trebuie s fie una real, altfel programul afieaz
mesajul eroare.
24. Problema nr. 8 (Varianta II)
Calculul momentului de inerie la o seciune circular.
1.Enunul problemei
S se calculeze momentul de inerie la o seciune circular. Datele de intrare i cele de
ieire s fie cuprinse ntr-o csu de dialog. Varianta cu deschiderea multipl a ferestrei de dialog.
I = (*D^4)/64

2.Analiza problemei
Date de intrare: D diametrul seciunii circulare.
Date de ieire: I momentul de inerie al seciunii circulare.
Modelarea problemei: se preia fereastr de dialog intitulat fereastra n program, sub
denumirea de numint. Se introduce valoarea diametrului n csua txtdiam de pe fereasstra de
dialog. Dac aceast valoare este real atunci se calculeaz momentul de inerie i se afieaz
valoarea momentului de inerie n csua txtmom, iar n csua txtmesaj se afieaz mesajul
date corecte, dac valoarea introdus n csua txtdiam nu este real atunci se va afia un mesaj
de eroare n csua txtmesaj. Se va introduce un nou buton n fereastra de dialog finalizare,
cnd acesta va fi apsat se va ncheia irul de rezolvri.
3.Programarea problemei
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.


Tema nr. II Programarea anvasat pe calculator
71/87

program tdlgg2

!Masterand Ciobanu Andrei Florin
! Acest program este un exemplu de lucru cu dialogul
! Varianta 2-deschiderea multipla
use iflogm
implicit none
include 'resource.fd'
type(dialog) numint
integer rez,but
character *20 sir
real diametru, mominert, pi
but=cont
pi=3.14
rez=dlginit(fereastra,numint)
do while (but==cont)
but=dlgmodal(numint)

rez=dlgmodal(numint)
rez=dlgget(numint,txtdiam,sir)
read(sir,1,iostat=rez)diametru
1 format(f15.0)

if(rez==0) then
mominert=pi*diametru**4/64
!write(*,*)'sirul din fereastra este:',sir
!write(*,*)'diametrul din sir este=',diametru
!write(*,*)'rez=',rez
write(*,*)'momentul este=',mominert
write(sir,*)mominert
rez=dlgset(numint,txtmom,sir)

rez=dlgset(numint,txtmesaj,'date corecte')
else
rez=dlgset(numint,txtmesaj,'eroare')
! write(*,*)'eroare'
rez=dlgset(numint,txtmom,'')
endif
rez=dlgmodal(numint)
enddo
print *, 'stop'
read *
end program tdlgg2
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:

Fig.23.7 Fereastra de lucru a compilatorului MSV 08
Tema nr. II Programarea anvasat pe calculator
72/87


4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:



Fig.24.2 Afiarea rezultatelor
5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare diametrul seciunii circulare.
Datele din intrare i cele de ieire sunt afiate intr-o fereastr de dialog intitulat Moment de
inerie.
Rezultatele obinute au validat programul realizat.
Putem observa c valoarea diametrului trebuie s fie una real, altfel programul afieaz
mesajul eroare.
Atat timp ct utilizatorul va aciona butonul Continu va putea efectua un nou calcul,
dac acioneaz butonul Finalizare se va nchide fereastra.
25. Problema nr. 9
Calculul momentului de inerie la o seciune dreptunghiular.
1.Enunul problemei
S se calculeze momentul de inerie la o seciune dreptunghiular. Datele de intrare i
cele de ieire s fie cuprinse ntr-o csu de dialog. Varianta cu preluarea datelor din subrutin.
I = (b*h^3)/12

Tema nr. II Programarea anvasat pe calculator
73/87

2.Analiza problemei
Date de intrare: b baza seciunii, h nlimea seciunii.
Date de ieire: I momentul de inerie al seciunii.
Modelarea problemei: se preia fereastr de dialog intitulat fereastra n program, sub
denumirea de numint. Se introduce valoarile bazei i nlimii n casetele txtbsrespectiv
txths de pe fereasstra de dialog. Dac aceast valoare este real atunci se calculeaz momentul de
inerie i se afieaz valoarea momentului de inerie n csua txtmom, iar n csua txtmesaj se
afieaz mesajul date corecte, dac valoarea introdus n csua txtdiam nu este real atunci se
va afia un mesaj de eroare n csua txtmesaj.
3.Programarea problemei
Calculele sunt efectuate n subrutin.pentru efectuarea calculelor programul va apela
subrutina cheama
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.
program testdlg3

!Masterand Ciobanu Andrei Florin
! Acest program este un exemplu de lucru cu dialogul
! Varianta 3-deschiderea continua
! test cu mai multe date de intrare

use iflogm
implicit none
include 'resource.fd'
type(dialog) numint
integer rez
character *20 sir
external cheama

rez=dlginit(fereastra,numint)
rez=dlgsetsub(numint,txths,cheama)
rez=dlgsetsub(numint,txtbs,cheama)

rez=dlgmodal(numint)

print *, 'stop'

read*
end program testdlg3

subroutine cheama(numint,ctrl,ce)
use iflogm
implicit none
include 'resource.fd'
type(dialog) numint
integer rez,but,ctrl,ce,er1,er2
character *20 sir
real bs, mominert,hs
rez=dlgget(numint,txtbs,sir)
read(sir,1,iostat=er1)bs
1 format(f15.0)
rez=dlgget(numint,txths,sir)
read(sir,1,iostat=er2)hs

if( (er1==0).and.(er2==0)) then
mominert=bs*hs**3/12
write(sir,*)mominert
Tema nr. II Programarea anvasat pe calculator
74/87

rez =dlgset(numint,txtmom,sir)

rez=dlgset(numint,txtmesaj,'date corecte')
else
rez=dlgset(numint,txtmesaj,'eroare')
! write(*,*)'eroare'
rez=dlgset(numint,txtmom,'')
endif

write (*,*)'se apeleaza cheama'
end subroutine
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:

Fig.25.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint mai multe seturi de date pentru rezolvarea problemei:


Tema nr. II Programarea anvasat pe calculator
75/87


Fig.25.2 Afiarea rezultatelor


5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare baza i nlimea seciunii
dreptunghiulare. Datele din intrare i cele de ieire sunt afiate intr-o fereastr de dialog intitulat
Moment de inerie.
Rezultatele obinute au validat programul realizat.
Putem observa c valoarile laturilor seciunii trebuie s fie reale, altfel programul
afieaz mesajul eroare.

26. Problema nr. 10
Trasarea graficului funciei sin(x)
1.Enunul problemei
S se traseze graficul funciei sinus.
2.Analiza problemei
Date de ieire: px(i) abscisa n punctul i, py(i) ordonata n punctul i
Modelarea problemei: att timp ct contorul i este cuprins ntre 1 i max (max=1000)
programul va calcula abscisa px(i) i ordonata py(i). Cu ajutorul programului Array Visualizer se
va trasa graficul funciei sinus.
3.Programarea problemei
Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul
mediului de programare Microsoft Visual Studio 2008.
!masterand Ciobanu Andrei Florin
program grafsin1
!trasare grafic simplu cu Array Visualizer
use avfrt
use avobjmod
implicit none
integer, parameter::max=1000
real px(max),py(max),pi
integer i,st,vid,hroot,hg
pi=4.*atan(1.)
do i=1,max
Tema nr. II Programarea anvasat pe calculator
76/87

px(i)=(i-1)*pi/max*10.
py(i)= sin(px(i))
enddo
call AvStartWatch(loc(px),1,shape(px),AV_REAL4,'px',st)
call AvStartWatch(loc(py),1,shape(py),AV_REAL4,'py',st)
call AvNewViewer(vid)
hroot=AvGetObject('/')
call
AvCreateGraph2Dobj(AvGraphs(hroot),'sin1|plot:xyplot,xsource:/px,ysource:/py',hg
)
call AvVisible(vid,1,st)
!pentru a salva imaginea in fisier
call AvSaveImage('grafsin1.jpg','graph:/sin1',1200,1600,72,st)
print *, 'Apasati ENTER pentru a termina programul'
read *
!pentru inchiderea viewerului
call AvCloseViewer(vid,st)
call AvEndWatch(loc(px),st)
call AvEndWatch(loc(py),st)
end program grafsin1
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:

Fig.26.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint rezultatul problemei ca fiind graficul funciei sinus:

Tema nr. II Programarea anvasat pe calculator
77/87



Fig.26.2 Afiarea rezultatelor

5.oncluzii i recomandri
S-a programat trasarea graficului pentru functia sinus . S-a utilizat limbajul Intel Fortran
90 sub MS Visual Studio 2008 i la trasarea graficului programul Array Visualizer.
Rezultatele obinute au validat programul realizat.















Tema nr. II Programarea anvasat pe calculator
78/87

Programe lucrate individual
27. Problema nr. 11
Calcularea produsului primelor n numere naturale.
1.Enunul problemei
S se calculeze produsul primelor n numere naturale.
p = 1*2*3*...........*n
2.Anliza problemei
Date de intrare: n - de tip ntreg.
Date de ieire: p - de tip ntreg, produsul primelor n numere naturale.
Metoda de rezolvare: se iniializez produsul p (p=1) i contorul i (i=1), folosind
instruciunea do while programul calculeaz produsul i contorul i primeste valoarea i+1 att timp
cat i este mai mic sau egal cu n.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program produs1
! masterand Ciobanu Andrei Florin
! calculul produsului primelor n numere naturale
! folosirea instructiuni de tip do while
implicit none
integer n,i,p

write(*,1)
1 format('n=',$)
read(*,*)n
!initializari
p=1

i=1

do while (i<=n)
p=p*i
i=i+1
enddo
! afisare rezultat
write(*,*)'produsul primelor',n,' numere naturale este:',p

! finalizare program
print *, 'sfarsitul programului'

read *

end program produs1
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:
Tema nr. II Programarea anvasat pe calculator
79/87

Fig.27.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

Fig.27.2 Rezultatul problemei

5.Concluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare n.
Rezultatele afiate demonstreaz corectitudinea rezolvrii problemei.
Dup introducerea valorii lui n, programul calculeaz produsul primelor n numere
naturale.
Tema nr. II Programarea anvasat pe calculator
80/87

28. Problema nr. 12 (Varianta I)
Calculul lui e
x
prin descompunere n serie.
1.Enunul problemei
S se calculeze valoarea e
x
, . Varianta cu numr cunoscut de pai.
Se folosete relaia:


2.Analiza problemei
Date de intrare: x puterea lui e; n numrul de termeni luai n considerare
Date de ieire: vfe valparea funciei e
x
.
Modelarea problemei: se iniializeaz valoarea funciei e
x
cu termenul iniial al seriei
vfe=tc, termenul iniial al seriei fiind tc=1. Cu ajutorul instruciunii do se calculeaz valoarea
funciei e
x
att timp ct contorul i ia valori de la 1 pn la n. Am utilizat p= produsul primelor n
numere naturale, pentru a nlocui funcia factorial.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program functiaelax
!Masterand Ciobanu Andrei-Florin
! calculul valorii e^x prin descompunere in serie

implicit none

real x,vfe,tc,p
integer n,i

! introducerea datelor de intrare
write(*,1)
1 format('puterea lui e este, x=',$)
read (*,*)x
write(*,2)
2 format('numarul de termeni din serie, n=',$)
read (*,*)n
! initializari
tc=1
vfe=tc
p=1
do i=1,n
!p este produsul primelor n numere naturale(inlocuieste functia factorial)
p=p*i
! calculul termenului curent
tc=(x**i) /(p)

vfe=vfe+tc
write (*,*)'tc=',tc, 'vfe=',vfe
enddo

write(*,*)
write(*,*) 'e^x=',vfe
write(*,*)
Tema nr. II Programarea anvasat pe calculator
81/87


print *, 'final'
read *

end program functiaelax

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.28.1 Fereastra de lucru a compilatorului MSV 08
4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:


Fig.28.2 Rezultatul problemei

Tema nr. II Programarea anvasat pe calculator
82/87

5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare x puterea lui e i n
numrul de pai
Rezultatele obinute au validat programul realizat, observndu-se c, dup un anumit
numr de pai, valoarea termenilor din serie devine practic zero. De aceea, varianta cu o valoare
impus maxim pentru ultimul termen adunat este mult mai eficient.
29. Problema nr. 13 (Varianta II)
Calculul lui e
x
prin descompunere n serie.
1.Enunul problemei
S se calculeze valoarea e
x
, . Varianta cu numr necunoscut de pai.
Se folosete relaia:


2.Analiza problemei
Date de intrare: x puterea lui e; epsilon valoarea sub care termenii nu se mai adun
Date de ieire: vfe valparea funciei e
x
.
Modelarea problemei: se iniializeaz contorul i = 1 i valoarea funciei e
x
cu termenul
iniial al seriei vfe=tc, termenul iniial al seriei fiind tc=1. Cu ajutorul instruciunii do while se
calculeaz valoarea funciei e
x
att timp ct valoarea absolut a termenului curent este mai mic
dect valoarea absolut a lui epsilon.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.
program functiaelax2
! Masterand Ciobanu Andrei-Florin
! calculul valorii e^x prin descompunere in serie
! varianta cu numar finit si nr necunoscut de termeni

implicit none
real x,vfe,tc,epsilon,p
integer i

write(*,1)
1 format('puterea lui e este:, x=',$)
read (*,*)x
write(*,2)
2 format('precizia epsilon, epsilon=',$)
read (*,*)epsilon

tc=1
vfe=tc
i=0
p=1
do while (abs(tc)>abs(epsilon))
! implementare ordin
i=i+1
Tema nr. II Programarea anvasat pe calculator
83/87

p=p*i
! calculul termenului curent
tc= (x**i)/p
! actualizarea valorii fc. e^x
vfe=vfe+tc
write(*,*) 'tc=',tc, 'e^x=',vfe
enddo

write(*,*)'____________________________'
write(*,*)'e la puterea x este =',vfe
write(*,*)'----------------------------'
print *, 'final'
read *
end program functiaelax2

Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.29.1 Fereastra de lucru a compilatorului MSV 08
4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

Tema nr. II Programarea anvasat pe calculator
84/87


Fig.29.2 Rezultatul problemei
5.oncluzii i recomandri
Rezolvarea problemei s-a realizat avnd ca date de intrare x puterea lui e i epsilon
valoarea sub care termenii nu se mai adun
Rezultatele obinute au validat programul realizat. Numrul de pai este funcie de
precizia epsilon.
30. PROBLEMA NR. 14
Calculul caracteristicilor dinamice ale unui sistem cu 1 gld
1.Enuntul problemei
S se calculeze caracteristicile dinamice ale unui sistem cu 1GLD cu ajutorul formulelor
de calcul din dinamica construciilor.

2.Anliza problemei
Date de intrare:b,h dimensiunile seciunii, l lungimea barei, E modulul de
elasticitate al materialului.
Date de ieire: momentul de inerie I, flexibilitatea , pulsaia , perioada T, frecvena
f.

Tema nr. II Programarea anvasat pe calculator
85/87

Metoda de rezolvare: pentru calculul caracteristicilor dinamice ale barei ncastrate se
vor folosi urmtoarele formule de calcul din dinamica construciilor:

.
Calculul va fi efectuat n subrutina programului intitulat subgld. Fiecare dat de
intrare trebuie s fie un numr real, altfel pentru fiecare dat de intrare se va afia un mesaj de
eroare.

3.Programarea problemei
Pentru rezolvarea problemei s a folosit limbajul de programare Fortran 90 ncadrul
mediului de programare Microsoft Visual Studio 2008.

program dinamica1GLD
!masterand Ciobanu Andrei Florin
use iflogm
implicit none
type(dialog) fint
include 'resource.fd'
logical rtr
external subgld
rtr=dlginit(fer,fint)
rtr=dlgsetsub(fint,bsa,subgld)
rtr=dlgsetsub(fint,hsa,subgld)
rtr=dlgsetsub(fint,ha,subgld)
rtr=dlgsetsub(fint,ma,subgld)
rtr=dlgsetsub(fint,Ea,subgld)
rtr=dlgmodal(fint)
print *, 'program terminat'
call dlguninit(fint)

end program dinamica1GLD

subroutine subgld(fint,fai,ce)
use iflogm
implicit none
type(dialog) fint
include 'resource.fd'
integer ce,fai,rtr,rin
character*20 text
character ch
real bs,hs,m,h
real omega,f,T,I,E,delta,flexi
!se preiau datele din casute

rtr=dlgget(fint,bsa,text)
read(text,*,iostat=rin) bs
if (rin==0) then
read (text,*)ch
if ((ch=='f').or.(ch=='t').or.(ch=='F').or.(ch=='T')) then

rtr=dlgset(fint,msj,'eroare la bs')
else
rtr=dlgset(fint,msj,'ok')
endif
else
rtr=dlgset(fint,msj,'eroare la variabila bs')
endif
Tema nr. II Programarea anvasat pe calculator
86/87

rtr=dlgget(fint,hsa,text)
read(text,*,iostat=rin) hs
if (rin==0) then
read (text,*)ch
if ((ch=='f').or.(ch=='t').or.(ch=='F').or.(ch=='T')) then

rtr=dlgset(fint,msj1,'eroare la hs')
else
rtr=dlgset(fint,msj1,'ok')
endif
else
rtr=dlgset(fint,msj1,'eroare la variabila hs')
endif
rtr=dlgget(fint,ha,text)
read(text,*,iostat=rin) h
if (rin==0) then
read (text,*)ch
if ((ch=='f').or.(ch=='t').or.(ch=='F').or.(ch=='T')) then

rtr=dlgset(fint,msj2,'eroare la h')
else
rtr=dlgset(fint,msj2,'ok')
endif
else
rtr=dlgset(fint,msj2,'eroare la variabila h')
endif
rtr=dlgget(fint,ma,text)
read(text,*,iostat=rin) m
if (rin==0) then
read (text,*)ch
if ((ch=='f').or.(ch=='t').or.(ch=='F').or.(ch=='T')) then

rtr=dlgset(fint,msj3,'eroare la m')
else
rtr=dlgset(fint,msj3,'ok')
endif
else
rtr=dlgset(fint,msj3,'eroare la variabila m')
endif
rtr=dlgget(fint,Ea,text)
read(text,*,iostat=rin) E
if (rin==0) then
read (text,*)ch
if ((ch=='f').or.(ch=='t').or.(ch=='F').or.(ch=='T')) then

rtr=dlgset(fint,msj4,'eroare la E')
else
rtr=dlgset(fint,msj4,'ok')
endif
else
rtr=dlgset(fint,msj4,'eroare la variabila E')
endif
!calcul moment de inertie
I=(bs*hs**3)/12
!calcul flexibilitate
flexi=((h)**3)/(3*E*I)
!calcul pulsatie
omega=sqrt(1/(flexi*m))
!calcul perioada
T=2*3.14/omega
!calcul frecventa
f=1/T

Tema nr. II Programarea anvasat pe calculator
87/87

!afisare rezultate
write(text,*) I
rtr=dlgset(fint,Ia,text)
write(text,*) flexi
rtr=dlgset(fint,flexia,text)
write(text,*) omega
rtr=dlgset(fint,wa,text)
write(text,*) T
rtr=dlgset(fint,Ta,text)
write(text,*) f
rtr=dlgset(fint,fa,text)

end subroutine
Se prezint in continuare o imagine a mediului Visual studio cu lucrul asupra
programului:


Fig.30.1 Fereastra de lucru a compilatorului MSV 08

4.Rezultate
Se prezint un set de date pentru rezolvarea problemei:

Tema nr. II Programarea anvasat pe calculator
88/87


Fig.30.2 Rezultatul problemei


Fig.30.3 Rezultatul problemei

5.oncluzii i recomandri
Rezultatultatele obinute confirm corectitudinea programului.
Lucrul cu subrutina este foarte avantajos deoarece poi interveni i modifica anumite
date fr s fii nevoit s nchizi i s redeschizi fereastra, iar valorile sunt calculate n timp real.
Se poate observa c atunci cnd utilizatorul introduce valori ale datelor de intrare
eronate, programul afieaz mesaje de eroare.

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