domingo, 26 de agosto de 2012

Fibonacci recursivo - función


Algoritmo recursivo de fibonacci, donde la función se llama a sí misma.



long fibonacci( long n )
{
   /* caso base */
   if ( n == 0 || n == 1 ) {
      return n;   } /* fin de if */
   else { /* paso recursivo */ 
      return fibonacci( n - 1 ) + fibonacci( n - 2 );
   } /* fin de else */

domingo, 17 de junio de 2012

Ejemplo Canvas en HTML5

Un ejemplo basico de un canvas en html5, esto se escribe en el editor que se este usando, o si no en un block de notas y se guarda como html


<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Canvas</title>
<script type="application/javascript" src="game.js"></script>
</head>
<body>
<h1>Ejemplo Canvas</h1>
<p><canvas id="canvas" width="350" height="200" style="border:1px solid #000">
Canvas not supported by your browser.
</canvas></p>
</body>
</html>


En esta linea se está llamando el Javascript

<script type="application/javascript" src="game.js"></script>


Este sería el javascript


window.addEventListener('load',init,false);
var canvas=null,ctx=null;
function init(){
 canvas=document.getElementById('canvas');
 canvas.style.background='#999';
 ctx=canvas.getContext('2d');
 paint(ctx);
}
function paint(ctx){
 ctx.fillStyle='#0f0';
 ctx.fillRect(60,60,100,70);
}

sábado, 9 de junio de 2012

Autoincremento en ORACLE


Campo de autoincremento en ORACLE

Ejemplo, la tabla 'TBLDETALLE_PEDIDOS' y tendrá dos campos, del cual id_cliente será el autoincrement.

create table  TBLDETALLE_PEDIDOS (
id_cliente number PRIMARY KEY,
pedido varchar2(20));


Luego será necesario crear una secuencia que se encargue de hacer el incremento,  'secuencia_id_detallepedido', comenzará desde el valor 1 y se incrementará de uno.

create sequence secuencia_id_detallepedido
   start with 1 
   increment by 1 
   nomaxvalue;

Se crea un trigger, el cual hará elautoincremento cada vez que se realice un insert a esta tabla. 

create trigger trig_id_pedido
before insert on TBLDETALLE_PEDIDOS
for each row
begin
select  secuencia_id_detallepedido.nextval into :new.id_cliente from dual;
end;

Luego los insert a la tabla '
TBLDETALLE_PEDIDOS', serían de la forma:

insert into 
TBLDETALLE_PEDIDOS values ('pedido');

O de la forma:

insert into  TBLDETALLE_PEDIDOS values (null,'pedido');

domingo, 13 de mayo de 2012

Suma, multiplicación y traspuesta de una matriz en JAVA


Calculos con matrices en Java.


public class Matriz {
 
    //almacena los datos de la matriz usada en los calculos
    int [][] maDatos;

    public Matriz(int f, int c){

        //if anidados que verifican si la matriz es cuadrada para evitar matrices
        //rectangulares.
     
        //si las filas son igual a la columna
        if (f  ==  c){
            maDatos = new int [f][c];
        }
        //si las filas son menores que las columnas usar las columnas
        else if(f < c){
            maDatos = new int [c][c];
        }
        //si las filas son mayores que las columnas usar las filas
        else {
            maDatos = new int [f][f];
        }
    }

    //permite insertar un arreglo al instanciar el objeto
    public Matriz (int [][] d){
        maDatos  = d;
    }

    //metodo que suma dos matrices
    public Matriz sumar(Matriz m){
        int laRes[][] = new int [maDatos.length][maDatos[0].length];
        //instrucciones for que permiten sumar una matriz elemento
        //por elemento
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                laRes [i][j] = maDatos[i][j] + m.maDatos[i][j];
            }
        }

        return new Matriz (laRes);
    }

    //metodo que genera la traspuesta de una matriz
    public Matriz traspuesta(){
        int laRes[][] = new int [maDatos[0].length][maDatos.length];
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                laRes [j][i] = maDatos[i][j];
            }
        }

        return new Matriz (laRes);
    }

    //metodo que multiplica dos matrices
    public Matriz multiplicar(Matriz m){
        int laRes[][] = new int [maDatos.length][maDatos[0].length];

        //se necesitan tres instrucciones for para multiplicar cada
        //fila de la una matriz por las columnas de la otra
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                for (int k = 0; k < maDatos[0].length; k++){
                    laRes [i][j] += maDatos[i][k] * m.maDatos[k][j];
                }
            }
        }

        return new Matriz (laRes);
    }

   //permite visualizar la matriz
    public void mostrar(){
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                System.out.print("|" + maDatos[i][j]);
            }
            System.out.print("|\n");
        }
        System.out.print("\n");
    }
}

