Algoritmos y Programación
Contenido ................................................................................................................................................ 1 1. Lenguaje de Programación ................................................................................................. 4 1.1. Lenguaje de Bajo Nivel .................................................................................................... 4 1.2. Lenguaje de Alto Nivel ..................................................................................................... 5 2. Algoritmo ............................................................................................................................ 5 2.1. Características de los Algoritmos ................................................................................... 5 3. Etapas para la solución de problemas por computador. ................................................... 5 4. Estructura Generada de un Programa. ............................................................................... 6 4.1. Análisis del problema. ..................................................................................................... 6 4.2. Diseño de un algoritmo. .................................................................................................. 6 4.2.1. Prueba del Algoritmo.................................................................................................... 6 4.3. Codificación de un algoritmo........................................................................................... 6 4.4. Edición, ejecución y prueba del programa. ..................................................................... 6 4.5. Uso y Mantenimiento (Soporte) del programa. .............................................................. 6 5. Programa ............................................................................................................................ 7 5.1. Características del Software ............................................................................................ 7 6. Aplicaciones del Software................................................................................................... 7 6.1. Software de Sistemas ...................................................................................................... 7 6.2. Software de Tiempo Real ................................................................................................ 7 6.3. Software de Gestión ........................................................................................................ 8 6.4. Software de Ingeniería y Científico ................................................................................. 8 6.5. Software Empotrado ....................................................................................................... 8 6.6. Software de Computadores Personales .......................................................................... 8 6.7. Software de Inteligencia Artificial ................................................................................... 8 7. Tipos de Programación ....................................................................................................... 8 7.1. Programación Secuencial ................................................................................................ 9 7.2. Programación Estructurada ............................................................................................. 9 7.3. Programación Orientada a Objetos ................................................................................. 9 7.4. Programación Lógica ..................................................................................................... 10
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
2
Algoritmos y Programación
8. Representación de algoritmos por medio de Gráficas Utilizadas en el Análisis de la Programación. ...................................................................................................................... 10 8.1. Diagramas de Flujo u Organigramas.............................................................................. 10 8.2. Diagramas de Flujo del Sistema ..................................................................................... 11 8.2.1. Símbolos Utilizados en los Diagramas de Sistemas .................................................... 12 Símbolo ............................................................................................................................. 12 Función ............................................................................................................................. 12 Programa.......................................................................................................................... 13 Teclado ............................................................................................................................. 13 8.3. Diagramas de Bloques, Diagramas de Flujo de Detalles / Macro Procesos o Bloque ... 14 8.3.1. Símbolos Utilizados en los Diagramas de Flujo de Detalles / Bloque ........................ 14 Principales Símbolos ............................................................................................................. 14 8.4. Operaciones Aritméticas ............................................................................................... 15 8.4.1. Operadores de Relación ............................................................................................. 15 .............................................................................................................................................. 17 8.5. Diagrama de Flujo Estructurado .................................................................................... 18 8.6. Componentes de un Algoritmo ..................................................................................... 21 8.6.1. Reglas para la Construcción de Diagramas de Flujo ................................................... 21 8.6.2. Comprobación de Diagramas ..................................................................................... 22
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 3
Algoritmos y Programación
1. Lenguaje de Programación Los lenguajes de programación son un conjunto de reglas, herramientas y condiciones que nos permiten crear programas o aplicaciones dentro de una computadora. Estos programas son los que nos permiten ordenar distintas acciones a la computadora en su “idioma” comprensible por ella. Como su nombre lo indica, un lenguaje tiene su parte sintáctica y su parte semántica. ¿Qué quiere decir esto? Que todo lenguaje de programación posee reglas acerca de cómo se deben escribir las sentencias y de qué forma. A su vez, los lenguajes de programación se dividen en tres grandes grupos: los lenguajes de máquina, los lenguajes de bajo nivel y los de alto nivel. Los que pasaremos a explicar a continuación: Los lenguajes de máquina son los que entiende una computadora sin la necesidad de realizar ninguna conversión. Escribirlos resulta extremadamente difícil para un programador convencional. Hoy en día, nadie programa en éste lenguaje, pero como es necesario para que la computadora entienda lo que tiene que hacer, existen programas que se encargan de transformar el código comprensible por un programador en código comprensible por una computadora. Las instrucciones en este tipo de lenguaje se componen de la unidad de memoria más pequeña que existe dentro de una computadora, que se llama bit. Cada una de estas unidades puede tener sólo dos valores posibles: 1 o 0. Veamos algunos ejemplos de este tipo de lenguaje: 0101 1001 0000 1101 0000 1111 1010 1011 Para facilitar la tarea del programador, se han diseñado otro tipo de lenguajes, que son más comprensibles que el de máquina. Esto son el de bajo nivel y el de alto nivel. 1.1. Lenguaje de Bajo Nivel Los lenguajes de bajo nivel, también llamados ensambladores, son aquellos cuyas sentencias están formadas por códigos nemotécnicos (abreviaturas de palabras inglesas). Son lenguajes que, por más complejos que sean, resultan mucho más comprensibles que los lenguajes de máquina. A continuación vemos un ejemplo de código para este tipo de lenguaje: ... inicio: mov cx,25 ini: mov ah,6 mov dl,13 int 21h mov dl,10 int 21h loop ini mov ah,9 lea dx,nombre push cs pop ds int 21h …
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
4
Algoritmos y Programación
Estos lenguajes son, además, dependientes de la arquitectura de cada procesador, ya que cada procesador ofrece un conjunto de instrucciones distinto para trabajar en este nivel de programación. Una vez escrito el programa en este lenguaje, se necesita otro llamado programa ensamblador, para que traduzca las sentencias en instrucciones comprensibles por la máquina. 1.2. Lenguaje de Alto Nivel Los lenguajes de alto nivel son aquellos que poseen sentencias formadas por palabras similares a las de los lenguajes humanos. Por lo tanto, resulta mucho más sencillo escribir un programa en un lenguaje de alto nivel para luego traducirlo en código comprensible para una computadora. Algunos ejemplos de este tipo de lenguajes son: Pascal, Delphi, Cobol, Foxpro, JAVA y la mayoría de los lenguajes visuales, como Visual Basic, Visual Foxpro, etc. Además, podemos decir que, dentro de este conjunto de lenguajes de programación, algunos son de más alto nivel que otros, pero, en general, todos entran en esta categoría. En el caso de C, muchos autores opinan que este lenguaje es de nivel medio, o sea, que posee una escritura sencilla y comprensible por los programadores, pero a la vez ofrece una potente y variada gama de posibilidades para realizar miles de tareas con una computadora. Se puede decir que se puede hacer casi lo mismo que con un lenguaje ensamblador. Observe que es posible insertar código assembler dentro del código de C. En conclusión, C pertenece a un nivel intermedio entre un lenguaje de bajo nivel y uno de alto nivel. 2. Algoritmo Definición: Serie de operaciones detalladas y no ambiguas, a ejecutar paso a paso y que conduce a la resolución de un problema. Definición: Conjunto de reglas para resolver una cierta clase de problemas o una forma de describir la solución del mismo, cada una de las acciones de las que consta un algoritmo se llamará sentencia, y estas deben estar escritas en términos de un cierto lenguaje de comprensible para el ejecutor (máquina). 2.1. Características de los Algoritmos 2.1.1. Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. 2.2.2. Un algoritmo debe ser definido, es decir, si se sigue un algoritmo dos veces se debe obtener el mismo resultado. 2.2.3. Un algoritmo debe ser finito, es decir, si se sigue un algoritmo se debe terminar en algún momento. 3. Etapas para la solución de problemas por computador. 3.1. Análisis del problema. 3.2. Diseño de un algoritmo. 3.3. Codificación de un algoritmo. T.N.S. en Gestión de Sistemas Informáticos y Conectividad 5
Algoritmos y Programación
3.4. Edición, ejecución y prueba del programa. 3.5. Mantenimiento (Soporte) del programa. 4. Estructura Generada de un Programa. 4.1. Análisis del problema. Comprende la descripción y la definición del problema. Se debe decir exactamente lo que el programa debe hacer, qué datos debe procesar, y qué información producirá. 4.2. Diseño de un algoritmo. Comprende el desarrollo de la secuencia lógica de pasos a seguir para la resolución del problema. 4.2.1. Prueba del Algoritmo Seguir los pasos del algoritmo y ver si resuelve realmente el problema, el algoritmo de resolución suele expresarse previo a la codificación en el lenguaje de programación, en alguna de las siguientes representaciones: a) Pseudocódigo b) Diagrama de flujo c) Diagrama Estructurado o Diagrama de Chopin (Diagramas N-S) 4.3. Codificación de un algoritmo. Conversión del algoritmo en un programa escrito en algún lenguaje de programación. 4.4. Edición, ejecución y prueba del programa. Introducir el programa en la memoria, ejecutarlo y probar sus resultados corrigiendo los errores hasta su puesta a punto final, es decir: Depurar el programa Verificar el programa Documentar el programa 4.5. Uso y Mantenimiento (Soporte) del programa. El programador debe mantener el programa corrigiendo cualquier error o introduciendo las modificaciones necesarias para que el programa continúe funcionando durante todo el tiempo de su vida activa.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
6
Algoritmos y Programación
5. Programa Definición: El conjunto formado por la representación de datos utilizados y el algoritmo en si, se conoce con el nombre de programa. Definición: Un programa es la descripción paso a paso de un proceso en un cierto lenguaje de programación. Definición: Secuencia de acciones entendibles por la computadora y que conduce a realizar una tarea determinada y el correcto tratamiento de los datos. Los programas constan de una serie de sentencias y estas a su vez de instrucciones que son las acciones concretas que debe realizar la máquina. 5.1. Características del Software El software es un elemento lógico en vez de físico del sistema. 5.1.1. El software es desarrollado no fabricado en un sentido clásico. Aunque existen algunas similitudes entre el desarrollo del software y la construcción del hardware, las dos actividades fundamentalmente diferentes. En ambas actividades la buena calidad se adquiere mediante un buen diseño, pero la fase de construcción del hardware puede producir problemas de calidad que no existen en el software, es decir, ambas actividades requieren la construcción de un producto pero los métodos son diferentes. 5.1.2. El software no se rompe pero se deteriora. Durante su vida el software sufre cambios (mantenimiento). Conforme se hacen los cambios, es probable que s introduzcan nuevos defectos. 5.1.3. La mayoría de los software se construye a medida en vez de ensamblando componentes existentes. Con unas cuantas excepciones, no existen catálogos para componentes de software. Es posible pedir programas ya hechos pero sólo como una unidad completa común, no como componentes que pueden ensamblarse con nuevos programas. 6. Aplicaciones del Software El software puede aplicarse en cualquier situación en la que se haya definido previamente un conjunto finito de pasos, es decir, un algoritmo. Las siguientes áreas indican la amplitud de las posibles aplicaciones: 6.1. Software de Sistemas El software de sistemas es una colección de programas escritos para servir a otros programas, como por ejemplo compiladores, editores, utilidades de gestión de archivos, etc. 6.2. Software de Tiempo Real El software que mide analiza y controla sucesos del medio real conforme ocurre se llama de tiempo real. Los elementos del software de tiempo real incluye una componente de acumulación de datos que recolecta y formatea la información de un entorno externo, una componente de T.N.S. en Gestión de Sistemas Informáticos y Conectividad 7
Algoritmos y Programación
análisis que transforma la información según requiera la información, una componente de control – salida que responda al entorno externo de una componente de monitorización que coordina a todos los demás componentes de forma que pueda mantenerse la respuesta en tiempo real. 6.3. Software de Gestión El procesamiento de información comercial constituye la mayor d las áreas de aplicación del software por ejemplo nóminas, cuentas de haberes y deberes, inventarios etc. Las aplicaciones en esta área reestructuran los datos existentes en orden a facilitar las operaciones comerciales y gestionar la toma de decisiones. 6.4. Software de Ingeniería y Científico Este se ha caracterizado por los algoritmos de manejo de números. Las aplicaciones desde la vulcanología hasta la astronomía, desde el análisis de la presión a la dinámica orbital de los cohetes espaciales y desde la biología molecular hasta la fabricación automática. 6.5. Software Empotrado Este software reside en memoria de sólo lectura y se utiliza para controlar productos y sistemas de mercados industriales y de consumidores. El software empotrado puede ejecutar funciones muy limitadas, por ejemplo el control de las teclas de un horno microondas, funciones digitales en un auto tales como el control de la gasolina. 6.6. Software de Computadores Personales El procesamiento de palabras, las hojas de cálculo, los gráficos por computadora, juegos gestión de bases de datos, aplicaciones financieras comerciales y personales, redes externas o acceso a base de datos son unos cuantos de las cientos de aplicaciones. 6.7. Software de Inteligencia Artificial El software de Inteligencia Artificial hace uso de algoritmos no numéricos para resolver problemas complejos que no son adecuados para el cálculo o análisis directo. Actualmente el área más activa de la Inteligencia Artificial es la de los Sistemas Expertos también llamados Sistemas Basados en el Conocimiento. Otras áreas de aplicación par el software de inteligencia artificial es el reconocimiento de patrones (imágenes y voces) prueba de teoremas y juegos.
7. Tipos de Programación No sólo existen varios tipos de Lenguajes de programación, sino que también podemos encontrar distintas formas de programar una aplicación. Hay diversos paradigmas que nos permiten encontrar una solución más adecuada a nuestros problemas. La idea es que el programador los conozca y sepa seleccionar el adecuado para cada situación particular. Lo que es verdad es que para cada paradigma conviene utilizar ciertos programas de programación, y no cualquiera. Esto se debe a que la mayoría de los lenguajes fueron creados para ser utilizados en determinados ambientes de programación.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
8
Algoritmos y Programación
A continuación veremos las formas de programar más conocidas y utilizadas en la actualidad.
7.1. Programación Secuencial Este tipo de programas se basa en la creación de programas a partir de un conjunto de sentencias escritas en forma secuencial y cuya ejecución sigue dicha secuencia. Aquí se utiliza la secuencia como goto o similar para realizar un bifurcación en la ejecución del programa hacia una etiqueta determinada. Una etiqueta es una marca en el código de un programa para que sea referenciado en algún momento de su ejecución. Algunos lenguajes que se utilizan para este tipo de programación son Basic, Assembler, Fortram, y COBOL entre otros. 7.2. Programación Estructurada La programación estructurada es una de las más conocidas y antiguas que existen. Sus fundamentos los impulsó Edsgar Dijkstra hace ya mucho tiempo. Hoy en día, más allá de que nuevos tipos de programación están copando el mercado, la programación estructurada perdura en el fondo de los leguajes modernos. Este tipo de programación se basa en la modularidad de los programas. Esto quiere decir que los programas se dividen en módulos más pequeños, y cada uno realiza una tarea específica. Así, la complejidad de un programa determinado también se ve reducida al dividir sus tareas, que, en su conjunto, permiten la resolución de éste. Los programas para éste tipo de programación poseen un procedimiento central, que es el encargado de llamar y controlar el correcto funcionamiento de cada módulo que compone la aplicación. La programación estructurada hace uso de estructuras de control básicas: secuencial, repetición y selección. Además, no permite el uso de sentencias como goto o similares que produzcan bifurcaciones en la ejecución de las sentencias de un programa. Los lenguajes que s utilizan en esta programación son C, Pascal, entre otros. 7.3. Programación Orientada a Objetos La Programación Orientada a Objetos (POO) es una forma de estructurar un programa sobre la base de objetos. Cada elemento o componente en un programa que se basa en esta técnica es concebido como un objeto que tiene propiedades y métodos. La ejecución de un programa depende pura y exclusivamente de una interacción de los objetos que lo componen. Las propiedades y los métodos de los objetos se especifican en su clase. Una clase de objeto vendría a ser el molde de cada instancia particular del objeto. Por lo tanto, cuando uno programa una aplicación orientada a objetos, define clases y luego crea las instancias de objetos a través de esas clases para que interaccionen entre sí.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 9
Algoritmos y Programación
Existen otros conceptos importantes sobre objetos, que son la herencia y el polimorfismo. Los lenguajes que se utilizan en este tipo de programación son muchos, pero los más importantes hoy en día son: JAVA, C++, Delphi, Smalltalk y la gran mayoría de los lenguajes de la nueva plataforma de Microsoft .NET, entre los cuales podemos encontrar Visual Basic.NET, C# y ASP.NET 7.4. Programación Lógica La programación lógica es una forma de programar donde lo más importante es definir un conjunto de hechos, que se conocen con anterioridad, y un conjunto de reglas que nos definen las distintas relaciones que existen entre los componentes del programa. Estos hechos y reglas conforman lo que se llama la base del conocimiento. La programación lógica utiliza lenguajes de alto nivel que se asemejan muchos a los lenguajes humanos. Una de las utilidades más importantes de ésta técnica de programación es la inteligencia artificial. Uno de los lenguajes que se utilizan para éste tipo de desarrollos es Prolog, un lenguaje de programación lógica antiguo pero potente.. También se usa C, que provee más velocidad de procesamiento. Por lo general, este tipo de programación hace uso de algoritmos recursivos.
8. Representación de algoritmos por medio de Gráficas Utilizadas en el Análisis de la Programación. En la etapa previa a la codificación del algoritmo se realiza una representación gráfica clara y detallada que refleje la secuencia en que deben ser ejecutadas las diferentes operaciones por la máquina. Estas representaciones gráficas son las herramientas utilizadas en el análisis de la programación. Se clasifican en tres grandes grupos: Diagramas de Flujo u Organigramas Pseudocódigo Tablas de Decisión 8.1. Diagramas de Flujo u Organigramas Un diagrama de programación es la representación gráfica de los procedimientos y de la secuencia u orden en que deben ejecutarse. Deben ser independientes del lenguaje de programación que se vaya a utilizar. Se pueden considerar tres tipos fundamentales: a) Diagramas del Sistema o de Configuración. Estos son diagramas destinados a describir el flujo de información entre los distintos soportes físicos de un sistema informático. Reflejan las operaciones normales para el desarrollo del proceso que realizan los componentes utilizados en un programa.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
10
Algoritmos y Programación
b) Diagramas de Macro Procesos o Bloques. Representan la estructura a través de módulos o bloques que se han realizado del problema a resolver. Incluye también el flujo de información entre los diversos módulos, así como e orden de ejecución de los mismos. Estos diagramas están relacionados con el proceso. c) Diagrama de Detalle u Ordinograma. Son las órdenes en secuencia que se deben dar a la máquina para la resolución del problema. Debe mostrar las operaciones que realiza un programa con el detalle necesario para que una vez confeccionados se pueda realizar la etapa de codificación. 8.2. Diagramas de Flujo del Sistema Los símbolos utilizados sirven para representar operaciones manuales y automáticas con diferentes dispositivos del sistema Informático
los
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 11
Algoritmos y Programación
8.2.1. Símbolos Utilizados en los Diagramas de Sistemas
Símbolo
Función Tarjeta perforada.
Cinta perforada (lectora / perforadora).
Lectora de documentos ópticos / impresora de documentos ópticos. Cinta magnética / lectora / grabadora de cinta magnética. Disco magnético (lectora o grabadora de un fichero almacenado en disco). Pantalla / CRT ( Salida de datos a través de pantalla ). Almacenamiento de datos en línea.
Impresora (Salida de datos en forma impresa).
Terminal o consola (Introducción manual de datos desde el teclado o consola del operador). Dirección del proceso o flujo de datos.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
12
Algoritmos y Programaciรณn
Ejemplo: Una aplicaciรณn consiste en la emisiรณn de facturas a partir de los datos introducidos por teclado y los datos del cliente almacenados en un fichero de disco. La factura se debe presentar en pantalla y una vez dada la conformidad, escribirla en impresora.
Teclado
Programa
Pantalla
Impresora
Impresora Almacenamiento
T.N.S. en Gestiรณn de Sistemas Informรกticos y Conectividad 13
Algoritmos y Programación
8.3. Diagramas de Bloques, Diagramas de Flujo de Detalles / Macro Procesos o Bloque Los Ordinogramas o Diagramas de Flujo de Detalle y de Macroprocesos o Bloque deben mostrar las operaciones que realiza un programa con el detalle necesario para que una vez confeccionados se pueda realizar la etapa siguiente de la programación ( la codificación). Para lenguajes tales como COBOL es suficiente representar únicamente los grandes bloques de tratamiento de entrada / salida, proceso y decisión sin tener que detallar las operaciones elementales. 8.3.1. Símbolos Utilizados en los Diagramas de Flujo de Detalles / Bloque Principales Símbolos
Terminal ( representa el comienzo “Inicio” y final “Fin”) Entrada / Salida (Cualquier tipo de introducción de datos en la memoria desde los periféricos, “Entrada” o registro de la información procesada en un periférico ) Proceso ( Cualquier tipo de operación definida que pueda originar cambio de valor, formato o posición de la información almacenados en memoria: operaciones aritméticas, de transferencia de datos, etc.) Conector ( Sirve par enlazar dos partes cualesquiera de un organigrama a través de un conector de salida y otro de entrada – conexión de la misma página). Indicador de dirección o línea de flujo (indica el sentido de ejecución de las operaciones). Conector ( distintas páginas) : :
Llamado a subrutina o a un proceso predeterminado. Comentario.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
14
Algoritmos y Programación
8.4. Operaciones Aritméticas
Movimiento de una posición de memoria a otra. Cambios en campos de información. +
Adición
-
Sustracción
*
Multiplicación
/
División
^
Exponenciación
8.4.1. Operadores de Relación <, >, < >, >=, <=, = Ejemplo de utilización de los símbolos Lectura de un fichero de datos de empleados de una empresa ( nombre, edad, nro. Seguro Social, pago) e impresión de los datos personales de cada empleado así como la suma Total de sueldos que paga la empresa. Inicio
ST = 0
N, E, S, P
Ultimo empleado?
Si
Imprime sueldos totales
No
ST = ST + P
Fin
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 15
Algoritmos y Programaci贸n
Ejemplo Diagrama de Bloque / Macroprocesos
Proceso M
?
Subrutina A
Subrutina B
Principal 100
200
300
M贸dulo A
110
120
130
140
150
T.N.S. en Gesti贸n de Sistemas Inform谩ticos y Conectividad
16
Algoritmos y Programación
Ejercicio Realizar el diagrama de detalle del problema de la emisión de facturas. Problema: Consiste en la emisión de facturas a partir de los datos introducidos por teclado y los datos del cliente almacenados en un fichero de disco. La factura se debe presentar en pantalla y una vez dada la conformidad, imprimirla
Inicio A
Datos
Leer Datos Clientes
Datos Clientes
Sí ¿Validación?
Factura
No
No Validación
¿Otro cliente?
Sí
A
Fin
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 17
Algoritmos y Programaciรณn
8.5. Diagrama de Flujo Estructurado
Inicio
8.5.1. Inicio
8.5.2. Entrada de Datos
Entrada de Datos
8.5.3. Proceso
8.5.4. Salida de Datos
Proceso
Salida de Datos
8.5.5. Fin
Fin
Las estructuras de control lรณgicas bรกsicas, necesarias para confeccionar un diagrama de detalle estructurado se reducen a: a) Secuenciales b) Selectivas c) Iterativas
a) Secuenciales Constan de sucesivos pasos, uno tras otro.
A
B
C
N
T.N.S. en Gestiรณn de Sistemas Informรกticos y Conectividad
18
Algoritmos y Programación
b) Selectivas Requieren prueba o comparación de ciertas condiciones, seguidas de rutas alternativas en el programa.
No
Sí ¿?
A
If else
¿?
Sí
B
If
B
c) Iterativas
do while B
No
¿?
While do
Sí No ¿? B
Sí
Estructura Switch (Tarea)
A
A
A
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 19
Algoritmos y Programación
Ejemplo: Diagrama de flujo estructurado Las estructuras básicas anteriores, pueden componerse reemplazando cada bloque básico por una de dichas estructuras (Secuenciales, selectivas o repetitivas).
E1
Diagrama básico
Bloque que puede incluir cualquier estructura
E2
M es proceso M E1
No ¿? Sí E2
No
Sí ¿? E2
A
B
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
20
Algoritmos y Programación
8.6. Componentes de un Algoritmo 1. Requerimientos de datos del problema 2. Procesamiento de los datos requeridos 3. Entrega de los datos procesados
8.6.1. Reglas para la Construcción de Diagramas de Flujo 1. Todo diagrama de flujo debe tener un principio (inicio) y un fin (termino) a modo (objeto) que pueda ser utilizado como submódulo de otro módulo de nivel superior. 2. Las líneas de conexión o de flujo deben ser siempre rectas y si es posible que sean sólo verticales y horizontales, no cruzarse ni inclinarse, para conseguir lo anterior se recurrir a conectores numerados convenientemente y solamente en caso estrictamente convenientes. 3. Las líneas que enlazan los símbolos entre si deben estar todas conectadas. Cada línea o flecha debe entrar en un bloque, en un símbolo de decisión, y terminar en “fin” o unirse a otra flecha. 4. Se deben dibujar todos los símbolos de modo que se pueda seguir el proceso visualmente desde arriba hacia abajo (Diseño Top-Down) y de izquierda a derecha. 5. Realizar un gráfico claro y equilibrado procurando que el flujo central del diagrama sea la parte central de la hoja. 6. Evitar la utilización de terminología específica de un lenguaje de programación o de máquina. 7. Se debe dejar un bloque o dos de procesos libres al comienzo del programa, para reservar posiciones de memoria para variables, acumuladores, etc. 8. Indicar con comentarios al margen o mediante el símbolo gráfico para comentarios las variables utilizadas y su descripción, procurando no abusar de su uso. Diferenciar las variables propias del proceso de las pseudovariables o variables ficticias. 9. En las operaciones lógicas recurrir preferentemente a la lógica positiva, por ejemplo: Si a = b Si not a<>b
(positiva) (negativa)
10. A cada bloque o símbolo se accesa por arriba y por la izquierda y se sale por abajo y/o por la derecha. Las entradas pueden ser variadas pero la salida es única excepto en los casos de símbolos de decisión. 11. Realizar todas las anotaciones o comentarios marginales al diagrama (en su contexto) para que éste no sólo sea comprensible por la persona que lo elaboró sino también por cualquier persona ajena al mismo. 12. Siempre que sea posible, es conveniente que el diagrama no sobre pase una página, sino es posible numerar adecuadamente las hojas del diagrama y utilizar los correspondientes conectores de página que indiquen sin duda la dirección correcta del flujo.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad 21
Algoritmos y Programación
8.6.2. Comprobación de Diagramas Terminado el diagrama de flujo se deben tomar un conjunto de datos significativos y comenzar la lectura del mismo en el orden de arriba hacia abajo siguiendo paso a paso los símbolos con sus operaciones correspondientes introduciendo los datos tomados y verificando cómo responde al diagrama de flujo. No se debe pasar a la fase de codificación mientras no se haya comprobado el diagrama de flujo.
T.N.S. en Gestión de Sistemas Informáticos y Conectividad
22