Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Di3goXx en 2 Octubre 2011, 17:54 pm



Título: Dejar de evaluar if?
Publicado por: Di3goXx en 2 Octubre 2011, 17:54 pm
Hola Di3goXx soy nuevo el el foro este mi primer tema con una pequeña duda
en realidad soy medio newbie..
estoy primer ciclo en el instituto.  Me dejaron una serie de ejercicios en c # bien faciles a decir verdad pero en uno tenia un problemita... que una ves que se cumpliera un if me dejara de evaluar los siguientes .
les dejo el ejercicio

Calcule la calificación de un alumno en base a 3 notas, validar el ingreso de notas entre 0 y 100, considerar la siguiente tabla:
Promedio   Calificación
90-100   A
80-89   B
70-79   C
50-69   D
0-49   E


este es mi codigo

hay 3 text box, 2 labels para salida de datos y un boton para calcular
Código:

            double n1, n2, n3,s;
            string fuerarango;
         

            n1 = double.Parse(textBox1.Text);
            n2 = double.Parse(textBox2.Text);
            n3 = double.Parse(textBox3.Text);

            if (n1 > 100 || n1 < 0)
                label4.Text = "Ud ingreso un(os) valores mayor a 100";
            if(n2>100 || n2<0)
                label4.Text = "Ud ingreso un(os) valores mayor a 100";
            if (n3>100 || n3<0)
                label4.Text = "Ud ingreso un(os) valores mayor a 100";

            s = (n1 + n2 + n3) / 3;
           


            if (s >= 90 && s <= 100)

                label4.Text = "Su calificacion es :  A";



            if (s >= 80 && s <= 89)

                label4.Text = "Su calificacion es :  B";

           
           
            if (s >= 70 && s <= 79)

                label4.Text = "Su calificacion es :  C";

           

            if (s >= 50 && s <= 69)

                label4.Text = "Su calificacion es :  D";


            if (s >= 0 && s <= 49)

                label4.Text = "Su calificacion es :  E";

            label5.Text = " Usted obtuvo : " + s;

aca mi problema es q cuando se ingresa una nota mayor a 100 sale un label con fuera de rango en este punto es donde quiero q deje de evaluar los siguientes if s ya q si la suma es menor a 100 sale la calificacion igual.
aver si me pueden ayudar aunque no se si se pueda hacer..... :)


Título: Re: Dejar de evaluar if?
Publicado por: $Edu$ en 2 Octubre 2011, 18:02 pm
Ese codigo va en el evento del boton no? pues yo juntaria esos ifs para ver si son mayores a 100 es decir en vez de :

Código
  1.  if (n1 > 100 || n1 < 0)
  2.                label4.Text = "Ud ingreso un(os) valores mayor a 100";
  3.            if(n2>100 || n2<0)
  4.                label4.Text = "Ud ingreso un(os) valores mayor a 100";
  5.            if (n3>100 || n3<0)
  6.                label4.Text = "Ud ingreso un(os) valores mayor a 100";
  7.  

Lo haria asi:

Código
  1. if (n1 > 100 || n1 < 0) || (n2>100 || n2<0) || (n3>100 || n3<0) {
  2.   label4.Text = "Ud ingreso un(os) valores mayor a 100";
  3.  return;}
  4.  

Y ahi ya te solucione la salida de tu procedimiento en el caso de que la condicion se cumpla.


Título: Re: Dejar de evaluar if?
Publicado por: Di3goXx en 2 Octubre 2011, 18:12 pm
Graxias $Edu$ me sirvio lo q recomendaste   :laugh:


Título: Re: Dejar de evaluar if?
Publicado por: $Edu$ en 2 Octubre 2011, 19:01 pm
Pero entendiste porque? lo de los ifs, si una de las condiciones de los parentesis da verdadero, ya nos sirve y muestra el mensaje, y como el mensaje es el mismo para cualquiera sea la condicion que se cumpla, lo hicimos asi.

Lo del return, eso lo usas siempre que quieras salir de un procedimiento void, ya que ves que no le indicamos que devolver, porque no tiene q devolver nada por eso ponemos "return;" pero si fuera una funcion que devuelva un valor en string ahi tendriamos que hacer "return "Error";" por ejemplo. Saludos


Título: Re: Dejar de evaluar if?
Publicado por: Di3goXx en 5 Octubre 2011, 01:47 am
Lo de los ifs si esta facil de entender
lo del return aun no me lo explican pero creo q es para dar devolver el control al programa principal o algo asi y que en voids solo se pone return para acabar la ejecucion ...


Título: Re: Dejar de evaluar if?
Publicado por: $Edu$ en 5 Octubre 2011, 02:34 am
Mmm, has creado alguna funcion booleana por ejemplo? que devuelve True o False, eso lo devolves poniendo return false; o return true;
y como void no retorna nada, ni string, ni true o false, ni un numero, nada, entonces se hace return; que es decir que devuelva nada, pero en este caso lo usas porque una vez q se usa return se termina el procedimiento void o si estas en una funcion tambien se termina devolviendo su valor.


Título: Re: Dejar de evaluar if?
Publicado por: Di3goXx en 5 Octubre 2011, 03:46 am
una expresion booleana no es lo va luego de un if?


Título: Re: Dejar de evaluar if?
Publicado por: Keyen Night en 5 Octubre 2011, 03:53 am
Bool, booleana, boolean es un tipo así como string ó int, no solo cuando haces un condicional (if) aplicas boolean sino tambien como dice $Edu$ si tienes una función de tipo boolean, retorna true o false así como una función int puede retornar 1 ó 0 por ejemplo.