fund a mentos vb net
TRANSCRIPT
1. Declaración de variables en Visual Basic .NET
Para empezar con las declaraciones de variables antes debemos de conocerlas, entonces a la
pregunta ¿Qué es una variable?, en términos generales podemos decir que es un espacio
en memoria de la computadora que tiene un nombre y un tipo, bien, ahora ¿Para qué
sirven las variables?, sirven para el almacenamiento de datos, estos pueden ser de tipo:
entero, decimal, fechas, cadenas y booleano conocidos como tipo de datos primitivos, ya de
ellos se derivan más. Al declarar una variable debemos de tener en cuenta lo siguiente: el
nombre de las variables no deben utilizar más de 255 caracteres, ni pueden ser palabras
reservadas del lenguaje de programación (Visual Basic .Net), podemos utilizar abreviaturas
del tipo de dato ya que nos servirá para el mejor control de nuestras variables. Dentro del
ámbito de las variables se encuentran las Constantes, una constante es un Valor que no
cambiará en el transcurso de la ejecución del programa. A continuación los ejemplos
respectivos.
Declaración de variables:
Dim NombreDeVariable [as tipo]
Dim nCantidad As Integer
Dim sNombre As String
Dim bDescontar As Booleano
Declaración de constante:
Const dTipoCambio As Double=3.2
Const nPersonas As Integer=5
Const sNombreWeb As String=”solocodigofuente”
Las palabras de color azul indican que es una palabra reservada, quiere decir que son
propias del Lenguaje de programación, la palabra Dim indica la que se creará alguna
variable.
Ámbito de las Variables: El ámbito de las variables determina su nivel de acceso, quiere
decir que una variable declarada dentro de un bloque de código, sólo podrá ser utilizado
dentro de ella, más no en otro bloque de código.
Ejemplo:
bloque_de_codgio_1()
Dim nCantidad As Integer
…
…
fin_de_bloque1
bloque_de_codigo_2()
Dim sNombre As String
…
…
fin_de_bloque2
Dentro del bloque1 tenemos la variable nCantidad de tipo numérico, esta variable no podrá
ser utilizado dentro del bloque2 ya que su ámbito es de tipo local, pudiendo ser declarado
fuera del bloque de código y así ser una variable publica, de la misma manera con la
variable sNombre del bloque2.
2. Estructura de control IF THEN en VB.NET
Las estructuras de control lógicas nos permiten encontrar una solución en casi todo tipo de
problemas, se utilizan cuando en el desarrollo de un problema debemos tomar una decisión
para establecer qué camino seguir en su solución
Para este tutorial, se utilizaran las variables A,B,C de tipo Integer.
ESTRUCTURA "IF THEN"
La estructura de control SI ENTONCES permite que el flujo del programa siga un camino
especifico si se cumple una CONDICION o CONJUNTO DE CONDICIONES, si la
condición no se cumple, no realiza este paso
El seudocódigo es:
01 SI [condición] ENTONCES
02 HACER OPERACION
03 FIN DE SI
Y su implementación en VB.NET
01 If A > B Then
02 Console.WriteLine("A es mayor")
03 End If
ESTRUCTURA "IF THEN ELSE"
La estructura selectiva SI ENTONCES/SINO permite que el flujo del programa se bifurque
por dos caminos distintos dependiendo si la CONDICION se cumple o no, si la condición
resulta verdadera, desarrollara ciertas operaciones y sino, desarrollara otras operaciones,
cuando se termine las operaciones, el ciclo del programa vuelve a la secuencia normal.
El seudocódigo es:
01 SI [Condicion] ENTONCES
02 HACER OPERACION 1
03 SINO
04 HACER OPERACION 2
05 FIN DE SI
Y el código en Visual Basic.net
01 If A > B Then
02 Console.WriteLine("A es mayor")
03 Else
04 Console.WriteLine("B es mayor")
05 End If
LA ESTRUCTURA "IF THEN" ANIDADO
La mayoría de los programas no cuentan con una sola estructura de selección, sino que
están compuestas de varias estructuras una después de la otra, estas son las estructuras de
selección anidadas.
Seudocódigo: 01 SI [condición 1] ENTONCES
02 HACER OPERACION 1
03 SINO SI [condición 2] ENTONCES
04 HACER OPERACION 2
05 SINO
06 HACER OPERACION 3
07 FIN DE SI
En VB.net
01 If A > B Then
02 Console.WriteLine("A es mayor que B")
03 ElseIf A > C Then
04 Console.WriteLine("A es menor que B pero mayor que C")
05 Else
06 Console.WriteLine("A es menor que B y C")
07 End If
3. Condicional multiple "SELECT CASE"
La estructura condicional múltiple SELECT CASE (si múltiple), nos permite que el flujo
del programa se bifurque en varias ramas y no solo en dos como en las estructuras If/Then.
Así, si se tiene un valor 1, se ejecuta la accion1, si se tiene un valor 2, se ejecuta la acción
2, si toma un valor N, se ejecuta una acción N. y después se continúa con el resto del
programa.
Seudocódigo
01 SI [CONDICION] TOMA
02 Valor 1: Hacer acción 1
03 Valor 2: Hacer acción 2
04 Valor 3: Hacer acción 2
05 ...
06 Valor N: Hacer acción N
07 FIN
La estructura selectiva es muy flexible, lo que permite aplicarla de diferentes formas
1. Esta aplicación pide un número por consola y si este se encuentra entre 1,2,3 ó 4, escribe en
pantalla su valor en formato String, si el número no se encuentra dentro de ese rango, escribe
"fuera de rango"
01 Module Module1
02
03 Sub Main()
04 Dim numero As Integer
05 numero = Val(Console.ReadLine)
06 Select Case numero
07 Case 1
08 Console.WriteLine("UNO")
09 Case 2
10 Console.WriteLine("DOS")
11 Case 3
12 Console.WriteLine("TRES")
13 Case 4
14 Console.WriteLine("CUATRO")
15 Case Else
16 Console.WriteLine("FUERA DE RANGO")
17 End Select
18 Console.ReadLine()
19 End Sub
20
21 End Module
2. Este programa pide un numero por consola, después evalua el numero introducido, si el numero
es "0", escribe "el numero es cero", si el numero esta entre el rango de 1 a 10, escribe "el numero
se encuentra entre 1 y 10", si el numero es mayor a 10 pero menor a 20, escribe "el numero es
mayor a 10 pero menor a 20", si el numero tiene uno de los valores 20, 30, 40, escribe "el numero
es 20, 30 ó 40", si el numero no entra en ninguno de esos rangos, el programa escribe "no se que
numero es..."
01 Module Module1
02
03 Sub Main()
04 Dim numero As Integer
05 numero = Val(Console.ReadLine)
06 Select Case numero
07 Case 0
08 Console.WriteLine("el numero es Cero")
09 Case 1 To 10
10 Console.WriteLine("el numero se encuentra entre 1 y
10")
11 Case Is > 10, Is < 20
12 Console.WriteLine("el numero es mayor a 10 pero menor
a 20")
13 Case 20, 30, 40
14 Console.WriteLine("el numero es 20, 30 ó 40")
15 Case Else
16 Console.WriteLine("no se que numero es...")
17 End Select
18 Console.ReadLine()
19 End Sub
20
21 End Module
En este ejemplo hacemos uso de SELECT CASE y para evaluar correctamente el numero ingresado
hacemos uso de Case 1 to 10, esto quiere decir que ejecutara la acción si el numero está en el
rango de 1 a 10 , es equivalente a escribir 1,2,3,4,5,6,7,8,9,10.
También se hace uso de "Case Is > 10, Is <20" , esto quiere decir que ejecutara la acción SI el
numero es mayor a 10 Y menor a 20.
4. Estructura Do While Loop
La estructura Do While Loop nos permiten realizar bucles que se repiten mientras una
condición dada sea cierta, osea, cuando la condición no se cumpla, se sale del bucle y se
continua con el programa.
El seudocódigo es
01 MIENTRAS <Condicion> HACER
02 Accion 1
03 Accion 2
04 ...
05 Accion n
06 FIN MIENTRAS
El diagrama de flujo
Ejemplo: Escribir numeros mientras el contador sea menor o igual a 10
Module Module1
02
03 Sub Main()
04 Dim contador As Integer
05 contador = 1
06 Do While contador <= 10
07 Console.WriteLine("Contador: " & contador)
08 contador = contador + 1
09 Loop
10 Console.Read()
11 End Sub
12
13 End Module
A veces también es necesario que la "acción" se realice una vez antes de ejecutar la
condición del bucle While, para esto se utiliza la forma Do Loop While
El seudocódigo en español
01 REPETIR
02 Accion 1
03 Accion 2
04 ...
05 Accion 3
06 MIENTRAS QUE <condición>
Y el diagrama de flujo
Ej.: El mismo ejemplo anterior pero esta vez la condición esta al final
01 Module Module1
02
03 Sub Main()
04 Dim contador As Integer
05 contador = 1
06 Do
07 Console.WriteLine("Contador: " & contador)
08 contador = contador + 1
09 Loop While contador <= 10
10 Console.Read()
11 End Sub
12
13 End Module
Estos bucles se ejecutan cuando la condición dada es verdadera (TRUE), pero si queremos
que el ciclo se ejecuta mientras la condición sea falsa (FALSE), debemos cambiar el
WHILE por el UNTIL, quedando para el primer caso de la siguiente forma:
01 Module Module1
02
03 Sub Main()
04 Dim contador As Integer
05 contador = 1
06 Do Until contador > 10
07 Console.WriteLine("Contador: " & contador)
08 contador = contador + 1
09 Loop
10 Console.Read()
11 End Sub
12
13 End Module
Y para la segunda forma con la condición al final:
01 Module Module1
02
03 Sub Main()
04 Dim contador As Integer
05 contador = 1
06 Do
07 Console.WriteLine("Contador: " & contador)
08 contador = contador + 1
09 Loop Until contador > 10
10 Console.ReadLine()
11 End Sub
12
13 End Module
5. Estructura DESDE (For / Next)
La estructura repetitiva DESDE (For/Next) es un ciclo de repetición controlado por "contador"
debido a que esta estructura se la emplea cuando se conoce de antemano la cantidad de
iteraciones que realizar el bucle.
El contador que se utiliza se denomina contador automático, ya que actúa como contador
incrementando o decrementando su valor a una razón constante, a partir de un valor inicial hasta
un valor final fijados con anterioridad o conocidos.
Representación de la estructura DESDE
Codificación
1) Supongamos que deseamos imprimir numeros del 1 al 10, ambos incluidos, el código necesario
es:
01 Dim i As Integer
02 For i = 1 To 10
03 Console.WriteLine("Linea " & i)
04 Next
En este caso no se especificó ningún tipo de incremento, por lo que se asume que el contador (i)
será incrementado en una unidad a cada iteración.
2) Si deseamos imprimir solo los numeros pares de 1 a 10, el código es:
01 Dim i As Integer
02 For i = 0 To 10 Step 2
03 Console.WriteLine("numero " & i)
04 Next
Para especificar que el contador se incremente de a 2 o N unidades, se utiliza la palabra reservada
STEP, el valor que toma step, puede ser positivo, negativo e incluso cero, en este último caso, el
ciclo se convierte en un ciclo sin fin.
3) El ciclo DESDE, puede terminar antes de que el contador llegue a su FIN, para eso se utiliza la
palabra reservada Exit For, esta sentencia provoca la salida inmediata del bucle, por ej. En el
siguiente código el contador tiene un valor inicial de 1 hasta 10 e imprimir los numeros en cada
iteración, pero se ha añadido la condición de que cuando llegue a 5, el ciclo se rompa y salga
inmediatamente del bucle.
01 Dim i As Integer
02 For i = 1 To 10
03 If i = 5 Then Exit For
04 Console.WriteLine("numero " & i)
05 Next
4) El ciclo DESDE también es utilizado para recorrer cadenas de caracteres, para ello la sintaxis es
01 PARA CADA [elemento de cadena] EN [cadena]
02 realizar acción
03 FIN
Si se quiere imprimir cada carácter de la variable "CADENA" la codificación es:
01 Dim cadena As String
02 cadena = "Hola Mundo"
03 For Each cadena In cadena
04 Console.WriteLine(cadena)
05 Next
Se va tomando los valores de cadena(0) hasta cadena(n) y se imprimen los valores
y el resultado:
6. Bucles condicionales
Los bucles condicionales o controlados por condición se utilizan cuando no se conoce a priori, el
número exacto de iteraciones a realizar. Existen diferentes técnicas para realizar el control de un
bucle:
1. Solicitar al usuario la continuación de un bucle. Este método consiste simplemente en pedir al
usuario más entradas por teclado
Ejemplo: va sumando enteros mientras la respuesta del usuario sea "S" o "s"
01 Sub Main()
02 Dim respuesta As String
03 Dim suma As Integer
04 suma = 0
05 Do
06 Console.WriteLine("Introduzca un numero cualquiera")
07 Console.Write("Numero: ")
08 suma = suma + Val(Console.ReadLine)
09 Console.WriteLine("para continuar presione s/S")
10 respuesta = Trim(Console.ReadLine())
11 Loop While (respuesta = "S") Or (respuesta = "s")
12 Console.WriteLine("Suma total : " & suma)
13 Console.ReadLine()
14 End Sub
2.- Valor Centinela. Un centinela es un valor especial utilizado para señalar el final de una lista de
datos, el valor elegido debe ser totalmente distinto de los posibles valores de la lista para que se
pueda utilizar para señalar el final de la lista.
Ejemplo: si el bucle lee una lista de numeros positivos, un número negativo se puede utilizar como
valor centinela.
01 Sub Main()
02 Dim suma As Integer
03 Dim numero As Integer
04 suma = 0
05 Console.Write("Numero: ")
06 numero = Val(Console.ReadLine)
07 Do While (numero >= 0)
08 suma = suma + numero
09 Console.Write("Numero: ")
10 numero = Val(Console.ReadLine)
11 Loop
12 Console.WriteLine("Suma total : " & suma)
13 Console.ReadLine()
14 End Sub
3. Uso de banderas o interruptores. Una bandera o interruptor (Flag) es una variable lógica que se
utiliza para conservar el estado verdadero o falso de una condición. Se denomina bandera o
interruptor por asociarse a un interruptor (encendido/apagado) o a una bandera (Arriba/abajo), el
valor del interruptor debe inicializarse antes de comenzar el bucle para preparar la siguiente
iteración.
Ejemplo: leer enteros hasta que se introduce un número positivo
01 Sub Main()
02 Dim bandera As Boolean
03 bandera = False
04 Do While Not bandera
05 Console.WriteLine("Escriba un numero mayor a cero")
06 Console.Write("Numero: ")
07 bandera = Val(Console.ReadLine) > 0
08 If Not bandera Then
09 Console.WriteLine("El numero es negativo")
10 End If
11 Loop
12 Console.WriteLine("Termino el ciclo")
13 Console.ReadLine()
14 End Sub
7. Arreglos en VB.NET
Un array es un conjunto finito y ordenado de elementos homogéneos. Ordenado porque los
elementos n-esimo de un array puede ser identificado, y homogéneo porque todos los elementos
del array son del mismo tipo de datos.
El arreglo más simple es el unidimensional (matriz de una dimensión). A diferencia de Visual Basic
clásico que nos permitía especificar los límites de un arreglo, en .NET un arreglo siempre empieza
en 0 (cero), por tanto el arreglo tendrá un elemento más del valor indicado como índice superior.
En el ejemplo siguiente, se tiene un vector X de 5 elementos de tipo real. Se nota que empieza en
cero, por tanto su índice superior es 4 y no 5
DECLARACION DE UN ARREGLO EN VB.NET
01 DIMENSION Arreglo(indice_superior) TIPO_DE_DATOS
Donde DIMENSION puede ser DIM, PUBLIC, PRIVATE, y TIPO DE DATOS, es el tipo
de datos que tendrá el arreglo, por ejemplo
01 'declara un arreglo con 12 elementos de tipo string
02 Dim meses(11) As String
03 'declara un arreglo con 7 elementos de tipo entero
04 Private dia_semana(6) As Byte
05 'declara un arreglo con 24 elementos de tipo real
06 Public hora(23) As Double
Ejemplo:
Se desea construir una aplicación que lea una lista de calificaciones de una clase y calcule
su media e imprima la lista de calificaciones mayores a la media.
01 Module Module1
02 'constante que sirve para poner un limite al array
03 Const limite = 15
04 'se crea un array de tipo real
05 Dim lista_notas(limite) As Single
06
07 Sub Main()
08 'declaraciones de variables
09 Dim numero As Integer
10 Dim suma As Single
11 Dim media As Single
12
13 Console.Write("Introduzca numero de calificaciones: ")
14 numero = Val(Console.ReadLine)
15 If numero > limite Then
16 Console.WriteLine("No se procesan mas de " & limite & "
calificaciones")
17 Else
18 suma = 0
19 Console.WriteLine("Introduzca calificaciones")
20 'a medida que el usuario introduce las calificaciones
21 'estas se colocan en el array
22 For i = 0 To numero - 1
23 Console.Write(" Nota[" & (i + 1) & "]= ")
24 lista_notas(i) = Val(Console.ReadLine)
25 suma = suma + lista_notas(i)
26 Console.WriteLine()
27 Next
28 'se obtiene la media
29 media = suma / numero
30 Console.WriteLine("La media es: " & media)
31 Console.WriteLine("---------------------------------------
----------")
32 Console.WriteLine("Lista de Calificaciones mayores a la
media es")
33 ' se recore el array buscando calificaiones mayores a la
media
34 For i = 0 To numero - 1
35 If lista_notas(i) > media Then
36 Console.WriteLine(" " & lista_notas(i))
37 End If
38 Next
39 Console.WriteLine("---------------------------------------
----------")
40 End If
41 Console.WriteLine("presione una tecla para terminar...")
42 Console.ReadLine()
43 End Sub
44
45 End Module
Resultado:
8. Arreglos con N-dimensiones "Matrices"
Un arreglo de dos o más dimensiones es denominado también MATRIZ o TABLA. En la
práctica no es común trabajar con matrices de más de 3 dimensiones, aunque es posible
crearlos.
Una matriz bidimensional, está compuesto por FILAS y COLUMNAS, así por ejemplo, en
la imagen de abajo tenemos una matriz de 5 columnas por 5 filas, donde para ubicar un
elemento de esa matriz, se debe especificar ambas dimensiones matriz(fila, columna).
DECLARACION DE UNA MATRIZ EN .NET
Una matriz se declara al igual que un arreglo unidimensional, pero especificando todas las
dimensiones que se deseen, así por ejemplo, para declarar una matriz HORARIO de tipo STRING,
que tendrá 7 columnas (días de la semana) y 24 filas (horas) se tiene:
01 Dim HORARIO(23, 6) As String
También puede declarase una matriz sin rango inicial, esto se utiliza cuando no sabemos de
antemano cuantas dimensiones podrá tener una matriz, por ejemplo:
01 Dim matriz(,) As Byte
Se declara una matriz de tipo byte, esta está vacía y hasta que no se especifique el rango de las
dimensiones, al tratar de utilizar un elemento de esa matriz, este causa una excepcion.
Para declarar las dimensiones una vez creada la matriz, se utiliza la instrucción REDIM:
01 ReDim matriz(fila, columna)
Ejemplo:
Escribir un programa que permita multiplicar dos matrices leídas por teclado y visualizar la matriz
resultante.
Solución: Si las matrices A,B y la matriz resultante es C, se pueden multiplicar si el numero de
columnas de la matriz A es igual al número de filas de la matriz B; entonces la matriz C tiene el
numero de filas de la matriz A y el numero de columnas de la matriz B. Los elementos de la matriz
C se obtienen a partir de la siguiente ecuación:
Dónde:
Código fuente:
01 Module Module1
02 Const maximo As Byte = 19
03
04 'se crea una estructura tipo matriz con sus propios procedimientos
05 Structure matriz
06
07 Public m(,) As Single
08
09 Public Sub New(ByVal f As Single, ByVal c As Single)
10 ReDim m(f, c)
11 End Sub
12
13 Public Sub introducir(ByVal t As String, ByVal nf As Byte,
ByVal nc As Byte)
14 Dim i, j As Byte
15 Console.WriteLine(t)
16 Console.WriteLine("------------------------------------")
17 For i = 0 To nf
18 For j = 0 To nc
19 Console.Write("Matriz[" & i & "," & j & "]= ")
20 m(i, j) = Val(Console.ReadLine)
21 Next
22 Next
23 Console.WriteLine("------------------------------------")
24 End Sub
25
26 Public Sub imprimir(ByVal t As String, ByVal nf As Byte, ByVal
nc As Byte)
27 Dim i, j As Byte
28 Console.WriteLine(t)
29 For i = 0 To nf
30 For j = 0 To nc
31 Console.Write(m(i, j) & " ")
32 Next
33 Console.WriteLine()
34 Next
35 Console.WriteLine()
36 End Sub
37
38 End Structure
39
40 Dim A As matriz = New matriz(maximo, maximo)
41 Dim B As matriz = New matriz(maximo, maximo)
42 Dim C As matriz = New matriz(maximo, maximo)
43
44 Sub Main()
45 Dim num As Byte
46 Console.Write("Filas y columnas [i,j] = ")
47 num = Val(Console.ReadLine) - 1
48
49 If num > maximo Then
50 Console.WriteLine("el limite es un maximo de " & maximo &
" filas y columnas")
51 Else
52 A.introducir("Matriz A", num, num)
53 B.introducir("Matriz B", num, num)
54 multiplicar(num)
55 Console.Clear()
56 A.imprimir("Matriz A", num, num)
57 B.imprimir("Matriz B", num, num)
58 C.imprimir("Matriz A * B", num, num)
59 End If
60 Console.WriteLine("presione una tecla para terminar...")
61 Console.ReadLine()
62 End Sub
63
64 'procedimiento publico que calcula el producto de dos matrices
65 Public Sub multiplicar(ByVal num As Byte)
66 Dim i, j, k As Byte
67 For i = 0 To num
68 For j = 0 To num
69 For k = 0 To num
70 C.m(i, j) = C.m(i, j) + A.m(i, k) * B.m(k, j)
71 Next
72 Next
73 Next
74 End Sub
75 End Module
En la solución de este problema, se hace uso de una STRUCTURE (visto en un post anterior) donde
se declara la matriz y sus métodos. También se especifica como una constante el valor maximo
que podrá tener una matriz (columnas y filas).
Resultado: