Software y Aplicaciones Web

Blog de desarrollo de software y aplicaciones web

Comentarios Recientes

Comment RSS

MSDN Home Page (Argentina)


C# Corner


AspAlliance.com

Declaración

Las opiniones en este blog se proporcionan "TAL CUAL", sin garantías,  no confieren derechos y no reflejan, necesariamente, la opinión de quienes me contratan.
Algunas cuestiones que se comentan en el blog no son reales, cualquier similitud con alguna persona viva o muerta no es más que una coincidencia, tampoco significa que necesite terapia, soy asi.

© Copyright 2007-2010

Propaganda

Este sitio implementa publicidad basada en intereses
Jun
26.
2009

  Diferencias entre Visual Basic y C# - Arreglos 2

Ahora voy a continuar presentando diferencias entre Visual Basic y C# a la hora de manipular arreglos.

Se trata de otro ejercicio del curso Programador .NET de Becas Control+F, y en este caso se utiliza un generador de números pseudoaleatorios para evitarse el trabajo de ingresar los datos.

Para ello el Framework facilita una clase Random que permite generar estos números con un método donde se le indica los límites inferior y superior que se desea generar, en la documentación de este método se indica que el límite superior debe ser uno más que el valor que se desa generar.

 

Ejemplo en C#

   1:      /// <summary>
   2:      /// A cuarenta alumnos se les preguntó el nivel de calidad de los alimentos 
   3:      /// de la cafetería para alumnos en una escala de 1 a 10 (1 significa terrible 
   4:      /// y 10 significa excelente). Coloque las cuarenta respuestas en una arreglo 
   5:      /// entero y resuma los resultados de la encuesta. Realice el Histograma 
   6:      /// (utilice nuevamente asteriscos (*) para realizar el grafico)
   7:      /// </summary>
   8:      static void Ejercicio2()
   9:      {
  10:        Console.Clear();
  11:        Console.WriteLine("Laboratorio 3 - Ejercicio 2");
  12:   
  13:        int[] valores = new int[40];
  14:        Random generador = new Random();  // Objeto para generar números pseudoaleatorios
  15:   
  16:        for (int i = 0; i < 40; ++i)
  17:        {
  18:          valores[i] = generador.Next(1, 11);
  19:        }
  20:        // Inicializar el arreglo con la cuenta de valores
  21:        int[] histograma = new int[11];
  22:        for (int i = 0; i < histograma.Length; ++i)
  23:        {
  24:          histograma[i] = 0;
  25:        }
  26:        // Contar cuantas veces aparece cada calificación
  27:        for (int i = 0; i < valores.Length; ++i)
  28:        {
  29:          (histograma[valores[i]])++;
  30:        }
  31:   
  32:        for (int i = 1; i < histograma.Length; ++i)
  33:        {
  34:          Console.Write("Valor {0,2} - {1,2} veces : ", i, histograma[i]);
  35:          for (int j = 0; j < histograma[i]; ++j)
  36:          {
  37:            Console.Write("*");
  38:          }
  39:          Console.WriteLine();
  40:        }
  41:   
  42:        Console.ReadKey();
  43:      }

Vean en la línea 29 cómo se utiliza el dato que se encuentra en un arreglo (valor[i]) como subindice para acceder a un elemento del arreglo histograma.

Por esa razón es que la dimensión del arreglo histograma es de 11, para que se pueda acceder a la posicón 10. Por supuesto que se podría utilizar algo como (histograma[valores[i]-1])++ y dejar el arreglo en 10 pero queda más claro de esa manera.

Parecería que hacer esto en Visual Basic resulta más comprensible, veamos el código

Ejemplo en Visual Basic

   1:    ''' <summary>
   2:    ''' A cuarenta alumnos se les preguntó el nivel de calidad de los alimentos 
   3:    ''' de la cafetería para alumnos en una escala de 1 a 10 (1 significa terrible 
   4:    ''' y 10 significa excelente). Coloque las cuarenta respuestas en una arreglo 
   5:    ''' entero y resuma los resultados de la encuesta. Realice el Histograma 
   6:    ''' (utilice nuevamente asteriscos (*) para realizar el grafico)
   7:    ''' </summary>
   8:    Sub Ejercicio2()
   9:      Console.Clear()
  10:      Console.WriteLine("Laboratorio 3 - Ejercicio 2")
  11:   
  12:      Dim valores(40) As Integer
  13:      Dim generador As Random = New Random()  '' Objeto para generar números pseudoaleatorios
  14:      Dim i, j As Integer
  15:   
  16:      For i = 0 To 39
  17:        valores(i) = generador.Next(1, 11)
  18:      Next
  19:      '' Inicializar el arreglo con la cuenta de valores
  20:      Dim histograma(10) As Integer
  21:      For i = 0 To histograma.Length - 1
  22:        histograma(i) = 0
  23:      Next
  24:      '' Contar cuantas veces aparece cada calificación
  25:      For i = 0 To valores.Length - 1
  26:        histograma(valores(i)) += 1
  27:      Next
  28:   
  29:      For i = 1 To histograma.Length - 1
  30:        Console.Write("Valor {0,2} - {1,2} veces : ", i, histograma(i))
  31:        For j = 0 To histograma(i)
  32:          Console.Write("*")
  33:        Next
  34:        Console.WriteLine()
  35:      Next
  36:   
  37:      Console.ReadKey()
  38:    End Sub

Observen que para recorrer el arreglo utilizamos el método Length de este objeto, pero tuvimos que restarle uno porque el For ... Next de Visual Basic va hasta ese valor, que es uno más de lo que se definió.

Conclusión me quedo con la modalidad de C#, seguramente los desarrolladores acostumbrados a Visual Basic opinen distinto.

 

Finalmente les muestro el mísmo ejercicio pero obviando el arreglo de valores.

   1:      /// <summary>
   2:      /// A cuarenta alumnos se les preguntó el nivel de calidad de los alimentos 
   3:      /// de la cafetería para alumnos en una escala de 1 a 10 (1 significa terrible 
   4:      /// y 10 significa excelente). Coloque las cuarenta respuestas en una arreglo 
   5:      /// entero y resuma los resultados de la encuesta. Realice el Histograma 
   6:      /// (utilice nuevamente asteriscos (*) para realizar el grafico)
   7:      /// </summary>
   8:      static void Ejercicio2_bis()
   9:      {
  10:        Console.Clear();
  11:        Console.WriteLine("Laboratorio 3 - Ejercicio 2 bis");
  12:   
  13:        Random generador = new Random();  // Objeto para generar números pseudoaleatorios
  14:        // Inicializar el arreglo con la cuenta de valores
  15:        int[] histograma = new int[11];
  16:        for (int i = 0; i < histograma.Length; ++i)
  17:        {
  18:          histograma[i] = 0;
  19:        }
  20:        // Contar cuantas veces aparece cada calificación
  21:        for (int i = 0; i < 40; ++i)
  22:        {
  23:          (histograma[generador.Next(1, 11)])++;
  24:        }
  25:   
  26:        for (int i = 1; i < histograma.Length; ++i)
  27:        {
  28:          Console.Write("Valor {0,2} - {1,2} veces : ", i, histograma[i]);
  29:          for (int j = 0; j < histograma[i]; ++j)
  30:          {
  31:            Console.Write("*");
  32:          }
  33:          Console.WriteLine();
  34:        }
  35:   
  36:        Console.ReadKey();
  37:      }

Esto sería factible si el arreglo de valores no se desea guardar, lo que en general no ocurre; pero sirve como ejemplo.

 




Categorías: ASP.NET | Programacion



Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading