2.3. Pseudocódigo

Importante

Un pseudcódigo es otro tipo de representación de algoritmos, en este caso, utilizando texto para describir las acciones y operaciones a realizar.

Es un paso ya muy cercano a implementar el programa en un lenguaje de programación, pero con la ventaja de poderse utilizar texto en el lenguaje que se desee, por ejemplo en español, aunque el ordenador no lo entienda directamente. Así, se puede decir que el pseudocódigo consiste en representar los pasos de un algoritmo mediante narrativa adaptada a cualquier lenguaje entendible por las personas. El Pseudocódigo utiliza palabras que indican el proceso a realizar.

Paso de pseudocódigo a lenguaje de programación
Imangen en Flickr de hackNY.org. Licencia CC

Entre las ventajas que existen al utilizar un pseudocódigo se puede destacar que permite representar en forma fácil operaciones repetitivas complejas. Además es muy fácil pasar de pseudocódigo al programa en cualquier lenguaje de programación. Para realizar un programa, sólo hay que desarrollar cada paso del pseudocódigo con las instrucciones propias del lenguaje de programación que se elija.

Generalmente, aunque existen excepciones, un pseudocódigo se divide en 3 fases: inicial, repetitiva o ciclo y final.

  • En la primera se realizarán una serie de operaciones iniciales (abrir ficheros, inicializar variables, etc.), es decir, en general, todo lo que el ordenador debe hacer una sola vez.
  • En la fase central, que es el cuerpo del programa, se repetirá una serie de acciones mientras se cumpla una o más condiciones, o hasta que dejen de cumplirse. A lo largo del programa se utilizarán diversos tipos de estructuras de control de varios tipos: secuenciales, condicionales y repetitivas.
  • En la fase final concluiremos el programa, cerrando archivos, mostrando la solución por pantalla o impresora, etc.

Una característica importante del pseudocódigo es su cercanía a los lenguajes de programación, pero a la vez, su independencia de los mismos. Es por ello por lo que el pseudocódigo es utilizado en las etapas previas al desarrollo del software, empleándose a modo de boceto antes de proceder a la programación en cada lenguaje específico.

Para representar las acciones de los algoritmos mediante pseudocódigo, se necesita una serie de elementos para reflejar cada tipo de acción. Al usarse texto como herramienta básica en la representación, también se necesita una sintaxis concreta. Dicha sintaxis puede ser más estricta o menos, según se necesite en cada momento. Para primeros esbozos de la representación se podría optar por una sintaxis más burda, menos estricta, mientras que para los siguientes refinamientos se podría optar por utilizar ya una mayor precisión y por tanto una sintaxis más estricta. Además, también se le añade a la representación unas pocas convenciones que aportan una mayor claridad en el resultado final. Estas convenciones se mencionarán al final de este apartado.

En general, los elementos y su sintaxis podrían resumirse en la siguiente tabla:

SENTENCIAS/ ESTRUCTURAS PSEUDOCÓDIGO DESCRIPCIÓN
ASIGNACIÓN Se utiliza para realizar una asignación de un valor a una variable. Por ejemplo, si se necesita asignar un valor 3 a la variable llamada coste, se escribiría:     coste ← 3

OPERADORES ARITMÉTICOS

- (resta)

 + (suma)

 /  (división)

 *  (multiplicación)

mod  (resto de la división entera)

Se usan para formar expresiones en las que se realizarán operaciones aritméticas.

OPERADORES RELACIONALES

> (mayor que)

>= (mayor o igual que)

< (menor que)

<= (menor o igual que)

= (igual)

<> (distinto)

Suelen utilizarse para formar condiciones que luego formarán parte de algunas estructuras de control o sentencias.

OPERADORES LÓGICOS

Y (and)

O (or)

NO (not)

Sirven para concatenar varias condiciones y formar una sola expresión con todas ellas.

ENTRADA / SALIDA

LEER nombre_variable

ESCRIBIR expresión

La sentencia LEER es la que permite introducir valores por teclado (el ordenador, cuando llega a este tipo de sentencias se para y espera a que el usuario teclee un valor, luego sigue la ejecución del programa).

