Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas

5/12/16

Bit by Bit - Juego de Programación

JAN29


Me gustar buscar cosas nuevas por la Play Store de Google, se encuentra de todo, desde cosas completamente inútiles hasta cosas bastante interesantes como el caso de este juego para niños "Bit by Bit"que nos sirve para introducir a los niños en el mundo de la programación mediante la resolución de problemas 

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

Bit by Bit es un juego para preparar a los niños en el aprendizaje de la programación.

Ellos aprenderán:

  • La preparación previa
  • Solucionar problemas creativamente
  • Pensamiento analítico y lógico 

El juego se probó en niños de escuela primaria y se basa en planes de estudio de programación inicial e investigación académica.
--------------------------------------
Pros. Entretenido y adictivo :) me quede con ganas de más
Contra. Pesado usa mucha memoria




Ofrecida por: Rikai Games
Requiere Android :4.0 y versiones superiores
Precio: Gratuito
Link Play Store: Bit by Bit

continue reading

4/1/15

YO PUEDO PROGRAMAR nueva iniciativa de Microsoft

JAN29

YO PUEDO PROGRAMAR

YO PUEDO PROGRAMAR es la nueva iniciativa de Microsoft para que todos en Latinoamérica puedan escribir código: padres e hijos, estudiantes y docentes, niños y niñas de todas las edades. 

El curso se divide en dos partes:

Aprendiendo a Programar (Si tienes más tiempo)
Detrás de todas las actividades que haces hoy en día, escuchar música, comunicarte con amigos, estudiar, jugar, hay un mundo de códigos que tú también puedes aprender.
Da tus primeros pasos en la programación, y verás que la complejidad técnica de las herramientas de desarrollo de aplicaciones es un mito, y que todos podemos hacerlo. Acá te brindaremos todas las herramientas necesarias para que puedas desarrollar tus ideas.

Este curso necesita que seas parte de Academia Virtual de Microsoft  y te inscribas en el curso "Aprendiendo a programar" . El curso esta enfocado al desarrollo web y consiste en doce módulos que tocan conceptos básicos de programación e introducción a lenguajes como HTML, JavaScript o C#, así como su aplicación en servidores, bases de datos y más.

Curso Code.org
La Hora de Código de Code.org es sólo el primer paso de un increíble viaje de aprendizaje sobre cómo funciona la tecnología y cómo crear aplicaciones de software. Anímate y ten tu hora de código, es fácil y divertido.

Este curso te da la posibilidad de aprender los conceptos básicos de programación en un entretenido juego orientado a objetos donde se aplican lo que son las estructuras repetitivas y estructuras de condición (SI-SINO)


Cuando finalices el curso, que es gratuito, te mostrara un bonito diploma para presumir lo friki que eres :)
¿Qué estas esperando?
Comienza el curso en YO PUEDO PROGRAMAR

continue reading

2/5/11

Tu foto en una portada

JAN29

