SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Unity - Executar Pagina Web Dentro De Um Programa
Rádio para programadores
Detecta o fim da animação e conjura um novo evento.
StreamWriter... ajuda rapida no salvamento
Efeito Glowing
Detectar distância de objetos
Salvar Cores com Json
Pack de áudio/ efeitos sonoros gratuitos.
2 JOGOS EM ANDAMENTO:
Software para testar AR no PC
Fazer cada Scene em uma orientação
[TUTORIAL] Compilar para Android
Asset de paint com lag
Utilizar movimento de plataforma na UI
COMO MOVER UM OBJETO OU PERSONAGEM
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Como fazer as perguntas ficarem aleatorias em jogo quiz - Unity 2D
texto com rolamento pela seta
[RESOLVIDO] Rotacionar Personagem De Acordo Com a Direção Do Analógico
Dúvida Com Conta Matematica
[RESOLVIDO] Colocar uma condição para remover uma variavel do inspector?
APK trava com Admob
Conectar ao wifi
Celular dentro do game
[TUTORIAL] Como fazer um TELEPORTE
[RESOLVICO] Colisor que ao atravessar ele eu mudo minha cena no Unity2D ?
[TUTORIAL] Mover, arremessar e girar objetos com o mouse
Objeto sempre ocupando toda a camera
Transições de Animações de Sprites
[RESOLVIDO] Sprites mudando posição
Renderização no blender
[RESOLVIDO] AJUDA ERRO COM INIMIGO
Unity - Erro ao Salvar
Duvida resolucao
Mecânica de destruição de parte de um sprite
[RESOLVIDO] Reconhecimento de Joystick e Teclado
convert byte[] em texture2D
[TUTORIAL] Mover objetos 2D e conectar em lugares específicos
Captura de imagem
Como fazer variáveis se ocultarem no Editor?
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
paredes
OnTriggerExit2D detectando collider desativado
[TUTORIAL] Wheel Collider - como configurar corretamente.
posição de cubos..
[RESOLVIDO] Movimentar personagem por grade com clique do mouse. (Isométrico)
[RESOLVIDO] Data e hora atual no android
Como faz para o jogo saber se e windows, android,tablet , mac e ios?
Game Engine
Dúvida Sobre o lucky patcher
[TUTORIAL] Converter uma variável String em Vetores
Tem como reproduzir vídeo em android?
Preferência em Games
[TUTORIAL] Singleton, A melhor forma de acessar a classe!
[RESOLVIDO] Acessar Scripts de Objetos Que Estão Como "DontDestroyOnLoad()" ?
[TUTORIAL] Arma tipo a do call of duty
[TUTORIAL] Double Jumping para games em 2D
[TUTORIAL] Unity 2019 - Lanterna e pilhas, com UI
GameJam valendo 15 mil reais em bitcoin!!
Combinar prefabs?!?
[TUTORIAL] Como usar FREE EASY CRIATURA CONTROLE IA
[TUTORIAL] MOVIMENTO NA ARMA PARA FICAR MAIS REAL!
Multiplayer será tirado da Unity?
Como dar o mesmo valor a varias variaveis ?
Procurando modelador de personagens!
Conta playstore
[TUTORIAL] Sistema de "Entrar" em locais
[TUTORIAL] Sistema de Lanterna com Pilhas
Como mudar cor do botao UI
[RESOLVIDO] Set Materials
Uma duvida sobre colliders 2d
Efeito 'vai e volta'
Tiro do IA direcionado a posição atual do Player
CircleCast
[RESOLVIDO] MoveTowards
Como mudar variaveis de uma [Serializable]
[TUTORIAL] Plataforma Tangente 2D
como criar um sistema de concorrência finaceira para jogo tycon
Salvando screenshot na galeria do Ipad (IOS)
Grama de terreno mudou textura e não consigo identificar o motivo
Como usar o Unity Monetization 3.0.1?
Marcha
Paint
[Asset Grátis] - Key gratuita para "Easy Mesh Combiner" para quem avalia-lo!
problemas com admob no Android Studio
Coroutine ou Invoke - qual tem melhor desempenho
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
[RESOLVIDO] Movimentação RigidBody 2D visto de cima
[RESOLVIDO] Gerador de senha
[RESOLVIDO] Ajustar movimentação da câmera
[RESOLVIDO] Alterar função no Event Trigger
[RESOLVIDO] pivot do sprite camera (objeto nao aparece)
gerar score por movimento
[RESOLVIDO] Como encontrar um script em um determinado objeto
[Sorteio] - Sorteio de uma Key gratuita para um dos meus assets!
Transparência em múltiplos sprites
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
Hoje à(s) 1:46 am
Ontem à(s) 11:13 pm
Ontem à(s) 11:02 pm
Ontem à(s) 11:01 pm
Ontem à(s) 9:22 pm
Ontem à(s) 5:10 pm
Ontem à(s) 5:01 pm
Ontem à(s) 4:58 pm
Ontem à(s) 3:38 pm
Ontem à(s) 1:53 pm
Ontem à(s) 11:52 am
Ontem à(s) 10:18 am
Qua Mar 20, 2019 9:29 pm
Qua Mar 20, 2019 9:19 pm
Qua Mar 20, 2019 8:39 pm
Qua Mar 20, 2019 8:33 pm
Ter Mar 19, 2019 10:03 pm
Ter Mar 19, 2019 1:50 pm
Ter Mar 19, 2019 7:03 am
Ter Mar 19, 2019 6:23 am
Ter Mar 19, 2019 6:02 am
Seg Mar 18, 2019 6:48 pm
Seg Mar 18, 2019 3:39 pm
Seg Mar 18, 2019 3:28 pm
Seg Mar 18, 2019 1:00 pm
Seg Mar 18, 2019 4:31 am
Dom Mar 17, 2019 3:43 pm
Sab Mar 16, 2019 5:11 pm
Sab Mar 16, 2019 4:37 pm
Sab Mar 16, 2019 3:48 pm
Sex Mar 15, 2019 6:40 pm
Sex Mar 15, 2019 3:09 pm
Sex Mar 15, 2019 9:32 am
Sex Mar 15, 2019 9:27 am
Qui Mar 14, 2019 9:55 pm
Qui Mar 14, 2019 9:50 pm
Qui Mar 14, 2019 9:45 pm
Qui Mar 14, 2019 9:44 pm
Qui Mar 14, 2019 9:42 pm
Qui Mar 14, 2019 9:38 pm
Qui Mar 14, 2019 9:00 pm
Qui Mar 14, 2019 8:54 pm
Qui Mar 14, 2019 8:33 pm
Qui Mar 14, 2019 8:29 pm
Qui Mar 14, 2019 5:06 pm
Qui Mar 14, 2019 3:39 pm
Qua Mar 13, 2019 5:30 pm
Ter Mar 12, 2019 2:54 pm
Ter Mar 12, 2019 1:08 am
Seg Mar 11, 2019 10:21 pm
Seg Mar 11, 2019 1:25 pm
Seg Mar 11, 2019 11:51 am
Seg Mar 11, 2019 12:35 am
Dom Mar 10, 2019 9:49 pm
Dom Mar 10, 2019 8:20 pm
Dom Mar 10, 2019 5:47 pm
Dom Mar 10, 2019 5:21 pm
Dom Mar 10, 2019 2:12 pm
Sab Mar 09, 2019 7:50 pm
Sab Mar 09, 2019 12:18 pm
Sex Mar 08, 2019 6:55 pm
Sex Mar 08, 2019 2:40 pm
Qui Mar 07, 2019 12:19 pm
Qui Mar 07, 2019 12:12 pm
Qui Mar 07, 2019 11:59 am
Qui Mar 07, 2019 11:12 am
Qui Mar 07, 2019 1:29 am
Qua Mar 06, 2019 10:32 pm
Qua Mar 06, 2019 5:37 pm
Qua Mar 06, 2019 1:21 pm
Ter Mar 05, 2019 2:53 pm
Seg Mar 04, 2019 7:39 pm
Seg Mar 04, 2019 5:44 pm
Seg Mar 04, 2019 2:38 pm
Dom Mar 03, 2019 7:45 pm
Sab Mar 02, 2019 8:34 pm
Sab Mar 02, 2019 7:45 pm
Sab Mar 02, 2019 12:46 am
Sex Mar 01, 2019 10:52 pm
Sex Mar 01, 2019 4:43 pm
Sex Mar 01, 2019 4:31 pm
Sex Mar 01, 2019 12:52 pm
Qui Fev 28, 2019 9:30 pm
Qua Fev 27, 2019 8:30 pm
Qua Fev 27, 2019 11:05 am
Qua Fev 27, 2019 10:57 am
Ter Fev 26, 2019 6:33 pm
Ter Fev 26, 2019 10:37 am
Seg Fev 25, 2019 9:08 pm
Seg Fev 25, 2019 5:12 pm
Seg Fev 25, 2019 3:44 pm
Seg Fev 25, 2019 10:56 am
Sab Fev 23, 2019 5:41 pm
Sab Fev 23, 2019 5:26 pm
Sex Fev 22, 2019 6:39 pm
Sex Fev 22, 2019 3:40 pm
Qua Fev 20, 2019 4:48 pm
Qua Fev 20, 2019 4:42 pm
Qua Fev 20, 2019 4:41 pm
MarcosSchultz
Magnatah
Magnatah
Magnatah
Encracker
michelly
numb123
NKKF
RCGames Oficial
RCGames Oficial
Magnatah
joffersoju
fabricadegame
MarcosSchultz
MarcosSchultz
MarcosSchultz
fabricadegame
Akuma97
Magnatah
Magnatah
Magnatah
luiz12345
rejão
Zack2
Zack2
MarcosSchultz
luiz12345
henriquegames501
lesgoy
MiguelLuiz
Lteo
diegopds
Diego Felix
Magnatah
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Isabela
Isabela
Annko
juniorhotes
MarcosSchultz
Weslley
Daniel Dória
juniorhotes
lesgoy
lucaslbatista
Flávio
Magnatah
diegopds
MayLeone
glauco
dimmuo
AnderGames
Unidade3d5
arthurunity
artplayer
diegopds
zeca urubu
Daniel Dória
AnderGames
MarcosSchultz
Alanigma
ffabim
Flávio
Flávio
Manawydan
rafaelllsd
Lteo
dimmuo
MateusPignatti
Madness
dstaroski
dstaroski
dstaroski
Madness
Madness
marcos4503
marcos4503
Flávio
kirito37
DuViDoSo
Flávio
rafaelholanda
numb123
adenilson romao
adenilson romao
adenilson romao
marcos4503
Selzler
dstaroski
dstaroski

[AULA] Estrutura de repetição while e do while

Ir em baixo

TUTORIAL [AULA] Estrutura de repetição while e do while

Mensagem por MayLeone em Seg Jul 16, 2018 2:34 am


Nesta aula vamos falar sobre mais algumas estruturas de repetições que temos em C#, são elas: Laço while e laço do..while.

Caso tenha lido a aula anterior sobre o laço for (se não leu, recomendo que leia!) já deve saber que as estruturas de repetição são artifícios disponíveis em linguagens de programação de alto nível que possuem a possibilidade de repetir algum trecho do seu código quantas vezes forem necessárias, ou até que alguma condição seja satisfeita.
Na aula passada, você viu que devemos utilizar o laço "for" quando temos em mente antecipadamente a quantidade de vezes que aquele laço vai se repetir, portanto, em sua definição nós colocamos um contador que tem início e uma validação que determina seu fim.
Mas e no caso de necessitarmos de uma estrutura que não tenha um número determinado de vezes para ocorrer, e se esta repetição deve ocorrer até que uma situação seja executada?
Para esses casos, nós temos dois outros tipos de estruturas de repetições: While e do...while! E vamos falar sobre cada uma delas nesta postagem.

Estrutura While:
"While" quer dizer "enquanto", ou seja, "enquanto tal coisa acontece ou NÃO acontece, repita algo".
Como dito, este tipo de estrutura é mais utilizado em situações que a repetição não tem um número fixo de vezes para acontecer, ela pode variar dependendo da situação presente.
Para exemplificar, vou deixar aqui uma situação muito simples: Um código que repita uma mensagem até que o usuário digite a letra "S".
Parece algo tolo, mas será um exemplo inicial para entender o funcionamento deste laço.

Para tal, vamos observar a sintaxe desta estrutura:


*No exemplo diz apenas "para que o laço pare", mas pode ser também "para que o laço continue".
Veja que visualmente é uma estrutura mais simples que o laço for, já que não existe a necessidade de explicitar onde o "contador" deverá iniciar e o seu incremento. A única validação que deve ser especificada neste laço é justamente até QUANDO o laço deve continuar.
No caso do exemplo, queremos que esta estrutura se repita mostrando uma mensagem qualquer na tela, e depois perguntando se o usuário deseja parar de ver essa mensagem. Caso ele digite qualquer letra que não seja "S" de sim, a mensagem irá prosseguir.
Podemos armazenar dentro de uma variável do tipo string, a letra que o usuário digitou para validar se ele deseja ver a mensagem ou não. O código ficaria assim:




Note que eu criei uma variável do tipo string chamada "resposta" para armazenar a resposta do usuário e após isso iniciei o laço while. Este laço irá se repetir enquanto o valor de "resposta" for diferente de "S", ou seja, enquanto o usuário não digitar "S", este laço irá se repetir, mostrando as mensagens.
Depois das mensagens, armazenei dentro da variável "resposta" o que a pessoa digitou, utilizando também o método "ToUpper" para converter aquela palavra para caixa alta, assim, independentemente de o usuário digitar "s" ou "S" o laço irá parar.

O debug será mais ou menos isto:



Perceba que eu deixei a mensagem ser exibida quatro vezes, e só depois digitei "S" finalizando o laço, porém, perceba que esta estrutura irá se repetir numa quantidade de vezes variável, porque eu posso ter repetido este laço 4 vezes, mas você por exemplo, pode repeti-lo mais ou menos, depende do momento que você digitar "S" para parar.

Esta é a grande diferença entre o laço for e o laço while.

Para não ficar tão abstrato, veremos mais um exemplo da utilização do laço while:
Neste exemplo vamos realizar uma espécie de "eleição" onde temos três candidatos: Cada candidato vai receber um voto de acordo com o número que o eleitor digitar:

Candidato A -> Vote digitando 1
Candidato B -> Vote digitando 2
Candidato C -> Vote digitando 3
E para finalizar a votação, digite 4

No final do código será mostrado qual candidato venceu.

Perceba que como não foi informado a quantidade de eleitores que vão votar (ou seja, quantas vezes o laço de repetição vai se repetir) podemos utilizar a estrutura while para este caso:




Nesta parte do código, tem criado quatro variáveis do tipo inteiro, três delas irão armazenar a quantidade de votos de cada candidato, e a outra vai armazenar o valor que o usuário digitou. Também informo com o Console.WriteLine como votar em cada candidato.
Temos também um laço while que vai repetir a mensagem de votos até que a variável "voto" seja um número maior ou igual a quatro.
Após a mensagem, é armazenado dentro da variável "voto" o que o usuário digitou e então temos uma estrutura de decisão que verifica em qual candidato nós votamos, acrescentando um incremento na variável que contabiliza seus votos.
Caso o usuário digite um número que não seja entre 1,2 ou 3 e que seja menor que 0, uma mensagem de erro aparecerá. Caso digite 4 ou um número maior, o laço irá parar.

Agora devemos escrever a outra parte do programa:

Após o final do laço "while" nós fazemos uma verificação sobre qual dos três candidatos venceu a votação, exibindo seu número de votos.
Podemos também exibir quantos votos válidos foram realizados durante a "eleição":


O resultado será mais ou menos este, ao testar:



Perceba que este laço repetiu-se 13 vezes e quando eu digitei "4" o laço parou, porém, você ao testar, pode fazê-lo repetir mais vezes ou menos vezes, depende de sua vontade.
No caso do laço "for", por exemplo, deveríamos pré-estabelecer quantas vezes este laço iria se repetir, então não teríamos essa possibilidade de fazer repetir essas mensagens num número variável de vezes.

Para saber sempre qual das duas estruturas utilizar pense no seguinte: "Eu quero que o laço se repita até que algo aconteça, ou de acordo com um número fixo de vezes?" Se a resposta for para um número fixo de vezes, utilize o laço "for", se for numa quantidade indeterminada de vezes, utilize o laço "while".
Claro que, para ambos os casos as duas estruturas iriam funcionar, você pode colocar também um número fixo de vezes de repetição para o laço while, assim como um número indeterminado para o laço for, porém são meios mais indiretos e desnecessários, visto que cada uma dessas estruturas possuem uma função para situações específicas.

Estrutura Do...While:
A estrutura do...while é muito semelhante à estrutura "while", o que difere é um pouco de sua sintaxe e que ela vai se repetir pelo menos UMA vez, mesmo que a validação não seja verdadeira.
Veja neste exemplo: A mensagem "Laço do...while entrou aqui" deveria se repetir apenas se a variável "verificar" estivesse true, porém, como ela inicia em "false", o correto seria o laço nem iniciar, porém, a característica do laço "Do...While" é justamente realizar a repetição pelo menos uma vez, para só depois validar a condição, visto que a mesma se encontra no final do código:



Veja que ao debugar, apesar da variável "verificar" iniciar em false, a mensagem é exibida uma vez na tela:


Mas note que ele só repetiu a mensagem uma vez, isto porque, a variável "verificar" não se tornou true para que o laço continue.
O fato do laço ter repetido pelo menos uma vez é a característica principal que difere o while de do...while, como já dito, visto que é verificado a sua validação apenas no final do código, ou seja, mesmo a variável estando false, ele entra no código e só depois realiza a validação se "verificar" está true, como não está, ele pára o laço.

Ou seja, quando você precisa que o laço se repita pelo menos uma vez independente do caso, utilize a estrutura do...while.


Finalização:
Chegamos a mais um final de aula aqui no blog! Nossas aulas sobre estruturas de repetições se encerram parcialmente, pois ainda temos mais uma estrutura para ser mostrada, porém, quando você aprender sobre coleções ela será melhor explicada.
Gostaria de finalizar a aula deixando um aviso: Cuidado para não criar laços com while e do...while que sejam infinitos e que travem sua aplicação, quando trabalhar com qualquer um dos dois, certifique-se sempre que seu código possui em algum momento a validação de "finalização" do laço, seja através da mudança de estado de uma variável ou incremento.
Aviso dado, aqui chega o final da aula, até mais.
MayLeone
MayLeone
ProgramadorMaster

Feminino PONTOS : 850
REPUTAÇÃO : 242
Áreas de atuação : Unity, C++/C#, HTML, CSS, JS, jQuery, PHP, MySQL, XML, Blender
Respeito as regras :

Ver perfil do usuário http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Estrutura de repetição while e do while

Mensagem por dstaroski em Seg Jul 16, 2018 8:56 am

Show! Parabéns!
dstaroski
dstaroski
Instrutor

Masculino PONTOS : 4119
REPUTAÇÃO : 1057
Idade : 29
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Asp .NET, HTML, CSS, Unity 3D

Respeito as regras :

Ver perfil do usuário http://diegodeoliveira.gamejolt.io/defeattheilluminatis

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Estrutura de repetição while e do while

Mensagem por NKKF em Seg Jul 16, 2018 2:11 pm

Nyce.
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2277
REPUTAÇÃO : 439
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras :

Ver perfil do usuário http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum