1 00:00:01,383 --> 00:00:05,750 Ahora hablemos acerca de algo que has estado usando todo el tiempo: Funciones 2 00:00:05,750 --> 00:00:09,113 Cada vez que haz usado comandos cómo rsct() o fill() o tex() 3 00:00:09,113 --> 00:00:12,448 haz estado llamando funciones, y esas funciones han dibujado 4 00:00:12,448 --> 00:00:14,163 lo que tú le haz ordenado. 5 00:00:14,843 --> 00:00:18,800 Qué es una función realmente? Es una colección de código que hemos agrupado 6 00:00:18,800 --> 00:00:23,357 y dado un nombre porque queremos usar esa poca de funcionalidad muchas veces. 7 00:00:23,657 --> 00:00:28,355 Piensa en rect(). ¿Qué hace rect()? Sólo dibuja cuatro lineas, correcto? 8 00:00:28,355 --> 00:00:31,693 Nosotros podriamos hacer eso usando nuestra función line(), no es asi? 9 00:00:31,693 --> 00:00:34,205 Y aquí tenemos lo que parece ser un rectángulo. 10 00:00:34,205 --> 00:00:38,856 Pero nos damos cuenta que quisiéramos poder dibujar un rectángulo muchas veces 11 00:00:39,106 --> 00:00:43,707 Y sería realmente molesto hacer los cálculos cada vez para tratar de encontrar 12 00:00:43,707 --> 00:00:45,424 La forma de dibujar una línea desde una esquina a la otra, y la otra y la otra. 13 00:00:45,424 --> 00:00:50,009 Así que en vez de eso, tan sólo hacemos una función rect() y esa función hace exactamente 14 00:00:50,009 --> 00:00:53,694 Lo mismo que esas cuatro líneas de código, pero con mucho menos código. 15 00:00:55,264 --> 00:01:02,210 Así que eso es muy cool, y rect() es una de esas funciones que tenemos disponibles para TODOS los programas que usamos aquí en Khan Academy 16 00:01:02,750 --> 00:01:07,531 Pero, tu puedes también hacer tus propias funciones para usar en cada uno de tus programas. 17 00:01:07,531 --> 00:01:20,780 Por ejemplo, digamos que estamos haciendo un programa y queremos dibujar "Winston" muchas veces - tal vez porque vamos a contar la historia de la vida de Winston y mostrarlo en cada época de su vida. 18 00:01:20,780 --> 00:01:24,243 Así que esto es lo que sería el código para dibujar "Winston" inicialmente: 19 00:01:24,243 --> 00:01:32,768 Tenemos las variables 'faceX' y 'faceY' para almacenar el centro de la cara, y entonces dibujar los ojos y la boca en posiciones relativas a esas variables. 20 00:01:32,768 --> 00:01:39,705 En este momento el programa ve el código, y no está dentro de ninguna función, así que sólo lo ejecuta y este se ejecuta sólo una vez. 21 00:01:39,705 --> 00:01:49,336 De acuerdo, convirtamos esto en una función. Para hacerlo, lo hacemos de la misma forma que declaramos una variable, porque en realidad eso es lo que estamos haciendo. 22 00:01:49,336 --> 00:02:10,955 Así que decimos 'var drawWinston' - le damos un nombre bonito - muy descriptivo - y luego escribimos '=' pero aquí en vez de escribir un número o una cadena de caracteres, vamos a escribir 'function' (asegúrate de escribirlo correctamente) y luego abrimos y cerramos paréntesis '()' y luego abrimos corchetes '{' y cerramos corchetes '}' y nuestro punto y coma ';' 23 00:02:10,955 --> 00:02:26,791 Ok así que lo que necesitamos hacer es poner todo lo que queremos dentro de nuestra función entre las corchetes. Así que tomaremos todo este código de aquí, lo ponemos en nuestra función (usamos sangría), y "ta da!" 24 00:02:26,791 --> 00:02:43,964 Así que ahora lo que tenemos es una variable que almacena una función - básicamente hemos puesto una etiqueta a este bloque de código, de forma que podamos decirle a nuestro programa cuando queramos: "Oye encuentra ese bloque de código con esta etiqueta y ejecútalo!" De esta forma estamos haciendo que este fragmento del código sea re-usable. 25 00:02:43,964 --> 00:03:01,069 Pero ahora fíjate, no tenemos mas a "Winston"! Hemos perdido a "Winston"! A donde fue? OK - lo que sucedió fue que una vez que pusimos el código dentro de la función le dijimos a nuestro programa "oye aqui esta este trozo de código que queremos ejecutar mas tarde, pero sólo cuando te digamos que lo ejecutes" 26 00:03:01,069 --> 00:03:09,403 Así que tenemos que decirle que ejecute el código, lo que significa que debemos 'llamar' la función - tal cómo lo hacemos con ellipse(), rect() y line(). 27 00:03:09,403 --> 00:03:21,070 Así que sólo escribimos el nombre de la función ('drawWinston') seguida por nuestros paréntesis '()' y nuestro punto y coma y "ta da" Tenemos a Winston! 28 00:03:21,070 --> 00:03:29,673 De acuerdo! Así que piensas que es cool, pero podrías pensar que no ya que lo que hemos hecho es hacer que nuestro programa haga exactamente lo mismo que hacia antes. No es eso tonto? 29 00:03:29,673 --> 00:03:50,905 El punto de hacer una función es que podamos re-usarla. Así que hagamos eso. Podemos tan sólo copiar y pegar esta función y "ta da" "ta da" una y otra vez. Ummmm, pero parece igual - bien - funcionó - esta dibujando muchos Winstons, pero el problema es que están todos en el mismo lugar. 30 00:03:50,905 --> 00:03:59,632 Si tuviéramos visión de rayos x podríamos ver tres Winstons, pero no tenemos (no sé tu) 31 00:03:59,632 --> 00:04:04,837 Pero, podemos hacer un pequeño cambio a nuestra función que hiciera visible. 32 00:04:04,837 --> 00:04:30,133 Si observamos faceX y facY - siempre son 202 y 208? Podemos cambiar estos números usando la función random() desde 50 a 350 y generará un número aleatoria cada vez, y si reiniciamos podemos obtener Winstons aleatorios - eso es genial! 33 00:04:30,133 --> 00:04:38,403 Perfecto - Pienso que es genial porque se necesitaría un montón de código para escribir esto si no hubiéramos escrito una función. Tendríamos tres veces más código. 34 00:04:38,403 --> 00:04:47,238 Pero todavía no es TAN útil como podría ser, porque probablemente queremos Winstons aleatorios - probablemente queremos colocar a Winston en un punto específico de la pantalla. 35 00:04:47,238 --> 00:04:55,438 Así que mantente sintonizado porque próximamente hablaremos de cómo pasar parámetros a nuestras funciones.