Aprovechando el feriado del primero de mayo y como tambien se vino una helada que no dan ganas de salir ni a la puerta :( me entretuve haciendo una pagina web modificando un proyecto  "TU PORTADA"que ya tenia hecho hace tiempo en un servidor gratuito con muchas limitaciones, pero ahora, estrenando un dominio propio y para testear como anda este nuevo hosting (30 dias de garantia) le hice algunas modificaciones mas de forma que de fondo.
Trate de simplificar el uso de imagenes (el costo por byte es muy caro en mi pais), ademas utilice la maquetacion por el sistema 960 Grid System para apresurar las cosas, lenguaje PHP y JavaScript, dando como resultando una web sencilla de rapido cargado 
No podia falta un video

VISITEN ESTA PAGINA

La dirección es: http://www.tuportada.jc-mouse.net/

continue reading

13/8/10

La clase QuadCurve2D "Curva de Bezier"

JAN29



La clase QuadCurve2D de Java2D nos permite dibujar una curva basado en ecuaciones matematicas, esta curva tambien se la conoce con el nombre de Curva Cuadratica de Bezier.

Esta curva funciona de la siguiente manera: Se establecen dos puntos (P1 y P2) que establecen los extremos de un segmento curvo, y tambien se define un tercer punto (Punto de Control) el cual nos permite DEFORMAR la curva

La ecuacion con la cual se generan los diferentes puntos que forman la curva es:
 


 El valor de (t) va de 0 hasta 1, donde para un valor de 0 corresponde a las coordenadas de P1 y para un valor de 1, equivale a P2

Proyecto:
Porque se aprende mejor haciendo, dejo la teoria de las matematicas para su propia investigacion, lo que ahora haremos en este tutorial, sera construir una aplicacion en netbeans donde dibujaremos la curva QuadCurve2D, de dos maneras, una de ellas utilizando la clase propia de Java2D y la segunda donde haremos uso de la formula escrita mas arriba, asi podremos apreciar como java2d construye esta figura. Manos a la obra.

1. Crea un nuevo proyecto en Netbeans, Añade un nuevo JFrame: Interfaz y una clase nueva , llamala "miPaint.java", al JFrame interfaz, añadele los siguiente objetos, no te olvides de cambiarle los nombres como en la imagen:

2. A la clase miPaint.java añade el codigo:

01 import java.awt.BasicStroke;
02 import java.awt.Color;
03 import java.awt.Dimension;
04 import java.awt.Font;
05 import java.awt.Graphics;
06 import java.awt.Graphics2D;
07 import java.awt.geom.Line2D;
08 import java.awt.geom.Point2D;
09 import java.awt.geom.QuadCurve2D;
10 import java.text.NumberFormat;
11 import javax.swing.JOptionPane;
12 import javax.swing.JPanel;
13 /**
14  * @web http://jc-mouse.blogspot.com/
15  * @author Mouse
16  */
17 public class miPaint extends JPanel {
18     private Point2D Punto1;
19     private Point2D Punto2;
20     private Point2D Punto3;    
21     private Point2D Punto;
22     private boolean band=true;
23     float rango=0.01f;
24     
25     public miPaint(Dimension d){
26       this.setPreferredSize(d);
27       this.setSize(d);
28       this.setVisible(true);
29       this.repaint();      
30       //se crean las coordenas al azar
31       this.Punto1 = new Point2D.Double(getCoordenada(),getCoordenada());            
32       this.Punto2 = new Point2D.Double(getCoordenada(),getCoordenada());            
33       this.Punto3 = new Point2D.Double(getCoordenada(),getCoordenada()); 
34     }
35     //actualiza nuevas coordenadas a los Puntos
36     public void setPoint2D(String x1,String y1,String x2,String y2,String x3,String y3, boolean b){
37         this.Punto1 = new Point2D.Float(Float.valueOf(x1),Float.valueOf(y1));            
38         this.Punto2 = new Point2D.Float(Float.valueOf(x3),Float.valueOf(y3));            
39         this.Punto3 = new Point2D.Float(Float.valueOf(x2),Float.valueOf(y2));            
40         this.band=b;
41     }
42     
43   @Override                   
44   public void paintComponent(Graphics g){
45         super.paintComponent(g);      
46         Graphics2D g2 = (Graphics2D)g;    
47         //grosor de pincel
48         g2.setStroke(new BasicStroke(2.0f));   
49         //color de pincel
50         g2.setColor(new Color(0,0,200));
51         if(band){
52             Dibujar_QuadCurve2D(g2);
53         }else{
54             Dibujar_Bezier(g2);
55         }         
56         this.repaint();
57         Mostrar_Datos(g2);
58    }
59   
60   //dibuja la curva con la funcion de java2d QuadCurve2D
61   public void Dibujar_QuadCurve2D(Graphics2D g2){    
62     g2.draw(new QuadCurve2D.Double(Punto1.getX(), Punto1.getY(), Punto2.getX(), Punto2.getY(), 
63             Punto3.getX(), Punto3.getY()));                           
64   }
65   
66   //dibuja la curva con la funcion de la curva cuadratica de Bezier
67   //(1-t)^2*p1 + 2t(1-t)p2 + t^2*p3
68   public void Dibujar_Bezier(Graphics2D g2){
69         float f1;
70         float f2;        
71         float t=0;          
72         while (t<=1.0){  
73             //obtiene las coordenadas
74             f1 = (float) (((1-t)*(1-t) * Punto1.getX()) + 2 * t * (1 - t) * Punto2.getX() + (t * t) 
75                  * Punto3.getX()); 
76             f2 = (float) (((1-t)*(1-t) * Punto1.getY()) + 2 * t * (1 - t) * Punto2.getY() + (t * t) 
77                  * Punto3.getY());            
78             //crea un punto con esas coordenadas
79             Punto = new Point2D.Float(f1,f2);   
80             //dibuja el punto
81             g2.draw(new Line2D.Double(Punto.getX(),Punto.getY(),Punto.getX(),Punto.getY()));      
82             t = (float) (t + rango);    
83         }      
84         
85   }
86   
87   //
88   public void setRango(String x){
89       if((Float.valueOf(x)<=1)&&(Float.valueOf(x)>0.001)){
90          this.rango=Float.valueOf(x);  
91       }else{
92         JOptionPane.showMessageDialog(this,"Solo valores entre [0.001 y 1.0]");            
93       }
94     
95   }
96   /* metodos auxiliares */
97   
98   //muestra lascoordenas de los puntos P1,P2 Y P3
99   //dibuja las lineas que estos forman
100   private void Mostrar_Datos(Graphics2D g2){
101         g2.setStroke(new BasicStroke(1.0f));
102         g2.setColor(new Color(0,0,0));
103         g2.draw(new Line2D.Double(Punto1.getX(), Punto1.getY(), Punto2.getX(), Punto2.getY()));      
104         g2.draw(new Line2D.Double(Punto3.getX(), Punto3.getY(), Punto2.getX(), Punto2.getY()));      
105         dibuja_coordenada(g2,Punto1.getX(), Punto1.getY(),"Punto 1");
106         dibuja_coordenada(g2,Punto2.getX(), Punto2.getY(),"Punto de Control");
107         dibuja_coordenada(g2,Punto3.getX(), Punto3.getY(),"Punto 2");        
108   }
109   
110    //dibuja las coordenas dadas  un punto P1,P2   
111 private void dibuja_coordenada(Graphics2D g2,double x, double y,String t){       
112     NumberFormat mf = NumberFormat.getInstance(); 
113     mf.setMaximumFractionDigits(2); 
114     g2.setColor(new Color(255,0,0)); 
115     g2.setFont(new Font("Arial", Font.BOLD, 11));
116     g2.drawString(t + " ("+mf.format(x)+","+mf.format(y)+")",(float) (x+4),(float)  (y-10));       
117     g2.setStroke(new BasicStroke(4.5f));   
118     g2.draw(new Line2D.Double(x,y,x,y));      
119    } 
120 
121 //genera un valor al azar
122 private double getCoordenada(){ 
123     return ((Math.random()*350)+50);
124 }
125 
126      
127 }


Esta clase implementamos un nuevo JPanel al cual se le modificar su metodo paintComponent para que pueda dibujar las figuras con Java2D, asi tambien, solo para motivos ilustrativos, tambien se dibujaran las lineas entre P1-P3 y P2-P3 para que se pueda ver las lineas que estas forman  al trazar la curva bezier.

3. Para implementar esta clase en la interfaz, debemos hacer los siiguientes cambios:


01 public class interfaz extends javax.swing.JFrame {
02     miPaint paint;
03     /** Creates new form interfaz */
04     public interfaz() {
05         initComponents();
06         this.setTitle("JAVA2D - QuadCurve2D - [by Mouse]");
07         this.setLocationRelativeTo(null);  
08         paint = new miPaint(jPanel1.getSize());
09         jPanel1.add(paint);        
10     }
11 
12     private void bt_1ActionPerformed(java.awt.event.ActionEvent evt) {                                     
13         paint.setPoint2D(p1x.getText(), p1y.getText(), p2x.getText(), p2y.getText(), pcx.getText(), pcy.getText(),true);
14     }                                    
15 
16     private void bt_2ActionPerformed(java.awt.event.ActionEvent evt) {                                     
17         paint.setPoint2D(p1x.getText(), p1y.getText(), p2x.getText(), p2y.getText(), pcx.getText(), pcy.getText(),false);
18     }                                    
19 
20     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
21             paint.setRango(f.getText());
22     }           

OJO: No copies y pegues, chekea donde va cada linea de codigo.

Con esto nuestra pequeña aplicacion estara lista para funcionar


Aqui dejo el codigo fuente en netbeans 6.0
Click para descargar



continue reading

11/11/09

Conversor de colores HEXADECIMALES para CSS

JAN29

En un anterior post, se programo un pequeño software para poder visualizar mejor los colores en hexadecimal (#FFFFFF = Blanco) para luego colocarlo en el codigo CSS, pero le falta, ese programa funciona pero esta incompleto. Ahora modifique el codigo un poco para que no solamente se pueda crear colores moviendo los Slider, sino que a la ves, ahora admite la introduccion de un color en Hexadecimal y presionando un boton este te muestra a cual corresponde.

Crea un nuevo proyecto en VB y añade los controles que se ven a continuacion, cambia su nombre por los nombres colocados en rojo en la ventana propiedades.


En el editor de codigo pega el siguiente codigo

Option Explicit
Dim r, v, a As String
Dim val1, val2, val3 As String
Dim inversa As Boolean
Const Num_Hexa = "0123456789ABCDEFabcdef"

'procedimiento que muestra el valor RGB en el control picture
Sub MostrarValor()
    picColor.BackColor = RGB(sRojo.Value, sVerde.Value, sAzul.Value)
End Sub

'procedimiento que transforma los valores de los Slider a valores Hexadecimales
Sub Valores()
    r = HEX$(sRojo.Value)
    v = HEX$(sVerde.Value)
    a = HEX$(sAzul.Value)
    If sRojo.Value = 255 Then val1 = "0" Else val1 = r
    If sVerde.Value = 255 Then val2 = "0" Else val2 = v
    If sAzul.Value = 255 Then val3 = "0" Else val3 = a
    Valor.Text = "#" + val1 + val2 + val3
End Sub

Private Sub cmd_converter_Click()
    Convertir
End Sub

' procedimiento que convierte valores hexadecimales introducidos por teclado
' a valores hexadecimales y los muestra en el control picture
Sub Convertir()
Dim s As String
    s = Valor.Text
    If (Mid(s, 1, 1)) = "#" Then
        If verifica(s) = True Then
            r = Val("&H" & (Mid(s, 2, 2)))
            v = Val("&H" & (Mid(s, 4, 2)))
            a = Val("&H" & (Mid(s, 6, 2)))
            inversa = True
            sRojo.Value = CInt(r)
            inversa = True
            sVerde.Value = CInt(v)
            inversa = True
            sAzul.Value = CInt(a)
            picRojo.BackColor = RGB(CInt(r), 0, 0)
            picVerde.BackColor = RGB(0, CInt(v), 0)
            picAzul.BackColor = RGB(0, 0, CInt(a))
            picColor.BackColor = RGB(CInt(r), CInt(v), CInt(a))
        Else
            MsgBox "No es un color valido", vbInformation, "Importante"
        End If
    Else
        MsgBox "El formato de entrada es incorrecto", vbInformation, "Importante"
    End If
End Sub

' funciona auxiliar que verifica si la cadena  de texto introducida
' corresponde a una cadena valida hexadecimal
Function verifica(cadena) As Boolean
Dim i As Integer
Dim valido As Boolean
valido = False
For i = 2 To Len(cadena)
    If InStr(1, Num_Hexa, Mid(cadena, i, 1)) <> 0 Then
        valido = True
    Else
        valido = False
        Exit For
    End If
Next
verifica = valido
End Function

Private Sub Form_Load()
'inicio a valores
    Valor.Text = "#FFFFFF"
    Valor.MaxLength = 7
    r = "FF"
    v = "FF"
    a = "FF"
    inversa = False
    Convertir
    MostrarValor
End Sub

Private Sub sAzul_Change()
    If inversa = False Then
        Valores
        picAzul.BackColor = RGB(0, 0, sAzul.Value)
        MostrarValor
    End If
    inversa = False
End Sub

Private Sub sRojo_Change()
    If inversa = False Then
        Valores
        picRojo.BackColor = RGB(sRojo.Value, 0, 0)
        MostrarValor
    End If
    inversa = False
End Sub

Private Sub sVerde_Change()
    If inversa = False Then
    Valores
    picVerde.BackColor = RGB(0, sVerde.Value, 0)
    MostrarValor
    End If
    inversa = False
End Sub

para compilar el codigo presiona CTRL + F5 si todo esta bien, crea el ejecutable


El codigo fuente consta con sus respectivos comentarios asi que no hay pierde

continue reading

8/11/09

Colores en Hexadecimal para Diseño Web

JAN29



Los colores en HTML se representan mediante un número hexadecimal.

Un número hexadecimal se diferencia de un número decimal en que no sólo puede tomar valores del 0 al 9, sino que puede tomar hasta dieciséis valores distintos, que van del 0 al 9, y de la A a la F.

Cada color estará representado por un grupo de seis dígitos en hexadecimal, precedidos por una almohadilla, como por ejemplo #FFFFFF.

También podemos personalizar nuestros propios colores, modificando los valores de cada uno de los dígitos que forman parte del número hexadecimal, para ello podemos hacer uso de programas gratuitos que se encuentran en internet, pero lo mejor para todo webmaster es desarrollar sus propias herramientas.

Eso es lo que haremos en este tutorial utilizando la aplicacion Visual Basic 6.

Crea un nuevo proyecto en VB y añade los siguientes controles como se ve en la imagen, luego cambia el nombre  marcado en rojo para cada objeto en sus propiedades.




Importante: modifica los valores de los objetos VScrollBar, coloca en cada uno de ellos los valores:
  • LargeChange:1
  • Max:255
 Una vez hecho esto, en la parte que corresponde al codigo, coloca lo siguiente:
Option Explicit

Dim r, v, a As String
Dim val1, val2, val3 As String
   
Sub MostrarValor()
    picColor.BackColor = RGB(255 - sRojo.Value, 255 - sVerde.Value, 255 - sAzul.Value)
End Sub

Sub Valores()
    a = Hex$(255 - sAzul.Value)
    r = Hex$(255 - sRojo.Value)
    v = Hex$(255 - sVerde.Value)
    If sRojo.Value = 255 Then val1 = "0" Else val1 = r
    If sVerde.Value = 255 Then val2 = "0" Else val2 = v
    If sAzul.Value = 255 Then val3 = "0" Else val3 = a
    Valor.Text = "#" + val1 + val2 + val3
End Sub

Private Sub Form_Load()
    picRojo.BackColor = RGB(255, 0, 0)
    picVerde.BackColor = RGB(0, 255, 0)
    picAzul.BackColor = RGB(0, 0, 255)
    Valor.Text = "#FFFFFF"
    r = "FF"
    v = "FF"
    a = "FF"
    MostrarValor
End Sub

Private Sub sAzul_Change()
    Valores
    picAzul.BackColor = RGB(0, 0, 255 - sAzul.Value)
    MostrarValor
End Sub

Private Sub sRojo_Change()
    Valores
    picRojo.BackColor = RGB(255 - sRojo.Value, 0, 0)
    MostrarValor
End Sub

Private Sub sVerde_Change()
    Valores
    picVerde.BackColor = RGB(0, 255 - sVerde.Value, 0)
    MostrarValor
End Sub

Presiona CTRL + F5 para compilar el proyecto, si no tienes errores, solo queda crear el ejecutable, esto se realiza con Archivo - Generar, le colocas un nombre a tu aplicacion y listo.

Esta pequeña aplicacion te servira de ayuda para la creacion o mantenimiento de plantillas web.

continue reading

29/10/09

La Clase Complejo

JAN29


Como la practica hace al maestro, y la teoria aburre, que mejor que practicar un poco para entender mejor algunos conceptos.

Creamos un nuevo proyecto en Netbeans, llamlo como quieras, yo le puse jcomplejo (si, se que no es muy original). Ahora crea una nueva clase, llamala Complejo.java, escribe todo lo que ves aqui abajo. Compila presionando (F9) para asegurarte de que no tienes fallas.


clic para ampliar(+)
Podemos hacer algunos comentarios...
Primero: no hay include aquí, ya que la única biblioteca que usamos es java.lang y se incluye automáticamente.
Segundo: la clase es public final, lo que implica que cualquier clase en éste u otros paquetes puede utilizarla, pero ninguna clase puede heredarla (o sea que es una clase estéril...).
Hagamos un resumen de los atributos y métodos de la clase:
// atributos:
private float x;
private float y;
Siendo privados, no podemos acceder a ellos desde el exterior. Como además la clase es final, no hay forma de acceder a x e y. Además, al no ser static, cada instancia de la clase tendrá su propio x e y.
// constructores:
public Complejo()
public Complejo(float rx, float iy)
 
La clase tiene dos constructores, que se diferencian por su "firma" (signature), o sea por la cantidad y tipo de parámetros. El primero nos sirve para crear un objeto de tipo Complejo y valor indefinido (aunque en realidad el método lo inicializa en cero); con el segundo, podemos definir el valor al crearlo.
// métodos:
public final float Norma()
public final float Norma(Complejo c)
public final Complejo Conjugado()
public final Complejo Conjugado(Complejo c)

Estos métodos también son duales; cuando los usamos sin parámetros devuelven la norma o el conjugado del objeto individual (instancia):
v = miComplejo.Norma(); // por ejemplo
otroComplejo = miComplejo.Conjugado();

Con parámetros, en cambio, devuelven la norma o el conjugado del parámetro:
v = unComplejo.Norma(miComplejo);
otroComplejo = unComplejo.Conjugado(miComplejo);

Notar que lo siguiente es inválido:
otroComplejo = Complejo.Norma(miComplejo); // NO SE PUEDE!
...porque el método no es static, por lo tanto debe llamarse para una instancia en particular (en este caso, unComplejo).

// obligatorios (son abstractos en Number):
public final double doubleValue()
public final float floatValue()
public final int intValue()
public final long longValue()

Estos métodos es obligatorio definirlos, ya que en la clase madre Number son métodos abstractos, o sea que debemos implementarlos aquí.
Como todos los métodos de esta clase son final, o sea que no puede ser redefinido. No es importante en realidad puesto que la clase no puede tener descendientes...
public final String toString()

Este método nos sirve para representar el complejo como una cadena de caracteres, de la forma x+iy.
// Operaciones matemáticas
public static final Complejo Suma(Complejo c1, Complejo c2)
public static final Complejo Resta(Complejo c1, Complejo c2)
public static final Complejo Producto(Complejo c1, Complejo c2)
public static final Complejo DivEscalar(Complejo c, float f)
public static final Complejo Cociente(Complejo c1, Complejo c2)
Aquí definimos varias operaciones matemáticas. Notar que se han definido como static, o sea que los métodos son únicos independientemente de las instancias. Esto permite que los podamos ejecutar sobre una instancia o directamente sobre la clase:
miComplejo = unComplejo.Suma(comp1,comp2); // vale
miComplejo = Complejo.Suma(comp1,comp2); // TAMBIEN VALE!
Ahora implementaremos codigo para ver cómo podemos usar algunos de estos métodos, en el clase main, escribe esto:

Para ejecutar el programa, presiona F6


Hay varias cosas para notar: por ejemplo, que podemos declarar las variables a la vez que las creamos:
Complejo c1 = new Complejo(5,-2);
c1 y c2 son dos objetos (instancias) de la clase Complejo.
Notar también que no hace falta poner para imprimir:
System.out.println(c1.toString().......);
ya que println automáticamente usa el método toString() de la clase para imprimir. Basta con poner c1, como en el programa, aunque c1.toString() también es válido.
También se ve el uso de los métodos static, accediéndolos directamente por la clase, en:
System.out.println("Suma : "+Complejo.Suma(c1,c2));
Y tampoco aquí usamos toString(), aunque no está mal si se usa Complejo.Suma(c1,c2).toString().
Analicemos un poco ahora cómo implementamos los métodos de la clase Complejo.
public final int intValue() {
return (int)Norma();
}
Ya que no podemos convertir así nomás un complejo en un entero, para implementar estos métodos hemos elegido usar como valor de retorno la norma del complejo. En este caso, y dado que el método Norma() devuelve un float, usamos typecasting, es decir, lo convertimos en entero precediéndolo con (int).
public final String toString() {
if (y<0)
return x+"-i"+(-y);
else
return x+"+i"+y;
}
Aquí representamos el complejo en forma de cadena de caracteres. Hemos usado el if para representar adecuadamente el signo de la parte imaginaria. Noten también la asombrosa ayuda que nos brinda Java, al convertir automáticamente las variables x e y a String para la concatenación (mediante el signo "+")-
public static final Complejo Cociente(Complejo c1, Complejo c2) {
float x = c1.x*c2.x+c1.y*c2.y;
float y = -c1.x*c2.y+c1.y*c2.x;
float n = c2.x*c2.x+c2.y*c2.y;
Complejo r = new Complejo(x,y);
return DivEscalar(r,n);
}
Aquí tengan en cuenta que las variables x e y, definidas como float, no tienen nada que ver con las variables (atributos) de la clase que están definidas al principio de la misma, sino que son variables locales al método.
Podemos usar return DivEscalar(r,n), ya que DivEscalar es un método propio de la clase; no hace falta poner Complejo.DivEscalar.
Qué pasa con r, el new Complejo(x,y) que creamos? Nada; cuando un objeto no se usa más, el "recogedor de basura" de Java lo elimina automáticamente (tarde o temprano) de la memoria. Smile
public final float Norma(Complejo c) {
return (float)Math.sqrt(c.x*c.x+c.y*c.y);
}
Aquí estamos usando otra clase, Math, que nos permite realizar varias operaciones matemáticas.

continue reading

27/10/09

Introduccion a Clips - C Language Integrated Production System

JAN29

¿Qué es CLIPS?


CLIPS (C Language Integrated Production System) es una herramienta para el desarrollo de sistemas expertos (SE) creada por la Software Technology Branch (STB), NASA/Lyndon B. Johnson Space Center. Los orígenes de CLIPS se remontan a 1984.
Se diseñó para facilitar el desarrollo de software que modele el conocimiento humano (expertise):
  • Con propósitos específicos: alta portabilidad, bajo coste, y facilidad de integración.
    CLIPS permite integración completa con otros lenguajes de programación como C o Ada.
    Puede ser llamado desde un lenguaje procedural, realizando su función y devolver el control al programa que le llamó.
    También se puede definir código procedural como funciones externas llamadas desde CLIPS. Cuando el código externo finaliza su ejecución devuelve el control a CLIPS.
CLIPS es un entorno completo para la construcción de SE basados en reglas y/o objetos. La versión estándar de CLIPS proporciona un entorno de desarrollo interactivo orientado a texto, incluyendo una herramienta de depuración, ayuda on-line y un editor integrado, aunque se han desarrollado interfaces visuales para plataformas Macintosh, Windows 3.x y el sistema X Window.

CLIPS distingue mayúsculas y minúsculas (case-sensitive), igual que el lenguaje C.

Representación del conocimiento

CLIPS ofrece paradigmas heurísticos y procedurales para representar el conocimiento.

A) Conocimiento heurístico: reglas
Las reglas se utilizan para representar heurísticos que especifican un conjunto de acciones a
El creador del SE define una colección de reglas que, en conjunto, resuelven un problema.
Se puede pensar que las reglas son como sentencias IF-THEN de lenguajes procedurales como C o Ada. Sin embargo, las reglas actúan más bien como sentencias SIEMPRE QUE-ENTONCES.

B) Conocimiento procedural: funciones y objetos.
Este tipo de conocimiento se expresa mediante funciones definidas por el usuario (deffunctions), funciones genéricas y la programación orientada a objetos (POO). Ésta en CLIPS soporta las cinco características generalmente aceptadas: clases, mensajes, abstracción, encapsulamiento, herencia y polimorfismo.

Es posible desarrollar software utilizando sólo reglas, sólo objetos, o una mezcla de ambos.
Estructura de un programa en CLIPS

El shell (parte de CLIPS que realiza inferencias o razonamiento) provee los elementos básicos de un SE:
1. memoria global de datos (memoria de trabajo, MT): conocimiento factual (fact-list e instancelist).
2. base de conocimiento (knowledge base): contiene las reglas de la base de reglas.
3. motor de inferencia (inference engine): controla la ejecución global de las reglas: decide qué reglas deben ejecutarse y cuándo.

Un programa escrito en CLIPS puede consistir en reglas, hechos y objetos. Un SE basado en reglas escrito en CLIPS es un programa dirigido por los datos (data driven), es decir, hechos y objetos. Las reglas pueden matchear con objetos y hechos, aunque los objetos pueden usarse por sí solos (mediante el envío de mensajes) sin utilizar el motor de inferencia.


continue reading

Introduccion a Batch

JAN29

1. ¿Que es Batch?


Batch no es un lenguaje de programacion en si. Sino un archivo de procesamiento por lotes que permite utilizar comandos de CMD (o simbolo de sistema) del SHELL de Microsoft, tanto como variables y condiciones como IF, IF exist, etc, manipulacion de archivos, ejecutables y del propio registro de Windows..

Se programa con cualquier editor de texto plano (Bloc de notas, Notepad, etc). Nosotros Utilizaremos el Notepad2, ya que este nos permite colorear el codigo y hacer de su escritura e interpretacion algo muy sencillo.Innocent

Con batch no se pueden crear virus complejos, es mas, algunas personas tachan de lammer a quienes programan en este lenguaje (sabra Dios si estas personas utilizan su pc para algo mas que jugar o ver pronografia Yell), pero programadores mas avanzados saben y estan concientes del poder que aun tiene batch para llevar algunos trabajos..., pero lo que si se puede programar en batch son efectivos malwares, como tambien herramientas utiles para estudiar redes locales, entre otras aplicaciones. Cool

2 . El Notepad2

Utilizaremos este editor de texto para la programacion en batch que como se ve en la imagen, nos facilita nuestro trabajo ya que nos muestra el codigo coloreado, para poder trabajar con este editor de texto, una ves que lo ejecutes, clic en SELECT SCHEME, es un cuadradito ubicado a la derecha de una lupa con el signo menos, te saldra una ventana, este te muestra todos los lenguajes soportados por este editor, buscamos y seleccionamos la opcion BATCH FILES, y si queremos que esta sea la configuracion predeterminada, habilitaremos la opcion SET SELECTED SCHEME AS DEFAULT, esto es opcional, y finalmente clic en OK, ya tienes tu Notepad listo para empezar a programar.

 3. Comandos basicos.

