lunes, 9 de septiembre de 2013

tabla de multiplicar con FOR NEXT

Dim t, i As Integer
Labeltabla.Caption = ""


t = Val(Text1.Text)

For i = 1 To 10

    Labeltabla = Labeltabla & t & " * " & i & " = " & t * i & vbCrLf

Next i

EJERCICIOS de VISUAL BASIC

Ejercicio 1 (utilizando for – next)

Hacer un programa que solicite al usuario la cantidad de números a ingresar, luego que permita ingresar en un Listbox los números que correspondan. Por ultimo al finalizar el ingreso de números se deberá mostrar el máximo y el mínimo

Por ejemplo, el programa solicita el ingreso de un numero, ingresamos el 4. Esto indica que deberemos ingresar luego 4 números, supongamos que ingresamos: 8, 3, 25 y 12.
Entonces al final deberemos ver como máximo al 25 y como mínimo al 3





Ejercicios 2
Ingresar 10 números en un list, luego determinar cuantos fueron mayores a 30 y cuantos menores a 10.

Ejercicio 3
Modificar el ejercicio anterior para que además se muestre la sumatoria de los números ingresados y el promedio

Ejercicio 4
Ingresar números hasta que se ingrese el nro cero. Luego informar cuantos números se ingresaron y cuantos fueron pares y cuantos impares. ( utilizar la sentencia DO WHILE- Loop)
 Tener en cuenta aquí que para saber si un numero es par podría aplicar el MOD, que determina el valor del resto en un cociente
Por ejemplo : res = A mod 2 ( si A es un numero ingresado y queremos saber cual es el resto de A al dividir por 2, en este caso si el numero es par el resto es cero y sino será distinto de cero, quizás con esta ayuda puedan resolver como sacar cuando un numero es par o impar)



Instrucción Do...Loop (Visual Basic)



Repite un bloque de instrucciones mientras una condición Boolean sea True o hasta que la condición se convierta en True.
Do { While | Until } condition
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
-or-
Do
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition
Término
Definición
Do
Requerido. Inicia la definición del bucle Do.
While
Obligatorio a menos que se utilice Until. Repite el bucle hasta que condition sea False.
Until
Obligatorio a menos que se utilice While. Repite el bucle hasta que condition sea True.
condition
Opcional. Expresión Boolean. Si condition es Nothing, Visual Basic la trata como False.
statements
Opcional. Una o más instrucciones que se repiten mientras o hasta que condition sea True.
Continue Do
Opcional. Transfiere el control a la siguiente iteración del bucle de Do .
Exit Do
Opcional. Transfiere el control fuera del bucle Do.
Loop
Requerido. Termina la definición del bucle Do.
Utilice una estructura Do...Loop cuando desee repetir un conjunto de instrucciones un número indefinido de veces, hasta que se satisfaga una condición. Si desea repetir las instrucciones un número fijo de veces, la Instrucción For...Next es normalmente una opción mejor.
Puede usar While o Until para especificar condition, pero no ambas.
Puede probar condition solo una vez, en el inicio o el final del bucle. Si prueba condition al principio del bucle (en la instrucción Do), puede que el bucle no se ejecute ni siquiera una vez. Si prueba al final del bucle (en la instrucción Loop), el bucle siempre se ejecuta al menos una vez.
Generalmente, la condición es el resultado de comparar dos valores, pero también puede ser cualquier expresión que da como resultado un valor Boolean (Tipo de datos, Visual Basic) (True o False). Esto incluye los valores de otros tipos de datos, como los numéricos, que han sido convertidos a valores de tipo Boolean.
Se pueden anidar bucles Do colocando un bucle dentro de otro. También puede anidar distintos tipos de estructuras de control unos dentro de otros. Para obtener más información, vea Estructuras de control anidadas (Visual Basic).
Nota Nota
La estructura Do...Loop proporciona mayor flexibilidad que la Instrucción While...End While (Visual Basic) porque permite decidir si se debe finalizar el bucle cuando condition deja de ser True o cuando es True por primera vez. También le permite probar conditionen el inicio o el final del bucle.

