Home MundoTec Software Código fuente Tutorial / pdf Minijuegos
Cerrar

Tutorial Aprender Visual Basic

Tutorial APREDER VISUAL BASIC.







VERIFICACIÓN DE ALGORITMOS UTILIZANDO VISUAL BASIC

Cuando hablamos de "Verificación de algoritmos" en el curso “Bases de la programación nivel I” de aprenderaprogramar.com, distinguimos cinco técnicas que eran:

- Verificación mental.
- Verificación por seguimiento escrito.
- Verificación por seguimiento con tablas de variables.
- Verificación por seguimiento con desarrollo en un lenguaje.
- Verificación por seguimiento con un lenguaje y paso a paso.

Vamos a abordar cómo usar estas técnicas con Visual Basic. Dado que la verificación mental o por seguimiento escrito son propias del programador y su mente, o a lo sumo, un papel de ayuda, comenzaremos por ver cómo construir tablas de variables con Visual Basic.

CONSTRUIR TABLAS DE VARIABLES A TRAVÉS DE VISUAL BASIC

Consideremos el siguiente código, correspondiente a una estructura de bucle anidado dentro de otro:

Visual Basic

Supongamos que queremos construir una tabla de variables en Visual Basic con 3 columnas:

Visual Basic

Para ello pdemos escribir el siguiente código:

Códigos con versiones menos recientes y recientes VB:

Visual Basic

Hemos utilizado para mostrar un resultado un Label, pero también podríamos haberlo hecho sobre un TextBox. ¿Por qué? No hay motivo por el cual usar un Label sea obligatorio. Cada cual lo hará como lo estime conveniente. Nosotros usamos normalmente Labels para mostrar resultados, pero en algunos casos, por ejemplo si nos interesa poder copiar y pegar un texto, usamos TextBox.
Supongamos un programa que contiene el doble bucle que hemos visto. Hemos querido verificarlo y lo hemos hecho con esta visualización. Una vez estamos satisfechos del resultado del bucle, borramos la verificación que hemos utilizado para visualizar y seguimos trabajando tranquilos, sabemos que el bucle no va a producir efectos indeseados.
En ocasiones nos interesa obtener un resultado en forma de tabla de variables que podamos exportar por ejemplo a un procesador de textos. Una forma de hacerlo sería programándolo, pero también podemos hacer que los resultados se presenten sobre un TextBox como hemos indicado antes y a partir de ahí lo único que tenemos que hacer es copiar (Ctrl + C) y pegar (Ctrl + V). Vamos a ver este caso en código. Primeramente crearemos un TextBox y en la ventana de propiedades establecemos Multiline = True y Scrollbars = 3 (Both).

Visual Basic

Si Multiline no está establecido en True nos saldrá el resultado en una sola línea. El resultado es la ya conocida tabla, pero con este código en formato "capturable" en el portapapeles, de modo que podemos por ejemplo pasarlo a una hoja de cálculo.

PROGRAMACIÓN RÁPIDA. VERIFICACIÓN DE ALGORITMOS EN VISUAL BASIC.

La programación rápida busca verificar el funcionamiento de los algoritmos antes de entrar en aspectos más formales, como pueden ser la estética, comentarios, etc. La programación rápida puede ser entendida de distintas maneras según los criterios de cada programador. Algunas prácticas de programación rápida pueden ser las siguientes:

- Se usa el formato de salida por pantalla más sencillo posible. En nuestro caso usaremos Labels, TextBox ó msgBox.
- No se piden datos al usuario. La entrada de datos es controlada directamente por el programador, bien usando la instrucción Rnd para generar datos aleatorios o disponiendo una entrada de valores a variables directa, controlada por el programador.
- La estructura del programa no es la definitiva, con los diferentes módulos o procedimientos que pueda llevar, sino provisional.

Vamos a ver un ejemplo de lo que sería programación rápida aplicada al código que se muestra a continuación (Programa SUC02), relativo al cálculo de un sumatorio del tipo:

Visual Basic
Visual Basic

SOLUCIÓN CÓDIGO DE PROGRAMACIÓN RÁPIDA
Visual Basic

La diferencia respecto al código que se propuso en el citado ejercicio está en que:

