FORTRAN 90 arreglos.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Arreglos.
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
IBD Curso 2007 Clase 2.
Metrica de Estimación COCOMO
Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Programación de Computadores
2 Estructuras lineales.. Qué es una estructura? La estructura es una manera de conectar los valores y de manera automática conectarlos de manera que tengan.
Abstracción de Datos Arrays.
Apuntes 2º Bachillerato C.T.
Adaptación por el autor de apuntes de clases dictadas por la Dra. G Castle en la Universidad de Liverpool, enriquecidas con experiencias del propio autor.
ESTRUCTURA DE DECISION LOGICA
Relacionando Datos Arrays
DESCRIPCION DE SISTEMAS
Parte 3. Descripción del código de una función 1.
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Matemática Básica (CC.)
Seminario de Actualización - Excel Avanzado y Macros
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Curso de Programación 1 Plan 97
MANEJO DE ARRAYS EN C.
FORTRAN 90 Subprogramas.
FORTRAN 77 y Cómputo Científico
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Arreglos (vectores, matrices, ….)
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
VBA - Procedimientos Subprogramas (Procedimientos): Procedimientos Sub
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
Cálculo diferencial (arq)
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
PL/SQL Francisco Moreno Universidad Nacional.
Diseño descendente Diseño descendente, top-down, que consiste en dividir el problema en subproblemas más pequeños, que se pueden tratar de forma separada.
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda

READ (*, *) WRITE(*; *) Formato libre Format → se utiliza para especificar la forma en que las variables son impresas o leídas en un programa. WRITE(*,
Fundamentos de Programación
Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2.
Arrays (introducción)
Programación en Matlab
MATRICES Y DETERMINANTES.
ARREGLOS BIDIMENSIONALES
Sintaxis.
Clase 10: Estructuras de datos y arreglos.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
(Organización y Manejo de Archivos)
Resolución de Problemas y Algoritmos Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca - Argentina.
Programación I Arreglos II- Matrices.
75.40 Algoritmos y Programación I
1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas.
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
EXPRESIONES Y SENTENCIAS
Operaciones con números complejos
Programación en C para electrónicos
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Vectores y Matrices.
Clase 6 COMPUTACION 2009 C lase 8 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros.
Inicialización de arreglos de 2 variables INTEGER, DIMENSIÓN (4, 3) : : ini DO i=1, 4 DO j= 1,3 ini(i, j) = j END DO i=1123 i=2123 i=3123 i=4123 j=1j=2j=3.
Matrices Prof. Flor Narciso Departamento de Computación
Vectores y Matrices.
Estructura de datos I CIS - UABJB.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 5.
Entrada/Salida : I/O FORTRAN 90/95 MC. Pope ITD. Entrada y Salida (I/O) Fortran proporciona dos tipos de declaraciones para entrada y salida de datos.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Camilo Andrés Salazar González FORTRAN.  Estructura program circulo Real :: r, area write (*,*) 'Escribe el radio r:' read (*,*) r area = *r*r.
Transcripción de la presentación:

FORTRAN 90 arreglos

El atributo DImension Fortran 90 utiliza el atributo DIMENSION para declarar arreglos. El atributo DIMENSION requiere tres componentes para completar las especificaciones del arreglo, rango, forma y grado. El rango de un arreglo es el número de índices o subíndices, El rango máximo es 7. La forma de un arreglo indica el número de elementos en cada “dimensión” El rango y forma de un arreglo es representado como (s1, s2,…, sn), donde n es el rango del arreglo y sn es el número de elementos de la n-ésima dimensión. Por ejemplo: (7) representa un arreglo de rango 1 con 7 elementos (5,9) representa un arreglo de rango 2 (una tabla) cuyas primera y segunda dimensiones tienen 5 y 9 elementos, respectivamente. (10,10,10,10) representa un arreglo de rango 4 que tiene 10 elementos en cada dimensión.

El atributo DImension El grado se escribe como m:n donde m y n (m ≤ n) son de tipo INTEGER Cada dimensión tiene su propio grado. El grado de una dimensión es el rango de su índice. Si se omite m el valor por defecto es 1. Por ejemplo: -3:2 significa que sus posibles índices son: -3, -2, -1, 0, 1, 2 5:8 significa que los posibles índices son: 5, 6, 7, 8 7 significa que los índices posibles son 1, 2, 3, 4, 5, 6, 7 El atributo DIMENSION tiene la siguiente forma: Aquí grado-n, es el grado de dimensión n. Esto significa un arreglo de dimensión n, es decir, n índices, cuyo índice en la n-ésima dimensión tiene un rango dado por grado-n. DIMENSION(grado-1, grado-2,…, grado-n)

El atributo DImension Algunos ejemplos: DIMENSION(-1:1) !Es un arreglo 1-dimensional con índices posibles !-1,0,1 DIMENSION(0:2,3) !Es un arreglo 2-dimensional, es decir una !tabla. Los posibles valores de su primer !índice son 0, 1, 2 y del segundo 1, 2, 3 DIMENSION(3,4,5) !Es un arreglo 3-dimensional, es decir una !tabla. Los posibles valores de su primer !índice son 1, 2, 3, del segundo 1, 2, 3, 4, y !del tercero 1, 2, 3, 4, 5

El atributo DImension La declaración de un arreglo es simple. Agrega el atributo DIMENSION a un tipo de declaración. Los valores en el atributo DIMENSION son usualmente de tipo PARAMETER para hacer las modificaciones al programa más sencillas. Por ejemplo: INTEGER, PARAMETER :: TAMANO=5, BAJO=3, ALTO=5 INTEGER, PARAMETER :: PEQUENO = 10, GRANDE = 15 REAL, DIMENSION(1:TAMANO) :: x INTEGER, DIMENSION(BAJO:ALTO,PEQUENO:GRANDE) :: a,b LOGICAL, DIMENSION(2,2) :: Tabla_Verdad

Uso de los arreglos Fortran 90 tiene, en general, tres formas diferentes de utilizar arreglos: Refiriéndose a un elemento individual de un arreglo. Refiriéndose a un arreglo en su totalidad. Refiriéndose a una sección de un arreglo. En la primera forma solo se toma el nombre del arreglo, seguido de () dentro de los cuales están los índices separados por , . Supongamos que tenemos las siguientes declaraciones: INTEGER, PARAMETER :: LIMITE_I = 3, LIMITE_S = 10 INTEGER, DIMENSION(LIMITE_I:LIMITE_S) :: x DO i = LIMITE_I, LIMITE_S x(i) = i END DO DO i = LIMITE_I, LIMITE_S IF (MOD(i,2) == 0) THEN x(i) = 0 ELSE x(i) = 1 END IF END DO El arreglo x( ) tiene 3,4,5,…,10 El arreglo x( ) tiene 1,0,1,0, 1,0,1,0

Uso de los arreglos Supongamos que tenemos las siguientes declaraciones: INTEGER, PARAMETER :: LIMITE_I = 3, LIMITE_S = 10 INTEGER, DIMENSION(LIMITE_I:LIMITE_S,LIMITE_I:LIMITE_S) :: a DO i = LIMITE_I, LIMITE_S DO j = LIMITE_I, LIMITE_S a(i,j) = 0 END DO a(i,i) = 1 DO i = LIMITE_I, LIMITE_S DO j = i+1, LIMITE_S t = a(i,j) a(i,j) = a(j,i) a(j,i) = t END DO END DO END DO Genera una matriz identidad Generando la transpuesta de una matriz

DO implicito Fortran tiene el DO implícito que puede generar eficientemente un conjunto de valores y/o elementos. El DO implícito es una variación del bucle DO, y tiene la siguiente sintaxis: Donde elemento-1, elemento-2, …, elemento-n son variables o expresiones, v es una variable INTEGER, e inicial, final y paso son expresiones tipo INTEGER. Por ejemplo: (elemento-1, elemento-2, …, elemento-n, v=inicial,final,paso) (i+1, i=1,3) genera 2, 3, 4. (i*k, i+k*i, i=1,8,2) generates k, 1+k (i = 1), 3*k, 3+k*3 (i = 3), 5*k, 5+k*5 (i = 5), 7*k, 7+k*7 (i = 7). (a(i),a(i+2),a(i*3-1),i*4,i=3,5) genera a(3), a(5), a(8) , 12 (i=3), a(4), a(6), a(11), 16 (i=4), a(5), a(7), a(14), 20.(i=4).

DO implicito El DO implícito puede ser anidado (i*k,(j*j,i*j,j=1,3), i=2,4) En la expresión de arriba (j*j,i*j,j=1,3) en el bucle implícito i. Quedaría de la siguiente forma: !Cuando i=2, el DO implicito genera 2k, (j*j,2*j, j=1,3) !Despues j va de 1 a 3 y genera 2k, 1*1,2*1, 2*2,2*2, 3*3,2*3 !Cuando i=3 se genera 3k, (j*j,3*j, j=1,3) !Despues j genera 2k, 1*1,3*1, 2*2,3*2, 3*3,3*3 !Cuando i=4 se genera 4k, (j*j,4*j, j=1,3) !Despues j genera 4k, 1*1,4*1, 2*2,4*2, 3*3,4*3

DO implicito El siguiente arreglo produce todas las entradas triangulares superiores, fila por fila de un arreglo 2-dimensional: ((a(p,q),q = p,n), p = 1,n) !Cuando p=1, el bucle interior q produce: a(1,1), a(1,2),…, a(1,n) !Cuando p=2, el bucle interior q produce: a(2,2), a(2,3),…, a(2,n) !Cuando p=3, el bucle interior q produce: a(3,3), a(3,4),…, a(3,n) !Cuando p=n, el bucle interior q produce: a(n,n)

DO implicito El siguiente arreglo produce todas las entradas triangulares superiores, columna por columna de un arreglo 2-dimensional: ((a(p,q),p = 1,q), q = 1,n) !Cuando q=1, el bucle interior p produce: a(1,1) !Cuando q=2, el bucle interior p produce: a(1,2), a(2,2) !Cuando q=3, el bucle interior p produce: a(1,3), a(2,4),…, a(3,3) !Cuando q=n, el bucle interior p produce: a(1,n), a(2,n), a(3,n),…, a(n,n)

Arreglo entrada/salida El DO implícito puede ser usado para leer, READ(*,*) y escribir WRITE(*,*) declaraciones. Cuando un DO implícito es usado, es equivalente a utilizar la declaración e/s con los elementos generados. La siguiente declaración imprime una tabla de multiplicación. WRITE(*,*) ((i,”*”,j,”=”,i*j,j=1,9),i=1,9) La siguiente declaración tiene un mejor formtato, forma 9 filas: DO i = 1, 9 WRITE(*,*) ((i, ”*” , j, ”=”, i*j, j=1,9) END DO

Arreglo entrada/salida Supongamos que tenemos un arreglo 2-dimensional a( ): INTEGER, DIMENSION(2:4,0:1) :: a Supongamos que para llenar dicho arreglo tenemos: READ(*,*) ((a(i,j),j=0,1),i=2,4) ¿Cuales son los resultados para las siguientes entradas? 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 1 2 3 4 5 6

EJEMPLO Multiplicación de matrices: Leer las dimensiones 𝑙×𝑚 de una matriz 𝐴 𝑙×𝑚 y la dimensión m×𝑛 de una matriz 𝐵 𝑚×𝑛 para así obtener su producto: 𝐶 𝑙×𝑛 = 𝐴 𝑙×𝑚 ∙ 𝐵 𝑚×𝑛 PROGRAM Matrix_Multiplication IMPLICIT NONE INTEGER, PARAMETER :: SIZE = 100 INTEGER, DIMENSION(1:SIZE,1:SIZE) :: A, B, C INTEGER :: L, M, N, i, j, k READ(*,*) L, M, N ! Leer tamaños <= 100 DO i = 1, L READ(*,*) (A(i,j), j=1,M) ! A() es L-por-M END DO DO i = 1, M READ(*,*) (B(i,j), j=1,N) ! B() es M-por-N

Ejemplo DO i = 1, L DO j = 1, N C(i,j) = 0 ! Por cada C(i,j) DO k = 1, M ! (fila i de A)*(columna j de B) C(i,j) = C(i,j) + A(i,k)*B(k,j) END DO DO i = 1, L ! Imprime fila por fila WRITE(*,*) (C(i,j), j=1, N) END PROGRAM Matrix_Multiplication