Programacion Aplicada DAVID ALIAGA

79
CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010 Visual Basic 2010 Tutorial básico para iniciar programación en visual Basic 2010. Visual Basic.- Es un compilador de quinta generación, utiliza un modelo de programación orientado a objetos con interfaz grafica y funciones intrínsecas. Conceptos Básicos de Programación. Para iniciar el tutorial es necesario tener conceptos básicos de programación. Algoritmo.- el algoritmo es una secuencia de pasos ordenados que llevan a la resolución de un problema. Algoritmo de programación.- vendría a ser la secuencia de instrucciones de forma ordenada para llevar a la resolución de un problema. Los algoritmos de programación se pueden representar mediante diagrama de flujos y también Pseudocódigo. Herramienta Básica de programación. Una herramienta básica para la programación es conocer el flujo del programa como ser: DAVID SALOMON ALIAGA Página 1

Transcript of Programacion Aplicada DAVID ALIAGA

Page 1: Programacion Aplicada DAVID ALIAGA

Inicio

Datos

Proceso

Resultados

Fin

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Visual Basic 2010

Tutorial básico para iniciar programación en visual Basic 2010.

Visual Basic.- Es un compilador de quinta generación, utiliza un modelo de programación orientado a objetos con interfaz grafica y funciones intrínsecas.

Conceptos Básicos de Programación.

Para iniciar el tutorial es necesario tener conceptos básicos de programación.

Algoritmo.- el algoritmo es una secuencia de pasos ordenados que llevan a la resolución de un problema.

Algoritmo de programación.- vendría a ser la secuencia de instrucciones de forma ordenada para llevar a la resolución de un problema.

Los algoritmos de programación se pueden representar mediante diagrama de flujos y también Pseudocódigo.

Herramienta Básica de programación.

Una herramienta básica para la programación es conocer el flujo del programa como ser:

DAVID SALOMON ALIAGA Página 1

Page 2: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Es importante recordar que algunos programas se pueden desarrollar con datos por defecto, es decir que los datos no son necesarios ingresarlos en el programa ya que están codificados.

Estructuras de Programación.

Es necesario Saber Representar las estructuras al momento de representar un algoritmo de manera grafica.

Inicio

IniiiiiINI

Datos de entrada.

Procesos

Condicionales

Fin

Bucles Lógicos.

Los bucles son herramientas de programación que realizan un procedimiento n veces, dependiendo de la condición de salida o la condición de entrada.

DAVID SALOMON ALIAGA Página 2

Page 3: Programacion Aplicada DAVID ALIAGA

Proceso

F

V

Proceso

V

F

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Función UNTIL DO (Hacer Hasta)

Esta función de bucle lógico realiza un procedimiento determinado mientras la condición sea Falsa.

Función While Do

Esta realiza el bucle mientras la condición sea verdadera.

DAVID SALOMON ALIAGA Página 3

Page 4: Programacion Aplicada DAVID ALIAGA

PROCESO

FOR i TO n

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Bucle Determinado

Función FOR TO.

La función FOR TO realiza un bucle determinado, es decir que se conoce la cantidad de repeticiones, esta es controlada con un contador i.

DAVID SALOMON ALIAGA Página 4

Page 5: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

HERRAMIENTAS BASICAS DE VISUAL BASIC.

Al iniciar el programa VISUAL BASIC le aparecerá un lienzo en blanco.

Para hacer un nuevo proyecto van a archivos y le dan nuevo proyecto.

DAVID SALOMON ALIAGA Página 5

Page 6: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Una vez abierto el nuevo proyecto le aparecerá un cuadro donde escogerás el tipo de proyecto.

Es necesario mencionar que visual Basic puede desarrollar aplicaciones para internet, páginas Web y aplicaciones.

Escogemos la opción aplicación Windows form.

Solamente este tipo de proyecto se verá en todo el transcurso del curso.

DAVID SALOMON ALIAGA Página 6

Page 7: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Una vez seleccionado aparecerá un lienzo en blanco.

En la parte izquierda se encuentran las herramientas para programar para seleccionar alguna herramienta solo se tiene que arrastrar la herramienta al lienzo.

En la parte derecha se encuentra las propiedades de cada herramienta.

Propiedades de los objetos.

Las propiedades de los objetos o de las herramientas me permiten modificar el objeto, como cambiar su nombre, cambiar su etiqueta, cambiar su color, cambiar su tamaño y otros.

Como se ve en la figura seleccionando el texto puedo cambiar la etiqueta del formulario.

DAVID SALOMON ALIAGA Página 7

Page 8: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Arriba se encuentra el explorador de soluciones que me permite manejar los formularios que yo desee programar.Nota si el cuadro de herramientas, cuadro de propiedades no aparecen tienes que ir a VER dar clic.

Como se ve ahí se encuentran todos los cuadros si quieres que aparezca alguno solo se tiene que dar clic.

OBJETOS BASICOS DE PROGRAMACION.

OBJETO BUTTON (Botón).

Este permite iniciar un proceso al momento de hacerle click sobre el mismo.

Para elegirlo solo se debe arrastrar hacia el lienzo.

DAVID SALOMON ALIAGA Página 8

Page 9: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Para programarlo se debe hacer click sobre él, y aparecerá el formulario de programación.

Se debe programar un código dentro del proceso button1_Click.

OBJETO CAJA DE TEXTO O TEXTBOX.

DAVID SALOMON ALIAGA Página 9

Page 10: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Este permite ingresar datos o mostrar datos.

OBJETO ETIQUETA o LABEL.

Permite mostrar datos o etiquetar objetos.

OBJETO RADIOBUTTON.

DAVID SALOMON ALIAGA Página 10

Page 11: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Funciona como Selección Lógica única.

De varias opciones permite solo seleccionar una haciendo click sobre él.

Como ven en la figura de los tres radios button solo se puede elegir uno, este funciona como condición lógica, es decir si es seleccionado realizara algún procedimiento que se programa, funciona con la propiedad Checked, que significa tiqueado

El RadioButton puede estar en su propiedad Checked Falso o Verdadero, si se lo selecciona esta propiedad de cambia a verdadero.

DAVID SALOMON ALIAGA Página 11

Page 12: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

OBJETO CHECKBOX.

Este funciona de manera parecida al RadioButton, pero tiene la opción de seleccionado Múltiple, se lo utiliza cuando se desea que algún procedimiento tenga varias condiciones.

OBJETO DATAGRIDVIEW.

Este Permite mostrar una tabla de resultados o ingresar una tabla de resultados.

DAVID SALOMON ALIAGA Página 12

Page 13: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Trabaja con posiciones columnas y filas.

OBJETO PICTUREBOX.

Permite Introducir una imagen en el lienzo.

Para poder introducir una imagen se tiene que ir a propiedades y elegir BackGroundImage.

Aparecerá un cuadro en donde se selecciona la imagen que se desee cargar desde la computadora hacia el programa.

OBJETO INPUTBOX.

DAVID SALOMON ALIAGA Página 13

Page 14: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Este objeto no se encuentra en la barra de Herramientas, este solo se puede mostrar mientras se está ejecutando el programa.

Se lo utiliza cuando se necesite pedir algún dato en el transcurso de ejecución del programa.

Su código es:

InputBox (“ ”,” ”,” ”).

Donde sí quiero poner un comentario se lo hace en el primer espacio de comillas.

InputBox (“Comentario”,” ”,” ”).

Si quiero agregar un Titulo, se lo hace en el segundo espacio de comillas.

InputBox (“Comentario”,” Titulo”,” ”).

Y el tercer espacio de comillas sirve para poner un valor por defecto, como ejemplo pondré 1

InputBox (“Comentario”,” Titulo”,”1”).

Ejemplo Programaremos el InputBox en un botón.

Primero agregamos el botón al formulario y le damos click sobre él.

Dentro del proceso del botón colocamos el código.

DAVID SALOMON ALIAGA Página 14

Page 15: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Le damos F5 para hacer correr el programa.

Haciendo click sobre el botón se ejecutara el código de InputBox.

DAVID SALOMON ALIAGA Página 15

Page 16: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

El InputBox solo sirve para introducir datos y su utilización solamente es necesaria cuando el programa necesite recolectar datos mientras se está ejecutando.

La diferencia con el TextBox no es mucha si los datos se cargan al inicio, pero si se está ejecutando el programa y se necesite seguir introduciendo datos necesariamente se lo debe hacer con un InputBox.

OBJETO MSGBOX

El msgbox es un objeto que no se encuentra en la barra de herramientas, este funciona para mostrar un mensaje mientras se ejecute algún código, o también para mostrar resultados.

Su código es:

MsgBox (“Mensaje”)

Haciendo el mismo procedimiento anterior colocamos un botón al lienzo y le damos click sobre el botón y programamos el MsgBox.

DAVID SALOMON ALIAGA Página 16

Page 17: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Le damos F5 para hacer correr el programa.

Le damos Click sobre el Botón para que se ejecute el código.

Como muestra la figura aparece el mensaje programado

DEFINICION DE VARIABLES Y TIPOS DE VARIABLES.

DAVID SALOMON ALIAGA Página 17

Page 18: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Al momento de iniciar la programación se tiene que definir que es una variable y como funcionara en el código.

Variable.- Se define como un objeto representado por alguna letra del alfabeto o una palabra, que puede cambiar su valor al ejecutarse algún código.

Un ejemplo seria la variable X, Y.

Donde al momento de graficar una función x puede asumir valores para generar un resultado Y.

Otra variable seria al momento de calcular la presión hidrostática de un pozo.

P=0.052*H*D

Donde P representa a la presión calculada.

H es la altura del Fluido

D es la densidad de fluido

En este caso las variables serian P, H, D donde pueden tomar diferentes valores para determinar una presión.

Las variables no solo pueden almacenar números, también pueden almacenar valores lógicos, y cadenas de palabras.

Ejemplo

La variable (Nombre) puede almacenar cualquier tipo de nombre.

La variable (Sw) puede almacenar algún valor lógico, es decir puede ser Verdadero o Falso.

Variables matriciales.-

Las variables matriciales pueden almacenar un tipo de matriz de cualquier dimensión.

Ejemplo

M (9)

Este presenta una matriz unidimensional donde la longitud es de 10, teniendo posiciones que van desde 0 hasta 9.

0 1 2 3 4 5 6 7 8 9

DAVID SALOMON ALIAGA Página 18

Page 19: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Donde M es el nombre de la matriz.

TIPOS DE VARIABLES EN VISUAL BASIC.

En visual Basic los tipos de variables que existen para números son:

INTEGER que representa a cualquier número entero.

SINGLE que representa a cualquier número real.

DOUBLE que presenta a cualquier número real, teniendo en cuenta la doble precisión, es decir que puede almacenar cantidades mayores al Tipo SINGLE.

Byte que puede almacenar un valor de 0 a 128.

Tipos de variables para cadenas o letras.

Char puede almacenar algún carácter.

String puede almacenar alguna cadena de letras.

Ejemplo.

Si los valores que voy a trabajar con decimales, necesariamente tengo que trabajar con el tipo Single.

Para calcular presiones, volúmenes, Etc.

Ejemplo

P=0.052*H*D

Donde P, H, D son tipo Single.

En visual Basic Sera

Dim P, H, and D as single.

Ejemplo Para cadenas.

Nombre

Que puede ser maría, Juan , Gabriel , Etc.

DAVID SALOMON ALIAGA Página 19

Page 20: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Donde Nombre es de tipo String.

En visual Basic.

Dim Nombre as String.

Variables Locales Y Globales.

Local significa que la variable que está disponible solamente para algún procedimiento, y después al finalizar el procedimiento este elimina el valor almacenado.

Las variables se consideran tipo locales cuando se programan dentro de un procedimiento.

Ejemplo.

Sub Presión ()

Dim P, H,D as single

P=0.052*H*D

End Sub

Como se puede ver la variable ha sido declarada dentro del procedimiento y este es de tipo local.

Se hace necesario declarar variables locales cuando se quiera realizar simulaciones, es decir varios cálculos en diferentes tiempos, de esta manera el resultado no se afecta por la acumulación de datos.

Global significa que la variable está disponible para varios procedimientos, y después de finalizar algún procedimiento esta variable sigue manteniendo su valor.

Las variables se consideran tipo Globales cuando se programan afuera de un procedimiento.

Ejemplo

Dim P,H,D as single

Dim Gf as single

Sub Presion ()

P=0.052*H*D

End Sub

DAVID SALOMON ALIAGA Página 20

Page 21: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Sub Gradiente()

Gf=0.052*D

End Sub

Como se puede ver en el ejemplo la variable D se la utiliza en los dos procedimientos.

Las variables globales pueden ser también Públicas o Privadas.

Una variable pública significa que esta está disponible para cualquier formulario del programa.

Codificación en visual basic.

Public P,H,D as single.

Una variable privada significa que esta es exclusiva para un formulario y su valor no esta disponible para otros.

Codificacion en visual Basic.

Private P,H,D as single.

EJEMPLO PRÁCTICO

Ejercicio #1

Desarrollar un programa en Visual Basic que determine la presión Hidrostática de un pozo, los datos serán ingresados desde formulario utilice el objeto TextBox y muestre el Resultado con etiquetas.

Primeramente se determina el modelo matemático para resolver el problema:

P=0.052*Den*Prof

Donde:

Den= Densidad del lodo

Prof= Profundidad del Pozo.

Creamos un nuevo formulario para desarrollar el programa.

DAVID SALOMON ALIAGA Página 21

Page 22: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Al Formulario le agregamos dos textbox y etiquetamos.

Le agregamos un botón y una etiqueta para resultado.

DAVID SALOMON ALIAGA Página 22

Page 23: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Para cada objeto se cambia la etiqueta, se hace click sobre el objeto para seleccionarlo luego se va a la barra de propiedades, busque la propiedad text y coloque la equeta calcular Presion para el objeto Botón.

Cada objeto debe tener un nombre propio por lo cual se da click en el objeto textbox, luego se va a la barra de propiedades, se busca la propiedad Name luego se coloca el nombre propio que uno desee.

Para el botón:

Btn_Calcular

Para textbox donde se ingresa la profundidad

Txt_Prof

Para el Textbox donde se ingresa la densidad

Txt_Den

Para el Label donde se muestra el resultado de la presión calculada

Lbl_Presion

Procedemos a introducir el código haciendo doble Click en el botón.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Presion, Densidad, Profundidad As Single Profundidad = Val(Txt_Prof.Text) Densidad = Val(Txt_Den.Text) Presion = 0.052 * Profundidad * Densidad Lbl_Presion.Text = (Presion) End SubEnd Class

Le damos F5 para hacer correr.

Ejercicio Práctico # 2

Desarrollar un programa en Visual Basic que determine la presión Hidrostática de un pozo, los datos serán ingresados desde formulario utilice el objeto InputBox y muestre el Resultado con MsgBox.

DAVID SALOMON ALIAGA Página 23

Page 24: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Primeramente se determina el modelo matemático para resolver el problema:

P=0.052*Den*Prof

Donde:

Den= Densidad del lodo

Prof= Profundidad del Pozo.

Con los objetos Inputbox y Msgbox, el programa debe realizar estos pasó.

Primeramente a un formulario en Blanco agregamos un botón y cambiamos su nombre:

Para el botón:

Btn_Calcular

Haciendo Doble click sobre el botón introducimos el código.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Presion, Densidad, Profundidad As Single Profundidad = Val(InputBox("Introduzca la Profundidad", "Calculo Presion", "")) Densidad = Val(InputBox("Introduzca la densidad", "Calculo Presion", "")) Presion = 0.052 * Profundidad * Densidad MsgBox(CStr(Presion)) End Sub

DAVID SALOMON ALIAGA Página 24

Page 25: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

End Class

Le damos F5 para hacer correr.

NOTA.-

La conversión Cstr que funciona para convertir una variable numérica a cadena es opcional solamente cuando se va a mostrar un número, pero si el resultado va acompañado de un texto seguido es necesario utilizar la conversión:

Ejemplo:

Msgbox(cstr(Presion)) o también

MsgBox(Presion)

Pero si va con un mensaje MsgBox(Cstr(Presion) + “Psi”)

Ejercicio Práctico # 3

Se desea calcular la velocidad de flujo que pasa por una tubería, teniendo como datos el caudal que es constante y el diámetro de la tubería.

Realice el programa utilizando TextBox y Etiquetas.

Primeramente:

Modelo matemático:

Q=V*A

V=Q/A

Donde:

A=3.1416*D^2/4

V=Q/(3.1416*D^2/4)

Se necesita como datos de entrada el caudal y el diámetro:

Desarrollamos el Interface

DAVID SALOMON ALIAGA Página 25

Page 26: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Cambiamos los nombres de cada objeto

Txt_Q Txt_D Lbl_V Btn_Calcular

Le Damos Doble Click en el Botón para introducir código

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Q, D, V As Single Q = Val(Txt_Q.Text) D = Val(Txt_D.Text) V = Q / (Math.PI * D^2 / 4) Lbl_V.Text = (V) End SubEnd Class

Ejemplo # 4

Realizar un programa en Vb para calcular el peso molecular de un gas, donde las fracciones de los componentes se ingresaran por un InputBox y se mostrara el peso molecular aparente en una etiqueta, las fracciones y los pesos moleculares se ingresaran de hasta 7 carbonos.

Modelo matemático:

Pma=∑ Pm∗Fracc

DAVID SALOMON ALIAGA Página 26

Page 27: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Como se ve se debe introducir los componentes de peso moleculares y fracciones, se asume que la cromatografía ya está normalizada.

En un formulario en blanco agregamos un botón y una etiqueta para mostrar el resultado:

Btn_Calcular Lbl_Pma

Le damos doble click en el botón para programar

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim fracc, Pm, Pma As Single Pma = 0 For i = 1 To 7 fracc = Val(InputBox("introduzca fraccion C" + CStr(i), "Fracciones del Gas", "")) Pm = Val(InputBox("introduzca Pm C" + CStr(i), "Peso Molecular del Gas", "")) Pma = Pma + fracc * Pm Next Lbl_Pma.Text = (Pma) End SubEnd Class

DAVID SALOMON ALIAGA Página 27

Page 28: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

OBJETO DATAGRIDVIEW

DataGridView es un objeto que permite introducir datos y mostrar datos en pares ordenados, este permite realizar tablas de resultados, funciona con datos numéricos y o cadenas.

Funciona con filas y columnas posiciones i,j donde este debe estar previamente dimensionado antes de comenzar a usar las celdas.

Ejemplo de uso datagridview.

Abrimos un nuevo proyecto, con un lienzo en blanco agregamos un objeto datagridview.

DAVID SALOMON ALIAGA Página 28

Page 29: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Seleccionamos una aplicación Windows form

Con un lienzo en blanco Agregamos el objeto.

DAVID SALOMON ALIAGA Página 29

Page 30: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Agregamos un botón y le damos click sobre él.

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click DataGridView1.ColumnCount = 10 DataGridView1.RowCount = 10 End SubEnd Class

