Tutorial de Pseudocódigo
REGLAS
Nota: de la web http://aprenderaprogramar.es
Cada línea del pseudocódigo será
numerada como forma de recordarnos que estamos escribiendo instrucciones
y que el orden es fundamental. Una vez tengamos soltura podrá
prescindirse de los números de línea. La numeración tendrá el formato
que se desee (1, 2, 3, 4, 5, ...; 1, 2, 2.1, 2.2, 2.3, 3, 4, ...; 10, 20, 30, 40, ...; 10, 20, 20.1, 20.2, ...)
La asignación de contenidos a variables
se hará conforme a lo expuesto: el nombre de la variable seguido de un
igual y un número para variables numéricas o un texto entrecomillado
para variables de tipo alfanumérico.
LAS VARIABLES COMO BASE DE CÁLCULO
Hay un aspecto diferenciador de la forma
de calcular de un humano y la de un ordenador. Los humanos podemos
guardar datos en espacios de memoria temporales que no tienen asignado
un nombre mientras que el ordenador sólo puede guardar datos a través de
variables que necesariamente tienen un nombre. Un humano puede operar
de la siguiente manera:
“7 por 2 son 14; si lo multiplico por 6 son 84 y si lo divido por 2 son 42;
le sumo 4 y son 46, que dividido entre 2 son 23”
|
Un ordenador tendrá que operar a través de variables, por ejemplo:
a) A = 7 * 2 ; A = A * 6 ; A = A / 2 ; A = A + 4 ; A = A / 2
b) A = 7 * 2 ; B = A * 6 ; C = B / 2 ; D = C + 4 ; E = D / 2
En el caso a) el valor actual de la variable A es 23, habiéndose perdido todos los valores intermedios que fue tomando. En el caso b) el valor final de la serie de cálculos está registrado en la variable E, mientras que las variables A, B, C, D contienen los resultados intermedios.
La cantidad de variables a emplear en un
proceso de cálculo dependerá del criterio del programador, quien habrá
de valorar el interés que puede tener el conservar resultados
intermedios. Con los criterios de economía y eficiencia, buscaremos
siempre utilizar el menor número de variables posibles.
INSERCIÓN DE COMENTARIOS EN EL PSEUDOCÓDIGO
Una línea o el final de una línea puede
ser utilizado para introducir comentarios relativos al pseudocódigo que
se está escribiendo. Los comentarios no existen a efectos de
instrucción, sino únicamente como aclaración informativa para otra
persona que pueda leer el pseudocódigo. A fin de ser identificados los
comentarios irán encerrados entre corchetes.
Ejemplos:
5. |
M = 12 |
[Es el número de meses de un año] |
ESTO ES VÁLIDO
|
6. |
B = M / 2 |
[Es el número de bimestres en un año] |
5. |
[Dividimos el peso total entre peso unitario] |
ESTO ES VÁLIDO
|
6. |
U = Pt / Pu |
5. |
S = Dt * Id |
[Salario como días trabajados por importe del día] |
ESTO ES VÁLIDO
|
5. |
[Número de trabajadores] Nt = 57 |
NO VÁLIDO: EL COMENTARIO NO PUEDE SER PRINCIPIO DE LÍNEA
|
6. |
[Días trabajados] Dt = 19 |
Para el ordenador una línea que únicamente tiene comentarios es una línea vacía, ya que no contiene instrucciones a ejecutar.
= = =
ORDENACIÓN SIMBÓLICA DEL PSEUDOCÓDIGO
En algún momento dijimos que un
algoritmo se divide en pasos o líneas cuyo contenido y extensión es
criterio del autor del algoritmo. Vamos a matizar esta afirmación. Si
las instrucciones en un algoritmo se ejecutan de izquierda a derecha y
de arriba a abajo, en principio dará igual escribir cuatro instrucciones
de izquierda a derecha (en una línea) que de arriba a abajo (en cuatro
líneas).
La escritura de órdenes una detrás de
otra la realizaremos valiéndonos de un elemento de separación, que en
nuestro caso serán los dos puntos ( : ). Así podríamos escribir: A = 3 : B = 2 : C = A * B.
Diferentes órdenes relacionadas a través de dos puntos
reciben el nombre de órdenes concatenadas y se ejecutan una detrás de
otra, de izquierda a derecha. Como decíamos anteriormente, sería
equivalente escribir:
1. Inicio
2. A = 3 : B = 2 : C = A * B : D = C ^2
3. Fin
|
<- Equivale a -> |
1. Inicio
2. A = 3
3. B = 2
4. C = A * B
5. D = C ^2
6. Fin |
Parece que la concatenación de órdenes
redunda en una mejor economía del algoritmo, puesto que se reduce el
número de líneas a emplear. Pero ojo: ¿Por qué no escribirlo todo en una
sola línea, incluso los indicadores de inicio y fin? La respuesta nos
lleva a las formas de percepción y de comprensión humanas. Un libro
cualquiera podría ser escrito en una sola línea. Sin embargo, se
organiza en párrafos y líneas utilizando efectos visuales como son las
sangrías y los márgenes que afectan más a la percepción que al
contenido.
En la escritura de pseudocódigo
buscaremos claridad y ordenación visual. No es recomendable escribir
muchas órdenes en una sola línea. Para ello nos basaremos en sangrías y
en delimitación e información de bloques o procesos. Llamaremos “bloque”
a un conjunto de órdenes con interdependencia, estrecha relación o
agrupadas con un fin. La sangría se hará siempre respecto a una
instrucción o comentario que marcan el inicio y fin de la sangría.
Inicio sangría
--------------------------------> Instrucciones con sangría
Fin de la sangría
|
Ejemplos:
[Valor de los parámetros]
A = 7
B = 16
C = 3
[Fin de asignación de valor a parámetros]
|
[Cálculo de superficies]
S1 = 3 * A
S2 = 4 * B
S3 = 2 * C
[Fin de cálculo de superficies]
|
Las sangrías se pueden anidar cuantas veces se quiera.
Ejemplo:
No existe norma que diga cuantas
sangrías se deben introducir. El exceso o defecto pueden ir en contra de
la lectura del programa, y ha de ser el programador el que siguiendo
una lógica tal como si estuviera escribiendo una novela, defina su
estilo para conseguir la máxima claridad. La subordinación se puede
originar a partir de comentarios o a partir de órdenes con principio y
fin.
Supongamos que una instrucción asigna a la variable suma el resultado de sumar una serie de variables. Escribiríamos:
Suma de variables (SUMA)
A
C
D
M
Fin de suma de variables |
El inicio y fin de la instrucción
funcionarían como límites subordinantes mientras que la lista de
variables sería el bloque subordinado. Igualmente aceptable sería el no
haber utilizado sangría. Sin embargo, es preferible usarla para mayor
claridad.
En cuanto a la delimitación e
información de bloques y procesos, se trata de buscar que la
presentación del programa sea tal que permita buscar e identificar con
rapidez las distintas partes del mismo. Para ello nos apoyamos en la
introducción de comentarios delimitadores y en sangrías. Veamos con un
ejemplo muy “gráfico” lo que sería el mismo pseudocódigo con cuatro
formas de presentarlo.
Versión 1
1. Inicio
2. T = 32 : TT = 11 : CT = 40 : CTT = 65 : NC = T * CT + TT * CTT
3. Fin
|
|
Versión 3
1. Inicio
2. [Definición de vehículos aprenderaprogramar.com]
3. Turismos = 32
4. Todoterrenos = 11
5. [Fin de definición de vehículos]
6. [Definición de capacidad de depósitos]
13. Fin
|
13. Fin
|
Comentaremos una a una las diferentes versiones del algoritmo.
La versión 1
Es la menos extensa al reunir todo el proceso en una línea. Sin
embargo, es difícilmente interpretable pues no contiene información a
modo de comentarios. Tampoco se aprecia delimitación de procesos.
La versión 2 Permite identificar mejor los distintos pasos, aunque sigue siendo difícilmente interpretable.
La versión 3
Es de mayor longitud pero aporta información que hace interpretable el
algoritmo, quedando además delimitados los distintos procesos.
La versión 4 No varía en longitud respecto a la tercera, pero mejora la calidad de presentación a través de sangrías.
Esquemáticamente tendremos:
Economía |
Mayor | | | | | Menor |
Versión 1 Versión 2 Versión 3 Versión 4 |
Menor | | | | | Mayor |
Claridad y calidad de presentación |
Buscaremos la máxima claridad y calidad
de presentación, pero sin exageraciones. La identificación de procesos,
variables, etc. será la justa y necesaria.
= = =
SENTENCIAS BÁSICAS PARA PROGRAMACIÓN EN PSEUDOCÓDIGO
Llamamos instrucción, orden o sentencia a cualquier expresión que el
ordenador reconoce y le induce a realizar un proceso.Ya hemos visto
elementos a los que podemos considerar órdenes como:
Inicio , equivalente a “Comienza a procesar información”
Fin , equivalente a “Termina de procesar información”
Variable1 = número , equivalente a “Asigna el número a la variable 1”
Variable1 = texto , equivalente a “Asigna el texto a la variable 1”
Variable1 = Variable2 , equivalente a “Asigna el contenido de la variable 2 a la variable 1”
|
Junto a éstas, las órdenes más habituales son las de captura y emisión de datos. Entenderemos por captura la recepción de un dato que proviene de:
· Una entrada de teclado manejada por el usuario.
· Un archivo.
· Una base de datos.
· Un dispositivo periférico.
· Un ordenador.
· Otros dispositivos.
Para escritura de algoritmos diferenciaremos entre:
1. Entradas de teclado, que escribiremos como Pedir VAR, siendo VAR la variable a la que se asigna la entrada de teclado.
2. Entradas desde archivo, bases de datos, etc. que escribiremos como Leer VAR, siendo VAR la variable a la que se asigna la información contenida en un archivo, base de datos, etc.
En cuanto a emisión de datos, será cualquier proceso de salida de datos desde el programa hacia:
· La pantalla.
· La impresora.
· Un archivo.
· Una base de datos.
· Otros dispositivos.
Para la escritura de algoritmos nos quedaremos de momento con Mostrar como instrucción para visualizar elementos en la pantalla del ordenador e Imprimir como indicador de que se mandan los datos a impresora.La sintaxis que emplearemos es la siguiente: Pedir y Leer irán siempre seguidos de un nombre de variable, o de varios nombres seguidos por comas.
Ejemplo: Pedir salario
Pedir Edad, Altura, Peso
Mostrar e Imprimir podrán ir seguidos de variables, números o texto
separados por comas. El texto, como venimos haciendo habitualmente, irá
entrecomillado.
Ejemplo: Mostrar “No se ha encontrado una solución”
Mostrar “El salario a percibir es”, salario, “pesetas”
Imprimir “Tiene derecho a”, 100, Periodo, “de vacaciones”
Cuando se desea que la petición de un dato vaya acompañada de un mensaje lo haremos encadenando un mostrar con el mensaje, dos puntos, y la petición de variable.
Ejemplo: Mostrar “Introduzca su peso en Kgs por favor” : Pedir Peso
Mostrar “Introduzca la temperatura en ºC” : Pedir TempCelsius
Mostrar “Introduzca su fecha de nacimiento como dd/mm/aaaa” : Pedir Fechanam
Si volvemos al caso antes visto de los vehículos y el combustible,
podemos ahora escribir un algoritmo más enfocado a lo que es la
interacción entre el usuario y el ordenador. Este sería el siguiente:
1. Inicio
2. [Petición de datos]
3. Mostrar “Por favor, introduzca el número de turismos” : Pedir Turismos
4. Mostrar “Por favor, introduzca el número de todoterrenos” : Pedir Todoterrenos
5. Mostrar “Por favor, introduzca la capacidad del depósito de un turismo, en litros” : Pedir Capturismos
6. Mostrar “Por favor, introduzca la capacidad del depósito de un todoterreno, en litros” : Pedir Captodot
7. [Fin de petición de datos]
8. [Cálculo y muestra de resultados]
9. Necesidadescom = Turismos * Capturismos + Todoterrenos * Captodot
10. Mostrar “Las necesidades totales de combustible son de”, Necesidadescom, “litros”
11. [Fin de cálculos y muestra de resultados]
12. Fin
|
Nos encontramos ya ante un programa tipo de un ordenador:
Datos -------------> Proceso o cálculo ---------------> Resultados
|
No hay comentarios:
Publicar un comentario