You are on page 1of 27

LENGUAJE DE

PROGRAMACION
ESTADISTICA

Uso de FUNCIONES y
PROCEDIMIENTOS
MS Visual Studio 2012

SUBPROGRAMAS
Un subprograma es también un programa menor, dentro de otro al
cual denominamos programa principal. Está formada por una serie
de sentencias (instrucciones) codificadas independientemente de
los otros eventos que conforman la aplicación (proyecto) VBasic.
Un subprograma está ligado al proyecto mediante un proceso de
transferencia/retorno.
Siendo también un programa, dispone de sus propias sentencias y
variables. En Visual Basic, como en la mayoría de lenguajes, se
acostumbra dividir el programa principal en subprogramas –
programación MODULAR- de tal forma que la solución al problema
GENERAL está formada por soluciones PARCIALES.

Proyecto Transferencia
SubPrograma
Visual Basic
Retorno
MS Visual Studio 2012

Cada una de estas soluciones PARCIALES se consigue mediante un


subprograma. En Visual Basic pueden ser de dos tipos:
Funciones, si generan como resultado UN nuevo valor escalar. Se
caracterizan porque terminan con la sentencia Return.
Sintaxis:
Function NombreFuncion (Var1 As Tipo1, …, VarK As TipoK) As Tipo
Sentencia1
Sentencia2

SentenciaN
Return Valor ‘NombreFuncion=Valor
End Function

Ejemplo:
Function Primo (k As ULong) As Integer

End Function
MS Visual Studio 2012

Procedimientos, si generan como resultado UNO o más valores


escalares. También se utilizan cuando NO generan ningún nuevo
resultado escalar.
Sintaxis:
Sub NombreProced (Var1 As Tipo1, …, Vark As TipoK)
Sentencia1

SentenciaN
End Sub

En este caso (procedimientos), en la lista de variables pueden existir:


 Solo variables de ENTRADA: NO se genera ningún valor de salida.
 p Variables de SALIDA: Se generan p valores de salida.
Ejm:
Sub Estadisticas (k As Integer, w() As Single, ByRef Media As Single, ByRef
Var As Single, ByRef Mediana As Single)

End Sub
MS Visual Studio 2012
Ejemplo 1. ESTADISTICAS para una Lista de Valores.

lstDatos

btnGenerar

btnCalcular

btnNuevo
lblResultado
btnSalir
MS Visual Studio 2012
Codificación de los controles:
Public Class frmFunciones
Dim N As Integer
Dim x() As Single
Dim y() As Single

Function Media(k As Integer, w() As Single) As Single


Dim j As Integer
Dim Suma As Single = 0
For j = 1 To N
Suma += w(j)
Next
Return (Suma / k)
End Function

Function Varianza(k As Integer, w() As Single) As Single


Dim j As Integer
Dim Suma2 As Single = 0
For j = 1 To N
Suma2 += w(j) ^ 2
Next
Return (Suma2 / k - Media(k, w))
End Function

Continúa
MS Visual Studio 2012
Function Mediana(k As Integer, w() As Single) As Single
Dim i As Integer, j As Integer
Dim m As Integer, temp As Single
For i = 1 To k - 1
For j = i + 1 To k
If (w(j) < w(i)) Then
w(0) = w(j) : w(j) = w(i) : w(i) = w(0)
End If
Next
Next
If (k Mod 2 = 0) Then
m=k/2
temp = (w(m) + w(m + 1)) / 2
Else
m = (k + 1) / 2
temp = w(m)
End If
Mediana = temp
End Function

Continúa
MS Visual Studio 2012
Private Sub btnGenerar_Click(sender As Object, e As EventArgs) Handles
btnGenerar.Click
Dim j As Integer
Dim a As Single, b As Single
N = InputBox("CANTIDAD de datos a Generar", "INGRESO DE DATOS")
a = InputBox("MENOR Valor", "INGRESO DE DATOS")
b = InputBox("MAYOR Valor", "INGRESO DE DATOS")
lstDatos.Items.Clear()
Randomize()
For j = 1 To N
lstDatos.Items.Add(Math.Round(a + (b - a) * Rnd(), 2))
Next
End Sub

Continúa
MS Visual Studio 2012
Private Sub btnCalcular_Click(sender As Object, e As EventArgs) Handles btnCalcular.Click
N = lstDatos.Items.Count
ReDim x(N)
ReDim y(N)
For j = 1 To N
x(j) = lstDatos.Items.Item(j - 1)
y(j) = x(j)
Next
lblResultado.Text = "Media: " & Media(N, y)
lblResultado.Text = lblResultado.Text & vbNewLine & "Mediana: " & Mediana(N, y)
lblResultado.Text = lblResultado.Text & vbNewLine & "Varianza: " & Varianza(N, y)
lblResultado.Text = lblResultado.Text & vbNewLine & "Coef. VARIACION: " &
(Math.Sqrt(Varianza(N, y)) / Media(N, y))
End Sub

Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click


lstDatos.Items.Clear()
lblResultado.Text = ""
End Sub

