miércoles, 31 de marzo de 2010

2. RESOLUCIÓN DE PROBLEMAS UTILIZANDO LA COMPUTADORA


El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es esencialmente un proceso creativo, se pueden considerar también como una serie de fases o pasos comunes que generalmente deben seguir todos los programadores.

Las siguientes son las etapas que se deben cumplir para resolver con éxito un problema de programación:

1. Definición del problema.
2. Análisis del problema.
3. Diseño del algoritmo.
4. Resolución del algoritmo en la computadora o Codificación.
5. Compilación.
6. Pruebas.
7. Documentación.
8. Mantenimiento.

2.1 Definición del Problema
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice el computador; mientras esto no se conozca del todo no tiene mucho caso no tiene caso pasar a la siguiente paso o etapa.

2.2 Análisis del Problema
Entendido el problema (que se desea obtener de la computadora), para resolverlo es preciso analizar:
· Los datos o resultados que se esperan.
· Los datos de entrada que se deben suministrar.
· ¿Cuál es la salida deseada? La información que se desea producir (salida)
· El proceso al que se requiere someter dichos datos a fin de obtener los resultados esperados.
· Fórmulas, ecuaciones y otros recursos necesarios.

Una recomendación muy práctica es el que nos pongamos en el lugar de la computadora, y analizar que es necesario que me ordenen y en que secuencia para poder producir los resultados esperados.

2.3 Diseño del Algoritmo
Este paso consiste en utilizar un lenguaje algorítmico que permita representar la solución pensada (Pseudocódico, Diagrama de flujo, Diagrama N-S).

2.4 Codificación
Esto es, colocamos cada paso del diagrama en una instrucción o sentencia utilizando un lenguaje que la computadora reconoce. Este programa es el que se conoce como Código Fuente (Source Code).
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudo-lenguaje), en una serie de instrucciones detalladas, en un código reconocible por el computador, la serie de instrucciones detalladas se le conoce como código fuente (Source Code), el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

2.5 Compilación
Utilizamos ahora un programa Compilador, el cual analiza todo el programa fuente y detecta errores de sintaxis ocasionados por fallas en la codificación. Las fallas de lógica que pueda tener nuestro programa fuente no son detectadas por el compilador. Cuando no hay errores graves en la compilación, el compilador traduce cada instrucción del código fuente a instrucciones propias de la máquina (Lenguaje de Maquina), creando el Programa Objeto. Cuando hay errores, éstos se deben corregir sobre el mismo programa fuente. El paso de compilación se repite hasta eliminar todos los errores y obtener el programa ejecutable.

2.6 Pruebas
Los errores humanos dentro de la programación de computadores son muchos y aumentan considerablemente con la complejidad del problema.
Cuando tenemos el programa ejecutable (en lenguaje de maquina) ordenamos al computador que lo ejecute, para lo cual suministramos datos de prueba. Los resultados obtenidos se analizan para identificar cualquiera de las siguientes situaciones:
· La lógica del programa está bien, pero hay errores sencillos, los cuales se corrigen modificando algunas instrucciones o incluyendo unas nuevas; el proceso debemos repetirlo desde el paso 5.
· Hay errores muy graves ocasionados por fallas en la lógica, y lo más aconsejable es que regresemos al paso 2 para analizar nuevamente el problema y repetir todo el proceso.
· No hay errores y los resultados son los esperados. En este caso, el programa lo podemos guardar permanentemente para usarlo cuando necesitemos ejecutarlo nuevamente.

2.7 Documentación
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
La documentación se divide en tres partes:
- Documentación Interna.
- Documentación Externa.
- Manual del Usuario

Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer más claro el entendimiento de un proceso.
Documentación Externa: Se define en un documento escrito los siguientes puntos: - Descripción del Problema
- Nombre del Autor.
- Algoritmo (diagrama de flujo o pseudolenguaje).
- Diccionario de Datos.
- Código Fuente (programa).

Manual del Usuario: Describe paso a paso la manera cómo funciona el programa, con el fin de que el usuario obtenga el resultado deseado.

2.8 Mantenimiento.
Se lleva a cabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.

Bibliografía


Para recordar:



viernes, 26 de marzo de 2010

I. DEFINICIÓN Y CARACTERÍSTICAS DE UN ALGORITMO


1.1 ¿Qué es Algoritmo? La palabra algoritmo se deriva de la traducción al latín de la palabra árabe Al-khowarizmi(hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-Khowarizmi 780-850), nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo. Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-khowarizmi fue sin duda el primer pensador algorítmico.
• Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado.
• Un ALGORITMO es una secuencia finita ‘bien definida’ de tareas, cada una de las cuales se puede realizar con una cantidad de recursos finitos. Se dice que una tarea esta ‘bien definida’, si se sabe de manera precisa las acciones requeridas para su realización. Aunque los recursos que debe utilizar cada tarea deben ser finitos estos no están limitados, es decir, si una tarea bien definida requiere una cantidad inmensa (pero finita) de algún recurso para su realización, dicha tarea puede formar parte de un algoritmo. Además, se dice que una secuencia de tareas esta ‘bien definida’ si se sabe el orden exacto de ejecución de cada una de las mismas.
• Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso.
• Conjunto de sentencias e instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa.
• Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento.
• Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.
• Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.
• Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos.
• Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema.
• Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada.
• Un conjunto de símbolos y procedimientos usados en la realización de un cálculo. • Una secuencia de pasos que conducen a la realización de una tarea.
1.2 Características de un algoritmo. Las características que debe poseer una secuencia de tareas para considerarse algoritmo son: precisión, definitud y finitud.
• Preciso: El algoritmo debe indicar el orden exacto de ejecución de cada tarea. • Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.
• Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.
• Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
• Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.
• Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.
Ejemplos de algoritmos son: Ver una película
1. Buscar el videocasette de la película
2. SI el televisor y la video se encuentran apagados, encenderlos
3. Sacar el video del estuche
4. Introducirlo en la videocasetera
5. Tomar el control del televisor y la video
6. Dirijirme a el sofa
7. Ponerme comodo
8. Disfrutar la película.
Fíjate como he descrito en estos pasos el algoritmo para poder ver una película en la video, este pequeño algoritmo cumple con los requisitos descritos arriba, ya que cada paso precisa un orden y tiene un orden de pasos finitos. En este algoritmo aparece la palabra SI remarcada en mayúsculas, el uso de esta palabra la veremos mas adelante, cuando discutamos sobre el control del flujo del programa o estructuras de control. Los algoritmos se pueden expresar por fórmulas, diagramas de flujo, y pseudocódigos conocidos como herramientas de programación. Está última representación es la mas utilizada por su sencillez y parecido a el lenguaje humano. Como ejercicio te recomendaría que escribieras algunos algoritmos de sucesos en tu vida cotidiana, como por ejemplo: encender el auto, ir al cine, etc.
1.3 Partes de un Algoritmo Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso,salida y Retroalimentación. Donde:
ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados esperados.
PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada.
SALIDA: Resultados arrojados por el proceso como solución.
RETROALIMENTACIÓN:La retroalimentación se produce cuando las salidas del sistema o la influencia de las salidas del mismo en el contexto, vuelven a ingresar como recursos o información. La retroalimentación permite el control de un sistema y que el mismo tome medidas de corrección en base a la información retroalimentada.