organización de un programa · organización de un programa - 18 implementación • cada función...
TRANSCRIPT
![Page 1: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/1.jpg)
Organización de un programa
Álvaro Sánchez Miralles
Carlos Mateo
![Page 2: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/2.jpg)
Organización de un programa - 2
Problema
• Desarrollar un robot que clasifica objetos de distinto tipo:– Coge los objetos de un lugar
– Deja cada objeto en un lugar distinto dependiendo del tipo
![Page 3: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/3.jpg)
Organización de un programa - 3
Análisis
• Responde a la pregunta ¿qué tiene que hacer?– Fase de especificación
• Ahora no interesa cómo se va a hacer el programa
![Page 4: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/4.jpg)
Organización de un programa - 4
Análisis. Especificaciones I
• Del entorno– Tipos de objetos
– ¿Cómo es el entorno?
– ¿Dónde están los lugares?
– ¿Hay obstáculos móviles?
– ¿Hay obstáculos no conocidos?
• Del robot– ¿Qué cinemática tiene el robot?
– ¿Qué tipo de sensores y actuadores puede tener el robot? ¿se pueden considerar ideales?
![Page 5: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/5.jpg)
Organización de un programa - 5
Análisis. Especificaciones II
• Del modo– ¿El orden importa? ¿hay prioridades?
– ¿Qué tiempo se tiene para clasificar?
– ¿Hay que entregar algún informe?
– ¿Cuándo se considera terminada la tarea?
– ¿Qué hacer cuando se termina?
– ¿Se conoce la posición inicial del robot?
![Page 6: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/6.jpg)
Organización de un programa - 6
Análisis. Especificaciones III
• Robot como el de práctica 1
• Entorno siguiente
Objetos grandes Objetos pequeños
A
B C
![Page 7: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/7.jpg)
Organización de un programa - 7
Diseño
• Responde a la pregunta ¿cómo resolverlo?– Dividir en subproblemas más sencillos, repetir la misma operación con cada uno de ellos, hasta conseguir que cada uno de ellos se pueda resolver fácilmente programando
– Versión actualizada de
DIVIDE Y VENCERÁS
DISEÑO TOP-DOWN
![Page 8: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/8.jpg)
Organización de un programa - 8
Diseño. Modularización I
• Organización del problema en módulos
• ¿Quiénes dependen de la cinemática?
Odometría
Posicionador
Entorno
Gestor de entorno
Planificador a largo
Planificador cortoactuadoresSensores
exteroceptivos
Sensores propioceptivos
![Page 9: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/9.jpg)
Organización de un programa - 9
Diseño. Modularización II
• Las posibles variaciones en el sistema que se pudieran dar a corto plazo.
• Hay que sopesar– Si no suponen un gran coste
– Si una futura modificación podría suponer tirar gran parte del sistema
• Para ello, revisar las preguntas de la especificación y valorar posibles otras respuestas– ¿Puede cambiar la cinemática?
![Page 10: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/10.jpg)
Organización de un programa - 10
Diseño. Modularización III
• Cada vez se detalla más
Planificador a cortoactuadoresSensores
exteroceptivos
Seguidor de pared
Evitador de obstáculos
Ir recto
Consignas
![Page 11: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/11.jpg)
Organización de un programa - 11
Diseño. Modularización IV
Planificador a largo
Ir de A a B
Ir de A a C
Ir de B a A
Ir de C a A
![Page 12: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/12.jpg)
Organización de un programa - 12
Diseño. Herramientas I
Objetos grandes Objetos pequeños
A
B C
Ir de A a C
![Page 13: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/13.jpg)
Organización de un programa - 13
Sigue la pared
d
Diseño. Herramientas II
0
1
2
3
0
1
2
3
Seguidor de pared
Orientate paralelo a la paredAvanza en línea recta
Busca obstaculo más cercano
y
orientate perpendicular a él
![Page 14: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/14.jpg)
Organización de un programa - 14
• Pseudocodigo
Diseño. Herramientas III
medidaMinUS, sensorMinUS = GetMedidaMin();
if (Estado == 0)
OrientaHaciaObstaculo();
else if (Estado == 1)
AvanzaHaciaObstaculo();
else if (Estado == 2)
OrientaParaleloPared();
else if (Estado == 3)
SeguimientoPared();
void AvanzaHaciaObstaculo(){
if (medidaMinUS < d)
Estado = 2;
else Avanza();
}
![Page 15: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/15.jpg)
Organización de un programa - 15
Diseño. Herramientas IV
SeguidorPared
OrientaHaciaObstaculo Gira
AvanzaHaciaObstaculo Avanza
OrientaParaleloPared Gira
SeguimientoPared Velocidades
• Árbol de funciones
![Page 16: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/16.jpg)
Organización de un programa - 16
Implementación
SeguidorPared
OrientaHaciaObstaculo Gira
AvanzaHaciaObstaculo Avanza
OrientaParaleloPared Gira
SeguimientoPared Velocidades
Análisis y Diseño TOP-DOWN
Implementación DOWN-TOP
![Page 17: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/17.jpg)
Organización de un programa - 17
Implementación
• Se inicia con las funciones inferiores en el árbol de funciones
• ¿Por qué?– Son funciones con una labor concreta totalmente determinada
– Es fácil probar que funcionan porque no dependen de otras
– Su programación puede sugerir cambios en funciones superiores
• Si no se hiciera así el trabajo puede ser doble: programar de arriba abajo, sin probar, y cuando llegas abajo tener que cambiar las de arriba porque hay problemillas.
![Page 18: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/18.jpg)
Organización de un programa - 18
Implementación
• Cada función es programada y probada por separado– Aislar problemas desde el primer momento
– No es lo mismo verificar un programa de 1000 líneas con funciones que se llaman unas a otras, y sin ninguna confianza de funcionamiento, que probar una función de máximo 20 líneas.
• ¡¡Alegría de que esto va funcionando poco a poco!!
![Page 19: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/19.jpg)
Organización de un programa - 19
Implementación. Organización en módulos
plan_largo.h
#ifndef plan_largo_h
#define plan_largo_h
#include "plan_corto.h"
void IrBC(...);
void IrAC(...);
#endif
plan_largo.cpp
#include "plan_largo.h"
void IrBC(...){
...
} ...
plan_corto.h
#ifndef plan_corto_h
#define plan_corto_h
void SeguidorPared(...);
void Giro(...);
#endif
plan_corto.cpp
#include "plan_corto.h"
int SeguidorPared(...){
...
}
...
dllsencilla.dll
#include "plan_largo.h"
void CalculaMando() {
...
}
Módulo planificador a corto Módulo planificador a largo
![Page 20: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/20.jpg)
Organización de un programa - 20
Resumen de las fases de desarrollo
• Primero: Análisis– Tener claro lo que hay que hacer
• Segundo: Diseño– Dividir en módulos
– Diseñar módulos con:
• Estados
• Pseudocódigo
• Árbol de funciones
• Tercero: Implementación– Funciones inferiores del árbol de funciones: más sencillas
– Funciones cortas: no más de 30 líneas de código real
– Probar cada función por separado mediante su programa de prueba
![Page 21: Organización de un programa · Organización de un programa - 18 Implementación • Cada función es programada y probada por separado – Aislar problemas desde el primer momento](https://reader033.vdocumento.com/reader033/viewer/2022041714/5e49de10de3bd3506445de23/html5/thumbnails/21.jpg)
Organización de un programa - 21
Máximas de la programación
• Divide y vencerás
• Si reutilizas, trabajarás menos
• Detrás de cada copiar y pegar hay una función
• Antes de hacer una función, búscala en la biblioteca
• Programar no es ponerse moreno delante de la pantalla
• Pensé, y luego, programé
• Cuando requieras añadir código, piensa cuál es el lugar adecuado