Ámbitos y namespaces, despacito, 2ª entrega

Esta vez vamos a ver un concepto muy sencillo de ámbito, entre los corchetes, para eso vamos vamos a declarar una función sencilla

#include <Arduino.h>

void FuncionSencilla(){

    // --- Toda variable que declare aquí, no vivirá fuera de la función

    String soyUnaVariable = "Si, lo soy en toda su plenitud";
    bool afirmar = false;

    if (afirmar) {

        // --- Esto sólo ocurrirá cuando afirmar = true, lo puedes cambiar y ver
        String soyUnaVariable = "¡¡¡ O POR DIOS SOY UN CLON !!!";
        Serial.println(soyUnaVariable);

    }
    else {

        // --- Esto sólo ocurrirá cuando afirmar = false, lo puedes cambiar y ver
        String soyUnaVariable = "¡¡¡ O POR DIOS SOY OTRO CLON !!!";
        Serial.println(soyUnaVariable);

    }

    // --- Se acabaron los ámbitos de if / else
    Serial.println(soyUnaVariable);

}


void setup(){
    Serial.begin( 9600 );

    // --- ¡¡ NO TENGO NI IDEA DE QUÉ VA A PASAR !!
    FuncionSencilla();

}

void loop()
{
    
}

MORALEJA:

No declares variables en cualquier lugar si no tienes control de lo que haces, los programadores experimentados solemos declarar las variables de ámbito local a una función, nada más esta comienza, dijéramos que en la cabecera de la misma y si declaramos una variable en un ámbito más interior suele ser para algo muy
muy específico

void funcionconAlgoMuyEspecifico(){

    String mensaje = "";    // --- Le daremos valor luego
    bool afirmar = false;   // --- Podemos darle un valor inicial
    int numerito = 0;       // --- ala, otra

    if (1 != 2) {
        // --- Una forma tonta de hacer un if, pero para no complicarlo más
        int _aux;           /* --- Buena costumbre, empieza por _ y es temporal
                                   aunque programando objeto significaría que
                                   es invisible o privada, por eso lo uso,
                                   porque me estoy declarando a mi mismo que
                                   es privada, para no usar más allá.
                            */

        _aux = numerito + 15;   // --- Algo tenía que poner
        numerito = _aux / 2;    // --- _aux ya cumplió su función.
        
        /* --- y a lo mejor aquí según el valor de numerito le daba un valor
               u otro a mensaje, el caso es que _aux vive aquí dentro y hace
               algo muy muy muy específico.
        */
    }
  
}

AmbitoSencillo.ino (2.51 KB)