Autor Tema: como funciona la instrucción SWITCH  (Leído 2586 veces)

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

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
como funciona la instrucción SWITCH
« en: 21 de Junio de 2009, 12:26:06 »
Buenas tardes a todos, estoy buscando ejemplos por el foro de como fuciona la instrucción Switch, pero después de ver algunos ejemplos no lo tengo claro, sobre todo porque utiliza las interrupciones y aún no lo tengo muy claro. ¿Podrían poner algún ejemplo simple para ver su funcionaiento?
Aprovecho también para preguntar que significa lo siguinte (lo marcado en rojo):

int letra[5],opcion=0;

///LLAMADA FUNCION INTERRUPCION
#INT_TIMER1
void interrupcion()
{
   switch(opcion){   //selecciona letra
      case 0:   letra[0]=0b00000001;   //A
            letra[1]=0b01110110;
            letra[2]=0b01110110;
            letra[3]=0b01110110;
            letra[4]=0b00000001;
            opcion++;
            break;

Gracias de nuevo por vuestra colaboración.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como funciona la instrucción SWITCH
« Respuesta #1 en: 21 de Junio de 2009, 13:02:18 »
No,no! Interrupciones es un evento del microcontrolador, y switch es una estructura de control que presenta C.
Estructura switch:
Esta estructura permite ejecutar un bloque de código de acuerdo con el valor de una variable o expresión:
Código: C
  1. switch(Variable){
  2.         Case 0x01:
  3.                 //Sentencias.-
  4.         Break;
  5.         Case 0x02:
  6.                 //Sentencias.-
  7.         Break;
  8.         Default:
  9.                 //Sentencias.-
  10.         Break;
  11. }

Esto reemplazaria a:
Código: C
  1. if(Variable==0x01){
  2.       //Sentencias
  3. }else if(Variable==0x02){
  4.      // Sentencias
  5. }else{
  6.      // Sentencias
  7. }


Después, lo marcado en rojo en una variable que esta definida como vector o arregle de valores. Nos permite trabajar con un conjunto de variables  y acceder a cada una mediante un índice único que lo identifica. Todos los valores que contienen deben ser del mismo tipo.
int Letra[5];
Para cargar con 1,20,5,12,8
Código: C
  1. Letra[0]=0x01;
  2. Letra[1]=0x14;
  3. Letra[2]=0x05;
  4. Letra[3]=0x0C;
  5. Letra[4]=0x08;

Letra ->[0x01,0x14,0x05,0x0C,0x08]

No contesto mensajes privados, las consultas en el foro

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: como funciona la instrucción SWITCH
« Respuesta #2 en: 21 de Junio de 2009, 13:59:56 »
hola buenas en tu codigo la variable de control el opcion y segun el valor de esa variable opcion se ejecuta el la la sentecia case de ese valor y eso se define con la sentencia switch, ahora en cuanto a int letra[5] no es mas que un vector o arreglo de 5 items del 0al 4 es decir 0,1,2,3,4 y eso no es mas que pensar de esa manera como si tuvieras 5 variables direfentes int letra1,letra2,letra3,letra4,letra5;

Saludos y espero estemas mas claro.
Atten.
Alexander Santana.
Venezuela.Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado zerovlc

  • PIC10
  • *
  • Mensajes: 28
Re: como funciona la instrucción SWITCH
« Respuesta #3 en: 24 de Junio de 2009, 09:40:04 »
el switch como el nombre indica hace la funcion de conmutador en tu caso conmuta segun el valor de tu variable opcion

 y a continuacion dentro del el switch colocas los distintos casos que son los valores que normalmente debera adquirir tu variable a comparar
SWITCH(VARIABLE A COMPARAR):
{

case 1:
{
printf("hola");

}break:

case 2:
{

printf("adios");
}break;

.
.
.
default:

{
printf("opcion incorrecta");

}

}


en el ejemplo que te acabo de poner tendras que definir los case (valor de la variable), en este caso son numero el 1, el 2.... hasta poner los que quieras, esto hara que cuando por ejemplo la variable de comparacion valga 1 entrara en el case 1 y escribira "hola" y si es 2 escribira "adios", te recomiendo que uses parentesis para las estructuras de cada case  y siempre al final de cada case no te olvides en poner "break;" tambien te recomiendo que coloques una opcion de default, esta no necesita al final un break; y lo que hace es que cuando tu valor a comparar no se encuentra dentro del swicht realizara lo que coloques dentro en este caso "opcion incorrecta".


PD el ejemplo es una parte de codigo en c la estructura para pics es la misma solo ke las instrucciones de printf o lo que quieras que haga dentro de cada case sera especifico para pic luego remitiendome a comentarios anteriores lo que has colocado en rojo es el valor que le asignas a tu variable letrax en binario, y se trata como han dixo de un vector de 5 elementos del 0 al 4 espero que te sirva la explicacion