0% encontró este documento útil (0 votos)
7 vistas

06 - Programacion con Visual Basic

Cargado por

franjamer
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas

06 - Programacion con Visual Basic

Cargado por

franjamer
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 46

Laboratorio de Computadoras 6° 2da - EPET N°15

Profesor: Luciano Laurin

Introducción a Visual Basic

¿Qué es la programación? 3
¿Qué es un lenguaje de programación? 3
¿Qué es un programa? 3

Etapas en el desarrollo de un programa 4


Análisis del problema 5
Estudio del problema 5
Algoritmos 5
Implementación del programa 6

Tipos de lenguaje de programación 6


Lenguajes máquina 6
Lenguajes de bajo nivel 7
Lenguajes de alto nivel 7

Modelos de programación 7
Programación lineal 8
Programación procedural 8
Programación estructurada 9
Programación orientada a objeto (OOP) 10

El archivo ejecutable y su proceso de creación 11


Interfaces de usuario 12
Las herramientas para la creación de programas 12

Proyectos en Visual Studio .NET 14


Creación de un proyecto 14

Tipos de Datos 18
Simples 18
Compuestos 18
Definidos por el programador 18
Identificadores 18
Palabras reservadas 18

Estructura de un programa 19
Ubicación del código en el programa 19

Procedimientos 23
Llamada a un procedimiento Sub 24
Sintaxis de un procedimiento Function 25
Llamada a un procedimiento Function 26

1
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Estructuras de control 28
Selección 28
Repetición 30

Construcciones derivadas de las estructuras de control 33


Contadores 33
Acumuladores 33

Organización y ámbito de los elementos del lenguaje 34


Archivos y módulos de código en un programa 34
Ámbito de procedimientos 35
Ámbito de variables 38

Arrays 39
Declaración 39
Asignación y obtención de valores 40
Recorrer un array 41

Funciones del lenguaje 42


Funciones de comprobación de tipos de datos 43
Funciones numéricas 43
Funciones de cadena de caracteres 43
Funciones de fecha y hora 45

2
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

¿Qué es la programación?
La programación de ordenadores es aquella rama de las tecnologías de la
información, encargada del diseño y escritura de las instrucciones o sentencias que
un ordenador debe ejecutar para completar una operación o resolver un problema.
Al conjunto de operaciones que lleva a cabo un ordenador para proporcionar un
determinado resultado se le denomina proceso, el conjunto de varios procesos que
realizan tareas comunes, conformando de esta manera una única entidad, la
denominamos programa.

Por ejemplo, un proceso puede ser la suma de los importes que componen las
líneas de una factura; otro, el cálculo de los impuestos a aplicar sobre el importe de
la factura; la obtención de los datos del cliente al que vamos a enviar la factura sería
otro proceso; si todos estos procesos y otros similares los juntamos, tendríamos un
programa de facturación.

Adicionalmente, si tenemos un proceso que calcula las rutas y distancias de los


vehículos de una empresa de transportes, podríamos añadirlo al programa anterior,
aunque la lógica nos indica que no tendría mucho sentido, por lo cual, este proceso
y los que tengan que ver con la logística de una empresa de transporte, deberían
ubicarse en otro programa diferente. De este modo conseguiremos un conjunto de
programas mejor organizados, enfocados a resolver tareas concretas, con un mayor
rendimiento en ejecución.

¿Qué es un lenguaje de programación?


Un lenguaje de programación es la principal herramienta de las utilizadas por el
programador para la creación de programas. Todo lenguaje se compone de un
conjunto más o menos extenso de palabras claves y símbolos, que forman la
denominada sintaxis del lenguaje, y una serie de normas o reglas para el correcto
uso y combinación de tales palabras y símbolos

¿Qué es un programa?
Como describimos en una definición anterior, un programa (o aplicación, como
también lo denominaremos) es un conjunto de instrucciones escritas en un lenguaje
de programación, que pueden llevar a cabo uno o múltiples procesos, normalmente
relacionados, aunque sin ser esto obligatorio, y que en definitiva nos permiten
resolver uno o más problemas. A las instrucciones o código que forman parte de un
programa se le denomina código fuente.
Como hemos mencionado anteriormente, para crear un programa debemos conocer
los elementos del lenguaje a emplear y sus normas de utilización. Por ejemplo, el
lenguaje Visual Basic .NET dispone de las palabras clave Dim e Integer para
declarar variables, y los símbolos = y + para asignar valores y realizar operaciones

3
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

(no se preocupe si todavía no comprende estos conceptos, serán explicados en un


tema posterior). Para poder crear una variable y realizar una operación con ella, no
basta saber cuáles son las palabras claves y símbolos a utilizar, sino que también
debemos saber cómo utilizar estos elementos. El código fuente muestra una forma
incorrecta y otra correcta de crear una variable y asignar una operación de suma a
la misma.

' incorrecto
Integer MiDato Dim
MiDato + 50 = 700

' correcto
Dim MiDato As Integer
MiDato = 50 + 700

Etapas en el desarrollo de un programa


No existen una serie de normas absolutas en el proceso de creación de un
programa, ya que como comentamos en un apartado anterior, la programación es
una actividad creativa, en la que confluyen, por un lado, los requerimientos del
problema a afrontar, las capacidades que nos proporciona el lenguaje empleado por
otro, y la pericia e inventiva del programador para resolver dicho problema.
No obstante, sí podemos establecer unas pautas generales a seguir, en lo que se
puede llamar ciclo de desarrollo del programa, y que podemos dividir en dos
grandes etapas, compuestas a su vez cada una de una serie de pasos. A
continuación se muestran los puntos constituyentes de este proceso.

• Análisis del problema.


o Estudio del problema.
o Desarrollo del algoritmo.
o Comprobación del algoritmo.

• Implementación del programa.


o Escritura del programa en base a los resultados obtenidos del
algoritmo.
o Ejecución del programa
o Depuración del programa.
o Documentación del programa.

En los siguientes apartados y temas del texto iremos realizando una descripción
más detallada de los puntos más importantes de este esquema

4
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Análisis del problema


Esta etapa consiste en investigar el problema a resolver, y desarrollar los procesos
necesarios para ello.
Tras estudiar el problema, deberemos diseñar un algoritmo que lo solvente
satisfactoriamente, y realizar diversas comprobaciones para verificar su correcto
funcionamiento.
Los siguientes apartados describen los principales puntos a desarrollar durante la
fase de análisis.

Estudio del problema


El primer paso en todo análisis para el desarrollo de un programa, consiste en
estudiar cuidadosamente el problema planteado, e identificar, por un lado, la
información de que disponemos para resolverlo, y por otro, el resultado a obtener.
La datos disponibles se denominan información de entrada, mientras que el
resultado se denomina información de salida.
Es muy importante para resolver el problema, el disponer de la suficiente
información, ya que sin ella, no podremos obtener los datos que constituirán el
resultado del planteamiento.

Algoritmos
Un algoritmo se puede definir como el conjunto de acciones a realizar para resolver
un determinado problema.
El modo de afrontar la creación de un algoritmo, pasa por descomponer el problema
planteado en problemas más pequeños y fáciles de resolver independientemente.
Una vez resueltos los problemas independientes, se unirán todos, obteniendo de
esta forma el correspondiente algoritmo.
El proceso indicado por un algoritmo debe ser claro y tener sus pasos bien
definidos, de forma que si realizamos dicho proceso varias veces, empleando
siempre los mismos valores en el algoritmo, deberemos obtener el mismo resultado.
De igual forma, en un algoritmo deben distinguirse las siguientes fases: entrada,
proceso y salida.
Cuando finalicemos la escritura de un algoritmo, es muy conveniente realizar una
ejecución de prueba para el mismo, empleando datos reales para comprobar que el
resultado es el adecuado. En el caso de que obtengamos resultados no esperados,
o bien, consideremos que es posible optimizar el proceso de ejecución del
algoritmo, modificaremos las partes que consideremos necesarias para mejorarlo;
este proceso se denomina depuración o refinamiento

5
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Una vez que hemos realizado el análisis del algoritmo, necesitamos un elemento
que nos permita representarlo. Si bien no existe una técnica única para la
representación de algoritmos, disponemos de algunas que, dadas sus
características, nos facilitan dicha tarea, por lo que son mayormente utilizadas.
Entre los medios para la creación de algoritmos, tenemos los diagramas de flujo, el
pseudocódigo, y los diagramas Nassi-Schneiderman

Implementación del programa


Cumplimentada la fase de análisis, y obtenido el correspondiente algoritmo
mediante alguna de las técnicas descritas en el tema anterior, la etapa de
implementación consiste en trasladar al ordenador el resultado del análisis del
problema.
Para introducir en el ordenador las instrucciones del algoritmo, deberemos utilizar un
lenguaje de programación, con el que crearemos un programa que tenga las
sentencias a ejecutar. Finalizada la escritura del programa, procederemos a su
compilación, obteniendo un archivo ejecutable con las instrucciones en un formato
denominado código binario, ya comprensible por el ordenador para su ejecución

Tipos de lenguaje de programación


Antes de proceder a escribir el código del programa, debemos elegir el lenguaje de
programación que mejor se adapte a nuestras necesidades. En función del tipo de
problema a resolver, los lenguajes se clasifican en los niveles descritos a
continuación.

Lenguajes máquina
Se trata de lenguajes cuyas instrucciones son directamente comprendidas por el
ordenador en el que se ejecuta el programa. Su dependencia por lo tanto, con
respecto al hardware del ordenador en que funcionan es total, por lo que su
ejecución es más veloz que cualquier otro tipo de lenguaje que podamos emplear.
Tras la anterior explicación, y ya que este tipo de código es el único que entiende el
ordenador de modo directo, ¿no sería mejor programar siempre en lenguaje
máquina?.
Como respuesta, y a pesar de la mencionada ventaja, podemos decir que existen
inconvenientes muy importantes: la vinculación del lenguaje máquina con el
hardware del equipo, hace que un programa no pueda ser transportable a otro tipo

6
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

de arquitecturas de ordenador, por lo que deberemos reescribir el programa, si


necesitamos que sea ejecutado en una máquina con diferente arquitectura que para
la que originalmente fue diseñado.
Por otro lado, la escritura de un programa en lenguaje máquina es una labor lenta y
compleja, en la que el programador no dispone de herramientas de soporte, que le
ayuden en su tarea.
Lenguajes de bajo nivel
En este tipo de lenguajes, al igual que sucede con los lenguajes máquina, existe
una gran dependencia con el hardware del equipo en el que se va a ejecutar. No
obstante son algo más fáciles de escribir, quedando su complejidad en un punto
intermedio entre el lenguaje máquina y uno de alto nivel: no es tan complicado como
el primero, pero exige una mayor curva de aprendizaje que el segundo, debido a
que se necesita conocer el tipo de máquina en que se va a ejecutar el programa.
Otra característica reside en que el código escrito no es directamente ejecutable en
el ordenador, sino que ha de pasar por un proceso de traducción de código fuente a
código binario denominado compilación. El ejemplo más destacable de este tipo de
lenguaje es el Ensamblador.

Lenguajes de alto nivel


Aportan tipos de datos y estructuras de control entre otros elementos. Igualmente
disponen de una sintaxis en lenguaje más natural, y un amplio conjunto de
funciones internas, que ayudan al programador en diversas situaciones, así como
un número determinado de utilidades y asistentes que ahorran tiempo y trabajo al
programador. Visual Basic .NET es uno de los ejemplos de este tipo de lenguaje.

Modelos de programación
Un modelo de programación consiste en la técnica empleada para escribir el código
de un programa, de forma que consigamos la mayor efectividad y optimización al
ejecutarlo. El desarrollo de las herramientas informáticas ha posibilitado una
progresiva evolución en las técnicas de programación, con la consiguiente mejora
que ello supone, tanto a la hora de la escritura como de la ejecución de un
programa. A continuación se realiza una descripción de los modelos de
programación existentes.

7
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Programación lineal
Este es el modelo más tradicional, encontrándose ya en desuso. El código se
organiza linealmente, y se ejecuta desde la primera línea hasta la última, sin
disponer de ningún tipo de estructuración o bifurcación. El siguiente código fuente
muestra un esquema de este tipo de técnica

Instrucción1
Instrucción2
Instrucción3
.
.
.
InstrucciónFinal

El inconveniente con este modelo de programación, radica en que si dentro de un


algoritmo hay un proceso que necesita repetirse un número determinado de veces,
se tendrá que repetir la escritura del código correspondiente a ese proceso las
veces que sean necesarias

Programación procedural
Para solventar los problemas derivados de la programación lineal apareció la
programación procedural, que se basa en tomar el código de un programa y dividirlo
en partes lógicas con entidad propia, denominadas procedimientos o rutinas de
código.
Cada procedimiento se ocupa de resolver una tarea específica, de modo que
partiendo de un procedimiento inicial o de nivel superior, se llamará a otro
procedimiento para que ejecute un determinado trabajo, y al finalizar, se devolverá
el control o flujo de la ejecución al procedimiento que hizo la llamada

8
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Dentro de la programación procedural se utiliza también el concepto de módulo,


para hacer referencia a una entidad contenedora de procedimientos. Esto quiere
decir que podemos utilizar los módulos para agrupar funcionalmente o por tipos de
proceso, los procedimientos que forman parte de un programa.

Programación estructurada
Como complemento a la programación procedural apareció la programación
estructurada, consistente en un modelo de programación que utiliza un conjunto de
estructuras de control, que simplifican la escritura del código y disminuyen el
número de errores del programa.
La programación estructurada también se basa en el uso de procedimientos y
módulos de código, pero además, dentro del código de un procedimiento, se
utilizarán determinadas estructuras proporcionadas por el lenguaje, que facilitarán la
codificación de los procesos.
Para poder comprender mejor esta técnica planteemos el siguiente caso:
necesitamos diseñar un proceso dentro de un procedimiento, que permita introducir
un número de factura y la imprima, pero sólo deberá imprimirla si el número es
menor o igual a 500.
Con las técnicas de programación anteriores no disponemos de un elemento que
nos permita comprobar el número de factura, para poder o no imprimirla. Sin
embargo, mediante la programación estructurada, podemos utilizar una estructura
de decisión, que en pseudocódigo podemos llamar Si...FinSi, que realice la

9
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

mencionada verificación, y proceda con la impresión si todo es correcto. El siguiente


código fuente muestra el algoritmo para este problema

Inicio
Modulo Principal
Procedimiento ImprimeFac
Leer NumFactura

Si NumFactura <= 500


Imprimir
FinSi

Fin Procedimiento
Fin Modulo
Fin

Trataremos ampliamente todos los tipos de estructuras de control cuando


abordemos los elementos del lenguaje, de momento este ejemplo sirve para que el
lector se forme una idea de cómo mediante la programación estructurada,
combinamos todos los elementos vistos hasta el momento: módulos, procedimientos
y estructuras de control, para escribir el código de nuestro programa

Programación orientada a objeto (OOP)


El modelo de programación orientada a objeto (OOP, Object Oriented Programming)
se trata de una evolución de la programación estructurada, que se basa en focalizar
el desarrollo a través de los elementos involucrados en un proceso, y no en abordar
el problema desde el mismo proceso.
Esto quiere decir que ante un problema como el mantenimiento de datos de los
clientes de una empresa, la programación estructurada aborda en primer lugar los
procesos a desarrollar: alta, modificación, baja, etc. La programación OOP por el
contrario, comienza su análisis por el elemento sobre el que van a actuar los
procesos: el objeto Cliente.
Por tal motivo, en lugar de hacer simples llamadas a procedimientos como sucede
en la programación estructurada, empleando técnicas OOP, primeramente creamos
el objeto con el que vamos a trabajar, y a través del mismo canalizamos todas las
llamadas a sus procesos, manipulando también su información si es necesario

10
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

El archivo ejecutable y su proceso de creación


Una vez escrito el programa a partir del algoritmo, en el lenguaje de programación
de nuestra elección, necesitamos obtener el archivo ejecutable correspondiente.
El archivo ejecutable es aquel que necesita el ordenador para hacer funcionar el
programa, o dicho de otro modo, es la representación física de nuestro algoritmo.
Un ejecutable es generalmente un archivo con extensión EXE, que obtenemos tras
una serie de pasos, que a grandes rasgos describimos a continuación:

● Compilación. Consiste en convertir el código escrito por el programador en


el llamado código objeto. El código objeto es el estado en el que se encuentra
nuestro programa en el punto previo a la fase de obtención del ejecutable
definitivo. Dependiendo de la herramienta de programación utilizada, el
código objeto se almacenará en forma de archivo, o será pasado
directamente a la siguiente fase de creación del ejecutable. Para transformar
el código fuente a código objeto se emplea el compilador, que es un
programa o utilidad encargada de esta labor

