1 / 12

Arreglos (vectores , matrices , ….)

Arreglos (vectores , matrices , ….). Un arreglo es un grupo de variables o constantes , todas del mismo tipo referenciadas con un mismo nombre. arreglo. Cada valor individual se llama elemento El subíndice indica la posición particular dentro del arreglo .

charis
Download Presentation

Arreglos (vectores , matrices , ….)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arreglos (vectores, matrices, ….) Un arreglo es un grupo de variables o constantes, todas del mismo tipo referenciadas con un mismo nombre. arreglo • Cada valor individual se llama elemento • El subíndice indica la posición particular dentro del arreglo. • El subíndice es un ENTERO. • Es útil para aplicar un algoritmo a un gran número de datos a través de ciclos • Ej DO i=1,100 • a(i)=sqrt(a(i)) • END DO

  2. Declaración de los Arreglos • Los arreglos tienen que ser declarados antes de ser utilizados para que el compilador guarde lugar en la memoria según el tipo y número de elementos que contiene. • EjREAL, DIMENSION (100) : : a • Cuando se define la variable CHARACTER se tiene que tener en cuenta la longitud de caracteres y elemento:s • EjCHARACTER(10), DIMENSION (12) : : mes • Los arreglos pueden ser declarados con más de un subíndice , por lo tanto pueden tener 2 o más dimensiones. • El número de dimensiones se llama rango (rank). • El número de elementos de cada dimensión se llama extensión (extent). • La combinación del rango y la dimensión se llama forma (sharp) . • El número de elementos declarados en el arreglo tamaño (size) Arreglos constantes: sus elementos son ctes. Pueden definirse entre / Ej: (/1, 2, 3, 4, 5/)

  3. Arreglos

  4. Inicialización de los arreglos • Los elementos de los arreglos son variables ordinarias y tienen que ser inicializadas antes de ser usadas. Si no se la inicializa su valor es indefinido. • Pueden ser inicializados: • 1. Sentencias de asignación elemento por elemento • Ej de esta forma de inicialización: • REAL, DIMENSION(10) : : arreglo • DO i=1,10 • arreglo(i) = REAL(i) • END DO • REAL, DIMENSION(10) : : arreglo • arreglo=(/1., 2., 3., 4., 5., 6., 7., 8., 9., 10./) • REAL, DIMENSION(10) : : arreglo • arreglo=0. ! todos los elementos iguales • INTEGER, DIMENSION(10) : : num, cuad • DO i=1,10 • num(i)=i+i • cuad(i)= num(i)**2 • END DO

  5. 2. Inicialización por sentencias de declaración • Ejde esta forma de inicialización: • INTEGER, DIMENSION (5) : : arreglo = (/1, 2, 3, 4, 5 /) • INTEGER, DIMENSION (5) : : arreglo = (/(i, i=1,5)/) • INTEGER, DIMENSION (25) : : arreglo = (/((0, i=1,4), 5*j, j=1,5) /) • 0, 0, 0, 0, 5, 0, 0, 0, 0, 10, 0, 0, 0, 0, 15, 0, 0, 0, 0, 20, 0, 0, 0, 0, 25 • REAL, DIMENSION (100) : : arreglo =1.0 • Inicialización de arreglos con READ Valores de borde de los arreglos Normalmente se usan valores de 1 a N Ej: REAL, DIMENSION (3) : : arr ⇒ arr(1), arr(2), arr(3) pero muchas veces resulta útil que los subíndices tomen otros valores. Para definir los: REAL, DIMENSION (imin, imax) : : arr Ej: REAL, DIMENSION (5) aa REAL, DIMENSION (-2 : 2) : : bb REAL, DIMENSION ( 7:11) : : cc Los 3 arreglos tienen la misma forma (igual dimensión e igual número de elementos

  6. ! Controlar que el índice se encuentre dentro de los límites del arreglo Arreglo B Arreglo A Si se utiliza el A(6) puede conducir a errores. Los compiladores FORTRAN tienen opción bounds cheking para controlar los valores que toma el índice Las constantes con nombre y la declaración de arreglos Se utiliza para cambiar de manera simple el tamaño de los arreglos. Ej: INTEGER, PARAMETER : : tama=1000 REAL : : arre1(tama) REAL : : arre2(2*tama) REAL : : arre3(tama,tama)

  7. Buena costumbre: declarar el tamaño de los arreglos usando PARAMETER y realizar cambios rápidamente. Usando arreglos completos o un subconjunto a + b = c PROGRAM suma_arreglos IMPLICIT NONE ! INTEGER : : i

  8. REAL, DIMENSION (4) : : a=(/ 1., 2., 3., 4./) REAL, DIMENSION (4) : : b=(/ 5., 6., 7., 8./) REAL, DIMENSION (4) : : c, d ! ! Elemento por elemento DO i=1,4 c(i)= a(i)+b(i) END DO ! ! Suma en forma conjunta todos los elementos de los arreglos d= a+b ! ! Escribo los resultados WRITE(*,*) “c” DO i=1,4 WRITE(*,*) c(i) END DO WRITE(*,*) “d”, d ! END PROGRAM suma_arreglos

  9. Impresión c 6.0 8.0 10.0 12.0 d 6.0 8.0 10.0 12.0 ! La operación puede hacerse si y solo si ambos arreglos tienen la misma forma (igual número de dimensiones y el mismo número de elementos en cada dimensión, (igual rango e igual extensión))⇒ conforme • Los escalares son conformes con los arreglos: • REAL, DIMENSION (4) : : a=(/1., 2., 3., 4./), c • REAL : : b=10 • c=b*a • El arreglo c será 10., 20., 30., 40. • También se puede realizar estas operaciones con funciones intrínsecas elementales. Las más comunes: • ABS, SIN, COS, EXP y LOG • REAL, DIMENSION (4) : : a=(/-1., 2., -3., 4./), c • c= ABS(a) • El arreglo c será 1., 2., 3., 4.

  10. Subconjunto de un arreglo Para utilizar una sección del arreglo se especifican los índices : inicio:fin:incrementosubíndice triple Ej : INTEGER, DIMENSION : : arre(/1, 2, 3, 4, 5, 6, 7, 8, 9, 10/) El subconjunto arre( 1:10: 2) arre(1), arre(3), arre(5), arre(7) y arre(9) 1, 3, 5, 7 y 9 inicio valor del índice inicial del subconjunto fin valor del índice final del subconjunto Incremento incremento a través de los índices del arreglo. Si falta: inicio → 1 fin → fin del arreglo incremento → 1 Ej: INTEGER :: i=3, j=7 REAL, DIMENSION (10) :: a (/1., -2., 3., -4., 5., -6., 7., -8., 9., -10./) a(:) → todos los elementos a( i: j) → del tercer elemento al séptimo ( 3., -4., 5., -6., 7) a(i: j: i) → del tercer elemento al séptimo saltando de a 3 (3., -6.) a(i: j: j) → del tercer elemento al séptimo saltando de a 7 (3.) a(i:) → del tercer elemento al final (3., -4., 5., -6., 7., -8., 9., -10) a(j:) → del séptimo elemento al final (7., -8., 9., -10) a(: : i) → todos los elementos saltando 3 (1., -4., 7., -10.)

  11. Subindice vector especifica uno a uno los elementos del arreglo a ser usados en el cálculo. Ej: INTEGER, DIMENSION (5): : vec =(/1, 6, 4, 1, 9/) REAL, DIMENSION (10) : : a (/1., -2., 3., -4., 5., -6., 7., -8., 9., -10./) a(vec ) → es el arreglo [1., -6., -4., 1., 9.] Entradas y salidas • WRITE( *, *) a(1), a(2), a(3), a(4) • Con DO implícito • WRITE( *, *) (a(i), i=1,4) • Imprime los valores de a(1), a(2), a(3) y a(4) • En general: • WRITE( unidad , format) (var1, var2, …. Indice= icomienzo, ifin. incre) • READ ( unidad , format) (var1, var2, …. Indice= icomienzo, ifin. incre) • Dentro del write se pueden incluir tareas • Ej: WRITE( *, * ) (i, 2*i, 3*i, i= 1,3) • Imprime 1 2 3 2 4 6 3 6 9

  12. Ciclos anidados WRITE(*,*) ((i, j, j= 1, 3), i= 1, 3) Primero varia j y luego i 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 Los DO implícitos son muy importantes cuando se trabaja con arreglos que tienen dos o mas dimensiones.

More Related