viernes, 13 de junio de 2014

BLOQUE 1 Diseño y elaboración de algoritmos para la solución de problemas

DISEÑAS Y ELABORAS ALGORITMOS PARA LA SOLUCION DE PROBLEMAS

Problema

La palabra como tal se refiere a una determinada cuestión o asunto que requierede una solución.
Se trata de algún asunto en particular, que en el momento en que
se solucione aportará beneficios.








Metodología de solución
La solución de un problema en informática requiere de siete pasos, dispuestos de tal forma
que cada uno es dependiente de los anteriores, lo cuál indica que se trata de un proceso
complementario y por lo tanto cada paso exige el mismo cuidado en su elaboración.
Los siete pasos de la metodología son los siguientes:

 


Definición del problema
En esta sección se debe redactar en forma clara y precisa el problema.


Análisis del problema
Consiste en establecer una serie de preguntas acerca de lo que establece el problema.
Para poder determinar si se cuenta con los elementos suficientes para llevar a cabo la
solución del mismo, algunas preguntas son:


¿Con qué cuento?
¿Cuáles son los datos con los que se va a iniciar el proceso, qué tenemos que proporcionarle
a la computadora y si los datos con los que cuento son suficientes para dar solución
al problema ?

¿Qué hago con esos datos?

Una vez que tenemos todos los datos que necesitamos, debemos determinar qué hacer
con ellos, es decir qué fórmula, cálculos, qué proceso o transformación deben seguir los
datos para convertirse en resultados.

¿Qué se espera obtener?
¿Qué información deseamos obtener con el proceso de datos y de qué forma presentarla?
En caso de que la información obtenida no sea la deseada replantear nuevamente un
análisis en los puntos anteriores.

¿Qué es la prueba de escritorio?
Es seguir uno a uno los pasos, verificando que se llegue siempre a resultados válidos, si

nos encontrarnos con ambigüedades es necesario revisar nuestra Propuesta de solución.

Esto quiere decir que algo hicimos mal. Y en caso de encontrar error es necesario revisar
el proceso desde su Definición.
Podemos preguntarnos ¿funciona? si o no, aquí no puede haber supuestos

Codificación
Consiste en escribir la solución del problema en una serie de instrucciones detalladas en
un código reconocible por la computadora; es decir, en un lenguaje de programación. A
esta serie de instrucciones se le conoce como PROGRAMA.



Definición del problema
En esta sección se debe redactar en forma clara y precisa el problema.
Análisis del problema
Consiste en establecer una serie de preguntas acerca de lo que establece el problema.
Para poder determinar si se cuenta con los elementos suficientes para llevar a cabo la
solución del mismo.
Diseño de la solución o propuesta de solución
Una vez definido y analizado el problema se procede a la creación del método el cuál consiste
en una serie de pasos ordenados que nos proporcione un algoritmo explícito para
su solución.
¿Qué es la prueba de escritorio?
Es seguir uno a uno los pasos, verificando que se llegue siempre a resultados válidos, si
nos encontrarnos con ambigüedades es necesario revisar nuestra Propuesta de solución.
Esto quiere decir que algo hicimos mal. Y en caso de encontrar error es necesario revisar
el proceso desde su Definición.
Podemos preguntarnos ¿funciona? si o no, aquí no puede haber supuestos
 
Codificación
Consiste en escribir la solución del problema en una serie de instrucciones detalladas en
un código reconocible por la computadora; es decir, en un lenguaje de programación. A
esta serie de instrucciones se le conoce como PROGRAMA.
Prueba y Depuración
Prueba es el proceso de identificar los errores que se presenten durante la ejecución del
programa; es conveniente que cuando se pruebe un programa se tomen en cuenta los
siguientes puntos:
1. Tratar de iniciar la prueba con una mentalidad saboteadora, casi disfrutando la tarea de
encontrar un error.
2. Sospechar de todos los resultados que arroje la solución, por lo tanto, se deberán verificar
cada uno de ellos.
3. Considerar todas las situaciones posibles, normales y anormales.
La Depuración consiste en eliminar los errores que se hayan detectado durante la
prueba para dar paso a una solución adecuada y sin errores.
Puntos importantes a considerar:
1. Para los errores de sintaxis:
Leer todos los mensajes de “error” y actuar en consecuencia.
Usar las estructuras definidas en el lenguaje.
Repetir el proceso hasta que no haya más mensajes.
En caso de error lógico, es necesario revisar nuestra Propuesta de Solución.
Si es necesario usar visores temporales. (Los visores temporales son pantallas de prueba
que nos permiten ver si está bien la forma en la que se presenta el programa para
resolver el problema, también se toman en cuenta los colores, el tipo de letra, tamaño,
etcétera).
Usar las herramientas de depuración. Se refiere a eliminar los errores que se hayan
detectado durante la revisión que se hizo.
Comparar con los datos de la Prueba de Escritorio. (Ver si lo que escribí es la solución


deseada al problema y si es lo que se requería).



Algoritmo
Un algoritmo es un conjunto ordenado y finito de operaciones que se
utilizan para la solución de un problema. Se trata de instrucciones o reglas
definidas a través de pasos sucesivos que permiten realizar una actividad.
Es una serie de actividades encaminadas todas a resolver el problema en
cuestión.Para que un algoritmo pueda ser considerado como tal, debe ser
una secuencia ordenada, definida y finita de instrucciones.