● Enlace. En esta fase se toman, por un lado, el código objeto generado por el
compilador, y por otro, el código de rutinas de uso general que necesita el
lenguaje de programación, que se encuentra habitualmente organizado en
archivos denominados librerías o bibliotecas de código. Todo ello, mediante
un programa o utilidad denominado enlazador, se une para obtener el
ejecutable final, un archivo con extensión .EXE

11
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Interfaces de usuario
Un interfaz de usuario es el aspecto que un programa muestra, y el modo en que
interactúa con el usuario que lo ejecuta. Los tipos de interfaz de usuario que
utilizaremos a lo largo de este texto serán los siguientes:
• Consola. El interfaz de usuario de consola consiste en una ventana de tipo
MS-DOS o modo comando, mediante la cual, el usuario introduce las
instrucciones en el indicador de comandos del sistema. La creación de
programas de tipo consola es sencilla y rápida, y debido a que el objetivo
principal de este texto es el aprendizaje de los diferentes aspectos del
lenguaje, la mayoría de los ejemplos realizados se harán utilizando la
consola.
• Formularios Windows. Este tipo de interfaz está basado en el entorno de
ventanas del sistema operativo Windows, permitiéndonos crear aplicaciones
basadas en formularios o ventanas, con todas las características típicas de
este tipo de programas.

Las herramientas para la creación de programas


Remontándonos a los tiempos de las aplicaciones en modo texto, bajo MS-DOS,
con los lenguajes y herramientas de programación disponibles en aquella época, los
pasos para la creación de un ejecutable descritos en un apartado anterior, debían
ser realizados por el programador de forma manual, ya que todos los elementos
utilizados para la creación del programa se encontraban separados.
Disponíamos por un lado, de un programa que consistía en un editor de código
fuente, por otro, el compilador, enlazador, librerías de utilidades, etc.
Sin embargo, la llegada y evolución de los entornos de desarrollo integrados (IDE,
Integrated Development Environment), que incorporan en una sola aplicación todos
los elementos necesarios para el desarrollo de programas, estas tareas se han
automatizado hasta tal nivel, que el programador sólo necesita escribir el código del
programa, mientras que los pasos de compilación, enlazado y generación del
ejecutable las realiza internamente el propio entorno.
La aparición de la tecnología .NET, sorprendentemente, proporciona al programador,
si este lo desea, una forma de trabajo a la antigua usanza; disponiendo también de
un sofisticado entorno de desarrollo, que será probablemente el medio de desarrollo
más habitual.
Programando con VB.NET podemos optar por ambos modos de trabajo: a través de
utilidades separadas, ejecutadas en una ventana MS-DOS o Windows; o bien,
empleando Visual Studio .NET (VS.NET, como también lo denominaremos a lo largo
del texto), el IDE o herramienta de desarrollo de la plataforma.

12
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Hola mundo, desde Visual Basic .NET


Cuando un programador se enfrenta a un nuevo lenguaje, una de las primeras
pruebas que acostumbra a realizar es un pequeño programa que muestre, mediante
el interfaz de usuario correspondiente, el mensaje “Hola mundo”.
Siguiendo fieles a la tradición, y para que el lector pueda dar sus primeros pasos en
este nuevo mundo de la programación, vamos a proceder a escribir nuestro primer
programa, utilizando el lenguaje Visual Basic .NET.
El compilador de VB.NET
Como ya hemos comentado, una vez escrito el código fuente de nuestro programa,
debemos emplear una herramienta llamada compilador, que será la encargada de
tomar nuestro código y transformarlo a código objeto o directamente ejecutable.
En esta primera prueba vamos a crear nuestra aplicación de un modo, digamos,
artesanal, utilizando el Bloc de notas como editor de código, y el compilador del
lenguaje en una ventana MS-DOS. De este modo, el lector se formará una mejor
idea del proceso a seguir, y que Visual Studio .NET lleva a cabo automáticamente.
Posteriormente abordaremos este mismo ejemplo pero desarrollándolo desde el
IDE. Abriendo el Bloc de notas, escribiremos las sentencias mostradas en el código
fuente siguiente

Imports System

Module General
Public Sub Main()
Console.WriteLine("Hola mundo")
End Sub
End Module

Descrito este código a grandes rasgos, podemos decir que la primera línea
establece la referencia a una librería de la plataforma .NET Framework, que
contiene elementos del lenguaje necesarios para que se ejecute el programa.
A continuación, entre las sentencias Module...End Module definimos un módulo de
código, con el nombre General, que se trata de un contenedor de rutinas de código,
y precisamente, dentro de este módulo, escribimos un procedimiento entre las
sentencias Sub...End Sub, con el nombre Main( ), en el que hacemos uso del objeto
Console, llamando a su método WriteLine(), al que pasamos una cadena de
caracteres con el texto a mostrar. Dicho texto será mostrado en una ventana
MS-DOS o de consola, como también la denominaremos en este texto.

13
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Se recomienda que los archivos con código escrito en lenguaje VB.NET tengan la
extensión .VB, aunque esto no es obligatorio, pudiendo utilizar la extensión que el
programador prefiera.
A continuación necesitamos, desde una ventana en modo comando o sesión
MS-DOS, ejecutar el compilador de Visual Basic .NET para crear el ejecutable de
nuestro ejemplo. El compilador del lenguaje es un archivo con el nombre VBC.EXE
(Visual Basic Compiler), que ejecutaremos, pasándole como parámetro el archivo
con el código fuente a compilar
Una vez abierta esta ventana MS-DOS, tecleando VBC.EXE y pulsando [INTRO],
aparecerá una lista con las opciones del compilador de VB.NET
Para compilar pues nuestro primer programa, deberemos situarnos en el directorio
en el que hayamos guardado el archivo con el código fuente de nuestro ejemplo, y
teclear en el indicador de comandos de esta ventana la instrucción

VBC Saludo.VB

Lo que hacemos aquí es ejecutar el compilador VBC.EXE (no es necesario


especificar la extensión del compilador), pasando seguidamente el nombre del
archivo fuente con el código a compilar, en este caso SALUDO.VB. Obtendremos de
esta operación un nuevo archivo, con el nombre SALUDO.EXE, que será el
ejecutable de nuestro programa. Cuando tecleemos SALUDO en el indicador de
comandos de la ventana, y pulsemos [INTRO], el programa será ejecutado. El
resultado de esta ejecución será la visualización del mensaje en la ventana de la
consola, con lo que habremos completado el proceso de creación de nuestro primer
programa en VB.NET

Proyectos en Visual Studio .NET


Para desarrollar un programa desde el IDE de VS.NET debemos crear un proyecto,
que consiste en un contenedor de todos los elementos que forman parte de una
aplicación en .NET: archivos de código, recursos, imágenes, etc

Creación de un proyecto
Para crear un nuevo proyecto, situados en la página de inicio del IDE, pulsaremos el
botón Nuevo proyecto, o bien la opción de menú del propio IDE: Archivo + Nuevo +
Proyecto, lo que mostrará la ventana Nuevo proyecto.
Debemos tener en cuenta que .NET Framework es una plataforma para el desarrollo
de programas en varios tipos de lenguajes de programación: Visual Basic .NET,
Visual C# .NET, Visual C++ .NET, J#, y otros que están en proceso de desarrollo,
para cumplir con las especificaciones del entorno de ejecución de .NET.

14
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

En la ventana Crear un nuevo proyecto, elija Visual Basic en la lista Idioma. A


continuación, seleccione Windows en la lista Plataforma y Consola en la lista Tipos
de proyecto.
Después de aplicar los filtros de lenguaje, plataforma y tipo de proyecto, elija la
plantilla Aplicación de consola y, luego, seleccione Siguiente.
En la ventana Configurar el nuevo proyecto, escriba WhatIsYourName en el cuadro
Nombre del proyecto. Después, elija Siguiente.

15
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Al crear un proyecto de consola, se crea también un archivo de código fuente con el


nombre Module1.VB, que contiene un módulo de código (Module), y un
procedimiento o rutina de código vacía (Sub) con el nombre Main( ).
Como podemos deducir del código base que ha generado VS.NET, el procedimiento
Main( ) representa al procedimiento principal o punto de entrada al programa, siendo
la primera rutina de código que se ejecutará cuando iniciemos el programa desde el
IDE o invoquemos al archivo ejecutable físico.
Lo que tenemos que hacer a continuación es situarnos sobre la ventana del editor
de código, y añadir dentro del procedimiento Main( ) el mensaje a visualizar en la
consola, de igual modo que hicimos en el ejemplo anterior, cuando creamos el
programa con el compilador en modo comando

