Suscribirse al Feed
18Nov

Busqueda Binaria - C Sharp

Hace unos dí­as y poní­a un ejemplo acerca de búsquedas lineales en arreglos, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos.

¿Cómo funciona este método? Para poder aplicar éste método de búsqueda es necesario que el arreglo esté ordenado; posteriormente, se aplica el siguiente algoritmo: se ubica el elemento de la mitad del arreglo, entonces, si el número que se está buscando dentro del arreglo es menor al número de la mitad, se busca el número de la mitad entre el inicio del y la mitad del mismo, y así­ hasta encontrar el elemento deseado.

Por ejemplo, suponiendo que tenemos un arreglo con los siguientes valores:

2, 4, 5 , 6, 8, 9, 10, 12, 24, 34, 46, 56, 60, 67, 78, 89, 90

...y queremos buscar el valor 10; tenemos que, el elemento de la mitad contiene el valor 24. Puesto que 24 > 10, buscamos el valor intermedio entre el principio del arreglo y la mitad del mismo, esto es 8. Puesto que 8 < 10, buscamos el valor intermedio entre 8 y la mitad del arreglo (24), esto es 10. Así­, con tan solo 3 bucles, hemos conseguido el valor buscado.

Vamos con el código del programa, que nos sacará de toda duda:

Leer el resto de la entrada...

11Oct

Cambiar canales de audio de estéreo a mono [ffmpeg]

ffmpeg además te permite cambiar el número de canales de salida de un archivo de audio. Supongamos entonces que tenemos una canción en MP3 en estéreo, y deseamos pasarla a mono, basta con ejecutar este comando:

ffmpeg -i estereo.mp3 -ac 1 mono.mp3

Explicación y aclaración...

  • -i estereo.mp3, indica el archivo de entrada
  • -ac 1, indica que el número de canales de audio del archivo resultantes será uno, o sea mono
  • NO es posible pasar de mono a estereo: cuando decimos que el sonido es mono, estamos diciendo que se SUMARON el canal derecho y el canal izquierdo: M = L + R, donde M es mono, L es el canal izquierdo y R el canal derecho. Y bien, no soy un experto en matemáticas, pero si quisieramos pasar de mono a estéreo deberíamos conocer almenos dos datos por separado, cosa que no sabemos puesto que solo disponemos de un canal (una variable).
    Lo explico mas que nada porque hay gente que ha tratado de contradecirme; si estoy equivocado, que alguien me lo haga saber.
24Jul

Números aleatorios en C#

La generación de números aleatoreos es una de las prácticas más importantes en cualquier lenguaje de programación, sobre todo cuando deseamos desarrollar juegos, por ejemplo. Para usar números aleatorios en C# podemos utilizar la clase Random del namespace System, de la siguiente manera:


Random objeto = new Random();
int numero = objeto.Next();

El método Next de la clase Random genera y devuelve un número aleatorio entre 0 y la constante Int32.MaxValue (2,147,483,647). El número es generado después de (como decía mi profesora de matemáticas) complejos procesos matemáticos, y como en casi todos los lenguajes necesitan de una semilla (seed) para ser generados, que por defecto es la hora del sistema.

Aún así, muchas veces necesitamos que el número sea generado en un rango específico de valores. Por ejemplo, para una aplicación que simule el lanzamiento de un dado de seis caras necesitamos generar números entre 1 y 6. Para lograr esto, el método Next puede recibir además un entero que indica el rango máximo del número aleatorio. Por ejemplo, el código:


Random objeto = new Random();
int numero = objeto.Next(6);

generaría un número aleatorio entre 0 y 7 (pero no 6), es decir, seis posibles números. Pero, si desearamos algún rango más exacto, podríamos hacer algo como:

Random objeto = new Random();
int numero = objeto.Next(1, 7);

lo que generaría números entre 1 y 7 (pero no 7), de nuevo seis números posibles.

Ejemplo completo...

En el siguiente ejemplo se utilizará la clase Random para generar una serie de números aleatorios cada vez que se presiona un botón:

pantallazo numero aleatorio

El código lo pongo para su descarga abajo, ya que lo hice con Gtk# usando MonoDevelop, y sería engorroso poner todo el código. Así que solo pondré la parte del código que nos interesa:

    private Random obj = new Random();
    //Método ejecutado al presionar el botón
    protected virtual void generar_Click (object sender, System.EventArgs e)
    {
        etiqueta.Text = "";
        for(int i = 0; i < 4 ; i++)
        {
            for(int j = 0; j < 4 ; j++)
                etiqueta.Text += obj.Next(1, 10) +"\t\t";
            etiqueta.Text += "\n\n";
        }
    }

Enlaces y descargas

22Jun

Un Linuxero probando Windows

Tomado de: MonoNeurona

Generalmente tenemos que chutarnos revisiones de los quejiques usuarios de Windows que intentan instalar Linux, muchas de las ventajas que provienen de Windows se deben más al hecho de que ha estado más tiempo en el mercado que una excelencia intrínseca del sistema operativo. ¿Pero qué pasaría si Linux fuese el SO dominante y un linuxero intentáse usar Windows? Esta sería una evaluación:

Por estos días tranquilos de fin de año he decidido darle un vistazo a ese nuevo sistema operativo de nombre poco original sobre el cual la gente está hablando, "Windows", de la empresa Microsoft de Oregon. Alguien me pasó un CD y he intentado instalarlo en el equipo de mi oficina, una Pentium IV HT con 512 en RAM y disco duro SATA de 160 GB.

Lo primero que me provocó confusión es que no hay un Windows sino muchos, hay uno que se llama "XP", uno "2003" y otro "Vista" al parecer esté último es el más moderno y el que intenté instalar. Existe un Windows "ME" que parece es una distribución diferente a la de Microsoft y que al parecer no funcionó bien porque ya nadie lo usa.

Lo primero que debo decir es que este sistema operativo "Vista", es que es enorme. Mi equipo usa SUSE 10 maravillosamente rápido pero "Vista" tardó más de una hora en instalarse. Luego de la instalación básica, que fue bastante sencilla, pude ver el escritorio de Vista, el cual es muy limitado pues sólo tiene un escritoio de modo que uno no puede dividir las aplicaciones y todas se amontonan en el único escritorio, algo que no se antoja muy práctico. No sé quien tuvo la absurda idea de colocar por default el menú de inicio y la barra de tareas en la zona inferior de la pantalla , lo cual es absurdo pues el menú de todos los programas y los botones de las ventanas están en la parte superior y uno tiene que estar bajando cientos de veces el cursor del mouse por todo lo alto de la pantalla, algo sin duda molesto. Afortunadamente Vista permite mover el panel a la parte superior, donde debe estar. Leer el resto de la entrada...

18Jun

Señales Geeks

imagen

There are just some of the gang sings implemented by leet h4x0rz

Via | MonoNeurona

14May

WinForms 2.0 para Mono

Me entero en Barrapunto que el desarrollo de WinForms 2.0 para Mono ya se ha completado y que los 12,776 métodos que constituyen su API pública son exactamente los mismos que los de .NET. El toolkit está compuesto por 115.000 líneas de código fuente y ha costado 4 años de desarrollo (desde el 8 de julio de 2004). Actualmente están soportados los backends para X11, OSX y Win32. WinForms 2.0 era la última pieza del puzzle que había que completar antes de la publicación de Mono 2.0.

Sin duda una excelente noticia para el mundo del software libre, y para la gente que está pensando en migrar las aplicaciones que usen WindowsForms a entornos libres.

Relacionadas:

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS