quinta-feira, 9 de agosto de 2007

Estruturas de Controle - Parte II - Estruturas de Repetição

Neste post, irei falar um pouco sobre as estruturas de controle usadas para repetição e o uso delas quando embutidas no HTML.

Exemplo 1 - Estruturas de Repetição WHILE/FOR
Comentários:

Levando em consideração a instalação feita a partir do segundo post deste Blog, vamos criar uma pasta com o nome "estrutura_repeticao" dentro do diretório c:\webroot. Dentro desta pasta salvamos este primeiro exemplo, com o nome "exemplo1.php". Desta forma, o caminho completo do arquivo é "c:\webroot\estrutura_repeticao\exemplo1.php".

Para acessar o arquivo através de um navegador, digite no mesmo a seguinte URL: http://localhost/estrutura_repeticao/exemplo1.php .

Bem, agora vamos ao que importa saber deste exemplo. A estrutura segue as mesmas regras estabelecidades, sintaticamente falando, para a estrutura de decião IF/ELSE. Com isso, caso haja apenas um comando a ser executado, tanto o FOR, quanto o WHILE, não necessitam do uso de chaves. Caso haja mais de um comando, o uso de chaves é obrigatório.

Da mesma forma que nas estruturas IF/ELSE também, pode-se fazer com que as estruturas deste exemplo sejam abertas num bloco PHP e fechados em outro. Isto permite fazer com que o bloco repita um mesmo trecho em HTML localizado entre os blocos do comando correspondente. No próximo post, estarei colocando um exercício a respeito.

O comando FOR necessita, em sua estrutura, de 3 argumentos (linha 4) separados por ";". Respectivamente, estes argumentos representam a situação inicial da variável a ser testada, a condição de repetição e uma operação a ser usada para o incremento.

Já o comando WHILE, em sua estrutura, necessita apenas de um argumento (linha 12). Este argumento corresponde ao segundo argumento do FOR, ou seja, corresponde à condição de repetição. Em geral, o programador deve controlar os outros dois argumentos não presentes nesta estrutura fora da estrutura WHILE. Em geral, a situação inicial da variável vem logo acima da estrutura WHILE (linha 11) e a operação de incremento vem dentro do bloco WHILE, como um dos últimos comandos (linha 15).

O interessante também é saber o uso dos comandos "break" e "continue", muito utilizados dentro de estruturas de repetição. Esses comandos, inclusive, podem ser utilizados dentro de qualquer estrutura de repetição.

O comando "continue", se executado, automaticamente passa o controle para a próxima repetição, sem executar qualquer trecho de código abaixo dele no laço correspondente. Já o comando "break", se executado, interrompe toda a execução e passa o controle pro código logo abaixo da estrutura que o chamou.

O exemplo acima imprime na tela repetições de 0 a 9. O que acontece se tiramos os comentários das linhas 5 e 13? No post de resposta dos exercícios, iremos colocar os comentários.


Exemplo 2 - Estrutura de Repetição FOREACH

Comentários:

Levando em consideração a instalação feita a partir do segundo post deste Blog, vamos criar uma pasta com o nome "estrutura_repeticao" dentro do diretório c:\webroot. Dentro desta pasta salvamos este exemplo, com o nome "exemplo2.php". Desta forma, o caminho completo do arquivo é "c:\webroot\estrutura_repeticao\exemplo2.php".

Para acessar o arquivo através de um navegador, digite no mesmo a seguinte URL: http://localhost/estrutura_repeticao/exemplo2.php .

Neste exemplo, usaremos a estrutura de repetição FOREACH. Esta estrutura é utilizada para leitura de elementos de um vetor. Como no PHP os vetores não são necessariamente ordenados, não podemos "varrê-los" com estruturas FOR ou WHILE, somente em caso de serem ordenados.

O código acima mostra as duas maneiras de utilização da estrutura. A primeira realiza a iteração buscando apenas os elementos do vetor (linha 9). Já o segundo exemplo disponibiliza não só os elementos a cada laço, mas também os índices (linha 15).

A estrutura FOREACH segue sintaticamente os mesmos aspectos mencionados nas estruturas de controle de exemplos anteriores. Ou seja, não obrigatoriedade de chaves com um comando e a possibilidade de se abrir a estrutura em um bloco PHP e fechá-la em outro bloco PHP, permitindo a inclusão de HTML entre estes blocos, bem como o uso de "continue" e "break".

No primeiro FOREACH, há a expressão dentro do parentese utilizada para recuperação apenas do elemento: primeiro colocamos o vetor a ser iterado (repetido) seguido da palavra "as" e de uma variável, cujo nome será de nossa responsabilidade. No exemplo, colocamos "$valor". Esta variável, a cada laço, terá como valor o elemento correspondente do vetor, até que se chegue no final do vetor e todos os elementos sejam processados.

No segundo FOREACH, recuperamos ainda o valor do índice. Para isso, após a palavra reservada "as", incluimos duas variáveis separadas pelo operador "=>" (linha 15). O nome de ambas é responsabilidade também do programador. A primeira representará no laço o índice e a segunda representará o valor do elemento correspondente ao índice. Desta forma, teremos uma "varredura" em todos os elementos do vetor, só que também tendo acesso ao índice do vetor.

Existem outras estruturas de repetição e formas de execução. Para saber mais sobre estruturas de controle em PHP, acesse o assunto no manual do PHP.

Para fazer o download dos arquivos deste post, clique aqui.

No próximo post sobre PHP, aprenderemos a trabalhar com formulários HTML, pois através deles que é feita a entrada de dados no PHP. Antes haverá um post com exercícios sobre o que vimos até o momento.

0 comentários: