Thursday, July 14, 2005

GUI de nuestro lenguaje!

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* GUICompiler.java
*
* Created on 16 de julio de 2005, 11:40 AM
*/
/**
*
* @author voip
*/
public class GUICompiler extends javax.swing.JFrame {
private File tempsaveFile = new File("c:\\tempsaveFile.src");
/** Creates new form GUICompiler */
public GUICompiler() {
initComponents();
jSplitPane1.setDividerLocation(350);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Parse Code v.1");
getContentPane().add(jLabel1, java.awt.BorderLayout.NORTH);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jTextArea1.setBackground(new java.awt.Color(242, 228, 203));
jTextArea1.setFont(new java.awt.Font("Dialog", 2, 16));
jTextArea1.setForeground(new java.awt.Color(0, 0, 255));
jScrollPane1.setViewportView(jTextArea1);
jSplitPane1.setLeftComponent(jScrollPane1);
jTextArea2.setBackground(new java.awt.Color(251, 251, 230));
jTextArea2.setFont(new java.awt.Font("Dialog", 0, 14));
jTextArea2.setForeground(new java.awt.Color(86, 86, 93));
jScrollPane2.setViewportView(jTextArea2);
jSplitPane1.setRightComponent(jScrollPane2);
getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
jPanel1.setLayout(new java.awt.GridLayout());
jButton1.setText("Parsear");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel1.add(jButton1);
jButton2.setText("Limpiar");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel1.add(jButton2);
jButton3.setText("Salir");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel1.add(jButton3);
getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-483)/2, (screenSize.height-541)/2, 483, 541);
}
//
//GEN-END:initComponents
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
// TODO add your handling code here:
System.exit(0);
}//GEN-LAST:event_jButton3ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO add your handling code here:
jTextArea1.setText("");
jTextArea2.setText("");
}//GEN-LAST:event_jButton2ActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
this.saveFile();
this.callCompiler();
}//GEN-LAST:event_jButton1ActionPerformed
private void saveFile()
{
try
{
FileWriter savef = new FileWriter( tempsaveFile );
savef.write( jTextArea1.getText() );
savef.close();
}
catch( Exception i )
{
System.err.println("Error gravando tempfile");
i.printStackTrace();
}
}
private void callCompiler() //Instancia de la clase MyCompiler para llamar el archivo que va a parsear.
{
MyCompiler compiler = new MyCompiler( tempsaveFile.toString(), this );
}
public void setMsg( String msg )
{
this.jTextArea2.setText( msg );
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GUICompiler().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
// End of variables declaration//GEN-END:variables
}

Lenguaje de Programacion y Sintaxis!

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.TreeMap;
import java.util.Vector;

import mathExpr.ExpressionConfiguration; //llamando la clase matematica
import mathExpr.evaluator.realEvaluator.Real; //llamando la clase matematica
import mathExpr.evaluator.realEvaluator.RealType; //llamando la clase matematica

public class MyCompiler extends Thread{ //extendiendo la clase de hilo para llamar los programas externos
private Map simpleVars = new TreeMap(); //Almacena los tipos de variables en un treemap
private Vector filesLines = new Vector(); //guarda las lineas del archivo que hay parseados
private String pathAndProgram = new String(); //Ruta de los programas que son ejecutados en memoria.
private StringBuffer salida = new StringBuffer(); //captura la salida de los resultados y errores del programa
public MyCompiler() { } //Constructor default de la clase MyCompiler
public MyCompiler( String file, GUICompiler gui ) //Constructor que recibe la ruta del archivo y una instancia de la clase GUI.
{
this.parseFile( file ); //llama a parsefile para parsear los archivos.
this.distLexico(); //hace la distrubucion del lexico del lenguaje creado.
gui.setMsg( salida.toString() ); //Pone los mensajes en pantalla de salida en el frame.
}
private String getAnyType(String val) //Metodo que retorna el tipo de una variable si es doble, entero, float, etc.
{
StringBuffer strbuff = new StringBuffer();
int i = 0;
while( val.codePointAt(i) != 32 )
{
strbuff.append( (char)val.codePointAt(i) );
i++;
}
return strbuff.toString();
}
private void setTypeVars(String type, String val) //Este algoritmo guarda en la variable simpleVars las varibles por separado.
{
String[] contenExpresion = val.split("[\\ ]{1,}");
salida.append( "Variable : " + contenExpresion[1].trim() );
if ( type.equals("entero") )
simpleVars.put(contenExpresion[1], Integer.parseInt( contenExpresion[3].trim() ));
else if ( type.equals("cadena") )
simpleVars.put(contenExpresion[1], contenExpresion[3].trim() );
else if ( type.equals("doble") )
simpleVars.put(contenExpresion[1], Double.parseDouble( contenExpresion[3].trim() ));
}
public Object getsimpleVars( Object varname ) //Retorna de simpleVars las variables que le pedimos como un objeto.
{
return this.simpleVars.get(varname);
}
private String[] valuesDefinied() //Retorna las definiciones de los tipos de variables en entero, cadena y doble como tipo de datos.
{
return new String[]{"entero","cadena", "doble"};
}
private String mkOperation( String Expresion ) //con mkOperacion se realizan las operaciones matematicas de las variables o numeros.
{
String capNumber = new String(Expresion);
String arrayNumber[] = Expresion.split("[\\ ]{0,}[\\+\\-\\*\\/][\\ ]{0,}");
for(int y=0; y}
}
}
}

Tuesday, July 12, 2005

Nuestro Grafo!

import java.awt.Color;
import java.awt.Graphics;
import java.util.Map; // clase abstracta para el soporte de TreeMap
import java.util.TreeMap; // clase que permite hacer listas dinamicas y con valores diferentes
/*
* Grafos.java
*
* Created on 6 de julio de 2005, 04:47 PM
*/
/**
*
* @author voip
*/
public class Grafos extends javax.swing.JFrame {
private boolean add = false;
/** Creates new form Grafos */
public Grafos() {
initComponents();
this.repaint();
for( int y=0; y < this.MapMethod().size(); y++ )
{
jComboBox1.addItem( this.MapMethod().get(y) );
}
}
public void paint( Graphics g )
{
g.drawOval( 350, 30, 90, 30 ); //A
g.drawString( this.MapMethod().get(0).toString(), 370, 50 );
g.drawOval(220, 85, 90, 30 ); //A-1
// pos. X pos. Y ancho alto
g.drawString( this.MapMethod().get(1).toString(), 240, 105 );
g.drawOval( 470, 85, 90, 30 ); //A-2
g.drawString( this.MapMethod().get(2).toString(), 490, 105 );
g.drawOval(130, 140, 90, 30); //A-B-1
g.drawString( this.MapMethod().get(3).toString(), 150, 160 );
g.drawOval(300, 140, 90, 30 ); //A-B-2
g.drawString( this.MapMethod().get(4).toString(), 315, 160 );
g.drawOval( 395, 140, 90, 30 ); //A-B-3
g.drawString( this.MapMethod().get(5).toString(), 415, 160 );
g.drawOval( 550, 140, 90, 30 ); //A-B-4
g.drawString( this.MapMethod().get(6).toString(), 570, 160 );
g.drawLine( 310, 100, 390, 60);
g.drawLine( 405, 60, 470, 100);
// x1 y1 x2 y2
g.drawLine( 190, 140, 250, 115); // A-1 --> A-B-1
g.drawLine( 340, 140, 280, 115); // A-1 --> A-B-2
g.drawLine(450, 140, 510, 115); // A-2 --> A-B-3
g.drawLine( 600, 140, 520, 115); // A-2 --> A-B-4
if ( add )
{
if ( jComboBox1.getSelectedItem().toString().equals( this.MapMethod().get(6).toString() ) )
{
g.drawLine( 670, 200, 620, 170 );
g.drawOval( 640, 200, 90, 30 );
g.drawString( jTextField1.getText(), 650, 220 );
}
else if ( jComboBox1.getSelectedItem().toString().equals( this.MapMethod().get(5).toString() ) )
{
g.drawLine( 440, 200, 440, 170 );
g.drawOval( 395, 200, 90, 30 );
g.drawString( jTextField1.getText(), 410, 220 );
}
else if ( jComboBox1.getSelectedItem().toString().equals( this.MapMethod().get(4).toString() ) )
{
g.drawLine( 340, 200, 340, 170 );
g.drawOval( 295, 200, 90, 30 );
g.drawString( jTextField1.getText(), 310, 220 );
}
else if ( jComboBox1.getSelectedItem().toString().equals( this.MapMethod().get(3).toString() ) )
{
g.drawLine( 170, 200, 170, 170 );
g.drawOval( 125, 200, 90, 30 );
g.drawString( jTextField1.getText(), 150, 220 );
}
}
}
public void update( Graphics g )
{
g.setColor(Color.black);
this.paint(g);
}
public Map MapMethod()
{
Map names = new TreeMap();
names.put(0,"Luis Soto");
names.put(1,"Maria Soto");
names.put(2,"Gladys Soto");
names.put(3,"Rafael Soto");
names.put(4,"Ernesto Soto");
names.put(5,"Jose Soto");
names.put(6,"Karen Soto");
return names;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jTextField1 = new javax.swing.JTextField();
jComboBox1 = new javax.swing.JComboBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setLayout(new java.awt.GridLayout());
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
jPanel1.add(jTextField1);
jPanel1.add(jComboBox1);
getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-811)/2, (screenSize.height-551)/2, 811, 551);
}
//
//GEN-END:initComponents
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed
// TODO add your handling code here:
add = true;
this.repaint();
}//GEN-LAST:event_jTextField1ActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
Grafos grafo = new Grafos();
grafo.setVisible(true);
/*Grafos g = new Grafos();
g.repaint();
g.setVisible(true);
*/
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox jComboBox1;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration//GEN-END:variables
}

Clase que dibuja el semaforo!

public class Ventana extends javax.swing.JFrame {
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel20;
private javax.swing.JPanel jPanel21;
private javax.swing.JPanel jPanel22;
private javax.swing.JPanel jPanel23;
private javax.swing.JPanel jPanel24;
private javax.swing.JPanel jPanel25;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JLabel semaforoA;
private javax.swing.JLabel semaforoB;
private javax.swing.JLabel semaforoC;
private javax.swing.JLabel semaforoD;
public ControladorSemaforo controlador = new ControladorSemaforo(); //Creo el objeto controlador
//de tipo ControladorSemaforo.
public Ventana() { // Constructor de la clase Ventana
initComponents(); // Metodo de la clase Ventana para armar la interfaz grafica
controlador.setVentana(this); // Metodo de la clase ControladorSemaforo para setiar la referencia de Ventana
controlador.start(); // Metodo que inicia el Hilo controlador
}
// Metodo que pone el Icono del Label semaforoA y semaforoB con la imagen del semaforo en rojo.
public void setRojoAB() {
semaforoA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/rojo-i.jpg")));
semaforoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/rojo-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoC y semaforoD con la imagen del semaforo en rojo.
public void setRojoCD() {
semaforoC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/rojo-i.jpg")));
semaforoD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/rojo-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoA y semaforoB con la imagen del semaforo en amarillo.
public void setAmarilloAB() {
semaforoA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
semaforoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoC y semaforoD con la imagen del semaforo en amarillo.
public void setAmarilloCD() {
semaforoC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
semaforoD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoA y semaforoB con la imagen del semaforo en verde.
public void setVerdeAB() {
semaforoA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-i.jpg")));
semaforoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoC y semaforoD con la imagen del semaforo en verde.
public void setVerdeCD() {
semaforoC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-i.jpg")));
semaforoD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoA y semaforoB con la imagen del semaforo en verde
// y verde para doblar.
public void setVerdeDoblaAB() {
semaforoA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-dobla-i.jpg")));
semaforoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-dobla-i.jpg")));
}
// Metodo que pone el Icono del Label semaforoC y semaforoD con la imagen del semaforo en verde
// y verde para doblar.
public void setVerdeDoblaCD() {
semaforoC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-dobla-i.jpg")));
semaforoD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/verde-dobla-i.jpg")));
}
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
semaforoC = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jPanel9 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel11 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
semaforoA = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jPanel13 = new javax.swing.JPanel();
jPanel14 = new javax.swing.JPanel();
semaforoB = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel15 = new javax.swing.JPanel();
jPanel16 = new javax.swing.JPanel();
jPanel17 = new javax.swing.JPanel();
jPanel18 = new javax.swing.JPanel();
semaforoD = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jPanel19 = new javax.swing.JPanel();
jPanel20 = new javax.swing.JPanel();
jPanel21 = new javax.swing.JPanel();
jPanel22 = new javax.swing.JPanel();
jPanel23 = new javax.swing.JPanel();
jPanel24 = new javax.swing.JPanel();
jPanel25 = new javax.swing.JPanel();
getContentPane().setLayout(new java.awt.GridLayout(5, 5));
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
getContentPane().add(jPanel1);
getContentPane().add(jPanel2);
jPanel3.setBackground(new java.awt.Color(153, 153, 153));
getContentPane().add(jPanel3);
getContentPane().add(jPanel4);
getContentPane().add(jPanel5);
getContentPane().add(jPanel6);
getContentPane().add(jPanel7);
jPanel8.setBackground(new java.awt.Color(153, 153, 153));
semaforoC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
jPanel8.add(semaforoC);
jLabel3.setText("C");
jPanel8.add(jLabel3);
getContentPane().add(jPanel8);
getContentPane().add(jPanel9);
getContentPane().add(jPanel10);
jPanel11.setBackground(new java.awt.Color(153, 153, 153));
getContentPane().add(jPanel11);
jPanel12.setBackground(new java.awt.Color(153, 153, 153));
semaforoA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
jPanel12.add(semaforoA);
jLabel1.setText("A");
jPanel12.add(jLabel1);
getContentPane().add(jPanel12);
jPanel13.setBackground(new java.awt.Color(153, 153, 153));
getContentPane().add(jPanel13);
jPanel14.setBackground(new java.awt.Color(153, 153, 153));
semaforoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
jPanel14.add(semaforoB);
jLabel2.setText("B");
jPanel14.add(jLabel2);
getContentPane().add(jPanel14);
jPanel15.setBackground(new java.awt.Color(153, 153, 153));
getContentPane().add(jPanel15);
getContentPane().add(jPanel16);
getContentPane().add(jPanel17);
jPanel18.setBackground(new java.awt.Color(153, 153, 153));
semaforoD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/amarillo-i.jpg")));
jPanel18.add(semaforoD);
jLabel4.setText("D");
jPanel18.add(jLabel4);
getContentPane().add(jPanel18);
getContentPane().add(jPanel19);
getContentPane().add(jPanel20);
getContentPane().add(jPanel21);
getContentPane().add(jPanel22);
jPanel23.setBackground(new java.awt.Color(153, 153, 153));
getContentPane().add(jPanel23);
getContentPane().add(jPanel24);
getContentPane().add(jPanel25);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-611)/2, (screenSize.height-363)/2, 611, 363);
}
//
// Metodo Main en el cual se crea un objeto de la clase Ventana
// y se muestra en pantalla con el metodo setVisible pasandore
// true como parametro.
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ventana().setVisible(true);
}
});
}
}

Clase controladora del semaforo!

// Clase ControladorSemaforo
// la cual se encarga de llamar los metodos de la clase ventana
// para cambiar los estados de los semaforos de forma sincronizada.
public class ControladorSemaforo extends Thread {
public Ventana v; // Se declara un objeto Ventana.
public void setVentana(Ventana vn) { // Metodo para recibir la referencia del objeto de la clase Ventana
v = vn; // Se le asigna la referencia del objeto Ventana.
} // para poder usar sus metodos.
public void run() {
while(true) { // While infinito para que repita el proceso hasta que se cierre el programa
v.setVerdeDoblaAB();
v.setRojoCD();
try {
this.sleep(5000); // Duermo el hilo por 5 segundos
}
catch(InterruptedException ie) {
System.out.println(ie.getMessage());
}
v.setVerdeAB();
try {
this.sleep(5000); // Duermo el hilo por 5 segundos
}
catch(InterruptedException ie) {
System.out.println(ie.getMessage());
}
v.setAmarilloAB();
try {
this.sleep(2000); // Duermo el hilo por 2 segundos
}
catch(InterruptedException ie) {
System.out.println(ie.getMessage());
}
v.setRojoAB();
v.setVerdeDoblaCD();
try {
this.sleep(5000); // Duermo el hilo por 5 segundos
}
catch(InterruptedException ie) {
System.out.println(ie.getMessage());
}
v.setVerdeCD();
try {
this.sleep(5000); // Duermo el hilo por 5 segundos
}
catch(InterruptedException ie) {
System.out.println(ie.getMessage());
}
v.setAmarilloCD();
try {
this.sleep(2000); // Duermo el hilo por 2 segundos
}
catch(InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}
}

Monday, July 11, 2005

Presentacion de Grafos!

Hola a todos. Si necesitan la presentacion de grafos envienme un e-mail a rceara@gmail.com

Estamos buscando un ftp o http server para poder publicarla. Mientras tanto haganlo por esta via.

Atentamente,

Rafael Ceara.-

Friday, July 01, 2005

Algoritmo de la calculadora!

//Para evaluar una expresion como la que sigue: 9+(2*3)
if ( expresion.matches("[0-9]{0,}[\\+\\*\\-\\/][\\(][0-9]{0,}[\\+\\*\\-\\/][0-9]{0,}[\\)]") )
{
int init = expresion.lastIndexOf("("); //posicion donde inicia el parentesis
int end = expresion.lastIndexOf(")"); //posicion donde cierra el parentesis
int hastaaqui = 0; //para saber hasta donde llega el 1er numero
result = expresion.substring( init, end + 1 ); //para coger desde donde inicia hasta donde termina
StringBuffer tmp = new StringBuffer( result ); //para poder borrar los parentesis de los lados
result = tmp.deleteCharAt(0).toString(); //borra el primero parentesis
result = tmp.deleteCharAt( result.length() - 1 ).toString(); //borra el ultimo parentesis

//machea si es el numero + la operacion + el numero (los que estan en el parentesis)
if ( result.matches("[0-9]{0,}[\\+][0-9]{0,}") )
{
number = result.split("[\\+]");
hastaaqui = expresion.indexOf("+");
signo = 1;
}
else if ( result.matches("[0-9]{0,}[\\-][0-9]{0,}") )
{
number = result.split("[\\-]");
hastaaqui = expresion.indexOf("-");
signo = 2;
}
else if ( result.matches("[0-9]{0,}[\\*][0-9]{0,}") )
{
number = result.split("[\\*]");
hastaaqui = expresion.indexOf("*");
signo = 3;
}
else if ( result.matches("[0-9]{0,}[\\/][0-9]{0,}") )
{
number = result.split("[\\/]");
hastaaqui = expresion.indexOf("/");
signo = 4;
}
else
number = new String[1];


//machea la operacion con el numero que esta fuera del parentesis
if ( expresion.matches("[0-9]{0,}[\\+][\\(][0-9]{0,}[\\+\\*\\-\\/][0-9]{0,}[\\)]") )
{
hastaaqui = expresion.indexOf("+");
zSigno = 1;
}
else if ( expresion.matches("[0-9]{0,}[\\-][\\(][0-9]{0,}[\\+\\*\\-\\/][0-9]{0,}[\\)]") )
{
hastaaqui = expresion.indexOf("-");
zSigno = 2;
}
else if ( expresion.matches("[0-9]{0,}[\\*][\\(][0-9]{0,}[\\+\\*\\-\\/][0-9]{0,}[\\)]") )
{
hastaaqui = expresion.indexOf("*");
zSigno = 3;
}
else if ( expresion.matches("[0-9]{0,}[\\/][\\(][0-9]{0,}[\\+\\*\\-\\/][0-9]{0,}[\\)]") )
{
hastaaqui = expresion.indexOf("/");
zSigno = 4;
}



switch( signo ) //Para asociar un numero por la operacion matematica (los que estan dentro del parentesis)
{
case 1:
aFinal = ( Double.parseDouble( number[0] ) + Double.parseDouble( number[1] ) ) ;
break;

case 2:
aFinal = ( Double.parseDouble( number[0] ) - Double.parseDouble( number[1] ) ) ;
break;

case 3:
aFinal = ( Double.parseDouble( number[0] ) * Double.parseDouble( number[1] ) ) ;
break;

case 4:
aFinal = ( Double.parseDouble( number[0] ) / Double.parseDouble( number[1] ) ) ;
break;
}

Conteo de Lineas!!!

public class LineCounter extends Thread {

public InterfazGrafica ig;

public LineCounter() {;}

public void setInterfaz(InterfazGrafica i) {
ig = i;
}

public void run() {
while (true) {
ig.setLineas(ig.getLineas());
}
}

}

Clase de impresion

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


/*
La siguiente clase llamada "Impresora", es la encargada de
establecer la fuente con que se va a imprimir, de obtener el
trabajo de impresion, la página. En esta clase hay un método
llamado imprimir, el cual recibe una cadena y la imprime.
*/

class Impresora {
Font fuente = new Font("Dialog", Font.PLAIN, 10);
PrintJob pj;
Graphics pagina;


/*
A continuación el constructor de la clase. Aquí lo único que
hago es tomar un objeto de impresion.
*/
Impresora() {
pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "SCAT", null);
}

/*
A continuación el método "imprimir(String)", el encargado de
colocar en el objeto gráfico la cadena que se le pasa como
parámetro y se imprime.
*/
public void imprimir(String Cadena)
{
//LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION
try {
pagina = pj.getGraphics();
pagina.setFont(fuente);
pagina.setColor(Color.black);

pagina.drawString(Cadena, 60, 60);

pagina.dispose();
pj.end();
}
catch(Exception e) {
System.out.println("LA IMPRESION HA SIDO CANCELADA...");
}
}
}

Buscar posicion de una subcadena dentro de otra subcadena

public class cadena {
int conteo = 0;
public void cadenin(){
for (int i = 0, luego = i; i < string.length(); i++){
if ( string.charAt(i) == substring.charAt(luego) ){
luego++;
conteo++;
}else{
luego = 0;
continue;
}
return i - conteo + 1;
}
return 0;
}
}

Impresion de palabra

import java.io.*
public class impression {

public static void main (String args[]) {

String primero = "h h
hhhh
h h";

String segundo = "o o o
o o
o o o";

String tercero = "l
l
lllllllll";

String cuarto = "aaaaa
a a
aaaaa
a a
a a";
String iniciales;

String initPrim, initSeg, initAp;

initPrim = primero.substring();
initSeg = segundo.substring();
initAp = apellido.substring();

iniciales = initPrim.concat(initSeg);
iniciales = iniciales.concat(initAp);

System.out.println(iniciales);
}
}

Convierte de números Arábicos a Romanos

package numeros;

public class NumRom {

public NumRom() {
super();
}

public static String convercion(int num) {
int[] arab = {1,5,10,50,100,500,1000};
String[] rom = {"I","V","X","L","C","D","M"};
StringBuffer sb = new StringBuffer();

for(int i = 6; i > = 0 ;i--)
while( num > = arab[i] ){
num -= arab[i];
sb.append(rom[i]);
}
return sb.toString();
}
}

Explique el siguiente error:

char c = "A"; /* define and inicialize c */

El error esta en que la variable c esta declarada como char y por lo tanto “A” debe ser leido como ‘A’ en la declaracion de su funcion.

Ejercicio 2.5 Libro de Java!

public class Arreglo {


public Arreglo() {;} // Constructor de la clase

public void merge(int[] a, int[] b) {
int longitud = (a.length + b.length); //Longitud de los dos arreglos
int[] w = new int[longitud]; //Creacion del arreglo del tamano de la suma de los dos arreglos

for(int i=0; i < a.length; i++) //se llena el valor de a
w[i] = a[i];

for(int i=0; i < b.length; i++) //se llena el valor de b
w[i + a.length] = b[i];

int temp = 0; //Metodo de ordenacion burbuja. Se ordenan los numeros rangos de mayor a menor
for(int j = 0; j <= (w.length -2); j++)
for(int k = 0; k <= ((w.length - j) - 2); k++)
if(w[k] < w[k+1]) {
temp = w[k];
w[k] = w[k + 1];
w[k+1] = temp;
}


System.out.println("\n");
System.out.print("Arreglo final: ");

for(int i=0; i < w.length; i++)
System.out.print(w[i] + " ");
}


public static void main(String[] args) {

int[] x = new int[5]; //declaracion de arreglo x
int[] y = new int[5]; //declaracion de arreglo y
Arreglo z = new Arreglo(); //declaracion del objeto z que llena ambos arreglos

for(int i=0; i < x.length; i++) { //llenar arreglo x
x[i] = (int)(Math.random() * 100);
}

for(int i=0; i < y.length; i++) { //llenar arreglo y
y[i] = (int)(Math.random() * 100);
}

System.out.print("Valores del arreglo X: "); //imprime el contenido del arreglo x
for(int i=0; i < x.length; i++) {
System.out.print(x[i] + " ");
}

System.out.println("\n");
System.out.print("Valores del arreglo Y: "); //imprime el contenido del arreglo y
for(int i=0; i < y.length; i++) {
System.out.print(y[i] + " ");
}

z.merge(x,y);
}

}