- Se han eliminado aspectos relacionados con la estética del programa como que se muestre un título de formulario "Programa SUC02". Ya en los programas que venimos desarrollando la atención a © 2006-2029 aprenderaprogramar.com Programación rápida. Verificar algoritmos en Visual Basic. Recargar formularios. cuestiones estéticas es más bien escasa, pero para la verificación de un algoritmo nos olvidamos completamente de ellas.
- La estructura del programa, que constaba de 2 opciones, Cálculo y Salir, con 3 procedimientos asociados a la opción cálculo (EntraDatos, Proceso y Resultados) se ha eliminado, existiendo un único código asociado a la carga del formulario por ser lo más rápido.
- La petición de datos al usuario con un InputBox de tipo (Dato = CInt(InputBox("Por favor, introduzca no entero entre 0 y 100", "Dato")) se ha eliminado. A cambio, existen dos líneas con las que el programador trabaja. Una en la que introduce datos manualmente y otra en las que genera datos aleatoriamente. De este modo puede hacer tanto comprobaciones específicas como comprobaciones aleatorias.
- Las variables que intervienen no coinciden exactamente con las del programa definitivo.

El programador introducirá los cambios que le resulten de interés para la verificación del programa. Por ejemplo, será habitual introducir un botón para que cada vez que sea pulsado se repita la muestra de resultados (generando datos aleatorios). Para ello nos basta desactivar la introducción de datos manual, activar la aleatoria e introducir un botón que se encargue de recargar el formulario. El código sería el siguiente:

Visual Basic

De una pantalla de este tipo un programador avezado puede obtener numerosa información respecto al funcionamiento del algoritmo. Fijémonos por ejemplo en los resultados para dato base = 49. Las raíces que nos da son 7 y -7. De ahí podemos intuir que el cálculo de raíces se está realizando correctamente. La raíz esperada para 81 sería 9. Tenemos un dato base 82 con raíz 9,05, luego con distintos datos parece que el cálculo de raíces es correcto. En cuanto a los sumatorios, podríamos compararlos con datos de que dispongamos previamente para valorar su corrección, o incluso valorarlos comparativamente. Podemos esperar que el sumatorio para un dato base 79 sea similar (ligeramente inferior) al de un dato base 82. Comprobamos que es así.
Si para un dato base 49 se nos mostraran raíces 5,05 y -5,05, o el sumatorio correspondiente a 79 fuera superior a 82, estaríamos ante una situación de no superación de la verificación. Si se diera esta circunstancia, tendríamos que apuntar los datos que nos están dando lugar a resultados erróneos, revisar el algoritmo por si existen errores de sintaxis, trascripción, etc. e incluso modificar su diseño si fuera necesario. Por último, cuando creamos que está funcionando razonablemente, introduciremos de forma manual los datos que apuntamos en su momento como generadores de errores y comprobaremos que para esos datos no hay problema ninguno.
Las propuestas de verificación que hemos visto se corresponden con la verificación funcional del algoritmo, ya que mediante un número limitado de pruebas inferimos que su funcionamiento es correcto. A su vez, para la entrada manual se supone que escogemos una serie de casos representativos, lo que se correspondería con lo que hemos denominado verificación razonada. Por el contrario, la ejecución del programa con datos de entrada generados con Randomize y Rnd se correspondería con una verificación aleatoria.
La verificación total de este algoritmo consistiría en un programa que nos mostrara los resultados para todos los valores posibles (enteros comprendidos entre 0 y 100), de forma que pudiéramos comprobar la corrección de cada uno de ellos. Esto sería posible, pero en general supone un esfuerzo que se considera no necesario ya que las verificaciones funcionales bien realizadas resultan rápidas y efectivas. Además, en muchos casos una verificación completa es inviable, ya que en muchos problemas los posibles datos de entrada son infinitos (por ejemplo, los números enteros).

PASO A PASO Y PUNTOS DE INTERRUPCIÓN (BREAKPOINTS)

Visual Basic dispone de distintas opciones relacionadas con la ejecución paso a paso de un programa, de las cuales vamos a ver una de ellas: los puntos de interrupción. Se entiende por punto de interrupción una línea del programa donde el programador decide detener la ejecución. El objetivo será comprobar qué valor tienen las variables, qué resultados se han obtenido por pantalla hasta el momento, etc. y de esta forma comprobar si el programa hasta ese momento está haciendo lo que se espera.
Una vez posicionado el cursor sobre la línea en que queremos detener el programa, hay cuatro maneras de establecer puntos de interrupción:

a) En el menú Depuración (Depurar), elige la opción alternar puntos de interrupción.
b) Pulsa F9.
c) Pulsa el botón derecho del ratón y elige Punto de interrupción – Insertar punto de interrupción ó Alternar - Puntos de interrupción (según versión de Visual Basic que estés utilizando).
d) Sobre la banda gris que está en el lateral izquierdo de la ventana de código, pincha con el ratón a la altura de la línea en que quieres establecer un punto de interrupción.

