4.7. Reescreva o seguinte trecho de um programa, utilizando o laço while:

for (i=1; i

if (i==10)

continue;

else

printf(“%d\n”,i);

Passo 1

Vamos colocar a mão na massa!

Beleza, antes de tudo vamos entender o que esse programa está fazendo. Um bom exercício é você tentar imaginar qual seria a saída desse programa.

O que acontece é o seguinte: a gente tem um valor inicial ( i = 1 ) , a gente tem uma condição para que seja executada a instrução ( i ≤ 20 ) , a instrução que diz que se i = = 10 então seguimos para próxima iteração, se não escreva i na tela, e então seguimos para pós-instrução ( i + + ) .

A saída desse programa será:

O que acontece é o seguinte, ele começa a rodar para i = 1 , e para todo i menor ou igual à 20 analisa se i é igual a 10, se não for, ele escreve na tela o número, e se for então ele parte para próxima iteração, ou seja, vai para pós-instrução, e adiciona um passo sem escrever o número na tela.

Passo 2

Agora vamos escrever isso como um laço while. A primeira coisa que vamos fazer é determinar o inicio, então temos que começar com:

i n t   i = 1 ;

Assim temos definido que o primeiro valor de i é 1 . Agora vamos entrar no laço while. A condição para instrução é que i seja menor ou igual que 20 . Então temos:

w h i l e   ( i < = 20 )

Agora vamos escrever a instrução, mas temos uma condição aqui, se i for igual à 10

, então não escrevemos, só continuamos. Essa condição tem a seguinte estrutura:

Repare que cada iteração vai analisar o valor de i , e quando ele for igual a 10 não vai escrever nada.

É interessante reparar nessa linha:

Como o laço while não segue para a pós-instrução depois de um continue, temos que atualizar a variável antes desse comando. O trecho do programa vai ficar assim:

i n t   i = 1 ;

w h i l e   ( i < = 20 )

{

        i f   ( i = = 10 )

        {

                i + + ;

                c o n t i n u e ;

        }

        e l s e

        {

                p r i n t f ( " % d \ n " ,   i ) ;

                i + + ;

        }

}

Primeiro determinamos que i = 1 , então, enquanto i for menor que 20 , a cada iteração adicionamos 1 ao valor de i e verificamos se ele é igual a 10 ou não, se for nós usamos o continue, se não for escrevemos na tela o seu valor.

Resposta

i n t   i = 1 ;

w h i l e   ( i < = 20 )

{

        i f   ( i = = 10 )

        {

                i + + ;

                c o n t i n u e ;

        }

        e l s e

        {

                p r i n t f ( " % d \ n " ,   i ) ;

                i + + ;

        }

}