Está en la página 1de 18

Lenguaje TIMBA

Introducci on a la Programaci on (T.U.M - T.U.G.)


Introducci on a la Computaci on (T.U.R. - T.U.W.)
Fundamento de la Inform atica (Prof. en Tec. Electr. - Ing. Electr.)

Area de Servicios
Departamento de Inform atica
Universidad Nacional de San Luis
Lenguaje TIMBA

Indice
1. G enesis 2
2. El Lenguaje TIMBA 2
3. Programa 3
3.1. Sentencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.1. Sentencias Operativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2. Sentencia de Selecci on SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.3. Sentencia de Iteraci on MIENTRAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. Condici on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.1. Pila Vaca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.2. Carta Boca Abajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3. Palo de Carta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4. Valor de Carta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.5. Descripci on de Pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
A. Ap endice: Palabras reservadas de TIMBA 14
B. Ap endice: Simbologa Usada en la Descripci on de Sentencias 15
C. Ap endice: Descripci on BNF de la gram atica de TIMBA 17
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 1
Lenguaje TIMBA
1. G enesis
El lenguaje TIMBA (Terribly Imbecile Machine for Boring Algorithms) fue desarrollado por
un equipo de trabajo en la Universidad Nacional de San Luis, como respuesta a la necesidad de contar con un lenguaje
sencillo de programaci on que permita aprender a programar. El equipo fue dirigido por el Ing. Hugo Ryckeboer, de la
Universidad Nacional del Centro de la Provincia de Buenos Aires, el que en la actualidad es a un Profesor de nuestra Casa.
2. El Lenguaje TIMBA
TIMBA es un lenguaje de programaci on que maneja pilas de cartas, concebido como primer elemento de un curso
elemental de programaci on para futuros profesionales de la disciplina. Consta s olo de tres operaciones elementales sobre
pilas. Por supuesto, as no es posible una gran capacidad de programaci on, pero esto es desde ya deseable en un lenguaje
de uso did actico.
TIMBA permite la denici on de pilas, las operaciones elementales de tomar y agregar cartas a las pilas, e invertir la
carta que en ese momento se analiza. Desde el punto de vista del programador, un programa en TIMBA es una secuencia
de ordenes a un ejecutor, UCP, qui en es responsable de los resultados y el an alisis de errores. UCP reconoce las pilas por
su nombre, las operaciones tomar y depositar, las estructuras de control y un ente especial, llamado CARTA o LA
CARTA, que es operando implcito de las operaciones de TOMAR de una pila y DEPOSITAR en una pila, adem as de ser
el objeto unico de la operaci on INVIERTA.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 2
Lenguaje TIMBA
3. Programa
Un programa TIMBA consta de dos partes, una primera denici on del proceso algortmico y la segunda de datos de
pila. Las mismas deben escribirse contiguas, separadas por un punto y coma (;).
La denici on del proceso debe encabezarse con las palabras claves: DEFINICION DE PROGRAMA, y todas las
sentencias que constituyen la descripci on del algoritmo a continuaci on, separadas entre s por coma (,). Las sentencias
son de tres tipos:
1. Operativas;
2. De selecci on;
3. Iterativas.
1. Las sentencias operativas act uan sobre las pilas o la carta. Comienzan siempre por un verbo en imperativo, que es
interpretado por UCP como una orden. Los verbos posibles son:
a) TOME;
b) DEPOSITE;
c) INVIERTA.
2. Las sentencias de selecci on permiten ordenar a UCP cursos alternativos del ujo de proceso, bajo ciertas condicio-
nes vericables en tiempo de ejecuci on. Una sentencia de selecci on comienza siempre por el adverbio SI, seguido
de la condici on (simple o no) y las sentencias a ejecutarse en caso de ser esta verdadera.
Si no hubiera dos secuencias alternativas, sino s olo un bloque de sentencias a ejecutar en caso de cumplirse la
condici on, o saltear si no se cumpliere, entonces la sentencia SI naliza con las palabras claves SINO NADA
MAS. Si hubiera una secuencia a realizar, en caso de no cumplirse la condici on y s olo entonces, la secuencia
deber a incluirse entre las palabras claves SINO y NADA MAS.
3. Las sentencias iterativas permiten ordenar a UCP la realizaci on de una, ninguna o varias veces un bloque de senten-
cias, bajo control de una condici on (simple o compuesta) vericable en tiempo de ejecuci on. Una sentencia iterativa
comienza siempre por el adverbio MIENTRAS, que es seguido por la condici on, el bloque a ejecutar y la palabra
clave REPITA.
La descripci on de datos de pila comienza por la frase de palabras clave UCP EJECUTE CON LAS SIGUIENTES
CARTAS:, seguida por la descripci on de las pilas, cada una separada de la anterior por coma (,).
Una descripci on de pila es de una de las dos formas:
1. descripci on de pila vaca;
2. descripci on de contenido de pila.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 3
Lenguaje TIMBA
La descripci on de pila vaca tiene siempre la siguiente forma: la palabra clave PILA seguida del nombre de la pila,
seguido de las palabras claves NO TIENE CARTAS.
La descripci on de contenido de pilas es semejante, cambiando NO TIENE CARTAS por TIENE y una lista de cartas.
Al nalizar la segunda parte de un programa se coloca punto (.).
Cada una de las sentencias posibles y algunas de sus componentes est an explicadas con detalle en las p aginas que
siguen. Para una descripci on formal de la gram atica que genera TIMBA, se reere al lector al Ap endice C de este
manual.
Una lista completa de las palabras claves se encuentra en el Ap endice A.
Antes de leer las p aginas que siguen, se recomienda referirse al Ap endice B, Simbologa Utilizada, para aprovechar
mejor el material.
En t erminos de la simbologa descripta en el Ap endice B un programa en TIMBA es:
DEFINICION DE PROGRAMAsentencia [,sentencia]

; UCP EJECUTE CON LAS SIGUIENTES CARTAS:


_
descripci on de pila
_ _
,
_
descripci on de pila
__

.
Los tems sentencia y descripci on de pila son desarrollados a continuaci on.
3.1. Sentencias
Las sentencias son el elemento constitutivo de TIMBA.
Una sentencia en TIMBA es la mnima unidad l ogica.
Las sentencias son de dos grandes tipos, en TIMBA: Operativas y de Control.
Las sentencias operativas realizan cambios sobre la conguraci on de las pilas, o estado de la carta que UCP analiza
en ese momento, lo que se simboliza por la carta que UCP tiene en la mano (ver Secci on 3.1.1 Sentencias Operativas).
Las sentencias de control son comandos condicionales, y en s no alteran la conguraci on de las pilas ni el estado
de la carta, sino por las sentencias que contienen a su vez. Las sentencias de control permiten controlar la secuencia de
operaciones, sin ser operaciones en s.
Las hay de dos tipos: de selecci on (ver SI) y de iteraci on (ver MIENTRAS).
Cuando en una descripci on formal aparece la palabra sentencias, se quiere simbolizar:
sentencia [, sentencia]

Donde sentencia es, formalmente:


2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 4
Lenguaje TIMBA
_

_
Sentencia operativa
Sentencia de selecci on
Sentencia de iteraci on
_

_
3.1.1. Sentencias Operativas
Las sentencias operativas son tres, formalmente:
TOME[UNA[CARTA]] DE[LA] PILA
_
nombre de pila
_
o
_

_
DEPOSITE LA CARTA
DEPOSITELA
_

_
EN[LA] PILA
_
nombre de pila
_
o
_

_
INVIERTA LA CARTA
INVIERTALA
_