La sentencia ESCRIBIR permite mostrar información por pantalla (u otro dispositivo de salida distinto)

ESTRUCTURA CONDICIONAL SIMPLE

SI ( condición ) ENTONCES

               Sentencias

FINSI

Esta estructura permite ejecutar una serie de sentencias siempre y cuando se cumpla la condición que se desea evaluar. Si la condición se cumple, las sentencias que están en el interior de la estructura se ejecutan, si la condición no se cumple, el flujo del programa salta hasta la parte final de la estructura (FINSI) sin ejecutar las sentencias del interior.

ESTRUCTURA CONDICIONAL COMPUESTA

SI ( condición )  ENTONCES

               Sentencias

      SINO

               Otras Sentencias

FINSI

Es una estructura parecida a la anterior, con la diferencia de que en este caso, si la condición evaluada no se cumple, el flujo del programa va directo al "SINO" y ejecuta todas las sentencias que encuentra entre el "SINO" y el "FINSI".

Es decir, que dependiendo de si la condición se cumple o no, se ejecutan unas sentencias u otras.

ESTRUCTURA DE SELECCIÓN MÚLTIPLE

SEGÚN ( variable ) HACER

            CASO constante1:

                          Sentencias

                          ROMPER

            CASO constante2:

                          Sentencias

                          ROMPER

            CASO constante3:

                          Sentencias

                          ROMPER

            OTROS-CASOS:

                          Sentencias

FINSEGÚN

Esta estructura se parece a la anterior, pero en lugar de tener 2 caminos posibles de ejecución, tiene múltiples opciones. Se evalúa el valor de una variable y dependiendo de dicho valor, el flujo de ejecución salta al camino adecuado

ESTRUCTURAS REPETITIVAS

MIENTRAS ( condición ) HACER

             Sentencias

FIN MIENTRAS

 

REPETIR

              Sentencias

HASTA QUE ( condición )

PARA variable←valor_inicial HASTA valor_final CON PASO valor_paso HACER

               Sentencias

FINPARA

Estas estructuras son las llamadas "bucles". En definitiva lo que pretenden es ejecutar el grupo de sentencias que hay en su interior un número de veces (puede ir desde cero veces, una vez o más). En unidades posteriores se estudiarán con más detalle.

Curiosidad

Destacamos algo muy importante a la hora de escribir pseudocódigo, que también se extenderá al uso posterior de los lenguajes de programación (independientemente del lenguaje que sea):

EL USO DE LAS TABULACIONES AL ESCRIBIR SENTENCIAS QUE VAN DENTRO DE LAS ESTRUCTURAS DE CONTROL ES DE VITAL IMPORTANCIA PARA PODER INTERPRETAR BIEN EL ALGORITMO.

Por tanto, aunque dichas tabulaciones no son necesarias (porque los ordenadores las ignorarían), es muy conveniente y altamente recomendable, ya que las personas que tengan que estudiar el código fuente del programa (así se denomina al conjunto de instrucciones que componen el programa) tendrán mayor facilidad para entenderlo al ver las tabulaciones.

Si aún no no te convence esta afirmación prueba a contemplar un mismo trozo de código sin tabulaciones y con tabulaciones, y saldrás de dudas inmediatamente.

CÓDIGO SIN TABULACIONES CÓDIGO CON TABULACIONES

LEER numero

MIENTRAS numero<>0 HACER

SI numero<0 ENTONCES

ESCRIBIR numero*2

SINO

ESCRIBIR numero/2

FINSI

LEER numero

FINMIENTRAS

LEER numero

MIENTRAS numero<>0 HACER

        SI  numero<0  ENTONCES

               ESCRIBIR numero*2

           SINO

               ESCRIBIR numero/2

        FINSI

        LEER numero

FINMIENTRAS

Reflexiona sobre lo siguiente: si en un trozo de código tan pequeño, la diferencia de comprensión entre un modo y otro es enorme, imagina cuando la cantidad de código se multiplique.