Vous êtes sur la page 1sur 29

Pontificia Universidad Catlica de Valparaso

Facultad de Ingeniera
Escuela de Ingeniera Informtica

Algoritmos y Arreglos

Asignatura

INF 1141 Fundamentos de Algoritmos


Profesores

Pamela Hermosilla Monckton


Rodolfo Villarroel Acevedo

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


- Un array es un conjunto finito y ordenado de elementos homogneos
Cada elemento puede ser identificado

Son del mismo tipo de datos

- Un array unidimensional o vector es el tipo de array ms simple


Arreglo notas
70

65

62

60

58

55

notas [1] = 70
notas [2] = 65

notas [n]

notas [3] = 62
notas [4] = 60
Subndice designa la posicin
del elemento en el vector
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

50

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


- Las operaciones que se pueden realizar con vectores son: asignacin, lectura,
escritura, recorrido, actualizacin (aadir, borrar, insertar), ordenacin, bsqueda.
- La notacin algortmica que utilizaremos es la siguiente:

<nombre_del_arreglo> : vector [dimension] <tipo de dato>


numero : vector [100] numerico

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


sin array

con array

(muchas variables)
var
nota1,nota2, nota3, sum: numerico

imprimir (nota 1 = )
leer (nota1)

sum = nota1 + nota2 + nota3

var
sum,i: numerico
nota: vector[3] numerico

desde i = 1 hasta 3
{
imprimir (nota ,i, = )
leer (nota [i])
}
sum = 0
desde i = 1 hasta 3
{
sum = sum + nota [i]
}

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Ejemplos)


var
min, max, i, prom: numerico
temp: vector[24] numerico
nota: vector[45] numerico

const
max_hora = 24
total = 45
var
min, max, i, prom: numerico
temp: vector[max_hora] numerico
nota: vector[total] numerico

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


Asignacin:
<nombre del array> [subindice] = <valor>
numero [2] = 5
numero [x] = x + y

numero [a] = temp [5] + 2


desde i = 1 hasta 5
{
numero [i] = 8
}

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


Lectura:
leer (<nombre del array> [subindice])
leer (numero [4])
leer (numero [x])
leer (numero [a+b])

Escritura:
imprimir (<nombre del array> [subindice])
imprimir (el nmero es: , numero [3])

imprimir (el nmero es: , numero [a])

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


Imprimir - Escribir

desde i = 1 hasta 4
{
imprimir (nombre [i], )
}
imprimir (\n)
desde i = 1 hasta 4
{
imprimir (edad [i], )
}

ana pedro luis felipe


22 19 26 21

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Ejemplo
programa ejemplo
const
max_alumnos = 50
var
n, i, prom: numerico
nota: vector [max_alumnos] numerico
inicio
repetir
imprimir(Ingrese la cantidad de alumnos. El mximo de alumnos es cincuenta)
leer (n)
hasta (n > 0 and n <= max_alumnos)
imprimir (Ingresar notas de alumnos)
desde i = 1 hasta n
{
imprimir (Nota alumno ,i,= )
leer (nota [i])
}
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

programa malo
var
n: numerico
temp: vector [n] numerico
inicio
repetir
imprimir (n = )
leer (n)
hasta (n > 0)
desde i = 1 hasta n

MAL
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


Insercin:
/* Se desea insertar nuevo_elemento en la posicin p */
/* i corresponde al ndice del ltimo elemento*/
c=i
mientras (c >= p)
{
autos [c + 1] = autos [c]
c=c1

}
autos [p] = nuevo_elemento
/* actualizar ndice del ltimo elemento*/
i=i+1

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Unidimensionales (Vectores)


Eliminar:
/* Se desea eliminar elemento en la posicin j */
/* n corresponde al ndice del ltimo elemento*/
desde i = j hasta n-1
{
autos [i] = autos [i + 1]
}
/*actualizar el ltimo elemento*/
autos [n] =
/*actualizar ndice del ltimo elemento*/
n = n-1

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Ejercicio

1. Desarrollar un algoritmo que permita recibir 50


nmeros en un arreglo unidimensional, y luego los
liste.
2. Desarrollar un algoritmo que permita recibir 50
nmeros en un arreglo unidimensional, y luego los liste
(en ambos sentidos). Realice otro algoritmo para el
mismo problema utilizando procedimientos.
3. Realizar un algoritmo que calcule la cantidad de
alumnos que obtuvieron nota inferior al promedio del
curso en cierta materia. Hay 45 alumnos.
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

