Como dar importancia al codigo(Solucionado)

Iniciado por nolasco281, 11 Junio 2014, 05:01 AM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

Hola como esta.

Tengo una gran duda y como dice el titulo es que no se como darle importancia a mi codigo

es decir tengo un boton, ese boton tiene varias instrucciones pero no quiero que se ejecuten todas al mismo tiempo.

explico cree el evento clik cuando se preciona ese boton se realizan todas las intrucciones y eso es lo que no querio que pase

Ejemplo

Código (cpp) [Seleccionar]

               //Codigo dentro del boton
               if(ArregloN1 == true)
               {
                    //Haga esto
               }
               //Si el if se cumple que no siga ejecutando el codigo que sique del la funcion o sea el  
               //else if
               
               //.... Codigo que no se ejecutaria si se cumpliese el if
               else if (ArregloN2 = true)
               {
                   //Haga esto
               }
               //Si el primer if no se cumplio se evalua el else if y si este cumple no siga con lo demas
               
               //.... Codigo que no se ejecutaria si se cumpliese el else if


Ese es un ejemplo de lo que trato de hacer daler importancia al codigo que quiero que se ejecute.

Otra forma de decirlo por si me dicen que use un switch es si tengo.

Código (cpp) [Seleccionar]

                //Codigo del boton
                switch(Opcion1) //lo que recibe
                {
                       Caso1:
                        //Codigo o instrucciones
                        break;

                       Caso2:
                        //Codigo o instrucciones
                        break;
                }
                //Que finalice si hay codigo abajo
               
                 //No deberia de ejecutarse si se ejecuto el primer switch, pero si no es a si
                 //Se deberia de ejecutar el switch con la Opcion2
                 switch(Opcion2) //lo que recibe
                 {
                       Caso1:
                        //Codigo o instrucciones
                        break;

                       Caso2:
                        //Codigo o instrucciones
                        break;
                }
                //Que finalice si se ejecuto este  switch y no siga con lo demas de abajo
               
               //.....


Espero darme a entender.

Muchas gracias. Saludos


PD: por mientras escribia el hilo, se me ocurrio usar un break al final de la instruccion pero no se si funcione o si, se saldra del metodo. probando comento si me funcina. Si tienen alguna idea se los gradeceria. Saludos

No no me funciono ya que para usar el break debe estar en un loob o switch.




Me respondo despues de estar buscando encontre como salir de un metodo si se ejecuta solo una instruccion.

Comparto la solucion y es poner un return en la intruccion que se desea y no se sique ejecutando el codigo de metodo que sigue.

 
Código (cpp) [Seleccionar]
//Codigo dentro del boton
              if(ArregloN1 == true)
              {
                   //Haga esto
                   return; //Si entrentra aca el codigo de abajo o el else if no se ejecuta
              }
              //Si el if se cumple que no siga ejecutando el codigo que sique del la funcion o sea el  
              //else if

              //.... Codigo que no se ejecutaria si se cumpliese el if
              else if (ArregloN2 = true)
              {
                  //Haga esto
                  return;
              }
              //Si el primer if no se cumplio se evalua el else if y si este cumple no siga con lo demas

              //.... Codigo que no se ejecutaria si se cumpliese el else if


si alquien me puede explicar por que pasa esto segun leei

Cita:
En tal caso, una instrucción return puede utilizarse para la rama de un bloque de control de flujo y el método de la salida y simplemente se utiliza como este: return.
Lo que se puede imaginar... se puede programar.

engel lex

basicamente la funcion de "return" es devolver el resultado de la función, pero esta solo puede devolverlo saliendo de la misma... en pocas palabras corta en seco la función para retornar el valor

ej...

Código (cpp) [Seleccionar]
int numero (int a, int b){
return a + b;
return a*a;
if(a>0){
  b=a;
  a = a/(a-b); // -> a/0
}
}


al llamar a la función, solo se ejecutará a+b, el resto existe, pero como hay un return nunca será tocado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

eferion

Si tu idea es ejecutar una serie de tareas aleatorias según un orden de importancia aleatorio, puedes optar por poner cada tarea en una función o clase (según estés en C o C++). Entonces cargas las tareas a ejecutar en un vector en el que se indique también la prioridad de cada tarea.

Al ejecutar el método que controla la pulsación del botón ordenas las tareas por prioridad y las vas ejecutando una a una.

