goto

Descrição

Transfere o fluxo do programa para um ponto rotulado no código.

Sintaxe

rótulo: goto rótulo; // envia o fluxo do programa de volta para o rótulo

Código de Exemplo

Código de Exemplo 1

void setup() { Serial.begin(9600); Serial.println("SETUP - TOP"); goto BOTTOM; Serial.println("SETUP - MIDDLE"); BOTTOM: Serial.println("SETUP - BOTTOM"); } void loop() { }

The result on Serial Monitor:

COM6
Send
SETUP - TOP SETUP - BOTTOM
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

As we can see, the text "SETUP - MIDDLE" is not printed.

Código de Exemplo 2

O código abaixo "foge" de dentro de todos os laços caso a leitura no pino analógico 0 seja maior que 250.

for (byte r = 0; r < 255; r++) { for (byte g = 255; g > 0; g--) { for (byte b = 0; b < 255; b++) { if (analogRead(0) > 250) { goto cancelar; } // mais comandos ... } } } cancelar: // mais comandos ...

※ Notas e Advertências:

O uso do goto é desencorajado na programação em C++, e alguns autores de livros afirmam que o uso do comando goto nunca é necessário, mas se usado judiciosamente ele pode simplificar certos programas. A pela qual muitos programadores desaprovam o uso do goto é que com o uso descuidado de comando goto, é fácil criar um programa com fluxo indefinido, que não pode ser depurado.

Tendo dito isso, há algumas instâncias onde o comando goto pode ser considerado, por simplificar o código. Uma dessas situações é sair de laços for profundamente aninhados, ou blocos if, em determinada condição.

Ver Também

ARDUINO BUY RECOMMENDATION

Arduino UNO R3
Arduino Starter Kit
Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.

※ OUR MESSAGES

  • We are AVAILABLE for HIRE. See how to hire us to build your project
  • Any suggestion, correction, and translation? please email us at ArduinoGetStarted@gmail.com, We appreciate it
  • We mainly keep improving the references in English. See English version of this page for the latest update.