Sie sind auf Seite 1von 10

GUÍA RÁPIDA NOTACIÓN ALGORÍTMICA

Debe permitir describir:


Informaciones (tanto datos constantes como datos variables)
Acciones (tanto elementales como de composición)

I. Descripción informaciones
Concepto clave: variable (almacén o contenedor de valores/datos que pueden cambiar durante
la ejecución). Ocupan espacio en memoria (por lo tanto, se localizan en una posición de
memoria) y tienen asociado un identificador o nombre (que se utiliza en lugar de la posición de
memoria) y un tipo (que determina su rango de valores y las operaciones permitidas).

En principio, sólo se consideraran los siguientes tipos elementales:

LÓGICO à Rango: {V, F}. Operaciones lógicas (AND, OR, NOT, ...)
ENTERO à Rango: números enteros (sin decimales). Operaciones aritméticas enteras
(división entera)
REAL à Rango: números reales (con decimales). Operaciones aritméticas
CARÁCTER à Rango: letras, dígitos y símbolos empleados en la escritura.

La definición de una variable se ajusta al siguiente patrón:

<identificador_variable> : <tipo_variable>

Aclaración: Los “angulillos” indicarán que lo que aparece entre ellos, deberá sustituirse por el elemento adecuado. Por
ejemplo, <identificador_variable> indicará el nombre genérico de una variable que deberá sustituirse por un
identificador concreto.

Ej. x: ENTERO à Declara la variable x, de tipo entero.


dto: REAL à Declara la variable dto, de tipo real.

II. Acciones elementales

1. Asignación
Sintaxis: La asignación se ajusta al siguiente patrón:
<variable> ß <expresión>

Ejemplos: xß5
xßy+3
Comentarios:
- La parte izquierda de la asignación (la que figura a la izquierda del
símbolo ß), siempre es una variable.
- La parte derecha de una asignación (la que figura a la derecha del
símbolo ß), siempre es una expresión cuyo resultado es del mismo
tipo que la variable
- Las expresiones representan operaciones que pueden evaluarse.
Por ejemplo, si el tipo de la variable es numérico (ENTERO o
REAL) la expresión será una expresión aritmética.
- Cómo se define una expresión aritmética. Una expresión aritmética
bien construida es:
o o bien, un valor numérico literal
o o bien, una variable de tipo numérico
o o bien, si <expr1> y <expr2> son subexpresiones
aritméticas válidas, también lo son las siguientes:
(<Expr1>) <Expr1> + <Expr2> <Expr1> - <Expr2>
- <Expr1> <Expr1> * <Expr2> <Expr1> / <Expr2>

FP: Guía Rápida Notación Algorítmica (2003.10) 1


Semántica: Guardar el valor que resulta de evaluar la expresión de la parte derecha, en la
variable (almacén/contenedor) que aparece en la parte izquierda. Además, en
primer lugar se evalúa, y a continuación, se almacena el valor (por ejemplo, x
ß x + 1).

2. Lectura
Sintaxis: Una acción de lectura se ajusta al siguiente patrón:
LEER (<variable>)

Ejemplos: LEER(x)

Comentarios:
- El argumento de la acción LEER siempre debe ser una variable
(contenedor/almacén donde guardar un valor)
- Pueden leerse varios datos, sin más que poner una lista de
variables separados por comas. Ej.: LEER (x, y).

Semántica: Guardar el valor leído de la (bandeja de) entrada en la variable que se indica.

Comentarios:
- Como se observa, la lectura es otra forma de dar valor a una
variable (igual que la asignación). La diferencia con la asignación
es de dónde sale el valor que se guarda: en una asignación, de la
evaluación de una expresión y en una lectura, de un dispositivo
(bandeja) de entrada de la máquina.

3. Escritura
Sintaxis: Una acción de escritura se ajusta al siguiente patrón:
ESCRIBIR (<expresión>)

Ejemplos: ESCRIBIR(x)
ESCRIBIR(x+y)

Comentarios:
- El argumento de la acción ESCRIBIR es una expresión.
- Pueden escribirse el resultado de varias expresiones, sin más que
escribir una lista de expresiones separadas por comas. Ej.:
ESCRIBIR (x, x+y).

Semántica: Escribir en la (bandeja de) salida el valor resultante de evaluar la expresión que
se indica.

4. Acción nula
Sintaxis: La acción nula se escribirá como sigue:
SEGUIR

Semántica: La acción nula, en términos de ejecución significa no hacer nada.

FP: Guía Rápida Notación Algorítmica (2003.10) 2


III. Acciones de composición
Las acciones de composición determinan cómo se organiza la ejecución de las acciones
elementales u otras acciones de composición. En este punto, se introduce un aspecto
importante de la notación algorítmica, que se refiere al anidamiento (en el sentido de contener
completamente) de las acciones de control, unas dentro de otras.

1. Secuencia
Sintaxis: Una secuencia de acciones se indica como sigue:
<Acción_1>;
<Acción_2>;
...
<Acción_n>;

Ejemplo:
LEER(x);
LEER(y);
sum ß x + y;
ESCRIBIR(sum);

Semántica: Ejecución incondicional de las acciones que aparecen separadas por punto y
coma, y en el orden en el que aparecen.

2. Decisión
2.a Composición condicional

Sintaxis: SI <expresión_logica>
ENTONCES <accion>
FINSI

Ejemplo:
SI x < 0
ENTONCES x ß – x;
FIN_SI

Semántica: Ejecución condicional de una acción. La acción que aparece en la construcción


sólo se ejecuta si su cumple (se evalúa a V) la condición que aparece en la
construcción.

Comentarios:
- Considerando el ejemplo anterior, la ejecución de la asignación
x ß – x se dice que está guardada o protegida por la condición
(x<0), en el sentido de que sólo se ejecuta, si se cumple esta
condición.

2.b Composición alternativa

Sintaxis: SI <expresión_logica>
ENTONCES <accion1>
SINO <accion2>
FINSI

FP: Guía Rápida Notación Algorítmica (2003.10) 3


Ejemplo:
SI a > b
ENTONCES max ß a;
SINO max ß b;
FINSI

Semántica: Ejecución condicional de una acción de entre dos posibles. La <acción1> o


acción asociada a la “rama entonces” se ejecuta si cumple la condición que
aparece en la construcción (se evalúa a V la expresión lógica). En otro caso, se
realiza la <acción2>, o acción asociada a la “rama sino”.

Comentarios:
- Considerando el ejemplo anterior, la ejecución de la asignación
max ß a, está guardada o protegida por la condición (a > b), en el
sentido de que, sólo se ejecuta si se cumple esta condición.
- La acción de la rama sino, en el ejemplo, la asignación max ß b,
está guardada o protegida por la condición contraria a la que
aparece en la construcción, es decir, (a ≤ b).

2.c Composición selectiva

Sintaxis: CASO <expresión_ordinal> SEA


<valor1> : <accion1>
<valor2> : <accion2>
...
<valorN> : <accionN>
[EN_OTRO_CASO <accionX>]
FINCASO

Aclaración: Los “corchetes” indicarán opcionalidad.

Ejemplo:
CASO opcion SEA
1: LEER(x);
2: LEER(y);
3: sum ß x + y;
4: ESCRIBIR(sum);
FINCASO

Semántica: Ejecución condicional y excluyente de una acción de entre varias acciones


posibles.

Comentarios:
- En primer lugar se evalúa si la expresión ordinal indicada toma el
<valor1>, si es así, se realiza la acción asociada y se termina la
acción selectiva, si no se cumple, se sigue comprobando el
siguiente valor, y así, sucesivamente.
- Considerando el ejemplo anterior, la ejecución de la acción
LEER(x) está guardada o protegida por la condición de que (opcion
= 1). Por otro lado, la acción LEER(y) está guardada o protegida
por la condición de que (opción ≠ 1 AND opción = 2). Así,
sucesivamente, hasta la última acción, ESCRIBIR(sum), que está
protegida por la condición (opción ≠ 1 AND opción ≠ 2 AND opción
≠ 3 AND opción = 4).
- Así pues, la estructura CASO es una abreviatura de una serie de
composiciones alternativas anidadas. Como se ve en el siguiente
gráfico, cada una de las instrucciones tiene las mismas
salvaguardas o condiciones que las activan, por lo que todas las

FP: Guía Rápida Notación Algorítmica (2003.10) 4


acciones se ejecutan bajo las mismas condiciones en ambos
casos.

CASO opc SEA


1: LEER(x);
2: LEER(y);
3: sum ß x + y;
4: ESCRIBIR(sum);
FINCASO

SI opc = 1 {opc = 1}

ENTONCES LEER(x);

SINO SI opc = 2 {opc ≠ 1} AND (opc =2}

ENTONCES LEER(y);

SINO SI opc = 3 {opc ≠ 1} AND {opc ≠ 2} AND (opc =2}

ENTONCES sum ß x + y;
{opc ≠ 1} AND {opc ≠ 2} AND
SINO SI opc = 4 {opc ≠ 3} AND (opc =4}

ENTONCES ESCRIBIR(sum);

SINO SEGUIR;

FINSI

FINSI

FINSI

