Upload
trinhquynh
View
213
Download
0
Embed Size (px)
Citation preview
Resolución de problemas y algoritmos
La programación
Muchas de las cosas que realizamos diariamente las hacemos en forma automática o inconsciente,
sin pensar o analizar cada vez que la realizamos, como las hacemos. Por ejemplo, no es necesario
pensar las cosas que hacemos para avanzar la página de un libro:
1) Levantar la mano,
2) Mover la mano a la parte derecha del libro,
3) Agarrar la esquina de la página,
4) Mover la mano de derecha a izquierda hasta que la página se posicione, de forma que
pueda leerse lo que hay en la otra cara,
5) Soltar la página
*Esto solo aplica en libros que se leen de izquierda a derecha.
No lo hacemos porque ya hemos aprendido a realizar esta tarea.
¿Qué otro ejemplo se te ocurre? Apúntalo.
Como vemos, estas simples tareas se realizan mediante una secuencia lógica de pasos. La mayoría
de las cosas que hacemos, se realizan siguiendo una secuencia ordenada de pasos, que alguna vez
hemos aprendido y luego realizamos sin pensar.
También los matemáticos han desarrollado secuencias lógicas de pasos para resolver problemas o
demostrar teoremas. La producción o fabricación de productos se realiza siguiendo determinadas
secuencias lógicas de pasos. Es decir, casi todo está basado en el orden de las cosas y las acciones.
Esta ordenación se adquiere a través de un proceso que podemos llamar programación.
Programación: planificación, proyección o ejecución de una tarea o suceso.
Pero a nosotros nos interesa la programación para resolver determinados problemas. LA principal
razón por la cual las personas aprenden los lenguajes de programación y a programar, es para
utilizar la computadora como una herramienta para la resolución de problemas. La computadora
nos permite hacer tareas más eficientes, rápidas y precisas. Pero para poder utilizar esta
herramienta, debemos especificar exactamente lo que queremos hacer y el orden en el que debe
hacerse. Esto es lo que se logra mediante la programación.
Un programa tiene por objetivo resolver un problema. Para desarrollar un programa hemos de
seguir un método, que se compone de las siguientes fases:
1) Análisis del problema: comprender (definir) el problema.
2) Diseño del algoritmo: desarrollar una solución determinada a partir de una secuencia
lógica de pasos.
3) Implementación o codificación del algoritmo: traducir el algoritmo a un lenguaje de
programación.
La computadora no puede analizar un problema y proponer una solución. El programador debe
encontrar la solución y comunicársela a la computadora. El programador resuelve el problema, no
la computadora. La computadora es la herramienta que puede ejecutar la solución (programa)
muchas veces y rápidamente.
El primer paso (análisis) requiere que el problema se defina y comprenda claramente para poder
resolverlo correctamente. Una vez analizando el problema, se debe desarrollar el algoritmo
(procedimiento paso a paso). Por último, para resolver el algoritmo se necesita codificar el
algoritmo en un lenguaje de programación (no sé si llegaremos hasta ese punto).
Análisis del problema
El propósito de esta fase es ayudar al programador para llegar a una comprensión de la naturaleza
del problema. El problema debe estar bien definido si se desea llegar a una solución satisfactoria.
Para poder definir con precisión el problema se requiere que las especificaciones de entrada y de
salida sean descritas con detalle. Una buena definición del problema, junto con una descripción
detallada de las especificaciones de entrada y de salida, son los requisitos más importantes para
llegar a una solución eficaz.
El análisis del problema exige una lectura previa del problema a fin de obtener una idea general de
lo que se solicita. Tienes que poder responder: ¿qué necesito? ¿Qué me está pidiendo?
La primera pregunta te proporciona las entradas del problema y la segunda las salidas.
Ejemplos. Identifica las entradas y salidas de los siguientes problemas:
a) Calcular la superficie y circunferencia de un círculo.
b) Obtener la calificación promedio de los resultados obtenidos en el último bimestre de sus
secundarias.
c) Hallar la cantidad de alumnos que sacaron B+ o A en Matemáticas.
Diseño del algoritmo
En esta fase, el objetivo es obtener la secuencia ordenada de pasos –sin ambigüedades- que
conducen a la solución de un problema dado.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan, como
la de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un
lenguaje distinto de programación, pero siempre será el mismo. Si queremos hacer una analogía
es como una receta de cocina para cocinar mole y se puede expresar en español, francés o
náhuatl, pero cualquiera que sea el idioma, los pasos de elaboración son los mismos.
Características de los algoritmos:
Debe ser preciso e indicar el orden de realización de cada paso.
Debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento.
La definición de un algoritmo debe describir tres partes: entradas, proceso y salidas.
Por ejemplo, en un algoritmo de una receta de cocina se tendrá:
Entradas: ingredientes y utensilios empleados
Proceso: elaboración de la receta de cocina
Salidas: terminación del plato
Veamos ejemplos:
a) Preparar emparedados (¡ya lo hicimos!)
b) Hablarle a alguien en una fiesta
c) Resolver un triángulo y saber qué tipo de triángulo es.
d) Calcular la desviación estándar
Las ventajas más importantes del diseño descendiente son:
El problema se comprende más fácilmente al dividirse en partes.
Las modificaciones son más fáciles de hacer.
La comprobación del problema se puede verificar fácilmente.
Tras los pasos anterior eres es preciso representar el algoritmo mediante una determinada
herramienta de programación: diagrama de flujo o pseudocódigo.
Escritura inicial del algoritmo
El método para describir un algoritmo consiste en realizar una descripción paso a paso con un
lenguaje natural del citado algoritmo. Recordemos que un algoritmo es un método o conjunto de
un lenguaje natural del citado algoritmo. Recordemos que un algoritmo es: un método o conjunto
de reglas para solucionar un problema. Estas reglas deben estar seguidas por alguna secuencia
definida de pasos hasta que se obtenga un resultado coherente y solo puede ejecutarse una
operación a la vez.
Supongamos el siguiente problema: ¿Qué hacer para ver la película: Intensamente?
La respuesta es sencilla y puede ser descrita en forma de algoritmo general de modo similar a:
– Ir al cine
– Comprar una entrada
– Ver la película
– Regresar a casa.
El algoritmo consta de cuatro acciones básicas, cada una de las cuales debe ser ejecutada antes de
realizar la siguiente.
El algoritmo descrito es muy sencillo, sin embargo el algoritmo general se descompondrá en pasos
más simples en un procedimiento denominado refinamiento sucesivo, ya que cada acción puede
descomponerse a su vez en otras acciones simples.
– Ver la cartelera de cines
– Si no proyectan “Intensamente”
o Decidir otra actividad
– Si no
o Ir al cine
o Si hay cola
Ponerse en ella.
Mientras haya personas delante avanzar en la cola
o Si hay localidades
Comprar una entrada
Pasar a la sala
Localizar la butaca.
Mientras proyectan la película
Ver la película
Salir del cine
o Si no
o Hacer berrinche
o Volver a casa
Se puede seguir refinando este algoritmo, pero espero hayan entendido el punto.