resolución de problemas y algoritmos · pdf filediseño del algoritmo en esta...

4
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.

Upload: trinhquynh

Post on 06-Feb-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

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.