Exit Do

La instrucción Exit Do puede proporcionar una alternativa para salir de Do…Loop. Exit Do transfiere el control inmediatamente a la instrucción que sigue a la instrucción Loop.
Exit Do se utiliza a menudo después de evaluar alguna condición, por ejemplo en una estructura If...Then...Else. Por ejemplo, puede ser conveniente salir de un bucle si se detecta una condición que hace que sea innecesario o imposible continuar la iteración, como puede ser un valor erróneo o una solicitud de finalización. Un uso de Exit Do consiste en comprobar una condición que podría ocasionar un bucle sin fin; es decir, un bucle que pudiera ejecutarse un número elevado, o incluso infinito, de veces. Puede utilizar Exit Do para escapar del bucle.
Puede incluir cualquier número de instrucciones Exit Do en cualquier lugar de Do…Loop.
Cuando se utiliza dentro de bucles Do anidados, Exit Do transfiere el control fuera del bucle más profundo y al siguiente nivel de anidamiento.

domingo, 1 de septiembre de 2013

Ejercicio de SELECT CASE

Transformar en código de Visual Basic el siguiente enunciado: crear un programa que pida al usuario un número de día y un número de mes, evalúe si la entrada es correcta y en caso de que así sea calcule el día del año que es, considerando un año no bisiesto.



SOLUCIÓN

Rem [Cálculo del día del año]
Option Explicit
Dim Ndía%, Nmes%, DDA As Integer

Private Sub Form_Load()
Show
Form1.Caption = "Cálculo día del año"
Label1(0).Caption = "Introduzca aquí el número del día"
Label1(1).Caption = "Introduzca aquí el número del mes"
Command1.Caption = "Determinar día del año"
End Sub

Private Sub Command1_Click()
Ndía = Val(Text1(0))
Nmes = Val(Text1(1))
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
If Ndía >= 1 And Ndía <= 31 And Nmes >= 1 And Nmes <= 12 Then
    Select Case Nmes
        Case 1
            DDA = Ndía '[DDA es día del año]
        Case 2
            DDA = Ndía + 31
        Case 3
            DDA = Ndía + 59
        Case 4
            DDA = Ndía + 90
        Case 5
            DDA = Ndía + 120
        Case 6
            DDA = Ndía + 151
        Case 7
            DDA = Ndía + 181
        Case 8
            DDA = Ndía + 212
        Case 9
            DDA = Ndía + 243
        Case 10
            DDA = Ndía + 273
        Case 11
            DDA = Ndía + 304
        Case 12
            DDA = Ndía + 334
    End Select
    LabelResultado = "El " & Ndía & " del "& Nmes & " es el día" & DDA & " del año"
Else
    LabelResultado = "Datos proporcionados no válidos"
End If
End Sub


Aspecto gráfico:


ESTRUCTURAS DE REPETICIÓN (BUCLES) CON VISUAL BASIC

Vamos a ver cómo materializar con Visual Basic estructuras de repetición que permitirán que en nuestros programas se realice un proceso n veces. En concreto veremos las instrucciones Desde … Siguiente (For … Next) con su cláusula Paso (Step), la instrucción Mientras … Hacer (Do While … Loop) y la instrucción Hacer … Repetir Mientras (Do … Loop While).


 
Muchas veces podremos optar indistintamente por usar una instrucción u otra. En otros casos, es recomendable decantarse por una de ellas por hacer el programa más legible o sencillo que usando otras opciones.


INSTRUCCIÓN DESDE ... SIGUIENTE (FOR ... NEXT) Y CLÁUSULA PASO (STEP)

La sintaxis a emplear con Visual Basic es la siguiente:

For VAR = Vi  To Vf
                Instrucción 1
                Instrucción 2
·
·
·
      Instrucción n
Next VAR
 

El incremento que sufre el contador es, por defecto, unitario. Es decir, el primer valor que toma VAR en el bucle será Vi, el segundoVi + 1, el tercero (Vi + 1) + 1, etc. La modificación de dicho valor de incremento la realizaremos a través de la cláusula Step después del valor VfStep 2 implicará que en cada repetición del bucle el contador se incremente en dos unidades, Step 5 implicará que en cada repetición del bucle el contador se incremente en cinco unidades. Un paso negativo del tipo Step -1 supone que el contador decrece en vez de incrementarse. Si el paso es negativo, Vi necesariamente habrá de ser mayor que Vf, ya que en caso contrario no se producirá la entrada en el bucle.

Con este código se nos muestra en pantalla 3 veces hola, gracias a que se ha invertido el sentido del bucle:

Option Explicit
Dim VAR As Integer
Dim Vi As Integer
Dim Vf As Integer

Private Sub Form_Load()
Show
Vi = 1
Vf = 3
For VAR = Vf To Vi Step –1
    '[También supondría tres repeticiones For VAR = Vi to Vf]
    Print "hola"
Next VAR
End Sub



Con Visual Basic resulta admisible usar Next sin indicar la variable que está sirviendo de guía del bucle, pues todo bucle ha de tener un cierre. Sin embargo, no lo creemos recomendable pues puede dificultar la lectura y depuración de los programas.

La instrucción For ... Next es anidable dentro de sí misma o dentro de otros tipos de bucles o estructuras, debiendo seguir las pautas que ya hemos comentado.

SELECT CASE

INSTRUCCIÓN SEGÚN (CASO) HACER (SELECT CASE)

La sintaxis a emplear con Visual Basic para la instrucción Select Case es la siguiente:



 


Select Case [expresión]
Case [valor expresión 1]
Instrucción 1
Instrucción 2
Case [valor expresión 2]
Instrucción 3
Instrucción 4
.
.
.
Case [valor expresión n]
Instrucción k
Case Else
Instrucción m
End Select
 

La expresión a evaluar puede ser un valor numérico o una cadena de texto. Sólo se puede evaluar una expresión y no múltiples expresiones. La evaluación de expresiones puede ser:

a)   De coincidencia: por ejemplo, Case 12 indicaría que si la expresión evaluada vale 12 se ejecutarán las instrucciones anexas.

b)   De intervalo: usando la palabra clave To. Por ejemplo, Case 12 To 14 indicaría que si la expresión evaluada tiene un valor comprendido entre 12 y 14 (incluidos los extremos de los intervalos), se ejecutarán las instrucciones anexas.

c)   De comparación: usando la palabra clave Is. Por ejemplo, Case Is <= 14 indicaría que si la expresión evaluada tiene un valor menor o igual a 14 se ejecutarán las instrucciones anexas.

Cuando varios casos son válidos, sólo se ejecutan las instrucciones asociadas al primer caso verificado, siguiendo el flujo del programa por la siguiente instrucción después de End Select. Esto debemos tenerlo muy en cuenta, ya que si pretendemos que cuando se cumplan dos condiciones se ejecuten sendos bloques de instrucciones, convendrá hacerlo a través de la instrucción If en vez de a través de Select Case.

Las instrucciones Select Case se pueden anidar. Cada instrucción Select Case debe tener su correspondiente terminación End Select.

La instrucción Select Case presenta similitudes marcadas con la instrucción If - Then. Por ello, en general podremos conseguir resultados similares con ambas instrucciones y elegir usar una u otra dependerá de nuestro gusto y de cuál se adapte mejor a nuestros intereses, que en general serán ahorrar código y conseguir claridad para cumplir el objetivo. Otras veces será interesante anidar ambas instrucciones.

Prueba el siguiente código:

Option Explicit
Dim A As Integer

Private Sub Form_Load()
Show
A = 12
Select Case A
    Case 12
        Print "A vale 12"
    Case Is < 14
        Print "A es menor que 14"
    Case 160 To 200
        Print "A está comprendida entre 160 y 200"
    Case Else
        Print "No se ha verificado ninguna de las condiciones previstas"
End Select
End Sub



El resultado es que se muestra en pantalla "A vale 12". Sin embargo, a pesar de que la hipótesis  A < 14 se cumple, no llega a evaluarse y por tanto las instrucciones asociadas a este caso no se ejecutan.

ESTRUCTURAS DE DECISIÓN CON VISUAL BASIC

INSTRUCCIÓN SI … ENTONCES (IF … THEN) Y SI … ENTONCES – SINO (IF … THEN – ELSE)

La sintaxis a emplear con Visual Basic es muy similar a la que se estudia en los cursos de algoritmia y pseudocódigo, con la sustitución del Si por If, del Entonces por Then, del SiNo por Else y del Finsi por End If. La única salvedad a tener en cuenta es que Visual Basicpermite además de la escritura en bloques la escritura en una sola línea.

 
Sintaxis en bloque:

If [condición] Then
Instrucción 1
Instrucción 2
·
·
·
Instrucción n
Else
Instrucción A
Instrucción B
·
·
·
Instrucción Z
End If
 

Sintaxis en una sola línea:

If [condición] Then Instrucción 1 Else Instrucción A
 
También es posible encadenar varias acciones derivadas de un Then o de un Else en una sola línea. Sin embargo, recomendamos usar la opción de sintaxis en una sola línea exclusivamente para desarrollos sencillos como puede ser una instrucción en caso de que se cumpla la condición y otra en caso de que no se cumpla. Si intervienen varias instrucciones, siempre resultará más legible usar el formato de bloque.

La instrucción If ... Then es anidable dentro de sí misma, siendo siempre preferible el formato de bloque cuando se vayan a generar anidamientos.


Ejemplo:

If A > 7 And B < 5 Then
    Print "A es mayor que 7 y B menor que 5"
End If



También válido es:

If A > 7 And B < 5 Then Print "A es mayor que 7 y B menor que 5"


Si introducimos una cláusula Else el modelo es:

If A > 7 And B < 5 Then
    Print "A es mayor que 7 y B menor que 5"
Else
    Print "A no es mayor que 7 ó B no es menor que 5"
End If



También válido:

If A > 7 And B < 5 Then Print "A es mayor que 7 y B menor que 5" _
Else Print "A no es mayor que 7 ó B no es menor que 5"


EJERCICIO EJEMPLO CON IF THEN ELSE EN VISUAL BASIC

Crear un programa que pida un número entero distinto de cero y nos muestre en pantalla un mensaje indicándonos si el número es par o impar.

Nota: El procedimiento a emplear será basado en el uso del operador Mod.


 

SOLUCIÓN

Crearemos un Label de solicitud del número, un Textbox de entrada, un Command Button y un Label para el cálculo y el resultado. Le ponemos los nombres y organizamos los controles en pantalla como nos parezca correcto (no tiene por qué coincidir con lo que ponemos aquí). Los nombres que hemos empleado nosotros son: LabelPideNumTextNentero, CommandHallar yLabelResultado.

Option Explicit
Dim Num As Integer
Dim Res As Integer

Private Sub Form_Load()
Form1.Caption = "Determina naturaleza par o impar"
CommandHallar.Caption = "Determinar"
LabelPideNum = "Introduzca un nº entero"
End Sub

Private Sub CommandHallar_Click()
Num = Val(TextNentero)
Res = Num Mod 2
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
If Res = 0 Then
    LabelResultado = "El número es par"
Else
    LabelResultado = "El número es impar"
End If
End Sub
 

Gráficamente:



Hemos escrito el If ... Then – Else como un bloque en vez de como una única línea. El motivo para ello es que aporta mayor claridad y facilidad de interpretación.