mar
26
2009
1

Minicurso PHP: 3ª Parte – Introdução ao PHP: Estruturas Condicionais ou de Controle

Olá Pessoal,

Gostando do minicurso? Espero que sim. Contribuam para o Projetista Digital postando suas dúvidas, comentários e sugestões na seção de comentários. Gostamos muito de recebê-los. Aviso dado, voltemos com a programação normal.

Conforme prometido trataremos hoje de estruturas condicionais em PHP. As condicionais nos permitem dotar os nossos programas de poder decisório. Ou seja, é possível tomar uma decisão ou outra, baseado numa condição ser ou não satisfeita.

IF – ELSE IF – ELSE

A estrutura condicional básica do PHP é o “if”. O IF possui um bloco de instruções delimitadas por { e }, a ser executado caso uma condição em parênteses seja ou não satisfeita. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$a = 5;
$b = 10;
 
//Verifico se os números são iguais
if ($a == $b) {
    echo "São iguais";
}
 
//Verifico se são diferentes
if ($a <> $b) {
    echo "São diferentes";
}
 
//Verifico se não são idênticos
if ($a > $b) {
    echo "A é maior do que B";
}
?>

Reparou que o bloco de código entre { e } só é executado caso a condição dada entre parênteses retorne um valor lógico TRUE? Pois é. O IF funciona dessa forma: analisa uma ou várias condições entre parênteses, caso o booleano retornado seja TRUE, ele executa o código entre chaves ( { e } ), caso o valor seja FALSE ele não executa nada… E se eu quiser executar um outro bloco de instruções caso a condição retorne FALSE? Para isso usamos uma outra estrutura chamada ELSE. O ELSE possui seu próprio de bloco instruções, delimitados por { e }, que somente será executado caso a condição analisada no IF retorne FALSE. É uma estrutura opcional para complementar o IF. A idéia geral é SE condição for verdadeira EXECUTE esse bloco de instruções CASO CONTRÁRIO execute esse outro bloco de instruções. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$a = 5;
$b = 10;
 
//Verifico se os números são iguais
if ($a == $b) {
    echo "São iguais";
}
else {
    echo "São diferentes";
}
 
//Verifico se são diferentes
if ($a <> $b) {
    echo "São diferentes";
}
else {
    echo "São iguais";
}
 
//Verifico se não são idênticos
if ($a > $b) {
    echo "A é maior do que B";
}
else {
    echo "B é maior do que A";
}
?>

Simples, né? Vamos continuar. E se eu precisar analisar uma série de condições simultaneamente? Vamos analisar as alternativas descritas nos códigos abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$nome = "Diego";
 
//Analiso várias expressões em uma única condicional
if ($nome == "Diogo" || $nome == "Rafael" || "$nome == "Diego") {
    echo "Nome válido";
}
else {
    echo "Entre com um nome válido";
}
 
//Analiso várias condições em condicionais distintas, usando a estrutura ELSE IF (Senão Se) para analisar condicionais alternativas
if ($nome == "Diogo") {
    echo "Seu nome é Diogo";
}
else if ($nome == "Rafael") {
    echo "Seu nome é Rafael";
}
else if ("$nome == "Diego") {
    echo "Seu nome é Diego";
}
else {
    echo "Entre com um nome válido";
}
 
//Analiso as condições fazendo uso de IFs aninhados
$idade = 23;
$programador = TRUE;
 
if ($nome == "Diogo" || $nome == "Rafael" || "$nome == "Diego") {
if($idade > 18) {
        if ($programador) {
                echo "Seu nome é $nome, é maior de idade e trabalha como Programador";
        }
}
}
?>

Repararam no funcionamento dos IFs aninhados? As condições IDADE e PROGRAMADOR somente serão verificados se a primeira condição (NOME) for satisfeita. Esse tipo de estrutura é muito útil para projetos futuros. Outra novidade é o ELSE IF. Isso permite que analisemos várias condições, executando blocos de instruções diferentes para cada uma delas.

OPERADOR TERNÁRIO

Existe ainda uma forma compacta de escrever a estrutura condicional básica (IF – ELSE): o operador ternário. O operador ternário funciona da seguinte forma – $variavel = (condição) ? “valor 1″ : “valor 2″, onde $variavel é o nome da variável que receberá o valor, “condição” é uma condição a ser avaliada, “valor 1″ é o valor atribuído à “$variavel” caso a condição retorne TRUE, e “valor 2″ é o valor atribuído à “$variável” caso a condição retorne FALSE. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$idade = 18;
 
//Iremos reescrever essa condicional em uma linha apenas, usando operador ternário
if ($idade >= 18) {
$status = "Maior de Idade";
}
else {
$status = "Menor de Idade";
}
echo $status;
 
//Usando o operador ternário
$status = ($idade >= 18) ? "Maior de Idade" : "Menor de Idade";
echo $status;
?>

Legal, né? E bem simples de entender. O operador ternário nada mais é do que uma forma resumida e compacta de escrever um IF – ELSE para armazenar um valor em uma variável. Percebam que ele tem uma aplicação bem específica: atribuição de valores. Não é um substituto do IF – ELSE, apenas uma alternativa para um dado tipo de aplicação.

SWITCH – CASE

A terceira forma de trabalhar com condicionais em PHP é o comando switch. Nada mais é do que a comparação de uma variável a uma série de valores. Seu funcionamento corresponde a uma série de IFs um embaixo do outro. A estrutura do switch é a seguinte:

switch (variável) {
case valor1:
Bloco de Instruções
case valor2:
Outro bloco de instruções

case valor n:
Bloco de Instruções N
default:
Bloco de Instruções Default
}

Em cada cláusula “case” analisamos um valor possível para “variável”, e caso seja retornado TRUE na comparação executamos o bloco de instruções correspondente. Caso todos os “case” retornem FALSE é executada a cláusula “default” (parecido com o ELSE). Veja um exemplo prático de switch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$acao = "inserir";
 
switch ($acao) {
case "inserir":
echo "A ação escolhida foi INSERIR";
case "atualizar:
echo "A ação escolhida foi ATUALIZAR";
case "apagar":
echo "A ação escolhida foi APAGAR";
default:
echo "Escolha uma ação válida";
}
?>

Ops… Que foi? O swtich não funcionou? Relaxa… Quando não aplicamos o comando “break” ao fim de cada “case”, o switch não entende que precisa parar naquele ponto, e continua executando o código até o fim (cláusula “default”). Agora veja como ficará o nosso código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$acao = "inserir";
 
switch ($acao) {
case "inserir":
echo "A ação escolhida foi INSERIR";
break;
case "atualizar:
echo "A ação escolhida foi ATUALIZAR";
break;
case "apagar":
echo "A ação escolhida foi APAGAR";
break;
default:
echo "Escolha uma ação válida";
}
?>

Agora sim. Tudo funcionando! Pois bem, com isso fechamos o tema estruturas condicionais. Amanhã falaremos sobre LOOPS e sábado sobre FUNÇÕES. Fechando esse ciclo de INTRODUÇÃO AO PHP. Já na segunda falaremos sobre passagem de parâmentros entre páginas (GET e POST), formulários PHP e envio de emails com PHP. Portanto, continuem visitando o Projetista Digital diariamente.

Abraços,
Diego.

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com