| 1 | package com.hcarralero.toljava.ejemplos; |
|---|
| 2 | |
|---|
| 3 | //Se deben importar del paquete com.hcarralero.toljava todas las clases a usarse, |
|---|
| 4 | //para este ejemplo se requieren las clases: TOLMachine, TOLMachineException, TOLVMatrix y TOLVariable. |
|---|
| 5 | import com.hcarralero.toljava.TOLMachine; |
|---|
| 6 | import com.hcarralero.toljava.TOLMachineException; |
|---|
| 7 | import com.hcarralero.toljava.TOLVMatrix; |
|---|
| 8 | import com.hcarralero.toljava.TOLVariable; |
|---|
| 9 | |
|---|
| 10 | /** |
|---|
| 11 | * Tercer Ejemplo de TOLJava para Consola: |
|---|
| 12 | * 1) Se crea una instancia de TOLMachine. |
|---|
| 13 | * 2) Se ejecuta una sentencia TOL para definir 3 variables de tipo VMatrix: ma, mb y mc |
|---|
| 14 | * 3) Se procesa el resultado para determinar si se produjo algún error. |
|---|
| 15 | * 4) Se obtiene la variable "mc" definida en TOL y de ella se toma la matriz de sus valores. |
|---|
| 16 | * 4) Se recorre la matriz obtenida y se muestra por pantalla. |
|---|
| 17 | * |
|---|
| 18 | * @author Humberto Andrés Carralero López (hcarralero@gmail.com) |
|---|
| 19 | * @version 1.0 |
|---|
| 20 | * @see com.hcarralero.toljava.TOLMachine, com.hcarralero.toljava.TOLVariable |
|---|
| 21 | */ |
|---|
| 22 | public class Ejemplo04 { |
|---|
| 23 | |
|---|
| 24 | /** |
|---|
| 25 | * @param args los argumenetos de la lÃnea de comandos. |
|---|
| 26 | */ |
|---|
| 27 | public static void main(String[] args) { |
|---|
| 28 | //Se crea una instancia de la clase TOLMachine. |
|---|
| 29 | TOLMachine tm= new TOLMachine(); |
|---|
| 30 | //En una cadena se almacena el código TOL que se ejecutará; en este caso |
|---|
| 31 | //el código es para definir las variables tipo VMatrix: ma, mb y mc. |
|---|
| 32 | String code= "VMatrix ma= Rand(4, 3, 0, 1); VMatrix mb= SetCol( [[2,3,4,7]] ) | SetCol( [[1,5,7,9]] ) | SetCol( [[3,2,0,1]] ); VMatrix mc=ma+mb;"; |
|---|
| 33 | Object res[]= tm.execute(code); |
|---|
| 34 | //Se invoca el intérprete de TOL para ejecutar el código pasado por parámetro. |
|---|
| 35 | //El resultado es un arreglo de cadenas. |
|---|
| 36 | System.out.println(); |
|---|
| 37 | if (res==null) { |
|---|
| 38 | //Si el resultado es nulo, entonces se ha producido un error en el acceso a TOL. |
|---|
| 39 | System.out.println("ERROR ACCEDIENDO A TOL->execute"); |
|---|
| 40 | } else { |
|---|
| 41 | //Se ha logrado acceder al intérprete y ejecutar el código. |
|---|
| 42 | int ne= 0; |
|---|
| 43 | try { |
|---|
| 44 | //La primera cadena representa el número de errores detectado por el Intérprete de TOL. |
|---|
| 45 | ne= Integer.parseInt((String)res[0]); |
|---|
| 46 | if (ne>0) { |
|---|
| 47 | //El intérprete de TOL reportó al menos un error. |
|---|
| 48 | System.out.println("Se ha(n) detectado "+ne+" error(es)"); |
|---|
| 49 | } else { |
|---|
| 50 | //El intérprete de TOL no reportó errores. |
|---|
| 51 | System.out.println("No se han detectado errores"); |
|---|
| 52 | //Se obtiene de TOL la variable mc y se muestra por pantalla. |
|---|
| 53 | TOLVariable varmc= tm.getVariable("mc"); |
|---|
| 54 | //Se hace cast al valor de la variable para convertirlo al tipo correcto: VMatrix. |
|---|
| 55 | TOLVMatrix valmc= (TOLVMatrix)varmc.getValue(); |
|---|
| 56 | //Se obtiene el número filas y el de columnas de la matriz. |
|---|
| 57 | int rows= valmc.getRows(); |
|---|
| 58 | int cols= valmc.getColumns(); |
|---|
| 59 | double values[][]= valmc.getValues(); |
|---|
| 60 | for (int i= 0; i<rows; ++i) { |
|---|
| 61 | //Se cambia de lÃnea antes de cada fila |
|---|
| 62 | System.out.println(); |
|---|
| 63 | for (int j= 0; j<cols; ++j) { |
|---|
| 64 | //Se imprime cada celda de la matriz |
|---|
| 65 | System.out.print(values[i][j]+"\t"); |
|---|
| 66 | } |
|---|
| 67 | } |
|---|
| 68 | } |
|---|
| 69 | } catch (NumberFormatException ex) { |
|---|
| 70 | //Algo inusual (ERROR INTERNO DE TOLJava) ha ocurrido. |
|---|
| 71 | System.out.println("ERROR DE ACCESO AL NÃMERO DE ERRORES"); |
|---|
| 72 | } catch (TOLMachineException ex) { |
|---|
| 73 | //Se ha producido un error en el acceso a la Máquina Virtual de TOL. |
|---|
| 74 | System.out.println("Error accediendo a TOL: "+ex.getMessage()); |
|---|
| 75 | } |
|---|
| 76 | } |
|---|
| 77 | } |
|---|
| 78 | |
|---|
| 79 | } |
|---|