Duda Algoritmo Segun sea o en caso de

#1
hola este es mi primer tema y es sobre una duda en algoritmo pseducodigo es sobre los segun sea o en caso de .

bien yo programo en java y en java lo hacemos asi

int month = 8;
switch (month) {
case 1: System.out.println("Enero"); break;
case 2: System.out.println("Febrero"); break;
case 3: System.out.println("Marzo"); break;
case 4: System.out.println("Abril"); break;
case 5: System.out.println("Mayo"); break;
case 6: System.out.println("Junio"); break;
case 7: System.out.println("Julio"); break;
case 8: System.out.println("Agosto"); break;
case 9: System.out.println("Septiembre"); break;
case 10: System.out.println("Octubre"); break;
case 11: System.out.println("Noviembre"); break;
case 12: System.out.println("Diciembre"); break;
}

solo acepta una variable entera el switch

mi duda es esta, en pseudocodigo solo he hallado esta manera de hacerlo .
SEGUN SEA la variable o la expresion HACER
VALOR1: {las acciones que toque}
...
VALORN: {las acciones que toque}
por defecto: {las acciones que toque}
fin SEGUN

segun sea e hacer
2,4,6,8,10 : escribir 'numeros pares'
1,3,4,7,9 : escribir 'numeros impares'
fin_segun_sea

esta acepta varios valores.

segun_sea letra hacer
'A': escribir "a"
'B': escribir "b"
'C': escribir "c"
'D': escribir "d"
'F': escribir "f"
tambien se puede comparar letras en pseudocodigo

mi duda viene en este ejemplo que vi en la universidad

segun sea nota hacer
nota >7 & nota <=10: escribir "buena nota"
nota >5 & nota <7: escribir "aceptable nota"
nota >0 & nota <5: escribir "mala nota"
fin_segun_sea

se pueden hacer comparaciones de valores en un segun sea en pseudocodigo porque la diferencia del si y los segun sea es que los si son expresiones boolenas comparaciones y los segun sea son datos fijos .
 

novos

Bovino maduro
#2
NO. El "segun sea" en java es solo para tipos ordinales(caracteres, enteros, booleanos) que toman un valor a la vez.

seria con "si" y "si no"
Código:
si (nota >7 & nota <=10)
     escribir "buena nota";
si no
         si (nota >5 & nota <7)
             escribir "aceptable nota"
         sino 
                  si (nota >0 & nota <5)
                      escribir "mala nota"
                  fin si
         fin si
fin si
el pseudocodigo de arriba es solo para que te des una idea que onda, no es el mejor ejemplo por que le faltan y le sobran detalles y se puede mejorar(puedes hacer con puros "si", existe el "sino si", inserte una calificación erronea como lo sé?, etc, etc), pero es para que te des una idea.

Saludos!:vientos:
 
#3
excelente mi amigo asi es , tienes toda la razon pero mi duda viene en el pseudocodigo

segun sea nota hacer
nota >7 & nota <=10: escribir "buena nota"
nota >5 & nota <7: escribir "aceptable nota"
nota >0 & nota <5: escribir "mala nota"
fin_segun_sea

si se puede hacer eso? lo busque en el libro de fundamentos de programacion de luis joyanes aguilar y en ningun ejemplo veo eso ,esa es mi duda
 

novos

Bovino maduro
#4
excelente mi amigo asi es , tienes toda la razon pero mi duda viene en el pseudocodigo

segun sea nota hacer
nota >7 & nota <=10: escribir "buena nota"
nota >5 & nota <7: escribir "aceptable nota"
nota >0 & nota <5: escribir "mala nota"
fin_segun_sea

si se puede hacer eso? lo busque en el libro de fundamentos de programacion de luis joyanes aguilar y en ningun ejemplo veo eso ,esa es mi duda
xD fue lo primero que puse en negritas y conteste arriba.En los tutoriales oficiales de java dice esto:
the switch statement can have a number of possible execution paths. A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types (discussed in Enum Types), the String class, and a few special classes that wrap certain primitive types: Character, Byte, Short, and Integer (discussed in Numbers and Strings).
o tambien puedes checar en el libro(ponlo entre tus favoritos) de CODE COMPLETE
 
