MC Mireya Tovar Vidal 2
Ingeniero en computación
Persona que resuelve problemas computacionales
DesarrolloConectividad
Soporte
Diseño
Consultoría
Otros…
FCC - BUAP Otoño 2010
MC Mireya Tovar Vidal 3
Fase de RESOLUCIÓN de PROBLEMAS Fase de IMPLEMENTACIÓN
Fase de MANTENIMIENTO
Tom
ado d
e: Pro
gra
mm
ing and P
roble
m S
olv
ing w
ith Java.
Nell D
ale
Chap 1
FCC - BUAP Otoño 2010
FCC - BUAP Otoño 2010 5
UnProblema
es una
situación
en la cual un
individuo
actúa
meta
utilizando una
estrategia
para alcanzar una
desea
hacer algo
curso de
acción
para alcanzar la
meta
pero desconoce el
Tom
ado d
e L
ibro
5:
Estr
ate
gía
s d
e r
esolu
ció
n d
e p
roble
mas –
Lis
sete
Poggio
li
MC Mireya Tovar Vidal
Cuando hablamos de un problema y nos
referimos a la meta o a lograr lo que se
quiere, nos estamos refiriendo a la solución
de dicho problema.
Una solución esta asociada con:
6
Estado inicial
Solución o meta
Problema
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
FCC - BUAP Otoño 2010 7
Losproblemas
tienen
componentes
alcanzar
metas
analizar
son lo que se
las
desea
datos
los
elementos
son
para
situación
problema
la
camino
restricciones
las
factores
son
que limitan
solución
la
el
para alcanzar
resolver
operaciones
las
procedimientos
son
para
problema
el
Tom
ado d
e L
ibro
5:
Estr
ate
gía
s d
e r
esolu
ció
n d
e p
roble
mas –
Lis
sete
Poggio
li
MC Mireya Tovar Vidal
Consideremos el siguiente ejemplo:“Anita tiene una muñeca y quiere vestirla con pantalón y blusa. Tiene
cuatro pantalones: rojo, blanco, azul y negro y tiene tres blusas:verde, amarillo y rosado. Ella quiere hacer diferentes combinacionescon todos los pantalones y las blusas verde y rosada. ¿Cuántascombinaciones diferentes puede hacer?”
¿Cuál es la Meta(s)? Consiste en saber cuántas combinaciones diferentes puede hacer
Anita con los pantalones y las blusas ¿Cuáles son los datos?
4 pantalones y 3 blusas Las restricciones ?
Anita solo quiere utilizar 2 de las 3 blusas: la verde y rosada. Enconsecuencia no todas las blusas van a ser consideradas para lascombinaciones
Operaciones o métodos ? Utilizar las operaciones requeridas para obtener el número de
combinaciones
FCC - BUAP Otoño 2010 8MC Mireya Tovar Vidal
Diariamente resolvemos problemas, la
mayoría de las veces, sin darnos cuenta del
proceso que realizamos.
Algunos problemas están claramente definidos -
como los que mencionamos anteriormente- pero
en la vida real, los procesos no son tan simples.
La mayoría de las veces, tendremos que definir
el problema nosotros mismos y decidir con que
información vamos a trabajar y que resultados
debemos obtener.
MC Mireya Tovar Vidal 10FCC - BUAP Otoño 2010
Según Dijkstra (1991), la resolución de
problemas es un proceso cognoscitivo
complejo que involucra conocimiento
almacenado en la memoria a corto y a largo
plazo.
MC Mireya Tovar Vidal 11FCC - BUAP Otoño 2010
Comprender el problema (análisis y especificación)
Concebir un plan para llegar a la
solución (estrategia)
Ejecutar el plan
Verificar el procedimiento y comprobar los
resultados
MC Mireya Tovar Vidal 12
Polya (1965) señala que un problema puede
resolverse correctamente si se realizan las
siguientes fases o etapas:
FCC - BUAP Otoño 2010
MC Mireya Tovar Vidal 13FCC - BUAP Otoño 2010
Técnicas para
resolución de
problemas
Hacer preguntas
Dividir y Vencer
Por analogía
Buscar cosas que
son familiares
Análisis de medios y
fines
Bloques de construcción
Combinar soluciones
En equipos de 5 integrantes, tienen 7
minutos para resolver el siguiente
problema
Descripción:
Obtener un lista de los diferentes
lugares de procedencia de sus
compañeros y el promedio de edad.
Criterios para el éxito:
Cada equipo deberá haber obtenido la
información solicitada
Responsabilidad Individual:
Cualquier integrante del equipo podrá
ser seleccionado al azar para explicar la
solución al frenteMC Mireya Tovar Vidal 14FCC - BUAP Otoño 2010
Compartiendo la solución con todos
Explicar el proceso que siguieron para
resolver el problema
MC Mireya Tovar Vidal 15FCC - BUAP Otoño 2010
Una de las técnicas para resolución deproblemas más simples pero muy importante esla de hacer preguntas.
Debemos asegurarnos que estamos procediendoa resolver el problema real y no el problemaque percibimos
MC Mireya Tovar Vidal 16FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
Siempre que se nos dé una tarea cuyo problema no estébien definido, o se requiera información adicional,debemos hacer preguntas hasta que tengamos claroexactamente que es lo que se quiere o tiene que hacer.
MC Mireya Tovar Vidal 17FCC - BUAP Otoño 2010
Problema
Qué
Cuándo
Por qué
Dónde
Cómo
Quién
18
Algunas preguntas útiles son:
¿Qué es lo que sé acerca del problema?
¿Cuál es la información con la que debo
trabajar para encontrar la solución?
¿Cómo se ve la solución, qué parece?
¿Qué clase de casos especiales existen?
¿Cómo voy a saber que he encontrado la
solución?
MC Mireya Tovar Vidal FCC - BUAP Otoño 2010
En equipos de 5 integrantes, tienen 10 minutos para resolver el siguiente
problema
Descripción:
Acaban de recibir como herencia un terreno con la forma de la
figura que se les entregará. Todos han acordado vender el terreno,
por lo cual, requieren calcular el área de éste para determinar su
precio.
Actividad:
Identificar y escribir en su cuaderno los componentes del problema
Resolver el problema (Cada equipo contará con una regla y tijeras)
Criterios para el éxito:
Cada equipo obtendrá el área de su terreno.
Todos los integrantes deben asegurarse que el resto de su equipo
entendió satisfactoriamente el proceso de resolución del problema.
Responsabilidad Individual:
Cualquier integrante del equipo podrá ser seleccionado al azar para
explicar la solución al frente
MC Mireya Tovar Vidal 19FCC - BUAP Otoño 2010
Información adicional
Área del trapecio = [(base mayor + base menor)*altura] / 2
Área del triángulo = (base * altura) / 2
Área del rectángulo = base*altura
Área del rombo = (diagonal mayor*diagonal menor) / 2
Área del paralelogramo = base*altura
Compartiendo la solución con todos
Explicar el proceso que siguieron para
resolver el problema
MC Mireya Tovar Vidal 21FCC - BUAP Otoño 2010
¿Logró el equipo resolver el problema
y es capaz de explicar el proceso?
¿Cómo se podría mejorar la próxima
vez?
MC Mireya Tovar Vidal 22FCC - BUAP Otoño 2010
La técnica que acaban de utilizar se llama Dividir y Vencer o divide y vencerás
Se basa en la idea de separar o dividir un problema grande en pequeñas piezas más manejables
23
Problema difícil
Sub-problema
fácil
Sub-Problema
difícil
Sub-problema
fácil
Sub-problema
fácil
Sub-problema
fácil
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
Otra técnica aplicable para nuestro problema, es la de
bloques de construcción, la cual, es otra forma de atacar
problemas “grandes”.
Esta técnica consiste en ver si existe solución para piezas
mas pequeñas del problema (los bloques o ladrillos) y si es
posible combinar estas soluciones para resolver todo o la
mayoría del problema grande (hacer la pared)
Para nuestra actividad las “piezas pequeñas” fueron las figuras
regulares, y la suma de todas las áreas, nos dio el área de la
figura completa.
24FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
En equipos de 4 integrantes, tienen 15 minutos para resolver el siguiente
problema
Descripción:
Son el equipo campeón en armar rompecabezas y como parte de sus
responsabilidades y experiencia, deben escribir una guía o instructivo
para armar rompecabezas, que sirva de base para equipos novatos.
Actividad:
Identificar y escribir en su cuaderno los componentes del problema
Resolver el problema
Criterios para el éxito:
Cada equipo obtendrá la solución al problema
Todos los integrantes deben asegurarse que el resto de su equipo entendió
satisfactoriamente el proceso de resolución del problema.
Responsabilidad Individual:
Cualquier integrante del equipo podrá ser seleccionado al azar para explicar
la solución al frente.
25FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
Compartiendo la solución con todos
Explicar el proceso que siguieron para
escribir la guía para armar un rompecabezas
26FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
¿Logró el equipo resolver el problema y
es capaz de explicar el proceso?
¿Cómo se podría mejorar la próxima
vez?
27FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
La técnica que acaban de utilizar se llama resolución por analogía.
Consiste en relacionar un problema o una situación, con otra semejante que ya se ha resuelto anteriormente. Es decir, identificar algún patrón común.
28FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
29
Instructivo para construir papalotesReceta de cocina
Por Analogía
Guía para armar rompecabezas
FCC - BUAP Otoño 2010MC Mireya Tovar VidalMC Mireya Tovar Vidal
El punto es que puede haber más de un patrón en el problema, más de una respuesta correcta y más de una perspectiva desde la cual ver un problema.
Mediante está técnica se han originado soluciones creativas.
Por ejemplo, William Harvey fue el primero en aplicar la analogía de “bomba” al corazón, lo que llevó al descubrimiento del sistema circulatorio del cuerpo.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 30
• Otra técnica que también podría aplicarse es la de buscar
cosas que sean familiares.
La idea es “nunca reinventar la rueda”.
Si una solución ya existe, usar esta. Es decir, si ya has
resuelto el mismo o un problema similar antes, sólo repite la
solución.
Incluso para escribir la guía, se podría investigar que existe
en internet!
Similarmente
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 31
Uno no aprende a ir a comprar el pan, después a ir a comprar leche, después huevo! , simplemente aprende uno a “ir a comprar a la tienda” , es decir, repite uno la misma solución.
En programación ciertos problemas se repiten uno y otra vez, por ejemplo obtener la máxima y mínima calificación de un grupo de alumnos, es igual a obtener la temperatura máxima y mínima de un conjunto de datos.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 32
La técnica de análisis de medios y fines permite, trabajar con un objetivo o fin a la vez. Es decir, esta técnica consiste en descomponer el problema en sub-metas o sub-objetivos, ir escogiendo sub-metas para trabajar y solucionar una a una hasta completar la tarea, eliminando los obstáculos que le impiden llegar al estado final.
Un buen ejemplo donde aplicar está técnica, es para el problema de ir de una ciudad a otra, con varias ciudades intermedias. En este caso las sub-metas son las ciudades intermedias y los
medios son la forma de llegar de una ciudad a otra (avión, auto, caminando?)
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 34
Ejemplo:
Si quisiéramos recorrer la ruta Maya, podríamos identificar las
ciudades involucradas como sub-metas y decidir como llegar
ahí, por ejemplo para llegar de Puebla a San Cristóbal, no podría
ser por avión, tendríamos que buscar otra sub-meta, Tuxtla
Gutiérrez, y de Tuxtla a San Cristóbal por auto, y así a cada
localidad.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 35
La última técnica para resolver problemas es combinar soluciones existentes.
Esta técnica podría parecerse a la técnica de Buscar cosas que sean familiares, pero en este caso, es combinar las soluciones paso a paso, no solamente unir soluciones obtenidas separadamente.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 36
Ejemplo:
Para calcular el promedio de una lista de valores, debemos hacer dos cosas: sumar los valores y
contarlos.
Si tenemos dos soluciones separadas, una para sumar los valores y otra para contarlos, podemos combinarlas y así paso a paso ir sumando y contando y al final tendremos la solución al problema.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 37
Descripción del problema:
En un salón de 35 alumnos aprobaron el 40%.
Determinar el número de alumnos reprobados.
Actividad:
Analiza el problema
Explica que técnica (o técnicas) de resolución de
problemas se adaptaría mejor para resolver este
problema
Resuelve el problema usando dicha técnica
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 39
En equipos de 5 integrantes, tienen 15 min. para resolver el siguiente problema
Descripción:
Supongamos que desea ir de Chihuahua a Cancún. Para lograr esto se tienen varias opciones: usar el autobús, caminar, viajar en motocicleta, por tren, por avión o caminar. Dependiendo de las circunstancias, usted elegirá la opción que más le convenga. Si es que esta apurado, elegirá viajar por avión, si su presupuesto no es muy alto, probablemente elija viajar por autobús.
Actividad:
Analicen el problema
Explicar que técnica (o técnicas) de resolución de problemas se adaptarían mejor para resolver este problema. Sugieran al menos 3 técnicas
Escriban el proceso que se debe seguir para resolver el problema.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 41
Criterios para el éxito:
Cada equipo obtendrá la solución al problema
Todos los integrantes deben asegurarse que el
resto de su equipo entendió satisfactoriamente el
proceso de resolución del problema.
Responsabilidad Individual:
Cualquier integrante del equipo podrá ser
seleccionado al azar para explicar la solución al
frente.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 42
Inicio: Chihuahua
Objetivo: Cancún
Medios: Volar, caminar, motocicleta, manejar,
Autobús
Inicio: Chihuahua
Objetivo: Cancún
Revisando medios:
Volar a México y entonces a Cancún,
Volar a Toluca y entonces a Cancún;
volar a Puebla y entonces a Cancún
Inicio: Chihuahua
Objetivos intermedios:
México
Meta: Cancún
Medios intermedios al objetivo: avión, caminar,
motocicleta, manejar, autobús.
Solución: Tomar un vuelo cercano a México y entonces tomar otro vuelo a
Cancún
Solución: Medios - fines
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 43
Hasta el momento, hemos hecho:
45
Guías para armar un
rompecabezas
Conjunto de
instrucciones para
resolver un problema
Descripción de
procesos
recetas
ect.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
Algoritmo
Entrada Salida
Acciones
Operaciones
Instrucciones
Problema
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
EntradaEntradaEntrada SalidaEntrada
46
En general, un algoritmo describe el método
mediante el cual se realiza una tarea.
Un algoritmo es una secuencia de instrucciones,
las cuales, realizadas adecuadamente, dan lugar al
resultado deseado.
La noción de algoritmo no es exclusiva de la computación
ni de la Matemática. Existen algoritmos que describen toda
clase de procesos de la vida real (por ejemplo, las recetas
de cocina, las partituras musicales, los planos con las
instrucciones para construir una casa, etc..).
47FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
Un algoritmo es un conjunto finito de reglas que dan
lugar a una secuencia de operaciones para resolver un
tipo específico de problema.
Un algoritmo debe cumplir cinco importantes condiciones:
Finitud: Un algoritmo tiene que acabar siempre tras un número
finito de pasos.
Definibilidad: Cada paso de un algoritmo debe definirse de modo
preciso; las acciones a realizar han de estar especificadas para
cada caso rigurosamente y sin ambigüedad
Conjunto de entradas: Debe existir un conjunto especificado de
objetos, cada uno de los cuales constituyen los datos iniciales del
caso particular del problema que resuelve el algoritmo.
Conjunto de salida: salida o respuesta que debe obtener el
algoritmo para los diferentes casos particulares del problema.
Efectividad: Un algoritmo debe ser efectivo.
48FCC - BUAP Otoño 2010MC Mireya Tovar Vidal
Partes de un algoritmo
Entrada: Información dada al algoritmo.
Proceso: Operaciones o cálculos necesarios
para encontrar la solución del problema.
Salida: Respuestas dadas por el algoritmo o
resultados finales de los procesos realizados.
SalidaProceso
Entrada
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 49
Ejemplo
Desarrollar un algoritmo que calcule la superficie de un rectángulo proporcionando su base y altura.
Preguntas: Especificaciones de entrada
¿Que datos son de entrada?
¿Cuántos datos se introducirán?
¿Cuales son los datos de entrada válidos?
Especificaciones de salida ¿Cuáles son los datos de salida?
¿Cuántos datos de salida se producirán?
¿Qué formato y precisión tendrán los resultados?
Algoritmo:Paso 1. Entrada desde el teclado, de los datos de base y altura.
Paso 2. Cálculo de la superficie, multiplicando la base por la altura.
Paso 3. Salida por pantalla de base, altura y superficie calculada.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 50
El lenguaje algorítmico debe ser independiente de cualquier lenguaje de programación particular, pero fácilmente traducible a cada uno de ellos.
Alcanzar estos objetivos conducirá al empleo de métodos normalizados para la representación de algoritmos, tales como los diagrama de flujo o pseudocódigo.
Verificación de algoritmos
Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para las que se ha diseñado y produce el resultado correcto y esperado.
El modo más normal de comprobar un algoritmo es mediante su ejecución manual, usando datos significativos que abarquen todo el posible rango de valores (prueba del algoritmo).
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 51
Ejemplo 1.1
Un procedimiento que realizamos varias veces al día consiste en lavarnos los dientes. Veamos la forma de expresar este procedimiento como un Algoritmo:
1. Tomar la crema dental
2. Destapar la crema dental
3. Tomar el cepillo de dientes
4. Aplicar crema dental al cepillo
5. Tapar la crema dental
6. Abrir la llave del lavamanos
7. Remojar el cepillo con la crema dental
8. Cerrar la llave del lavamanos
9. Frotar los dientes con el cepillo
10. Abrir la llave del lavamanos
11. Enjuagarse la boca
12. Enjuagar el cepillo
13. Cerrar la llave del lavamanos
14. Secarse la cara y las manos con una toalla
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 52
Ejemplo
Veamos que algo tan común como los pasos para cambiar un foco se pueden expresar en forma de Algoritmo:
1. Ubicar una escalera o un banco debajo del foco fundido
2. Tomar un foco nuevo
3. Subir por la escalera o al banco
4. Girar el foco hacia la izquierda hasta soltarlo
5. Enroscar el foco nuevo hacia la derecha en el plafón hasta apretarlo
6. Bajar de la escalera o del banco
7. Fin
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 53
Actividad
Discutir en equipo el ejemplo del foco y
proponer algunas mejoras.
Luego, un voluntario debe pasar al pizarrón y
escribir un Algoritmo con participación de
toda la clase
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 54
A diferencia de los seres humanos que
realizan actividades sin detenerse a pensar
en los pasos que deben seguir.
Las computadoras son muy ordenadas y
necesitan que quien los programa les
especifique cada uno de los pasos que debe
realizar y el orden lógico de ejecución.
Actividad
Numerar en orden lógico los pasos
siguientes (para pescar):___ El pez se traga el anzuelo.
___ Enrollar el sedal.
___ Tirar el sedal al agua.
___ Llevar el pescado a casa.
___ Quitar el Anzuelo de la boca del pescado.
___ Poner carnada al anzuelo.
___ Sacar el pescado del agua.
Ejemplo
Consideremos algo más complejo como el algoritmo de Euclides para hallar el Máximo Común Divisor (MCD) de dos números enteros positivos dados. Obsérvese que no se especifica cuáles son los dos números, pero si se establece claramente una restricción: deben ser enteros y positivos.
ALGORITMO
Paso 1: Inicio.
Paso 2: Leer los dos números (“a” y “b”). Avanzar al paso 3.
Paso 3: Comparar “a” y “b” para determinar cuál es mayor. Avanzar al paso 4.
Paso 4: Si “a” y “b” son iguales, entonces ambos son el resultado esperado y termina el algoritmo. En caso contrario, avanzar al paso 5.
Paso 5: Si “a” es menor que “b”, se deben intercambiar sus valores. Avanzar al paso 6; si “a” no es menor que “b”, avanzar al paso 6.
Paso 6: Realizar la operación “a” menos “b”, asignar el valor de “b” a “a” y asignar el valor de la resta a “b”. Ir al paso 3.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 57
Ejercicio
A un trabajador le pagan según sus horas y
una tarifa de pago por horas. Si la cantidad
de horas trabajadas es mayor a 40 horas. La
tarifa se incrementa en un 50% para las
horas extras. Calcular el salario del
trabajador, dadas las horas trabajadas y la
tarifa.
FCC - BUAP Otoño 2010MC Mireya Tovar Vidal 58