Pages - Menu

martes, 16 de abril de 2013

El pseudocódigo, una herramienta esencial


Ya hemos hablado un poco del concepto de algoritmo, o de cómo se parecen laprogramación a cocinar. Vamos a ir entrando un poco más en materia abordando el siguiente concepto a desarrollar que todo programador debe conocer perfectamente, el pseudocódigo.


Código
Foto tomada de freedigitalphotos.net

En ciencias de la computación el pseudocódigo es una representación informal de un algoritmo, elevando a éste a su más alto nivel, entendible por humanos y que funciona a modo informativo y aclaratorio para el programador, gracias al pseudocódigo se pueden diseñar algoritmos en lenguaje natural para que el programador lo traduzca al lenguaje de programación pertinente.

Aunque el pseudocódigo se desarrolla en lenguaje humano, debemos atenernos a ciertas normas sintácticas para que se asemeje lo máximo posible al lenguaje de programación que se vaya a utilizar, de ésta forma la implementación posterior por parte del programador es mucho más sencilla.

El pseudocódigo no está sujeto a ningún estándar de ningún tipo y cualquiera puede realizar el suyo propio, es muy raro encontrar pseudocódigos con un alto porcentaje de elementos comunes entre ellos, no obstante deben ser lo suficientemente legibles, recordemos que su fin es ser claro y entendible por el programador.

Una buena práctica por parte del programador consiste en plantear el pseudocódigo de un algoritmo concreto y desconocido, una vez realizado éste se puede ir traduciendo poco a poco al lenguaje correspondiente y adaptándolo para su correcto funcionamiento dentro del programa.

Dentro de la sintaxis del pseudocódigo podemos encontrar estructuras de control, declaración de variables, subprocesos o incluso el estilo de un lenguaje concreto. Como en la programación de videojuegos C++ y Java son esenciales y comparten casi toda la sintaxis vamos a basar el pseudocódigo en la sintaxis de C++.

Estructura básica del pseudocódigo.

El pseudocódigo aunque se exprese en lenguaje humano debe ser muy parecido al código final, para ello se va a utilizar la estructura de un procedimiento en C++:

Cabecera.
            Programa.
            Módulo.
            Tipos de datos.
            Constantes.
            Variabes.
Cuerpo.
            Inicio.
            Instrucciones.
            Fin.

Variables y operaciones

Como ya hemos visto en post anteriores, lo esencial dentro de un programa es el manejo de datos, esto es posible mediante el uso de variables, recordemos que las variables tienen las propiedades de longitud y de tipos de datos. En pseudocódigo tenemos las opciones de especificar estas propiedades o no. Normalmente en algoritmos no demasiado complejos estos datos se dan por supuestos.

Lo siguiente sería tener claro cómo vamos a asignar valores a las variables, en algunos pseudocódigos esto se puede representar mediante frases como “dar el valor XX a la variable YY” o mediante símbolos como “=” o “:=” o “<-”, como vamos a utilizar un pseudocódigo basado en C++ usaremos el símbolo “=”.

La programación estructurada se basa en procedimientos y funciones, C++ es un lenguaje perfecto para esto, por lo tanto lo primero que tendremos que hacer es nombrar nuestro bloque de código utilizando primero la palabra “procedimiento” o “función” seguido del identificador y (opcionalmente) los parámetros que va a recibir.

Como en todo programa básico, nuestro pseudocódigo deberá mostrar en la pantalla texto con petición de un valor o bien para mostrar el resultado, en nuestro pseudocódigo usaremos la sentencia “escribir” seguido de comillas dobles con el texto. Las fórmulas matemáticas las representaremos de la misma forma común. Para pedir un valor por teclado usaremos la palabra “leer” seguido de la variable donde se va a almacenar el valor en cuestión.

Para respetar la sintaxis de C++ vamos a terminar las instrucciones con “;” y comentar el código con “//”

Ya con esto podemos ir construyendo un pseudocódigo bastante aceptable, veamos el de un procedimiento que toma dos números y muestra en pantalla su suma, resta, multiplicación y división:

Procedimiento operaciones
            x,y,z;
            Leer x;
            Leer y;

            z=x+y;
            Escribir “Suma: ” || z;

            z=x-y;
            Escribir “Resta: ” || z;

            z=x*y;
            Escribir “Multiplicación: ” || z;

            z=x/y;
            Escribir “División: ” || z;

FinProcedimiento

Como se puede comprobar, el entendimiento no complicado y entregando éste pseudocódigo a un programador éste no tendrá ningún problema a la hora de implementarlo en el computador.

Estructuras de Flujo

En el pseudocódigo también se pueden representar todo tipo de elementos que existe en cualquier lenguaje de programación, elementos tales como:

Estructuras selectivas (if, elsif, else, case).

Si condición Entonces
            Instrucciones;
FinSi

Si condición Entonces
            Instrucciones;
Sino
            Instrucciones;
FinSi

Si condición Entonces
            Instrucciones;
Sino Si condición Entonces
            Instrucciones;
Sino
            Instrucciones;
FinSi

Según variable Hacer
Caso valor1;
            Instrucciones;
Caso valor2;
            Instrucciones;
...
De Otro Modo;
            Instrucciones;
Fin Según

Estructuras iterativas (while, loop, do...while).

Mientras condición Hacer
            Instrucciones;
FinMientras

Hacer
            Instrucciones;
Hasta Que condición

Para x=0 hasta x==10 con Paso de 1 hacer
            Instrucciones;
FinPara

Comparaciones (<,>,>=,<=).

…….
Si x<y Entonces
            Instrucciones;
FinSi;
.......

Booleanos (AND, OR, &&, ||).

………..
Mientras x<y AND x>0 Hacer
            Instrucciones;
FinMientras;
..............

Llamadas a procedimientos o funciones y paso de parámetros.

..............
Si x+y>0 Entonces
            Resta(x,y);
FinSi
..............

Ejemplos

A continuación os dejo el pseudocódigo de algunas de las funciones más comunes para que las implementéis en el lenguaje que deseéis.

Procedimiento que compara dos números y escribe en pantalla cual es el mayor:

Procedimiento comparar (x,y)

            Si x>y Entonces
                        Escribir “x es mayor”;
            Sino Si x<y Entonces
                        Escribir “y es mayor”;
            Sino
                        Escribir “Son iguales”;
            FinSi

FinProcedimiento

Procedimiento que pide la base y la altura de un rectángulo y escribe en pantalla su área:

Procedimiento area_rectangulo

            base, altura, area;
            leer base;
            leer altura;

            area=base*altura;
           
            escribir “El área del rectángulo es: ” area;

FinProcedimiento

Procedimiento que muestra los números entre el 1 y el 100 que son divisibles entre un número dado:

Procedimiento divisibles

            Divisor,x;
            Leer divisor;

            Para x=1 Hasta x==100 con Paso 1 Hacer

                        Si x es divisible entre divisor Hacer
                                   Escribir x;
                        FinSi

            FinPara

FinProcedimiento

Como se puede comprobar, el pseudocódigo es una herramienta muy importante a la hora de programar, es preferible tener las cosas claras antes de comenzar a implementar y el pseudocódigo puede solucionarnos más de un momento de atasco, no dejéis de usarlo.

¿Qué grado de importancia tiene el pseudocódigo para vosotros?