quarta-feira, 23 de março de 2011

Condições


Este artigo promete ser grande. Peço paciência, porque este assunto é realmente um dos de maior importância em computação e programação.
Ao falar em condições, duas palavras aparecem bem claramente na nossa cabeça. Se eu fizer pudim, então teremos sobremesa. Como na informática ainda o idioma dominante é o inglês, traduzimos para IF. O comando IF é o único com bloco de códigos que não pode ser substituído por nenhum outro, ou seja, não há formas alternativas. A condição, em programação é essencial para o percurso de um programa, por isso, quem sabe programar condicionalmente, já sabe fazer muitas coisas.
A condição trabalha com valores booleanos, ou seja, apenas verdadeiro e falso. Podemos trabalhar de duas maneiras com a condição. Com sentenças lógicas ou variáveis booleanas. Primeiramente, vamos à estrutura:
if(a > b){
   a = a - b;
}
Bem simples. SE tal condição (neste caso, a é maior que b, que são variáveis), então (representado pelo abre-chaves) execute um comando (neste caso o comando fala que o valor de a passa a ser igual a ele mesmo menos o valor de b), e fecha-chaves. Parametrizando, temos:
if(<condição>){
   <comandos>;
}
O comando if é essencial para reconhecer com qual usuário o programador está lidando e qual valor este usuário fornece. Não podemos sempre contar com o mesmo valor, nem que o usuário digite apenas o valor que queremos, no tipo que queremos. Por exemplo (e o que acontece muito) quando pedimos para o usuário digitar um número e ele coloca letras no meio. Temos que fazer uma verificação, para ver se aceitamos aquele valor ou então pedimos para o usuário digitar de novo. Este ou então, em programação, é representado, em TODAS as linguagens, pelo comando else. Nas linguagens com blocos de código definidos por chaves, o else vai logo após o fechamento das chaves de um comando if:
if(a > b){
   a = a - b;
}
else{
   a = a + b;
}
Em BASIC, o Else entra no meio do bloco de códigos If:
If a > b Then
   a = a - b
Else
   a = a + b
End If
Mais uma semelhança do BASIC com a linguagem natural: As chaves são substituídas por Then (então) e End If (Fim Se). Como já disse, BASIC é uma linguagem que foi feita para fins didáticos apenas. Muitos costumam confundir VB (ou VB.NET) com BASIC, mas a linguagem de programação é realmente BASIC. VB é apenas o ambiente de desenvolvimento de propriedade da Microsoft baseado na linguagem BASIC.
Pode-se acrescentar outros ifs dentro de um if, e dentro do else também. Essa é uma característica muito útil para quem quer analisar mais de uma condição, uma de cada vez e reportar os erros sobre cada condição falsa. Lembrando-se de que o IF só prossegue a executar o código que está dentro dele se a condição expressa for verdadeira, podemos utilizar de alguns operadores relacionais entre as variáveis e valores:

NomeSímbolo em C, JAVA, C#...Símbolo em BASIC
Igual a===
Maior que>>
Menor que<<
Maior ou igual a>=>=
Menor ou igual a<=<=
Diferente de!=<>

Além dos operadores relacionais, que operam entre variáveis e constantes, podemos também usar operadores lógicos entre sentenças, os mesmos que usamos na álgebra de Boole, mas com uma diferença de notação:

NomeSímbolo em C, JAVA, C#...Símbolo em BASIC
Não!Not
E&&And
OU||Or

Percebam mais uma similaridade de BASIC com a linguagem natural inglesa. Também percebam que o símbolo de Não está presente no símbolo de Diferente de, significando que uma variável NÃO é IGUAL à outra (ou seja, diferente). Com estes símbolos, podemos formar a seguinte sentença lógica:
if((a != b) && (a + 2 < c)){
<comando>
}
Nesta condição, pedimos para verificar se o valor da variável "a" é diferente do valor da variável "b" e ainda se o valor da variável "a" somado a 2 é menor que o valor da variável "c". Como usamos o conector lógico E, o comando que for colocado no bloco só será executado se as duas sentenças forem verdadeiras. Se colocássemos um "||" (barras verticais, não I nem L) no lugar de &&, qualquer caso em que pelo menos uma das sentenças fosse verdadeira executaria o código.
O funcionamento do IF é bem simples: Verifica se a condição é verdadeira baseando-se em regras pré-definidas de comparação binária, dentro do processador (ação efetuada em escala de nanosegundos) e executa o código se o resultado da sentença for verdadeiro. Se o resultado for falso, o programa procura algum ELSE. Se tiver um ELSE, executa o comando que tiver no ELSE. Se não tiver, passa diretamente para o próximo código na sequência do programa.
Para usar o IF com variáveis no lugar da condição, esta variável terá que ser declarada como bool (aceita apenas verdadeiro ou falso). Isso é interessante para quando você tem uma estrutura inteira para analisar se algo é verdadeiro ou falso, por exemplo, se um elemento existe em uma lista de elementos. A princípio não dá para fazer este reconhecimento em apenas uma sentença, necessita-se de uma função (falarei sobre funções mais adiante) com uma estrutura montada à mão, que retorne um valor bool. Esta função então pode ser usada como se fosse uma variável com um código dentro, e pode ser usada dentro do comando IF, usando a seguinte sintaxe:
if(verifica()){
<comandos>;
}
Sendo "verifica()" o nome da função, ela retorna valores bool, ou verdadeiro, ou falso. Uma variável booleana poderia muito bem ser utilizada no lugar da função. O IF analisa se aquela expressão resulta em verdadeiro e executa. Se for falso, não executa e procura pelo ELSE. Se não encontrar passa para a sequência.
Muitas vezes também temos a necessidade de verificar se uma sentença (ou variável) é falsa. Ao colocar a variável ou a sentença dentro da condição do IF, basta colocar um ! (negação) à frente da variável ou sentença (esta última, podendo ser substituída com o operador relacional imediatamente contrário), ficando assim:
if(!(a > b)){

//ou

if(a <= b){
*Nota: Pode-se usar // para comentar (ou seja, fazer uma anotação que será ignorada pelo programa, para fins de orientação de funcionalidade do código) uma linha ou /* */ para comentar um bloco de linhas. Neste caso, utiliza-se /* no começo do bloco e */ no final do bloco de comentários.
Verifica-se que o oposto de "Maior que" é "Menor ou igual a", por questões simplesmente matemáticas (se um número não é maior que outro, ele só pode ser menor ou então igual a ele).
Bem, acho que é isso por hoje. Estamos começando a evoluir na programação! Qualquer dúvida, comentem!
Até a próxima :)

Nenhum comentário:

Postar um comentário

Codifique tua mensagem aí: