SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Programación II

Extendiendo el Lenguaje de Karel
 Ing. José Rubén Campos Alfaro

     Company
     LOGO
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).
Extendiendo el Lenguaje

 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   Figura 3.1
  escalón.
Extendiendo el Lenguaje

 Para que karel caminara sobre la
  escalera, nuestro código para subir un
  escalón sería el siguiente:

 move();       Este código lo tendremos que repetir
 turnleft();   3 veces ya que es el número de
               escalones que Karel va a subir.
 turnleft();
 turnleft();
 move();
Extendiendo el Lenguaje
class program {
                    Programa completo
program()
{
      move();
      turnleft();
      turnleft();
      turnleft();
      move() ;
      turnleft();
      move();
      turnleft();
      turnleft();
      turnleft();
      move();
      turnleft();
      move();
      turnleft();
      turnleft();
      turnleft();
      move();
  turnoff();
}

}
Definición de una Nueva Instrucción.


Sintaxis para definir una nueva instrucción
                para Karel
                                             La palabra reservada define la
Define <nombre_nueva_instrucción>()          empleamos para decirle a Karel
                                             que le enseñamos una nueva
{
                                             instrucción.
<instrucciones>
<instrucciones>                       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.
<instrucciones>
}                  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.
Definición de una Nueva Instrucción.


 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.


•Empleemos la instrucción turnright en la
definición de la instrucción subeEscalon()

         define
         subeEscalon()
         {
         turnleft();
         move();
         turnright();
         move();
         }
Definición de una Nueva Instrucción.

class program
{
                           program()
define turnright()
                                    {
     {
                                    subeEs;calon()
     turnleft();
                                     subeEs;calon()
     turnleft();
                                     subeEs;calon()
     turnleft();
                           turnof()
     }
                           }
define subeEscalon()
                           }
     {
     turnleft();
     move();
     turnright();
     move();
     }
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.
Razones para crear
                  nuevas instrucciones
 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.
   Redefiniendo                  define ponBiper()
   una                                {
   Instrucción de
   Karel.
                                      putbeeper();
                                      }


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
                                                       Ok, I got
                                                          it!

program ()              What!!   program ()
      {                                {
      tr();                            iniciaPosicion();
      move();                          move();
      pon();                           colocaPila();
      c();                             cambiaDeAvenida();
      pon();                           colocaPila();
      c();                             cambiaDeAvenida();
      rb();                            recogeBeepers();
      }                                }

  Programa poco claro                 Programa entendible
Ambientes de Karel




Posible estado inicial del mundo     Posible estado final del mundo
Razones para crear
                         nuevas instrucciones
 Al crear nuevas instrucciones con una
  labor específica, podemos reutilizar esa      move();
  misma instrucción en nuevos programas.        turnleft();
 Ej                                            turnleft();
    Pensemos que deseamos construir
                                                turnleft();
     escalones de beepers sobre el mismo        move();
     mundo de la fig.2.1.1 Entonces nuestro
     programa solo estaría levemente             Fig. 2.1.1
     modificado en la función principal de la
     siguiente manera:
Razones para crear
                          nuevas instrucciones
                              Podemos modificar la función
program()                    subeEscalon agregándole al final
      {                         La instrucción pubbeeper.
      putbeeper();
      subeEscalon();
                               program()
      putbeeper();
                                     {
      subeEscalon();
                                     turnleft();
      putbeeper();
                                     move();
      turnoff();
                                     turnright();
      }
                                     move();
                                     putbeeper();
   Modificación de un                }
programa para una nueva
         tarea.
Razones para crear
                   nuevas instrucciones
 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.
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.
Ejercicios
 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.
Tarea

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Programacion
ProgramacionProgramacion
Programacion
 
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
 
While y do while c++
While y do while c++While y do while c++
While y do while c++
 
Manual De Pascal
Manual De PascalManual De Pascal
Manual De Pascal
 
Aprendiendo de la sintaxiss
Aprendiendo de la sintaxissAprendiendo de la sintaxiss
Aprendiendo de la sintaxiss
 
Ciclos C++
Ciclos C++Ciclos C++
Ciclos C++
 
While do while
While do whileWhile do while
While do while
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Estructuras de control repetitivo
Estructuras de control repetitivoEstructuras de control repetitivo
Estructuras de control repetitivo
 
Estructuras de ciclo: while,for,do while
Estructuras de  ciclo: while,for,do whileEstructuras de  ciclo: while,for,do while
Estructuras de ciclo: while,for,do while
 
Principios programacion
Principios programacionPrincipios programacion
Principios programacion
 
Shell script en linux
Shell script en linuxShell script en linux
Shell script en linux
 
Creacion de scripts en linux
Creacion de scripts en linuxCreacion de scripts en linux
Creacion de scripts en linux
 
Michell instrucciones de ontrol
Michell instrucciones de ontrolMichell instrucciones de ontrol
Michell instrucciones de ontrol
 
Programacionestructurada
ProgramacionestructuradaProgramacionestructurada
Programacionestructurada
 
CICLOS
CICLOSCICLOS
CICLOS
 
Cómo y para qúe usar un ciclo do while en c++
Cómo y para qúe usar un ciclo do while en c++Cómo y para qúe usar un ciclo do while en c++
Cómo y para qúe usar un ciclo do while en c++
 
100 1
100 1 100 1
100 1
 
Printf23
Printf23Printf23
Printf23
 

Destacado (8)

Ejercicios karel
Ejercicios karelEjercicios karel
Ejercicios karel
 
Mis practicas karel
Mis practicas karelMis practicas karel
Mis practicas karel
 
Ejercicios karel
Ejercicios karelEjercicios karel
Ejercicios karel
 
Ciclos y Condicionales - Iterate
Ciclos y Condicionales - IterateCiclos y Condicionales - Iterate
Ciclos y Condicionales - Iterate
 
Mis Practicas karel 404
Mis Practicas karel 404Mis Practicas karel 404
Mis Practicas karel 404
 
Mis practicas de karel
Mis practicas de karelMis practicas de karel
Mis practicas de karel
 
STEAM IT Up with the 8Cs
STEAM IT Up with the 8CsSTEAM IT Up with the 8Cs
STEAM IT Up with the 8Cs
 
Science Experiments on Tablets
Science Experiments on TabletsScience Experiments on Tablets
Science Experiments on Tablets
 

Similar a Extendiendo el Lenguaje

Similar a Extendiendo el Lenguaje (20)

Instrucciones Básicas
Instrucciones BásicasInstrucciones Básicas
Instrucciones Básicas
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
CAPITULO 9 DE GREENFOOT
CAPITULO 9 DE GREENFOOTCAPITULO 9 DE GREENFOOT
CAPITULO 9 DE GREENFOOT
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Capitulo9 greenfoot
Capitulo9  greenfootCapitulo9  greenfoot
Capitulo9 greenfoot
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 
leccion 9
leccion 9leccion 9
leccion 9
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
CAPITULO 9 GREENFOOT
CAPITULO 9 GREENFOOTCAPITULO 9 GREENFOOT
CAPITULO 9 GREENFOOT
 
Jf 3 9_sg_esp(2)(3) 9
Jf 3 9_sg_esp(2)(3) 9Jf 3 9_sg_esp(2)(3) 9
Jf 3 9_sg_esp(2)(3) 9
 
Pra9
Pra9Pra9
Pra9
 
Presentación de matlab electromagnetismo ...
Presentación de matlab electromagnetismo                                     ...Presentación de matlab electromagnetismo                                     ...
Presentación de matlab electromagnetismo ...
 
Bucles for next step do while loop loop while visual basic ejemplo
Bucles for next step do while loop loop while visual basic ejemploBucles for next step do while loop loop while visual basic ejemplo
Bucles for next step do while loop loop while visual basic ejemplo
 
Manual Practico de Pascal
Manual Practico de PascalManual Practico de Pascal
Manual Practico de Pascal
 

Más de Lincoln School

Introduccionalasbasesdedatos
IntroduccionalasbasesdedatosIntroduccionalasbasesdedatos
IntroduccionalasbasesdedatosLincoln School
 
Creando diagramas de flujo con dfd
Creando diagramas de flujo con dfdCreando diagramas de flujo con dfd
Creando diagramas de flujo con dfdLincoln School
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoLincoln School
 
Tema 3 metodología para la solución de problemas
Tema 3  metodología para la solución de problemasTema 3  metodología para la solución de problemas
Tema 3 metodología para la solución de problemasLincoln School
 
Tema 1 introducción a la computadora
Tema 1   introducción a la computadoraTema 1   introducción a la computadora
Tema 1 introducción a la computadoraLincoln School
 
Historia de los lenguajes de programación
Historia de los lenguajes de programaciónHistoria de los lenguajes de programación
Historia de los lenguajes de programaciónLincoln School
 
Ciclos y Condicionales
Ciclos y CondicionalesCiclos y Condicionales
Ciclos y CondicionalesLincoln School
 
Programación 2 - karel1
Programación 2 - karel1Programación 2 - karel1
Programación 2 - karel1Lincoln School
 
03 algorithm properties
03 algorithm properties03 algorithm properties
03 algorithm propertiesLincoln School
 
Algorithms and flowcharts1
Algorithms and flowcharts1Algorithms and flowcharts1
Algorithms and flowcharts1Lincoln School
 
Collaborative work with google docs
Collaborative work with google docsCollaborative work with google docs
Collaborative work with google docsLincoln School
 

Más de Lincoln School (14)

Introduccionalasbasesdedatos
IntroduccionalasbasesdedatosIntroduccionalasbasesdedatos
Introduccionalasbasesdedatos
 
Creando diagramas de flujo con dfd
Creando diagramas de flujo con dfdCreando diagramas de flujo con dfd
Creando diagramas de flujo con dfd
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Tema 3 metodología para la solución de problemas
Tema 3  metodología para la solución de problemasTema 3  metodología para la solución de problemas
Tema 3 metodología para la solución de problemas
 
Tema 1 introducción a la computadora
Tema 1   introducción a la computadoraTema 1   introducción a la computadora
Tema 1 introducción a la computadora
 
Historia de los lenguajes de programación
Historia de los lenguajes de programaciónHistoria de los lenguajes de programación
Historia de los lenguajes de programación
 
Html
HtmlHtml
Html
 
Ciclos y Condicionales
Ciclos y CondicionalesCiclos y Condicionales
Ciclos y Condicionales
 
Programación 2
Programación 2Programación 2
Programación 2
 
Programación 2 - karel1
Programación 2 - karel1Programación 2 - karel1
Programación 2 - karel1
 
03 algorithm properties
03 algorithm properties03 algorithm properties
03 algorithm properties
 
Algorithms and flowcharts1
Algorithms and flowcharts1Algorithms and flowcharts1
Algorithms and flowcharts1
 
Collaborative work with google docs
Collaborative work with google docsCollaborative work with google docs
Collaborative work with google docs
 
Movie maker
Movie makerMovie maker
Movie maker
 

Último

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 

Último (20)

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 

Extendiendo el Lenguaje

  • 1. Programación II Extendiendo el Lenguaje de Karel Ing. José Rubén Campos Alfaro Company LOGO
  • 2. 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).
  • 3. Extendiendo el Lenguaje 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 Figura 3.1 escalón.
  • 4. Extendiendo el Lenguaje  Para que karel caminara sobre la escalera, nuestro código para subir un escalón sería el siguiente: move(); Este código lo tendremos que repetir turnleft(); 3 veces ya que es el número de escalones que Karel va a subir. turnleft(); turnleft(); move();
  • 5. Extendiendo el Lenguaje class program { Programa completo program() { move(); turnleft(); turnleft(); turnleft(); move() ; turnleft(); move(); turnleft(); turnleft(); turnleft(); move(); turnleft(); move(); turnleft(); turnleft(); turnleft(); move(); turnoff(); } }
  • 6. Definición de una Nueva Instrucción. Sintaxis para definir una nueva instrucción para Karel La palabra reservada define la Define <nombre_nueva_instrucción>() empleamos para decirle a Karel que le enseñamos una nueva { instrucción. <instrucciones> <instrucciones> 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. <instrucciones> } 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.
  • 7. Definición de una Nueva Instrucción.  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.
  • 8. Definición de una Nueva Instrucción.  Definamos la instrucción turnright. define turnright() { turnleft() turnleft() turnleft() }
  • 9. 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(); }
  • 10. Definición de una Nueva Instrucción. class program { program() define turnright() { { subeEs;calon() turnleft(); subeEs;calon() turnleft(); subeEs;calon() turnleft(); turnof() } } define subeEscalon() } { turnleft(); move(); turnright(); move(); }
  • 11. 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.
  • 12. Razones para crear nuevas instrucciones  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.
  • 13. Razones para crear nuevas instrucciones  Ej. Redefiniendo define ponBiper() una { Instrucción de Karel. putbeeper(); } 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.
  • 14. Razones para crear nuevas instrucciones Ok, I got it! program () What!! program () { { tr(); iniciaPosicion(); move(); move(); pon(); colocaPila(); c(); cambiaDeAvenida(); pon(); colocaPila(); c(); cambiaDeAvenida(); rb(); recogeBeepers(); } } Programa poco claro Programa entendible
  • 15. Ambientes de Karel Posible estado inicial del mundo Posible estado final del mundo
  • 16. Razones para crear nuevas instrucciones  Al crear nuevas instrucciones con una labor específica, podemos reutilizar esa move(); misma instrucción en nuevos programas. turnleft();  Ej turnleft();  Pensemos que deseamos construir turnleft(); escalones de beepers sobre el mismo move(); mundo de la fig.2.1.1 Entonces nuestro programa solo estaría levemente Fig. 2.1.1 modificado en la función principal de la siguiente manera:
  • 17. Razones para crear nuevas instrucciones Podemos modificar la función program() subeEscalon agregándole al final { La instrucción pubbeeper. putbeeper(); subeEscalon(); program() putbeeper(); { subeEscalon(); turnleft(); putbeeper(); move(); turnoff(); turnright(); } move(); putbeeper(); Modificación de un } programa para una nueva tarea.
  • 18. Razones para crear nuevas instrucciones  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.
  • 19. 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.
  • 20. Ejercicios  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.
  • 21. 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.
  • 22. Tarea