Sie sind auf Seite 1von 31

SEMANA 10

1
Programación en
Visual Basic

Procedimientos: Subrutinas y
Funciones
Módulos, Clases y Métodos
 Los programas en Visual Basic se componen
de muchas piezas, incluyendo módulos y
clases
 Los módulos pueden ser usados para
organizar aplicaciones de consola o para
agrupar declaraciones globales de un
proyecto
 Las clases permiten definir nuevos tipos de
datos en términos de características y
operaciones reconocidas. También son
utilizadas para representar los formularios
3
Módulos, Clases y Métodos
(cont.)
 Los módulos y clases se componen, a su
vez, de piezas más pequeñas llamadas
métodos o procedimientos
 Los métodos representan tareas que un
programa puede ejecutar una o más veces.
 También los métodos pueden ser usados
para simplificar event handlers(eventos
manejables) subdividiendo estos últimos en
pedazos más manejables
4
Módulos, Clases y Métodos
(cont.)
 Como en la mayoría de los lenguajes de
programación, Visual Basic .NET provee
para dos tipos de métodos (procedimiento):
 Subrutinas – aquellos métodos que no devuelven
valores directamente
 Funciones – aquellos métodos que devuelven un
valor directamente

5
Subrutinas
 Una subrutina es un método que no devuelve
valores directamente
 El siguiente es el formato para declarar una
subrutina:
[Public|Private] Sub SubName([parmeterList])
[Local declaration(s)]
Statement(s)
End Sub

 Para invocar (o llamar) a la subrutina se escribe:


[Call]SubName([argument(s)])

 Nota: La llamada es un enunciado por si mismo


6
Subrutinas (cont.)
 Ejemplos de llamadas:

EQUI_MM_SS(HH, MM, SS)

Call EQUI_MM_SS(HH, MM, SS)

 Nota: Fíjese que en la llamada, la palabra Call es


opcional cuando se invoca una subrutina

7
EJEMPLO 1

Hacer un programa que reciba un valor


que represente cierta cantidad de horas y
devuelva su equivalente en minutos y
segundos.

8
DISEÑO DE FORMULARIO

9
DIAGRAMA DE FLUJO

10
CODIFICACIÓN
Public Class Form1

Sub EQUI_MM_SS(ByVal HH As Integer, ByRef MM As String, ByRef SS As String)


MM = (HH * 60)
SS = (HH * 3600)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button1.Click
Dim HH As Integer
Dim MM, SS As String
HH = TextBox1.Text
EQUI_MM_SS(HH, MM, SS)
TextBox2.Text = MM
TextBox3.Text = SS
End Sub

End Class

11
EJEMPLO 2

Construir un procedimiento que reciba un


número entero positivo grande, determinar
el digito mayor así como el digito menor
contenido en dicho número.

12
DISEÑO DEL FORMULARIO

13
DIAGRAMA DE FLUJO

14
PROCEDIMIENTO

15
CODIFICACIÓN EN VISUAL BASIC

Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim NRO, DMAYOR, DMENOR As Integer
NRO = TextBox1.Text
CAL_DMAYOR_DMENOR(NRO, DMENOR, DMAYOR)
TextBox2.Text = DMENOR
TextBox3.Text = DMAYOR
End Sub
End Class

16
Sub CAL_DMAYOR_DMENOR(ByVal NRO As Integer, ByRef DMENOR As
Integer, ByRef DMAYOR As
Integer)
Dim D, WMENOR, WMAYOR As Integer
WMENOR = 9
While NRO > 0
D = NRO Mod 10
If D > WMAYOR Then
WMAYOR = D
End If
If D < WMENOR Then
WMENOR = D
End If
NRO = Int(NRO / 10)
End While
DMENOR = WMENOR
DMAYOR = WMAYOR
End Sub
17
Subrutinas (cont.)
 Las subrutinas pueden ser declaradas como
privadas a una clase o públicas
 Las subrutinas privadas sólo son accesibles
a la clase (o formulario) donde se declararon
 Las subrutinas públicas son accesibles a
todo el proyecto
 Si no se indica la accesibilidad de la
subrutina, ésta se asume como pública

18
Parámetros y Argumentos
 Los parámetros aparecen en la declaración de una
subrutina y se clasifican como parámetros por valor
(ByVal) o parámetros por referencia (ByRef)

 ByVal Indica que el argumento se pasa por valor, es


decir, se pasa su valor (una copia de la variable) en
vez de su dirección. Como resultado, el valor actual
de la variable no puede ser cambiado por el
procedimiento al cual se pasa.

19
 ByRef indica que el argumento se pasa
por referencia, es decir, se pasa su
dirección en vez de su valor. Como
resultado, el valor real de la variable
puede ser cambiado por el procedimiento
al cual se pasa.
Parámetros y Argumentos
 Ejemplo:

Private Sub Cal_Promedio(ByVal n1 As Integer,


ByVal n2 As Integer,
ByVal n3 As Integer,
ByRef avg As Double)
Dim sum As Double
sum = n1 + n2 + n3
avg = sum / 3
End Sub

 Aquí n1, n2 y n3 son parámetros por valor y avg es


parámetro por referencia

21
Ejercicio 1
Hacer un programa en V. B. utilizando procedimientos, dado tres
números enteros calcular su promedio

22
Public Class Form1
Sub CAL_promedio(ByVal n1 As Single, ByVal n2 As Single, ByVal n3 As Single, ByRef avg As Single)
Dim sum As Single
sum = n1 + n2 + n3
avg = sum / 3
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


Dim N1, N2, N3, AVG As Single
N1 = TextBox1.Text
N2 = TextBox2.Text
N3 = TextBox3.Text
CAL_promedio(N1, N2, N3, AVG)
TextBox4.Text = AVG
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click


End
End Sub
End Class

23
Ejercicio 2
 Hacer un programa(Procedimientos) que imprima el pH y el
carácter (ácido, base o neutro) de una solución, al dar como
dato la concentración de Hidrógenos ( [H] )

24
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim c, pH as double
Dim clase as string
C = TextBox1.Text
Calcular_pH(C, pH, Clase)
TextBox2.Text = pH
TextBox3.Text = Clase
End Sub

Sub Calcular_pH(ByVal C As Double, ByRef pH As Double, ByRef clase As String)


pH = - Log(C)
If pH > 0 And pH < 7 Then
CLASE = “ACIDA"
ElseIf pH = 7 Then
CLASE = "NEUTRA"
ElseIf Ph > 7 And pH < = 14 Then
CLASE = "BASICA"
Else
CLASE = "Fuera de rango"
End If
End Sub
25
Ejercicio 3
 Hacer un programa en visual Basic, que
acepte hasta un máximo de 5 números, y
luego obtiene el porcentaje de números
positivos sobre el total de números diferentes
de cero.

26
27
Public Class Form1

Public NRO(19), I As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button1.Click
NRO(I) = TextBox1.Text
ListBox1.Items.Add(NRO(I))
I=I+1
If I = 5 Then
MOSTRAR()
End If
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button2.Click
MOSTRAR()
End Sub

End Class
28
Sub MOSTRAR()
Dim K, X, POS, NOCEROS As Integer
Dim PORC As Double
K=I-1
For X = 0 To K
If NRO(X) > 0 Then
POS = POS + 1
End If
If NRO(X) <> 0 Then
NOCEROS = NOCEROS + 1
End If
Next
PORC = (POS / NOCEROS)*100
TextBox2.Text = PORC
End Sub

29
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = ""
TextBox2.Text = ""
ListBox1.Items.Clear()
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click


End
End Sub

End Class

30
Ejercicio 4
 Hacer un programa en visual Basic,
utilizando vectores unidimensionales y
Procedimientos
Tal que se ingrese N números enteros
diferentes y positivos, calcular el numero
mayor y el menor.

31

Das könnte Ihnen auch gefallen