lunes, 29 de mayo de 2017

Conceptos de algoritmos

Algoritmos:
Conjunto de acciones o secuencias de operaciones ejecutadas en un determinado orden para resolver un problema.
Acción
Acontecimiento producido por un actor en un tiempo finito que produce un resultado definido y preciso y además genera cierta transformación.
Analizaremos la acción
Existen diferentes tipos de acciones:
  • Acción simple: Realizadas directamente
  • Acción compleja: No se pueden realizar directamente sino a través de una descomposición de acciones más simples.

Ejemplo de algoritmo de la vida cotidiana

Hoy observaran  un ejemplo de un algoritmo de la vida cotidiana
Entrada
Tornillo.
Taladro.
Palo roto.
Mesa Rota.
Palo nuevo.
Remplazo de el palo de la mesa.
Proceso
1.- Tomar la mesa rota y acomodarla en el suelo, de tal manera que puedas observar el daño o la ruptura de la mesa.(boca abajo)
2.-Ir por el taladro
3.-Dirigirse hacia la mesa con el taladro
4.-Toma el taladro y desatornillar el palo roto de tal manera que puedas quitar el palo roto.
5.-Quitar el palo roto y dejarlo en el suelo a un lado de la mesa.
6.-Dejar el taladro en el suelo, a un lado de la mesa
7.-Dirígete hacia donde esta el palo nuevo y el tornillo.
8.-Toma ambos.
9.-Dirigirte hacia la mesa.
10.-Cuando llegues a la mesa deja el tornillo a un lado.
11.-Coloca el palo nuevo sobre la parte donde estaba el palo roto.
12.-Deja el palo nuevo sobre la parte donde estaba el palo roto  donde se colocaba el palo roto en la mesa.
13.-Toma el tornillo.
14.- Colócalo sobre la parte donde se desatornillo el palo roto.
15.-Toma el taladro.
16.-coloca el taladro sobre el tornillo en el punto donde se desatornillo el palo roto.
17.-Comienza a enroscar el tornillo en el palo nuevo donde se colocaba en palo roto antes de desatornillar lo hasta ajustarlo adecuada mente.
18.-Cuando termines de enroscar lo deja el taladro a un lado.
19.-Coloca la mesa de manera adecuada.
20.-Tomar el palo roto,el tornillo viejo, el taladro y ponerlos en su lugar.(guardar)
21.-Colocar lo mesa en su lugar
Salida
Mesa reparada

Fases de la programacion

Fases de la programación
*Definición de el problema: Requiere que el problema sea definido y comprendido claramente para que pueda ser analizado con todo detalle.
*Análisis de el problema: El propósito el análisis de un problema es ayudar al programador para llegar a una cierta comprensión de la naturaleza de el problema. El problema debe estar bien definido si se desea llegar a una solución satisfactoria.
*Entrada: Son todos los datos que hay que ingresar para la resolución de el problema.
*Proceso: Son los diferentes procedimientos en los cuales se usaran los datos proporcionados por el usuario en el paso anterior para resolver el problema.
*Salida: La resolución de el problema
*Diseño de la solución: Una computadora no tiene la capacidad para solucionar mas que cuando se le proporcionan los sucesivos pasos a realizar.
estos pasos sucesivos que indican las instrucciones a ejecutar por la maquina constituyen, como ya sabemos el algoritmo.
*Codificación: Es el algoritmo traspasado a la computadora a través de un lenguaje de programación.
*Compilación y ejecución:Compilación, el lenguaje de programación seleccionado revisa que ya no halla errores en el código fuente.
Ejecución,ejecutar el programa después de ser compilado.
*Verificación y pruebas: Revisar que el programa de los resultados que el usuario quiere,hay que revisar si hay algún error el cual puede ser de tipo lógico,de semántica o ejecución.
*Depuración: Corregir los errores encontrados en la etapa anterior, si se hubiese algún error se tiene que regresar hasta la etapa que sea necesaria para que la solución se la que el usuario requiere.
*Documentación: Son todos los comentarios,referencia desde que se dio el problema hasta que se encontró la solución.
*Capacitación: Una ves que tenemos los manuales viene la capacitación de usuarios, como no a todos les interesa lo mismo porque hay diferentes tipos de usuarios, se tienen que dividir de acuerdo a sus conveniencias.
*Implantación o complementación del sistema: Hay diferentes formas de implementar el sistema:
depende de el tamaño de el sistema si existiera se tiene que poner el nuevo y quitar el que ya estaba.
Trabajar primero con el sistema viejo(Si aun existe), y después empezar a trabajar con el nuevo.
*Mantenimiento: El mantenimiento preventivo es que hagamos lo posible por no caer en errores , la actualización si el usuario tiene la necesidad de quitar o poner algo;téngase en cuenta que  cuando surge mantenimiento tenemos que volver a hacer todos los pasos anteriores revisando que todas las condiciones sean favorables al rededor de el sistema.


