algoritmos selectivos multiples

10
Usando la estructura de decisión múltiple se evaluará una expresión que podrá tomar n valores distintos, 1, 2, 3,...., n y según que elija uno de estos valores en la condición, se realizará una de las n acciones o lo que es igual, el flujo del algoritmo seguirá sólo un determinado camino entre los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la acción 1, si toma el valor 2 ejecutará la acción 2, si toma el valor N realizará la acción N. Ejemplo 1: Diseñar un algoritmo tal que dados como datos dos variables de tipo entero, obtenga el resultado de la siguiente función:

description

trabajo algoritmos selectivos multiples

Transcript of algoritmos selectivos multiples

Page 1: algoritmos selectivos multiples

Usando la estructura de decisión múltiple se evaluará una expresión que podrá

tomar n valores distintos, 1, 2, 3,...., n y según que elija uno de estos valores en la

condición, se realizará una de las n acciones o lo que es igual, el flujo del

algoritmo seguirá sólo un determinado camino entre los n posibles.

Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la

acción 1, si toma el valor 2 ejecutará la acción 2, si toma el valor N realizará la

acción N.

Ejemplo 1:

Diseñar un algoritmo tal que dados como datos dos variables de tipo entero,

obtenga el resultado de la siguiente función:

Page 2: algoritmos selectivos multiples

Ejemplo 2.

Dados como datos la categoría y el sueldo de un trabajador, calcule el aumento

correspondiente teniendo en cuenta la siguiente tabla. Imprimir la categoría del

trabajador y el nuevo sueldo.

Definición de variables:

Cate = categoría

Sue = sueldo

Nsue = nuevo sueldo

ALGORITMO

Inicio

Leer (cate, sue)

En caso que cate sea

1: hacer nsue <-- sue * 1.15

2: hacer nsue <-- sue * 1.10

3: hacer nsue <-- sue * 1.08

4: hacer nsue <-- sue * 1.07

Fin_caso_que

Escribir (cate, nsue)

Fin

Page 3: algoritmos selectivos multiples

¿Qué es una instrucción de control alternativa múltiple? Una instrucción alternativa múltiple permite seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. En pseudocódigo, para escribir una alternativa múltiple se utiliza la sintaxis: segun_sea ( <expresión> ) <lista_de_valores_1> : <bloque_de_instrucciones_1> <lista_de_valores_2> : <bloque_de_instrucciones_2> ... <lista_de_valores_n> : <bloque_de_instrucciones_n> [ sino : <bloque_de_instrucciones_n+1> ] fin_segun_sea El resultado de evaluar la <expresión> debe ser un valor perteneciente a un tipo de dato finito y ordenado, es decir, entero, lógico, carácter, enumerado o subrango. Dependiendo del valor obtenido al evaluar la <expresión>, se ejecutará un bloque de instrucciones u otro. En las listas de valores se deben escribir los valores que determinan el bloque de instrucciones a ejecutar, teniendo en cuenta que, un valor sólo puede aparecer en una lista de valores. Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1> después de sino :. Este bloque de instrucciones se ejecutará en el caso de que el valor obtenido al evaluar la <expresión>, no se encuentre en ninguna de las listas de valores especificadas.

Ejemplo 1: Se quiere diseñar el algoritmo de un programa que: 1º) Pida por teclado el número (dato entero) de un día de la semana. 2º) Muestre por pantalla el nombre (dato cadena) correspondiente a dicho día. Nota: Si el número de día introducido es menor que 1 ó mayor que 7, se mostrará el mensaje: "ERROR: Día incorrecto.". En pantalla:

Algoritmo propuesto:

algoritmo Dia_de_la_semana variables entero dia inicio

Page 4: algoritmos selectivos multiples

escribir( "Introduzca día de la semana: " ) leer( dia ) segun_sea ( dia ) 1 : escribir( "Lunes" ) 2 : escribir( "Martes" ) 3 : escribir( "Miércoles" ) 4 : escribir( "Jueves" ) 5 : escribir( "Viernes" ) 6 : escribir( "Sábado" ) 7 : escribir( "Domingo" ) sino : escribir( "ERROR: Día incorrecto." ) fin_segun_sea fin

