Está en la página 1de 35

09 Arreglos (Arrays)

"Una computadora hará lo que le digas que haga, pero eso puede ser muy
diferente a lo que tengas en mente"

- Joseph Weizenbaun
Vectores
 Los vectores son arreglos unidimensionales, es decir,
poseen una sola dimensión.
 Representación de un arreglo de N notas:

Donde el subíndice o índice de un


elemento designa su posición en el
dentro del arreglo/vector.
Vectores – Notación (Pseudocódigo y
C#)
 Para un vector que almacena n notas (Tamaño n):
 Notas[0], Notas[1], … Notas[n-2], Notas[n-1]
 Gráfica:
Notas[0] Notas[1] … Notas[n-2] Notas[n-1]

 Para un vector que almacena 5 notas:


 Notas[0], Notas[1], Notas[2], Notas[3], Notas[4]
 Gráfica:
Notas[0] Notas[1] Notas[2] Notas[3] Notas[4]
72 84 65 78 90
Vectores - Ejemplo

 Considerar el vector TEMPERATURA que contenga


las temperaturas horarias registradas en una ciudad
durante un día

 Vector: TEMPERATURAS[i]
 Donde 0 <= i <= 23
Límite inferior del vector: 0
Límite superior del vector: 23
Rango del vector: número de elementos: n = 24
Vectores - Ejemplo

Considerar un vector ALUMNOS con los


nombres de los alumnos de un curso
Alumnos(0) Adolfo
Alumnos(1) Juan
Alumnos(2) Ariana
Alumnos(3) César
… …
Alumnos(n) Daniela
Vectores – Manipulación

 Alumnos[1]  ‘Orlando’
Ahora la posición 1 del vector almacena el nombre
‘Orlando’ perdiendo el valor anterior (‘Juan’)
Cada elemento de un vector es accesible
directamente
Los subíndices de un vector pueden ser:
Enteros
Variables
Expresiones enteras
Vectores - Ejemplo

Alumnos(0) Adolfo Si i  2, ¿qué hay


en…?
Alumnos(1) Orlando
Alumnos[ i ]
Alumnos(2) Andrea Alumnos[i + 1]
Alumnos(3) César Alumnos[i + 2]
Alumnos[i – 1]
Alumnos(4) Jorge
Alumnos[i * 4]
Alumnos(5) Daniela Alumnos[ 4 ]
Alumnos(6) Susana Alumnos[3 * 2]
Alumnos(7) Carlos
Vectores – Declaración
 Pseudocódigo:
Tipo_Dato[] <Nombre_Arreglo>[<Tamaño_Arreglo>]
 Donde:
 Tipo puede ser un tipo de dato simple: entero, real, carácter,
cadena, booleano

 Ejemplo:
double[] Estaturas[10]
 Significa que:
 Estaturas es un vector de diez elementos (índices del 0 al 9) de
tipo double.
Vectores – Declaración
 C#:
Tipo_Dato[] <Nombre_Arreglo> = new <Tipo_Dato>[<Tamaño_Arreglo>]
 Donde:
 Tipo puede ser un tipo de dato simple: entero, real, carácter, cadena,
booleano

 Ejemplo:
string Nombres[] = new string[20]
 Significa que:
 Nombres es un vector de veinte elementos (índices del 0 al 19) de tipo
cadena.
Vectores – Declaración
 En C#, los índices de los arreglos inician en cero (zero-based index)siendo el
primer elemento aquel cuyo índice inicia en cero y el último el que es en
uno menor a la longitud del arreglo.
 Para el arreglo anterior de “Nombres” de tipo string con una longitud de 20:
 Nombres[0]: Representa el primer elemento en el arreglo.
 Nombres[1]: Representa el segundo elemento en el arreglo.
 Nombres[2]: Representa el tercer elemento en el arreglo.
 Nombres[18]:Representa el penúltimo elemento en el arreglo.
 Nombres[19]: Representa el último elemento en el arreglo.
 Observar que el arreglo posee sólo un nombre; cada elemento se referencia
por su subíndice.
Operaciones con vectores

 Asignación
 Recorrido (acceso secuencial)
 Actualización (añadir datos)
 Ordenación y búsqueda
Operación con vectores - Asignación

A[20] = 5 // Se asigna el valor 5 al elemento 20


del vector A

 Si se desea asignar valores a “todos” los elementos de


un vector, se debe recurrir a estructuras repetitivas
(para/desde, mientras)
For i = 0 to 4 [inc 1]
A[i]  8
End_For
Operación con vectores – Recorrido
(Acceso secuencial)
 Se puede acceder a los elementos de un vector
para introducir datos en él o bien para visualizar su
contenido.
 Se realiza utilizando estructuras repetitivas
For i = 0 to 19 [inc 1]
Write (V[i])
End_For
Operaciones con vectores -
Actualización (Añadir datos)
 Añadir un nuevo elemento al final del vector, siempre
que no se exceda el tamaño definido al inicio del
programa

int V[6]
 V[2] = 14
 V[5] = 12 // Última posición disponible
 V[7] = 10 //Error, índice fuera de los límites del arreglo
Operaciones con vectores –
Ordenación y búsqueda
 Ordenación: Organización de los elementos de
acuerdo a un criterio establecido entre los elementos
del arreglo. (Para números: orden descendente o
ascendente, para textos orden alfabético, etc.)
 Búsqueda: Verificación de los elementos en el arreglo
hasta encontrar uno o varios elementos que cumpla
con la condición de investigación establecida.
 En general las operaciones en un arreglo implican el
procesamiento o tratamiento de los elementos del
arreglo.
Ventajas de la utilización de arreglos

Permiten el manejo de un conjunto de datos


que comparten las mismas características (al
ser del mismo tipo).
Pueden ser utilizados en ciclos con lo que se
evitan casi todas las tareas repetitivas.
Evitan la declaración de un gran número de
variables que hacen complejo el
mantenimiento de un programa
Consideremos unas interrogantes
antes de continuar…
1. ¿Cuál es la mínima cantidad de variables de tipo
entero que se necesitan para devolver al usuario la
sumatoria de 10 números que él ha ingresado?
2. ¿Cuál es la mínima cantidad de variables de tipo
entero que se necesitan para devolver al usuario el
promedio de 10 números que él ha ingresado?
3. ¿Cuál es la mínima cantidad de variables de tipo
entero que se necesitan para devolver al usuario el
número mayor de 10 números que él ha ingresado?
4. ¿Cuál es la mínima cantidad de variables de tipo
entero que se necesitan para devolver al usuario 10
números, que él ha ingresado, ordenados de forma
ascendente?*
Ejemplos – Ejemplo 1
 Realice un algoritmo donde se defina un arreglo de 40
posiciones, en el cual se almacenen numeros reales, se
calcule la suma y el promedio de los valores del vector.
Ejemplos – Ejemplo 2
 Se tienen los sueldos de un grupo de 70 empleados de una
empresa y se necesita saber cuántos de estos empleados tienen un
sueldo superior al del promedio del grupo
Ejercicio en clase

 Construya un algoritmo en pseudocódigo para


almacenar en un arreglo unidimensional los primeros 30
números primos. Al final, muestre el arreglo
correspondiente.
Ejercicios complementarios con
arreglos de una dimensión
1. Solicitar al usuario el ingreso de 7 números reales. Asignarlos a un
arreglo. Mostrar al usuario el doble de cada uno de los números
ingresados. Ejemplo:
 9 18
 12  24
…

2. Solicitar al usuario el ingreso de 10 nombres (guardarlos en un


arreglo) después el programa permitirá buscar nombres en el
arreglo. Debe indicar si el nombre se encuentra o no dentro del
arreglo y en qué posición se encuentra. El programa se detiene
hasta que el usuario indica que ya no desea buscar nombres.
Ejercicios complementarios con
arreglos de una dimensión
3. Solicitar 9 notas enteras entre 0 y 100. Después mostrar al usuario
cada una de las notas que son mayores al promedio y su posición
ordinal en el arreglo (primero, segundo, tercero, etc.)+

4. Solicitar 10 caracteres alfabéticos (‘a’, ‘d’, ‘f’, etc) diferentes e


ingresarlos a un arreglo. Para cada ingreso, el programa debe
validar que no exista previamente en el arreglo, de lo contrario
indicar al usuario que el carácter ya existe y solicitar uno nuevo.
Cuando el arreglo esté completo, se muestran todos los elementos
al usuario.
Arreglos de varias dimensiones

 Arreglos que se definen por 2 o más índices


 Utilizados para grupos de datos que son representados
en una tabla o matriz
 Tipos
 Arreglos bidimensionales (2 dimensiones)
 Arreglos multidimensionales (3 o más dimensiones)
Arreglos bidimensionales

 Se conocen como:
 Matrices
 Tablas
 Vector de vectores
 Conjunto de elementos del mismo tipo.
 Requiere 2 índices o subíndices para identificar cada
elemento.
Arreglos bidimensionales

 Acceso a cada
elemento:
 2 índices:
Primero la fila(i)
Luego, la columna (j)
 Arreglo[i,j]
Tiene i filas
Tiene j columnas
Tamaño de arreglo = i*j
elementos
Arreglos bidimensionales - Ejemplo

 La matriz SALTOS representa una tabla de notaciones de saltos de


altura, donde las filas representan el nombre del atleta y las
columnas las diferentes alturas que realiza. Se almacenan los datos
de 5 saltos para 4 atletas. Los símbolos almacenados en la tabla
son:
 X = salto válido 2.00 2.25 2.50 2.75 3.00
 0 = salto nulo o no intentado Ruiz X 0 X X 0
 ¿Número de filas? Reyes 0 0 X X 0
 ¿Número de columnas?
Marroquín 0 X X 0 X
 ¿Tamaño de la matriz?
Hernández 0 0 0 X X
Arreglos bidimensionales (matrices) -
Notación
 Pseudocódigo:

Tipo_dato[,] <nombre_arreglo>[<fila>, <columna>]


 Donde:
 Tipo puede ser un tipo simple: entero, real, carácter, cadena, booleano

 Ejemplo:

Entero[,] TablaMultiplicar[10,10]

 Significa que
 TablaMultiplicar es una matriz de cien elementos (10 columnas y 10 filas = 100
casillas) de tipo entero
Arreglos bidimensionales
 Manipulando el arreglo:
 //…
 FOR i = 1 TO 10 [INC 1]
 FOR j = 1 TO 10 [INC 1]
 TablaMultiplicar[i,j] = READ(dato)
 TablaMultiplicar[i,j] = i * j
 WRITE(TablaMultiplicar[i,j])
 END_FOR
 END_FOR
 //…
Ejemplo 1

 Dada una matriz cuadrada A de 5 x 5, construya un


algoritmo en pseudocódigo que permita determinar si
dicha matriz es simétrica. Se considera que una matriz
es simétrica si para todos los elementos de la matriz se
cumple que A[i,j] = A[j,i]
Ejemplo - Análisis
 Entradas: 25 valores para llenar la matriz
 Salidas: mensaje que indica si es simétrica o no.
 Restricciones: solo se permiten enteros
 Proceso: Se maneja una variable de tipo entero para
llevar el control de simetría, se hace un recorrido
secuencial de la matriz, evaluando el valor de cada
casilla A[i,j] con el valor de la casilla A[j,i], si no son
iguales se aumenta en uno la variable de control. Al
final del recorrido, si la variable de control es mayor a
cero, es decir que se encontró por lo menos un par de
casillas que no son iguales y por tanto, no es simétrica.
Ejemplo 1 - Pseudocódigo
Ejemplo 2
 Escriba el algoritmo que permita sumar el número de elementos
positivos y negativos de una tabla T de tamaño 4 x 5.
 Análisis:
 Entradas:
 Los 30 números solicitados para llenar la tabla
 Salidas:
 Suma de positivos, negativos y neutros encontrados en la tabla
 Restricciones:
 No se incluye el 0
 Proceso:
 Llenar la tabla, evaluando si el valor en cada casilla es mayor o menor a 0,
para sumar el valor en el contador que corresponda.
Ejemplo 2 - Pseudocódigo
Ejercicios

1. Realice un algoritmo que permita realizar la


suma de dos matrices bidimensionales,
utilizando clases y métodos.
Ambas matrices y la resultante deben tener las
mismas dimensiones.
Cada elemento en la matriz resultante sera igual a:
S[i,j] = A[i,j] + B[i,j]
Trate de implementar por lo menos un método para
llenar matrices y otro para obtener la matriz suma.
Ejercicios
2. Estructurar una matriz de notas reales (de 0 a 100) de la
siguiente manera:
 Existirán 4 columnas que representarán las siguientes
materias en el siguiente orden: Física, Química,
Matemática, Programación
 Existirán 5 filas que representarán a los siguientes
estudiantes en el siguiente orden: Juan, Pedro, Mengana,
Sutanoy Fulano.
 Ingresar las 20 notas e indicar lo siguiente al usuario:
Para cada materia, indicar la mejor nota y de quién es la
nota.
Para cada estudiante, indicar su mejor nota y en que
materia se obtuvo.

También podría gustarte