Ahora ya sabemos como mandarle un número a un procedimiento, y probablemente ya habrás intentado poner operaciones como suma, resta o multiplicación, sin embargo lamanto decirte que ninguna de estas operaciones están soportadas en Karel.
Por otro lado, existen dos funciones que nos permiten sumarle 1 a un número y restarle 1.
Pero... ¿qué es una función? Una función es una instrucción que devuelve un valor, es decir, reciben un parámetro (o más) que luego procesa, para al final regresar un valor; por ejemplo, la función booleana junto-a-zumbador devuelve verdadero si Karel está parado junto a un zumbador y falso si no lo está. En Karel no se pueden declarar funciones nuevas, pero se pueden usar las que ya existen.
Las funciones sucede y precede son dos instrucciones que reciben un parámetro, posteriormente, devuelven un número más y un número menos (respectivamente) que el que le enviamos.
La función sucede se escribe así:
...
sucede(xxx);
...
donde xxx es un número o un parámetro, y la función precede se escribe así:
...
precede(xxx);
...
donde xxx es un número o un parámetro.
Debido a que devuelven un número, solo nos pueden servir poniendolas en alguna instrucción o sentencia que reciba un número, como repetir/veces, otro sucede o precede o una instrucción personal que reciba un parámetro.
Por ejemplo, el siguiente trozo de código pone n + 1 zumbadores en donde Karel se encuentra:
...
repetir sucede(n) veces inicio
deja-zumbador;
fin;
...
nota que n se "incrementa" (se le suma uno). Si en vez de sucede, pusieramos precede, Karel dejaría n - 1 zumbadores, porque la n se "decrementa" (se le quita uno) cuando se pone dentro de una función precede.
Ejercicio 10: Escribe una nueva instrucción que reciba un número n y mueva a Karel n + 2 veces (validando el choque contra paredes), y posteriormente, coloque n - 2 zumbadores en la posición en donde está. PISTA: Usa un repetir/veces para mover a Karel y otro para colocar los zumbadores. NO se vale colocar instrucciones fuera de los ciclos repetir/veces.