Sunteți pe pagina 1din 20

CURS 5- Fortran instruciuni

iterative (repetitive)
iruri i matrici
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs, and te
universe trying to build bigger and better idiots! "o far, te
universe is winning!# - $ic% &oo%
1. Instruciuni iterative (repetitive)
Defniie: Iteraia este repetarea unui anumit procedeu de calcul,
prin aplicarea lui la re'ultatul calculului din etapa precedent(

Intruciunea DO (aritmetic)
DO i=vi,vf,inc
[set intruciuni]
END DO
)nde* i - variabila de control a instruciunii
vi - valoarea iniial( a variabilei de control
vf - valoare +nal( a instruciunii de control
inc - incrementul (cantitate elementar( care este ad(ugat(
unei m(rimi ,ntr-un proces de calcul)
-bs! .ac( incrementul lipse/te, valoarea acestuia este
considerat( 0!
i, vi, vf, inc sunt variabile declarate INTEGER
12!0* &alcularea factorialului unui num(r natural 3 (pt
veri+care 345)
Program Factorial
Implicit None
Integer::i,n,fact
Print*,'N='
read*,n
fact=1
Do i=2,n,1
fact=fact*i
End Do
Print*,N!=',fact
End Program Factorial
i fact
0
6 076
8 07678
9 0767879
5 076787975
12!6* "uma /i produsul a 3 numere (pt veri+care 345)
Program SPNn!mere
Implicit None
Integer::i,N
"eal::S,P,#i
Print*,'N='
"ead*,N
Print*,'introd!ceti n!merele:'
S=$
P=1
Do i=1,N
"ead*,#i
S=S%#i
P=P*#i
End Do
Print*,'S!ma e&te ', S, 'Prod!&!l e&te ',P
End Program SPNn!mere
Instruciuna DO (loic)
DO
[set intruciuni]
If (condiie) Then Exit
END DO
-bs! &ondiia este de tip :ogic adic( are ca re'ultat ;devarat
sau Fals!
<e/irea din ciclul DO se face prin instruciunea EXIT!
"altul peste e2ecutarea unor instruciuni se face cu
instruciunea !"E#
12!8* "( se scrie programul care cite/te o succesiune de
numere terminat( cu 'ero! "( se a+/e'e c=te numere sunt
po'itive /i c=te negative!
Program Po'Neg
Implicit None
Integer::Np,Nn
"eal::#
Np=$
Nn=$
Do
"ead*,#
If (#)1,2,*
1 Nn=Nn%1
+,cle
2 E-it
* Np=Np%1
End Do
Print*,'N!mere Negati.e:',Nn,'N!mere po'iti.e:',Np
End Program Po'Neg
<nstruciuna .- >?<:1
DO $%I"E (condiie)
[set intruciuni]
END DO
12! 9 "( se calcule'e e2poneniala unui num(r @ prin
de'voltare in serie cu o anumit( toleran(!
P"/0"12 calc!l!lf!nctieie-ponentiale ! DE34/561"E IN SE"IE
I2P5I+I6 N/NE
IN6E0E" :: inde- ! n!mar!l de termeni
"E15:: termen ! termen!l c!rent
"E15:: e-pcalc ! .aloarea &eriei
"E15:: # ! .aloarea arg!ment!l!i
"E15,P1"12E6E" :: tol = 17e89 ! 6oleranta
Print*,'IN6"/D:+E6I #'
"E1D*,#
inde- = 1 ! prim!l termen din &erie
e-pcalc = 17$
termen = # ! al doilea termen in &erie
D/ ;<I5E(1=S(termen)>tol)
e-pcalc = e-pcalc % termen
inde- = inde- % 1
termen = termen * (#?inde-)
END D/
Print*, 'D!pa ', inde-, ' iteratii:'
Print*, ' E-pcalc!lat = ', e-pcalc
Print*, ' E-pe-act = ', E#P(#)
Print*, ' 1@&(Error) = ', 1=S(e-pcalc 8 E#P(#))
END P"/0"12 calc!l!lf!nctieie-ponentiale
!. "a#louri uni$imensionale (vectori)
$epre'int( variabile ce pot stoca un sir de valori, +ecare pe o
po'iie diferit(!
.eclaraia se face ,n felul urm(tor*
Ti&u'(v)ri)*i'ei, .imension(min*ma2) ** varAtablou0,
varAtablou6
O#s.
Ti&u'(v)ri)*i'ei poate + orice tip discutat in cursurile precedente!
+in /i +)x sunt valorile de ,nceput /i de sf=r/it ale po'iiilor
tabloului! 3um(rul de elemente ale tabloului este (Ba2-Bin C0 )!
Daloare Bin poate s( lipseasc( atunci cand este egala cu 0!
12*
<nteger, .imension (-0*8)** a,b E 5 Po'itii*-0, F, 0 , 6, 8
$eal, .imension(6F)**2,y,' E6F de Po'iii* 0 G 6F
&ar, .imension(68)**alfabet
&itirea irurilor se face printr-o parcurgere element cu
element*
AAAAAA
"eal,Dimen&ion(2$)::#
Integer::i,N
AAAAAA
Print*,BIntrod!ceti n!mar!l de elementeB
"ead*,N
Print*,BIntrod!ceti &ir!l de n!mereB
Do i=1,N
"ead*,#(i)
End Do
GGGGGG!
Parcurgerea irurilor se face de asemenea ,ntr-un ciclu .-
element cu element!
S=$
Do i=1,N
S=S%#(i)
End Do
;+area irurilor se face printr-o parcurgere element cu
element*
AAAAAA
Do i=1,N
Print*,B#(B, i,B)=B,#(i)
End Do
GGGGGG!
Probleme cu iruri de 3 elemente numerice*
0! "( se calcule'e suma i produsul
elemetelor
6! "( se determine valoarea minim( i
ma2im( dintr-un ir de numere
8! "( se determine dac( o valoare ; apare
,ntr-un ir de numere i daca da, de c=te ori!
9! Presupun=nd c( un ir repre'int(
coe+cienHii unui polinom, s( se calcule'e
valoarea acestuia ,ntr-un punct I!
0! "( se calcule'e suma i produsul elemetelor unui ir
Program S!maProd!&
"eal,Dimen&ion(2$)::#
"eal::&,p
Integer::i,N
Print*,BIntrod!ceti n!mar!l de elementeB
"ead*,N
Print*,BIntrod!ceti &ir!l de n!mereB
Do i=1,N
"ead*,#(i)
End Do
&=$
p=1
Do i=1,N
&=&%#(i)
p=p%#(i)
End Do
Print*,BS=,&,BP=,p
End Program S!maProd!&
6! "( se determine valoarea minim( i ma2im( dintr-un ir de
numere
Program 2a-2in
"eal,Dimen&ion(2$)::#
"eal::2a-,2in
Integer::i,N
Print*,BIntrod!ceti n!mar!l de elementeB
"ead*,N
Print*,BIntrod!ceti &ir!l de n!mereB
Do i=1,N
"ead*,#(i)
End Do
2a-=#(1)
2in=#(1)
Do i=1,N
If(#(i)>2a-) 2a-=#(i)
If(#(i)C2in) 2in=#(i)
End Do
Print*,B2a-im!l e&te:B,2a-,B2inim!l e&teB,2in
End Program 2a-2in
8! "( se determine dac( o valoare ; apare ,ntr-un ir de
numere i daca da, de c=te ori!
Program 1paritie
"eal,Dimen&ion(2$)::#
"eal::1,Nr
Integer::i,N
Print*,BIntrod!ceti n!mar!l de elementeB
"ead*,N
Print*,BIntrod!ceti &ir!l de n!mereB
Do i=1,N
"ead*,#(i)
End Do
Print*,Bintrod!ceti n!mar!l 1=B
"ead*,1
Nr=$
Do i=1,N
If(#(i)==1) Nr=Nr%1
End Do
Print*,BN!mar!lB,1,Bapare deB,Nr,BoriB
End Program 1paritie
%. "a#louri &ulti$imensionale (ma2im J)
$epre'int( variabile ce pot stoca iruri de valori, pe po'iHii
diferite i mai multe dimensiuni! (dac( num(rul de dimensiuni
este 6 atunci discut(m despre matrici)
.eclaraia se face ,n felul urm(tor*
Ti&u'(v)ri)*i'ei, .imension(min0*ma20,
min6*ma26,min8*ma28) **;,K,&
12*
$eal, .imension (F*6F , 5 , 5*65)** a,b Eprima dimensiune are
60 de elem Ea 6-a 5 iar a 8-a tot60
de elem
&atricile: N linii i + coloane 4L 32B elemente*
;(0,0) ;(0,6) ! ! ! ;(0,m)
;(6,0) ;(6,6) ! ! ! ;(6,m)
!!!!!!
;(n,0) ;(n,6) ! ! ! ;(n,m)
&itirea matricilor se face printr-o parcurgere a liniilor i a
coloanelor 32B
AAAAAA
"eal,Dimen&ion(2$,2$)::1
Integer::i,D,N,2
AAAAAA
Print*,BIntrod!ceti n!mar!l de linii &i coloaneB
"ead*,N,2
Print*,BIntrod!ceti n!mereleB
Do i=1,N
Do D=1,2
"ead*,1(i,D)
End Do
End Do
GGGGGG!
Parcurgerea matricilor se face ,n 6 cicluri .- element cu
element!
S=$
Do i=1,N
Do D=1,2
S=S%1(i,D)
End Do
End Do
Probleme matrici*
0!"uma elementelor pe linii i coloane a unei matrici
6! "uma a dou( matrici de aceeai dimensiune
8!Produsul a doua matrici
9!<nversa unei matrici
5!Nranspusa unei matrici
0!"uma elementelor pe linii i coloane a unei matrici
Program S!maliniicoloanematrice
"eal,Dimen&ion(2$,2$)::1
"eal::S
Integer::i,D,N,2
Print*,BIntrod!ceti n!mar!l de linii &i coloaneB
"ead*,N,2
Print*,BIntrod!ceti n!mereleB
Do i=1,N
Do D=1,2
"ead*,1(i,D)
End Do
End Do
Do i=1,N
S=$
Do D=1,2
S=S%1(i,D)
End Do
Print*,BS!ma pe liniaB,i,Be&teB,S
End Do
Do D=1,2
S=$
Do i=1,N
S=S%1(i,D)
End Do
Print*,BS!ma pe coloanaB,D,Be&teB,S
End Do
End Program S!maliniicoloanematrice

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