Skip to content

Commit 92a2d41

Browse files
authored
Merge pull request mouredev#4196 from edalmava/fortran
#3 - Fortran
2 parents 9345b34 + 42e0869 commit 92a2d41

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
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

Comments
 (0)