programa listar_numeros /*ejercicio 1


var
contador :numerico
numeros: vector [50] numerico
inicio
contador = 1
repetir
imprimir (Ingrese un nmero)
leer (numeros [contador])
contador = contador + 1
hasta (contador == 51)
contador = 1
imprimir (Se listan los nmeros ingresados)
repetir
imprimir (\n, numeros [contador])
contador = contador + 1
hasta (contador == 51)
fin

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

programa cantidad_notas_inferior_al_promedio
const
MAX_ALUMNOS = 45
var
notas: vector [MAX_ALUMNOS] numerico
suma_notas, prom, cnip, k: numerico

/*ejercicio 3

inicio
desde k = 1 hasta MAX_ALUMNOS
{
imprimir (\Ingrese nota para alumno nmero , k, :)
leer (notas [k])
suma_notas = suma_notas + notas [k]
}
prom = suma_notas / MAX_ALUMNOS
cnip = 0
desde k = 1 hasta MAX_ALUMNOS
{
si (notas [k] < prom
{
cnip = cnip + 1
}
}
imprimir (\nExisten , cnip, alumnos con notas inferiores,
al promedio del curso, que es , prom)
fin
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Bidimensionales (Matrices)


Un array bidimensional se puede considerar como un vector de vectores. Es
por consiguiente, un conjunto de elementos homogneos y ordenados en el que
se necesita especificar dos subndices 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]

.............
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 1

Columna 2

Columna n
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Bidimensionales (Matrices)


Las operaciones que se pueden realizar con matrices son: asignacin,
lectura, escritura, recorrido, actualizacin (aadir, borrar, insertar),
ordenacin, bsqueda.
La notacin algortmica que utilizaremos es la siguiente:
<nombre_del_arreglo> : matriz [dim_fila, dim_columna] <tipo de dato>
numero: matriz [3, 5] cadena

Asignacin:
<nombre del arreglo> [subindice fila, subindice columna] = <valor>
desde i = 1 hasta 3
{

numero [1, 1] = 5
desde j = 1 hasta 5
{
numero [i, j] = 0
}

}
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Bidimensionales (Matrices)

Llenado por filas

Llenado por columnas

desde i = 1 hasta m
{
imprimir (\ndatos fila ,i)
desde j = 1 hasta n
{
imprimir(\ndato posicin ,i, ,j, = )
leer (nota [i, j])
}
}

desde a = 1 hasta n
{
imprimir (\ndatos columna ,a)
desde b = 1 hasta m
{
imprimir (\ndato posicin ,b, ,a, = )
leer (nota [b, a])
}
}

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Arrays Bidimensionales (Matrices)


Lectura:
leer (<nombre del array> [subindice fila, subindice columna])
leer (numero [2, 4])
leer (numero [a, b])

Escritura:
imprimir (<nombre del array>) [subindice fila, subindice columna])
imprimir(la cantidad es: , numero [6, 7])

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Ejercicio

Uno de los restorantes ms importantes del pas se


encuentra en un proceso de renovacin tecnolgica,
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, razn por la cual le ha
solicitado a los alumnos de INF-140 que construyan un
algoritmo que realice lo siguiente:

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Ejercicio
1) Ingreso de los platos ofrecidos al pblico, 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) Eliminacin de un plato elegido por el usuario. Suponga que no


se ingresan platos repetidos.
3) Cuantos platos tienen al menos 3 ingredientes en comn. Los 3
ingredientes deben ser ingresados por el usuario.
4) Cuantos platos tienen N ingredientes. N debe ser ingresado
por el usuario.
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

se pueden definir & usar


arreglos multidimensionales
?

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Caractersticas avanzadas de los


arreglos
Creacin dinmica de arreglos
Para la creacin dinmica de arreglos en vez del
tamao ubicamos un asterisco para indicar que dicho
valor an no conocemos.

Ejemplo:
nume: vector [*] numerico
La subrutina predefinida dim() permite asignar la
memoria necesaria a un arreglo creado dinmicamente.

Ejemplo:
leer (n)
dim (nume, n)
Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Caractersticas avanzadas de los


arreglos
Creacin dinmica de arreglos
Esta posibilidad tambin existe para las matrices.
Ejemplo:
M: matriz [*, *] numerico
inicio
leer (cant_fil, cant_col)
dim (M, cant_fil, cant_col)
A los vectores y matrices creados dinmicamente se les
llama genricamente arreglos abiertos.

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Caractersticas avanzadas de los


arreglos
Inicializacin de arreglos con literales estructurados
Ejemplo:
var
tope_meses: vector [12] numerico
dias_sem : vector [7] cadena
mat
: matriz [5, 3] numerico
inicio
tope_meses = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
dias_sem = {lun, mar, mie, jue, vie, sab, dom}
mat = { { 1, 2, 3},
{ 4, 5, 6},
{ 7, 8, 9},
{10, 11,12}
{ 13,14, 15} }

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Caractersticas avanzadas de los


arreglos
Asignacin entre arreglos
Ejemplo:
var
mat1: matriz [5, 3] numerico
mat2: matriz [*, *] numerico
vec1: vector [3] numerico
vec2: vector [*] numerico
inicio
mat1 = { { 1, 3, 5},
{ 2, 4, 6},
{ 7, 8, 9},
{10, 11,12}
{ 13,14, 15} }
mat2 = mat1
// se asigna toda la matriz
vec1 = mat1 [2] // {2, 4, 6}
vec2 = mat1 [3] // {7, 8, 9}
vec2 = vec1
// vec2 = {2, 4, 6}

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Caractersticas avanzadas de los


arreglos
Asignacin entre arreglos
Ejemplo:
var
mat1: matriz [5, 3] numerico
mat2: matriz [*, *] numerico
vec1: vector [3] numerico
vec2: vector [*] numerico
inicio
mat1 = { { 1, 3, 5},
{ 2, 4, 6},
{ 7, 8, 9},
{10, 11,12}
{ 13,14, 15} }
mat2 = mat1
// se asigna toda la matriz
vec1 = mat1 [2] // {2, 4, 6}
vec2 = mat1 [3] // {7, 8, 9}
vec2 = vec1
// vec2 = {2, 4, 6}

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

Caractersticas avanzadas de los arreglos


Arreglos y Subrutinas:

Los arreglos pueden ser


traspasados como parmetros en subrutinas:

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Pontificia Universidad Catlica de Valparaso


Escuela de Ingeniera Informtica

se puede obtener la cantidad de


elementos de un arreglo con una
funcin?
puede un arreglo abierto volver al
estado no inicializado?

Es posible en una matriz que las


filas tengan longitudes diferentes
unas de otras?

Profesores PHM/RVA
INF1141 Fundamentos de Algoritmos

Vous aimerez peut-être aussi