martes, 27 de abril de 2010

EL ALGORITMO

Implementación de algoritmos

En programación, los algoritmos se implementan en forma de sentencias en algún lenguaje de programación. De esta manera, la forma de escribir los algoritmos depende del lenguaje de programación, y del paradigma usado. Estos son los algoritmos que pueden ser interpretados por una computadora y así ser ejecutados.

Los algoritmos también pueden representarse gráficamente empleando diagramas de flujo o formas similares. De esta manera, son fácilmente comprensibles, especialmente para personas que no son programadores. También, de esta manera, los algoritmos son más "universales", pues no dependen de un lenguaje de programación específico.


Los algoritmos también pueden escribirse en pseudocódigo, lo que también los hace fáciles de entender.

Se hacen intentos para que las computadoras interpreten y ejecuten los diagramas de flujo y los pseudocódigos, pero no logran la flexibilidad, potencia y velocidad de los algoritmos puramente escritos en un lenguaje de programación específico.

Un algoritmo también puede expresarse en lenguaje natural, aunque esto puede traer ambigüedades e interpretaciones erróneas (la ambigüedad es propia del lenguaje humano).

Algoritmos en programación


Un programa de computadora es un algoritmo que le dice a la computadora los pasos específicos para llevar acabo una tarea. Los algoritmos son rigurosamente definidos para que la computadora pueda interpretarlos. El orden en que se ejecuta cada uno de los pasos que constituyen un algoritmo es fundamental. El orden más básico es de arriba hacia abajo, ejecutándose una instrucción tras otra de un código. Pero un algoritmo puede variar en su flujo u orden de ejecución de pasos dependiendo de los valores de inicio o que entran durante su ejecución. El flujo es manejado por las estructuras de control.

Algunos autores consideran que el flujo de ejecución de un algoritmo debe detenerse correctamente alguna vez, y que esto forma parte de la definición de algoritmo. En tanto, otros no lo consideran así.

Algoritmos predefinidos

Existen algoritmos ya definidos matemáticamente que son muy eficientes, como los algoritmos de búsqueda o el algoritmo de Dijkstra, y suelen ser tomados por otros programadores para utilizarlos dentro de sus propios códigos.

http://www.youtube.com/watch?v=aNnPzcXVh_4&feature=PlayList&p=1A289BFAD9F4C5B8&playnext_from=PL&playnext=1&index=30

EL PROCESO DE PROGRAMACION

FASES DEL PROCESO DE LA Programación

1. Definición del problema

Requiere que el problema sea definido y comprendido claramente para que pueda ser analizado con todo detalle .

2. Análisis del problema

El propósito del análisis de un problema es ayudar al programador para llegar a una cierta 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, proceso y salida sean descritas con detalles.

Entrada, son todos los datos que hay que ingresar para la resolución del problema.

Proceso, son los diferentes procedimientos en los cuales usare los datos proporcionados por el usuario en el paso anterior para resolver el problema.

Salida, la resolución del problema.

Una buena definición del problema, junto con una descripción detallada de las especificaciones de entrada y salida, son los requisitos mas 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 . la segunda lectura deberá servir para responder a las preguntas:

¿Qué información debe proporcionar la resolución del problema?

¿Qué datos se necesitan para resolver el problema?

La respuesta a la primera pregunta indicara los resultados deseados o las salidas del problema. La respuesta a la segunda pregunta indicara que datos proporcionan o las entradas del problema.

En esta fase debemos aprender a analizar la documentación de la empresa , investigar, observar todo lo que rodea el problema.


3. Diseño de la solución

Una computadora no tiene la capacidad para solucionar mas que cuanto 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.

La información proporcionada al algoritmo constituye su entrada y la información producida por el algoritmo constituye su salida.

Los problemas complejos se pueden resolver mas eficazmente con la computadora cuando se rompen en subproblemas que sean mas fáciles de solucionar que el original. La descomposición del problema original en subproblemas mas simples y a continuación dividir estos subproblemas en otros mas simples que puedan ser implementados para su solución en la computadora de denomina diseño descendente (top - down design ).

Es presiso representar el algoritmo mediante una determinada herramienta de programación: diagramas de flujo, pseudocódigo o diagramas N - S.


4. Codificación

Es el algoritmo traspasado a la computadora a través de un lenguaje de programación,

debe ser escrito de acuerdo a las reglas gramaticales o sintaxis del mismo.

Generamos un algoritmo el cual se denomina código, y al pasarlo a un lenguaje de programación se le llama código fuente.


