Duração: 30 horas
(40 aulas de 45 min.)
Ano letivo 2019/2020
Professor : José Carlos
 Introdução à programação Web em PHP
 Scripting do lado do servidor e do lado do cliente
 Técnicas básicas de escrita de páginas dinâmicas
 Variáveis e estruturas de controlo de execução
2
 Um script é um programa constituído por um conjunto
de instruções, escritas numa determinada linguagem e
dirigidas para uma aplicação que as executa e
interpreta.
 O PHP é uma linguagem denominada de server-side,
enquanto que a linguagem JavaScript é chamada de
client-side.
 O Apache é um Servidor HTTP que fornece páginas
HTML ou ficheiros aos browsers Web. Estas podem ser
estáticas ou geradas por um interpretador (ex: PHP)
3
 Client-side (ex: JavaScript)
• O cliente desempenha a função de processamento.
• A função do servidor é somente fornecer os ficheiros
solicitados.
Cliente Servidor
Uma cópia do
documento HTML e com
possível código não
processado é enviada ao
cliente Contém o documento HTML
requisitado. Recebe a
solicitação feita pelo browser
O browser é responsável
por interpretar o possível
código JavaScript
4
 Server-side (ex: PHP)
• O servidor desempenha a função de processamento.
Cliente Servidor
Um programa interpreta o
script (por ex: PHP) e
substitui o código pelo
resultado na página HTML.
Uma cópia do
documento HTML e com
possível código já
processado é enviada ao
cliente
5
O browser “vê” uma página
comum, que foi criada
instantaneamente no servidor
 A linguagem PHP, surgiu com a designação - Personal
Home Pages (Rasmus Lerdorf-1995);
 Actualmente, PHP surge com o significado de
Hypertext Preprocessor;
 PHP é uma linguagem de programação de scripts para
serem interpretados no lado dos servidores;
 O PHP é “incorporado” em documentos HTML;
6
 O PHP permite a construção de páginas web com
conteúdos dinâmicos.
 O facto do PHP ser uma das linguagens do lado do
servidor mais utilizadas na web deve-
se essencialmente a:
 Ser uma tecnologia distribuída gratuitamente;
 Ter uma excelente capacidade de articulação com:
• Servidores Web – Apache;
• Sistemas de gestão de base de dados – MYSQL.
7
 Funções de correio electrónico - enviar um e-mail a
uma pessoa ou lista parametrizando vários aspectos (e-
mail de origem, assunto, pessoa a responder...).
Ex.: mail(), mb_send_mail, imap_mail
 Gestão de bases de dados - interfaces para o acesso à
maioria das bases de dados.
Ex.: mysql_create_db, mysql_ field_ len, mysql_
field_ table,…
8
 Gestão de ficheiros - criar, apagar, mover, modificar
ficheiros.
Ex.: zip_open, chdir, scandir, copy, file_exists, ...
 Tratamento de Imagens – é possível uniformizar o
tamanho e o formato das imagens recebidas num site.
Ex.: getimagesize, imagecopy, imagecreate,…
 Tratamento de cookies
Ex.: setcookie, http_build_cookie,…
9
 O servidor HTTP (ex: Apache) reconhece a extensão da página
PHP e, antes de enviá-la ao browser, vai encarregar-se de a enviar
ao interpretador PHP que vai interpretar e executar tudo aquilo
que se encontre dentro das tags <?php Código PHP ?>.
 O restante, vai enviá-lo tal qual, visto que assumirá que se trata de
código HTML compreensível para o browser.
10
 As tags que indicam os scripts de PHP podem ser:
 <?php comandos; ?>
 <script language="php"> comandos </script>
 <? comandos; ?>
 <% comandos; %>
É o mais utilizado
Estes formatos necessitam de
estar activados nas definições de
configuração do PHP.
11
 Uma instrução termina com ponto e vírgula (;);
 A instrução echo apresenta a informação no ecrã;
 Um bloco de instruções é incluído dentro de chavetas
{...};
 Comentários de uma linha inserem-se depois do sinal:
# ou //
 Comentários de várias linhas inserem-se entre os sinais:
/* e */
12
 O script de PHP é embutido no código HTML e o
ficheiro gravado com a extensão .php;
 O ficheiro é colocado na pasta c:xampphtdocs;
 Para executar o programa em PHP numa máquina local,
basta digitar o endereço:
• http://localhost/nomedoficheiro.php
Ou
• http://127.0.0.1/nomedoficheiro.php
13
 Função phpinfo()
Abre uma página de informação do PHP.
 Exemplo:
14
 Exemplo:
<html>
<head>
<title>Exemplo</title>
</head>
<body>
<?php
echo "Olá, isto é um script em PHP!";
?>
</body>
</html>
15
 Variável é uma forma de guardar informações que
pode variar no decorrer da execução do script;
 Os nomes das variáveis começam sempre com $;
 O PHP é case sensitive, isto é, distingue
maiúsculas de minúsculas;
letras
 Exemplo: As variáveis $nome, $Nome, $NOME
são diferentes;
16
 O PHP não necessita da definição explicita do tipo na
declaração de variáveis:
 O tipo de uma variável é determinado pelo contexto em
que esta é utilizada.
 Exemplo:
• $var = “olá”; // Variável do tipo String
• $var = 1; // Variável do tipo Inteiro
17
 O PHP suporta os seguintes tipos de dados:
• Boolean (verdadeiro ou falso)
• Integer
• Float (nº com vírgula flutuante, ou também double)
• String (conjunto de caracteres)
• Array
• Object (pode conter várias variáveis e funções)
• Null (correspondente a um valor nulo)
18
 Função gettype()
Indica o tipo de dados que cada variável
assume.
 Exemplo:
$x=5; echo gettype($x);
19
var_dump ($x);
 Exemplo da função gettype()
<?php
$b = ($x == 10) ;
echo gettype($b).'<br>' ;
$y = 6 ;
echo gettype($y).'<br>' ;
$z = 1.5 ;
echo gettype($z).'<br>' ;
$a = “Susete Esteves" ;
echo gettype($a).'<br>' ;
echo gettype($d).'<br>' ;
?>
20
 Por vezes poderá haver necessidade de declarar variáveis
