[aula 2 - Condições E Operadores]

Nostradamus
em Programação Web

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

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.

[twitter]ThomazYuji[/twitter]

skynagerloas

Ex-Moderador
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 13/11/05Posts: 715Char no Tibia: Lord'Skyxt

Nostradamus, como eu queria saber 10% do que você sabe em programação.

A organização está boa, porem eu não entendo nada dos COD's.

Abraços.

Atenciosamente, Sky - Lord'Skyxt;

 

Antes de postar, leia isso:



Regras.

[Lord'SkyXT] [FloGão]

allankardec

A cura está ligada ao tempo e às vezes também às circunstâncias.
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 20/03/07Posts: 245

Ó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.

"...Salvem-me dos meus amigos"

- Qual foi a primeira academia de letras do Brasil?
Academia Cearense de Letras
- Quem foi o idealizador da ABL (Academia Brasileira de Letras)?
Machado de Assis? Claro que não, quem fez todo o trabalho foi Antonio Sales (cearense) e recusou o "premio" que era uma vaga na academia.
- Qual a maior escola do Brasil? E o os estudantes?
ITA, 60% dos estudantes são cearenses.
- Qual a comida preferia do ITA?
Baião de dois (prato típica cearense) e tem uma cachaça escondida também.

Aguardem... Em breve mais informações...

Por isso me orgulho de ser Cearense!



AREEEEEE EGUAAAAAA

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

@skynagerloas

 

Você pode, só basta força de vontade para começar as ler as aulas, pois se você não entende, basta começar a acompanhá-las.

[twitter]ThomazYuji[/twitter]

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

@ZeZiNhOxD

Obrigado por reportar, estarei consertando.

[twitter]ThomazYuji[/twitter]

ZeZiNhOxD

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 06/01/07Posts: 104

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...

Raphael Lion

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 07/02/07Posts: 162

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.




HeNnet

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 01/09/05Posts: 114Char no Tibia: Tiduji

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, :)

wizardwarriorvr8.jpg

HenneT

nostrafanso6.png

Drilling

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/12/08Posts: 19

Organização esta 100%, apenas você deveria mostrar mais exemplo, não apenas com palavras.

Você já visitou o tópico de regras do XTibia?
Ainda não? visite já clicando aqui!


Você terminou seu projeto, e quer nos mostrar?
Não espere mais tempo, clique aqui e nos mostre!


Trabalhando para um fórum melhor.
Quem sabe um dia ser recopensado!


guilhermes26

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 25/05/08Posts: 1432Char no Tibia: Akhumura

Uh!!!

Isso ai pros novatos é ótimo, não me admiro que você seja um Héroi no Xt