programacion aplicada david aliaga
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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