5. 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 del ser compilado.


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


7. Depuración

Corregir los errores encontrados en la etapa anterior, si hubiese algún error se tiene que regresar hasta la etapa que sea necesaria para que la solución sea la que el usuario requiere.


8. Documentación

Son todos los comentarios, referencias desde que se dio el problema hasta que se encontró la solución.

a) documentación interna, es el encabezado, descripción, declaración del problema, son todos los comentarios que puedan llegar a servir dentro del código fuente.

b) documentación externa, son los manuales que se hacen para una mejor ejecución del programa, ahí se explicara como usar el programa.


9. Capacitación

Una ves que tenemos lo manuales viene la capacitación de usuarios, como no a todos les interesa los mismo porque hay diferentes tipos de usuarios, se tienen que dividir de acuerdo a sus conveniencias.


10. Implantación o implementación del sistema

Hay diferentes formas de implementar el sistema:

Depende del tamaño del sistema

Si existiera un sistema se tiene que poner el nuevo y quitar el que ya estaba.

Trabajar primero con el sistema viejo(si existe), y después empezar a trabajar con el nuevo.

Sistemas implantados por regiones.

Trabajar con el sistema viejo (si existe) y con el sistema nuevo simultáneamente después quitar el sistema viejo.

Ir quitando el sistema viejo(si existe) poco a poco e ir implantando el sistema nuevo.


11. 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 la condiciones sean favorables alrededor del sistema.

Fases de la programación:

1.- ANALISIS: Cuando se tiene y piensa la idea o problema a ejecutar.

2.- DISEÑO: Se plantea un algoritmo con los pasos a dibujar o realizarse.

3.- IMPLEMENTACION: Los pasos de algoritmo se transforma en un código pascal y se plasman en el programa

4.- PRUEBAS: Se corre el programa y se registra su efectividad.

5.- DEPURACION: después de haber corrido el programa se hacen las correcciones necesarias.

6.- RETROALIMENTACION Y LIBERACION: Después de haber corregido los errores se regresa al paso 4 en caso de haber existido

CARACTERISTICAS DE UN BUEN PROGRAMA

Un buen programa debe ser rápido: Puede tener o no un código optimizado, pero el usuario final debe sentir que para lo que usa el programa el tiempo que tarda en hacer las cosas es normal, un buen ejemplo es el reproductor multimedia Songbird, que puede ser excelente pero por lo que tarda en iniciar para los que solo quieren escuchar una canción lo convierten en una contra que le cava la tumba. Otro buen ejemplo son los visualizadores de imágenes, que deben ser instantáneos al abrir (como Irfanview). Por el otro lado programas profesionales como Autocad, 3Dstudio y demás pueden tardarse otro tiempo en abrir, para ellos tenemos otras pretensiones.

Un buen programa debe ser estable: Una fija es la confiabilidad que debe generar un programa, una buena aplicación no te debe dejar a mitad del camino con todo el trabajo hecho en un procesador de textos, con una cita a punto de concretarse mediante el programa de chat ni con una presentación frustrada delante de decenas de colegas. Y si falla (porque nade es perfecto en esta vida) un buen software debe tener tantas opciones de recuperación como sean posibles (recuperar últimas sesiones, mensajes offline, abrir el último archivo en el lugar donde quedamos, entre otras).


Un buen programa debe ser usable e intuitivo: De nada sirve que programes algo con miles opciones si no las colocas de una manera de que el usuario pueda encontrarlas y utilizarlas. Eso no quiere decir que las miles de opciones estén a la vista como las viejas versiones de Word que mareaban al pobre usuario de oficina. Lo ideal es presentar de una manera accesible los menúes frecuentes y luego juntar todos los demás en un menú avanzado para que, además, los usuarios que se inician con el software no sufran frustraciones tempranas y se vayan adecuando al mismo de una manera paulatina. El botón office fue uno de los primeros ejemplos de ello, que ahora sigue con todos los programas que usan Ribbon, el menú configuración avanzada de NOD es otro. Picasa es un ejemplo genial de usabilidad, tiene de todo, para todo, y se encuentra muy fácil.

Un buen programa debe actualizarse silenciosamente: No hay nada más placentero que ver que Mozilla nos avisa que actualizó a la última versión y que se instalará en el próximo reinicio. Este mismo programa a lo sumo requiere la acción del usuario para actualizar complementos de vez en cuando y es casi el extremo de programas molestísimos como Adobe Reader o Real Player que le preguntan al usuario hasta la hora.