Características de los algoritmos

CARACTERÍSTICAS DE LOS ALGORITMOS
 - Finitos: Debe acabar en algún momento.
- Eficientes: Deben ocupar la mínima memoria y minimizar el tiempo de ejecución.
- Legibles: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.
- Modificables: Estarán diseñados de modo que sus posteriores modificaciones sean fáciles de realizar, incluso por programadores diferentes a sus propios autores.
- Modulares: La filosofía utilizada para su diseño debe favorecer la división del problema en módulos pequeños. -
Único punto de entrada, único punto de salida: A los algoritmos y a los módulos que lo integran se entra por un sólo punto, inicio, y se sale por un sólo punto también, fin. LA ESTRUCTURA GENERAL PARA LA RESOLUCIÓN INFORMÁTICA DE UN PROBLEMA SERÁ LA SIGUIENTE:
 1.- Análisis del problema: Haremos un estudio previo de la tarea a realizar. Si nos la dan verbalmente, haremos preguntas hasta tener claro lo que se ha de hacer, es decir, hasta obtener la escritura detallada de todas las especificaciones
. Si la tarea nos la dan por escrito, podemos comenzar subrayando palabras o frases decisivas, escribiendo al margen ideas y dudas, o cualquier otra cosa que nos ayude a concretar especificaciones, además de realizar verbalmente todas las preguntas que den respuesta a nuestras dudas.
 2.- Escribir en pseudocódigo el programa principal: Empezaremos dividiendo el problema en módulos más sencillos, hasta llegar a un nivel de detalle razonable utilizando nombres con significado para ellos. Si de momento no sabemos resolver alguno de estos módulos, no debemos preocuparnos pensemos que alguien nos lo resolverá o que mañana tendremos una idea genial para solucionarlo y sigamos adelante con nuestro diseño, tal vez tengamos la suerte de encontrarlo ya hecho. Recordemos que si los problemas son razonablemente pequeños, como ocurrirá en los primeros temas no será necesaria esta división en subtareas del problema.
 3.- Escribir en pseudocódigo los módulos restantes: Escribiremos cada uno de los módulos, detallando la secuencia de instrucciones que deben realizar, en el caso de que los hubiera.
4.- Lectura del pseudocódigo: Recorrer el algoritmo escrito en pseudocódigo inspeccionando, reordenando, detectando y corrigiendo errores, revisando todo lo que sea necesario, incluso será posible que haya que planificar algún cambio.
 No hay que tener miedo a empezar de nuevo si fuera necesario.
5.- Seguir la traza: Haremos la prueba del algoritmo siguiendo la traza con los datos elegidos como juego de ensayo. Observaremos los resultados minuciosamente, tratando de detectar y corregir los errores si estos resultados no son los esperados.
6.- Documentación: Una vez diseñado y bien estructurado un algoritmo, la siguiente actividad a desarrollar, sumamente importante en programación, es producir programas bien documentados, para que se cumplan los objetivos básicos, que los programas sean legibles, comprensibles y fácilmente modificables. La documentación incluye descripciones, comentarios, especificaciones, incluso un breve manual de uso si el algoritmo es suficientemente extenso.
 Tenemos dos tipos de documentación en el desarrollo de algoritmos bien diseñados: a) Documentación externa: Incluye la escritura de información que es exterior al cuerpo del algoritmo. Puede incluir, además de todas las especificaciones detalladas, una explicación extensa del desarrollo del algoritmo y de las modificaciones sufridas. Deben añadirse igualmente descripciones detalladas del problema, de los módulos que lo componen, adjuntando un diagrama jerárquico del diseño descendente y por último un manual de usuario donde se explicará al cliente (o al profesor en su defecto) como debe usarse el programa.
 Esta documentación debe adjuntarse sólo en el caso de que los algoritmos sean suficientemente grandes, lo que se consideran aplicaciones informáticas de cierta envergadura, divididas en varios programas.
 b) Documentación interna: Incluye la escritura de información que se suministra con el cuerpo del algoritmo. Estará formada por comentarios, código autodocumentado e impresión agradable del texto del pseudocódigo.