Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LENGUAJE DE PROGRAMACIÓN
CIENTIFICO FORTRAN
Profesor Dr. Juan Méndez
Docente Principal
jamendezv@unac.edu.pe
Notas:
o Fuente es un vector de constantes con los
valores de los elementos de la matriz.
o Perfil es un vector de constantes con el
perfil deseado y la orden de la matriz es
por columnas.
ELABORADO POR Dr. JUAN MENDEZ
8. ASIGNACION DE VALORES A LOS ELEMENTOS END DO
END DO
DE UNA TABLA USANDO LA SENTENCIA DE
! LECTURA POR FILAS
LECTURA DO I=1,TMC
Se puede asignar valores a las tablas usando DO J=1,TMF
las sentencias DO y READ. WRITE (*,*) ‘DAME ELEMENTO’,I,J,’DE MAT1’
READ (*,*) MAT1(I,J) !LECTURA DE COLUMNAS
END DO
Ejemplo 16. Asignación usando DO y READ END DO
INTEGER :: I,J
INTEGER, PARAMETER :: TM=5,TMF=2,TMC=3 También se puede leer un tabla usando bucles
INTEGER, DIMENSION (TM) :: V1,V2
DO implícitos. La sintaxis general de lectura
INTEGER, DIMENSION (TMF,TMC) :: MAT1
… con un bucle implícito es:
DO I=1,TM
PRINT*, ‘DAME ELEMENTO’, I,‘DE V1 Y V2’ READ (*,*) (arg1[, arg2] …, índice = inicio, fin [, paso])
READ*, V1(I),V2(I)
END DO Ejemplos 17. Asignación implícita
! LECTURA POR COLUMNAS INTEGER, DIMENSION (5) :: W
DO I=1,TMF INTEGER, DIMENSION (0:3,2) :: M
DO J=1,TMC …
PRINT*, ‘DAME ELEMENTO’,I,J,’DE MAT1’ READ (*,*) ( w(i), i=5,1,-1)
READ*, MAT1(I,J) READ (*,*) ( (m(i,j), i=0,3) , j=1,2) !lectura por columnas
READ (*,*) ( (m(i,j), j=1,2) , i=0,3) !lectura por filas
ELABORADO POR Dr. JUAN MENDEZ
También es posible leer un tabla escribiendo Ejemplo 19. Asignación usando DO y READ
únicamente su nombre, sin especificar su(s) INTEGER, DIMENSION (5) :: V1 =(/ 9,8,7,6,5 /)
INTEGER, DIMENSION (20:24) :: V2 =(/ -9,-8,-7,-6,-5 /)
índice(s). En ese caso, el compilador asume
INTEGER, DIMENSION (50:54) :: V3,V4
que se va a leer todo el tabla, es decir, todos V3=V1+V2
sus elementos en el orden natural Fortran. V4=V1*V2
PRINT*,‘V3, DOS VECES EXPONENCIAL DE V3’, V3,
2*EXP(REAL(V3))
Ejemplo 18. Asignación natural de una tabla PRINT*, ‘V4, VALOR ABSOLUTO DE V4’, V4, ABS(V4)
INTEGER, DIMENSION (10) :: V La salida será:
INTEGER, DIMENSION (2,3) :: MAT V3 = [0,0,0,0,0] 2*EXP(REAL(V3)) = [2,2,2,2,2]
READ*, V V4 = [-81,-64,-49,-36,-25] ABS(V4) = [81,64,49,36,25]
READ*, MAT Otra forma de codificar lo anterior, usando los bucles DO
iterativos.
9. OPERACIONES CON TABLAS Ejemplo 20. Usando bucles DO
Para poder realizar operaciones con tablas INTEGER :: I
INTEGER, DIMENSION (5) :: V1 =(/ 9,8,7,6,5 /),&
en Fortran se debe verificar que tengan el V2 =(/ -9,-8,-7,-6,-5 /),V3,V4
mismo perfil. Además, un escalar puede DO I=1,5
operarse con cualquier tabla. V3(I)=V1(I)+V2(I)
V4(I)=V1(I)*V2(I)
PRINT*, V3(I), 2*EXP(REAL(V3(I)))
ELABORADO POR Dr. JUAN MENDEZ
PRINT*, V4(I), ABS(V4(I))
END DO
10. CONSTRUCCION WHERE Ejemplo 21. Calcular la raíz cuadrada de los
Es una estructura de decisión para los datos elementos positivos de una tabla.
tipo tabla es muy similar Al bloque IF THEN REAL, DIMENSION (5,4) :: MATI,MATF
…
para escalares. La sintaxis general es:
WHERE (MATI>0)
MATF=SQRT(MATI)
[nombre:] WHERE (ER/L1) ELSEWHERE
SS1 MATF=0
END WHERE
ELSEWHERE (ER/L2)
SS2 11. SENTENCIA WHERE
ELSEWHERE (ER/L3) La estructura general es
SS3
…. WHERE (ER/L) SS
ELSEWHERE
SSN
END WHERE [nombre]
1. Hacer un programa para evaluar la media de 5. Hacer un programa para leer una matriz de 2
cinco números ingresados por teclado filas y 3 columnas por teclado y mostrarla por
usando escalares para almacenar los pantalla.
números ingresados.
2. Hacer un programa para evaluar la media de
cinco números ingresados por teclado
usando vectores para almacenar los
números ingresados.
3. Hacer un programa para buscar un número
en un vector de seis componentes
desordenado. Introduce el vector en la
propia sentencia de declaración de tipo.
4. Hacer un programa para ordenar
ascendentemente las seis componentes de
un vector. Usar el método de la burbuja.