ECHO: Imprime un texto en pantalla, que es el texto que viene después (el que le pasamos como parámetro), que en este caso es "Hola Mundo". Echo significa eco, por lo mismo "@echo off" elimina el eco, la repetición de la ruta en la que nos encontramos en cada línea código.

PAUSE: Como bien se lee, pausa la ejecución del código. Además muestra el texto "Presione una tecla para continuar"

TITLE: Pone el titulo que queramos en la consola

EXIT: Cierra la ventana de comandos.

CD o CHDIR: Si has trabajado en PHP, te sera fácil entender este concepto. Sirve para cambiar de Directorio o Mostrar el nombre del actual. Para usarlo, CD o CHDIR seguido de la ubicación del directorio al cual nos moveremos.
cd "C:\"
chdir "C:\"
Los ejemplos anteriores hacen exactamente lo mismo, cambian al Disco C

COPY: Sirve para copiar uno o más archivos a otro destino.
Su sintaxis es la siguiente:
Copy "Dirección del archivo" "Nueva dirección"
Ejemplo:

Copy "C:\archivo_origen.txt" "C:\archivo_copia_de_origen.txt"

DEL: Sirve para eliminar uno o más archivos. Su sintaxis es:
Del "ARCHIVO"
También se puede añadir:
del /f /q "archivo"
Donde no pide confirmación de eliminación (/q) y fuerza al archivo a borrarse ( /f )

