Proyecto Autómatas
Proyecto Autómatas
LENGUAJES REGULARES
PROFESOR
MARIO MARTINEZ
● Punto1.
Jefferson Beltrán 67000150
Julián Guarín 6700139
Daniel Gutiérrez 67000233
Diseñar un autómata finito determinístico que represente el funcionamiento de un reproductor de audio que
reconoce los comandos PLAY, FORWARD, STOP, PAUSE y REWIND ingresados al reproductor
por el usuario. También debe reconocer que se ha alcanzado el extremo inicial o final de la
información almacenada, en este caso, música (supondremos funcionamiento circular). Las
condiciones de operación del equipo son ENCENDIDO, APAGADO, RETROCEDE, IDIOMA,
AVANZA, PAUSA.
Play P
Forward F
Stop S
Pause A
Rewind R
Off O
On N
P F S A R O N
q2 --- q2 q4 q4 q3 q0 ---
q3 --- q2 q4 q4 q3 q0 ---
Programa 1
Proyecto.cpp
● Punto 2
Diseñar un autómata finito determinístico que modele el funcionamiento de una máquina expendedora de
jugos que acepta monedas de 5, 10 y 25 céntimos. Cuando el cliente deposita 30 céntimos o más,
la máquina devuelve inmediatamente todo lo que sobrepase de 30 céntimos. A continuación, el
cliente presiona el botón naranja y obtener un jugo de naranja o presionar el botón rojo y obtener
un jugo de manzana. Al retirarse el jugo la máquina vuelve a su estado inicial, de esta manera queda
disponible para una nueva operación. Cuando el cliente deposita menos de 30 céntimos la máquina
le devuelve inmediatamente todo lo depositado, no obtiene ningún jugo y la máquina vuelve a su
estado inicial, de esta manera queda disponible para una nueva operación.
Jefferson Beltrán 67000150
Julián Guarín 6700139
Daniel Gutiérrez 67000233
Entrada Entrada
Esta
do 5 10 25 N R Estado 5 10 25 N R
q0 q1 q2 q5 q0 q0 q0 n n n n n
q1 q2 q3 q6 q0 q0 q1 n n n 5 5
q2 q3 q4 q6 q0 q0 q2 n n 5 10 10
q3 q4 q5 q6 q0 q0 q3 n n 10 15 15
q4 q5 q6 q6 q0 q0 q4 n n 15 20 20
q5 q6 q6 q6 q0 q0 q5 n 5 20 25 25
q6 q6 q6 q6 q0 q0 q6 5 10 25 ZN ZR
Programa 2
Proyecto.cpp
Jefferson Beltrán 67000150
Julián Guarín 6700139
Daniel Gutiérrez 67000233
● Punto 3
Construir un analizador léxico que identifique los valores numéricos (constantes) en
sus diferentes tipos (int, float, double, long, etc) y notaciones de un programa escrito
en un lenguaje de programación.
Int
- 0 1 2 3 4 5 6 7 8 9
Q0 Q1 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2
Q1 --- Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2
Q2 --- Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2
IntPrograma3.cpp
Jefferson Beltrán 67000150
Julián Guarín 6700139
Daniel Gutiérrez 67000233
Float
. - 0 1 2 3 4 5 6 7 8 9
Q0 --- Q1 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2
Q1 --- --- Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2
Q2 Q3 --- Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2
Q3 --- --- Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4
Q4 --- --- Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4
FloatPrograma3.cp
p
● Punto 4
Jefferson Beltrán 67000150
Julián Guarín 6700139
Daniel Gutiérrez 67000233
Diseñar un autómata finito determinístico que reconozca el lenguaje L = {ai bj | j = mcd (i, 3), i ≥
0}, sobre Σ = {a, b}.
Modelamiento
Construir un AFD que reconozca el lenguaje L de todas las cadenas sobre {a, b}* que empiezan con i 0
aes seguidas de j = mcd (i, 3) bes. (Sugerencia: observe en la siguiente tabla el resultado del mcd(i,3)
para diferentes valores de i).
a b
Q0 Q1 ---
Q1 Q2 Q7
Q2 Q3 Q7
Q3 Q1 Q4
Q4 --- Q5
Q5 --- Q6
Q6 --- ---
Q7 --- ---
Programa 4
Proyecto.cpp