Departamento de Informática - Universidad Nacional de San Luis
Transcript of Departamento de Informática - Universidad Nacional de San Luis
Lenguaje TIMBA!
2015!
Fundamentos de la Informática – Int. a la Programción !Int. a la Computación!
Area de Servicios – Dpto. De Informática - FCFMyN !
! El lenguaje “TIMBA” recibe este nombre por: Terribly Imbecile Machine for Boring Algorithms.
! Fue desarrollado por un equipo de trabajo en la UNSL, como un lenguaje sencillo de programación para trabajar con la estructura de pilas.
! El equipo fue dirigido por el Ing. Hugo Ryckeboer que en la actualidad es aún Profesor de nuestra Casa.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Orígenes!Lenguaje Timba
Programa!! Un algoritmo es una herramienta para resolver un problema
computacional bien definido.!! La especificación del problema da la relación deseada entre la
entrada y la salida. (Enunciado)!! El algoritmo describe un procedimiento computacional para lograr esa
relación entre entrada y salida.!! Un programa es la especificación de un algoritmo en un lenguaje de
programación para que se pueda ejecutar en un procesador.!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Programas!! Sugiere el empleo de sólo tres estructuras de control, como únicas componentes elementales de un programa:
! la concatenación, ! la selección y ! la repeMción,
En TIMBA!secuencialidad natural de las sentencias!!sentencias SI. . .SINO. . .NADA MAS!!sentencias MIENTRAS . . . REPITA!!
f. Unión, enlace entre ideas o actos!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
El Lenguaje TIMBA!
! Maneja pilas de cartas y tiene sólo tres operaciones elementales sobre ellas.!
! No es posible una gran capacidad de programación.!! Permite definir pilas y consta de las operaciones elementales sobre
las pilas de tomar y depositar cartas, e invertir la carta que en ese momento se analiza. !
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Programa en TIMBA!
! Un programa es una secuencia de órdenes o sentencias a un ejecutor, UCP.!
! UCP es responsable de los resultados y del análisis de errores y reconoce las pilas por su nombre, las operaciones “tomar” y “depositar”, las estructuras de control y un ente especial, llamado “CARTA” o “LA CARTA”.!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Programa en TIMBA!! Consta de dos partes:
! una definición del proceso algorítmico
! los datos de pila.
! La definición del proceso comienza con las palabras claves: DEFINICION DE PROGRAMA, y las sentencias que describen el algoritmo a conMnuación,van separadas entre sí por “,”.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Separadas entre sí por el símbolo “;”
Programa en TIMBA!! Las sentencias son de tres Mpos:
OperaMvas; De selección; IteraMvas.
ordenan a UCP la realización de una, ninguna o varias veces un bloque de sentencias
actúan sobre las pilas o la carta
ordenan a UCP cursos alternativos del proceso!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
! Actúan sobre las pilas o la carta. ! Comienzan siempre por un verbo en imperaMvo, que es interpretado por UCP como una orden.
! Los verbos posibles son: a. TOME; b. INVIERTA;
c. DEPOSITE.
Sentencias Operativas!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencias de Selección!
! Permiten ordenar a UCP cursos alternaMvos del flujo de proceso, bajo ciertas condiciones verificables en ejecución.
! Comienzan con SI, seguido de la condición y las sentencias a ejecutar si ésta es verdadera.
! Si no hay dos secuencias alternaMvas, la sentencia SI finaliza con las palabras claves SINO NADA MAS.
! Si hay una secuencia a realizar si la condición fuera falsa, se la incluye entre las palabras claves SINO y NADA MAS.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencias Iterativas!
! Permiten ordenar a UCP la realización de una, ninguna o varias veces un bloque de sentencias, bajo control de una condición verificable en ejecución.
! Comienzan siempre con MIENTRAS, que es seguido por la condición, el bloque a ejecutar y la palabra clave REPITA.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Pilas!! Su descripción de datos comienza por las palabras clave “UCP
EJECUTE CON LAS SIGUIENTES CARTAS:”, seguida por la descripción de las pilas, separadas por “,” y es de una de las dos formas: 1. Descripción de pila vacía; 2. Descripción de contenido de pila.
PILA <nombre> NO TIENE CARTAS
PILA <nombre> TIENE <lista de cartas>
Pila Vacia
Pila
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sintaxis de TIMBA!! Para escribir correctamente los programas en un lenguaje, se deben especificar las reglas a tener en cuenta.
! El conjunto de reglas forma la sintaxis del lenguaje.
! Usaremos lo siguiente:
! < >,
! [ ],
! { },
! *
! Palabras claves de TIMBA!! Signos de puntuación!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sintaxis de TIMBA!! Las palabras en mayúscula son palabras claves de TIMBA, y deben escribirse como aparecen.
! Las palabras en minúscula entre corchetes angulares deben reemplazarse por su definición.
! Si aparecen dos o más ítems entre llaves, se elige entre ellos aquél que se ajuste al problema a resolver.
! Si ítem está entre corchetes se puede optar por escribirlo o no.
! Si un ítem está entre corchetes seguidos de un asterisco ∗, se puede omiMr el ítem o escribirlo una, dos o más veces.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Ejemplo!
! Problema: Se Mene una pila de 3 cartas con el 1 de oros, el 2 de copas (ambas boca arriba) y el 3 de bastos boca abajo y se quiere inverMr ésta úlMma para dejarlas todas boca arriba.
TOME DE PILA A, INVIERTA LA CARTA, DEPOSITELA EN PILA A; UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA A TIENE 1 DE OROSh - 2 DE COPASh - 3 DE BASTOS.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
DEFINICION DE PROGRAMA
UCP Ejecuta!• DEFINICION DE PROGRAMA
!
TOME DE PILA A, INVIERTA LA CARTA, DEPOSITELA EN PILA A; UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA A TIENE 1 DE OROSh - 2 DE COPASh - 3 DE BASTOS.
PILA A
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencias!! Son el elemento consMtuMvo de TIMBA y la mínima unidad lógica.
! Son de dos grandes Mpos: OperaBvas y de Control.
! Las operaMvas realizan cambios sobre las pilas, o estado de la carta que UCP analiza en ese momento: “la carta que UCP Mene en la mano”.
! Las de control permiten controlar la secuencia de operaciones, sin ser operaciones en sí: SI y MIENTRAS.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencias!! Cuando en una descripción formal aparece la palabra sentencias, se quiere simbolizar:
! Donde formalmente <sentencia> puede ser:
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencias Operativas!! Son tres, formalmente:
Ejemplo: TOME DE PILA A
Ejemplo: INVIERTA LA CARTA
Ejemplo: DEPOSITELA EN PILA A
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencias Operativas!! La carta que figura al tope de la pila es tomada. ! Cualquier referencia a CARTA se interpretará como a la úlBma carta tomada, que no haya sido depositada.
! DEPOSITE ordena dejar la carta que Mene en la mano en ese momento, en una pila determinada.
! La pila debe ser declarada en la segunda parte del programa.
Ejemplo: PILA A TIENE 1 DE OROSh - 2 DE COPASh - 3 DE BASTOS.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Detección de Errores!! UCP detectará error de ejecución si no tuviera una carta en la mano y
se le ordenara DEPOSITE. !! UCP no admite la ejecución de dos TOME sin un DEPOSITE entre
ellos.!! UCP reconoce error de ejecución al intentar tomar una carta de una
pila vacía.!! INVIERTA presupone la existencia de carta, sino UCP detecta un
error de ejecución.!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Errores de Ejecución!
! Ejemplo 1: ME PIDE UD. QUE TOME DE PILA ⟨nombre⟩ QUE ESTA VACIA. !! Ejemplo2:ME PIDE UD. QUE TOME PILA⟨nombre⟩Y YO YA TENGO UNA CARTA: el
⟨número⟩ de ⟨palo⟩. ! Ejemplo 3: ME PIDE UD. QUE DEPOSITE EN PILA ⟨nombre⟩ Y YO NO TENGO CARTA.
! Ejemplo 4: ME PIDE UD. QUE INVIERTA LA CARTA, PERO YO NO TENGO CARTA.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencia SI!! Formalmente debe escribirse:
! Ejemplos:
• TOME LA CARTA DE PILA A, SI CARTA ESTA BOCA ABAJO INVIERTA LA CARTA, DEPOSITE LA CARTA EN PILA A SINO DEPOSITELA EN PILA B NADA MAS
• TOME LA CARTA DE PILA A, SI LA CARTA NO ESTA BOCA ABAJO, SI LA CARTA ES EL 1 DE OROS DEPOSITELA EN PILA A SINO NADA MAS SINO NADA MAS
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Ejecución condicional!! TOME LA CARTA DE PILA A, SI CARTA ESTA BOCA ABAJO INVIERTA LA
CARTA, DEPOSITE LA CARTA EN PILA A SINO DEPOSITELA EN PILA B NADA MAS
Pila A Pila B
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Ejecución condicional!! TOME LA CARTA DE PILA A, SI CARTA ESTA BOCA ABAJO INVIERTA LA
CARTA, DEPOSITE LA CARTA EN PILA A SINO DEPOSITELA EN PILA B NADA MAS
Pila A Pila B
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Sentencia MIENTRAS!! Formalmente, debe escribirse:
! Ejemplo: si se quiere pasar todas las cartas de la PILA B a la C y luego tomar una carta de la PILA D
• MIENTRAS LA PILA B NO ESTA VACIA TOME DE PILA B, DEPOSITE EN PILA C REPITA, TOME DE PILA D
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Condición!
! Es una proposición lógica, que emite un juicio sobre el estado de las pilas o la carta, y que puede ser evaluada como “Verdadera” o “Falsa”.
! Ejemplo:
• LA CARTA ES DEL PALO OROS Y LA CARTA ES DEL VALOR 1
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Descripción de Pila!
! Formalmente, se escribe:
! Ejemplo: • PILA A TIENE 1 DE OROSh - 2 DE COPASh - 3 DE BASTOS.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Backus Naur Form!
! Una especificación BNF es un conjunto de reglas de derivación que permiten describir la sintaxis de un lenguaje.
! Las reglas se escriben como: <símbolo> ::= expresión, ! <símbolo> es un no-‐terminal ! expresión consiste de una o más secuencias de símbolos; separadas |, para indicar una elección posible.
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Backus Naur Form!
! Cada opción del lado derecho puede susMtuir completo al <símbolo> de la izquierda.
! Los símbolos que no aparecen del lado izquierdo son los terminales.
! Los símbolos de la izquierda son no-‐terminales y aparecen encerrados entre < >.
! El símbolo ::= indica que el símbolo de la izquierda debe susMtuirse por la expresión de la derecha.!
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Backus Naur Form!! Ejemplo:
No-terminal distinguido"No-terminales"Terminales"
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba
Ejemplo de Derivación!<Programa timba>
<proceso> <declaraciones> . ;
TOME DE PILA A, INVIERTA LA CARTA, DEPOSITELA EN PILA A; UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA A TIENE 1 DE OROSh - 2 DE COPASh - 3 DE BASTOS.
DEFINICION DE PROGRAMA
DEFINICION DE PROGRAMA <sentencias> UCP EJECUTE CON LAS SIGUIENTES CARTAS : <lista de pilas>
<sentencias> <sentencia>
<sentencias> <sentencia>
<sentencia>
<operativa>
<operativa>
<operativa>
<descripcion de pila>
<contenido> <nombre> <pila>
..."
..."
..."
PILA A TIENE <lista de cartas>
..."
Area de Servicios – Dpto. De Informática – FCFMyN - UNSL
Lenguaje Timba