FINSI

2.d Reescritura de decisiones

La composición condicional puede reescribirse mediante una composición alternativa de la


siguiente forma:
SI x < 0
SI x < 0
ENTONCES x ß –x;
ENTONCES x ß –x;
SINO SEGUIR;
FINSI
FINSI

La composición alternativa puede escribirse como una secuencia de dos composiciones


condicionales:
SI a > b
SI a > b ENTONCES max ß a;
ENTONCES max ß a; FINSI;
SINO max ß b; SI a ≤ b
FINSI ENTONCES max ß b;
FINSI

FP: Guía Rápida Notación Algorítmica (2003.10) 5


Repetición
3.a Bucle Mientras

Sintaxis: MIENTRAS <expresión_logica> HACER


<Acción>;
FINMIENTRAS

Ejemplo:
MIENTRAS x ≠ 0 HACER
sum ß sum + x;
LEER(x);
FINMIENTRAS

Semántica: Ejecución condicional y reiterada de la acción que se indica en la construcción,


mientras se evalúe a verdad la expresión lógica que aparece. Exactamente, se
siguen los siguientes pasos:

1. Se evalúa la expresión lógica que aparece en la construcción. Si se


incumple la condición (se evalúa a F la expresión lógica) se salta al paso 4.
2. Se realiza la acción indicada en la construcción
3. Se vuelve al paso 1.
4. Finaliza la ejecución del bucle.

Comentarios:
- La acción que se repite se denominará cuerpo del bucle.
- La condición que aparece en un bucle MIENTRAS, se denominará
condición de permanencia ya que, cuando se verifique (se evalúe a
V la expresión), continúa la ejecución del bucle.
- Ya que primero se comprueba la condición de permanencia y luego
se ejecuta el cuerpo del bucle, esta construcción implica que el
cuerpo del bucle puede realizarse 0, 1 ó más veces.

Ejemplo: Corregir ejemplo anterior (razonando porqué)

sum ß 0;
LEER(x);
MIENTRAS x ≠ 0 HACER
sum ß sum + x;
LEER(x);
FINMIENTRAS

3.b Bucle Repetir

Sintaxis: REPETIR
<Acción>;
HASTA <expresión_logica>;

Ejemplo:
REPERIR
LEER(x);
sum ß sum + x;
HASTA x = 0;

Semántica: Ejecución condicional y reiterada de la acción que se indica en la construcción,


hasta que se evalúe a verdad la expresión lógica que aparece. Exactamente,
se siguen los siguientes pasos:

1. Se realiza la acción indicada en la construcción.

FP: Guía Rápida Notación Algorítmica (2003.10) 6


2. Se evalúa la expresión lógica que aparece en la construcción. Si se cumple
la condición (se evalúa a V la expresión lógica) se salta al paso 4.
3. Se vuelve al paso 1.
4. Finaliza la ejecución del bucle.

Comentarios:
- La acción que se repite se denominará cuerpo del bucle (igual que
el bucle mientras)
- La condición que aparece en un bucle REPETIR, se denominará
condición de salida ya que, cuando se verifique (se evalúe a V la
expresión), concluye la ejecución del bucle.
- Siempre se cumple que la condición de salida de un bucle
REPETIR es la condición contraria a la condición de permanencia
de un bucle MIENTRAS, y viceversa.
- Ya que primero se ejecuta el cuerpo del bucle y luego se
comprueba la condición de salida, esta construcción implica que el
cuerpo del bucle puede realizarse 1 ó más veces.

Ejemplo: Corregir ejemplo anterior (razonando porqué)

sum ß 0;
REPETIR
LEER(x);
sum ß sum + x;
HASTA x = 0;

3.c Otras variedades

Dado que cuando se escribe un bucle, tenemos posibilidad de escribir o bien la condición
de permanencia o bien la de terminación (siempre, una es la contraria de la otra), y la
comprobación de estas condiciones puede hacerse al principio o al final del bucle, existen
realmente 4 variedades de bucles que se escriben en la siguiente tabla:

Condición de permanencia <CP> Condición de salida <CS>


MIENTRAS <CP> HACER HASTA <CS> HACER
Comprobación
cuerpo_bucle> <cuerpo_bucle>
al comienzo
FINMIENTRAS; FINHASTA;

HACER REPETIR
Comprobación
<cuerpo_bucle> cuerpo_bucle>
al final
MIENTRAS <CP>; HASTA <CS>

Todas estas variedades son equivalentes entre sí y puede reducirse su estudio a una única
estructura. En este curso, sólo se describen el bucle MIENTRAS y el REPETIR.
Cuando se estudie la semántica axiomática, se mostrará la equivalencia entre los bucles
MIENTRAS y REPETIR.

