Documente Academic
Documente Profesional
Documente Cultură
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).
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.
<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.
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>
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
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
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.
Sintaxis: SI <expresión_logica>
ENTONCES <accion1>
SINO <accion2>
FINSI
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).
Ejemplo:
CASO opcion SEA
1: LEER(x);
2: LEER(y);
3: sum ß x + y;
4: ESCRIBIR(sum);
FINCASO
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
SI opc = 1 {opc = 1}
ENTONCES LEER(x);
ENTONCES LEER(y);
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
Ejemplo:
MIENTRAS x ≠ 0 HACER
sum ß sum + x;
LEER(x);
FINMIENTRAS
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.
sum ß 0;
LEER(x);
MIENTRAS x ≠ 0 HACER
sum ß sum + x;
LEER(x);
FINMIENTRAS
Sintaxis: REPETIR
<Acción>;
HASTA <expresión_logica>;
Ejemplo:
REPERIR
LEER(x);
sum ß sum + x;
HASTA x = 0;
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.
sum ß 0;
REPETIR
LEER(x);
sum ß sum + x;
HASTA x = 0;
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:
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.
Sintaxis:
DESDE <vcb> ß <VI> [DESCENDIENDO] HASTA <VF> [INCREMENTO <DELTA>] HACER
<Acción>;
FINDESDE;
Ejemplo:
DESDE i ß 1 HASTA 10 HACER
ESCRIBIR(i);
FINDESDE;
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.
1 10
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.
ALGORITMO <identificador_algoritmo>;
/* 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