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:
Quando aperto o PLAY não funciona os comandos do script.
[TUTORIAL] Demostrando e aplicando minha lógica sobre CheckPoints
Erro com monodevelop/visual studio code
Como posso puxar o Osso do player pelo touch?
Limitar Uso da Estamina
Enhance - SDK Integration Elimination!
Compilando pra android
[PROJETO MOBILE] Defeat the Illuminatis
Dúvida sobre Client/Server
[Divulgação] Projeto The World of Child
CHECKPOINT PONTO DE SALVAMENTO
[RESOLVIDO] Por que o NavMesh não está gerando um destino?
[TUTORIAL] Third Person Shooter
[RESOLVIDO] Aumentar um valor quando próximo do HitPoint
Erro No Unity
Bora entrar no Discord.. Tirando Duvidas Online..
Procuro Programador para jogo baseado em Harvest Moon - Unity (3D)
[RESOLVIDO] Unity - Erro ao Mudar de Resolução
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] Script simples para CAMA ELÁSTICA
[RESOLVIDO] Cama elastica e ventuinha que lança pra cima
[RESOLVIDO] Unity não está aceitando imagens
Ajuda com orientação de rotação de objeto
Recompensa diária
Herança Classes
Como Criar uma nova classe com as mesmas variaveis?
Como recriar esta fisica?
[RESOLVIDO] problema movimentação horinzontal
Exclusão de arquivos desnecessários da Photon Network (PUN)
luz
Como desativar o componente IMAGE e ativar automaticamente depois de certo tempo
Alguem sabe como resolver esse problema? AI nao procurar ela mesma
[TUTORIAL] Barra de VIDA / HP contínua
Compilação pra android unity 3d
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Error depois de copilar para Android?
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
Inputfield 3D: alguém sabe como fazer? algum tutorial? ideia pra começar?
Rotacionar Y-axis Atraves
AnimatorOverrideController
Ajuda com Script para IA
Jogo Adaptativo a Tamanho de Telas
Curso Básico de Photoshop
[RESOLVIDO] Pra que serve o F?
[Projeto] Xuel The glory | Testem e avaliem o meu jogo medieval :3
Encriptar player prefs
COMPETIÇÃO - Melhor Jogo Indie
Ajuda em Votação para o GameJAM+
Remover limite de VSync no Android
Volante GameObject girar junto com O grafico UI Android
[TUTORIAL] Inserindo animações com Mixamo
[RESOLVIDO] Problema de renderização
[ Formação de Equipe ] Para Desenvolvimento de Jogo Mobile/PC
Streering Behaviors C#
[TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Participe da Game Jam - Jaaj do canal Amdré Young!
Como criar um ranking online na Unity usando a PlayFab e o Facebook?
Armário Escolar (School Locker) by RafaelSquid1
Duas duvidas sobre o bake no blender
[RESOLVIDO] Pointer Influence
[RESOLVIDO] Saber o lado de um círculo toca em um objeto.
Animar collider
[TUTORIAL] Aprenda C# - Unity 3D
[TUTORIAL] AI Enemy ( Jogos de terror )
Troca de personagem em jogo 2d
Ficou legal? Minha primeira modelagem
Alguém Afim de Jogar e testar Survival Online? PC e Mobail...
[RESOLVIDO] Como fazer uma textura com elevações?
Como criar sombra em objeto transparente?
Sistema de Entidades e Componentes(ECS)
Gostaria que opinassem sobre esse cenario que fiz
Como salvar objetos que tenham uma Tag especifica (save/load)
Care Box - Disponível na Play Store
Como utilizar a Unity em equipe
Problema para atualizar App na Apple Store Itunes Connect
Command 888
Buscar o índice de um array que está dentro de outro array (JavaScript)
Problema de Compilação Na Unity
Como fazer um sistema de IK para os pés ?
Porque a luz buga na aba Game e quando eu faço a build fica normal
[RESOLVIDO] Sincronizar uma bool que não esta no player?
(Formação De Equipe) Favela Killer
Configurar NPCs
Sistema de spawn de monstros multiplayer
Como juntar animações do mixamo
Rank usando o facebook para JOGO QUIZ
Menu de selecionar carros e pistas estilo Forza
Controle Estilo GTA
Como usar o bake em uma situação como essa ?
[RESOLVIDO] Instanciar um objeto com Raycast?
[RESOLVIDO] Efeito cromado não aplica no mesh
[RESOLVIDO] Quero tirar uma dúvida!!
Opacidade / Transparência e Novas Ideias
Cores invertidas/Estranhas no PC
[RESOLVIDO] Como mudar o scale de um sprite renderer????
[TUTORIAL] Câmera seguir o mouse em 2D, com limite de distancia ao Jogador
Ontem à(s) 10:46 pm
Ontem à(s) 8:23 pm
Ontem à(s) 7:03 pm
Ontem à(s) 5:00 pm
Ontem à(s) 4:49 pm
Ontem à(s) 12:20 pm
Ontem à(s) 11:53 am
Ontem à(s) 11:26 am
Ontem à(s) 7:44 am
Ontem à(s) 6:12 am
Qua Ago 15, 2018 7:30 pm
Qua Ago 15, 2018 3:30 pm
Qua Ago 15, 2018 3:11 pm
Qua Ago 15, 2018 2:59 pm
Qua Ago 15, 2018 1:32 pm
Qua Ago 15, 2018 12:54 pm
Ter Ago 14, 2018 8:08 pm
Ter Ago 14, 2018 3:15 pm
Ter Ago 14, 2018 10:07 am
Seg Ago 13, 2018 9:46 pm
Seg Ago 13, 2018 8:57 pm
Seg Ago 13, 2018 4:52 pm
Seg Ago 13, 2018 10:09 am
Seg Ago 13, 2018 9:17 am
Seg Ago 13, 2018 9:05 am
Dom Ago 12, 2018 10:53 pm
Dom Ago 12, 2018 4:43 pm
Dom Ago 12, 2018 4:15 pm
Dom Ago 12, 2018 3:47 pm
Dom Ago 12, 2018 3:07 pm
Sab Ago 11, 2018 4:02 pm
Sab Ago 11, 2018 11:13 am
Sex Ago 10, 2018 7:37 pm
Sex Ago 10, 2018 12:00 pm
Qui Ago 09, 2018 4:27 pm
Qui Ago 09, 2018 4:26 pm
Qui Ago 09, 2018 4:26 pm
Qui Ago 09, 2018 3:52 pm
Qui Ago 09, 2018 12:52 pm
Qui Ago 09, 2018 1:21 am
Qui Ago 09, 2018 1:17 am
Qui Ago 09, 2018 1:08 am
Qua Ago 08, 2018 11:57 pm
Qua Ago 08, 2018 10:59 pm
Qua Ago 08, 2018 8:17 pm
Qua Ago 08, 2018 7:35 pm
Qua Ago 08, 2018 6:00 pm
Qua Ago 08, 2018 3:14 pm
Qua Ago 08, 2018 11:54 am
Ter Ago 07, 2018 11:34 pm
Ter Ago 07, 2018 9:55 pm
Ter Ago 07, 2018 7:28 pm
Ter Ago 07, 2018 7:19 pm
Ter Ago 07, 2018 6:58 pm
Ter Ago 07, 2018 9:57 am
Ter Ago 07, 2018 1:20 am
Seg Ago 06, 2018 7:36 pm
Seg Ago 06, 2018 7:29 pm
Dom Ago 05, 2018 11:59 pm
Dom Ago 05, 2018 1:29 pm
Dom Ago 05, 2018 9:34 am
Sab Ago 04, 2018 3:09 pm
Sab Ago 04, 2018 11:47 am
Sab Ago 04, 2018 10:59 am
Sab Ago 04, 2018 9:23 am
Sab Ago 04, 2018 12:43 am
Sex Ago 03, 2018 11:43 pm
Sex Ago 03, 2018 11:38 pm
Sex Ago 03, 2018 10:21 pm
Sex Ago 03, 2018 10:14 pm
Sex Ago 03, 2018 8:37 pm
Sex Ago 03, 2018 5:26 pm
Sex Ago 03, 2018 4:41 pm
Sex Ago 03, 2018 12:35 pm
Sex Ago 03, 2018 12:24 pm
Qui Ago 02, 2018 10:33 pm
Qui Ago 02, 2018 8:31 pm
Qui Ago 02, 2018 8:10 pm
Qui Ago 02, 2018 5:35 pm
Qui Ago 02, 2018 5:01 pm
Qui Ago 02, 2018 4:53 pm
Qua Ago 01, 2018 9:45 pm
Qua Ago 01, 2018 7:44 pm
Qua Ago 01, 2018 5:40 pm
Qua Ago 01, 2018 4:52 pm
Qua Ago 01, 2018 12:02 pm
Qua Ago 01, 2018 8:51 am
Qua Ago 01, 2018 8:33 am
Ter Jul 31, 2018 8:00 pm
Ter Jul 31, 2018 6:35 pm
Ter Jul 31, 2018 5:09 pm
Ter Jul 31, 2018 2:39 pm
Seg Jul 30, 2018 11:21 pm
Seg Jul 30, 2018 11:06 pm
Seg Jul 30, 2018 10:35 pm
Seg Jul 30, 2018 9:17 pm
Seg Jul 30, 2018 7:54 pm
Seg Jul 30, 2018 7:53 pm
Seg Jul 30, 2018 7:49 pm
tulio filipe
NotoriousDev
Zack2
glauco
srhuculak
RozekEnhance
JohnRambo
dstaroski
NotoriousDev
jhobert77
NotoriousDev
loganout
Phph09
NotoriousDev
NotoriousDev
loganout
NKKF
Magnatah
dstaroski
FelipeSouza11
paulo.costa0194
alisonzinhod
dstaroski
dstaroski
dstaroski
luKkaSs
dazentt55
NotoriousDev
NotoriousDev
diegopds
Dom3000
Dom3000
Badstane
Callyde Jr
FelipeSouza11
FelipeSouza11
FelipeSouza11
Unidade3d5
Callyde Jr
MarcosSchultz
MarcosSchultz
MarcosSchultz
Madson
Unidade3d5
Magnatah
dstaroski
lesgoy
zeca urubu
Ezequiel286
Gray_14
C3RB3RUS
NKKF
Gabryellx007
Phph09
sneffetsd
lucas85235
MarcosSchultz
MarcosSchultz
QueriaStarMorto
Rayllander
Callyde Jr
TioUV
NKKF
NKKF
gurgelg752
MarcosSchultz
MarcosSchultz
MarcosSchultz
guimaraf
fecirineu
LucioHenrique890
lesgoy
MarcosSchultz
Callyde Jr
Edw223
RafaelSquid1
QueriaStarMorto
natanael.olimpio
Callyde Jr
MarcosSchultz
MarcosSchultz
ruanzikaad
diegopds
Extreme Craft
zeca urubu
Daniel Dória
artplayer
Isabela
Rayllander
edugamer69
MarcosSchultz
TioUV
AdrianJps
TioUV
JohnVitor
MarcosSchultz
lesgoy
Flávio
MarcosSchultz

[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.
avatar
MayLeone
ProgramadorMaster

Feminino PONTOS : 335
REPUTAÇÃO : 116
Áreas de atuação : Unity, Rpg Maker, Scratch, C#, PHP, HTML, CSS, JS, MYSQL, 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!
avatar
dstaroski
Instrutor

Masculino PONTOS : 3655
REPUTAÇÃO : 899
Idade : 29
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Daz3D and Gimp

Respeito as regras :

Ver perfil do usuário https://gamejolt.com/games/defeattheilluminatis/347786

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.
avatar
NKKF
ProgramadorMaster

Masculino PONTOS : 1853
REPUTAÇÃO : 385
Idade : 13
Á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