1 00:00:01,240 --> 00:00:05,407 Vamos falar de algo que você usa bastante: Funções. 2 00:00:05,887 --> 00:00:11,089 Sempre se usa comandos como: rect(), fill() ou text(), se usa funções. 3 00:00:11,469 --> 00:00:13,806 E elasdesenham o que você as diz para fazer. 4 00:00:14,876 --> 00:00:19,736 O que é uma função? É uma coleção de códigos que agrupamos e nomeamos 5 00:00:19,877 --> 00:00:23,067 Pois queremos usá-los várias vezes. 6 00:00:23,897 --> 00:00:28,367 Pense no rect() O que rect() faz? Ele apenas desenha quatro linhas, certo? 7 00:00:28,714 --> 00:00:31,434 Poderíamos apenas usar a função line(), certo? 8 00:00:31,597 --> 00:00:35,838 e aqui temos o que se parece com um retângulo. Mas percebemos que 9 00:00:35,928 --> 00:00:40,690 queremos desenhas um retângulo várias vezes. E seria muito chato ter que fazer 10 00:00:40,690 --> 00:00:44,820 contas toda vez para desenhar uma linha para os próximos pontos. 11 00:00:45,251 --> 00:00:50,521 Ao invés disso, fazemos apenas a função rect() que faz a mesma coisa 12 00:00:50,533 --> 00:00:53,543 que a funções line() fizeram, mas, em muito menos códigos. 13 00:00:54,690 --> 00:00:59,480 Isso é muito legal e rect() é uma dessas funções disponíveis para todos os 14 00:00:59,480 --> 00:01:05,213 programas na Khan Academy. Mas você também pode fazer suas próprias funções 15 00:01:05,213 --> 00:01:07,383 para usar em seus programas. 16 00:01:07,605 --> 00:01:12,105 Por exemplo: estamos fazendo um programa e queremos desenhar 17 00:01:12,105 --> 00:01:16,702 "Winston" várias vezes, talvez vamos contar a história de Winston 18 00:01:16,873 --> 00:01:19,133 e mostrá-lo em cada época de sua vida. 19 00:01:20,120 --> 00:01:23,480 Então é assim que o código do desenho pode começar. 20 00:01:24,368 --> 00:01:28,348 Temos variáveis "faceX" e "faceY" para iniciar o centro do rosto 21 00:01:28,519 --> 00:01:31,979 e então desenhamos os olhos e a boca relativas a essas variáveis. 22 00:01:32,765 --> 00:01:36,608 Agora, o programa vê o código e não está dentro de nenhuma função. 23 00:01:36,608 --> 00:01:39,048 Então ele o lê e executa só uma vez. 24 00:01:39,945 --> 00:01:47,092 Vamos transformar em uma função. Para isso, fazemos algo parecido com 25 00:01:47,092 --> 00:01:50,192 o modo de declarar uma variável, pois é isso que queremos. 26 00:01:50,192 --> 00:01:54,142 Então escrevemos "var drawWinston" - Damos um bom nome - bem fácil - 27 00:01:54,269 --> 00:01:59,189 e depois "=", mas aqui ao invés de escrever um número ou uma corda, 28 00:01:59,257 --> 00:02:09,557 escrevemos "function()",e depois uma chave aberta e uma fechada. 29 00:02:09,837 --> 00:02:11,037 e o ponto e vírgula ; 30 00:02:11,074 --> 00:02:15,643 Ok, então o que precisamos fazer é colocar tudo que queremos 31 00:02:15,643 --> 00:02:22,124 dentro da função entre as chaves. Pegamos todo o código e colocamos 32 00:02:22,124 --> 00:02:23,414 dentro da função. 33 00:02:26,810 --> 00:02:30,088 E agora o que temos é uma variável que guarda uma função. 34 00:02:30,088 --> 00:02:34,007 Basicamente demos uma etiqueta a esse bloco de código. 35 00:02:34,007 --> 00:02:40,107 Para dizer ao programa a qualquer hora achar esse bloco e executá-lo. 36 00:02:40,482 --> 00:02:47,529 Então fazemos esse código reutilizável. Mas agora perceba que Winston sumiu. 37 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. 38 00:02:53,141 --> 00:02:57,711 Dizemos ao programa: esses são códigos que eu quero executar depois, 39 00:02:58,273 --> 00:03:00,373 Mas, somente quando eu quiser. 40 00:03:00,958 --> 00:03:03,258 Então temos que dizer para executar o código. 41 00:03:03,443 --> 00:03:06,333 Quer dizer que precisamos "chamar" a função 42 00:03:06,333 --> 00:03:08,830 Como fazemos com ellipse(). rect() e line(). 43 00:03:09,387 --> 00:03:15,541 Então escrevemos o nome da função ('drawWinston') seguido do parêntese 44 00:03:15,541 --> 00:03:20,881 aberto e fechado '()' e o ponto e vírgula ; e então, temos um Winston. 45 00:03:20,896 --> 00:03:25,149 OK, eu acho legal, mas você pode não achar, pois o que fizemos é fazer 46 00:03:25,149 --> 00:03:28,179 o programa executar exatamente o que fez antes. 47 00:03:30,079 --> 00:03:34,119 O ponto das funções é que podemos reutilizá-las. Então vamos fazer isso. 48 00:03:34,728 --> 00:03:43,528 Podemos copiar e colar essa função repetidas vezes. Mas, parece o mesmo. 49 00:03:44,285 --> 00:03:50,775 Bom, funcionou. Desenhou vários Winstons, mas estão no mesmo lugar. 50 00:03:51,108 --> 00:03:57,986 Se tivessemos visão de raio X, poderiamos ver 3 Winstons, mas não temos. 51 00:03:58,076 --> 00:03:59,664 Eu não sei quanto a você. 52 00:03:59,944 --> 00:04:04,364 Mas, faremos uma mudança na função que será bastante óbvio. 53 00:04:04,723 --> 00:04:09,653 Você vê faceX e faceY- estão sempre 202 e 208? Podemos mudar isso 54 00:04:09,655 --> 00:04:16,555 usando a função random()-de 35 a 350. Assim terá um número aleatório. 55 00:04:16,712 --> 00:04:21,271 Faremos a mesma coisa aqui, então, toda vez que "chamamos" a função, 56 00:04:21,271 --> 00:04:25,177 gerará um número aleatório e se pressionamos "restart", teremos 57 00:04:25,177 --> 00:04:27,407 Winstons aleatórios, muito legal. 58 00:04:30,022 --> 00:04:33,558 Eu acho isso legal, pois teríamos de escrever vários códigos 59 00:04:33,558 --> 00:04:34,878 se não tivéssemos a função. 60 00:04:34,878 --> 00:04:36,743 Teríamos três vezes o mesmo código. 61 00:04:38,183 --> 00:04:43,073 Mas ainda não é tão útil quanto poderia, pois, não queremos Winstons aleatórios, 62 00:04:43,409 --> 00:04:46,589 Queremos posicionar os Winstons em um ponto específico na tela. 63 00:04:47,053 --> 00:04:50,093 Então fiquem ligados, pois falaremos sobre passar parâmentros 64 00:04:50,093 --> 00:04:54,185 às nossas funções, e então você poderá fazer isso. 65 00:04:54,185 --> 00:04:59,595 Legendado por [Alef Almeida] Revisado por [Cainã Perri]