Tema 3: Problemas de solución directa

Anuncio
Tema 3: Problemas de solución directa
Fundamentos de la Programación
Enrique Soriano
LSUB, GSYC, URJC
26 de septiembre de 2012
(cc) 2012 Grupo de Sistemas y Comunicaciones.
Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, véase
http://creativecommons.org/licenses/by-sa/2.1/es. También puede solicitarse a Creative Commons, 559 Nathan
Abbott Way, Stanford, California 94305, USA.
Por ahora: problemas de solución directa
• Solución directa: No hace falta tomar ninguna decisión,
simplemente se aplica una fórmula.
Definición del problema: Funciones
Definir el problema → crear la cabecera de la función
• ¿Cuál es el objetivo? → Nombre de la función.
• ¿Qué necesita? → Parámetros de la función.
• ¿Qué se obtiene? → Tipo del valor de retorno de la función.
Definición del problema: Funciones
Normas de estilo para Picky:
• El nombre de la función tiene que corresponder al objeto que
devuelve. p. ej.: areacirculo.
• El identificador de la función siempre se escribe en minúsculas
• Los identificadores de los parámetros se escriben en
minúsculas.
• Hay que elegir identificadores apropiados para los parámetro.
Definición del problema: Funciones
• Argumento: valor que se suministra a la función cuando se
llama.
• Parámetro: identificador para nombrar al argumento.
• Una función puede tener cero, uno o varios parámetros.
Definición del problema: Funciones
• Una función siempre debe devolver un único valor.
• El valor devuelto únicamente puede ser del tipo de la función.
Solución del problema: Funciones
• La solución se implementa en el cuerpo de la función.
• La palabra reservada return es la que provoca que la función
retorne un valor.
hacer circulo.p
Subprogramas
• Las funciones son subprogramas.
• Los subprogramas resuelven subproblemas.
• Cuando los programas se hacen grandes, son difı́ciles de
enteder.
• Entender el programa entero se basa en entender los distintos
subprogramas por separado.
“Divide y vencerás”
Julio César.
Uso de constantes
• Son parámetros que vienen impuestos por los requisitos (p.ej
el enunciado del ejercicio).
• Usar constantes en lugar de literales elimina errores.
ver compararreales.p
Declaración y definición
• Declarar es estipular que algo existe.
• Definir es determinar su valor.
• Ámbito: Un objeto se puede usar desde que se ha declarado
hasta el final del programa/subprograma en el que se ha
declarado.
• Fuera de su ámbito, un objeto no es visible.
ver pesos.p
Atacando problemas: top-down
• Se basa en ser optimistas.
• Cuando detectamos un subproblema, lo damos por resuelto y
seguimos.
• Para refinar progresivamente, podemos usar subprogramas
falsos o vacı́os. Más tarde implementamos el subprograma que
resuelve dicho subproblema.
• ¡Ası́ rompemos el problema en subproblemas! Nos lleva a un
modelo modular de forma natural.
• En cualquier fase de la implementación tendremos un
prototipo del programa que pueda ejecutar.
hacer cilindro.p
Ejemplo top-down: dı́a de estudiante
Problema: Dı́a de estudiante
Ejemplo top-down: dı́a de estudiante
Dı́a de estudiante
1
Levantarse
2
Ir a la universidad
3
Regresar a casa
4
Hacer deberes
5
Ir a la cama
Ejemplo top-down: dı́a de estudiante
Dı́a de estudiante
1
Levantarse
2
Ir a la universidad
3
Regresar a casa
Hacer deberes
4
1
2
5
Tareas de programación
Ejercicio de álgebra
Ir a la cama.
Ejemplo top-down: dı́a de estudiante
Dı́a de estudiante
1
Levantarse
2
Ir a la universidad
3
Regresar a casa
Hacer deberes
4
1
Tareas de programación
1 Leer el capı́tulo del libro
2 Empezar la práctica de la semana
2
5
Ejercicio de álgebra
Ir a la cama.
Atacando problemas: bottom-up
• Se basa en la antelación: antes de programar pensamos en
como dividir el problema y pensamos en detalle en los
elementos que van a formar el programa.
• Empezamos haciendo los subprogramas que resuelven los
subproblemas más sencillos.
• Seguimos hacia problemas más complejos usando los
subprogramas ya implementados.
• Problema: hay que usar la intuición (que nos da la
experiencia) para definir los elementos.
Hay que combinarlas
TOP-DOWN
PROGRAMA
PRINCIPAL
USA
SUBPROGRAMAS
NIVEL 1
USA
SUBPROGRAMAS
NIVEL 2
USA
...
SUBPROGRAMAS
NIVEL N
BOTTON-UP
Atacando problemas: simplificar y generalizar
1
Pensar la solución para un único caso.
2
Probarla.
3
Generalizar la solución.
hacer digitos.p
Descargar