El documento define los arreglos (arrays) como conjuntos finitos de elementos del mismo tipo de dato que se pueden acceder mediante su posición. Explica los arreglos unidimensionales (vectores y cadenas) y bidimensionales (matrices y cadenas de cadenas), y proporciona ejemplos de declaración, asignación y uso de vectores unidimensionales, incluyendo tres algoritmos de ejemplo.
2. Definición de Arreglo(Array)
• Conjunto finito de elementos del mismo tipo de
dato.
• A los elementos se puede acceder indicando la
posición que ocupan.
• Se numeran consecutivamente O, 1, 2, 3, etc.
• Clasifican en unidimensionales
– Vectores y Cadenas
• Bidimensionales
– Matrices y Cadenas de cadena
3. Arreglos Unidimensionales
• Vectores.
– Formado por números (enteros o reales)
• Cadenas.
– Caracteres (letras, símbolos y números)
• Ejemplo. Un arreglo llamado t de N
elementos.
4. Vectores
• La forma de declarar un vector es la siguiente:
Tipo_de_dato identificador[tamaño]
• Donde:
– tipo_de_dato es entero o real.
– Identificador es el nombre del vector.
– tamaño es el número de elementos en el vector.
• Ejemplos.
ENTERO a[5]
REAL vec[3], x[20]
5. Vectores
• Asignación de valores.
– Al declarar se puede inicializar el vector.
Ejemplo:
ENTERO vec[4] ← { 23, 5, 34, -4, 6}
ENTERO V[3] ← {0}
ENTERO Z[4] ← {3,6,2}
ENTERO A[2]
6. Arreglos Vectores
• Asignación de valores.
– Después de declarar se hace elemento por elemento.
Ejemplo:
ENTERO vec[5], x ← 3
vec[0] ← 4
vec[x - 2] ← 8 + 5
vec[x] ← vec[0] + vec[1]
vec[3] ← vec[0] + 6
7. Vectores
• Ejemplo 1. Escribir un algoritmo que lea 10 valores enteros y los muestre
empezando por el ultimo ingresado, en seguida el penúltimo y así
sucesivamente hasta el primer valor ingresado.
INICIO
ENTERO vec[9], k
PARA(k ← 0; k < 10; k ←k + 1)
ESCRIBIR(“ingresa un numero entero ”)
LEER(vec[k])
FIN PARA
ESCRIBIR(“El vector en orden inverso es: n ”)
PARA(k ← 0; k < 10; k ←k + 1)
ESCRIBIR( “ “, vec[ 9 - k] )
FIN PARA
FIN
8. Vectores
• Ejemplo 2. Escribir un algoritmo que lea el numero de mes y
muestre el numero de días que tiene dicho mes.
INICIO
ENTERO mes[11+ ← ,31,29,31,30,31,30,31,31,30,31,30,31}, m
ESCRIBIR(“Programa que calcula el numero
de días de un mes”)
ESCRIBIR(“Ingresa un numero de mes del año: ”)
LEER( m )
ESCRIBIR(“El numero de días de dicho mes son: ”, mes*m-1] )
FIN
9. Vectores
• Ejemplo 3. Realizar un algoritmo que llene un vector de N números
enteros de forma aleatoria, lo muestre y después elimine los elementos
repetidos guardando el resultado en el mismo vector y por ultimo mostrar
el nuevo vector. Los elementos deben conservar su orden relativo. Para
ello no se puede utilizar ningún vector auxiliar y 0 < N < 100, y los
aleatorios van de 1 a 50.
-
10. INICIO
ENTERO vec[99], k, x, z,n, r ← 0
ESCRIBIR(“¿De cuántos elementos será tu vector? ”)
LEER( n )
ESCRIBIR(“El vector es: n ”)
PARA(k ← 0; k < n; k ← k + 1)
vec*k+ ←ALEATORIO(50)
ESCRIBIR(“ ”, vec[k])
FIN PARA
PARA(k ← 0; k < n -r; k ← k + 1)
PARA(x ← k + 1; x < n ; x ← x + 1)
SI( vec[k] = vec[ x ])ENTONCES
PARA(z ← x; z < n ; z ← z + 1)
vec[z] ← vec[z+1]
FIN PARA
r←r+1
FIN SI
FIN PARA
FIN PARA
ESCRIBIR(“El vector sin datos repetidos es: n ”)
PARA(k ← 0; k < n - r; k ←k + 1)
ESCRIBIR(“ ”, vec[k])
FIN PARA
FIN
11. • Ejercicio 1.
Realizar un algoritmo que llene un vector de n
elementos con valores aleatorios de 1 a 10 y
recorra el primer elemento al segundo y el
segundo al tercero, hasta llegar al ultimo, el cual
pasara a ser el primero. Mostrar el vector
original y el vector resultado. El máximo
elementos del vector es 50.
12. INICIO
ENTERO vec[50], k, n, aux
ESCRIBIR(“¿De cuántos elementos será tu vector máximo 50? ”)
LEER( n )
ESCRIBIR(“El vector es: n ”)
PARA(k ← 0; k < n; k ← k + 1)
vec*k+ ←ALEATORIO(10) + 1
ESCRIBIR(“ ”, vec[k])
FIN PARA
PARA(k ← 1; k < n ; k ← k + 1)
aux ← vec[k]
vec*k+ ← vec[0]
vec*0+ ← aux
FIN PARA
ESCRIBIR(“El vector resultado es: n ”)
PARA(k ← 0; k < n ; k ←k + 1)
ESCRIBIR(“ ”, vec[k])
FIN PARA
FIN
14. INICIO
ENTERO vec[99], k, x, aux,n, r ← 0
ESCRIBIR(“¿De cuántos elementos será tu vector? ”)
LEER( n )
ESCRIBIR(“El vector es: n ”)
PARA(k ← 0; k < n; k ← k + 1)
vec*k+ ←ALEATORIO(50) + 10
ESCRIBIR(“ ”, vec[k])
FIN PARA
PARA(k ← 0; k < n ; k ← k + 1)
SI( vec*k+ MOD 2 ≠ 0 ) ENTONCES //si un numero es impar
PARA(x ← k; x > 0 + r ; x ← x - 1)
aux ← vec[x -1]
vec[x-1+ ← vec[x]
vec*x+ ← aux
FIN PARA
r←r+1
FIN SI
FIN PARA
ESCRIBIR(“El vector resultado es: n ”)
PARA(k ← 0; k < n ; k ←k + 1)
ESCRIBIR(“ ”, vec[k])
FIN PARA
FIN
16. Ejercicio 4
Diseñar un algoritmo para jugar al Mastermind. En dicho
juego, un jugador A escribe un número de 4 cifras y otro
jugador B intenta adivinarlo. No se permite que haya
repeticiones en las cifras del número. Con cada intento de B, A
debe decirle cuántas cifras ha acertado y, de éstas, cuántas
están correctamente colocadas.
Ejemplo: Número secreto: 1234
Intento 1: 4321 4 correctas, 0 colocadas
Intento 2: 2143 4 correctas, 0 colocadas
Intento 3: 1243 4 correctas, 2 colocadas
Intento 4: 1234 4 correctas, 4 colocadas