Há situações em nossos programas que precisamos repetir um determinado trecho de código ou todo o código um determinado número de vezes. Nestes casos, utilizaremos uma estrutura de repetição que nos permite criar um loop para efetuar o processamento de um trecho de código quantas vezes for necessário. Na literatura essas estruturas de repetição (loop) são, também, denominadas de laços de repetição e malhas de repetição, podendo ser laços contados ou laços condicionais. Nos laços condicionais não sabemos previamente o número de execuções e atrelamos a repetição a uma condição. Em linguagem C, os casos com condição no início e no final do laço são, respectivamente, as estruturas: while e do while.
LEAL, Gislaine Camila Lapasini. Algoritmos e Lógica de Programação II. Maringá-PR. Unicesumar, 2018.
Dada a definição de Estrutura de Repetição com laços condicionais while e do while, analise o trecho de algoritmo abaixo escrito em Linguagem C:
int a;
a=11;
do
{
printf("imprime Y \n");
a--;
}
while (a>0);
a=11;
while (a >= 0)
{
a--;
printf("imprime Z \n");
}
Assinale a alternativa correta e que apresenta a o número de vezes em que são impressos os textos “imprime Y” e “imprime Z”, respectivamente:
Alternativas
Alternativa 1:
10 e 10.
Alternativa 2:
11 e 12.
Alternativa 3:
12 e 11.
Alternativa 4:
11 e 11.
Alternativa 5:
12 e 12.
Soluções para a tarefa
Resposta:
Está correta a alternativa 2:
1 °)
a=11;
do
{
printf("imprime Y \n");
a--;
}
while (a>0);
Neste trecho do código a variável "a" tem seu valor inicial definido como 11, no laço foi determinado que enquanto "a" fosse maior que 0, seria impresso "imprime Y" e seria decrementado 1 de "a", sendo assim ficaria:
imprime Y (com "a" valendo 11)
imprime Y (com "a" valendo 10)
imprime Y (com "a" valendo 9)
imprime Y (com "a" valendo 8)
imprime Y (com "a" valendo 7)
imprime Y (com "a" valendo 6)
imprime Y (com "a" valendo 5)
imprime Y (com "a" valendo 4)
imprime Y (com "a" valendo 3)
imprime Y (com "a" valendo 2)
imprime Y (com "a" valendo 1)
Finalmente com "a" valendo 0 e não entrando no laço, pois 0 não é maior que 0. Sendo impresso 11 vezes a frase "imprime Y".
2°)
a=11;
while (a >= 0)
{
a--;
printf("imprime Z \n");
}
Neste trecho do código a variável "a" tem seu valor inicial definido como 11, no laço foi determinado que enquanto "a" fosse maior ou igual a 0, seria impresso "imprime Z" e seria decrementado 1 de "a", sendo assim ficaria:
(Perceba que é decrementado 1 de "a" antes de imprimir a mensagem).
imprime Z (com "a" valendo 10)
imprime Z (com "a" valendo 9)
imprime Z (com "a" valendo 8)
imprime Z (com "a" valendo 7)
imprime Z (com "a" valendo 6)
imprime Z (com "a" valendo 5)
imprime Z (com "a" valendo 4)
imprime Z (com "a" valendo 3)
imprime Z (com "a" valendo 2)
imprime Z (com "a" valendo 1)
imprime Z (com "a" valendo 0)
imprime Z (com "a" valendo -1)
Finalmente com "a" valendo -1 e não entrando no laço, pois -1 não é maior que 0. Sendo impresso 12 vezes a frase "imprime Y".
Sendo impressas as frases "imprime Y” e “imprime Z”, respectivamente, 11 e 12 vezes.
Espero ter ajudado, abraços e bons estudos!