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:
[TUTORIAL] Barra de vida usando a UI da Unity(Slider)
(UNITY) Erro ao compilar a Build Android
BUG UNITY 3D ROSA A SCENE E GAME
[Projeto] Line Battle
Sistema de Grau Realista - Jogo de Moto
Procuro Equipe Para Criação de Jogo [PAGO]
iniciar jogo com uma cena desativada e ativá-la ao colidir com bloco desativando as outras
Salvar e carregar dados json player pref
[TUTORIAL] Desbloqueio e Escolha de Personagens.
[RESOLVIDO] Problema com o navmesh agent
[RESOLVIDO] Registro cadrastando uma vez?
Programação Unity android 2D
(Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.
Como Faz pra barra de vida aparecer de uma cena pra outra?
[TUTORIAL] Como spawnar inimigos [Tutorial simples]
Vaga de modelador 3D, com remuneração...
Problemas com Colisores
[____ENQUETE____] Eleições para presidente 2018 (2º turno)
Como criar Atlas de textura com modelos exportados do Sketchup?
Unity - Sistema de Pagamento
[RESOLVIDO] iniciar áudio ao passar por uma área da cena
[RESOLVIDO] como envia asset para asset store
[TUTORIAL] Mover personagem com Touch, no estilo SUBWAY SURFERS
codigo não deleta prefab e não respeita o if
[TUTORIAL] Filtros de áudio para AudioListner (Low pass filter, High pass filter, etc)
[____CICLO DE TRABALHO DA UNITY____]
Meu jogo não está abrindo em outro PC
[TUTORIAL] DANO POR QUEDA e BARRA DE VIDA CONTÍNUA no mesmo script
[TUTORIAL] Sistema de vida,morte,dano
Discord para desenvolvimento de jogos
FAB in WWII (Novo jogo na Play Storee é Free :D)
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] Sistema de PORTAS e CHAVES
Criar uma Array ou List com as resoluções suportadas
Alguem traz esse tutorial pro forum?
Realistic fps prefab tenho esses erros ao tentar colocar um script de entrar sair do carro
[RESOLVIDO] Alguem pode me ajudar? tenho esse erro aqui em um script
[RESOLVIDO] Personagem 2d batendo na borda e voando.
[RESOLVIDO] Não consigo usar o Sphere collider.
[RESOLVIDO] Como usa o UI.Text do unity?
Como criar botão de nova tentativa
[RESOLVIDO] Duvida em Jogo de tiro 2D
[TUTORIAL] Barra de VIDA / HP contínua
[RESOLVIDO] duvida com PlayerPrefs
Iniciar animação em determinado frame
Sistema De Troca De Armas 2D
[TUTORIAL] Script de arma completo! [FREE]
[TUTORIAL] Ordenar valores de uma array[] em ordem CRESCENTE OU DECRESCENTE
Meu jogo de runner em primeira pessoa !
[RESOLVIDO] Timer pra mudar de cena na unity 2018
Atualizar Build
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
Como usar Vector3.Angles para detectar que algo está na frente de outro objeto?
[TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão?
Script nao funciona
Como desativar scripts em objetos distantes
[RESOLVIDO] Bug Da Unity ?
[AULA] HTML - Aula 1: Introdução
Raycast
[TUTORIAL]"Morte" do personagem (Unity 5.3 ou Superior)
Problema com a unity ads
como eu faço para a camera orbitar um objeto atraves de um joystick?????
[PROJETO MOBILE] Defeat the Illuminatis
XML, suporte e utilização.
Arrastar objetos em plano 2D (ArrastarT).
[TUTORIAL] Sistema de fome, sede, barra de vida, barra de estamina, itens e dano por queda
Participe da Game Jam - Jaaj do canal Amdré Young!
Criar sistema de arrastar e soltar objetos em determinado lugar
AWM Champions I
[RESOLVIDO] Como verificar se o objeto é diferente de null
COMO FAÇO PARA FAZER UM SISTEMA DE SKIN PARA ANDROID ESTILO HEAVY BUS, PROTON BUS, ETC
[TUTORIAL] Snake com Unity + C#
Sobre Som (Ouvir som do sistema , duas caixas de som ... )
Configurar NPCs
[RESOLVIDO] Script Carta
[TUTORIAL] Texto Legenda Character Por Character Para Uso Básico
Ajuda com script movimento por Grid Tile no Navmesh
[Devlog] Lost in the world 05/10
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
inimigo nao persegue player
[RESOLVIDO] Build setting não entra
[RESOLVIDO] Player Sair Da animaçao
[RESOLVIDO] Erro colider
Dúvida sobre Resolução
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[____ENQUETE____] Eleições para presidente 2018
[Plugin dll] DigData basico save data Para Unity
Conquistas Steam? Adicionar
Montando equipe! [Game survival]
[TUTORIAL] Banco de dados || MySQL
[RESOLVIDO] Rotação com Mouse Vídeo 360
Problema com a velocidade do objeto
ANIMAÇÃO INIMIGO AI
Alguem sabe explicar o que é o C# Job System e para o que ele serve
[RESOLVIDO] Comando ScreenToWorldPoint.
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
[TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
Firebase e Unity 5
[ASSET] Modelo de casa
Hoje à(s) 12:56 pm
Hoje à(s) 12:22 pm
Hoje à(s) 7:37 am
Hoje à(s) 7:28 am
Hoje à(s) 5:30 am
Ontem à(s) 9:56 pm
Ontem à(s) 9:00 pm
Ontem à(s) 4:05 pm
Ontem à(s) 3:34 pm
Ontem à(s) 12:41 pm
Ontem à(s) 11:48 am
Ontem à(s) 12:57 am
Seg Out 15, 2018 11:36 pm
Seg Out 15, 2018 8:31 pm
Seg Out 15, 2018 6:51 pm
Seg Out 15, 2018 5:34 pm
Seg Out 15, 2018 5:03 pm
Seg Out 15, 2018 2:46 pm
Seg Out 15, 2018 1:19 pm
Seg Out 15, 2018 12:56 pm
Seg Out 15, 2018 11:34 am
Seg Out 15, 2018 6:17 am
Seg Out 15, 2018 12:30 am
Seg Out 15, 2018 12:18 am
Dom Out 14, 2018 12:52 am
Sab Out 13, 2018 9:08 pm
Sab Out 13, 2018 5:24 pm
Sab Out 13, 2018 4:00 pm
Sex Out 12, 2018 10:42 pm
Sex Out 12, 2018 6:00 pm
Sex Out 12, 2018 2:56 pm
Sex Out 12, 2018 2:55 pm
Sex Out 12, 2018 2:42 pm
Qui Out 11, 2018 8:59 pm
Qui Out 11, 2018 8:32 pm
Qui Out 11, 2018 3:09 pm
Qui Out 11, 2018 2:32 pm
Qui Out 11, 2018 12:15 pm
Qui Out 11, 2018 11:35 am
Qui Out 11, 2018 10:50 am
Qui Out 11, 2018 8:24 am
Qua Out 10, 2018 11:31 pm
Qua Out 10, 2018 11:11 pm
Qua Out 10, 2018 10:43 pm
Qua Out 10, 2018 8:22 pm
Qua Out 10, 2018 4:53 pm
Qua Out 10, 2018 4:44 pm
Qua Out 10, 2018 3:48 pm
Qua Out 10, 2018 12:40 pm
Ter Out 09, 2018 9:51 pm
Ter Out 09, 2018 8:16 pm
Ter Out 09, 2018 8:16 pm
Ter Out 09, 2018 8:10 pm
Ter Out 09, 2018 8:09 pm
Ter Out 09, 2018 7:38 pm
Ter Out 09, 2018 2:55 pm
Seg Out 08, 2018 6:13 pm
Seg Out 08, 2018 4:40 pm
Seg Out 08, 2018 2:39 pm
Seg Out 08, 2018 12:52 pm
Seg Out 08, 2018 12:16 pm
Seg Out 08, 2018 10:33 am
Seg Out 08, 2018 9:22 am
Dom Out 07, 2018 1:59 pm
Dom Out 07, 2018 11:53 am
Dom Out 07, 2018 10:53 am
Sab Out 06, 2018 11:14 pm
Sab Out 06, 2018 10:55 pm
Sab Out 06, 2018 8:50 pm
Sab Out 06, 2018 8:41 pm
Sab Out 06, 2018 2:21 pm
Sab Out 06, 2018 1:33 pm
Sab Out 06, 2018 2:04 am
Sex Out 05, 2018 8:22 pm
Sex Out 05, 2018 7:39 pm
Sex Out 05, 2018 6:35 pm
Sex Out 05, 2018 11:27 am
Sex Out 05, 2018 11:22 am
Sex Out 05, 2018 9:35 am
Sex Out 05, 2018 12:53 am
Qui Out 04, 2018 11:40 pm
Qui Out 04, 2018 10:43 pm
Qui Out 04, 2018 6:23 pm
Qui Out 04, 2018 3:36 pm
Qui Out 04, 2018 3:12 pm
Qui Out 04, 2018 3:11 pm
Qui Out 04, 2018 3:11 pm
Qui Out 04, 2018 3:07 pm
Qui Out 04, 2018 12:45 am
Qua Out 03, 2018 10:50 pm
Qua Out 03, 2018 7:15 pm
Qua Out 03, 2018 4:18 pm
Qua Out 03, 2018 3:16 pm
Qua Out 03, 2018 9:07 am
Qua Out 03, 2018 8:47 am
Ter Out 02, 2018 11:12 pm
Ter Out 02, 2018 8:22 pm
Ter Out 02, 2018 12:27 pm
Seg Out 01, 2018 10:40 pm
Callyde Jr
francisco barroso
dstaroski
dstaroski
Duarte
MRX
Daniel Dória
JuR
ismarspn
Jmspp
Callyde Jr
dhy paulo
rafaelllsd
francisco barroso
francisco barroso
igorobm
conceptfac
Dom3000
Isabela
Callyde Jr
Daniel Dória
diegopds
MarcosSchultz
igorobm
MarcosSchultz
MarcosSchultz
Flávio
francisco barroso
Callyde Jr
SuperGamer
SoullSec
SoullSec
SoullSec
Flávio
francisco barroso
Samuelostgamer
Samuelostgamer
gurgelg752
luansantos
guimaraf
theus.mors
TecnoGames
francisco barroso
Eduardoro39
QueriaStarMorto
QueriaStarMorto
mecjo
NyanHeavyBR
CaioItz
RodriGO3477
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
FelipeSouza11
FelipeSouza11
QueriaStarMorto
Tegh
Jmspp
Callyde Jr
Jmspp
Gabryellx007
dstaroski
Tegh
Tegh
SuperGamer
Luizdanhp
MarcosSchultz
TioUV
QueriaStarMorto
KAYKETHEO27
NKKF
MarcosSchultz
Callyde Jr
francisco barroso
FelipeSouza11
Nowsfeky
Mateus2583
FelipeSouza11
Callyde Jr
Daniel Dória
marcosdanielnerydasilva
francisco barroso
NKKF
dstaroski
dstaroski
dstaroski
dstaroski
PedroSilva
igorobm
natanael.olimpio
Socates
francisco barroso
Madson
gurgelg752
francisco barroso
efsbio
brunocvz
TioUV

[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 : 481
REPUTAÇÃO : 151
Áreas de atuação : Unity, Rpg Maker, Scratch, C#, C++, 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 : 3694
REPUTAÇÃO : 955
Idade : 29
Áreas de atuação : Téc. Hardware e Redes, Programação C#.

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 : 1988
REPUTAÇÃO : 405
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