Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Programación II 3-4 de marzo de 2009
Diseño descendente Programación II 3-4 de marzo de 2009
2
Descomposición funcional
Descomponer un programa en funciones más sencillas Cada función resuelve una sola tarea Cada tarea es claramente diferenciada de las otras tareas Ayuda en la comprensión del programa Facilita la reutilización de código
3
Diseño descendente Empezar por el problema a resolver
Diseñar una solución intuitiva sin especificar detalles Esta solución representa el primer nivel de abstracción Complementar detalles con funciones de segundo nivel (descender un nivel) Continuar hasta llenar todos los detalles
4
Secuencia Estructura de datos secuencial Funciones:
LeerPrimerElemento(L, e); LeerSiguienteElemento(L, e); UltimoElemento(L); InicializarSecuencia(L); EscribirElemento(L, e);
5
Ejercicio Contar el número de veces que aparece la primera palabra en un texto acabado en punto “lo que sabemos es una gota de agua; lo que ignoramos es el océano.” (Isaac Newton) “lo” aparece 2 veces Suponer que el texto está representado por una secuencia de caracteres
6
Problema de las ocho reinas
Situar ocho reinas en un tablero de ajedrez sin que se amenacen entre sí
7
Idea Idea: para cada columna, encontrar la primera fila no amenazada
Situar una reina allí Continuar con la próxima columna Si encontramos una columna sin posibilidades, dar vuelta atrás (backtrack) Probar la siguiente fila posible
8
Ejemplo
9
Algoritmo accion OchoReinas() pos:vector (dim 8) de natural;
Situar(1, pos); faccion pos: posición de la reina en cada columna
10
Segundo nivel accion Situar(col:natural, pos:vector de natural)
variable fila:natural; si (col > 8) entonces Mostrar(pos); sino fila ProximaFila(0, col, pos); mientras (fila ≤ 8) hacer pos[col] fila; Situar(col + 1, pos); fila ProximaFila(fila, col, pos); fmientras fsi faccion
11
Tercer nivel accion Mostrar(pos:vector de natural) variable i:natural;
para i 1 hasta 8 hacer Mostrar(pos[i]); fpara Mostrar(‘\n’); faccion
12
Tercer nivel funcion ProximaFila(fila,col:natural,
pos:vector de natural) devuelve natural fila fila + 1; mientras (fila ≤ 8 y Amenazado(fila,col,pos)) hacer fmientras devuelve fila; ffuncion
13
Detectar amenazas
14
Cuarto nivel funcion Amenazado(fila,col:natural,
pos:vector de natural) devuelve booleano variable i:natural; para i 1 hasta (col-1) hacer si ((pos[col-i] = fila-i) o (pos[col-i] = fila) o (pos[col-i] = fila+i)) entonces devuelve cierto; devuelve falso; faccion
15
Diseño descendente OchoReinas Situar Mostrar ProximaFila Amenazado
16
Pista de Carreras Estructura del código de la práctica 3
3023 líneas de código 51 funciones 19 archivos
17
main (p2Main.c) Leer los parámetros de la línea de comanda
Llamar a la función StartGame con la pista y las estrategias Mostrar el ganador
18
StartGame (p2Game.c) Crear e inicializar las estructuras de datos
Crear la matriz de adyacencia Repetir hasta finalizar el juego: Seleccionar el movimiento de un jugador Mostrar la pista Comprobar si el juego ha finalizado Liberar la memoria
19
CreateAdjacencyMatrix
Diseño descendente main StartGame FreeMatrix ReadMatrix DisplayRaceTrack CreateAdjacencyMatrix MoveCar IsGameOver
20
Resumen Algoritmos de búsqueda y de ordenación Recurrencia Complejidad
Diseño descendente
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.