Saturday, June 18, 2005

Lenguaje DUDU+

DUDU+ es un lenguaje de programación basado en la sintaxis de JAVA el cual es desarrollado por mis compañeros y yo. Este lenguaje no trata de crear la POO que tiene java en si ni tampoco crear un lenguaje de programación completo, sino que forma parte de un aprendizaje en el cual podamos crear(desarrollar) un lenguaje en el que se pueda:

a) Declarar variables
b) Verificar la síntaxis
c) Realizar operaciones matemáticas

Las especificaciones para crear un programa en DUDU+:

  • lenguaje estructurado (no existe la intención de hacerlo POO)
  • Los identificadores deben ser palabra que empiecen con letras, pueden contener letras y números. (NO se empieza con caracteres especiales excepto $ y _ )
  • La clase es la estructura principal, compuesta por variables miembros(no es POO).
  • solo exite Repeat... Until, no existe estructuras de flujo (while, for, if...then)
  • Las operaciones matematicas permitidas son:
  1. +, -, *, /
  2. Ademas existe los operadores ++, --. (sólo postfijos)
  • Las variables pueden ser de tipo:
  1. byte
  2. integer
  3. short
  4. long
  5. float
  6. double
  • No exite Package ni Import por ende.
  • Se Agrego manejo de arreglo
  • Existe una nueva estructura de Stack la cual se instancia con la palabra clave
    make stack. (ver test.java)

En un siquiente post publicaremos el grammar del lenguaje DUDU+

Suma la diogonal principal de una matriz

/*
* Created on 06/18/2005
*
* Suma la diogonal principal de una matriz
*/

package estructura;

/**
* @author vns
*
*/
public class sumaDiagonal {

/**
*
*/
public sumaDiagonal() {
super();
}

public static void main(String[] args) {
int matriz[][]={ {3,4,5},{6,2,6},{4,7,9} };
System.out.println( calcularDiagonal(matriz) );
}

public static int calcularDiagonal(int[][] matriz)
{
int suma = 0;
for (int i=0; i < matriz.length; i++)
{
suma+=matriz[i][i];
}

return suma;
}
}

Transformación de un número decimal en los diferentes sistemas númericos

/*
* Created on 06/18/2005
*
* Transformación de un número decimal en los diferentes sistemas númericos
*/
package estructura;

import java.util.Scanner;
import java.util.Stack;

/**
* @author vns
*
*/
public class SistemaNúmerico {

/**
*
*/
public SistemaNúmerico() {
super();
}

private static int[] convertirArregloBytes(String s)
{
int[] resultado = new int[s.length( )];
for (int i = 0; i < s.length( ); i++)
{
resultado[i] = (int)s.charAt(i);
}
return resultado;
}

private static String convertirABase(int numero, int base)
{
Stack pila = new Stack();
StringBuffer resultado = new StringBuffer( );
int residuo = 0;

if (base == 8) {
resultado.append( residuo );
}

while ( numero >= 1 )
{
residuo = numero % base;
numero = numero / base;
pila.add(new Integer(residuo));
}

while ( !pila.empty() )
resultado.append( pila.pop().toString() );

return resultado.toString();
}

private static String convertir(int[]decimal, int base)
{
StringBuffer a = new StringBuffer();
for (int i = 0; i < decimal.length; i++)
{
a.append(convertirABase(decimal[i],base) + " ");
}
return a.toString();
}

public static void main(String args[])
{
System.out.print("Introduzca un valor: ");
String line = (new Scanner(System.in).nextLine( ));
int[] array = convertirArregloBytes(line);

System.out.println("Valor original: " + line);

System.out.println("Binario..." );
System.out.println(convertir(array,2));

System.out.println("Octal..." );
System.out.println(convertir(array,8));

System.out.println("Hexadecimal: ");
System.out.println(convertir(array,16));

System.out.println("ASCII: ");
for(int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
}
}

Mutiplica dos matrices cuadradas de n orden

/*
* Created on 06/18/2005
*
* Mutiplica dos matrices cuadradas de n orden
*/
package estructura;

/**
* @author vns
*
*/
public class MultMatriz {

/**
*
*/
public MultMatriz() {
super();
}

public static void main(String[] args) {

}

//las matrices tienen que se cuadradas ej: 2x2, 3x3, etc
public static int[][] multiMatriz(int[][] a, int[][] b){
int[][]temp = new int[a.length][a.length];

for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp.length; j++) {
int suma = 0;
for (int k = 0; k < temp.length; k++)
suma =+ a[i][k] * b[k][j];

temp[i][j] = suma;
}
}

return temp;
}
}

Ordena de manera ascendente una matriz

/*
* Created on 06/18/2005
*
* Ordena de manera ascendente una matriz
*/
package estructura;

/**
* @author vns
*
*
*/
public class OrdenAsc {

/**
*
*/
public OrdenAsc() {
super();
}

public static void main(String[] args) {

}

public int[] ascendente(int[] temp){
int a = 0;
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp.length; j++) {
if (temp[j] > temp[j+1]) {
a = temp[j];
temp[j] = temp[j+1];
temp[j+1] = a;
}
}
}

return temp;
}

}

Busca la posición del mayor valor

/*
* Created on 06/18/2005
*
* Busca la posicion del mayor valor
*/
package estructura;

/**
* @author vns
*
*/
public class MayorPos {

/**
*
*/
public MayorPos() {
super();
}

public static void main(String[] args) {

}

public static int mayor( int[] num ){
int mayor = num[0];
int pos = 0;

for (int i = 0; i <> mayor) {
mayor = num[i];
pos = i;
}
}

return pos;
}

}

Busca la posicion del menor numero

/*
* Created on 06/18/2005
*
* Busca la posicion del menor numero
*/
package estructura;

/**
* @author vns
*
*/
public class MenorPos {

/**
*
*/
public MenorPos() {
super();
}

public static void main(String[] args) {
}

public static int menor( int[] num ){
int menor = num[0];
int pos = 0;

for (int i = 0; i < num.length; i++) {
if (num[i] < menor) {
menor = num[i];
pos = i;
}
}

return pos;
}
}

Busca el inverso

/*
* Created on 06/18/2005
*
* Busca el inverso
*/
package estructura;

/**
* @author vns
*
*/
public class Inverso
{
public static void main(String[] args) {
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8 };

int[] temp = inverso( nums );

for (int i = 0; i < retorno =" new" i =" nums.length;" j =" 0;">

Friday, June 17, 2005

El mayor de N números

/*
* Created on 06/17/2005
*
*/
package estructura;

/**
* @author vns
*
*/
public class MayorN {

/**
*
*/
public MayorN() {
super();
}

public static void main(String[] args) {

}

public static int mayor( int[] num ){
int mayor = num[0];

for (int i = 0; i < num.length; i++) {
if (num[i] > mayor) {
mayor = num[i];
}
}

return mayor;
}
}

Monday, June 13, 2005

5 Estudiantes 4 Materias 3 Notas y ordenacion de los promedios

/*
* Created on 06/11/2005
*
*/
package estructura;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
* @author vns
*
*/
public class Array543 {

int[][][] notas = new int[5][4][4];

BufferedReader linea = new BufferedReader( new InputStreamReader( System.in ) );

/**
*
*/
public Array543() {
super();
}

public static void main(String[] args) {
Array543 prg = new Array543();

prg.leerNotas();
prg.crearProNotas();
prg.escribirNotas();
prg.ordenar();
}

public void leerNotas(){
for (int i = 0; i < notas.length; i++) {
for (int j = 0; j < notas[i].length; j++) {
for(int k = 0; k < notas[i][j].length - 1 ; k++ )
try {
notas[i][j][3] = Integer.parseInt ( linea.readLine() );
} catch (Exception e) {
System.out.println(" Error en la lectura...");
}
}
}
}

private void escribirNotas(){
for (int i = 0; i < notas.length; i++) {
for (int j = 0; j < notas[i].length; j++) {
System.out.println("Estudiante " + i + "nota 1 " + notas[i][j][0]
+ "nota 2 " + notas[i][j][1] + "nota 3 " + notas[i][j][2] +
"Promedio " + notas[i][j][3]);
}
}
}

private void crearProNotas(){
for (int i = 0; i < notas.length; i++) {
for (int j = 0; j < notas[i].length; j++) {
notas[i][j][3] = notas[i][j][0] + notas[i][j][1] + notas[i][j][2];
}
}
}

//copiado del codigo ya hecho en MayorN.java
public static int mayor( int[] num ){
int mayor = num[0];

for (int i = 0; i < num.length; i++) {
if (num[i] > mayor) {
mayor = num[i];
}
}

return mayor;
}

public void ordenar(){
int[] temp = new int[16];
int k = 0;

//obtener promedios de las materias
for (int i = 0; i < notas.length; i++) {
for (int j = 0; j < notas[i].length; j++) {
temp[k++] = notas[i][j][3];
}
}

//ordenar promedios
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp.length; j++) {
if( temp[j] < temp[j+1] ){
k = temp[j];
temp[j] = temp[j+1];
temp[j+1] = k;
}
}
}

//Imprimir ordenados los promedios
for (int i = 0; i < temp.length; i++) {
System.out.println( temp[i] );
}
}
}

Sunday, June 12, 2005

Historia de Google

Los comienzos

Todo empezó en una primavera de 1995 cuando dos jóvenes universitarios, Sergey Brin, de 23 años, con experiencia en diseño web y titulado en Ingeniería Electrónica, y Larry Page, de 24, expero en tratamiento de datos y licenciado en Informática y Ciencias Matemáticas, que acabarian siendo cofundadores y actuales presidente y CEO de Google, se conocieron en un evento organizado por la Universidad de Standford para los aspirantes a su prestigioso Doctorado en Informática. Allí discutieron arduamente sobre cada tema hablando, sus sólidas opiniones y divergentes puntos de vista encontraron un objetivo común, conseguir información relevante de una gran cantidad de datos.

