PSEUDOCÓDIGO

DEFINICIÓN:
Un pseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo. No hay ningún compilador o intérprete de pseudocódigo informático, y por tanto no puede ser ejecutado en un ordenador, pero las similitudes con la mayoría de los lenguajes informáticos lo hacen fácilmente convertible.
El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema. No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una estructura semántica ni arquitectura estándar.


VENTAJAS AL UTILIZAR PSEUDOCODIGO
  
Permite representar de forma fácil operaciones repetitivas complejas. Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal. Si se siguen las reglas de identación se puede observar claramente los niveles en la estructura del programa. En los procesos de aprendizaje de los alumnos de programación, estos están más cerca del paso siguiente (codificación en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de Flujo). 
ESTRUCTURA DE UN PSEUDOCODIGO 
1. Cabecera:
  • Nombre del Pseudocódigo.
  • Tipo de Datos
  • Declaración de Constantes.
  • Declaración de Variables.
2. Cuerpo.
  •  Inicio.
  •  Instrucciones.
  •  Fin.   

DEFINICIÓN DE DATOS

La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.
Los datos que utilizan los programas (o algoritmos) se pueden clasificar en base a diferentes criterios. Uno de los más significativos es aquel que dice que todos los datos que utilizan los programas son simples o compuestos. 
  • Un dato simple es indivisible (atómico), es decir, no se puede descomponer.
  • Un dato compuesto, está formado por dos o más datos simples.
Ejemplo 1: Un año es un dato simple.
 
Año: 2006
 
Un año se expresa con un número entero, el cual no se puede descomponer. Sin embargo, un dato compuesto está formado por otros datos.
 
Ejemplo 2: Una fecha es un dato compuesto por tres datos simples (día, mes, año).
 
Fecha:
  1. Día: 30
  2. Mes: 11
  3. Año: 2006
Ejemplo 3: Otro ejemplo de dato simple es una letra.
 
Letra: t
 
Una letra se representa con un carácter del alfabeto. Pero, cuando varias letras se agrupan, entonces se obtiene un dato compuesto por varios caracteres.
 
Ejemplo 4: Para formar el nombre completo de una persona se utilizan varios caracteres (dato compuesto por tres caracteres).
 
Nombre_Completo:
  1. Nombre: Ana
  2. Apellido_Paterno: Pérez
  3. Apellido_Materno: Solano

DATO DE TIPO ENTERO

Es aquel que puede tomar por valor un número perteneciente al conjunto de los números enteros (Z), el cual está formado por los números naturales, sus opuestos (números negativos) y el cero.

Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... }

Ejemplo: La edad de una persona y el año en que nació, son dos datos de tipo entero:

Edad: 29
Año: 1976
En pseudocódigo, para indicar que un dato es de tipo entero se utiliza la palabra reservada: entero
DATO DE TIPO REAL
Es aquel que puede tomar por valor un número perteneciente al conjunto de los números reales (R), el cual está formado por los números racionales e irracionales.

Ejemplo: El peso de una persona (en kilogramos) y su altura (en centímetros), son datos que pueden considerarse de tipo real.
Peso: 75.3
Altura: 172.7 


En pseudocódigo, para indicar que un dato es de tipo real se utiliza la palabra reservada: real.
DATO DE TIPO CARACTÉR
Es aquel que puede tomar por valor un carácter perteneciente al conjunto de los caracteres que puede representar el ordenador.

En pseudocódigo, el valor de un dato de tipo carácter se puede representar entre comillas simples (') o dobles ("). Pero, en este curso de diseño de algoritmos, se van a utilizar solamente las comillas simples (al igual que se hace en lenguaje C).

Ejemplo: En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carácter.

DATO DE TIPO CADENA

Es aquel que pueden tomar por valor una secuencia de caracteres. En pseudocódigo, el valor de un dato de tipo cadena se puede representar entre comillas simples (') o dobles ("). Sin embargo, en este curso de diseño de algoritmos, se van a utilizar solamente las comillas dobles (al igual que se hace en lenguaje C).

Ejemplo: El título de un libro y el nombre de su autor, son datos de tipo cadena.
Título: "La Odisea" (cadena de 9 caracteres)
Autor: "Homero" (cadena de 6 caracteres)

Obsérvese que, en la cadena "La Odisea", el carácter espacio en blanco también se cuenta. En pseudocódigo, para indicar que un dato es de tipo cadena se utiliza la palabra reservada: cadena.
DATO DE TIPO LÓGICO

Es aquel que puede tomar por valor sólo uno de los dos siguientes: { verdadero, falso}.  Los valores "verdadero" y "falso" son contrapuestos, de manera que, un dato de tipo lógico siempre está asociado a que algo se cumpla o no se cumpla.

Ejemplo: El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo lógico, por ejemplo, asociando "verdadero" a que esté arriba y "falso" a que esté abajo. En pseudocódigo, para indicar que un dato es de tipo lógico se utiliza la palabra reservada: lógico.
DECLARACION DE VARIABLES

En programación, una variable representa a un espacio de memoria en el cual se puede almacenar un dato. Gráficamente, se puede representar como: 

El programador, cuando desarrolla un programa (o diseña un algoritmo), debe decidir:
  • Cuantas son las variables que el programa necesita para realizar las tareas que se le han encomendado.
  • El tipo de dato que puede almacenar cada una de ellas.
Durante la ejecución de un programa, el valor que tome el dato almacenado en una variable puede cambiar tantas veces como sea necesario, pero, siempre, tomando valores pertenecientes al tipo de dato que el programador ha decidido que puede almacenar dicha variable, ya que, el tipo de dato de una variable no puede ser cambiado durante la ejecución de un programa. 

Para que un programa pueda hacer uso de una o más variables, éstas deben ser declaradas previamente. Todas las variables de un programa se declaran de la misma forma, indicando de cada una de ellas:

  1. El tipo de dato que puede almacenar (mediante un identificador). 
  2. Su nombre (mediante otro identificador).  
Ejemplo: La declaración de una variable para almacenar la edad de una persona se escribe:
  
entero edad 

En un programa no se pueden declarar varias variables con el mismo nombre (salvo excepciones que estudiaremos más adelante), sin embargo, sí pueden existir varias variables del mismo tipo de dato. Siguiendo con el ejemplo, si también se quiere declarar una variable para almacenar su número de hijos, se debe escribir: 

entero edad
entero numero_de_hijos 

Puesto que las dos variables son del mismo tipo de dato, se pueden declarar en la misma línea separándolas por medio de una coma (,).

entero edad, numero_de_hijos 

Opcionalmente, cuando se declara una variable, a ésta se le puede asignar un valor inicial.

entero edad = 35
DECLARACIÓN DE CONSTANTES
En programación, una constante representa a un valor (dato almacenado en memoria) que no puede cambiar durante la ejecución de un programa. Por ejemplo, en lenguaje C, una constante puede ser de tipo entero, real, carácter, cadena, etc.

En pseudocódigo, para declarar una constante, vamos a utilizar la sintaxis:

<nombre_de_la_constante> = <expresión> 
Y para declarar más de una constante en una misma línea, las separaremos por medio de comas (,).

Ejemplo:
TEMPERATURA = -5
MES = 10
O también:

TEMPERATURA = -5, MES = 10 
OPERADORES Y EXPRESIONES
En un programa, el tipo de un dato determina las operaciones que se pueden realizar con él. Por ejemplo, con los datos de tipo entero se pueden realizar operaciones aritméticas, tales como la suma, la resta o la multiplicación.

Ejemplo: Dadas las siguientes declaraciones de constantes y variables:

PI = 3.141592
entero numero = 2
real radio_circulo = 3.2

Algunos ejemplos de expresiones son:

2 * PI * radio_circulo
( PI * PI )
numero * 5
De la evaluación de una expresión de cadena siempre se obtiene un valor de tipo cadena. El operador concatenación (+) realiza la concatenación de dos operandos de tipo cadena, es decir, los encadena.
Ejemplo:
OLIMPIADA = "Atenas 2004"
PUNTO = "."
cadena nombre = "Pedro", apellido = "Cosín", rio = "Tajo"

Algunas expresiones de cadena son:

 OLIMPIADA + PUNTO
nombre + " " + apellido
"Buenos días" + PUNTO
rio
nombre + " fue a las Olimpiadas de " + OLIMPIADA + PUNTO

Los resultados de evaluarlas son:

 "Atenas 2004."
"Pedro Cosín"
"Buenos días."
"Tajo"
"Pedro fue a las Olimpiadas de Atenas 2004."

INSTRUCCIONES PRIMITIVAS

En programación, una instrucción de asignación (o simplemente asignación) consiste en asignar el resultado de la evaluación de una expresión a una variable.

En pseudocódigo, la sintaxis para escribir una asignación es:

<nombre_de_la_variable> ← <expresión> 

El valor (dato) que se obtiene al evaluar la <expresión> es almacenado en la variable que se indique.

Ejemplo: Dadas las declaraciones

PI = 3.141592
real area, longitud, radio = 5.78

Algunas instrucciones de asignación son:

area ← PI * radio ** 2
longitud ← 2 * PI * radio

Por consiguiente, las variables area y longitud almacenarán los valores:

57.046290 (se obtiene de 3.141592 * 5.78 ** 2)
36.316804 (se obtiene de 2 * 3.141592 * 5.78)

En una asignación, la variable debe ser del mismo tipo que la expresión asignada.

En programación, una instrucción de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluación de una lista de expresiones. Normalmente, los datos son enviados a la salida estándar (la pantalla), pero, también existen otros dispositivos de salida (la impresora, el plotter,...).

En pseudocódigo, la sintaxis de una instrucción de salida es:

escribir ( <expresión_1>, ..., <expresión_n> ) 
También se puede escribir como:

escribir( <lista_de_expresiones> ) 

Ejemplo: Partiendo de las variables

cadena nombre = "Timoteo"
entero edad = 27, hijos = 2

al escribir

escribir( nombre, " tiene ", edad, " años." )
escribir( nombre, " tiene ", hijos, " hijos." )

por pantalla aparecerá:

Timoteo tiene 27 años.
Timoteo tiene 2  hijos. 

Una instrucción de entrada (o simplemente entrada) consiste en asignar a una o más variables, uno o más valores (datos) recibidos desde el exterior. Normalmente, los datos son recogidos desde la entrada estándar (el teclado), pero, también existen otros dispositivos de entrada (el ratón, el scáner, etc.).

 En pseudocódigo, la sintaxis de una instrucción de entrada es: 

leer(<nombre_variable_1>,  <nombre_variable_2>, ...,<nombre_variable_n>) 
También se puede escribir como:

leer( <lista_de_variables> ) 

Ejemplo 1: Partiendo de las variables

cadena nombre, apellidos
entero edad

para cada una de ellas se puede recoger un valor (dato) desde el teclado, escribiendo:

leer( nombre )
leer( apellidos )
leer( edad )

Otra posibilidad es

leer( nombre, apellidos, edad )
En los algoritmos es conveniente escribir comentarios para explicar el diseño y/o funcionamiento del mismo. Para delimitar los comentarios se pueden utilizar distintos caracteres:
  • ( [ ) y ( ] )
  • ( { ) y ( } )
  • ( /* ) y ( */ )
En pseudocódigo, en este curso de algoritmos, los comentarios se van a escribir entre los símbolos reservados barra-asterisco (/*) y asterisco-barra (*/), que son los mismos que se utilizan en lenguaje C.

Ejemplo: Algoritmo que sirve para calcular el área de una circunferencia, en el cual se han comentado las distintas secciones: cabecera, declaraciones y cuerpo: 

/* Cabecera */
Area_de_una_circunferencia

/* Declaraciones */
Constantes
PI = 3.141592
Variables
real area, radio

/* Cuerpo */
Inicio

escribir( "Introduzca radio: " )
leer( radio )
area ← PI * radio ** 2
escribir( "El área de la circunferencia es: ", area )

Fin

ESTRUCTURAS DE CONTROL

Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones, realizar acciones repetitivas , etc. 


 
if.....then....elsenos permitía decidir si queríamos ejecutar o no una instrucción en función de una condición. En pseudocódigo, la primera estructura de control se utiliza de la siguiente manera:  
Si (Tal cosa es cierta)
{
 // Haz esto
}
 En caso contrario
{
 // Haz esto otro
 }
Ejemplo:

Si (x>0)
{
escribir ("es positivo")
 }

En caso contrario
{
 escribir ("es negativo")
 }



While ..Su funcionamiento es muy parecido al del if-then-else, la diferencia estriba en que si la condición es cierta y se ejecuta la orden, la condición vuelve a comprobarse una y otra vez mientras siga siendo cierta. En cambio en el if-then-else sólo se comprueba la condición una vez, si es cierta se ejecuta la instrucción y se sigue con el programa.
En pseudocódigo utilizamos un While de la siguiente manera:

Mientras (condición)
{
// Instrucciones a ejecutar una y otra vez mientras la condición sea cierta
 }
Ejemplo:
x=0
Mientras (x<1)
{
escribir ( “Hola” )
x<- x+1
}
Do _While.. son muy parecidos a los bucles while, sólo que comprobamos si la condición es cierta al final del bucle en lugar de al principio. Así nuestras instrucciones se ejecutan siempre al menos una vez, lo que no ocurre en las condiciones while si la condición es falsa.
En pseudocódigo, así utilizamos un Do...While:

Hacer
{
// Instrucciones a ejecutar una y otra vez mientras la condición sea cierta
 }
Mientras (condición)

Ejemplo:
x=0
Hacer
{
Escribir( “Hola” )
x<-x+1
}
Mientras (x<1)
  
For.... Con una sola instrucción controlamos todo el bucle. En pseudocódigo utilizamos un For de la siguiente manera:
Desde (valor inicial; condición; ejecutar en cada blucle)
{
// Instrucciones a ejecutar mientras la condición sea cierta
}
Ejemplo:

Desde (x=0; x<5; x++)
{
Escribir ( “Hola”)
 }
Switch..Case, nos permite ejecutar un bloque de código u otro dependiendo del valor de una variable.  En pseudocódigo utilizamos de la siguiente manera un switch..case:
Según( variable )
{
Caso_ valor1: accion1;
Caso_ valor2: accion2;
... Caso_ valorN: accionN;
default: accionD;

Ejemplo:

Según( X)
{
Caso x=1:
  escribir ( “Hola”);
Caso x=2:
  escribir( “Que tal”);
default:
  escribir ( “Adios”; ) 

}

**Información obtenida de la página http://es.wikipedia.org/wiki/Pseudoc%C3%B3digo