El operador módulo

En esta práctica de laboratorio, programarás procedimientos para realizar procesos matemáticos.

En esta página, crearás un predicado para verificar si un número es divisible entre otro.

  1. "U2L4-BibliotecaMatemática"Comienza un nuevo proyecto llamado U2L4-BibliotecaMatemática
  2. Experimenta con el bloque () mod ().
    1. Prueba varias entradas.
    2. Mantén el segundo número constante y prueba varias entradas para el primer número.
    3. Formula una hipótesis. ¿Qué observas?
El bloque módulo (también llamado "residuo") reporta el resto cuando la primera entrada se divide entre la segunda. Por ejemplo, (17) módulo (5) reporta 2 porque cuando 17 se divide entre 5, el resto es 2. Cuando un número divide a otro por igual, el resto es 0. Entonces, por ejemplo, (15) módulo (5) reporta 0.
Los distintos lenguajes de programación tienen diferentes formas de manejar entradas negativas a la función módulo. Por lo tanto, no verás ningún uso de módulo con un número negativo en el examen.
El operador módulo ("mod", en inglés): la expresion (17) módulo (5) se escribiría en inglés como
17 MOD 5
en el examen. Si ves una expresión con variables como entrada para módulo, tal como
a MOD b
, puedes asumir que a es cero o positivo, y b es estrictamente positivo (porque no se puede dividir por 0).
AAP-2.B.5, AAP-2.C.1, AAP-2.C.2, AAP-2.C.3, AAP-2.C.4
En el examen, puede ver estos cuatro operadores aritméticos:
+
,
-
,
*
,
/
(más, menos, multiplicar, dividir) así como
MOD
. Los operadores aritméticos son parte de la mayoría de los lenguajes de programación. (La mayoría de los lenguajes de texto utilizan
*
en lugar de
×
para la multiplicación porque
×
no está en la mayoría de los teclados, y porque se parece demasiado a la letra x.)
AAP-2.L.2
Orden de operaciones: En un lenguaje de bloques, la anidación de bloques determina el orden de las operaciones. Por ejemplo, en 3 × (5 + 4) puedes ver que el bloque + es una entrada al bloque ×, entonces la expresión significa 3×(5+4). De manera similar, (3 × 5) + 4 significa (3×5)+4. En Snap!, es como si hubiera paréntesis alrededor de todas las operaciones. Pero en lenguajes de texto, puedes escribir
3 * 4 + 5
sin paréntesis, entonces ahí sí necesitas las reglas que aprendiste en la clase de matemáticas (multiplicación antes de la suma, etc.). El operador módulo es como la multiplicación y la división; ocurre antes de la suma y la resta. Así por ejemplo,
7 + 5 MOD 2 - 6
significa
7 + 1 - 6
, que es, por supuesto, 2.
  1. En una práctica de laboratorio posterior, puedes usar tu bloque ¿par? para dibujar una pared de ladrillos porque las filas pares e impares son diferentes.
    Ejemplo de una pared de ladrillo
    Usa módulo para construir un ¿El número () es divisible por el () ? predicado que prueba la divisibilidad.
    ¿El número (15) es divisible por el (3) ? reporta verdadero ¿El número(15) es divisible por el (6) ? reporta falso
  2. Utiliza este predicado ¿divisible por? para crear un predicado que pruebe si tu entrada es par (divisible entre 2).
    ¿Es (-22) un número par? reporta verdadero ¿Es (7) un número par? reporta falso
  3. Guarda tu trabajo
foto de Katherine Johnson

Katherine Johnson (1918-2020) fue una tecnóloga aeroespacial con un doctorado en Matemáticas que trabajó para la NASA calculando el movimiento de naves espaciales. Johnson, originalmente contratada como una computadora humana, verificó los cálculos de las computadoras digitales, ayudó a calcular la trayectoria del Apolo 11 (la primera vez que los humanos caminaron sobre la Luna), trabajó en planes para una misión a Marte y alentó a los estudiantes a seguir carreras en ciencia, tecnología, ingeniería y matemáticas.

Video de la NASA en su memoria: "Katherie Johson: una heroína norteamericana"

AAP-2.H.2
Los procedimientos
mover()
y
girar_sentidoreloj()
no están integrados en el lenguaje del AP y por eso que se escriben en letras minúsculas al igual que otros procedimientos definidos por un programador.
La expresión condicional si (tamaño> 15) {repetir (4) {mover (tamaño) pasos, girar (90) grados}} se escribiría como
IF(tamaño > 15)
{
    REPEAT 4 TIMES
    {
        mover(tamaño)
        girar_sentidoreloj(90)
    }
}
o IF(tamaño > 15)
{
    REPEAT 4 TIMES
    {
        mover(tamaño)
        girar_sentidoreloj(90)
    }
}

Como en Snap!, si la condición (tamaño) > 15 es verdadero, se ejecuta el código dentro de la instrucción si; pero si la condición es falso, el código no se ejecuta.

  1. AAP-2.L.2
    Los algoritmos que tienen el mismo aspecto pueden tener resultados diferentes. El siguiente fragmento de código incompleto fue diseñado para probar si
    número
    es impar:
    IF (MISSING CONDITION)
    {
      DISPLAY "Es impar".
    }

    ¿Cuál de los siguientes se puede usar en lugar de MISSING CONDITION?
    número MOD 1 = 0
    número MOD 1 = 1
    número MOD 2 = 0
    número MOD 2 = 1
  2. ¿Cuál es el valor de 11 módulo (2 + 3)?
    1
    0.2
    2
    2.2
  3. Habla con tu compañero ¿Es cierto que (12 MÓDULO 2) > (11 MÓDULO 2)? Explica tu razonamiento.
  1. Crea un predicado que compruebe si tu entrada es un número entero. Puede que redondear () te resulte útil.
    ¿integer? (4) reporta verdadero ¿integer? (4.1) reporta falso

Abre tu proyecto U2L3-Puntos y guárdalo de nuevo como U2L4-PuntosTIF. Recuerda cómo las imágenes están determinadas por las expresiónes booleanas utilizadas.

  1. Inventa expresiones booleanas para estas imágenes:
    1. El escenario es casi completamente de color naranja, excepto por cinco delgadas franjas verticales de color violeta espaciadas uniformemente.
    2. Un patrón de tablero de ajedrez de color naranja y violeta. Alrededor del eje x hay cinco cuadrados, con el violeta en los bordes izquierdo y derecho y en el centro. Alrededor del eje y, hay tres cuadrados completos y dos cuadrados parciales en los bordes; los cuadrados parciales y el cuadrado central son violetas y los dos cuadrados restantes son naranjas. Los dos colores alternan en toda el área como un tablero de ajedrez.
    3. Un patrón de tablero de ajedrez como en ii, excepto que en cada fila los cuadrados alternan dos naranjas y uno violeta. Por lo tanto, la fila superior (parcial) es naranja, violeta, naranja, naranja, violeta. La segunda fila es violeta, naranja, naranja, violeta, naranja. La fila del medio es naranja, naranja, violeta, naranja, naranja. La cuarta fila es naranja, violeta, naranja, naranja, violeta. Y la fila inferior (parcial) es violeta, naranja, naranja, violeta, naranja.
    4. Hay una manzana en el centro. Irradiando desde el centro hay 18 cuñas alternando en color naranja y violeta.
    5. Hay una manzana en el centro. Detrás de la manzana hay un pequeño círculo naranja. Luego viene una pequeña banda circular violeta alrededor del círculo naranja. Luego una pequeña banda circular naranja, y así sucesivamente hacia afuera.
    6. Tough StuffImagina una línea recta que desciende desde una manzana en el centro del escenario. También imagine una espiral que comienza en el origen y se expande en sentido horario, a través de un poco del tercer cuadrante, luego el segundo cuadrante, y finalmente alcanza el borde derecho del escenario en el primer cuadrante. El área por encima y a la izquierda de la línea y la espiral es violeta; el área por debajo y a la derecha es naranja.
    Haz clic para obtener una pista.
    Algunos de estos incluyen expresiones de la forma((redondear (() / 20)) módulo 2) con algo como ratón x en la ranura de la entrada vacía, y tal vez diferentes números en lugar de 20 y 2.