Ejercicios sobre parámetros

 Lo que vimos hasta la clase pasada fue que son los parametros y como lo utilizamos:


Supongamos que tenemos un procedimiento llamado Poner3Verdes , que pone 3 bolitas verdes en un casillero, y lo queremos generalizar para que funcione con cualquier color que queramos (pero uno solo por vez). Lo que necesitamos es agregarle al procedimiento una especie de agujero...

procedure Poner3(color) {

  repeat(3) {

    Poner(color)

                }

}

program {

  Poner3(Negro)

  Poner3(Rojo)

}

Lo primero que hicimos fue definir un procedimiento, pero con una pequeña diferencia: toma un parámetro, llamado color.

procedure Poner3(color) {
  Poner(color)
  Poner(color)
  Poner(color)
}

¿Y qué es un parámetro? Son esos nombres que van entre paréntesis para ser reemplazados por valores concretos cuando invocamos al procedimiento. Por ejemplo, si lo invocamos así..

program {
  Poner3(Negro)
}

...lo que se ejecuta es:

Poner(Negro)
Poner(Negro)
Poner(Negro)

Y si lo invocamos así...

program {
  Poner3(Rojo)
}

lo que se ejecuta es:

Poner(Rojo)
Poner(Rojo)
Poner(Rojo)
Ejercicio : Definí el procedimiento DibujarLinea3 que reciba un color y dibuje una linea de ese color.
En vez de escribir color podríamos haber escrito ccol o incluso pepe, porque a la computadora no le importa el nombre que le demos a las cosas... pero a quienes programamos sí (y mucho ), así que por eso elegimos usar nombres que expresen bien lo que queremos decir.
Ya definimos un procedimiento para poder dibujar cuadrados negros (DibujarCuadradoNegroDeLado3), pero todo este asunto de los parámetros surgió cuando quisimos hacer cuadrados de distintos colores. 

¿Y si queremos que DibujarLinea3 sirva también para dibujar líneas en cualquier dirección?  Sin dudas tenemos que decirle al procedimiento, además del color, en qué direccion debe dibujar la línea; y para eso vamos a necesitar un nuevo parámetro . Por suerte, ¡los procedimientos también pueden tener más de un parámetro

¿Y cómo se hace esto? Muy fácil, al igual que como hacemos al escribir, vamos a separar cada parámetro usando comas de esta manera:  

procedure DibujarLinea3(color, direccion) {
  Poner(color)
  Mover(direccion)
  Poner(color)
  Mover(direccion)
  Poner(color)
} 
Creá un program que invoque la nueva versión de DibujarLinea3 (no tenés que definirla, sólo invocarla) y dibuje un cuadrado multicolor como este:

No te preocupes por la posición final del cabezal.


Para terminar esta lección, vamos a definir un procedimiento llamado Triada ¡que recibe tres parámetros! 

Triada recibe tres colores por parámetro y pone tres bolitas, una al lado de la otra hacia el Este, en el mismo orden en que se reciben. El cabezal empieza en el origen y debe terminar sobre la última bolita de la tríada.

Por ejemplo: Triada(Rojo, Azul, Verde) nos da como tablero resultante:

mientras que Triada(Azul, Verde, Rojo):

Definí el procedimiento Triada.



Comentarios