Cómo encarar los problemas?

07/04/2015
Objetivos
▪ Conocer un enfoque amplio para encarar la resolución de problemas
en general.
▪ Prepararse para situaciones relacionadas a la resolución de
problemas de programación de computadoras.
• Enfrentarse con situaciones que presenten distinto grado de
dificultad.
• Desarrollar la habilidad o destreza para proponer soluciones a
determinados problemas.
2
¿Cómo encarar los problemas?
¿Cómo encarar los problemas?
Método descripto por el lógico-matemático G. Polya
¿Se puede aprender a pensar acerca de cómo resolver un problema
en general?
NO existe un enfoque o
método único y bien definido
para alcanzar soluciones a
cualquier problema.
SI se pueden plantear
sugerencias o lineamientos
que pueden ser de utilidad
cuando
analizamos
un
problema y proponemos
posibles soluciones.
3
Conjunto de preguntas, cuyas contestaciones pueden ir
abriendo caminos hacia la solución final.
Cuatro pasos:
• ENTENDER EL PROBLEMA
• CONCEBIR UN PLAN
• EJECUTAR EL PLAN
• MIRAR ATRÁS
Cabe aclarar que no siempre se van a poder responder todas las preguntas de
cada paso. Éstas son sólo una guía y pueden utilizarse dependiendo del problema
4
considerado.
07/04/2015
¿Cómo encarar los problemas?
¿Cómo encarar los problemas?
ENTENDER EL PROBLEMA
CONCEBIR UN PLAN
- ¿Entiendes todo lo que dice?
- ¿Recuerdas algún problema/caso semejante?
- ¿Puedes replantear el problema en tus propias palabras?
- ¿Puedes dividir el problema en partes?
- ¿Distingues cuáles son los datos? ¿Qué nos dan? ¿Qué tenemos?
- Es muy abstracto, ¿y probando con un caso particular?
- ¿Sabes a qué quieres llegar? ¿Qué nos piden? ¿Qué buscamos?
- ¿Puedes dibujarlo o introducir una notación adecuada?
- ¿Y resolver algo más fácil, cercano al problema? ¿Y bajo otros
puntos de vista?
- Y si quitas o añades datos, ¿cómo funcionaría?
- ¿Hay suficiente información? ¿Hay restricciones?
- ¿Hay información extraña, redundante o contradictoria?
- ¿Es este problema similar a algún otro que hayas resuelto antes?
5
¿Cómo encarar los problemas?
6
¿Cómo encarar los problemas?
CONCEBIR UN PLAN
EJECUTAR EL PLAN
- ¿Puedes usar alguna de las siguientes estrategias? (técnica o
conjunto de actividades destinadas a conseguir un objetivo)
- Implementar la o las estrategias que se escogieron hasta solucionar
completamente el problema o hasta que la misma acción sugiera tomar
un nuevo curso.
• Ensayo y Error (Conjeturar y probar la
conjetura).
• Usar una variable.
• Identificar sub-tareas.
• Buscar un patrón.
• Hacer una lista.
• Resolver un problema similar más
simple o equivalente.
• Hacer una figura.
• Hacer un diagrama.
•
•
•
•
•
•
Usar las propiedades de los números.
Trabajar hacia atrás.
Usar casos.
Resolver una ecuación.
Buscar una fórmula.
Usar un modelo.
7
- Dedicar un tiempo razonable para resolver el problema. En caso de
no poder resolverlo, se puede solicitar una sugerencia o, muchas
veces, se puede apartar del problema por un momento tratando de
clarificar ideas.
- No se debe considerar un fracaso tener que volver a empezar.
Suele suceder que un comienzo fresco o una nueva estrategia
conducen al éxito.
8
07/04/2015
¿Cómo encarar los problemas?
¿Cómo encarar los problemas?
MIRAR ATRÁS
Ejemplo:
- ¿Es tu solución correcta? ¿Tu respuesta satisface lo establecido en
el problema?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
- ¿Adviertes una solución más sencilla?
- ¿Puedes ver cómo extender tu solución a un caso general?
La buena utilización de este método
obliga a un entrenamiento constante
para llegar a adquirir una actitud
mental ágil y capaz. Es un método
general y tiene aplicaciones incluso
9
cotidianas.
¿Cómo encarar los problemas?
10
¿Cómo encarar los problemas?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
Paso 1: ENTENDER EL PROBLEMA
Paso 1: ENTENDER EL PROBLEMA
¿Entiendes todo lo que dice? ¿Puedes replantear el problema?
¿Distingues cuáles son los datos?
¿Sabes a que quieres llegar? A encontrar la longitud de la escalera.
¿Hay suficiente información? Suponemos que Si.
La altura de la pared es de 4,33 m.
¿Hay información extraña, redundante o contradictoria? No.
El ángulo que forma la escalera con el piso es de 60°
¿Este problema es similar a otro que hayas hecho?
Depende de la experiencia de cada uno.
11
12
07/04/2015
¿Cómo encarar los problemas?
¿Cómo encarar los problemas?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
Paso 2: CONCEBIR UN PLAN
Paso 2: CONCEBIR UN PLAN
¿Puedes usar alguna de las siguientes estrategias?
¿Puedes usar alguna de las siguientes estrategias?
Usar una variable
Hacer una figura
e = longitud de la escalera
p=4,33m
60°
13
¿Cómo encarar los problemas?
14
¿Cómo encarar los problemas?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
Paso 2: CONCEBIR UN PLAN
Paso 3: EJECUTAR EL PLAN
¿Hay alguna razón trigonométrica que pueda usar para resolver el
problema?
Usaremos la siguiente razón trigonométrica:
sen
= cat. opuesto / hipotenusa
ya que involucra todos los datos
del problema planteado
p=4,33m
15
60°
sen
= cat. opuesto
hipotenusa
sen 60° = p
e
sen 60° = 4,33
e
e = 4,33
sen 60°
e ≈ 5 m.
p=4,33m
16
60°
07/04/2015
¿Cómo encarar los problemas?
¿Cómo encarar los problemas?
Resumen
En un cumpleaños, un joven debe amarrar unos globos en lo alto de
una pared de 4,33 metros de altura ¿Cuál debe ser la longitud de la
escalera que el joven debe colocar de tal manera que forme un ángulo
de 60° con el piso?
Pautas útiles que pueden ayudarnos a enfrentar un problema:
Paso 4: MIRAR ATRÁS
¿Es tu solución correcta? ¿Tu respuesta satisface lo establecido en el
problema?
Encontremos el ángulo ahora
sen
La búsqueda de la solución de un problema es una tarea difícil de
sistematizar. Cada problema puede presentarse en forma
aparentemente aislada y frecuentemente no sabemos cómo encararlo.
▪ Establecer el problema en forma clara y entenderlo completamente.
▪ Clarificar cualquier ambigüedad que presente el enunciado del
problema.
▪ Definir claramente qué datos se tienen y qué se está buscando.
= 4,33 / 5
▪ Especificar con precisión todas las restricciones o condiciones que
debe satisfacer la solución.
= sen-1 (4,33/5)
≈ 60°
17
¿Cómo encarar los problemas?
18
Abstracción
Resumen
▪ Explicitar toda información implícita en el planteo que pueda resultar
útil.
Problema
representación adecuada para el problema
que descarte la información superflua y
rescate aquélla que resulte relevante
Enunciado
▪ Encontrar una representación adecuada de la información disponible.
Principal dificultad
incapacidad para utilizar
convenientemente la
información provista
▪ Retomar el enunciado original ante un callejón sin salida.
Estas pautas no deben seguirse necesariamente en el orden expuesto.
Muchas tareas se repiten y a menudo se relee el enunciado con mayor
concentración, focalizando la atención en algún aspecto que tal vez
resultó inadvertido en un primer momento.
19
información irrelevante,
redundante o implícita
La técnica para encontrar un
planteo más conciso del problema
teniendo en cuenta sólo los
aspectos relevantes o importantes
ABSTRACCIÓN
Objetivo
construir una simplificación de la realidad que
rescate únicamente la información relevante
para
20
hallar una solución del problema.
07/04/2015
Abstracción
Resolución de problemas y computadoras
Etapas:
Abstracción funcional: a las
operaciones necesarias.
Identifica sub-problemas menores en la
solución de un problema completo.
Enunciado
Abstracción de datos: a la
representación de los datos necesarios.
▪ COMPRENSIÓN DEL PROBLEMA.
▪ ELECCIÓN DE UN MÉTODO O PROCEDIMIENTO PARA HALLAR LA SOLUCIÓN
–
–
–
–
Datos de entrada (qué se dispone)
Proceso (tratamiento que ha de realizarse con los datos de entrada)
Datos de salida (información de salida deseada)
Restricciones y/o condiciones. Las restricciones son supuestos que deben cumplirse
sobre los datos de entrada. Las condiciones pueden ser verificadas dentro del
proceso.
▪ CODIFICACIÓN (lenguaje de programación)
▪ EJECUCIÓN (obtener la solución del problema, datos de prueba)
21
Resolución de problemas y computadoras
22
Resolución de problemas y computadoras
Un procesador es toda entidad capaz de comprender y ejecutar las
Un algoritmo es una secuencia finita y ordenada de acciones primitivas
que pueden ser ejecutadas por un procesador y que lleva a la solución
de un problema determinado.
acciones elementales de un algoritmo.
Características:
El ambiente está constituido por el conjunto de todos los recursos
▪ Punto particular de inicio.
necesarios para la ejecución de un algoritmo.
▪ Orden claro de realización de cada paso.
Una acción es un evento que modifica al ambiente.
▪ Definido, es decir, si se ejecutan varias veces las mismas acciones
con los mismos datos, se deben obtener siempre los mismos
resultados. No debe permitir dobles interpretaciones.
Un enunciado describe un determinado problema a resolver.
Una acción primitiva puede ser ejecutada sin información adicional por
un procesador dado.
▪ Finito, es decir, debe terminar en algún momento y tener un número
determinado de pasos.
23
▪ Independiente del lenguaje de programación.
24
07/04/2015
Resolución de problemas y computadoras
Resolución de problemas y computadoras
Diferencia entre programa y algoritmo
Un algoritmo es el planteamiento general de la solución, mientras el
programa es la solución misma y contiene todos sus detalles en forma
ejecutable. A un mismo algoritmo le pueden corresponder distintos
programas.
Comprensión
Diseño
Codificación
PROBLEMA
ALGORITMO
PROGRAMA
Un programa es una secuencia finita y ordenada de instrucciones,
escritas en un lenguaje de programación, que pueden ser ejecutadas
por una computadora y que lleva a la solución de un problema
determinado.
25
Resolución de problemas y computadoras
El procesador tiene la capacidad de interpretar cada una de las
26
Resolución de problemas y computadoras
Refinamientos Sucesivos
acciones descriptas, en cuyo caso estas acciones constituyen
E0
Versión 1
acciones primitivas.
t1
E1
T (trabajo completo)
t2
E2
t3
E3
tn
Ef
Una acción no primitiva debe ser descompuesta en acciones
Versión final
primitivas para un procesador dado.
t1.1
t1.2
t1.3
Descomposición de t1 en una
secuencia de 3 acciones
Existen distintas técnicas para descomponer una acción en
acciones primitivas. Un método es el denominado Refinamientos
Sucesivos, Diseño descendente o Diseño top-down.
27
Dado un conjunto de acciones no primitivas T, tal que, transforma el ambiente
desde el estado inicial E0 hasta un estado final Ef se puede encontrar una
descomposición de T que constituye una secuencia de acciones primitivas
28
comprensible por un procesador.
07/04/2015
Ejemplo 1
Ejemplo 1
Enunciado: Realizar una llamada a un contacto almacenado en el celular.
Procesador: Una persona capaz de entender y ejecutar las acciones primitivas.
Acciones Primitivas:
• Desbloquear el celular.
• Finalizar la llamada.
• Abrir la agenda de contactos.
• Presionar el botón de iniciar llamada.
• Seleccionar el contacto deseado.
• Comunicarse con el contacto.
Datos de entrada: ?
Datos de salida: ?
Restricciones: ?
Condiciones: ?
Algoritmo: ?
29
Ejemplo 1
Enunciado: Realizar una llamada a un
contacto almacenado en el celular.
Acciones Primitivas:
• Desbloquear el celular.
• Finalizar la llamada.
• Abrir la agenda de contactos.
• Presionar el botón de iniciar llamada.
• Seleccionar el contacto deseado.
• Comunicarse con el contacto.
Datos de entrada: Teléfono celular y
nombre del contacto.
Datos de salida: Mensaje informando
que se finalizó la llamada.
Enunciado: Realizar una llamada a un contacto almacenado en el celular.
Procesador: Una persona capaz de entender y ejecutar las acciones primitivas.
Acciones Primitivas:
• Desbloquear el celular.
• Finalizar la llamada.
• Abrir la agenda de contactos.
• Presionar el botón de iniciar llamada.
• Seleccionar el contacto deseado.
• Comunicarse con el contacto.
Datos de entrada: Teléfono celular y nombre del contacto.
Datos de salida: Mensaje informando que se finalizó la llamada.
Restricciones:
• El celular tenga señal
• El celular tenga batería
• El celular tenga crédito
Condiciones:
No hay.
30
Ejemplo 2
Algoritmo:
Versión 1:
t1. Desbloquear el celular.
t2. Realizar la llamada al contacto deseado.
t3. Finalizar la llamada.
Versión 2 (final):
t1. Desbloquear el celular.
t2.1. Abrir la agenda de contactos.
t2.2. Seleccionar el contacto deseado.
t2.3. Presionar el botón de iniciar llamada.
t2.4. Comunicarse con el contacto.
t3. Finalizar la llamada.
Prueba?
31
Enunciado: Calcular el sueldo neto de un trabajador conociendo el número
de horas trabajadas, la tarifa horaria y la tasa de impuestos.
Procesador: Una persona capaz de entender y ejecutar las acciones
primitivas.
Acciones Primitivas:
• Mostrar el sueldo neto del trabajador (SueldoNeto)
• Solicitar el número de horas trabajadas (h)
• SueldoBruto = h * t
• Solicitar la tarifa horaria (t)
• Impuestos = SueldoBruto * i
• Solicitar la tasa de impuestos (i)
• SueldoNeto = SueldoBruto – Impuestos
Datos de entrada: ?
Datos de salida: ?
Restricciones: ?
Condiciones: ?
Algoritmo: ?
32
07/04/2015
Ejemplo 2
Ejemplo 2
Enunciado: Calcular el sueldo neto de un trabajador conociendo el número
de horas trabajadas, la tarifa horaria y la tasa de impuestos.
Procesador: Una persona capaz de entender y ejecutar las acciones
primitivas.
Acciones Primitivas:
• Mostrar el sueldo neto del trabajador (SueldoNeto)
• Solicitar el número de horas trabajadas (h)
• SueldoBruto = h * t
• Solicitar la tarifa horaria (t)
• Impuestos = SueldoBruto * i
• Solicitar la tasa de impuestos (i)
• SueldoNeto = SueldoBruto – Impuestos
Enunciado: Calcular el sueldo neto de un
trabajador conociendo el número de
horas trabajadas, la tarifa horaria y la
tasa de impuestos.
Acciones Primitivas:
• Mostrar el sueldo neto del trabajador
(SueldoNeto)
• Solicitar el número de horas trabajadas
(h)
• SueldoBruto = h * t
• Solicitar la tarifa horaria (t)
• Impuestos = SueldoBruto * i
• Solicitar la tasa de impuestos (i)
• SueldoNeto = SueldoBruto – Impuestos
Datos de entrada: Calculadora, número
de horas trabajadas, tarifa horaria,
impuestos.
Datos de salida: Sueldo neto de un
trabajador.
Datos de entrada: Calculadora, número de horas trabajadas, tarifa horaria,
impuestos.
Datos de salida: Sueldo neto de un trabajador.
Restricciones: Los datos de entrada no deben ser negativos.
Condiciones: No hay.
33
Ejemplo 3
Tomar una carta del mazo.
Dejar carta en la pila de
comodines.
Persona.
Mazo de cartas españolas.
Hay cartas en el mazo.
Descartar.
Pila con comodines.
Tomar el mazo de cartas.
Ir a la tarea ti.
La carta es un comodín.
Versión 2 (final):
t1.1. Solicitar el número de horas trabajadas
(h).
t1.2. Solicitar la tarifa horaria (t)
t1.3. Solicitar la tasa de impuestos (i)
t2.1. SueldoBruto = h * t
t2.2. Impuestos = SueldoBruto * i
t2.3. SueldoNeto = SueldoBruto – Impuestos
t3. Mostrar el sueldo neto del trabajador
(SueldoNeto)
34
Ejemplo 3
Enunciado: Extraer los dos comodines de un mazo de cartas españolas
asumiendo que el mazo está completo.
Ítem
Algoritmo:
Versión 1:
t1. Solicitar los datos.
t2. Realizar los cálculos necesarios.
t3. Mostrar el sueldo neto del trabajador
(SueldoNeto).
Procesador
Datos de
entrada
Datos de
salida
Acciones
primitivas
Condiciones
x
x
x
x
x
x
x
x
x
x
35
Enunciado: Extraer los dos comodines de
un mazo de cartas españolas.
Acciones Primitivas:
• Tomar una carta del mazo.
• Dejar carta en la pila de comodines.
• Descartar.
• Tomar el mazo de cartas.
• Ir a la tarea ti.
Datos de entrada: Mazo de cartas
españolas
Datos de salida: Pila con comodines.
Restricciones: El mazo debe estar
completo.
Condiciones:
• Hay cartas en el mazo.
• La carta es un comodín.
Algoritmo:
Versión 1:
t1. Tomar el mazo de cartas.
t2. Tomar una a una las cartas y separar los
comodines del mazo.
Versión 2 (final):
t1. Tomar el mazo de cartas.
t2.1. Tomar una carta del mazo.
t2.2. Si la carta es un comodín, dejar carta en
la pila de comodines.
t2.3. Si la carta no es un comodín, descartar.
t2.4. Si hay cartas en el mazo, ir a la tarea t2.1
36
07/04/2015
¿Dudas?
37