_
La ejecuci on por UCP de una sentencia operativa TOME presupone que la pila cuyo nombre gura en la sentencia ha
sido denida en la segunda parte del programa.
La carta que gura al tope de la pila es tomada por UCP, y cualquier referencia posterior que se haga al ente CARTA
se interpretar a como una referencia a la ultima carta tomada por UCP (siempre que no hubiera sido depositada).
DEPOSITE ordena a UCP dejar la carta que tiene en la mano en ese momento, en una pila determinada.
La pila debe ser declarada en la segunda parte del programa. La ejecuci on de un DEPOSITE presupone que UCP
tiene, efectivamente, una carta en la mano; lo que se consigue por medio de la ejecuci on de una sentencia TOME.
Por obvias razones, UCP detectar a un error de ejecuci on si no tuviera una carta en la mano y se le ordenara DEPOSITE.
Por lo mismo, UCP no admite la ejecuci on de dos TOME sin un DEPOSITE entre ellos, detectando tambi en error de eje-
cuci on.
Por ultimo, UCP reconoce error de ejecuci on al intentar tomar una carta de una pila vaca.
El verbo INVIERTA se reere a la carta que UCP tiene en la mano.

Este reconoce dos estados: NO BOCA ABAJO
y BOCA ABAJO. La ejecuci on por UCP de una sentencia INVIERTA altera el estado de CARTA: si este era NO BOCA
ABAJO pasa a ser BOCA ABAJO y viceversa. El verbo INVIERTA presupone la existencia de carta, sino UCP detecta un
error de ejecuci on.
Mensajes de error:
Ejemplo 1: ME PIDE UD. QUE TOME DE PILA nombre QUE ESTA VACIA.
Ejemplo 2: ME PIDE UD. QUE TOME PILA nombre Y YO YA TENGO UNA CARTA: el n umero de
_
palo
_
.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 5
Lenguaje TIMBA
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.
3.1.2. Sentencia de Selecci on SI
La sentencia SI permite al programador solicitar a UCP que eval ue una condici on y proceder, de acuerdo con ella, a
la ejecuci on de un bloque u otro, por lo que la secuencia normal de ejecuci on puede depender de las condiciones halladas
en las pilas; esto es, de la situaci on o el estado de las pilas, o bien del estado o atributos de la carta.
Formalmente una sentencia SI debe escribirse:
SIcondici on sentencia
_

_
SINOsentencias NADA MAS
SINO NADA MAS
_

_
Si la condici on (ver Secci on 3.2 Condici on) es verdadera en el momento de analizarla UCP, se proceder a con la
ejecuci on del primer bloque de sentencias; esto es, las sentencias que preceden al SINO.
Si la condici on fuese falsa, UCP proceder a con la ejecuci on de las sentencias que hubiere entre el SINO y el NADA
MAS, y si no las hubiera, con la sentencia que sigue a la sentencia SI; es decir, la que empieza despu es de la coma (,)
que sigue a NADA MAS.
1
Las sentencias que pueden escribirse en un SI son todas las de TIMBA, por lo tanto, un SI puede contener otro
SI (y a un un MIENTRAS). Tal estructura de un SI dentro de otro se llama usualmente Nidos de SI. (Ver Secci on 3.1
Sentencias).
Ejemplo: SI LA PILA A ESTA VACIA TOME UNA DE PILA B SINO TOME DE PILA A NADA MAS,
DEPOSITELA EN PILA C.
UCP vericar a si hay cartas en la pila A, y proceder a, de acuerdo con ello, a tomar una carta de B, si A fuese vaca o,
una carta de A si esta no lo fuera.
3.1.3. Sentencia de Iteraci on MIENTRAS
La sentencia MIENTRAS permite al programador ordenar a UCP la realizaci on repetida y condicionada de un bloque
de sentencias, gobernado por una condici on vericable en la ejecuci on. (Ver Secci on 3.2 Condici on)
Formalmente, la sentencia MIENTRAS debe escribirse:
MIENTRAScondici on sentencias REPITA
Cuando UCP encuentra durante la ejecuci on de un programa una sentencia MIENTRAS, eval ua primero la condici on
(ver Secci on 3.2 Condici on), y si esta es verdadera, ejecuta normalmente las sentencias que siguen hasta el REPITA. Al
1
Se coloca coma (,), despu es un NADA MAS siempre que contin ue despu es del mismo otra sentencia (concatenaci on).
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 6
Lenguaje TIMBA
hallar el REPITA, vuelve a evaluar la condici on, volviendo a ejecutar todas las sentencias si la condici on es a un verdadera,
y as siguiendo hasta que la condici on resulte falsa.
Cuando la condici on resulta falsa, ya sea en la primera, segunda o en esima iteraci on, UCP se saltea la ejecuci on de las
sentencias que siguen hasta el REPITA, prosiguiendo con la sentencia que sigue al MIENTRAS, esto es, la que comienza
despu es de la coma (,) que sigue al REPITA.
2
Ejemplo: MIENTRAS LA PILA B NO ESTA VACIA TOME DE PILA B, DEPOSITE EN PILA C REPITA,
TOME DE PILA D.
UCP vaciar a la pila B, pasando a la pila C las cartas de B de a una. Una vez vaca la pila B, UCP tomar a la carta del
tope de la pila D.
3.2. Condici on
Una condici on en TIMBA es una proposici on l ogica, simple o compuesta, que emite un juicio sobre el estado de las
pilas o la carta, y que puede por lo tanto ser evaluado como Verdadero o Falso.
Formalmente, una condici on en TIMBA es:
_
proposici on
_
_

