quinta-feira, 31 de março de 2011

Ciclos: While e FOR

Até agora temos visto como utilizamos alguns comandos simples. Mas, diversas vezes, ao logo da programação de uma aplicação web, temos de repetir as mesmas funções diversas vezes. Por exemplo, quando dei o exemplo da lista de compras do Ze e da Maria, essa lista tinha 4 produtos. Esses 4 produtos fora escritos utilizando 4 linhas com o comando "echo". Agora imaginamos uma lista de compras com 100 produtos, e temos uma dor de cabeça! ;)
Nestes casos, não se pensa duas vezes, e pegamos num dos ciclos que podemos implementar: o While ou o FOR.
Estes dois ciclos são muito idênticos, visto que se pode sempre converter um ciclo WHILE, num ciclo FOR, e vice versa. A decisão de utilizar um ou outro, é apenas tomada pela pessoa que os implementa, e tem a ver com a
simplicidade com que depois consegue interpretar um ou outro. Existem situações onde um WHILE aplica-se com mais facilidade, outras em que um FOR arrasa com tudo. =) Ambos serão explicados separadamente.
While!
Quer dizer "Enquanto". A sua sintaxe é a seguinte:
while(condição)
{
//bloco de código
}
Ou seja, enquanto a condição se verificar, executa determinado código.
Exemplo de um ciclo WHILE:
<?
$numero=1;
while ($numero<=10)
{
echo "Número: $numero <br>";
$numero++;
}
?>
Este código inicia a variável $numero com o valor 1. Seguidamente entra dentro de um ciclo WHILE, que executa um bloco de código, enquanto a variável $numero for inferior ou igual a 10. No bloco, temos um output que nos vai indicar qual o valor da variável, e logo a seguir, temos o incremento de uma unidade da variável $numero. O resultado da execução do script é a seguinte:
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5
Número: 6
Número: 7
Número: 8
Número: 9
Número: 10
Enquanto a condição tiver o valor VERDADEIRO, o bloco de código do While é executado.
FOR
O ciclo for, tem uma particularidade em relação ao WHILE. Enquanto um While a variável de contagem, e a instrução de incremento, quando existem, são declaradas em pontos diferentes do código, o ciclo FOR junta essas
declarações no mesmo local onde define a condição. Sintaxe de um FOR:
for (declaração de variáveis; condição de execução; incrementos de variáveis)
{
//bloco de código a executar
}
Na primeira zona declaramos as variáveis (normalmente os contadores ou índices); na segunda zona indicamos as condições de execução do ciclo for: enquanto essas condições tiverem o valor VERDADEIRO, o ciclo é realizado; na
3 zona, é onde vamos indicar os incrementos das variáveis/contadores.
Utilizando o exemplo do WHILE, vamos construir um FOR:
<?
for ($numero=1; $numero<=10; $numero++)
{
echo "Número: $numero <br>";
}
?>
O resultado deste ciclo é exactamente igual ao do WHILE. Neste tipo de ciclo, onde iniciamos uma variável, e incrementamos essa mesma variável para control do ciclo, o FOR tem vantagem na sua implementação.

O Switch

Já vimos como podemos usar o IF..else para criar-mos escolhas entre blocos de códigos a executar. E vimos também, como múltiplos IF's podem ser encadeados, para podermos atingir diversas situações. Um dos exemplos utilizados foi:
If ($dia=="Sábado") echo "Fico em casa";
else if ($dia=="Domingo") echo "Vou passear";
else echo "É dia da semana, vai trabalhar!!!";
è um exemplo simples, onde o IF..else resolve bem o problema. Mas, o caso muda de figura, se tivermos de considerar enumeras hipóteses. Utilizar muitos "If..else if.. else if... else" torna-se impraticável, e muito confuso de ser perceber. è nesta altura que entra o Switch. O swich é uma função que valida uma variável do tipo caracter, inteira, real ou string.
Consoante determinada validação (ou opção considerada válida) é-nos permitido executar determinado bloco de código para esse "caso/estado" da variável.
Pegando no exemplo anterior, e utilizando o Switch, temos o seguinte exemplo:
<?
switch($dia)
{
case "Sábado": echo "Fico em casa"; break;
case "Domingo": echo "Vou passear"; break;
default: echo "É dia da semana, vai trabalhar!!!";
}
?>
Vou explicar passo a passo. Primeiro, indicamos à função switch() qual a variável estamos a testar: neste caso a variável $dia. Depois abrimos um bloco de código desta função, onde declaramos os casos ou estados da variável Cada caso é indicado com a sigla "case" seguido do seu valor Os ":" indicam que o código que se segue é pertencente ao caso anteriormente declarado. E no fim de cada case, terminamos o bloco com um "break" para que mais nada seja executado do Switch. Por fim, podemos especificar um caso "default", para a ocasião de nenhum dos "cases" anteriores, seja o estado pretendido.
Seguindo a lógica do script temos a seguinte interpretação:
1- Indicação de que vamos validar a variável $dia
2- Caso $dia="Sábado", escreve "Fico em casa"; Termina o switch;
3- Caso $dia="Domingo", escreve "Vou passear"; Termina o switch;
4- Caso default, escreve "É dia da semana, vai trabalhar!!!";
NOTA: O Default é sempre executado, sempre que nenhum dos "case" anteriormente declarados, seja o estado da variável que estamos a testar.

Uma forma de facilitar múltiplas opções que utilizam o mesmo código, em vez de estar a repetir o código para cada opção comum utilizamos a seguinte implementação do switch:
<?
switch($dia)
{
case "Sábado":
case "Domingo": echo "Estamos no Fim de Semana"; break;

default: echo "Estamos num dos dias da semana!";
}
?>
Assim, caso o $dia seja "Sábado" ou "Domingo", ambos executarão o mesmo código. Caso $dia seja outro valor qualquer, utiliza a opção default.

Condição If... else

A condição "if expressão instrução" serve para validar uma condição, e mediante o resultado, executar o código correspondente. Esta condiçãoé utilizada nas mais diversas situações na programação, bem como no nosso dia
a dia. Exemplo:
if "tenho dinheiro" "Vou ao Cinema"
A instrução Else serve para executar um pedaço de código, caso a condição seja Falsa:
if "não está a chover" "vou a praia" else "Fico em casa"
Para delimitar um bloco de instruções em PHP, utilizamos as chavetas. "{"marca o inicio do bloco, e o "}" o fim do mesmo. Utilizamos blocos de instruções para indicar o código que queremos correr, num determinado
momento. Exemplo:
if "for ao hiper-mercado"
{
"Compra pão";
"Compra bebidas";
"Compra frutas";
}
else
{
"Vou ao cinema";
"Vou ver as montras";
}
Múltiplos IFs podem ser encadeados. Exemplo:
If "Dia=Sábado" "Fico em casa";
else if "Dia=Domingo" "Vou passear";
else "É dia da semana, vai trabalhar!!!";
Exemplos de expressões para validar as condições:
$a == $b Verdadeiro se $a é igual a $b.
$a != $b Verdadeiro se $a diferente de $b.
$a < $b Verdadeiro se $a menor que $b.
$a > $b Verdadeiro se $a maior que $b.
$a <= $b Verdadeiro se $a menor ou igual a $b.
$a >= $b Verdadeiro se $a maior ou igual a $b.
Podemos ainda utilizar operadores lógicos para optimizar as condições, consoante as nossas necessidades:
$a and $b - And - Verdadeiro se ambos $a e $b forem verdadeiros.
$a or $b - Or - Verdadeiro se $a ou $b forem verdadeiros.
$a xor $b - Or - Verdadeiro se $a ou $b forem verdadeiros, mas não os dois.
! $a - Not - Verdadeiro se $a for falso.
$a && $b - And - Verdadeiro se $a e $b forem verdadeiros.
$a || $b - Or - Verdadeiro se $a ou $b forem verdadeiros.
Exemplo:
if (($dinheiro > 5000) and !($pais_em_casa)) echo "Vou para a Borga!!";
else {
echo "Tenho de ficar em casa.. <br>";
echo "Mas vou para a Net!!!";
}
Traduzindo: Se tivermos mais de 5000$ e se os pais não estiverem em casa, podemos ir para a borga. Senão, temos de ficar em casa, e claro está, ir para a net!

Os Arrays

Os arrays podem ser vistos como uma forma de lista indexada de variáveis (array unidimensional), ou como uma tabela (array bidimensional), e podem conter qualquer tipo de dados (caractere, inteiro, decimal, string). Este tipo de estrutura de dados, é bastante funcional, quando estamos a tratar informação relacionada. Por exemplo: imaginemos que estamos a fazer uma lista de compras, e nessa lista queremos produtos tal com couves, batatas, laranjas, maçãs, e pêras. Sem usar arrays, teríamos de ter qualquer coisa do tipo:
$produto1="Batatas";
$produto2="Laranjas";
$produto3="Maças";
$produto4="Pêras";
Se quisemos saber quantos produtos temos, teríamos de verificar se a variável $produtoX tem, ou não, um valor. Com arrays é diferente!. Ao invés de ter as variáveis a parte, temos uma "lista" de elementos. Exemplo da
lista de produtos com array:
$produto[0]="Batatas";
$produto[1]="Laranjas";
$produto[2]="Maçãs";
$produto[3]="Pêras";
Outra forma de criar um array, é usado a função"array()" do php:
$produto=array("Batatas","Laranjas","Maçãs","Pêras");

Pode parecer que não mudou muito, ou até que é mais complicado por levar os parênteses rectos, mas na verdade, este tipo de estrutura de dados, é muito mais vantajosa. Ao invés de termos varias variáveis, temos uma lista de elementos, dentro do array $produto: Assim, o elemento 0 ($produto[0]) do array $produto tem o mesmo valor que tinha a variável $produto1; o elemento 1 ($produto[1]) tem o mesmo valor que tinha a variável $produto2; e assim sucessivamente.
Isto é bastante útil, porque a qualquer momento, eu posso perguntar:
"Quantos elementos tem o array $produto?" e automaticamente obtenho o numero de produtos da minha lista de compras.
Os arrays podem ser indexados por um numero inteiro, ou uma palavra associada:
$numero[0]=1;
$idade["Dragon"]=22;
Se utilizarmos arrays bi-dimensionais, podemos construir uma tabela. Exemplo:
Construir uma lista de compras para o Ze e para a Maria:
$produto["Ze"][0]="Batatas";
$produto["Ze"][1]="Laranjas";
$produto["Ze"][2]="Maças";
$produto["Ze"][3]="Pêras";
$produto["Maria"][0]="Chocolates";
$produto["Maria"][1]="Doces";

Variáveis

As variáveis são bocados de memória que armazenam informação. Esta informação pode variar ao longo de um script PHP, de modo a servir as nossas necessidades.
Tipos de variáveis mais utilizadas:
Caractere 'a', 'b', 'Z'
Inteiro 0, 1, 2
String "PHP É Fixe!"
Real/Flutuante 15.5
Todas as variáveis em PHP começam pelo caracter $ (dolar) seguido de um nome. Esse nome tem de começar _sempre_ por uma letra, e nunca por um numero, ou "_" , embora estes possam estar após o primeiro caracter da
letra do nome.
Nota: todos os caracteres a excepção do "_" não podem ser utilizados como nome de variável.
Exemplos de nomes de variáveis:
$nome
$top10
$valor_do_premio
$valor_do_2_premio
Recomendo que utilizes sempre variáveis S-U-G-E-S-T-I-V-A-S !!! Quero dizer com isto que o nome da variável deve corresponder ao seu conteúdo, e quando se lê o nome da variável, saiba-se do que se esta a falar. Exemplos de
variáveis sugestivas:
$nome
Para o nome de uma pessoa
$idade
Para a idade de uma pessoa
$total_de_peras
Numero total de pêras
Exemplos de variáveis não sugestivas:
$xpto
$bla
$t1
$l
etc..
Para se dar um valor a uma variável., escreve-se o nome da variável., seguido de '=' (o igual é o símbolo de atribuição) seguido do valor pretendido.

