Esta guía te mostrará cómo emparejar los procedimientos en el lenguaje del examen de AP con los bloques en Snap!. Si necesitas una introducción rápida a la programación en Snap!, echa un vistazo al Curso intensivo de Snap!.
Existen diferencias significativas entre el lenguaje utilizado en el examen de AP y Snap! en esta sección.
a ← expresión
En Snap!, debes crear una variable primero, antes de asignarla un valor. Puedes usar el botón en la paleta de Variables para crear una variable globar o para crear una variable local (programa).
DISPLAY (expresión)
decir
:
Hay varias formas de mostrar datos al usuario en Snap!. Una manera es en forma de globos de texto que son "pronunciados" por los objetos del escenario. Aquí está el comportamiento que resulta al ejecutar la instrucción decir (expresión)
:
En Snap!, también existen variaciones de este bloque como:
decir durante ( ) s
, que mostrará el mensaje solo durante el número de segundos que se especifique, y pensar ( )
y pensar ( ) durante ( ) s
, que mostrarán el mensaje como un globo de pensamiento en lugar de un globo de diálogo, como este:El bloque escribir
es muy diferente, pero todavía es una forma de salida para el usuario. Escribe los contenidos de la primera ranura de entrada en el escenario en el tamaño de letra escrito en la segunda ranura de entrada.
INPUT ()
preguntar
. Al usuario se le hace la pregunta que se ha escrito en la ranura de entrada de preguntar
, y su respuesta se puede acceder utilizando el bloque respuesta
, que se puede colocar en una ranura de entrada al igual que una variable.En esta sección, no hay diferencias importantes entre el lenguaje utilizado en el examen de AP y Snap!.
a + b
a – b
a * b
a / b
Estos bloques son directos. Puedes colocar cualquier expresión numérica en las ranuras de entrada, incluyendo números o variables. Por ejemplo: o
a MOD b
Igual que antes: Puedes utilizar cualquier expresión numérica como entrada. Por ejemplo:
RANDOM (a, b)
Igual que antes: puedes utilizar cualquier expresión numérica como entrada.
Hay una diferencia entre el lenguaje utilizado en el examen de AP y Snap! en esta sección: tendrás que crear algunos procedimientos tú mismo.
a = b
a ≠ b
a > b
a < b
a ≥ b
a ≤ b
≠
.≥
.≤
.La forma del bloque hexagonal indica que se trata de un bloque predicado; solo reporta (devuelve) verdadero
o falso
.
No existen los bloques ≠
(no es igual), ≥
(mayor o igual) ni ≤
(menor o igual) ya construidos en Snap!, pero son fáciles de construir:
,
, and
.
NOT condición
Las ranuras de entrada hexagonales indican que se espera una expresión de tipo predicado (verdadero
/falso
) como entrada (una condición).
condición1 AND condición2
Igual que antes: las ranuras de entrada hexagonales requieren entradas de tipo predicado.
condición1 OR condición2
Igual que antes: las ranuras de entrada hexagonales requieren entradas de tipo predicado.
No hay diferencias importantes entre el lenguaje utilizado en el examen de AP y Snap! en esta sección.
IF (condición) { <bloque de enunciados> }
Este es un ejemplo de cómo el enunciado si
se vería en Snap! cuando tiene una condición y una secuencia de enunciados:
IF (condición) { <primer bloque de enunciados> } ELSE { <segundo bloque de enunciados> }
Este es un ejemplo de cómo el enunciado si / si no
se vería en Snap! cuando tiene una condición y dos secuencias de enunciados:
No hay diferencias significativas entre el lenguaje utilizado en el examen de AP y Snap! en esta sección.
REPEAT n TIMES { <bloque de enunciados> }
Este es un ejemplo de cómo el enunciado repetir
se vería en Snap! cuando tiene un número como entrada y una secuencia de enunciados:
REPEAT UNTIL (condición) { <bloque de enunciados> }
Este es un ejemplo de cómo el enunciado repetir hasta que
se vería en Snap! cuando tiene un número como entrada y una secuencia de enunciados:
Existen solamente pequeñas diferencias en la redacción y estructura entre el lenguaje utilizado en el examen de AP y Snap! en esta sección.
lista[i]
Puedes identificar qué tipo de entrada se espera en cada ranura de entrada de un bloque en Snap! por su forma. Por ejemplo, toma un número como su primera entrada (indicado por la ranura de entrada redonda) y una lista como su segunda entrada (indicado por la pequeña imagen de una lista):
Además, hay un menú desplegable para la primera ranura de entrada que te permite seleccionar el primer elemento, el último o un elemento aleatorio de la lista en lugar de escribir un número o arrastrar y soltar una variable.
lista[i] ← lista[j]
A primera vista, esto parece un poco diferente en el examen que en Snap!, pero si lees en voz alta el código de Snap!, queda claro lo que hace: reemplaza el elemento en la posición número i en la lista con el elemento en la posición número j en la lista.
Aquí tienes un ejempo:
lista ← [valor1, valor2, valor3]
En Snap!, se recomienda no nombrar ninguna variable lista porque hay un bloque llamado lista
que crea nuevas listas. Aquí tienes algunos ejemplos de nombres de lista mejores (realmente, cualquier nombre excepto "lista" está bien; ese nombre de variable solo se muestra a la izquierda para que coincida con la hoja de referencia del examen de AP):
FOR EACH elemento IN lista { <bloque de enunciados> }
Puedes cambiar el nombre de la primera variable haciendo clic en ella.
Aquí tienes un ejemplo de cómo podría verse el enunciado para cada
en Snap! cuando tiene un nombre de lista real y una instrucción dentro:
INSERT (lista, i, valor)
insertar
de Snap! funciona igual que el procedimiento INSERTdel lenguaje del examen de AP; solo cambia el orden de las entradas.
APPEND (lista, valor)
añadir
de Snap! funciona como el procedimiento APPEND; solo cambia el orden de las entradas.
REMOVE (lista, i)
borrar
de Snap! funciona como el procedimiento REMOVE; solo cambia el orden de las entradas.
LENGTH (lista)
Recuerda que Snap! tiene dos bloques de longitud
:
longitud
de "Lista" para medir listas: ylongitud
de "Operadores" para medir cadenas: PROCEDURE nombre (parámetro1, parámetro2, ...) { <instrucciones> }
En Snap!, los procedimientos que hacen algo se llaman comandos. Los bloques de comandos tienen una forma rectangular de pieza de rompecabezas porque son instrucciones para la computadora diseñadas para encajar una tras otra.
Cuando creas un bloque, eliges el nombre del bloque, los parámetros de entrada y la paleta en la que debería aparecer (el color). Luego, diseñas las instrucciones que se ejecutarán cuando se haga clic en el bloque. Aquí tienes un ejemplo de cómo podría ser la definición de un bloque de comando real en Snap!:
Puedes aprender más acerca de cómo hacer bloques y añadir entradas en la Guía de respuestas de Snap!.
PROCEDURE nombre (parámetro1, parámetro2, ...) { <instrucciones> RETURN expresión }
En Snap!, los procedimientos que reportan (devuelven) un valor se llaman reporteros. Los bloques de reporteros tienen una forma redondeada y se puede hacer clic sobre ellos para reportar un valor al programador, o puedes arrastrarlos a una ranura de entrada vacía de otro bloque para utilizarlos como entrada.
Cuando creas un bloque reportero, la definición del bloque incluye automáticamente un bloque reportar
. El valor de la expresión en la ranura de entrada de este bloque reportar
es el valor que se devuelve cuando se ejecuta el reportero.
Aquí tienes un ejemplo de cómo se vería una definición de un bloque reportero real en Snap!:
Estos bloques no existen en Snap!, pero Snap! tiene algo similar: el movimiento de los objetos. La gran diferencia es que los bloques de robot en el lenguaje de AP funcionan en una cuadrícula, por lo que el robot solo puede moverse vertical u horizontalmente. En Snap!, los objetos se mueven con mucha más flexibilidad, aunque puedes utilizar bloques de Snap! para simular el movimiento del robot.
MOVE_FORWARD ()
En Snap!, puedes usar el bloque para mover el objeto hacia adelante cualquier número de pasos.
MOVE_FORWARD (), por lo que si deseas que se mueva más de un cuadrado de la cuadrícula, tienes que llamar al procedimiento repetitivamente.
mover
de Snap! para simular el procedimiento MOVE_FORWARD ()de AP: basta con usar una entrada que sea exactamente del mismo tamaño que la longitud del lado de los cuadrados de la cuadrícula.
ROTATE_LEFT ()
ROTATE_RIGHT ()
En Snap!, puedes usar los bloques y para girar el objeto cualquier número de grados.
ROTATE_LEFT ()o a
ROTATE_RIGHT (); estos procedimientos de AP siempre girar exactamente 90 grados ya que se usan solamente para mover a un robot en una cuadrícula.
girar ↺
o girar ↻
de Snap! para simular los procedimientos ROTATE_LEFT ()o
ROTATE_RIGHT ()de AP: solo usa 90 grados como valor de entrada.
CAN_MOVE (dirección)
CAN_MOVE (dirección), que devuelva verdadero o falso dependiendo de si el robot puede moverse o no en esa dirección sin chocarse con una pared o caminar fuera del laberinto.
En Snap!, puedes utilizar estos bloques para ayudar a que tus objetos determinen cómo moverse:
,
, y