Algoritmo

Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.

Medios de Expresión de un Algoritmo (Formas de Representación Algorítmica)

Los algoritmos pueden ser expresados de muchas maneras, incluyendo el lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación, entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El uso de pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

La descripción de un algoritmo usualmente se hace en tres niveles:

    1. Descripción de alto nivel: Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
  1. Descripción formal: Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
  2. Implementación: Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

Diagrama de Flujo

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura, son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

Pseudocódigo

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

Estructuras Algorítmicas

Estructura Secuencial

Es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representación gráfica es la siguiente:

Pseudocódigo de una Estructura Secuencial:

Inicio


acciones


Fin

Estructuras Condicionales

La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición.

Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.

En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular.

Las estructuras selectivas o alternativas pueden ser:

  • Simples
  • Dobles

Alternativa Simple (SI-ENTONCES/IF-THEN)

La estructura alternativa simple si-entonces (en inglés if-then o bien IF-THEN) ejecuta una determinada acción cuando se cumple una determinada condición. La selección si-entonces evalúa la condición.

Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones en caso de ser S1 una acción compuesta y constar de varias acciones).

Si la condición es falsa, entonces no hacer nada.

Pseudocódigo en Español

Si <condición> Entonces


Fin_si

Alternativa Doble (SI-ENTONCES-SI_NO / IF – THEN – ELSE)

La estructura anterior es muy limitada y normalmente se necesitará una estructura que permita elegir entre dos opciones o alternativas posibles, en función del cumplimiento o no de una determinada condición.

Si la condición C es verdadera, se ejecuta la acción S1 y, si es falsa, se ejecuta la acción S2.

Pseudocódigo en Español

Si <condición> entonces

<acción S1>

si_no


fin_si

Estructuras Repetitivas

Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan Bucles y se denomina Iteración al hecho de repetir la ejecución de una secuencia de acciones. Entre las estructuras repetitivas se encuentran:

  • Mientras (while)
  • Repetir (repeat)
  • Desde (for)

Estructura Mientras (WHILE)

La estructura repetitiva while, es aquella en que el cuerpo del bucle se repite mientras se cumple una determinada condición.

Mientras condición hacer / while condición do

Acción S1 / <Acciones>

Acción S2

:

:

acción Sn / End_while

Fin_mientras

Ejemplo:

Contar los números enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contará el número de enteros positivos). Se supone que se leen números positivos y se detiene el bucle cuando se lee un número negativo o cero.

Inicio

contador = 0, numero;

Leer (numero);

Mientras (numero > 0) hacer

contador = contador + 1;

Leer (numero);

Fin_Mientras

Escribir(“El número de enteros positivos es: “, contador)

Fin

Estructura Para (FOR)

Esta estructura ejecuta las acciones del cuerpo del bucle un número especificado de veces, y de modo automático controla el número de iteraciones o pasos.

Pseudocódigo

Inicio

Desde i = 0 hasta i <= 100

{

Escribir i

}

Fin

Repetir… Hasta (DO – WHILE)

La estructura repetir cumple la misma función que la estructura mientras. La diferencia está en que la estructura mientras comprueba la condición al inicio y repetir lo hace al final. Es por ello la estructura repetir se ejecuta por lo menos una vez.

Pseudocódigo

Hacer

Acción_1;

Acción_2;

Acción_n;

Mientras {condición}