Ir para conteúdo

[aula 2 - Condições E Operadores]


Nostradamus

Posts Recomendados

Olá todos mais uma vez, estou aqui depois de muitos pedidos, para a segunda aula de PHP. Antes de mais nada, recomendo lerem os tópicos de Lógica de Programação, que seria uma boa.

Chega de enrolação, vamos ao que interessa.

 

1)Operadores

Um operador pode ser definido como 'algo que a partir de um ou mais valores recebidos, efetua uma operação e devolve um novo valor'.

Os operadores a que estamos habituados são os aritméticos (+, -, etc.), que serão usados aqui exatamente da mesma forma como os conhecemos da matemática.

Mas existem outros tipos destinados a operações não matemáticas. Vamos ver os tipos que nos interessam:

 

Operadores Aritméticos

São os próprios operadores matemáticos, usados da mesma forma. A única exceção é o operador '%' (módulo) - que recebe dois números, divide um pelo outro e retorna o resto da divisão.

Isso acontece porque um operador não pode retornar dois valores e uma operação de divisão, eventualmente retorna dois valores: o resultado da divisão e o resto.

Por exemplo, 5 dvidido por 2 é igual a 2 e resta 1. A forma de lidar com isso em programação é esta: 5 / 2 = 2 e 5 % 2 = 1.

 

+ (adição) (Some de dois números)

- (subtração) (Diferença entre dois números)

* (multiplicação) (Produto de dois números)

/ (divisão) (Quociente do número da esquerda pelo da direita)

% (módulo) (Resto da divisão do número da esquerda pelo da direita)

 

 

Exemplos:

 

<?php
$a = 4;
$b = 2;

// soma
$resultado = $a + $b; # $resultado agora contêm: 6

// subtração
$resultado = $a - $b; # $resultado agora contêm: 2

// multiplicação
$resultado = $a * $b; # $resultado agora contêm: 8

// divisão
$resultado = $a / $b; # $resultado agora contêm: 2

// módulo
$resultado = $a % $b; # $resultado agora contêm: 0
?>

 

É preciso estar atento para algumas regras nas operações matemáticas mais complexas.

Certos operadores têm preferência sobre outros e são executados primeiro, independente de sua posição na expressão, por exemplo 2 + 4 * 2 não corresponde a 12, mas a 10.

Isso acontece porque o operador de multiplicação tem preferência sobre o de adição.

Para não se preocupar com isso use parênteses para 'encapsular' as expressões, lembrando que o interpretador irá resolvê-las sempre de dentro para fora.

Por exemplo: em "1 + (21 / ((2 * 3) + 1))", a primeira a ser resolvida será (2 * 3) que será somada a 1. Só então 21 será dividido pelo resultado de ((2 * 3) + 1) para depois ser somado a 1.

De qualquer forma, segue uma tabela simplificada da 'precedência de operadores' em PHP (maior prioridade em cima, menor em baixo):

 

Precedência de operadores

 

! ++ -- @

* / %

+ - .

< <= > >=

== !=

&&

||

= += -= *= /= .= %=

and

xor

or

 

 

Operadores de String

 

Na verdade existe apenas um operador para strings, o de concatenação, que é representado por um ponto. Concatenar significa juntar, agrupar, colar. Somar uma string a outra.

Veja os exemplos:

 

<?php
// concatenação de strings
$a = "Meu cachorro é ";
$b = "branco";
$c = "feroz";

print $a.$b; # imprime: Meu cachorro é branco
print $a.$c; # imprime: Meu cachorro é feroz
print $a.$b." e ".$b; # imprime: Meu cachorro é branco e feroz
?>

 

 

Operadores de Atribuição

 

O operador básico de atribuição no PHP é o sinal de igual. Ao contrário do que se possa imaginar, aqui o sinal de igual não significa igualdade (o que seria um operador de comparação), mas atribuição. Quando vemos o código $a = 10; lemos '$a é igual a 10' quando deveríamos dizer '$a recebe o valor 10'.

 

