# Algoritmia/Apéndice A: pseudocódigo
## Pseudocódigo

Durante la redacción del libro y a la hora de plantear soluciones a ejercicios propuestos, es frecuente recurrir a mostrar porciones de código que expliquen el funcionamiento del algoritmo en cuestión. Con el fin de evitar entrar en aspectos sintácticos específicos de cada lenguaje de programación, se utilizará un pseudocódigo pre-establecido que provea de forma sencilla los elementos necesarios para poder describir el algoritmo.

### Funciones y procedimientos

Las subrutinas son secciones de código que pueden separarse unas de otras por constituir un bloque más o menos independiente del resto de rutinas del programa. Pueden diferenciarse fundamentalmente dos tipos de subrutinas: funciones, que devuelven un valor, y procedimientos, que no devuelven ningún valor. El comportamiento, en los demás aspectos, es esencialmente el mismo. Las subrutinas pueden recibir una serie de parámetros necesarios para llevar a cabo las tareas para las que se hayan definido.
En el pseudocódigo utilizado en este libro, se puede reconocer una función por el siguiente aspecto:
donde:
* n_funcion es el nombre de la función en minúsculas
* n_p_1 es el nombre del primer parámetro
* t_p_1 es el tipo del primer parámetro
* n_p_n es el nombre del enésimo parámetro
* t_p_n es el tipo del enésimo parámetro
* v_d es el valor devuelto
* t_v_d es el tipo del valor devuelto
El siguiente es un ejemplo que muestra una función que suma dos enteros:
Un procedimiento cualquier descrito en el libro puede reconocerse por la siguiente estructura:
donde:
* n_procedimiento es el nombre del procedimiento en minúsculas
* n_p_1 es el nombre del primer parámetro
* t_p_1 es el tipo del primer parámetro
* n_p_n es el nombre del enésimo parámetro
* t_p_n es el tipo del enésimo parámetro
El siguiente es un ejemplo que muestra un procedimiento que incrementa un entero en una unidad:

### Declaración de tipos

Se sigue la siguiente notación en la declaración de variables:
Un ejemplo de tipo autodefinido es el siguiente:

#### Tipos primitivos

Se consideran tipos primitivos aquellos tipos básicos en cualquier lenguaje de programación, como números enteros, booleanos o caracteres. Algunos ejemplos se muestran a continuación:

#### Tuplas y arrays

Una tupla es una asociación de varios elementos, del mismo o distinto tipo. Si son del mismo tipo, pueden considerarse o representarse con arrays. Si son de distinto tipo, pueden representarse también como registros.
Los arrays son agrupaciones de varios elementos del mismo tipo, pudiéndose ser de una (también llamados vectores) o más dimensiones (matrices).

#### Registros

Los registros son agrupaciones de varios elementos, frecuentemente de distintos tipos. Son útiles para crear unidades utilizadas en tipos de datos más complejos, como árboles o tablas.

#### Punteros

Los punteros tratan de representar el uso de memoria dinámica. Se utilizan fundamentalmente a la hora de crear estructuras enlazadas a través de nodos o similares.

### Operadores

Se utilizan los operadores básicos disponibles en la mayoría de lenguajes de programación.
* Operadores aritméticos : suma (+), resta (-), multiplicación (*), división (/), división entera (div), módulo (mod), exponenciación (^).
* Operadores lógicos : igualdad (=), y-lógica (&), o-lógica (|), negación (!), relaciones de orden (<, >, <=, >=).
* Otros operadores : asignación (:=).

### Estructuras de control

* Condicional
* Selección de casos
* Bucle con índice
* Bucle con condición de entrada
* Bucle con condición de salida