Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mayo !"
y xi xi y i m= xi i =" x xi
i= "
suma# $ !%! suma# $ !%! sumay $ !%! suma#y $ !%! do i$"&n suma# $ suma# ' #(i) sumay $ sumay ' y(i) suma# $ suma# ' #(i)** suma#y $ suma#y ' #(i)*y(i) end do #p $ suma#+real(n) yp $ sumay+real(n) m $ (suma#y , yp*suma#)+(suma# , #p*suma#)
y xi xi y i m= xi i =" x xi
i= "
De ahora en adelante...usaremos
"%, 0rreglos de memoria dinmica%%% %, 1peraciones so7re arreglos completos 8 8 90N91 41M1 SE0 P1SI:2E 66
2os su7programas se utilizan para programar procesos repetiti>os& por eBemplo& en el caso de =ue se necesitara e>aluar la siguiente ?unciCn g& es recomenda7le crea un su7programa para la ?unciCn f(x,y)D
N N
g = f x i , y j
i=" j="
x i= N i y j= N B
si si si si x ! - y ! x ! - y ! x ! - y ! x ! - y !
x y @ x y f x, y = x yA @ x y
Para programar procesos estndar como algunos mtodos numrico (soluciCn de sistemas de ecuaciones lineales& integraciCn numrica& etc%) =u son utilizados una y otra >ez en >arios programasD Solucion de sistemas de > ecuaciones lineales
suma# $ !%! suma# $ !%! sumay $ !%! suma#y $ !%! do i$"&n suma# $ suma# ' #(i) sumay $ sumay ' y(i) suma# $ suma# ' #(i)** suma#y $ suma#y ' #(i)*y(i) end do #p $ suma#+real(n) yp $ sumay+real(n) m $ (suma#y , yp*suma#)+(suma# , #p*suma#) suma# $ !%! suma# $ !%! sumay $ !%! suma#y $ !%! do i$"&n suma# $ suma# ' #(i) sumay $ sumay ' y(i) suma# $ suma# ' #(i)** suma#y $ suma#y ' #(i)*y(i) end do #p $ suma#+real(n) yp $ sumay+real(n) m $ (suma#y , yp*suma#)+(suma# , #p*suma#) suma# $ !%! sumay $ !%! suma#y $ !%! do i$"&n suma# $ suma# ' #(i) sumay $ sumay ' y(i) suma# $ suma# ' #(i)** suma#y $ suma#y ' #(i)*y(i) end do #p $ suma#+real(n) yp $ sumay+real(n) m $ (suma#y , yp*suma#)+(suma# , #p*suma#)
>
Subprogramas:
Entonces& los S.:PR15R0M0S se recomiendan para cu7rir o resol>er algunos de las tareas siguientesD
Para programar procesos o tareas =ue se repiten en un mismo programa Para programar mtodos numricos estndar (soluciCn de sistemas de ecuaciones lineales& aBuste de datos& interpolaciCn& integraciCn numrica& lectura de datos& etc%)% Estos su7programas son ;reusa7les<% 4onstrucciCn de ;7ancos de su7programas< or ;repositorios< o ;7i7liotecas<& para (re)usarse en programas con ciertas aplicaciones%
Subprogramas en
FO"#"$N F.N4I1NES
SUBPROGRAMAS
S.:R.9IN0S
Subprogramas: FUNCIONES
2as funciones son su7programas =ue aceptan .N1 o M0S argumentos de entrada (lo e=ui>alente a ;>aria7les independientes<) y .N y S121 .N >alor de salida& el cuales el >alor de la ?unciCn misma (;>aria7le independiente<)% .na ?unciCn en ?ortran tiene la siguiente estructura (M0E.S4.20S es 413I51 FR19R0N)D nom7re?unc puede ser FUNCTION nombrefunc( r!1" r!2"###" r!n) cual=uier nom7re IMP$ICIT NON% de?inido por el usuario &i'o ( ( nombrefunc (con no ms de A" &i'o ( ( r!1" r!2 caractres) &i'o ( ( r!3 tipo especi?ica el tipo de # >aria7le (real& integer& &i'o ( ( r!n logical& cFaracter)
cuer'o )e* 'ro!r m Nombrefunc + , %N- FUNCTION nombrefunc
2ista de argumentos
Nom7re de la ?unciCn
2a ?unciCn ;?actBuan< ?orma parte del mismo arcFi>o del programa principal (;coe?7i<)
program prue7aA implicit none integer DD i&B&G&c integer DD ?actBuan&coe?Buan G$ ?actBuan("A) Hrite(*&*)IG$I&G c $ coe?Buan("A&@) Hrite(*&*)Ic$I&c
%7em'*o 2
end program prue7aA 6 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ F.N49I1N coe?Buan(n&r) implicit none integer DD coe?Buan integer DD n&r integer DD ?actBuan coe?Buan $ ?actBuan(n)+(?actBuan(n,r)*?actBuan(r)) EN3 F.N49I1N coe?Buan 6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ F.N49I1N ?actBuan(n) implicit none integer DD n& ?actBuan integer DD i ?actBuan $ " do i$"&n ?actBuan $ ?actBuan*i end do EN3 F.N49I1N ?actBuan
0ariables *ocales
0 las >aria7les =ue son declaradas en un su7programa (SP) y el programa principal (PP) no tiene accesos a ellas se les llama J0RI0:2ES 21402ES% 0nlogamente& un su7programa solo tiene acceso (y puede modi?icar) las >aria7les del PP =ue ?orman 2IS90 3E 0R5.MEN91S% NOTAD las >aria7les =ue ?orman la lista de argumentos son un tipo de ;J0RI0:2ES M.30S< pues los su7programas no asignan memoria a estas >aria7les (esta memoria es asignada en el PP)%
0ariables *ocales
NOTAD o7ser>emos =ue 4.02K.IER0 de las >aria7les =ue ?orman la lista de argumentos puede ser modi?icada (algunas >eces por accidente)% Para e>itar esto se usa la declaraciCn+atri7uto INTENT
*a declaracin1atributo INTENT
%* &ribu&o INTENT al declarar el tipo de >aria7les en la secciCn de declaraciCn (A atri7utos distintos)D tipo& intent(in) DD arg"& arg
2os argumentos N1 P.E3EN ser modi?icados por el SP (argumentos de entrada)%
2as >aria7les SI P.E3EN ser modi?icadas por el SP (argumentos de salida) 2as >aria7les SI P.E3EN ser modi?icadas por el SP (argumentos de entrada, salida)
%7em'*o 2
F.N49I1N coe?Buan(n&r) implicit none integer& intent(in) DD n&r integer DD coe?Buan integer DD ?actBuan coe?Buan $ ?actBuan(n)+ (?actBuan(n,r)*?actBuan(r)) EN3 F.N49I1N coe?Buan 0tri7uto intent(in) usado para indicar =ue los argumentos n - r (argumentos deentrada)no pueden ser modi?icados por el su7programa
Subprogramas: SU!"U#IN$S
2as S.:R.9IN0S son su7programas =ue tienen las siguientes caractersticasD
0ceptan NIN5.N1& .N1 1 M0S argumentos (e#plcitos) de entrada% Regresan NIN5.N1& .N1 o M0S argumentos (e#plcitos) de salida% 2os argumentos pueden ser de cual=uier tipo (real& entero& cFaracter o lCgico)% 2os argumentos pueden ser ;escalares<& arreglos& ?unciones e incluso su7rutinas% Se compilan y usan de manera independiente%
Subprogramas: SU!"U#IN$S
2as S.:R.9IN0S tienen la siguiente estructura general (M0E.S4.20S son 413I51 F1R9R0N)D
nomSu7 puede ser SUBROUTIN% nomSub( r!:" r!1" r!2"###" r!n) cual=uier nom7re IMP$ICIT NON% de?inido por el usuario &i'o" INT%NT(IN) ( ( r!:c (con no ms de A" &i'o" INT%NT(OUT) ( ( r!1" r!2 &i'o" INT%NT(INOUT) ( ( r!3" r!;"###" r!n caractres) # tipo especi?ica el tipo de &i'o ( ( 2 r2" 2 r2" 2 r3 >aria7le (real& integer& logical& cFaracter) cuer'o )e* 'ro!r m %N- SUBROUTIN% nomSub
2ista de argumentos
Subprogramas: SU!"U#IN$S
2os conceptos usados para las ?unciones son aplica7les para las S.:R.9IN0SD
2as Nnicas >aria7les del PP =ue una su7rutina puede modi?icar son a=ullos de la lista de argumentos =ue tienen el atri7uto para ello% 2as lista de argumentos son ;>aria7les mudas< a las cuales el su7programa no se les asigna memoria% 2os arreglos se pasan de las dos maneras distintas conocidasD ?orma e#plcita y ?orma implcita%
Nom7re de la su7rutina
2a lista de argumentos en el programa =ue llama (dri>er) de7e coincidir en orden y tipo con la lista de argumentos de la su7rutina llamada (metodoOgauss)