-
Notifications
You must be signed in to change notification settings - Fork 0
Variáveis e expressões
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
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]
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.
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?