Documentos de Académico
Documentos de Profesional
Documentos de Cultura
imposible. .
Arreglos
Objetivo
Familiarizar al alumno con el manejo de estructuras de datos
aplicando todas las sentencias antes aprendidas mediante el uso
de los arreglos de datos ya sea unidimensionales o
bidimensionales, además de observar diversos tipos de
operaciones que se pueden desarrollar sobre estos.
En esta unidad
Estructura de Datos.
Arreglos de Datos
Arreglos Unidimensionales.
Arreglos Bidimensionales.
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
1. Estructura de Datos
En las unidades anteriores se ha visto como se trata a los datos de manera simple es
decir aquellos datos cuyo valor son de tipo numérico, cadena o lógico. Todos estos
aplicados a variables simples que solamente podían almacenar un valor a la vez como
por ejemplo:
X : Entero CAD : Cadena
X = 10 CAD = “Hola José”
X = 40 CAD = “Nos vemos en la tarde”
X = - 21 CAD = “Verónica es aplicada”
En ninguno de los casos mostrados podíamos asignar a cualquier variable dos o mas
valores al mismo tiempo, es que nace entonces la necesidad de estudiar otro tipo de
datos que si permite ese tipo de manejo para los datos: “Los Datos Estructurados”.
Los datos estructurados se agrupan en dos bloques: Simples o Estáticos y Compuestos o
Dinámicos; estos permiten al almacenamiento de gran cantidad de datos dependiendo la
necesidad del usuario se hará uso de uno u otro.
Datos Estructurados
Arreglos Listas
Unidimensionales Pilas
Bidimensionales Colas
Registros Listas Enlazadas
Conjuntos Árboles
Algunas de las características de ambos tipos de datos radica en que a los datos
simples o estáticos se les tiene que asignar el número de elementos que deberán admitir o
en todo caso esta predefinido, para acceder a los valores se hace a través de un índice
definido; mientras que los datos compuestos o estáticos no tiene límites, están limitados
únicamente por los recursos del computador en donde trabajen, para acceder a los valores
se hace a través de los denominados punteros.
Pag. 147
Fundamentos de programación
2. Arreglos de Datos
Son aquellas estructuras que permiten almacenar grandes cantidades de información
en una sola estructura, a la que se debe referenciar mediante un nombre e indicar el
índice para poder ya sea obtener, guardar, actualizar o eliminar un valor.
Estas estructuras poseen un conjunto finito de datos, son de tamaño fijo y ordenado de
elementos (valores) homogéneos.
Se dice:
a) Finito.- Por que posee un último elemento, es decir no puede expresarse como de
valores ilimitados.
c) Homogéneo.- Porque todos los elementos deben ser de un mismo tipo de dato.
Pag. 148
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
X
1 12 Inicio del Vector
2 4
3 5
4 77 Vector X para
n valores
5 -8
Índices del
vector X Valores
almacenados
en el vector X
Pag. 149
Fundamentos de programación
Pag. 150
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Pag. 151
Fundamentos de programación
Donde
Nombre: Es el nombre del arreglo
Dimensión: Define el número de elementos del arreglo
TipodeDato: Define el tipo de dato: Integer, string, date, etc.
Pag. 152
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
X
1 2 3 4 5 6 7
14 4 1 66
Pag. 153
Fundamentos de programación
...
W = X [2]
...
mostrar (W)
En la pantalla se observará el valor de W: 4
Que era el valor de X [2] en el vector respectivo.
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar 20 números a un arreglo.
ii. ¿Qué datos necesito conocer?
Los números que se almacenarán.
2. Planteamiento Lógico.
Este es un problema básico que solo mostrará como se desarrolla el ingreso de
datos a un vector.
Pag. 154
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
INICIO
Para i=1
Hasta 20
X[i]
FIN
Pag. 155
Fundamentos de programación
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Calcular el promedio de motas de 100 alumnos y almacenarlo en un vector, luego
contabilizar cuantos aprobaron y cuantos desaprobaron.
ii. ¿Qué datos necesito conocer?
Las notas de los alumnos.
2. Planteamiento Lógico.
El ingreso de las notas permitirá hallar el promedio el cual se almacenará en el
vector y finalmente se hará un recorrido al vector de modo que se pueda saber
cuantos alumnos aprobaron y cuantos desaprobaron.
Pag. 156
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
5.1 Pseudocódigo
INICIO
Declaración de variables
N1, N2: entero
PR: real
X: arreglo[1 ..100] – real
Para i = 1 hasta 100
Escribir(„Ingrese la primera nota:‟)
Capturar( N1)
Escribir(„Ingrese la segunda nota:‟)
Capturar( N2)
PR = (N1 + N2)/2
X[i] = PR
Fin_Para
AP = 0
DS = 0
Para i = 1 hasta 100
Si (X[i] >= 10.5) entonces
AP = AP + 1
Sino
DS = DS + 1
Fin_Si
Fin_Para
Mostrar(„El número de aprobados fue:‟, AP)
Mostrar(„El número de desaprobados fue:‟, DS)
FIN
Pag. 157
Fundamentos de programación
INICIO
Declaración de variables
i: entero
X: arreglo[1 ..20] – entero
Para i=1
Hasta 20
N1, N2
PR = (N1 + N2)/2
X[i] = PR
AP = 0
DS = 0
Para i=1
Hasta 20
DS = DS + 1 AP = AP + 1
AP, DS
FIN
Pag. 158
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Pag. 159
Fundamentos de programación
End Sub
Private Sub cmdNuevo_Click
DataGridView1.RowCount = 1
TextBox1.Text = 0
TextBox2.Text = 0
End Sub
End Class
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar números a un arreglo, los cuales deben estar en el rango de 10 a 80.
ii. ¿Qué datos necesito conocer?
La cantidad de números a ingresar y después los números que se ingresarán al
vector.
2. Planteamiento Lógico.
Inicialmente se debe recordar que los vectores deben estar definidos en un número
exacto de elementos que se almacenarán en este caso dice el problema que el número de
elementos a ingresar no se sabe así que habrá que definir un rango máximo para poder
empezar a trabajar después se deberá validar ese caso.
Ejemplo:
X: arreglo[1 ..1000] – entero
Se ha definido un arreglo de 1000 espacios, por lo tanto al momento de especificar el
número de elementos a ingresar no podrá sobrepasar los 1000 números (validar).
Luego se deberán ingresar los números que se almacenarán en el vector, tenga en cuenta
que solo se graban en el vector aquellos números que estén en el rango de 10 a 80 al
mismo tiempo se deberán ir acumulando para finalmente hallar el promedio de estos
números almacenados en el vector.
Pag. 160
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
PR=AC/C
PR
FIN
Pag. 161
Fundamentos de programación
Pag. 162
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
End If
End Sub
Private Sub TextBox1_LostFocus
If (Val(TextBox1.Text) < 1 Or Val(TextBox1.Text) > 500) Then
MsgBox("error de ingreso")
TextBox1.Text = 1
TextBox1.Focus()
End If
End Sub
Private Sub Button1_Click ListBox1.Items.Clear()
ListBox2.Items.Clear()
TextBox1.Text = 0
TextBox2.Text = 0
End Sub
Private Sub Button2_Click
If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then
End
End If
End Sub
End Class
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Hallar el mayor y menor numero ingresado en dos vectores X y Y, luego sumarlos
y mostrarlos.
ii. ¿Qué datos necesito conocer?
Los 50 números que se ingresarán en X y Y.
2. Planteamiento Lógico.
Deberá cargar los vectores X y Y con 50 números cada uno, luego desarrollar el
código que permita obtener el mayor y menor número de los vectores para
finalmente sumarlos y mostrarlos.
Pag. 163
Fundamentos de programación
MN > Y[i]
MN = Y[i]
S = MY + MN
AP, DS
FIN
Pag. 164
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Pag. 165
Fundamentos de programación
Métodos de Ordenamiento
Los métodos de ordenamiento tienen por finalidad mostrar a los elementos de un vector
ordenados ya sea en forma ascendente o descendente. Para lograr ello se cuentan con
diversos métodos entre los mas conocidos encontramos:
Pag. 166
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
X[1]>X[4] no es mayor
X[1]>X[5] no es mayor
X
1 2 3 4 5
1 14 4 66 5
X[2]>X[3] si es mayor, intercambio
X
1 2 3 4 5
1 4 14 66 5
X[2]>X[4] no es mayor
X[2]>X[5] no es mayor
X
1 2 3 4 5
1 4 14 66 5
X[3]>X[4] no es mayor
X[3]>X[5] si es mayor, intercambio
X
1 2 3 4 5
1 4 5 66 14
X[4]>X[5] si es mayor, intercambio
X
1 2 3 4 5
1 4 5 14 66
Por lo tanto el vector quedaría de la siguiente manera: (ordenado de forma
ascendente).
X
1 2 3 4 5
1 4 5 14 66
El Pseudocódigo asociado a este método de ordenamiento es:
Para i = 1 hasta 4
Para j = i + 1 hasta 5
Si (X[i] > X[j]) entonces
AUX = X[j]
X[j] = X[i]
X[i] = AUX
Fin_Si
Fin_Para
Fin_Para
Pag. 167
Fundamentos de programación
En general:
Para i = 1 hasta n – 1
Para j = i + 1 hasta n
Si (X[i] > X[j]) entonces
AUX = X[j]
X[j] = X[i]
X[i] = AUX
Fin_Si
Fin_Para
Fin_Para
2) Método de Shell
Consiste en ir comparando los elementos no contiguos sino por saltos de mayor
tamaño y de esa manera se consigue un ordenamiento mas rápido, para ello se debe
fijar el tamaño de los saltos constantes que deberán de ser de mas de una posición.
Es denominado también de ordenamiento por disminución incremental, fue
nombrado así debido a su inventor Donald Shell.
Ordena subgrupos de elementos separados K unidades (respecto de su posición en
el arreglo) del arreglo original. El valor K es llamado incremento.
Después de que los primeros K subgrupos han sido ordenados (generalmente
utilizando INSERCION DIRECTA), se escoge un nuevo valor de K más pequeño,
y el arreglo es de nuevo partido entre el nuevo conjunto de subgrupos. Cada uno de
los subgrupos mayores es ordenado y el proceso se repite de nuevo con un valor
más pequeño de K.
Eventualmente el valor de K llega a ser 1, de tal manera que el subgrupo consiste
de todo el arreglo ya casi ordenado.
Al principio del proceso se escoge la secuencia de decrecimiento de incrementos; el
último valor debe ser 1.
"Es como hacer un ordenamiento de burbuja pero comparando e intercambiando
elementos."
Cuando el incremento toma un valor de 1, todos los elementos pasan a formar parte
del subgrupo y se aplica inserción directa.
El método se basa en tomar como salto N/2 (siendo N el número de elementos) y
luego se va reduciendo a la mitad en cada repetición hasta que el salto o distancia
vale 1.
El Pseudocódigo asociado a este método de ordenamiento es:
Pag. 168
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar 100 números de los cuales solo los que son múltiplos de 3 se guardan en
un arreglo X, para finalmente ordenarlos.
ii. ¿Qué datos necesito conocer?
Conocer cuales los 100 números.
Pag. 169
Fundamentos de programación
2. Planteamiento Lógico.
Se deberá cargar los números en el arreglo, teniendo en cuenta que solo
ingresan los que son múltiplos de 3 (resto de la división 0), finalmente se
deberá ordenarlos.
Pag. 170
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
INICIO
N, i, j, C, AUX: entero
X: arreglo[1 ..100] – entero
C=0
Para i=1
Hasta 100
N mod 3 = 0
C=C +1
X [C] = N
Para i=1
Hasta C-1
Para j=i+1
Hasta C
AUX = X[j]
X[j] = X[i]
X[i] = AUX
FIN
Pag. 171
Fundamentos de programación
Pag. 172
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Next i
End Sub
Private Sub Button2_Click
Dim i As Integer
ListBox2.Items.Clear()
C = 0
For i = 1 To 99
If ListBox1.Items(i - 1) Mod 3 = 0 Then
C = C + 1
X(C) = ListBox1.Items(i - 1)
ListBox2.Items.Add(X(C))
End If
Next i
End Sub
End Class
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar números a 2 arreglos, luego se deberán analizar para finalmente crear
un tercer arreglo en base a los anteriores.
ii. ¿Qué datos necesito conocer?
Cargar los 2 arreglos a analizar con 40 números cada uno.
Pag. 173
Fundamentos de programación
2. Planteamiento Lógico.
Para poder cargar el tercer arreglo se deberá observar si los números que se
encuentran en las mismas posiciones de cada arreglo son pares, solo en ese caso se
suman y se guarda el resultado en el tercer arreglo (ver ejemplo).
Pag. 174
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
INICIO
5.2 Diagrama de Flujo
N, i, j, C, AUX: entero
X: arreglo[1 ..40] – entero
Y: arreglo[1 ..40] – entero
Z: arreglo[1 ..40] – entero
Para i=1
Hasta 40
X[i], Y[i]
C=0
Para i=1
Hasta 40
C=C +1
Z[C] = X[i] + Y[j]
Para i=1
Hasta C-1
Para j=i+1
Hasta C
AUX = Z[j]
Z[j] = Z[i]
Z[i] = AUX
FIN
Pag. 175
Fundamentos de programación
Pag. 176
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
DataGridView3.Columns(i).Width = 30
Next i
End Sub
Private Sub cmdnuevo_Click
DataGridView1.Rows.Clear()
DataGridView2.Rows.Clear()
DataGridView3.Rows.Clear()
DataGridView1.RowCount = 3
End Sub
Private Sub cmdvectorz_Click
Dim i As Integer
'DataGridView2.Item(0, 0).Value = "Z(i)"
C = 0
For i = 0 To 39
If (X(i) Mod 2 = 0) And (Y(i) Mod 2 = 0) Then
C = C+ 1
Z(C) = X(i) + Y(i)
DataGridView2.Item(C, 0).Value = Z(C)
End If
Next i
End Sub
Private Sub cmdsalir_Click
If MsgBox("Desea salir?", vbInformation + vbYesNo, "SALIDA") = vbYes Then
End
End If
End Sub
Private Sub cmdordenar_Click
Dim i, j As Integer
If (C > 0) Then
For i = 1 To C - 1
For j = i + 1 To C
If (Z(i) > Z(j)) Then
AUX = Z(j)
Z(j) = Z(i)
Z(i) = AUX
End If
Next j
Next i
For i = 1 To C
DataGridView3.Item(i, 0).Value = Z(i)
Next i
Else
MsgBox("No tiene datos el vector Z")
End If
End Sub
End Class
Pag. 177
Fundamentos de programación
Simbología
X [ i, j ]
Donde:
- X : Nombre del vector.
- i : Índice del vector para las filas.
- j : Índice del vector para las columnas.
Ejemplo Gráfico
Columnas
X 1 2 3 4 ... n-1 n
1 3 56 -14 2 1 12
2 5 -8 0 9 22 7 Índices de
3 Columna
7 3 22 3 8 -7
Filas 4 6 21 0 65 19 2
5 15 12 14 42 20 13
...
n-1 4 11 72 4 1 22
n 6 12 86 62 3 54
Índices de
Fila
Pag. 178
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
a) Recorrido por Filas. Consiste en trabajar con los valores de la primera fila y así
sucesivamente con el resto de filas hasta llegar al final.
Ejemplo:
Para f = 1 hasta 5
Para c = 1 hasta 4
Mostrar(„Los valores por filas :‟, X[f,c]
Fin_Para
Fin_Para
b) Recorrido por Columnas. Consiste en trabajar con los valores de la primera
columna y así sucesivamente con el resto de columnas hasta llegar al final.
Ejemplo:
Para c = 1 hasta 4
Para f = 1 hasta 5
Mostrar(„Los valores por columnas :‟, X[f,c]
Fin_Para
Fin_Para
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar números a una matriz de 10*20.
ii. ¿Qué datos necesito conocer?
Los números que se desean ingresar.
Pag. 179
Fundamentos de programación
2. Planteamiento Lógico.
Este es un problema básico que solo mostrará como se desarrolla el ingreso de datos
a la matriz.
Declaración de variables
F, c : entero
X: arreglo[1 ..10,1 ..20] – entero
Para f=1
Hasta 10
Para c=1
Hasta 20
X[f,c]
FIN
Pag. 180
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Pag. 181
Fundamentos de programación
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar notas a una matriz y luego calcular el promedio además mostrar una
observación.
ii. ¿Qué datos necesito conocer?
Las notas que se pretenden evaluar.
2. Planteamiento Lógico.
El ingreso será de manera directa a la matriz, luego se deberá ir calculando el
promedio para ser almacenado de manera instantánea para finalmente mostrar
el mensaje dependiendo del promedio obtenido.
La matriz esta compuesta por 4 columnas: 3 para las notas 1 para el promedio
y 100 filas para el ingreso de los datos anteriores.
Pag. 182
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Mostrar(„Aprobado‟)
Sino
Mostrar(„Desaprobado‟)
Fin_Si
Fin_Para
FIN
Declaración de variables
F, c : entero
X: arreglo[1 ..100,1 ..4] – entero
Para f=1
Hasta 100
X[f,4] >= 11
„Desaprobado‟ „Aprobado‟
FIN
Pag. 183
Fundamentos de programación
Pag. 184
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
La suma de los valores que se encuentren en las diagonales principal y
secundaria de una matriz cuadrada, dicha suma se debe almacenar en un vector
siempre en cuando este valor sobrepase de 10.
ii. ¿Qué datos necesito conocer?
Los números respectivos en la matriz cuadrada.
2. Planteamiento Lógico.
Se deberá inicialmente validar el ingreso de los números a la matriz ya que tienen
que ser positivos.
Para poder obtener los números de la diagonal principal y secundaria solamente
debe tener cuidado con los índices de fila – columna.
Una vez que se sabe cuales son ahora deberá sumarlos, pero tenga en cuenta que
antes de registrarlos en el vector deberá verificar que este valor sobre pase 10, solo
en ese caso se registrará en el vector.
Pag. 185
Fundamentos de programación
Pag. 186
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
INICIO
f, c, R: entero
X: arreglo[1..100,1..100] – entero
Y: arreglo[1 ..100] – entero
Para f=1
Hasta 100
Para c=1
Hasta 100
X[f,c]
X[f,c] > 0
R=0
Para f=1
Hasta 100
Para c=1
Hasta 100
(X[f,c]+X[f,101-f]) >10
f =c
R=R +1
Y[R] = X[f,c] + X[f,101-f]
Para f=1
Hasta R
Y[f]
FIN
Pag. 187
Fundamentos de programación
Pag. 188
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Ingresar letras a una matriz y luego averiguar cuantas de las letras ingresadas
fueron A, V y E.
ii. ¿Qué datos necesito conocer?
Las letras que se ingresarán en la matriz cuadrada.
2. Planteamiento Lógico.
Se debe ingresar las letras en la matriz, luego ir preguntando si cumple con la
condición es decir si es A, V o E, de modo que se puedan ir contando para mostrar al
final cuantos eran.
Pag. 189
Fundamentos de programación
Pag. 190
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Para f=1
Hasta 20
Para c=1
Hasta 30
X[f,c]
C1 = 0; C2 = 0; C3 = 0
Para f=1
Hasta 20
Para c=1
Hasta 30
X[f,c] = “A”
X[f,c] = “V” C1 = C1 + 1
X[f,c] = “E” C2 = C2 + 1
C3 = C3 + 1
C1, C2, C3
FIN
Pag. 191
Fundamentos de programación
Pag. 192
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
2. Planteamiento Lógico.
Una vez que se encuentran los números en la matriz, se deberá generar una condición
que involucre a los indices de las columnas y si estos son impares sus valores a
asociados se deben ir acumulando para que una vez que se termina de recorrer la fila
se guarde dicho valor en el vector.
Ej: Sean estos los datos: 12, 15, 7, 16, 12, 5, 0, 17
Pag. 193
Fundamentos de programación
Pag. 194
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
INICIO
f, c, AC: entero
X: arreglo[1 ..20, 1 .. 20] – entero
Y: arreglo[1 ..20] – entero
Para f=1
Hasta 20
Para c=1
Hasta 20
X[f,c]
AC = 0, M = 0
Para c=1
Hasta 20
c mod 2=0
Para f=1
Hasta 20
AC= AC + X[f,c]
M= M+ 1
Y[f] = AC
Para f=1
Hasta 10
Y[f]
FIN
Pag. 195
Fundamentos de programación
Pag. 196
Estructuración de algoritmos
Instituto de Educación Superior Tecnológico Privado
Pag. 197