Características de los algoritmos
El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son
ampliamente aceptadas como requisitos para un algoritmo:
1. Carácter finito. Un algoritmo siempre debe terminar después de un número finito de
pasos.
2. Precisión. Cada paso de un algoritmo debe estar precisamente definido; las operaciones
a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso.
3. Entrada. Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes
de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas
entradas son tomadas de conjuntos específicos de objetos.
4. Salida. Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica
con las entradas.
5. Eficacia. También se espera que un algoritmo sea eficaz, en el sentido de que todas las
operaciones a realizar en un algoritmo deben ser suficientemente básicas como para
que en principio puedan ser hechas de manera exacta y en un tiempo finito por un
hombre usando papel y lápiz.
Knuth admite que, aunque su descripción pueda ser intuitivamente clara, carece de
rigor formal, puesto que no está exactamente claro que significa “precisamente definido”,
“de manera rigurosa y no ambigua”, o “suficientemente básicas”, y así sucesivamente.
A partir del carácter finito y de la salida se deduce que ante una misma situación inicial
o valores de entrada, (esto es, los datos que inventas cuando haces una corrida de escritorio)
un algoritmo debe proporcionar siempre el mismo resultado (o salida), con excepción
de los algoritmos probabilistas que ya se mencionaron anteriormente.

Diagramas de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados
con flechas para indicar la secuencia de instrucciones. Los diagramas de flujo son
usados para representar algoritmos.Un diagrama de flujo es una forma más tradicional de especificar los detalles algorítmicos de un proceso y constituye su representación.



Ventajas de los diagramas de flujo
Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano
reconoce fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de
texto.
Permiten identificar los problemas y las oportunidades de mejora del proceso.
Son una excelente herramienta para capacitar a los nuevos empleados y también a los
que desarrollan la tarea, cuando se realizan mejoras en el proceso.
También puede ser utilizados para clases de talleres o de acciones sobre bachilleratos
técnicos.

Reglas para la construcción de diagramas de flujo
Cualquier diagrama de flujo debe tener un inicio y un fin.
Las líneas utilizadas para indicar la dirección del flujo deben ser rectas, verticales y horizontales.
Todas las líneas utilizadas para indicar la dirección del flujo deben estar conectadas.
El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha.
No pueden llegar más de una línea a un símbolo.





Solución de problemas

Ejemplos de problemas y formas de solución
Simulando la preparación de un pay
A continuación se emplea la metodología de solución de problemas para definir e implementar
los pasos necesarios para simular la solución a un problema simple.
Hornear y servir un pay de fruta
Se puede ofrecer la implementación en
el lenguaje de programación llamado C
de la solución encontrada, aunque de
manera simulada. Esto quiere decir que
algunas operaciones no hacen nada en
realidad, sino que simulan la ocurrencia
de acciones que deben llevarse a cabo.
Especificación del algoritmo
El algoritmo presentado a continuación emplea las operaciones (tareas) definidas anteriormente
para resolver nuestro problema. En éste caso no fue necesario emplear operaciones
de control de flujo, pues el algoritmo se puede especificar en forma totalmente
secuencial.
Algoritmo:
1. Obtener la receta (huevos, harina, mantequilla, tipo_fruta, fruta y tiempo_horno).
2. Obtener la cantidad de comensales (comensales).
3. mezclar_base (huevos, harina, mantequilla).
4. hornear_base (tiempo_horno).
5. preparar_fruta (tipo_fruta, fruta).
6. cortar_servir (comensales, tipo_fruta).
Validación del algoritmo
Dominios: Los posibles dominios que existen en el contexto de éste
problema se constituyen a partir de los distintos valores de entrada
que pueden recibirse del usuario. Es decir, distintos tipos de fruta, distintas
cantidades para cada ingrediente, distintos tiempos en el horno
y distintas cantidades de comensales.
Validación: Debe ejecutarse el algoritmo para los dominios definidos,
es decir, cambiando valores para cada dato de entrada, y verificando
que se puede alcanzar el objetivo buscado.
Prueba de escritorio
Sirve para revisar que el algoritmo soluciona tu problema y lo hace de
manera eficiente y efectiva.
Prueba de escritorio: Corroboro con datos ficticios si resuelve mi
problema paso por paso ejemplo:
Preparacion de un pay
Cantidad de huevos (unidades): 3.
Cantidad de harina (gramos): 250.
Cantidad de mantequilla (gramos): 150.
Fruta que se desea en la cubierta: frutilla.
Cantidad de frutilla (gramos): 300.
Tiempo en el horno (minutos): 10.
Comensales: 5.
Mezclando 3 huevos, 250 gramos de harina y 150 gramos de mantequilla...
Horneando la base por 10 minutos...
Preparando 300 gramos de frutilla...
Cortando el pay de frutilla en 5 pedazos...
¡Listo!
La finalidad de la solución de problemas es poder codificar en un lenguaje de programación
los algoritmos, que previamente se desarrollaron y se esquematizaron en un diagrama
de flujo. Como anteriormente se mencionó, existen varios lenguajes de programación
que son útiles para esta codificación. Uno de ellos es el Basic-256, el cual es un editor de
código sencillo y amigable por lo básico de sus herramientas. Por lo que utilizaremos este
programa para la solución de problemas.
p El algoritmo se puede especificar en
forma totalmente secuencial como

en el caso de una receta de pay

No hay comentarios.:

Publicar un comentario