Comando Do - While em C
Nesta aula, nós vamos aprender uma terceira estrutura de repetição; e agora nós vamos aprender a repetição chamada do while.
É uma estrutura de repetição extremamente interessante, porque em algumas situações ela facilita o nosso trabalho.
A estrutura do while, ela pode ser traduzida literalmente do inglês para o português como faça enquanto; e é exatamente isso o que ela significa, faça alguma coisa enquanto uma condição for satisfeita.
Diferentemente da estrutura while, a estrutura do while primeiro ela executa alguma coisa, ela executa alguns passos para depois testar a condição.
Então sua estrutura básica é essa daqui, olha só, o do, que é o faça, faça o quê?
Faça tudo o que estiver entre o par de chaves, perceba, eu abri aqui uma chave eu fechei aqui; então a gente vai ter aqui uma série de código, faça esse código enquanto nós temos aqui o nosso teste, terminando com um ponto e vírgula.
Então perceba que tudo o que está dentro da minha estrutura do ele será executado pelo menos uma vez; não se esqueça disso aqui, essa é uma das principais diferenças entre a estrutura while e do while.
Então tudo que está aqui dentro ele vai ser executado pelo menos uma vez, por quê?
O teste é feito no final, o teste é feito depois, então faça para depois testar, traduzindo do inglês, pense nas palavras em português que aí você não esquece isso, olha só, faça o que está aqui dentro enquanto satisfizer ou for satisfeito esse teste aqui, essa condição, faça todo o código que estiver dentro enquanto este teste, esta condição for verdadeira.
Vamos ver um exemplo prático para a gente entender melhor como funciona de fato essa estrutura?
Temos aqui então um exemplo mais prático já na linguagem C.
Olha só, imagine que a gente deseja fazer um programinha para calcular a média das notas de um estudante ou de uma sala, de uma turma.
Nós sabemos que uma nota normalmente varia no intervalo de zero até dez, nós não temos notas menores que zero e nós não
temos notas maiores do que dez; então este é um intervalo válido para nota.
Como garantir que o usuário vai digitar uma nota válida?
Eu tenho aqui as variáveis do tipo float, nota um, nota dois e “media” e aí olha a nossa estrutura de repetição aqui, do, faça tudo que está aqui dentro enquanto esse teste for verdadeiro; o que a gente está fazendo aqui, olha só, digite duas notas e aí eu estou lendo então dois valores do tipo real e salvando em nota um e em nota dois, Por que essa estrutura do while é muito interessante para esse exemplo?
Porque inicialmente, olha só, eu não tenho notas aqui, eu não tenho, eu não sei o que eu tenho aqui nessas variáveis, pode ser lixo de memória, eu não inicializei as variáveis nota um e nota dois com nenhum valor, porque nesse caso não faz sentido qual a nota inicial do aluno, entende, é o usuário, é o professor que vai inserir essas notas; então faça, faça o quê?
Peça nota, leia as notas e aí então teste: as notas são válidas?
E o que significa dizer que as notas são válidas?
A nota um tem que ser, enquanto a nota um for menor do que zero ou a nota um for maior do que dez, ou nota dois for menor do que zero ou a nota dois for maior do que dez, significa que eu tenho uma nota inválida, perceba que eu estou usando o operador lógico OU várias vezes, olha só, e o OU significa que se qualquer um desses testes for verdadeiro, significa que a gente tem pelo menos uma nota inválida, então eu volto aqui para o do e faço aqui dentro de novo, para testar novamente.
E aí a gente vai ficar nesse laço, nessa repetição enquanto pelo menos uma das notas forem válidas.
Quando quebrar essa repetição significa que tanto nota um, quanto nota dois estão entre o intervalo de a dez, e aí então quebra nossa repetição e eu posso calcular a minha média.
Muita atenção no cálculo da média, muitos estudantes esquecem esse par de parênteses aqui; por que eu preciso par de parênteses?
Porque a divisão tem precedência sobre a soma, se eu não colocar os parênteses será feito primeiro esta divisão para depois somar com nota, e não é isso que eu quero, então fique muito atento a isso, eu quero somar as duas notas,nota um e nota dois, para depois encontrar média, ou seja, para depois dividir por dois.
Vamos ver esse exemplo funcionando no Code Blocks?
Então vem comigo!
Eu tenho aqui o mesmo exemplo que nós vimos lá na aula com apenas uma alteração, lá eu pedi e testei as notas um e dois juntas, ao mesmo tempo, e aqui eu separei, apenas para mostrar para você que você tem várias formas de fazer isso aqui, ou pelo menos duas formas de fazer isso aqui.
Temos aqui as nossas variáveis do tipo float, nota um, nota dois e “media”, aí eu eu coloquei aqui uma repetição do while pedindo a primeira nota.
Então eu vou ler a primeira nota, e eu vou testar a primeira nota; se a primeira nota for menor que zero ou for maior do que dez, significa que ela é válida, então eu volto e peço a primeira nota novamente.
Eu vou ficar nessa repetição até que a primeira nota seja válida; terminou a primeira repetição, a gente vem para a segunda, onde eu estou pedindo a segunda nota.
Novamente, a gente vai ficar nessa repetição até que seja digitada outra nota válida.
Quando ele digitar então a segunda nota válida nós vamos então fazer o cálculo da média.
E, por fim, eu vou imprimir a nossa média.
Vamos testar esse programa?
Eu vou executar, compilar e executar aqui o meu programa e agora temos aqui então a primeira nota.
Olha só, se eu digitar, por exemplo, menos um, perceba que é menor do que zero, então ele continua dentro da repetição, olha só, enquanto eu digitar uma nota menor do que zero, ele vai ficar aí.
A mesma coisa se eu digitar uma nota maior do que dez, não existe na verdade virgula, eu digitei virgula, então por isso que ele deu errado aqui, tem que ser ponto.
Vamos executar o programa que novamente, aí foi a entrada de dado errado, ponto cinco, olha o que vai acontecer, ele permanece pedindo a primeira nota.
Então eu tinha digitado algumas notas negativas e depois eu pressionei então dez ponto cinco, que seria o nosso dez virgula cinto, então perceba, ele fica pedindo a primeira nota enquanto não for digitada uma nota entre zero e dez.
Eu vou digitar nesse caso aqui a nota oito, e aí perceba que agora ele foi para a segunda nota; segunda nota é a mesma situação; enquanto eu digitar uma nota menor do que zero ou maior do que dez, ele vai ficar pedindo a segunda nota.
A primeira foi oito, vamos colocar então aqui sete, que vai dar como média sete e meio; então nós temos aqui a nota final ou a média do usuário, é uma média sete e meio.