MOVE: Sirve para mover un archivo. Su sintaxis es:
Move "Dirección Archivo" "Nueva Dirección"

CLS: Sirve para limpiar el contenido de la pantalla:

Rd: Borrar directorio de raíz. ejemplo: c:/mi_directorio ;borrara esa carpeta, con todo su contenido.

START: Ejecuta un programa, un archivo, incluso una pagina web.
ejemplo: start http://jc-mouse.blogspot.com;
start c:/mi_carpeta/juego.exe

Taskkill: Mata un proceso. ejemplo: taskkill /f /im calc.exe

SET: Sirve para realizar preguntas al usuario, o para declarar variables.

Msg* : Despliega un mensaje en pantalla. ejemplo: msg* hOLa A tOdos

REM: Sirve para colocar comentarios, estos no son comandos y sirven para tener un codigo bien ordenado y documentado

Existen muchos mas, estos son las mas basicos, pero colocarlos todos seria llenar la pagina sin sentido, lo mejor es aprender haciendo, y eso es lo que haremos.

4. Primer Programa.

Abre el Notepad, y escribe todo lo que se muestra en la imagen, no escribas la primela linea:

Guardar archivo: Una ves que terminaste de escribir todo el codigo, dirigete a FILE - SAVE AS...; En Nombre coloca "Primer Programa" , y aqui lo importante, añade ".bat" (Punto bat) , esta es la extension de los archivos Batch. Si en tipo, no se encuentra seleccionado ALL FILES, seleccionado, sino solo lo guardara como unarchivo de texto.