3.d Bucle Desde

Sintaxis:
DESDE <vcb> ß <VI> [DESCENDIENDO] HASTA <VF> [INCREMENTO <DELTA>] HACER
<Acción>;
FINDESDE;

Ejemplo:
DESDE i ß 1 HASTA 10 HACER
ESCRIBIR(i);
FINDESDE;

FP: Guía Rápida Notación Algorítmica (2003.10) 7


Semántica: Un bucle desde debe interpretarse, siempre, como una abreviatura de una
construcción muy común en programación que utiliza un bucle MIENTRAS.

Ejemplo: En el ejemplo anterior, el bucle DESDE debe interpretarse como:

i ß 1;
MIENTRAS i ≤ 10 HACER
ESCRIBIR(i);
i ß i +1;
FINMIENTRAS;

Comentarios:
- Siempre se utiliza una variable de tipo ordinal (tipos enumerables)
que se denomina variable de control del bucle, en el ejemplo i, y
que sirve para recorrer un subrango de un tipo ordinal.
- La variable de control del bucle, siempre se inicializa al valor inicial
indicado en la construcción DESDE, antes del bucle MIENTRAS.
- El bucle DESDE se interpreta como un bucle MIENTRAS, en el que
la condición de permanencia (en el caso de bucles ascendentes)
es que el valor de la variable de control del bucle sea menor o igual
que el valor final, expresado en la construcción DESDE.

¿Por qué i ≤ 10?

El bucle termina cuando i >10, es decir, la


condición de terminación es i > 10. Por lo
tanto, la condición de permanencia
(condición que aparece en el mientras) es la
i contraria, i ≤ 10

1 10

Por lo tanto, y para un bucle desde ascendente, siempre la


condición que se evalúa es que la <vcb> sea menor igual que el
<VF>. Así, si VF ≥ VI, se tiene que el número de vueltas que da un
bucle desde es siempre: VF – VI + 1. En caso contrario, si VF < VI,
al tratarse de un bucle mientras, y comprobarse antes la condición
de permanencia, no se realizaría nunca el cuerpo del bucle.

Ejemplos: DESDE i ß 1 HASTA 0 HACER


ESCRIBIR(i);
FINDESDE;

- El cuerpo del bucle MIENTRAS es el mismo que el bucle DESDE,


salvo que la última acción del bucle MIENTRAS equivalente es
siempre incrementar (o decrementar, según el caso) el valor de la
variable de control del bucle.

FP: Guía Rápida Notación Algorítmica (2003.10) 8


IV. Acciones con nombre
Sintaxis: Una acción con nombre se define como sigue:

ACCION <identificador_acción> ES
INICIO
<Acción>;
FINACCION;

Una acción con nombre se utiliza, haciendo uso del identificador asociado a la
acción en su definición.

<identificador_acción>

Ejemplo:

ACCION EscribirMenu ES
INCIO
ESCRIBIR(‘*** MENU ***’);
ESCRIBIR(‘1. Leer matrices’);
ESCRIBIR(‘2. Sumar matrices’);
ESCRIBIR(‘0. Salir’);
FINACCION;

...
EscribirMenu;
ESCRIBIR(‘Introduzca una opción [0-2]: ‘);
LEER(opcion);
...

Semántica: El significado de poner el nombre de una acción definida como una acción con
nombre, es la ejecución de las acciones que encierra su definición.

FP: Guía Rápida Notación Algorítmica (2003.10) 9


V. Estructura general de un algoritmo
Una vez introducidos todos los elementos de la notación algorítmica, la estructura general de
un algoritmo se ajustará al siguiente patrón:

ALGORITMO <identificador_algoritmo>;

/* Opcionalmente, puede declararse una sección de constantes en la que aparecerá la


definición de los datos constantes que manipula el algoritmo */
[CONSTANTES
<id_cte> = <valor_literal>;
... ]

/* En casi todos los casos, se requiere la definición de una sección de constantes en la que
aparezca la definición de los datos variables, por abuso del lenguaje “variables”, que maneja el
algoritmo */
VARIABLES
<id_variable> : <tipo>;
...

/* Opcionalmente, pueden declararse acciones con nombre, en cualquier caso, antes del
cuerpo principal del algoritmo */
[ ACCION <id_accion> ES
INICIO
<Acción>;
FINACCION;
... ]

/* El cuerpo principal del algoritmo consistirá en una secuencia de acciones contenidas entre
las palabras reservadas INICIO y FIN */
INICIO
<Acción>;
FIN

FP: Guía Rápida Notación Algorítmica (2003.10) 10