martes, 28 de agosto de 2012

Clases para el proyecto compilador

Principal


public class LectorTexto {
static boolean res_com=false;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        archivo a=new archivo();
        compilar co=new compilar();      
        Integer linea=0;
        String p=a.leerGrafico();
        Integer nu=a.contarlineas(p);
        while(linea        String l=a.leerLinea(linea, p);
        res_com=co.compilar(l);
        if(res_com!=true){
        System.out.println("Error de sintaxis en la linea "+linea);  
        }
        linea++;
    }
    }
}


Particionamiento del Archivo

import java.io.*;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

public class archivo {


  

    File f;
    FileReader lectorArchivo;


     public  String leerGrafico()
    {
   
        JFileChooser j= new JFileChooser();
        File f1=new File("C:\\Users\\usuario\\Desktop");
        j.setCurrentDirectory(f1);
        FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt","txt");
        j.setFileFilter(filter);
        j.showOpenDialog(j);
        String path= j.getSelectedFile().getAbsolutePath();
        String lectura="";
        f = new File(path);
        try{
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);
        String aux;
        while((aux = br.readLine())!=null) {
                lectura = lectura+aux+"\n";
            }
        }catch(IOException e){}
        return lectura;
    }
  

public Integer contarlineas (String cadena){
    int x=0,num=0;
    while(x
        if(cadena.charAt(x)=='\n'){
            num++;
        }
        x++;
    }
    return num;
}
     
     public String leerLinea(Integer lin, String cadena){
     
         Integer a;
         String linea="";
         for(int i=0;i<=lin;i++){
         a=cadena.indexOf("\n");
         linea=cadena.substring(0, a);
         cadena=cadena.substring(a+1, cadena.length());
         }
         
         return linea;
    }

public String palabras(String cadena, int pal){
        
    
    
    if(pal==0)
    {
    cadena=cadena.substring(0,cadena.indexOf(" "));    
    }
    else
    {
    cadena=cadena.substring(cadena.indexOf(" ")+1,cadena.length());    
    }
    return cadena;
}

    
}



Compilar (preliminar)


public class compilar {
    
    
    public boolean compilar(String l){
        String pal="",par="";
        archivo p=new archivo();
        if(l.equals("inicio")){
        return true;   
        }
                
        if(l.equals("fin")){
        return true;
        }
        
        pal=p.palabras(l,0);
        
        if(pal.equals("escribir")){
        par=p.palabras(l, 1);
            System.out.println(par);
            
            return true;    
        }
        
        
        return false;
    }
    
    
}




martes, 21 de agosto de 2012



Clase para contar la cantidad de veces que se repite un carácter en un cadena de caracteres en Java




public class contarletras {
 
 
    public Integer contar(String cadena, char letra){
        Integer num=0,can=0;
        while(num        if (cadena.charAt(num)==letra){
            can++;
            }      
        num++;
        }
        return can;
    }
 
}

Clase Principal para usar las clases contarletras y archivo



public class LectorTexto {

    public static void main(String[] args) {

        archivo a=new archivo();
        contarletras c=new contarletras();
        String l=a.leerGrafico();
        Integer cantidad=c.contar(l,'a');
        System.out.println(cantidad.toString());
     
     
    }
}



Clase para abrir un archivo de texto desde java y cargar el contenido en una variable de tipo String



import java.io.*;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class archivo {

    File f;
    FileReader lectorArchivo;


     public  String leerGrafico()
    {
   
        JFileChooser j= new JFileChooser();
        File f1=new File("C:\\Users\\usuario\\Desktop");
        j.setCurrentDirectory(f1);
        FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt","txt");
        j.setFileFilter(filter);
        j.showOpenDialog(j);
        String path= j.getSelectedFile().getAbsolutePath();
        String lectura="";
        f = new File(path);
        try{
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);
        String aux;
        while((aux = br.readLine())!=null) {
                lectura = lectura+aux+"\n";
            }
        }catch(IOException e){}
        return lectura;
    }
 

}
Teoría de Lenguajes de Programación

Documento en PDF, con una breve y concisa explicación de los componentes teóricos de los Lenguajes de Programación

Conjunto de instrucciones para sumar 20 y 45 en una máquina hipotética:
  1. LIMPIAR
  2. ACUMULAR
  3. 20
  4. ACUMULAR
  5. 45
  6. IMPRIMIR
  7. ALTO
La instrucción LIMPIA en la linea 1 coloca en cero algún área interna usada para guardar resultados intermedios, como la memoria de una calculadora, por ejemplo. La instrucción ACUMULA de la linea 2 indica al computador que deberá sumar el dato que sigue en la memoria de trabajo. La linea 3 contiene el primer dato, en este caso 20. La instrucción ACUMULA de la linea 4 indica al computador que deberá sumar el dato que sigue a la memoria de trabajo. La linea 5 contiene el segundo dato: 45. La instrucción IMPRIME de la linea 6 le pide a la máquina que muestre por algún dispositivo de salida (la pantalla, por ejemplo), el resultado guardado en el area intermedia. La instrucción ALTO en la linea 7 le indica a la máquina que debe detenerse.
Este es un ejemplo de lo que llamamos código de máquina. Este es el código que entienden directamente las computadoras. Aunque en realidad lo escrito arriba es una representación para que podamos entender, a esta representación la llamamos código ensamblador, o assembly,  el verdadero código de máquina está representado por números, porque la computadora sólo procesa números, los que se escriben en binario. Supongamos que en nuestra máquina cada instrucción esta codficada de acuerdo a la siguiente tabla:
INSTRUCCION VALOR   EN BINARIO (*)
ALTO:           0   0000 00000
LIMPIAR:        1   0000 00001
ACUMULAR:       2   0000 00010
IMPRIMIR:       3   0000 00011
Entonces nuestra lista de instrucciones para sumar 20 y 45 se codificaría como la lista de números siguiente:1,2,20,2,45,3,0, la que se expresaría en código de máquina en binario de la siguiente forma:
0000 0001
0000 0010
0001 0100
0000 0010
0010 1101
0000 0011
0000 0000
Tomado del blog: www.akarru.org de Eduardo Diaz