8/12/2019 Algoritmos Vector y Matrices
1/37
8/12/2019 Algoritmos Vector y Matrices
2/37
5.1 ARREGLOS
Para explicar que es un arreglo basta con decir lo
mismo que dicen las empresas constructoras de casas
habitacin, si ya no hay espacio en el piso, hay mucho
espacio hacia arriba, y en realidad han ganado demasiado
dinero al comenzar a construir los famosos condominios, los
cuales son exactamente iguales en cada uno de sus niveles,
solo se identifican por el piso en que se encuentran.
Una variable de un tipo especfico es como una casa
habitacin comn y corriente, pero si nosotros le
construimos ms pisos a nuestra variable esta se convierte
en un arreglo, al cual se le puede almacenar informacin
de un mismo tipo en el piso deseado.
Ilustracin 1 Representacin y comparacin de una variable y unarreglo
Variable Arreglo de 4 posiciones
Posicin 1
Posicin 3
Posicin 4
Posicin
nica
8/12/2019 Algoritmos Vector y Matrices
3/37
Las operaciones que se pueden realizar sobre los
arreglos son exactamente las mismas que a las variables:
declaracin, desplegar, almacenar, asignar, inicializar y
comparar. Pero a diferencia de las variables, los arreglos
se pueden ordenar ya sea de manera ascendente o
descendente.
La declaracin de los arreglosno desvara mucho de
la declaracin de variables, con la excepcin de que se
tiene que definir el tamao del arreglo, el cual se tiene
que poner entre parntesis cuadrados o corchetes, aunque
para menor confusin los declaramos en una seccin llamada
arreglos.
PSEUDOCDIGO YDIAGRAMA N-S
DIAGRAMA DE FLUJO
Arreglos:
Edad : entero de [ 20 ]
posiciones
Parciales : real de [ 10 ]
posiciones
Ilustracin 2 Forma en que se declaran los arreglos
Nota. El nmero entre corchetes se llama subndice o
ndice.
Al declarar un arreglo, se le pueden dar valores de
inicio para cada una de sus posiciones, pera lo cual
despus de indicar el tamao de este se coloca un signo de
igual y entre llaves {}, los valores de cada posicin
separados por comas.
PSEUDOCDIGO Y DIAGRAMA N-SArreglos:
Edad : entero de [ 5 ] posiciones = {25, 9, 18, 20, 31}Parciales : real de [ 10 ] posiciones = {0}// si se coloca solo un cero todas las posiciones toman este valor
DIAGRAMA DE FLUJO
Arreglos:
Edad : entero de [ 20 ] posiciones
Parciales : real de [ 10 ] posiciones
8/12/2019 Algoritmos Vector y Matrices
4/37
Ilustracin 3 Forma en que se inicializan los arreglos
Para escribirlo que contiene un arreglo debemos de
indicar el nombre del arreglo y la posicin entre corchetes
que deseamos visualizar.
PSEUDOCDIGO Y DIAGRAMAN-S
DIAGRAMA DE FLUJO
Escribir lo que contiene elarreglo edades en laposicin 3 es:, edades[3]
Ilustracin 4 Forma en que se despliega informacin desde un arreglo.
Para almacenar un dato en una posicin especfica
de un arreglo debemos de indicar el nombre del arreglo y la
posicin entre corchetes en que deseamos guardar.
PSEUDOCDIGO Y DIAGRAMA N-S DIAGRAMA DE FLUJOLeer edades[3]// almacena una dato en laposicin 3 // del arreglo edades
Ilustracin 5Forma en que se almacena informacin a un arreglo.
Para asignarel resultado de una operacin en una
posicin especfica de un arreglo debemos de indicar el
nombre del arreglo y la posicin entre corchetes en que
deseamos colocar el resultado de la expresin.
PSEUDOCDIGO Y DIAGRAMA N-S DIAGRAMA DE FLUJOedades[3] = 5 * 10// almacena una dato en laposicin 3 // del arreglo edades
Ilustracin 6 Forma en que se asignan datos a un arreglo
La comparacin se realiza de la misma manera en que
se realizan las operaciones ya vistas: colocando el nombre
y posicin del arreglo que se quiere comparar, el operador
relacional y el valor o variable contra quien se coteja,
Arreglos:
Edad : entero de [ 5 ] posiciones = {25, 9, 18, 20, 31}
Parciales : real de [ 10 ] posiciones = {0}
Lo que contiene elarreglo edades en laposicin 3 es:,
edades[3]
edades[3]
edades[3] = 5 * 10
8/12/2019 Algoritmos Vector y Matrices
5/37
8/12/2019 Algoritmos Vector y Matrices
6/37
3.2 subndice = subndice + 1Fin para
4. FinDIAGRAMA DE FLUJO
Diagrama N-S
INICIO
Arreglos:
calif : real de [6] posiciones
FIN
V
// Diagrama de flujo: Calificaciones
subndice = 1
subndice = subndice + 1subndice > 6
Variables:
subndice : entera = 0
acum_calif : real = 0
subndice != 6
dame calificacin de
parcial , subndice, :
calif[subindice]
acum_calif = acum_calif + calif[subndice]
calif[subindice] = acum_calif / 5
Vsubndice = 1
subndice = subndice + 1subndice > 6
subndice == 6
Promedio :,
calif[subndice]
Parcial , subndice, :,
calif[subndice]
V
V F
F
F
F
8/12/2019 Algoritmos Vector y Matrices
7/37
8/12/2019 Algoritmos Vector y Matrices
8/37
subndice > 6
3 > 6NO
subndice != 6
3 != 6SI
calif[subndice] = 10
calif[3] = 10
acum_calif = acum_calif + calif[subndice]acum_calif = 14 + calif[3]
acum_calif = 14 + 10
acum_calif = 24
subndice = subndice + 1
subndice = 3 + 1
subndice = 4
subndice > 6
4 > 6NO
subndice != 64 != 6SI
calif[subndice] = 5
calif[4] = 5acum_calif = acum_calif + calif[subndice]
acum_calif = 24 + calif[4]acum_calif = 24 + 5acum_calif = 29
subndice = subndice + 1
subndice = 4 + 1subndice = 5
subndice > 6
5 > 6NO
subndice != 6
5 != 6SI
calif[subndice] = 9
calif[5] = 9
acum_calif = acum_calif + calif[subndice]
acum_calif = 29 + calif[5]acum_calif = 29 + 9
acum_calif = 38
subndice = subndice + 1subndice = 5 + 1
subndice = 6
subndice > 6
6 > 6NO
subndice != 66 != 6NO
calif[subndice] = acum_calif / 5
calif[6] = 38 / 5calif[6] = 7.6
subndice = subndice + 1
subndice = 6 + 1subndice = 7
subndice > 6
7 > 6SI
Tabla 1Ejemplo 1 del manejo de arreglos
A continuacin vamos a ver en el siguiente ejemplo
que con un mismo subndice se puede acceder a varios
arreglos.
Ejemplo Se necesita un sistema que utiliza 3 arreglos, en los dos primeros secolocan los promedios de dos grupos de 5 alumnos cada uno y el tercer
8/12/2019 Algoritmos Vector y Matrices
9/37
arreglo almacenar el promedio ms alto de cada posicin. Imprimir lospromedios ms altos
Paso I. Analizar el problema.Salidas Entrada Procesos
prom[ndice] grupo1[ndice] grupo2[ndice]
mientras ndice grupo2[ndice]
prom[ndice] = grupo1[ndice]en caso contrario
prom[ndice] = grupo2[ndice]Paso II. Disear El algoritmo
PSEUDOCDIGOpseudocdigo: calificaciones de 2 grupos
Arreglos:grupo1, grupo2, prom : real de [5] posiciones
Variables:ndice : entero = 0
1. Inicio2. Hacer para ndice = 1 hasta ndice > 5
1.1Escribir dame promedio , ndice, del primer grupo:1.2Leer grupo1[ndice]1.3Escribir dame promedio , ndice, del segundo grupo:1.4Leer grupo2[ndice]1.5Si grupo1[ndice] > grupo2[ndice] entonces
1.5.1 prom[indice] = grupo1[ndice]Si no
1.5.2 prom[indice] = grupo2[ndice]Fin si
1.6ndice = ndice + 1Fin para
3. Hacer para ndice = 1 hasta ndice > 53.1 Escribir promedio mayor, ndice, :, prom[ndice]3.2 ndice = ndice + 1
Fin para4. Fin
Diagrama N-S
// diagrama N-S : calificaciones de 2 grupos
InicioArreglos:
grupo1, grupo2, prom : real de [5] posicionesVariables:
ndice : entero = 0ndice > 5
ndice = 1
Escribir dame promedio , ndice, del primer grupo:Leer grupo1[ndice]Escribir dame promedio , ndice, del segundo grupo:Leer grupo2[ndice]
grupo1[ndice] > grupo2[ndice]
prom[ndice] = grupo1[ndice] prom[ndice] = grupo2[ndice]ndice = ndice + 1
ndice > 5
ndice = 1 Escribir promedio mayor, ndice, :, prom[ndice]ndice = ndice + 1
Fin
DIAGRAMA DE FLUJO
verdadero falso
8/12/2019 Algoritmos Vector y Matrices
10/37
Paso III. Prueba Del Algoritmo.NICA CORRIDA DE ESCRITORIO
INICIO
Arreglos:
grupo1, grupo2, prom : real de [6] posiciones
FIN
V
// Diagrama de flujo: Calificaciones 2 grupos
ndice = 1
ndice = ndice + 1ndice > 5
Variables:
ndice : entera = 0
grupo1[ndice]
>
grupo2[ndice]
grupo1[indice]
prom[indice] = grupo1[indice]
Vndice = 1
ndice = ndice + 1ndice > 5
promedio mayor, ndice, :, prom[ndice]
V
F
F
F
dame promedio , ndice,
del primer grupo:
grupo2[indice]
dame promedio , ndice,
del segundo grupo:
prom[indice] = grupo2[indice]
Formatted:Font: (Default) Courier New
8/12/2019 Algoritmos Vector y Matrices
11/37
ndice = 1
ndice > 51 > 5NO
grupo1[ndice] = 8.5
grupo1[1] = 8.5grupo2[ndice] = 6.9grupo2[1] = 6.9
grupo1[ndice] > grupo2[ndice]
grupo1[1] > grupo2[1]8.5 > 6.9SI
prom[ndice] = grupo1[ndice]prom[1] = grupo1[1]prom[1] = 8.5
ndice = ndice + 1ndice = 1 + 1ndice = 2
ndice > 5
2 > 5NO
grupo1[ndice] = 7grupo1[2] = 7grupo2[ndice] = 8.7
grupo2[2] = 8.7
grupo1[ndice] > grupo2[ndice]grupo1[2] > grupo2[2]7 > 8.7NO
prom[ndice] = grupo2[ndice]prom[2] = grupo2[2]prom[2] = 8.7
ndice = ndice + 1
ndice = 2+ 1ndice = 3
ndice > 53 > 5NO
grupo1[ndice] = 6.8grupo1[3] = 6.8grupo2[ndice] = 9.5grupo2[3] = 9.5
grupo1[ndice] > grupo2[ndice]grupo1[3] > grupo2[3]6.8 > 9.5NO
prom[ndice] = grupo2[ndice]
prom[3] = grupo2[3]prom[3] = 9.5
ndice = ndice + 1ndice = 3 + 1ndice = 4
ndice > 54 > 5NO
grupo1[ndice] = 9.7grupo1[4] = 9.7
grupo2[ndice] = 9.3grupo2[4] = 9.3
grupo1[ndice] > grupo2[ndice]grupo1[4] > grupo2[4]
9.7 > 9.3SI
prom[ndice] = grupo1[ndice]prom[4] = grupo1[4]prom[4] = 9.7
ndice = ndice + 1
ndice = 4 + 1ndice = 5
ndice > 55 > 5NO
grupo1[ndice] = 6
grupo1[5] = 6grupo2[ndice] = 6grupo2[5] = 6
grupo1[ndice] > grupo2[ndice]grupo1[5] > grupo2[5]6 > 6NO
prom[ndice] = grupo2[ndice]
prom[5] = grupo2[5]prom[5] = 6
ndice = ndice + 1ndice = 5 + 1
ndice = 6
ndice > 56 > 5SI
Tabla 2Ejemplo 2 del manejo de arreglos
Ejercicios.I. Realiza un algoritmo que maneja arreglos utilizando lastres diferentes tcnicas para cada uno de los problemas quese plantean.
8/12/2019 Algoritmos Vector y Matrices
12/37
1.Un supermercado necesita un sistema en donde almacenarsus ingresos, los cuales son la sumatoria de todas lasventas realizadas a los clientes (100 clientes).
2.Se necesita un sistema que utiliza 2 arreglos paraalmacenar 20 nmeros, en el primero se almacenan losnmeros tal y como son capturados y en el segundo sealmacenan sus inversos (5, -5).
3.Necesitamos un sistema que capture 20 nmeros ydespus de capturarlos que haga la revisin de estospara indicarnos cuantos son pares y cuantos sonimpares.
4.Se necesita un sistema que almacena 20 nmeros en tresdiferentes arreglos, en el primero se almacena elnmero tal cual se tecleo, en el segundo se almacenael cuadrado de dicho nmero y en el tercero su cubo.
5.Se necesita un sistema que almacena automticamentetodos los nmeros primos desde el uno hasta el miluno; recordando que un nmero primo es aquel quesolamente es divisible entre uno y si mismo.
Ordenar Arreglos (Ordenamiento Tipo Burbuja).
En varias ocasiones cuando desarrollemos un
sistema, nos vamos a encontrar con la necesidad de ordenar
la informacin de una manera especfica, generalmente en
manera ascendente o descendente.
Nosotros vamos a utilizar la manera ms sencilla,conocida como ordenamiento tipo burbuja. Este mtodo es
llamado as ya que los elementos del vector (arreglo)
mayores tienden a irse hasta el fondo del arreglo y los
menores comienzan a flotar haca arriba del mismo, como lo
hacen las burbujas de aire en el agua.
Supongamos que hemos declarado un arreglo del tipo
flotante llamado edades con 5 posiciones. Dicho vector fue
llenado con diversos datos pero queremos que sea ordenadode manera ascendente, quedando de la siguiente manera:
8/12/2019 Algoritmos Vector y Matrices
13/37
Ilustracin 7Vista de un arreglo llamado edades ordenado
Naturalmente para nosotros resulta muy fcil
ejecutar este proceso mental, pero para que la computadora
realice este proceso se lleva un buen nmero de
instrucciones, los cuales consisten en ir ordenando poco a
poco el arreglo. Las instrucciones son las siguientes (sololas mostramos en pseudocdigo):
Hacer para N_pasadas = 1 hasta N_pasadas >= TAM_ARREGLO
Hacer para posicin = 1 hasta posicin ==TAM_ARREGLO
Si edades[ posicin ] > edades[ posicin + 1 ]entonces
temporal = edades[ posicin ]edades[ posicin ] = edades[ posicin + 1 ]edades[ posicin + 1 ] = temporal
fin siposicin = posicin + 1
Fin para
N_pasadas = N_pasadas + 1
Fin para
Tabla 3Instrucciones para ordenar el arreglo edades
Arreglo desordenado
1.87
1.61
1.84
1.78
Arreglo Ordenado
1.84
1.78
1.61
1.54
1.54 1.87
Posicin 1
Posicin 2
Posicin 3
Posicin 4
Posicin 5
8/12/2019 Algoritmos Vector y Matrices
14/37
En este programa la variable N_pasadases del tipo
entero y es la que lleva el conteo de cuantas veces se va a
revisar todo el arreglo, el nmero de pasadas tiene que ser
menor al tamao del arreglo el cual esta almacenado en la
variable TAM_ARREGLO, ya que cuando la variable N_pasadas
ya no sea menor que la variable TAM_ARREGLOeste ya estar
completamente ordenado.
La variable posicin es la que nos dir que
localidad del arreglo revisar. Y el secreto de este mtodo
radica en comparar dos posiciones contiguas del arreglo
(edades[posicin] contra edades[posicin + 1]), si la
primera es mayor que la segunda, lo que se encuentra en
edades[posicin] es guardado en la variable temporal,
entonces el valor que se encuentra en edades[posicin+1] es
asignado en edades[posicin], y por ultimo el dato que esta
almacenado en la variable temporal es dado a
edades[posicin+1]. En caso de que edades[posicin]no sea
mayor que edades[posicin+1], los valores de cada elemento
se dejan igual. A continuacin se realiza paso a paso el
ordenamiento del arreglo edades, en el cual se enumerantodas las comparaciones.
C1. Como el resultado de la primera comparacin es falso, el arreglo contina igual.
N_pasadas= 1 edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO= 5 edades[2] 1.84 edades[2] 1.84
Posicin= 1 edades[3] 1.61 edades[3] 1.61
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.87 edades[4] 1.87
Temporal= edades[5] 1.54 edades[5] 1.54
Edades[ posicin ] =
Edades[posicin + 1] =
C2. Como el resultado de la segunda comparacin es verdadero, los valores de estas posicionesse intercambian.
N_pasadas= 1 edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO= 5 edades[2] 1.84 edades[2] 1.61
Posicin= 2 edades[3] 1.61 edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ] V edades[4] 1.87 edades[4] 1.87
Temporal= 1.84 edades[5] 1.54 edades[5] 1.54
Edades[ posicin ] = 1.61
8/12/2019 Algoritmos Vector y Matrices
15/37
Edades[posicin + 1] = 1.84
C3. Como el resultado de la tercera comparacin es falso, el arreglo contina igual.
N_pasadas= 1 edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO= 5 edades[2] 1.61 edades[2] 1.61
Posicin= 3 edades[3] 1.84 edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.87 edades[4] 1.87
Temporal= edades[5] 1.54 edades[5] 1.54
Edades[ posicin ] =
Edades[posicin + 1] =
C4. Como el resultado de la cuarta comparacin es verdadero, los valores de estas posiciones se
intercambian.
N_pasadas= 1 edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO= 5 edades[2] 1.61 edades[2] 1.61
Posicin= 4 edades[3] 1.84 edades[3] 1.84edades[ posicin ] > edades[ posicin + 1 ] V edades[4] 1.87 edades[4] 1.54
Temporal= 1.87 edades[5] 1.54 edades[5] 1.87
Edades[ posicin ] = 1.54
Edades[posicin + 1] = 1.87
Con esto hemos terminado la primera pasada, ya que
al incrementar la posicin ahora vale 5 y si realizamos
otra comparacin tendra que ser lo que esta en la posicin
5 contra lo que esta en la posicin 6 y esta no existe, por
lo cual se debe de terminar el ciclo cuando el valor de
posicin es igual al tamao del arreglo (posicin ==TAM_ARREGLO). Aun as el arreglo todava no se encuentra
completamente ordenado, ya que en la primera pasada solo se
garantiza que valor mayor pase a la ltima posicin del
arreglo, en la siguiente pasada el siguiente dato mayor
pasa a la penltima posicin, en la siguiente el tercer
valor mayor pasa a la antepenltima localidad del arreglo y
as sucesivamente.
C5. Como el resultado de la quinta comparacin es verdadero, los valores de estas posiciones se
intercambian.
N_pasadas= 2 edades[1] 1.78
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.61 edades[2] 1.78
Posicin= 1 edades[3] 1.84 edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ] V edades[4] 1.54 edades[4] 1.54
Temporal= 1.78 edades[5] 1.87 edades[5] 1.87
8/12/2019 Algoritmos Vector y Matrices
16/37
Edades[ posicin ] = 1.61
Edades[posicin + 1] = 1.78
C6. Como el resultado de la sexta comparacin es falso, el arreglo contina igual.
N_pasadas= 2 edades[1] 1.61
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.78 edades[2] 1.78
Posicin= 2 edades[3] 1.84 edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.54 edades[4] 1.54
Temporal= edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] =
Edades[posicin + 1] =
C7. Como el resultado de la sptima comparacin es verdadero, los valores de estas posiciones
se intercambian.
N_pasadas= 2 edades[1] 1.61
edades[1] 1.61TAM_ARREGLO= 5 edades[2] 1.78 edades[2] 1.78
Posicin= 3 edades[3] 1.84 edades[3] 1.54
edades[ posicin ] > edades[ posicin + 1 ] V edades[4] 1.54 edades[4] 1.84
Temporal= 1.84 edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] = 1.54
Edades[posicin + 1] = 1.84
C8. Como el resultado de la octava comparacin es falso, el arreglo contina igual.
N_pasadas= 2 edades[1] 1.61
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.78 edades[2] 1.78
Posicin= 4 edades[3] 1.54 edades[3] 1.54
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.84 edades[4] 1.84
Temporal= edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] =
Edades[posicin + 1] =
Con esto terminamos la segunda pasada, pero si
somos observadores notaremos que al irse colocando con cada
pasada los valores mayores al fondo del arreglo, se vuelve
innecesario realizar las evaluaciones correspondientes,
esto produce exceso de tiempo.
Sugerencia. Para evitar esta perdida o exceso de tiempose recomienda hacer una mejora al programa, la cual
consiste en que despus de cada pasada decrementar en uno
la variable que contiene el tamao del arreglo
(TAM_ARREGLO).
8/12/2019 Algoritmos Vector y Matrices
17/37
Nota. Existe otra posible mejora, pero se menciona la
final.
C9. Como el resultado de la novena comparacin es falso, el arreglo contina igual.
N_pasadas= 3 edades[1] 1.61
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.78 edades[2] 1.78
Posicin= 1 edades[3] 1.54 edades[3] 1.54
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.84 edades[4] 1.84
Temporal= edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] =
Edades[posicin + 1] =
C10. Como el resultado de la dcima comparacin es verdadero, los valores de estas posiciones
se intercambian.
N_pasadas= 3 edades[1] 1.61
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.78 edades[2] 1.54
Posicin= 2 edades[3] 1.54 edades[3] 1.78
edades[ posicin ] > edades[ posicin + 1 ] V edades[4] 1.84 edades[4] 1.84
Temporal= 1.78 edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] = 1.54
Edades[posicin + 1] = 1.78
C11. Como el resultado de la onceava comparacin es falso, el arreglo contina igual
N_pasadas= 3 edades[1] 1.61
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.54 edades[2] 1.54
Posicin= 3 edades[3] 1.78 edades[3] 1.78
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.84 edades[4] 1.84Temporal= edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] =
Edades[posicin + 1] =
C12. Como el resultado de la doceava comparacin es falso, el arreglo contina igual.
N_pasadas= 3 edades[1] 1.61
edades[1] 1.61
TAM_ARREGLO= 5 edades[2] 1.54 edades[2] 1.54
Posicin= 4 edades[3] 1.78 edades[3] 1.78
edades[ posicin ] > edades[ posicin + 1 ] F edades[4] 1.84 edades[4] 1.84
Temporal= edades[5] 1.87 edades[5] 1.87
Edades[ posicin ] =
Edades[posicin + 1] =
Comenzamos la cuarta pasada.
C13. Como el resultado de la treceava comparacin es verdadero, los valores de estas posiciones
se intercambian
N_pasadas= 4 edades[1] 1.61
edades[1] 1.54
TAM_ARREGLO= 5 edades[2] 1.54 edades[2] 1.61
Posicin= 1 edades[3] 1.78 edades[3] 1.78
8/12/2019 Algoritmos Vector y Matrices
18/37
8/12/2019 Algoritmos Vector y Matrices
19/37
dimensiones, pero la ms comn es la de dos dimensiones, la
cual significa que es un arreglo conformado por varios
renglones y varias columnas.
Ilustracin 8 Comparacin entre una variable, un arreglounidimensional y un arreglo de dos dimensiones.
Para declararuna matriz, el tamao de cada una de
sus dimensiones se coloca en su propio parntesis cuadradoo corchetes.
PSEUDOCDIGO Y DIAGRAMA N-S
Arreglos:Edad : entero de [ 3 ] renglones [4] columnas
Parciales : real de [ 5 ] renglones [8] columnas
DIAGRAMA DE FLUJO
Ilustracin 9Forma en que se declaran matrices
Al declarar una matriz, se le pueden dar valores de
inicio para cada una de sus posiciones, pera lo cual
despus de indicar el tamao de este se coloca un signo de
igual y entre llaves {}, los valores de cada posicin
separados por comas, recordando que el primer valor
Variable Arreglo [4]( 1 columna, 3 renglones)
Posicin 1
Posicin 2
Posicin 3
Posicin 4
Posicinnica
Rengln 1Columna 1
Rengln 2Columna 1
Rengln 3Columna 1
Rengln 4Columna 1
Rengln 1Columna 2
Rengln 2Columna 2
Rengln 3Columna 2
Rengln 4Columna 2
Rengln 1Columna 3
Rengln 2Columna 3
Rengln 3Columna 3
Rengln 4Columna 3
Arreglo [3][4]
( 4 renglones, 3 columnas)
Arreglos:
Edad : entero de [ 3 ] renglones [4] columnas
Parciales : real de [ 5 ] renglones [8] columnas
8/12/2019 Algoritmos Vector y Matrices
20/37
8/12/2019 Algoritmos Vector y Matrices
21/37
corchetes en que deseamos guardar el dato dado por el
usuario.
PSEUDOCDIGO Y DIAGRAMA N-S DIAGRAMA DE FLUJOLeer edades[2][3]// almacena una dato en el rengln2 // columna 3 del arreglo edades
Ilustracin 12Forma en que se almacena informacin a una matriz.
Para asignarel resultado de una operacin en una
posicin especfica de una matriz debemos de indicar el
nombre del arreglo y la posicin del rengln ente corchetes
y columna entre corchetes en que deseamos colocar el
resultado de la expresin.
PSEUDOCDIGO Y DIAGRAMA N-S DIAGRAMA DE FLUJOEdades[2][3] = 5 * 10// almacena una dato en el rengln2 // columna 3 del arreglo edades
Ilustracin 13 Forma en que se asignan datos a una matriz.
La comparacin se realiza de la misma manera en que
se realizan las operaciones ya vistas: colocando el nombre
y posicin del rengln entre corchetes y la posicin de la
columna entre corchetes de la matriz que se quierecomparar, el operador relacional y el valor o variable
contra quien se coteja, teniendo en cuenta que podra ser
otra posicin de otra matriz. No se ejemplifican debido a
que se tendra que desarrollar la estructura condicional o
cclica.
A continuacin realizamos el primer ejemplo de un
algoritmo en el cual utilizamos una matriz de 5 renglones
por cuatro columnas, donde los renglones hacen referencia a
un nmero de alumno mediante la variable num_alumla cual
es del tipo contador al igual que la variableparcial la
cual es la que se encarga de apuntar a las columnas que a
su vez indican el nmero de parcial de cada alumno, es
decir que si nos encontramos con la coordenada [3][2]
Edades[2][3]
Edades[2][3] = 5 * 10
8/12/2019 Algoritmos Vector y Matrices
22/37
estamos apuntando al parcial 2 del tercer alumno. Cada
variable es incrementada en una estructura cclica hacer
para ... hasta ..., donde la que controla el parcial esta
anidada dentro de la que controla al numero de alumno.
A partir de este momento omitiremos el anlisis del
sistema ya lo podemos realizar mentalmente al igual que la
prueba.
Ejemplo Se necesita de un sistema que utiliza un arreglo de 5 renglones ycuatro columnas, para almacenar los 3 parciales y su promedio de5 alumnos.
Disear El algoritmoPSEUDOC DIGO
Pseudocdigo: alumnosArreglos:
calificaciones : real de [5] renglones [4] columnas
Variables:num_alum, parcial : entero = 0acum_cal : real = 0
1. Inicio2. Hacer para num_alum = 1 hasta num_alum > 5
2.1 acum_cal = 02.2 Hacer para parcial = 1 hasta parcial > 3
2.2.1 Escribir Calificacin del alumno ,num_alum,en parcial:, parcial2.2.2 Leer calificaciones[num_alum][parcial]2.2.3 acum_cal = acum_cal + calificaciones[num_alum][parcial]2.2.4 parcial = parcial + 1Fin para
2.3 calificaciones[num_alum][parcial] = acum_cal / 32.4 num_alum = num_alum + 1Fin para
3. FinDiagrama N-S
// diagrama N-S : AlumnosInicioArreglos:
calificaciones : real de [5] renglones [4] columnasVariables:
num_alum, parcial : entero = 0acum_cal : real = 0
num_alum > 5
num_alum=1
acum_cal = 0
parcial > 3
parcial=1 Escribir Calificacin del alumno ,num_alum,en
8/12/2019 Algoritmos Vector y Matrices
23/37
parcial:, parcialLeer calificaciones[num_alum][parcial]acum_cal = acum_cal + calificaciones[num_alum][parcial]
parcial = parcial + 1
calificaciones[num_alum][parcial] = acum_cal / 3
num_alum = num_alum + 1
Fin
DIAGRAMA DE FLUJO
8/12/2019 Algoritmos Vector y Matrices
24/37
Tabla 4 Ejemplo 1 de arreglos bidimensionales
Ejemplo Se necesita un sistema que utiliza una matriz de 10 renglones y 3columnas. En las dos primeras columnas se colocan los promediosde los 10 alumnos de dos grupos (A y B) y en la tercera columnase almacenar el promedio ms alto de cada posicin.
Paso II. Disear El algoritmo
INICIO
Arreglos:
calificaciones : real de [5] renglones [4] columnas
FIN
V
// Diagrama de flujo: Alumnos
num_alum = 1
num_alum = num_alum + 1num_alum > 5
Variables:
num_alum, parcial : entero = 0
acum_cal : real = 0
Vparcial = 1
parcial = parcial + 1parcial > 3
Calificacin del alumno ,
num_alum,en parcial:, parcial
F
F
acum_cal = 0
calificaciones[num_alum][parcial]
acum_cal = acum_cal + calificaciones[num_alum][parcial]
calificaciones[num_alum][parcial] = acum_cal / 3
8/12/2019 Algoritmos Vector y Matrices
25/37
PSEUDOCDIGOPseudocdigo: alumnos de 2 grupos
Arreglos:grupos : real de [10] renglones [3] columnas
Variables:alumno : entero = 0
1. Inicio2. Hacer para alumno = 1 hasta alumno > 10
2.1 Escribir Promedio del alumno ,alumno,del primer grupo:2.2 Leer grupos[alumno][1]2.3 Escribir Promedio del alumno ,alumno,del segundo grupo:2.4 Leer grupos[alumno][2]2.5 Si grupos[alumno][1] > grupos[alumno][2] entonces
2.5.1 grupos[alumno][3] = grupos[alumno][1]Si no
2.5.2 grupos[alumno][3] = grupos[alumno][2]Fin si
2.6 alumno = alumno + 1Fin para
3. FinDiagrama N-S
// diagrama N-S : alumnos de 2 grupos
Inicio
Arreglos:
grupos : real de [10] renglones [3] columnas
Variables:
alumno : entero = 0
alumno > 10
alumno = 1
Escribir Promedio del alumno ,alumno, del primer grupo:
Leer grupos[alumno][1]
Escribir Promedio del alumno ,alumno, del segundo grupo:
Leer grupos[alumno][2]
grupos[alumno][1] > grupos[alumno][2]
verdadero falso
grupos[alumno][3] = grupos[alumno][1] grupos[alumno][3] = grupos[alumno][2]
alumno = alumno + 1
Fin
DIAGRAMA DE FLUJO
8/12/2019 Algoritmos Vector y Matrices
26/37
8/12/2019 Algoritmos Vector y Matrices
27/37
problemas.
1. Sistema que almacena la estatura, peso y talla dezapatos de hasta 100 personas, preguntando si se deseaalmacenar los datos de otra persona.
2. Sistema que tiene cuatro opciones: suma, resta,multiplicacin y salir, en el cual segn la opcin quese seleccione muestra las tablas correspondientes osale del sistema.
3. Sistema que permite almacenar, consultar y modificar elnombre, direccin y telfono de hasta 10 personas.
4. Sistema que captura y posteriormente ordenaalfabticamente los datos de 10 personas ya sea pornombre, apellido paterno o apellido materno
5. Sistema que almacena los tres parciales y promedios de10 alumnos, de las cuales necesitamos saber cuantos
sacaron de promedio menos de 6, cuantos entre 6 y 8,cuantos entre 8 y 9 y cuantos ms de 9 ; adems quedespliegue los parciales de todos aquellos que tienenpromedio de 9 o ms.
5.2 ESTRUCTURAS
Este subtema en realidad es muy sencillo, ya que
nosotros ya utilizamos estructuras desde los primeros
temas:
Una variable, es en realidad la estructura mssencilla a manejar, la cual consiste en almacenar
solo un dato de un tipo especifico.
Un arreglo, es una estructura la cual almacena ndatos del mismo tipo. Cuando declaramos un arreglo
del tipo entero de 3 posiciones llamado arreglo1
(arreglo1[3] : entero), en realidad estamos creando
una estructura de tres variables enteras
(arreglo1[0], arreglo1[1] y arreglo1[2]).
Pues una estructura no es muy diferente a un
arreglo, ya que una estructura es un conjunto n variables,
las cuales pueden ser de diferentes tipos.
8/12/2019 Algoritmos Vector y Matrices
28/37
Ilustracin 14 Diferencia entre variables, arreglos y estructuras.
Hablando en trminos de base datos, una estructura
se asemeja a un registro, el cual es un conjunto de campos
relacionados entre si.
En un algoritmo antes de utilizar a una estructura
para realizarle cualquier operacin, se deben de indicar
las variables que contendr la estructura y el nombre deesta. Este proceso se conoce como definicin de la
estructuray se realiza en la seccin estructuras.
PSEUDOCDIGO YDIAGRAMA N-S
DIAGRAMA DE FLUJO
Estructuras:
Alumno con los
campos:
Nombre :
alfanumrico
N_control :
entero
Semestre :
entero
Grupo :
alfanumrico
Promedio_final
: real
Edad: entera edades [4] : enteros
Posicin 1
de tipo
entero
Posicin
nica
Estructura
Posicin 2
de tipo
entero
Posicin 3
de tipo
entero
Posicin 4
de tipoentero
Variable 1
de tipo real
Variable 2 de
tipo entero
Variable 3 de tipo
alfanumrico
Variable 4 de
tipo boleano
Estructuras:
Alumnocon los campos:
Nombre : alfanumrico
N_control : entero
Semestre : entero
Grupo : alfanumrico
Promedio_final : real
8/12/2019 Algoritmos Vector y Matrices
29/37
Ilustracin 15Forma en que se define una estructura.
Las operaciones que se pueden realizar sobre las
estructuras son exactamente las mismas que a las variables:declaracin, desplegar, almacenar, asignar, inicializar y
comparar.
La declaracinno desvara mucho de la declaracin
de variables incluso se realiza en la seccin de variables,
ya que hay que colocar el nombre de la estructura y el tipo
de dato, con la excepcin de que el tipo de dato ya no es
entero, real, alfanumrico o boleano, sino que debe ser el
nombre de una estructura ya definida; ya que estamos
declarando una variable con un nombre especfico que debe
tener los campos que se definieron en la estructura. A esto
es a lo que llamamos: declarar una variable del tipo
estructura predefinida.
PSEUDOCDIGO YDIAGRAMA N-S
DIAGRAMA DE FLUJO
Estructuras:
Alumno con los
campos:
Nombre :
alfanumrico
N_control :
entero
Semestre :
entero
Grupo :
alfanumrico
Promedio_final
: real
variables:
alu1 : Alumnoalu2 : Alumno
// se estn declarando dos
variables del // tipo Alumno
Ilustracin 16 declaracin de variables del tipo de una estructurapredefinida
Estructuras:
Alumnocon los campos:
Nombre : alfanumrico
N_control : entero
Semestre : entero
Grupo : alfanumrico
Promedio_final : real
variables:
alu1 : Alumno
alu2 : Alumno
8/12/2019 Algoritmos Vector y Matrices
30/37
8/12/2019 Algoritmos Vector y Matrices
31/37
Leer alu1.promedio_final
// almacena un dato en el campo promedio_final de
alu1
Ilustracin 19Almacenar informacin en campo de una variable del tipoestructura.
Para asignar el resultado de una operacin dentro
de una variable de un tipo de estructura predefinido en un
campo especfico, debemos de indicar el nombre de la
variable, colocar un punto . y el campo que deseamos
visualizar.
PSEUDOCDIGO Y DIAGRAMA N-S DIAGRAMA DE FLUJOalu1.promedio_final = 9.5
// almacena un dato en el campo promedio_final
alu1
Ilustracin 20 Asignar datos en campo de una variable del tipoestructura.
A continuacin realizamos un primer ejercicio que
utiliza estructuras, dentro de la definicin de la
estructura se declara un arreglo de 4 posiciones para
guardar las calificaciones del alumno.
Ejemplo Se necesita un sistema que captura el nombre, numero de control,calificacin de primer parcial, calificacin de segundo parcial,calificacin de tercer parcial y promedio final de 2 alumnos, elcual nos debe de decir que alumno salio con respecto a supromedio final.
Paso II. Disear El algoritmoPSEUDOCDIGO
Pseudocdigo: Comparar alumnos
Estructuras:
alumnocon los campos:
nombre : alfanumrico
num_control : entero
Arreglos:
parciales : real de [4] posiciones
// el arreglo parciales esta dentro de la estructura alumno
Variables:
alumno1 : alumno
alumno2 : alumno
1. Inicio2. Escribir Dame el nombre del primer alumno:3. Leer alumno1.nombre4. Escribir Dame el nmero de control del primer alumno:5. Leer alumno1.num_control6. Escribir Dame calificacin de 1er. parcial del primer alumno:7. Leer alumno1.parciales[1]8. Escribir Dame calificacin de 2do. parcial del primer alumno:
alu1.promedio_final
alu1.promedio_final = 9.5
8/12/2019 Algoritmos Vector y Matrices
32/37
9. Leer alumno1.parciales[2]10. Escribir Dame calificacin de 3er. parcial del primer alumno:11. Leer alumno1.parciales[3]12. alumno1.parciales[4] = (alumno1.parciales[1] + alumno1.parciales[2] + alumno1.parciales[3] ) / 313.
Escribir Dame el nombre del segundo alumno:14. Leer alumno2.nombre
15. Escribir Dame el nmero de control del segundo alumno:16. Leer alumno2.num_control17. Escribir Dame calificacin de 1er. parcial del segundo alumno:18. Leer alumno2.parciales[1]19. Escribir Dame calificacin de 2do. parcial del segundo alumno:20. Leer alumno2.parciales[2]21. Escribir Dame calificacin de 3er. parcial del segundo alumno:22. Leer alumno2.parciales[3]23. alumno2.parciales[4] = (alumno2.parciales[1] + alumno2.parciales[2] + alumno2.parciales[3] ) / 324. Si alumno1.parciales[4] > alumno2.parciales[4] entonces
24.1Escribir alumno1.nombre, Salio mejor en promedio final que ,alumno2.nombreSi no
24.2Escribir alumno2.nombre, Salio mejor en promedio final que ,alumno1.nombreFin si
25. FinDIAGRAMA DE FLUJO
8/12/2019 Algoritmos Vector y Matrices
33/37
Diagrama N-S
// diagrama N-S : Comparar alumnos
Inicio
Estructuras:
INICIO
Estructuras:alumnocon los campos:
nombre : alfanumriconum_control : entero
Arreglos:
parciales : real de [4] posiciones
Variables:alumno1 : alumno
alumno2 : alumno
Dame el nombre del primer alumno:,Dame el nmero de control del primer alumno:,
Dame calificacin de 1er. parcial del primer alumno:,Dame calificacin de 2do. parcial del primer alumno:,
Dame calificacin de3er. parcial del primer alumno:
alumno1.nombrealumno1.num_control
alumno1.parcial[1]
alumno1.parcial[2]alumno1.parcial[3]
alumno1.parciales[4] = (alumno1.parciales[1] + alumno1.parciales[2] + alumno1.parciales[3] ) / 3
Dame el nombre del segundo alumno:, Dame el nmero de control del segundo alumno:,
Dame calificacin de 1er. parcial del segundo alumno:,Dame calificacin de 2do. parcial del segundo alumno:,Dame calificacin de 3er. parcial del segundo alumno:
alumno2.nombre
alumno2.num_controlalumno2.parcial[1]alumno2.parcial[2]alumno2.parcial[3]
alumno2.parciales[4] = (alumno2.parciales[1] + alumno2.parciales[2] + alumno2.parciales[3] ) / 3
alumno1.parciales[4]>
alumno2.parciales[4]alumno1.nombre, Sali mejor en
promedio final que,alumno2.nombre
Alumno2.nombre, Sali mejor en
promedio final que,alumno1.nombre
V F
FIN
// Diagrama de flujo : Comparar alumnos
8/12/2019 Algoritmos Vector y Matrices
34/37
alumnocon los campos:
nombre : alfanumrico
num_control : entero
Arreglos:
parciales : real de [4] posicionesVariables:
alumno1 : alumno
alumno2 : alumno
Escribir Dame el nombre del primer alumno:
Leer alumno1.nombre
Escribir Dame el nmero de control del primer alumno:
Leer alumno1.num_control
Escribir Dame calificacin de 1er. parcial del primer alumno:
Leer alumno1.parciales[1]
Escribir Dame calificacin de 2do. parcial del primer alumno:
Leer alumno1.parciales[2]
Escribir Dame calificacin de 3er. parcial del primer alumno:
Leer alumno1.parciales[3]
alumno1.parciales[4] = (alumno1.parciales[1] + alumno1.parciales[2] + alumno1.parciales[3] ) / 3
Escribir Dame el nombre del segundo alumno:Leer alumno2.nombre
Escribir Dame el nmero de control del segundo alumno:
Leer alumno2.num_control
Escribir Dame calificacin de 1er. parcial del segundo alumno:
Leer alumno2.parciales[1]
Escribir Dame calificacin de 2do. parcial del segundo alumno:
Leer alumno2.parciales[2]
Escribir Dame calificacin de 3er. parcial del segundo alumno:
Leer alumno2.parciales[3]
alumno2.parciales[4] = (alumno2.parciales[1] + alumno2.parciales[2] + alumno2.parciales[3] ) / 3
alumno1.parciales[4] > alumno2.parciales[4]
Verdadero Falso
Escribir alumno1.nombre, Salio mejor en promedio
final que ,alumno2.nombre
Escribir alumno2.nombre, Salio mejor en promedio
final que ,alumno1.nombreFin
Tabla 6 Ejemplo 1 del manejo de estructuras
En este primer ejemplo nos damos cuenta que para
introducir un dato dentro de un campo de una estructura el
cual es a su vez parte de un arreglo, se tiene que indicar
en el lado del campo la posicin en la que se debe de
guardar el dato. Pero ahora veremos como introducir datos a
un arreglo del tipo estructura predefinida.
Ejemplo Se necesita un sistema que almacena la clave, descripcin, preciode compra, precio de menudeo y precio de mayoreo de 10 productos.Paso II. Disear El algoritmo
PSEUDOCDIGOPseudocdigo: SupermercadoEstructuras:
productocon los campos:clave : entera
8/12/2019 Algoritmos Vector y Matrices
35/37
descripcin : alfanumricoArreglos :
precios : real, de [3] posicionesArreglos:
productos :producto, de [10] posiciones
Variables:ndice : entera
1. Inicio2. hacer para ndice = 1 hasta ndice > 10
2.1 Escribir Clave del producto , ndice, :2.2 Leer productos[ndice].clave2.3 Escribir Descripcin del producto , ndice, :2.4 Leer productos[ndice].descripcin2.5 Escribir Precio de compra del producto , ndice, :2.6 Leer productos[ndice].precios[1]2.7 Escribir Precio de menudeo del producto , ndice, :2.8 Leer productos[ndice].precios[2]2.9 Escribir Precio de mayoreo del producto , ndice, :2.10 Leer productos[ndice].precios[3]2.11 ndice = ndice + 1
Fin Para
3. FinDiagrama N-S
// diagrama N-S : SupermercadoInicioEstructuras:
productocon los campos:clave : enteradescripcin : alfanumricoArreglos :
precios : real, de [3] posicionesArreglos:productos :producto, de [10] posicionesVariables:
ndice : entera
ndice > 10
ndice = 1
Escribir Clave del producto , ndice, :Leer productos[ndice].claveEscribir Descripcin del producto , ndice, :Leer productos[ndice].descripcinEscribir Precio de compra del producto , ndice, :Leer productos[ndice].precios[1]Escribir Precio de menudeo del producto , ndice, :Leer productos[ndice].precios[2]Escribir Precio de mayoreo del producto , ndice, :Leer productos[ndice].precios[3]
ndice = ndice + 1Fin
DIAGRAMA DE FLUJO
8/12/2019 Algoritmos Vector y Matrices
36/37
Tabla 7 Ejemplo 2 de manejo de estructuras
Ejercicios.I. Realiza un algoritmo que utilice estructuras mediantelas tres tcnicas para cada uno de los puntos siguientes.1. Se necesita un sistema para una escuela el cual
almacene el nombre, direccin, telfono, semestre,grupo y matricula de 100 alumnos.
2. Se necesita un sistema para una escuela el cual permitealmacenar, borrar, buscar y ordenar hasta un mximo de100 alumnos con los mismos datos del ejemplo anterior.
INICIO
Estructuras:roductocon los campos:
clave : alfanumricodescripcin : entero
Arreglos:precios : real de [3] posiciones
Arreglos:productos : producto de [10] posiciones
Clave del producto, ndice, :Descripcin del producto , ndice, :
Precio de compra del producto , ndice, :Precio de menudeo del producto , ndice, :
Precio de mayoreo del producto , ndice, :
productos[ndice].claveproductos[ndice].descripcinproductos[ndice].precios[1]productos[ndice].precios[2]productos[ndice].precios[3]
FIN
// Diagrama de flujo : Supermercado
Variables:ndice : entera
ndice = 1
ndice = ndice + 1
ndice > 10
V
F
8/12/2019 Algoritmos Vector y Matrices
37/37
CONCLUSIN
En este tema se presentaron 2 subtemas, donde cada
uno tiene una gran importancia para tener una mejor
mentalidad de programador, ya que ambos estn enfocados a
un mejor almacenamiento de datos.
El primero, abord a los arreglos los cuales nos
evitan la necesidad de declarar bastantes variables del
mismo tipo, ya que solo bastar con declarar una sola con
varias posiciones, donde cada posicin puede almacenar un
dato del tipo del arreglo. Vimos que a cada posicin se
puede acceder por medio de un ndice, el cual debe de
colocarse dentro de unos corchetes despus del nombre del
arreglo. Tambin se estudi que los arreglos pueden ser de
varias dimensiones, donde los ms comunes son los de una y
dos, a los primeros se les llama vectores y a los segundos
matrices.
En el segundo se estudi a las estructuras, las
cuales a diferencia de los arreglo se utilizan para
almacenar datos de diferentes tipos. Vimos que las
estructuras se deben de declarar antes de crear variables
de este tipo predefinido. Aprendimos que para almacenar
valores dentro de una variable del tipo estructura, debemos
de indicar el nombre de la variable, colocar un punto y el
nombre de la variable interna en la que se desea guardar el
dato.
Con este tema hemos cubierto casi todo nuestro
curso, por lo cual si se ha logrado la comprensin hastaeste punto podemos decir que estamos a un 90% de lograr el
objetivo general.
Top Related