![Page 1: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/1.jpg)
Programación
Universidad Nacional de Quilmes
Clase 7División en subtareas
![Page 2: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/2.jpg)
Ejercitamos un poco
![Page 3: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/3.jpg)
EjercicioRealicemos el siguiente dibujo en QDraw.
![Page 4: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/4.jpg)
![Page 5: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/5.jpg)
¿Por dónde arrancamos?
![Page 6: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/6.jpg)
Recordatorio:¡Programar es comunicar!
![Page 7: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/7.jpg)
Intentando comunicar la soluciónSi le intentamos contar a alguien que es lo que hay que hacer, terminariamos diciendo:
arriba, arriba, arriba, pinta, arriba, pinta... etc.
No es algo muy práctico que digamos.
● El código es confuso hasta para nosotros mismos.● La otra persona no tiene idea de qué le estamos hablando.● Los comentarios pueden ayudar a entender el código, pero no solucionan el problema
de fondo.● Uno quisiera poder transmitir la idea de una forma más sencilla.
![Page 8: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/8.jpg)
Lo que quisiéramos transmitir
programa {
dibujar óvalo externo en rojo
dibujar árbol derecho
dibujar árbol izquierdo
volver el cabezal a la posición inicial
}
![Page 9: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/9.jpg)
Divide y vencerás
![Page 10: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/10.jpg)
Divide y vencerásAl dividir el problema general en problemas más pequeños, podemos centrarnos en resolver cosas más sencillas, que requieren menos código y son más fáciles de razonar.
De esta forma es más fácil atacar problemas grandes, para arribar a una solución integral.
![Page 11: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/11.jpg)
Divide y vencerás. Ejemplo 1¿Qué pasos o acciones realizan cada vez que realizan la actividad de “cepillarse los dientes”?
![Page 12: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/12.jpg)
Divide y vencerás. Ejemplo 2Dibujar logo
Dibujar circulo rojoArriba, arriba, derecha, pintar de rojo ...
Dibujar árbol izquierdoDibujar copa del árbol izquierdo
Pintar de verde, arriba, pintar ....Dibujar tronco del árbol izquierdo
Pintar de negro, arriba, pintar ....Dibujar árbol derecho
Dibujar copa del árbol derechoPintar de verde, arriba, pintar ....
Dibujar tronco del árbol derechoPintar de negro, arriba, pintar ....
![Page 13: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/13.jpg)
Procedimientos
![Page 14: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/14.jpg)
ProcedimientosLos procedimientos son una forma de estructurar el código para reflejar estos esquemas mentales que hemos comentado.
Un procedimiento es una nueva instrucción definida por el usuario.
Un procedimiento se define mediante la palabra “procedimiento”, seguida de un nombre (El cual no puede contener espacios y comienza con mayúscula),paréntesis vacíos y un bloque de código.
![Page 15: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/15.jpg)
Procedimientosprocedimiento DibujarTroncoDeArbol () {
/*PROPÓSITO: Dibuja el tronco de un árbol de color negro, de dos
celdas de alto, con la celda actual siendo la celda inferior del tronco.PRECONDICIÓN: Hay al menos una celda hacia arriba de la actual.*/▨↑▨↓
}
![Page 16: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/16.jpg)
Instrucciones: Primitivas y ProcedimientosAcciones primitivas
Conjunto limitado de instrucciones:
● →
● ↑
● ←● ↓● ▨
● ▨
● ▨
● X
Procedimientos
● DibujarTroncoDeArbol ()
![Page 17: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/17.jpg)
Llamar a procedimientosLos procedimientos definidos pueden ser llamados luego en cualquier lugar del programa.
Al momento de ejecutar el programa, en los lugares en los que se llama a un procedimiento se ejecuta el bloque de código con el cual fue definido.
Un procedimiento puede ser llamado en cualquier bloque de código, ya sea el del programa o el de otro procedimiento.
Un procedimiento se define una sola vez, pero se puedellamar tantas veces como se desea.
![Page 18: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/18.jpg)
Llamar a ProcedimientosPara llamar a un procedimiento basta utilizar el nombre del mismo seguido de paréntesis dentro de un bloque de código.
procedimiento DibujarTroncoDeArbol () {/* ... */▨↑▨↓
}
programa {DibujarTroncoDeArbol()...
}
![Page 19: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/19.jpg)
Llamar a ProcedimientosPueden llamarse más de una vez, aunque se define una sola vez.
procedimiento DibujarTroncoDeArbol () {/* ... */▨↑▨↓
}
programa {DibujarTroncoDeArbol()→DibujarTroncoDeArbol()
}
![Page 20: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/20.jpg)
Ejecución del programa anteriorDibujarTroncoDeArbol()
Inicio↑▨ ▨ ↓
↑▨ ▨ ↓
DibujarTroncoDeArbol()→
![Page 21: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/21.jpg)
Llamar a Procedimientos en otro Procedimientoprocedimiento DibujarArbol () {
DibujarTroncoDeArbol()IrACopa()DibujarCopaDelArbol()
}
procedimiento IrACopa()←←↑↑
}
procedimiento Linea2Verde () {▨↑▨↓
}
procedimiento Linea4Verde () {▨↑▨↑▨↑▨↓↓↓
}
procedimiento DibujarTroncoDeArbol () {▨↑▨↓
}
procedimiento DibujarCopaDelArbol () {Linea2Verde() → Linea4Verde() →Linea6Verde() → Linea4Verde() →Linea2Verde()
}
procedimiento Linea6Verde () {▨↑▨↑▨↑▨↑▨↑▨↓↓↓↓↓
}
¡Cada procedimiento debería tener su propósito y precondición!
![Page 22: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/22.jpg)
Dibujamos el árbol
programa{
/* ... */
DibujarArbol ()
}
Mi programa se resume a llamar al procedimiento principal, y solo eso.
![Page 23: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/23.jpg)
Árbol de ejecución
![Page 24: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/24.jpg)
El árbol de ejecución de un programa es una construcción que permite visualizar y comprender cuál es el orden en que el código final será ejecutado, y por tanto que acciones se realizarán.
El árbol de ejecución permite ver esto al analizar las hojas del árbol, es decir, aquellos lugares en donde se arriba a una instrucción primitiva.
Cada elemento (nodo) tendrá como hijos las instruccionesque haya en el bloque que representa.
Árbol de ejecución
![Page 25: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/25.jpg)
Árbol de ejecución de DibujarArbol
DibujarArbol
DibujarTroncoDelArbol DibujarCopaDelArbol
Linea2Verde → Linea4Verde → Linea6Verde → Linea4Verde → Linea2Verde▨ ↑ ▨ ↓
▨↑▨↓ ▨↑▨↑▨↑▨↓↓↓▨↑▨↑▨↑▨↑▨↑▨↓↓↓↓↓▨↑▨↑▨↓↓↓ ▨↑▨↓
![Page 26: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/26.jpg)
Ejercitamos un poco con Lightbot
![Page 27: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/27.jpg)
Nivel 1: Ejemplo
Descripción del procedimiento
Llamada al procedimiento
![Page 28: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/28.jpg)
Nivel 2
![Page 29: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/29.jpg)
Nivel 3
![Page 30: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/30.jpg)
Nivel 4
![Page 31: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/31.jpg)
Ejercitamos un poco con QDraw
![Page 32: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/32.jpg)
Actividad 1
Implemente un programa que realice el siguiente dibujo utilizando procedimientos.
![Page 33: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/33.jpg)
Actividad 2
Implemente un programa que realice el siguiente dibujo utilizando procedimientos.
¿Encuentran algo parecido al dibujo anterior?
![Page 34: División en subtareas Clase 7 - UNQelementosdeprogramacionylogica.web.unq.edu.ar/wp... · La otra persona no tiene idea de qué le estamos hablando. ... Ejercitamos un poco con Lightbot](https://reader033.vdocumento.com/reader033/viewer/2022060601/6054caddad05f20feb3b35c2/html5/thumbnails/34.jpg)
Programación
Universidad Nacional de Quilmes
Clase 7División en subtareas