Explicacion:
Nuestro programa muestra en pantalla el clasico HOLA MUNDO, se detiene y espera a que tu presiones cualquier tecla. si ves algo como en la imagen de abajo, felicidades, ya escribiste tu primer programa batch.



5. Segundo Programa
Ahora iremos complicando las cosas un poco mas, escribe en el notepad2 el siguiente codigo, guardalo con "Segundo Programa.bat "


Explicacion: En este segundo programa, primero hacemos uso de "Mode con lines" y "mode con Cols" , estas instrucciones lo que hacen, es establecer el ancho y alto de la consola, el ancho y alto se toma de de acuerdo al tamaño de la fuente de MS-DOS, por defecto esta en 8 pixeles por 12 pixeles cada caracter.

Con la instruccion "Color 0a" , le damos color al fondo de la consola, como tambien el color de la fuente. entre los colores disponibles en DOS, tenemos:
  • 0 = Negro
    1 = Azul
    2 = Verde
    3 = Aguamarina
    4 = Rojo
    5 = Púrpura
    6 = Amarillo
    7 = Blanco
    8 = Gris
    9 = Azul claro
    A = Verde claro
    B = Aguamarina claro
    C = Rojo claro
    D = Púrpura claro
    E = Amarillo claro
    F = Blanco brillante
Ahora trataremos con las VARIABLES, las variables no son otra cosa que espacio de memoria a los cuales les asignaremos datos como cadenas de texto, numeros, fechas, etc , esos los utilizaremos en otros lugares del programa. En nuestro ejemplo primero establecemos una variable, con la instruccion SET nPC=cadena_de_texto, luego establecemos otra variable introducida por teclado con la instruccion SET /p nUser=Cadena_de_texto.

La forma de utilizar una variable en batch, una ves que esta es declara es de la forma %VARIABLE% , el simbolo % , le dice al interprete de batch que esta es una variable, caso contrario te saldra un mensaje de error y tu programa no se ejecutara correctamente.

Si ya programaste en otro lenguaje, la instruccion IF debe ser familiar para ti, sino te explico, la sintaxis de la instruccion IF es:

IF (condicion) accion1 ELSE accion2

que en castellano, tendria este significado:

SI (condicion se cumple) realizar accion1 CASO CONTRARIO realizar accion2

Importante: La cláusula ELSE debe aparecer en la misma línea que la del comando que sigue a IF.
Ahora ejecuta el programa, introduce tu nombre y ve que pasa.



6. Tercer Programa
Si llegaste hasta aqui, y entendiste todo lo de arriba, vamos por buen camino Innocent, ahora para terminar esta primera parte, realizaremos nuestro tercer programa. Crea un nuevo docuemnto y escribe todo lo que ves abajo. Guardalo como "Tercer Programa.bat"


Explicacion:
En este tercer programa, hacemos uso de la Instruccion CLS, esta instruccion limpia la pantalla. lo entenderas mejor una ves que ejecutes el ejemplo.
Tambien hacemos uso de la instruccion GOTO, esta instruccion existe tambien an algunos otros lenguajes de prrogramacion mas avanzados, y su objetivo es el de SALTAR de un lugar a otro en nuestro codigo. esta instruccion es criticada por su uso excesivo en lenguajes de alto nivel Embarassed, pero como este no es el caso, podemos usar y abusar de esta instruccion para hacer de nuestro programa algo mas sencillo. ¿Como funciona? , En batch GOTO se utiliza mas comunmente en la creacion de menus, tambien tiene otros usos que veremos mas adelante.

La forma de declarar una instruccion GOTO en batch, es:
:CodigoGOTO ------------- (Dos puntos Codigo GOTO)
Esto quiere decir que todo lo que escribamos debajo de esta declaracion, corresponde a nuestra instruccion GOTO, termina hasta que ya no encuentra codigo, o se encuentra con otra instruccion GOTO.
La forma de invocar a esta instruccion es:
GOTO "tu Instruccion GOTO"
Una ves hecho esto, y cuando el interprete se encuentra con esta instruccion saltara de esta parte de codigo, hasta encontrar el comando Goto.
Instruccion FOR, otra instruccion muy comun en los lenguajes de programacion de alto nivel, su mision es el de realizar ciclos

Su sintaxis es:
FOR /L %%var IN (inicio,incremento,fin) DO (acciones)

Que quieres decir: Declara una variable contador %%var, esta ira incrementandose en incremento, desde inicio , hasta fin, 
y en cada vuelta que de, se ejecutara una o mas ACCIONES. Iremos viendo sus formas de uso mas adelante.

Ahora que ejecutamos el programa, y si escribiste todo bien, debes tener algo como  esto.

Eso es todo para la primera parte, si comprendiste todo felicidades, ya 
eres un programador, y que no te molesten con que eres un lammer o algo
parecido, nadie nacio sabiendo, empieza desde abajo, practica y sigue
practicando, que programar se volvera algo tan natural como respirar. Surprised

continue reading

Post recomendado