Un buen programa debe ser inteligente: Quizás este punto parezca un poco pretencioso, pero hace unos días estaba hablando con un amigo de algunas características que tiene JDownloader, entre ellas el hecho de que si usas un password para descomprimir un archivo descargado, luego, al bajar otros archivos y en lugar de pedir passwords primero prueba descomprimirlo con los passwords anteriormente utilizados. Esto que parece una tontería (y debe ser sencillo de implementar) es una genial muestra de un programa que va aprendiendo a medida que uno lo va utilizando

lunes, 26 de abril de 2010

LA PROGRAMACION

La Programación es aquella actividad por la cual se crean programas para computadoras, tales programas pueden ser códigos fuentes interpretados (como por ejemplo scripts en BASH) o códigos fuentes que serán compilados (como por ejemplo programas en C++) hacia lenguajes binarios y ejecutados desde el kernel del sistema operativo.



No es normal escribir un programa en lenguaje de máquina dado que es muy difícil, en cambio, se utilizan lenguajes de programación inteligibles por un ser humano. No es necesario que un programa sea escrito en un sólo lenguaje, puede poseer diversas partes escritas en distintos lenguajes de programación, como por ejemplo C, C++ y Asm.


La diferencia entre algoritmo y programa es que este último implementa, en general, traduciendo a un lenguaje de programación en concreto, un algoritmo, el cual es una secuencia finita, ordenada y no ambigua de instrucciones que resuelven determinado problema. Esta secuencia de instrucciones luego podrá ser repetida cuantas veces sea necesario, dentro del mismo programa, o con la ejecución del programa en varias oportunidades.

Los desarrolladores de programas aprenden técnicas de programación, como por ejemplo la división del problema en partes menores, creando módulos para reducir la complejidad algorítmica global. Entre las diferentes técnicas existentes podemos mencionar la orientada a objetos, la modular, la estructurada y la lineal, buscando normalmente mejorar el proceso de creación, expansión y mantenimiento.





¿QUE ES EL LENGUAJE DE PROGRAMACION?

Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado de un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.


También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular

  • Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa)
  • Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
  • Prueba y depuración del programa.
  • Desarrollo de la documentación.

Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo el HTML. (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación sino un conjunto de instrucciones que permiten diseñar el contenido y el texto de los documentos)

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción del programa de forma colaborativa












jueves, 22 de abril de 2010

¿QUE ES UN PROGRAMA?

  • Un programa de computadora es un conjunto de instrucciones que la CPU de una computadora puede entender y ejecutar.
  • Los programadores crean programas al escribir declaraciones en un editor.
  • Todo el conjunto de comandos, representados por las declaraciones, se almacena en un archivo y se le denomina código fuentedel programa.
  • La compilación es el proceso mediante el cual se convierte un código fuente a código objeto almacenado en un archivo objeto y es el punto intermedio en la creación de un archivo ejecutable.
  • Un enlazador acomoda todos los archivos objeto para formar un archivo ejecutable.




  • La mayoría de los lenguajes de cómputo tienen variables, que son partes de la memoria de la computadora que un programa reserva para su propio uso.
  • Los programadores deben declarar las variables en el programa para asignar así la cantidad de memoria requerida y asociar un nombre con la memoria.
  • Entre los tipos de variables se incluyen la variable de carácter, de número entero grande, flotante y de cadena.
  • Los programas rara vez ejecutan una secuencia individual de comandos de principio a fin; en vez de hacer eso usan subrutinas, ramificaciones condicionales y ciclos iterativos como construcciones de flujo de control.
  • Un algoritmo es otro tipo de estructura de programa que usa implantaciones matemáticas, estadísticas o de procedimiento, en vez del flujo de control.

EL COMPUTADOR

La computadora le sirve al hombre como una valiosa herramienta para realizar y simplificar muchas de sus actividades. En sí es un dispositivo electrónico capaz de interpretar y ejecutar los comandos programados para realizar en forma general las funciones de:
Operaciones de entrada al ser receptora de información.
Operaciones de cálculo, lógica y almacenamiento.







En la actualidad las computadoras tienen aplicaciones más prácticas, porque sirve no solamente para Computar y calcular, sino para realizar múltiples procesos sobre los datos proporcionados, tales como clasificar u ordenar, seleccionar, corregir y automatizar, entre otros, por estos motivos en Europa su nombre que más común es el de ordenador.
Operaciones de salida al proporcionar resultados de las operaciones antecedentes.