Es en otoño de ese mismo año, cuando estos dos estudiantes empiezan a desarrollar un algoritmo para la búsqueda de datos, que utilizarian en para el proyecto de "Biblioteca Digital" de la Universidad de Standford (Digital Library Project). En ese momento comenzó lo que más tarde sería llamado por Larry Page como PageRank, en 1997. También publicó, ese mismo año, un documento explicativo del PageRank que puedes encontrar aquí.

En enero de 1996, Larry y Sergey empezaron a desarrollar un motor de búsqueda llamado BackRub, nombrado así por su capacidad única de analizar los "enlaces entrantes" (enlaces que provienen de otras páginas) de una página web. Este buscador corría sobre varias máquinas Sun e Intel y su base de datos principal era guardada por un Sun Ultra II con 28Gb de disco y estaba implementado en Java y Python. Como curiosidad podemos ver un post de Larry preguntando una duda de Java (aquí). Larry, quien era conocido por haber construido una impresora a base de piezas de Lego, se puso manos a la obra para crear un nuevo entorno de servidores de gama baja (PC's), en vez de máquinas muy caras. Angustiados por su constante escasez de dinero, espereban siempre con ilusión la llegada de nuevas máquinas al departamento que pudieran utilizar para su proyecto. Muestra de esta escacez de medios son máquinas como esta.

Ya en 1997, BackRub pasa a convertirse en Google. Aún podemos ver como era Google por aquel entonces gracias a archive.org. El nombre "Google" es un juego de palabras que proviene de la palabra "googol", término acuñado por Milton Sirotta para referirse a a un número representado por un 1 seguido de 100 ceros. Un googol es un número muy largo. No existe un googol de nada en el universo, ni de estrellas, ni de partículas de polvo, ni de átomos. La utilización de este término por Google refleja la misión de organizar la inmensidad infinita que aparenta la world wide web.

Larry y Sergey continuaron perfeccionando su tecnología durante la primera mitad de 1998. Siguiente un camino que sería la clave del principio de Google, compraron un terabyte de discos a precios muy bajos y construyeron su propio data center en la habitación de Larry. Empezaron a buscar patrocinadores para su nueva empresa pero a pesar de la fiebre del puntocom de la época no tuvieron mucha suerte. Aquí podemos ver como era el diseño de Google por aquellos tiempos y aquí, el hardware que utilizaban.

Incapaces de interesar a ningún portal de los vigentes en aquel momento, Larry y Sergey deciden ir por su cuenta. Lo único que necesitaban era dejar de usar la habitación de Larry como datacenter, saldar sus deudas causadas por la compra de tantos discos y buscar a un inversor. Al final, además de los cien mil dólares ofrecidos por Andy Bechtolsheim, uno de los fundadores de Sun, consiguieron entre familia, amigos y otros parientes recaudar un capital inicial de almenos $1 millón de dólares.

A finales de Septiembre de 1998 Google Inc. es inauguarada en el garaje que les alquilaba un amigo. El local tenía grandes ventajas como una lavadora y una secadora entre otras cosas. También servía de parkin para el primer empleado de la compañía Craig Silverstein, ahora director de tecnología de Google.

Cuando Google.com aún estaba en fase beta, respondía a unas 10000 búsquedas al día. La premsa empezó a hacer eco de ello y varios artículos elogiando a Google aparecieron en USA Today y Le Monde. En diciembre de ese mismo año, PC Magazine nombró a Google en su top 100 de mejores buscadores del año 1998. Google empezaba a darse a conocer al mundo.

A partir de aquí Google empezó a crecer desmesuradamente. Al año siguiente, 1999, volvieron a mudarse a oficinas más grandes, con más empleados y respondiendo a alrededor de 500000 visitas. Y así hasta ahora, ganando premios, aportando calidad e innovación y batiendo records, Google es hoy el mejor buscador de la red y el más utilizado.

la raiz cuadrada de un número

/*
* Created on 06/12/2005
*
* Halla la raiz cuadrada de un número
*/
package estructura;

/**
* @author vns
*
*/
public class RaizCuadrada {

/**
*
*/
public RaizCuadrada() {
super();
}

public static void main(String[] args) {

if (args.length == 0 || args.length > 1){
System.out.println("Escriba un argumento para el número");
System.exit(0);
}

double raiz = 0.0;
double numero = Integer.parseInt( args[0] );
double m = 0.0;

for(double cuadrado = 0.0; cuadrado <= numero ;cuadrado++ ){
m = cuadrado*cuadrado;

if (m == numero) {
raiz = cuadrado;
break;
}

if (m > numero) {
raiz = cuadrado - 1;
break;
}
}

if (raiz * raiz == numero) {
System.out.println("La raiz es: " + raiz);
return;
}else{

do {
raiz = raiz + 0.000001;
} while (raiz * raiz < numero);

}

System.out.println("La raiz es: " + raiz);
}
}