|
CarlosPes.com
> Curso
de Diseño de Algoritmos
> Instrucción interrumpir |
|
Instrucción
interrumpir
|
|
|
|
|
¿Qué es
una instrucción de control de salto interrumpir?
|
|
En
pseudocódigo, para escribir una instrucción
de salto interrumpir, se utiliza la sintaxis: |
|
|
|
La
instrucción de salto interrumpir siempre se usa para
interrumpir (romper) la ejecución normal de un bucle, es
decir, la instrucción interrumpir finaliza (termina) la
ejecución de un bucle y, por tanto, el control del programa se transfiere (salta) a la primera
instrucción
después del bucle.
Ejemplo 1: Estúdiese el siguiente algoritmo: |
|
algoritmo
Numeros_opuestos_del_menos_10_al_mas_10
variables
entero n, a
inicio
a ← 0
hacer
escribir(
"Introduzca un número entero: " )
leer( n )
si ( n = 0 )
escribir( "ERROR: El cero no tiene opuesto." )
interrumpir
/* En el caso de que n sea un cero,
el bucle se interrumpe. */
fin_si
escribir( "El
opuesto es: ", -n )
a ← a + n
mientras ( n >= -10 y n <= 10 )
escribir( "Suma: ", a )
fin |
|
|
El
algoritmo puede ser la solución del problema siguiente:
Diseñe el agoritmo de un programa que:
1º) Pida por teclado un número (dato entero).
2º) Si el número introducido por el usuario es
distinto de cero, muestre por pantalla el mensaje:
"El opuesto es: <-número>".
3º) Repita los pasos 1º y 2º, mientras que,
el usuario introduzca un número mayor o igual que -10 y
menor o igual que 10.
Pero, si el usuario introduce un cero, el bucle también
finaliza, mostrándose por pantalla el mensaje:
"ERROR: El cero no tiene opuesto.".
4º) Muestre por pantalla la suma de los números
introducidos por el usuario.
En pantalla: |
|
Introduzca un número
entero: 15
El opuesto es: -15
Suma: 15 |
|
|
La
traza del algoritmo es: |
|
|
|
El
bucle ha finalizado porque la condición ( n >= -10 y
n <= 10 ) es falsa, ya que, 15 no es mayor o igual que -10 y
menor o igual que 10.
Sin embargo, el bucle también puede finalizar, no porque sea
falsa la condición ( n >= -10 y n <=
10 ), sino, porque se ejecute la instrucción interrumpir.
Esto ocurrirá cuando el usuario introduzca un cero. Por
ejemplo: |
|
Introduzca un número
entero: 8
El opuesto es: -8
Introduzca un número entero: -7
El opuesto es: 7
Introduzca un número entero: 0
ERROR: El cero no tiene opuesto.
Suma: 1 |
|
|
La
traza en este caso es: |
|
|
|
Normalmente,
cuando en un bucle se utiliza una instrucción interrumpir,
la ejecución de ésta se condiciona.
En el ejemplo 1, el bucle se interrumpe si la condición ( n
= 0 ) es verdadera. Nótese que, dicha condición
no está contemplada en la condición de salida
estándar del bucle, por lo que, a la condición (
n = 0 ) se le considera condición de salida
interna del
bucle.
Ejemplo 2: No obstante, el problema
también se puede
resolver sin hacer uso de la instrucción interrumpir: |
|
algoritmo Numeros_opuestos_del_menos_10_al_mas_10
variables
entero numero, acumulador
inicio
acumulador ← 0
hacer
escribir( "Introduzca un número entero: " )
leer( numero )
si ( numero = 0 )
escribir( "ERROR: El cero no tiene opuesto." )
sino
escribir( "El opuesto es: ", -numero )
acumulador ← acumulador + numero
fin_si
mientras ( numero >= -10 y numero <= 10 y
numero <> 0 )
escribir( "Suma: ", acumulador )
fin |
|
|
Obsérvese
que, en este algoritmo, sí se contempla en la condición
de salida del bucle la posibilidad de que el usuario teclee un cero, en
cuyo caso, el bucle deja de iterar de forma natural.
Los resultados por pantalla de este algoritmo son idénticos a los del algoritmo anterior. |
|