Sie sind auf Seite 1von 54

Cuaderno terico de docentes

de primaria 2014
Versin 1.5

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Introduccin

Este cuaderno complementa las actividades diseadas en Scratch con informacin terica. Si
bien las actividades en s mismas son importantes, tambin lo son las conclusiones a las que
arribamos sobre los conceptos que se van presentando en un curso.

El objetivo de este documento es slo el de aportar cierto sustento terico a las actividades. Si
se desean estudiar estos temas en mayor profundidad, deben tomarse cursos acordes o
consultar bibliografa adecuada para tal fin.

Temario

Los contenidos son explicados en el orden en que deseamos sean presentados. No todos los
contenidos tericos se ven explicitados de la misma forma en las actividades que son
brindadas a los alumnos, pero consideramos que un docente debera tener una nocin bsica
de los mismos.

Programas y programacin
Comandos
Secuencias de comandos
Programas completos
Precondiciones
Procedimientos (asignacin de nombres a secuencias de comandos)
Estrategia de resolucin de problemas (divisin en subproblemas)
Repeticin
Alternativa condicional
Repeticin condicional
Expresiones
Parametrizacin y parmetros

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Programas y programacin

Definiremos en primera instancia qu es la programacin y qu son los programas. Con esto se


debera vislumbrar un acercamiento a qu tipo de tarea realizan los programadores.

Los programas son descripciones de soluciones a problemas que pueden ser ejecutadas.
Por lo tanto, siempre tendremos un problema que queremos resolver y para hacerlo
brindaremos una solucin que pueda ser interpretada y ejecutada por un autmata: la
computadora. Dicha solucin debe ser expresada de forma que puede ser interpretada tanto
por otras personas como por la computadora y por eso precisamos dar una descripcin de la
misma.

Estas descripciones habitualmente son textos (aunque no siempre) en un lenguaje de


programacin, distinto a otros como el espaol porque su sintaxis tiene reglas mucho ms
estrictas.

Programar consiste bsicamente en desarrollar programas a travs del uso de uno de estos
lenguajes de programacin (Scratch, Gobstones, Alice, Java, etc.). El medio de expresin de
estos programas, llamado editor, puede ser textual (1), como realizan ms habitualmente los
programadores profesionales o, como en el caso de Scratch, basado en trasladar y enganchar
bloques entre s (2).

(1) Texto en Gobstones (un lenguaje educativo, al igual que Scratch)

(2) Bloques arrastrables y encajables en Scratch

La ventaja de la expresin por bloques es que no podemos cometer errores de sintaxis al


desarrollar un programa en este contexto (no podemos formar cdigo incorrecto dado que los
bloques estn en un men de opciones y son arrastrados al editor, y adems la forma en que
son enganchados impide que resulten en algo que no sea una secuencia bien formada). En
cambio, en los editores destinados a produccin industrial podemos escribir palabras que no
signifiquen nada o ubicarlas en lugares donde no tiene sentido que aparezcan (somos libres de
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
escribir lo que queramos, como queramos, donde queramos, y no todo lo que escribamos ser
un programa que pueda ejecutarse).

Para ilustrar la diferencia usaremos Gobstones, cuyo un editor al momento de escribirse este
cuaderno es textual. El inicio y fin de ciertas porciones de un programa en Gobstones se
indican con una llave { al comienzo y otra } al final de los mismos. Por otra parte,
determinadas palabras deben ser necesariamente escritas en mayscula y otras en minscula.
En el siguiente ejemplo hay 3 errores que no respetan la sintaxis de un programa Gobstones:

El primero es que hay 3 llaves de cierre en la segunda lnea cuando debera haber solo una y
de apertura. El segundo error es que la palabra poner de la tercer lnea debera empezar en
maysculas. Y el tercer error es que la palabra rojo tambin debera empezar con
maysculas. Es difcil que un alumno pueda seguir todas las reglas de los lenguajes de
programacin, y es muy fcil que se equivoque sin saberlo. Si bien es posible identificar los
errores con ayuda del mismo editor, en ocasiones en una tareas ardua y que lleva a perder el
foco de atencin en la idea de solucin que programa pretende expresar. Por esta razn,
elegimos lenguajes como Scratch para ensear programacin a nios de primaria, ya que
impiden que los alumnos se equivoquen en estas cuestiones, a veces muy sutiles.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Comandos

Los programas en Scratch constan de ciertos elementos, todos representados como bloques.

En este ejemplo podemos ver 3 comandos. Cada uno est asociado a una accin. Diremos
entonces que un comando es un elemento de los lenguajes de programacin que describe una
accin determinada. Cuando un comando es ejecutado produce la accin relacionada a este.

