You are on page 1of 9

4.- GENERALIDADES DE LOS ALGORITMOS Y PROGRAMAS INFORMATICOS.

El programador de computadoras es ante que nada una persona que resuelve problemas, por lo que para
llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y
sistemático. A la metodología necesaria para resolver problemas mediante programas se denomina
Metodología de la Programación. El eje central de esta metodología es el concepto, ya tratado, de algoritmo.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño
de algoritmos. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la
técnica de la programación. En esencia, la solución de un problema se puede expresar mediante un
algoritmo.

Características
de
los
Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.

Algoritmos:

Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.

Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea,
debe tener un numero finito de pasos.
La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de
cocina
citado
anteriormente
se
tendrá:
Entrada:
ingrediente
y
utensilios
empleados.
Proceso:
elaboración
de
la
receta
en
la
cocina.
Salida: terminación del plato (por ejemplo, cordero).
4.1.- CONCEPTO Y UTILIDAD DE LOS ALGORITMOS.
Ninguno de los dos algoritmos garantiza una solución óptima. Sin embargo, normalmente ambos dan
soluciones
buenas,
próximas
a
la
óptima.
Posibles mejoras: buscar heurísticas mejores; repetir la heurística 1 con varios orígenes; ó bien, a partir de la
solución del algoritmo intentar hacer modificaciones locales para mejorar esa solución.
4.2 RELACION ENTRE ALGORITMOS Y LOGICA DE PROGRAMACION.
Algunas consideraciones estilísticas pueden contribuir a mejor la calidad de los algoritmos (y programas)
mediante la reducción del número de errores que aparecen al desarrollar los. También influyen haciendo que
nuestro algoritmo resulte más fáciles de leer y entender para otras personas.
Los criterios de estilo pueden reflejarse en un conjunto de normas de estilo de codificación. Ello asegura que
tanto algoritmos como programa resulten legibles y puedan modificarse fácilmente en caso de necesidad.
Generalmente, estas normas de estilo se dirigen hacia aspectos como la forma de construir los nombres de
variables o tipo de datos que aparezcan., la tipografía seguida a la hora de escribir nombres de variables,
subprogramas, palabras claves, etc. El modo de encolumnar las distintas partes de un algoritmo para facilitar
su lectura y comprensión, y la normas sobre cómo y dónde deben de introducirse los comentarios.

Un algoritmo es mejor cuantos menos recursos consuma.DESCRIPCION DE LAS FORMAS DE REPRESENTACION ALGORITMICA. 4. etc. sin atenerse a ningún lenguaje de programación en especial.1. Su ejecución requiere unos recursos. Lo que se consigue: Resolver un problema de forma exacta. Memoria principal: Entradas/salidas a disco. procesadores. forma aproximada o algunos casos. Digamos que el pseudo código es una forma de diagramar un algoritmo para resolver un determinado problema. Un algoritmo es un conjunto de procedimientos que permiten resolver un problema. 4. Comunicaciones.3.1 PSEUDOCODIGOS. su facilidad de programarlo.4. Se trata de una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar. Criterio empresarial: Maximizar la eficiencia. fácil de entender. corto. etc. Recursos consumidos: Tiempo de ejecución. Eficiencia: Relación entre los recursos consumidos y los productos conseguidos. .3. de forma de tener una idea bien clara de lo que se necesita programar.1. robusto.3. Recursos consumidos: Ejemplo. Recursos De Computadores Y Complejidad Algoritmo: Conjunto de reglas para resolver un problema.. ¿Cuántos recursos de tiempo y memoria consume el siguiente algoritmo sencillo? i:= 0 a[n+1]:= x repetir i:= i + 1 hasta a[i] = x Respuesta: Depende. ESPECIFICACION ESTRUCTURADA DE PROCESOS DE YOURDON.

DESCRIPCION DE LAS REGLAS PARA LA ESTRUCTURA DE PSEUDOCODIGO.2. DIAGRAMA DE FLUJO .1.3. 4.3.2.1. 4.3.4.3. MINIESPECIFICACIONES.

4. no obstante. Finalmente. diagramas de flujo. diagramas de red del sistema de programa. Obsérvese que cada estructura permite incluir las anteriores. Los diagramas N-S permiten representar de forma sencilla los pasos que conforman un algoritmo y por su combinación de texto e imagen son muy fáciles de interpretar. La utilización adecuada e ingeniosa de las estructuras presentadas permite el diseño de algoritmos de aceptable nivel de complejidad. diagramas de flujo de programas.3 SIMBOLOGIA NASSI-SCHNE DERMAN. sino también desarrollar el pensamiento lógico para generar soluciones y esto se consigue mediante el desarrollo de ejercicios. es recomendable que quien se inicia en el diseño de algoritmos conozca otras técnicas como el pseudocódigo y el diagrama de flujo. .3. diagramas de los recursos del sistema 4. es menester anotar que el diseño de algoritmos no solo requiere conocer metodologías de representación.2. en el último ejemplo se ha utilizado todos los conceptos presentados en este documento. como se ha mostrado en los ejemplos.1 ESTANDARES DE DIAGRAMACION DE LA NORMA ANSI\ISO 5807-1985 Define los símbolos que se utilizarán en la documentación de procesamiento de información y da orientación sobre las convenciones tor su uso en diagramas de flujo de datos.2.3.

