Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE CIENCIAS
TEMA 4. Esquemas de
Composición de Acciones
4.1 Introducción
4.2 Composición Secuencial de Acciones
4.3 Esquemas Condicionales
Secuencial
{ . . . }
Condicionales
if
if/else
switch
Iterativas
while
for
do until
Universidad de Oviedo
FACULTAD DE CIENCIAS
Sintaxis
{<acción-1> <acción-2> ... <acción-n>}
Semántica
Ejecución, una sola vez, de las acciones en el orden en el que están escritas
acción-1
acción-n
Estado
Final
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejemplos de Esquemas Secuenciales
Ei Comp. Secuencial Ef
Ei a1 E’ a2 E’’ ..... an Ef
Asegurar la coherencia Acción/Estado
Universidad de Oviedo
FACULTAD DE CIENCIAS Diseño de Esquemas Secuenciales
Pseudocódigo
Lea número1
Lea número2
suma <- número1 + número2
Escriba un mensaje mostrando el valor de número1, el valor de
número2 y el resultado de realizar su suna
Universidad de Oviedo
FACULTAD DE CIENCIAS Diseño de Esquemas Secuenciales
Implementación en Octave
x=input(“Dame un numero\n”)
y=input(“Dame otro numero\n”)
suma=x+y;
printf(“El valor de x es %f, el de y es %f y el de su suma es %f”, x,
y, suma);
Universidad de Oviedo
FACULTAD DE CIENCIAS
Diseño de Esquemas
Condicionales
Escribimos la ETIQUETA
de la calificación:
Sumamos las tres notas Hallamos la media Suspenso, Aprobado,
Notable,
Sobresaliente
Universidad de Oviedo
FACULTAD DE CIENCIAS
Diseño de Esquemas
Condicionales
PSEUDOCÓDIGO
1. Leer las tres notas
2. Sumar los valores
3. Calcular la media (N)
4. Si N < 5 Entonces Escribimos “Suspenso”
5. Si 5 <= N < 7 Entonces Escribimos “Aprobado”
6. Si 7 <= N < 9 Entonces Escribimos “Notable”
7. Si N >= 9 Entonces Escribimos “Sobresaliente”
Universidad de Oviedo
FACULTAD DE CIENCIAS
Diseño de Esquemas
Condicionales
El Esquema Condicional if
if (<condición>) <acción>
El Esquema if/else
if (<condición>) <acción> else <acción>
El Esquema if/elseif/else
if (<condición>)
<acción>
elseif (<condición>)
<acción>
else
<acción>
Universidad de Oviedo
FACULTAD DE CIENCIAS
Diseño de Esquemas
Condicionales
Ei Esq. Condicional Ef
Ei Cj aj Ef
Sintaxis
if (<condición>) <acción> end
Semántica
Se evalúa la condición, si es cierta se ejecuta la acción y si es falsa,
nada.
Diagrama de Flujo Estado
Inicial
falso
condición
cierto
acción
Estado
Final
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio
Entrada: número
Sintaxis
if (<condición>) <acción-1> else <acción-2> end
Semántica
Se evalúa la condición, si es cierta se ejecuta la acción-1 y si es falsa, la
acción-2
Diagrama de Flujo Estado
Inicial
cierto falso
condición
acción-1 acción-2
Estado
Final
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio
Entrada: número
Entrada: número
Sintaxis
if (<condición-1>)
<accion-1>
elseif (<condición-2>)
<accion-2>
elseif
…..
else
<acción-n>
endif
Semántica
Se evalúa la condición, si es cierta se ejecuta la acción-1 y si es falsa se
comprueba si se verifica la condición 2 si es cierta se ejecuta la acción 2
…………
El último bloque else no es obligatorio
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejemplos de Esquemas
Condicionales con if e if/else
if (a <= b)
if (c < d) if (a <= b)
a = b-2; if (c < d)
a = b-2;
elseif (d < e)
elseif (d < e)
b = b+3; b = b+3;
else end
if (e > f) else
c = a+5 if (e > f)
endif c = a+5;
endif end
endif end
if (a <= b)
if (c < d)
a = b-2;
else
if (d < e)
b = b+3;
end
end
elseif (e > f)
c = a+5;
end
¿Y aquí?
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio
x1 x2
SI NO
x1 x3 x2 x3
SI NO SI NO
Sabemos
Entrada: nota
if (X == 1) switch X
Bloque_1; case 1
elseif(X == 2) Bloque_1;
Bloque_2; case 2
else Bloque_2;
Bloque_3; otherwise
endif Bloque_3;
endswitch
Universidad de Oviedo
FACULTAD DE CIENCIAS El Esquema Condicional switch
a=input("Dame un numero\n");
b=input("Dame otro numero\n");
opcion=menu("Calculadora","Suma", "Producto", "Division");
switch opcion
case 1
printf("La suma de a=%.2f mas b=%.2f es %.2f\n", a, b, a+b);
case 2
printf("El producto de a=%.2f por b=%.2f es %.2f\n", a, b, a*b);
case 3
printf("La división de a=%.2f entre b=%.2f es %.2f\n", a, b, a/b);
endswitch
Universidad de Oviedo
FACULTAD DE CIENCIAS El Esquema Condicional switch
Ventaja de emplear el
switch (X) switch frente a un if
case “Mañana"
printf(“Buenos días\n”);
case “Tarde”
printf(“Buenas tarde\n”);
othercase
printf(“Buenas noches\n”);
endswitch
Sabemos
Entrada: Cadena de texto con la nota
Salida: Mensaje con el intervalo de calificaciones con el que se corresponde
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejemplo: Problema de las
notas
El Esquema while
while(<condición>) <acción> end
El Esquema for
for (X) <acción> end
El Esquema do until
do <acción> until (<condición>)
El Esquema Iterativo while
Universidad de Oviedo
FACULTAD DE CIENCIAS
Sintaxis
while(<condición>) <acción> end
Semántica
Mientras que la condición sea cierta se repite la acción. Luego:
• La acción se repite un número no determinado de veces que puede ser 0
• Al finalizar la condición es falsa, luego la acción debe modificar el estado
para que la condición se evalúe a falso alguna vez.
Diagrama de Flujo Estado
Inicial
cierto
condición acción
falso
Estado
Final
Universidad de Oviedo Ejemplo: un programa que escribe los
FACULTAD DE CIENCIAS
números enteros de 1 a 10
Sabemos
Entrada:
Salida: Mensaje indicando cual es esa potencia
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejemplo: Cálculo de la primera potencia
de 2 mayor o igual que 1000
x = 1; # 2^0
exponente = 0;
while (x <= 1000)
exponente = exponente + 1;
x = 2 ** exponente;
end
printf (“La potencia es 2^ %i = %i“, exponente, x);
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejercicio: Suma de los números
introducidos por teclado
Sabemos
Entrada: Números que se introducen por teclado
Salida: Mensaje indicando cual es la suma de todos los números introducidos
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio: Suma de los números
introducidos por teclado
Sabemos
Entrada: Número
Salida: Mensaje mostrando el número
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio: Verificar entrada
Sabemos
Entrada: Vector de números
Salida: Mensaje mostrando el número mayor y su posición en el vector.
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejercicio: Buscar el mayor número de
un vector
Sabemos
Entrada: Vector de números
Salida: Muestra las componentes pares del vector, en orden inverso a su aparición en el
vector.
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejercicio: Recorrer las componentes
pares de un vector al revés
Sabemos
Entrada:
Salida: Muestra los 10 primeros números de la serie de Fibonacci.
0, 1, 1, 2, 3, 5, 8, 13, ……
f0 = 0
f1 = 1
…
fn = fn-1+ fn-2
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio: Serie de Fibonacci
Sabemos
Entrada: Una cadena de caracteres.
Salida: Muestra un mensaje indicando si la palabra es un palíndromo o no.
Sintaxis
for X <accion> end
Semántica
Se repite la acción para todos los elementos de X. Luego:
• La acción se repite un número determinado de veces que puede ser 0
• Los valores de X los recorre automáticamente el bucle FOR.
Diagrama de Flujo
Estado
Estado
Inicial
Inicial
X<=4
Quedan X Desde X=1
hasta 4 acción
Para cada X acción
X>4
No quedan X Estado
Estado
Final
Final
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejemplo típico de uso de for
Observaciones
La variable i toma valores de 1 a N.
Para cada valor de i que cumple la condición i<=N se ejecuta la
acción, luego la acción puede no ejecutarse nunca.
La acción no debe modificar a la variable (de control) i.
Universidad de Oviedo
FACULTAD DE CIENCIAS Bucle for descendente
i=10; i=10;
while (i>=1) while (i>=1)
WHILE disp(i); disp(i);
--i; i=i-2;
endwhile endwhile
Universidad de Oviedo
FACULTAD DE CIENCIAS Ejercicio: Serie de Fibonacci
# WHILE # FOR
fib=[0, ones(1,9)]; fib=[0, ones(1,9)];
i=3; for i=3:length(fib)
while (i<=length(fib)) fib(i)=fib(i-1)+fib(i-2);
fib(i)=fib(i-1)+fib(i-2); endfor
i=i+1; disp(fib);
endwhile
disp(fib);
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejercicio: Cálculo de la media de N
números
Sabemos
Entrada: -
Salida: Muestra la media de los N números introducidos por pantalla.
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejercicio: Cálculo de la media de N
números
N = 25; #N > 0
suma = 0;
for i = 1:N
x=input(“Numero?\n”); N = 25; #N > 0
suma += x; suma = 0;
end i = 1;
media = suma / N; while (i <= N)
printf(“Media = %.2f\n”,media) x=input(“Numero?\n”);
suma += x;
++i;
end
media = suma / N;
printf(“Media = %.2f\n”,media)
Sabemos
Entrada: Una matriz.
Salida: Muestra la suma de los elementos de la matriz.
Universidad de Oviedo
FACULTAD DE CIENCIAS
Ejercicio: Cálculo de la suma de los
elementos de una matriz
Sabemos
Entrada: Una matriz.
Salida: Muestra la matriz elemento a elemento.
Universidad de Oviedo
FACULTAD DE CIENCIAS
FOR anidados. Ejercicio: Mostrar una
matriz elemento a elemento
Sabemos
Entrada: n, componentes de la matriz.
Salida: Muestra la matriz cuadrada.
Universidad de Oviedo
FACULTAD DE CIENCIAS
FOR anidados. Ejercicio: Pedir un
matriz elemento a elemento
...
# Pedimos las componentes fila a fila
for i = 1:n # bucle que recorre las filas
printf("Elementos fila %i\n", i);
for j=1:n #bucle que recorre las columnas (en cada fila)
printf("m(%i,%i)=",i,j);
m(i,j)=input(“");
# Comprobamos componente sin decimales
while (floor(m(i,j))!=m(i,j))
printf(“Componente no entera. Dame otra\n");
n=input("");
endwhile
endfor
endfor
disp(m);
Universidad de Oviedo
FACULTAD DE CIENCIAS El Esquema Iterativo do/until
Sintaxis
do
<acción>
until(<condición>);
Semántica
Se repite la acción hasta que la condición sea cierta
Es equivalente al esquema
<acción> while !(<condición>) <acción>
luego la acción se ejecuta al menos una vez
Diagrama de Flujo
acción
falso
condición
cierto
Universidad de Oviedo
FACULTAD DE CIENCIAS
do/until. Ejercicio: Dígitos de un
número entero positivo al revés
Sabemos
Entrada: número entero >=0.
Salida: número escrito al revés.
Universidad de Oviedo
FACULTAD DE CIENCIAS
do/until. Ejercicio: Dígitos de un
número entero positivo al revés.
Sabemos
Entrada: número entero >=0.
Salida: número cifrar del número introducido.
Universidad de Oviedo
FACULTAD DE CIENCIAS
do/until. Ejercicio: Contar las cifras de
un número entero positivo
Sabemos
Entrada: Una cadena de caracteres.
Salida: Muestra un mensaje indicando si la palabra es un palíndromo o no.