Más reporteros matemáticos

En este proyecto, crearás bloques matemáticos que combinan varios números, como un bloque suma, que combina dos números usando la suma:
suma de (4) a (6) reporta 15
  1. Abre tu proyecto U2L4-BibliotecaMatemática si aún no está abierto.
  2. Crea bloques para máximo (que reportaría el mayor de dos números de entrada) y mínimo (que reportaría el menor de dos números de entrada):
    máximo de (6) y (4) reporta 6 máximo de (3) y (-4) reporta -4

El bloque combinar 'ranura de entrada de lista' usando 'reportero ranura de entrada' toma dos entradas: una lista y una operación con dos entradas, y reporta el resultado de combinar todos los elementos en la lista de entrada usando la operación de entrada. Por ejemplo, la siguiente expresión reporta: 0 + 1 + 2.
combinar (lista {0, 1, 2}) con (()+()) reporta 3

Elige la operación y combinar usa la operación combinando todos los elementos de la lista de entrada y luego reporta el resultado.

Ten en cuenta que la función utilizada para combinar los elementos de la lista siempre tiene dos espacios de entrada en blanco. El bloque mantener solo necesita un espacio en blanco en su función de entrada, pero con combinar, se requieren dos.

Combinar es una función de orden superior; es una función que toma una función como entrada. Ya has visto otra función de orden superior: mantener (en Unidad 2 Laboratorio 3 Página 5: Mantener elementos de una lista).

A diferencia de mantener, la función combinar solo se usa con algunas funciones de entrada. ¿Qué funciones?

Combinar se usa principalmente con solo estas funciones:
+ ×
and o
unir unir palabras
y los bloques máximo de () () y mínimo de () () que acabas de escribir.

¿Por qué tan pocas?

La función tiene que ser asociativa, esto significa que no importa en qué orden agrupes los elementos. Por ejemplo, la suma es asociativa: (7 + 8) + 1 es lo mismo que 7 + (8 + 1) (resuélvelo tú mismo), pero la resta no lo es: (7 − 8) − 1 es diferente de 7 − (8 − 1). Entonces expresiones como combinar con (-) elementos de (lista 7 8 1) serían ambiguas.

  1. Usa combinar para construir máximo de lista y mínimo de lista.
    máximo de lista {1, 22, 3, -4} reporta 22 mínimo de lista {1, 22, 3, -4} reporta -4
  2. Cree un bloque suma de lista que reporte la suma de los elementos de una lista.
    suma de lista {1, 2, 3, 10} reporta 16
  3. Cree un bloque promedio de lista que calcule el promedio de los elementos en una lista:
    promedio de lista {1, 2, 3, 4} reporta 2.5
    Sugerencia sobre promedio de la lista

    Primero piensa: ¿cómo se calcula un promedio? Luego piensa: ¿qué bloques podrían ayudarte a hacer eso en Snap!?

AAP-2.M.2, AAP-2.O.4

Promedio de la lista y suma de la lista son procedimientos que necesitarás repetidamente, así que después de un tiempo, simplemente sabrás cómo escribirlos, o podrías ponerlos en una biblioteca y no tendrás que reinventarlos cada vez. Encontrar el valor máximo o mínimo de una lista y verificar la divisibilidad también son algoritmos que necesitarás con frecuencia.

AAP-3.C.2
Viste la definición de procedimiento para un comando enUnidad 1 Laboratorio 3, Página 4: Modifica tu molinete.
La definición de un reportero se parece mucho a la definición de un comando excepto que incluye un
RETURN
(como reportar). Por ejemplo, esta definición

En muchos lenguajes (incluido Snap!) las variables deben ser declaradas de alguna manera (en Snap!, puedes hacer clic al botón "Crear una variable" o usar el bloque variable de programa). Pero el lenguaje de AP no incluye declaraciones de variables, por eso no los verás en el examen.

raíz cuadrada de (número) {variables de programa (raíz positiva), asignar a (raíz positiva) el valor ((raíz cuadrada) de (número)), reporta (lista (raíz positiva) ((-1) × raíz positiva))
se escribiría como
PROCEDURE raízCuadrada(número)
{
    raízPositiva ← sqrt(número)
    RETURN ([raízPositiva, -1 * raízPositiva])
}
o PROCEDURE raíz cuadrada (número) (raíz positiva ← raíz cuadrada (número)), RETURN (raíz positiva, -1 * raíz positiva)
AAP-3.A.7
Como con reportar en Snap!, cuando se ejecuta un
RETURN
, el flujo de control vuelve al lugar del código donde se llamó el procedimiento, y el procedimiento devuelve el valor de la expresión dentro del comando
RETURN
o el bloque reportar.
También, el procedimiento
sqrt
(abreviatura de square root, raíz cuadrada en inglés) no está integrado en el lenguaje del AP, es por eso que está escrito en minúsculas como otros procedimientos definidos por un programador.
AAP-2.H.3
La expresión condicional si (a > b) {
    reportar verdadero
} sino {
    reportar (a = b)
} se escribiría como
IF(a > b)
{
    RETURN(verdadero)
}
ELSE
{
    RETURN(a = b)
}
o IF(a > b)
{
    RETURN(verdadero)
}
ELSE
{
    RETURN(a = b)
}
Como en Snap!, si la condición
a > b
es verdadera, se ejecuta el código en el primer bloque de declaraciones; si es falsa, se ejecuta el código en el segundo bloque de declaraciones.
  1. ¿Cuándo se mostrará 'Error. Entrada no válida'?

    mayorOIgual
    PROCEDURE mayorOIgual(a, b)
        IF(a > b)
        {
            RETURN(verdadero)
        }
        ELSE
        {
            RETURN(a = b)
        }
        DISPLAY"Error. Entrada  no válida.")
    }
    
    Cuando
    a > b
    es verdadero.
    Cuando
    a > b
    es falso.
    Siempre
    Nunca
I have a lot of edits to make in this TIF based on the paper I'm writing and the NCTM presentation I'm giving. --MF, 8/12/19
  1. El máximo común divisor de dos números enteros es el número entero positivo más grande que es un divisor (un factor) de ambos números enteros.
    Desarrolla un bloque máximo común divisor. (Usa tu bloque divisores de ().)
    máximo común divisor de (20) y (50) reporta 10 máximo común divisor de (36) y (40) reporta 4
    Consejos sobre la construcción del bloque máximo común divisor
    Puede que te resulte útil utilizar máximo de lista tanto como divisores y también para construir un bloque intersección que toma dos listas como entrada y reporta todos los elementos que están en ambas listas.
    intersección de {manzanas, papas, zanahorias, peras} y {bellotas, manzanas, peras, piñas} reporta {manzanas, peras}
    Consejos más detallados sobre máximo común divisor
    Para encontrar el máximo común divisor de dos números, necesitarás encontrar:
    1. Los divisores de cada número de entrada
    2. Los números que son divisores de ambos números de entrada
    3. El número mayor que es un divisor de ambos números de entrada