Vamos Programar? – Introdução à Programação #12
Testes Lógicos de Repetição do while e for
O mundo está constantemente a evoluir: desde o mais pequeno inseto à espécie Humana. Dentro das palavras que mais ouvimos atualmente, incluímos "evolução", "mudança", "futuro".
A tecnologia tem revolucionado o mundo das mais diversas formas: do mais simples aparelho para medir o tempo ao mais complexo acelerador de partículas. Se quer entrar no mundo da tecnologia e deixar a sua marca, pode começar aqui.
Visualize este vídeo no YouTube
Teste Lógico do while
Os testes lógicos de repetição são, como já deve saber, extremamente úteis em inúmeras situações pois permitem-nos reutilizar código. Recentemente abordámos o teste lógico de repetição while e hoje iremos abordar um outro semelhante: o do while. A sua sintaxe é a seguinte:
do { //código a ser repetido } while (condição);
Ao contrário do que acontece com o teste lógico while, no do while, o código é executado primeiro e só de seguida é que se confirma a veracidade da condição. Se a condição for verdadeira, então o código é executado mais uma vez, caso não o seja, já não será executado.
Este facto faz com que o que código contido dentro do teste lógico seja executado pelo menos uma vez. Veja então o seguinte exemplo de uma simples calculadora com o código documentado.
#include
int main() { /* * Variável que irá determinar se executamos * o código da calculadora de novo ou não. */ int calcular;
do {
char operacao; float num1, num2;
//Limpeza do buffer fflush(stdin); __fpurge(stdin);
printf("Escolha a operação [+ - * / ]: "); scanf("%c",&operacao);
printf("Insira o primeiro número: "); scanf("%f",&num1);
printf("Insira o segundo número: "); scanf("%f",&num2);
switch( operacao ) { case '+': printf("%.2f + %.2f = %.2f\n", num1, num2, num1 + num2); break;
case '-': printf("%.2f - %.2f = %.2f\n", num1, num2, num1 - num2); break;
case '*': printf("%.2f * %.2f = %.2f\n", num1, num2, num1 * num2); break;
case '/': printf("%.2f / %.2f = %.2f\n", num1, num2, num1 / num2); break;
default: printf("Você digitou uma operação invalida.\n"); break; }
printf("Insira 0 para sair ou 1 \n"); scanf("%d", &calcular);
} while (calcular); /* * Se "calcular" for diferente de 0 (falso), o código * da calculadora será executado novamente. * * Para terminar o código basta então digitar 0 quando * for pedido. */
return 0;
}
Teste Lógico for
Outro teste lógico de repetição que é muito importante é o for e é muito útil quando, por exemplo, precisamos de inicializar uma variável a que deve ser incrementado um número. Veja a sintaxe:
for(inicio_do_loop ; condição ; termino_de_cada_iteração)
{
//código a ser executado
}
Vamos agora ver um pequeno exemplo comparando a sintaxe com um teste lógico while. O código seguinte utiliza o último loop mencionado para imprimir os números de 0 a 100:
#include
int main() { int num; num = 0;
while (num <= 100) { printf("%d\n", num); num++; }
return 0;
}
Abaixo pode encontrar o seu equivalente com o teste de repetição for:
#include
int main() { int num;
for(num = 0; num <=100; num++) { printf("%d\n", num); }
return 0; } Apesar de parecer apenas uma pequena redução de duas linhas, com códigos mais complexos poderão ser poupadas mais linhas e este loop também melhora a legibilidade do código.
Ressalto também que os interruptores de fluxo break e continue funcionam com este teste lógico de repetição.
Exercícios
1 - Crie um pequeno menu de opções com, no mínimo, cinco opções à sua escolha sendo uma delas para terminar o programa e as restantes para efetuar qualquer coisa que deseje. O menu deverá continuar a aparecer até o utilizador pedir para fechar.
2 - Recorrendo ao teste lógico for, imprima todos os números divisíveis por 4, 10 e 25 entre 1 e 1000.
Mais uma vez, gostávamos de saber a sua opinião. Caso tenha alguma dúvida, pode sempre utilizar os comentários para colocar a questão. Caso o faça, pedimos que utilize a keyword [DUVIDA] no início do seu comentário.
Este artigo tem mais de um ano
O pdf vai buscar o nº 10 da série e não o 12.
é só o titulo cara volta a ver o conteúdo…..
Obrigado, a todos, pelo reparo. O título do ficheiro já foi corrigido. Bons estudos/trabalho 🙂
É só o titulo
Estou a dar estas estruturas de controlo em A.I. B :D, só que é em Visual basic *facepalm*