Ir ao conteúdo
  • Cadastre-se
celsonasciutti

Como funciona na prática a funçao while em c++

Recommended Posts

while o único que aceita é uma condição verdadeira ou falsa, por exemplo 1==1 é verdadeiro, isso faria com que todo o código do corpo seja executado, por outro lado imaginamos 1 == 2, nesse caso while será ignorado passando imediatamente para a seguinte instrução. Se quiser dominar while, do-while, if e outras afine sobre expressões lógicas.

 

Lembre que verdadeiro é um numero diferente a zero, e falso é zero. Pois bem... se o resultado de uma expressão é 0 o programa ignora while, if etc. por outro lado se uma expressão gera como resultado qualquer numero diferente de 0, então você entrará em while por exemplo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi a gente tem que afina o máximo da lógica se uma váriavel exemplo idade

se uma idade == 18

condição if idade == 18 expressão verdadeira, condição diferente idade == 19 ele será ignorando não é isso.

Se a idade fo igual ele entra no loop while

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, exatamente. porém ter claro que idade == 18 gera 1 como resultado(se idade valer 18 claro), si não prove isso justo antes do if e você entenderá:

printf("%d", (idade==18));

Justo o que for imprimido por esse printf é o que recebe o if

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo o valor um 1 significa verdadeiro e 0 falso, funciona como valor booleano, porque já li sobre isso.

printf imprime a saída do tipo de conversão de número %d decimal e a váriavel idade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que imprime printf é o resultado de comparar idade com 18, isso gera 1 se idade for 18, é dizer que se idade valer 18 e você fizer if (idade == 18) é a mesma coisa que você estiver fazendo if(1), como ao if somente lhe importa se o resultado é zero(false) ou qualquer outro valor diferente de zero(true). Se por if(18), tem o mesmo efeito que if(1), pois qualquer coisa diferente de zero é verdadeiro. Então como falei antes, as condicionais não são tão difíceis de controlar, você precisa pratica-las.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo se eu quero que a idade == 18 valor a ser verdadeiro 1

 

programa idade

include <stdio.h>
 

int main

int idade = 18; // aparece como condiçao igual.

if idade == 18 // valor 1;

    printf("%d", (idade==18));

else // aparece falso 0

    printf("%d", (idade != 18)) // valor 0 minha duvida é aqui porque eu chega ao valor exato do

return 0;

 

No caso se o valor diferente de zero pode passa a ser 1 verdadeiro, depende do objetivo do programa no caso declarei a idade acima como igual, isso é sabe trabalha com a lógica da condição if não é.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em ocasiões podemos querer saber si 2 coisas são iguais, e em outras queiramos  saber si são o contrario. Vamos por casos... imaginemos que eu quero saber si uma pessoa tem 18 anos para subir a uma nave espacial >_<.
int idadeEstipulada = 18;
int idade = 0;
scanf("%d", &idade);

if(idade == idadeEstipulada){
//Pode subir na nave
}else{
//você não está apto para fazer o viagem
}

Como quero saber se a idade é exatamente 18, só subiremos a essa nave se o usuário entrou com 18.

Vejamos outro exemplo. Vamos agora imaginar que eu só quero saber se o usuário tem a idade diferente de 18 para mostrar um aviso que ele não está apto, ou seja queremos saber si ele tem a idade diferente de 18, se for assim mostramos a mensagem "Não apto".

int idadeEstipulada = 18;
int idade = 0;
scanf("%d", &idade);

if( idade != idadeEstipulada ){
//você não está apto para fazer o viagem
}

Nesse caso imaginamos que o usuário digitou 15 anos. O que acontece é que queremos saber SE É DIFERENTE. 15 é diferente de 18? Sim claro! então é true. Como if lhe importa pouco se o usuário é 15, 18  ou mil anos, se cair um numero diferente de 0 você entra no if, não sei se ficou claro.

Tudo depende do que você quer saber, tenha presente que os operadores são como frases == (é igual) tratasse de uma afirmação e ao mesmo tempo é uma pergunta, algo como "isso... É igual a aquilo?". É bem claro acho. E a mesma coisa para != "Isso NÃO É igual a aquilo?". Se você pensar direito if(idade==18) é uma pergunta (Se idade é igual a 18?...) dependendo da resposta você entra ou não. Igual a if(idade!=18) (Se idade é diferente a 18?...). Aprenda a falar com seu computador, programa de forma parecida a nossa lógica humana, tipo inserir(contato), ler(arquivo), imprimir(vetor), etc, você precisará de muitos poucos comentários.