Imports System

Module Module1

Sub Main()
Console.WriteLine("Hello World")
End Sub

End Module

16
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

En este caso, sin embargo, el resultado obtenido no es muy adecuado, ya que al


ejecutar el programa desde VS.NET, es el propio IDE el que se encarga de abrir una
ventana de consola y mostrar el mensaje, pero justo a continuación, se cierra la
ventana sin dejarnos tiempo para comprobar el texto visualizado. El motivo de este
comportamiento se debe a que no hemos establecido ningún tipo de parada en la
ejecución.
Para solucionar este problema tenemos dos medios: el más sencillo consiste en
ejecutar mediante la opción de menú Depurar + Iniciar sin depurar, que añade una
pausa antes de finalizar la ejecución, permitiendo visualizar la ventana de la consola
La otra forma pasa por ejecutar el método Read( ) del objeto Console, después de
mostrar el mensaje en la ventana. El código fuente muestra de nuevo el ejemplo con
este pequeño retoque.

Imports System

Module Module1

Sub Main()
Console.WriteLine("Hello World")
Console.Read()
End Sub

End Module

17
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Tipos de Datos
Los datos son la información que utiliza un programa para poder realizar
operaciones. En función de la información que contengan, los datos se pueden
clasificar en varios grupos: simples, compuestos y definidos por el programador.

Simples
Un dato simple está formado por una sola unidad de información. Dependiendo del
contenido de esa información, los datos simples se dividen en los tipos numérico,
carácter, fecha y lógico

Compuestos
Un dato compuesto está formado por varios datos de tipo simple. Como ya hemos
mencionado, una cadena es un dato compuesto (por datos simples de tipo carácter)
aunque algunos lenguajes lo traten como simple.
Como dato compuesto disponemos de los arrays o matrices, que son tablas de
datos con un número fijo o variable de elementos
Definidos por el programador
En esta categoría se encuentran la estructura (Structure), que consiste en un tipo
especial de dato compuesto por varios de los tipos existentes en el lenguaje; y el
tipo enumerado (Enum), consistente en una lista de valores numéricos a los que
asociamos un descriptor literal.

Identificadores
Un identificador es un nombre que el programador asigna a ciertos elementos del
programa, como variables, constantes, rutinas de código, etc., para poder
reconocerlos durante el desarrollo del mismo. Dicho nombre debe comenzar por una
letra y no puede ser una palabra reservada del lenguaje, ni contener caracteres
especiales como operadores aritméticos, de relación, etc.
Aunque podemos utilizar cualquiera de nuestra elección, es muy recomendable que
el nombre del identificador esté relacionado con su contenido, de forma que durante
la revisión del código del programa, sepamos rápidamente lo que contiene
simplemente con ver su nombre.
Palabras reservadas
Son todos aquellos nombres que forman parte integrante del lenguaje de
programación, como puedan ser instrucciones, estructuras de código, funciones
propias del lenguaje, objetos, etc. Este tipo de palabras no las podemos utilizar

18
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

como identificadores, debido a que son empleadas internamente por el lenguaje.


Algunas palabras reservadas en Visual Basic .NET son: Dim, Sub, Function, Public,
For, Integer.

Estructura de un programa
Los elementos mínimos que debe tener toda aplicación escrita en este lenguaje (y
en general, la mayoría de lenguajes) son un módulo de código, y un procedimiento
de entrada o inicio del programa, que en VB.NET tendrá el nombre Main( ), todo ello
contenido en un archivo de código con extensión .VB.

Si el programa a ejecutar es de pequeño tamaño, el procedimiento de entrada al


mismo contendrá todo el código necesario. Sin embargo esta situación no es muy
frecuente, lo habitual es que los programas tengan una cantidad de código
considerable, que obligue a separarlo en diferentes rutinas. Por este motivo el
procedimiento Main( ) contiene generalmente código para inicializar valores en el
programa, y hacer llamadas a otros procedimientos entre los que está repartido el
resto del código.

Ubicación del código en el programa


El código de un programa se sitúa en rutinas de código o procedimientos, en los
cuales escribimos las instrucciones necesarias para resolver un determinado

19
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

problema. Dependiendo de la complejidad y la cantidad de situaciones a resolver, un


programa tendrá un número determinado de procedimientos.
Para declarar un procedimiento utilizaremos la palabra clave Sub, seguida del
nombre del procedimiento, escribiendo a continuación las instrucciones necesarias y
finalizando el procedimiento con End Sub, como vemos en el código fuente, en el
que creamos un procedimiento con el nombre Calcular( )

Sub Calcular()
instrucción1
instrucción2
instrucción3
instrucción4
instrucción5
....
....
....
instrucción
End Sub

Cuando creamos una aplicación VB.NET de tipo consola usando VS.NET, es el


propio IDE quién se encarga de crear por nosotros la estructura básica del
programa: crea un archivo de código conteniendo un módulo que tiene el
procedimiento de entrada, sólo falta el código del programador.
Todos los elementos que componen una aplicación VB.NET, son organizados por
VS.NET bajo el concepto de proyecto. Un proyecto aglutina los archivos de código
de la aplicación, recursos, referencias a clases globales de la plataforma .NET, etc

Visualizar información en la consola


Para escribir texto llamaremos al método Write( ) o WriteLine( ) del objeto Console.
Como parámetros a estos métodos, es decir, entre los paréntesis que los
acompañan, situaremos la información a mostrar: una cadena, variable o expresión.

Module Module1
Sub Main()
Dim UnValor As String
UnValor = "algo más de texto"

' esta cadena va en una línea


Console.WriteLine("Una línea de prueba")

20
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

' ahora mostramos una variable


Console.WriteLine(UnValor)

' las siguientes cadenas se ponen juntas


Console.Write("Coche")
Console.Write("Tren")

' aquí añadimos una línea en blanco


Console.WriteLine()
End Sub
End Module

La diferencia entre Write( ) y WriteLine( ) consiste en que mediante el primero, todas


las llamadas que hagamos a ese método escriben el texto seguido, mientras que el
último lo hace en líneas separadas
Si al escribir un texto en la consola, queremos combinar una cadena de caracteres
con el contenido de una variable, podemos optar por dos técnicas.
Por un lado podemos concatenar (unir) la cadena a la variable mediante el operador
de concatenación del lenguaje ( & ).

Module Module1
Sub Main()
Dim UnValor As String
UnValor = "al parque"
Console.WriteLine("Vamos de paseo " & UnValor)
End Sub
End Module

La otra técnica consiste en utilizar parámetros sustituibles, indicando en la cadena


los lugares en los que queramos que se incluyan el contenido de las variables que
necesitemos.
Por ejemplo, supongamos que en la cadena “Hola voy a un coche”, queremos
insertar los valores “conducir” y “azul”, que están situados en variables, de modo
que la cadena resultante sea: “Hola voy a conducir un coche azul”.
Para solucionar este problema, en la cadena tenemos que incluir unos marcadores
que indican que en ese punto vamos a sustituir el marcador por una variable, y
además el número de orden de la variable, tal y como la vamos a situar al llamar al
método WriteLine( ). Los marcadores son los símbolos de llaves utilizados de una
forma similar a la siguiente: {0}
Cuando llamamos a WriteLine( ) sabemos que le pasamos como parámetro el valor
a mostrar, pero podemos pasar más parámetros separados por comas, como

21
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

pueden ser variables; dichos parámetros serán utilizados para sustituirse en la


cadena pasada como primer parámetro.

Obtener información de la consola


Para tomar el texto tecleado en el indicador de comandos de la ventana de la
consola disponemos del
método ReadLine( ), que devuelve una cadena que podemos pasar a una variable
para su tratamiento
posterior.

Module Module1
Sub Main()
Dim UnValor As String
Console.WriteLine("Escribir algo")
UnValor = Console.ReadLine()
Console.WriteLine("Hemos escrito el siguiente texto")
Console.WriteLine(UnValor)
End Sub
End Module

División de una línea de código


