ENGIN310
Tutorial Visual Basic Programacin y Algoritmos
INICIANDO EN VISUAL BASIC
Para comenzar a programar en Visual Basic, debemos abrir una aplicacin de consola como se muestra a
continuacin:
Las aplicaciones de consola son una manera sencilla de crear y programar diferentes procesos.
ESTRUCTURA BSICA DE UN PROGRAMA
La estructura mnima que puede tener un programa Visual Basic para ser utilizado en la consola es la siguiente:
El scope de una variable se refiere a la partes del cdigo donde es posible utilizarla. El bloque de un cdigo es
todo aquel cdigo que tiene el mismo nivel. En el caso de Visual Basic, es todo lo que se encuentra dentro de
los parntesis {}
Una variable siempre se puede usar en el mismo bloque en el que se declar y en los bloques hijos.
VARIABLES
Para poder utilizar las variables, se deben hacer al menos dos operaciones claves:
1. Declaracin: se establece que existir una variable con un cierto nombre y con un cierto tipo de
dato.
2. Asignacin: se almacena un valor del mismo tipo que se ha declarado en la variable.
Las variables y datos pueden ser de los siguientes tipos:
1.- Integer: nmeros enteros.
2.- Double: nmeros reales.
3.- String: cadena de texto. Se debe siempre escribir el valor entre comillas.
4.- Boolean: valores binarios, que toman el valor de verdadero o falso. Es usado en el caso de las
banderas, las cuales sirven para recordar algn hecho o dato.
A continuacin, se muestran algunas de las formas de crear una variable:
En cualquiera de las 3 formas, lo que hace C# es crear una variable llamada x:
a.- Forma 1: Visual Basic reconoce una variable del tipo integer llamada nombre_variable, que
almacenar nmeros naturales.
b.- Forma 2: C Visual Basic reconoce una variable del tipo integer llamada nombre_variable, que
almacenar nmeros naturales y que tiene el valor 1 asignado a ella.
c.- Forma 3: Visual Basic reconoce una variable del tipo integer llamada nombre_variable, que
almacenar nmeros naturales y que tiene el valor 1 asignado a ella. Pese a que no se indic que era del tipo
integer, al asignarle el valor 1, inmediatamente Visual Basic asume que es un integer. Si hubisemos asignado
una palabra, Visual Basic hubiese asignado que era una variable string, pero este ejemplo no es el caso.
COMANDOS DE ENTRADA Y SALIDA
Para que el programa entregue datos, utilizamos:
1.- Console.Write: el texto introducido por el usuario se escribir a continuacin de la frase que
escribamos con Console.Write.
2.- Console.WriteLine: muestra el texto que escribimos y luego avanza a la siguiente lnea.
Si se necestian recibir datos del exterior, usamos:
1.- Console.ReadLine: lee lo que se escribe en la consola. Recibe todos los caracteres hasta un smbolo
de nueva lnea.
2.- Console.ReadKey: la tecla presionada por el usuario se muestra en la ventana de la consola. Siempre
es recomendable usar Console.ReadKey, pues as nos aseguramos de que la consola no se cierre
automticamente tras su uso, de modo tal que podemos ver los resultados.
El valor recibido se debe asignar inmediatamente a una variable, en caso de que nos interese usarlo
posteriormente.
PARSE
Los comando que reciben entrada de datos entregan siempre su informacin como un string.
En caso de que necesitemos escribir un nmero en Visual Basic, debemos realizar una conversin.
Tipos de conversiones:
1.- Boolean.Parse: convierte un string en un valor boolean.
2.- Double.Parse: convierte un string en un valor double.
3.- Integer.Parse: convierte un string en un valor integer.
CICLOS
CICLO WHILE
Ejecuta una instruccin o bloque de instrucciones repetidamente hasta que una expresin especificada se evala
como true. La instruccin While siempre comprueba la condicin antes de iniciar el ciclo. Se pueden anidar
ciclos While colocando un ciclo dentro de otro.
Su sintaxis es:
1.- While condicin: Obligatorio. Es una condicin que nos entrega un valor del tipo boolean.
2.- Statements: Opcional. Corresponde a una o ms instrucciones a continuacin de While, que se
ejecutan cada vez que la condicin es True.
3.- EndWhile: indica el fin del ciclo o bucle while.
4.-Break: termina abruptamente el ciclo while.
Si el ciclo es infinito, entonces la condicin de While es true. En este caso es necesario utilizar break.
CICLO FOR El ciclo for ejecuta una instruccin o bloque de instrucciones hasta que una determinada expresin se evala
como false. El bucle for es recomendado para procesar secuencialmente. Requiere de un contador para
funcionar.
Su modo de operar es:
1.- Primero evala el valor inicial del contador.
2.- A continuacin, mientras el valor del contador sea menor que un cierto nmero, la condicin se
evala como true y ejecuta la instruccin indicada.
3.- Cuando el contador es mayor que el nmero indicado, la condicin se evala como false y el control
se transfiere fuera del bucle.
CICLO DO WHILE La instruccin do ejecuta una instruccin o bloque de instrucciones repetidamente hasta que una expresin
especificada se evale como false.
A diferencia del ciclo While, un bucle Do-While se ejecuta una vez antes de que se evale la expresin
condicional.
Se puede salir del bucle en cualquier punto utilizando la instruccin break.
FUNCIONES
Una funcin es una relacin entre dos conjuntos que asigna a cada elemento del primero un elemento del
segundo o ninguno. Visual Basic tiene ciertas funciones matemticas predeterminadas que el usuario puede
utilizar si es necesario.
En la siguiente tabla, se muestran algunas funciones matemticas:
Nombre Descripcin
Abs() Devuelve el valor absoluto de un nmero.
Cos() Devuelve el coseno de un ngulo.
Exp() Devuelve el valor "e" elevado a la potencia especificada.
Floor() Devuelve el nmero entero ms grande menor o igual que el nmero
especificado.
Log() Devuelve el logaritmo natural (en base e) de un nmero especificado.
Log10 Devuelve el logaritmo en base 10 de un nmero especificado.
Max() Devuelve el mayor de dos nmeros.
Min() Devuelve el menor de dos nmeros.
Pow Devuelve un nmero especificado elevado a la potencia especificada.
Round() Redondea un valor al valor entero ms prximo.
Sign() Devuelve un valor que indica el signo de un nmero.
Sin() Devuelve el seno de un ngulo especificado.
Sqtr() Devuelve la raz cuadrada de un nmero especificado.
Tan() Devuelve la tangente de un ngulo especificado.
Truncate() Devuelve la parte entera de un nmero decimal.
Para llamarlas debemos escribir: Funcin.Math(valor).
Si queremos crear una nueva funcin, debemos hacerlo bajo el programa principal. Esto para luego llamarla
desde el programa principal (Main()).
Las funciones o procedimientos en Visual Basic corresponde a los subprocesos que tienen una funcionalidad
especfica.
Todas las funciones deben tener un nombre y se agrega una lista de parmetros entre parntesis, separados por
coma. Siempre se debe definir el tipo de resultado que entregar la funcin, si es que la funcin entrega algn
tipo de dato. Las funciones que retornan algn valor, deben ejecutar en algn momento la instruccin Return
x, donde x es el valor de la variable que tiene el mismo tipo de dato que en l se defini como tipo de retorno
en la forma de la solucin.
Para crear una nueva funcin, debemos indicar su nombre, el tipo de parmetros que recibe y el tipo de
parmetros que retorna. Los parmetros de entrada pueden ser:
1.- ByVal: los parmetros de entrada pueden ser solamente usados por la funcin, pero no modificados.
2.-ByRef: los parmetros de entrada pueden ser usados y modificados por la funcin.
A continuacin, se da un ejemplo prctico de una funcin creada.
ARREGLOS
Un arreglo se puede entender como una cajonera que almacena cierto tipo de datos.
DECLARACIN Para definir un arreglo, debemos indicar su nombre, cuntos cajones tendr y el tipo de datos que almacenar.
CMO LLENAR UN ARREGLO Para llenar un arreglo, tenemos dos mtodos:
1.-Mtodo directo: insertamos manualmente los datos, indicando la posicin que adquirirn.
2.-Mtodo indirecto: insertamos los datos por medio de un ciclo.
Notas:
1.-La variable i no se ha definido previamente. Se crea y se usa slo dentro del ciclo for.
2.-En el ciclo for, se debe indicar el trmino. Si este corresponde a un n que ingres el usuario, entonces
debemos poner hasta n-1.
CMO RECORRER UN ARREGLO
Para mostrar un arreglo, debemos utilizar un ciclo for each. Esto dado que este ciclo recorrer uno a uno los
cajones de nuestra cajonera.
Nota: La variable cajn no se ha definido previamente. Se crea y se usa slo dentro del ciclo for each.
EJEMPLO PRCTICO A continuacin, crearemos un programa que permita almacenar los animales de un zoolgico y que luego
imprima en pantalla sus nombres.
Cdigo
Output
Si bien este ejemplo parece bastante simple, en general podemos trabajar de la misma forma todos los arreglos.
Esta es una forma bsica para manipular arreglos.
STRINGS
Un string es una cadena de caracteres, el cual tiene las siguientes propiedades:
Funcin Qu hace Sintaxis Ejemplo
Substring Corta un pedazo de la cadena palabra.substring(palabra inicial, cantidad de caracteres)|
Palabra: Hola pedazo: palabra.subtring(0, 2) Pedazo = ho
Lenght Dice el largo de una cadena, contando desde cero
palabra.lenght() Palabra = hola Palabra.lenght() = 3
Contains Indica si una cadena contiene o no un valor determinado, por ende, me da un valor
palabra.contains() Palabra = hola palabra.contains("h") Resultado = verdadero
Trim Quita los espacios en blanco al principio y al final de una cadena
palabra.trim() Palabra = hola mundo palabra.trim()= hola mundo
InStr Busca una cadena dentro de otra palabra.InStr(posicin desde donde empezar a buscar, string donde voy a buscar , qu string voy a buscar)
Palabra = hola X = InStr(0, palabra, "I") X = 2.
ToUpper Cambia una cadena a maysculas
palabra.toUpper() Palabra =hola palabra.ToUpper() = HOLA
ToLower Cambia una cadena a minsculas palabra.toLower() Palabra = Hola palabra.toLower() = hola
LISTAS
Una lista es un conjunto de elementos relacionados a los cuales se puede acceder por su ndice. Proporciona
mtodos para buscar, ordenar y manipular datos. A diferencia de los arreglos, estos no tienen un tamao
predefinido.
DECLARACIN Se debe crear una nueva lista para hacer la asignacin de la variable de tipo de lista que se ha declarado. Una
lista se declara siguiendo la sintaxis que se muestra a continuacin:
Dim Nombre_Lista as List(Of Tipo_Variable) = New List(Of Tipo_Variable)
Esto es, por ejemplo:
PROPIEDADES A continuacin, se muestran algunas propiedades de las listas:
Nombre Descripcin
Add Agrega un elemento a la lista.
Count Obtiene el nmero de elementos contenidos en una lista.
Item Devuelve la posicin en la que se encuentra un elemento especificado.
Clear Limpia todos los valores de la lista y la deja vaca.
Contains Determina si un elemento se encuentra en la lista.
ConvertAll Convierte en otro tipo los elementos incluidos en la lista actual y devuelve una lista que contiene
los elementos convertidos.
Equals Determina si el objeto especificado es igual al objeto actual.
Exists Determina si la lista contiene elementos que cumplen con las condiciones especificadas.
FindAll Recupera todos los elementos que coinciden con las condiciones definidas por el predicado
especificado.
ForEach Realiza una accin especificada en cada elemento de la lista.
Insert Inserta un valor especificado en una posicin determinada.
Remove Quita un valor de la lista.
Reverse Invierte el orden de los elementos de la lista.
Sort Ordena los elementos de una lista.
CMO LLENAR UNA LISTA 1.-Mtodo directo: insertamos manualmente los datos, indicando la posicin que adquirirn.
2.-Mtodo indirecto: insertamos los datos por medio de un ciclo.
CMO RECORRER UNA LISTA Para mostrar los valores de una lista, debemos proceder del siguiente modo:
Nota: cabe destacar que la variable value es creada y utilizada solamente dentro del ciclo for each.
EJEMPLO PRCTICO Crearemos una lista que permita almacenar tres nombres de animales de un zoolgico y que luego muestre en
orden alfabtico a estos animales:
Cdigo
Output
ESCRITURA Y LECTURA DE ARCHIVOS
StreamReader Para trabajar con archivos externos al programa, utilizamos la clase StreamReader. A continuacin, veremos
paso a paso cmo implementar esta clase. Supongamos que tenemos un block de notas con los siguientes datos:
Nombre del producto;precio unitario;cantidad
Nuestro objetivo consiste en leer este archivo y guardar en tres listas distintas los valores correspondientes.
Paso 1: escribir Imports System.IO. Esta instruccin permite hacer referencia a archivos externos al programa.
Paso 2: crear una variable del tipo string para almacenar la ruta del archivo.
Paso 3: revisar que el archivo exista o que la ruta sea correcta. Esto lo hacemos con el mtodo File.Existis, el
cual determina si existe o no el archivo especificado. Entre parntesis, indicamos la direccin del archivo que
revisar. Recordemos que en el paso 2 creamos una variable del tipo string para guardar esta informacin.
Si el archivo no existe, entonces le enviaremos un mensaje al usuario.
Paso 3: crear una variable del tipo StreamReader, la cual nos permitir leer archivos externos al programa.
Paso 4: crear una variable string para almacenar las lneas recibidas del archivo.
Paso 5: crear un ciclo para leer el archivo. Para leer el archivo, crearemos un ciclo que nos permita leer lnea a
lnea el archivo. Este ciclo acabar cuando la ltima lnea sea vaca. Visual Basic tiene un comando especial
llamado Nothing que sirve para especificar que algo sea vaco. Este ciclo puede ser de dos tipos:
While endwhile: si decidimos utilizar un ciclo while, entonces debemos leer fuera del ciclo la primera
lnea del archivo. Esto para asegurarnos de que el archivo no est vaco. Las dems lneas se leern
dentro del ciclo.
Do-loop: el ciclo do tiene la particularidad de que efecta una vez la instruccin y luego evala la
condicin y si sta es verdadera, evala nuevamente los enunciados. Este proceso contina hasta que la
condicin sea falsa. Lo anterior implica que no es necesario leer la primera lnea fuera del ciclo.
Para este ejemplo, utilizaremos el ciclo while.
Paso 6: separar las lneas. Dado que el archivo que estamos leyendo es del tipo Nombre del
producto;preciounitario;cantidad, debemos separar las palabras, segn el criterio ;. Para esto, seguiremos los
siguientes pasos:
6.1.- Crear una lista para almacenar cada uno de los valores.
6.2.- Crear un arreglo: antes de guardar los valores en las listas, debemos recordar que la funcin Split,
que utilizaremos ms adelante, nos entrega como resultado un arreglo, por lo cual no podemos guardar
directamente los valores en las listas. Para esto, crearemos un arreglo que nos permita guardar el resultado de la
funcin Split.
Observaciones:
El arreglo es del tipo string porque la funcin Split nos entrega una variable del tipo string.
No es necesario indicar la cantidad de cajones que tiene este arreglo, de hacerlo la instruccin
correspondera a cajonera(2).
6.2.- Crear un separador: este separador nos permitir indicar cul es el criterio de separacin de cada
lnea. En este caso, corresponde a ;, pero podra ser de cualquier tipo. Para guardar a este separador,
utilizaremos una variable el tipo char. Una variable del tipo char corresponde a un solo carcter.
6.3.- Utilizar la funcin Split y guardar la informacin en el arreglo: con la funcin Split especificamos
que cortaremos la lnea leda con el argumento ;, para el cual creamos una variable previamente. Una vez que
utilizamos esta funcin, guardamos inmediatamente el resultado en la cajonera. Notemos que para llenar este
arreglo debemos proceder de una forma diferente a las que conocemos, lo cual se debe a que la funcin Split
llena de manera inmediata los cajones del arreglo.
6.4.- Recorrer la cajonera y guardar los valores en las listas correspondientes. Para esto, debemos extraer
de cada cajn los valores previamente guardados. Esto lo haremos manualmente, ya que conocemos la posicin
exacta de cada valor.
Observacin: notar que para la columna precios y cantidad, debemos realizar un Parse. Esto porque la
lista precios y cantidad almacena variables slo del tipo integer.
7.-Cerrar el archivo: SIEMPRE que terminamos de usar el StreamReader, debemos cerrar el archivo
externo. Esto lo hacemos con la instruccin Close.
Siguiendo paso a paso las instrucciones anteriores, podemos leer un archivo externo al programa. Los
pasos 6.2 y 6.3 pueden cambiar, dependiendo de las especificaciones que tenga el problema.
Streamwriter La clase StreamWriter nos permite operar sobre un archivo externo al programa, escribiendo en l. A
continuacin, seguiremos las siguientes instrucciones para utilizar esta clase:
Paso 1: escribir Imports System.IO. Esta instruccin permite hacer referencia a archivos externos al programa.
Paso 2: indicar la ruta en la cual guardaremos el archivo. Adems, debemos especificar el nombre del archivo y
su tipo.
Paso 3: crear una variable del tipo StreamWriter para escribir en el archivo externo.
Observacin: si indicamos el argumento true, entonces esto indica que si ya existe un archivo con la misma
direccin y el mismo nombre, entonces escribir al final del archivo las nuevas lneas indicadas. Es importante
destacar que esta instruccin es optativa y que no borra lo que exista en el archivo existente, slo escribe al final
de ste las nuevas lneas.
Paso 3: escribir en el archivo.
Paso 4: cerrar el archivo. Una vez que terminamos de escribir en el archivo, debemos cerrarlo. Esta instruccin
se debe dar SIEMPRE al programa.