Skip navigation.

Log in | Sign up

photo of Héctor

kill -9 3620

...

Posts tagged with "Mono"

Problem 16

, ,

Estos dias he estado trabajando en la resolucion de problemas del Proyecto Euler :smile:

Me llama la atencion el Problema 16:
2^15 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.

What is the sum of the digits of the number 2^1000?

Pues tenemos que sumar todos los digitos del resultado de 2^1000, no lo vi tan complicado y decidi hacerlo en C#, especificamente en mono.

Al momento de escribir:
resultado = Math.Pow(2,1000):

El resultado es:
1.07150860718627e+301

:eek: :confused: me dije ¿Como sumare ese numero? nervous despues de pensar un poco cambie a Perl como lenguaje de programacion.

use strict;
use warnings;

my $res = 2**1000;
my $suma = 0;
my $char = "";
my  @txt = split(//,sprintf("%f",$res));

foreach $char (@txt){
  $suma = $suma + $char;
}

print $suma,"\n";

Donde:
my $res = 2**1000;--> hace lo mismo que Math.Pow(2,1000)

my @txt = split(//,sprintf("%f",$res)); --> generamos una arreglo de tipo char del resultado.

sprintf("%f",$res) --> esta linea de genera:

10715086071862673209484250490600018
10561404811705533607443750388370351
05112493612249319837881569585812759
46729175531468251871452856923140435
98457757469857480393456777482423098
54210746050623711418779541821530464
74983581941267398767559165543946077
06291457119647768654216766042983165
2624386837205668069376.000000

como vemos es muy diferente a 1.07150860718627e+301 y con el $suma = $suma + $char; sabremos la suma de todos los numeros del arreglo :Dla cual es 1366.

PERFORMANCE

, ,

Estos dias en la uni nos han pedido medir el "performance" de algunos algoritmos de busqueda y ordenamiento.

Pero como nos dan la libertad de desarrollar en "lo que es usted guste" desarrollo en Perl y pues me di a la tarea de investigar como medir el rendimiento y uso de cpu del algoritmo y se hace asi:

use Benchmark;

$Tinicial = new Benchmark;

print "HOLA MUNDO";

$Tfinal = new Benchmark;

$Ttotal = timediff($Tinicial, $Tfinal);

print "tiempo de ejecucion: ",timestr($Ttotal),"\n";

Su salida es algo como esto

2 wallclock secs (-0.20 usr + 0.00 sys = -0.20 CPU)

donde:

*2 wallclock secs: es el tiempo que tardo en ejecutar el codigo.

*0.20 usr: ni idea que quiere decir :frown:.

*0.00 sys: lo mismo que el anterior :frown::frown:.

*0.20 CPU: uso de cpu para ejecutar el codigo.

Esto se logra con Benchmark

Pero como mis compañeros no desarrollan en Perl :frown: lo estan haciendo en java, pero por el momento no me interesa saber como se hace en java, asi que busque como se logra esto en mono (C#) y buscando y buscando me encontre con un namespace llamado System.Diagnostics y pues la forma en la que lo implemente me muestra el resultado en milisegundos.

using System;
using System.Diagnostics ;

namespace primos
{
 class MainClass
 {
  public static void Main(string[] args)
  {
    System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
    watch.Start();

    Console.WriteLine ("Hola Mundo");

    System.Threading.Thread.Sleep(100);
    watch.Stop();
    System.Console.WriteLine("Tiempo de ejecucion: {0}", watch.ElapsedMilliseconds);
  }
 }
}

El motivo del cual lo investige para mono es que queria comparar 2 codigos, uno con varias comparaciones (if) y otro con ciclos (for) pero que hacen lo mismo, y conclui que los if ocupan un poco mas de procesador que las iteraciones, a pesar de que con el if se hacen la mitad (+ o -) de iteraciones, ¿que es mejor? iteraciones o comparaciones...

MONO Y APLICACIONES GRAFICAS

, ,

Recuerdo el primer dia de clase de programacion, el profe nos comento el plan de trabajo para el cuatrimestre y la idea era trabajar 2 semanas con C# desarrollando aplicaciones para consola y el resto hariamos aplicaciones graficas, hoy a una clase de que termine el cuatrimestre y en espera del proyecto final me pregunto si mi percepcion del tiempo es muy diferente a la del maestro, ya que para mi 2 semanas ya pasaron desde hace mucho tiempo pero apenas hace 1 semana (mia) hicimos el primer programa "grafico" del cuatrimestre.

Lo primero que hicimos fue hacer la suma de 2 numeros y un boton de "salir", pero hay algo que me llamo la atencion, lo hicimos en Visual Basic, por que usar sintaxis de VB si vimos durante todo el cuatrimeste C#??? no lo entiendo :left: :right:

Pero bueno, usamos visual studio para desarrollar y la verdad es una herramienta que facilita el desarrollo de este tipo de aplicaciones, pero todos los programitas los desarrolle en linux y quiero hacer lo mismo con los entornos graficos usando GTK#, pero me enfrento a la problematica de que con monodevelop el desarrollo no estan simple y facil como en visual studio, pero que mas da, desarrollo donde yo quiero y no en windows, usando C# y no VB, usando monodevelop y no visual studio, usando GTK# y no windowsforms, por que simple y sencillamente uso LINUX.

Lo que desarrollamos fue una calculadora:


Y hoy uno que calcula el costo total de una venta:


Los codigos los puedes descargar de aca

EXAM 2DO PARCIAL

, ,

Hoy fue el exam de progra y esto es lo que nos pidieron:
* Llenar una matriz que pueda ser nxn
* Determinar cuales elementos son pares
* Indicar cuantos elementos son pares
* Almacenar los elementos pares en un vector

mi codigo es :
// project created on 08/03/2007 at 7:12
using System;

namespace Exam
{
 class MainClass
 {
   public static void Main(string[] args)
   {
     int tamano = 1 ,contador=0;
     int [,]matriz = new int[100,100];
     int []pares = new int[100];
     Random r = new Random();
     Console.Write("Ingresa el tamaño de la matriz : ");
     tamano = Convert.ToInt16(Console.ReadLine());
     //llena la matriz de nxn
     for(int i = 1; i <= tamano; i++)
     {
       for(int j = 1; j<= tamano; j++)
       {
         //llenamos la matriz con datos generados aleatoriamente
         matriz[i,j] = r.Next(1,20);
         //determina si es par
         if(matriz[i,j]%2 == 0)
         {
           Console.WriteLine("el elemento [{0},{1}] = {2} es par",i,j ,matriz[i,j]);
           //llena el vector pares con los elementos pares
           pares[contador] = matriz[i,j];
           contador++;
         }
       }
     }
     Console.WriteLine("\n\nLa matriz llena es : \n\n");
     //imprime la matriz 
     for(int k =1; k <= tamano; k++)
     {
       for(int l = 1; l <= tamano; l++)
       {
         Console.WriteLine("El elemento [{0},{1}] dela matriz es {2}",k,l,matriz[k,l]);
       }
     }
     Console.WriteLine("El total de elementos pares es de {0}",contador);
   }
  }
}

Cabe mencionar que no se nos pedia imprimir la matriz, pero de ultima hora se nos pidio hacerlo y pues lo hacemos :D.

Este fin lo hare con POO, que ya nos dejo hacer con POO los programas hemos hechos hasta ahora, que luego los pongo.

PROGRAMACION EN LA UNI

,

Una de las materias que tomo es la de programacion, estamos programando en C#, el semestre pasado lo hicimos en java.

Hoy hicimos el primer programa y fue el tan famoso "Hola mundo" y una suma.

// project created on 17/01/2007 at 7:43
using System;

namespace Ejemplo1
{
 class MainClass
 {
  public static void Main(string[] args)
  {
   int a;
   int b,c;

   System.Console.WriteLine("Hola mundo");

   a=5;
   b=8;
   c=a+b;

   System.Console.WriteLine("el resultado es {0}",c);
   System.Console.ReadLine();
  }
 }
}


La ejecucion del programita en windows :

La ejecucion del programita en Linux :


ACTUALIZACION

mmmm no quisiera decirlo pero que clase tan aburrida, no he aprendido nada nuevo :frown: no estamos desarrollando orientado a objetos, a pesar de que C# es O.O. :frown:, lo unico que he "aprendido" es la sintaxis de un arreglo:

int []arreglo = new int[];

Algunos compañeros me dicen que talvez me estoy desesperando por que ya se un poco de programacion pero aun asi, veo muy basico el nivel de programacion que estamos practicando, y mas cuando en el semestre pasado ya haciamos programas O.O. con java.

Pogramas muy basicos pero O.O. al final de cuentas, es mas esperaba que el contenido de este curso ayudara minimamente para obtener la estrella No. 1 del programa desarrollador 5 estrellas de Micro$oft pero lo veo dificil :frown:.
Download Opera, the fastest and most secure browser