SELECCIÓN

 

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.

5.2.1   Ejemplos de selección.

        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 =“Es palíndrome ” si u = c,   “No es palíndrome” en otro caso

con u = las unidades de n y c = las centenas de n

DISEÑO

Primera Iteración:

Inicio
PASO 1.   Leer el número.
PASO 2.   Determinar si es palíndrome o no.
PASO 3.    escribir el texto resultado.
Fin

 

Segunda Iteración:

Inicio
PASO 1.   Leer el número.
PASO 2.   Determinar si es palíndrome o no
PASO 2.1. Calcular las unidades del número
PASO 2.2. Calcular las decenas del número.
PASO 2.3.    Calcular el texto resultado.
PASO 3. escribir el texto resultado.
Fin

Iteración Final:

n: entero /* se define la variable para el número */
u: entero /* se define la variable unidades del número*/
c: entero /*se define la variable centenas del número*/
texto: cadena /* define la variable para el texto */

leer( n ) /* lee el número */
u := n mod 10 /* calcula las unidades del número */
c := ( n / 100 ) mod 10 /* calcula las centenas del número */

si (u = c) entonces
  texto :=“es palíndrome /* el número es palíndrome */
sino
 
texto := “no es palíndrome /* el número no es palíndrome */
fin_si

escribir( “El número ”)
escribir( texto )

 

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
PASO 1.   Leer los tres números
PASO 2.   Determinar cual es el máximo
PASO 3.    escribir el máximo
Fin

 

Segunda Iteración:

Inicio
PASO 1.  Leer los tres números
PASO 1.1.   Leer el primer número
PASO 1.2. Leer el segundo número
PASO 1.3. Leer el tercer número
PASO 2.    Determinar cual es el máximo Si el primer número es mayor o igual a los otros dos números el primero es el máximo.Si no es así y si el segundo número es mayor o igual a los otros dos números el segundo es el máximo.De otra manera, se tiene que el tercer número es el máximo.
PASO 3. escribir los resultados
Fin

 

Iteración Final:

a : entero /* se define la variable para el primer número */
b : entero /* se define la variable para el segundo número */
c : entero /*se define la variable para el tercer número */
mayor : entero /*se define la variable para el máximo */

leer( a ) /* lee el primer número */
leer( b ) /* lee el segundo número */
leer( c ) /* lee el tercer número */

si a b | a c entonces
mayor
:= a /* el máximo es a pues es mayor que b y c */
sino
si
b a | b c entonces
mayor := b /* el máximo es b pues es mayor que a y c */
sino
mayor := c /* sino es ni a ni b entonces es c */
fin_si

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

 



Universidad Nacional de Colombia
Carrera 30 No 45-03 - Edificio 477
Bogotá D.C. - Colombia
PBX: 3165000
webmaster@unal.edu.co

Aviso Legal - Copyright
Gobierno en LíneaAgencia de Noticias UN