Departamento de Informática - Universidad Nacional de San Luis

33
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

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

Proposición!

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