Cuando en una lista de valores de una alternativa múltiple aparece más de un valor, estos se escriben separados por el carácter coma (,). Estúdiese el siguiente ejemplo.

Ejemplo 2: En la siguiente tabla se muestran las categorías a las que pertenecen los signos del zodíaco:

Se quiere diseñar el algoritmo de un programa que: 1º) Muestre el listado de los signos del zodíaco, con sus números asociados. 2º) Pida por teclado un número (dato entero) asociado a un signo del zodíaco. 3º) Muestre la categoría a la que pertenece el signo del zodíaco seleccionado.

Page 5: algoritmos selectivos multiples

Nota: Si el número introducido por el usuario, no está asociado a ningún signo del zodíaco, se mostrará el mensaje: "ERROR: <número> no está asociado a ningún signo.". En pantalla:

Una posible solución es:

algoritmo Signo_del_zodiaco

Page 6: algoritmos selectivos multiples

variables entero numero inicio escribir( "Listado de signos del zodíaco:" ) escribir( "1. Aries" ) escribir( "2. Tauro" ) escribir( "3. Géminis" ) escribir( "4. Cáncer" ) escribir( "5. Leo" ) escribir( "6. Virgo" ) escribir( "7. Libra" ) escribir( "8. Escorpio" ) escribir( "9. Sagitario" ) escribir( "10. Capricornio" ) escribir( "11. Acuario" ) escribir( "12. Piscis" ) escribir( "Introduzca número de signo: " ) leer( numero ) segun_sea ( numero ) 1, 5, 9 : escribir( "Es un signo de Fuego." ) 2, 6, 10 : escribir( "Es un signo de Tierra." ) 3, 7, 11 : escribir( "Es un signo de Aire." ) 4, 8, 12 : escribir( "Es un signo de Agua." ) sino : escribir( "ERROR: ", numero, " no está asociado a ningún signo." ) fin_segun_sea fin

Otra solución es: algoritmo Signo_del_zodiaco variables entero numero cadena categoria inicio escribir( "Listado de signos del zodíaco:" ) escribir( "1. Aries" ) escribir( "2. Tauro" ) escribir( "3. Géminis" ) escribir( "4. Cáncer" ) escribir( "5. Leo" ) escribir( "6. Virgo" ) escribir( "7. Libra" ) escribir( "8. Escorpio" ) escribir( "9. Sagitario" ) escribir( "10. Capricornio" ) escribir( "11. Acuario" ) escribir( "12. Piscis" ) escribir( "Introduzca número de signo: " ) leer( numero ) segun_sea ( numero mod 4 ) 1 : categoria ← "Fuego" 2 : categoria ← "Tierra" 3 : categoria ← "Aire" 0 : categoria ← "Agua" fin_segun_sea

Page 7: algoritmos selectivos multiples

si ( numero >= 1 y numero <= 12 ) escribir( "Es un signo de ", categoria, "." ) sino escribir( "ERROR: ", numero, " no está asociado a ningún signo." ) fin_si fin

Condiciones Multiples

Esta condición es como un una condicional con la difencia que tenemos varias opciones y no es muy

conveniente usar el condicional solo tiene para dos condicones

EN CASO (Expresión_Valor) Sea

CASO Valor 1

Instrucción 1

CASO Valor 2

Instrucción 2

CASO Valor 3

Instrucción 3

CASO Valor 4

. Instrucción 4

.

.

CASO Valor n

Instrucción n

FIN_CASO

EJERCICIOS

1.- Elaborar un programa que me muestre los días de las semanas cuando ingrese los siete primeros numeros

Module Module1

Dim num As Integer

Sub Main()

Console.Write("ingrese numero:")

num = Console.ReadLine

Select Case num