Exemplos:
$numero=10; //Atribui à variável $numero o valor 10;
$nick="[Dragon]"; //Atribui à variável $nick a string "[Dragon]";
$símbolo='!'; //Atribui à variável. $símbolo o valor '!';
$soma=$numero+20;
//soma 20 a variável. $numero e guarda o valor em $soma
//$soma passa a ter o valor 30
$soma++; // Igual a $soma=$soma+1; (o inverso se passa com $soma--)
// $soma fica com 31
$soma+=30; // Igual a $soma=$soma+30;
// $soma passa a ter o valor 61
$assinatura="Vasco Pinheiro aka " . $nick;
// concatena as duas strings na string $assinarura
// $assinatura passa a ter a string "Vasco Pinheiro aka [Dragon]"
$assinatura.=$Símbolo; //igual a $assinatura=$assinatura . $símbolo;
// $assinatura passa a ter a string "Vasco Pinheiro aka [Dragon]!"
Nota: Quando uma variável.é string, o seu valor é atribuída sempre entre
aspas. Quando uma variável é achar, o seu valor é atribuído sempre entre
plicas.
Vamos ao nosso 2 exemplo:
<html>
<body>
Exemplo de utilização de variáveis: <br><br>
<?
$inteiro=10;
$real=20.0; /* O "." aqui é usado para separa a parte inteira da decimal.
Não confundir com o "." de concatenação de strings */

$caracter='V';
?>
A variável. $inteiro tem o valor <? echo $inteiro ?>. <br>
A variável. $real tem o valor <? echo $real ?>. <br>
O caracter escolhido é o <? echo $caracter ?>. <br>
</body>
</html>
Acedemos a página e temos o seguinte resultado:
Exemplo de utilização de variáveis:
A variável. $inteiro tem o valor 10.
A variável. $real tem o valor 20.0.
O caracter escolhido é o V.
Nota que o primeiro conjunto de instruções PHP não enviam qualquer output para a página, logo no código HTML que vai para o cliente, nem se dá por ele existir!

Introdução ao PHP

1. O que é o PhP? 
 
O PHP é uma linguagem de Scripting. Tem este nome porque o código PHP é interpretado e não compilado. Isto quer dizer que, ao invés de outras < linguagens como o C, que o seu código é compilado, e depois executado como um programa normal, o PHP necessita sempre de um "parser" para interpretar o seu código.

2. Para que serve?

A função principal do PHP (e a melhor, visto ter sido para esta função que esta linguagem foi implementada) é a de desenvolvimento de conteúdos web. Ou seja, utiliza-se PHP para criar páginas dinâmicas e automáticas.

3. Em que consiste uma página dinâmica?

Entende-se por uma página dinâmica, toda a página que é gerada quando existe um pedido no servidor. Ou seja, a página que chega ao utilizador não existe "escrita" no servidor. Existem sim os conteúdos, que serão depois colocados nos respectivos locais, na página, consoante os pedidos. O melhor exemplo de um site dinâmico, é um motor de pesquisa. É impossível (e impensável) armazenar todas as combinações de páginas que surgem, quando fazemos diversas pesquisas. Quer isto dizer, que as paginas não existem e são "geradas" com informações que estão em bases de dados, quando fazemos um pedido sobre qualquer coisa.

4. Então como funciona o PHP para automatizar uma página?


É muito simples se pensar-mos neste modo: Tudo o que sai do código PHP (output), é HTML. Logo é fundamental ter conhecimentos de HTML para se saber como fazer o que pretendemos. Num simples esquema, podemos ter qualquer

coisa do tipo:
PHP -> Servidor Web -> Interpretador -> HTML -> Utilizador <br><br>