Nostradamus 6 Postado Maio 5, 2007 Share Postado Maio 5, 2007 (editado) 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: Aula 1 Recomendo a leitura também de lógica de programação. Editado Maio 5, 2007 por Nostradamus Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/ Compartilhar em outros sites More sharing options...
skynagerloas 1 Postado Maio 5, 2007 Share Postado Maio 5, 2007 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. Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-294736 Compartilhar em outros sites More sharing options...
allankardec 3 Postado Maio 5, 2007 Share Postado Maio 5, 2007 (editado) Ó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 Maio 5, 2007 por Kardec Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-294740 Compartilhar em outros sites More sharing options...
Nostradamus 6 Postado Maio 5, 2007 Autor Share Postado Maio 5, 2007 @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. Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-294742 Compartilhar em outros sites More sharing options...
Nostradamus 6 Postado Maio 5, 2007 Autor Share Postado Maio 5, 2007 @ZeZiNhOxD Obrigado por reportar, estarei consertando. Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-294756 Compartilhar em outros sites More sharing options...
ZeZiNhOxD 0 Postado Maio 5, 2007 Share Postado Maio 5, 2007 (editado) 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"? xDelseif ($variavel = 1) { echo "a variável não é nem 0 nem 1, que chato."; } humm... Editado Maio 5, 2007 por ZeZiNhOxD Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-294755 Compartilhar em outros sites More sharing options...
Raphael Lion 2 Postado Maio 5, 2007 Share Postado Maio 5, 2007 (editado) 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 Maio 5, 2007 por Raphael Lion Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-294764 Compartilhar em outros sites More sharing options...
HeNnet 3 Postado Novembro 9, 2008 Share Postado Novembro 9, 2008 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 ?> ?? Hennet, Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-637212 Compartilhar em outros sites More sharing options...
Drilling 0 Postado Dezembro 1, 2008 Share Postado Dezembro 1, 2008 Organização esta 100%, apenas você deveria mostrar mais exemplo, não apenas com palavras. Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-647538 Compartilhar em outros sites More sharing options...
guilhermes26 26 Postado Dezembro 1, 2008 Share Postado Dezembro 1, 2008 Uh!!! Isso ai pros novatos é ótimo, não me admiro que você seja um Héroi no Xt Link para o comentário https://xtibia.com/forum/topic/49372-aula-2-condi%C3%A7%C3%B5es-e-operadores/#findComment-647543 Compartilhar em outros sites More sharing options...
Posts Recomendados