_
_

_
Y
O
_

_
_
proposici on
_
_

2
Se coloca coma (,) luego del REPITA siempre que a continuaci on contin ue otra sentencia (concatenaci on).
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 7
Lenguaje TIMBA
Donde proposici on es:
[LA]
_

_
PILAnombre
_

_
ESTA
NO ESTA
_

_
VACIA
CARTA
_

_
_

_
ESTA
NO ESTA
_

_
BOCA ABAJO
_

_
ES
NO ES
_

_
[DEL PALO]
_
palo
_
ES DE
_

_
IGUAL
DISTINTO
_

_
PALO QUE TOPE DE PILAnombre
_

_
ES
NO ES
_

_
[DE VALOR]
_

_
DISTINTO DE
_

_
MENOR
MAYOR
_

_
QUE
_

_
IGUAL
_

_
MENOR
MAYOR
_

_
O IGUAL
_

_
A
_

_
n umero
_

_
ES
NO ES
_

_
DE
_

_
IGUAL
DISTINTO
MENOR
MAYOR
_

_
MENOR
MAYOR
_

_
O IGUAL
_

_
VALOR QUE TOPE DE PILAnombre
_

_
_

_
3.2.1. Pila Vaca
Formalmente, una condici on de PILA VACIA se escribe:
[LA] PILAnombre
_

_
ESTA
NO ESTA
_

_
VACIA
UCP reconoce si una pila est a vaca cuando no tiene cartas en la pila. Si hubiera una, dos o m as cartas en la pila PILA
nombre ESTA VACIA sera reconocido como Falso por UCP, mientras que PILA nombre NO ESTA VACIA sera
Verdadero.
UCP reconoce un error de ejecuci on si se intenta tomar cartas de una pila vaca.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 8
Lenguaje TIMBA
Por lo tanto, la condici on de pila vaca permite construir sentencias que eviten tomar de pilas sin cartas.
3.2.2. Carta Boca Abajo
Formalmente, una condici on de carta boca abajo se escribe:
[LA] CARTA
_

_
ESTA
NO ESTA
_

_
BOCA ABAJO
UCP reconoce dos estados de la CARTA: BOCA ABAJO y NO BOCA ABAJO.
Si la CARTA estuviera BOCA ABAJO, UCP no puede hacer comparaciones, por lo que esta condici on permite construir
sentencias que la inviertan condicionalmente.
Si no hubiera CARTA denida para UCP, esto es, si ninguna CARTA hubiere sido tomada (ver Secci on 3.1.1 Sentencias
Operativas), UCP reconoce un error de ejecuci on.
Mensaje de error:
Ejemplo 5: UD. QUIERE SABER COMO ESTA LA CARTA, Y YO NO TENGO CARTA.
3.3. Palo de Carta
Una carta en TIMBA es un elemento biestable (ver Secci on 3.2.2 Carta Boca Abajo) con dos atributos: Palo y Valor.
Palo de una carta es uno de los cuatro palos de la baraja espa nola: OROS, BASTOS, ESPADAS o COPAS. Valor es un
n umero del 1 al 7 o del 10 al 12.
[LA] CARTA
_