En cualquiera de los casos, el resultado será que la línea elegida aparecerá subrayada en rojo y con un punto rojo en su lado izquierdo. El aspecto del editor será similar al mostrado a continuación (aunque depende de la versión de Visual Basic que estemos utilizando).

Visual Basic

Vamos a suponer que estamos trabajando con el programa 'Preliminar SUC02' cuyo código hemos visto en la entrega anterior de este curso de Visual Basic de aprenderaprogramar.com, y que establecemos un punto de interrupción o breakpoint en la línea Suce = Suce + Math.Sqrt(dato) ó Suce = Suce + Sqr(Dato) según versión, dentro del bucle Do While.
Si ejecutas el programa (p.ej. pulsando F5), comprobarás que el programa se detiene, indicando con una flecha amarilla que se encuentra detenido al llegar a la línea que hemos indicado como punto de interrupción. Comprueba ahora cómo si posicionas el puntero del ratón sobre una variable, por ejemplo Suce, Visual Basic te muestra el valor que tiene la variable Suce justo en ese momento.

Visual Basic

Para continuar ejecutando el programa se ha de pulsar el icono de ejecución (o pulsar F5 nuevamente), y el programa continuará hasta encontrarse nuevamente con un punto de interrupción. Ten en cuenta que un punto de interrupción dentro de un bucle detendrá el programa tantas veces como se ejecute el bucle.
Igual que para variables situadas sobre la línea de interrupción, puedes consultar el valor de variables en otras líneas. Ten en cuenta que el valor mostrado es siempre el valor de las variables antes de ejecutar la línea de interrupción. Por eso en la primera interrupción nos indica que Suce vale 0. Si quisiéramos saber el valor de las variables justo después de ejecutarse esa línea, es decir, qué valor ha adquirido Suce, podemos hacerlo de dos maneras. La primera, sumando los valores actuales a la derecha de la igualdad. La segunda, estableciendo la interrupción en la línea inmediatamente posterior a aquella línea que queremos evaluar. En nuestro caso podríamos establecer la interrupción en la línea Dato = Dato – 1 de modo que en esta línea podemos comprobar el valor que ha tomado Suce después de ejecutada la línea anterior:

Visual Basic

Para un dato base igual a 85, el primer valor de Suce tras ejecutarse la línea es 9,219544. Para realizar este tipo de interpretación hemos establecido la interrupción en la línea inmediata posterior a aquella que nos resulta de interés. Comprueba cómo va variando el valor de Suce con cada paso por el bucle y razona si los valores que va tomando son correctos o no.
Se pueden establecer tantos puntos de interrupción como se estimen oportunos. Normalmente irán colocados en lugares que el programador estima estratégicos para sus intenciones como pueden ser: antes de entrar a un bucle, en el interior de un bucle, tras salir de un bucle, etc.
Un punto de interrupción se elimina de la misma manera que se puso: si estando sobre una línea marcada pulsamos F9 o elegimos alternar puntos de interrupción, será desactivada. También podemos suprimir todos los puntos de interrupción existentes a través de una opción más avanzada.

Existen otras formas de paso a paso con Visual Basic como son: Paso a Paso por instrucciones (F8), Paso a Paso por Procedimientos (Mayús + F8), o Ejecutar hasta el cursor (Ctrl + F8). Existen muchas más opciones de configuración y posibilidades para la depuración de programas con Visual Basic. Ten en cuenta que con aplicaciones profesionales, largas y extensas, pueden existir miles de líneas de código. Los programadores profesionales utilizan las herramientas de depuración disponibles para detectar y corregir errores en el código.

DEPURAR ALGORITMOS

Vamos a reflejar en forma de código enfoques para la verificación de algoritmos. Partimos del siguiente bucle ejemplo:

For i = a To b
For j = m To n
R = i * j
Next j
Next i

Los enfoques para depurar el algoritmo los podemos establecer a partir de puntos de interrupción. Sin embargo, en general es más rápido hacer una simple constatación del valor de variables que establecer una interrupción del programa, ya que por cada parada estaremos perdiendo un tiempo. Con este razonamiento, usaremos un Label para dejar constancia del valor de una variable en un punto dado del programa. Sólo cuando no seamos capaces de llegar a conclusiones sin tener que detener el programa, estableceremos puntos de interrupción.

• Enfoque al resultado

Nos centramos en comprobar un valor final, en este caso R, suponiendo que si este valor es correcto el resto de procesos también lo son. Por ejemplo:

Visual Basic

En el programa anterior hemos verificado qué valor toma R en cada pasada del bucle. El objetivo del bucle va a ser transferir el valor de R a otros procesos, pero antes de hacer eso hemos querido comprobar qué resultado era el que obteníamos con este diseño de bucle.

• Enfoque al proceso

Analizamos qué ocurre en uno o varios pasos del programa que resultan de nuestro interés, estudiando los valores que van tomando las variables. Por ejemplo:

Visual Basic

A partir de estos valores de variables el programador analiza si el programa está respondiendo a lo que él tenía previsto o si se está produciendo un resultado indeseado. En caso de detectar algún error, procede a la corrección y a una nueva prueba.

• Enfoques zonales

Analizamos qué ocurre en una zona de código donde estimamos ocurren procesos de interés o donde pensamos que puede existir un problema. Siguiendo con nuestro ejemplo, un enfoque zonal a la entrada del bucle sería:

Visual Basic

Se han verificado todas las variables a la entrada del bucle. Algunas no tiene demasiada lógica que se verifiquen, pero a veces los errores saltan donde menos son de esperar, y toda información es valiosa.

ERRORES

Si has venido trabajando los diferentes programas y ejercicios que hemos planteado a lo largo del curso se te habrán presentado numerosos mensajes de error. Los mensajes de errores interceptados por Visual Basic son de dos tipos: "Errores de compilación" y "Errores de ejecución", coincidentes con la clasificación de errores que se hace en el curso “Bases de la programación nivel II” de aprenderaprogramar.com.
Ya hemos hablado algo de errores de sintaxis, y de la ayuda que nos proporciona Visual Basic a través de la corrección automática de errores. Los errores de sintaxis serán muy frecuentes y quizás incómodos, pues casi siempre nos encontraremos con uno o varios al tratar de ejecutar un programa. Sin embargo, son los menos "peligrosos", ya que de su fácil detección se deriva su corrección segura. Prueba a ejecutar este código donde existe un error de sintaxis (Lbel en vez de Label):

Visual Basic

No se indica directamente que se trata de un error de sintaxis, ya que en algunas ocasiones a Visual Basic no le resulta fácil determinar si el error es de sintaxis o de otro tipo. En este caso por ejemplo, se interpreta que se está invocando una variable o procedimiento de nombre Lbl y te indica que dicho procedimiento o variable no está definida y por tanto no se puede invocar. Te aparece subrayado el término que está dando lugar al error, con lo cual rápidamente podrás comprobar que se trata de una escritura indebida y proceder a su corrección.
© 2006-2029 aprenderaprogramar.comTipos de errores en Visual Basic: de compilación, de ejecución, de sintaxis. Los errores por procesos no válidos son en general detectados al tratar de ejecutar los programas, indicándonos Visual Basic qué tipo de error se ha producido, y en qué línea ha tenido lugar, aunque a veces no se detectan y dan lugar a “resultados extraños”. Prueba a ejecutar el siguiente código:

Visual Basic

Al llegar a la línea donde se trata de mostrar el valor de i / j el ordenador se encuentra con una indeterminación matemática ya que cero dividido entre cero no es un valor calculable. Esto puede dar lugar a dos tipos de situaciones:

a) La detención del programa y aparición de un mensaje de error.

Visual Basic

b) La obtención de un resultado extraño, por ejemplo que por pantalla aparezca NeuN (este valor extraño indica “resultado matemáticamente no determinable” y posiblemente termine generando un error y detención de un programa cuando surge en programas largos que utilizan este resultado para realizar más operaciones adicionales).

Cuando la ejecución de un programa se detiene debido a la aparición de un error Visual Basic nos suele ofrecer ayuda o información sobre el error que nos sirva para realizar las correcciones oportunas. Una vez detenido el programa podemos pulsar el botón “Terminar” para concluir la ejecución o también podremos pulsar en ayuda o sobre el error en una lista de errores para obtener ayuda e información adicional. La opción de ayuda nos conducirá a una descripción del tipo de error, recomendaciones para evitarlo, etc.
Podemos intervenir sobre el código para tratar de subsanar el error, con posibilidad de proseguir posteriormente la ejecución (pulsando F5). Visual Basic nos resalta y señala con una flecha la línea en que se ha producido la detención del programa, lo cual nos sirve de ayuda para corregir el error.

Visual Basic

Cuando el programa está detenido podemos obtener información posicionando el cursor sobre un elemento del código (por ejemplo para conocer el valor que tiene una variable o el tipo de una variable).

Visual Basic

No vamos a extendernos sobre las posibilidades que sobre errores ofrece Visual Basic, como programadores deberemos ir conociéndolas poco a poco a medida que tengamos más experiencia.
En relación a errores lógicos, las posibilidades son muy variadas. Algunos errores lógicos pueden ser detectados por Visual Basic, pero no conviene tener demasiadas expectativas al respecto. No te vamos a pedir que pruebes el siguiente código ya que puede bloquear el computador:

Visual Basic

Pero si por casualidad estás construyendo un programa y te has dejado olvidado o "sin solucionar" un bucle de este tipo, lo que puedes esperar es que el ordenador se quede "colgado" (bloqueado reptiendo un bucle continuamente). Con un poco de suerte podrás finalizar el programa sin necesidad de reiniciar, perdiendo la información que no hubieras guardado.
Por ello te recomendamos como medida de prudencia que antes de ejecutar cualquier programa, y en especial desarrollos extensos, procedas a guardar el proyecto de programa a través de la opción Guardar de Visual Basic, o bien que transfieras el código a un procesador de textos y procedas a guardarlo como texto. De esta manera, ante bloqueos inesperados, podrás recuperar el trabajo realizado y proceder a corregirlo.

Existen diversos tipos de errores interceptables por Visual Basic.
Puedes consultar una lista de ellos en la ayuda del programa buscando "Errores interceptables". De esta lista, compuesta por más de 60 tipos de error, podemos extraer información relativa a los tipos de errores detectables, es decir, aquellos cuya ocurrencia de alguna manera podemos tratar a través de instrumentos de gestión de errores (On Error, objeto Err...).
Tratar de estudiar todos los tipos de error no tiene demasiado sentido. Más bien se tratará de ir familiarizándonos con ellos a través de nuestra interacción con el Visual Basic. Así pues, cuando se nos presente un error del tipo: "No hay suficiente espacio de pila", podemos ver a través de la ayuda cuáles son las causas de este error que afecta a la pila (espacio de memoria temporal). Por ejemplo que nuestro programa cuente con procedimientos anidados muy profundamente, cuestión frecuente con los procedimientos recursivos (es decir, los procedimientos que se llaman a sí mismos).
En cuestión de errores se trata de prevenir problemas pero también de buscar soluciones. Ya lo dice el refrán: "Burro cargado busca camino", o aplicado al ámbito de la programación "Programador con problemas busca soluciones".

CAPTURA Y GESTIÓN DE ERRORES. INSTRUCCIÓN ON ERROR. OBJETO ERR. MÉTODO CLEAR.

Introduciremos la gestión de errores o protocolo para el tratamiento de los errores detectados durante la ejecución del programa a través de la instrucción On Error.

On Error activa una rutina de control de errores y especifica la ubicación de la misma. Vamos a ver algunas de las posibles sintaxis:

a)

On Error GoTo [Línea]

donde la línea puede ser especificada como un número o como una etiqueta.

b) On Error Resume Next

c) On Error GoTo 0

En definitiva se trata de indicarle al programa qué hacer en caso de que se produzca un error durante la ejecución (recuerda que los errores en compilación van a impedir que se ejecute el programa).
En el caso a) hacemos que el programa salte a la línea especificada, que tendrá que estar en el mismo procedimiento en que se ha producido el error.
En el caso b) Resume Next indica que el programa salta a la siguiente instrucción después de la que ha generado el error (se intenta continuar con la ejecución ignorando el error).
Por último c) desactiva el control de errores, con lo que en caso de producirse uno el programa se detendrá o será impredecible.
Cuando se produce un error en tiempo de ejecución (error durante la ejecución del código), las propiedades del objeto Err se llenan con información que identifica al error de forma única. Antes del error o después de ser tratado las propiedades son las de defecto (en general cero, cadenas vacías o mensajes estándar). Las propiedades del objeto Err son:

a) Number: número de error. Vale cero (falso) si no se ha producido un error.
b) Source: nombre del programa (proyecto) en que se generó el error.
c) Description: texto informativo sobre el error.
d) Helpfile: unidad, ruta y nombre del archivo de ayuda de Visual Basic, si existe. En caso de no existir contiene una cadena vacía o espacio en blanco o cero.
e) Helpcontext: identificador de la parte de la ayuda asociada al número de error, si existe. En caso de no existir contiene una cadena vacía, espacio en blanco o cero.

Por ejemplo podemos hacer que sobre un Label se muestre la información Err.Description, que devuelve un mensaje informativo sobre el error. Por ejemplo "Nombre o número de archivo incorrecto", “La operación aritmética ha provocado un desbordamiento”, etc.

Prueba el siguiente código:

Visual Basic

Con este programa generamos un error de desbordamiento (i excede los valores admisibles para Integer) y nos aparece un MsgBox que dice: “Se ha producido un error. Tipo de error = 6. Descripción: Desbordamiento” o “Descripción: la operación aritmética ha provocado un desbordamiento”.
Tras el tratamiento Err vuelve a establecerse a valores de defecto.
Podemos borrar los contenidos del objeto Err haciendo uso de la sintaxis Err.Clear (en las versiones más recientes Err.Clear() ). A través de Clear se borran todas las propiedades establecidas del objeto Err. La invocación de Clear puede ser hecha por el programador, o bien ser automática tras ejecutarse un Resume, Exit Sub, Exit Function, Exit Property ó una instrucción On Error.
En el programa anterior, si después de la línea 88 mostramos Err.Number sobre un Label nos devuelve un 6. En cambio, si escribimos Err.Clear y luego mostramos Err.Number sobre un Label, nos devuelve un cero, pues hemos restablecido Err a sus valores iniciales.

Prueba este otro código:

Visual Basic

En esta ocasión tenemos una etiqueta de línea a donde se remite el flujo en caso de error, y a través de esta línea se redirecciona nuevamente el flujo a un procedimiento denominado GestiónError. Ten en cuenta que al usar Resume Next se continúa la ejecución en la instrucción inmediatamente posterior a la que originó el error, y que también ocurre que las propiedades del objeto Err se restablecen. En caso contrario, se volvería a entrar en GestiónError una segunda vez.
Visual Basic dispone de más instrucciones y posibilidades relacionadas con la captura y gestión de errores, que es una parte importante cuando se desarrollan programas a nivel profesional. Nosotros en este curso nos limitamos a exponer algunas ideas básicas sobre qué son los errores y sobre las posibilidades para tratarlos.

GENERAR UN ARCHIVO PUNTO EXE

Tras desarrollar el código correspondiente a un programa, el paso final será generar un archivo del tipo programa.exe que podamos ejecutar en cualquier ordenador con sistema operativo Windows sin necesidad de tener instalado Visual Basic.

Para ello seguiremos estos pasos:

a) En las versiones menos recientes de Visual Basic: ir al menú Archivo, Generar.exe, e indicar el nombre y la ruta donde queremos guardar nuestro archivo ejecutable. Pruébalo con cualquiera de los pequeños programas que hemos visto.
Visual Basic

b) En las versiones más recientes de Visual Basic: como primer paso habremos creado un proyecto (para ello en el menú Archivo -- > Nuevo proyecto, elegimos Aplicación de Windows Forms). Escribimos el código de nuestro proyecto y guardamos el proyecto con un nombre, por ejemplo WindowsApplication1, en la ruta que nosotros queramos (por ejemplo C:\Users\Asus\Desktop\proyecto1). Podemos trabajar el tiempo que queramos en el proyecto, realizando los cambios o modificaciones que sean necesarios. Cuando queramos generar el archivo ejecutable (punto exe) vamos a la opción de menú Depurar -- > Generar WindowsApplication1 (o generar el proyecto con el nombre que le hayamos puesto). Una vez hecho esto en una ruta como C:\Users\Asus\Desktop\proyecto1\ WindowsApplication1 \WindowsApplication1\bin\Release encontraremos un archivo con extensión .exe y el nombre de nuestra aplicación (si no lo encuentras búscalo con el buscador del explorador de Windows). Por ejemplo WindowsApplication1.exe. Haciendo doble click sobre ese archivo podemos ejecutar nuestro programa. También podemos copiarlo y pegarlo en otra ubicación (o trasladarlo a otro computador).
Una vez tenemos el archivo punto exe, este archivo funcionará como cualquier otro programa. Podemos distribuirlo a cualquier usuario de Windows y éste podrá ejecutarlo en su ordenador, simplemente haciendo doble click sobre él. No obstante, al distribuirlo como punto exe el código de programación que constituye el programa deja de estar accesible, de forma que un usuario que tenga el punto exe no puede acceder al código del programa, sino simplemente ejecutarlo.