| 5.2 SELECCIÓN |
La estructura de SELECCION permite la ejecución de un bloque de instrucciones o de otro dependiendo del valor de una expresión lógica denominada CONDICION. La forma general de la selección es:
![]() |
si (condición) entonces <bloque instrucciones 1> sino <bloque de instrucciones 2> fin_si |
Donde, <condición> es la expresión lógica que se evalúa para determinar el bloque de instrucciones a ejecutar, <bloque instrucciones 1> es el conjunto de instrucciones que se ejecuta si la condición evalúa a verdadero y <bloque instrucciones 2> es el conjunto de instrucciones que se ejecuta si la condición evalúa a falso.
Dados un número entero entre 100
y 999
determinar si es palíndrome o no lo
es. Un número palíndrome si se lee igual al derecho y al revés.
Por ejemplo, 101 es palíndrome
(al derecho se lee 101 y al
revés se lee 101), mientras
que 203 no lo es (al derecho
se lee 203 y al revés se lee
302).
DIALOGO
| OBJETOS DESCONOCIDOS | Un texto. |
| OBJETOS CONOCIDOS | Un número entero entre 100 y 999. |
| CONDICIONES | El texto debe indicar si el número ingresado es palíndrome o no lo es. |
ESPECIFICACIÓN
| ENTRADAS | n Î Enteros, (n es el número ingresado). |
| SALIDAS | Texto Î Cadenas, (Texto es una cadena de caracteres indicando si el número es o no palíndrome). |
| CONDICIONES |
Texto = con u = las unidades de n y c = las centenas de n |
DISEÑO
Primera Iteración:
| Inicio |
Segunda Iteración:
| Inicio |
Iteración Final:
|
n:
entero
/* se define
la variable para el número */ si
(u = c)
entonces escribir( “El número
”) |
PRUEBA DE ESCRITORIO
Este algoritmo cuenta con trece (13) líneas, las cuatro primeras (1-4), son para definir las variables usadas y las últimas nueve (5-13) son las instrucciones que son aplicadas sobre dichos datos. De esta manera la prueba de escritorio se debe realizar solamente sobre las líneas (5-13), teniendo en cuenta los valores para las variables.
Primer prueba de escritorio
|
LINEA |
n |
u |
c |
texto |
ENTRADA |
SALIDA |
| 5 |
404 |
404 |
||||
| 6 |
4 |
|||||
| 7 |
4 |
|||||
| 8 |
La condición es evaluada a verdadero, por lo tanto se pasa a la línea 9, la siguiente línea al entonces de la selección en ejecución. | |||||
| 9 |
es
palíndrome |
|||||
| 10 |
Se salta hasta el fin_si de la selección en ejecución, es decir, hasta la línea 12 | |||||
| 12 |
Se salta a la siguiente línea. | |||||
| 13 |
El
número es palíndrome |
|||||
Segunda prueba de escritorio
| LINEA |
n |
u |
c |
texto |
ENTRADA |
SALIDA |
| 5 |
725 |
404 |
||||
| 6 |
7 |
|||||
| 7 |
5 |
|||||
| 8 |
La condición es evaluada a falso, por lo tanto se pasa a la línea 11, la siguiente línea al sino de la selección en ejecución. | |||||
| 11 |
no
es palíndrome |
|||||
| 12 |
Se salta a la siguiente línea. | |||||
| 13 |
El
número no es palíndrome |
|||||
Dados
tres números enteros calcular el máximo.
DIALOGO
| OBJETOS DESCONOCIDOS | Tres números enteros. |
| OBJETOS CONOCIDOS | Un número entero. |
| CONDICIONES | El número buscado es el máximo de los tres números dados. |
ESPECIFICACIÓN
| ENTRADAS | A, B, C Î Enteros, (A es el primero número, B es el segundo número y C es el tercer número). |
| SALIDAS | Mayor Î Enteros, (Mayor es el máximo de los tres números dados). |
| CONDICIONES |
|
DISEÑO
Primera Iteración:
| Inicio |
Segunda Iteración:
| Inicio |
Iteración Final:
| a
: entero
/* se define la variable para el
primer número */ leer( a
) /* lee el primer
número */ si
a fin_si escribir( “El máximo de los tres es: ”, mayor ) |
PRUEBA DE ESCRITORIO
Este algoritmo cuenta con diecisiete (17) líneas, las cuatro primeras (1-4), son para definir las variables usadas y las últimas trece (5-17) son las instrucciones que son aplicadas sobre dichos datos. De esta manera la prueba de escritorio se debe realizar solamente sobre las líneas (5-17), teniendo en cuenta los valores para las variables.
Primer prueba de escritorio
|
LINEA |
a |
b |
c |
mayor |
ENTRADA |
SALIDA |
| 5 |
50 |
50 |
||||
| 6 |
140 |
140 |
||||
| 7 |
30 |
30 |
||||
| 8 |
La condición es evaluada a falso, por lo tanto se pasa a la línea 11, la siguiente al sino de la selección en ejecución. | |||||
| 11 |
La condición es evaluada a verdadero, por lo tanto se pasa a la línea 12, la siguiente línea al entonces de la selección en ejecución. | |||||
| 12 |
140 |
|||||
| 13 |
Se salta hasta el fin_si de la selección en ejecución, es decir, hasta la línea 15 | |||||
| 15 |
Se salta a la siguiente línea. | |||||
| 16 |
Se salta a la siguiente línea. | |||||
| 17 |
El máximo de los tres es: 140
|
|||||
Segunda prueba de escritorio
|
LINEA |
a |
b |
c |
mayor |
ENTRADA |
SALIDA |
| 5 |
90 |
90 |
||||
| 6 |
-50 |
-50 |
||||
| 7 |
70 |
70 |
||||
| 8 |
La condición es evaluada a verdadero, por lo tanto se pasa a la línea 9, la siguiente al entonces de la selección en ejecución. | |||||
| 12 |
90 |
|||||
| 13 |
Se salta hasta el fin_si de la selección en ejecución, es decir, hasta la línea 16 | |||||
| 16 |
Se salta a la siguiente línea. | |||||
| 17 |
El
máximo de los tres es: 90 |
|||||
Tercer prueba de escritorio
|
LINEA |
a |
b |
c |
mayor |
ENTRADA |
SALIDA |
| 5 |
20 |
20 |
||||
| 6 |
10 |
10 |
||||
| 7 |
30 |
30 |
||||
| 8 |
La condición es evaluada a falso, por lo tanto se pasa a la línea 11, la siguiente al sino de la selección en ejecución. | |||||
| 11 |
La condición es evaluada a falso, por lo tanto se pasa a la línea 14, la siguiente línea al sino de la selección en ejecución. | |||||
| 14 |
30 |
|||||
| 15 |
Se salta a la siguiente línea. | |||||
| 16 |
Se salta a la siguiente línea. | |||||
| 17 |
El
máximo de los tres es: 30 |
|||||
Como se puede apreciar en los ejemplos anteriores, una selección puede contener (en cualquiera de sus dos bloques de instrucciones), lecturas, escrituras, asignaciones u otras selecciones.
Generalmente, cuando en la especificación de un problema se tiene una variable especificada de la siguiente forma:
| <expresión 1> si <condición 1> <expresión 2>
si
<condición 2> <variable> = ..... <expresión n> si <condición n> <expresión final> en otro caso |
Esta especificación se puede representar mediante el siguiente algoritmo:
| si<condición1>
entonces <variable> := <expresión 1> sino si <condición 2>entonces <variable> := <expresión 2> sino ............... sino si <condición n>entonces <variable>:= <expresión n> sino <variable> := <expresión final> fin_si .............. fin_si fin_si |