You are on page 1of 3

CLASE 13 DE JUNIO L_P

APLICACIN 1

!APLICACION DE UN PROCEDIMIENTO COMO ARGUMENTO EN OTRO PROCEDIMIENTO


PROGRAM SUMAS
REAL,DIMENSION(3,3)::A,B,C
INTEGER::I,J
REAL:: PROMEDIO
EXTERNAL MATRIZ,SUMA_MATRIZ !EXTERNAL MATRIZ,SUMA_MATRIZ (S8BRUTINAS)
REAL,EXTERNAL:: FTOTAL !FTOTAL SUBPROGRAM FUNCTION
PRINT*,"OPERACION SUMA DE A + B"
CALL SUMA_MATRIZ(MATRIZ ,A,B,C) !MATRIZ ,A,B(ENTRADA) C (SALIDA)
PRINT*,"LA SUMA EN C ="
DO I =1,3
PRINT*,(C(I,J),J=1,3)
END DO
!CALCULO DEL PROMEDIO DE C(I,J)
PROMEDIO = FTOTAL(C,3)/9.0
PRINT*,"PROMEDIO= ", PROMEDIO
END PROGRAM SUMAS
!MODIFICANDO LA SUBRUTINA "SUMA_MATRIZ"
SUBROUTINE SUMA_MATRIZ(MATRIZ,A,B,C)
REAL,DIMENSION(3,3),INTENT(IN)::A,B
REAL,DIMENSION(3,3),INTENT(OUT)::C
INTEGER::I,J
PRINT*,"INGRESE DATOS A LA MATRIZ A"
CALL MATRIZ(A)
PRINT*,"INGRESE DATOS A LA MATRIZ B"
CALL MATRIZ(B)
C=0
DO I=1,3
DO J=1,3
C(I,J)=A(I,J)+B(I,J)
END DO
END DO
RETURN
END SUBROUTINE SUMA_MATRIZ

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
APLICACIN 2

!F(X)=COS(2PIX)
!G(X)=(X-1)"2
!X E (A,B) (CERRADO);N=# DE PARTICIONES O INTERAVALOS
!H=(B-A)/N ;H=INTERVALOS
PROGRAM EVALUA_FUNCION
INTEGER::N,OP !N=NUMERO DE INTERVALOS
REAL::A,B !OP=OPCION(1 O 2)
REAL::T1,T2 !VARIABLE AUXILIAR
REAL::EVALUA !FUNCION
REAL,EXTERNAL::G1,G2 !FUNCIONES
PRINT*,"INGRESE VALORES DE A Y B"
READ*,A,B ! 1,100
PRINT*,"INGRESE NUMERO DE INTERVALOS"
READ*,N !40
PRINT*,"SELECCIONE UNA OPCION 1 O 2"
READ*,OP !1
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
!SUBPROGRAM 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 100,A,EVALUA
A=A+H
END DO
100 FORMAT (1X,F8.2,1X,F12.4)!F8.2>>>>A
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
APLICACIN 3

!RESOLVER AX"2+BX+C=0
!A=2 , B=-6 , C=4
PROGRAM ECUACION
REAL::A,B,C
REAL::D,R1,R2 !R1 Y R2 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 ESPACIO A LA DERECHA; A ES PARA "UNA
SOLUCION ES"
CONTAINS !EL R1 ES PARA F5.2 EL A ES PARA Y LA OTRA RAIZ Y F5.2 ES PARA R2
FUNCTION PIDE_REAL(MENSAJE)
CHARACTER(LEN=*)::MENSAJE
REAL::PIDE_REAL
PRINT*,MENSAJE
READ*,PIDE_REAL
RETURN
END FUNCTION PIDE_REAL
END PROGRAM ECUACION

You might also like