Mostrando las entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando las entradas con la etiqueta programacion. Mostrar todas las entradas

lunes, 14 de julio de 2008

Nerdcore

Nerdcore hip hop es un subgénero del hip hop interpretado por nerds o geeks, por lo regular las letras de las canciones tratan sobre temas de interés para personas como las que las interpretan (computación, tecnología, ciencia ficción), el termino nerdcore surgió en el 2000 por MC Frontalot, aunque el genero tiene antecedentes de al menos 1998. En 2005 surgió otro subgénero llamado geeksta rap con letras mucho mas enfocadas a computación o habilidades técnicas.

Como ejemplo les dejo estos dos vídeos ambos en ingles el primero de Monzy "Kill Dash Nine" (con todo y subtítulos) y el segundo es de MC Frontalot "Bizarro Genius Baby
" (sin subtítulos pero la animación lo cuenta casi todo).




Como ven todo el mundo podría escuchar y disfrutar de esta música pero pocos la podrán entender en especial letras como en el primer vídeo.

domingo, 11 de marzo de 2007

Suma de dos numeros binarios

Para empesar el programa es necesario saber ciertas cosas primero:

0+0=0
0+1=1
1+1=0 y se lleva 1 (acarreo)


Lo que se pretende hacer es un programa que sume dos números binarios (de 4 bits) dados por el usuario, por lo que primero debemos solicitar los números y guardarlos en un arreglo, puedes fijar el número de bits de cada número o tambien solicitar el número de bits de los números.

Fijaremos a "n=3" por que los números binarios deben ser de 4 bits [0,3]
Usaremos a[n] y b[n] como los números binarios, res[n] como resultado y usaremos otra variable para llevar el acarreo "c=0"

El "%s" nos ayuda a guardar cada digito en una parte del arreglo

scanf("%s", a[]);
scanf("%s", b[]);

Porlo que si a=1011, a[0]=1, a[1]=0, a[2]=1, a[3]=1 y b=0111, b[0]=0, b[1]=1, b[2]=1, b[3]=1

Ahora hay que empesar a sumar donde necesitaremos 4 condiciones para llegar al resultado:

for(i=n;i>=0;i--)
{
/*empieza desde "n" para sumar desde la derecha y el decremento para ir hacia la izquierda*/
if(a[i]+b[i]+c=0)
{
res[i]=0;
c=0;
/*Es importante que "c" empiece siendo cero por que al sumarlo por primera ves lo mas
probable es que tenga basura y la suma salga mal*/
}
if(a[i]+b[i]+c=1)
{
res[i]=1;
c=0;
/*si la suma de a, b y c es 1 es el valor del resy pues 1 en binario es 1 por lo que el acarreo es
cero*/
}
if(a[i]+b[i]+c=2)
{
res[i]=0;
c=1;
/*2 en binario = 10, por eso res=0 y llevamos 1 como acarreo*/
}
if(a[i]+b[i]+c=3)
{
res[i]=1;
c=1;
/*finalmente 3 en binario = 11. Solo tenemos estas 4 condiciones por que solo estos 4
resultados podemos obtener sumando tres números (a,b,c)*/
}
}


Ya por ultimo lo que tenemos que hacer es imprimir primero el acarreo ("c") y después res[de 0 a 3],
si sumas los dos números de ejemplo notaras que el resultado es "10010" estos son 5 bits y res tiene 4, por eso se imprime primero el acarreo "c".

Eso es todo espero les sirva si tienen dudas, comentarios o sugerencias escriban.

martes, 13 de febrero de 2007

Programación

INTRODUCCIÓN

Esta es una nueva seccion donde escribiré mis aventuras en la clase de progra 2 (métodos númericos) que algunos de mis amigos poco les interesara (los que saben programar) y si dejan un comentario sera para regañarme jajajaja por eso esta sección esta dedicada a todas las personas que como yo comienzan a aprender "C".

Raíces de una ecuación cuadrática.

La forma estándar de una ecuación cuadrática o de segundo grado en "x" es:

ax^2+bx+c=0

y se nos pide obtener las raíces mediante la formula general:


Naturaleza de las raíces.

Esta depende del valor del discriminante (b^2-4ac)

Discriminante Naturaleza de las raices

  1. b^2 - 4ac = 0 Hay una raíz real -b/2a
  2. b^2 - 4ac > 0 Hay dos raíces reales distintas
  3. b^2 - 4ac <>
El tercer caso sucede por que la raíz cuadrada de un numero negativo recibe el numero de complejo o imaginario, ie, si se tiene la raíz cuadrada de -4 es igual a 2i donde la "i" es la raíz cuadrada de "-1".

Consejos de programación.

Lo primero que se debe de hacer después de declarar las variables que necesitas (a, b, c, discriminante, x1 y x2) y pedir los valores de a, b y c es sacar el valor del discriminante para obtener la naturaleza de las raíces.

discriminante = b*b - 4*a*c;

Después hacer un caso para cada opción que resolví con ayuda de la sentencia "if".

if (discriminante==0)
{
Aquí ya que el discriminante es cero solo tienes que obtener el resultado de -b/2a por que solo se obtiene una raíz
} else
if (discriminante>0)
{
En este caso se obtienen dos raíces x1 = (-b+sqrt(discriminante))/2*a; y
x2 = (-b-sqrt(discriminante))/2*a;

} else
{

Aquí opte por sacar cada raíz en dos partes su parte real +/- su parte imaginaria, donde la parte real es "-b/(2*a)" y la parte imaginaria es la raíz cuadrada del número negativo.
x1 = la parte real + la parte imaginaria x2 = la parte real - la parte imaginaria

}

Ayuda al momento de compilar

En este programa se usa la librería "math.h" y ya que los programas se hacen en Linux es necesario poner -lm ej. $ gcc nombredelprograma.c -o nombredelprograma.exe -lm

Si colocas:

...
void main (void)
{
//código
}

te aparecerá nombredelprograma.c:numero de linea: warning: return type of 'main' is not 'int'
esto es por que la función "main" debe devolver un entero, esto se soluciona con:

...
int main (void)
{
//codigo
return 0; //antes del final de la función main
}

Nota1: Si no me explique bien o te quedaron dudas sobre la formula general consulta este sitio.

Nota2: Por si no te has dado cuenta aquí no obtendrás el código de los programas solo una sugerencia de tantas con la que puedes resolverlos, pero si quieres puedes preguntar dejando un comentario y si puedo te ayudare con gusto, también puedes opinar o dar otras soluciones a estos problemas.

Nota3: El signo de "$" no se escribe en la terminal.