Si tenemos en nuestro programa líneas de código muy largas, que nos obliguen a
desplazarnos hacia una lateral de la ventana del editor de código para poder leerlas,
podemos dividir ese tipo de línea lógica de código en varias líneas físicas, situando
el carácter de guión bajo ( _ ) en el punto de la línea de código en donde queremos
continuar, teniendo en cuenta que siempre debe haber un espacio enblanco antes y
después de este carácter, para que la división de la línea sea efectiva.

Dim Resultado As Boolean

' una sola línea lógica y física

22
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Resultado = ((30 + 5) * 5 > 100) And (52 > 200 / (2 + 5))

' varias líneas físicas, aunque internamente


' el compilador reconoce una sola línea lógica
Resultado = ((30 + 5) * 5 > 100) And _
(52 > 200 / _
(2 + 5))

Procedimientos

Todo el código ejecutable de una aplicación se ubica en rutinas de código o


procedimientos. Un procedimiento es un elemento del lenguaje compuesto por un
conjunto de líneas de código, a las que se denomina cuerpo del procedimiento.
Su comienzo y fin lo establecemos mediante ciertas palabras reservadas del
lenguaje, asociándolo a un identificador, que nos servirá para reconocerlo entre el
resto de procedimientos creados en el programa. Podemos enviarle también
información adicional en forma de parámetros, con lo que el resultado de la
ejecución de un procedimiento variará según los valores que pasemos en cada
llamada.
En VB.NET disponemos de los siguientes tipos de procedimientos:
• Sub. Procedimiento que realiza un conjunto de operaciones pero no
devuelve valor al punto de llamada. A lo largo del texto también nos referiremos a
las rutinas de tipo Sub con el nombre genérico de procedimiento.
• Function. Procedimiento que realiza un conjunto de operaciones, y devuelve
un valor denominado valor de retorno al punto de código que realizó la llamada. A lo
largo del texto también nos referiremos a las rutinas de tipo Function con el nombre
genérico de función.
• Property. Procedimiento que se utiliza para labores de acceso y asignación
de valores a las propiedades de un objeto. Serán tratados con más profundidad en
los temas dedicados a la programación orientada a objetos.
Sintaxis de un procedimiento Sub
El formato para la escritura de un procedimiento Sub se muestra en el código fuente

[Ámbito] Sub NombreProcedimiento[(ListaParámetros)]


[CódigoEjecutable]
[Exit Sub | Return]
[CódigoEjecutable]
End Sub

23
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Los elementos que forman parte de este tipo de rutina son los siguientes:

• Ámbito. Define el modo en que vamos a poder acceder o llamar al


procedimiento desde otro punto de la aplicación. El ámbito de los elementos del
lenguaje será tratado en un apartado posterior.

• Sub...End Sub. Palabras clave que indican el comienzo y final del


procedimiento respectivamente. Cuando hagamos una llamada al procedimiento, el
compilador ejecutará el código comprendido entre estas dos palabras clave.

• NombreProcedimiento. Identificador que utilizamos para reconocer y


llamar al procedimiento.

• ListaParámetros. Lista de identificadores separados por comas, y


encerrados entre paréntesis, que representan la información que recibe el
procedimiento desde el código llamador. Dentro del cuerpo del procedimiento, estos
identificadores o parámetros se utilizarán igual que variables.

• Return. Esta palabra clave permite salir de la ejecución del procedimiento


sin haber llegado a su fin. Podemos utilizarla en tantos lugares dentro de un
procedimiento como sea necesario. Se recomienda su uso en lugar de Exit Sub, ya
que podemos emplear Return para salir de cualquier tipo de procedimiento, con lo
cual se unifica la escritura del código.

• Exit Sub. Al igual que en el punto anterior, esta palabra clave permite salir
de la ejecución del procedimiento sin haber llegado a su fin, pudiendo igualmente,
situarla en tantos lugares dentro del procedimiento como sea necesario

Llamada a un procedimiento Sub

Para realizar una llamada o ejecutar un procedimiento Sub, debemos escribir su


nombre en un punto del programa. El siguiente código muestra el código al
completo del módulo de nuestra aplicación de consola. La ejecución de este
programa comienza como es habitual por Main( ), dentro del cual se realiza una
llamada al procedimiento Prueba( ).

Module Module1

24
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Sub Main()
Console.WriteLine("Estamos en el procedimiento Main")

' llamada a un procedimiento


Prueba()
Console.ReadLine()
End Sub

Sub Prueba()
Console.WriteLine("Estamos en el procedimiento Prueba")
End Sub

End Module

En la llamada a un procedimiento Sub, el uso de los paréntesis es opcional,


independientemente de si pasamos o no parámetros. No obstante, es muy
recomendable especificar dichos paréntesis, ya que aportan una gran claridad a
nuestro código, de forma que al leerlo podemos ver rápidamente los puntos en los
que se realiza una llamada a una rutina de código

Sintaxis de un procedimiento Function

El formato para la escritura de un procedimiento Function se muestra en el siguiente


código fuente
[Ámbito] Function NombreFunción[(ListaParámetros)] As TipoDato
[CódigoEjecutable]
[Return Valor]
[NombreFunción = Valor]
[Exit Function]
[CódigoEjecutable]
End Function

Los elementos que forman parte de este tipo de rutina son los siguientes:

• Ámbito. Define el modo en que vamos a poder acceder o llamar al procedimiento


desde otro punto de la aplicación. El ámbito de los elementos del lenguaje será
tratado en un apartado posterior.
• Function...End Function. Palabras clave que indican el comienzo y final de la
función respectivamente. Cuando hagamos una llamada a la función, el compilador
ejecutará el código comprendido entre estas dos palabras clave.
• NombreFunción. Identificador que utilizamos para reconocer y llamar a la función.
En este tipo de procedimiento, también utilizamos su nombre para asignar el valor
que será devuelto al código llamador en el modo NombreFunción = Valor, en esta

25
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

última situación, podemos situar esta expresión de devolución en tantos lugares


como necesitemos dentro de la función.
• TipoDato. Tipo de dato del valor devuelto como resultado de la ejecución de la
función.
• ListaParámetros. Lista de identificadores separados por comas, y encerrados
entre paréntesis, que representan la información que recibe la función desde el
código llamador. Dentro del cuerpo del procedimiento, estos identificadores o
parámetros se utilizarán igual que variables.
• Return. Esta palabra clave permite salir de la ejecución de la función devolviendo
al mismo tiempo un valor al código que hizo la llamada. Podemos utilizarla dentro de
una función, en tantos lugares como necesitemos.
• Exit Function. Esta palabra clave permite salir de la ejecución de la función sin
haber llegado a su fin. Podemos utilizarla dentro de una función, en tantos lugares
como necesitemos.

El Código fuente muestra un sencillo ejemplo de procedimiento Function, en el cual


se pide al
usuario que introduzca un número que es devuelto como resultado de la función.

Function Calcular() As Integer


Dim MiValor As Integer

Console.WriteLine("Introducir un número de 1 a 100")


MiValor = Console.ReadLine()

Return MiValor

' también podemos utilizar esta


' sintaxis para devolver el valor
' de retorno de la función:
'Calcular = MiValor
End Function

Llamada a un procedimiento Function


Para realizar una llamada o ejecutar un procedimiento Function debemos escribir su
nombre en un punto del programa al igual que hacemos con los procedimientos
Sub; en este aspecto ambos tipos de procedimiento son iguales.

Por otro lado, los puntos que marcan las diferencias entre un Function y un Sub son
los siguientes:

26
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

• Un procedimiento Function devuelve un valor, de modo que si queremos


obtenerlo, debemos asignar la llamada a la función a una variable. Los
procedimientos Sub no pueden devolver valores.
• Debido precisamente a la capacidad de un procedimiento Function de
devolver un valor, podemos situar la llamada a una función dentro de una expresión,
y operar con el valor de retorno dentro de la expresión, lo cual dota a nuestro código
de una mayor flexibilidad. Los procedimientos Sub no pueden formar parte de
expresiones

Module Module1

Sub Main()
Dim Resultado As Integer
Dim NuevoValor As Integer
' llamada a una función sin recoger el valor de retorno,
' por este motivo, dicho valor se pierde
Calcular()

' llamada a una función obteniendo el valor


' de retorno y asignando el valor a una variable
Resultado = Calcular()
Console.WriteLine("La variable Resultado contiene: {0}", Resultado)

' llamada a una función como parte de una expresión


NuevoValor = 1500 + Calcular() * 2
Console.WriteLine("La variable NuevoValor contiene: {0}", NuevoValor)
Console.ReadLine()
End Sub

