29 de mayo de 2016

16.3 Python: tutorial de pseudocódigo

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 2

1.  Inicio
2.  T = 32
3.  TT = 11
4.  CT = 40
5.  CTT = 65
6.  NC = T * CT + TT * CTT
7.  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]
7.  Capturismos = 40
8.  Captodot = 65
9.  [Fin de definición de capacidad de depósitos]
10.  [Cálculo de necesidades de combustible]
11.  Necesidadescom = Turismos * Capturismos + Todoterrenos * Captodot
12.  [Fin de cálculo de necesidades de combustible]
    13.  Fin

Versión 4

1.  Inicio
2.  [Definición de vehículos]
3.  Turismos = 32
4.  Todoterrenos = 11
5.  [Fin de definición de vehículos]
6.  [Definición de capacidad de depósitos]
7.  Capturismos = 40
8.  Captodot = 65
9.  [Fin de definición de capacidad de depósitos]
10.  [Cálculo de necesidades de combustible]
11.  Necesidadescom = Turismos * Capturismos + Todoterrenos * Captodot
12.  [Fin de cálculo de necesidades de combustible]
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