SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Tendances (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
 

En vedette (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
 

Similaire à Extendiendo el Lenguaje

Similaire à 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
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
leccion 9
leccion 9leccion 9
leccion 9
 
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
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Pra9
Pra9Pra9
Pra9
 
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 GREENFOOT
CAPITULO 9 GREENFOOTCAPITULO 9 GREENFOOT
CAPITULO 9 GREENFOOT
 
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
 
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
 

Plus 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
 

Plus 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
 

Dernier

herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaJadeVilcscordova
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosYOMIRAVILLARREAL1
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC6dwwcgtpfx
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.241534381
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8antoniopalmieriluna
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxVICTORMANUELBEASAGUI
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).jcaballerosamayoa
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024NicolleAndrade7
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaRicardoEstrada90
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...dramosbrise1403
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónAntonia Yamilet Perez Palomares
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaEdwinGarca59
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfJosAndrRosarioVzquez
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxJOELGARCIA849853
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxcj12paz
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdfjuan23xpx
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónUniversidad de Sonora
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptxdulcemonterroza
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blogManuel Diaz
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxCsarNlsonMrquezContr
 

Dernier (20)

herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blog
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docx
 

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