Além do operador básico, existem as combinações entre ele e os operadores aritméticos e de string.

Veja os exemplos:

 

 

<?php
/* numéricos */
// atribuição simples
$a = 10;
$b = "teste";

// atribuição e adição
$a += 10;
# o mesmo que
$a = $a + 10;

// atribuição e subtração
$a -= 10;
# o mesmo que
$a = $a - 10;

// atribuição e multiplicação
$a *= 10;
# o mesmo que
$a = $a * 10;

// atribuição e divisão
$a /= 10;
# o mesmo que
$a = $a / 10;

// atribuição e módulo
$a %= 10;
# o mesmo que
$a = $a % 10;

/* strings */
// atribuição e concatenação
$b .= " preparado";
# o mesmo que
$b = $b." preparado";
?>

 

 

Operadores de Comparação

 

Estes são para comparar valores, como o nome diz. Normalmente são os operadores de comparação que determinam os caminhos que o script vai tomar em cada bifurcação do tipo IF ... ELSE.

Esses sempre retornam um valor boleano(True ou False).

 

== (Igual) (Verdadeiro se os dois termos são iguais)

!= (Diferente) (Verdadeiro se os dois termos são diferentes)

< (Menor que) (Verdadeiro se o primeiro termo é menor que o segundo)

> (Maior que) (Verdadeiro se o primeiro termo é maior que o segundo)

<= (Menor ou igual) (Verdadeiro se o primeiro termo é menor ou igual ao segundo)

>= (Maior ou igual) (Verdadeiro se o primeiro termo é maior ou igual ao segundo)

 

 

Veja os exemplos:

 

 

<?php
$a = "teste";
$b = 10;
$c = 5;
$d = 'teste';
$e = 5;

// igual
($a == $b) # não verdadeiro
($a == $d) # verdadeiro

// diferente
($a != $c) # verdadeiro

// menor que
($b < $c) # não verdadeiro

// maior que
($b > $c) # verdadeiro

// menor ou igual a
($b <= $c) # não verdadeiro

// maior ou igual a
($c >= $e) # verdadeiro
?>

 

 

Operadores Lógicos

 

Os operadores lógicos normalmente são usados para testar duas expressões, retornando um valor boleano(True ou False).

São comparações do tipo: se expressão 1 e expressão 2 são verdadeiras, faça tal procedimento.

A exceção é do operador de negação, que testa apenas um valor.

 

and (E) (Verdadeiro se as duas expressões são verdadeiras.)

&& (E) (Verdadeiro se as duas expressões são verdadeiras.)

or (OU) (Verdadeiro se uma das duas expressões é verdadeira (ou as duas).)

|| (OU) (Verdadeiro se uma das duas expressões é verdadeira (ou as duas).

xor (OU exclusivo) (Verdadeiro se apenas uma das duas expressões é verdadeira.)

! (NEGAÇÃO) (Verdadeiro se a expressão não é verdadeira.)

 

Veja alguns exemplos:

 

<?php
$a = 1;
$b = "tres";
$c = false;

// E lógico
($a < 2 and $a > 0) # verdadeiro
// mesma coisa
($a < 2 && $a > 0) # verdadeiro

// OU lógico
($a == 9 or $b == 'tres') # verdadeiro
// mesma coisa
($a == 9 || $b == 'tres') # verdadeiro

// OU exclusivo
($a == 1 xor $c == false) # falso

// NEGAÇÃO
(!$c) # verdadeiro
(!$b) # falso
?>

 

 

Operadores de incremento / decremento

 

Os operadores de incremento e decremento são para uso em loops. São eles: '++' e '--', respectivamente e há duas formas de usar cada um deles. Veja:

 

$a++ (incrementa $a em 1 após a execução do bloco de comandos)

++$a (incrementa $a em 1 imediatamente)

$a-- (decrementa $a de 1 após a execução do bloco de comandos)

--$a (decrementa $a de 1 imediatamente)

 

 

Controle de erros

 

O PHP tem um operador de controle de erros, o arroba (@). Às vezes nosso script está sujeito a erros não previstos e, de acordo com as configurações do servidor, uma mensagem de aviso ou de erro é exibida ao usuário. Podemos evitar isso usando um '@' antes da chamada de uma função ou da variável que recebe um valor de retorno nulo. Veja como:

 

<?php
// se o arquivo não existir, $var recebe um valor nulo, sem erro
$var = @file('arquivo_inexistente.xxx');

// se o elemento não existir... tudo ok
$var = $arr['indice inexistente'];
?>

 

 

 

2) Condições

