Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
Se basa en el intercambio
entre pares de items
Algoritmo de la Burbuja: Bubble Sort
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