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