Skip to content

Variáveis e expressões

Alfrederson edited this page Nov 24, 2020 · 2 revisions

Declaração de variáveis

Variáveis são declaradas em uma das duas formas:

 tipo variavel
 tipo variavel = valor_inicial
 tipo var1 = 1, var2 = 2, var3 = 3, var4 = 4

O valor inicial deve ser sempre uma expressão constante ou variável desde que essa outra variável pertença a um escopo superior.

 int patas = 4 // válido
 int patos = patas // inválido
 se 1:
   int ratos = patas // válido
 fim

Declaração de vetores

Vetores são declarados da seguinte forma:

 int vetor[5]                      // vetor de tamanho 5 inicializado com 0
 int vetor = [1,2,3,4,5,6,7,8,9]   // vetor inicializado com elementos
 int vetor1 = [1,2,3],
     vetor2 = [2,3,4],
     vetor3 = [3,4,5]

E acessados da mesma maneira que em C:

 x = vetor[2]

Inicializadores

Alguns tipos de variáveis necessitam de inicializadores. Inicializadores equivalem aos construtores em C++:

 pino led = (13,OUTPUT,desligado)
 pino semaforo = [ (13,OUTPUT,DESLIGADO),
                   (12,OUTPUT,LIGADO),
                   (11,OUTPUT,DESLIGADO) ]

Equivale a inicializar uma variável do tipo "pino" passando os parâmetros entre parênteses para o construtor de "pino". Um inicializador sempre tem pelo menos um parâmetro, então:

 tipo variavel = ()

É uma declaração inválida.

Multi-atribuição

Além da atribuição básica na forma x = (expressão), MetanOL possui a multi-atribuição:

 x,y,z = expressao()

Isso equivale a fazer três atribuições com a mesma expressão do lado direito.

 x = expressao()
 y = expressao()
 z = expressao()

O recurso da multi-atribuição é útil quando se quer mudar o estado de muitos pinos de uma vez só sem usar uma sequência explícita de digitalWrite()

 led vermelho = (10,OUTPUT,desligado),
     amarelo  = (10,OUTPUT,desligado),
     verde    = (10,OUTPUT,desligado)

 ...
 // liga todos os leds:
 vermelho, amarelo, verde = 1

Note que não existe uma multi-inicialização com o mesmo valor por conta da ambiguidade que isso criaria: o usuário quer inicializar apenas o último elemento com um valor, ou todos eles com o mesmo valor?

Clone this wiki locally