Desenvolvimento Web I


                Aula 04


Instrutor: José Fernando Santana Andrade
      fernando.amdrade@gmail.com
Estruturas de dados
                compostas




17/12/12             Desenvolvimento Web I   2/46
Estruturas de dados
                compostas
    Problema: faça um script que calcule a
    média ponderada de 300 alunos e imprimar
    o total de aprovados, reprovados, maior e
    menor nota.




17/12/12             Desenvolvimento Web I   3/46
Estruturas de dados
                compostas
    Problema: faça um script que calcule a
    média ponderada de 300 alunos e imprimar
    o total de aprovados, reprovados, maior e
    menor nota.
    De quantas variáveis precisamos ?




17/12/12             Desenvolvimento Web I   4/46
Estruturas de dados
                compostas
●   Aplicações que necessitam de muitas
    variáveis
●   Ajudam a organizar o código




17/12/12             Desenvolvimento Web I   5/46
Estruturas de dados
                compostas




            Homogênea                    Heterogênea



17/12/12                Desenvolvimento Web I          6/46
Vetor

●   Estrutura composta unidimensional
●   Estrutura homogênea
●   Faz uso de uma variável indexada
●   Cada posição posição da variável é
    chamada de índice




17/12/12           Desenvolvimento Web I   7/46
Vetor




17/12/12      Desenvolvimento Web I   8/46
Vetor

●   Para acessar usamos o identificador da
    variável seguido do índice do qual
    queremos o valor




17/12/12            Desenvolvimento Web I    9/46
Exemplo
           itens



                 0       1          2                3        4
               caixa   sapato     camisa            meia   gravata



             itens[1] → sapato
             itens[3] → meia



17/12/12                        Desenvolvimento Web I                10/46
Matriz

●   Estrutura composta multidimensional
●   Problemas que precisam de mais de uma
    dimensão em uma estrutura
●   As posições têm um índice para cada
    dimensão




17/12/12           Desenvolvimento Web I    11/46
Matriz



           1,1    1,2          …            1,n
           2,1    2,2          …            2,n
           …      …            …            …
           m,1    m,2          …            m,n




17/12/12            Desenvolvimento Web I         12/46
Exemplo

  itens
                     1,1              1,2
                   sapato           camisa
                    2,1               2,2
                    meia             caixa


           itens[1][1] → sapato
           itens[2][1] → meia


17/12/12                    Desenvolvimento Web I   13/46
Tipo array

●   É uma lista de valores armazenados na
    memória, os quais podem ser de tipos
    diferentes
●   Cada valor é relacionado a uma chave




17/12/12           Desenvolvimento Web I    14/46
Criando um array

                array([chave =>] valor, … )
           $cores = array('vermelho','verde','azul');
           ou
$cores = array(0=>'vermelho',1=>'verde',2=>'azul');
      ou
$cores[] = 'vermelho';
$cores[] = 'verde';
$cores[] = 'azul';

17/12/12                    Desenvolvimento Web I       15/46
Exemplo

           $nomes = array('maria','joão','carlos');
           $nomes[] = 'josé';
           var_dump($nomes);
           echo '<br />';
           print_r($nomes);
           echo '<br />';
           echo $nomes[0].'<br />';
           echo $nomes[1].'<br />';
           echo $nomes[2].'<br />';
           echo $nomes[3].'<br />';


17/12/12                       Desenvolvimento Web I   16/46
Registro

●   Além dos índices do tipo inteiro, índices
    literais também são suportados




17/12/12             Desenvolvimento Web I      17/46
Exemplo
$pessoa['nome'] = 'Maria da Silva';
$pessoa['rua'] = 'São João';
$pessoa['bairro'] = 'Cidade Alta';
$pessoa['cidade'] = 'Porto Alegre';
//para acessar basta indicar a chave
echo $pessoa['nome'];
echo $pessoa['rua'];
echo $pessoa['bairro'];
echo $pessoa['cidade'];

17/12/12            Desenvolvimento Web I   18/46
foreach

●   É um laço de repetição para iterações em
    arrays ou matrizes
●   FOR simplificado que decompõe um vetor
    ou matriz em cada um de seus elementos
    por meio da cláusula AS




17/12/12           Desenvolvimento Web I       19/46
foreach


           foreach(expressão_array as $valor)
           {
              instruções
           }




17/12/12                  Desenvolvimento Web I   20/46
Exemplo


       $cores = array('vermelho','verde','azul');
       foreach($nomes as $valor)
       {
          echo "$valor <br />";
       }




17/12/12                 Desenvolvimento Web I      21/46
Iterações
    $nomes = array('maria','joão','carlos','josé');
    for($i=0;$i<4;$i++)
    {
       echo "$nomes[$i] <br />";
    }
    foreach($nomes as $valor)
                                     FOR X FOREACH
    {
       echo "$valor <br />";                 ?
    }


17/12/12              Desenvolvimento Web I       22/46
Array multidimensionais

●   Ou matrizes são array nos quais algumas
    de suas posições podem conter outros
    arrays




17/12/12           Desenvolvimento Web I      23/46
Exemplo
$carros = array(
   'Palio'=>array(
      'cor'=>'preto',
      'potencia'=>'1.0',
      'opcionais'=>'Ar Cond.'),
   'Corsa'=>array(
      'cor'=>'branco',
      'potencia'=>'1.3',
      'opcionais'=>'MP3'),
   'Gol'=>array(
      'cor'=>'cinza',
      'potencia'=>'1.0',
      'opcionais'=>'DVD'));
echo $carros['Corsa']['potencia'];

17/12/12                     Desenvolvimento Web I   24/46
Exemplo

foreach($carros as $modelo=>$caracteristicas)
{
   echo "=> modelo $modelo <br />";
   foreach($caracteristicas as $caracteristica=>$valor)
   {
      echo "caracteristica $caracteristica => $valor <br />n";
   }
}



17/12/12                Desenvolvimento Web I             25/46
Exercício

    Modele e inicialize um registro que
    contenha os seguintes dados nome,
    matricula e curso. Imprima seu registro.
    Ex.:
    Nome => James Ross
    Matricula => 681324
    Curso => Redes de Computadores

17/12/12            Desenvolvimento Web I      26/46
Exercício

 $cad = array(
   'Nome'=>'James Ross',
   'Matricula'=>681324,
   'Curso'=>"Redes de Computadores");
 foreach($cad as $aux=>$valor)
 {
    echo "$aux => $valor <br />";
 }



17/12/12               Desenvolvimento Web I   27/46
Exercício


                               x x o
Faça uma representação
para o joga da velha




                               o x o
                               x o x
17/12/12             Desenvolvimento Web I   28/46
Exercício

       $velha=array(
          array('X','X','O'),
          array('O','X','O'),
          array('X','O','X'));
       foreach($velha as $linha)
       {
          foreach($linha as $valor)
          {
             echo "$valor ";
          }
          echo "<br />";
       }
17/12/12                  Desenvolvimento Web I   29/46
Exercício

    Faça um script para inverter um array




17/12/12            Desenvolvimento Web I   30/46
Exercício
           $a=array(1,2,3,4,5,6,7,8,9);
           print_r($a);
           echo '<br />';
           //retorna o tamanho do array
           $t = sizeof($a);
           /*como invertemos os extremos
           só precisamos fazer a metade
           do número de elementos*/
           for($i=0;$i<$t/2;$i++){
               $aux = $a[$i];
               $a[$i] = $a[($t-1)-$i];
               $a[($t-1)-$i] = $aux;
           }
           print_r($a);
17/12/12                   Desenvolvimento Web I   31/46
Exercício

    Faça um script para ordenar um array:
    $valor = array(34,2,0,47,1);
    0 1 2 34 47




17/12/12             Desenvolvimento Web I   32/46
Manipulação de arrays




17/12/12        Desenvolvimento Web I   33/46
array_push

●   Adiciona elementos ao final do array
  $a = array('verde','azul','branco');
  array_push($a,'amarelo');
  print_r($a);




17/12/12            Desenvolvimento Web I   34/46
array_pop

●   Remove um valor do final de um array
  $a = array('verde','azul','branco','amarelo');
  array_pop($a);
  print_r($a);




17/12/12            Desenvolvimento Web I      35/46
array_shift

●   Remove um elemento do início do array
  $a = array('verde','azul','branco','amarelo');
  array_shift($a);
  print_r($a);




17/12/12            Desenvolvimento Web I      36/46
array_unshift

●   Adiciona um elemento do início do array
  $a = array('verde','azul','branco');
  array_unshift($a,'amarelo');
  print_r($a);




17/12/12            Desenvolvimento Web I     37/46
array_reverse

●  Recebe um array e retorna-o na ordem
   inversa
  $a = array('verde','azul','branco');
  $b = array_reverse($a,false);
  $c = array_reverse($a,true);
  print_r($b);
  print_r($c);

 Com TRUE as chaves são preservadas

17/12/12                 Desenvolvimento Web I   38/46
array_merge

●  Mesca dois ou mais arrays. Um é
   adicionado ao final do outro
  $a = array('azul','branco');
  $b = array('verde','vermelho');
  $c = array_merge($a,$b);
  print_r($c);



17/12/12          Desenvolvimento Web I   39/46
array_slice

●   Extrai uma porção do array

$a = array('azul','branco','verde','vermelho','cinza');
$b = array_slice($a,1,3);
print_r($b);




17/12/12             Desenvolvimento Web I          40/46
in_array

●   Verifica se um array contém um
    determinado valor
$a = array('azul','branco','verde','vermelho','cinza');
if(in_array('verde',$a))
{
    echo “valor encontrado”;
}



17/12/12             Desenvolvimento Web I          41/46
count

●   Retorna a quantidade de elementos de um
    array
$a = array('azul','branco','verde','vermelho','cinza');
echo 'o array $a contém '.count($a).' posições';




17/12/12             Desenvolvimento Web I          42/46
sort

●   Ordena um array pelo seu valor

$a = array('azul','branco','verde','vermelho','cinza');
sort($a);
print_r($a);




17/12/12             Desenvolvimento Web I          43/46
explode

●   Converte uma string em um array, separando
    os elementos por meio de um separador
$string = "pé/meia/sapato";
$resultado = explode("/",$string);
print_r($resultado);




17/12/12            Desenvolvimento Web I        44/46
implode

●   Converte um array em uma string, separando
    os elementos por meio de um separador
$nome = array('pé','meia','sapato');
$resultado = implode("+",$nome);
print_r($resultado);




17/12/12            Desenvolvimento Web I        45/46
Obrigado !




17/12/12        Desenvolvimento Web I   46/46

Php04

  • 1.
    Desenvolvimento Web I Aula 04 Instrutor: José Fernando Santana Andrade fernando.amdrade@gmail.com
  • 2.
    Estruturas de dados compostas 17/12/12 Desenvolvimento Web I 2/46
  • 3.
    Estruturas de dados compostas Problema: faça um script que calcule a média ponderada de 300 alunos e imprimar o total de aprovados, reprovados, maior e menor nota. 17/12/12 Desenvolvimento Web I 3/46
  • 4.
    Estruturas de dados compostas Problema: faça um script que calcule a média ponderada de 300 alunos e imprimar o total de aprovados, reprovados, maior e menor nota. De quantas variáveis precisamos ? 17/12/12 Desenvolvimento Web I 4/46
  • 5.
    Estruturas de dados compostas ● Aplicações que necessitam de muitas variáveis ● Ajudam a organizar o código 17/12/12 Desenvolvimento Web I 5/46
  • 6.
    Estruturas de dados compostas Homogênea Heterogênea 17/12/12 Desenvolvimento Web I 6/46
  • 7.
    Vetor ● Estrutura composta unidimensional ● Estrutura homogênea ● Faz uso de uma variável indexada ● Cada posição posição da variável é chamada de índice 17/12/12 Desenvolvimento Web I 7/46
  • 8.
    Vetor 17/12/12 Desenvolvimento Web I 8/46
  • 9.
    Vetor ● Para acessar usamos o identificador da variável seguido do índice do qual queremos o valor 17/12/12 Desenvolvimento Web I 9/46
  • 10.
    Exemplo itens 0 1 2 3 4 caixa sapato camisa meia gravata itens[1] → sapato itens[3] → meia 17/12/12 Desenvolvimento Web I 10/46
  • 11.
    Matriz ● Estrutura composta multidimensional ● Problemas que precisam de mais de uma dimensão em uma estrutura ● As posições têm um índice para cada dimensão 17/12/12 Desenvolvimento Web I 11/46
  • 12.
    Matriz 1,1 1,2 … 1,n 2,1 2,2 … 2,n … … … … m,1 m,2 … m,n 17/12/12 Desenvolvimento Web I 12/46
  • 13.
    Exemplo itens 1,1 1,2 sapato camisa 2,1 2,2 meia caixa itens[1][1] → sapato itens[2][1] → meia 17/12/12 Desenvolvimento Web I 13/46
  • 14.
    Tipo array ● É uma lista de valores armazenados na memória, os quais podem ser de tipos diferentes ● Cada valor é relacionado a uma chave 17/12/12 Desenvolvimento Web I 14/46
  • 15.
    Criando um array array([chave =>] valor, … ) $cores = array('vermelho','verde','azul'); ou $cores = array(0=>'vermelho',1=>'verde',2=>'azul'); ou $cores[] = 'vermelho'; $cores[] = 'verde'; $cores[] = 'azul'; 17/12/12 Desenvolvimento Web I 15/46
  • 16.
    Exemplo $nomes = array('maria','joão','carlos'); $nomes[] = 'josé'; var_dump($nomes); echo '<br />'; print_r($nomes); echo '<br />'; echo $nomes[0].'<br />'; echo $nomes[1].'<br />'; echo $nomes[2].'<br />'; echo $nomes[3].'<br />'; 17/12/12 Desenvolvimento Web I 16/46
  • 17.
    Registro ● Além dos índices do tipo inteiro, índices literais também são suportados 17/12/12 Desenvolvimento Web I 17/46
  • 18.
    Exemplo $pessoa['nome'] = 'Mariada Silva'; $pessoa['rua'] = 'São João'; $pessoa['bairro'] = 'Cidade Alta'; $pessoa['cidade'] = 'Porto Alegre'; //para acessar basta indicar a chave echo $pessoa['nome']; echo $pessoa['rua']; echo $pessoa['bairro']; echo $pessoa['cidade']; 17/12/12 Desenvolvimento Web I 18/46
  • 19.
    foreach ● É um laço de repetição para iterações em arrays ou matrizes ● FOR simplificado que decompõe um vetor ou matriz em cada um de seus elementos por meio da cláusula AS 17/12/12 Desenvolvimento Web I 19/46
  • 20.
    foreach foreach(expressão_array as $valor) { instruções } 17/12/12 Desenvolvimento Web I 20/46
  • 21.
    Exemplo $cores = array('vermelho','verde','azul'); foreach($nomes as $valor) { echo "$valor <br />"; } 17/12/12 Desenvolvimento Web I 21/46
  • 22.
    Iterações $nomes = array('maria','joão','carlos','josé'); for($i=0;$i<4;$i++) { echo "$nomes[$i] <br />"; } foreach($nomes as $valor) FOR X FOREACH { echo "$valor <br />"; ? } 17/12/12 Desenvolvimento Web I 22/46
  • 23.
    Array multidimensionais ● Ou matrizes são array nos quais algumas de suas posições podem conter outros arrays 17/12/12 Desenvolvimento Web I 23/46
  • 24.
    Exemplo $carros = array( 'Palio'=>array( 'cor'=>'preto', 'potencia'=>'1.0', 'opcionais'=>'Ar Cond.'), 'Corsa'=>array( 'cor'=>'branco', 'potencia'=>'1.3', 'opcionais'=>'MP3'), 'Gol'=>array( 'cor'=>'cinza', 'potencia'=>'1.0', 'opcionais'=>'DVD')); echo $carros['Corsa']['potencia']; 17/12/12 Desenvolvimento Web I 24/46
  • 25.
    Exemplo foreach($carros as $modelo=>$caracteristicas) { echo "=> modelo $modelo <br />"; foreach($caracteristicas as $caracteristica=>$valor) { echo "caracteristica $caracteristica => $valor <br />n"; } } 17/12/12 Desenvolvimento Web I 25/46
  • 26.
    Exercício Modele e inicialize um registro que contenha os seguintes dados nome, matricula e curso. Imprima seu registro. Ex.: Nome => James Ross Matricula => 681324 Curso => Redes de Computadores 17/12/12 Desenvolvimento Web I 26/46
  • 27.
    Exercício $cad =array( 'Nome'=>'James Ross', 'Matricula'=>681324, 'Curso'=>"Redes de Computadores"); foreach($cad as $aux=>$valor) { echo "$aux => $valor <br />"; } 17/12/12 Desenvolvimento Web I 27/46
  • 28.
    Exercício x x o Faça uma representação para o joga da velha o x o x o x 17/12/12 Desenvolvimento Web I 28/46
  • 29.
    Exercício $velha=array( array('X','X','O'), array('O','X','O'), array('X','O','X')); foreach($velha as $linha) { foreach($linha as $valor) { echo "$valor "; } echo "<br />"; } 17/12/12 Desenvolvimento Web I 29/46
  • 30.
    Exercício Faça um script para inverter um array 17/12/12 Desenvolvimento Web I 30/46
  • 31.
    Exercício $a=array(1,2,3,4,5,6,7,8,9); print_r($a); echo '<br />'; //retorna o tamanho do array $t = sizeof($a); /*como invertemos os extremos só precisamos fazer a metade do número de elementos*/ for($i=0;$i<$t/2;$i++){ $aux = $a[$i]; $a[$i] = $a[($t-1)-$i]; $a[($t-1)-$i] = $aux; } print_r($a); 17/12/12 Desenvolvimento Web I 31/46
  • 32.
    Exercício Faça um script para ordenar um array: $valor = array(34,2,0,47,1); 0 1 2 34 47 17/12/12 Desenvolvimento Web I 32/46
  • 33.
    Manipulação de arrays 17/12/12 Desenvolvimento Web I 33/46
  • 34.
    array_push ● Adiciona elementos ao final do array $a = array('verde','azul','branco'); array_push($a,'amarelo'); print_r($a); 17/12/12 Desenvolvimento Web I 34/46
  • 35.
    array_pop ● Remove um valor do final de um array $a = array('verde','azul','branco','amarelo'); array_pop($a); print_r($a); 17/12/12 Desenvolvimento Web I 35/46
  • 36.
    array_shift ● Remove um elemento do início do array $a = array('verde','azul','branco','amarelo'); array_shift($a); print_r($a); 17/12/12 Desenvolvimento Web I 36/46
  • 37.
    array_unshift ● Adiciona um elemento do início do array $a = array('verde','azul','branco'); array_unshift($a,'amarelo'); print_r($a); 17/12/12 Desenvolvimento Web I 37/46
  • 38.
    array_reverse ● Recebeum array e retorna-o na ordem inversa $a = array('verde','azul','branco'); $b = array_reverse($a,false); $c = array_reverse($a,true); print_r($b); print_r($c); Com TRUE as chaves são preservadas 17/12/12 Desenvolvimento Web I 38/46
  • 39.
    array_merge ● Mescadois ou mais arrays. Um é adicionado ao final do outro $a = array('azul','branco'); $b = array('verde','vermelho'); $c = array_merge($a,$b); print_r($c); 17/12/12 Desenvolvimento Web I 39/46
  • 40.
    array_slice ● Extrai uma porção do array $a = array('azul','branco','verde','vermelho','cinza'); $b = array_slice($a,1,3); print_r($b); 17/12/12 Desenvolvimento Web I 40/46
  • 41.
    in_array ● Verifica se um array contém um determinado valor $a = array('azul','branco','verde','vermelho','cinza'); if(in_array('verde',$a)) { echo “valor encontrado”; } 17/12/12 Desenvolvimento Web I 41/46
  • 42.
    count ● Retorna a quantidade de elementos de um array $a = array('azul','branco','verde','vermelho','cinza'); echo 'o array $a contém '.count($a).' posições'; 17/12/12 Desenvolvimento Web I 42/46
  • 43.
    sort ● Ordena um array pelo seu valor $a = array('azul','branco','verde','vermelho','cinza'); sort($a); print_r($a); 17/12/12 Desenvolvimento Web I 43/46
  • 44.
    explode ● Converte uma string em um array, separando os elementos por meio de um separador $string = "pé/meia/sapato"; $resultado = explode("/",$string); print_r($resultado); 17/12/12 Desenvolvimento Web I 44/46
  • 45.
    implode ● Converte um array em uma string, separando os elementos por meio de um separador $nome = array('pé','meia','sapato'); $resultado = implode("+",$nome); print_r($resultado); 17/12/12 Desenvolvimento Web I 45/46
  • 46.
    Obrigado ! 17/12/12 Desenvolvimento Web I 46/46