terça-feira, 14 de agosto de 2007

Lista de Exercícios Nº 1

Resolva os exercícios abaixo. No próximo post estaremos colocando as respostas destes exercícios.

Exercício 1

Modifique o exemplo 1 do post sobre estruturas de repetição para que o conteúdo gerado pela página fique fora do bloco PHP intercalando as estruturas de controle do exemplo.


Exercício 2

Crie um script usando laço FOR e WHILE que escreva um mesmo texto em cada linha com tamanhos de fonte diferentes. Para isso tome como base a seguinte tag HTML <font size=”x”> Texto </font>, onde x varia de 1 a 7


Exercício 3

Considere duas variáveis, $linha e $coluna, no início de um script, inicializadas pelo programador com quaisquer valores. Crie um script que crie uma tabela HTML de $linha linhas e $coluna colunas e dentro de cada célula informe as coordenadas da mesma.

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.

segunda-feira, 6 de agosto de 2007

Estruturas de Controle - Parte I - Estruturas de Decisão

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

Exemplo 1 - Estruturas de Decisão IF/ELSE
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_decisao" 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_decisao\exemplo1.php".

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

Bem, agora vamos ao que importa saber deste exemplo. A estrutura de decisão IF/ELSE é uma estrutura simples que, de acordo com uma condição, executa um ou outro bloco de comandos. Algumas particularidades precisam ser respeitadas no que diz respeito a essa estrutura. O uso de parenteses, por exemplo, é obrigatório. Cada bloco, considerando tanto IF quanto ELSE, deverão usar chaves para agrupar os comandos. A única maneira de não usar chaves em um dos blocos é ter um comando apenas a ser executado após a decisão de qual bloco seguir.

Neste exemplo, temos a variável $idade. De acordo com o valor dela, podemos já perceber um certo dinamismo na página, ou seja, conteúdos diferentes sendo escritos pela mesma página. Altere o valor da variável $idade de tal forma que as duas possibilidades de escrita sejam executadas. Como ainda não aprendemos a entrar dados para scripts PHP, essa é a melhor solução.

Neste exemplo, também mostramos duas formas de se executar um IF/ELSE em PHP. Uma seria a forma tradicional (iniciada na linha 4) e a outra é a forma em que podemos embutir no HTML (linha 14). Esta última forma permite que o programador abra um IF em um bloco PHP e termine em um bloco posterior, o mesmo valendo para o ELSE. Isto permite que entre estes blocos o programador coloque código HTML de forma mais tradicional, sem ter que usar o comando "echo" do PHP.


Exemplo 2 - Estrutura de Decisão SWITCH e IF/ELSEIF/ELSE

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_decisao" 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_decisao\exemplo2.php".

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

Neste exemplo, vamos introduzir duas novas estruturas de decisão: O SWITCH e uma variação do IF/ELSE, o IF/ELSEIF/ELSE. Estas estruturas tem como objetivo avaliar e decidir entre várias possibilidades e não apenas duas como no caso do IF/ELSE.

A estrutura SWITCH (linha 5) serve para avaliar o valor de uma expressão. Em nosso exemplo, ele avalia o valor da variável $estacao. A expressão deverá sempre ser acompanhada do uso de parenteses. O uso de chaves também é obrigatório. A estrutura SWITCH é compostas de CASEs. Cada CASE é responsável por uma possibilidade. Os comando então são executados até que um BREAK seja encontrado. Por opção do programador, também pode ser colocado, caso nem um CASE seja executado, um DEFAULT (linha 18), que será executado sempre que nem um dos cases seja satisfeito. Esta estrutura não é obrigatória.

Já a estrutura IF/ELSEIF/ELSE nos permite várias possibilidades também. A diferença é que a estrutura IF/ELSEIF/ELSE avaliam também outros tipos de expressões, usando outros operadores, como >, <, !=, %, etc. Já o SWITCH apenas se utiliza da igualdade. No nosso exemplo, as duas estruturas (SWITCH e IF/ELSEIF/ELSE) resolvem o mesmo problema. TOda estrutura SWITCH pode ser convertida em IF/ELSEIF/ELSE mas o contrário NEM SEMPRE acontece. O IF e ELSEIF funcionam como se fossem um CASE, sendo que o ELSE funciona como um DEFAULT, fazendo uma analogia entre as duas estruturas.

Para saber mais sobre expressões em PHP, acesse o assunto no manual do PHP.

Para saber mais sobre operadores em PHP, acesse o assunto no manual do PHP.

Existem outras estruturas de decisã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 falaremos sobre as estruturas de controle em PHP.

quarta-feira, 1 de agosto de 2007

Tipos de Dados

Neste post, irei falar um pouco sobre tipagem de dados em PHP, de forma que o leitor possa ter uma visão geral de como funciona na linguagem.

Exemplo 1 - Tipos de Dados Básicos
Comentários:

Levando em consideração a instalação feita a partir do segundo post deste Blog, vamos criar uma pasta com o nome "tipo_dados" 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\tipo_dados\exemplo1.php".

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

Bem, agora vamos ao que importa saber deste exemplo. Primeiro, no PHP, não há necessidade de se declarar variável. O tipagem é feita em tempo de execução. Além disso, por ser uma linguagem fracamente tipada, não há a necessidade de conversão entre os tipos de dados nas operações que são feitas ao longo de seu programa. Podemos, por exemplo, somar uma string com um número inteiro e o resultado poderá ser um booleano.

De início, isso pode assustar um pouco. Mas o que acontece é que o interpretador PHP verifica a operação e faz as conversões de forma automática. Isso quer dizer que se estivermos somando duas variáveis, elas necessariamente devem ser de um tipo númerico. Portanto, antes de executar a operação, o PHP transforma estas variáveis para o tipo númerico.

De posse desta informação, algumas transformações devem ser percebidas pelo programador. Por exemplo, algumas regras para transformação de variáveis para o tipo booleano são consideradas no PHP. O inteiro 0(zero), o Float (0.0), string vazia ("") ou a string "0", são automaticamente reconhecidas como false. Outras valores são encarados como true.

Por padrão, o PHP possui 4 tipos básicos de acordo com nosso exemplo: String, Inteiro, Flutuante e Booleano. Existem outros tipo básicos que comentaremos ao longo dos post mais avançados do Blog. Mas para inicio de conversa isso basta.

Outra dica: às vezes abrimos o código PHP simplesmente para imprimir o conteúdo de uma variável. Quando isto ocorrer, podemos usar a seguinte tag"<?= ?>". Este sinal de igual (que deve ser colado na interrogação) serve para imprimir o valor de uma expressão apenas. Ou seja, caso seja necessário imprimir uma variável ou expressão, podemos usar este tipo de abordagem.

Vamos aos poucos também comentando sobre o HTML e suas tags. No exemplo acima, temos uma tabela com borda 1. A tag <TABLE> permite a criação de uma tabela. A tag <TR> cria uma linha dentro da tabela. <TH> e <TD> criam colunas sendo que <TH> é uma coluna de cabeçalho e <TD> uma coluna normal.


Exemplo 2 - Tipos de Dados Vetor

Comentários:

Levando em consideração a instalação feita a partir do segundo post deste Blog, vamos criar uma pasta com o nome "sintaxe_basica" 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\tipo_dados\exemplo2.php".

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

Neste exemplo, vamos perceber como é simples trabalhar com vetores em PHP. Vetores nada mais são do que estruturas hash (chave, valor). Não há a necessidade de se criar vetores ordenados nem iniciando de algum valor, como o ZERO por exemplo. A ordem de criação dos elementos do vetor é a tomada como base para identificar a ordem dos elementos.

O vetor acima possui 5 elementos. Este exemplo mostra as duas maneiras que temos de se criar vetor. A primeira é atribuindo a uma variável indexada um valor (linha 3). A partir deste momento, já se tem um vetor criado em memória cujo índice é 10 e valor "Curso PHP". A pergunta é: ao se criar este primeiro elemento, quantos elementos tem o meu vetor? Muita gente poderia imaginar a resposta como sendo 11, considerando o início do vetor do zero, sendo que apenas o vetor de índice 10 estaria preenchido. Mas não! Como dito anteriormente, estruturas de vetor não seguem uma ordem pré-definida. A ordem de criação é que conta. Portanto, considerando apenas a linha 3, o vetor tem apenas 1 elemento.

Isso vale até a finalização do vetor. O segundo elemento criado (linha 4 ), possui como índice o número 4. Porém, o primeiro elemento do vetor continua sendo o de índice 10, mesmo que este índice seja superior ao índice 4. Batemos mais uma vez nesta tecla: a ordem de criação é a ordem interna do vetor.

Outra informação útil de se saber, é que os índices de um vetor não precisam ser necessariamente numéricos (linha 5). Eles podem variar, dentro de um mesmo vetor, entre números e strings nas chaves. Vale ressaltar que não há um número associado ao índice no formato String. No caso da linha 5, o índice é "altura" e pronto.

Outra dica é quando criamos um vetor sem especificar o índice do mesmo (linha 6). Um índice numérico é criado automaticamente. A regra para criação do índice é a seguinte: último número inteiro já criado anteriormente mais 1. Caso não tenha sido criado nenhum índice numérico anteriormente, o índice ZERO é atribuído ao elemento do vetor. Em nosso exemplo, qual seria o índice do elemento da linha 6? A resposta é 5.

A segunda maneira de se criar um vetor é usando o construtor de linguagem (language constructor) "array". Nele você coloca o indice e valor, separados por vírgula. A associação entre índice e valor é feito pelo operador "=>". Caso não se coloque o operador, estaremos criando o elemento apenas e o índice é dinâmico seguindo a regra mencionada anteriormente.

Por fim, usamos a função print_r para imprimir na tela todo o conteúdo do vetor, incluindo seus índices. Função boa para depurar o par índice/valor de um vetor.

 

Para saber mais sobre Tipos de Dados, acesse o manual do PHP.

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

No próximo post falaremos sobre as estruturas de controle em PHP.