Transcription
Olá pessoas, professor Thiago aqui para mais uma videoaula aqui no nosso curso aprendendo a programar algoritmos no Visual G. Vejamos, né? Olha só, a gente já chegou na estrutura de repetição enquanto. Se você veio até aqui, parabéns pela persistência. Espero de coração que esse conteúdo esteja te ajudando, né, nessa jornada de a programar. Não desista. Tenho certeza que conforme você for revisando os conteúdos, fazendo exercícios, vai ficar tudo mais fácil.
Mas se você chegou até aqui, é porque você está determinado a aprender. Agora, a estrutura de repetição enquanto, aqui dentro do Visual G, pense o seguinte: a gente já aprendeu a estrutura para, a estrutura repita. Veja só como essas estruturas já mudaram a nossa forma de pensar em algoritmo. Lá no para, no exercício da tabuada, você aprendeu comigo que o para ele tem um final pré-determinado. Eu já sei por quantas vezes eu vou repetir um código.
Quando a gente estudou repita, né, foi a última aula, não sei se você acabou de vir dela, você percebeu que o repita ele não tem um final pré-determinado. Então é um paradigma diferente. Nós esperamos acontecer alguma coisa dentro do código, né? O usuário digita alguma coisa que atenda a condição lá do "até", para que as repetições parem. Então nós dizemos que é um looping, uma estrutura de repetição, ela não tem um final determinado.
O nosso da vez aqui, o enquanto, ele vai ser bem parecido. Se você já é aquela pessoa que programa, você vai fazendo aquelas associações, né? Se você já conhece uma linguagem de programação, aí você pensou: "Ó, o para aparece o for, tá certo. O repita aparece o do while, tá certo." Agora chegou a hora da gente aprender um pouquinho sobre o while. E aí, eu quero comentar nessa videoaula uma diferença entre essas diferentes estruturas de repetição, porque lembra, eu sempre te falo isso: você tem que conhecer todas as ferramentas para identificar o problema mais apropriado que ela pode resolver.
Então, pensa comigo aqui o seguinte, ó. Vamos considerar que nós vamos ler duas médias de um aluno e aí a gente vai calcular. Aliás, a gente vai ler duas notas de prova de aluno e calcular a média. Lembra desse exercício? Onde a gente foi lá no primeirão que a gente fez, né? Então vamos revisitar ele, porque é um exercício fácil e a gente vai conseguir fazer ele juntos aqui, ó. Então, tem muito segredo, né? A nossa área aqui das variáveis, vamos declarar as variáveis. Então, vamos lá, ó. Ah, primeira nota, segunda nota e média vão ser variáveis do tipo real. Até aqui, nenhum segredo.
E aí, como que funcionava o nosso algoritmo? A gente colocava um escreva "informe a primeira primeira nota", leia primeira nota. Muito bem. Fazemos a mesma coisa para a segunda nota. Então, vamos lá: "informe a segunda nota". Já temos aqui agora a segunda nota do usuário. Calcular média ficou fácil. Você já aprendeu aqui comigo: variável média recebe a soma das duas primeiras notas. Só tem elas, né? Das duas notas. Vamos deixar isso aqui mais bonitinho assim. Muito bem. Fecho o parênteses. Lembra, a gente faz com parênteses para garantir que essa operação de adição seja feita primeiro, né? Você sabe que eu gosto também de deixar o código certinho. Então, Ctrl G, Ctrl G, tudo alinhadinho aqui, belezinha. Faltou a gente mostrar aqui a média, né? Escreva "a média é", muito bem. E aqui a variável média. Colocar uns dois pontinhos aqui para ficar bonito.
E agora, a gente vai testar para ver se o nosso algoritmo tá funcionando, né? Vamos vir aqui, "Run", rodar algoritmo. Aparece aqui atrás da minha caixa d'água. Deixa eu tirar daqui. Então, "inf a primeira nota". Pessoa tirou oito. Muito bem. Segunda nota, a pessoa tirou seis. Devia ter estudado um pouquinho mais. Vamos lá. A média deu 7,5. Calculou, maravilha.
Aí você fala: "Thiago, onde que o enquanto entra aqui nessa brincadeira?" E aí, eu vou te falar: ele entra no seguinte problema. Eu já havia te falado em outras ocasiões que as estruturas de repetição, elas são excelentes pra gente fazer validação de dados. Isso significa que enquanto o usuário não responder da maneira que eu quero, eu vou deixar aquilo ali acontecendo. Por que que pode acontecer? Eu posso vir aqui e falar que o aluno tirou 12 na primeira prova. Já não posso, né? Minha média ela vai de zero a 10. E aí, na segunda nota, ele foi muito mal, que ele tirou menos seis. Ficou devendo nota, né? E aí, essa média aí tem algum sentido pra você, né? Calculou, deu 3,5. Mas daí, coisa estranha isso, né?
Então, a gente pode criar mecanismos de validação de modo que a gente trave o usuário para digitar o que nós queremos. A estrutura enquanto dá para fazer isso com ela? Dá para fazer isso com ela. Porém, a gente vai discutir mais nessa videoaula se ela seria mais apropriada pra gente fazer isso. Mas vejamos. Vamos vir aqui, ó, e fazer essa validação da primeira nota. Aí eu posso fazer o seguinte: eu já pedi pra pessoa digitar da linha 7, 8. Ela digitou. Beleza. Agora vou colocar assim, ó: "enquanto a primeira", vamos lá, "a primeira nota ela for menor do que zero ou primeira nota maior do que 10", eu venho aqui e coloco. Passa. Ai, não vai caber. Vai, vai caber tudo. Que abre, fecha. Então, eu tenho um "fim enquanto". Muito bem. Aí o que que eu vou fazer aqui? Vou falar pro usuário assim, ó. Vou colocar a mesma mensagem pra ele. Se você já foi meu aluno de linguagem de programação, eu acabei de fazer uma coisa aqui. Eu odeio. Quero que você comente aqui o que que eu fiz. Se ninguém comentar, é porque ninguém teve aula de programação comigo ainda. Talvez eu dê spoiler no fim da aula. Mas vamos lá, ó. Vou colocar um aviso pro usuário aqui, ó: "Nota inválida". Né? Então, "nota inválida". Tô falando pra ele, ó, sua nota tá inválida. "Informe a primeira nota". Vou até colocar aqui uns dois pontinhos pra ficar bonitinho, igual nesse aqui também, né? Muito bem. O de baixo aqui, Ctrl G para acertar a identação.
Então, relembra comigo o conceito de estar dentro, né? Vou arrastar um pouquinho aqui a barra de rolagem. Então, ó, a sintaxe do nosso enquanto. Eu chutei que sim, vai funcionar. Ai, professor, você chutou? É permitido fazer isso? Sim, é permitido, né? Uma das coisas que você não pode fazer quando tá programando é ir lançando aleatoriamente as estruturas sem nenhum critério, né? O que você pode às vezes deduzir é a sintaxe. Será que vai aceitar essa sintaxe aqui? A gente usou um operador lógico "ou". A gente tem duas condições e na minha cabeça isso aqui faz sentido. Se fizer, a gente tem que entender por que fez. Se der errado, a gente tem que entender por que nós erramos. A melhor maneira da gente fazer isso é testando. Então, vamos aqui executar, rodar algoritmo. Vem aqui, tira da caixa d'água. Vamos lá. A primeira nota. Vamos colocar uma nota que seja válida, porque a intenção, se a nota for válida, não vai nem entrar ali na linha 10, já vai cair direto pra segunda nota. Então, a pessoa veio aqui, tirou 10. Ó, já caiu pra segunda nota. Deu certo. Então, tirou 10 também. Média, média, média, média deu 10. Belezinha, né?
Vamos agora reiniciar nosso algoritmo. Vamos rodar novamente. Agora, para nós fazer uma situação inválida. Então, lembra aquele caso lá absurdo que a pessoa tirou 12? Então, vamos lá. Primeira nota 12. Vamos ver o que acontece. "Nota inválida. Informe a primeira nota novamente." Né? Acho que faltou um "novamente" ali. Vamos colocar agora uma nota que seja válida. Vamos ver. Ah, a pessoa tava digitando, apertou errado aqui. Pessoa tirou 10, né? Então, a primeira nota. Vamos ver. Opa, coloquei o 10 aqui. Caiu agora pra segunda nota. Muito bem, né? Aí eu posso vir aqui e fazer o mesmo procedimento pra segunda nota. Então, veja, eu posso chegar aqui agora pra segunda nota. Posso dar um belo de um Ctrl, Ctrl V aqui. E você tá percebendo o seguinte, né? Começa ter código repetido, né? Ó, um problema de Ctrl C, Ctrl V aqui. Do, ó, você viu isso? Que legal que bugzinho maneiro. É, não confio nos computadores. Foi meu aluno, você sabe que eu não confio muito em computador.
Então, olha só, vamos fazer a validação aqui agora. "Enquanto a segunda nota", né? Vamos entender isso daqui. Veja, você já tá acostumado comigo a pensar em pequenas unidades. Eu sempre falo pra vocês: faça o teste lógico. O teste lógico, ele é o seu amigo. Você pode até fazer no papel. Agora que você tá aprendendo a programar, vai ser muito válido também. O teste lógico, você sempre vai perguntar pro que tá entre parênteses ali, se é verdade, né? Se é verdadeiro. Então, veja o seguinte. Vamos imaginar uma situação onde a pessoa digitou 12 na segunda nota. Aí vai chegar aqui no 19. O que que vai acontecer? A repetição ela vai acontecer enquanto a segunda nota ela for menor do que zero. Então, vamos fazer a pergunta aqui: é verdade que 12 é menor do que zero? Verdadeiro ou falso? Falso, né? 12 é maior do que zero. Porém, o nosso operador lógico aqui é o "ou". Então, eu preciso ver a outra condição. O que que ela tá me dizendo? Vamos olhar aqui a condição: é verdade que 12 é maior do que 10? É verdade. Então, como é o operador lógico "ou", uma das condições precisa ser verdadeira para que a repetição aconteça. Essa daqui, o verdadeiro. Então, eu vou repetir aqui. Legal, né?
Agora, vamos imaginar o outro caso. Vamos imaginar que a segunda nota, a pessoa digitou 10. O que que aconteceu? Chegou aqui, ó: é verdade que 10 é menor do que zero? Verdadeiro ou falso? É falso, né? 10 é maior do que zero. Então, essa primeira condição deu falso. Agora, vamos testar a outra: é verdade que 10 é maior do que 10? Não, não é verdade, né? Deu falso também. 10 é igual a 10, 10 não é maior do que 10. Então, as duas condições deram falso. Eu não vou entrar dentro do enquanto. Já caio aqui direto pra média.
O que você pode estar pensando agora? Eu espero que tenha dado uma clareada na sua mente, você tenha ficado mais assim tranquilo também e entendido como que eu faço a análise aqui dos algoritmos. Dá para fazer esse mesmo exercício utilizando repita? A diferença é que talvez você já tenha até percebido, mas o enquanto ele faz a verificação antes de repetir. Então, antes de iniciar o laço de repetição, o enquanto ele verifica se ele deve repetir. Por isso que a gente precisa perguntar o valor da variável antes. Pode ser um problema se a gente fosse escrever esse mesmo exercício usando repita. Ele ficaria menor. Vamos fazer esse teste, então. Ó, vou colocar aqui "enquanto validação". Né? Vamos vir aqui, vamos salvar esse exercício e agora vamos fazer o seguinte: vamos criar um novo. Eu vou dar uma bela de uma copiada aqui para não digitar tudo e vamos reescrever esse exercício usando repita. Você pode considerar aqui: "Pô, Thiago, por que que você não vai usar o para?" Lembra, o para ele já tem um final pré-determinado. Então, o que que acontece? A gente às vezes não quer que isso aconteça. Então, a gente tá no caminho de uma repetição que ela não tem um fim específico. A repetição para quando a gente atende o determinado objetivo.
Então, vamos lá, ó. "Repita". Né? Esse nome aqui, lembra, eu que dou, eu gosto de dar esses nomes assim, porque quando salva o arquivo, eu já sei pelo nome do arquivo que tem dentro dele. Ó, a estrutura que ela vai ser a mesma, mas vamos, vamos reescrever por partes. Como que ficaria aqui o repita? Ficaria assim, ó: "repita" e aqui a gente vai ter esse código por dentro aqui mesmo, né? Então, veja, o repita ele não faz nenhuma distinção do que que tá acontecendo. Ele só vai fazer esse meio aqui. Nossa, código horrível. Vamos Ctrl G aqui. Melhorou.
Então, olha só, o repita aqui, ele precisa de um "até", né? Pra gente poder acabar. Então, eu vou repetir até quando? Vamos pensar aqui, né? Como que ia ficar bom esse critério de parada aqui, ó? Será que eu posso reciclar o mesmo, né? Então, "repita até que". Vamos levar isso daqui pra cá, ó. "Até que a nota seja menor do que zero"? Não, né? Porque eu não posso digitar nota negativa. Então, "repita até que a pessoa digite um número maior do que zero", certo? E "repita até que a pessoa digite um número maior do que 10"? Também não, né? A gente quer um número menor ou igual a 10. Poderia colocar "menor do que 11", por exemplo? Poderia. Só que aí, no caso, aceitaria 10,5. Pense que isso pode ser um problema. Então, aqui o nosso caso é, ó, maior do que zero. Na verdade, nem é maior igual, porque a pessoa pode ter tirado zero, infelizmente, né? Então, maior ou igual a zero e menor ou igual a 10. Será que a nossa repetição aqui, ela vai dar certo também?
Então, vou fazer o seguinte, ó. Eu vou apagar esse trecho do enquanto. Aí vai dar pra gente ter aqui uma via de comparação. Vamos dar um Ctrl, Ctrl G para alinhar tudo bonitinho. Então, olha só, acredito que isso aqui vai funcionar. Qual que é a melhor maneira? Testando, né? Vamos fazer o teste aqui pra gente ter essa noção. "Run", rodar algoritmo. Vamos lá. "Digite a primeira nota". Vamos começar digitando uma nota válida. Vamos lá. Digitei o 10. Pegou o 10. Pegou, ó, já caiu pra segunda nota aqui. Segunda nota, oito também, né? Vamos colocar uma nota válida. A média deu nove. Muito bem, ó.
---
Olá pessoas, professor Thiago aqui para mais uma videoaula aqui no nosso curso aprendendo a programar algoritmos no Visual G. Vejamos, né? Olha só, a gente já chegou na estrutura de repetição enquanto. Se você veio até aqui, parabéns pela persistência. Espero de coração que esse conteúdo esteja te ajudando, né, nessa jornada de a programar. Não desista. Tenho certeza que conforme você for revisando os conteúdos, fazendo exercícios, vai ficar tudo mais fácil.
Mas se você chegou até aqui, é porque você está determinado a aprender. Agora, a estrutura de repetição enquanto, aqui dentro do Visual G, pense o seguinte: a gente já aprendeu a estrutura para, a estrutura repita. Veja só como essas estruturas já mudaram a nossa forma de pensar em algoritmo. Lá no para, no exercício da tabuada, você aprendeu comigo que o para ele tem um final pré-determinado. Eu já sei por quantas vezes eu vou repetir um código.
Quando a gente estudou repita, né, foi a última aula, não sei se você acabou de vir dela, você percebeu que o repita ele não tem um final pré-determinado. Então é um paradigma diferente. Nós esperamos acontecer alguma coisa dentro do código, né? O usuário digita alguma coisa que atenda a condição lá do "até", para que as repetições parem. Então nós dizemos que é um looping, uma estrutura de repetição, ela não tem um final determinado.
O nosso da vez aqui, o enquanto, ele vai ser bem parecido. Se você já é aquela pessoa que programa, você vai fazendo aquelas associações, né? Se você já conhece uma linguagem de programação, aí você pensou: "Ó, o para aparece o for, tá certo. O repita aparece o do while, tá certo." Agora chegou a hora da gente aprender um pouquinho sobre o while. E aí, eu quero comentar nessa videoaula uma diferença entre essas diferentes estruturas de repetição, porque lembra, eu sempre te falo isso: você tem que conhecer todas as ferramentas para identificar o problema mais apropriado que ela pode resolver.
Então, pensa comigo aqui o seguinte, ó. Vamos considerar que nós vamos ler duas médias de um aluno e aí a gente vai calcular. Aliás, a gente vai ler duas notas de prova de aluno e calcular a média. Lembra desse exercício? Onde a gente foi lá no primeirão que a gente fez, né? Então vamos revisitar ele, porque é um exercício fácil e a gente vai conseguir fazer ele juntos aqui, ó. Então, tem muito segredo, né? A nossa área aqui das variáveis, vamos declarar as variáveis. Então, vamos lá, ó. Ah, primeira nota, segunda nota e média vão ser variáveis do tipo real. Até aqui, nenhum segredo.
E aí, como que funcionava o nosso algoritmo? A gente colocava um escreva "informe a primeira primeira nota", leia primeira nota. Muito bem. Fazemos a mesma coisa para a segunda nota. Então, vamos lá: "informe a segunda nota". Já temos aqui agora a segunda nota do usuário. Calcular média ficou fácil. Você já aprendeu aqui comigo: variável média recebe a soma das duas primeiras notas. Só tem elas, né? Das duas notas. Vamos deixar isso aqui mais bonitinho assim. Muito bem. Fecho o parênteses. Lembra, a gente faz com parênteses para garantir que essa operação de adição seja feita primeiro, né? Você sabe que eu gosto também de deixar o código certinho. Então, Ctrl G, Ctrl G, tudo alinhadinho aqui, belezinha. Faltou a gente mostrar aqui a média, né? Escreva "a média é", muito bem. E aqui a variável média. Colocar uns dois pontinhos aqui para ficar bonito.
E agora, a gente vai testar para ver se o nosso algoritmo tá funcionando, né? Vamos vir aqui, "Run", rodar algoritmo. Aparece aqui atrás da minha caixa d'água. Deixa eu tirar daqui. Então, "inf a primeira nota". Pessoa tirou oito. Muito bem. Segunda nota, a pessoa tirou seis. Devia ter estudado um pouquinho mais. Vamos lá. A média deu 7,5. Calculou, maravilha.
Aí você fala: "Thiago, onde que o enquanto entra aqui nessa brincadeira?" E aí, eu vou te falar: ele entra no seguinte problema. Eu já havia te falado em outras ocasiões que as estruturas de repetição, elas são excelentes pra gente fazer validação de dados. Isso significa que enquanto o usuário não responder da maneira que eu quero, eu vou deixar aquilo ali acontecendo. Por que que pode acontecer? Eu posso vir aqui e falar que o aluno tirou 12 na primeira prova. Já não posso, né? Minha média ela vai de zero a 10. E aí, na segunda nota, ele foi muito mal, que ele tirou menos seis. Ficou devendo nota, né? E aí, essa média aí tem algum sentido pra você, né? Calculou, deu 3,5. Mas daí, coisa estranha isso, né?
Então, a gente pode criar mecanismos de validação de modo que a gente trave o usuário para digitar o que nós queremos. A estrutura enquanto dá para fazer isso com ela? Dá para fazer isso com ela. Porém, a gente vai discutir mais nessa videoaula se ela seria mais apropriada pra gente fazer isso. Mas vejamos. Vamos vir aqui, ó, e fazer essa validação da primeira nota. Aí eu posso fazer o seguinte: eu já pedi pra pessoa digitar da linha 7, 8. Ela digitou. Beleza. Agora vou colocar assim, ó: "enquanto a primeira", vamos lá, "a primeira nota ela for menor do que zero ou primeira nota maior do que 10", eu venho aqui e coloco. Passa. Ai, não vai caber. Vai, vai caber tudo. Que abre, fecha. Então, eu tenho um "fim enquanto". Muito bem. Aí o que que eu vou fazer aqui? Vou falar pro usuário assim, ó. Vou colocar a mesma mensagem pra ele. Se você já foi meu aluno de linguagem de programação, eu acabei de fazer uma coisa aqui. Eu odeio. Quero que você comente aqui o que que eu fiz. Se ninguém comentar, é porque ninguém teve aula de programação comigo ainda. Talvez eu dê spoiler no fim da aula. Mas vamos lá, ó. Vou colocar um aviso pro usuário aqui, ó: "Nota inválida". Né? Então, "nota inválida". Tô falando pra ele, ó, sua nota tá inválida. "Informe a primeira nota". Vou até colocar aqui uns dois pontinhos pra ficar bonitinho, igual nesse aqui também, né? Muito bem. O de baixo aqui, Ctrl G para acertar a identação.
Então, relembra comigo o conceito de estar dentro, né? Vou arrastar um pouquinho aqui a barra de rolagem. Então, ó, a sintaxe do nosso enquanto. Eu chutei que sim, vai funcionar. Ai, professor, você chutou? É permitido fazer isso? Sim, é permitido, né? Uma das coisas que você não pode fazer quando tá programando é ir lançando aleatoriamente as estruturas sem nenhum critério, né? O que você pode às vezes deduzir é a sintaxe. Será que vai aceitar essa sintaxe aqui? A gente usou um operador lógico "ou". A gente tem duas condições e na minha cabeça isso aqui faz sentido. Se fizer, a gente tem que entender por que fez. Se der errado, a gente tem que entender por que nós erramos. A melhor maneira da gente fazer isso é testando. Então, vamos aqui executar, rodar algoritmo. Vem aqui, tira da caixa d'água. Vamos lá. A primeira nota. Vamos colocar uma nota que seja válida, porque a intenção, se a nota for válida, não vai nem entrar ali na linha 10, já vai cair direto pra segunda nota. Então, a pessoa veio aqui, tirou 10. Ó, já caiu pra segunda nota. Deu certo. Então, tirou 10 também. Média, média, média, média deu 10. Belezinha, né?
Vamos agora reiniciar nosso algoritmo. Vamos rodar novamente. Agora, para nós fazer uma situação inválida. Então, lembra aquele caso lá absurdo que a pessoa tirou 12? Então, vamos lá. Primeira nota 12. Vamos ver o que acontece. "Nota inválida. Informe a primeira nota novamente." Né? Acho que faltou um "novamente" ali. Vamos colocar agora uma nota que seja válida. Vamos ver. Ah, a pessoa tava digitando, apertou errado aqui. Pessoa tirou 10, né? Então, a primeira nota. Vamos ver. Opa, coloquei o 10 aqui. Caiu agora pra segunda nota. Muito bem, né? Aí eu posso vir aqui e fazer o mesmo procedimento pra segunda nota. Então, veja, eu posso chegar aqui agora pra segunda nota. Posso dar um belo de um Ctrl, Ctrl V aqui. E você tá percebendo o seguinte, né? Começa ter código repetido, né? Ó, um problema de Ctrl C, Ctrl V aqui. Do, ó, você viu isso? Que legal que bugzinho maneiro. É, não confio nos computadores. Foi meu aluno, você sabe que eu não confio muito em computador.
Então, olha só, vamos fazer a validação aqui agora. "Enquanto a segunda nota", né? Vamos entender isso daqui. Veja, você já tá acostumado comigo a pensar em pequenas unidades. Eu sempre falo pra vocês: faça o teste lógico. O teste lógico, ele é o seu amigo. Você pode até fazer no papel. Agora que você tá aprendendo a programar, vai ser muito válido também. O teste lógico, você sempre vai perguntar pro que tá entre parênteses ali, se é verdade, né? Se é verdadeiro. Então, veja o seguinte. Vamos imaginar uma situação onde a pessoa digitou 12 na segunda nota. Aí vai chegar aqui no 19. O que que vai acontecer? A repetição ela vai acontecer enquanto a segunda nota ela for menor do que zero. Então, vamos fazer a pergunta aqui: é verdade que 12 é menor do que zero? Verdadeiro ou falso? Falso, né? 12 é maior do que zero. Porém, o nosso operador lógico aqui é o "ou". Então, eu preciso ver a outra condição. O que que ela tá me dizendo? Vamos olhar aqui a condição: é verdade que 12 é maior do que 10? É verdade. Então, como é o operador lógico "ou", uma das condições precisa ser verdadeira para que a repetição aconteça. Essa daqui, o verdadeiro. Então, eu vou repetir aqui. Legal, né?
Agora, vamos imaginar o outro caso. Vamos imaginar que a segunda nota, a pessoa digitou 10. O que que aconteceu? Chegou aqui, ó: é verdade que 10 é menor do que zero? Verdadeiro ou falso? É falso, né? 10 é maior do que zero. Então, essa primeira condição deu falso. Agora, vamos testar a outra: é verdade que 10 é maior do que 10? Não, não é verdade, né? Deu falso também. 10 é igual a 10, 10 não é maior do que 10. Então, as duas condições deram falso. Eu não vou entrar dentro do enquanto. Já caio aqui direto pra média.
O que você pode estar pensando agora? Eu espero que tenha dado uma clareada na sua mente, você tenha ficado mais assim tranquilo também e entendido como que eu faço a análise aqui dos algoritmos. Dá para fazer esse mesmo exercício utilizando repita? A diferença é que talvez você já tenha até percebido, mas o enquanto ele faz a verificação antes de repetir. Então, antes de iniciar o laço de repetição, o enquanto ele verifica se ele deve repetir. Por isso que a gente precisa perguntar o valor da variável antes. Pode ser um problema se a gente fosse escrever esse mesmo exercício usando repita. Ele ficaria menor. Vamos fazer esse teste, então. Ó, vou colocar aqui "enquanto validação". Né? Vamos vir aqui, vamos salvar esse exercício e agora vamos fazer o seguinte: vamos criar um novo. Eu vou dar uma bela de uma copiada aqui para não digitar tudo e vamos reescrever esse exercício usando repita. Você pode considerar aqui: "Pô, Thiago, por que que você não vai usar o para?" Lembra, o para ele já tem um final pré-determinado. Então, o que que acontece? A gente às vezes não quer que isso aconteça. Então, a gente tá no caminho de uma repetição que ela não tem um fim específico. A repetição para quando a gente atende o determinado objetivo.
Então, vamos lá, ó. "Repita". Né? Esse nome aqui, lembra, eu que dou, eu gosto de dar esses nomes assim, porque quando salva o arquivo, eu já sei pelo nome do arquivo que tem dentro dele. Ó, a estrutura que ela vai ser a mesma, mas vamos, vamos reescrever por partes. Como que ficaria aqui o repita? Ficaria assim, ó: "repita" e aqui a gente vai ter esse código por dentro aqui mesmo, né? Então, veja, o repita ele não faz nenhuma distinção do que que tá acontecendo. Ele só vai fazer esse meio aqui. Nossa, código horrível. Vamos Ctrl G aqui. Melhorou.
Então, olha só, o repita aqui, ele precisa de um "até", né? Pra gente poder acabar. Então, eu vou repetir até quando? Vamos pensar aqui, né? Como que ia ficar bom esse critério de parada aqui, ó? Será que eu posso reciclar o mesmo, né? Então, "repita até que". Vamos levar isso daqui pra cá, ó. "Até que a nota seja menor do que zero"? Não, né? Porque eu não posso digitar nota negativa. Então, "repita até que a pessoa digite um número maior do que zero", certo? E "repita até que a pessoa digite um número maior do que 10"? Também não, né? A gente quer um número menor ou igual a 10. Poderia colocar "menor do que 11", por exemplo? Poderia. Só que aí, no caso, aceitaria 10,5. Pense que isso pode ser um problema. Então, aqui o nosso caso é, ó, maior do que zero. Na verdade, nem é maior igual, porque a pessoa pode ter tirado zero, infelizmente, né? Então, maior ou igual a zero e menor ou igual a 10. Será que a nossa repetição aqui, ela vai dar certo também?
Então, vou fazer o seguinte, ó. Eu vou apagar esse trecho do enquanto. Aí vai dar pra gente ter aqui uma via de comparação. Vamos dar um Ctrl, Ctrl G para alinhar tudo bonitinho. Então, olha só, acredito que isso aqui vai funcionar. Qual que é a melhor maneira? Testando, né? Vamos fazer o teste aqui pra gente ter essa noção. "Run", rodar algoritmo. Vamos lá. "Digite a primeira nota". Vamos começar digitando uma nota válida. Vamos lá. Digitei o 10. Pegou o 10. Pegou, ó, já caiu pra segunda nota aqui. Segunda nota, oito também, né? Vamos colocar uma nota válida. A média deu nove. Muito bem, ó.