You are on page 1of 7

Programando

en

Visual C#
Versin: 2010

Variograma Experimental

Elaborado por:

JUAN MANUEL GUTARRA BACN Estudiante de Ingeniera de Minas

Agosto del 2011

Grupo de Programacin - CMMSB

1. Introduccin
Como parte del trabajo del Grupo de Programacin CMMSB, publicamos este pequeo manual, en donde, de manera prctica, explicaremos el desarrollo de programas de aplicacin, esto significa un aporte del grupo hacia nuestros amigos estudiantes, informacin que nos ayudar a incrementar nuestras habilidades informticas. En la presente clase se explicar, la creacin de una aplicacin para el clculo de variograma experimental de un conjunto de datos dispuesto en una misma direccin en el espacio que representa una variable, usando el Visual Estudio C# en su versin. La distribucin de esta clase es gratuita y la podemos adquirir en su versin digital en el Circulo Minero Mario Samam Boggio, y tambin quedan todos invitamos a participar de este grupo de estudio.

No somos programadores, somos ingenieros con habilidades de programacin.

Programando en Visual C# v.2010

Grupo de Programacin - CMMSB

2. Proyecto : Variograma Experimental


Para generar este proyecto lo primero es generar un nuevo proyecto de visual c# para eso hacemos clic en File/New/Project.

A continuacin se muestra el siguiente dilogo New Project, seleccionamos el lenguaje Visual C# y seleccionamos el tipo de proyecto que vamos a desarrollar Windows Forms Application (ejecutable .exe); Le ponemos de nombre al proyecto VARIOGRAMA y le damos clic en OK.

Seguidamente nos muestra el siguiente Form , en donde disearemos jalando los objetos del ToolBox y modificaremos sus propiedades (Properties).

Programando en Visual C# v.2010

Grupo de Programacin - CMMSB


El diseo del proyecto ser el que se muestra en el grfico, el que consiste de objetos TextBox, Buttom, Chart, Label ; para editar los Labels modificamos la propiedad Text desde la caja de propiedades al igual que el Buttom.

Diseo de la aplicacin

Le damos doble clic al Button Generar para crear el mtodo del evento clic del Button dirigindonos al archivo Form1.cs , donde observamos que se gener private void button1_click(object sender, EvenArgs e), en donde escribiremos el cdigo de la operacin para generar nmeros aleatorios y que estos se muestren el en Chart.

Programando en Visual C# v.2010

Grupo de Programacin - CMMSB


Primero definiremos las variables como se muestra en la imagen, fuera de los mtodos para que sean generales , pero tambin pueden estar dentro del mtodo private void button1_click(object sender, EvenArgs e) pero ser de uso exclusivo del mtodo.

Usando el Convert.ToInt32(), para enteros, o Convert.ToDouble(), para variables tipo double, covertiremos los valores ingresados en los TextBox a valores numricos.

Programando en Visual C# v.2010

Grupo de Programacin - CMMSB

Terminaremos de escribir el cdigo dentro del mtodo del buttom1 como se muestra:
private void button1_Click(object sender, EventArgs e) { //Asignacin de variables Ndatos = Convert.ToInt32(textBox1.Text); linf = Convert.ToDouble(textBox2.Text); lsup = Convert.ToDouble(textBox3.Text); //Declaracion del vector N en donde se guardar los aleatorios generados double[] N; N= new double [Ndatos];

//Creamos el objeto random, simplemente Random r = new Random(); for (int cont = 0; cont < Ndatos; cont++) { //Genera los random N[cont] = r.Next((int)linf*1000,(int)lsup*1000)/1000.0; } chart1.Series.Clear(); chart1.Titles.Clear(); // declaracin de serie de datos "Gamma", definicion del tipo de Chart chart1.Series.Add("Gamma"); chart1.Series["Gamma"].ChartType = SeriesChartType.Point; chart1.Titles.Add("VARIOGRAMA EXPERIMENTAL").Font = new Font("Corber", 12, FontStyle.Bold); ; chart1.ChartAreas["ChartArea1"].AxisX.Title = "Distancia h (m)"; chart1.ChartAreas["ChartArea1"].AxisY.Title = "Gamma(h)"; chart1.ChartAreas["ChartArea1"].AxisX.TitleFont = new Font("Corber", 10, FontStyle.Bold); chart1.ChartAreas["ChartArea1"].AxisY.TitleFont = new Font("Corber", 10, FontStyle.Bold);

double[] G; G = new double[Ndatos]; G = Variograma(N, Ndatos); for (int cont = 0; cont < Ndatos; cont++) { chart1.Series["Gamma"].Points.AddXY(cont, G[cont]); richTextBox1.AppendText("G[" +cont+"]=\t"+ Math.Round(G[cont],3) + "\n"); }

chart1.ChartAreas["ChartArea1"].AxisX.Maximum = Ndatos; chart1.ChartAreas["ChartArea1"].AxisX.Minimum = 0; chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash; chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash; chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Font = new Font("Arial", 8); chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Font = new Font("Arial", 8); }

Mtodo Varigrama para el clculo del Variograma Experimental,el que sera escrito despus del metodo del button1
private double[] Variograma(double[] n, int q) { double sum; int cont, j; double[] G = new double[q]; for (cont = 0; cont <= (q - 1); cont++) { sum = 0.0; for (j = 0; j < (q - cont); j++) { sum = sum + ((n[j] - n[j + cont]) * (n[j] - n[j + cont])); } G[cont] = sum / (2 * (q - cont)); } return G; }

Programando en Visual C# v.2010

Grupo de Programacin - CMMSB


Por ultimo Agregamos using System.Windows.Forms.DataVisualization.Charting; al principio del Form1.cs como
se muestra en la imagen.

Ahora solo queda probar la aplicacin, presionando F5 podemos iniciar la aplicacin y si todo esta correcto al probar con valores como se muestran en la grfica, se tendra el variograma de nmeros aleatorios de distribucin uniforme como se muestra.

Se observa la independa de los gamma(h) con respecto a la distancia h, la tendencia de los gamma(h) es lineal y coinciden con la varianza de los nmeros aleatorios de distribucin uniforme.

Programando en Visual C# v.2010