terça-feira, 26 de abril de 2011

Lógica de Programação: IF, ELSE - Comandos de Controle de Fluxo

Hoje vamos começar a estudar mais uma parte importante na programação, os Comandos de Controle de Fluxo. Vamos entender melhor eles e compreender seu funcionamento.

Primeiro vamos pensar nas linhas do código fonte de um programa, que aprendemos anteriormente que nada mais é que um conjunto de comandos que serão executados pelo computador linha após linha assim como lemos uma receita de bolo. Se digitarmos comandos atrás de comandos até o final do código do programa sem nenhum tipo de comando de controle de fluxo, vamos ter uma espécie de programa burro, comparado a um funcionário que não pensa, apenas faz seu trabalho sem analisar, pensar ou questionar aquela ação. É para isso que serve os comandos de controle de fluxo, para que o computador possa analisar os dados do programa e a partir dai possa tomar rumos diferentes a partir das informações desse dado, complicado? Nem tanto, vamos continuar o raciocínio
.
Vamos começar com comando mais simples e mais comum na programação, o If. If significa em português "Se". É aquele "Se" que usamos em frases como, "Se o Corinthians ganhar a libertadores..." ou "Se eu sou inteligente...". A idéia na programação é a mesma, dar uma condição para que uma ação seja tomada. Se essa condição então for verdadeira, então alguma ação irá ocorrer, voltando ao português seria como, "Se o Corinthians ganhar a libertadores, vai chover canivete" ou "Se eu sou inteligente, eu sei programar". Para que uma ação seja tomada, primeiro é necessário que uma condição seja verdadeira, seja qual for essa condição, em poucas palavras é assim que podemos definir o If.

Se lembra anteriormente que eu falei da variável booleana, aquela que ela só armazena dois tipos de dados, true ou false, verdadeiro ou falso, 1 ou 0. Esses são os resultados que um If espera, um true ou false, recebendo verdadeiro ele executa as ações que lhe foram designadas, caso receba falso ela anula todas as ações designada a ela e o programa passa para os comandos após os comando do If.

Mas como testamos uma condição na programação? Para transcrevermos uma condição na programação devemos utilizar os Operadores de Comparação que com certeza você deve se lembrar a suas aulas de matemática da quinta série. São eles:

= (Igual)
> (Maior)
< (Menor)
<> ou != (Diferente)
<= (Menor ou Igual)
>= (Maior ou Igual)

Esses operadores são utilizados para montarmos nossas condições que vão retornar verdadeiro ou falso, de acordo com os dados que ele testar. Por exemplo, 1=5, essa condição retornará false e o If não vai executar os comando designados a ele, mas se a condição for 1<5, então o If vai retornar verdadeiro e logo as ações designadas ao If serão executadas. Da mesma forma, as condições 1=1, 6=>5 ou 3<4 retornam verdadeiro e as condições 5=6, 3<=1 ou 5>1 retornam falso por exemplo. Outra forma de retornar verdadeiro ou falso para  uma If é através das funções, porém vamos aprender isso mais para frente.

Lógico que em um programa ou jogo dificilmente iremos fazer testes assim, normalmente iremos testar as variáveis que aprendemos anteriormente. Por exemplo, vamos fazer um programa que ajude um médico a tomar certas decisões a partir de dados (variáveis) dos pacientes. Então certamente teríamos linhas parecidas com essa no nosso programa:

If idade_do_paciente>40
 "Faça o exame de próstata"

Ou mesmo o comando:

If mes_da_gravidez=9
 "Faça o parto!"

A lógica é sempre a mesma, o que muda de linguagem para linguagem são os operadores e a forma de escrever os comandos, como por exemplo, o C que usa dois iguais (==) para testes de igualdade.

Agora e se nesse programa desejássemos avisar para o médio caso as condições não fossem verdadeiras? É ai que entra o Else, que nada mais é que um complemento do If, e somente pode ser usado após ele. Else em português siguinfica "se não". Utilizado em frases como "Se eu ganhar na loteria, eu irei pagar as minhas dividas, se não vou deixar sem pagar mesmo" ou "Se eu souber programar, eu criarei um jogos, se não eu não vou criar nenhum jogo". E poucas palavras, é dar uma ação para ser feita caso a condição do If seja falsa. Então nosso programa ficaria:

If idade_do_paciente>40
 "Faça o exame de próstata"
Else
 "Esse tá salvo da dedada"

If mes_da_gravidez=9
 "Faça o parto!"
Else
 "Alarme falso"

No nosso exemplo introduzimos apenas um comando por If e Else, porém podemos colocar quantos comando quisermos dentro dos blocos de código do If e Else, até podemos colocar outro comando If dentro do If ou do Else caso ache necessário.

Na programação é muito comum se utilizar fluxogramas para demonstrar a forma como o programa vai tratar o fluxo de dados, abaixo temos uma fluxograma de exemplo mostrando um simples programa que usa o If e o Else.

