Return to Video

Laços For Aninhados (Versão em Video)

  • 0:02 - 0:04
    Uma Gema, uma gema muito bonita!
  • 0:04 - 0:08
    Mas sabe o que seria melhor que uma única
    gema, uma fila de gemas!
  • 0:08 - 0:13
    E claro, agora já sabemos que a melhor
    maneira para fazer isso é usando o for.
  • 0:13 - 0:16
    Então, vamos usar um laço para
    desenhar 12 gemas em fila.
  • 0:16 - 0:20
    Atravessando a tela da
    esquerda para a direita.
  • 0:20 - 0:22
    Desse jeito.
    Então isso é um
  • 0:22 - 0:31
    for (var i = 0; i < 12; i++)
  • 0:31 - 0:36
    E vamos pegar essa linha
    e colocar aqui dentro.
  • 0:36 - 0:40
    Agora temos 12 gemas, mas estão
    colocadas uma sobre a outra.
  • 0:40 - 0:43
    Lembre-se, queremos que
    elas atravessem a tela.
  • 0:43 - 0:46
    Para isso precisamos ir modificando o x,
  • 0:46 - 0:50
    que agora é 36, mas deve ser
    diferente a cada vez.
  • 0:50 - 0:52
    Isso significa que ele deve depender de i.
  • 0:52 - 0:56
    Logo, podemos simplesmente
    dizer, i vezes 36.
  • 0:56 - 1:03
    Assim o primeiro é 0, e então 36,
    e então 72, e etc.
  • 1:03 - 1:05
    Agora temos uma fila de gemas.
  • 1:05 - 1:08
    Isso me lembra aquelas cenas dos
    filmes de Indiana Jones ou Aladin
  • 1:08 - 1:11
    onde o heroi descobre que o tesouro
    escondido está repleto de gemas
  • 1:11 - 1:14
    mas geralmente eles encontram
    mais gemas que isso.
  • 1:14 - 1:17
    Não só uma fila, mas uma pilha de gemas!
  • 1:17 - 1:22
    como podemos fazer com que as gemas
  • 1:22 - 1:24
    também desçam pela tela?
  • 1:25 - 1:31
    Bem, podemos começar repetindo o
    laço, apenas copiando e colando
  • 1:31 - 1:35
    e alterar o seu y em cada cópia.
  • 1:35 - 1:38
    Assim o alteraremos para 60, depois 90.
  • 1:38 - 1:41
    Agora temos 3 filas de gemas, muito bom.
  • 1:42 - 1:45
    Mas isso está ficando chato,
    pois tudo que fazemos é
  • 1:45 - 1:49
    copiar e colar, mais uma
    pequena alteração.
  • 1:49 - 1:53
    Antes, quando percebíamos que estávamos
    escrevendo código repetitivo assim
  • 1:53 - 1:57
    tínhamos aquela sensação, "Ah,
    talvez se usássemos um for aqui"
  • 1:57 - 1:59
    Mas já estamos usando um laço for
  • 1:59 - 2:04
    então qual a solução para evitar isso,
    esse copiar e colar repetitivo?
  • 2:04 - 2:10
    É isso que chamamos de "laços for
    aninhados" - Um laço dentro do outro.
  • 2:10 - 2:12
    Então teremos que fazer um laço por fora,
  • 2:12 - 2:15
    isso é o que fará com que
    elas desçam pela tela,
  • 2:15 - 2:19
    enquanto nosso for interno cuidará para
    elas façam o que já estão fazendo,
  • 2:19 - 2:22
    que é se enfilerar da esquerda
    para a direita.
  • 2:22 - 2:24
    Deixe-me mostrar o que eu quis dizer.
  • 2:24 - 2:30
    for - usaremos uma variável diferente
    dessa vez, chamada j, pois já usamos i
  • 2:30 - 2:37
    for (var j = 0; j < 13; j++)
  • 2:38 - 2:42
    Esse será nosso for externo, que faz
    com que as gemas desçam.
  • 2:42 - 2:48
    então, pegaremos nosso antigo for e
    colocaremos aqui dentro
  • 2:48 - 2:52
    corrigindo a indentação, vamos
    apagar esses outros.
  • 2:53 - 2:59
    O que conseguimos agora é todas
    as filas sobrepostas.
  • 2:59 - 3:02
    Então precisamos alterar o y, certo?
  • 3:02 - 3:04
    É o que estávamos alterando
    antes ao copiar e colar,
  • 3:04 - 3:06
    e agora Y é sempre 90.
  • 3:06 - 3:09
    Queremos que ele seja
    diferente para cada fila.
  • 3:09 - 3:16
    Da mesma forma que x depende de i,
    queremos que y dependa de j.
  • 3:16 - 3:25
    Podemos tentar algo como,
    talvez, j vezes 30.
  • 3:26 - 3:29
    Quantas gemas! Deu certo!
  • 3:30 - 3:32
    Vamos examinar de novo
    como o código faz isso.
  • 3:32 - 3:38
    O laço externo cria a variável j
    e a incrementa até 13.
  • 3:38 - 3:44
    Em cada execução, ele roda o laço interno.
  • 3:44 - 3:49
    O laço interno cria a variável i,
    que vai até 12.
  • 3:49 - 3:55
    Para cada execução do laço interno, surge
    uma imagem em (x,y), que depende de i e j.
  • 3:55 - 4:00
    Por isso o i muda mais vezes que o j.
  • 4:00 - 4:05
    Para entender isso ainda melhor, vamos
    visualizar os valores de i e j.
  • 4:05 - 4:09
    Então vou comentar a imagem,
  • 4:09 - 4:12
    definir uma cor,
  • 4:12 - 4:17
    e usar o comando text para mostrar
    os valores de j
  • 4:17 - 4:22
    e então vou destacar isso aqui.
  • 4:22 - 4:26
    Agora podemos ver j indo de 0 a 12.
  • 4:26 - 4:32
    Basicamente, é onde nossas filas de
    gemas estão posicionadas.
  • 4:32 - 4:36
    E agora fazermos o mesmo com
    i para ver como ele muda
  • 4:36 - 4:43
    Para i vamos escolher uma cor diferente.
  • 4:43 - 4:46
    Vamos colocar o i aqui.
  • 4:46 - 4:50
    E alterar seu x para que
    ele atravesse a tela.
  • 4:50 - 4:55
    Faremos o mesmo com y.
  • 4:55 - 5:00
    Agora vemos que i vai de 0 a 11.
  • 5:00 - 5:05
    Como eu estava dizendo, o i muda
    mais frequentemente
  • 5:05 - 5:09
    E essa linha de código é executada
    mais vezes que essa
  • 5:09 - 5:14
    Porque essa linha de código é executada
    para cada execução do laço interno
  • 5:14 - 5:20
    Enquanto essa outra é executada apenas
    quando o laço externo executa.
  • 5:20 - 5:22
    Essa visualização do i e do j,
  • 5:22 - 5:27
    ajuda a entender melhor o funcionamento
    do for aninhado.
  • 5:27 - 5:30
    Voltemos às gemas, porque
    é mais divertido!
  • 5:30 - 5:34
    Voce pode fazer muitas coisas com
    laços for aninhados
  • 5:34 - 5:37
    Basta pensar em quantas
    coisas no mundo que
  • 5:37 - 5:41
    se parecem com uma matriz bidimensional,
    como um tabuleiro de xadrez, um edredon,
  • 5:41 - 5:45
    as estrelas na bandeira dos EUA,
    mozaicos e papéis de parede
  • 5:45 - 5:47
    Brinque um pouco com o código,
    para aquecer a sua imaginação,
  • 5:47 - 5:50
    por exemplo, alterando a imagem.
  • 5:50 - 5:54
    Começarei mudando de gemas para corações!
  • 5:54 - 5:57
    Para te mostrar o quanto eu gosto de
    laços for aninhados!
  • 5:57 - 6:01
    Traduzido por [João Pereira Júnior]
    Revisado por [Fernando dos Reis]
Title:
Laços For Aninhados (Versão em Video)
Description:

more » « less
Video Language:
English
Duration:
06:00

Portuguese, Brazilian subtitles

Revisions