< Return to Video

For Loops (10 mins)

  • 0:01 - 0:05
    En este tópico de esta sección, que es llamado un
    for-loop. Y esto va a dar un
  • 0:05 - 0:10
    gran incremento en lo que podemos hacer con nuestro código.
    Así, si miramos en la imagen
  • 0:10 - 0:15
    original de las flores, aquí, es de 457 pixeles de ancho por 360 pixeles. Entonces, si tu
  • 0:15 - 0:20
    multiplicas solo para tener el número total de pixeles hay alrededor de 164000
  • 0:20 - 0:25
    pixeles. Y esta es una pequeña imagen. Así que hay un montón de pixeles. Por la forma en que
  • 0:25 - 0:30
    estabamos escribiendo código antes, donde tenías una línea como pixel.setRed(255) para
  • 0:30 - 0:34
    cambiar un pixel a rojo, esto es, esto no es
    una manera práctica de hacer una
  • 0:34 - 0:39
    operación en una imagen completa. Me refiero a, esta es
    una imagen pequeña con mas de 100,000
  • 0:39 - 0:44
    pixeles. Así que necesitamos construir algo donde
    podamos escribir unas pocas líneas de código
  • 0:44 - 0:49
    que capture un cambio que queremos hacer y entonces la computadora se encargue de
  • 0:49 - 0:55
    manejar las lineas de código y ejecutándolas una y otra vez por cada pixel que hay en la
  • 0:55 - 1:00
    imagen. Así el para-loop, el tópico de esta sección, hará exactamente esto y esto
  • 1:00 - 1:05
    va a ser un gran incremento en lo que podemos
    hacer con, con el código. Entonces, dejenme hablar
  • 1:05 - 1:09
    sobre la, la estructura de esto. Solo
    identificaré las partes y entonces
  • 1:09 - 1:14
    daré un ejemplo. Entonces, aquí en la caja azul tengo una figura con un for-loop
  • 1:14 - 1:21
    y solo hablaré de las partes que son.
    Esto comienza. Y usaré mi
  • 1:21 - 1:27
    pluma. Esto, esto empieza el for-loop así que comienza con la palabra for y entonces en paréntesis
  • 1:27 - 1:33
    dice pixel punto y coma imagen y entonces hay un corchete que inicia para colocar la
  • 1:33 - 1:39
    siguiente línea y así lo que esto significa. Y todos los
    sintaxis requieren los paréntesis
  • 1:39 - 1:43
    y el corchete y todo. Usualmente en mis
    ejemplos o en los ejercicios
  • 1:43 - 1:48
    bueno, es solo, que es lo mismo cada vez.. Así que usualmente proveeremos esto y entonces
  • 1:48 - 1:52
    solo le pedimos que escriba el código en la siguiente línea.
    Así que lo que esto significa es, por
  • 1:52 - 1:56
    cada pixel en esta imagen, por favor has lo siguiente
    y lo siguiente está definido
  • 1:56 - 2:04
    como lo que esta en los corchetes resaltados
    aquí. Entonce, estas líneas
  • 2:04 - 2:09
    dentro de esto. Es decir, lo que llamamos el cuerpo de el
    for-loop. Y esto es
  • 2:09 - 2:15
    solo unas pocas líneas de código que pueden hacer, cualquier cosa que querramos. Así, el modo en que
  • 2:15 - 2:20
    el for-loop trabaja, y digamos que estamos, tu sabes,
    trabajando en la imagen de las flores aquí.
  • 2:20 - 2:25
    Es. Aquí tenemos tres líneas. Así por lo que tomaremos, digamos, el pixel número uno de
  • 2:25 - 2:30
    toda la imagen, el pixel superior izquiero. Y así
    esto, esto aisla el pixel número uno. Y entonces
  • 2:30 - 2:33
    el for-loop ejecuta estas, estas tres líneas. Así esto dice, pixel punto colocar rojo a cero
  • 2:33 - 2:37
    Pixel punto colocar verde en cero, Pixel punto colocar azul en cero. Por lo que todo esto es lo que le
  • 2:37 - 2:41
    está pasando al pixel #uno. Y entonces esto, realmente, lo que hace es cambiarlo a
  • 2:41 - 2:45
    negro, ¿Correcto?, esto coloca rojo, verde y azul
    a cero. Así que cuando el for-loop llega hasta
  • 2:45 - 2:50
    abajo una cosa graciosa sucede y tengo una flecha negra. Se regresa
  • 2:50 - 2:55
    a la parte superior de las tres líneas, y ahora este
    va a aislar el pixel número dos,
  • 2:55 - 2:59
    así el segundo píxel, y entonces esto ejecuta estas
    tres líneas nuevamente. Y esto hace para
  • 2:59 - 3:04
    el pixel dos y entonces vuelve a la parte superior y
    ejecuta las tres líneas de nuevo a partir
  • 3:04 - 3:09
    del pixel tres, etcétera, Esto solo ejecuta las líneas
    una y otra y otra vez.
  • 3:09 - 3:15
    por cada pixel en la imagen. Así. La, oh! otra
    cosa debo señalar aquí
  • 3:15 - 3:19
    es que te darás cuenta de que, las tres líneas en el cuerpo
    son identadas (tabuladas) y esto no es
  • 3:19 - 3:23
    requerido pero esto es un, esto es una convención
    común para mostrar que las líneas en el
  • 3:23 - 3:27
    cuerpo son un poco diferentes a las otras líneas de
    código. Donde esta imagen es igual a una nueva
  • 3:27 - 3:31
    simpleImage, bueno, esto solo pasa una vez e
    imprime la imagen.
  • 3:31 - 3:36
    Pero las líneas dentro del ciclo son un poco especiales
    en que ellas tienen la calidad que
  • 3:36 - 3:40
    ellas están siendo ejecutadas una y otra vez. Así que tratemos. Solo ejecutaremos, el ejemplo
  • 3:40 - 3:45
    exacto. Así aquí tengo ese código ejecutable así el,que carga la imagen. Entonces
  • 3:45 - 3:49
    tengo el, el for-loop salido del cuerpo. Aquí
    están las tres líneas del
  • 3:49 - 3:54
    cuerpo. Y entonces esto, es algo pequeño aquí pero hay una, una llave de cierre
  • 3:54 - 3:59
    una especie de equilibro entre la llave de apertura
    que aquí cierra el cuerpo. Así que vamos solo a
  • 3:59 - 4:03
    ejecutar esto. A ver que tenemos. Así puedes ver,
    que tenemos es este rectángulo negro
  • 4:03 - 4:08
    puro, y es, esto no es muy útil pero esto, esto
    muestra lo que el for-loop hace
  • 4:08 - 4:12
    Así que lo que ha pasado es, tenemos la imagen
    original de las flores con todos los tipos de
  • 4:12 - 4:17
    rojo y verde y amarillo y lo demas. Y
    lo que este código ha hecho, esto ha
  • 4:17 - 4:22
    visitado cada píxel en la imagen y corrido estas tres líneas. Y lo que hacen es
  • 4:22 - 4:26
    que toman y ponen el rojo, verde y azul en ceros, asi que en realidad solo
  • 4:26 - 4:31
    cambian el pixel para que sean completamente negros. Entonces, si puedes imaginar que
  • 4:31 - 4:36
    esto esta pasando sobre toda la imagen de la flor, destruyendo toda la información, esto es
  • 4:36 - 4:41
    lo que nos deja, un rectángulo completamente negro. Ok. Dejenme intentar otro
  • 4:41 - 4:48
    ejemplo más interesante. Aqui voy a decir que por cada pixel, poner rojo, verde umm rojo
  • 4:48 - 4:54
    y verde en 255 y azul en cero. Entonces, quiero pensar, ¿cual es el codigo para
  • 4:54 - 4:58
    hacer eso?. Muchas veces, para estos problemas, tenemos el patrón que en Ingles,
  • 4:58 - 5:02
    nos dice, ok, tenemos, ya saben, para hacer este efecto, poner rojo en 255 o lo que sea. Y
  • 5:02 - 5:07
    finalmente, en el ejercicio, sera tu trabajo el traducir eso a
  • 5:07 - 5:12
    código. Asi que aquí esta el ejemplo de ese patrón. Entonces, el codigo para poner en
  • 5:12 - 5:17
    el cuerpo para cambiar rojo y verde a 255 y azul a cero es primero decir, las
  • 5:17 - 5:21
    primeras dos lineas dirán, pixel.setRed(255) y pixel.setGreen(255) y entonces, la
  • 5:21 - 5:26
    tercer linea seria pixel.setBlue(0). Asi que si corro eso. Lo que vemos es este
  • 5:26 - 5:30
    rectángulo amarillo brillante asi que esto es similar al ejemplo anterior. Hemos
  • 5:30 - 5:35
    cambiado el verde y el azul en cada pixel en esta imagen
  • 5:35 - 5:40
    en este caso para obtener este amarillo vibrante. Asi que estos dos ejemplos no son
  • 5:40 - 5:44
    nada realisticos verdad? Acabo de, acabamos de destruir toda la información e hicimos
  • 5:44 - 5:48
    este rectángulo de un solo color. Asi que ahora quiero intentar uno que es algo más
  • 5:48 - 5:52
    realistico, donde, en lugar de destruir toda la información de la imagen de
  • 5:52 - 5:57
    las flores, trabajamos con ella. Asi que aquí tenemos la, la imagen original de las flores. I como sabemos
  • 5:57 - 6:03
    amarillo es igual a rojo más amarillo asi que podriamos esperar que aqui donde tengo las flores
  • 6:03 - 6:09
    amarillas el rojo y el verde son altos. Así que lo que quiero hacer para
  • 6:09 - 6:14
    este ejemplo es poner el rojo en cero para toda la imagen. Piensa sobre que es lo que eso
  • 6:14 - 6:19
    va a hacer. Así que la primera pregunta es, bueno, cual es el código para hacer eso? Y
  • 6:19 - 6:24
    en este caso lo que ves es, solo tengo la linea pixel.setRed(0) como el
  • 6:24 - 6:28
    cuerpo. Ahora, en los ultimos ejempos el cuerpo fue de tres lineas de código. Podria ser,
  • 6:28 - 6:33
    podria ser cualquier cosa. Asi que puede ser tres o seis lineas. En este caso solamente va a
  • 6:33 - 6:38
    ser una linea. Y lo que esto dice, ya sabes, lo que diria en ingles para
  • 6:38 - 6:42
    este for-loop es, para cada pixel en la imagen, pon el rojo en cero. Asi que vamos a ver
  • 6:42 - 6:47
    como se ve. Si corro esto, lo que ves es algo como...
  • 6:47 - 6:52
    las flores han cambiado para ahora verse como flores verdes radioactivas.
  • 6:52 - 6:56
    Y esto tiene sentido si ves que es lo que hacian a las flores verse amarillas
  • 6:56 - 7:00
    antes eran amarillas porque tenian una combinación de luz roja y verde.
  • 7:00 - 7:04
    Lo que este codigo hace, solo pone en cero toda la luz roja. Es como si
  • 7:04 - 7:08
    apagaramos la lamprara a cero en toda la imagen. Asi que lo que tenemos al final es solo
  • 7:08 - 7:12
    la luz verde que estaba en la imagen. Otra cosa que hay que ver, viendo
  • 7:12 - 7:15
    aqui, a las hojas verdes en la parte de abajo en la derecha. No se ven
  • 7:15 - 7:19
    muy diferente asi que probablemente esto solo era luz verde para empezar. La luz
  • 7:19 - 7:23
    roja tenia, probablemente un valor de ocho o veinte, o algo asi. Así que cuando
  • 7:23 - 7:30
    cambiamos eso a cero en realidad no hizo mucha diferencia. Vamos
  • 7:30 - 7:35
    a intentar otro ejemplo. Para este voy a empezar con la imagen de
  • 7:35 - 7:41
    las flores y voy a decir que verde y azul sean cero y dejar rojo como esta. Entonces cual
  • 7:41 - 7:46
    es el código para eso? Bueno, voy a tener un cuerpo de dos lineas. Voy a decir
  • 7:46 - 7:52
    pixel.setGreen(0) y pixel.setBlue(0), y yo solo no voy a cambiar
  • 7:52 - 7:58
    el rojo, asi que se quede en lo que sea que esta. Asi que corramos eso. Y lo que ves
  • 7:58 - 8:05
    es que ahora tenemos estas flores rojas. Y lo que paso aquí es que, esto en realidad es
  • 8:05 - 8:09
    el canal rojo de la imagen. Y lo que paso es que, normalmente, la imagen es
  • 8:09 - 8:14
    esta combinación de luz roja, luz verde, y luz azul. Lo que hemos hecho es que cambiamos
  • 8:14 - 8:18
    las luces verde y azul a cero. Así que bajando esos para que sean
  • 8:18 - 8:22
    nada. Y lo que nos queda es un mapa de, en donde habia luz roja en
  • 8:22 - 8:27
    esta imagen? Donde había rojo brillante y donde había rojo obscuro? y lo que vemos es, pues
  • 8:27 - 8:31
    aquí en la izquierda, donde estaba obscuro, no hay mucha luz roja. Y tambien,
  • 8:31 - 8:35
    aqui, en las hojas verdes. No hay mucho rojo. Y asi que en realidad solamente en
  • 8:35 - 8:40
    las flores amarillas, habia una area prominente de luz roja. Asi que eso es, es
  • 8:40 - 8:44
    una forma de ver la imagen. Tambien hay un canal azul y
  • 8:44 - 8:48
    un canal verde que no haria ver donde están esas luces
  • 8:48 - 8:55
    alternadas. Ok. Para el for-loop, dije que es una
  • 8:55 - 8:59
    herramienta muy poderosa que nos ayuda a escribir unas pocas lineas de código y deja que la computadora las
  • 8:59 - 9:03
    corra sobre un set grande de información. Pero, estamos
  • 9:03 - 9:08
    con las imagenes. Deberia de mencionar que el lenguaje de JavaScrips que están usando en realidad
  • 9:08 - 9:12
    no tiene un for-loop tan compacto como este. Es una omisión en el
  • 9:12 - 9:16
    lenguaje. Asi que para esta clase yo lo agrege para que trabajara aquí. Así que si tu estas
  • 9:16 - 9:20
    haciendo algún otro problema de JavaScript me temo que no tendras esto. Pero muchos
  • 9:20 - 9:24
    lenguajes si tienen el for-loop que se ve igual que este. Es algo raro
  • 9:24 - 9:30
    que JavaScrips lo omita. Asi que este es el patrón para escribir en código, ya
  • 9:30 - 9:34
    sabes, solo en el sentido de que este pequeño pedazo de código captura lo que queremos y yo
  • 9:34 - 9:39
    diría que esto refleja el tema de la idea de que las computadoras son poderosas y
  • 9:39 - 9:44
    tambien algo estupidas. Asi que si tu quieres escribir código que es más interesante, como
  • 9:44 - 9:48
    cambiar el verde de esta forma o de aquella o lo que sea. Y entonces insertandolo en
  • 9:48 - 9:53
    el for-loop tenemos este trabajo en equipo con la computadora donde la computadora tomara
  • 9:53 - 9:57
    cargo de lo dificil, como correr algo cien mil o
  • 9:57 - 10:02
    millones de veces. La computadora hace eso pero tambien, la computadora esta
  • 10:02 - 10:05
    en realidad haciendo algo muy mecanico. Asi que yo creo que
  • 10:05 - 10:10
    esto si muestra el tema general de como son las computadoras. Que las
  • 10:10 - 10:14
    computadoras manejan la parte mecanica rapidamente pero la persona tiene que añadir la
  • 10:14 - 10:19
    creatividad para controlar lo que en realidad va a suceder. Asi que en la proxima sección
  • 10:19 - 10:24
    -y hay unos ejercicios que se ven algo asi- y despues en la proxima sección necesito
  • 10:24 - 10:28
    añadir una cosa mas que nos permitirá hacer ejemplos de como procesar
  • 10:28 - 10:31
    la imagen asi que son mucho mas interesantes.
Title:
For Loops (10 mins)
Description:

L.I.

more » « less
Video Language:
English
anukis820 edited Spanish subtitles for For Loops
anukis820 edited Spanish subtitles for For Loops
anukis820 edited Spanish subtitles for For Loops
Ivan Aveiga edited Spanish subtitles for For Loops
Ivan Aveiga edited Spanish subtitles for For Loops
Ivan Aveiga edited Spanish subtitles for For Loops
Ivan Aveiga edited Spanish subtitles for For Loops
Ivan Aveiga edited Spanish subtitles for For Loops
Show all

Spanish subtitles

Revisions