IES “Alfonso X el Sabio” Consejería de Educación, Cultura y Deportes CIF: S4500181E C/ Valdehuesa nº 6 45007 Tf. 925230970; Fax 925240850; e-mail [email protected] INTRODUCCIÓN A LA PROGRAMACIÓN. INTRODUCCIÓN. El proceso de programación consiste en elaborar una serie de instrucciones que indican al ordenador lo que tiene que realizar. Cuando el ordenador ejecuta el programa, va leyendo y siguiendo las instrucciones paso por paso. De esta manera, con las instrucciones adecuadas, podemos hacer que el ordenador realice la acción que queramos. Las instrucciones pueden estar escritas en distintos lenguajes de programación, ya que luego el ordenador transforman todas a código binario. Cada lenguaje de programación utiliza lo que se denomina “Entorno de desarrollo”, que es la aplicación (programa) que permite introducir las instrucciones para hacer programas. Los entornos de desarrollo de los lenguajes de programación orientada a objetos son parecidos a un editor de texto (como Word), pero incluyen otras muchas funciones. Existen varios lenguajes de programación como son: Lenguaje Fortran, lenguaje cobol, lenguaje Pascal, lenguaje C, Java, Delphi, Visual Basic. Uno de los lenguajes más sencillos de utilizar es el Visual Basic, que es el que estudiaremos nosotros. En este entorno, se distinguen claramente cinco zonas: - La barra de menú El cuadro de herramientas que se abre cuando pinchamos en que lo encontramos dentro de la barra de herramientas Estándar El explorador de soluciones La ventana de propiedades La zona de diseño 1 La barra de menú y barra de herramientas: Nos permite realizar la mayoría de las acciones que vamos a necesitar en nuestro proyecto, desde las habituales operaciones de Archivo nuevo, Guardar, Abrir, ... hasta funciones específicas de la programación como compilar, ejecutar paso a paso,... Todas estas funciones se describirán más adelante en el manual específico. El cuadro de herramientas. Permite agregar a nuestros formularios los componentes que deseemos. Un formulario básicamente una ventana de Windows. Lo diseñamos tal y como queremos que quede. Podemos añadir botones, cajas de texto, botones de opción, imágenes, paneles,.. El explorador de soluciones Permite organizar nuestros formularios, y cambiar entre las vistas de código y las de diseño. La vista de diseño muestra el aspecto del formulario, mientras que la vista de código nos muestra las instrucciones que nosotros escribimos para que el programa funcione. La ventana de propiedades. Nos permite cambiar las múltiples propiedades de un objeto (un formulario, un botón, una caja de texto) tales como el tamaño, el color, el texto que aparece, ect. La zona de diseño. Es la parte en la que realizamos tanto la labor de diseño como la de escribir las instrucciones para que el programa funcione. Como Visual Basic es un lenguaje “orientado a objetos” cada objeto de los que añadamos a nuestro formulario podrá tener una serie de instrucciones asociadas a él. De modo que el ordenador seguirá esas instrucciones cuando el usuario haga alguna cosa sobre ese objeto (por ejemplo clic en un botón). A los objetos que se añaden sobre los formularios se les llama comúnmente controles. COMO SE PROGRAMA EN VISUAL BASIC Los apuntes que se van a dar a continuación están basados en VISUAL BASIC 2008 EXPRESS, a continuación os indico una página web donde podéis encontrar un manual de visual basic 2008 express muy completo: Programar en Visual Basic, como en cualquier otro lenguaje de programación orientado a objetos se puede resumir en los siguientes puntos: Añadir y preparar los formularios (ventanas) que vaya a necesitar la aplicación Agregar los objetos( controles) necesarios a los formularios Modificar las propiedades de los objetos agregados, incluso las de los formularios 2 Crear los procedimientos asociados a los eventos de los objetos , de modo que se realicen las acciones necesarias en cada caso. CREAR EL PRIMER PROGRAMA. PROG 1: BIENVENIDA A VISUAL BASIC En este primer programa no vamos a agregar ningún objeto al formulario, sino a escribir una sentencia de visual Basic. Para ello seguiremos los siguientes pasos: 1. Creamos un nuevo proyecto. Archivo Nuevo Proyecto 2. Aplicación de Windows Forms 3. Hacer doble clic sobre un punto del formulario de partida. Aparecerá una nueva ventana, correspondiente al editor de código, en la que ya aparecen algunas sentencias escritas Private Sub Form_Load() End Sub Private Sub Especifica el tipo de subrutina o procedimiento. Form_Load () nos está indicando que en este caso la subrutina o procedimiento quedará asociado al evento ”al cargar el formulario” End Sub Indica el final de una subrutina 4. Situar el cursor en la línea vacía que hay entre las dos sentencias ya escritas 5. Escribir la siguiente sentencia : MsgBox “Bienvenido a Visual Basic” End MsgBox:es una función de Visual Basic que muestra un cuadro de dialogo con información para el usuario. 6. Hacer clic sobre el botón para ejecutar el programa o iniciar depuración (que se encuentra dentro de la barra de herramientas Estandar ) Aparecerá un cuadro de texto que es el que habíamos especificado en la sentencia MsgBox. 7. Hacer clic en el botón Aceptar del cuadro del mensaje, para cerrarlo, puesto que el programa creado no tiene más sentencias que la de fin del programa, este habrá finalizado y volverá a estar activa la ventana de Visual Basic. GUARDAR PROYECTOS Y FORMULARIOS Un proyecto es el conjunto de todos los archivos (formularios, procedimientos, módulos…) que forman una aplicación. Por lo tanto al guardar el proyecto se guardarán todos los archivos que contenga, incluidos los formularios, aunque estos mismos también se grabarán de forma independiente. Esto último resulta muy interesante, ya que permite utilizar los formularios diseñados en algún otro proyecto. Para guardar el proyecto y el formulario hay que: 3 1. 2. 3. 4. 5. Seleccionar la opción Guardar Todo del menú Archivo Especificar la carpeta Escribir el nombre para el formulario y para el proyecto Hacer clic sobre el botón Guardar Dejar seleccionado el indicativo de Crear directorio para solución. El resultado final ha sido la creación de una carpeta y un solucionario, nuestra carpeta a su vez está compuesta de tres carpetas Bin, My Proyect y Obj CERRAR PROYECTOS Una vez que se ha guardado un proyecto, este puede eliminarse de la ventana Visual Basic para dejar el área de trabajo libre y poder así abrir otro que estuviera guardado, o comenzar a trabajar en otro proyecto nuevo. Cuando se quiera cerrar un proyecto, bastará con seleccionar la opción cerrar proyecto del menú Archivo. CREAR EL SEGUNDO PROGRAMA. PROG 2 : COPIAR UN TEXTO 1. Creamos un nuevo proyecto. Archivo 2. Aplicación de Windows Forms Nuevo Proyecto 3. Del cuadro de herramienta elegimos un botón formulario 4. Del cuadro de herramientas elegimos una etiqueta e igualmente lo arrastramos hasta nuestro formulario 5. Y finalmente cogemos un y lo colocamos en nuestro Texto 6. A continuación cambiaremos el nombre de nuestro botón, le pondremos COPIAR para que nos aparezca como el siguiente diseño, para ello una vez que tenemos seleccionado nuestro botón nos vamos a las propiedades y en Text cambiamos button1 por COPIAR, clic y ya nos aparece el texto en nuestro botón 4 7. A continuación lo que vamos a hacer es decirle que desaparezca el texto Label para que no aparezca nada. Con lo cual hacemos clic en label y nos vamos al cuadro de propiedades, donde pone Text:label, lo eliminamos y no ponemos nada 8. Acabamos de dar forma a nuestro formulario, aunque lo hemos dejado muy sencillito, podríamos cambiar el tipo de letra, el diseño, insertar un icono dentro de nuestro botón etc… 8. Ahora vamos a indicarle al programa que lo que quiero es que mi botón COPIAR me copie el texto que yo escriba para ello hacemos doble clic dentro del botón COPIAR y me aparece una nueva ventana, correspondiente al editor de código, como en el proyecto 1,con la diferencia que ahora estoy dentro del código de mi botón 9. A continuación le indicaré que al hacer clic en mi botón (esto ya te lo hace el programa por defecto) en Label 1 me copie el texto, para ello le pongo el siguiente código, que quedaría así: Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = TextBox1.Text End Sub End Class 10. A continuación le doy a ejecutar el programa 11. Ahora me aparece mi formulario y si escribes un texto y le das al botón copiar te copiará el texto debajo. 12. Guarda el proyecto, dando a guardar todo y llámalo programa 2.copia de texto ABRIR PROYECTOS El proceso de abrir un proyecto guardado es totalmente paralelo al de cualquier documento de otra aplicación: 1. Seleccionar la opción Abrir proyecto o Abrir archivo del Menú Archivo 2. A continuación te aparecerán las tres carpetas (bin, My Proyect y obj) y el solucionario, abre el solucionario directamente 3. En ocasiones te abre directamente tanto el formulario como el editor de códigos donde has realizado tu proyecto 4. Si no te ha abierto el editor de códigos solo tienes que, desde el formulario, pinchar en uno de los botones como hacías para comenzar a crear tu proyecto y te aparecerá tu código de proyecto. 5. Si solo te abre el código del proyecto, ejecuta el programa y te aparecerá el diseño del formulario 5 CREAR UN NUEVO PROGRAMA. PROG 3: CUADRADO DE UN NÚMERO Para Diseñar el formulario realizaremos los siguientes pasos: 1. Hacer doble clic sobre la herramienta para agregar una etiqueta al formulario, Label 1. 2. Con la etiqueta seleccionada, introducir el Texto: Número en la propiedad Text. 3. Desplazar la etiqueta a la posición deseada 4. Realizar los pasos necesarios para obtener una nueva etiqueta Label 2con el Texto: Cuadrado 5. Hacer clic sobre la herramienta para agregar un botón de acción.(Button) 6. Escribir Calcular como valor del botón de acción 7. Agregar un cuadro de texto (Text Box) mediante la herramienta y situarlo en la posición deseada del formulario 8. Agregamos otra etiqueta nueva Label 3 El diseño de nuestro formulario será el siguiente: 9. A continuación quita el texto de la etiqueta 3 para que quede mejor. Una vez diseñado el formulario, hay que introducir el código para los eventos del programa, que, en este caso, solo será uno: haz clic sobre el botón de acción e indicar que en la última etiqueta creada Label 3 aparezca el cuadrado del número indicado en el cuadro de texto. Para ello hay que: 1. Hacer doble clic sobre el Botón Calcular, para acceder al editor de código. 2. Escribir la sentencia que muestra la figura, que permite asignar a la tercera etiqueta (Label 3) el valor resultante de multiplicar el número escrito en el cuadro de texto por sí mismo 6 3. A continuación hacer clic sobre el botón de Ejecutar y aparecerá el formulario donde al introducir el número y dar a Calcular nos calculará el cuadrado del número deseado. Modificar el diseño del programa A Continuación se proponen una serie de modificaciones, la mayoría en tiempo de diseño, en las propiedades del formulario y de los controles del programa anterior, para mejorar su aspecto y funcionalidad. 1. Elegir, para la propiedad Font de las tres etiquetas (Label1, label2, y Label3) y del cuadro de texto(Text 1), la fuente MS Sans Serif con tamaño 14 2. Cambiar la fuente del botón de acción (Command1)a MS Sans Serif con tamaño 12 3. Cambiar el valor de la propiedad Forecolor del control Label 3 a color rojo, para que su contenido aparezca con este color 4. Borrar el valor por defecto de la propiedad Text del control Text1; de este modo, aparecerá vacío al ejecutar el programa y podrá escribirse directamente el texto sin tener que borrar el otro. 5. Borrar el valor por defecto de la propiedad Text del control Label 3 para que este control también aparezca vacío en el formulario Modificar y mejorar el programa 2 1. Podemos mejorar el programa, introduciendo un botón (Button 2) que sea capaz de borrar los datos anteriores, limpiándonos la pantalla para poder introducir un número nuevo 2. Podemos también introducir un botón (Button3)para salir del programa 7 CREAR PROGRAMA 4: ATRIBUTOS DE UN TEXTO A continuación se creará un programa que permitirá copiar, en una etiqueta, el texto que el usuario escriba en un cuadro de texto, aplicando un atributo (negrita, cursiva o subrayado) en función de sobre qué botón de acción se haga clic. Por otra parte, al hacer clic sobre el cuadro de texto, se borrará su contenido, y al hacer doble clic sobre él, se borrará tanto el contenido del cuadro de texto como el de la etiqueta. El formulario también dispondrá de un botón Salir para finalizar el programa. En la figura que se ve a continuación se muestra el formulario como quedaría después de diseñarlo, para ello hemos modificado los Textos, tipos de letras, tamaño… 8 Una vez diseñado nuestro formulario ahora debemos crear nuestro programa y darle a cada botón su funcionalidad, para ello pincha dos veces dentro del botón negrita y directamente aparecerá donde deberá incluir las propiedades del botón que introducirá tu texto en negrita , para ello debes indicar que el texto incluido se modificará de la siguiente manera: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim TipoLetra As Font = New Font("arial", 24, FontStyle.Bold) Label1.Text = TextBox1.Text Label1.Font = TipoLetra End Sub Lo mismo haremos con el Botón para obtener el texto en cursiva para ello podemos copiar el código anterior y cambiaremos en lugar de Bold (Negrita) por Underline (cursiva); de forma que el botón cursiva quedará de la siguiente manera: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim TipoLetra As Font = New Font("arial", 24,FontStyle.Underline) Label1.Text = TextBox1.Text Label1.Font = TipoLetra Lo mismo haremos con el Botón para obtener el texto en cursiva para ello podemos copiar el código anterior y cambiaremos en lugar de Bold (Negrita) por Italic (cursiva); de forma que el botón cursiva quedará de la siguiente manera Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim TipoLetra As Font = New Font("arial", 24, FontStyle.Italic) Label1.Text = TextBox1.Text Label1.Font = TipoLetra También se han inclluido dos botones más: Uno que me borrará la función anterior y dejará el texto como al inicio para ello utilizaremos el siguiente código en el que le indicamos que quiero el texto solamente con tipo de letra arial 24, quedando de la siguiente forma: Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim TipoLetra As Font = New Font("arial", 24) Label1.Text = TextBox1.Text Label1.Font = TipoLetra El último botón que introduciremos será el que nos sacará del progrma, por lo tanto lo que debe indicar es que finalice el programa, lo haremos de la siguiente manera: Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click End End Sub 9 RECOMENDACIÓN: INTRODUCIR LOS CÓDIGOS DE CADA BOTÓN Y EJECUTAR EL PROGRAMA PASO A PASO POR SI EXISTE ALGÚN FALLO IDENTIFICARLO RAPIDAMENTE. PROGRAMACIÓN ESTRUCTURADA: La declaración de variables se realiza mediante la sentencia Dim, en la que se deben especificar el nombre de la variable y el tipo de dato que va a almacenar. De los distintos tipos de datos con los que se puede trabajar, los más importantes con los que se pueden trabajar son los de la siguiente tabla: Tipo de dato Declaración en Basic Texto String Número entero Integer Número entero largo Long Número decimal Single N. decimal con 2 decimales Double Fecha y Hora Date En caso de que se declare una variable sin definir el tipo, el programa le asignará automáticamente el tipo Variant, con lo que podrá contener datos de cualquier tipo. PROGRAMA 5: MOLÉCULA DE CLORO A continuación vamos a crear un programa muy sencillo en el que se han definido algunas variables, se les ha asignado un valor a cada una de ellas y, posteriormente, se han ejecutado el formulario para obtener la impresión de los datos de cada variable. Lo primero que tenemos que hacer es definir las variables a utilizar: Dim Dim Dim Dim átomos As Integer masa1 As Single masa2 As Single molécula As String A continuación indicamos los valores de cada variable y posteriormente le indicamos cual es el mensaje que queremos que nos aparezca mediante la instrucción Msgbox. 10 Nuestro código final debe quedar así: Public Class Form1 Dim átomos As Integer Dim masa1 As Single Dim masa2 As Single Dim molécula As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load molécula = "cloro" átomos = 2 masa1 = 35 masa2 = masa1 + átomos MsgBox("La masa molecular del " & molécula & " es " & masa2 & " uma") End Sub End Clas Cuando queremos introducir el valor de una variable en un texto debemos ponerlo entre comillas y entre & (símbolo que se pone pulsando el número 6 en mayúsculas). Ejemplos de este programa: “&molécula&”; “&masa2&” Si ejecutamos el programa nos indicará mediante un mensaje que la masa molecular del cloro es 37 ( masa 1 + átomos) DECLARACIÓN DE CONSTANTES: Existen valores que permanecen inalterables en un programa, si estos se utilizan con frecuencia en el programa, y además su valor es dificil de recordar o escribir, sería muy interesante poderlos definir de algun modo para que resultara más sencillo incluirlos en las expresiones. Con esta intención se pueden definir, en visual basic, constantes con las mismas características que las variables, salvo una importante diferencia: el valor de una constante no puede ser modificado durante la ejecución del programa. Las sentencias para definir constantes son similares a las utilizadas con las variables, aunque ahora hay que utilizar la instrucción Const nombre = valor PROGRAMA 6: ÁREA DE UN CIRCULO A continuación realizaremos el siguiente programa en el cual a través del radio nuestro programa nos calculará la longitud de la circunferencia y el área del círculo. Para ello introducimos: Una etiqueta (Label1)donde indicaremos : Valor del radio Una segunda etiqueta (Label2) donde indicaremos: Longitud de la circunferencia Una tercera etiqueta (Label3) donde indicaremos: Área del circulo Una cuarta etiqueta (Label4) a la que dejaremos en blanco, sin texto,esta será donde aparecerá el valor del área del círculo 11 Una quinta etiqueta (Label5) a la que dejaremos en blanco, sin texto, donde aparecerá el valor de la longitud de la circunferencia. Un cuadro de texto (Text.Box1) Un primer botón (Button1) donde indicaremos:Calcular Un segundo botón (Button2) donde indicaremos :Salir Una vez diseñado el formulario pasaremos a crear nuestro programa, para ello lo primero que debemos hacer es declarar las constantes y las variables que se van a utilizar en el programa, y en el caso de la constante, se le asigna su valor. Single: cualquier número decimal Public Class Form1 Const Pi = 3.141592684 Dim Radio, Circunferencia, Círculo As Single A continuación indicaremos al programa qu ecuando hagamos click en el botón calcular (Button2) nos asigne el valor de la circunferencia en la etiqueta 4 + el texto unidades (este texto lo debemos poner entre comillas para que aparezca ) y el del circulo en la etiqueta 5 . Observa como debe quedar finalmente: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Radio = TextBox1.Text Circunferencia = 2 * Pi * Radio Círculo = Pi * Radio ^ 2 Label5.Text = CStr(Circunferencia) + " unidades" Label4.Text = CStr(Círculo) + " unidades cuadradas" End Sub Cstr nos convierte una variable en texto; si no lo indicamos el programa no entiende que significa circunferencia ya que es una variable,debemos traducirla en texto A continuación indicaremos en el botón Salir (Button1) que cuando hagamos click en este botón queremos que salga del programa (End). 12 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End End Sub Mejorar programa 6 A continuación introduciremos un nuevo botón (button3) que será el encargado de borrar el contenido tanto del texto como de la etiquetas para poder realizar un nuevo calculo: Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox1.Text = "" Label5.Text = "" Label4.Text = "" End Sub OPERACIONES ARITMÉTICAS: La función de los operadores aritméticos es la de permitir realizar, con los datos de las distintas variables, las clásicas operaciones de sumar, restar, multiplicar, dividr… así como otras no tan elementales. PROGRAMA 7: OPERACIONES ARITMÉTICAS DE UN NÚMERO A continuación realizaremos el siguiente formulario, diseñado para efectuar los principales cáculos aritméticos con los números que se introduzcan en los cuadros de texto. El formulario consta de dieciséis etiquetas, dos cuadros de texto y dos botones. Quedando de la siguiente manera: 13 Una vez diseñado el formulario pasaremos a crear nuestro programa, para ello lo primero que debemos hacer es declarar las variables que se van a utilizar en el programa. Para ello formularemos el número 1 y número 2 como Double indicando así que dichos números son números decimales de doble precisión . Public Class Form1 Dim num1, num2 As Double A continuación indicaremos que cuando hagamos click sobre el botón calcular nos calcule en cada etiqueta lo que nos indica, de la siguiente forma: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click num1 = TextBox1.Text num2 = TextBox2.Text TextBox3.Text = num1 + num2 TextBox4.Text = num1 - num2 TextBox5.Text = num1 * num2 TextBox6.Text = num1 / num2 TextBox7.Text = num1 ^ num2 TextBox8.Text = num1 \ num2 TextBox9.Text = num1 Mod num2 End Sub A continaución, al igual que hemos hecho en los programas anteriores haremos que el botón cerrar cierre el programa y que el botón borrar nos borre los datos anteriores. Curiosidad acerca del operador suma Hemos debido declarar variables numéricas (Double) para que cuando realicemos el código suma nos sume los valores numéricos mostrandonos el resultado oportuno. Sin embargo si no hubieramos indicado que las variables son numéricas lo que hubiera ocurrido en la función suma seria que nos hubiera puesto un número a continuación del siguiente COMPLETAMOS PROGRAMA 7 A continuación incluiremos dos cuadros de texto más junto a dos etiquetas en las que pondremos: Raiz cuadrada del 1er número y raiz cuadrada del segúndo número Para encontrar las raices cuadradas se incluirán los siguientes códigos indicados a continuación: TextBox10.Text = Math.Sqrt(num1) TextBox11.Text = Math.Sqrt(num2) 14 FUNCIÓN INPUTBOX Existe otro modo de introducir un dato, distinto del de escribirlo en un cuadro de texto, que consiste en utilizar la función InputBox. Esta función mostrará una caja de diálogo con el mensaje que se especifique, en la que se podrá escribir el dato que se quiera porporcionar al programa. La sintaxis completa de esta función es la siguiente. InputBox (mensaje, [titulo],[texto por omisión], [posición X],[posición Y]) Los argumentos que se muestran entre corchetes son optativos, por lo que no hay obligación de utilizarlos. El significado de cada argumento es: Mensaje:Este texto aparecerá en el cuadro de diálogo para informar al susuario de qué debe introducir. Título: este texto aparecerá en la barra de título del cuadro. Texto por omisión: si se especifica, aparecerá como texto por defecto en el cuadro de datos. Posición X y Posición Y: estos dos valores permiten especificar el lugar exacto de la pantalla en el que debe aparecer el cuadro de diálogo. PROGRAMA 8: INCREMENTAR UNA VARIABLE En este programa lo que vamos a hacer es crear un programa en el que me permita sumar dos núemros, pero en esta ocasión lo haremos con cuadros de dialogos usando así la función InputBox explicada anteriormente. Para ello cuando iniciemos el progama haremos que nos aparezca una caja de dialogo con el siguiente mensaje: introduce un valor de referencia (al igual que aparece en la siguiente imagen)a A continaución al introducr el valor de referencia y darle en el botón de aceptar nos aparecerá otro mensaje que nos indicará: introduce el valor del incremento. 15 De forma que al introducir el valor incrementado y darle a Aceptar nuestro programa hará que nos aparezca un tercer cuadro de dialogo donde aparecerá el valor de la suma de ambos números. Para realizar este programa haremos lo siguiente: Haciendo doble click en nuestro formulario, ya que no vamos a tener ningún botón ni etiquetas… Primeramente debemos, como venimos haciendo en todos los ejercicios anteriores, asignar nuestras variables; en este caso diremos que a, b, c son números enteros. Public Class Form1 Dim a, b, c As Integer A continuación indicaremos mediante la función InptuBox que nos aparezca nuestro primer cuadro de dialogo, con el título que se haya especificado como segundo argumento (incrementar) y con el mensaje indicado como primer argumento; el valor que se introduce en cada cuadro de diálogo quedará almacenado en la variable a la que se haya asignado la función. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("introducde un número", "Incrementar") b = InputBox("introduce el valor incrementado", "Incrementar") c = a + b MsgBox("el valor del número final es" & c & "") End Sub End Class Cambiar ligeramente el programa 8 A continuación lo que haremos será cambiar la función MsgBox por MessageBox. Con ello lo que hacemos es cambiar el final de nuestro programa, con la función MessageBox crearemos un mensaje de texto ( al igual que haciamos con MsgBox) pero que puede contener texto, botones y simbolos que informan al usuario (en este caso le indicaremos que nos ponga Incementar) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("introducde un número", "Incrementar") b = InputBox("introduce el valor incrementado", "Incrementar") c = a + b MessageBox.Show("el valor del número final es" & c & "", "Incrementar") End Sub End Class 16 ESTRUCTURAS SELECTIVAS Las estructuras selectivas se utilizan para tomar decisiones lógicas. En ellas se evalúa una condición y en función de su resultado, se realiza unas u otras acciones. La sentencia If evalúa una condición y, en caso de cumplirse, ejecuta una serie de instrucciones determinadas; en caso contrario, seguirá ejcutándose el programa o se realizarán otras instrucciones alternativas. El formato general de esta sentencia es: If condición then sentencia1 [else sentencia2][End If] Si la condición es cierta, se ejecutará la sentencia1 y no se ejecutará la sentencia2, aunque se hubiera escrito. En caso de que la condición sea falsa, no se ejecutará la sentencia1 y sí lo hará, si se hubiera escrito, la sentencia2. PROGRAMA 9: COMPARACIÓN DE DOS NÚMEROS En el siguiente programa usaremos la función If para crear un formulario que nos informe de cuál de los dos números introducidos en dos cuadros de texto es mayor. Para ello crearemos el siguiente formulario usando 3 etiquetas (de las cuatro etiquetas, una es la que dice: primer número, otra la que dice segundo número y las tercera será en la que aparecerá el valor comparado), dos cuadros de texto y dos botones. Lo primero que tenemos que hacer es, como venimos haciendo hasta ahora, definir las variables que vamos a usar, en este caso indicaremos que las variables a y b son números enteros (Integer) 17 Public Class Form1 Dim a, b As Integer A continuación indicaremos que al hacer click en el botón 1 (el de comparar) ocurrirá que si el texto excrito en el primer cuadro de texto (al que hemos llamado a) es mayor que el texto escrito en el segundo cuadro de texto (llamado b) en la etiquta 3 (Label 3) me indique que el primer número es mayor que el segundo. Y si ocurre que que si el texto excrito en el primer cuadro de texto (al que hemos llamado a) es menor que el texto escrito en el segundo cuadro de texto (llamado b) en la etiquta 3 (Label 3) me indique que el primer número es menor que el segundo y sino ocurre nada de esto (Else) será porque los dos números son iguales. Para ello hemos utilizado distintos operadores relacionales habituales. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click a = TextBox1.Text b = TextBox2.Text If a > b Then Label3.Text = "El primer número es mayor que el segundo" Else If a < b Then Label3.Text = "El segundo número es mayor que el primero " Else Label3.Text = "Los dos números son iguales." End If End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub End Class A parte de estos operadores relacionales podemos usar también otros, los cuales se presentan en la siguiente tabla: Operador Igual que Mayor que Menor que Mayor o igual que Menor o igual que Distinto de Escritura = > < >= <= <> 18 Mejoramos el programa 9 A continuación vamos a mejorar nuestro programa y lo que haremos es que cuando al hacer click en nuestro botón de comparar, el texto que nos aparezca ahora sea el siguiente: El segundo número, valor del número, es mayor o menor o igual, según proceda al segundo número, valor del número. De forma que debemos incluir las variables a y b en nuestros textos. Para ello nuestro código quedará de la siguiente manera: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click a = TextBox1.Text b = TextBox2.Text If a > b Then Label3.Text = "El primer número (" & a & ") es mayor que el segundo (" & b & ")" Else If a < b Then Label3.Text = "El segundo número (" & b & ") es mayor que el primero (" & a & ")" Else Label3.Text = "Los dos números (" & a & " y " & b & ") son iguales." End If End If End Sub OPERADORES LÓGICOS A la hora de expresar algunas condiciones, ademas de los operadores relacionales, es necesario utilizar alguno de los denominados operadores lógicos. En la siguiente tala se muestran los principales operadores lógicos, junto a la forma de escribirse en Visual Basic y una breve descripción. Operador Escritura Descripción Y And O Or Negación Not El operdor Y obliga a que se cumplan todas las condiciones incluidas en la expresión, para que esta tome valor verdadero; en cuanto haya una que no se cumpla, la expresión tomará valor falso. El operador O hace que la expresión tome valor verdadero en cuanto se cumpla una, o varias, de las condiciones incluidas en la expresión; solo en el caso de que no se cumpla ninguna de las condiciones, la expresión tomará valor falso Este operador hace que la expresión tome valor verdadero cuando no se cumpla la condición, y lo tome falso cuando sí lo haga. 19 PROGRAMA 10: COMPARAR TRES NÚMEROS En el siguiente programa se comparan tres números introducidos en otros tantos cuadros de texto para obtener algunos posibles resultados de esta comparación. Para ello utilizaremos varias estructuras If. En principio, como siempre, definiremos las tres variables a,b, c como núemros enteros (Integer) Public Class Form1 Dim a, b, c As Integer A Continuación indicaremos que cuando hacemos click en el botón calcular debemos indicar que Si la varialeb a =b Y b=c nos aparecerá en el cuadro de texto 5 un texto que diga que los tres números son iguales ,Incluso (Else) Si a=b o b=c 0 b=c que nos diga en el cuadro de texto 5 quede los tres números hay dos que son iguales. Para ello primeramente y una vez definidas arriba la variables las identificaremos indicando que cada una de ellas son las que aparecen en sus respectivos cuadros de texto. El programa quedará de la siguiente manera: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click a = TextBox1.Text b = TextBox2.Text c = TextBox3.Text If (a = b) And (b = c) Then TextBox5.Text = "LOS TRES NÚMEROS SON IGUALES." Else If (a = b) Or (a = c) Or (b = c) Then TextBox5.Text = "DE LOS TRES NÚMEROS, HAY DOS QUE SON IGUALES." End If A continuación escribiremos todas las posibilidades que se nos presentanen el caso de que dos variables sean iguales entre si; mediante la función Si de nuevo: If a = b Then If a > c Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL TERCERO ," & c & "") End If End If If a = c Then If a > b Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL SEGUNDO ," & b & "") End If End If If b = c Then 20 If a > c Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL TERCERO ," & c & "") Y por último todas la posibilidades cuando no hay ningún número igual, por supuesto, continuando con la función Si. If a > b And b > c Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL TERCERO ," & c & "") End If If a > b And b < c Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL SEGUNDO ," & b & "") End If If b > a And b > c Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL PRIMERO ," & a & "") End If If b > a And b < c Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL PRIMERO ," & a & "") End If If c > a And a > b Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL SEGUNDO ," & b & "") End If If c > a And a < b Then TextBox5.Text = ("EL NÚMERO MÁS PEQUEÑO ES EL PRIMERO," & a & "") End Sub Mejoramos el programa 10 A continuación incluiremos que en las etiquetas 7, 8 y 9 nos aparexcan los números dependiendo de si son mayores, menores o intermedios, para que tenga la siguiente apariencia: 21 If a = b Then If a > c Then Label7.Text = a Label8.Text = b Label9.Text = c End If End If If a = c Then If a > b Then Label7.Text = a Label8.Text = c Label9.Text = b End If End If If b = c Then If a > c Then Label7.Text = a Label8.Text = b Label9.Text = c End If End If If a > b And b > c Then Label7.Text = a Label8.Text = b Label9.Text = c End If If a > b And b < c Then Label7.Text = a Label8.Text = c Label9.Text = b End If If b > a And b > c Then Label7.Text = b Label8.Text = a 22 Label9.Text = c End If If b > a And b < c Then Label7.Text = b Label8.Text = c Label9.Text = a End If If c > a And a > b Then Label7.Text = c Label8.Text = a Label9.Text = b End If If c > a And a < b Then Label7.Text = c Label8.Text = b Label9.Text = a End If End If End Sub ESTRUCTURAS REPETITIVAS Las instrucciones repetitivas o bucles permiten ejecutar un conjunto de instrucciones mientras se cumpla una determinada condición: a estas instrucciones se las denomina cuerpo de bucle Son varias las sentencias de Visual Basic que permiten crear bucles: For …Next, While…Wend, Do …Loop, Goto, For Each…Next. Aunque todas ellas tienen una función similar, sus particularidades hacen que cada una de ellas sea la más adecuada para situaciones determinadas. A continuación, presentamos programas para poder entender dichas sentencias. Sentencias FOR …NEXT Permite crear bucles con un número de repeticiones definidas previamente; por tanto, se utiliza en aquellos casos en los que se sabe el número exacto de veces que deben repetirse las instrucciones que constituyen el cuerpo del bucle. El modo de controlar el número de veces que ha de repetirse el bucle se consigue utilizando una variable contador; esta comienza con un valor determinado, que va aumentando a medida que se completan los bucles y que,al alcanzar un valor final, paraliza la repetición del bucle. El formato general de esta sentencia es: For variable = valor inicial To valor final [Step incremento] Sentencia-1 Sentencia-2; … Next [variable] 23 PROGRAMA 11: CONTADOR A continaución se muestra un ejemplo de utilización de la sentencia For … Next, para obtener la suma de los número enteros comprendidos entre los dos que se especifiquen en sendos cuadros de texto. Según se observa en el formulario, este devolverá el valor de la suma de todos los números enteros comprendidos entre los dos escritos. Además, no se ha incluido ningún botón de acción, ya que el procedimiento se realiza automáticamente al introducir el número del segundo cuadro de texto. Lo primero que hacemos, como siempre, es definir todas las variables que se van a utilizar en el procedimiento: dos para almacenar los valores introducidos en los cuadros de texto y una que almacenarálas sumas de los números. Public Class Form1 Dim a, b, suma As Integer El procedimiento está asignado al evento modificar del segundo cuadro de texto (TextBox2_TextChanged). A la variable que va a acumular la suma se la inicializa con valor 0, para evitar que pueda comenzar con algún valor existente en memoria. La variable suma, que empieza con valor 0, irá acumulando (sumando) los valores que vaya teniendo la variable contador en cada ejecución del bucle. Cuando finalece el bucle, se ejecutará la siguiente sentencia, asignandose el valor que tenga en ese momento la variale suma a la etiqueta preparada para el efecto. En la etiqueta 3 haremos que aparezcan los valores de la suma y finalizará cuando cuando a y b sean iguales, ya que le estoy indicando que el contador es desde a hasta b. Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged a = TextBox1.Text b = TextBox2.Text 24 suma = 0 For contador = a To b suma = suma + contador Next Label3.Text = suma End Sub End Class Programa 12 : Factorial Hacemos que nos aparezca el siguiente cartel que nos pide un número para realizar su factorial Public Class Form1 Dim a, contador, producto As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("introduce un número para averiguar su factorial") producto = 1 For contador = 1 To a producto = producto * contador Next MsgBox("indicame el " & producto & "") End Sub End Class Tambien podríamos hacerlo de la siguiente manera, obteniendo el mismo resultado: Public Class Form1 Dim a, contador, producto As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("introduce un número para averiguar su factorial") producto = a For contador = 1 to a-1 producto = producto * contador Next 25 MsgBox("indicame el " & producto & "") End Sub End Class Sentencias DO …LOOP Programa 12 : Factorial pero ahora con la estructura DO…..LOOP Aquí utilizaremos la estructura Do until ….Loop Mediante una condición que se evalua al principio, del siguiente modo: se repite el bucle hasta que la condición secumpla Public Class Form1 Dim contador, a As Integer Dim producto As Double Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("¿De qué número quieres calcular el factorial?", "Factorial") contador = 1 producto = 1 Do Until (contador > a) producto = producto * contador Loop MessageBox.Show("El factorial de " & a & " es: " & producto, "Cálculo de falctorial") End Sub End Class PROGRAMA 13: SEGUNDO CONTADOR En este programa usaremos la estructura Do While ….Loop En la sentencia Do While…Loop, el control del bucle se hace mediante una condición que se evalúa al iniciarse este. Mientras la condición se cumpla, el bucle se realizará; en el momento, en que la condición resulte falsa, el bucle dejará de ejecutarse y proseguirá el programa con las instrucciones siguientes al bucle. Ahora realizaremos otro contador similar al anterior, con la diferencia que ahora los haremos mediante cuadros de texto. Lo único que vamos a tener que introducir en nuestro formulario es un list.box ( herramienta nueva que nos permitirá obtener una lista de números) La secuencia de la ejecución del programa sería la siguiente: 26 Al introducir el número mayor y dar a aceptar nos aparecerá el siguiente cuadro de texto: Y a continuación cuando hacemos click en el botón Aceptar nos dará la lista de números eneros comprendidos entre los dos indicados anteriormente. Para ello y como siempre, se declaran la variables necesarias del tipo número entero Public Class Form1 Dim a, b, cambio As Integer Se asigna el valor introducido en el primer cuadro de entrada a la variable a; tal como indica el texto este debe ser el mayor. A continuación se asigna el valor introducido en el segundo cuadro de entrada a la variable b. Se le asigna a la variable cambio el valor de la variable a, que era en número mayor Indicaremos que la sentencia del bucle se realizará mientras el valor de la variable cambio sea mayor o igual que el de la variable b ( el más pequeño de los introducidos) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("Introduce el número mayor", "Listado de números") b = InputBox("Introduce el número menor", "Listado de números") cambio = a Debemos indicar que la variable cambio debe ir Do While (cambio >= b) ListBox1.Items.Add(cambio) disminuyendo en una unidad hasta que llegue a cambio = cambio - 1 ser igual al valor b (número más pequeño de los Loop dos introducidos) End Sub End Class Indicamos que se añada un nuevo elemento (Items. Add), a la lista Box 1, con el valor que tenga en ese momento la variable cambio. 27 Programa 14: suma de n números Ahora seguieremos la estructura DO…Loop While, el control del bucle se realizará mediante una condición que se evalúa al finalizarse cada iteración del vucle. Mientras la condición se cumpla, el bucle seguirá repitiendose ; en el momento sen que la condición resulte falsa, el bucle se detendrña y el programa proseguirá con las siguientes instrucciones. Puesto que la condición se evalúa al final del bucle, este siempre se ejecuta, como mínimo, una vez. En el siguiente programa se utiliza esta sentenca para calcular la suma de los números que se intrduzcan mediante distintos cuadros de entrada: además, el programa pregunta previamente cuántos números quieres sumar. Public Class Form1 Dim Contador, Numero As Integer Dim Dato, Suma As Single Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Numero = InputBox("¿Cuántos números vas a sumar?", "Sumar números") Contador = 1 28 Suma = 0 Do Dato = InputBox("Introduce un número", "Sumar números") Suma = Suma + Dato Contador = Contador + 1 Loop While Contador <= Numero Label1.Text = "La suma de los números es: " & Suma End Sub End Class PROGRAMA 15: RAIZ CUADRADA DE UN NÚMERO Aquí usaremos la estructura DO ……………Loop until . Una de las aplicaciones más frecuentes de las sentencias DO…….LOOP WHILE y DO ….LOOP UNTIL es el control de los datos que se introducen durante la ejecución del programa; la única diferencia entre ellas es la condición ( son contrarias), ya que una sentencia repetrirá el bule mientras se cumpla la condición, y la otra sentencia repetirá el bucle hasta que se cumpla la condición. En el siguiente programa, que permite calcular la raíz cuadrada de un número, se utiliza la sentencia DO…LOOP UNTIL para evitar que el usuario pueda introducir valores negativos ,que producirán un error en el calculo de su raiz cuadrada. Para realizar este programa introduciremos un label y dos botones, Pero lo que haremos es introducir los datos mediante un inputbox. 29 Public Class Form1 Dim a, b As Double Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Do a = InputBox("Introduce un número mayor que cero", "Raíz cuadrada") Loop Until a >= 0 b = Math.Sqrt(a) Label1.Text = "La raíz cuadrada de " & a & " es " & b End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Do a = InputBox("Introduce un número mayor que cero", "Raíz cuadrada") Loop Until a >= 0 b = Math.Sqrt(a) Label1.Text = "La raíz cuadrada de " & a & " es " & b End Sub End Class 30 Calculadora Public Class Form1 Dim numero1 As String Dim operador As String Dim numero2 As String Dim resultado As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = TextBox1.Text + "1" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = TextBox1.Text + "2" End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox1.Text = TextBox1.Text + "3" End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click TextBox1.Text = TextBox1.Text + "4" End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click TextBox1.Text = TextBox1.Text + "5" End Sub 31 Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click TextBox1.Text = TextBox1.Text + "6" End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click TextBox1.Text = TextBox1.Text + "7" End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click TextBox1.Text = TextBox1.Text + "8" End Sub Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click TextBox1.Text = TextBox1.Text + "9" End Sub Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click TextBox1.Text = TextBox1.Text + "0" End Sub Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click TextBox1.Text = TextBox1.Text + "," End Sub Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click TextBox1.Text = "" End Sub Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click numero1 = TextBox1.Text TextBox1.Clear() operador = "suma" End Sub Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click numero2 = TextBox1.Text TextBox1.Clear() If operador = "suma" Then resultado = Val(numero1) + Val(numero2) TextBox1.Text = resultado End If If operador = "resta" Then resultado = Val(numero1) - Val(numero2) TextBox1.Text = resultado End If If operador = "multiplicacion" Then resultado = Val(numero1) * Val(numero2) 32 TextBox1.Text = resultado End If If operador = "división" Then resultado = Val(numero1) / Val(numero2) TextBox1.Text = resultado End If End Sub Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click numero1 = TextBox1.Text TextBox1.Clear() operador = "resta" End Sub Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click numero1 = TextBox1.Text TextBox1.Clear() operador = "multiplicacion" End Sub Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click numero1 = TextBox1.Text TextBox1.Clear() operador = "división" End Sub End Class 33