_
_

_
ES
NO ES
_

_
[DEL PALO]
_

_
OROS
BASTOS
ESPADAS
COPAS
_

_
ES DE
_

_
IGUAL
DISTINTO
_

_
PALO QUE TOPE DE PILAnombre
_

_
En la primera de las dos opciones, UCP compara el palo de LA CARTA contra uno de los cuatro palos de la baraja
espa nola: OROS, BASTOS, ESPADAS, COPAS; detectando valor Verdadero si la condici on se escribi o con ES y los palos
coinciden o si la condici on se escribi o con NO ES y los palos no coinciden; y Falso en el caso inverso: se escribi o con
ES y los palos son distintos o se escribi o con NO ES y los palos coinciden. UCP detecta un error de ejecuci on si no
tiene CARTA (ver Secci on 3.1.1 Sentencias Operativas) o si esta estuviere BOCA ABAJO (ver Secci on 3.2.2 Carta Boca
Abajo).
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 9
Lenguaje TIMBA
En la segunda opci on, UCP compara el palo de la CARTA contra el palo de la carta que est a al tope de la pila nom-
bre, detectando un valor Verdadero si la condici on se escribi o con IGUAL y los palos coinciden o si se escribi o con
DISTINTO y los palos no coinciden, siendo para UCP Falsa la condici on si se escribi o esta con IGUAL y los palos son
distintos o si se escribi o con DISTINTO y el palo es el mismo.
UCP detecta un error de ejecuci on si no tiene carta en la mano (ver Secci on 3.1.1 Sentencias Operativas) o si cualquiera
de las dos est a BOCA ABAJO (ver Secci on 3.2.2 Carta Boca Abajo), o la pila ESTA VACIA (ver Secci on 3.2.1 Pila
Vaca).
Mensajes de Error:
Ejemplo 6: USTED QUIERE SABER SI LA CARTA ES DE
_
palo
_
Y YO NO TENGO CARTA.
Ejemplo 7: USTED QUIERE SABER SI LA CARTA ES DEL PALO DEL TOPE nombre Y YO NO TENGO
CARTA.
Ejemplo 8: USTED QUIERE SABER SI LA CARTA ES DEL PALO DEL TOPE DE nombre PERO LA CARTA
ESTA BOCA ABAJO.
Ejemplo 9: USTED QUIERE SABER SI LA CARTA ES DEL PALO DEL TOPE DE nombre PERO EL TOPE
ESTA BOCA ABAJO.
Ejemplo 10: USTED QUIERE SABER SI LA CARTA ES DEL PALO DEL TOPE DE nombre PERO LA PILA
ESTA VACIA.
3.4. Valor de Carta
Una carta en TIMBA es un elemento biestable (ver Secci on 3.2.2 Carta Boca Abajo) con dos atributos: Palo y Valor.
Palo de una carta es uno de los cuatro palos de la baraja espa nola: OROS, BASTOS, ESPADAS o COPAS. Valor es un
n umero del 1 al 7 o del 10 al 12.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 10
Lenguaje TIMBA
Formalmente, la condici on de valor de carta se escribe:
[LA] CARTA
_

_
_

_
ES
NO ES
_

_
[DE VALOR]
_

_
DISTINTO DE
_

_
MENOR
MAYOR
_

_
QUE
_

_
IGUAL
_

_
MENOR
MAYOR
_

_
O IGUAL
_

_
A
_

_
n umero
_

_
ES
NO ES
_

_
DE
_

_
IGUAL
DISTINTO
MENOR
MAYOR
_

_
MENOR
MAYOR
_

_
O IGUAL
_

_
VALOR QUE TOPE DE PILAnombre
_

