Comando while

Teoria Completa

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Nós já tivemos uma introdução aos laços ou comandos de repetição, no tópico de hoje nós iremos conversar especificamente sobre o primeiro comando de repetição dos três presentes na linguagem C.

Sem perder mais tempo, vamos nessa!

Comando de repetição while

De forma bem direta ao ponto, o comando while irá repetir as instruções que se encontram dentro de sua estrutura apenas se uma determinada condição for verdadeira.

Nós também podemos fazer um paralelo com a tradução da nomeação do comando, por exemplo: “enquanto” determinada condição for verdadeira, as instruções presentes na estrutura serão executadas.

Vamos realizar um exemplo! Imagine que tenhamos que realizar a impressão de todos os números menores que 10, como ficaria o comando while?

O trecho de código a seguir exemplifica o problema descrito acima:

Onde i é a variável contadora que é inicializada em 0 e “enquanto” i for menor que 10, o programa irá realizar uma impressão do valor de i com a função scanf() seguido do incremento da variável i.

De maneira geral, a estrutura do comando de repetição while na linguagem C é exemplificada através do seguinte trecho de código:

Vamos fazer mais um exemplo! Suponha que tenhamos que ler 3 números inteiros do usuário e realizar a impressão deles na tela.

O trecho de código a seguir exemplifica o problema descrito acima:

Onde i é a variável contadora inicializada em 0 e x é a variável que irá armazenar o número inteiro, dessa forma “enquanto” i for menor que 3 o programa irá requisitar a entrada do número inteiro ao usuário com a função scanf() seguido da impressão desse mesmo número com a função printf(), além do incremento da variável i ao fim da execução das instruções.

Ficou fácil agora, né? Te encontro aqui na página do lado.

Não esquece de clicar nos exercícios, hein!?

Expandir

Exercício Resolvido #1

Elaboração própria.

Explique qual é a função do comando de repetição while e defina a sua estrutura.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

O comando de repetição while executa uma sequência de instruções enquanto uma condição for verdadeira, a repetição das instruções localizadas dentro de sua estrutura é comumente chamada de “loop”.

Além disso, essa estrutura na maioria das vezes está acompanhada de uma variável contadora que é atualizada a cada loop ao mesmo tempo que atua na condição do laço. O objetivo dessa variável é controlar a quantidade de loops realizados de forma a evitar o que chamamos de estado de loop infinito, que é um comando de repetição que nunca possuirá uma condição de execução falsa e executará instruções infinitamente ou até se esgotarem os recursos do computador.

Passo 2

A estrutura do comando de repetição while é dada pelo seguinte trecho de código na linguagem de programação C:

Resposta

Exercício Resolvido #2

Universidade Tecnológica Federal do Paraná – UTFPR, Exercícios sobre estruturas de repetição, Leonelo Almeida, 2016, pg. 01 – Exercício 01.

Crie um algoritmo que, dado um número informado pelo usuário, imprima a tabuada dele de 1 a 10. Use o formato de apresentação (considerando que o usuário informou o número 5):

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Em primeiro lugar, vamos definir o escopo do nosso programa.

Passo 2

Com o escopo definido, podemos declarar e inicializar as variáveis que serão úteis para o desenvolvimento e execução do programa.

Informações sobre as variáveis:

  • n armazenará o número base da tabuada;
  • resultado armazenará o resultado de cada operação de multiplicação realizada;
  • i será a variável contadora de um laço de repetição.

Passo 3

Com as variáveis declaradas e inicializadas, podemos requisitar o número base da tabuada para o usuário do programa.

Passo 4

Por fim, para realizarmos a impressão da tabuada podemos utilizar o comando de repetição while com a condição i menor que 11.

A lógica desse código consiste em imprimir a variável resultado, gerada a partir do produto entre o valor armazenado pela variável n (base da tabuada) e o valor armazenado pela variável contadora i (que vai de 1 a 10), a cada loop do laço de repetição.

Como a cada loop a variável i será incrementada em uma unidade (enquanto for menor que 11), temos a garantia que teremos a tabuada de 1 a 10 do número base n digitado pelo usuário.

Resposta

Exercício Resolvido #3

Elaboração própria.

Faça um programa que leia 10 notas e imprima a média aritmética delas.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

A primeira coisa que nós devemos fazer é definir o escopo do programa.

Passo 2

Com o escopo definido, podemos realizar a declaração das variáveis necessárias para o desenvolvimento do programa.

Passo 3

Para realizar o somatório das notas, nós podemos utilizar um comando de repetição while com a condição i menor que 10.

Onde a cada loop uma nota será lida, a variável somatorio incrementada com o valor da nota atual e a variável i incrementada em 1.

Passo 4

Por fim, basta realizarmos a divisão do valor armazenado pela variável somatorio por 10 e atribuirmos ele a variável media, essa por sua vez será impressa na tela com duas casas decimais e uma quebra de linha.

Resposta

Exercício Resolvido #4

Elaboração própria.

Faça um programa que calcule o fatorial de um número.

Esse programa deve receber como entrada um número inteiro positivo e imprimir na tela o fatorial dele.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Antes de tudo, vamos definir o escopo do nosso programa!

Passo 2

Vamos agora declarar as variáveis necessárias para o desenvolvimento do programa.

Informações sobre as variáveis:

  • n armazenará o número que servirá como base para o cálculo do fatorial;
  • fat armazenará o valor do fatorial;
  • i será a variável contadora de um laço de repetição.

Passo 3

Com as variáveis devidamente declaradas e inicializadas, está na hora de requisitarmos a entrada do número ao usuário.

Passo 4

Tendo conhecimento do número inserido como entrada pelo usuário podemos utilizar o comando de repetição while.

A lógica para o cálculo do fatorial está em atribuir o valor de n a variável contadora i, utilizando a condição i maior ou igual a 0 para a execução do comando de repetição while. A cada loop a variável fat receberá o produto entre o valor atual armazenado por ela e i, em seguida i terá seu valor reduzido em 1.

Isso fará com que o valor 1 seja multiplicado por n, o resultado dessa multiplicação novamente multiplicado por n – 1, o resultado da última multiplicação multiplicado por n – 2 e assim por diante até a condição de execução do comando de repetição ser falsa.

Passo 5

Por fim, basta realizarmos a impressão do fatorial do número inserido anteriormente pelo usuário do programa.

Resposta

Exercício Resolvido #5

Universidade de São Paulo – ICMC, Laboratório de Introdução a Ciência da Computação, Rosana T. Vaccare Braga, 2010, pg. 01 – Exercício 01.

Escreva um programa em C que lê 15 valores reais, encontra o maior e o menor deles e mostra o resultado.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Vamos para mais um exercício!

Como sempre, a primeira coisa que devemos fazer é definir o escopo do nosso programa.

Passo 2

Com o escopo definido, podemos pensar e declarar as variáveis que nos auxiliarão no desenvolvimento desse programa.

Informações:

  • numeros é o vetor que armazenará os valores reais inseridos pelo usuário;
  • maior e menor são as variáveis que armazenarão o maior e o menor número, respectivamente;
  • i será a variável contadora de um laço de repetição.

Passo 3

Com todas as variáveis declaradas, podemos requisitar a entrada dos 15 valores reais ao usuário. Dessa forma, utilizaremos o comando de repetição while para preencher o vetor numeros.

Passo 4

Com o vetor numeros preenchido, devemos realizar a identificação do maior e menor número. Para isso, iniciando pelo menor número, como não sabemos de fato qual é consideraremos a primeira posição do vetor numeros como aquela que contém o menor valor e inicializaremos a variável contadora i com 1 para iniciar a verificação a partir da segunda posição do vetor.

Como a variável menor está armazenando uma suposição, devemos novamente utilizar o comando de repetição while para percorrer todas as posições do vetor verificando se o valor da posição em questão é menor que o valor armazenado pela variável menor. Caso seja, menor recebe esse valor e a verificação continua a até o fim do vetor.

No final da execução do laço de repetição, temos a garantia de que a variável menor está de fato armazenando o menor valor dentre os 15 presentes no vetor. Esse tipo de busca é denominada linear, pois compara todas as posições do vetor.

Vale lembrar que ao final de cada loop a variável contadora i é incrementada em uma unidade.

Passo 5

Agora nós temos que encontrar o maior número, para ser sincero faremos praticamente a mesma coisa que fizemos no passo anterior.

Então, focando nas diferenças, para armazenar o maior valor utilizaremos a variável maior assim como faremos uma verificação de maior entre a posição de processamento do vetor números durante a execução do comando de repetição e o valor armazenado naquele momento pela variável maior.

Para exemplificar as coisas e entendermos melhor as mudanças, dá uma olhada em como ficou a verificação pelo maior número:

Passo 6

Por fim, nós só temos que realizar a impressão do valor armazenado pelas variáveis maior e menor:

Vale lembrar que para melhorar a visualização da saída podemos realizar a impressão dos valores com 2 casas decimais e adicionando quebras de linha.

Resposta

Exercício Resolvido #6

Universidade de São Paulo – ICMC, Programas com estrutura de repetição, Rosana T. Vaccare Braga, 2010, pg. 01 – Exercício 08.

Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada a massa inicial, em gramas, fazer um programa em C que calcule o tempo necessário para que essa massa se torne menor que 0,5 grama. O programa em C deve escrever a massa inicial, a massa final e o tempo calculado em horas, minutos e segundos.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Não vamos esquecer de definir o escopo do nosso programa, hein!?

Passo 2

Dentro do escopo do programa, precisamos declarar as variáveis que serão essenciais para o desenvolvimento e execução do mesmo.

Informações sobre as variáveis:

  • meiaVida armazenará a quantidade de meias-vidas necessárias para que a massa do material seja menor que 0,5 gramas;
  • gramas armazenará a quantidade de gramas presente no material;
  • segundos, minutos e horas armazenarão o tempo necessário, em suas respectivas unidades, para que a massa do material seja menor que 0,5 gramas.

Passo 3

Com as variáveis devidamente declaradas e inicializadas, podemos requisitar para o usuário a quantidade de gramas inicial do material.

Passo 4

Tendo conhecimento da quantidade de gramas inicial, podemos utilizar o comando de repetição while para realizar consecutivas divisões por 2 até que o valor presente na variável gramas seja menor que 0,5 gramas.

Dessa forma, garantimos que a cada loop a variável meiaVida receberá o incremento de uma unidade, uma vez que o material receberá uma redução de metade de sua massa a cada iteração.

Passo 5

Tendo conhecimento da quantidade de meias-vidas necessárias, automaticamente sabemos o tempo em segundos, já que o enunciado nos diz que a meia-vida do material é de 50 segundos.

Com isso, conseguimos realizar a atribuição do valor em segundos para a variável segundos, e, posteriormente, calcular o valor em minutos e horas com uma simples conversão de valores (divisão por 60).

Passo 6

Por fim, basta realizarmos a impressão do tempo nas três diferentes unidades calculadas.