Programar não é fazer o código mais enrolado possível demonstrando que você "é o cara", se não que um bom programador é aquele que faz o código mais claro possível, tenha isso claro e triunfarás. ;)

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui entender depois de uma explicação ainda com a comparação de duas variaveis

Idade e IdadeEstipulada vai fica bem mais de começa trabalhando com mais de duas variaveis, agora não fico tão limitado.:thumbsup: 

 

Muito bem explicado sobre a função da condição if, quando queremos a resposta certa ou recebemos a resposta contrária.

Como if, else. Posso usa uma terceira que vi também combinando if, else if e caso contrário as duas a condição else.

 

int idadeEstipulada = 18;
int idade = 0;
scanf("%d", &idade);

if(idade == idadeEstipulada){
//Pode subir na nave
}else{
//você não está apto para fazer o viagem
}

O objetivo do programa é checa o valor digitado, e compara se o campo que digitei a idade &idade e compara a igualdade do campo com o valor da IdadeEstipulada . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O else if é "outro se", ou também else="ou" if="se".
Exemplo:

int idadeEstipulada = 18;
int idade;

scanf("%d", &idade);

 

if(idade == idadeEstipulada){  //Se idade é igual a idade estipulada?

//você tem 18 anos

}else if (idade < idadeEstipulada) { //Ou se idade é menor que estipulada?

//você tem menos de 18 anos

}else if (idade > idadeEstipulada) { //Ou se idade é maior que estipulada?

//você tem mais de 18

}

A diferença está em que somente pode ser uma só resposta, não poderá haver 2 respostas, quando entrar no primeiro if os outros serão pulados. Isso não acontece se for puros ifs, você entraria em todos os ifs, um exemplo seria o seguinte:

Vamos supor que quero saber se a pessoa já completou 1 ano de idade, se for correto mostra a mensagem "Completou 1 ano". porém não só quero saber isso para 1 ano se não para todos os anos que tenha completado. Isso se faria perfeitamente com um while porém quero fazer com ifs somente para ilustrar o funcionamento de else if.

Vamos ao caso, primeiro faremos com if.

#include<stdio.h>

int main(){
    
    int idade = 18; //idade da pessoa a averiguar
    int i = 1;
    
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }    
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }  
        
        
    return 0;
}

Como você pode ver o programa entrou em todos os if até averiguar que a pessoa tenha a idade menor ou pelo menos igual a 18.

Agora veremos o mesmo caso porém com else if, e veremos o que vai acontecer:

#include<stdio.h>

int main(){
    
    int idade = 18; //idade da pessoa a averiguar
    int i = 1;
    
    if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }    
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }
    else if( i <= idade ){ printf("%d anos ja cumpridos\n", i++); }  
        
        
    return 0;
}

Nessa altura certamente você ja se deu conta, somente entramos no primeiro if. Cada if do primeiro exemplo é considerado por separado, por isso passamos por todos os ifs. Por outro lado cada else if vai relacionado com o primeiro if anterior, então somente pode ter um deles. Não sei se ficou claro. Se você tiver uma pergunta que talvez tenha só uma resposta use ifs independentes, mas se tiver uma pergunta que tiver uma só resposta, nesse caso use else if, pois ao primeiro condicional que entrar os outros serão "pulados", tem comportamento parecido a switch. ;)




 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bem explicado e continuo lendo aqui no primeiro exemplo se o contador i for menor que Idade ele vai imprimi +1 até 18 vezes.

Enquanto else if repete apenas uma vez, no console funcionando mais ou menos como ao contrário e if? 

IF =Todos . Serve como saida completando com um ano completado até 18x de anos completado muito util vejo muito em algumas linguagens que o while da conta disso, mas esse pode vale a pena manualmente apenas escrevendo a quantidade de vezes que quero repeti.

Else If = um pode ser escrito manualmente  18 x mas só chega a um resultado na saída do console.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é algo que você irá melhorando conforme for fazendo algoritmos a diário. Existe sempre uma solução que encaixa melhor em uma situação determinada, por isso a importância da pratica, é a única forma de afinar na programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada melhor que pratica desenvolvendo e resolvendo problemas simples, e procurando soluções com as condições pra um determinada tarefa de ciclo de repetição.:thumbsup:

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×