_
En la primera de las dos opciones, UCP compara el valor (1 al 7 o 10 al 12) de la CARTA contra el n umero.
La comparaci on se realiza de acuerdo con las reglas comunes para los n umeros naturales, y cada uno de los operadores
relacionales (DISTINTO DE, IGUAL A, MENOR QUE, MAYOR QUE, MENOR O IGUAL A y MAYOR o IGUAL A)
representan exactamente lo que signican en lenguaje diario.
UCP reconoce la proposici on como Verdadera si ha sido escrita con la opci on ES y la relaci on se verica o si ha
sido escrita con NO ES y la relaci on no se verica. UCP reconoce un error de ejecuci on si CARTA no est a denida, (ver
Secci on 3.1.1 Sentencias Operativas) o si est a BOCA ABAJO (ver Secci on 3.2.2 Carta Boca Abajo).
En la segunda opci on, UCP compara el valor de CARTA, en el sentido de los n umeros naturales, contra la carta al tope
de la PILA nombrada.
UCP reconoce la proposici on como Verdadera si ha sido escrita con la opci on ES y la relaci on se verica o si ha
sido escrita con NO ES y la relaci on no se verica. UCP reconoce un error de ejecuci on si CARTA no est a denida (ver
Secci on 3.1.1 Sentencias Operativas), si la PILA ESTA VACIA (ver Secci on 3.2.1 Pila Vaca) o si por lo menos una de
las dos cartas de la comparaci on est a BOCA ABAJO.
Mensajes de error:
Ejemplo 11: USTED QUIERE SABER SI LA CARTA ES DE VALOR n umero , Y YO NO TENGO CARTA.
Ejemplo 12: USTED QUIERE COMPARAR EL VALOR DE LA CARTA CON EL DEL TOPE DE nombre ,
Y YO NO TENGO CARTA.
Ejemplo 13: USTED QUIERE COMPARAR EL VALOR DE LA CARTA CON EL DEL TOPE DE nombre ,
Y LA PILA ESTA VACIA.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 11
Lenguaje TIMBA
Ejemplo 14: USTED QUIERE COMPARAR EL VALOR DE LA CARTA CON EL DEL TOPE DE nombre ,
PERO LA CARTA ESTA BOCA ABAJO.
Ejemplo 15: USTED QUIERE COMPARAR EL VALOR DE LA CARTA CON EL DEL TOPE DE nombre ,
PERO EL TOPE ESTA BOCA ABAJO.
3.5. Descripci on de Pila
Formalmente, la descripci on de pila se escribe:
[LA] PILAnombre
_

_
NO TIENE CARTAS
TIENE
_

_
_
carta boca abajo
_
_
carta boca abajo
_

_

_
_

_
-
_

_
_
carta boca abajo
_
_
carta boca abajo
_

_

_
_

_
La primera opci on hace que UCP asocie al nombre una PILA vaca.
La segunda opci on hace que UCP asocie al nombre una PILA con las cartas (una, dos o m as) que se describen despu es
de la palabra clave TIENE. La ultima carta descripta se ubicar a al tope de la PILA, la pen ultima debajo de esta y as hasta
ubicar todas las cartas.
Todas las cartas son descriptas por su palo y su n umero, y supuestas BOCA ABAJO. Si se desea invertir la carta al
denir la PILA, esto es, se desea que la o las cartas aparezcan NO BOCA ABAJO en la PILA, despu es de cada descripci on
de carta que se desee NO BOCA ABAJO debe incluirse el smbolo especial .
Formalmente, carta boca abajo debe escribirse:
_

_
1
2
3
4
5
6
7
10
11
12
_

_
DE
_

_
OROS
BASTOS
ESPADAS
COPAS
_

_
UCP detecta error de previa ejecuci on si una PILA utilizada en la descripci on del proceso no fuera descripta, y da un
mensaje de atenci on si fuera descripta una PILA no utilizada en la descripci on del proceso.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 12
Lenguaje TIMBA
Previo a la Ejecuci on (PE):
0 LA PILA nombre NO FUE DESCRIPTA.
Atenci on (AT):
1 LA PILA nombre FUE DESCRIPTA SIN NECESIDAD.
Reconocimientos
El presente material de estudio corresponde a la C atedra Algortimos y Resoluci on de Problemas para las carreras de
Ingeniera en Inform atica e Ingeniera en Computaci on dictada por docentes del

Area de Servicios y del

Area de Datos
del Departamento de Inform atica.
El dibujo original del apunte era:
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 13
Lenguaje TIMBA
A. Ap endice: Palabras reservadas de TIMBA
La siguiente es una lista de palabras reservadas de TIMBA. Estas palabras no pueden ser usadas como nombres de
pila.
ABAJO INVIERTA SINO
BASTOS INVIERTALA TOME
BOCA LA
CARTA LAS TOPE
CARTAS MAS UCP
CON MAYOR UNA
COPAS VACIA VACIA
DE MENOR VALOR
DEL MIENTRAS Y
DEFINICION NADA 1
DEPOSITE NO 2
DEPOSITELA O 3
DISTINTO OROS 4
EJECUTE PILA 5
EN PROGRAMA 6
ES QUE 7
ESPADAS REPITA 10
ESTA SI 11
IGUAL SIGUIENTES 12
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 14
Lenguaje TIMBA
B. Ap endice: Simbologa Usada en la Descripci on de Sentencias
En la descripci on formal de sentencias de TIMBA aparecen cuatro elementos: corchetes angulares ( ), corchetes
([ ]), llaves ({ }) y asteriscos (); las palabras claves de TIMBA (Ver Ap endice A), los signos de puntuaci on de TIMBA
(;, ,, : y -) y algunas palabras en min uscula las que van siempre entre corchetes angulares.
Las palabras que aparecen en may uscula en una descripci on formal son palabras claves de TIMBA, y por lo tanto
deben escribirse tal como aparecen. Las palabras en min uscula, encerradas entre corchetes angulares deben reemplazarse
por su denici on que se encuentra siempre en alg un punto de este Manual. Por ejemplo, la descripci on formal (ver Secci on
3.1.2 Sentencia de Selecci on SI):
SIcondici on sentencia
_

_
SINOsentencias NADA MAS
SINO NADA MAS
_

_
contiene las palabras claves SI, SINO, NADA y MAS. Cuando un programador quiere escribir una sentencia de selecci on
SI debe empezar por la palabra clave SI, escribir a continuaci on lo que se escribe en condici on como una condici on
v alida en TIMBA, luego las sentencias que el desee (ver Secci on 3.1 Sentencias). Puesto que condici on y sentencias
est an escritas con min uscula y entre corchetes angulares en la descripci on formal, el programador las reemplaza por otros
elementos m as sencillos. Excepci on a la regla de hallarse descripta en el manual es la palabra nombre, que cuando es
hallada en una descripci on formal debe ser reemplazada por una cadena de hasta diez caracteres alfab eticos o num ericos
que no sea una palabra clave de TIMBA, por ejemplo MI1, 1000, X1.
Siguiendo con el ejemplo de la sentencia de selecci on, veamos el uso de las llaves: cuando en una descripci on aparecen
dos o m as tems entre llaves, el programador debe elegir entre ellos aqu el que se ajuste a su problema. En el ejemplo de la
sentencia SI, el programador debe elegir entre dos alternativas: escribir la sentencia SI con la opci on SINO sentencias
NADA MAS o con la opci on SINO NADA MAS. En el primer caso deber a elegir las sentencias que incluir a en el segundo
deber a copiar las palabras claves en ese orden.
Cuando en una descripci on formal aparece un tem entre corchetes ([ ]) el programador puede optar por escribir o no
este tem, sin que se modique por ello la interpretaci on que UCP hace del programa. Por ejemplo, la descripci on formal
(ver Secci on 3.1.1 Sentencias Operativas):
TOME[UNA[CARTA]] DE[LA] PILA
_
nombre de pila
_
contiene tres pares de corchetes, cada uno de los cuales encierra, respectivamente, UNA CARTA, CARTA y LA. Eso signi-
ca que el programador puede escribir una sentencia TOME omitiendo UNA CARTA o bien omitiendo CARTA o bien LA
o bien las tres palabras claves: TOME DE PILA XXX, TOME DE LA PILA XXX, TOME UNA DE LA PILA XXX,
TOME UNA DE PILA XXX, TOME UNA CARTA DE PILA XXX y TOME UNA CARTA DE LA PILA XXX son
todas indistintas para UCP.
Por ultimo, si un tem se encuentra entre corchetes seguidos de un asterisco (), el programador puede omitir el tem
o escribirlo una, dos o m as veces, de acuerdo con sus necesidades. Por ejemplo (ver Secci on 3.2 Condici on):
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 15
Lenguaje TIMBA
_
proposici on
_
_

_
_

_
Y
O
_

_
_
proposici on
_
_

signica que puede escribirse una, dos o m as proposiciones, vinculadas por los operadores l ogicos Y u O.
Para redactar un programa TIMBA, lea primero la Secci on 3 Programa. Al nalizar dicha Secci on encontrar a la
descripci on formal de un programa TIMBA.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 16
Lenguaje TIMBA
C. Ap endice: Descripci on BNF de la gram atica de TIMBA
BNF es la abreviatura de Backus-Normal Form, o Backus Naur Form.
_
Programa timba
_

_
proceso
_
;declaraciones .
_
proceso
_
DEFINICION DE PROGRAMAsentencias
sentencias sentencia | sentencias ,sentencia
sentencia
_
operativa
_
| de control
_
operativa
_
tomar DE
_
pila
_
nombre |
_
depositar
_
EN
_
pila
_
nombre | invertir
tomar TOME UNA CARTA | TOME UNA | TOME
_
depositar
_
DEPOSITE LA CARTA | DEPOSITELA
invertir INVIERTA LA CARTA | INVIERTALA
de control de selecci on | iterativa
de selecci on SIcondici on sentencias SINOsentencias NADA MAS | SIcondici on sentencias SINO NADA MAS
iterativas MIENTRAScondici on sentencias REPITA
condici on
_
condici on simple
_
| condici on Y
_
condici on simple
_
| condici on O
_
condici on simple
_
_
condici on simple
_

_
condici on de pila vaca
_
| condiciones de carta
_
condici on de pila vaca
_

_
pila
_
nombre ESTA VACIA |
_
pila
_
nombre NO ESTA VACIA
condiciones de carta estado | caracterstica
estado carta ESTA BOCA ABAJO | carta NO ESTA BOCA ABAJO
caracterstica carta es o no es
_
de palos
_
| carta es o no es valor | carta ES DErelac PALO QUE TOPE DE
_
pila
_
nombre
es o no es ES | NO ES
carta LA CARTA | CARTA
_
pila
_
LA PILA | PILA
_
de palos
_
DEL PALO
_
palos
_
|
_
palos
_
_
palos
_
OROS | BASTOS | ESPADAS | COPAS
relac IGUAL | DISTINTO
valor DErelac VALOR QUE TOPE DE
_
pila
_
nombre | DE VALORrelaci on n umero | relaci on n umero
rela IGUAL | DISTINTO | MAYOR | MENOR | MAYOR O IGUAL | MENOR O IGUAL
relaci on IGUAL A | DISTINTO DE | MAYOR QUE | MENOR QUE | MAYOR O IGUAL A | MENOR O IGUAL A
n umero 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12
declaraciones UCP EJECUTE CON LAS SIGUIENTES CARTAS:
_
lista de pilas
_
_
lista de pilas
_

_
descripci on de pila
_
|
_
lista de pilas
_
,
_
descripci on de pila
_
_
descripci on de pila
_

_
pila
_
nombre contenido
contenido NO TIENE CARTAS | TIENElista de cartas
lista de cartas
_
descripci on de carta
_
| lista de cartas -
_
descripci on de carta
_
_
descripci on de carta
_
n umero DE
_
palos
_
| n umero DE
_
palos
_

nombre es una cadena que no tiene blancos ni smbolos especiales de diez o menos caracteres alfab eticos que no formen una palabra
reservada.
2012 - Area de Servicios - Departamento de Inform atica - Universidad Nacional de San Luis 17

También podría gustarte