#5
creo que no me di a entender con mi respuesta pero yo se que en java no puedo hacer eso que pongo en pseudocodigo
(esto)

segun sea nota hacer
nota >7 & nota <=10: escribir "buena nota"
nota >5 & nota <7: escribir "aceptable nota"
nota >0 & nota <5: escribir "mala nota"
fin_segun_sea

Yo se que en java sale haciendo un if con el operador logico AND y que el switch solo acepta datos primitivos como int char y otros mas.

pero mi duda es que si en pseudocodigo esta correcto hacer eso con el segun sea que , yo se que en programacion no se puede realizar lo expuesto arriba si se puede hacer con un if pero no con un switch o select case en otros lenguajes
 

novos

Bovino maduro
#6
Si usas el pseudocodigo que pones, para desarrollar en JAVA NO
Si usas el pseudocodigo que pones, para desarrollar por ejemplo en PASCAL MAS O MENOS, por que tendrias que ponerlo como:
Código:
según sea nota hacer
nota 0 a 5: escribir "Mala nota"
nota 6 a 7: escribir "aceptable nota"
nota 8 a 10: escribir "Buena nota"
fin_segun_sea
por que para cualquiera que lea tu pseudocodigo pueda desarrollar correctamente que entienda que es un RANGO(no puede haber expresiones booleanas), y pueda entender viendo la sintaxis de PASCAL que si coincide con el Pseudocodigo:

Código:
Case nota of  
0..5   :WriteLn (’Mala nota’);  
6..7   :WriteLn (’Aceptable nota’);  
8..10  :WriteLn (’Buena nota’); 
else  
 WriteLn (’Calificación no válida’);  
end;
En VISUAL BASIC creo que tambien se pueden utilizar rangos, entonces podrias usar el pseudocodigo de arriba.

Saludos!.:vientos:
 
#7
excelente mi amigo asi es , tienes toda la razon pero mi duda viene en el pseudocodigo

segun sea nota hacer
nota >7 & nota <=10: escribir "buena nota"
nota >5 & nota <7: escribir "aceptable nota"
nota >0 & nota <5: escribir "mala nota"
fin_segun_sea

si se puede hacer eso? lo busque en el libro de fundamentos de programacion de luis joyanes aguilar y en ningun ejemplo veo eso ,esa es mi duda
No debes hacer el pseudocódigo basado en un solo lenguaje sino genérico. En pseudocódigo eres libre de poner lo que se te de la gana.

Por ejemplo:

Si nota es mayor que 7 y menor o igual que 10 mostrar el mensaje "buena nota"
Si nota es mayor que 5 y menor o igual que 7 mostrar el mensaje "aceptable nota"
Si nota es mayor que 0 y menor o igual que 5 mostrar el mensaje "mala nota"

Ojo: Tu código original no contempla en sacar 7 o 5, por eso agregué el "o igual".

así se entiende lo que hay que hacer y cualquier programador lo puede hacer en cualquier lenguaje. No cases el pseudocódigo con el lenguaje.

Saludos
 

amic_182

Bovino adicto
#8
Solo una pequeña anotación,
el operador & es diferente al operador &&, almenos en C y en otros lenguajes... no se si sea el caso de Java, ya que no estoy muy familiarizado con ese lenguaje... solamente para que tengas cuidado utilizando & y && que generalmente NO es lo mismo.

&& = AND
& (generalmente) = bitwise AND.

por ejemplo decir
while((x>1) && (x<3))
{
//ciclo...
}

SE entiende como "Mientras x>1 Y x<3 sea cierto, ejecuta el ciclo...."

En cambio
el operador &, es una operacion que hace un AND logico.
 
Arriba