Case Is = 1

Console.Write("lunes")

Case Is = 2

Console.Write("martes")

Case Is = 3

Console.Write("miercoles")

Case Is = 4

Console.Write("jueves")

Case Is = 5

Console.Write("viernes")

Case Is = 6

Page 8: algoritmos selectivos multiples

Console.Write("sabado")

Case Is = 7

Console.Write("domingo")

End Select

Console.ReadLine()

End Sub

End Module

2.- Elaborar un programa que me al ingresar los meses del año me muestre una palabra que significa cada mes

Module Module2

Dim mes As String

Sub main()

Console.Write("ingrese mes: ")

mes = Console.ReadLine

Select Case mes

Case Is = "enero"

Console.Write("luna")

Case Is = "febrero"

Console.Write("sol")

Case Is = "marzo"

Console.Write("estrella")

Case Is = "abril"

Console.Write("oro")

Case Is = "mayo"

Console.Write("plata")

Case Is = "junio"

Console.Write("diamant")

Case Is = "julio"

Console.Write("rubi")

Case Is = "agosto"

Console.Write("esmeralda")

Case Is = "septiembre"

Console.Write("bb")

Case Is = "octubre"

Console.Write("quarzo")

Case Is = "noviembre"

Console.Write("safiro")

Case Is = "diciembre"

Console.Write("fea")

End Select

Console.ReadLine()

End Sub

End Module

3.- Elaborar un pseudocodigo que me muestre el significado de aniverario de cada decada hasta los 60

Page 9: algoritmos selectivos multiples

Module Module9

Dim años, cont As Integer

Sub main()

Console.Write("ingrese años por decadas")

años = Console.ReadLine

Select Case años

Case Is = 10

Console.Write("bodas de hojalata")

Case Is = 20

Console.Write("bodas de porcelana")

Case Is = 30

Console.Write("bodas de perlas")

Case Is = 40

Console.Write("bodas de rubi")

Case Is = 50

Console.Write("bodas de oro")

Case Is = 60

Console.Write("bodas de diamantes")

End Select

Console.ReadLine()

End Sub

End Module

Problema

Leer 2 números;

- si son iguales que los multiplique,

- si el primero es mayor que el segundo que los reste y

- si no, que los sume.

Estructura Condicional Múltiple

Variables

Num-A :(Entrada)

Num-B :(Entrada)

Constantes No hay

Page 10: algoritmos selectivos multiples

Fórmulas

Si (Num-A : igual que Num-B :) entonces

1.1 Print “Como” Num-A : “=” Num-B : “entonces”

Num-A : “*” Num-B : “=” Num-A : * Num-B :

Si no (Num-A : mayor que Num-B :) entonces

1.2 Print “Como” Num-A : “>” Num-B : “entonces”

Num-A : “-” Num-B : “=” Num-A : - Num-B :

Si no (Num-A : menor que Num-B :) entonces

1.3 Print “Como” Num-A : “<” Num-B : “entonces”

Num-A : “+” Num-B : “=” Num-A : + Num-B :

Fin si

Algoritmo Leer 2 números; si son iguales que los multiplique, si el primero es

mayor que el segundo que los reste y si no, que los sume.

PSEUDOCÓDIGO

1. Inicio

2. Escribir “ Introduzca los dos números ”

3. Leer Num-A :

4. Leer Num-B :

5. Si (Num-A : igual que Num-B :) entonces

5.1 Print “Como” Num-A : “=” Num-B : “entonces” Num-A : “*” Num-B : “=” Num-

A : * Num-B :

Si no (Num-A : mayor que Num-B :) entonces

5.2 Print “Como” Num-A : “>” Num-B : “entonces” Num-A : “-” Num-B : “=”

Num-A : - Num-B :

Si no (Num-A : menor que Num-B :) entonces

5.3 Print “Como” Num-A : “<” Num-B : “entonces” Num-A : “+” Num-B : “=”

Num-A : + Num-B :

Fin si