Function Calcular() As Integer


Dim MiValor As Integer

Console.WriteLine("Introducir un número de 1 a 100")


MiValor = Console.ReadLine()

Return MiValor

End Function

End Module

27
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Estructuras de control

Las estructuras de control junto a los procedimientos, componen los dos elementos
que sientan las bases de la programación estructurada.

Las estructuras de control contienen bloques de código que serán ejecutados en


función del resultado obtenido al evaluar una expresión asociada a la estructura. A
este proceso de redirección del flujo del programa hacia un determinado bloque de
código se le denomina bifurcación

Según el modo de ejecución del código que contienen, las estructuras de control se
dividen en los siguientes tipos: selección y repetición.

Selección

Las estructuras de selección o decisión permiten ejecutar un bloque de código entre


varios disponibles, según el resultado de la evaluación de una expresión situada en
la cabecera de la estructura.

Decisión simple

La sintaxis de decisión simple se muestra en el Código fuente:


If Expresión Then
' código
' ......
' ......
End If

Si al evaluar Expresión se devuelve como resultado Verdadero, se ejecutarán las


líneas o bloque de código comprendido entre If y End If. Si Expresión es Falso, se
desviará la ejecución a la primera línea de código que haya después de End If.
Veamos un ejemplo:

Sub Main()
Dim Valor As Integer

Console.WriteLine("Introducir un número")
Valor = Console.ReadLine()

If Valor = 5 Then
Console.WriteLine("Estamos dentro de la estructura If," & _

28
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

" ya que su expresión devuelve Verdadero")


End If

Console.ReadLine()
End Sub

Decisión doble

Además de ejecutar un bloque de código cuando la expresión valga Verdadero,


podemos también ejecutar código cuando la expresión devuelva Falso. En este caso
añadiremos a la estructura la palabra clave Else, como muestra a continuación:

If Expresión Then
' código cuando Expresión es Verdadero
' ......
' ......
Else
' código cuando Expresión es Falso
' ......
' ......
End If

Select Case...End Select

Se trata de una evolución en la estructura If...End If de decisión múltiple, y su trabajo


consiste en evaluar una expresión y comparar el resultado con la lista de
expresiones de cada uno de los casos proporcionados.

Select Case Expresión


Case ListaExpresionesA
' código si se cumple ListaExpresionesA
' .....
[Case ListaExpresionesB]
' código si se cumple ListaExpresionesB
' .....
[Case Else]
' código si no se cumple ninguna ListaExpresiones
' .....
End Select

Ejemplo de uso

Sub Main()
Dim Valor As Integer
Console.WriteLine("Introducir un número")

29
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Valor = Console.ReadLine()

Select Case Valor


Case 5
Console.WriteLine("El valor es 5")
Case 120, 250
Console.WriteLine("El valor es 120 ó 250")
Case 3000 To 4000
Console.WriteLine("El valor está en el rango de 3000 a 4000")
Case Is < 10
Console.WriteLine("El valor es menor de 10")
Case Else
Console.WriteLine("El valor es {0}, y no se cumple ningún caso", Valor)
End Select

Console.ReadLine()
End Sub

Repetición

Estas estructuras, también denominadas bucles, ejecutan un bloque de código de


forma repetitiva mientras se cumpla una condición asociada a la estructura. A cada
una de las ocasiones en que se ejecuta el código contenido en estas estructuras se
le denomina iteración

While...End While

Se trata del tipo más sencillo, ejecuta las líneas de código que contiene, mientras
que la expresión situada junto a While devuelva Verdadero.
Veamos su sintaxis:

While Expresión
' código
' .....
End While

Ejemplo

Sub Main()
Dim Valor As Integer
Dim Contador As Integer

Console.WriteLine("Introducir un número")

30
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Valor = Console.ReadLine()
Console.WriteLine("Mostrar en consola todos los números desde 1 hasta el
introducido")

While Contador < Valor


Console.Write("-" & Contador)
Contador += 1
End While

Console.ReadLine()
End Sub

Do...Loop

Esta estructura ejecuta un conjunto de líneas de código, en función del valor


devuelto por una expresión, que a modo de condición, podemos situar al comienzo
o final de la estructura.
Es posible además, no utilizar la expresión de evaluación al principio o final,
debiendo en ese caso, introducir alguna condición en el interior del código de la
estructura, para forzar la salida del bucle y evitar caer en un bucle infinito. La
instrucción Exit Do nos permite forzar la salida del bucle, pudiendo emplearla tantas
veces como sea necesario.

Ejemplo de uso:

Sub Main()
Dim Valor As Integer
Dim Palabra As String
Dim Contador As Integer
Dim Pruebas As Integer

' bucle con While


Do While Valor <> 200
Console.WriteLine("Introducir un número")
Valor = Console.ReadLine()
Loop

' bucle con Until


Do Until Palabra = "coche"
Console.WriteLine("Introducir una palabra")
Palabra = Console.ReadLine()
Loop

End Sub

31
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

For...Next

Esta estructura ejecuta un bloque de código un número determinado de veces,


establecido por un rango de valores y controlado por un contador. El código fuente
muestra su sintaxis

For Contador = Inicio To Fin [Step Incremento]


' código
' ......
[Exit For]
' código
' ......
Next

El elemento Contador se inicializa con un valor y el código existente entre For y Next
es ejecutado una serie de veces, hasta que el valor de Contador se iguala a Fin.

Por defecto, los incrementos de Contador son en uno, pero podemos cambiar este
aspecto utilizando el modificador Step, mediante el que podemos establecer el
número en el que se van a realizar los incrementos. Step también nos permite
realizar decremento utilizando un número negativo.

Si queremos realizar una salida de la ejecución de esta estructura antes de haber


completado el número de iteraciones establecidas, podemos utilizar la instrucción
Exit For

Ejemplo de uso

' recorrido simple del bucle


Console.WriteLine("Bucle For normal")
For Contador = 1 To 10
Console.WriteLine("Variable Contador: {0}", Contador)
Next
Console.WriteLine()

' recorrer el bucle especificando un incremento


Console.WriteLine("Bucle For con incremento")
Console.WriteLine("Introducir el número de ejecuciones para el bucle")
Final = Console.ReadLine()
For Contador = 1 To Final Step 4
Console.WriteLine("Variable Contador: {0}", Contador)
Next
Console.WriteLine()

32
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Construcciones derivadas de las estructuras de


control
El carácter de bifurcación o iteración de las estructuras de control, nos permite la
creación de construcciones de código que se repiten un número determinado de
veces, para llevar el control de las ejecuciones de un bloque de código y
acumulación de valores. Los nombres más habituales con que se conocen este tipo
de construcciones son: contador y acumulador

Contadores
Un contador consiste en una variable que como su propio nombre indica, realizará
un cálculo de las
iteraciones efectuadas dentro de un bucle. El Código fuente muestra un ejemplo.

Sub Main()
Dim Contador As Integer
Dim Nombre As String
Console.WriteLine("Introducir un nombre")
Do While Nombre <> "Carlos"
Contador += 1
Console.WriteLine("Valor del contador: {0}", Contador)
Nombre = Console.ReadLine()
Loop
Console.WriteLine("El bucle se ha ejecutado {0} veces", Contador)
Console.ReadLine()
End Sub

Acumuladores
Un acumulador es una variable que va almacenando dentro de un bucle el resultado
de una suma efectuada a cada iteración del mismo, tal y como se muestra en el
código fuente.

Sub Main()
Dim Contador As Integer
Dim Acumulador As Integer
Dim Cantidad As Integer
For Contador = 1 To 5
Console.WriteLine("Introducir una cantidad numérica")
Cantidad = Console.ReadLine()
Acumulador += Cantidad
Console.WriteLine("El acumulador contiene un valor de {0}", Acumulador)
Next
Console.ReadLine()
End Sub

33
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Organización y ámbito de los elementos del


lenguaje

Archivos y módulos de código en un programa

La plataforma .NET Framework nos permite una gran flexibilidad para ordenar el
código de nuestra aplicación, que debemos organizar en contenedores físicos y
lógicos de código.
Un contenedor físico no es otra cosa que un archivo con extensión .VB, que son los
que la plataforma reconoce como archivos con código VB.NET. Podemos tener uno
o varios dentro de un proyecto.
Un contenedor lógico, dicho del modo más simple, es aquel elemento en el entorno
de .NET que nos permite escribir en su interior declaraciones y procedimientos, que
serán accesibles desde otros elementos dentro del proyecto actual, o bien desde
otros proyectos, en función de su ámbito o accesibilidad.
El entorno de .NET Framework dispone de varios tipos de contenedores lógicos,
entre los que se encuentran los módulos, clases, interfaces, estructuras, etc. Los
espacios de nombres (namespaces) son un tipo de contenedor lógico especial, cuya
misión consiste en albergar al resto
de contenedores lógicos; una
especie de metacontenedor. La
estructura básica de un contenedor
lógico se muestra en la Figura 1.
La configuración por defecto en este
sentido para VS.NET, establece que
cada vez que añadimos un nuevo
módulo o clase a un proyecto, se
crea un nuevo archivo con extensión
.VB, que contiene el mencionado
módulo o clase. El nombre utilizado
es el mismo para el archivo y el
módulo o clase. Sin embargo,
podemos incluir varios contenedores
lógicos, de igual o distinto tipo,
dentro del mismo archivo de código.
Ver Figura 2

Figura 1 - Contenedor lógico

34
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Figura 2 - Esquema de organización de un proyecto

Ámbito de procedimientos
El ámbito de procedimientos consiste en la capacidad de poder llamar a un
procedimiento desde un punto determinado del programa, en función del nivel de
acceso definido para dicho procedimiento en el momento de su declaración.
Para especificar el ámbito de un procedimiento, lo haremos mediante una palabra
clave o modificador de ámbito, anteponiéndolo al tipo de procedimiento (Sub o
Function) dentro de la declaración. El código fuente muestra la sintaxis a utilizar.

ModificadorÁmbito Sub | Function NombreProcedimiento([ListaParámetros])

Público

Un procedimiento con ámbito público puede ser llamado desde cualquier punto del
módulo en el que se ha declarado, o desde cualquier otro módulo del proyecto. La
palabra clave utilizada como modificador de ámbito en este caso es Public.
En el código fuente tenemos dos módulos: General y Calculos, que contienen
respectivamente los procedimientos Main( ) y Totales( ). Desde Main( ) podemos
perfectamente llamar al procedimiento Totales( ), ya que al haber sido declarado
como Public, es accesible desde otro módulo.

Module General
Public Sub Main()
Console.WriteLine("Estamos en el módulo General, procedimiento Main")
' llamar al procedimiento Totales() que está en otro módulo
Totales(400)

35
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Console.ReadLine()
End Sub
End Module

Module Calculos
Public Sub Totales(ByVal Importe As Integer)
Dim Resultado As Integer
Console.WriteLine("Estamos en el módulo Calculos, procedimiento Totales")
Resultado = Importe + 1000
Console.WriteLine("El total obtenido es: {0}", Resultado)
End Sub
End Module

Public es el modificador de ámbito por defecto para procedimientos, lo que quiere


decir que si no lo utilizamos, al crear un procedimiento, su ámbito será público por
defecto.
Es posible escribir varios procedimientos con el mismo nombre y ámbito público en
distintos módulos. Cuando esto ocurra, al llamar al procedimiento se ejecutará por
defecto el que más próximo esté desde el módulo que ha sido llamado. En el caso
de que necesitemos ejecutar el procedimiento que se encuentre en otro módulo
deberemos hacer la llamada utilizando la sintaxis descrita a continuación:

NombreModulo.NombreProcedimiento( )

Privado
Un procedimiento con ámbito privado sólo puede ser llamado desde el propio
módulo en el que se ha declarado. La palabra clave utilizada como modificador de
ámbito en este caso es Private. Veamos un ejemplo:

36
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Module General
Public Sub Main()
' podemos ejecutar el procedimiento Totales()
' ya que tiene ámbito público
Totales(400)

Dim MiNumero As Integer


' error, la función ObtenerNumero tiene ámbito privado,
' dentro del módulo Calculos,
' por lo que no es accesible desde este módulo
MiNumero = ObtenerNumero()

Console.ReadLine()
End Sub
End Module

Module Calculos

Public Sub Totales(ByVal Importe As Integer)


Dim Resultado As Integer
Console.WriteLine("Estamos en el módulo Calculos, procedimiento Totales")
' podemos llamar desde aquí a la función ObtenerNumero
' ya que estamos en el mismo módulo
Resultado = Importe + ObtenerNumero()
Console.WriteLine("El total obtenido es: {0}", Resultado)
End Sub

Private Function ObtenerNumero() As Integer


Console.WriteLine("Estamos en el módulo Calculos," & _
" procedimiento ObtenerNumero")
Return 18
End Function

End Module

En el anterior fuente, desde Main( ) no podemos llamar a la función


ObtenerNumero( ), ya que dicha función tiene ámbito Private y reside en un módulo
distinto.
Sin embargo, sí podemos llamarla desde el procedimiento Totales( ), ya que en ese
caso, la llamada se realiza dentro del mismo módulo de código.

37
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Ámbito de variables

El ámbito de variables consiste en la capacidad de acceso que tenemos hacia una


variable, de forma que podamos obtener su valor, así como asignarlo. Para
determinar su nivel de accesibilidad, aquí intervienen, además de los modificadores
de ámbito, el lugar o nivel de emplazamiento de la variable dentro del código.
Respecto a los modificadores de ámbito, disponemos de las mismas palabras clave
que para los procedimientos: Public y Private, y su sintaxis de uso la vemos a
continuación:

ModificadorÁmbito [Dim] NombreVariable As TipoDato

A continuación se describen los diferentes tipos de ámbito para variables, en función


de su lugar de declaración.

Ámbito a nivel de procedimiento

Una variable declarada dentro del cuerpo de un procedimiento se dice que tiene un
ámbito local o a nivel de procedimiento, no pudiendo ser accedida por otro código
que no sea el de dicho procedimiento.

Ámbito a nivel de bloque

Una variable declarada dentro de una estructura de control se dice que tiene ámbito
local a nivel de bloque, siendo accesible sólo dentro del código que está contenido
en la estructura.
En este punto debemos aclarar que el ámbito dentro de un bloque se entiende como
la parte de la estructura en la que ha sido declarada la variable. Por ejemplo, en una
estructura If...End If con Else, si declaramos una variable a continuación de If, dicha
variable no será accesible desde el bloque de código que hay a partir de Else

Ámbito a nivel de módulo


Una variable declarada en la zona de declaraciones de un módulo, es decir, fuera de
cualquier procedimiento, pero dentro de las palabras clave Module...End Module, y
utilizando como palabra clave Dim o Private, se dice que tiene ámbito a nivel de
módulo.
Aunque tanto Dim como Private son perfectamente válidas para declarar variables a
nivel de módulo, se recomienda usar exclusivamente Private; de este modo
facilitamos la lectura del código, reservando las declaraciones con Dim para las
variables con ámbito de procedimiento, y las declaraciones con Private para el
ámbito de módulo.

38
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Arrays
Un array es un tipo de dato compuesto, formado por un conjunto de elementos del
mismo tipo de dato, al que se le asigna un identificador para poder reconocerlo en el
código del programa. También se les denomina matriz o vector, aunque en este
texto emplearemos el término array de forma genérica. A cada elemento del array
se accede mediante un índice, que indica el número de posición que ocupa dicho
elemento dentro del array.
Si tuviéramos que representar un array gráficamente, podríamos hacerlo mediante
un conjunto de casillas, en cada una de las cuales se encontraría un elemento del
array. Cada casilla tendría un número (índice) que identificaría de forma única su
posición.

Declaración
Para declarar un array actuaremos prácticamente igual que para declarar una
variable normal, con la diferencia de que utilizaremos los paréntesis junto al nombre
de la variable, para indicar que se trata de un array, y opcionalmente, dentro de los
paréntesis, indicaremos el número de elementos de que inicialmente va a constar el
array. También es posible, asignar valores a los elementos en el mismo momento de
su declaración.
Debemos tener en cuenta a la hora de establecer el número de elementos, que el
primer índice de un array es el cero, por lo que al ser creado, el número real de
elementos en un array será el especificado en la declaración más uno

Sub Main()

' array sin elementos


Dim Colores() As String

' array con 4 elementos vacíos: de 0 a 3


Dim Nombres(3) As String

' array con 3 elementos, cuyos valores asignamos


' en el momento de la declaración del array
Dim Frutas() As String = {"Manzana", "Naranja", "Pera"}

End Sub

39
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Al declarar un array, todos sus valores son del mismo tipo de dato. Si necesitamos
que dichos valores sean de tipos diferentes, debemos declarar el array como tipo
Object, ya que al ser este el tipo de dato genérico en el entorno de .NET, nos
permitirá asignar valores de distintos tipos al array.

Asignación y obtención de valores

Para asignar y obtener valores de los elementos de un array, actuaremos igual que
para una variable normal, pero empleando además el índice entre paréntesis junto
al nombre de la variable, para indicar qué posición queremos manipular

Sub Main()
' array con 4 elementos: de 0 a 3
Dim Nombres(3) As String

' asignar valores al array


Nombres(0) = "Ana"
Nombres(1) = "Pedro"
Nombres(2) = "Antonio"
Nombres(3) = "Laura"

' obtener valores de un array


Dim ValorA As String
Dim ValorB As String
ValorA = Nombres(1) ' Pedro
ValorB = Nombres(3) ' Laura

' mostrar los valores obtenidos del array

40
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Console.WriteLine("Variables: ValorA --> {0}, ValorB --> {1}", ValorA, ValorB)


Console.ReadLine()
End Sub

Modificación de tamaño
En función de si la cantidad de elementos de un array puede ser cambiada, los
arrays se clasifican en los siguientes tipos:

• Estáticos. Son aquellos que tienen un tamaño fijo y no se pueden modificar.


• Dinámicos. Son aquellos cuya cantidad de elementos puede ser ampliada o
reducida. En VB.NET todos los arrays son de tipo dinámico

Para modificar el tamaño o número de elementos de un array, emplearemos la


instrucción ReDim, seguida del array a modificar y el nuevo tamaño

' array con 4 elementos: de 0 a 3


Dim Nombres(3) As String

' asignar valores al array


Nombres(0) = "Ana"
Nombres(1) = "Pedro"
Nombres(2) = "Antonio"
Nombres(3) = "Laura"

' ampliamos el array con 6 elementos: de 0 a 5


ReDim Nombres(5)

ReDim no toma el array existente y modifica su número de elementos, sino que


internamente crea un nuevo array con el número de elementos indicado, por lo que
se pierden los valores del array previo.
Para solucionar este inconveniente, debemos utilizar junto a ReDim, la palabra clave
Preserve. Con ello, los valores existentes en el array a modificar son conservados.

' ampliamos el array con 6 elementos: de 0 a 5


' y los valores de los elementos que hubiera, son conservados
ReDim Preserve Nombres(5)

Recorrer un array
Para recorrer todos los elementos de un array emplearemos la estructura de control
For...Next, que ejecuta un bloque de código un número determinado de veces, y la
función del lenguaje UBound( ), que devuelve el número correspondiente al índice
superior del array pasado como parámetro.

41
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Sub Main()
' crear un array y rellenarlo con valores
Dim Nombres(3) As String

Nombres(0) = "Ana"
Nombres(1) = "Pedro"
Nombres(2) = "Antonio"
Nombres(3) = "Laura"

' recorrer el array y mostrar el contenido


' de cada uno de sus elementos
Dim Contador As Integer

For Contador = 0 To UBound(Nombres)


Console.WriteLine("Posición del array: {0}, valor: {1}", _
Contador, Nombres(Contador))
Next

Console.ReadLine()
End Sub

Funciones del lenguaje

La función como elemento de soporte al programador

Cada lenguaje dispone de un grupo de funciones de apoyo, para ayudar al


programador en su trabajo cotidiano. Las versiones anteriores de Visual Basic
contenían un gran número de funciones para realizar operaciones aritméticas,
manipular cadenas, fechas, etc.
VB.NET también tiene funciones para las operaciones antes comentadas. No
obstante, debido a la orientación a objetos sobre la que está construida la
plataforma .NET, la gran potencia a la hora de resolver cualquier situación la
encontraremos en el gran número de objetos proporcionados por el entorno para
resolver las más variadas situaciones, y que veremos en los temas dedicados a
programación orientada a objeto. Siendo recomendado en la medida de lo posible,
el uso de los objetos de .NET Framework en detrimento de las funciones, ya que el
rendimiento en ejecución será más óptimo al emplear objetos.

42
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Funciones de comprobación de tipos de datos

Para este tipo de situaciones, en las que necesitamos comprobar si determinada


variable o expresión contienen un valor numérico, fecha, etc., el lenguaje nos
proporciona algunas funciones, con las que podemos comprobar el tipo de dato,
para evitar posibles errores
IsNumeric( )
Esta función devuelve un valor lógico indicando si la expresión que pasamos como
parámetro contiene un número o una cadena que pueda ser convertida a número

IsDate( )
Esta función devuelve un valor lógico indicando si la expresión que pasamos como
parámetro contiene una fecha o una cadena que pueda ser convertida a fecha.

IsArray( )
Esta función devuelve un valor lógico indicando si la expresión que pasamos como
parámetro contiene
un array.

Funciones numéricas

Int( )
' Sintaxis
Int(Número)
Devuelve la parte entera del parámetro Número

Rnd( )
' Sintaxis
Rnd([Número])
Devuelve un número aleatorio de tipo Single, que será menor que 1, pero mayor o
igual a cero

Funciones de cadena de caracteres

Len( )
' Sintaxis
Len(Cadena)

43
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Devuelve un número con la longitud de la cadena pasada como parámetro

Space( )
' Sintaxis
Space(Número)
Devuelve una cadena de espacios en blanco, de una longitud igual al número
pasado como parámetro

InStr( )
' Sintaxis
InStr([Comienzo, ]CadenaBuscar, CadenaBuscada [, TipoComparación])
Busca dentro de CadenaBuscar la cadena contenida en el parámetro
CadenaBuscada. Opcionalmente podemos establecer en Comienzo, la posición en
la que comienza la búsqueda y el tipo de comparación (texto, binaria)

Left( )
' Sintaxis
Left(Cadena, Longitud)
Esta función extrae, comenzando por la parte izquierda de Cadena, una subcadena
con el número de caracteres indicado por el parámetro Longitud

Right( )
' Sintaxis
Right(Cadena, Longitud)
Esta función extrae, comenzando por la parte derecha de Cadena, una subcadena
con el número de caracteres indicado por el parámetro Longitud

Replace( )
' Sintaxis
Replace(Cadena,CadOrigen,CadNueva [,Inicio] [,Sustituciones]
[,TipoComparación])
Esta función toma la cadena situada en el primer parámetro y busca la cadena
CadOrigen, sustituyendo las ocurrencias encontradas por la cadena CadNueva.
Opcionalmente, el parámetro Inicio especifica la posición en la que comenzará la
sustitución; el parámetro Sustituciones indica el número de sustituciones a realizar;
y TipoComparación indica como se realizarán las comparaciones (texto, binaria).

LTrim( ), RTrim( ), Trim( )


' Sintaxis
LTrim(Cadena)
RTrim(Cadena)
Trim(Cadena)

44
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

Estas funciones eliminan los espacios en blanco de una cadena. La eliminación será
a la izquierda en el caso de LTrim( ), a la derecha en el caso de RTrim(), y a ambos
lados con Trim( )

UCase( ), LCase( )
' Sintaxis
UCase(Cadena)
LCase(Cadena)
Estas funciones, convierten la cadena pasada como parámetro a mayúsculas y
minúsculas respectivamente.

Funciones de fecha y hora

Now( )
' Sintaxis
Now()
Devuelve un valor de tipo Date con la fecha y hora del sistema.

DateAdd( )
' Sintaxis
DateAdd(TipoIntervalo, ValorIntervalo, Fecha)
Suma o resta a una fecha, un intervalo determinado por el parámetro TipoIntervalo.
El intervalo a utilizar pueden ser días, semanas, meses, etc. Para determinar si se
realiza una suma o resta, ValorIntervalo deberá ser positivo o negativo
respectivamente.

DateDiff( )
' Sintaxis
DateDiff(TipoIntervalo, FechaPrimera, FechaSegunda)
Calcula la diferencia existente entre dos fechas. En función de TipoIntervalo, la
diferencia calculada serán días, horas, meses, años, etc.

DatePart( )
' Sintaxis
DatePart(TipoIntervalo, Fecha)
Extrae la parte de una fecha indicada en TipoIntervalo. Podemos obtener, el día,
mes, año, día de la semana, etc.

45
Laboratorio de Computadoras 6° 2da - EPET N°15
Profesor: Luciano Laurin

46

También podría gustarte