Algoritmos y Programación — Parte V

Arreglos

Juan Manrique
4 min readApr 22, 2019

Los arreglos son un tipo de datos estructurado conformado por una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los datos de un arreglo es el acceso directo, mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar elementos anteriores o posteriores. En la mayoría de los lenguajes de programación, el primer valor del arreglo es accedido con el índice 0, es decir, las posiciones de los valores de los arreglos comienzan a enumerarse desde el cero.

Declarar arreglos

# Declaración de un array en Ruby (declaración formal)
mi_arreglo = Array.new # Crea un arreglo vacío
mi_array4 = Array.new(5) # Crea el arreglo [nil, nil, nil, nil, nil]# Declaración de un array en Ruby (declaración literal)
mi_array = [] # Crea un arreglo vacío
mi_array2 = [3, 4, 7, 12, 0] # Crea un arreglo con los valores indicados# Declaración de un array en Ruby (otras formas de declaración)
mi_array3 = (0..5).to_a # Crea el arreglo [0, 1, 2, 3, 4, 5]

Acceder a valores de arreglos

# Crea un arreglo nuevo (declaración literal)
mi_array = [3, 4, 7, 12, 0]
puts mi_array[1] # Muestra el valor de la 2da casilla: 4# Recorre todo el arreglo mostrando el valor de cada posición
for i in 0..mi_array.length — 1 do
puts mi_array[i]
end

Modificar los valores de un arreglo

mi_array = [3, 4, 7, 12, 0] # Crea el arreglo# Sobreescribe el valor de la 3ra casilla
mi_array[2] = 0
# => [3, 4, 0, 12, 0]
# Cambia todos los valores del arreglo por valores aleatorios
for i in 0..mi_array.length — 1 do
mi_array[i] = rand(20)
end
# => [16, 11, 9, 4, 13]

Agregar nuevos valores a un arreglo

mi_array = [1, 2]mi_array[1] = 0 # Sustituye (sobreescribe) la 2da posición del arreglo
# => [1, 0]
mi_array[3] = 6 # Pone en nil la 3ra posición del arreglo y agrega el
# => [1, 0, nil, 6] Valor 6 en la 4ta posición
mi_array.push( 5 ) # Agrega el valor 5 al final del arreglo
# => [1, 0, nil, 6, 5]
mi_array << 8 # Agrega el valor 8 al final del arreglo
# => [1, 0, nil, 6, 5, 8]
mi_array << 3 << 7 # Agrega los valores 3 y 7 al final del arreglo
# => [1, 0, nil, 6, 5, 8, 3, 7]

Obtener y retirar el último valor de un arreglo

mi_array = [3, 4, 1, 12, 7]
valor = mi_array.pop() # valor = 7
# => mi_array= [3, 4, 1, 12]

Obtener y retirar el primer valor de un arreglo

mi_array = [3, 4, 1, 12, 7]
valor = mi_array.shift() # valor = 3
# => mi_array= [4, 1, 12, 7]

Saber si un arreglo está vacío

mi_array = []
mi_array.empty? # empty? devuelve false si el arreglo tiene elemento(s)
# => true

Saber la cantidad de elementos de un arreglo (longitud)

mi_array.length # La longitud del arreglo es cero
# => 0
mi_array.size # El tamaño del arreglo es cero
# => 0

TODO: Ordenamiento de arrays

TODO: Strings

La publicación anterior trata sobre las Estructuras Iterativas. La siguiente será sobre Arreglos Bidimensionales.

Ejercicios propuestos

  1. Escriba el código Ruby que genere un arreglo con los primeros 20 números naturales.
  2. Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios.
  3. Escriba el código Ruby que genere un arreglo con los 17 números naturales que siguen al 5.
  4. Escriba el código Ruby que genere un arreglo con 10 números enteros aleatorios y devuelva el mayor número de dicho arreglo.
  5. Escriba el código Ruby que genere un arreglo con 10 números enteros aleatorios y devuelva el menor número de dicho arreglo.
  6. Escriba el código Ruby que genere un arreglo con 10 números enteros aleatorios y devuelva el promedio de todos los valores de dicho arreglo.
  7. Escriba el código Ruby que genere una lista de números aleatorios y devuelva el promedio, el valor mínimo y el valor máximo.
  8. Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios y permita verificar si contiene un número indicado por el usuario.
  9. Escriba el código Ruby para verificar si un texto es palíndromo.
  10. Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios distintos (no puede haber valores repetidos en el arreglo).
  11. Escriba el código Ruby que genere un arreglo con 20 números aleatorios y, posteriormente, lo invierta sin usar un arreglo auxiliar.
  12. Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios y devuelva el arreglo con sus valores ordenados de menor a mayor.
  13. Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios y devuelva el arreglo con sus valores ordenados de mayor a menor.
  14. Escriba el código Ruby para calcular la sucesión de Fibonacci de un número dado.
  15. Escriba el código Ruby para calcular el valor de Fibonacci de un número dado.

--

--

Juan Manrique

SW developer. Coding Mentor @academia_hack. Agile promoter. Writer. Simplifier. Motivator. Venezuelan Rums Expert Evangelist. At your services.