MPLAB X y C18: Sentencias repetitivas y selectivas

Sentencias selectivas 

Sentencia IF: Se utiliza para ejecutar una sentencia o un grupo de ellas si una expresión es cierta.

La sintaxis es la siguiente:
if (expresion){     //Si expresión es verdadera
    sentenciaA;      //Ejecutamos las sentencias
    sentenciaB;
}

Ejemplo 1:
if(PORTA==0x01){     //Si PORTA es igual a 0x01
    PORTB=0xFF;         //Colocamos el valor 0xFF en PORTB
}

Ejemplo 2:
if(PORTA==1 && A==5){          //Si PORTA=1 y A=5
                PORTC=1;                     //El puerto C es igual a 1
                LED_STATUS=0;        //LED_STATUS es igual a 0
                X=150;                           //X es igual a 150
}             

Sentencia IF-ELSE: Se utiliza para ejecutar dos opciones posibles una cuando la condición es verdadera y otra cuando no lo es. Si la condición es verdadera se ejecutan las sentencias dentro del IF, si es falsa se ejecuta lo que este dentro del ELSE.

La sintaxis es la siguiente:
if(expresion){                     //Si expresion es cierto
                SentenciaA;        //Ejecuta la sentencia A
}

else{
                SentenciaB;        //Si es falso ejecuta sentencia B
}

Ejemplo 1:
if(BOTON_UNO==1){
                LED_STATUS=0;
}

else{
                LED_STATUS=1;
}
Sentencia IF-ELSE-IF: Este es una versión ampliada del IF-ELSE ya que con esto puedes evaluar más de dos condiciones, la primera empieza con un IF, después sigue un ELSE-IF (las veces que se requiera) y por último se termina con un ELSE.

La sintaxis es la siguiente:
if(Expresion1){                     //Si Expresion1 es cierto
                SentenciaA;          //Ejecuta la sentencia A
}
else if(Expresion2){            //Si Expresion2 es cierto
                SentenciaB;          //Ejecuta la sentencia B
}
else if(Expresion3){           //Si Expresion3 es cierto
                SentenciaC;          //Ejecuta la sentencia C
}             
else{                                      //Si ninguna de las anteriores se cumple
                SentenciaD;         //Ejecuta la sentencia D
}                                            

Ejemplo 1:
if(PORTA==0x01){
                LED_ROJO=1;
}
else if(PORTA==0x02){
                LED_VERDE=1;
}
else if(PORTA==0x03){
                LED_AZUL=1;
}             
else{
                LED_ROJO=0;
                LED_VERDE=0;
                LED_AZUL=0;
}             
Sentencia SWITCH: Esta sentencia nos brinda una forma más elegante de bifurcación múltiple. Podemos considerarla como una forma más estructurada de la sentencia IF-ELSE-IF, aunque tiene algunas restricciones en las condiciones lógicas a evaluar, las cuales son comparaciones de valores enteros. Para elaborar el código se usan las palabras reservadas como lo es SWITCH, CASE, BREAK Y DEFAULT. La opción DEFAULT contiene las sentencias que no entran en ningún caso anterior.

La sintaxis es la siguiente:
switch(expresion){
case constante1:                 //Si costante1 = expresion ejecutar sentenciaA
                sentenciaA;
break;
case constante2:                 //Si costante2 = expresion ejecutar sentenciaB
                sentenciaB;
break;
case constante3:                 //Si costante3 = expresion ejecutar sentenciaC
                sentenciaC;
break;
.
.
.
default:                                 //Si expresion no es igual a ninguna de las
                sentenciaD;          //constantes anteriores ejecutar la sentenciaD
break;
}


Ejemplo 1:
switch(VALOR){
case 1:
                LED_UNO=1;        //Si VALOR=1 enciendo LED_UNO
break;
case 2:
                LED_DOS=1;         //Si VALOR=2 enciendo LED_DOS
break;
case 3:
                LED_TRES=1;       //Si VALOR=3 enciendo LED_TRES
break;
default:
                LED_UNO=0;       //Si VALOR es distinto
                LED_DOS=0;        //todos los LEDs apagados
                LED_TRES=0;
break;
}

Sentencias repetitivas 

Sentencia WHILE: El cuerpo o bloque de este bucle se ejecutará una y otra vez mientras una expresión sea verdadera.

La sintaxis es la siguiente:
while(expresion){              //Mientas expresion es cierta
                sentenciaA;          //Ejecutar las siguientes sentencias
                sentenciaB;          //Si expresion no es cierta
                .                              //No va a ejecutar ninguna sentencia
                .                              //dentro del WHILE          
                .
                sentenciaN;
}             

Ejemplo 1:
while(x!=0){
                a=1;
                LED_STATUS=1;
                VALOR=100;
}             

Sentencia DO-WHILE: Es parecida a un WHILE solo que la condición se evalúa al final, por lo que el cuerpo o bloque de este bucle se ejecutara por lo menos una vez. Mejor dicho mientras la expresión del WHILE sea verdadera se ejecutara todo lo que este dentro de DO.

La sintaxis es la siguiente:
do{
                sentenciaA;          //Ejecuta estas sentencias
                sentenciaB;          //mientras expresion no sea cierta
}while(expresion);             //si se cumple las sentecias
                                               //ya no se ejecutan mas

Ejemplo 1:
do{
                LED_STATUS=1;   //Encienoo LED
}while(n<=50);                     //mientas n sea menos a 50

Sentencia FOR: Las dos sentencias anteriores, WHILE Y DO-WHILE se suelen emplear cuando no se sabe de antemano la cantidad de veces que se va a ejecutar el bucle. En los casos donde el bucle involucra alguna forma de conteo finito es preferible emplear la sentencia FOR. Esto porque un una sentencia FOR te permite tener un valor, una condición y una forma de incremento.

La sintaxis es la siguiente:
for(expresion1; expresion2; expresion3){
                sentenciaA;          //expresion1 es la condicion de inicio
                sentenciaB;          //expresion2 es la condicion que se evalua
}                                             //mientras sea cierta se ejecutan
                                               //las sentencias A y B
                                                 //expresion3 pone fin a expresion2

Ejemplo 1:
for(i=0; i<=20; i++){
                LED_STATUS=1;
}

No hay comentarios:

Publicar un comentario