Private Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click


End
End Sub
End Class
MS Visual Studio 2012
Ejemplo 2. TABLA de Multiplicar.

rbtTabla2
rbtTabla3
rbtTabla4
rbtTabla5
rbtTabla6
rbtTabla7 lblRpta

btnMostrar

btnSalir
MS Visual Studio 2012
Codificación de los controles:
Public Class frmTablaMultiplicar
Sub Tabla(ByVal k AsInteger)
Dim i AsInteger
lblResultado.Text = "Tabla de MULTIPLICAR para "& k & vbNewLine & vbNewLine
For i = 2 To 15
lblResultado.Text = lblResultado.Text &" "& k &" x "& i &" = "& (k * i) & vbNewLine
Next
End Sub
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSalir.Click
End
End Sub

Continúa
MS Visual Studio 2012
Private Sub btnMostrar_Click(ByVal sender AsObject, ByVal e As System.EventArgs)
Handles btnMostrar.Click
If (rbtTabla2.Checked = True) Then Tabla(2)
If (rbtTabla3.Checked = True) Then Tabla(3)
If (rbtTabla4.Checked = True) Then Tabla(4)
If (rbtTabla5.Checked = True) Then Tabla(5)
If (rbtTabla6.Checked = True) Then Tabla(6)
If (rbtTabla7.Checked = True) Then Tabla(7)
If (rbtTabla8.Checked = True) Then Tabla(8)
If (rbtTabla9.Checked = True) Then Tabla(9)
If (rbtTabla10.Checked = True) Then Tabla(10)
If (rbtTabla11.Checked = True) Then Tabla(11)
If (rbtTabla12.Checked = True) Then Tabla(12)
End Sub
End Class
MS Visual Studio 2012
Ejemplo 3. Números PRIMOS entre dos valores M y N (M<N).

btnCalcular

lblResultado

btnSalir
MS Visual Studio 2012

Codificación de los controles:


Public Class frmPrimosMN
Public M As Long, N As Long, j As Long
Function Primo(ByVal k As ULong) As Integer
Dim j As Long, Ndiv As Integer = 0
For j = 2 To k / 2
If (k Mod j = 0) Then
Ndiv += 1
Exit For
End If
Next
If Ndiv = 0 Then
Return 1
Else
Return 0
End If
End Function

Continúa
MS Visual Studio 2012
Private Sub btnCalcular_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnCalcular.Click
Dim Nprim As Integer = 0
M = InputBox("Ingrese MENOR VALOR", "INGRESO de datos")
N = InputBox("Ingrese MAYOR VALOR", "INGRESO de datos")
Nprim = 0
lblResultado.Text = "Los Números PRIMOS comprendidos entre esos valores son:“ _
& vbNewLine
For j = M To N
If Primo(j) = 1 Then
Nprim += 1
If Nprim Mod 15 <> 0 Then
lblResultado.Text = lblResultado.Text &" "& Format(j, "00000")
Else
lblResultado.Text = lblResultado.Text &" "& Format(j, "00000") & _
vbNewLine
End If
End If
Next
lblResultado.Text = lblResultado.Text & vbNewLine &"TOTAL: "& Nprim
End Sub
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSalir.Click
End
End Sub
End Class
MS Visual Studio 2012
Ejemplo 4. Características de un Número.

txtValor

lblValor

btnAnalizar

lblRpta

btnSalir
MS Visual Studio 2012
Public Class frmTipoNUMERO
Dim N As Long
Function Primo(ByVal k As Long) As Boolean
Dim j As Long, Ndiv As Integer = 0
For j = 2 To k
If (k Mod j = 0) Then
Ndiv += 1 : Exit For
End If
Next
If (Ndiv = 0) Then
Primo = True
Else
Primo = False
End If
End Function
Function Inversa(ByVal k As Long) As Long
Dim M As Long, Inv As Long = 0
Dim R As Integer
M=k
While (M > 0)
R = M Mod 10 : M = M \ 10
Inv = Inv * 10 + R
End While
Inversa = Inv Continúa
End Function
MS Visual Studio 2012
Function Capicua(ByVal k As Long) As Boolean
If (k = Inversa(k)) Then
Capicua = True
Else
Capicua = False
End If
End Function
Function Gemelo(ByVal k As Long) As Boolean
Dim x() As Integer, Ncif As Integer = 0
Dim M As Long, j As Integer, t As Integer, Aux As Integer = 0
M=k
While (M > 0)
Ncif += 1
M = M \ 10
End While
ReDim x(Ncif)
M=k
For j = 1 To Ncif
x(j) = M Mod 10
M = M \ 10
Next

Continúa
MS Visual Studio 2012
t = Ncif \ 2
If (Ncif Mod 2 = 0) Then
For j = 1 To t
If (x(j) <> x(t + j)) Then
Aux += 1
Exit For
End If
Next
Else
For j = 1 To t
If (x(j) <> x(t + j + 1)) Then
Aux += 1
Exit For
End If
Next
End If
If (Aux = 0) Then
Return True
Else
Return False
End If
End Function

Continúa
MS Visual Studio 2012
Private Sub btnAnalizar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAnalizar.Click
N = Val(txtValor.Text)
If (Primo(N)) Then
lblRpta.Text = "El número ES PRIMO"
Else
lblRpta.Text = "El número NO ES PRIMO"
End If
If (Capicua(N)) Then
lblRpta.Text = lblRpta.Text & vbNewLine &"El número ES CAPICUA"
Else
lblRpta.Text = lblRpta.Text & vbNewLine &"El número NO ES CAPICUA"
End If
If (Gemelo(N)) Then
lblRpta.Text = lblRpta.Text & vbNewLine &"El número ES GEMELO"
Else
lblRpta.Text = lblRpta.Text & vbNewLine &"El número NO ES GEMELO"
End If
End Sub
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSalir.Click
End
End Sub
End Class
MS Visual Studio 2012
Ejemplo 5. Aproximaciones para el valor de PI.

btnLeibnitz

btnWallis

btnBasilea

btnEuler

btnGauss

lblRpta

btnLimpiar

btnSalir
MS Visual Studio 2012
Codificación de los controles:
Public Class frmValoresPI
Public N As Integer
Function F(ByVal w As Single)
Return Math.Exp((-1) * (w * w) / 2)
End Function
Function Basilea(ByVal k As Integer)
Dim j As Integer, ValPI As Single = 0
For j = 1 To k
ValPI = ValPI + 1 / Math.Pow(j, 2)
Next
Return Math.Pow(6 * ValPI, 0.5)
End Function
Function Euler(ByVal k As Integer)
Dim j As Integer, ValPI As Single = 0
For j = 1 To k
ValPI = ValPI + 1 / Math.Pow(j, 4)
Next
Return Math.Pow(90 * ValPI, 0.25)
End Function Continúa
MS Visual Studio 2012
Function Gauss(ByVal k As Integer)
Dim j As Integer
Dim b As Single, x As Single, y As Single, dx As Single
Dim L As Single = 0, U As Single = 0
b = 10
dx = b / k
For j = 1 To k
x = (j - 1) * dx : y = j * dx
If (F(x) < F(y)) Then
L = L + F(x) * dx : U = U + F(y) * dx
Else
L = L + F(y) * dx : U = U + F(x) * dx
End If
Next
Return (U + L) / 2
End Function
Function Leibnitz(ByVal k As Integer)
Dim j As Integer, x As Single, SumPI As Single = 0
For j = 0 To k
x = Math.Pow(-1, j) / (2 * j + 1) : SumPI += x
Next
Return (4 * SumPI) Continúa

End Function
MS Visual Studio 2012
Function Wallis(ByVal k As Integer)
Dim j As Integer, x As Single, ValPI As Single = 1
For j = 1 To k
x = Math.Pow(2 * j, 2) / ((2 * j - 1) * (2 * j + 1))
ValPI = ValPI * x
Next
Return (2 * ValPI)
End Function
Private Sub btnBasilea_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnBasilea.Click
N = InputBox("CANTIDAD de Sumandos", "INGRESO de DATOS")
lblRpta.Text = lblRpta.Text & vbNewLine & “Aproximación de BASILEA:
PI=" & Basilea(N) & " (" & N & " Términos)"
End Sub
Private Sub btnEuler_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEuler.Click
N = InputBox("CANTIDAD de Sumandos", "INGRESO de Datos")
lblRpta.Text = lblRpta.Text & vbNewLine & “Aproximación de EULER: PI=" &
Euler(N) & " (" & N & " Términos)"
End Sub
Continúa
MS Visual Studio 2012
Private Sub btnGauss_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGauss.Click
N = InputBox("CANTIDAD de Sumandos", "INGRESO DE DATOS")
lblRpta.Text = lblRpta.Text & vbNewLine & “Aproximación de GAUSS:
PI=" & 2 * Math.Pow(Gauss(N), 2) & " (" & N & " Términos)"
End Sub
Private Sub btnLeibnitz_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnLeibnitz.Click
N = InputBox("CANTIDAD de Sumandos", "INGRESO DE DATOS")
lblRpta.Text = lblRpta.Text & vbNewLine & “Aproximación de
LEIBNITZ: PI=" & Leibnitz(N) & " (" & N & " Términos)"
End Sub
Private Sub btnWallis_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnWallis.Click
N = InputBox("CANTIDAD de Sumandos", "INGRESO DE DATOS")
lblRpta.Text = lblRpta.Text & vbNewLine & “Aproximación de WALLIS:
PI=" & Wallis(N) & " (" & N & " Términos)"
End Sub

Continúa
MS Visual Studio 2012
Private Sub btnLimpiar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnLimpiar.Click
lblRpta.Text = ""
End Sub
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSalir.Click
End
End Sub
End Class
MUCHAS GRACIAS
Hasta la próxima!!!

INQUIETUDES O SUGERENCIAS?

UNIVERSIDAD NACIONAL DE INGENIERIA


 Escuela de INGENIERIA ESTADISTICA

You might also like