Fecha y hora actual: Jueves 17 Ene 2019 04:48
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.10-Primer programa VB, procedimientos

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.10-Primer programa VB, procedimientos

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Viernes 14 Nov 2008 20:32

Título del mensaje: Curso VB .NET - Tema 1.10-Primer programa VB, procedimientos

Responder citando

Curso de programación .NET - Tema 1.10 (Visual Basic 2005)

1. Primer programa en VB, procedimientos.
1.1 Objetivos del tema.
Visto como se inicia en VB un programa, veamos ahora como resolver un ejercicio, basándonos en el uso de procedimientos.

1.2 Introducción.
A la hora de programar, podemos optar por varias soluciones, programación clásica o con objetos.

Actualmente lo adecuado es utilizar objetos, por lo tanto deberíamos elegir ese camino, pero es una decisión personal e intransferible.

Si nos aclaramos mejor con procedimientos y funciones, sin profundizar en clases, podemos plantearnos las clases como un segundo nivel, al que intentar llegar después.

Pero el camino es el de empezar por los procedimientos, ya que como se ha comentado, un método es un procedimiento o una función.

1.3 Primer ejercicio.
Tomemos como punto de partida el del ejemplo del tema anterior, creemos un proyecto del tipo consola y démosle un nombre.

Archivo -> Nuevo proyecto, de la barra de herramientas.



El nombre del proyecto, podemos cambiarlo por el nombre que deseemos, y su ubicación será la que él tiene por defecto, podemos dejarla o bien crear la nuestra propia.
Aparecerá la ventana vacía a la que añadimos el código.

Por lo que nuestro programa quedaría:

Código:
Module Module1
  Sub Main()
    Dim dato1 As Integer
    Dim dato2 As Integer
    Dim resultado As Integer
    dato1 = 20
    dato2 = 10
    resultado = dato1 + dato2
    System.Console.WriteLine("dato1 + dato2 = " & resultado)
    System.Console.ReadKey()
  End Sub
End Module


Tal cual lo vemos funciona, y el ejercicio quedaría resuelto, pero vamos un poco más allá.



Esta es una solución, pero así no se puede hacer un programa, un programa es una estructura muy compleja, o puede llegar a serlo, y para eso hace falta una estructura que sea resistente y eficiente.
Apliquemos lo que hemos visto de los procedimientos.

1.4 Parámetros en los procedimientos.
El nombre que se le da a la línea de entrada en un procedimiento es de parámetros, línea de entrada, etc…
Empecemos por pasar parámetros al procedimiento, por lo que en la línea de parámetros tendrá que aparecer las dos variables.

Las variables tendrán que ir declaradas con el tipo que les corresponde.

Código:
Private Sub Procedimento(ByVal D1 As Integer, ByVal D2 As Integer)
  Dim resultado As Integer
  resultado = D1 + D2
  System.Console.WriteLine("Dato1 + Dato2 = {0} ", resultado)
  System.Console.ReadKey()
End Sub


Al procedimiento después hay que llamarlo para que se ejecute desde el programa principal, y por lo tanto también tiene que enviarse las variables que se supone tiene que recibir en la línea de entrada al mismo.

Código:
Procedimiento(dato1,dato2)


En el programa principal, dichas variables deberán estar declaradas para poderse utilizar.

Código:
Dim dato1 As Integer
Dim dato2 As Integer


Ahora veamos la solución completa con los cambios.

Código:
Module Module1
  Private Sub Procedimiento(ByVal D1 As Integer, ByVal D2 As Integer)
    Dim resultado As Integer
    resultado = D1 + D2
    System.Console.WriteLine("dato1 + dato2 = {0} ", resultado)
    System.Console.ReadKey()
  End Sub
  Sub Main()
    Dim dato1 As Integer
    Dim dato2 As Integer
    dato1 = 20
    dato2 = 10
    Procedimiento(dato1, dato2)
  End Sub
End Module


Comprobemos que las variables que se pasan lo son en el mismo orden, del mismo tipo y con el mismo dato, d1 desde dato1 y d2 desde dato2.

1.5 Estructuras en los procedimientos.
Todas las estructuras que hemos visto, o sea las tres que hay, son de aplicación en el interior de un procedimiento, pero nos falta ver cual es su sintaxis, así que empecemos por ahí.

1.5.1 Estructuras alternativas.
Una estructura alternativa es una instrucción en la que se puede ejecutar una de entre varias posibilidades, la más sencilla es del tipo If.

Código:
if (Expresión) Then dat1 = dato


Donde expresión será cualquier expresión cuyo resultado de evaluación
final siempre es del tipo cierto o falso.



Pueden ir o no acompañadas de un else, en función de que sea necesario para nuestro programa.

Código:
if (dato > 0) then
  dat1 = dato
else
  dat1 = 25
end if




Hay otra instrucción alternativa que es Select Case, que mucho más estructurada y más potente en cuanto a sencillez de posibilidades de creación de estructuras.

Aquí tenemos un ejemplo con los posibles valores que nos interese de X, pero hay un sin fin de posibilidades en cuanto a posibles expresiones para evaluar.

Código:
   Select Case X
      Case 1
        Instrucción;
        Instrucción;
      Case 2
        Instrucción;
        Instrucción;
      Case Else
        Console.WriteLine("error")
    End Select


Otro ejemplo de un Select Case

Código:
    Select Case Mes
      Case 1 : nombremes = "Enero"
      Case 2 : nombremes = "Febrero"
      Case 3 : nombremes = "Marzo"
      .. / ..
      Case 12 : nombremes = "Diciembre"
      Case Else
        NombreMes = "Incorreccto"
    End Select


En el ejemplo podemos observar varias formas de escribir la instrucción.
En caso de que en la estructura deseemos dar una salida para la situación en la que no se cumpla ninguna de las situaciones previstas, podemos utilizar la opción de Case else

Código:
  Case Else
    NombreMes = "Incorreccto"
End Select


Dicho de otra forma es el equivalente del else en la instrucción If, vista anteriormente.
En el ejemplo tenemos una variable con un valor previsto de -1 y desconocemos cuales son las otras posibilidades, por lo tanto utilizamos case else para el resto.

Código:
    Select Case valor
      Case -1
        Console.WriteLine("No existe")
      Case Else
        Console.WriteLine("Encontrado en la posición {0} ", valor)
    End Select


Las estructuras alternativas pueden ir anidadas una en el interior de otra hasta alcanzar el nivel necesario para resolver la estructura que se nos presenta.

Código:
    If (x > 0) Then
      y = 15
      If (x > 10) Then
        x = 2
      Else
        x = 25
      End If
    Else
      x = 25
    End If


1.5.2 Estructuras repetitivas.
Como mencionamos en su momento, disponemos de dos tipos de bucles, el de tipo Repite y el de tipo Mientras, vamos a ver dichas instrucciones.

El bucle repite es una estructura en la que siempre se ejecutará un paso en el ciclo del bucle, dado que no existe ningún impedimento que impida la entrada en el mismo.

El control de la estructura está al final del mismo.
Si observamos la imagen podemos observar como el símbolo en forma de rombo, que es el que indica el control del bucle está situado al final de la estructura, y al principio solo hay instrucciones.



La flecha indica al punto del programa en el cual se inicia la estructura o en el que está la primera instrucción del bucle.

Si observamos las flechas podemos observar como la última instrucción del bucle es la encargada de analizar la situación en ese momento, para volver a iniciar una vez más el ciclo o seguir hacia la siguiente instrucción, ya fuera del bucle.

Su sintaxis es la siguiente.

Código:
do
  instrucción
  ... / ...
  instrucción
Loop Until (expresión de condición)


Sin embargo si observamos la imagen del bucle mientras, podemos observar como a diferencia del bucle repite, la instrucción de control está situada al inicio del mismo.

Esto implica que si al llegar al inicio del bucle, la condición que expresamos en ese momento no se cumple, el bucle no se ejecutará, no entraremos en el mismo, o si lo queremos ver así, el bucle está protegido en su ejecución.



Si observamos las flechas podemos observar como al acabar la última instrucción del bucle se retorna al inicio del mismo, donde está la instrucción de control, en ese momento se analiza la situación y se vuelve a ejecutar una vez más el ciclo, o se abandona el mismo, siguiendo a la siguiente instrucción.

Su sintaxis es la siguiente.

Código:
While expresión de condición
  instrucción
  ... / ...
  instrucción
End While


Hay una tercera opción de bucle que es el For.
Este bucle se ejecuta para un valor inicial, hasta un valor final, con un incremento determinado, no deja de ser una variación de un bucle mientras.

Código:
For X = 0 to 20 Step
  instrucción
  ... / ...
  instrucción
Next


Lo que con un bucle mientras, equivale a:

Código:
inicialización;
While X <>20
  instrucción
  ... / ...
  instrucción
  incremento
End While


Existe la instrucción exit for, exit do, dentro de los bucles, pero quizás sea poco didáctico y no sea muy adecuado su utilización en una primera fase del lenguaje, al igual que el uso del for, hasta que no se haya avanzado más en el dominio del mismo.

En los bucles, sean del tipo que sean, y se utilicen para lo que sea, siempre hay que tener presente el valor de partida, el valor final, y el momento en el que se realiza el incremento del contador, si es que se usa, o de la instrucción que provoque la progresión en el mismo.

Por ejemplo en la visualización de los números del 0 al 9, utilizaremos una variable del tipo entero.
Le daremos un valor inicial de cero, en el bucle la primera instrucción será visualizar, y la condición del bucle será mientras que x sea menor que diez.

El resultado será correcto.

Código:
Module Module1
  Sub Main()
    Dim x As Integer = 0
    While x < 10
      Console.Writeline(x)
      x = x + 1
    End While
  End Sub
End Module


Pero si alteramos el orden de las instrucciones, el valor cero inicial, ya no será válido, pues el primer valor que se visualizará será uno, y perdemos la visualización del cero. Además la condición final tampoco será válida, pues acabaremos en diez, no en nueve, que es de lo que se trata.
Pruébelo.

Por lo tanto hay que tener siempre presente, el punto de partida, los valores intermedios, el valor de la progresión, en que momento, y cual es el último valor que debe procesarse en el bucle.
Teniendo eso presente no debe haber nunca problemas en el manejo de los bucles.

1.5.3 Estructuras secuenciales.
Vistas las dos anteriores, una estructura secuencial no es más que una ejecución lineal de un número indeterminado de instrucciones, sin que medie una estructura alternativa o repetitiva, podría ser como ejemplo el siguiente.

Código:
instrucción
instrucción
instrucción




Como ejemplo podríamos poner:

Código:
Console.writeln(x) // Visualizar datos por pantalla
x = x + 1 // Incremento de un contador
s = s + x // Acumulador


1.6 Conclusiones.
Hemos visto como se inicia un programa en Java, las distintas estructuras que se utilizan en programación, como se escriben en Java y su uso dentro de los procedimientos, falta ver las funciones, Hemos de tener presente que en lo que podemos denominar programa principal, que en muchas ocasiones es algo ficticio, o no muy próximo a la realidad, no se escribe casi código, si no llamadas a procedimientos, o declaración y ejecución de los objetos que se han declarado, y donde realmente se escriben los programas es en los procedimientos, y funciones que se convierten en métodos en las clases.


1.7 Ejercicios propuestos.

    Introducir dos números y calcular la suma de los mismos, visualizando el resultado final.
    Repetir para la resta y la multiplicación.
    Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma R .
      Area = PI * R al cuadrado
      Longitud = 2 * PI * R

    Introducir dos números A y B y visualizar el resultado de:
      Si A es mayor que B calcular A / B.
      Si A es menor que B calcular A * B.
      Si A es igual que B calcular A + B.

    Visualizar los números entre 10 y 20.
    Visualizar los números entre 10 y 20 y sumarlos.



1.8 Solución a los ejercicios propuestos.
Dado que estructuralmente los ejercicios están resueltos, exponemos solo el código de los mismos.

Introducir dos números y calcular la suma de los mismos, visualizando el resultado final.
Repetir para la resta y la multiplicación.

Código:
Module Module1
  Private Sub Uno(ByVal D1 As Integer, ByVal D2 As Integer)
    Dim resultado As Integer
    resultado = D1 + D2
    System.Console.WriteLine("dato1 + dato2 = {0} ", resultado)
    System.Console.ReadKey()
  End Sub
  Sub Main()
    Dim dato1 As Integer
    Dim dato2 As Integer
    dato1 = Console.ReadLine()
    dato2 = Console.ReadLine()
    Uno(dato1, dato2)
  End Sub
End Module


Si en la solución del ejercicio se tienen problemas del tipo Option Strict On no permite la conversión de String en Integer, la solución pasa por:

Código:
dato1 = CInt(Console.ReadLine())
dato2 = CInt(Console.ReadLine())


Que es la solución correcta.
O bien por realizar el siguiente cambio, en la barra de Menú seleccionar la opción Proyecto -> Propiedades.

Y a continuación, seleccionar la pestaña de compilar y en la opción Option Strict que está en On, cambiarlo a Off.

Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma R .
    Area = PI * R al cuadrado
    Longitud = 2 * PI * R .


Código:
 Private Sub Dos(ByVal Rad As Double)
    Dim Longitud As Double
    Dim Area As Double
    Area = PI * Rad ^ 2
    Longitud = 2 * PI * Rad
    Console.WriteLine()
    Console.WriteLine("El área de la circunferencia es {0} ", Area)
    Console.WriteLine()
    Console.WriteLine("La longitud de la circunferencia es {0} ", Longitud)
    Console.WriteLine()
    Console.Write("Pulse cualquier tecla para finalizar ... ")
    Console.Read()
  End Sub


Y en el Main:
Código:
  Const PI As Double = 3.1416

  Sub Main()
    Dim Radio As Double
    Console.WriteLine("Hallar el área y la longitud de la circunferencia")
    Console.WriteLine()
    Console.Write(" ¿ Cual es el radio ? ")
    Radio = CDbl(Console.ReadLine())
    Dos(Radio)
  End Sub


Introducir dos números A y B y visualizar el resultado de:
    Si A es mayor que B calcular A / B.
    Si A es menor que B calcular A * B.
    Si A es igual que B calcular A + B.


Código:
  Private Sub Tres(ByVal A As Long, ByVal B As Long)
    Select Case A
      Case Is > B
        Console.WriteLine("{0} es mayor que {1} y la división es {2} ", A, B, A / B)
      Case Is < B
        Console.WriteLine("{0} es menor que {1} y la multiplicación es {2} ", A, B, A * B)
      Case Is = B
        Console.WriteLine("{0} es igual que {1} y la suma es {2} ", A, B, A + B)
    End Select
    Console.WriteLine()
    Console.Write("Pulse cualquier tecla para finalizar ... ")
    Console.Read()
  End Sub


Y en el Main:
Código:
  Sub Main()
    Dim A As Long
    Dim B As Long
    Console.WriteLine("Calcular con dos números A y B")
    Console.WriteLine()
    Console.Write("Introduce un número A ")
    A = CLng(Console.ReadLine())
    Console.Write("Introduce un número B ")
    B = CLng(Console.ReadLine())
    Tres(A, B)
  End Sub


Visualizar los números entre 10 y 20

Código:
  Private Sub Cuatro()
    Dim X As Integer
    Console.WriteLine("Visualizar los números entre 10 y 20.")
    Console.WriteLine()
    Suma = 0
    X = 10
    Do
      Console.WriteLine(X)
      X = X + 1
    Loop Until X > 20
    Console.WriteLine()
    Console.Write("Pulse cualquier tecla para continuar ... ")
    Console.Read()
  End Sub


Y en el Main:
Código:
  Sub Main()
    Cuatro()
  End Sub


En éste ejercicio se ha optado por agrupar todo el código en el procedimiento.

Visualizar los números entre 10 y 20 y sumarlos.

Código:
Private Sub Cinco()
    Dim Suma As Long
    Dim X As Integer
    Console.WriteLine("Visualizar los números entre 10 y 20 y sumarlos")
    Console.WriteLine()
    Suma = 0
    X = 10
    Do
      Console.WriteLine(X)
      Suma = Suma + X
      X = X + 1
    Loop Until X > 20
    Console.WriteLine("El valor de la suma es {0} ", Suma)
    Console.WriteLine()
    Console.Write("Pulse cualquier tecla para continuar ... ")
    Console.Read()
  End Sub


CAMBIANDO DE SITIO EL INCREMENTO, EL VALOR INICIAL DE X Y LA CONDICION

Código:
  Private Sub Cinco()
    Dim Suma As Long
    Dim X As Integer
    Console.WriteLine("Visualizar los números entre 10 y 20 y sumarlos")
    Console.WriteLine()
    Suma = 0
    X = 9
    Do
      X = X + 1
      Console.WriteLine(X)
      Suma = Suma + X
    Loop Until X = 20
    Console.WriteLine("El valor de la suma es {0} ", Suma)
    Console.WriteLine()
    Console.Write("Pulse cualquier tecla para continuar ... ")
    Console.Read()
  End Sub


Y en el Main:
Código:
  Sub Main()
    Cinco()
  End Sub


En éste ejercicio se ha optado por agrupar todo el código en el procedimiento.


Autor del curso: Casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Algún programa para autopublicar en grupos de F...

pryncype Programación Web en general 1 Jueves 18 May 2017 20:26 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Necesito ayuda para realizar este programa, por...

juanazo23 C, C#, Visual C++ 1 Martes 18 Oct 2016 19:36 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda en lo que se pueda con este programa.

Esaur48 Java 0 Martes 13 Sep 2016 18:54 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda con este programa

joselugf Java 1 Lunes 20 Jun 2016 23:18 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,