Antes de tudo, você deve estar perguntando o que seria essas condições, eu explico.

Condições são condições oras! Com elas você pode fazer seu script realizar diferentes funções dependendo do que retornar. Na lógica seria algo como:

 

Se a variavel for zero então

eba, legal! a variavel é 0!

 

senão se a variável for um

que pena, a variavel não é 0, mas é 1!.

 

senão

a variável não é nem 0 nem 1, que chato.

 

Agora vamos levar ao PHP:

 

 

if ... elseif ... else

 

if ($variavel = 0) {
echo "eba, legal! a variavel é 0!";
}
elseif ($variavel = 1) {
echo "que pena, a variavel não é 0, mas é 1!";
}
else {
echo "a variável não é nem 0 nem 1, que chato.";
}

 

Observem que quando é else, qualquer valor que for a variável, MENOS 0 ou 1, imprimirá a mensagem "a variável não é nem 0 nem 1, que chato."

 

 

O construtor IF é a mais simples e talvez a mais importante estrutura de controle. If significa literalmente 'se' e vamos utilizá-lo para fazer a 'ponte' entre os testes e os blocos de comandos, associando certa sequência de comandos (bloco) a determinado evento (teste). Ou seja, "se (condição) é verdadeira, execute {bloco de comandos}".

 

 

O operador ternário

 

Há uma outra forma mais compacta de trabalhar com IF ... ELSE. É o ternário que a partir de 3 expressões - uma condição e dois valores de retorno - age como um esquema de IF ... ELSE, usando os símbolos '?' e ':'.

 

(condição) ? 'valor 1 (cond. TRUE)' : 'valor 2 (cond. FALSE)';

 

Se a condição for verdadeira, o primeiro valor será retornado, senão o segundo.

 

<?php
// O operador ternário

// com IF ... ELSE
if($numero  > 0) { $tipo = 'positivo'; }
else { $tipo = 'negativo'; }

// com o ternário
$tipo = ($numero  > 0) ? 'positivo

 

 

Switch

 

A instrução SWITCH é uma estrutura similar a uma sequência do tipo IF .. ELSE IF .. ELSE IF, mas só avalia valores simples (números e strings), não expressões. Se queremos testar se o valor de uma variável é igual a determinado valor, não precisamos fazer um monte de IFs e ELSEs, usamos SWITCH.

O comando SWITCH funciona em conjunto com outras instruções que precisamos conhecer. São elas:

  • CASE -> faz a comparação, substituindo os IFs e ELSEs
  • BREAK -> interrompe a execução do SWITCH
  • DEFAULT -> bloco de comandos padrão, caso nenhum dos testes retorne TRUE

Vamos tentar 'traduzir' para uma linguagem humana o funcionamento do SWITCH exemplificado abaixo: "vamos testar o valor de $a: caso seja 1, execute os comandos a partir daqui, até encontrar uma instrução BREAK ou o fim do comando SWITCH. Caso seja 2 ... idem, ... até 4"

 