En las primeras actividades que hagamos con los alumnos, utilizaremos los bloques de la
categora Ms bloques y ms adelante presentaremos solo unos pocos de los bloques
incluidos en las restantes categoras:

Esto significa que en realidad no utilizamos todo lo que hay en Scratch, sino que trabajamos
con actividades propias, diseadas para aprender especficamente ciertos conceptos bsicos
de programacin.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Secuencias de comandos

En los lenguajes de programacin a los comandos los podemos encadenar para que formen
una secuencia de comandos. Esta secuencia forma a su vez un nuevo comando, que podemos
considerar como un comando compuesto.

El resultado de este comando es igual al de los comandos que lo componen, y cuando es


ejecutado, produce acciones en serie, ordenadas segn cmo lo plantee el lenguaje de
programacin. En el caso de Scratch y la amplia mayora de los lenguajes, este orden es dado
de arriba hacia abajo.

Para ilustrar este concepto, imaginemos a un gato en la calle.

A este felino le pediremos que ejecute la secuencia anteriormente mencionada

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Dada esta secuencia, primero avanzar unos pasos

luego saludar

y finalmente volver a su posicin original

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Que la secuencia de comandos posea un orden especfico de ejecucin, tambin quiere decir
que si componemos los mismos comandos en otro orden, el resultado ser distinto:

Todas estas secuencias producen resultados


distintos, y si bien ejecutan las mismas acciones, lo
harn en distinto orden.

Programas completos

Un programa completo es aqul que posee todo lo necesario para ser ejecutado por una
computadora. Las reglas para formar programas completos dependen de cada lenguaje de
programacin.

Vimos que los comandos simples forman parte de Scratch, as como las secuencias de
comandos, pero para formar un programa completo necesitamos un bloque ms. A este bloque
lo llamaremos el bloque empezar.

Este bloque est asociado a un botn que forma parte del editor de Scratch, que es una
banderita verde:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Si presionamos ese botn, se ejecutar la secuencia asociada al bloque empezar.

Observar cmo al presionar la banderita verde el programa que est siendo ejecutado se
ilumina. Consecuentemente tambin se ejecutar la secuencia asociada, paso a paso, como
vimos anteriormente.
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
En conclusin, en Scratch un programa completo consta de

El bloque empezar
Una secuencia de comandos asociada a este bloque

Adems, todo programa genera resultados de alguna manera. En este caso lo que genera son
efectos, puntualmente que un gatito avance, salude y vuelva a su posicin original.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Precondiciones

Hay un gran problema detrs de algunos comandos: pueden fallar. Qu significa fallar? Que
no producen los efectos deseados (puede ser que produzca un resultado que no era el
esperado o que ni siquiera produzca uno).

Cmo es esto posible? Las acciones a veces requieren que algo se cumpla para que puedan
producir los efectos deseados. Por ejemplo, si al gatito que vimos de ejemplo le indicamos
avanzar y esto ya no es posible por estar al borde de la pantalla, entonces no podr ejecutar
satisfactoriamente dicha accin:

Diremos entonces que la ejecucin del programa fall, porque el gato no puede seguir
avanzando (no puede ejecutar 4 veces avanzar, porque a la tercera vez ya estar en el borde
de la pantalla).

Pensemos en otro escenario. Tenemos un marciano dentro de un tablero.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Y por otro lado tenemos las siguientes instrucciones:

Slo viendo las instrucciones, podemos pensar que los programas que formemos podrn fallar
de dos maneras posibles:
Nos podemos caer del tablero queriendo avanzar fuera del borde.
Podemos ejecutar la accin de comer una manzana pero que no haya nada en la celda
en donde estemos posicionados.

Veamos ambos casos. Como estamos parados en el borde inferior derecho, si nos movemos
hacia abajo, nos caeremos del tablero:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
En este caso la computadora nos avisa de este error, y la ejecucin del programa se detiene en
ese punto (no se ejecutarn ms comandos luego de un error).

Lo mismo ocurre si queremos comer una manzana donde no la hay:

A la condicin requerida por un comando para ser ejecutado correctamente la llamaremos


precondicin de este comando. Es importante pensar las precondiciones de los comandos a
medida que los usamos en secuencias, dado que nos permite ir razonando los problemas que
pueden llegar a existir si ciertas condiciones no son dadas.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
En este ejemplo, si deseamos que nuestros programas no fallen tenemos que tener en cuenta
las siguientes precondiciones:
Que si nos movemos hacia cierta direccin haya una celda en esa direccin
Que siempre que ejecutemos el comando comer manzana estemos posicionados en
una celda que posea una manzana.

No trataremos demasiado este tema al utilizar las actividades propuestas, aunque es


interesante recordarlo de forma constante, sobre todo cuando los alumnos tienen errores en su
cdigo y sus programas no hacen lo que esperan.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Procedimientos (asignacin de nombres a secuencias de comandos)

Una de las tantas virtudes de Scratch y muchos otros lenguajes de programacin es la de


asignar un nombre elegido por el programador a una secuencia de comandos arbitraria. A las
secuencias nombradas por nosotros las llamaremos procedimientos1.

Esto nos permite simplificar las tareas grandes, dividindolas en tareas ms pequeas y
simples de resolver, y as organizar mejor nuestro pensamiento y simplificar nuestros
programas.

Volvamos al ejemplo del marciano y el tablero con manzanas.

Podemos organizar a las manzanas de la siguiente manera:


Las del borde inferior
Las del borde derecho
Las del borde superior

1 Para simplificar este tema, podemos explicarle a los alumnos que los procedimientos son la
forma de contarle a la computadora cmo realizar una accin nueva, que no forma parte de sus
primitivas.
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
En lugar de definir todo el programa como una secuencia larga de pasos, podemos primero
crear 3 nuevos procedimientos, y que cada uno se encargue de comer manzanas de una parte
distinta del tablero (segn la organizacin anteriormente descrita).

Las acciones que comprende nuestro autmata en esta actividad son las siguientes:

Cuando definamos procedimientos nuevos veremos acciones nuevas en la solapa de Ms


Bloques, que sern las que definiremos a continuacin.

Entonces, procederemos primero a crear un procedimiento que coma las manzanas del borde
inferior del tablero. Para hacer esto tenemos que presionar el botn Crear un bloque2:

2 Slo se encuentra en la categora Ms bloques


Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Nos aparecer una ventana como la siguiente:

Lo primero que haremos ser introducir el nombre del nuevo procedimiento. Lo llamaremos
comer manzanas de abajo3

3 Siempre que elijamos nombres de procedimientos tenemos que pensar en la edad de los alumnos.
Tienen que ser nombres descriptivos y simples. No hace falta utilizar un lenguaje demasiado complejo.
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Una vez que ingresamos el nombre del nuevo procedimiento presionamos OK.

Al realizar esto, nos aparecern dos cosas:


Un nuevo comando que podremos ejecutar para que realice la accin de comer
manzanas de abajo (marcado en rojo)
Un bloque que nos permite explicarle a la computadora qu significa para nosotros
comer manzanas de abajo (marcado en azul)

Si en este momento enganchamos el comando Comer manzanas de abajo debajo del bloque
comenzar, y presionamos la banderita verde no va a pasar nada:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
No sucede nada porque no definimos todava que significa Comer manzanas de abajo.
Entonces, nos enfocaremos en realizar esto, ubicando debajo del bloque que define este
comando:

La secuencia para comer las manzanas del borde inferior es la siguiente:

Enganchamos esta secuencia como definicin del nuevo procedimiento:

A partir de ahora, si ejecutamos el programa, estaremos ejecutando la secuencia de comandos


que enganchamos a la definicin de este bloque.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Lo que podemos hacer ahora es definir el resto de los procedimientos:
Comer manzanas de la derecha
Comer manzanas de arriba

Y nuestro programa ser tan simple como

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Si lo ejecutamos veremos que el marciano se come todas las manzanas

Como podemos observar, al crear nuevos nombres para esta tarea (en este caso de comer
todas las manzanas del tablero), estamos haciendo que nuestra secuencia describa el
problema con palabras ms simples y en menos pasos. Los detalles internos de cada
procedimiento estn ocultos dentro de sus definiciones. Pero no hace falta leer por completo
todas las definiciones para saber de forma aproximada lo que realiza el programa.

Es deseable que nuestros programas describan de la mejor forma posible cada parte que
modelan, para que el lector pueda inferir de alguna manera las intenciones del programador
que lo dise. Leer programas de otras personas es una actividad que se realiza ms de lo que
uno podra llegar a creer, por lo que es muy importante que los programas sean legibles para
las personas que no los programaron, pero que desean, por ejemplo, realizar modificaciones o
correcciones sobre los mismos.

A la estrategia de dividir una tarea grande en tareas ms pequeas se lo conoce como divisin
en subtareas. Es recomendable al momento de resolver cada problema que pueda
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
presentarse con qu estrategia lo vamos a abordar, es decir, qu subtareas podemos
reconocer y que vamos a definir para simplificarlo.

Estrategia de resolucin de problemas (divisin en subproblemas)

Habiendo presentado una forma de poder definir subtareas que componen un programa
completo, explicaremos la estrategia con la que deseamos que se resuelvan las actividades del
curso. Esta estrategia consta de los siguientes pasos:
1. Pensar la estrategia con la que se va a resolver el problema.
2. Identificar las distintas partes del problema.
3. Crear procedimientos (vacos) asociados a estas tareas.
4. Resolver el problema principal en base a estos procedimientos (sin haberlos
completado).
5. Repetir esta estrategia para cada subtarea.

Ilustramos esto con una de las actividades del curso.

En la actividad Reparando la nave tenemos que ayudar a un marciano llamado Tino, que tiene
una misin en el espacio, pero tuvo que realizar un aterrizaje de emergencia en un planeta
desconocido. Tuvo suerte, porque cerca del aterrizaje se encontr con dos materiales (carbn y
hierro) que le van a servir para repararse nave y continuar su aventura.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Debemos buscar 3 porciones de carbn y 3 porciones de hierro. El marciano slo puede tomar
un pedazo de carbn o hierro por vez, as que tendr que realizar 3 viajes por cada material
que necesita. Cuando termine de recolectar los recursos suficientes podr escapar del planeta.

Las primitivas que podemos utilizar son las siguientes:

Obviamente podemos resolver esta actividad sin subtareas, paso a paso, poniendo una
instruccin tras otra, pero dividirla nos ayudar a simplificarla.

Siguiendo al pie de la letra la estrategia de divisin en subtareas que planteamos al comienzo


de esta seccin, lo que tenemos que hacer es pensar cmo vamos a resolver el problema, pero
en trminos generales. En este caso, lo que podemos hacer es ir a buscar todo el carbn que
haga falta, y luego ir a buscar todo el hierro. Cuando tengamos todos los materiales podremos
escapar. Esto entonces evidencia que el problema puede dividirse en dos grandes partes, con
sus correspondientes subtareas:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Observar que todava no definimos en qu van a consistir esas subtareas, slo estamos
planteando la estrategia general con la que vamos a resolver todo el problema. Pero
suponiendo que a esas subtareas las hemos definido correctamente, podemos utilizarlas como
parte del programa principal:

En este punto queda en evidencia que dependiendo de qu estrategia utilicemos el problema


se volver ms fcil o difcil. Con esta divisin en subtareas, el programa principal slo constar
de 3 acciones, como lo muestra la figura anterior.

Ahora debemos pensar cmo resolver cada una de las subtareas por separado.

La subtarea de Ir a buscar carbon puede consistir en ir y traer 3 veces una pieza de carbn:

Con esto estamos repitiendo el proceso de divisin en subtareas tambin para cada subtarea.
Ahora podemos pensar que Traer una pieza de carbn simplemente consiste en paso a paso
ir a buscarla. Esta ser la tarea de ms bajo nivel que implementaremos, en el sentido de que
utilizar directamente las primitivas del autmata.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Pero lo curioso es que tambin nos ha quedado simple de definir, ya que esta tarea consiste
slo de ir 3 veces hacia arriba, tomar carbon, ir 3 veces hacia abajo, depositar en la nave. No
obstante, podramos haber definido subtareas para subir 3 veces y bajar 3 veces, aunque
decidimos no hacerlo. Es por esto que la divisin en subtareas tambin depende de cada
persona y sus ideas al intentar simplificar problemas. Para nosotros esta solucin ya es lo
suficientemente simple, pero puede venir otra persona que la considera todava compleja.
Ninguna de las dos personas est errada, cada una posee su propio criterio, pero lo que s es
cierto es que no definir subtareas en general conlleva a programas ms complejos y difciles de
entender, y muchas veces a la posibilidad o imposibilidad de directamente solucionar el
problema (existen problemas difciles que sin subtareas seran ms difciles todava).

Siguiendo con el resto del programa, aplicaremos la misma estrategia para definir la subtarea
que falta:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Habiendo definido todas estas subtareas ya estamos en condiciones de ejecutar nuestro
programa principal.

En resumen, muchas de las actividades de este curso requieren definir subtareas para ser
resueltas de forma simple. Pero ms all de esto, definir subtareas es algo que debemos
inculcar a los alumnos, dado que es una tcnica que requiere mucha prctica para ser
dominada, pero, a su vez, es una herramienta muy valiosa que promueve habilidades de
pensamiento abstracto.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Repeticin

Un concepto que se presenta cotidianamente en programacin es la idea de repeticin. Una


repeticin es la ejecucin de una secuencia de comandos cierta cantidad de veces.

Veamos un ejemplo.

En esta actividad este extraterrestre tiene que tomar todas las estrellas que hay en el tablero, y
para eso nos dan las siguientes instrucciones primitivas:

Como estrategia, hagamos un procedimiento que sea Tome fila de estrellas

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Tomar una fila de estrellas consiste en mover derecha y tomar estrella, 4 veces.

Si ejecutamos este procedimiento, el personaje come la primera fila de 4 estrellas que tiene
delante

En este punto nos podemos dar cuenta que la tarea de tomar esta fila de estrellas repite
siempre una parte.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Lo que podemos hacer es indicarle a la computadora que tiene que repetir la secuencia de
mover derecha y tomar estrella 4 veces, sin necesidad de escribir toda esta secuencia
entera.

Para hacer esto vamos a la categora Control, y un comando llamado repetir:

El bloque repetir consiste de dos partes:


Un nmero que indica la cantidad de veces que se va a repetir la secuencia asociada al
bloque
Un hueco en el que podemos enganchar la secuencia que se va a repetir

En el ejemplo anterior la secuencia que se repeta 4 veces es

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Esta secuencia la podemos asociar a la repeticin de esta manera

Y esto ser exactamente la nueva definicin del procedimiento

De esta forma el programa queda mucho ms compacto, y explica mejor qu secuencia


ejecutar.

Las repeticiones son utilizadas constantemente en los programas y permiten reducir el cdigo
que tenemos que escribir.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Alternativa condicional

En ciertas ocasiones deseamos que un comando slo se ejecute si se cumple cierta condicin,
o que se ejecute un comando si sucede algo u otro si sucede lo contrario. A este concepto lo
llamamos alternativa condicional.

Veamos un ejemplo. En la actividad llamada La eleccin del mono podemos toparnos con dos
escenarios posibles:

Escenario en donde hay banana

Escenario en donde hay manzana

El objetivo es simple: comer manzana cuando hay manzana y comer banana cuando hay
banana. En la casilla a la derecha del mono, hay manzana o hay banana, pero no ambas a la
vez.

Las primitivas son las siguientes:

El problema es que si comemos equivocadamente perdemos el juego y el programa se detiene:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Para poder resolver esta cuestin tenemos que poder preguntar si hay banana o manzana, y
en cada caso comer la fruta que haya. En este sentido es que tenemos que decidir si vamos
por una alternativa o la otra.

En la categora Control contamos con un bloque llamado si.. entonces:

Este bloque nos servir para poder preguntar primero si se cumple cierta condicin y slo en
ese caso ejecutar un comando. Pero primero vamos a dividir el problema.

Definiremos el procedimiento comer fruta que resolver decidir qu fruta tiene que comer:

Nuestro programa completo ser tan simple como:

Para preguntar si estamos tocando una manzana o una naranja vamos a la categora Sensores
y seleccionamos la pregunta tocando ...?:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Observar que hay una flecha pequea, que nos permitir seleccionar de una lista qu objeto
deseamos preguntar si estamos tocando. Para ello deberemos hacer clic exactamente sobre la
flecha.

Seleccionamos manzana:

La forma que posee este bloque es idntica al hueco que posee el bloque si entonces:

Esto no es casual, ya que el bloque si... entonces toma dos cosas:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Una condicin, que probar si es verdadera.
Una secuencia de comandos que ejecutar si la condicin resulta verdadera.

En este caso la condicin es la pregunta Tocando manzana?. Y el comando a ejecutar si la


condicin es verdadera ser Comer manzana.

Entonces si nos encontramos con el caso en el que hay manzana, comer la manzana

Y as como est, si hay una banana, no har nada

Por qu? Porque si hay una banana, la condicin Tocando manzana? es falsa y no ejecuta
entonces el comando Comer manzana. Si deseamos que tambin pregunte si hay banana y
en ese caso coma una, tendremos que agregar otro bloque si entonces:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Y ahora, sin importar cul sea el caso, preguntar por lo que haya y comer la fruta adecuada.

Cabe destacar que existe otra variante para resolver este problema. Como siempre hay una u
otra fruta, sabemos que si no hay manzana entonces tiene que haber una banana, y viceversa.
Dentro de la categora Control hay otro bloque llamado si entonces sino

Este bloque representa exactamente ese caso. Si la condicin es verdadera, ejecuta la primera
secuencia de comandos, y si la condicin es falsa, ejecuta la segunda.

Entonces podemos definir esta otra solucin al problema:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Esta solucin es equivalente a la anterior. Si a los alumnos se les complica entender esta otra
solucin, o discernir cundo usar un si entonces o un si entonces sino, es preferible
utilizar slo la primera variante y e ignorarla segunda. Todo lo que se puede resolver con la
segunda variante tambin se puede resolver fcilmente con la primera, pero lo contrario no
siempre es cierto (se puede, pero a veces se torna ms complicado).

