sexta-feira, 28 de novembro de 2008

Verdadeiro e Falso


Bom, vamos começar falando sobre o conceito de verdadeiro e falso, pois são utilizados constantemente em programas.

Para a linguagem C, quando uma variável contém o valor 0 (zero), ela está com o valor falso. Qualquer outro valor diferente de zero (positivo ou negativo), significa verdadeiro.

Generalizando, qualquer coisa diferente de zero é "verdadeiro" e qualquer coisa igual a zero é "falso".

Você deve estar se perguntando agora qual a utilidade disto. Veremos a seguir.

O Comando de Controle IF

O comando de controle if (em português: se) é o mais famoso de todas as linguagens de programação, em todas ele existe. Sua finalidade, é verificar se uma condição é "verdadeira", e caso seja, então executar determinada tarefa (que pode ser uma função).

O formato do if é o seguinte:
if (expressão) {
tarefa1
}

NOTA: O comando if deve ser escrito sempre em letras minúsculas, caso contrário não irá funcionar, todos comando do C são sensíveis a case.

A expressão do if na verdade é a condição lógica para que ele execute a tarefa1. Esta expressão caso seja numérica, pode ser comparada assim:
int a;
int b;
if (a comparação b) {
tarefa1
}

tarefa1 só será executada se a comparação entre a e b retornar verdadeira.

Onde comparação pode ser:
(==) : Retorna "verdadeiro" se o primeiro número (variável) for igual ao segundo. Falso caso contrário.
(!=) : Retorna "verdadeiro" se o primeiro número (variável) for diferente do segundo. Falso caso contrário.
(>) : Retorna "verdadeiro" se o primeiro número (variável) for maior que o segundo. Falso caso contrário.
(>=): Retorna "verdadeiro" se o primeiro número (variável) for maior ou igual ao segundo. Falso caso contrário.
(<) : Retorna "verdadeiro" se o primeiro número (variável) for menor que o segundo. Falso caso contrário.
(<= ): Retorna "verdadeiro" se o primeiro número (variável) for menor ou igual ao segundo. Falso caso contrário.

Exemplo:
main() {
int primeiro=10;
int segundo=5;
if (primeiro>3) printf("primeiro maior que 3");
if (primeiro!=segundo) printf("primeiro diferente do segundo");
}

NOTA: Quando for executar apenas uma tarefa (como o printf no exemplo) não é necessário o uso das chaves. Caso você queira executar mais de um comando, use as chaves ({ e }).

No exemplo acima a expressão (primeiro>3) vai retornar "verdadeiro" e irá imprimir na tela "primeiro maior que 3".

Podemos ainda usar o termo else (traduz-se para: senão) ao final do if caso a expressão seja falsa, para executar outra tarefa. Exemplo:

main() {
int x=10;
int y=2;
if (x>y) printf("x maior que y");
else printf("x menor que y");
}

Traduzindo: se x maior que y imprima na tela "x maior que y", senão imprima na tela "x menor que y".

Como dissemos antes, o que é zero é "falso" e o que é diferente de zero é "verdadeiro". Você pode usar o retorno de uma função como expressão para o if. O símbolo ! (not, negação) inverte o valor lógico da expressão. Por exemplo:

int maior(int a, int b) {
if (a>b) return 1;
else retun 0;
}

main() {
int a=10;
int b=20;
if (!maior(a,b)) printf("a é menor que b");
}

Traduzindo: Se a não (!) for maior que b imprima na tela "a é menor que b".

Ainda sobre o if podemos destacar os operadores lógicos and e or. Estes dois são representados pelos símbolos && e ||, respectivamente. O primeiro é um e e o segundo um ou. São usados como neste exemplo:

main() {
int a=10;
int b=20;
int c=30;
if (ab) printf("c é o maior de todos");
if (a==10 || a==5) prnt("a é igual a 5 ou 10");
}

Traduzindo: Se a for menor que b, e c for maior do que b imprima na tela "c é o maior de todos". Se a for igual a 10 ou a for igual a 5 imprima na tela "a é igual a 5 ou 10".

Pode-se usar mais de um and e mais de um or, inclusive em conjunto, tornando a lógica um pouco mais complexa.

O Comando de Controle While

O while (em português: enquanto) serve para se deixar um programa em loop (rodando a mesma coisa, travado de propósito) até que a expressão que o prende seja verdadeira. O while tem dois formatos:

while (expressão) {
tarefa1
}

do {
tarefa1;
} while (expressão);

Exemplo:
main() {
int b=2;
int a=0;
while (a!=b) {
a=a+1;
}
}

Traduzindo: enquanto a for diferente de b some 1 ao valor atual de a. Ou seja, em duas execuções de "a=a+1", o valor de a igual ao de b que é 2.

NOTA: A expressão "a=a+1" não é uma expressão matemática válida. Porém, em programação isto vale, pois a variável a esquerda do símbolo de igualdade (=) na verdade está recebendo o valor da expressão à direita do igual (=). Ou seja, a posição de memória da variável a é preenchida com o resultado de "a+1".

Exemplo2:
main() {
int a=2;
do {
a=a-1;
} while (a!=0);
}

Traduzindo: faça "a=a-1" enquanto a for diferente de zero. Ou seja, tire 1 de a até que seu valor seja zero.

O Comando de Controle FOR

Imagine o for como um while com limites definidos. Este é o formato do for:

for (valor_inicial;condição;passo) {
tarefa1;
}

valor_inicial é o valor inicial de uma variável numérica qualquer.
condição indica qual é a condição de parada do for (expressão de verdadeiro ou falso), é um while.
passo é o que deve ser executado ao final de uma execução de tarefa1 cuja condição do for ainda não foi satisfeita.

Exemplo:
main() {
int i;
for (i=0;i<10;i=i+1)>

Traduzindo: comece com i igual a zero. Enquanto i for menor que 10, some 1 ao valor de i ("i=i+1") e imprima na tela "teste". Ou seja, imprime a "teste" 10 vezes na tela (com i variando de zero a 9).

A variável dentro do for pode ser usada dentro do próprio for, assim:

for (x=0;x<10;x=x+1) a="a+x;">

Exemplo de Programa

int maior(int a, int b) {
if ( a > b ) return 1;
else return 0;
}

main() {
int a=10;
int b=5;
int c=8;
while (!maior(b,a)) {
b=b+1;
if (b==c) printf ("b vale o mesmo que c");
}

Traduzindo: Enquanto b não for maior do que a some 1 ao valor atual de b e se b agora for igual a c imprima na tela "b vale o mesmo que c". Ou seja, o valor de b vai crescendo (6,7,8,...). Quando b chega em 8, o if irá ativar o printf que imprimirá na tela "b vale o mesmo que c". O programa termina quando b chega a 11, pois b vai ser maior do que a, o que fará sair do while.

Um comentário:

Luciano Oliver - Dev FullSatck disse...

Vale colega! ótima postagem. Me ajudou bastante a entender o conceito de tomada de decissao.