Professional Documents
Culture Documents
1!ELABORE UN PROGRAM QUE LEA DOS MATRICES A y B (3X3) A TRAVES DE UNA SUBRUTINA
!DE NOMBRE "MATRIZ" Y QUE A TRAVES DE OTRA SUBRUTINA DE NOMBRE "SUMA_MATRIZ" CALCULE
!LA SUMA DE LAS MATRICES A y B . FINALMENTE CALCULE EL PROMEDIO DE TODOS LOS ELEMENTOS
!DE LA MATRIZ C, UTILIZANDO UN SUBPROGRAMA FUNCTION DE NOMBRE "FTOTAL"
PROGRAM OPERACIONES
REAL,DIMENSION(3,3)::A,B,C
INTEGER::I,J
REAL::PROM
PRINT*,"INGRESE VALORES A A"
CALL MATRIZ(A) ! VARIABLE DE ENTRADA Y SALIDA
PRINT*,"INGRESE VALORES A B"
CALL MATRIZ(B) ! VARIABLE DE ENTRADA Y SALIDA
PRINT*,"OPERACION DE SUMA C=A+B"
CALL SUMA_MATRIZ(A,B,C) ! "A" ENTRADA "B" ENTRADA "C" SALIDA
PRINT*,"C ="
DO I=1,3
PRINT*,(C(I,J),J=1,3)
END DO
PROM=FTOTAL(C,3)/9.0 !3 ,ME SIRVE PARA FILAS Y COLUMNAS
PRINT*,"PROM DE C =",PROM
END PROGRAM OPERACIONES
SUBROUTINE MATRIZ(X)
REAL,DIMENSION(3,3),INTENT(INOUT)::X ! VARIABLE LOCAL
INTEGER::I,J ! ES DIFENRETE AL I,J DEL PROGRAMA PRINCIPAL YA QUE ES UN SUBPROGRAMA Y SON LOCALES A
DIFERNECIA DEL PRICNIPAL QUE SON GLOBALES
DO I=1,3
READ*,(X(I,J),J=1,3)
END DO
RETURN
END SUBROUTINE MATRIZ
FUNCTION FTOTAL(C,D)
INTEGER,INTENT(IN)::D ! 3 SE TRANSFIERE A D
REAL,DIMENSION(D,D)::C
REAL::FTOTAL
REAL::SUMA =0 !SUMA VARIABLE LOCAL
INTEGER::I,J
DO I=1,D
DO J=1,D
SUMA=SUMA + C(I,J)
END DO
END DO
FTOTAL=SUMA
RETURN
END FUNCTION FTOTAL
2USO DE CARACTERES
PROGRAM USO_CARACTERES
!LLAMADAS A LAS SUBRUTINAS
CALL CADENA ('X')
CALL CADENA ('COORDENADA')
CALL CADENA ('BUEN TIEMPO' (3:7))
CALL CADENA ('**')
END PROGRAM USO_CARACTERES
SUBROUTINE CADENA(LISTA)
CHARACTER(LEN = *),INTENT(IN)::LISTA
PRINT*,'EN LA CADENA <',LISTA,' >','HAY',LEN(LISTA),'CARACTER(ES)'
RETURN
END SUBROUTINE CADENA
!EN LA CADENA<X> HAY 1 CARACTER(ES)
!EN LA CADENA<COORDENADA> HAY 10 CARACTER(ES)
!EN LA CADENA<EN TI> HAY 5 CARACTER(ES)
!EN LA CADENA<**> HAY 2 CARACTER(ES)
SUBROUTINE MATRIZ(X)
REAL,DIMENSION(3,3),INTENT(INOUT)::X ! VARIABLE LOCAL
INTEGER::I,J ! ES DIFENRETE AL I,J DEL PROGRAMA PRINCIPAL YA QUE ES UN SUBPROGRAMA Y SON LOCALES A
DIFERNECIA DEL PRICNIPAL QUE SON GLOBALES
DO I=1,3
READ*,(X(I,J),J=1,3)
END DO
RETURN
END SUBROUTINE MATRIZ
FUNCTION FTOTAL(C,D)
INTEGER,INTENT(IN)::D ! 3 SE TRANSFIERE A D
REAL,DIMENSION(D,D)::C
REAL::FTOTAL
REAL::SUMA =0 !SUMA VARIABLE LOCAL
INTEGER::I,J
DO I=1,D
DO J=1,D
SUMA=SUMA + C(I,J)
END DO
END DO
FTOTAL=SUMA
RETURN
END FUNCTION FTOTAL
! SEA F(X)=COS(2.PI.X)
! G(X)=(X-1)´2
! X e [A , B] ; n= # de particiones o intervalos
!h=(b-a)/n ; h=incremento
PROGRAM EVALUA_FUNCION
INTEGER::N,OP !N=NUMERO DE INTERVALO
REAL::A,B ! OP=OPCION(1 ó 2)
REAL::T1,T2 !VARIABLES AUXILIARES
REAL::EVALUA !FUNCION
REAL,EXTERNAL::G1,G2 !FUNCIONES
PRINT*,"INGRESE VALORES DE A Y B"
READ*,A,B
PRINT*,"INGRESE NUMERO DE INTERVALOS"
READ*,N
PRINT*,"SELECCIONA UNA OPCION 1 o 2 "
READ*,OP
IF(OP==1)THEN
PRINT*,"RESULTADO"
T1=EVALUA(G1,A,B,N)
ELSE IF(OP==2)THEN
PRINT*,"RESULTADO"
T2=EVALUA(G2,A,B,N)
END IF
END PROGRAM EVALUA_FUNCION
!SUBPROGRAMA EVALUA
FUNCTION EVALUA(G,A,B,N)
INTEGER::I,N
REAL::EVALUA
REAL::A,B,H
REAL,EXTERNAL::G
H=(B-A)/N
DO I=1,N
EVALUA=G(A)
PRINT*,A,EVALUA
A=A+H
END DO
RETURN
END FUNCTION EVALUA
FUNCTION G1(X)
REAL::G1,X
REAL,PARAMETER::PI=3.14159
G1=COS(2*PI*X)
RETURN
END FUNCTION G1
FUNCTION G2(X)
REAL::G2,X
G2=(X-1.0)**2
RETURN
END FUNCTION G2
AHORA, UTILIZANDO FORMAT PARA QUE SALGA MAS ORDENADO Y SIN NOTACION CIENTIFICA
! SEA F(X)=COS(2.PI.X)
! G(X)=(X-1)´2
! X e [A , B] ; n= # de particiones o intervalos
!h=(b-a)/n ; h=incremento
PROGRAM EVALUA_FUNCION
INTEGER::N,OP !N=NUMERO DE INTERVALO
REAL::A,B ! OP=OPCION(1 ó 2)
REAL::T1,T2 !VARIABLES AUXILIARES
REAL::EVALUA !FUNCION
REAL,EXTERNAL::G1,G2 !FUNCIONES
PRINT*,"INGRESE VALORES DE A Y B"
READ*,A,B
PRINT*,"INGRESE NUMERO DE INTERVALOS"
READ*,N
PRINT*,"SELECCIONA UNA OPCION 1 o 2 "
READ*,OP
IF(OP==1)THEN
PRINT*,"RESULTADO"
T1=EVALUA(G1,A,B,N)
ELSE IF(OP==2)THEN
PRINT*,"RESULTADO"
T2=EVALUA(G2,A,B,N)
END IF
END PROGRAM EVALUA_FUNCION
!SUBPROGRAMA EVALUA
FUNCTION EVALUA(G,A,B,N)
INTEGER::I,N
REAL::EVALUA
REAL::A,B,H
REAL,EXTERNAL::G
H=(B-A)/N
PRINT*," X EVALUA"
DO I=1,N
EVALUA=G(A)
PRINT 100,A,EVALUA
A=A+H
END DO
100 FORMAT(1X,F8.2,1X,F12.4)
RETURN
END FUNCTION EVALUA
FUNCTION G1(X)
REAL::G1,X
REAL,PARAMETER::PI=3.14159
G1=COS(2*PI*X)
RETURN
END FUNCTION G1
FUNCTION G2(X)
REAL::G2,X
G2=(X-1.0)**2
RETURN
END FUNCTION G2
VARIANTE DE FUNCIONES
CONTAINS SE UTILIZA PARA INCLUIR FUNCIONES DENTRO DEL PROGRAMA PRINCIPAL
!APLICACION 3
!RESOLVER AX**2 + BX + C
!A=2,B=-6,C=4
PROGRAM ECUACION
REAL::A,B,C
REAL::D,R1,R2 !R1 Y R2 SON RAICES
A=PIDE_REAL("ESCRIBE EL COEFICIENTE DE X**2:")
B=PIDE_REAL("ESCRIBE EL COEFICIENTE DE X:")
C=PIDE_REAL("ESCRIBE EL TERMINO INDEPENDIENTE:")
D=B**2-4*A*C
R1=(-B+SQRT(D))/(2*A)
R2=(-B-SQRT(D))/(2*A)
!FORMATO AUTOCONTENIDO
PRINT '(1X,A,F5.2,A,F5.2)',"UNA SOLUCION ES ",R1,"Y LA OTRA ES",R2 ! 1X SALTA UN ESPACIO A LA
DERECHA..."A" ES PARA LA CADENA:"UNA SOLUCION ES"
!F5.2 ES PARA QUE SE OBTENGA UN VALOR NUMERICO REAL R1......EL SIGUIENTE "A" ES PARA LA OTRA CADENA..Y POR
ULTIMO F5.2 ES PARA EL ULTIMO VALOR NUMERICO R2
CONTAINS
FUNCTION PIDE_REAL(MENSAJE)
CHARACTER(LEN=*)::MENSAJE
REAL::PIDE_REAL
PRINT*,MENSAJE
READ*,PIDE_REAL
RETURN
END FUNCTION PIDE_REAL
END PROGRAM ECUACION