[Inf 140] Algoritmos Y Arreglos (6 X Hoja)
Click here to load reader
-
Upload
daniel-barraza-rodriguez -
Category
Lifestyle
-
view
7.441 -
download
3
Transcript of [Inf 140] Algoritmos Y Arreglos (6 X Hoja)
Profesores
PHM/DCP
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
- 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
Subíndice designa la posición
del elemento en el vector
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
notas[1] = 70
notas[2] = 65
notas[3] = 62
notas[4] = 60
notas[n]
70 65 62 60 58 55 50
Arreglo notas
Profesores
PHM/DCP
- 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]
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP
sin array …
(muchas variables)
var
real: nota1,nota2, nota3, sum
…
escribir(“nota 1 = “)
leer(nota1)
…
sum � nota1 + nota2 + nota3
con array …
var
real: nota[1..3], sum
…
desde i � 1 hasta 3 hacer
escribir(“nota ”,i, “ = ”)
leer(nota[i])
fin_desde
sum � 0
desde i � 1 hasta 3 hacer
sum � sum + nota[i]
fin_desde
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP
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]
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Ejemplos)
Profesores
PHM/DCP
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
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Ejemplo
Profesores
PHM/DCP
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 ����
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Profesores
PHM/DCP
Asignación:
<nombre del array> [subindice] ���� <valor>
numero[2] ���� 5
desde i ���� 1 hasta 5 hacer
numero[i] ���� 8
fin_desde
numero[x] ���� x + y
numero[a] ���� temp[5] + 2
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP
Lectura:
leer (<nombre del array>[subindice])
leer (numero[4])
Escritura:
escribir (<nombre del array>[subindice])
escribir (“el número es: ”,numero[3])
leer (numero[x])
leer (numero[a+b])
escribir (“el número es: ”,numero[a])
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP
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
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP
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
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP
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
escribir(nombre[i],“ ”)
fin_desde
saltar_linea
desde i ���� 1 hasta 4 hacer
escribir(edad[i],“ ”)
fin_desde
ana pedro luis felipe
22 19 26 21
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Unidimensionales (Vectores)
Profesores
PHM/DCP INF 140 – Informática I
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
PHM/DCP INF 140 – Informática I
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
PHM/DCP
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.
Fila 1
notas[1,1] notas[1,2] .............. notas[1,n]
notas[2,1] notas[2,2] ............ notas[2,n]
notas[i,1] notas[i,2]
.............
notas[i,n].............
notas[m,1] notas[m,2] ..............
.............
notas[m,n]
Fila 2
Columna 1 Columna 2
Fila i
Columna n
Fila m
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Profesores
PHM/DCP
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
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Profesores
PHM/DCP
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
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Profesores
PHM/DCP
Lectura:
leer (<nombre del array> [subindice fila, subindice columna])
leer (numero[2,4])
Escritura:
escribir (<nombre del array>)[subindice fila, subindice columna])
escribir (“la contidad es: ”, numero[6,7])
leer (numero[a,b])
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Arrays Bidimensionales (Matrices)
Profesores
PHM/DCP
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:
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática
Ejercicio
Profesores
PHM/DCP INF 140 – Informática I
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
PHM/DCP
se pueden definir & usar …
arreglos multidimensionales ¿?
☺
INF 140 – Informática I
Pontificia Universidad Católica de Valparaíso
Escuela de Ingeniería Informática