karel
Version:
Compilador y evaluador de Karel en javascript
87 lines (86 loc) • 3.94 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8" />
<title>La sentencia define-nueva-instruccion/como</title>
</head>
<body style="background-image: url(./workbook.gif);">
<center>
<h2>Parámetros en funciones </h2>
</center>
<p>
Hemos visto ya la sentencia <strong>repetir/veces</strong> que nos ayuda a
iterar un bloque de código un determinado número de veces, pero siempre
teníamos que colocar un número fijo en la sentencia, ¿te has puesto a
pensar que pasaría si por ejemplo necesitara una instrucción que volteara
a Karel 180°? Pues la respuesta natural sería "haz una instrucción que
haga que Karel gire dos veces". Pero... ¿crees que sería posible usar la
instrucción que hicimos anteriormente <strong>gira-derecha</strong>? Si
existiese alguna forma de que en vez de poner 3 en la sentencia
<strong>repetir/veces</strong> pusiesemos un número variable, podríamos
usar la instrucción tanto para girar a la derecha como para dar media
vuelta.
</p>
<p>¡Pues si existe! Primero retomemos el código para girar a la derecha:</p>
<p>...</p>
<p>define-nueva-instruccion gira-derecha como inicio</p>
<p> repetir 3 veces inicio</p>
<p> gira-izquieda;</p>
<p> fin;</p>
<p>fin;</p>
<p>...</p>
<p>
Ahora, todas las nuevas instrucciones declaradas pueden además llevar un
parámetro, ¿pero que es un parámetro?, pues es un numerito que le podemos
mandar a la instrucción cuando la llamamos, y como cuando declaramos la
instrucción no sabemos con que número la vamos a llamar, reemplazamos el
número por una palabra. ¿Alguna vez has oído la frase "los primeros n
números"?, pues precisamente eso son los parámetros. Podemos en vez de n
poner 1, 2 ó 3, quedando "los primeros 3 números" por ejemplo. Este
parámetro puede tener el nombre que sea, siempre y cuando la primer letra
no sea un número y el nombre del parámetro no sea el mismo que una palabra
del lenguaje, por ejemplo no se puede llamar si, repetir, avanza, etc.
</p>
<p>
Este parámetro se puede usar en cualquier lugar dentro de la definición de
la instrucción, en cualquier sentencia o instrucción que necesite un
número (justo como la sentencia repetir/veces). Redefinamos ahora la
instrucción gira-derecha como la instruccion gira:
</p>
<p>...</p>
<p>define-nueva-instruccion gira (n) como inicio</p>
<p> repetir n veces inicio</p>
<p> gira-izquieda;</p>
<p> fin;</p>
<p>fin;</p>
<p>...</p>
<p>
De esta forma si escribimos en nuestro código "gira(3);" Karel girará a la
derecha, si escribimos "gira(2);" dará media vuelta, si escribimos
"gira(1);" girará a la izquierda y si escribimos "gira(0);" no hará nada.
</p>
<p>
Aqui puedes ver como se escribe una instrucción con un parámetro en
general:
</p>
<p>...</p>
<p>define-nueva-instruccion xxx (yyy) como inicio</p>
<p> zzz</p>
<p>fin;</p>
<p>...</p>
<p>
donde xxx es el nombre de la instrucción, yyy es el nombre del parámetro y
zzz es cualquier número de instrucciones.
</p>
<p>
<strong>Ejercicio 9:</strong> Escribe una nueva instrucción que avance a
Karel el número de veces que se le mande como parámetro. Debes de evitar
que Karel choque con alguna pared.
</p>
<p>¿Tienes dudas? Usa como base el código de la instrucción gira.</p>
<center>
<h2>Parámetros en funciones </h2>
<h2 align="left"><a href="Karel.html">Regresar</a></h2>
</center>
</body>
</html>