De esta forma, resolvimos un problema que posee un escenario cambiante. A veces pasa una
cosa, y a veces pasa otra. Dentro de los problemas presentados en el cuaderno de actividades
tendremos muchos en donde debemos usar una alternativa condicional para definir programas
que tengan en cuenta este tipo de escenarios.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Repeticin condicional

Existe otro tipo de repeticiones, que no estn basadas en un nmero de veces que hay que
repetir una secuencia. Estas otras repeticiones estn basadas en una condicin, y mientras esa
condicin se siga cumpliendo, la secuencia a repetir se seguir ejecutando.

La herramienta de repeticin simple es muy til para repetir algo una cierta cantidad de veces,
pero en muchas ocasiones no sabemos cunto debemos repetir algo, o simplemente queremos
que se repita sin importarnos este dato. En estos casos entran en juego otro tipo de
repeticiones.

Lo que podemos hacer para repetir en ocasiones en donde no conocemos a priori el nmero de
veces que queremos o necesitamos repetir una serie de comandos, es utilizar una repeticin
que est basada en una condicin.

En Scratch, en la categora Control existe un bloque llamado repetir hasta que . Este
bloque tiene dos partes:
En el hueco hexagonal a continuacin de su nombre debemos poner una condicin.
Una secuencia de bloques que se ejecutarn hasta que esta condicin sea verdadera.

Las condiciones que podemos utilizar se encuentran en la categora Sensores. Estas


condiciones son preguntas que el personaje puede realizar sobre el entorno en donde se
encuentra. En las actividades slo vamos a utilizar un sensor de esta categora, que se llama
Tocando ?. Eso nos permitir saber si nuestro personaje est tocando un objeto en
particular.

Veamos un ejemplo. As como la alternativa condicional permita resolver problemas en donde


una caracterstica del problema variaba de instancia en instancia (en el caso de las bananas y
manzanas poda haber una u otra fruta en determinado momento), esta otra estructura nos
permite resolver problemas similares, pero aadiendole la caracterstica de repeticin.

En la actividad Super Lightbot 1 tendremos escenario cambiante (las celdas azules son luces a
prender):
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Y se nos permite utilizar las siguientes instrucciones primitivas:

En este punto dos caractersticas a observar:


Todas las filas siguen la misma estructura, una sucesin de cuadrados azules que
terminan en un cuadrado verde.
No sabemos el largo de la fila.

Si lo tuvisemos que resolver en espaol, la solucin puede ser expresada como prender luz y
avanzar hasta estar en el cuadrado verde. Expresaremos esto mismo pero en Scratch.

Primero tenemos que pensar cmo preguntar si estamos en el cuadrado verde. Para eso
vamos a la categora senseores y nos traemos el bloque Tocando ?. Veremos que hay una
opcin que dice Fin:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Esta pregunta la combinaremos con el bloque Repetir hasta que :

A partir de esto se vuelve evidente que la solucin es

Es importante destacar que esto no podra haber sido resuelto con una repeticin simple,
porque no podemos indicar el nmero exacto de veces que se debe repetir prender luz y
avanzar, justamente porque el tamao del problema es variable.

Como todos los bloques anteriores, el repetir hasta que muchas veces forma parte de
problemas ms grandes, en los que incluso se combina con otros bloques.

En el caso de Super Lightbot 2, tendremos un escenario similar, pero en algunas celdas no


tendremos luces para prender:

Como en el escenario anterior, tambin la longitud de la fila es variable. La solucin al problema


puede plantearse de la siguiente manera

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Es importante observar que estamos utilizando varios conceptos a la vez:
Definimos una subtarea llamada prender luz si hay, que prende una luz en el caso en
que haya una.
Utilizamos una alternativa condicional para definir esta subtarea
Utilizamos una repeticin condicional para resolver el problema principal.

En resumen, tenemos dos tipos de repeticiones: repeticiones simples (con un nmero que
indica la cantidad de veces a repetir un comando) y repeticiones condicionales (que continan
ejecutando mientras se cumpla una condicin y se detienen cuando se deja de cumplir). Esta
nueva forma de repeticin podr ser usada de ahora en ms para resolver problemas de
caractersticas anteriormente descritas.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Expresiones

No todas las categoras de bloques de Scratch representan comandos, y muchas de las


categoras que poseen comandos adems tienen bloques de otra ndole (que representan
datos por ejemplo).

Hemos visto que en Scratch podemos utilizar datos para modificar el comportamiento de los
comandos. En este apartado veremos dos clases de bloques que describen valores.

As como existen los comandos compuestos (secuencias de comandos), tambin podemos


componer datos mediante operadores:

Todos estos bloques representan lo que se conoce como expresiones, y en este caso,
expresiones de tipo numricas. Las expresiones estn formadas por datos y resultan en otro
dato cuando son evaluadas, es decir, se realizan todas las operaciones que componen esa
expresin. En este caso si evaluamos de la expresin 10 + 1, esto dar como resultado el
nmero 11. Podemos observar entonces que esta operacin toma dos nmeros para devolver
otro nmero.

De la misma manera podemos pensar en operaciones de otros tipos:

En este caso la operacin unir toma dos palabras y devuelve otra palabra, que es la unin
consecutiva de ambas.

Es evidente que los datos por s solos no sirven de mucho, pero lo interesante es su uso al
combinarse con comandos:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Observar que utilizamos expresiones en cada lugar en donde se poda esperar un valor simple.
El primer comando se mover 11 pasos, por lo que hubiese sido equivalente poner la expresin
10+1 o el nmero 11 directamente. El segundo comando esperaba primero una palabra, por lo
que utilizamos una expresin que devuelve una, y adems esperaba una cantidad de
segundos, por lo que utilizamos otra cuenta numrica, que representa al nmero 3. Si bien
estas expresiones carecen de sentido, dado que son equivalentes a haber puesto los valores
resultantes, cuando se combinan con otros elementos resultan de gran utilidad.

En Scratch tambin existen operaciones que no esperan ningn dato, sino que simplemente
devuelve uno, Este es el caso de expresiones como las siguientes:

A diferencia de las operaciones anteriores, estos bloques recolectan cierto dato del entorno o
del personaje y lo devuelven. Este tipo de expresiones son muy utilizadas en los lenguajes de
programacin, porque por ejemplo nos permiten conocer la posicin de un (en el eje x o y),
el tamao de un objeto o incluso responden si un objeto est tocando a otro en particular (en
este caso se responde con un verdadero o falso). Como son expresiones como cualquier
otra tambin pueden ser utilizadas en lugares en donde se esperan datos concretos:

En este caso el persona va exactamente a la posicin en la que se encuentra el puntero del


mouse, para luego saludar diciendo Hola al nombre del usuario de Scratch que inici sesin
en la pgina.

Veamos cmo se introduce este concepto en actividades de nuestro cuaderno.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
En la actividad El superviaje tenemos que hacer que Superman llegu a destino:

El problema es que la distancia a la que estamos de la ciudad de destino es distinta cada vez
que empieza nuestro programa. Esta actividad al igual que muchas otras posee un escenario
cambiante.

Pero slo contamos con la primitiva , y no podemos utilizar la pregunta Tocando


? porque no hay un objeto final que podemos tocar para deternernos. Esto significa que la
tcnica que estbamos usando hasta el momento con las repeticiones condicionales ya no
funciona en este caso.

Por el momento vimos 3 herramientas que nos permiten expresar procedimientos que
funcionan ante escenarios cambiantes.

La primera herramienta fue parmetros. Aunque los parmetros no nos permitieron en realidad
resolver escenarios en los que el problema cambiaba de ejecucin en ejecucin, nos facilit la
definicin de procedimientos genricos, que funcionan en distintas partes de un problema fijo
que se resuelven de forma similar (los procedimientos para resolver estas partes eran idnticos
salvo por datos particulares que podemos indicar al utilizarlos).

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Las herramientas posteriores fueron alternativas condicionales y repeticiones condicionales.
Estas herramientas permitan adaptar nuestros programas a problemas cambiantes porque
podan realizar preguntas. Estas preguntas eran justamente expresiones, que en este caso
representaban condiciones:

Como dijimos anteriormente, siempre utilizamos la expresin Tocando? para distintos


objetos que nos permitan deternos.

En este problema lo que precisamos es informacin de otro tipo. Si el problema es volar cierta
cantidad de kilmetros la solucin simplemente constara de una expresin que nos informe
esa cantidad, para poder utilizar este dato y resolver el problema.

Si vamos a la categora llamada Datos, vamos a ver un bloque que hace exactamente esto
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Como esta expresin simplemente evala a un nmero (nos devuelve un nmero) podemos
utilizarla en cualquier lugar en el que se utilizara un nmero en particular.

As, podemos definir la solucin al problema como:

Otro problema que consiste en usar un dato como este, lo podemos encontrar con la actividad
El mono cuenta de nuevo

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
En este caso tampoco sabemos cundo termina cada fila, pero contamos con un dato llamado

Que nos informa la cantidad de casillas que tenemos por delante (sin contar la casilla de color
verde).

Ms all de los problemas especficos que podemos llegar a resolver, el uso de expresiones
enriquece enormemente lo que puede hacerse con los comandos, y permiten realizar ms
atractivos.

Por ejemplo, un programa en el que nuestro personaje siga todo el tiempo el cursor de nuestro
mouse se define como:
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
O si queremos hacer que nuestro personaje diga a qu distancia est de otro personaje:

Si queremos hacer que el dibujo de nuestro personaje sea ms brillante si hacemos ms ruido
a travs de un micrfono conectado a la compu:

Y as podemos imaginar un sin fin de usos para distinta informacin que podemos obtener a
travs de estas expresiones.

A partir de la presentacin de este tema tiene ms sentido dejar que los chicos exploren todos
los bloques que trae Scratch en general e intenten realizar un proyecto propio, ya sea
empezado de cero o basado en un proyecto parcialmente completo que les brindemos.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Parametrizacin y parmetros

En ocasiones puede sucedernos que tenemos varias subtareas que son similares, pero que se
diferencian en algn valor en particular.

En la actividad llamada El planeta de Nano tenemos que comer varias filas de bananas, pero
las filas no son todas iguales:

Disponemos de las siguientes instrucciones primitivas:

Si queremos dividir el problema en distintos procedimientos, esto nos obliga a crear 4


procedimientos distintos4:

4 Aunque el caso de comer una sola banana no amerite una repeticin, la agregamos para que se vuelva
similar a los dems procedimientos. Esto nos permite llegar a una conclusin que nos permitir introducir
este tema nuevo.
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Y nuestro programa principal, con la ayuda de una subtarea ms, ser as:

Es evidente que esos 4 procedimientos son idnticos salvo por un valor: la cantidad de
bananas que deben comer en una determinada fila.

Sera conveniente que en lugar de crear 4 procedimientos distintos que slo cambian en un
nmero, hagamos lo siguiente:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Es importante explicar en este punto que los comandos pueden estar relacionados con
valores, que simplemente describen datos5. A travs de estos valores podemos hacer que los
comandos se comporten de distinta manera.

Dentro de los bloques pertenecientes a otras categoras tenemos comandos como:

Con la categora Ms bloques por el momento escondimos este tipo de bloques para reducir
la complejidad de utilizar nuestro primeros comandos, pero sera til poder definir nuestro
propio bloque al que le pudisemos indicar la cantidad de bananas a comer al momento de
utilizarlo.

Cmo hacemos esto? Primero debemos crear un parmetro. Para ellos crearemos un nuevo
bloque e iremos a opciones:

Luego de escribir Comer presionamos el botn que dice Aadir entrada nmerica:

5 En Scratch existen distintos tipos de valores, pero principalmente utilizaremos slo nmeros o
palabras.
Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Al presionar ese botn nos agregar un hueco en blanco con un nombre por defecto:

A continuacin le daremos nuestro propio nombre al hueco que nos cre, que en este caso
puede llamarse cantidad, para indicar que va a representar la cantidad de bananas a comer:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Como retoque final podemos seguir aadiendo texto a continuacin del hueco a travs del
botn Aadir texto de la etiqueta:

Presionamos OK y veremos lo siguiente:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
El bloque azul dentro de la definicin, llamado cantidad, es el parmetro del cual hablbamos
antes de empezar a crear este nuevo bloque. Definiremos este procedimiento genrico de la
siguiente manera:

Observar que arrastramos el bloque azul y lo ubicamos en el lugar que debe ocupar dentro del
procedimiento. En lugar de escribir un nmero concreto de veces que se va a repetir la
secuencia de avanzar y comer banana, con esto estamos indicando que esa cantidad va a ser
arbitraria y depender de lo que ingrese el usuario.

De esta forma los parmetros nos permiten relacionar lo que el usuario ingresa en el hueco en
blanco con el sitio que debe ocupar al momento de utilizar ese valor:

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar
Cuando nosotros escribimos finalmente 4, por ejemplo, ese nmero concreto va a reemplazar
al parmetro en la definicin del bloque, y lo va a hacer en los todos los lugares en donde
aparezca el parmetro, que en este caso escantidad.

Este nuevo procedimiento al ser genrico nos permite eliminar a todos los dems que eran
instancias particulares de este, lo que da como resultado una reduccin el cdigo que tenemos
escrito.

Podemos hacer que nuestros bloques posean tantos parmetros como creamos conveniente.
Dentro del cuaderno de actividades vamos a ver problemas en los que esto ser necesario.

El tema de parametrizar procedimientos es uno de los ms complejos a ensear, y por esto que
requiere paciencia y prctica hasta lograr entenderlo en profundidad.

Este cuadernillo es una versin preliminar del material definitivo. Por consultas, escribir a
pfactorovich@fundacionsadosky.org.ar

Das könnte Ihnen auch gefallen