<?php 
// instrução SWITCH
$a = 3;

 // com IF e ELSE
 if($a == 1) { print '$a é igual a 1'; }
 else if($a == 2) { print '$a é igual a 2'; } # em PHP tanto faz, 'else if'  
 elseif($a == 3) { print '$a é igual a 3'; }  # e 'elseif' funcionam da mesma forma
 elseif($a == 4) { print '$a é igual a 4'; } 
 else { print '$a não está no intervalo 1-4'; }

 // com SWITCH
 switch($a) {
case 1: print '$a é igual a 1'; break;
case 2: print '$a é igual a 2'; break;
case 3: print '$a é igual a 3'; break;
case 4: print '$a é igual a 4'; break;
default: print '$a não está no intervalo 1-4';
 }  
?>

 

Há alguns detalhes importantes para se usar o SWITCH da melhor forma.

  • SWITCH só se aplica a testes de igualdade entre os tipos: integer, float e string.
  • na falta da instrução BREAK, a instrução do próximo CASE será executada também, mas ao contrário do que parece, isso não é uma limitação pois permite usar um único bloco de comandos para vários testes.
  • a instrução DEFAULT deve ser a última, posto que aceitará qualquer valor. Esta instrução não é exigida.

<?php
 // SWITCH
 switch($a) {
case 1: case 2: case 3: 
  print '$a é igual a 1, 2 ou 3'; 
break;
default: print '$a não é 1, 2 nem 3';
 }  

 // com IF, equivale a
 if($a == 1) { print '$a é igual a 1, 2 ou 3'; }
 elseif($a == 2) { print '$a é igual a 1, 2 ou 3'; }
 elseif($a == 3) { print '$a é igual a 1, 2 ou 3'; }
 else { print '$a não é 1, 2 nem 3'; }

 // ou se usarmos o IF com o operador lógico OR
 if($a == 3 or $a == 2 or $a == 3) { 
 print '$a é igual a 1, 2 ou 3'; 
 } else { 
 print '$a não é 1, 2 nem 3'; 
 }

/* atenção: o OR lógico não se aplica ao SWITCH */
?>

 

 

Por enquanto é só, para inovar eu lhes dou a escolha de que conteúdo querem para a próxima aula, eis as opções

  • Manipulação de formulários
  • Aprendendo a lidar com MySQL no PHP(1)

Vocês têm a voz agora, votem agora mesmo!

 

 

Aulas com Nostradamus de PHP

Usem: 29295053xt0.png

Aula 1

 

Recomendo a leitura também de lógica de programação.

Editado por Nostradamus
Link para o comentário
Compartilhar em outros sites

Ótimo, aulas assim são bem melhores de aprender que as

dos sites que é uma apostila no ctrl + c e ctrl + v.

 

Vou continuar acompanhando suas aulas.

 

*Sky

 

Leia o tópico que irá compreender.

 

Kardec.

Editado por Kardec
Link para o comentário
Compartilhar em outros sites

bem legal as aulas

ensina muita coisa

parabens nostradamus

 

só falta aqueles erros que eu te falei no msn, mas acho que você ta away e vou falar aqui =p

nd (E) (Verdadeiro se as duas expressões são verdadeiras.)
seria "and"? xD
elseif ($variavel = 1) {

echo "a variável não é nem 0 nem 1, que chato.";

}

humm... Editado por ZeZiNhOxD
Link para o comentário
Compartilhar em outros sites

Eu estava com dificuldades em Operadores. Dei uma procurada no Google, achei um super-tutorial, explicando sobre os Operadores, mais concerteza isso vai me ajudar mais ainda. A leitura de lógica de programação é essencial, é apartir dela que nasce um programador.

 

 

//Raphael Lion

 

Ops...

 

Eu escolho, aprender á lidar com MySQL no PHP.

Editado por Raphael Lion
Link para o comentário
Compartilhar em outros sites

  • 1 year later...

No operador ternario nao esta faltando nada?

 

// com o ternário

$tipo = ($numero > 0) ? 'positivo

 

//Nao seria

$tipo = ($numero >0) ? 'positivo' : 'negativo'

 

// e falta terminar tambem rs :p

?>

??

 

 

Hennet, :)

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
×
×
  • Criar Novo...