Skip to content

Condicionais e loops

Alfrederson edited this page Nov 25, 2020 · 3 revisions

Condicionais

Seguem uma das três formas:

  se condicao:
     corpo()
  fim

  se condicao? // também é válido usar ? no lugar de :
     corpo()
  senao:
     corpo_senao()
  fim

  se condicao1():
     corpo1()
  senao se condicao2():
     corpo2()
  senao se condicao3():
     corpo3()
  senao:
     corpo_senao()
  fim

Loop "contar"

Este é semelhante ao loop "for" em C, mas cada termo aceita apenas uma instrução: Serial.begin(115200) delay(1000) Serial.println("Vou contar de 0 até 10 exclusivamente") contar i = 0 , i < 10, i ++: // i é declarado implicitamente dentro do // corpo do "contar". Serial.println(i) delay(500) fim

Loop de série

Este loop sempre é inclusivo. Ele aceita dois extremos:

  Serial.begin(115200)
  delay(1000)
  Serial.println("Vou contar de 0 até 10 inclusivamente")
  para cada i de 0 ..10:
    // i é declarado implicitamente dentro do
    // corpo do "contar".
    Serial.println(i)
    delay(500)
  fim

Loop de vetor

Percorre os valores de algum vetor.

Forma imutável (você não pode alterar os valores do vetor)

  float numeros = [1.23,2.34,3.45,4.56,5.67,6.78,7.89,8.91,9.12,12.34]
  Serial.begin(115200)
  delay(1000)
  Serial.println("Vou percorrer o vetor numeros")

  para cada n de numeros:
     Serial.println(n)
     delay(500)
  fim

Forma mutável (você pode alterar os valores do vetor)

  float numeros = [1.23,2.34,3.45,4.56,5.67,6.78,7.89,8.91,9.12,12.34]
  Serial.begin(115200)
  delay(1000)
  Serial.println("Vou percorrer o vetor numeros")

  para cada # n de numeros:
    // percorre o vetor multiplicando cada elemento por 10
    {n} *= 10
  fim
  
  para cada n de numeros:
     Serial.println(n)
     delay(500)
  fim

Loop de vetor com índice

Especificando um nome de variável a mais, o loop para cada de ... se torna equivalente ao for key,value in ... : em Python mas não muito, porque internamente o o loop para cada de ... usa apenas uma array simples.

  para cada indice, n de numeros:
     Serial.print(indice)
     Serial.print(" => ")
     Serial.println(n)
     delay(500)
  fim

Loop enquanto

Equivalente direto do loop while.

  enquanto condicao():
     corpo_do_loop()
  fim

Loop repetir

  repetir:
     corpo_do_loop()
  ate condicao()

Loop loop

Equivale a enquanto 1: ... fim.

  loop:
     fazer_algo_eternamente()
  fim

sair e proximo

A instrução sair termina a execução de um loop.

  Serial.begin(115200)
  delay(1000)
  loop:
     sair
  fim
  Serial.println("Escapei do loop infinito!")

A instrução continue ou proximo pula para a próxima iteração de um loop.

   Serial.begin(115200)
   loop:
       delay(1000)
      Serial.println("Isso é escrito na serial.")
      proximo
      Serial.println("Isso nunca será escrito na serial.")
   fim

@etiqueta: e pular @etiqueta

Útil para escapar de dentro de um loop profundo e mais nada. Deve ser usado criteriosamente.

    Serial.begin(115200)
    int x = 0
    @comeco:
       x++
       Serial.print(x)
       Serial.print(" => ")
       Serial.println("Olha eu aqui!")
       delay(1000)
    pular @comeco

Clone this wiki locally