[Inf 140] Algoritmos Y Arreglos (6 X Hoja)

4

Click here to load reader

Transcript of [Inf 140] Algoritmos Y Arreglos (6 X Hoja)

Page 1: [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

Page 2: [Inf 140]  Algoritmos Y Arreglos (6 X Hoja)

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)

Page 3: [Inf 140]  Algoritmos Y Arreglos (6 X Hoja)

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)

Page 4: [Inf 140]  Algoritmos Y Arreglos (6 X Hoja)

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