program dynamicArrays

!===============================================================================!
! Ejemplo de uso de arrays dinamicos. Se declara el array como allocatable      !
! y con dimension(:). Luego siempre que se quiera instanciar el array, se       !
! hace:                                                                         !
!    allocate(array(dim))  donde dim es una dimension ya instanciada (integer)  !
!    deallocate(array)     cuando se termino de usar el array                   ! 
! Se puede luego repetir el procedimiento con otra dimension                    !
!===============================================================================!



integer, allocatable, dimension(:) :: dynamicVector
integer :: dimension

!///// instancio la dimenion y reservo el espacio necesario para el vector  /////

dimension = 3
allocate(dynamicVector(dimension))

do i=1,dimension
   dynamicVector(i) = i
end do

print *, "La dimension es:",dimension
print *, "el vector es: ", dynamicVector
print *,"--------------------------------------------"


!///// elimino el espacio reservado para el array y lo instancio con otra dim ////

deallocate(dynamicVector)
dimension = 5
allocate(dynamicVector(dimension))

do i=1,dimension
   dynamicVector(i) = i
end do

print *, "La dimension es:",dimension
print *, "el vector es: ", dynamicVector
print *,"--------------------------------------------"

deallocate(dynamicVector)

end program dynamicArrays