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