Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARREGLOS
CONTENIDO :
Pregunta Gua:
Qu sucede con los datos almacenados en un arreglo, una vez que se termina
el proceso?
91
Sesin Presencial:
VI.1 A r r e g l o s Variables con subndices.
Estructura de datos.- Es una coleccin de datos del mismo tipo organizados de un modo
especifico. En Fortran se puede contar con 2 tipos de estructuras de datos: Estructuras de
datos Estticas y Estructuras de datos Dinmicas.
Estructuras Estticas de datos.- Son en las que se asigna una cantidad fija de memoria
cuando se declara la variable.
Estructuras Dinmicas de datos.- Son colecciones de datos cuyo tamao y forma de
estructura y de memoria puede aumentar disminuir a medida que se ejecuta el
programa.Frecuentemente se necesita realizar operaciones con conjuntos de datos
numricos o de datos no numricos del mismo tipo, y para esto, es conveniente
nombrarlos con una misma variable, pero ponindoles subndices, por ejemplo supngase
que se tiene la siguiente serie de valores: 75, 68, 93, 84,. ..etc. los cuales representan
las calificaciones obtenidas por un alumno y las llamaremos Nota (con el subndice i ),
sea Nota(I) dado que todos son datos del mismo problema.
Este es un ejemplo de arreglo lineal( llamado tambin arreglo unidimensional o vectorial).
Habr ejemplos cuyos datos no se ajusten al modelo lineal, sino a un modelo de una
matriz(Conjunto de modelos lineales).
Ejemplo anterior : Nota(1)=75, Nota(2)=68, Nota(3)=93), Nota(4)=84 ..... Nota(i)
Nota(1,1) nota (1,2) nota (1,3) nota (1,4) Representado por : Nota ( x , y ) donde x,y sern los sub-
Nota(4,1) nota (4,2) nota (4,3) nota (4,4) ndices, que indican la posicin del cada valor de Nota.
Los coeficientes a11,a12, a2i y a22 son nmeros dados, mientras que X1 x 2 y tambin Y1 y Y2
son variables.
92
6.1) Ejemplo.-
Escriba un ejemplo de arreglo lineal y un ejemplo de arreglo matricial:
Solucin x1 x2 x3 . . . . . xn
Arreglo matricial
9 8 7 6 Matriz (3,2)=0
Matriz (2,3)=3
5 4 3 2
Matriz (4,4)=6
1 0 1 2
3 4 5 6
Se usan arreglos en unos programas cuando se manejan conjuntos de datos del mismo
tipo, y si todos o parte de ellos se van a utilizar ms de una vez durante la ejecucin del
programa o si se necesitan almacenar para un uso posterior. Una vez concluido el
proceso, las memorias por ser virtuales (transitorias) desaparecen.
Ejemplo:
lolo(i), x(i,j), chencho(z)
2.- Todos los elementos de un arreglo deben ser del mismo tipo
(numricos, caracter, lgicos..)
3.- Los nombres de los arreglos (variables sub indicadas) se pueden utilizar en un
programa como si fueran variables ordinarias.
4.-Se puede hacer referencia a cualquiera de los elementos de un arreglo,
escribiendo el nombre del arreglo seguido del valor del(los) subndices encerrados
entre parntesis.
Ejemplo:
pepe(I) gaby (irenglon,icolumna) valor(n1+n2) lugar(n**2, m-18)
93
Debe observarse que los subndices son valores numricos, aun y cuando se utilicen
diferentes variables para representarlos en un mismo nombre de arreglo, por ejemplo si i y
j son subndices y tienen el mismo valor, entonces x(i) y x(j) se estn refiriendo al mismo
elemento del arreglo T. Al momento de asignar un valor a una variable con subndice, este
valor ocupa el lugar reservado en memoria para esa variable con ese subndice, una vez
almacenados de esta manera todos los valores, se les puede utilizar mas de una vez en
cualquier parte del programa.
2.- El valor mximo de un subndice en una variable nunca debe ser mayor que el
especificado al declarar la variable donde se dice la medida (dimensin).
3.- En un mismo programa no debe utilizarse una misma variable con y sin subndice
porque se genera confusin al lenguaje y por lo tanto un error.
Declaracin de arreglos
6.2) Ejemplo
Escriba las instrucciones necesarias para declarar un arreglo que contenga 3
elementos enteros ( utilice las 2 formas anteriores).
94
6.4) Ejemplo.- Escriba las declaraciones para 5 arreglos de diferentes tipos: entero, real,
caracter y lgico y que contengan 10 elementos cada uno
6.5) Ejemplo
Forma 1:
Se puede inicializar un arreglo usando las instrucciones Do y Read, para ello nos
auxiliaremos del ejemplo a continuacin descrito.
6.6) Ejemplo.-
Elabore el diagrama de flujo y codificacin para leer y desplegar una serie de n valores
enteros que representen al vector a.
PROGRAM VECTOR
INTEGER:: LIMITE = 20, I, N
INTEGER , DIMENSION (LIMITE ):: A
READ(*,1) N
1 FORMAT (I1)
DO I= 1,N
READ(*,2) A (I)
WRITE (*,2) A (I)
END DO
2 FORMAT ( X, I5)
END PROGRAM VECTOR
95
Aqu podemos observar varias cosas:
Forma 2:
Lectura y despliegue Iteradas, en esta forma se usa la instruccin Read con una
instruccin Do implcita, vea el siguiente ejemplo:
Ejemplo 6.7
Haga el diagrama de flujo y codificacin para leer y desplegar el mismo arreglo del
ejemplo anterior, pero usando lectura y despliegue iteradas.
PROGRAM INTERADO
IMPLICIT NONE
INTEGER :: I,N, LIMITE = 20
INTEGER :: DIMENSION (LIMITE)::A
READ (*,1)N
1 FORMAT (I1 ) ! AQU N SIEMPRE SER MENOR O IGUAL A NUEVE
READ (*,2) (A(I),I=1,N) ! ES NECESARIO CONOCER N PARA DISEAR FORMATO
2 FORMAT (9I1) ! AQU LEE NUEVE VALORES PARA A CON 1 DIGITO CADA UNO
WRITE (*,3) (a(i),I=1,N)
3 FORMAT(5X,9(A( ,I1, ) = ,I3))
END PROGRAM INTERADO
Despliega
_____a(1) = __5 A(2)=__3 A(3) = __8 A(4) =__6
En Diagrama sera
96
Forma 3:
Al momento de declarar una variable como arreglo se puede inicializar, por ejemplo
para inicializar un arreglo entero de 3 elementos hacemos: (no separar espacios de
ms)
Integer, Dimension (3):: A = (/15 , 7, 9 /)
Esta forma es una combinacin de los mtodos anteriores, por ejemplo si los valores
de todos los elementos del arreglo tienen una secuencia, por ejemplo 6, 8, 10, etc., se
puede utilizar un Do iterado al momento de la declaracin, o sea:
Si todos los elementos del arreglo van a tener el mismo valor, por ejemplo el valor 55,
hacemos:
97
Forma Anterior Forma Moderna
Desplegar arreglos Iterando equivale a:
Do i = 1 , 4 write(*,10) (c(e),I=1,4)
Write(*,*) c(i) 10 Format('', 'c = ',4(F6.1,1X))
Enddo
Multiplicar un Arreglo por un Escalar.- Esta operacin se ejecuta con cada uno de los
elementos del arreglo. Esto sucede por ser una funcin propia de FORTRAN 90-95 dentro de
sus funciones de librera ( Ver Anexo Cuatro A.4)
Donde:
Tipo .- Tipo de datos que contendr el arreglo (reales, enteros, etc.) a:b
No. de renglones (a = valor inicial, b = valor final)
No. de columnas (c = valor inicial, d = valor final)
#.-- No. de renglones y columnas (1 No. de renglones, 2 No. de columnas)
Nombre .- Nombre del arreglo (variable cualquiera)
98
Forma 3: Tipo:: nombre(#,#)
6.12) Ejemplo
6.13) Ejemplo
Real,Dimension(10:14,6:10)::valor
Real,Dimension (-7 : -3, 14:18)::arreglo
Real, Dimension ( 5 , 5):: matriz
Forma 1:
Se puede inicializar un arreglo usando las instrucciones Do y Read
Ejemplo 6.14
PROGRAM MATRIZ
IMPLICIT NONE
INTEGER :: I,J ,N,= 5 , MAXIMO 10
INTEGER, DIMENSION (MAXIMO, MAXIMO)::A
UNO: DO I=1,N
DOS: DO I=1,N
WRITE (*,*) DAME UN VALOR
READ (*,*) A (I, J)
WRITE(*,*) VALOR DADO ES , A(I, J)
END DO DOS
END DO UNO
END PROGRAM MATRIZ
99
Forma 2:
Lectura e impresin Iteradas, en esta forma se usa la instruccin Read con dos
instrucciones Do implcitas
Recordando:
Exterior:Do i=1, n
Interior: Do j=1, m
read(*,*)((a( i, j), i=1,n), j= 1,m)
Read ( *,*) a( I,j)
Enddo Interior
Enddo Exterior
PROGRAM MATRIZ_INTERADA
IMPLICIT NONE
INTEGER::I,J,N=5, MXIMO = 10
INTEGER, DIMENSION(MXIMO, MXIMO) =A
WRITE(*,*) DAME CINCO VALORES
READ (*,*) (( A (I,J), I=1,N), J=1,N)
WRITE (*,*) LOS VALORES LEIDOS SON
WRITE (*,1) (( A (I,J), I=1,N), J=1,N)
1 FORMAT (5, (5 ( 5X, I3, 2X ),1))
END PROGRAM MATRIZ_INTERADA
La solucin anterior dar como resultado 5 valores separados por 2 columnas, brinca
rengln y se repite 5 veces, es decir como una matriz.
Observe que en la impresin se cambio el nombre de los subndices.
100
6.15) Ejemplo
Diga si los siguientes arreglos son el mismo nmero de elementos y modo del contenido y si
se pueden restar el vector x del vector y.
Solucin
Los arreglos son exactamente iguales en el nmero de sus localidades (ms no en su
contenido)(lectura anterior de un arreglo matricial) , por lo tanto SI se pueden restar.
Notas
75 71 93
64 38 96
78 71 86
Observe que los datos se introducen ahora por columna, adems si no se usa la funcin,
se hubiera tornado como un arreglo lineal de 3*3 = 9 elementos.
Tambin se puede hacer lo siguiente: se declara la variable como arreglo, y dentro del
programa se inicializa ste, antes de que se utilice.
101
Evidencias del aprendizaje
6.25.- Elabore un programa que lea cinco fuerzas en tres dimensiones y las
sume entre s, para determinar la fuerza resultante.
102
6.27.- Haciendo uso de los operadores relacionales, localice el valor mayor
entre tres nmeros ledos.
6.30.- En una piscina de clavados con 10m de profundidad mxima; una serie
de n competidores se lanzan y cada uno llega a distinta profundidad
(p); se desea saber cual es la presin mxima que se sometieron, si
la alberca tena una temperatura de 16.6 grados centgrados.( a esa
temperatura un centmetro de mercurio = 0.01358 kilogramos/
cm 2 = 13.58 cms de agua). Suponga la profundidad p en cms.
103
6.33.- Disee un programa que lea y despliegue lo ledo y el promedio de
cada alumno y el promedio general de todos los alumnos si se tiene:
104
6.36.- Basndose en el problema 6.35 que pide como calcular el promedio
individual de cada alumno, el promedio general del grupo; genere
adicionalmente el promedio de cada materia. Para ello es
recomendable hacer uso de arreglos de la siguiente forma. Presente la
solucin haciendo uso del estatuto RESHAPE.
Notas Prom.
Matricula Nombre 1 2 3 4 5
105