La instrucción columncount sirve para dimensionar las columnas de la grilla.

La instrucción rowcount sirve para dimensionar las filas de la grilla.

Para ver el ejecutable corremos el programa F5.

DAVID SALOMON ALIAGA Página 30

Page 31: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Para colocar algún valor en la grilla se debe saber en qué posición se desea colocar el mensaje, para ello este objeto trabaja con la instrucción ítem.

Si se quiere colocar un titulo en la primera fila y columna se procede con la siguiente instrucción.

Es importante mencionar que la grilla inicia con la posición 0,0.

0,0 1,0 2,0 3,00,1 1,1 2,1 3,10,2 1,2 2,2 3,20,3 1,3 2,3 3,3

Dentro del código del botón programamos los títulos.

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click DataGridView1.ColumnCount = 10 DataGridView1.RowCount = 10 DataGridView1.Item(0, 0).Value = "TITULO 1" DataGridView1.Item(1, 0).Value = "TITULO 2" DataGridView1.Item(2, 0).Value = "TITULO 3" DataGridView1.Item(3, 0).Value = "TITULO 4" DataGridView1.Item(4, 0).Value = "TITULO 5"

End SubEnd ClassHacemos correr el programa F5.

DAVID SALOMON ALIAGA Página 31

Page 32: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejemplo # 5

Realizar un en Visual Basic que determine la gravedad especifica de un gas que tiene una composición de hasta 7 carbonos, donde los componentes de cada carbón se introducirán desde un objeto datagridview, y los pesos moleculares serán introducidos también desde el datagridview.

Solución del Problema:

Pma=∑ Fracc∗Pm

Geg=Pma /28.97

Primeramente como el programa va a trabajar con el objeto Datagridview, este debe estar dimensionado antes que pueda usarse para introducir los datos, es decir que tiene que tener 7 filas y 2 columnas para los datos.

Por esta manera vamos a dimensionar la grilla cuando se cargue el programa, para ello se realiza el siguiente procedimiento.

Con un formulario en Blanco Agregamos una Grilla, labels, y un botón.

DAVID SALOMON ALIAGA Página 32

Page 33: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Dg Btn_Calcular Lbl_Geg

Para que la grilla se dimensione al cargar el formulario hacemos doble click sobre el formulario.

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dg.ColumnCount = 3 Dg.RowCount = 8 Dg.Item(0, 0).Value = "Componentes" Dg.Item(1, 0).Value = "Fracciones" Dg.Item(2, 0).Value = "Peso Molecular" Dg.Item(0, 1).Value = "C1" Dg.Item(0, 2).Value = "C2" Dg.Item(0, 3).Value = "C3" Dg.Item(0, 4).Value = "C4" Dg.Item(0, 5).Value = "C5" Dg.Item(0, 6).Value = "C6" Dg.Item(0, 7).Value = "C7" End SubEnd Class

Hacemos click sobre el botón para programar el procedimiento de cálculo.

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Fracc, Pm, Pma, Geg As Single Pma = 0 For i = 1 To 7

DAVID SALOMON ALIAGA Página 33

Page 34: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Fracc = Val(Dg.Item(1, i).Value) Pm = Val(Dg.Item(2, i).Value) Pma = Pma + Fracc * Pm

Next Geg = Pma / 28.97 Lbl_Geg.text = Geg End Sub

Ejemplo # 6

Determinar el factor volumétrico de gas en función a la profundidad, realizar el cálculo teniendo como datos de entrada la presión, temperatura y el factor de desviación del gas, mostrar los resultados en una grilla donde en función de una declinación de presión de 100 psi muestre el factor volumétrico del gas.

Calculo:

Bg=VsVr

PV=nRTZ

Bg= Ts∗PrTr∗Ps∗Zr

Con un Formulario en Blanco Realizamos la interfaz.

Dg Txt_Ts Txt_Ps Txt_Pr Txt_Tr Txt_Z Btn_Calcular

DAVID SALOMON ALIAGA Página 34

Page 35: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Para agregar títulos desde formulario se sigue el siguiente paso, esto es si no se quiere colocar títulos por código.

Hacemos click en la esquina del objeto DataGridView

Una vez abierto la opción, seleccionamos agregar columna.

En el cuadro de texto Colocamos el titulo que queramos, en este caso colocamos Presiones.

DAVID SALOMON ALIAGA Página 35

Page 36: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Le damos agregar y luego colocamos el siguiente titulo que será Bg, una vez colocados los títulos le damos cancelar.

Y el formulario quedara con títulos agregados desde formulario.

Programamos dentro del botón.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Pr, Ps, Tr, Ts, Z, Bg, Presion As Single Dim n As Integer Pr = Val(Txt_Pr.Text) Tr = Val(Txt_Tr.Text) Ps = Val(Txt_Ps.Text) Ts = Val(Txt_Ts.Text) Z = Val(Txt_Z.Text) n = Pr / 100 + 1 Dg.RowCount = n Dg.ColumnCount = 2

For i = 0 To n - 1 Presion = Pr - 100 * i Bg = (Ts * Pr) / (Tr * Ps * Z) Dg.Item(0, i).Value = Presion Dg.Item(1, i).Value = Bg Next

End SubEnd Class

DAVID SALOMON ALIAGA Página 36

Page 37: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejercicio # 7

Realizar Un Programa que convierta un rato de Azimuth en Rumbo, utilizando condicionales If Then Else.

Con Un formulario en Blanco Agregamos un Botón, una caja de texto y etiquetas.

Btn_Calcular Txt_A Lbl_Rumbo

DAVID SALOMON ALIAGA Página 37

360 0

180

90270

R=A

R=180- AR=A-180

R=360-A

Page 38: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Le damos Doble click sobre el botón para programar.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim A, R As Single A = Val(Txt_A.Text) If A <= 90 Then R = A Lbl_Rumbo.Text = "N" + Cstr(R) + "E" ElseIf A <= 180 Then R = 180 - A Lbl_Rumbo.Text = "S" + Cstr(R) + "E" ElseIf A <= 270 Then R = A - 180 Lbl_Rumbo.Text = "S" + Cstr(R) + "W" Else R = 360 - A Lbl_Rumbo.Text = "N" + Cstr(R) + "W" End If

End SubEnd Class

Ejercicio # 8

Realizar un programa para convertir un dato de Azimuth a dato de rumbo utilizando la función select case.

DAVID SALOMON ALIAGA Página 38

Page 39: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Con Un formulario en Blanco Agregamos un Botón, una caja de texto y etiquetas.

Btn_Calcular Txt_A Lbl_Rumbo

Le damos Doble click sobre el botón para programar

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim A, R As Single A = Val(Txt_A.Text) Select Case A Case Is <= 90 R = A Lbl_Rumbo.Text = "N" + Cstr(R) + "E" Case Is <= 180 R = 180 - A Lbl_Rumbo.Text = "S" + Cstr(R) + "E" Case Is <= 270 R = A - 180 Lbl_Rumbo.Text = "S" + Cstr(R) + "W" Case Is > 270 R = 360 - A Lbl_Rumbo.Text = "N" + Cstr(R) + "W" End Select

End SubEnd ClassEjercicio # 9

Realizar un programa en Visual Basic para determinar la presión estática de fondo, en función de la profundidad de intervalos iguales.

DAVID SALOMON ALIAGA Página 39

Page 40: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

P=Pwh∗eM

Z∗R∗T∗Prof

Don de:

La presión de cabeza es dato.

Se tiene la presión máxima y mínima en superficie, la gradiente de temperatura y la profundidad del pozo.

El factor de compresibilidad es dato y la Gravedad específica del gas es dato.

Interfaz:

Dg Txt_PWh Txt_Max Txt_min Txt_Gt Txt_Prof Txt_Geg Txt_Z

Hacemos Doble Click En el Botón.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Gt, Tmax, Tmin, Prof, Geg, Z, Pwh, Pws, M, T As Single

DAVID SALOMON ALIAGA Página 40

Page 41: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Dim n As Integer Gt = Val(Txt_Gt.Text) Tmax = Val(Txt_Max.Text) Tmin = Val(Txt_min.Text) Prof = Val(Txt_Prof.Text) Geg = Val(Txt_Geg.Text) Z = Val(Txt_Z.Text) Pwh = Val(Txt_Pwh.Text) M = Geg * 28.97 T = ((Tmax + Tmin) / 2 + Gt * Prof) / 2 n = Prof / 100 + 1 Dg.RowCount = n Dg.ColumnCount = 2

For i = 0 To n - 1 Pws = Pwh * Math.Exp(M / (Z * 10.49 * T) * 100 * i) Dg.Item(0, i).Value = 100 * i Dg.Item(1, i).Value = Pws

Next End SubEnd Class

Ejercicio # 10

Desarrollar un programa en Vb que determine la tonelada milla de las diferentes operaciones que

realiza el cable de perforación.

Teniendo en cuenta que:

Tonelada Milla de una vuelta completa es Tm= 2*Ws*Prof

Tonelada Milla de una Bajada De cañería es Tm= WS*Prof

Tonelada Milla De una Perforación es Tm= 2*(2*Ws*Prof2-2*Ws*Prof1)

Donde Ws es el peso de la sarta.

Y Prof es la profundidad a la cual se va a realizar la maniobra.

DAVID SALOMON ALIAGA Página 41

Page 42: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Btn_Calcular Txt_Ws Txt_Prof1 Txt_ Prof2 Txt_Ope Lbl_Tm

Hacemos Doble Click en el botón.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Prof1, Prof2, Tm, Ws As Single Dim Ope As String Prof1 = Val(Txt_Prof1.Text) Prof2 = Val(Txt_Prof2.Text) Ws = Val(Txt_Ws.Text) Ope = Txt_Ope.Text Select Case Ope Case "Perforacion" Tm = 2 * (2 * Ws * Prof2 - 2 * Ws * Prof1) Case "Bajada Cañeria" Tm = Ws * Prof1 Case "Vuelta Completa" Tm = 2 * Ws * Prof1 End Select Lbl_Tm.Text = (Tm) End SubEnd Class

DAVID SALOMON ALIAGA Página 42

Page 43: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejemplo de código alterno utilizando la opción If Then Else.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Prof1, Prof2, Tm, Ws As Single Dim Ope As String Prof1 = Val(Txt_Prof1.Text) Prof2 = Val(Txt_Prof2.Text) Ws = Val(Txt_Ws.Text) Ope = Txt_Ope.Text

If Ope = "Perforacion" Then Tm = 2 * (2 * Ws * Prof2 - 2 * Ws * Prof1) ElseIf Ope = "Bajada Cañeria" Then Tm = Ws * Prof1 ElseIf Ope = "Vuelta Completa" Then Tm = 2 * Ws * Prof1 End If Lbl_Tm.Text = (Tm) End SubEnd Class

Ejercicio # 11

Desarrollar un programa en Vb que determine la tonelada milla de las diferentes operaciones que

realiza el cable de perforación.

Teniendo en cuenta que:

Tonelada Milla de una vuelta completa es Tm= 2*Ws*Prof

Tonelada Milla de una Bajada De cañería es Tm= WS*Prof

Tonelada Milla De una Perforación es Tm= 2*(2*Ws*Prof2-2*Ws*Prof1)

Donde Ws es el peso de la sarta.

Y Prof es la profundidad a la cual se va a realizar la maniobra.

Utilizando el Objeto RadioButton.

El objeto radio botón utiliza la propiedad Checked, para el ejercicio seria el mismo procedimiento:

DAVID SALOMON ALIAGA Página 43

Page 44: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Txt_Ws Txt_Prof1 Txt_Prof2 Rb_Perforacion Rb_BajadaCañeria Rb_VueltaCompleta

Btn_Calcular Lbl_Tm

Código

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Prof1, Prof2, Tm, Ws As Single

Prof1 = Val(Txt_Prof1.Text) Prof2 = Val(Txt_Prof2.Text) Ws = Val(Txt_Ws.Text)

If Rb_Perforacion.Checked Then Tm = 2 * (2 * Ws * Prof2 - 2 * Ws * Prof1) ElseIf Rb_BajadaCañeria.Checked Then Tm = Ws * Prof1 ElseIf Rb_VueltaCompleta.Checked Then Tm = 2 * Ws * Prof1 End If Lbl_Tm.Text = (Tm) End SubEnd Class

DAVID SALOMON ALIAGA Página 44

Page 45: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejercicio # 12

Desarrollar un programa en vb que determine la presión que se registra en superficie cuando

ingresa una burbuja de gas al pozo cuando este está cerrado, teniendo en cuenta que la altura del

gas se considera despreciable y la burbuja no se descomprime conserva su presión en todo el

transcurso de la ascendencia.

Modelo matemático.

Para el Primer caso la presión en superficie seria:

Psup=PBurbuja-Phidrostatica

Para el segundo Caso:

Psup=PBurbuja-Phidrostatica

Para el Tercer Caso:

DAVID SALOMON ALIAGA Página 45

Page 46: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Psup= PBurbuja

Formula Estándar.

Psup=Pburbuja−0.052∗densidad Lodo∗H Lodo

Dg Txt_Dl Txt_Prof Txt_Pburbuja Btn_Calcular

Código:

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Psup, Prof, Dl, PBurbuja As Single Dim n As Integer Prof = Val(Txt_Prof.Text) PBurbuja = Val(Txt_PBurbuja.Text) Dl = Val(Txt_Dl.Text)

n = Prof / 100 + 1 Dg.RowCount = n Dg.ColumnCount = 2 For i = 0 To n - 1 Psup = PBurbuja - 0.052 * Dl * (Prof - 100 * i) Dg.Item(0, i).Value = (Prof - 100 * i) Dg.Item(1, i).Value = Psup Next End SubEnd Class

DAVID SALOMON ALIAGA Página 46

Page 47: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejercicio # 13

Desarrollar un programa en vb que determine la presión que se registra en fondo cuando ingresa

una burbuja de gas al pozo cuando este está cerrado, teniendo en cuenta que la altura del gas se

considera despreciable y la burbuja no se descomprime conserva su presión en todo el transcurso

de la ascendencia.

Modelo matemático:

Para el Primer caso la presión en superficie seria:

PFondo=PBurbuja

Para el segundo Caso:

PFondo=PBurbuja+Phidrostatica

Para el Tercer Caso:

PFondo= PBurbuja + Phidrostatica

DAVID SALOMON ALIAGA Página 47

Page 48: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Formula estándar

PFondo=Pburbuja+0.052∗densidad Lodo∗H Lodo

Dg Txt_Dl Txt_Prof Txt_PBurbuja Btn_Calcular

Código:

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim PFondo, Prof, Dl, PBurbuja As Single Dim n As Integer Prof = Val(Txt_Prof.Text) PBurbuja = Val(Txt_PBurbuja.Text) Dl = Val(Txt_Dl.Text)

n = Prof / 100 + 1 Dg.RowCount = n Dg.ColumnCount = 2 For i = 0 To n - 1 PFondo = PBurbuja + 0.052 * Dl * (100 * i) Dg.Item(0, i).Value = (Prof - 100 * i) Dg.Item(1, i).Value = PFondo Next End SubEnd Class

DAVID SALOMON ALIAGA Página 48

Page 49: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejercicio # 14

Desarrollar un programa en Vb que determine la condición de un trepano, es decir que en función

a su desgaste lo clasifique en Nuevo, usado, o Inutilizable, también que determine cuantos

trépanos son nuevos, usados y inutilizable.

Tomar en cuenta que un trepano se Considera Nuevo cuando su desgaste en menor al 5%,

Se considera usado cuando su desgaste está entre mayor al 5% y menor al 30 %

Si tiene un desgaste mayor al 30 % se considera inutilizable.

Dg Txt_Cantidad Lbl_Nuevo Lbl_Usado Lbl_Inutilizable

DAVID SALOMON ALIAGA Página 49

Page 50: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Desgaste, N, U, INU As Single Dim Cantidad As Integer Dim Trepano As String Cantidad = Val(Txt_Cantidad.Text) N = 0 U = 0 INU = 0 Dg.RowCount = Cantidad Dg.ColumnCount = 3 For i = 0 To Cantidad - 1 Trepano = InputBox("Tipo de Trepano", "Analizar Trepano", "") Desgaste = Val(InputBox("Introduzca el desgaste del Trepano", "Analizar Trepano", "")) If Desgaste < 5 Then N = N + 1 Dg.Item(2, i).Value = "Nuevo"

ElseIf Desgaste <= 30 Then U = U + 1 Dg.Item(2, i).Value = "Usado" ElseIf Desgaste > 30 Then INU = INU + 1 Dg.Item(2, i).Value = "Inutilizable" End If Dg.Item(0, i).Value = Trepano Dg.Item(1, i).Value = Desgaste Next Lbl_Inutilizable.Text = (INU) Lbl_Nuevo.Text = (N) Lbl_Usado.Text = (U)

End SubEnd Class

DAVID SALOMON ALIAGA Página 50

Page 51: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejercicio # 15

Desarrollar un Programa en Vb que contabilice las toneladas millas de cada operación, como

también que compare con la tonelada milla del cable que puede resistir y que determine cuanto

de vida le resta al cable al realizar cualquier operación.

Dg Txt_n Txt_Rcable Btn_Calcular

DAVID SALOMON ALIAGA Página 51

Page 52: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Tm, Tma, Rcbale, TmRestante As Single Dim n As Integer n = Val(Txt_n.Text) Rcbale = Val(Txt_Rcable.Text) Dg.ColumnCount = 3 Dg.RowCount = n Tma = 0 For i = 0 To n - 1 Tm = Val(InputBox("Introduxca la Tonelada Milla de la Operacion", "Analisis Tonelada Milla", "")) Tma = Tma + Tm TmRestante = Rcbale - Tma If TmRestante < 10 Then MsgBox("El cable solo resistira un viaje de 10 tonelada millas es necesario cambiar el cable porque la llego al limite de su resistencia") End If Dg.Item(0, i).Value = Tm Dg.Item(1, i).Value = Tma Dg.Item(2, i).Value = TmRestante Next End SubEnd Class

DAVID SALOMON ALIAGA Página 52

Page 53: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Ejercicio # 16

Se desea analizar las presiones que generaran varios lodos por lo que se considera una densidad

máxima y una densidad mínima de lodo, que tendrá una variación dentro del rango, se desea

analizar las presiones que generaran los lodos a una profundidad.

Para ello el análisis de realizara en un datagridview

Dg Txt_Profundidad Txt_DlMax Txt_DlMin Txt_VR Btn_Calcular

DAVID SALOMON ALIAGA Página 53

Page 54: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim Dlmax, Dlmin, Vr, profundidad As Single Dim n, m, j As Integer Dim Presion As Single Dlmax = Val(Txt_DlMax.Text) Dlmin = Val(Txt_DlMin.Text) profundidad = Val(Txt_Profundidad.Text) Vr = Val(Txt_VR.Text) n = profundidad / 100 + 1 m = (Dlmax - Dlmin) / Vr + 1 Dg.ColumnCount = m + 1 Dg.RowCount = n + 1 Dg.Item(0, 0).Value = "Profundidad" For i = 1 To n Dg.Item(0, i).Value = profundidad - 100 * (i - 1) Next For j = 1 To m Dg.Item(j, 0).Value = "Dendidad" + CStr(Dlmin) For i = 1 To n Presion = 0.052 * Dlmin * (profundidad - 100 * (i - 1)) Dg.Item(j, i).Value = Presion Next Dlmin = Dlmin + Vr Next End SubEnd Class

Prueba Para Verificar Código. F5

DAVID SALOMON ALIAGA Página 54

Page 55: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Colocamos los datos.

Y hacemos correr el programa.

Se puede verificar el código al hacer correr la tabla.

Ejercicio # 17

DAVID SALOMON ALIAGA Página 55

Page 56: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Desarrollar un programa en Vb que realice el control de trayectoria de un pozo teniendo en

cuenta que se tendrá la profundidad medida, el Azimuth y la inclinación de un punto, realizar el

programa con las formulas necesarias.

Modelo de cálculo:

Se puede realizar por método Tangencial.

Donde

∆TVD=(md 2−md 1 )∗cos (Incl2)

∆ Desplaz=(md 2−md 1 )∗sin (Incl2)

∆ N=∆ Desplaz∗cos (AZ 2)

∆ E=¿∆ Desplaz∗sin(AZ2)

Para realizar este programa se lo puede realizar por varios métodos, podemos introducir los datos

desde un inputbox o podemos introducir los datos desde la grilla, para ello realizaremos los dos

ejemplos.

DAVID SALOMON ALIAGA Página 56

Page 57: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Dg Txt_n Btn_Calcular

Para este programa utilizaremos objeto input box para introducir los datos.

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim n As Integer Dim Md(), Az(), Incl() As Single Dim Tvd(), Desplaz(), Norte(), Este() As Single n = Val(Txt_n.Text)

ReDim Md(n - 1), Az(n - 1), Incl(n - 1), Tvd(n - 1), Desplaz(n - 1), Norte(n - 1), Este(n - 1) Dg.ColumnCount = 7 Dg.RowCount = n

For i = 0 To n - 1 Md(i) = Val(InputBox("Introduzca Md Survey" + CStr(i), "Calculo Direccional", "")) Incl(i) = Val(InputBox("Introduzca Inclinacion Survey" + CStr(i), "Calculo Direccional", "")) Az(i) = Val(InputBox("Introduzaca Azimuth" + CStr(i), "Calculo Direccional", "")) Dg.Item(0, i).Value = Md(i) Dg.Item(1, i).Value = Incl(i) Dg.Item(2, i).Value = Az(i)

Next For i = 1 To n - 1 Tvd(i) = Tvd(i - 1) + (Md(i) - Md(i - 1)) * Math.Cos(Incl(i)) Desplaz(i) = Desplaz(i - 1) + (Md(i) - Md(i - 1)) * Math.Sin(Incl(i)) Norte(i) = Norte(i - 1) + (Md(i) - Md(i - 1)) * Math.Sin(Incl(i)) * Math.Cos(Az(i))

DAVID SALOMON ALIAGA Página 57

Page 58: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Este(i) = Este(i - 1) + (Md(i) - Md(i - 1)) * Math.Sin(Incl(i)) * Math.Sin(Az(i)) Dg.Item(3, i).Value = Tvd(i) Dg.Item(4, i).Value = Desplaz(i) Dg.Item(5, i).Value = Norte(i) Dg.Item(6, i).Value = Este(i) Next End SubEnd Class

Modelo si se quiere Obtener datos desde la grilla.

Dg Txt_n Btn_Dimensionar Btn_Calcular

DAVID SALOMON ALIAGA Página 58

Page 59: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

En este caso se adiciono el botón Dimensionar cuya función principal será dimensionar la grilla

para que se puede introducir los datos, una vez introducidos los datos se procederá a realizar el

cálculo, en los dos programas se realizaron con vectores, ya que los vectores proporcionan un

almacenamiento más amplio al momento de realizar cálculos iterativos.

Public Class Form1 Dim n As Integer Dim Md(), Az(), Incl() As Single Dim Tvd(), Desplaz(), Norte(), Este() As Single

Private Sub Btn_Dimensionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Dimensionar.Click n = Val(Txt_n.Text) ReDim Md(n - 1), Az(n - 1), Incl(n - 1), Tvd(n - 1), Desplaz(n - 1), Norte(n - 1), Este(n - 1) Dg.ColumnCount = 7 Dg.RowCount = n End Sub

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click

For i = 0 To n - 1 Md(i) = Val(Dg.Item(0, i).Value) Incl(i) = Val(Dg.Item(1, i).Value)*math.PI/180 Az(i) = Val(Dg.Item(2, i).Value)*Math.PI/180

Next

DAVID SALOMON ALIAGA Página 59

Page 60: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

For i = 1 To n - 1 Tvd(i) = Tvd(i - 1) + (Md(i) - Md(i - 1)) * Math.Cos(Incl(i)) Desplaz(i) = Desplaz(i - 1) + (Md(i) - Md(i - 1)) * Math.Sin(Incl(i)) Norte(i) = Norte(i - 1) + (Md(i) - Md(i - 1)) * Math.Sin(Incl(i)) * Math.Cos(Az(i)) Este(i) = Este(i - 1) + (Md(i) - Md(i - 1)) * Math.Sin(Incl(i)) * Math.Sin(Az(i)) Dg.Item(3, i).Value = Tvd(i) Dg.Item(4, i).Value = Desplaz(i) Dg.Item(5, i).Value = Norte(i) Dg.Item(6, i).Value = Este(i) Next End Sub

End Class

Funcionamiento del Código hacemos Correr el Programa con F5.

DAVID SALOMON ALIAGA Página 60

Page 61: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

En cantidad de datos introducimos 5 y hacemos Click en dimensionar.

Como se ve en la figura al hacer click en el botón dimensionar se crean 5 filas en la grilla,

procedemos a introducir datos Md, Inclinación y Azimuth.

Una Vez Introducidos los datos damos Click En Realizar Cálculos.

DAVID SALOMON ALIAGA Página 61

Page 62: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Y vemos que se realizan los cálculos, en este caso se utilizaron dos botones, ya que es necesario

siempre dimensionar la grilla antes de poder introducir los datos.

Matrices

Los matrices son arreglos de cosas, estas cosas pueden ser números, objetos, cadenas,

procedimientos, etc.

Una matriz se caracteriza por la dimensión y por la longitud, es decir la dimensión llegaría a ser si

es de una, dos o tres dimensiones, y la longitud es cuanto en cantidad posee el vector.

A la matriz sea cual sea, se lo puede manipular a cada objeto que posea por la posición de su

objeto.

Ejemplo:

DAVID SALOMON ALIAGA Página 62

10 Hola 120

´+-* 0.0002

Page 63: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

1 2 3 4 5 6

Si vemos el ejemplo es una matriz mono-dimensional, de una sola dimensión, tiene una

longitud de de 6 y puede almacenar números enteros, números reales, signos y cadenas.

Si vemos en la posición 1 el vector almacena un número, en la posición 2 almacena una palabra,

como también no puede almacenar nada como se ve en la posición 6.

Ejemplos de matrices.

Matriz Bidimensional 4 x 4

Matrices en Visual Basic.

Todas las matrices programadas en visual Basic, se deben dimensionar y declarar que tipos de

datos puede almacenar la matriz, es importante mencionar una matriz en visual solamente puede

contener un tipo de datos.

Las matrices se pueden dividir en matrices dinámicas, y matrices estáticas.

Una matriz estática se declara su longitud al inicio.

Ejemplo

Dim M(9) as single

Como señala el ejemplo la matriz llamada M tiene una Mono-Dimensión y una longitud de 0-9 y

almacena valores reales

DAVID SALOMON ALIAGA Página 63

Page 64: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Una matriz dinámica se declara su longitud después de haber recogido algún dato.

Ejemplo

Dim M() as single

Redim M(9)

Como se ve en el ejemplo, al inicio solamente se declara la dimensión, y el tipo de datos que va a

almacenar la matriz y luego se dimensiona su dimensión, se utiliza matrices dinámicas cuando no

se tiene la certeza absoluta de que longitud va a tener la matriz, es decir de cuantos datos va a

almacenar.

Ejemplo # 18

Realizar un programa en Visual Estudio para poder simular, como se moverá el punto neutro

(Respecto a la parte inferior del arreglo del fondo) en la zona de los PM de una sarta de

perforación, si se hace variar el WOB desde un valor 0 hasta un valor final, establecido por el

usuario. Las especificaciones adicionales son:

a) Los Intervalos de incrementos son iguales.

b) Si se conoce la longitud total del arreglo de fondo, el programa debe advertir el momento

en que el punto neutro en la zona de transición PM – Tubería.

c) Utilizar un DataGridView para Visualizar los datos.

Se debe realizar un análisis de fuerzas en el fondo.

DAVID SALOMON ALIAGA Página 64

Page 65: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

∑ F=0n

Donde:

F1+F2+Wdc – E=Wob

Entonces:

Hpn=wob−F 1−F2+EWlb Dc

DAVID SALOMON ALIAGA Página 65

Page 66: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Dg Txt_Dl Txt_IdDp Txt_OdDp Txt_LnDp Txt_OdDc Txt_IdDc Txt_LnDc Txt_Prof

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim IdDp, OdDp, IdDc, OdDc, LnDp, LnDc, Dl, wob, Prof, F1, F2, Empuje, LbDc, Pn, Hpn, LnPn As Single Dim n As Integer IdDp = Val(Txt_IdDp.Text) OdDp = Val(Txt_OdDp.Text) IdDc = Val(Txt_IdDc.Text) OdDc = Val(Txt_OdDc.Text) LnDp = Val(Txt_LnDp.Text) LnDc = Val(Txt_LnDc.Text) Dl = Val(Txt_Dl.Text) Prof = Val(Txt_Prof.Text) wob = Val(Txt_Wob.Text) F1 = 0.052 * Dl * LnDp * Math.PI / 4 * (OdDc ^ 2 - OdDp ^ 2)

DAVID SALOMON ALIAGA Página 66

Page 67: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

F2 = 0.052 * Dl * LnDp * Math.PI / 4 * (IdDp ^ 2 - IdDc ^ 2) LbDc = Math.PI / 4 * (OdDc ^ 2 - IdDc ^ 2) / 0.2945 Empuje = 0.052 * Dl * Prof * Math.PI / 4 * (OdDc ^ 2 - IdDc ^ 2) n = wob / 5 + 1 Dg.RowCount = n Dg.ColumnCount = 3 wob = 0 For i = 0 To n - 1

Hpn = (wob - F1 - F2 + Empuje) / LbDc Pn = Hpn / LnDc If Pn >= 1 Then MsgBox("El punto neutro esta en zona de Transicion") End If LnPn = LnDp + (1 - Pn) * LnDc Dg.Item(0, i).Value = wob Dg.Item(1, i).Value = Pn Dg.Item(2, i).Value = LnPn Next End SubEnd Class

Ejemplo # 19

Un pozo cerrado por causa de un amago de descontrol, registra una presión en superficie, a la cual

se va incrementando con el tiempo. Suponiendo que se conoce la presión de burbuja de gas

(Constante) que entro en el pozo y la densidad de lodo en el pozo, la burbuja es puntual y asciende

por el EA sin expandirse. Realizar un programa en Visual Estudio para predecir la densidad

equivalente en fondo, a medida que la burbuja asciende por el EA, a intervalos de iguales alturas.

La profundidad del pozo es conocida.

DAVID SALOMON ALIAGA Página 67

Page 68: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

Dg Txt_Dl Txt_Prof Txt_Pburbuja

Public Class Form1

Private Sub Btn_Calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Calcular.Click Dim PFondo, Prof, Dl, PBurbuja, DensidadEquivalente As Single Dim n As Integer Prof = Val(Txt_Prof.Text) PBurbuja = Val(Txt_PBurbuja.Text) Dl = Val(Txt_Dl.Text)

n = Prof / 100 + 1 Dg.RowCount = n Dg.ColumnCount = 2 For i = 0 To n - 1 PFondo = PBurbuja + 0.052 * Dl * (100 * i)

DAVID SALOMON ALIAGA Página 68

Page 69: Programacion Aplicada DAVID ALIAGA

CURSO DE PROGRAMACION APLICADO A INGENIERIA PETROLERA VISUAL BASIC 2010

DensidadEquivalente = PFondo / (0.052 * Prof) Dg.Item(0, i).Value = (Prof - 100 * i) Dg.Item(1, i).Value = DensidadEquivalente Next End SubEnd Class

DAVID SALOMON ALIAGA Página 69