Algoritmos y Programación — Parte V
Arreglos
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íomi_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íomi_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ónmi_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
# => 0mi_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
- Escriba el código Ruby que genere un arreglo con los primeros 20 números naturales.
- Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios.
- Escriba el código Ruby que genere un arreglo con los 17 números naturales que siguen al 5.
- Escriba el código Ruby que genere un arreglo con 10 números enteros aleatorios y devuelva el mayor número de dicho arreglo.
- Escriba el código Ruby que genere un arreglo con 10 números enteros aleatorios y devuelva el menor número de dicho arreglo.
- 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.
- 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.
- 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.
- Escriba el código Ruby para verificar si un texto es palíndromo.
- Escriba el código Ruby que genere un arreglo con 20 números enteros aleatorios distintos (no puede haber valores repetidos en el arreglo).
- Escriba el código Ruby que genere un arreglo con 20 números aleatorios y, posteriormente, lo invierta sin usar un arreglo auxiliar.
- 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.
- 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.
- Escriba el código Ruby para calcular la sucesión de Fibonacci de un número dado.
- Escriba el código Ruby para calcular el valor de Fibonacci de un número dado.