Documente Academic
Documente Profesional
Documente Cultură
Programación II
7-8 de enero de 2009
Funciones
• Un concepto fundamental en este curso
es la función
• Una función no sólo resuelve un problema
específico, sino una clase de problemas
genéricos
• Ejemplo:
– sumar los números enteros 5 y 6 (específico)
– sumar los números enteros a y b (genérico)
Funciones
• Una función tiene una entrada y una
salida
• La entrada es una lista de variables que
especifica el tipo de cada variable
• La salida es un valor de un tipo
determinado
• Ejemplo en C:
int sumar(int a, int b)
Funciones
• Una función debe resolver correctamente
el problema para cualquier valor de las
variables de entrada
• Por lo tanto, tiene que detallar el proceso
completo que lleva a la solución
• Una función que no produce ningún
resultado se llama acción
Ejemplos
int sumar(int a, int b) {
int resultado = a + b;
return resultado;
}
void mostrar(int x) {
printf("El valor es %d\n", x);
}
Llamar a funciones
• Para resolver un problema específico del
tipo resuelto por una función, se llama
• Llamar a una función consiste en
especificar los valores de entrada:
int suma = sumar(5, 6);
mostrar(3);
• Al llamar a una función se ejecuta su
proceso con los valores especificados
Pseudocódigo
• El pseudocódigo es un lenguaje genérico
para escribir funciones
• No corresponde a ningún lenguaje de
programación (como C o Java)
• En cambio, está compuesto por palabras
más cercanas al lenguaje natural
• Vamos a usar el pseudocódigo para
escribir funciones
Ejemplos
funcion Sumar(a:natural,
b:natural) devuelve natural
variable resultado:natural;
resultado a + b;
devuelve resultado;
ffuncion
accion Mostrar(x:natural)
// Mostrar el valor de x en la pantalla
faccion
Interpretar programas
• La programación no sólo consiste en
escribir programas
• También es necesario poder interpretar
programas de otros programadores
– utilizar el código en su programa
– adaptar el código a problemas parecidos
– ayudar en el proceso de depuración
– verificar que la solución es correcta
Métodos de Búsqueda y Ordenación
Búsqueda lineal
Búsqueda lineal con marcador
Búsqueda binaria
Búsqueda binaria simplificada
El algoritmo de ordenación de la
burbuja es uno de los más fáciles
de recordar.
http://sziami.cs.bme.hu/~gsala/alg_anims/3/bsort-e.html
http://www.cs.ubc.ca/spider
/harrison/Java/
http://www.cs.hope.edu/~alganim/animator/Animator.html
http://www2.hig.no/~algmet/animate.html
Algoritmo de Inserción: Insertion Sort
Se basa en el método seguido por los jugadores de cartas:
Sec-destino (ordenada) Secuencia-Origen(por ordenar)
V[1 . . . i-1] V[i . . . n]
En cada paso tomamos el elemento V[i] y lo insertamos
donde convenga de la secuencia destino.
http://sziami.cs.bme.hu/~gsala/alg_anims/3/isort-e.html
http://www.cs.ubc.ca/spider
/harrison/Java/
http://www.cs.hope.edu/~alganim/animator/Animator.html
http://www2.hig.no/~algmet/animate.html
Algoritmo de Selección: Selection Sort
En cada paso seleccionamos el elemento de menor valor de los no
ordenados y lo colocamos como primero de los no ordenados:
seleccionamos-entre colocamos-en quedará-por-ordenar
i=1 v[1..n] v[1] v[2..n]
i=2 v[2..n] v[2] v[3..n]
i=3 v[3..n] v[3] v[4..n]
i=n-1 v[n-1..n] v[n-1] v[4..n]
El último ya queda ordenado!
http://sziami.cs.bme.hu/~gsala/alg_anims/3/ssort-e.html
http://www.cs.ubc.ca/spider
/harrison/Java/
http://www.cs.hope.edu/~alganim/animator/Animator.html
http://www2.hig.no/~algmet/animate.html
Eficiencia de la ordenación