Extendiendo la vida útil de las Estructuras de Tratamiento de Agua
Extendiendo el Lenguaje
-
Upload
mr-campos-lincoln-school -
Category
Technology
-
view
374 -
download
1
Transcript of Extendiendo el Lenguaje
Company
LOGO
Extendiendo el Lenguaje de Karel
Ing. José Rubén Campos Alfaro
Programación II
Extendiendo el Lenguaje
Podemos enseñar nuevas instrucciones
que ejecutan intrucciones mas simples.
Imagine que queremos que Karel gire a la
derecha entonces tendríamos que
indicarle que diera tres giros a la
izquierda.
Entonces sería de gran utilidad contar con
una instrucción turnright (gira a la
derecha).
Subiendo la escalera
Karel se encuentra
frente a una escalera
como se muestra en la
figura 3.1 compuesta
por tres escalones de
subida. Lleva a karel
hasta el último
escalón.
Extendiendo el Lenguaje
Figura 3.1
Extendiendo el Lenguaje
Para que karel caminara sobre la
escalera, nuestro código para subir un
escalón sería el siguiente:
move();
turnleft();
turnleft();
turnleft();
move();
Este código lo tendremos que repetir
3 veces ya que es el número de
escalones que Karel va a subir.
Extendiendo el Lenguaje
class program {
program()
{
move();
turnleft();
turnleft();
turnleft();
move() ;
turnleft();
move();
turnleft();
turnleft();
turnleft();
move();
turnleft();
move();
turnleft();
turnleft();
turnleft();
move();
turnoff();
}
}
Programa completo
Definición de una Nueva Instrucción.
Sintaxis para definir una nueva instrucción
para Karel
Define <nombre_nueva_instrucción>()
{
<instrucciones>
<instrucciones>
.
.
.
<instrucciones>
}
La palabra reservada define la
empleamos para decirle a Karel
que le enseñamos una nueva
instrucción.
Posteriormente viene el nombre de
la nueva instrucción, la cual no debe
ser igual al nombre de alguna otra
Instrucción nativa o ya definida.
Por último, viene el código que deseamos que Karel
Ejecute a través de la nueva instrucción. Nota: No hay
; después de la primera línea.
Las instrucción puede ser una sola
instrucción o un bloque de instrucciones
creado con “{“ y “}”. Esto crea lo que se
conoce como una entrada al diccionario
de karel, que es donde está todo lo que
karel puede y sabe ejecutar.
Definición de una Nueva Instrucción.
Definamos la instrucción turnright.
define turnright()
{
turnleft()
turnleft()
turnleft()
}
Definición de una Nueva Instrucción.
Definición de una Nueva Instrucción.
•Empleemos la instrucción turnright en la
definición de la instrucción subeEscalon()
define
subeEscalon()
{
turnleft();
move();
turnright();
move();
}
class program
{
define turnright()
{
turnleft();
turnleft();
turnleft();
}
define subeEscalon()
{
turnleft();
move();
turnright();
move();
}
program()
{
subeEs;calon()
subeEs;calon()
subeEs;calon()
turnof()
}
}
Definición de una Nueva Instrucción.
Razones para crear
nuevas instrucciones
Es un buen hábito de programación de
programación, el tener las nuevas
instrucciones definidas en forma más
clara y concisa posible.
Posibilidad de reutilización en futuros
programas escritos.
Contar con una biblioteca de múltiples
funciones de uso variado.
La claridad en el código es de suma
importancia cuando estamos
programando.
Una aplicación sencilla es renombrar las
instrucciones nativas (move, putbeeper,
etc), para tenerlas de manera más clara y
evitar errores a la hora de escribirlas.
Razones para crear
nuevas instrucciones
Ej.
Razones para crear
nuevas instrucciones
define ponBiper()
{
putbeeper();
}
Redefiniendo
una
Instrucción de
Karel.
La claridad en un código nos ayuda a comprender que estamos haciendo y
cómo estamos dividiendo nuestra tarea en tareas más pequeñas.
Razones para crear
nuevas instrucciones
program ()
{
tr();
move();
pon();
c();
pon();
c();
rb();
}
program ()
{
iniciaPosicion();
move();
colocaPila();
cambiaDeAvenida();
colocaPila();
cambiaDeAvenida();
recogeBeepers();
}
Programa poco claro Programa entendible
What!!
Ok, I got
it!
Ambientes de Karel
Posible estado inicial del mundo Posible estado final del mundo
Al crear nuevas instrucciones con una
labor específica, podemos reutilizar esa
misma instrucción en nuevos programas.
Ej
Pensemos que deseamos construir
escalones de beepers sobre el mismo
mundo de la fig.2.1.1 Entonces nuestro
programa solo estaría levemente
modificado en la función principal de la
siguiente manera:
Razones para crear
nuevas instrucciones
move();
turnleft();
turnleft();
turnleft();
move();
Fig. 2.1.1
Razones para crear
nuevas instrucciones
program()
{
putbeeper();
subeEscalon();
putbeeper();
subeEscalon();
putbeeper();
turnoff();
}
Modificación de un
programa para una nueva
tarea.
Podemos modificar la función
subeEscalon agregándole al final
La instrucción pubbeeper.
program()
{
turnleft();
move();
turnright();
move();
putbeeper();
}
Siempre es aconsejable seccionar nuestro
problema en pequeñas tareas. La
creatividad de un programador se basa en
poder dividir una tarea en varias tareas de
menor complejidad.
Esto se llama top-down .- tratamos de
llevar a cabo una tarea por medio de
realizarla desde lo general, seccionándola
y simplificándola hasta llevarla a las
instrucciones más simples (nativas) de
Karel.
Razones para crear
nuevas instrucciones
Ejercicios
Re escribir los siguientes problemas. Deberá utilizar las nuevas
instrucciones creadas.
1. Karel debe ir al norte coordenadas (14,2) durante su camino deberá
recoger los zumbadores(beepers) que encuentre a su paso y llevarlos a su
destino.
Recuerda que los
mundos
están en el blog de
la clase.
Descargarlos.
2. Karel tiene como actividad recoger un zumbador que se
encuentra en las coordenadas (9,2) regresar con el
zumbador(beeper) y depositarlo en el lugar donde inicio su
recorrido.
Ejercicios
3. Karel tiene la siguiente actividad. Karel debe recoger los
zumbadores (beepers) que están en el laberinto. Karel debe iniciar a
recoger los zumbadores iniciando su recorrido hacia el Norte y
terminando su recorrido para recoger los zumbadores hacia el Este.
Una vez levantado el último zumbador debe colocar los zumbares uno
a uno desde las coordenadas (1,10 hasta la 1,3). Karel debe llegar a su
punto de partida y quedar mirando hacia el Norte.
Ejercicios
Tarea