que necessitem de existir durante todo o código (variáveis
globais) ou apenas em certos momentos do código (variáveis
locais). Chama-se a esta propriedade scope.
 Por defeito as variáveis são locais, pelo que não estão
acessíveis em todo o código.
 Por exemplo, uma variável definida dentro de uma função só
existe dentro dessa função e uma variável definida fora de
uma função só existirá fora dela.
21
 Exemplo 1:
<?php
$a=3;
function ver()
{
$b= $a+2;
echo $b;
}
ver(); //resulta o valor 2
echo “<br>”;
echo $a; //resulta o valor 3
echo “<br>”;
echo $b; // não imprime qualquer valor
?>
22
 Notas do Exemplo 1:
23
 O resultado deste exercício parece um pouco estranho. Se dentro
da função existe uma expressão $b=$a+2, deveria resultar $b=3+2,
logo o valor 5.
 Contudo, isso não se verifica, já que a variável $a não é global, não
existindo dentro da função, tomando assim o valor nulo em vez do
valor 3.
 Por outro lado, a variável $b só existe dentro da função, pelo que
fora dela toma o valor nulo não resultando qualquer impressão no
ecrã.
 Para ser possível obter o valor 5, resultado da expressão $b=$a+2, é
necessário declarar a variável $a como global.
 Exemplo 2:
<?php
$a=3;
function ver()
{
GLOBAL $a;
$b= $a+2;
echo $b;
}
ver(); //resulta o valor 5
echo “<br>”;
echo $a; //resulta o valor 3
echo “<br>”;
echo $b; // não imprime qualquer valor
?>
24
 Notas do Exemplo 2:
25
 Ao declararmos a variável $a como global dentro de uma função,
isto é, dentro de onde pretendemos aceder ao seu valor global,
conseguimos que ela tenha o valor anteriormente declarado que é 3.
 No caso da variável $b, que foi impressa fora da função, continua a
não ter valor, pois só existe dentro da função.
 As constantes funcionam de maneira semelhante
as
variáveis, só que o seu valor não pode ser alterado.
 Função define()
Permite definir constantes.
 Sintaxe:
define(CONSTANTE,valor)
 As constantes não utilizam o carácter $ nem podem ser redefinidas.
 Por convenção, as constantes definem-se por maiúsculas.
26
 Exemplos:
 define(TAXA,0.20);
<?php
define(“NOME”,“Susete Esteves”);
echo NOME;
?>
É definida a constante
TAXA com o valor 0.20
É definida
PROFESSORA: SUSETE ESTEVES 27
a constante
NOME com
Susete
Esteves
o valor
PROFESSORA: SUSETE ESTEVES 28
Aritméticos
Exemplo Nome Resultado
$a + $b Adição Soma de $a com $b
$a - $b Subtração Diferença entre $a e $b
$a * $b Multiplicação Produto de $a e $b
$a / $b Divisão Quociente de $a por $b
$a % $b Módulo Resto da divisão de $a por $b
PROFESSORA: SUSETE ESTEVES 29
Relacionais ou comparativos
Exemplo Nome Descrição
$a == $b Igual Verdadeiro (true) se $a é igual a $b
$a != $b Diferente Verdadeiro (true) se $a não é igual a $b
$a > $b Maior Verdadeiro se $a é maior que $b
$a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b
$a < $b Menor Verdadeiro se $a é menor que $b
$a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b
Incremento e decremento
PROFESSORA: SUSETE ESTEVES 30
Exemplo Nome Efeito
++ $a Pré-incremento Incrementa $a em um, e então retorna $a
-- $a Pré-decremento decrementa $a em um, e então retorna $a
$a ++ Pós-incremento Retorna $a, e então incrementa $a em um
$a -- Pós-decremento Retorna $a, e então decrementa $a em um
Lógicos
PROFESSORA: SUSETE ESTEVES 31
Exemplo Nome Resultado
$a && $b E - AND Verdadeiro se tanto $a quanto $b são verdadeiros
$a || $b OU - OR Verdadeiro se $a ou $b são verdadeiros
! $a NÃO - NOT Verdadeiro se $a não for verdadeiro
 Operador de junção de strings
 Exemplo:
• $nome = “Susete”;
• $sobrenome = “Esteves”;
• echo $nome.” ”.$sobrenome;
Insere um espaço
em branco
32
Operador Significado
. (ponto) Junção de strings
 As estruturas de controlo que vamos estudar em PhP são
idênticas às utilizadas em C, C++ e JS. Começamos pelas
estruturas de decisão if-else e switch-case.
 Estrutura de decisão if-else
(…)
if(condição)
{<bloco de instruções>;}
elseif (condição)
{<bloco de instruções>;}
else
{<bloco de instruções>;}
(…)
33
34
condições impostas.
 Como podemos verificar, a estrutura de controlo em PhP é
ligeiramente diferente da utilizada em JS, devido à condição
adicional elseif que lhe confere maior flexibilidade.
 A estrutura de decisão if-else é utilizada quando
pretendemos executar ações distintas dependendo das
 Exemplo: (if-else)
If ($x==0)
{echo “Número ” .$x;}
elseif ($x==1)
{echo “Número ” .$x;}
else
{echo “Número errado!” ;}
 Neste exemplo testa-se o valor da variável $x.
 No caso de ser 0 imprime no ecrã Número 0.
 No caso de ser 1 imprime no ecrã Número 1.
 Se $x for um valor diferente dos anteriores, a parte executada pelo
programa será else, imprimindo no ecrã Número errado.
35
 Estrutura de seleção switch-case
(…)
switch (expressão) {
case valor 1: <bloco de instruções>; break;
case valor 2: <bloco de instruções>; break;
case valor N: <bloco de instruções>; break;
default: <bloco de instruções>; }
(…)
 Esta estrutura pode ser utilizada nas mesmas circunstâncias da
anterior, embora seja mais indicada para situações onde existam
mais que duas opções. Desta forma, evitam-se encadeamentos
entre o ciclo if e o elseif, que geralmente tornam o código muito
confuso e com erros, quando mal estruturados.
36
 Exemplo: (switch-case)
switch ($x) {
case 25: echo “Idade=“ .$x; break;
case 29: echo “Idade=“ .$x; break;
case 30: echo “Idade=“ .$x; break;
case 34: echo “Idade=“ .$x; break;
default: echo “Idade não definida!”;
}
 Como verificamos no código, apesar de conter várias opções de
decisão, mantém-se percetível e bem estruturado. É de realçar
também a facilidade com que se acrescenta, se necessário, outras
opções a esta estrutura.
37
 Os ciclos servem para repetirmos um pedaço de código
um certo número de vezes.
 Ciclo for
(…)
for (inicialização; condição; incremento)
{
<bloco de instruções>;
}
(…)
38
 Exemplo: (for)
(…)
for ($i=1; $i<=16; $i++)
{
echo “Número” .$i.“<br>”;
}
(…)
 Neste exemplo, será executado um ciclo 16 vezes desde $i=1 até
$i=16 com incrementos de uma unidade $i++ por iteração.
 No final da execução do ciclo for serão impressos todos
os números de 1 a 16 precedidos da palavra Número.
 A impressão será realizada por linha visto existir o código HTML
<br> que força a passagem de linha por cada iteração.
39
 Ciclos while e do-while
 São idênticos ao ciclo for mas não têm contadores (incremento).
Apenas se repetem enquanto se verificar a condição.
 A grande diferença entre os ciclos while e do-while é que o
segundo executa sempre pelo menos uma vez o bloco de
instruções, já que a condição de paragem se situa no final e não no
início como no ciclo while.
(…)
while (condição)
{ <bloco de instruções>; }
(…)
(…)
do
{ <bloco de instruções>; }
while (condição);
(…)
40
 Exemplo: (while)
(…)
$i=1; // Necessário atribuir valor inicial à variável fora do ciclo
while ($i<=16)
{
echo “Número=“ .$i. “<br>” ;
41
$i++; /* Necessário incrementar valor da variável no final de cada
iteração */
}
(…)
 Exemplo: (do-while)
(…)
$i=1; // Necessário atribuir valor inicial à variável fora do ciclo
do {
echo “Número=“ .$i.“<br>” ;
42
$i++; /* Necessário incrementar valor da variável no final de cada
iteração */
}
while ($i<=16);
(…)
 Exemplos: (while e do-while)
43
 Como se pode verificar através destes ciclos é possível obter o
mesmo resultado que o apresentado com o ciclo for. Contudo,
neste caso temos necessidade de declarar a variável $i fora do
ciclo para a iniciarmos com o valor 1, que será o primeiro número a
imprimir.
 Dentro do ciclo somos de novo obrigados, após a instrução de
impressão, a incrementar o valor $i++ ou seria impresso
infinitamente o valor 1.
 Apesar de, neste caso, o exercício ser mais simples com o ciclo for
não quer dizer que apenas devemos usar este último.
 Deverá sempre analisar o seu código e escolher o que se ajustar
melhor ao problema.
 As funções em PhP são semelhantes às apresentadas em
JS.
44
São definidas pela palavra function podendo, receber
ou não parâmetros, bem como, retornar ou não valores.
 A estrutura de uma função apresenta-se da seguinte forma:
(…)
function nome_função($parâmetro1, $parâmetro2, …)
{
<bloco de instruções>; return
[$valor ou expressão];
}
(…)
 As funções permitem que os códigos fiquem mais percetíveis e
menos confusos.
 Além disso, deixa de haver necessidade de repetir um certo
pedaço de código ao longo do programa.
 Em vez de repetirmos o código substituímo-lo por uma função.
 O código pretendido fica dentro da função sendo esta chamada
sempre que necessário, ao programa.
45
 Exemplo 1: Função sem parâmetros
(…)
function alerta()
{
echo “Dados incorretos!”;
}
(…)
 Como já referimos os parâmetros não são obrigatórios.
 Quando uma função não utiliza parâmetros, o conteúdo dos
parênteses fica em branco. Ex: função alerta() anterior.
46
 Exemplo 2: Função que recebe parâmetros
(…)
function soma($valor1, $valor2)
{
$soma_val = $valor1 + $valor2;
return $soma_val;
}
(…)
 A função anterior recebe dois parâmetros, isto é, dois valores que
irá somar.
 O resultado dessa soma será guardado na variável $soma_val que
será retornado para o ponto do código onde a função foi chamada.
47
 Exemplo 1:
<?php
define (“A”, 3);
define (“NOME”, “Maria”);
function ver() {
$b= A+2;
echo $b;
}
ver(); //resulta o valor 5
echo “<br>”;
echo A; //imprime o valor 3
echo “<br>”;
echo NOME; // imprime Maria
?>
 Nota: Ao contrário das variáveis, as constantes estão definidas para
todo o código, não existindo o conceito de constantes globais e locais.
48
 A linguagem PhP é do tipo de programação orientada ao objeto.
Quer isto dizer que nesta linguagem existem um conjunto de
objetos que trocam mensagens entre si.
 Imagine um objeto de nome carro. Sabemos que este objeto é na
realidade a palavra que define um conjunto de 4 rodas, volante
assentos, motor, etc.. Contudo quando viajamos de carro não temos
de pensar em todos os seus componentes para o utilizar.
 Na programação o processo é o mesmo. Temos objetos constituídos
por vários atributos mas que se definem por uma só palavra
tornando-se mais simples para quem os usa.
49
 Os arrays em PhP são idênticos aos utilizados em C e C++. Um
array é um estrutura de dados que pode ser comparada a um
armário com gavetas “infinitas”. As gavetas simbolizam as posições
de um array.
 Em cada gaveta podemos colocar objetos diferentes. Por exemplo,
na primeira colocamos folhas, na segunda parafusos, na terceira
cabos de rede e assim por diante. Sempre que abrirmos uma
gaveta, apenas nos será mostrado o interior dessa gaveta.
 Com os arrays a história é a mesma. Podemos colocar números
inteiros na primeira posição do array, texto na segunda, números
decimais na terceira, etc.. Para acedermos ao conteúdo de uma
posição do array, será suficiente saber qual a sua identificação
numérica.
50
 Criar um array
$nome_do_array = array (conteudo_pos0, conteudo_pos1,
conteudo_pos2, …, conteudo_posN);
 Um array pode misturar no seu conteúdo strings, inteiros, floats, etc.
 Exemplo 1: (correto)
<?php //array com três posições preenchidas
$a=array(10,20,30);
echo $a[0]; //imprime o conteúdo da posição zero do array, ou seja, o nº 10
echo $a[1]; //imprime o conteúdo da posição um do array, ou seja, o nº 20
echo $a[2]; //imprime o conteúdo da posição dois do array, ou seja, o nº 30
?>
51
 Exemplo 1: (errado)
<?php //array com três posições preenchidas
$a=array(10,20,30);
echo $a; //irá aparecer no ecrã a palavra array
?>
 Este erro é muito comum. Ao imprimir um array não é possível
fazê-lo através da instrução echo $a. Como vimos anteriormente
um array é um armário com gavetas.
 A instrução deste exemplo diz para imprimir $a, isto é, o armário e
não as gavetas daí aparecer array escrito no ecrã. Para acedermos
ao conteúdo de um array (às gavetas) é necessário indicar as
posições.
52
 Exemplo 2:
<?php //array com 3 posições preenchidas
$a=array(10,”Joana”,3.5);
echo $a[0]; //imprime o conteúdo da posição zero do array, ou seja, o nº 10
echo $a[1]; //imprime o conteúdo da posição um do array, ou seja, Joana echo
$a[2]; //imprime o conteúdo da posição dois do array, ou seja, o nº 3.5
?>
 Para acrescentar um valor ao array anterior, é necessário adicionar a
seguinte linha de código:
$a[]=600;
 Na posição $a[3] consta agora o valor 600.
53
 Exemplo 3:
54
 Imagine agora um array com 1000 posições preenchidas. Como
imprimir tudo no ecrã?
 É necessário fazer echo de cada uma das posições 1000 vezes? A
resposta é claramente não.
 Podemos utilizar um ciclo for para procedermos à impressão de
todo o array, poupando tempo, trabalho e apresentando uma
programação mais simplificada.
 Exemplo 3: (cont.)
(…)
for ($i=0; $i<1000; $i++) //contador
echo $a[$i]; //imprime todo o conteúdo do array (1000 posições)
(…)
 Este ciclo permite imprimir o conteúdo de um array com 1000
posições.
 Nestes casos é habitual chamar o ciclo for de contador. Esse
contador ($i) será colocado dentro dos parênteses retos $a[$i].
 Desta forma, o valor dentro de parênteses irá variar entre 0 e 999,
ou seja, as 1000 posições do array, imprimindo cada uma delas no
ecrã.
55
 Por vezes, não se sabe o tamanho de um array. Em vez de um valor
fixo, os arrays podem ser variáveis.
 Estas situações ocorrem várias vezes quando um array é
preenchido com informação proveniente de uma base de dados.
 Por exemplo, a turma 11º D conta com 18 alunos este ano, porém
para o ano esse número poderá ser de 17, 20 ou outro qualquer.
 Nos casos anteriores, seria necessário mudar o contador para parar
não em 18, mas em 17 ou 20.
56
 O processo deixaria de ser dinâmico e pouco automatizado.
 Para resolver este problema existe o ciclo foreach, que apenas
pode ser aplicado a arrays.
 O ciclo percorre todas as posições ocupadas do array, imprimindo
por cada iteração, o seu conteúdo.
 O ciclo para quando não existirem mais posições preenchidas com
informação no array.
57
 Ciclo Foreach
foreach($nome_do_array_existente as $nome_escolhido)
 Exemplo: (substitui o ciclo for)
<?php
$a=array(11, 12, 13, 14, 15);
foreach ($a as $valor)
{ echo $nome_escolhido; } //imprime todo o conteúdo do array?>
 Neste exemplo, o array $a de 5 posições foi mapeado, isto é,
copiado para $valor. Cada uma das posições, depois de copiada, é
posteriormente impressa através da instrução echo $valor;
58
 Os arrays associativos em vez de utilizarem
identificadores
numéricos para o acesso às posições do array, utilizam
nomes.
59
 Vamos fazer novamente a analogia com o armário de gavetas.
Neste caso, cada gaveta passa a ter uma etiqueta da parte de fora,
tornando-se mais fácil identificar o que se encontra dentro. Este
tipo de arrays associam uma chave a um valor:
$chave =>$valor
 Criar um array associativo:
$nome_do_array_associativo =
array(“nome_identificador_da_pos0” => conteudo_pos0,
”nome_identificador_da_pos1” => conteudo_pos1, …,
“nome_identifcador_da_posN” => conteudo_posN);
 Exemplo 1: (imprimir o conteúdo de uma posição do array)
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /* array
associativo com 3 posições preenchidas */
echo “O Joaquim tem ” .$a[“Joaquim”]. ” anos. ” ; /* imprime O
Joaquim tem 19 anos */
?>
 Neste exemplo apenas foi impresso no ecrã o conteúdo da posição
do array com o nome Joaquim $a[“Joaquim”], isto é, 19.
60
 Exemplo 2: (imprimir todo o array)
echo “Nome: “ .$nome. “ Idade: “ .$idade. “<br>”; /* imprime todo
o conteúdo do array */
?>
 Para imprimirmos todo o array,
Utilizamos um ciclo foreach.
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19);
associativo com 3 posições preenchidas */
foreach($a as $nome => $idade)
/* array
61
 Exemplo 3: (acrescentar um valor ao array)
echo “Nome: “ .$nome. “ Idade: “ .$idade. “<br>”; /* imprime todo o
conteúdo do array */
?>
 Neste exemplo acrescentámos:
$a[“Hugo”]=18;
 Esta nova linha é acrescentada antes
do ciclo foreach para poder ser impressa.
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19);
associativo com 3 posições preenchidas */
$a[“Hugo”]=18;
foreach($a as $nome => $idade)
/* array
62
 Exemplo 4: (errado)
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /*array
associativo com 3 posições preenchidas */
foreach($a as $nome)
echo “Nome:“ .$nome.“<br>”; // imprime todas as idades do array
?>
 Neste caso, apenas são impressas as idades
no ecrã e não os nomes.
 É necessário o operador => para completar o
acesso ao array associativo.
63
 Exemplo 5: (errado)
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /*array
associativo com 3 posições preenchidas */
for($i=0; $i<2; $i++) // contador
echo $a[$i];
?>
 Um array associativo não pode ser acedido através de posições numéricas
como $a[0]. A primeira posição do array só pode ser acedida por
$a[“Maria”], a segunda por $a[“Carlos”] e assim sucessivamente.
 Concluindo, um ciclo for nunca deverá ser usado para aceder
ao conteúdo de um array associativo.
64

M5 php rc

  • 1.
    Duração: 30 horas (40aulas de 45 min.) Ano letivo 2019/2020 Professor : José Carlos
  • 2.
     Introdução àprogramação Web em PHP  Scripting do lado do servidor e do lado do cliente  Técnicas básicas de escrita de páginas dinâmicas  Variáveis e estruturas de controlo de execução 2
  • 3.
     Um scripté um programa constituído por um conjunto de instruções, escritas numa determinada linguagem e dirigidas para uma aplicação que as executa e interpreta.  O PHP é uma linguagem denominada de server-side, enquanto que a linguagem JavaScript é chamada de client-side.  O Apache é um Servidor HTTP que fornece páginas HTML ou ficheiros aos browsers Web. Estas podem ser estáticas ou geradas por um interpretador (ex: PHP) 3
  • 4.
     Client-side (ex:JavaScript) • O cliente desempenha a função de processamento. • A função do servidor é somente fornecer os ficheiros solicitados. Cliente Servidor Uma cópia do documento HTML e com possível código não processado é enviada ao cliente Contém o documento HTML requisitado. Recebe a solicitação feita pelo browser O browser é responsável por interpretar o possível código JavaScript 4
  • 5.
     Server-side (ex:PHP) • O servidor desempenha a função de processamento. Cliente Servidor Um programa interpreta o script (por ex: PHP) e substitui o código pelo resultado na página HTML. Uma cópia do documento HTML e com possível código já processado é enviada ao cliente 5 O browser “vê” uma página comum, que foi criada instantaneamente no servidor
  • 6.
     A linguagemPHP, surgiu com a designação - Personal Home Pages (Rasmus Lerdorf-1995);  Actualmente, PHP surge com o significado de Hypertext Preprocessor;  PHP é uma linguagem de programação de scripts para serem interpretados no lado dos servidores;  O PHP é “incorporado” em documentos HTML; 6
  • 7.
     O PHPpermite a construção de páginas web com conteúdos dinâmicos.  O facto do PHP ser uma das linguagens do lado do servidor mais utilizadas na web deve- se essencialmente a:  Ser uma tecnologia distribuída gratuitamente;  Ter uma excelente capacidade de articulação com: • Servidores Web – Apache; • Sistemas de gestão de base de dados – MYSQL. 7
  • 8.
     Funções decorreio electrónico - enviar um e-mail a uma pessoa ou lista parametrizando vários aspectos (e- mail de origem, assunto, pessoa a responder...). Ex.: mail(), mb_send_mail, imap_mail  Gestão de bases de dados - interfaces para o acesso à maioria das bases de dados. Ex.: mysql_create_db, mysql_ field_ len, mysql_ field_ table,… 8
  • 9.
     Gestão deficheiros - criar, apagar, mover, modificar ficheiros. Ex.: zip_open, chdir, scandir, copy, file_exists, ...  Tratamento de Imagens – é possível uniformizar o tamanho e o formato das imagens recebidas num site. Ex.: getimagesize, imagecopy, imagecreate,…  Tratamento de cookies Ex.: setcookie, http_build_cookie,… 9
  • 10.
     O servidorHTTP (ex: Apache) reconhece a extensão da página PHP e, antes de enviá-la ao browser, vai encarregar-se de a enviar ao interpretador PHP que vai interpretar e executar tudo aquilo que se encontre dentro das tags <?php Código PHP ?>.  O restante, vai enviá-lo tal qual, visto que assumirá que se trata de código HTML compreensível para o browser. 10
  • 11.
     As tagsque indicam os scripts de PHP podem ser:  <?php comandos; ?>  <script language="php"> comandos </script>  <? comandos; ?>  <% comandos; %> É o mais utilizado Estes formatos necessitam de estar activados nas definições de configuração do PHP. 11
  • 12.
     Uma instruçãotermina com ponto e vírgula (;);  A instrução echo apresenta a informação no ecrã;  Um bloco de instruções é incluído dentro de chavetas {...};  Comentários de uma linha inserem-se depois do sinal: # ou //  Comentários de várias linhas inserem-se entre os sinais: /* e */ 12
  • 13.
     O scriptde PHP é embutido no código HTML e o ficheiro gravado com a extensão .php;  O ficheiro é colocado na pasta c:xampphtdocs;  Para executar o programa em PHP numa máquina local, basta digitar o endereço: • http://localhost/nomedoficheiro.php Ou • http://127.0.0.1/nomedoficheiro.php 13
  • 14.
     Função phpinfo() Abreuma página de informação do PHP.  Exemplo: 14
  • 15.
  • 16.
     Variável éuma forma de guardar informações que pode variar no decorrer da execução do script;  Os nomes das variáveis começam sempre com $;  O PHP é case sensitive, isto é, distingue maiúsculas de minúsculas; letras  Exemplo: As variáveis $nome, $Nome, $NOME são diferentes; 16
  • 17.
     O PHPnão necessita da definição explicita do tipo na declaração de variáveis:  O tipo de uma variável é determinado pelo contexto em que esta é utilizada.  Exemplo: • $var = “olá”; // Variável do tipo String • $var = 1; // Variável do tipo Inteiro 17
  • 18.
     O PHPsuporta os seguintes tipos de dados: • Boolean (verdadeiro ou falso) • Integer • Float (nº com vírgula flutuante, ou também double) • String (conjunto de caracteres) • Array • Object (pode conter várias variáveis e funções) • Null (correspondente a um valor nulo) 18
  • 19.
     Função gettype() Indicao tipo de dados que cada variável assume.  Exemplo: $x=5; echo gettype($x); 19 var_dump ($x);
  • 20.
     Exemplo dafunção gettype() <?php $b = ($x == 10) ; echo gettype($b).'<br>' ; $y = 6 ; echo gettype($y).'<br>' ; $z = 1.5 ; echo gettype($z).'<br>' ; $a = “Susete Esteves" ; echo gettype($a).'<br>' ; echo gettype($d).'<br>' ; ?> 20
  • 21.
     Por vezespoderá haver necessidade de declarar variáveis que necessitem de existir durante todo o código (variáveis globais) ou apenas em certos momentos do código (variáveis locais). Chama-se a esta propriedade scope.  Por defeito as variáveis são locais, pelo que não estão acessíveis em todo o código.  Por exemplo, uma variável definida dentro de uma função só existe dentro dessa função e uma variável definida fora de uma função só existirá fora dela. 21
  • 22.
     Exemplo 1: <?php $a=3; functionver() { $b= $a+2; echo $b; } ver(); //resulta o valor 2 echo “<br>”; echo $a; //resulta o valor 3 echo “<br>”; echo $b; // não imprime qualquer valor ?> 22
  • 23.
     Notas doExemplo 1: 23  O resultado deste exercício parece um pouco estranho. Se dentro da função existe uma expressão $b=$a+2, deveria resultar $b=3+2, logo o valor 5.  Contudo, isso não se verifica, já que a variável $a não é global, não existindo dentro da função, tomando assim o valor nulo em vez do valor 3.  Por outro lado, a variável $b só existe dentro da função, pelo que fora dela toma o valor nulo não resultando qualquer impressão no ecrã.  Para ser possível obter o valor 5, resultado da expressão $b=$a+2, é necessário declarar a variável $a como global.
  • 24.
     Exemplo 2: <?php $a=3; functionver() { GLOBAL $a; $b= $a+2; echo $b; } ver(); //resulta o valor 5 echo “<br>”; echo $a; //resulta o valor 3 echo “<br>”; echo $b; // não imprime qualquer valor ?> 24
  • 25.
     Notas doExemplo 2: 25  Ao declararmos a variável $a como global dentro de uma função, isto é, dentro de onde pretendemos aceder ao seu valor global, conseguimos que ela tenha o valor anteriormente declarado que é 3.  No caso da variável $b, que foi impressa fora da função, continua a não ter valor, pois só existe dentro da função.
  • 26.
     As constantesfuncionam de maneira semelhante as variáveis, só que o seu valor não pode ser alterado.  Função define() Permite definir constantes.  Sintaxe: define(CONSTANTE,valor)  As constantes não utilizam o carácter $ nem podem ser redefinidas.  Por convenção, as constantes definem-se por maiúsculas. 26
  • 27.
     Exemplos:  define(TAXA,0.20); <?php define(“NOME”,“SuseteEsteves”); echo NOME; ?> É definida a constante TAXA com o valor 0.20 É definida PROFESSORA: SUSETE ESTEVES 27 a constante NOME com Susete Esteves o valor
  • 28.
    PROFESSORA: SUSETE ESTEVES28 Aritméticos Exemplo Nome Resultado $a + $b Adição Soma de $a com $b $a - $b Subtração Diferença entre $a e $b $a * $b Multiplicação Produto de $a e $b $a / $b Divisão Quociente de $a por $b $a % $b Módulo Resto da divisão de $a por $b
  • 29.
    PROFESSORA: SUSETE ESTEVES29 Relacionais ou comparativos Exemplo Nome Descrição $a == $b Igual Verdadeiro (true) se $a é igual a $b $a != $b Diferente Verdadeiro (true) se $a não é igual a $b $a > $b Maior Verdadeiro se $a é maior que $b $a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b $a < $b Menor Verdadeiro se $a é menor que $b $a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b
  • 30.
    Incremento e decremento PROFESSORA:SUSETE ESTEVES 30 Exemplo Nome Efeito ++ $a Pré-incremento Incrementa $a em um, e então retorna $a -- $a Pré-decremento decrementa $a em um, e então retorna $a $a ++ Pós-incremento Retorna $a, e então incrementa $a em um $a -- Pós-decremento Retorna $a, e então decrementa $a em um
  • 31.
    Lógicos PROFESSORA: SUSETE ESTEVES31 Exemplo Nome Resultado $a && $b E - AND Verdadeiro se tanto $a quanto $b são verdadeiros $a || $b OU - OR Verdadeiro se $a ou $b são verdadeiros ! $a NÃO - NOT Verdadeiro se $a não for verdadeiro
  • 32.
     Operador dejunção de strings  Exemplo: • $nome = “Susete”; • $sobrenome = “Esteves”; • echo $nome.” ”.$sobrenome; Insere um espaço em branco 32 Operador Significado . (ponto) Junção de strings
  • 33.
     As estruturasde controlo que vamos estudar em PhP são idênticas às utilizadas em C, C++ e JS. Começamos pelas estruturas de decisão if-else e switch-case.  Estrutura de decisão if-else (…) if(condição) {<bloco de instruções>;} elseif (condição) {<bloco de instruções>;} else {<bloco de instruções>;} (…) 33
  • 34.
    34 condições impostas.  Comopodemos verificar, a estrutura de controlo em PhP é ligeiramente diferente da utilizada em JS, devido à condição adicional elseif que lhe confere maior flexibilidade.  A estrutura de decisão if-else é utilizada quando pretendemos executar ações distintas dependendo das
  • 35.
     Exemplo: (if-else) If($x==0) {echo “Número ” .$x;} elseif ($x==1) {echo “Número ” .$x;} else {echo “Número errado!” ;}  Neste exemplo testa-se o valor da variável $x.  No caso de ser 0 imprime no ecrã Número 0.  No caso de ser 1 imprime no ecrã Número 1.  Se $x for um valor diferente dos anteriores, a parte executada pelo programa será else, imprimindo no ecrã Número errado. 35
  • 36.
     Estrutura deseleção switch-case (…) switch (expressão) { case valor 1: <bloco de instruções>; break; case valor 2: <bloco de instruções>; break; case valor N: <bloco de instruções>; break; default: <bloco de instruções>; } (…)  Esta estrutura pode ser utilizada nas mesmas circunstâncias da anterior, embora seja mais indicada para situações onde existam mais que duas opções. Desta forma, evitam-se encadeamentos entre o ciclo if e o elseif, que geralmente tornam o código muito confuso e com erros, quando mal estruturados. 36
  • 37.
     Exemplo: (switch-case) switch($x) { case 25: echo “Idade=“ .$x; break; case 29: echo “Idade=“ .$x; break; case 30: echo “Idade=“ .$x; break; case 34: echo “Idade=“ .$x; break; default: echo “Idade não definida!”; }  Como verificamos no código, apesar de conter várias opções de decisão, mantém-se percetível e bem estruturado. É de realçar também a facilidade com que se acrescenta, se necessário, outras opções a esta estrutura. 37
  • 38.
     Os ciclosservem para repetirmos um pedaço de código um certo número de vezes.  Ciclo for (…) for (inicialização; condição; incremento) { <bloco de instruções>; } (…) 38
  • 39.
     Exemplo: (for) (…) for($i=1; $i<=16; $i++) { echo “Número” .$i.“<br>”; } (…)  Neste exemplo, será executado um ciclo 16 vezes desde $i=1 até $i=16 com incrementos de uma unidade $i++ por iteração.  No final da execução do ciclo for serão impressos todos os números de 1 a 16 precedidos da palavra Número.  A impressão será realizada por linha visto existir o código HTML <br> que força a passagem de linha por cada iteração. 39
  • 40.
     Ciclos whilee do-while  São idênticos ao ciclo for mas não têm contadores (incremento). Apenas se repetem enquanto se verificar a condição.  A grande diferença entre os ciclos while e do-while é que o segundo executa sempre pelo menos uma vez o bloco de instruções, já que a condição de paragem se situa no final e não no início como no ciclo while. (…) while (condição) { <bloco de instruções>; } (…) (…) do { <bloco de instruções>; } while (condição); (…) 40
  • 41.
     Exemplo: (while) (…) $i=1;// Necessário atribuir valor inicial à variável fora do ciclo while ($i<=16) { echo “Número=“ .$i. “<br>” ; 41 $i++; /* Necessário incrementar valor da variável no final de cada iteração */ } (…)
  • 42.
     Exemplo: (do-while) (…) $i=1;// Necessário atribuir valor inicial à variável fora do ciclo do { echo “Número=“ .$i.“<br>” ; 42 $i++; /* Necessário incrementar valor da variável no final de cada iteração */ } while ($i<=16); (…)
  • 43.
     Exemplos: (whilee do-while) 43  Como se pode verificar através destes ciclos é possível obter o mesmo resultado que o apresentado com o ciclo for. Contudo, neste caso temos necessidade de declarar a variável $i fora do ciclo para a iniciarmos com o valor 1, que será o primeiro número a imprimir.  Dentro do ciclo somos de novo obrigados, após a instrução de impressão, a incrementar o valor $i++ ou seria impresso infinitamente o valor 1.  Apesar de, neste caso, o exercício ser mais simples com o ciclo for não quer dizer que apenas devemos usar este último.  Deverá sempre analisar o seu código e escolher o que se ajustar melhor ao problema.
  • 44.
     As funçõesem PhP são semelhantes às apresentadas em JS. 44 São definidas pela palavra function podendo, receber ou não parâmetros, bem como, retornar ou não valores.  A estrutura de uma função apresenta-se da seguinte forma: (…) function nome_função($parâmetro1, $parâmetro2, …) { <bloco de instruções>; return [$valor ou expressão]; } (…)
  • 45.
     As funçõespermitem que os códigos fiquem mais percetíveis e menos confusos.  Além disso, deixa de haver necessidade de repetir um certo pedaço de código ao longo do programa.  Em vez de repetirmos o código substituímo-lo por uma função.  O código pretendido fica dentro da função sendo esta chamada sempre que necessário, ao programa. 45
  • 46.
     Exemplo 1:Função sem parâmetros (…) function alerta() { echo “Dados incorretos!”; } (…)  Como já referimos os parâmetros não são obrigatórios.  Quando uma função não utiliza parâmetros, o conteúdo dos parênteses fica em branco. Ex: função alerta() anterior. 46
  • 47.
     Exemplo 2:Função que recebe parâmetros (…) function soma($valor1, $valor2) { $soma_val = $valor1 + $valor2; return $soma_val; } (…)  A função anterior recebe dois parâmetros, isto é, dois valores que irá somar.  O resultado dessa soma será guardado na variável $soma_val que será retornado para o ponto do código onde a função foi chamada. 47
  • 48.
     Exemplo 1: <?php define(“A”, 3); define (“NOME”, “Maria”); function ver() { $b= A+2; echo $b; } ver(); //resulta o valor 5 echo “<br>”; echo A; //imprime o valor 3 echo “<br>”; echo NOME; // imprime Maria ?>  Nota: Ao contrário das variáveis, as constantes estão definidas para todo o código, não existindo o conceito de constantes globais e locais. 48
  • 49.
     A linguagemPhP é do tipo de programação orientada ao objeto. Quer isto dizer que nesta linguagem existem um conjunto de objetos que trocam mensagens entre si.  Imagine um objeto de nome carro. Sabemos que este objeto é na realidade a palavra que define um conjunto de 4 rodas, volante assentos, motor, etc.. Contudo quando viajamos de carro não temos de pensar em todos os seus componentes para o utilizar.  Na programação o processo é o mesmo. Temos objetos constituídos por vários atributos mas que se definem por uma só palavra tornando-se mais simples para quem os usa. 49
  • 50.
     Os arraysem PhP são idênticos aos utilizados em C e C++. Um array é um estrutura de dados que pode ser comparada a um armário com gavetas “infinitas”. As gavetas simbolizam as posições de um array.  Em cada gaveta podemos colocar objetos diferentes. Por exemplo, na primeira colocamos folhas, na segunda parafusos, na terceira cabos de rede e assim por diante. Sempre que abrirmos uma gaveta, apenas nos será mostrado o interior dessa gaveta.  Com os arrays a história é a mesma. Podemos colocar números inteiros na primeira posição do array, texto na segunda, números decimais na terceira, etc.. Para acedermos ao conteúdo de uma posição do array, será suficiente saber qual a sua identificação numérica. 50
  • 51.
     Criar umarray $nome_do_array = array (conteudo_pos0, conteudo_pos1, conteudo_pos2, …, conteudo_posN);  Um array pode misturar no seu conteúdo strings, inteiros, floats, etc.  Exemplo 1: (correto) <?php //array com três posições preenchidas $a=array(10,20,30); echo $a[0]; //imprime o conteúdo da posição zero do array, ou seja, o nº 10 echo $a[1]; //imprime o conteúdo da posição um do array, ou seja, o nº 20 echo $a[2]; //imprime o conteúdo da posição dois do array, ou seja, o nº 30 ?> 51
  • 52.
     Exemplo 1:(errado) <?php //array com três posições preenchidas $a=array(10,20,30); echo $a; //irá aparecer no ecrã a palavra array ?>  Este erro é muito comum. Ao imprimir um array não é possível fazê-lo através da instrução echo $a. Como vimos anteriormente um array é um armário com gavetas.  A instrução deste exemplo diz para imprimir $a, isto é, o armário e não as gavetas daí aparecer array escrito no ecrã. Para acedermos ao conteúdo de um array (às gavetas) é necessário indicar as posições. 52
  • 53.
     Exemplo 2: <?php//array com 3 posições preenchidas $a=array(10,”Joana”,3.5); echo $a[0]; //imprime o conteúdo da posição zero do array, ou seja, o nº 10 echo $a[1]; //imprime o conteúdo da posição um do array, ou seja, Joana echo $a[2]; //imprime o conteúdo da posição dois do array, ou seja, o nº 3.5 ?>  Para acrescentar um valor ao array anterior, é necessário adicionar a seguinte linha de código: $a[]=600;  Na posição $a[3] consta agora o valor 600. 53
  • 54.
     Exemplo 3: 54 Imagine agora um array com 1000 posições preenchidas. Como imprimir tudo no ecrã?  É necessário fazer echo de cada uma das posições 1000 vezes? A resposta é claramente não.  Podemos utilizar um ciclo for para procedermos à impressão de todo o array, poupando tempo, trabalho e apresentando uma programação mais simplificada.
  • 55.
     Exemplo 3:(cont.) (…) for ($i=0; $i<1000; $i++) //contador echo $a[$i]; //imprime todo o conteúdo do array (1000 posições) (…)  Este ciclo permite imprimir o conteúdo de um array com 1000 posições.  Nestes casos é habitual chamar o ciclo for de contador. Esse contador ($i) será colocado dentro dos parênteses retos $a[$i].  Desta forma, o valor dentro de parênteses irá variar entre 0 e 999, ou seja, as 1000 posições do array, imprimindo cada uma delas no ecrã. 55
  • 56.
     Por vezes,não se sabe o tamanho de um array. Em vez de um valor fixo, os arrays podem ser variáveis.  Estas situações ocorrem várias vezes quando um array é preenchido com informação proveniente de uma base de dados.  Por exemplo, a turma 11º D conta com 18 alunos este ano, porém para o ano esse número poderá ser de 17, 20 ou outro qualquer.  Nos casos anteriores, seria necessário mudar o contador para parar não em 18, mas em 17 ou 20. 56
  • 57.
     O processodeixaria de ser dinâmico e pouco automatizado.  Para resolver este problema existe o ciclo foreach, que apenas pode ser aplicado a arrays.  O ciclo percorre todas as posições ocupadas do array, imprimindo por cada iteração, o seu conteúdo.  O ciclo para quando não existirem mais posições preenchidas com informação no array. 57
  • 58.
     Ciclo Foreach foreach($nome_do_array_existenteas $nome_escolhido)  Exemplo: (substitui o ciclo for) <?php $a=array(11, 12, 13, 14, 15); foreach ($a as $valor) { echo $nome_escolhido; } //imprime todo o conteúdo do array?>  Neste exemplo, o array $a de 5 posições foi mapeado, isto é, copiado para $valor. Cada uma das posições, depois de copiada, é posteriormente impressa através da instrução echo $valor; 58
  • 59.
     Os arraysassociativos em vez de utilizarem identificadores numéricos para o acesso às posições do array, utilizam nomes. 59  Vamos fazer novamente a analogia com o armário de gavetas. Neste caso, cada gaveta passa a ter uma etiqueta da parte de fora, tornando-se mais fácil identificar o que se encontra dentro. Este tipo de arrays associam uma chave a um valor: $chave =>$valor  Criar um array associativo: $nome_do_array_associativo = array(“nome_identificador_da_pos0” => conteudo_pos0, ”nome_identificador_da_pos1” => conteudo_pos1, …, “nome_identifcador_da_posN” => conteudo_posN);
  • 60.
     Exemplo 1:(imprimir o conteúdo de uma posição do array) <?php $a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /* array associativo com 3 posições preenchidas */ echo “O Joaquim tem ” .$a[“Joaquim”]. ” anos. ” ; /* imprime O Joaquim tem 19 anos */ ?>  Neste exemplo apenas foi impresso no ecrã o conteúdo da posição do array com o nome Joaquim $a[“Joaquim”], isto é, 19. 60
  • 61.
     Exemplo 2:(imprimir todo o array) echo “Nome: “ .$nome. “ Idade: “ .$idade. “<br>”; /* imprime todo o conteúdo do array */ ?>  Para imprimirmos todo o array, Utilizamos um ciclo foreach. <?php $a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); associativo com 3 posições preenchidas */ foreach($a as $nome => $idade) /* array 61
  • 62.
     Exemplo 3:(acrescentar um valor ao array) echo “Nome: “ .$nome. “ Idade: “ .$idade. “<br>”; /* imprime todo o conteúdo do array */ ?>  Neste exemplo acrescentámos: $a[“Hugo”]=18;  Esta nova linha é acrescentada antes do ciclo foreach para poder ser impressa. <?php $a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); associativo com 3 posições preenchidas */ $a[“Hugo”]=18; foreach($a as $nome => $idade) /* array 62
  • 63.
     Exemplo 4:(errado) <?php $a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /*array associativo com 3 posições preenchidas */ foreach($a as $nome) echo “Nome:“ .$nome.“<br>”; // imprime todas as idades do array ?>  Neste caso, apenas são impressas as idades no ecrã e não os nomes.  É necessário o operador => para completar o acesso ao array associativo. 63
  • 64.
     Exemplo 5:(errado) <?php $a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /*array associativo com 3 posições preenchidas */ for($i=0; $i<2; $i++) // contador echo $a[$i]; ?>  Um array associativo não pode ser acedido através de posições numéricas como $a[0]. A primeira posição do array só pode ser acedida por $a[“Maria”], a segunda por $a[“Carlos”] e assim sucessivamente.  Concluindo, um ciclo for nunca deverá ser usado para aceder ao conteúdo de um array associativo. 64