jueves, 22 de marzo de 2012

Consultas SQL

Aqui algunos ejemplos de consultas basicas en SQL:

1. Obtener  nombre completo y teléfono para el cliente identificado como 87459.

SELECT nombre_completo, telefono
FROM Clientes
WHERE identificacion=87459;

2. Desplegar el número, tipo y saldo actual de los productos para el cliente identificado como 87459.

SELECT numero, saldo_actual, tipo_producto
FROM Productos
WHERE id_cliente='87459';

3. Mostrar el número, tipo, saldo actual, antigüedad (en años) de los productos de ahorro (cuentas de ahorro y corriente) activos para el cliente identificado como 87459.

SELECT numero, saldo_actual, tipo_producto,((ROUND (SYSDATE-fecha_apertura))/365)as antiguedad;
FROM Productos
WHERE id_cliente='87459'
AND tipo_producto='11'
AND tipo_producto='12'
AND estado='3';

4. Visualizar el número de transacción, fecha, valor y estado de las transacciones realizadas para el producto 97662.

SELECT numero_transaccion, Fecha, Valor, Estado
FROM MovimientosProductos
WHERE numero_producto='97662';

5. Obtener el número de transacción, fecha, valor de las consignaciones del producto número 97662 desde el último corte (el corte se produjo el 17 de septiembre del 2009).

SELECT numero_transaccion, Fecha, Valor
FROM MovimientosProductos
WHERE numero_producto='97662'
AND fecha >= 17/09/2009
AND fecha <= SYSDATE;

6. Visualizar el número de transacción, fecha y valor de las transacciones exitosas realizadas para el producto 97662 desde el último corte (el corte se produjo el 17 de septiembre del 2009).

SELECT numero_transaccion, Fecha, Valor
FROM MovimientosProductos
WHERE numero_producto='97662'
AND fecha >= 17/09/2009
AND fecha <= SYSDATE
AND tipo_movimiento='1'
AND tipo_movimiento='2';

7. Mostrar el número, tipo y saldo disponible (saldo actual – saldo mínimo) de los productos de ahorro (cuentas de ahorro y corriente) activos para el cliente identificado como 87459.

SELECT numero, tipo_producto,(saldo_actual-saldo_minimo)as saldo_disponible
FROM Productos
WHERE id_cliente='87459'
AND tipo_producto='11'
AND tipo_producto='12'
GROUP BY tipo_producto, numero, (saldo_actual-saldo_minimo)as saldp_disponible;

8. Visualizar el valor total del endeudamiento para el cliente identificado como 87459.

SELECT SUM(saldo_actual)
FROM Productos
WHERE tipo_producto='13'
AND tipo_producto='14'
AND tipo_producto='16';

9. Mostrar el valor total del ahorro para el cliente identificado como 87459.

SELECT SUM(saldo_actual)
FROM Productos
WHERE tipo_producto='11'
AND tipo_producto='12';

10. Bloquear los productos de ahorro con saldo actual inferior a $100 y antigüedad menor a dos años.

UPDATE Productos
SET Estado=1
WHERE tipo_producto='11'
AND saldo_actual <='100'
AND fecha_apertura >=17/09/2007 ;