Mudanças entre as edições de "MCO018703 2018 2 AULA05"
(23 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 4: | Linha 4: | ||
*Saber usar o comando ''while'' e ''do while''. | *Saber usar o comando ''while'' e ''do while''. | ||
− | =Funções para Controle de Fluxo - | + | =Funções para Controle de Fluxo - Repetição= |
==while( )== | ==while( )== | ||
Linha 12: | Linha 12: | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
while (expressão) { | while (expressão) { | ||
− | + | bloco de instruções; | |
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 23: | Linha 23: | ||
</center> | </center> | ||
− | =do...while= | + | ===Exemplo=== |
+ | |||
+ | O exemplo abaixo mostra como o comando ''while'' permite implementar loops com controle no início. | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | int contador; | ||
+ | void setup( ) | ||
+ | { | ||
+ | Serial.begin(9600); // inicializa a porta serial | ||
+ | } | ||
+ | void loop( ) | ||
+ | { | ||
+ | contador=0; | ||
+ | while (contador<5) { | ||
+ | Serial.print("valor do contador: "); // imprime o texto entre "" | ||
+ | Serial.println(contador); // imprime o valor do contador | ||
+ | contador=contador+1; | ||
+ | delay(500); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==do...while== | ||
Para que o bloco de instruções seja executado ao menos uma vez, ele é deslocado para a entrada da caixa de decisões, antes do teste de validade: | Para que o bloco de instruções seja executado ao menos uma vez, ele é deslocado para a entrada da caixa de decisões, antes do teste de validade: | ||
Linha 29: | Linha 51: | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
do { | do { | ||
− | + | bloco de instruções; | |
} | } | ||
while (expressão); | while (expressão); | ||
Linha 35: | Linha 57: | ||
Aqui o "bloco de instruções" será executado primeiro e só então o parâmetro "expressão" é avaliado. Veja na Figura 1. | Aqui o "bloco de instruções" será executado primeiro e só então o parâmetro "expressão" é avaliado. Veja na Figura 1. | ||
+ | |||
+ | |||
+ | ===Exemplo=== | ||
+ | |||
+ | Nesta variação do comando '''do while''' permite a repetição de uma ou mais instruções, com controle do loop no final. | ||
+ | Isto permite que o bloco seja executado pelo menos uma vez. | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | int contador; | ||
+ | void setup( ) | ||
+ | { | ||
+ | Serial.begin(9600); // inicializa a porta serial | ||
+ | } | ||
+ | void loop( ) | ||
+ | { | ||
+ | contador=0; | ||
+ | do { | ||
+ | Serial.print("valor do contador: "); // imprime o texto entre "" | ||
+ | Serial.println(contador); // imprime o valor do contador | ||
+ | contador=contador+1; | ||
+ | delay(500); | ||
+ | } while (contador<5); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==for== | ||
+ | |||
+ | Inserindo-se no loop do comando '''while''' um contador que registre cada execução do bloco de instruções cria-se o comando for. Esse contador deve ter uma variável de controle que deve ser previamente inicializada com um tipo e um valor. A sua sintaxe é a seguinte: | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | for (variável;expressão;incremento) { | ||
+ | bloco de instruções; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | A '''variável''' é inicializada normalmente com 0 ou 1; o parâmetro '''expressão''' deve conter o valor máximo | ||
+ | (ou mínimo) que o contador deve alcançar; e '''incremento''' é o valor que será incrementado (ou decrementado) da variável cada vez que o bloco de instruções é executado. Observe que cada parâmetro entre parênteses é separado por ponto e vírgula. | ||
+ | |||
+ | [[imagem:Fig040_MCO018703.jpg|300px|center]] | ||
+ | <center> | ||
+ | Figura 2 - Controle de Fluxo com o comando '''for'''. | ||
+ | </center> | ||
+ | |||
+ | ===Exemplo 1=== | ||
+ | |||
+ | No código abaixo a variável de controle '''i''' do contador criada e inicializada com 0; o contador é testado e se o valor nele acumulado for menor que 10 seu valor é enviado para o Terminal, e depois de 1 segundo, o contador é incrementado e seu novo valor é testado novamente. | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | void setup( ) | ||
+ | { | ||
+ | Serial.begin(9600); // inicializa a porta serial | ||
+ | } | ||
+ | void loop( ) | ||
+ | { | ||
+ | for (int i=0; i < 10; i++) { | ||
+ | Serial.println(i); // imprime o valor de i | ||
+ | delay(1000); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Exemplo 2=== | ||
+ | |||
+ | No código abaixo vemos um exemplo de dois loops aninhados. Enquanto '''i''' conta as linhas '''j''' conta as colunas. | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | int i,j; // i e j são variáveis inteiras | ||
+ | |||
+ | void setup( ) | ||
+ | { | ||
+ | Serial.begin(9600); // inicializa a porta serial | ||
+ | } | ||
+ | void loop( ) | ||
+ | { | ||
+ | for (i=0;i<13;i++) { | ||
+ | for (j=0;j<=i;j++) { | ||
+ | Serial.print('*'); // imprime um asterisco | ||
+ | delay(100); | ||
+ | } | ||
+ | Serial.println(); // pula uma linha | ||
+ | delay(50); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
=Referências= | =Referências= |
Edição atual tal como às 15h31min de 28 de agosto de 2018
Objetivo
- Aprender sobre o comando de repetição while controlado por condição;
- Saber usar o comando while e do while.
Funções para Controle de Fluxo - Repetição
while( )
Uma das operações mais frequentes que os programas executam é repetir um grupo de instruções até que uma condição inicialmente verdadeira se torne falsa. É para isso que serve o comando while. A sua sintaxe é a seguinte:
while (expressão) {
bloco de instruções;
}
O bloco de instruções será executado enquanto o parâmetro expressão for verdadeiro. A Figura 1 mostra o comando while e do while.
Figura 1 - Controle de Fluxo com os comandos while e do while.
Exemplo
O exemplo abaixo mostra como o comando while permite implementar loops com controle no início.
int contador;
void setup( )
{
Serial.begin(9600); // inicializa a porta serial
}
void loop( )
{
contador=0;
while (contador<5) {
Serial.print("valor do contador: "); // imprime o texto entre ""
Serial.println(contador); // imprime o valor do contador
contador=contador+1;
delay(500);
}
}
do...while
Para que o bloco de instruções seja executado ao menos uma vez, ele é deslocado para a entrada da caixa de decisões, antes do teste de validade:
do {
bloco de instruções;
}
while (expressão);
Aqui o "bloco de instruções" será executado primeiro e só então o parâmetro "expressão" é avaliado. Veja na Figura 1.
Exemplo
Nesta variação do comando do while permite a repetição de uma ou mais instruções, com controle do loop no final. Isto permite que o bloco seja executado pelo menos uma vez.
int contador;
void setup( )
{
Serial.begin(9600); // inicializa a porta serial
}
void loop( )
{
contador=0;
do {
Serial.print("valor do contador: "); // imprime o texto entre ""
Serial.println(contador); // imprime o valor do contador
contador=contador+1;
delay(500);
} while (contador<5);
}
for
Inserindo-se no loop do comando while um contador que registre cada execução do bloco de instruções cria-se o comando for. Esse contador deve ter uma variável de controle que deve ser previamente inicializada com um tipo e um valor. A sua sintaxe é a seguinte:
for (variável;expressão;incremento) {
bloco de instruções;
}
A variável é inicializada normalmente com 0 ou 1; o parâmetro expressão deve conter o valor máximo (ou mínimo) que o contador deve alcançar; e incremento é o valor que será incrementado (ou decrementado) da variável cada vez que o bloco de instruções é executado. Observe que cada parâmetro entre parênteses é separado por ponto e vírgula.
Figura 2 - Controle de Fluxo com o comando for.
Exemplo 1
No código abaixo a variável de controle i do contador criada e inicializada com 0; o contador é testado e se o valor nele acumulado for menor que 10 seu valor é enviado para o Terminal, e depois de 1 segundo, o contador é incrementado e seu novo valor é testado novamente.
void setup( )
{
Serial.begin(9600); // inicializa a porta serial
}
void loop( )
{
for (int i=0; i < 10; i++) {
Serial.println(i); // imprime o valor de i
delay(1000);
}
}
Exemplo 2
No código abaixo vemos um exemplo de dois loops aninhados. Enquanto i conta as linhas j conta as colunas.
int i,j; // i e j são variáveis inteiras
void setup( )
{
Serial.begin(9600); // inicializa a porta serial
}
void loop( )
{
for (i=0;i<13;i++) {
for (j=0;j<=i;j++) {
Serial.print('*'); // imprime um asterisco
delay(100);
}
Serial.println(); // pula uma linha
delay(50);
}
}
Referências
[1] http://linguagemc.com.br/comando-do-while/