Además de pseudocódigo algunas veces es importante utilizar diagramas de flujo, los que nos muestran una descripción gráfica de un procedimiento en la resolución de un problema. Son usados para describir algoritmos y programas de computador. Los diagramas de flujo de datos están conformados por distintas figuras conectadas con flechas.
Para ejecutar un proceso descrito por un diagrama de flujo de datos se comienza por el INICIO y se siguen las flechas de figura a figura, ejecutándose las acciones indicadas por cada figura; el tipo de figura indica el tipo de paso que representa. Los diagramas de flujo son frecuentemente usados debido a que pueden suprimir detalles innecesarios y tienen un significado preciso, si son usados correctamente.
Las instrucciones disponibles en un lenguaje de programación dependen del lenguaje, pero de una manera general en la secuencia de resolución de un problema utilizando computadoras tenemos:
Instrucciones de inicio/fin
Instrucciones de asignación o proceso
Instrucciones de entrada de datos
Instrucciones de salida de datos
Instrucciones de bifurcación
Instrucciones/acciones
Objetivos de un diagrama de flujo
Simbología de los diagramas de flujo
Por convención se han definido distintos símbolos por el comité sobre computadoras y procesadores de información de la Asociación Norteamericana de Normas. Esa normalización permite comprender cualquier diagrama de flujo que use los símbolos establecidos.
En la descripción de los algoritmos o de los programas existen varios formalismos. Pero, de una manera general, las reglas comunes a todos para expresar algoritmos, según el paradigma de la programación estructurada, son:
Estructuras secuenciales
Es el conjunto de acciones (instrucciones) que se ejecutan el orden en el que están escritas. Su representación en un diagrama de flujo es semejante al de la derecha.
Ejemplo 1.
Leer una variable x y calcular el cuadrado de x, mostrando su resultado.
Solución:
Variables: De entrada: x y de salida: ncuad
El ejemplo anterior es un diagrama de flujo lineal y muy simple su: lectura, cálculo y escritura.
Elementos fundamentales de un programa
Si tenemos claridad de los conceptos, instrucciones y elementos básicos de un algoritmo de manera general, ello conlleva para que la implementación del mismo en un lenguaje de programación sea más sencilla.
Los lenguajes computacionales como cualquier lenguaje, tienen elementos básicos y reglas conocidas como reglas de sintaxis para las que los elementos se combinan.
Solamente las instrucciones sintácticamente correctas pueden ser interpretadas por la computadora y los programas que contengan errores de sintaxis son rechazados por la máquina.(Joyanes, 2008)
Esto quiere decir que, al igual que en cualquier lenguaje las palabras utilizadas y la sintaxis correcta son importantes para comprender lo que decimos al comunicarnos, para que la computadora logre interpretar y ejecutar correctamente nuestro algoritmo las instrucciones que escribimos deben estar escritas correctamente o en otras palabras deben tener una sintaxis correcta.
Palabras reservadas: Son palabras especiales utilizadas solo por el lenguaje para ejecutar una función específica y que no podemos utilizar en el desarrollo del programa para un fin distinto, por ejemplo (Inicio, fin, escribir, leer, si-entonces, por ejemplo).
Identificadores: Los identificadores son los nombres que les damos a las variables, funciones, al programa, subprocesos) para identificarlos.
Caracteres especiales: Son elementos como comas, comillas, punto y coma, paréntesis, que son parte del lenguaje algorítmico o de programación.
Constantes: Son datos que no van a modificarse en la ejecución de programa.
Variables: Datos cuyo valor se puede modificar en la ejecución del programa.
Expresiones: Son combinaciones de constantes, variables y operadores para ejecutar una operación.
Instrucciones: Son las sentencias o podríamos decir pasos, que se ejecutan en un programa.
Es importante mencionar otros elementos que también forman parte de los programas y utilizaremos más adelante en el diseño de nuestros algoritmos:
Bucles
Contadores
Acumuladores
Interruptores
Estructuras
Secuenciales
Selectivas
Repetitivas
Desarrollo por refinamientos sucesivos
El diseño de algoritmos mediante refinamientos sucesivos es la metodología que se sigue en programación estructurada. Esta técnica consiste en expresar el programa como una acción global que se descompone en acciones más sencillas hasta llegar a acciones que pueden ser expresadas directamente como sentencias del lenguaje de programación.
Para poder cumplir con ese proceso de descomposición requerimos:
La forma en que varias acciones se combinan en una acción compuesta constituye el esquema de la acción compuesta. Por el momento solo hemos tratado el denominado esquema secuencial, que consiste en realizar una acción compuesta a base de realizar una tras otra, en secuencia, dos o más acciones componentes.
Para desarrollar una acción compuesta según un esquema secuencial se necesitará:
Identificar las acciones componentes de la secuencia. Identificar las variables necesarias para disponer de la información adecuada al comienzo de cada acción, y almacenar el resultado.
Identificar el orden en que deben ejecutarse las acciones componentes.
Para ilustrar esta técnica consideremos el siguiente ejemplo: Obtener la suma de dos números enteros, leídos por teclado. Así tenemos:
Acciones componentes
Entrada: leer datos
Escribir ( "Teclee dos números: " );
Leer (num1);
Leer (num2 );
Cálculos: Obtener la suma
suma = num1 + num2
Salida: imprimir resultado
Escribir( “La suma es “, suma);
Variables necesarias: datos y resultado
int num1, num2, suma
(b) Orden de ejecución
1) Leer los datos
2) Calcular la suma
3) Imprimir el resultado
Así vemos que la acción global del problema se va descomponiendo en acciones cada vez más sencillas:
Acción compuesta →
Acción1
Acción2
…etc
Aplicando esta notación en el ejemplo anterior, tenemos:
Obtener la suma de dos números →
Leer los datos
Calcular la suma
Imprimir resultado
Se refinamos hasta llegar a las sentencias de C++ tendremos: