Vetores de Objetos (Versão em Vídeo)
-
0:00 - 0:04Continuemos explorando o que
podemos fazer com objetos. -
0:04 - 0:08Voltamos para o programa que
usamos no tutorial de funções. -
0:08 - 0:14Este programa tem esta função drawWinston
que sabe desenhar Winston em certo X e Y. -
0:15 - 0:16E, aqui, chamamos drawWinston
-
0:16 - 0:184 vezes, cada uma com um conjunto
-
0:18 - 0:22diferente de coordenadas X e Y.
-
0:22 - 0:24Bem, você me conhece, quando vejo
-
0:24 - 0:28estas quatro chamadas para drawWinton
que se parecem tanto, -
0:28 - 0:32tudo que penso é: como seria
melhor se pudéssemos -
0:32 - 0:36usar um loop e chamá-la apenas
uma vez dentro do loop, -
0:36 - 0:40mudando X e Y em cada interação do loop.
-
0:40 - 0:47Para isso, precisamos guardar esses X e Y
em um vetor para poder iterá-lo. -
0:47 - 0:50Bem, temos dois conjuntos de valores.
-
0:50 - 0:57Então, poderíamos ter 2 vetores. Um para
a posição X e outro para a posição Y. -
0:57 - 1:03Nas posições X podemos ter
99, 294, 101 e 294, -
1:03 - 1:10e nas posições Y teremos
117, 117, 316, 316. -
1:10 - 1:18Ok, e agora podemos iterá-los com nosso loop
for var i = 0; i < xPositions.length; i++ -
1:18 - 1:22Para cada elemento de
xPositions, dizemos -
1:22 - 1:30drawWinston ( xPositions[ i ],
yPositions [ i ] ); -
1:30 - 1:34Ok, vejamos se funciona...
deletando... -
1:34 - 1:36Certo, funcionou!
-
1:36 - 1:40Agora podemos apenas chamar
essa única linha de código que -
1:40 - 1:46executa drawWinston, mas o faz
para cada posição do vetor xPositions. -
1:46 - 1:48Podemos vir aqui e adicionar
mais a isso ... dizendo... -
1:48 - 1:58tipo 10, então adicionamos 1, e então 1,
e então 1, e então 100, e 1. -
1:58 - 2:03Agora... agora está ficando um pouco
confuso e não estou gostando, -
2:03 - 2:10porque está bem difícil ver que X
se relaciona com qual Y. -
2:10 - 2:16Eu quero poder apenas bater o olho e
saber quais são os pares X e Y, -
2:16 - 2:22ao invés de ter que garantir que os estou
alinhando corretamente, um sobre o outro -
2:22 - 2:27Preciso encontrar uma forma diferente
de armazenar essas posições. -
2:27 - 2:31Uma ideia é que poderíamos
armazená-las como objetos. -
2:31 - 2:36Pense nisso, cada posição é na verdade
duas informações: o X e o Y. -
2:36 - 2:39Então, poderíamos ter um objeto com as
propriedades X e Y, -
2:39 - 2:44e poderíamos ter um vetor -de objetos
com todas essas posições X-Y. -
2:44 - 2:46Vamos fazer!
-
2:46 - 2:51Vamos dizer var positions
igual a um vetor. -
2:51 - 2:56Mas, cada elemento, ao invés de ser
um número, será um objeto. -
2:56 - 3:05Aqui abrimos chave e vamos apenas
dizer X:99, Y:117. -
3:05 - 3:13Ok, temos agora nossas posições aqui,
e vamos adicionar outra aqui. -
3:13 - 3:33Certo, X deve ser 294, 117, e o terceiro
será 101, 316, e o último é 294 e 316. -
3:33 - 3:38Ok! Agora, temos um vetor de objetos onde
cada objeto tem propriedades X e Y. -
3:38 - 3:44Aqui em baixo, no loop for, mudamos apenas
isso aqui para iterar por positions.length -
3:44 - 3:49Então passamos o objeto.
-
3:49 - 3:53Agora estamos passando o objeto inteiro,
mas queremos passar o X e o Y, -
3:53 - 4:00então precisamos de
positions [ i ].X e positions [ i ].Y -
4:00 - 4:01Ta-da!
-
4:01 - 4:05Agora podemos nos livrar destes
vetores antigos confusos. -
4:05 - 4:10Ótimo, parece-me bem melhor e
torna o código mais legível -
4:10 - 4:13e sempre que pudermos ter código
mais legível, melhor. -
4:13 - 4:15E também está mais fácil adicionar.
-
4:15 - 4:19Se quisermos adicionar um, só precisamos
adicionar o par junto, -
4:19 - 4:25e aí podemos dizer X é 200, Y 200, nos dá um
pequeno Winston aqui no meio. -
4:27 - 4:28Beleza.
-
4:28 - 4:31Agora quero mostrar algo
ainda mais sofisticado. -
4:31 - 4:39Percebe que nossa função aceita dois
números e depois os usa. -
4:39 - 4:42Bem, poderíamos mudar nossa função
para que espere um objeto -
4:42 - 4:46e depois pegue o X e Y do objeto,
-
4:46 - 4:49o que significa que aqui embaixo só
teríamos que passar o objeto. -
4:50 - 4:51Vamos tentar!
-
4:51 - 4:54Passamos o objeto, agora não funciona.
-
4:54 - 4:58Isso porque nossa função ainda espera dois
objetos e está recebendo apenas um, -
4:59 - 5:00então vamos mudá-la
-
5:00 - 5:02para dizer que recebe facePosition,
-
5:04 - 5:07e agora deu erro porque faceX
não está definido, -
5:07 - 5:12por que antes estávamos passando faceX
como argumento, mas agora ele não existe, -
5:12 - 5:13temos apenas um objeto.
-
5:13 - 5:21O que podemos fazer, é salvar a posição X
de um objeto dentro da variável faceX. -
5:21 - 5:25Estamos dizendo que temos este objeto,
sabemos que ele tem uma propriedade X, -
5:25 - 5:28então vamos apenas guardá-la
na variável faceX. -
5:29 - 5:34Podemos fazer o mesmo com Y,
então faceY = facePosition.y; -
5:34 - 5:35Ta-da!
-
5:35 - 5:38E então, o resto da função usa
faceX e faceY. -
5:38 - 5:40Agora, temos que ter certeza
que soletramos corretamente, -
5:40 - 5:45se escrevermos xx, não vai funcionar,
porque não é o que está aqui embaixo -
5:45 - 5:48no nosso vetor de objetos. Precisa bater.
-
5:48 - 5:52Isso é bem legal, porque agora você pode
ter um vetor de objetos, -
5:52 - 5:54pode ter funções que recebem objetos
-
5:54 - 6:00e você vai ver que seus programas ficarão
poderosos com essa estrutura de dados. -
6:00 - 6:04Especialmente porque é tão comum querer
junto um par X e Y. -
6:04 - 6:09Será especialmente útil nos seus programas
de desenho e animação aqui. -
6:09 - 6:11Então, vá fundo e se divirta!
-
6:11 - 6:16[Legendado por: Fred Guth] [Revisado por: Alef Almeida]
- Title:
- Vetores de Objetos (Versão em Vídeo)
- Description:
-
Este é apenas uma captura de tela da nossa programação interativa, preparada de forma a tornar a legendagem e tradução mais fáceis. É melhor assistir nossa conversa aqui:
https://www.khanacademy.org/cs/programming/ - Video Language:
- English
- Duration:
- 06:12
Alef augusto Alves de Almeida edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) | ||
fredguth edited Portuguese, Brazilian subtitles for Arrays of Objects (Video Version) |