WEBVTT 00:00:01.240 --> 00:00:05.407 Vamos falar de algo que você usa bastante: Funções. 00:00:05.887 --> 00:00:11.089 Sempre se usa comandos como: rect(), fill() ou text(), se usa funções. 00:00:11.469 --> 00:00:13.806 E elasdesenham o que você as diz para fazer. 00:00:14.876 --> 00:00:19.736 O que é uma função? É uma coleção de códigos que agrupamos e nomeamos 00:00:19.877 --> 00:00:23.067 Pois queremos usá-los várias vezes. 00:00:23.897 --> 00:00:28.367 Pense no rect() O que rect() faz? Ele apenas desenha quatro linhas, certo? 00:00:28.714 --> 00:00:31.434 Poderíamos apenas usar a função line(), certo? 00:00:31.597 --> 00:00:35.838 e aqui temos o que se parece com um retângulo. Mas percebemos que 00:00:35.928 --> 00:00:40.690 queremos desenhas um retângulo várias vezes. E seria muito chato ter que fazer 00:00:40.690 --> 00:00:44.820 contas toda vez para desenhar uma linha para os próximos pontos. 00:00:45.251 --> 00:00:50.521 Ao invés disso, fazemos apenas a função rect() que faz a mesma coisa 00:00:50.533 --> 00:00:53.543 que a funções line() fizeram, mas, em muito menos códigos. 00:00:54.690 --> 00:00:59.480 Isso é muito legal e rect() é uma dessas funções disponíveis para todos os 00:00:59.480 --> 00:01:05.213 programas na Khan Academy. Mas você também pode fazer suas próprias funções 00:01:05.213 --> 00:01:07.383 para usar em seus programas. 00:01:07.605 --> 00:01:12.105 Por exemplo: estamos fazendo um programa e queremos desenhar 00:01:12.105 --> 00:01:16.702 "Winston" várias vezes, talvez vamos contar a história de Winston 00:01:16.873 --> 00:01:19.133 e mostrá-lo em cada época de sua vida. 00:01:20.120 --> 00:01:23.480 Então é assim que o código do desenho pode começar. 00:01:24.368 --> 00:01:28.348 Temos variáveis "faceX" e "faceY" para iniciar o centro do rosto 00:01:28.519 --> 00:01:31.979 e então desenhamos os olhos e a boca relativas a essas variáveis. 00:01:32.765 --> 00:01:36.608 Agora, o programa vê o código e não está dentro de nenhuma função. 00:01:36.608 --> 00:01:39.048 Então ele o lê e executa só uma vez. 00:01:39.945 --> 00:01:47.092 Vamos transformar em uma função. Para isso, fazemos algo parecido com 00:01:47.092 --> 00:01:50.192 o modo de declarar uma variável, pois é isso que queremos. 00:01:50.192 --> 00:01:54.142 Então escrevemos "var drawWinston" - Damos um bom nome - bem fácil - 00:01:54.269 --> 00:01:59.189 e depois "=", mas aqui ao invés de escrever um número ou uma corda, 00:01:59.257 --> 00:02:09.557 escrevemos "function()",e depois uma chave aberta e uma fechada. 00:02:09.837 --> 00:02:11.037 e o ponto e vírgula ; 00:02:11.074 --> 00:02:15.643 Ok, então o que precisamos fazer é colocar tudo que queremos 00:02:15.643 --> 00:02:22.124 dentro da função entre as chaves. Pegamos todo o código e colocamos 00:02:22.124 --> 00:02:23.414 dentro da função. 00:02:26.810 --> 00:02:30.088 E agora o que temos é uma variável que guarda uma função. 00:02:30.088 --> 00:02:34.007 Basicamente demos uma etiqueta a esse bloco de código. 00:02:34.007 --> 00:02:40.107 Para dizer ao programa a qualquer hora achar esse bloco e executá-lo. 00:02:40.482 --> 00:02:47.529 Então fazemos esse código reutilizável. Mas agora perceba que Winston sumiu. 00:02:47.529 --> 00:02:52.579 Para onde ele foi? O que aconteceu foi que ao colocar o código na função. 00:02:53.141 --> 00:02:57.711 Dizemos ao programa: esses são códigos que eu quero executar depois, 00:02:58.273 --> 00:03:00.373 Mas, somente quando eu quiser. 00:03:00.958 --> 00:03:03.258 Então temos que dizer para executar o código. 00:03:03.443 --> 00:03:06.333 Quer dizer que precisamos "chamar" a função 00:03:06.333 --> 00:03:08.830 Como fazemos com ellipse(). rect() e line(). 00:03:09.387 --> 00:03:15.541 Então escrevemos o nome da função ('drawWinston') seguido do parêntese 00:03:15.541 --> 00:03:20.881 aberto e fechado '()' e o ponto e vírgula ; e então, temos um Winston. 00:03:20.896 --> 00:03:25.149 OK, eu acho legal, mas você pode não achar, pois o que fizemos é fazer 00:03:25.149 --> 00:03:28.179 o programa executar exatamente o que fez antes. 00:03:30.079 --> 00:03:34.119 O ponto das funções é que podemos reutilizá-las. Então vamos fazer isso. 00:03:34.728 --> 00:03:43.528 Podemos copiar e colar essa função repetidas vezes. Mas, parece o mesmo. 00:03:44.285 --> 00:03:50.775 Bom, funcionou. Desenhou vários Winstons, mas estão no mesmo lugar. 00:03:51.108 --> 00:03:57.986 Se tivessemos visão de raio X, poderiamos ver 3 Winstons, mas não temos. 00:03:58.076 --> 00:03:59.664 Eu não sei quanto a você. 00:03:59.944 --> 00:04:04.364 Mas, faremos uma mudança na função que será bastante óbvio. 00:04:04.723 --> 00:04:09.653 Você vê faceX e faceY- estão sempre 202 e 208? Podemos mudar isso 00:04:09.655 --> 00:04:16.555 usando a função random()-de 35 a 350. Assim terá um número aleatório. 00:04:16.712 --> 00:04:21.271 Faremos a mesma coisa aqui, então, toda vez que "chamamos" a função, 00:04:21.271 --> 00:04:25.177 gerará um número aleatório e se pressionamos "restart", teremos 00:04:25.177 --> 00:04:27.407 Winstons aleatórios, muito legal. 00:04:30.022 --> 00:04:33.558 Eu acho isso legal, pois teríamos de escrever vários códigos 00:04:33.558 --> 00:04:34.878 se não tivéssemos a função. 00:04:34.878 --> 00:04:36.743 Teríamos três vezes o mesmo código. 00:04:38.183 --> 00:04:43.073 Mas ainda não é tão útil quanto poderia, pois, não queremos Winstons aleatórios, 00:04:43.409 --> 00:04:46.589 Queremos posicionar os Winstons em um ponto específico na tela. 00:04:47.053 --> 00:04:50.093 Então fiquem ligados, pois falaremos sobre passar parâmentros 00:04:50.093 --> 00:04:54.185 às nossas funções, e então você poderá fazer isso. 00:04:54.185 --> 00:04:59.595 Legendado por [Alef Almeida] Revisado por [Cainã Perri]