1+ program estructuras
2+ implicit none
3+ ! Manejo de Arrays en Fortran
4+ ! Los arrays en Fortran son variables multidimensionales que contienen más de un valor donde se
5+ ! accede a cada valor utilizando uno o más índices. En Fortran los arrays por defecto se inician en 1
6+
7+ ! Declaración de Arrays
8+ ! Se pueden declarar arrays de cualquier tipo. Hay dos notaciones para declarar variables array:
9+ ! Usando el atributo dimension o añadiendo las dimensiones del array al nombre de la variable
10+ ! TIPO, DIMENSION(dimensiones) :: nombre
11+ ! TIPO, DIMENSION :: nombre(dimensiones)
12+ ! TIPO :: nombre(dimensiones)
13+
14+ integer :: i, n
15+
16+ ! Declaración estática de Arrays o Tablas
17+
18+ ! Array de una dimension
19+ integer , dimension (10 ) :: array1
20+ ! Una declaración de array equivalente
21+ integer :: array2(10 )
22+
23+ ! Array de dos dimensiones
24+ integer , dimension (10 , 10 ) :: array3
25+
26+ ! Limites inferior y superior de una dimensión
27+ real :: array4(0 :4 )
28+ real :: array5(- 5 :5 )
29+
30+ integer , dimension (2 ,3 ) :: mat1 = reshape ( (/ 1 , 2 , 3 , 4 , 5 , 6 / ) , (/ 2 ,3 / ) )
31+
32+ ! Declaración dinámica de Arrays o Tablas
33+
34+ ! La creación de este tipo de tablas se hace en dos etapas:
35+ ! 1. Declaración de la tabla mediante el atributo ALLOCATABLE, sin información sobre el
36+ ! tamaño de la misma.
37+ ! TIPO, ALLOCATABLE :: nombre_tabla(ind-dim)
38+ ! donde ind-dim es la indicación sobre el número de dimensiones de la tabla.
39+ ! 2. Cuando se desee crear la tabla, se usará la instrucción
40+ ! ALLOCATE(nombre_tabla(dim))
41+
42+ real * 4 , allocatable :: tabla(:, :)
43+
44+ ! Manejo de Tipos Derivados
45+ type :: t_pair
46+ integer :: i
47+ real :: x
48+ end type
49+
50+ type (t_pair) :: pair
51+
52+ ! Rebanado o corte de arrays - notación rebanado
53+
54+ array1 = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ! Constructor Array
55+ array2 = [(i, i = 1 , 10 )] ! Bucle Do implícito
56+
57+ array4 = [1.0 , 2.0 , 3.0 , 4.0 , 5.0 ]
58+ print * , array4(0 )
59+ print * , array4(4 )
60+ print * , mat1
61+
62+ print * , ' Array inicial: ' , array1
63+ array1(:) = 0 ! Establece todos los elementos a cero
64+ print * , ' Todos los elementos a cero: ' , array1
65+ array1(1 :5 ) = 1 ! Establece los primeros cinco elementos a 1
66+ print * , ' Cinco primeros elementos a 1: ' , array1
67+ array1(6 :) = 2 ! Establece todos los elementos después de 5 a 2
68+ print * , ' Cinco últimos elementos a 2: ' , array1
69+
70+ print * , array2(1 :10 :2 ) ! Imprime los elementos con índice impar
71+ print * , array3(:,1 ) ! Imprime la primera columna en un array 2D
72+ print * , array2(10 :1 :- 1 ) ! Imprime un array en reverso
73+
74+ ! Declaración de una varibale type e inicialización de sus miembros
75+
76+ pair% i = 1
77+ pair% x = 0.5
78+ print * , ' t_pair i: ' , pair% i, ' t_pair x : ' , pair% x
79+
80+ print * , ' Dimensión de la matriz dinámica: '
81+ read * , n
82+ if (allocated (tabla) .eqv. .true. ) then
83+ allocate (tabla(n, n))
84+ end if
85+
86+ end program estructuras
0 commit comments