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. …. a(1) a(2) a(3) a(4) a(5) a(6) ….. arreg lo 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

Arreglos (vectores , matrices , ….)

  • Upload
    charis

  • View
    102

  • Download
    2

Embed Size (px)

DESCRIPTION

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 . - PowerPoint PPT Presentation

Citation preview

Page 1: Arreglos  (vectores ,  matrices , ….)

Arreglos (vectores, matrices, ….)Arreglos (vectores, matrices, ….)

Un arreglo es un grupo de variables o constantes, todas del mismo tipo referenciadas con un mismo nombre.

…. a(1) a(2) a(3) a(4) a(5) a(6) …..

arregloCada 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 ciclosEj DO i=1,100

a(i)=sqrt(a(i)) END DO

Page 2: Arreglos  (vectores ,  matrices , ….)

Declaración de los ArreglosDeclaración de los ArreglosLos 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. Ej REAL, DIMENSION (100) : : a

Cuando se define la variable CHARACTER se tiene que tener en cuenta la longitud de caracteres y elemento:sEj CHARACTER(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/)

Page 3: Arreglos  (vectores ,  matrices , ….)
Page 4: Arreglos  (vectores ,  matrices , ….)

Inicialización de los arreglosInicializació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) : : arregloDO i=1,10arreglo(i) = REAL(i)END DO

REAL, DIMENSION(10) : : arregloarreglo=(/1., 2., 3., 4., 5., 6., 7., 8., 9., 10./)

REAL, DIMENSION(10) : : arregloarreglo=0. ! todos los elementos iguales

INTEGER, DIMENSION(10) : : num, cuadDO i=1,10num(i)=i+icuad(i)= num(i)**2END DO

Page 5: Arreglos  (vectores ,  matrices , ….)

2. Inicialización por sentencias de declaraciónEj de 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

3.Inicialización de arreglos con READ

Valores de borde de los arreglosValores de borde de los arreglosNormalmente se usan valores de 1 a NEj: 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

Page 6: Arreglos  (vectores ,  matrices , ….)

! ! Controlar que el índice se encuentre dentro de los límites del arregloControlar que el índice se encuentre dentro de los límites del arreglo

A(1)

A(2)

A(3)

A(4)

A(5)

B(1)

B(2)

B(3)

B(4)

……

Arreglo A Arreglo B

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 arreglosLas 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)

Page 7: Arreglos  (vectores ,  matrices , ….)

Buena costumbre: declarar el tamaño de los arreglos usando PARAMETER y realizar cambios rápidamente.

Usando arreglos completos o un subconjuntoUsando arreglos completos o un subconjunto

a VALOR

a(1) 1.a(2) 2.a(3) 3.a(4) 4.

b VALOR

b(1) 5.b(2) 6.b(3) 7.b(4) 8.

c VALOR

c(1) 6.c(2) 8.c(3) 10.c(4) 12.

a + b = c

PROGRAM suma_arreglosIMPLICIT NONE!INTEGER : : i

Page 8: Arreglos  (vectores ,  matrices , ….)

REAL, DIMENSION (4) : : a=(/ 1., 2., 3., 4./)REAL, DIMENSION (4) : : b=(/ 5., 6., 7., 8./)REAL, DIMENSION (4) : : c, d!! Elemento por elementoDO i=1,4

c(i)= a(i)+b(i)END DO!! Suma en forma conjunta todos los elementos de los arreglosd= a+b !! Escribo los resultadosWRITE(*,*) “c”DO i=1,4WRITE(*,*) c(i)END DO WRITE(*,*) “d”, d!END PROGRAM suma_arreglos

Page 9: Arreglos  (vectores ,  matrices , ….)

Impresiónc 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./), cREAL : : b=10c=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 LOGREAL, DIMENSION (4) : : a=(/-1., 2., -3., 4./), cc= ABS(a)El arreglo c será 1., 2., 3., 4.

Page 10: Arreglos  (vectores ,  matrices , ….)

Subconjunto de un arregloSubconjunto de un arregloPara utilizar una sección del arreglo se especifican los índices :

inicio:fin:incremento subíndice tripleEj : 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=7REAL, DIMENSION (10) :: a (/1., -2., 3., -4., 5., -6., 7., -8., 9., -10./)a(:) → todos los elementosa( 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.)

Page 11: Arreglos  (vectores ,  matrices , ….)

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 salidasEntradas 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 tareasEj: WRITE( *, * ) (i, 2*i, 3*i, i= 1,3)Imprime 1 2 3 2 4 6 3 6 9

Page 12: Arreglos  (vectores ,  matrices , ….)

Ciclos anidados

WRITE(*,*) ((i, j, j= 1, 3), i= 1, 3)

Primero varia j y luego i1 11 21 32 12 22 33 13 23 3

Los DO implícitos son muy importantes cuando se trabaja con arreglos que tienen dos o mas dimensiones.