[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.24,0:00:05.41,Default,,0000,0000,0000,,Vamos falar de algo que você \Nusa bastante: Funções. Dialogue: 0,0:00:05.89,0:00:11.09,Default,,0000,0000,0000,,Sempre se usa comandos como:\Nrect(), fill() ou text(), se usa funções. Dialogue: 0,0:00:11.47,0:00:13.81,Default,,0000,0000,0000,,E elasdesenham o que você\Nas diz para fazer. Dialogue: 0,0:00:14.88,0:00:19.74,Default,,0000,0000,0000,,O que é uma função? É uma coleção de \Ncódigos que agrupamos e nomeamos Dialogue: 0,0:00:19.88,0:00:23.07,Default,,0000,0000,0000,,Pois queremos usá-los várias vezes. Dialogue: 0,0:00:23.90,0:00:28.37,Default,,0000,0000,0000,,Pense no rect() O que rect() faz? Ele\Napenas desenha quatro linhas, certo? Dialogue: 0,0:00:28.71,0:00:31.43,Default,,0000,0000,0000,,Poderíamos apenas usar a função line(),\Ncerto? Dialogue: 0,0:00:31.60,0:00:35.84,Default,,0000,0000,0000,,e aqui temos o que se parece com um\Nretângulo. Mas percebemos que Dialogue: 0,0:00:35.93,0:00:40.69,Default,,0000,0000,0000,,queremos desenhas um retângulo várias\Nvezes. E seria muito chato ter que fazer Dialogue: 0,0:00:40.69,0:00:44.82,Default,,0000,0000,0000,,contas toda vez para desenhar uma \Nlinha para os próximos pontos. Dialogue: 0,0:00:45.25,0:00:50.52,Default,,0000,0000,0000,,Ao invés disso, fazemos apenas a \Nfunção rect() que faz a mesma coisa Dialogue: 0,0:00:50.53,0:00:53.54,Default,,0000,0000,0000,,que a funções line() fizeram, mas, em\Nmuito menos códigos. Dialogue: 0,0:00:54.69,0:00:59.48,Default,,0000,0000,0000,,Isso é muito legal e rect() é uma dessas\Nfunções disponíveis para todos os Dialogue: 0,0:00:59.48,0:01:05.21,Default,,0000,0000,0000,,programas na Khan Academy. Mas você\Ntambém pode fazer suas próprias funções Dialogue: 0,0:01:05.21,0:01:07.38,Default,,0000,0000,0000,,para usar em seus programas. Dialogue: 0,0:01:07.60,0:01:12.10,Default,,0000,0000,0000,,Por exemplo: estamos fazendo um\Nprograma e queremos desenhar Dialogue: 0,0:01:12.10,0:01:16.70,Default,,0000,0000,0000,,"Winston" várias vezes, talvez vamos \Ncontar a história de Winston Dialogue: 0,0:01:16.87,0:01:19.13,Default,,0000,0000,0000,,e mostrá-lo em cada época de sua vida. Dialogue: 0,0:01:20.12,0:01:23.48,Default,,0000,0000,0000,,Então é assim que o código do desenho\Npode começar. Dialogue: 0,0:01:24.37,0:01:28.35,Default,,0000,0000,0000,,Temos variáveis "faceX" e "faceY"\Npara iniciar o centro do rosto Dialogue: 0,0:01:28.52,0:01:31.98,Default,,0000,0000,0000,,e então desenhamos os olhos e a boca\Nrelativas a essas variáveis. Dialogue: 0,0:01:32.76,0:01:36.61,Default,,0000,0000,0000,,Agora, o programa vê o código e não\Nestá dentro de nenhuma função. Dialogue: 0,0:01:36.61,0:01:39.05,Default,,0000,0000,0000,,Então ele o lê e executa só uma vez. Dialogue: 0,0:01:39.94,0:01:47.09,Default,,0000,0000,0000,,Vamos transformar em uma função.\NPara isso, fazemos algo parecido com Dialogue: 0,0:01:47.09,0:01:50.19,Default,,0000,0000,0000,,o modo de declarar uma variável, pois é\Nisso que queremos. Dialogue: 0,0:01:50.19,0:01:54.14,Default,,0000,0000,0000,,Então escrevemos "var drawWinston" \N- Damos um bom nome - bem fácil - Dialogue: 0,0:01:54.27,0:01:59.19,Default,,0000,0000,0000,,e depois "=", mas aqui ao invés de\Nescrever um número ou uma corda, Dialogue: 0,0:01:59.26,0:02:09.56,Default,,0000,0000,0000,,escrevemos "function()",e depois\Numa chave aberta e uma fechada. Dialogue: 0,0:02:09.84,0:02:11.04,Default,,0000,0000,0000,,e o ponto e vírgula ; Dialogue: 0,0:02:11.07,0:02:15.64,Default,,0000,0000,0000,,Ok, então o que precisamos fazer é\Ncolocar tudo que queremos Dialogue: 0,0:02:15.64,0:02:22.12,Default,,0000,0000,0000,,dentro da função entre as chaves.\NPegamos todo o código e colocamos Dialogue: 0,0:02:22.12,0:02:23.41,Default,,0000,0000,0000,,dentro da função. Dialogue: 0,0:02:26.81,0:02:30.09,Default,,0000,0000,0000,,E agora o que temos é uma variável que\Nguarda uma função. Dialogue: 0,0:02:30.09,0:02:34.01,Default,,0000,0000,0000,,Basicamente demos uma etiqueta\Na esse bloco de código. Dialogue: 0,0:02:34.01,0:02:40.11,Default,,0000,0000,0000,,Para dizer ao programa a qualquer hora \Nachar esse bloco e executá-lo. Dialogue: 0,0:02:40.48,0:02:47.53,Default,,0000,0000,0000,,Então fazemos esse código reutilizável.\NMas agora perceba que Winston sumiu. Dialogue: 0,0:02:47.53,0:02:52.58,Default,,0000,0000,0000,,Para onde ele foi? O que aconteceu foi\Nque ao colocar o código na função. Dialogue: 0,0:02:53.14,0:02:57.71,Default,,0000,0000,0000,,Dizemos ao programa: esses são\Ncódigos que eu quero executar depois, Dialogue: 0,0:02:58.27,0:03:00.37,Default,,0000,0000,0000,,Mas, somente quando eu quiser. Dialogue: 0,0:03:00.96,0:03:03.26,Default,,0000,0000,0000,,Então temos que dizer para\Nexecutar o código. Dialogue: 0,0:03:03.44,0:03:06.33,Default,,0000,0000,0000,,Quer dizer que precisamos "chamar"\Na função Dialogue: 0,0:03:06.33,0:03:08.83,Default,,0000,0000,0000,,Como fazemos com ellipse(). rect() e\Nline(). Dialogue: 0,0:03:09.39,0:03:15.54,Default,,0000,0000,0000,,Então escrevemos o nome da função\N('drawWinston') seguido do parêntese Dialogue: 0,0:03:15.54,0:03:20.88,Default,,0000,0000,0000,,aberto e fechado '()' e o ponto e vírgula ;\Ne então, temos um Winston. Dialogue: 0,0:03:20.90,0:03:25.15,Default,,0000,0000,0000,,OK, eu acho legal, mas você pode não\Nachar, pois o que fizemos é fazer Dialogue: 0,0:03:25.15,0:03:28.18,Default,,0000,0000,0000,,o programa executar exatamente o que\Nfez antes. Dialogue: 0,0:03:30.08,0:03:34.12,Default,,0000,0000,0000,,O ponto das funções é que podemos\Nreutilizá-las. Então vamos fazer isso. Dialogue: 0,0:03:34.73,0:03:43.53,Default,,0000,0000,0000,,Podemos copiar e colar essa função\Nrepetidas vezes. Mas, parece o mesmo. Dialogue: 0,0:03:44.28,0:03:50.78,Default,,0000,0000,0000,,Bom, funcionou. Desenhou vários\NWinstons, mas estão no mesmo lugar. Dialogue: 0,0:03:51.11,0:03:57.99,Default,,0000,0000,0000,,Se tivessemos visão de raio X, poderiamos \Nver 3 Winstons, mas não temos. Dialogue: 0,0:03:58.08,0:03:59.66,Default,,0000,0000,0000,,Eu não sei quanto a você. Dialogue: 0,0:03:59.94,0:04:04.36,Default,,0000,0000,0000,,Mas, faremos uma mudança na função\Nque será bastante óbvio. Dialogue: 0,0:04:04.72,0:04:09.65,Default,,0000,0000,0000,,Você vê faceX e faceY- estão sempre\N202 e 208? Podemos mudar isso Dialogue: 0,0:04:09.66,0:04:16.56,Default,,0000,0000,0000,,usando a função random()-de 35 a 350.\NAssim terá um número aleatório. Dialogue: 0,0:04:16.71,0:04:21.27,Default,,0000,0000,0000,,Faremos a mesma coisa aqui, então,\Ntoda vez que "chamamos" a função, Dialogue: 0,0:04:21.27,0:04:25.18,Default,,0000,0000,0000,,gerará um número aleatório e se\Npressionamos "restart", teremos Dialogue: 0,0:04:25.18,0:04:27.41,Default,,0000,0000,0000,,Winstons aleatórios, muito legal. Dialogue: 0,0:04:30.02,0:04:33.56,Default,,0000,0000,0000,,Eu acho isso legal, pois teríamos de\Nescrever vários códigos Dialogue: 0,0:04:33.56,0:04:34.88,Default,,0000,0000,0000,,se não tivéssemos a função. Dialogue: 0,0:04:34.88,0:04:36.74,Default,,0000,0000,0000,,Teríamos três vezes o mesmo código. Dialogue: 0,0:04:38.18,0:04:43.07,Default,,0000,0000,0000,,Mas ainda não é tão útil quanto poderia,\Npois, não queremos Winstons aleatórios, Dialogue: 0,0:04:43.41,0:04:46.59,Default,,0000,0000,0000,,Queremos posicionar os Winstons em\Num ponto específico na tela. Dialogue: 0,0:04:47.05,0:04:50.09,Default,,0000,0000,0000,,Então fiquem ligados, pois falaremos\Nsobre passar parâmentros Dialogue: 0,0:04:50.09,0:04:54.18,Default,,0000,0000,0000,,às nossas funções, e então você poderá\Nfazer isso. Dialogue: 0,0:04:54.18,0:04:59.60,Default,,0000,0000,0000,,Legendado por [Alef Almeida]\NRevisado por [Cainã Perri]