Dessa forma podemos visualizar melhor a forma como os comandos de controle de fluxo trabalham. Nos fluxogramas, quando desejamos representar um comando de controle de fluxo, usamos um losango que é ligado em duas pontas diferentes, um para o resultado positivo e outro para o negativo, os outros elementos não são um padrão definido então podemos encontrar fluxogramas que usam outras formas para representar saída de dados ou texto, aqui uso um retângulo para dar inicio e fim ao fluxo, e uma forma de pontas esféricas para passar um texto para o usuário.

Agora voltando ao programinha do médico, verificamos a idade do paciente e o mês da gravidez da grávida, mas esse teste não é suficiente, pois se uma mulher tiver mais de quarenta anos ela será submetida ao teste de próstata, e aqui vai uma lição de anatomia de grátis para quem não sabe, mulher não tem próstata. Temos que complementar a condição do If, muito podem até pensar em colocar mais um If dentro do If, porém existe outra forma melhor de fazer isso, é através dos Operadores Lógicos.

Os Operadores Lógicos são usados para complementar o comando de condição, podemos adicionar quantos operadores quisermos em uma sentença de condição. As operações lógicas existentes são:

And ou && (E): Irá retornar verdadeiro apenas se as duas sentenças entre ele forem verdadeiras, exemplo 1=1 And 1<5 é verdadeiro, mas 1=1 And 1>5 é falso.

Or ou || (Ou): Irá retornar verdadeiro se uma das duas sentenças entre ele for verdadeira, independente se a outra for falsa. Exemplo, 1=1 Or 1<5 é verdadeiro, e 1=1 Or 1>5 também é verdadeiro, mas 1>5 Or 1>-1 é falso.

Not ou ! (Não): Irá retornar verdadeiro sem a condição a sua frente for falsa, e retornará falso se a condição a frente for verdadeira. Basicamente inverte o resultado da condição. Not 1=1 é falso, e Not 1<5 é verdadeiro.

Confuso? Vamos a pratica para clarear as idéias, programa para o médico ficaria assim.

If idade_do_paciente>40 And sexo="masculino"
 "Faça o exame de próstata"
Else
 "Esse tá salvo da dedada"

If mes_da_gravidez=9 And Not sexo="masculino"
 "Faça o parto!"
Else
 "Alarme falso"

Mas o médico não tá satisfeito com o sistema de gravidez, ele quer detectar se a gravidez é de risco, que ocorre quando a mulher é menor de quinze anos ou maior de 35 anos, nesse caso deve-se usar o Or.

if idade<=15 Or idade>=35
 "Gravidez de risco"
Else
 "Gravidez normal"

Entendeu agora, não é tão difícil, iremos usar muito esses controladores sempre em nossos jogos, como por exemplo, para passar para uma próxima fase do jogo o jogador tenha que acumular mais de 1000 pontos, logo teríamos um If com uma condição pontos>1000, porém além disso o jogador tem que ter três chaves, então teríamos uma condição como pontos>1000 And chaves=3. É Simples, e é um bom treino de raciocínio lógico.

Como exercício tente pensar nos seus jogos favoritos e tente imaginar qual a sentença usada nas condições para detectar suas ações nos jogos, é uma forma de se preparar para pensar no seu jogo.

Por hora é só, e me despeço antes que algum Corintiano apareça querendo me espancar.

12 comentários:

  1. flw por tirar minha duvida, gostei do jeito que escreve vou ate da uma olhada em outros artigos no blog.

    ResponderExcluir
  2. Gosto muito dos artigos de ótima qualidade do seu Blog. Quando for possível dá uma passadinha para ver nosso Curso de Informática Online. Lucas

    ResponderExcluir
  3. opa,tenho uma dúvida.

    "mas 1>5 Or 1>-1 é falso."

    mas 1 > -1 não é verdadeiro?

    abração.Bizi

    ResponderExcluir
  4. como faz pra texturizar no blender 2.49....vc fez\ aquele personagen simples em 2011 mas nãao disse como texturizar....ensina aÊÊÊÊ por favorrrr.

    ResponderExcluir
  5. muito bem explicado agora a logica entrou na minha cabeça

    ResponderExcluir
  6. Respostas
    1. creio que fique assim kkkk:

      if Vc_não_sabe_o_que_é_ifs
      "é pq não leu o texto"
      Else
      "deve tá de zoeira com a minha cara"

      Excluir
  7. EU TENHO DUVIDAS QUANDO E NECESSÁRIO USAR MAIS DE TRÊS CONDIÇÕES

    ResponderExcluir
  8. EU TENHO DUVIDAS QUANDO E NECESSÁRIO USAR MAIS DE TRÊS CONDIÇÕES

    ResponderExcluir
  9. Este comentário foi removido pelo autor.

    ResponderExcluir