Transcript for:
Laços de Repetição

e aí é uma pessoa hoje na sala vai tratar subindo laços de repetição hoje nós vamos aprender comandos que vão permitir que a gente pega um mesmo trecho de código execute diversas vezes e não somente uma vez e me acompanha no curso de desenhista e percebido que os nossos programas se tem uma única execução né não executa os programas terminou ele acaba mas como é que a gente poderia fazer por exemplo que nosso programa ao terminar sua execução por exemplo voltasse o início e continuasse executando né ou pelo menos perguntasse para o usuário se ele deseja efetuar novamente o seu procedimento né ou no caso de uma digitação incorreta ele pudesse voltar e digitar novamente o valor correto né isso a gente só consegue fazer se ele te pegar esse nosso trecho e escrever para o nosso programa que ele precisa repetir aquilo ali quantas vezes for necessário e esse tipo de situação a gente vai aprender aqui com o nosso e com os nossos laços de repetição e vamos ver como isso funciona né que eu tenho o fluxograma de uma repetição de um trecho de código né então imagina esse programa sendo o fluxo principal da minha aplicação e começa aqui em principal termina aqui em fim né nós vamos ter inicialmente um determinado comando sendo executado aqui não importa qual a um comando inicial depois nós vamos ter uma repetição dn comandos aqui bom e isso vai desencadear em um teste se esse teste for falso nosso programa finaliza em diretamente se esse teste for verdadeiro porém que acontece ele volta para cá executa novamente e esse trecho e novamente o teste se for falso ele sai se for novamente um valor verdadeiro ele vai executar esse trecho novamente e vai continuar nesse loop esse laço eternamente até que essa condição aqui seja dado como verdadeiro este laço que a gente está vendo aqui é um laço com teste no final eu garanto pelo menos um execução e ao final eu posso continuar ou não é executando né a outra possibilidade é este tipo de laço aonde o teste está no início né aí eu tenho ainda um bloco de comandos a serem executados mas o meu teste acontece antes então se o teste for falso ele já sai diretamente no executando nenhuma vez se o teste for verdadeiro ele vai executar uma vez e testar valente se continuar verdadeiro ele esta novamente e assim vai até que os resultados seja dado falso né então esses são os desenhos que a gente tem nos nossos laços né ver como é que só que fica lá na programação que é é o primeiro a gente vai ver um acho que a gente costuma chamar em programação de faça enquanto né com teste no final então vamos imaginar o seguinte programa né vamos colocar aqui um bom sou hotline e eu vou exibir aqui é isso aí eu vou fazer mais dois aqui vai ser o fim ó e aqui vai ser e aqui vai o meu programa o imagina aqui esta linha aqui ó é um programa que eu desejo executar mas digamos que eu quero ao final da execução desse programa perguntará se o usuário quer executar novamente perceber que isso é uma situação de teste no final e vai fazer pelo menos uma vez e ao final eu quero perguntar se ele vai executar novamente quando eu tiver essa situação e que eu vou fazer eu vou escrever o comando do e quer dizer faça em e vou criar um bloco neste bloco eu vou colocar o comando que eu quero que se repita o azul isso aqui e logo após eu vou colocar a palavra o ayu significa enquanto enquanto esta situação aqui for verdadeira este comando devem se repetir a maneira mais simples de fazer isso é forçar aqui o valor se você forçar aqui um valor true e que vai acontecer né sempre e só que vai ser verdadeiro então sempre ele vai voltar esta situação aqui se chama laço infinito ou loop infinito mas é que tá aqui para ver para vocês verem o que que é um laço infinito percebe que você achar planta já te aviso não e esse comando aqui nunca vai ser executado porque ele vai ficar para sempre aqui né próprio estúdio e já consegue te mostrar não consegue perceber que o nosso problema está executando aqui ele vai executar infinitamente porque ele vai fazer essa linha e perguntar não é verdadeiro sinto é verdadeiro então ele faz de novo e isso vai ficar para sempre tá geralmente um laço infinito é algo indesejável então se isso acontecer no programa seu a primeira coisa que você tem que fazer é vir aqui até o terminal que cada terminal e apertar o trouxe para finalizar o seu programa finalizando seu programa você consegue voltar normal normalmente aqui para para o seu editor e consertar o problema o problema é isso aqui né a gente tem que ter uma condição um pouquinho melhor o digamos que aconteceu que a gente queira é o seguinte os olhos vai digitar vai perguntar para os olhos se ele quer continuar ou não se ele disser que sim você continua normalmente sempre disse aqui não você sai do programa é essa pergunta ela tem que ser executada sempre na verdade né então a cada execução né então ela está dentro do aço o porta aqui um bom som o primeiro bright né avisar o usuário que ele tem que ir g1 e o cássio e se sair é sim ou não e aí o e consul o grid line praia kelly digite alguma coisa que que eu vou fazer aqui eu vou criar uma variável só variável necessariamente deve ser criado a fora do laço ok eu vou chamar ela de ir opção tem essa opção ela vai receber aqui ó a cada vez que isso se repetir o valor que o usuário digitou né eu vou aproveitar para converter o que ele digitou já para maiúsculo para não ter o problema e aí qual é a condição para que ele volte para o início desse bloco e faça tudo de novo é a condição é que a variável opção seja a e é na verdade é que é o seguinte tá ele vai a repetir e toda vez essa variável opção não for s né quando for é se eu quero que saia então ele vai voltar para lá quando a variável opção isso é bom que é um uma negação e o igual né não for igual a s em então quando enquanto ele não digitar é se ele volta e continua aqui né porque essa é o valor para sair ele vai exibir início mas exibir aqui vai no programa vai exibir sair sim ou não e vai pedir para os olhos digitar uma peppa terminado isso ele vai testar se essa tecla não for s de sair ele volta e faz tudo de novo quando for é se ele vai sair e vai exibir 5 e vamos ver se isso aqui funciona o e aí oi ó vamo tá aqui ó seu início aqui vai o meu programa sair sim ou não eu não vou pressionar s só na qualquer coisa e vocês vão que ele vai continuar não digitou é se você botou converte maiúscula então tanto faz no outro nem entre aí sim ele finaliza e executa o comando logo depois aqui de fim aparecendo que isso aqui eu não sei quantas vezes ele vai executar mas é culpar até que essa condição aqui seja é se você já tingida né então é bem bacana para situações que eu não sei quantas vezes meu código tem que ser executado em o que é bastante bacana tá e eu vou fazer uma cópia de skin para gente ver como é que fica com o teste no início e a gente fez o teste no final né usando o comando do wii u e agora a gente vai fazer o teste no início deixa no início ele é inclusive mais utilizado do que o teste no final por questões históricas e essas preferem mas não tem um outro geralmente você consegue substituirmos tá qual a diferença do teste no início teste o início é uai ou ele vai antes do bloco e não existe tudo então eu já coloco direto e faça enquanto isso aqui quer dizer faça enquanto essa opção aqui se manter diferente se manter verdadeira então faça enquanto a opção não for sim o purim né isso aqui pode acontecer de não ser sim desde o início pão por exemplo digamos que opção esteja valendo o outra coisa qualquer valor ele não vai ser sim o executar voltou para cá e testo não preciso deste contiver ou também quando você faz o alho a mãe se ela já for sim e não vai entrar nem a primeira vez a o que que eu preciso além disso tá achando que ele tá dando erro aqui na variável opção porque ele precisa do valor de opção aqui já antes de iniciar o meu a sua antes de um nesse valor do usuário que ele já precisa testar antes tá então a variável opção eu já tem que ter um valor geralmente nessa situação a gente inicia ele vazio né é tão vazio ele não vai ser igual a esse então ele vai executar a primeira vez agora se você já iniciasse ela valendo s eu ia bater aqui ele a ser igual a essa daí é sair eu ia fazer nenhuma vez então é é importante que você controle né o essa variável aqui do seu teste do laço né teste de ficaram não dentro do laço e preste atenção no valor inicial eu vamos está aqui ó eu desabilitei o de cima nós estamos somente aqui com o o laço no início que vocês vão ver que o programa desta maneira tem exatamente o mesmo funcionamento eu só inverti mexer o laço no início no mês de deixar o laço no final tá então se eu digitar qualquer coisa ele continua seu digitar é se ele sai hein então essa é uma maneira bem comum de se utilizar o e os laços de repetição em a outra aplicação muito comum dos laços de repetição é a criação de computadores em então o digamos que eu precise por alguma razão fazer um trecho do meu código número contado de vez eu quero especificar quantas vezes não esperar que uma determinada condição acontece quero que ele faça cinco vezes o 10 vezes ou mil vezes um milhão de vezes mas eu sei a quantidade de vezes eu quero repetir ou essa quantidade de vezes é uma quantidade contada né esse seria mais mais correta de se falar quando eu fizer isso que que vai acontecer e eu vou ter uma variável eu vou chamar posso chamar ela de contador bem comum chamada de contador para chamar de seu você pode chamar de ir também um muito comum eu vou dizer que o meu computador é zero em porque eu não fiz ainda nenhuma vez e depois eu vou ensinar meu nosso em e vou dizer para fazer até que o meu contador seja menor ou igual que sim quem não quero que ele faça a0 a1 a2 a3 a4 e para cinco eu coloquei também igual né igual também vai e o que que eu vou fazer eu vou fazer alguma coisa aqui dentro do meu laço pode ser o que eu precisar tá no caso aqui eu vou colocar por exemplo contador igual nós vamos colocar em tribulação aqui é um valor de contador eu quero que exiba para mim o valor de contador quantas vezes for necessário aqui até que essa condição se torne verdadeira e o final eu vou exibir aqui o seguinte é finalizado após o pecador atingir eu não vou colocar entre a população aqui é o valor dela percebo que o valor a variável contadora existe fora né então o valor dela vai continuar executando-se eu dar esse programa exatamente do jeito que tá aqui a gente vai entrar um as infinito no meu bem finito pode fazer para mostrar para vocês vamos ver se vocês já imaginaram que tá acontecendo o programa vai ficar exibindo aqui esse computador infinitamente e percebam que o valor de computador sempre é zero e curtir o inicializei ele valendo 10 eu não mudo o valor dele em nenhum momento cancelar a execução do programa e o que que eu preciso fazer dentro do meu laço em algum momento eu preciso alterar o valor de computador porque senão só que nunca vai ser verdade em tom que normalmente a gente faz a gente faz alguma coisa desse tipo contador igual a computador mais um e aí eu digo que a cada vez que ele exibir isso aqui né o cardápio a passo do meu laço ele vai aumentar o com padrinho e sim eu tenho algumas formas de fazer isso que são equivalentes tá bom então eu posso fazer assim e eu posso fazer isso aqui e aí pode fazer isso aqui as três situações são idênticas contador igual computador mais um contador mais igual a um que significa exatamente isso aqui e computador mais mais e quer dizer acrescente um implemente um o valor de contador os três fazem a mesma coisa para a gente só quer um dos três a gente não quer os três então eu vou apagar esses dois aqui e deixar só este aqui e inclusive é o mais comum tô agora vocês vão ver que quando a gente executar e a cada passagem lutador aqui vai ser exibido número maior do que o anterior e olha só e agora nós foram inclusive atingir o final o contador era a-001 menor igual que cinco sim então ele exibe o contador igual a zero e aumenta a contador para um bateu aqui no final da chave ele volta é um é melhor boxing sim então ele entra exibir o contador igual um erro aumenta a contador para 2 e volta dois é menor igual sim sim exibir o contador = 2 aumenta contador para três e volta e quando ele exibiu o número 5 aqui o contador vai passar a c6 e vai perguntar seis é menor igual que cinco não então ele vem para depois da chave e finaliza um contador valendo o valor seis ok no programa que a gente consegue visualizar exatamente o que a gente escreveu em termos de código aqui ó é uma coisa muito interessante para gente fazer aqui para conseguir visualizar isso aqui melhor é utilizar a depuração né então quem ainda não assistiu o vídeo de depuração tem um vídeo no canal explicando exatamente como configurar o vs code e como executar a depuração tá eu vou fazer aqui com vocês mas eu não vou me preocupar em explicar como é que faz porque quem quiser aprender olha lá no vídeo tá eu vou colocar um break-point aqui porque eu quero que o programa palha nesse ponto e depois eu vou colocar um break-point ao final do laço e a gente entender o que que tá acontecendo no início e no final do laço depois a gente ver qual dos 2 é melhor tá ok então quero te pagar de uma vez e depois que ele pare em cada passagem do nosso laço em tão para executar né agora eu vou executar aqui eu já fiz toda a configuração e voltar a demora um pouquinho na primeira vez e aí o pai nosso programa está agora neste ponto percebam que ele já detectou que a gente tem uma variável chamada computador que ela começa valendo 10 em então vamos lá passo a passo e agora eu estou no áudio e ele vai testar essa condição aqui é todinho aqui ó essa condição eu vou adicionar no meu whatsapp aqui ó eu quero sonhar mover eu vou adicionar na mão aqui eu quero saber se computador é menor igual que sim olá neste momento é ei tu não a gente sabe que quando ele executar esse comando a próxima linha que ele tem que fazer é aqui ó vai ter dois 43 in e vamos ver para um break-point que eu pedi né entrou no laço oi e aí e olha lá o que aconteceu ele vai executar agora essa ninho eu vou mudar aqui para o terminal para a gente poder ver o nosso a nossa saída executou exibiu lá para a gente contador valendo 10 contador ainda vale zero porque ainda não executou esse comando após a execução desse comando o contador já tá valendo um em ainda é menor igual que 5 e no próximo comando ele volta ao em cima para o alho a montadora ainda é menor igual que sim então ele vai fazer novamente quem e eu vou tirar esse break-point aqui e vou deixar só o do final e vou usar o continue para vocês verem que ele tem que parar em casa break-point aqui ó executei ele exibiu um computador passou a ser dois porque ele implementou e ainda é menor igual sim ele vai voltar lá em cima executar de novo e voltar para cá o exibiu dois contador javali três que ainda é menor igual símbolo de novo exibiu três contador virou quatro e ainda é menor igual 5 o exibiu quatro já vale5 e ainda é menor igual cinco agora ele exibiu cinco contador ficou valendo os 6 e agora legião não é não era igual cinco agora já vou passo a passo para a gente visualizar ele foi até uaio vai avaliar essa expressão a gente já tem ela aqui no meu computador eu paro mouse em cima tá valendo 5:55 cordão seis não é a menor grau 5 a gente já valeu ele aqui e o próximo comando que ele vai fazer é sair do laço e executar o primeiro eu mando depois do laço exibindo computador que tá valendo seis ele falou eu vou continuar o nosso programa até o final maravilha então essa é uma maneira da gente fazer o problema executar uma quantidade contada de vezes em hum hum uma variação disso né vou copiar isso aqui pra gente não ter que digitar tudo de novo a variação disso né é que a gente pode também contar regressivamente tá não só progressivamente não devemos que o meu contador comece e por exemplo 5 e eu quero aquele eu quero fazer uma contagem 54321 se eu quiser fazer 5 4 3 2 1 ele vai começar em 5 e eu tenho que parar quando e quando ele for o menor e o igual quiseram e eu quero que exiba o zé e não né se eu não quero que exiba 10 eu tenho que fazer enquanto perdão enquanto ele é o maior quiser certo cinco é maior que zero ele vai entrar na primeira vez a hora que ele vira 00 não é maior que zero e sai hein não é isso vai fazer para 5 para 4 a 3 para 2 para um quando ele for 00 não é mais maior que zero e ele sai vamos ver se funciona e aí eu não vou usar o depurador agora porque demora muito mais né mas vocês podem fazer esse mesmo programa usando a depuração ó eu vi uma erro aqui ó onde que tá acontecendo gente a gente queria um contador regressivo né o nosso programa tá com número aumentando já consegue detectar onde está o erro aqui ó ó e onde a gente usou mais que a gente pode usar o menos então as três formas são aqui computador igual a contador - 1 ou contador menos igual a 1 ou contador - - todas elas são várias hein eu vou usar apontar dormir nos menos e vamos ver como ele vai ficar a contagem regressiva 5 4 3 2 1 e quando chegou em zero ele saio em faça uma decoração de isso aqui passo a passo para entender o que está acontecendo hem e aí a próxima aplicação comum de laços né quando você precisar fazer uma acumulação por ser você vai pelo valor que a cada repetição esse valor vai aumentar aumentar aumentar aumentar de algum de alguma quantidade que você quiser por exemplo digamos que você queira que o usuário de 10 números e cada número que digitar você vai somando exibir a soma no final o 10 20 30 100 não importa tá essa é uma coisa que você pode fazer o por exemplo digamos que você queira saber qual é a soma de todos os números entre x e y entre qualquer dois números que você quer vamos fazer isso vamos fazer ela também de exemplo vamos fazer um número inteiro que vai ser o meu computador vou chamar de rir e em um número muito comum para isso porque é para o termo e terás e quando você faz um laço cada passagem a gente chama de interação não é interação ok não é isso aqui tá errado é interação interação é uma repetição tá então a gente costuma usar o termo e onde a gente vai ter uma contagem de interações que eu vou criar uma variável a gente também e eu vou chamar de soma minha sogra vai começar a zero porque eu não somei nada ainda eu vou querer um laço eu quero que ele se repita até que o meu i e enquanto meu irmão atingir um número 5 ou atinja né o número 5 porque tenho igual tão cinco ainda vai entrar né se não tivesse igual cinco não entrar ele e o que que eu quero fazer aqui no meu laço a cada passagem eu quero que soma e receba o valor que ela tinha antes mas o valor de ir em e então vá para o próximo passo da minha interação realmente ruim isso aqui eu posso fazer tanto dessa maneira como o ossinho é a mesma coisa tá só não mais igual aí é a mesma coisa que soma igual a soma mais ir duas são equivalentes tá o que que eu tô fazendo aqui ó tô pegando o valor anterior de soma tô somando com i e tô gravando como o valor novo de sono e aí a cada passagem o valor de ir é só lado nessa variável que começou valendo 10 em e aí a gente pode vir aqui e falar sonso brightline a soma igual e essa nossa variável vamos ver se o que funciona aqui eu mandei somar 10 + 1 + 2 + 3 + 4 + 5 em a gente sabe que já é mais um mais dois é três mais três é seis mais quatro horas 10 mais cinco é 15 ou certo né vamo igual a 15 em para ver como funciona essa questão do acumulador aqui eu vou usar o nosso o nosso break-points orelha king e vamos a depurar o nosso produto e aí e aí hoje eu percebo aqui que nesse momento tanto enquanto o sol não valem zero e ele vai chegar aqui no meu laço eu vou apagar esse ótimo anterior aqui eu vou adicionar esse meu whats aqui e menor igual que cinco é o valor que eu quero acompanhar eu quero acompanhar também o valor de soma eu quero acompanhar o valor de ir em só para ficar facinho pra gente visualizar aqui e toma eu tô aqui ó não executei o ainda entrei nele oi e agora vou executar essa linha que eu não executei ainda soma tá valendo 10 a soma mais ir não consigo selecionar às vezes aqui só uma mais ir e vou colocar lá no nosso hot e ainda é zero porque ia 0 só nós é 0 + 0 0 ok o que que ele vai fazer nesse primeiro passo soma continua sendo o zé a gente viu com essa primeira passagem não ajudou em nada né eu vejo gente pudesse começar aí já em mim transformar 0110 não dá nada hein o próximo passo e o incrementado em 1 é um ainda é menor igual q5 a e agora e vai nenhum só uma vale zero soma mais in vale 1 se não ele vai pegar este valor aqui e vai gravar em soma oi ó agora só uma passando ali um e separar o mouse aqui se chama tá valendo um o ih vai aumentar ele vai continuar lá eu vou colocar um break-point nesse um pouquinho igual no bloco na próxima parada soma já tá valendo hummm hummm hummm hummm hummm hummm valendo 2 é só valendo 3 que embora sendo três são valendo vocês com e valendo 4 agora só no javali 10 o está valendo cinco então tá valendo 15 o está valendo os 6 ou lhe valendo os 6 vamos passo a passo ele vai chegar lá e o meu teste passou ser falso ele vai sair e executar a próxima linha que é exibir para a gente o resultado da soma e e aí a gente consegue entender exatamente o que aconteceu maravilha e vamos para o próximo a próxima aplicação que a gente vai utilizar é uma aplicação com laços aninhados ou seja quando eu tiver um laço dentro do outro quando for necessário um laço dentro do outro essas situações são muito comuns e programação mas às vezes também são são bem complicadas da gente ir é enxergar né exatamente o que a gente precisa é aqui que eu vou que eu quero fazer eu quero exibir essa figura aqui ó é o primeiro passo eu tenho um asterisco no segundo passo tenho dois asteriscos do terceiro passo eu tenho três no quarto tem 14 15 tem sim hein eu vou ter 15 linhas eu tenho cinco inscrições né 5 repetições de um comando que exibe a sem riscos só que a quantidade de asterisco que vão ser exibidos a cada repetição também é uma repetição que na primeira vez eu vou repetir uma na segunda vez eu vou repetir duas na terceira vez eu repetir três na quarta mais doente quatro na quinta vez eu reti cinco então aqui pode parecer bobo mas esse programa tem vários conceitos para a gente entender aqui vamos lá primeiro eu vou criar uma variável para gente a chamada linha quem e vou iniciar a minha linha em 10 if eu não estou na linha zé e depois eu vou criar um laço que vai me permitir e enquanto a linha e o ataque enquanto a linha for menor que cinco menor ou igual que 5 e eu quero por exemplo exibir é um asterisco vou colocar um espacinho para ele ficar mais bonito asterisco e um espaço em é isso aqui vocês já devem ter imaginado que vai permitir que eu exiba 15 linhas com asterisco em cada ninho em em em a infinito novamente esquecemos aqui em incrementar a nossa linha né e sempre lembrem de fazer o seu incremento para que o seu laço não fique infinito e aí é só no caso aqui foram seis né 26 uma vez a mais não vamos lá aqui principalmente menor que 5 a gente vai ter 5 repetições de exibir um e assim 50 edições mesmo porém não é isso que eu quero exibir né na verdade é isso que eu quero exibir que que eu quero exibir eu quero exibir várias vezes isso aqui não uma vez só na primeira linha eu quero um na segunda linha quero dois no terceiro a linha quero três na terceira linha quero quatro e assim por diante ó eu vou fazer uma mudança aqui eu vou fazer a linha começar em um e aqui sem o menor igual vai ficar mais legível tá primeira linha até a quinta ali vai voltar a funcionar igualzinho mas vai ficar mais egito né vamos começar em um e vamos fazer até que ela seja quando ela for menor que sim só que aqui não está certo né não é isso que eu quero exibir a porém eu sei que ele vai ter que repetir asteriscos horizontalmente ele tá fazendo as minhas agora e vai ter que fazer o horizontalmente então aqui eu vou criar dentro do laço na variável chamado coluna e vou iniciar essa courinho o que é e aí agora eu vou fazer uma a repetição a e agora ele vai fazer essa repetição uma vez para cada linha e eu tenho que saber quantas quantas vezes ele vai exibir e aqui ó e que eu vou fazer aqui dentro eu vou fazer um rite não vou fazer o haiti lá é porque eu não quero que ele quebra de mim eu vou fazer exibir asterisco espaço bom e cada vez que eles exibiam asterisco espaço eu aumento o meu computador de colunas eu percebi aquilo que na primeira linha eu tenho uma coluna na segunda linha eu tenho duas colunas na terceira linha eu tenho três colunas então a minha condição de saída é até que a coluna seja menor ou igual a a quantidade de minas ao número atual da linha né aqui se for linha 11 aninhos folhinha dois duas minhas foi nem a três três linhas e assim por diante dessa maneira eu suponho que a gente consegue resolver esse problema vamos ver o que que faltou né provavelmente eu devo ter exatamente os 15 asteriscos que eu queria mas cada vez que terminam uma linha né eu preciso dar um comando aqui para quebrar a minha né ok então cada vez que ele termina de exibir os asteriscos eu preciso visualizar essa quebra de mim se não tinha um vai enxergar o nosso programa rightline vazio ele somente quebra a minha não exibir na área e quebra linha para gente vai lá e aí o nosso programa passa a funcionar porque que essa lógica tão legal de e eu não podia simplesmente exibir isso aqui né jogar esse aqui dentro mais trem exibir porque se eu mudar aqui ó é a quantidade de linhas por exemplo e para 20 e executar de novo a hora que vai acontecer ele continua funcionando bem isso é a base de você fazer um programa possa calcular coisas que você quer saber o resultado ó é uma vai fazer isso aqui porque você é definir uma lógica para ele fazer isso é muito bacana o digamos aqui que ao invés de uma pirâmide eu quisesse um quadrado eu ia dizer que a cada linha eu tinha que exibe a quantidade de colunas por exemplo vou colocar 10 10 linhas das colunas essa aqui é a quantidade de colunas só que a quantidade de linhas se eu colocar elas igual iguais né que que vai acontecer eu vou ter um quadrado em vez de ter uma um triângulo em e isso é bom agora o número de vezes que ele vai repetir aqui eu também deixei fixo né pronto é uma maneira completamente bacana a gente conseguir controlar as nossas repetições e o legal é eu tinha uma repetição externa e a cada repetição externa n reflexões internas então isso aqui façam a depuração de isso aqui para entender exatamente o que está acontecendo aqui vocês vão ver como isso aqui é bonito e como tem vários problemas que a gente consegue resolver com isso hein e a próxima situação que a gente quer é uma outra aplicação de laços e é a repetição usando um sinalizador ou um flag flag é uma palavra em inglês geralmente utilizada para bandeira mas também para sinalizador né então digamos que eu tenho o seguinte problema eu quero um programa que exiba para mim a soma de números inteiros positivos não nulos não número tem que ser positivo e não pode ser zé sem ter tem que ser positivo e não pode ser zero até que a sua soma ultrapasse 20 tão usuário vai digitar números digita digita dígito eu vou somando somando somando chamados humano pode somar o valor de 20 ele vai parar de digitar tá bom se você digitar uma entrada inválida né programa também ao finalizar sendo então mãe tradar no logo se você digitar 0 programa domingo é finalizado sem digitar um valor negativo problema também vai ser mesmo é isso que eu quero hein vamos começar pelo passo como criar uma variável chamada total eu topava zero não é o total aqui da soma dos números que eu quero fazer né total a 0 e nessa situação eu tenho várias situações que podem finalizar o meu laço né então pode finalizar horácio quando entrada foi invalidado pela entrada for nula quando entrada for negativa ou quando passar de 20 a fazer um raio aqui né uma condição dentro do ai onde tudo isso fosse colocado às vezes não é possível tá ou é muito difícil é muito elegível é o que que a gente faz a gente cria uma variável booleana me dá o nome para ela vou chamar de finalizar e vou dizer que é falso ou seja não é para finalizar ainda em eu vou fazer um laço oi hoje a condição é o valor dessa variável e ele vai fazer enquanto e na verdade eu vou fazer assim enquanto não finalizar porque eu quero que enquanto está se for falso ele se repita e quando eu quiser finalizar né então no momento de realmente eu quiser finalizar eu faço assim realizar igual a pouco e aí na próxima passagem ele sai do laço aqui é essa situação que eu quero criar um e por exemplo e vamos criar aqui uma variável chamada valor e vamos pedir usuário digitar valor e agora e vamos gravar vamos fazer a leitura do que o usuário digitar e vamos gravar nessa variável valor a gente pode fazer isso através da estratégia do preparar-se né como é que a gente faz isso a gente pode fazer assim ó o que é uma variável booleana e chamar ela de valor i want e essa variável vai ser booleano certo então resultado dela vai ser um valor verdadeiro ou falso então eu quero que aqui ó o valor que você gravado aqui é o melhor me chama assim número vai hein quem é o teu o valor que foi digitado seja tentado converter em número se ele for um número eu quero que essa variável número vale não seja verdadeiro em existe uma função do outlet chamada e os 32 pontos é free force vai parar se ele precisa de ele vai tentar converter é uma entrada de stringhi para o tipo que tiver escrito aqui no caso ruim né ele vai tentar converter uma string e para mim qual é a string eu quero converter aquilo que usuário e é ridgeline usuário digitar então vou pegar o que o usuário digitou e vou tentar converter para uma inteiro porque o que acontece ele precisa de mais um parâmetro como ele vai tentar se ele conseguir o que que ele vai fazer e aí você tem que digitar a palavra ao indique informar para ele uma variável do mesmo tipo que você colocou aquilo ou no caso a gente sabe que a nossa variável é valor com este comando todo aqui ó vai fazer o seguinte ele vai pegar o que o usuário digitou tem pa converter por um inteiro se ele conseguir ele vai gravar nova variável valor valor vai passar valeu número foi digitado e aqui ó o resultado dela vai ser um booleano dizendo para gente se escreve sucesso ou não então se era o número número válido vai estar junto se era se não era um número número válido vai estar fox beijos consegue usar o valor dessa variável numa expressão aqui ó é sim número válido bom então eu posso fazer minha conta não sei não se ele não for válido né ele não for válido e que eu posso fazer eu posso o finalizar e o sua mensagem para ele também o número e aí e o e quem ele vai finalizar e quem que que eu vou fazer se o meu número for vale quem é o número for válido eu preciso então realizar essa soma né então eu preciso guardar o valor aqui no total não vou dizer que o meu total é igual ao valor que ele tinha antes mas o valor que for digitado e ela valor eu vou usar aquela nomenclatura simplificada mais igual valor tão acumule na variável total valor foi digitado quem que maravilha nós estamos com problema parcialmente finalizar parcialmente vamos fazer o seguinte após a finalização eu vou mandar em exibir e o valor de total quem é só para a gente saber até quanto foi é que tá esse camarada aqui g1 e aí e ele tá pedindo para digitar um valor já entrou no laço né não como ele não não era verdadeiro aqui né como ele era falso e ele pediu para mim digitar um valor tão foi digitar 5 e percebam que como o número é válido ele soma no total um noel se volta aqui para cima ainda não finalizou por enquanto eu tiver digitando números aqui ó e ele vai falando é a hora que eu digitar o número inválido né só que não já hoje é a única situação que muda ao finalizar para tro é quando o número não for válido né ó deu número inválido o total deu 992 que é o primeiro comando depois da finalização do aço o que que eu tenho que fazer agora tem duas coisas que faltam né três na verdade o problema deve ser interrompido em caso de entradas inválidas e se a gente já faz lulas e negativas então aqui ó eu tenho mais situações que podem finalizar o meu programa não entrar aquilo tão também é inválido né ou se valor for igual a zero ou também se valor por menor quiser a gente pode simplificar isso aqui e falar menor ou igual a 0 em um tanto no look e a 10 quanto menor que zero ele vai finalizar um desses o que dá certo g1 e aí e digite o valor 4 passo 5 passo 3 passo 01 - um passo que que aconteceu a gente escreveu o nosso teste errado aqui ele é eu tô dizendo quais situações são válidas não tá errado isso aqui ó tá vendo aí vai não não é válido se número válido é tro e também o nosso valor tem que ser maior que zero nem o menor vale e nem o igual vale só se for maior o menor esse tipo de erro de lógica gente só vai pegar testando ok você não vai pegar ele vs code não vai informar nem compilador tá uma que ter quatro beleza que tem site beleza de ter 3.456 beleza de tem menos dois ele sai agora vou tentar com 0 oi fez 5 beleza de 37 beleza de 30 ele saiu maravilha que que falta agora garantir que quando ele atingir 20 ele vai finalizar também então isso vai ter que ser aqui ó depois da sonora né depois de só eu tenho que dizer que a variável finalizar vai virar true se o meu total já deu 20 eu posso dizer aqui ó que o valor da variável finalizar é igual ao teste total o maior e 20 mar igual não é a soma ultrapasse 20 então só quando for maior não percebo eu tenho um teste aqui né resultado desse teste aqui vai ser verdadeiro ou falso se total me for maior que 20 finalizar vai virar tudo senão ele vai ficar ovos e uma maneira bem bacana da gente mudar também esse sinalizador né não percebe que eu tenho aqui duas maneiras de mudar o sinalizador né uma pela in pelo número ser inválido que tem várias regrinhas aqui né e outra mesmo número sendo válido numa determinada situação específica eu também tenho que finalizar 1 neste aqui funciona né o barco digitar só números válidos em algum determinado momento ele vai ter que parar e eu vou digitar aqui dois por digitar 10 só não tem que estar em 12 né vou digitar mais dessa soma tem que ir para 22 e ele tem que parar então é isso a gente consegue matar a lógica e a gente precisar se ela for mais complexo usando a os flags né os sinalizadores de quando meu laço deve ou não finalizar naquele primeiro nosso exemplo onde você tinha gente sim ou não para sair você exatamente estava criando um flyer mas se você não tava querendo ele boolean você tava querendo ele string e tava testando aqui mas a ideia é a mesmo e e agora só falta para gente aprender os laços contatos né então tem uma determinada situação que a gente precisa exibir né eu fazer a nossa repetição um número contado de vezes que vai fazer um número contado de vezes né numérico muitas vezes é mais fácil usar essa estrutura que eu vou ensinar agora do que usar a estrutura uai ok é mais comum e inclusive então a maioria das linguagens de programação tem uma estrutura própria para fazer laços de uma quantidade numérica de vez em então eu tenho uma estrutura chamada four que ela tem o bloco e este bloco aqui vai ser repetido né de acordo com que eu escrever aqui dentro desse parentes o como é que eu escrevo aqui dentro do parentes eu vou exibir vou escrever três coisas a primeira coisa que eu vou fazer é criar o meu valor inicial em eu posso fazer isso já define uma variável aqui dentro direto aqui o negócio legal que não existimos no alho né eu vou dizer que eu vou começar a minha variável e zé e eu tenho um ponto e vírgula primeira parte não teve um a primeira parte é valor inicial só tem que dar um nome para trabalhar né fala de de interação tô aqui eu passo até a primeira parte do meu four que é a inicialização só que vai jogar só uma vez na primeira passagem a segunda coisa que eu tenho que escrever é o teste igualzinho teste do alho em em que situação ele deve executar ele vai executar isso enquanto aquela essa situação aqui do segunda a segunda parte se mantivera verdadeiro por exemplo eu quero fazer isso enquanto ir for menor que cinco mais dentro eu só que é igualzinho teste no olho em e vai ser executado na mesma situação cada vez que levou o tá aqui para cima ele vai fazer esse teste e a terceira informação e vai colocar é uma informação que vai ser executada no final de cada iteração em executou uma vez faz isso testa isso por verdadeiro faz de novo executou outra vez faz isso essa isso e continua que que a gente coloca aqui no final geralmente o avanço do nosso contador em e aí o próprio four controla isso pra gente esta parte sendo executada na primeira vez a segunda parte sendo teste se esse laço deve continuar ou não e a terceira parte sendo executado ao final de cada iteração geralmente utilizada para incrementar e me dar o meu próximo passo em pode fazer aqui mais opção precisamos fazer exemplos muito muito específicos que a gente já testou na verdade os é né hoje não só preciso haver aqui uma nova maneira de fazer a mesma coisa e é inclusive mais fácil do que com a e quando você se acostume então vamos ver como é que ficou e ele vai começar a 0 e não vai chegar cinco né quando ele for assim que ele já tem que sair hein para levar 0 1 2 3 ou 4 em 1 e outra coisa legal de utilizar o four é que como essa variável está sendo criado aqui dentro né essa variável ir eu posso ter um outro laço e continuar usando ir e que se isso existe dentro desse laço para você não cria confusões e está mexendo com valor errado e outra coisa que a gente pode fazer aqui né uma outra composição que a gente pode usar aqui é o decremento como a gente já tinha feito né então por exemplo eu posso querer isso aqui regressivo por exemplo começando em 5 o e terminando por exemplo fazer enquanto ele for maior que zero de 5 até um né por exemplo e aí no meu final de cada passo eu tenho que diminuir que não aumentar né vou comentar isso aqui apesar dele não dá erro só para ficar mais limpa a nossa saída agora a gente tem b crescimento mesmo formato que eles tinham inclinem né cinco a321 ok funciona normalmente outra coisa que a gente pode fazer aqui bom é quando a gente precisar isso funcione e numa faixa de valores diferentes tá eu não tenho um problema aqui se eu falar por exemplo que ele vai começar em cinco mil ó e vai terminar em 4.955 em vai funcionar normalmente só você controlar aqui qual é a faixa de valores né de testes que você quer aqui ó é que eu tenho um número muito não pegar uma diferença menor aqui tá mais fácil da gente se ver e é muito grande fica difícil de visualizar o benefício a cinco mil e parou antes né porque eu não tenho igual aqui antes de fazer para 4995 então sim é possível controlar usando aqui né esses dois números o início e o fim outra coisa que é possível de fazer é você controlar também a quantidade de passos que ele vai fazer a cada iteração né eu por exemplo digamos que eu quero que ele vá e disseram a sem aqui tem que ser maior é menor nem quando ele for menor eu vou colocar o igual que eu quero que ele inclua-os em também só que se eu fizer de 11 e que ele vai fazer ele vai fazer 0 1 2 3 4 5 6 onde nós que eu quero de 10 em 10 eu quero 0 10 20 30 40 50 60 70 80 90 100 o que que eu posso fazer eu posso fazer aqui ó e mais igual a 10 a cada passo ele vai ser uma 10 em vez de tomar um aí eu consigo controlar da maneira aqui eu quiser o aumentar aqui porque ele vai ficar maior bem oi ó dez bonitinho como a gente imaginar uma aplicação bacana disse que digamos que você precisa por exemplo todos os números pares de 0 até 10 você começa número par e aumenta ele de dois em dois você vai ter todos os números pares em sonhar bem tranquilo de fazer o por exemplo todos os múltiplos de 3 horas entre 3 6 9 12 no caso aqui o 12 já vai estar fora do laço né ele vai fazer para 0 que é o primeiro né mas 3 6 e 9 talvez ideal fosse a gente começar com o primeiro múltiplo aqui né é o próprio três aí ó todos os múltiplos de 3 menores ou iguais a 10 no caso sol três dos seis e o nove e é isso tem muita coisinha que ele pode fazer com laço laço muitas vezes é difícil de dominar a vocês vão precisar de muito exercício muito teste para dominar isso aí a lista de ossos ela é bem bacana tem exercícios bem difíceis eu recomendo que vocês os façam todos em então muito obrigado pela aula e a terra nosso próximo 1