Este documento presenta información sobre arrays unidimensionales (vectores) para la asignatura "Algoritmos y Arreglos" de la Pontificia Universidad Católica de Valparaíso. Explica conceptos básicos como la definición y notación de vectores, y operaciones como asignación, lectura, escritura y recorrido de elementos. También incluye ejemplos de código para trabajar con vectores.
[Inf 140] Estructuras Repetitivas Y Selectivas (6 X Hoja)
[Inf 140] Algoritmos Y Arreglos (1 X Hoja)
1. Pontificia Universidad Católica de Valparaíso
Facultad de Ingeniería
Escuela de Ingeniería Informática
“Algoritmos y Arreglos”
Asignatura
INF 140 – Informática I
Profesores
Pamela Hermosilla Monckton
Daniel Cabrera Paniagua
Profesores
PHM/DCP
2. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
- Un array es un conjunto finito y ordenado de elementos homogéneos
Cada elemento puede ser identificado Son del mismo tipo de datos
- Un array unidimensional o vector es el tipo de array más simple
Arreglo notas
70 65 62 60 58 55 50
notas[1] = 70
notas[2] = 65
notas[n]
notas[3] = 62
notas[4] = 60
Subíndice designa la posición
del elemento en el vector
Profesores
INF 140 – Informática I
PHM/DCP
3. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
- Las operaciones que se pueden realizar con vectores son: asignación, lectura,
escritura, recorrido, actualización (añadir, borrar, insertar), ordenación, búsqueda.
- La notación algorítmica que utilizaremos es la siguiente:
<tipo de dato> : <nombre_del_arreglo> [1..dimension]
entero: numero[1..100]
Profesores
INF 140 – Informática I
PHM/DCP
4. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
sin array … con array …
(muchas variables) var
real: nota[1..3], sum
var …
real: nota1,nota2, nota3, sum desde i 1 hasta 3 hacer
escribir(“nota ”,i, “ = ”)
… leer(nota[i])
escribir(“nota 1 = “) fin_desde
leer(nota1)
… sum 0
sum nota1 + nota2 + nota3 desde i 1 hasta 3 hacer
sum sum + nota[i]
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
5. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Ejemplos)
var
entero: temp[1..24],min, max, i
real: prom, nota[1..45]
const
max_hora = 24
total = 45
var
entero: temp[1..max_hora],min, max, i
real: prom, nota[1..total]
Profesores
INF 140 – Informática I
PHM/DCP
6. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Ejemplo
algoritmo ejemplo
const
max_alumnos = 50
var
entero: n, i
real: prom, nota[1.. max_alumnos]
inicio
repetir
escribir(“Ingrese la cantidad de alumnos. El máximo de alumnos es cincuenta”)
leer(n)
hasta_que ((n > 0) ∧ (n <= max_alumnos))
escribir(“Ingresar notas de alumnos”)
desde i 1 hasta n hacer
escribir(“Nota alumno ”,i,“= ”)
leer(nota[i])
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
7. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
algoritmo malo
var
entero: n, temp[1.. n]
inicio
repetir
escribir(“n = “)
leer(n)
hasta_que n > 0
desde i 1 hasta n hacer
…
MAL
Profesores
INF 140 – Informática I
PHM/DCP
8. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Asignación:
<nombre del array> [subindice] <valor>
numero[2] 5
numero[x] x+y
numero[a] temp[5] + 2
desde i 1 hasta 5 hacer
numero[i] 8
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
9. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Lectura:
leer (<nombre del array>[subindice])
leer (numero[4])
leer (numero[x])
leer (numero[a+b])
Escritura:
escribir (<nombre del array>[subindice])
escribir (“el número es: ”,numero[3])
escribir (“el número es: ”,numero[a])
Profesores
INF 140 – Informática I
PHM/DCP
10. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Inserción:
/* Se desea insertar nuevo_elemento en la posición p */
/* i corresponde al índice del penúltimo elemento*/
mientras (i >= p) hacer
autos[i+1] autos[i]
i i–1
fin_mientras
autos[p] nuevo_elemento
Profesores
INF 140 – Informática I
PHM/DCP
11. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Eliminar:
/* Se desea eliminar elemento en la posición j */
/* n corresponde al índice del último elemento*/
desde (i j) hasta n-1 hacer
autos[i] autos[i+1]
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
12. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Imprimir - Escribir
hasta el momento se ha asumido
que cada <escribir> escribe en una línea nueva
...de ahora en adelante…
se asume que todo es escrito en la misma línea
saltar_linea especifica que habrá un salto de línea
desde i 1 hasta 4 hacer
ana pedro luis felipe
escribir(nombre[i],“ ”)
22 19 26 21
fin_desde
saltar_linea
desde i 1 hasta 4 hacer
escribir(edad[i],“ ”)
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
13. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Ejercicio
Desarrollar un algoritmo que permita recibir 50
números en un arreglo unidimensional, y luego los
liste.
Desarrollar un algoritmo que permita recibir 50
números en un arreglo unidimensional, y luego los liste
(en ambos sentidos).
Desarrollar un algoritmo que permita recibir 50
números en un arreglo unidimensional, y luego los liste
(en ambos sentidos). Utilizar procedimientos.
Profesores
INF 140 – Informática I
PHM/DCP
14. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Algoritmo listar_numeros
Var
entero: contador, numeros[1.. 50]
Inicio
contador <- 1
repetir
escribir(“Ingrese un número”)
leer(numeros[contador])
contador <- contador + 1
hasta_que (contador = 51)
contador <- 1
escribir(“Se listan los números ingresados”)
saltar_linea
repetir
escribir(numeros[contador])
saltar_linea
contador <- contador + 1
hasta_que (contador = 51)
Fin
Profesores
INF 140 – Informática I
PHM/DCP
15. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Un array bidimensional se puede considerar como un vector de vectores. Es
por consiguiente, un conjunto de elementos homogéneos y ordenados en el que
se necesita especificar dos subíndices para poder identificar cada elemento del
array.
notas[1,1] notas[1,2] .............. notas[1,n]
notas[2,1] notas[2,2] ............ notas[2,n]
Fila 1
.............
Fila 2
notas[i,1] notas[i,2] ............. notas[i,n]
.............
Fila i
notas[m,1] notas[m,2] .............. notas[m,n]
Fila m
Columna n
Columna 1 Columna 2
Profesores
INF 140 – Informática I
PHM/DCP
16. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Las operaciones que se pueden realizar con matrices son: asignación,
lectura, escritura, recorrido, actualización (añadir, borrar, insertar),
ordenación, búsqueda.
La notación algorítmica que utilizaremos es la siguiente:
<tipo de dato> : <nombre_del_arreglo> [1..dim_fila,1..dim_columna]
real: venta[1..3,1..5]
Asignación:
<nombre del array> [subindice fila,subindice columna] <valor>
numero[1,1] 5
desde i 1 hasta 3 hacer
desde j 1 hasta 5 hacer
numero[i,j] 0
fin_desde
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
17. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Llenado por filas
desde i 1 hasta m hacer
escribir(“datos fila ”,i)
saltar_linea
desde j 1 hasta n hacer
escribir(“dato posición ”,i, “ – ”,j, “ = ”)
leer(nota[i,j])
fin_desde
fin_desde
Llenado por columnas
desde a 1 hasta n hacer
escribir(“datos columna “,a)
saltar_linea
desde b 1 hasta m hacer
escribir(“dato posición ”,b,“ –”,a, “ = ”)
leer(nota[b,a])
fin_desde
fin_desde
Profesores
INF 140 – Informática I
PHM/DCP
18. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Lectura:
leer (<nombre del array> [subindice fila, subindice columna])
leer (numero[2,4])
leer (numero[a,b])
Escritura:
escribir (<nombre del array>)[subindice fila, subindice columna])
escribir (“la contidad es: ”, numero[6,7])
Profesores
INF 140 – Informática I
PHM/DCP
19. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Ejercicio
Uno de los restorantes más importantes del país se
encuentra en un proceso de renovación tecnológica,
por ello requiere de un software que gestione los
distintos platos que tiene al servicio de sus clientes. El
gerente de este establecimiento tiene plena confianza
en los estudiantes de la PUCV, razón por la cual le ha
solicitado a los alumnos de INF-140 que construyan un
algoritmo que realice lo siguiente:
Profesores
INF 140 – Informática I
PHM/DCP
20. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Ejercicio
1) Ingreso de los platos ofrecidos al público, para ello debe
almacenar el nombre del plato, sus ingredientes y el precio. Haga
un bosquejo de los arrays utilizados describiendo claramente los
datos que se almacenan en ellos.
2) Eliminación de un plato elegido por el usuario. Suponga que no
se ingresan platos repetidos.
3) Cuantos platos tienen al menos 3 ingredientes en común. Los 3
ingredientes deben ser ingresados por el usuario.
4) Cuantos platos tienen “N” ingredientes. “N” debe ser ingresado
por el usuario.
Profesores
INF 140 – Informática I
PHM/DCP
21. Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
se pueden definir & usar …
arreglos multidimensionales
¿?
☺
Profesores
INF 140 – Informática I
PHM/DCP