una detrás de otra. y que sean ejecutadas en ese orden)  condicional (es decir.2. o if/else o switch)  repetitiva (es decir. . Se trata de consideraciones del pasado. hacer una cosa varias veces.4. Entendemos que es un algoritmo propio aquel que cumple estas condiciones:  Tiene un único punto de entrada y un único punto de salida. es decir. El teorema de Böhm-Jacopini es un enunciado que data de los años 60. Básicamente. condiciones y bucles.4 SIMBOLOGIA BONH-JACOPINI. no contiene código muerto. sin necesidad de recurrir a saltos incondicionales. que no se ejecutará nunca. poner instrucciones en orden. en el que se prueba formalmente que cualquier algoritmo puede prescindir de saltos incondicionales. con bucles) Se define como algoritmo propio aquel que nos da unas ciertas garantías de calidad en su construcción. que hoy en día no tienen utilidad directa aunque su importancia histórica es indiscutible. hacer una cosa en función de una concidición -con estructuras como if. este teorema nos dice que: Todo algoritmo propio puede ser expresado en términos de sólo tres tipos de estructura:  secuencial (es decir.  Todas las sentencias son alcanzables. El teorema viene a decir que todo algoritmo bien construido se puede expresar siempre sólo con bloques secuenciales de instrucciones.3.

3. 1..Identificar las entradas. declaración de variables.Los símbolos se únen con líneas 3. siendo preciso y veraz en la búsqueda de la solución al problema.  El algoritmo debe producir al menos una salida o un efecto.Todos los símbolos pueden tener más de una línea de entrada 4.Se usan flechas para indicar el flujo de información 4.  No hay ambigüedades: cada sentencia tiene una única interpretación. No hay bucles infinitos..5 DESCRIPCION DE LAS REGLAS PARA LA CONSTRUCCION DE DIAGRAMAS DE FLUJO. sin ambigüedad.Se debe de escribir de arriba hacia abajo y de izquierda a derecha 2.1 EJEMPLO REPRESENTATIVO DE UN ALGORITMO Y DE SU CODIFICACION (PROGRAMA) EN UN LENGUAJE DE PROGRAMACION ESTRUCTURADA/PROCEDUAL.. 5.Los círculos de decisión pueden y deben tener más de una línea de flujo 5.2...Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. 2.Codificación del Algoritmo: Es la expresión en un lenguaje de programación de los pasos definidos en el algoritmo.  El algoritmo acaba tras un número finito de pasos. 3.. es decir...Ejecución y validación del programa por el computador.Análisis del problema.  Todos los posibles caminos llevan desde el punto de entrada al de salida... 1. 1. Todos los bucles terminan en un número finito de pasos.  Todas las sentencias del algoritmo deben poder realizarse de manera precisa en un tiempo finito. 4.4 CODIFICACION Y EJECUCION DE UN ALGORITMO INFORMATIVO. 4. ..4. 4. procesos y salidas del problema.Diseño del Algoritmo: Describe la secuencia ordenada de los pasos.

. 5. es decir. EDITORES DE CODIGO DE FUENTE. definidos y finitos. 3. 4. o cualquier otro programa que sea relevante en el proceso de desarrollo de software..Un algoritmo debe estar bien definido. .. Por lo que. y son únicamente editores de texto que pueden ser usados para editar código fuente. no ameritan ser llamados "editores de código fuente". 4. Puesto que el lenguaje humano es impreciso.Es un procedimiento completo para resolver un problema específico en un número "FINITO" de pasos. como resaltado de sintaxis. Si se sigue un algoritmo se debe terminar en algún momento. 3. 1. autocompletar y pareo de llaves.Es un método para resolver un problema mediante una serie de datos precisos. si se sigue la ejecución dos veces del mismo se debe obtener la misma secuencia lógica.Es una secuencia de pasos lógicamente relacionados entre sí a fin de obtener la solución a un problema planteado.4.Es una lista de instrucciones para efectuar paso a paso un proceso.2 ELEMENTOS DE UN AMBIENTE DE PROGRAMACION ESTRUCTURADA/PROCEDAL. es decir..2.. automatizan y facilitan la edición del código. cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen además a conjuntos especificados de objetos. en relación con las entradas. los cuales nos llevan a la solución de un problema específico.. hay que evitar toda ambigüedad al definir cada paso. Estos editores también proveen un modo conveniente de ejecutar un compilador. pueden ser cadenas de caracteres. 2. naturales. El algoritmo debe definirse de forma precisa para cada paso. Por ejemplo. seguidas en un orden lógico.Salida: El algoritmo tiene una o más salidas.3.. o sea. es decir.. un depurador. 4. etc. si no mejoran. necesarias para la descripción de las operaciones que llevan a la solución de un problema. Tienen características diseñadas exclusivamente para simplificar y acelerar la escritura de código fuente. ya sea matemático o de programación para un computador.. 4. 5. fraccionarios. si bien muchos editores de texto pueden ser usados para editar código fuente sin problemas.Una serie de instrucciones colocadas en cierta secuencia.4. un intérprete. enteros.Un algoritmo debe ser "FINITO". los algoritmos se expresan mediante un lenguaje formal.Conjunto "FINITO" de pasos o instrucciones. 6.Entrada: El algoritmo tendrá cero o más entradas. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretación por el computador.. debe tener un numero finito de pasos.

5. 4. que se colgará el programa. Los ejemplos incluyen memoria de acceso restringido y la división por cero .4.4.3 ESTRATEGIAS PARA CORRECCION DE ERRORES.4. cuando se desarrolla un programa.2 A TIEMPO DE EJECUCION. la traducción del código fuente en un archivo ejecutable. indicando cada uno un motivo de fallo. también llamado código objeto. La declaración de x /y es correcta sintácticamente .Algunos editores de código fuente verifican la sintaxis a medida que el programador escribe. 4. En programación.5. A continuación se puede comprobar el valor disponible en la variable global para determinar el motivo que hizo fallar a la función. pero si y contiene el valor 0 en tiempo de ejecución . 4. alertando inmediatamente sobre los problemas de sintaxis que puedan surgir realizan ambas tareas.4. Por ejemplo. Tiene lugar una sola vez. Si el compilador produce correctamente un archivo ejecutable desde el código fuente . Los errores de ejecución catastróficos ocasionan un programa para bloquear y detener la ejecución antes de tiempo. ya que por lo general ocurren solamente bajo ciertas condiciones. Los códigos de error se identifican por un número. Ocurren mientras un programa se ejecuta. El compilador generalmente señalar un error de tiempo de compilación y. siempre y cuando.1. En una aplicación que use códigos de error. una función suele establecer la variable global al código de error indicando el motivo del fallo y devolver un manipulador de fichero no válido. o bien explicar o dar pistas sobre cómo solucionarlos .5 ERRORES DE CODIGO.5. el propio compilador no detecte ningún error en dicho código fuente. el programa no contiene errores de compilación . Un programador puede detectar errores en tiempo de compilación con bastante facilidad porque son sintáctico más que lógico. Los códigos de error suelen almacenarse en variables globales con nombres como errno .4. COMPILACION DE UN PROGRAMA. Un programador puede encontrar la captura de los errores de ejecución catastróficos difíciles .4. A TIEMPO DE COMPILACION. 4. cada función suele tener un valor de retorno que indica que se produjo un fallo. en la fase de codificación se llevará a cabo la compilación. para indicar que falló la apertura de un archivo. . 4. El archivo ejecutable puede iniciar runtime cualquier número de veces sin tener que volver a tiempo de compilación a menos que el programa requiere cambios. que consiste en que el compilador traducirá el codigo fuente a codigo máquina.

5.Escritura de programa fuente con un editor. Cuando se utiliza este método para generar un mensaje..Compilar el programa. 6..4.7 EJECUCION DE UN PROGRAMA. 1. puede utilizar los métodos de la clase para producir los mensajes que le ayudan a supervisar la secuencia de ejecución del programa.el enlazador (Linker) obtiene el programa ejecutable. o para proporcionar información de medición del rendimiento.6 DEPURACION Y SEGUIMIENTO DE CODIGO. El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador tiene los siguientes pasos. 4.se ejecuta el programa y.-Intoducir el programa fuente en memoria. cada mensaje aparece en una línea independiente en la ventana resultados. Cuando se ejecuta el programa. los mensajes que produce aparecen en la ventana de resultados del entorno de desarrollo integrado.-Verificar y corregir errores de compilación. 3.Obtención del programa objeto. para detectar anomalías. El código de ejemplo utiliza los métodos para producir un mensaje seguido de un terminador de línea.. 4.. 7. Un programa en ejecución suele llamarse también proceso. De forma predeterminada..4.4. se tendrá la salida del programa. 2. si no existen errores. .