[go: up one dir, main page]

0% encontró este documento útil (0 votos)
180 vistas12 páginas

Programas Java y AFD en Autómatas

Este documento presenta 5 actividades sobre teoría de autómatas finitos determinísticos (AFD). Cada actividad incluye la construcción de un AFD para reconocer un lenguaje formal específico definido sobre un alfabeto, así como un programa en Java para simular el autómata y probar cadenas. Los lenguajes formales incluyen cadenas que comienzan o terminan con subcadenas específicas, o que contienen o no contienen una subcadena dada. Se muestran ejemplos de cadenas aceptadas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
180 vistas12 páginas

Programas Java y AFD en Autómatas

Este documento presenta 5 actividades sobre teoría de autómatas finitos determinísticos (AFD). Cada actividad incluye la construcción de un AFD para reconocer un lenguaje formal específico definido sobre un alfabeto, así como un programa en Java para simular el autómata y probar cadenas. Los lenguajes formales incluyen cadenas que comienzan o terminan con subcadenas específicas, o que contienen o no contienen una subcadena dada. Se muestran ejemplos de cadenas aceptadas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

ACTIVIDAD 1.

TEORIA DE AUTOMATAS

1. Realice un programa de hijos en java donde explique los estados de un proceso y como
pasar de un estado a otro

Código en java
package hilo;

public class Hilo extends Thread{

public void run(){


for(int num =1; num<=20;num++){
System.out.print(" " +num+" ");
try {
sleep (1500);
}catch(InterruptedException e){
}
}
}

public static void main(String []args){


Hilo ejer = new Hilo();
ejer.start();
}
}

Funcionalidad en java:
Muestra los números del 1 al 20 con un retraso de 1500 milisegundos
Ejecución Java

Explicación

2. Capture una cadena en java e imprima


a. Una cadena en mayúscula
b. Una cadena en minúscula
c. Una cadena donde cada palabra empiece con una mayúscula

Programa:

public class tokens {


public static void main( String[] args){

int y,x,s;

y=0;

char a=0;

String q="";

String c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

String min = c.toLowerCase();

String may = c.toUpperCase();

String primeraLetra = c.substring(0, 1).toUpperCase();

String restoDeLaCadena = c.substring(1).toLowerCase();

String primeraMinuscula = primeraLetra + restoDeLaCadena;

for(int z=0; z<c.length();z++){

y=c.charAt(z);

System.out.print(y+" "+c.charAt(z));

x=(int)y;

s=x+32;

a=(char)s;

System.out.println(" "+s+" "+(char)s);

q=q+" "+a;

System.out.println (q);

System.out.println("Minuscula: " + min);

System.out.println("Mayuscula: " + may);

System.out.println("Primera letra mayúscula: " + primeraMinuscula);

}
AUTOMATAS FINITOS DETERMINISTICOS Realice los siguientes ejercicios en JFLAP y haga la
simulación en java.

1. Obtenga un AFD dado el siguiente lenguaje definido en el alfabeto Σ= {0,1}. El conjunto de


cadenas que inician en “0”

JFLAP

Ejecución con cadenas que muestre


resultados:

Toda cadena que inicie en 0 funciona

Funcionan: 01010
0
0101

No Funcionan: Las que inician en 1

1
101
1010
Programa en Java:
package abc;

public class ABC {

static int cont;


static char[] car;
boolean aceptado;

void inicio() {
cont = 0;
aceptado = false;
a();
}

void a() {
System.out.println("estado a");
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
b();
} else {
if (car[cont] == '1') {
cont++;
d();
}
}
}
}

void b() {
System.out.println("estado b");
aceptado=true;
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
b();
} else {
if (car[cont] == '1') {
aceptado=false;
cont++;
b();
}
}
}
}

void d() {
System.out.println("estado d");
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
d();
} else {
if (car[cont] == '1') {
cont++;
d();
}
}
}
}

public static void main(String[] args) {


ABC au = new ABC();
String cadena = "1010";
car = cadena.toCharArray();
au.inicio();
if (au.aceptado == true) {
System.out.println("Cadena aceptada");
} else {
System.out.println("Cadeana no aceptada");
}
}
}
Ejecución en Java con cadenas que muestre los resultados:

-------------------------------------------------------------------------------------------------------------------------------

2. AFD dado el siguiente lenguaje definido en el alfabeto Σ= {0,1}. El conjunto de cadenas que
inician en “0”
JFLAP

Ejecución con cadenas que muestre


resultados:

Toda cadena que termine en 1 funciona:

Funcionan: 1001001
011101
10011001

No Funcionan: Las que terminen en 0

111000
1001110
101010
Programa en Java:

Ejecución en Java con cadenas que muestre los resultados:

3. Obtenga un AFD dado el siguiente lenguaje definido en el alfabeto Σ= {0,1}. El conjunto de


cadenas que contienen a la sub-cadena “01”.
JFLAP

Ejecución con cadenas que muestre resultados:

Funcionan las cadenas que puedan realizar toda


la secuencia

Funcionan: 1011101
0100010
0011001110

No Funcionan: 1
0
100
Programa en Java:
package automata3;
public class Automata3 {

static int cont;


static char[] car;
boolean aceptado;

void inicio() {
cont = 0;
aceptado = false;
a();
}

void a() {
System.out.println("estado a");
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
b();
} else {
if (car[cont] == '1') {
cont++;
a();
}
}
}
}

void b() {
System.out.println("estado b");
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
b();
} else {
if (car[cont] == '1') {
cont++;
c();
}
}
}
}

void c() {
System.out.println("estado c");
aceptado=true;
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
c();
} else {
if (car[cont] == '1') {
aceptado=false;
cont++;
c();
}
}
}
}

public static void main(String[] args) {


Automata3 au = new Automata3();
String cadena = "1011101";
car = cadena.toCharArray();
au.inicio();
if (au.aceptado == true) {
System.out.println("Cadena aceptada");
} else {
System.out.println("Cadeana no aceptada");
}
}
}
Ejecución en Java con cadenas que muestre los resultados:

4. Obtenga un AFD dado el siguiente lenguaje definido en el alfabeto Σ= {0,1}. El conjunto de


cadenas que no contienen a la sub-cadena “01”

JFLAP

Ejecución con cadenas que muestre resultados:

Funciona con cadenas cortas:

Funciona: 1
0
100

No Funciona: 100101011
1011101
0110010
Programa en Java:
package automata4;
public class Automata4 {

static int cont;


static char[] car;
boolean aceptado;

void inicio() {
cont = 0;
aceptado = false;
a();
}

void a() {
System.out.println("estado a");
aceptado=true;
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
b();
} else {
if (car[cont] == '1') {
aceptado=false;
cont++;
a();
}
}
}
}

void b() {
System.out.println("estado b");
aceptado=true;
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
b();
} else {
if (car[cont] == '1') {
aceptado=false;
cont++;
c();
}
}
}
}

void c() {
System.out.println("estado c");
if (cont < car.length) {
if (car[cont] == '0') {
cont++;
c();
} else {
if (car[cont] == '1') {
cont++;
c();
}
}
}
}

public static void main(String[] args) {


Automata4 au = new Automata4();
String cadena = "1001";
car = cadena.toCharArray();
au.inicio();
if (au.aceptado == true) {
System.out.println("Cadena aceptada");
} else {
System.out.println("Cadeana no aceptada");
}
}
}
Ejecución en Java con cadenas que muestre los resultados:

5. Obtenga un AFD dado el siguiente lenguaje definido en el alfabeto Σ={a,b,c}. El conjunto


de cadenas que inician en la sub-cadena “ac” o terminan en la sub-cadena “ab”.
JFLAP

Ejecución con cadenas que muestre resultados:

Funciona: abbcbcbbabca

También podría gustarte