nolasco281

#3
Hola

Gracias por la explicacion.

ahora bien imaginemos que tengo un boton

Código (cpp) [Seleccionar]

Boton
{
  tipo arreglo1 [] = {A1, A2, A3}
  tipo arreglo2 [] = {B1, B2, B3}

   if(Dato obtinedo1 == arreglo1)  //Es decir si el dato obtenido es igual al del arreglo
   {
      //Haga las siquientes instrucciones
      return; //salir del metodo
   }

   else if(DatoObtenido2 == arreglo2)
   {
      //Haga las siquientes instrucciones
      return; //Salir del metodo
   }  
}


Ahora bien si el dato que obtengo es B3 y los datos B son de mayor prioridad que los datos A.

entoces se ejecutara el else if para ejecutar las instrucciones que contenga.

si obtengo dos datos primero uno para DatoObtenido1 y despues uno para DatoObtenido2
se ejecutara primero el primer if ya que cumple con el if pero la prioridad deberia de ser B y despues A

No se como hacer eso ya que menciona crear una funcion lo he intentado de la siquiente manera

El problema que tengo es que al hacer eso, nunca entra al if de la funcion pero igual se ejecutaria primero la FuncionA y luego la FuncionB al apretar el boton

Código (cpp) [Seleccionar]
Boton
{
  FuncionA;
  FuncionB; //Prioridad funcion B no importa en que parte se encuentre
}

public void FuncionA()
{
   if(Dato obtinedo1 == arreglo1)  //Es decir si el dato obtenido es igual al del arreglo
   {
      //Haga las siquientes instrucciones
      return; //salir del metodo
   }
}

public void FuncionB()
{
  if(DatoObtenido2 == arreglo2)
   {
      //Haga las siquientes instrucciones
      return; //Salir del metodo
   }  
}


No entiendo muy bien los vectores he tratado y leido pero no capto bien la idea que indica eferion de mandar varias funciones a un vector y darles orden de prioridad en el vector. Si pueden ayudarme con alguna idea que se les ocurra de como hacerlo.

o algun ejemplo que muestre como hacer algo asi. estaria muy agredecido.

Saludos muchas gracias por tomarse el tiempo a los dos y a los demas.

Gracias.
Lo que se puede imaginar... se puede programar.

JorgeEMX

Para que necesitas intercambiar la prioridad sobre qué vector comparar? Siempre será de la forma: Primer prioridad B, Después A, Después B, Después A... y así sucesivamente?

nolasco281

Hola gracias por responder.

Mientras haya un dato obtenido que sea B se va a ejecutar B si nunca se obtiene una dato B se ejecutara A.

Saludos
Lo que se puede imaginar... se puede programar.

JorgeEMX

Meh, te estás quebrando la cabeza.. acabas de decir la lógica que necesitas. Haces esas comparaciones sobre un vector y ejecuta la función que corresponda a B y si no, la función A.

Y ya que eres celoso del código, es todo lo que se te puede apoyar.

eferion

Dicho con código:


Boton
{
   tipo arreglo1 [] = {A1, A2, A3}
   tipo arreglo2 [] = {B1, B2, B3}

    if(DatoObtenido2 == arreglo2)
    {
       //Haga las siquientes instrucciones
       return; //Salir del metodo
    }
    else if(Dato obtinedo1 == arreglo1)  //Es decir si el dato obtenido es igual al del arreglo
    {
       //Haga las siquientes instrucciones
       return; //salir del metodo
    }
}


nolasco281

Hola creo que no me di a entender muchas gracias, de todos modos y con respecto a que si soy celoso con el codigo para nada estoy tratando de pasar un ejemplo de java a c++ y mejorarlo si puedo.

Ademas que no soy de las personas que le gusta que le hagan las cosas si me dan una idea eso me vasta y les hagradesco a todos por esas ideas.

En cuanto a lo que comenta eferion
solo cambio la posicion de los if pero el objetivo era que no importara donde se encontrara el B siempre se ejecutara primero el B

Muchas gracias a todos por sus repuestas dare por cerrado el tema y si logro hacerlo lo comento por si le sirve a alquien.

y gracias por tomarce el tiempo Saludos a todos.

Y muchas gracias de nuevo.
Lo que se puede imaginar... se puede programar.