Unidad 7:   Ramificación condicional

imageUnidad 7Ramificación condicional
Unit Overview

Los estudiantes utilizan funciones por partes para mover a sus jugadores en respuesta a pulsaciones de teclas.

Espanol

Ingles

add translation

Resultados del Producto:
    Normas y declaraciones de evidencia:

    Los estándares con el prefijo BS son específicos de Bootstrap; Otros son del Common Core. Pase el mouse sobre cada estándar para ver sus correspondientes declaraciones de evidencia. Nuestra Documento de estándares Muestra qué unidades cubren cada estándar.

    • A-SSE.1-2: The student interprets the structure of expressions to solve problems in context

      • interpretation of expressions that represent a quantity in context

      • interpretation of terms, factors, and coefficients of an expression

    • BS-DR.1: The student is able to translate a word problem into a Contract and Purpose Statement

      • given a word problem, identify the domain and range of a function

    • BS-DR.2: The student can derive test cases for a given contract and purpose statement

      • given a Contract and a Purpose Statement, write multiple examples or test cases

      • given multiple examples, identify patterns in order to label and name the variables

    • BS-DR.3: Given multiple test cases, the student can define a function

      • given examples and labeled variable(s), define the function

    • BS-PL.4: The student is familiar with the syntax for conditionals

      • defining and using functions than involve conditionals

    Duración: 50 Minutos
    Glosario:
    • cláusula: una pregunta y su respuesta correspondiente en una expresión condicional

    • condicional: una expresión de código hecha de preguntas y respuestas

    • funciones por trozos: una función que calcula diferentes expresiones basadas en su entrada

    Materiales:
      Preparación:

        Tipos

        Funciones

        Values

        Number

        + - * / sqr sqrt expt

        1 ,4 ,44.6

        String

        string-append string-length

        "hello"

        Image

        rectangle circle triangle ellipse star scale rotate put-image

        (circle 25 "solid" "red")

        Boolean

        = > < string=? and or

        true false



        La Pizza de Luigi

        Repaso

        Students analyze the behavior of a piecewise function

        Objetivos de aprendizaje

        • Students learn the concept of piecewise functions

        • Students learn about conditionals (how to write piecewise functions in code)

        Declaraciones de evidencia

        • Students will understand that functions can perform different computations based on characteristics of their inputs

        • Students will begin to see how Examples indicate the need for piecewise functions

        • Students will understand that cond statements capture pairs of questions and answers when coding a piecewise function

        Resultados del Producto

          Materiales

          • Entorno de edición (WeScheme o DrRacket con el bootstrap-teachpack instalado)

          • El Libro de Trabajo del estudiante.

          • Lapiceros/lápices para los estudiantes, marcadores de pizarra para profesores

          • Cartel de clase (Lista de reglas, tabla de lenguaje, calendario del curso)

          • Tabla de Lenguaje (Vea abajo)

          Preparación

          La Pizza de Luigi (Tiempo 20 mins)

          • La Pizza de Luigi

            Para iniciar con esta lección, completa La hoja de Trabajo de la Pizza de Luigi.

            Review students’ answers to the exercise. You can see a video demonstration of this intro at these links: 1, 2

          • El código para la función de (costo) cost está escrito abajo:  

          • Hasta ahora, todas las funciones que has visto han hecho lo mismo con sus entradas:

            • green-triangle siempre hizo triángulos verdes, no importa cuál era el tamaño.

            • safe-left? siempre comparó la coordenada de entrada a -50, sin importar cuál era la entrada.

            • update-danger siempre agregó o restó la misma cantidad

            • y así...

            Esto fue evidente al pasar de los EJEMPLOS a la definición de la función: circundando lo que cambia esencialmente da la definición, y el número de variables siempre coincidirá con el número de cosas en el Dominio.

            Ve a la Página 1, rellena el Contrato y los EJEMPLOS para esta función, luego marca con un círculo y etiqueta lo que cambia.

            It may be worthwhile to have some EXAMPLEs and definitions written on the board, so students can follow along.

          • La función de cost es especial, porque diferentes coberturas pueden resultar en expresiones totalmente diferentes que se están evaluando. Si fueras a marcar en un círculo todo lo que cambia en el ejemplo, tendrías las coberturas y el precio marcados en un círculo. Esas son dos cosas variables, pero el Dominio de la función solo tiene una cosa en si - por lo tanto ,no podemos tener dos variables.

            Have students refer back to prior Design Recipe pages - it is essential that they realize that this is a fundamentally new situation, which will require a new technique in the Design Recipe!

          • Por supuesto, el price no es realmente una variable independiente, ya que el precio depende totalmente de la topping. Por ejemplo: Si la cobertura es "cheese" la función simplemente producirá 9.00, si la cobertura es "pepperoni" la función simplemente producirá 10.50, y así sucesivamente. El precio todavía se define en términos de la cobertura, y hay cuatro posibles coberturas - cuatro posibles condiciones - de las que la función necesita preocuparse. La función de cost hace uso de una característica especial del lenguaje denominada condicional, que se abrevia en el código como cond.

          • Cada condicional tiene al menos una cláusula. Cada cláusula tiene una pregunta Booleana como resultado. En la función de Luigi, hay una cláusula para el queso, otra para el pepperoni, y así sucesivamente. Si la pregunta se evalúa como true, la expresión se evalúa y se devuelve. Si la pregunta es false, la computadora pasará a la siguiente cláusula.

            Mira la función de cost:

            • ¿Cuántas cláusulas hay para el cost función?

            • Identifica la pregunta en la primera cláusula.

            • Identifica la pregunta en la segunda cláusula.

            Square brackets enclose the question and answer for each clause. When students identify the questions, they should find the first expression within the square brackets. There can only be one expression in each answer.

          • La última cláusula en una condicional puede ser una cláusula else , que se evalúa si todas las preguntas son false.

            En la función de cost, ¿Qué se devuelve si todas las preguntas son falsas? ¿Qué pasaría si no hubiera otra cláusula else ? Trata de eliminar esa cláusula del código from the code y evaluar una cobertura desconocida y ve qué pasa.

            else clauses are best used as a catch-all for cases that you can’t otherwise enumerate. If you can state a precise question for a clause, write the precise question instead of else. For example, if you have a function that does different things depending on whether some variable x is larger than 5, it is better for beginners to write the two questions (> x 5) and (<= x 5) rather than have the second question be else. Explicit questions make it easier to read and maintain programs.

          • Las funciones que usan condiciones se denominan funciones por trozos, porque cada condición define una pieza separada de la función. ¿Por qué son útiles las funciones por partes? Piensa en el jugador de tu juego: Te gustaría que el jugador se mueva de una manera si pulsas la tecla "arriba", y de otra manera si pulsas la tecla "abajo". ¡Subir y bajar necesitan dos expresiones diferentes! Sin cond, solo podrías escribir una función que siempre mueva al jugador hacia arriba, o siempre lo mueva hacia abajo, pero no ambas.

          • En este momento la cláusula else produce una cadena, aunque el Rango de la función sea Number. ¿Crees que esto es un problema? ¿Por qué o por qué no? Como seres humanos, tener una salida que rompa ese contrato puede no ser un problema: sabemos que las funciones producirán el costo de una pizza o un mensaje de error. Pero, ¿Si la salida de este código no iba a los humanos en absoluto? ¿Qué pasa si queremos utilizar desde dentro de algún otro código? ¿Es posible que ese código se confunda? Para averiguarlo, descomenta la última línea del programa (start cost removiendo el punto y coma. Al hacer clic en "Ejecutar", el simulador utilizará la función de cost para ejecutar la caja registradora. ¡Mira lo que pasa si ordenas fuera del menú!

            Para arreglar esto, cambiemos la cláusula else para devolver un precio muy alto. Después de todo, si el cliente está dispuesto a pagar un millón de dólares, ¡Luigi hará cualquier pizza que quieran!

          Movimiento del jugador

          Repaso

          Students write a piecewise function that allows their player to move up and down using the arrow keys.

          Objetivos de aprendizaje

          • Students learn that handling user input needs piecewise functions

          • Students learn which questions to ask to detect key presses

          • Students learn how to write their own conditional expressions

          • Students reason about relative positioning of objects using mathematics

          Declaraciones de evidencia

          • Students will understand how to write different expressions that compute new coordinates in different directions

          • Students will be able to write expressions that check which key was pressed

          • Students will be able to write a conditional connecting key presses to different directions of movement

          • Students will learn to write examples that illustrate each condition in a piecewise function

          • Students will be able to experiment with using functions to change the speed or nature of character movement in a game

          Resultados del Producto

          • Los estudiantes escribirán update-player, que mueve a su jugador en respuesta a pulsaciones de tecla

          Materiales

          • El Libro de Trabajo del estudiante.

          • Todas las computadoras de los estudiantes deben tener sus plantillas de juego precargadas, con sus archivos de imagen enlazados

          Preparación

            Movimiento del jugador (Tiempo 25 min)

            • Movimiento del jugadorAhora que sabemos cond, podemos escribir update-player.

              image Mira la siguiente imagen, Cual describe lo que sucede cuando se pulsa la tecla de flecha "arriba".

              • ¿Cuál es la coordenada x inicial del jugador?

              • ¿Cuál es la coordenada y inicial del jugador?

              • ¿Qué pasa después de que el jugador se mueve?
                • ¿Cuáles son las nuevas coordenadas x & y?

                • ¿Qué ha cambiado? y ¿Qué tanto?

                • ¿Qué pasa cuándo presionamos la tecla de flecha "abajo"?

                • ¿Cuáles deberían de ser las nuevas coordenadas?

                • ¿Qué debería pasar si un usuario presiona otra tecla que no sea la tecla de flecha arriba o abajo?

              Draw a screen on the board, and label the coordinates for a player, target and danger. Circle all the data associated with the Player.

            • La siguiente tabla resume lo que debería sucederle al jugador por cada tecla:

              Cuando...

              Do...

              La tecla con la flecha hacia "arriba"

              aagregue 20 a player-y

              La tecla con la flecha hacia "abajo"

              restar 20 de player-y

              Cualquier otra tecla

              vuelva sin cambios

              On Página 1 in your workbook, you’ll find the word problem for update-player.

              (Si no te gusta usar las teclas de flecha para hacer que el jugador se mueva hacia arriba y hacia abajo, ¡Puedes cambiarlas fácilmente para trabajar con "w" y "x"!)

              Be sure to check students’ Contracts and EXAMPLEs during this exercise, especially when it’s time for them to circle and label what changes between examples. This is the crucial step in the Design Recipe where they should discover the need for cond.

            • También puedes agregar movimientos más avanzados, utilizando lo que aprendiste sobre las funciones booleanas. Estas son algunas ideas:

              • Warping: En lugar de tener que cambiar la coordenada "y" del jugador por adición y sustracción, reemplazala con un Número para que el jugador aparezca repentinamente en ese lugar. (Por ejemplo, al pulsar la tecla "c", el jugador se transporta de nuevo al centro de la pantalla, en y=240.)

              • Boundary-detection Cambia la condición para subir de modo que el jugador se mueva hacia arriba solamente si la tecla="arriba" Y el player-y es menor que 480. Igualmente, cambia la condición para "abajo" para también comprobar que player-y es mayor que 0.

              • Wrapping: Agrega una condición (antes de cualquiera de las teclas) que comprueba que la coordenada "y" del jugador está por encima de la pantalla (y > 480). Si es así, haz que el jugador se transporte hacia abajo (y=0). Añade otra condición para que el jugador se transporte de regreso a la parte superior de la pantalla si se mueve por debajo de la parte inferior.

              • Challenge: Haz que el jugador se oculte cuando la tecla "h" es presionada, ¡sólo para volver a aparecer cuando se presiona de nuevo!

              Hint on the challenge: multiply by -1.

            Concluyendo

            Repaso

            Objetivos de aprendizaje

              Resultados del Producto

                Materiales

                  Preparación

                    Concluyendo (Tiempo 5 min)

                    • Concluyendo¡Felicidades - tienes los principios de un juego en funcionamiento! ¿Qué falta todavía? ¡No ocurre nada cuando el jugador choca con el objeto o destino! Vamos a arreglar esto en las lecciones siguientes, y también trabajaremos en el arte y la historia de nuestros juegos, ¡mantente atento!

                      • Have students volunteer what they learned in this lesson

                      • Reward behaviors that you value: teamwork, note-taking, engagement, etc

                      • Pass out exit slips, dismiss, clean up.