Manual de Visual Basic - Net 2005
Manual de Visual Basic - Net 2005
Programacin Digital I
OBJETIVOS ESPECIFICOS Describir el lenguaje de programacin orientada a objetos. Construir expresiones para escribir instrucciones en un programa
CONTENIDO 1. Descripcin del entorno 2. Caja de herramientas. 3. Ventana de propiedades. 4. Ventana del Explorador de proyectos. 5. Terminologa. 6. Clase, objeto. 7. Propiedad, Evento, mtodo. 8. Formulario, control. 9. Algoritmos secuenciales. 10. Desarrollo de aplicaciones que implementen u algoritmo secuencial. 11. Etiquetas, cuadros de texto y botones de comando. 12. La funcin VAL. 13. Operadores aritmticos, concatenacin.
Programacin Digital I
SESIN I: EL IDE DEL VISUAL BASIC .NET
Conceptos Generales ......................................................................................... 6 MICROSOFT NET FRAMEWORK ........................................................................... 6 Entorno NET FRAMEWORK ................................................................................ 7 Visual Studio NET .............................................................................................. 9 Elementos del Entorno de VISUAL STUDIO 2005 .................................................. 12
ComboBox ........................................................................................................ 56 ListBox.............................................................................................................. 61 CheckBox .......................................................................................................... 64 Radio Button .................................................................................................... 67 Tab Page .......................................................................................................... 72 Laboratorios...74
For/Next ........................................................................................................... 70 For Each .......................................................................................................... 71 While/End While ............................................................................................... 71 Do/Loop ........................................................................................................... 72 Estructuras ....................................................................................................... 73 Laboratorio..74
ARREGLOS TIPO LISTA ......................................................................... 82 ARREGLOS TIPO TABLA ........................................................................ 86 ARREGLOS CON PARAMETROS............................................................... 87 ARREGLOS DE CONTROLES................................................................. .87
Laboratorios...88
Programacin Digital I
SESION VI : EXCEPCIONES Y MENUES
Control de Excepciones ................................................................................... 97 Mens en Visual Basic NET y 2005 ...................................................................... 101 Laboratorios...110
Base de Datos Relacional .................................................................................... 112 LENGUAJE SQL ................................................................................................. 116 Laboratorios...119
ADO NET ......................................................................................................... 135 Objeto de acceso a datos .................................................................................. 155 Acceso a Datos.................................................................................................. 160
Programacin Digital I
Introduccin
Visual Basic.net es la evolucin de Visual Basic, el popular lenguaje de programacin de Microsoft. A diferencia de sus antecesores, Visual Basic.net esta implementado sobre el FRAMEWORK .NET y las potencialidades que tiene el leguaje supera con creces las de versiones anteriores. Visual Basic .net esta basado en el paradigma de programacin orientado a objetos, por lo que es necesario tener algunas nociones de este tipo de programacin. La siguiente gua pretende ilustrar al estudiante sobre las caractersticas mas importantes del lenguaje, el
framework que lo soporta y los distintos tipos de aplicaciones que podemos lograr con l.
Programacin Digital I
Conceptos Generales MICROSOFT NET FRAMEWORK Entorno NET FRAMEWORK Visual Studio NET Elementos del Entorno de VISUAL STUDIO 2005
PRCTICA DE REFORZAMIENTO
Programacin Digital I
"El .NET Framework es una nueva plataforma diseada para simplificar el desarrollo de aplicaciones en el entorno distribuido de Internet."
"El .NET Framework consta de dos componentes principales: el Common Language Runtime y la librera de clases .NET Framework." El .NET Framework es el corazn de .NET, cualquier cosa que queramos hacer en cualquier lenguaje .NET debe pasar por el filtro cualquiera de las partes integrantes del .NET Framework. Basndose en la definicin de Microsoft sobre que es el .net framework podemos decir que .NET Framework es
un entorno para construir, instalar y ejecutar servicios Web y otras aplicaciones. Se compone de tres partes principales: El conjunto de lenguajes de programacin, La Biblioteca de Clases Base o BCL y El Entorno Comn de Ejecucin para Lenguajes o CLR por sus siglas en ingls.
Programacin Digital I
En la base del entorno de ejecucin, se encuentra el CLR, que constituye el ncleo de .NET Framework, encargndose de la gestin del cdigo en cuanto a su carga, ejecucin, manipulacin de memoria, seguridad, etc. En el nivel intermedio, se sita la jerarqua de clases bsicas del entorno de ejecucin, que constituyen un slido API de servicios a disposicin del programador, para multitud de tareas como, gestin del sistema de ficheros, manipulacin multihebra, acceso a datos, etc. Finalmente, en el nivel superior, encontramos las clases que permiten el diseo del interfaz de usuario de nuestras aplicaciones. Si necesitamos desarrollar aplicaciones para Internet, utilizaremos ASP.NET, que nos provee de todo lo necesario para crear aplicaciones para la Red: web forms, web services, etc. Adems la plataforma provee de un motor capaz de desarrollar aplicaciones para escritorio (similar a las que se puede obtener con Visual Basic). Estas aplicaciones de escritorio son los llamados Windows Forms, la nueva generacin de formularios, con caractersticas avanzadas y muy superiores a las del motor de generacin de formularios de obtenidos con versiones anteriores de Visual Basic.
Programacin Digital I
Windows Forms est constituido por multitud de clases especializadas que ofrecen aplicaciones de escritorio. Visual Studio ofrece todo lo necesario para crear visualmente este tipo de programas, de un modo similar aunque ms rico al que ofreca el entorno de desarrollo integrado de Visual Basic. Al contrario de Visual Basic 6, VB.NET ofrece control sobre cada control que se incorpore al Windows Form. Los formularios (ventanas) son clases que heredan de la clase base Form, cada control que se incorpore en la clase form ser miembro de esta. Otras consideraciones previas. Extensin de los ficheros de cdigo. En Visual Basic .NET a diferencia de lo que ocurra en las versiones anteriores de Visual Basic, slo existe un tipo de fichero de cdigo, el cual tiene la extensin .vb, en este tipo de fichero pueden coexistir distintos tipos de elementos, por ejemplo: un mdulo de clase, un formulario, un mdulo de cdigo, un control, etc.; mientras que en las versiones anteriores de Visual Basic, cada uno de estos elementos tenan su propio tipo de fichero con su respectiva extensin. Tipos de ejecutables. funcionalidades para el trabajo con ventanas, botones, rejillas, campos de texto y todo este tipo de controles habituales en las
Con Visual Basic .NET puedes crear bsicamente estos dos tipos de ejecutables: de consola, no grfico, al estilo del viejo MS-DOS, y grficos, como los que normalmente estamos acostumbrados a ver en Windows. Existen otros tipos de aplicaciones que se pueden crear con Visual Basic .NET: aplicaciones ASP.NET, las cuales sern tratadas en otra gua. Visual Basic .NET (VB.NET) es un lenguaje de programacin orientado a objetos que se puede considerar una evolucin de Visual Basic implementada sobre el framework .NET. Su introduccin result muy controvertida, ya que debido a cambios significativos en el lenguaje VB.NET no es compatible hacia atrs con Visual Basic, cosa que caus gran divisin en la comunidad de desarrolladores de Visual Basic. La gran mayora de programadores de VB.NET utilizan el entorno de programacin Microsoft Visual Studio .Net en alguna de sus versiones (Visual Studio .NET, Visual Studio .NET 2003 o Visual Studio .NET 2005), aunque existen otras alternativas, como SharpDevelop (que adems es libre). Como pasa con todos los lenguajes de programacin basados en .NET, los programas escritos en VB.NET requieren el Framework .NET para ejecutarse.
Programacin Digital I
VISUAL BASIC .NET 2008 Cuando se Iniciar el Visual Basic Net conocer el Entorno de Desarrollo Integrado (IDE) del Visual Basic 2005 Express es decir todas las ventanas y componentes que permitan el desarrollo de aplicaciones. Visual Studio .NET es un entorno de desarrollo integrado que nos ayuda a disear, desarrollar, depurar e implantar con rapidez soluciones basadas en el .NET Framework. Podemos acceder a un conjunto comn de herramientas, diseadores y editores desde cualquiera de los lenguajes de programacin de Visual Studio .NET. Podemos crear aplicaciones Windows Forms y Web Forms que integren datos y lgica de negocio.
Al ingresar por primera vez al Visual Basic Net observara la siguiente pantalla En esta pantalla se muestra principalmente la pgina de inicio con los proyectos reciente y as opciones para abrir
10
Programacin Digital I
o crear un nuevo proyecto. Tambin se muestra las opciones para Abrir o Crear un nuevo proyecto. Tambin se muestra el cuadro de herramientas y el explorador de soluciones pero vacos porque no hay ningn proyecto activo.
Para visualizar todos los componentes de Visual Basic Net debe crear una aplicacin. CREAR UNA APLICACIN Para crear una aplicacin puede seguir cualquiera de los siguientes pasos: Elegir la opcin Archivo Nuevo Proyecto:
11
Programacin Digital I
Visual Studio .NET ofrece varias plantillas de aplicaciones para soportar el desarrollo de diferentes tipos de aplicaciones y componentes. Antes de iniciar un nuevo proyecto, debemos escoger el tipo de plantilla que deseamos utilizar. Una plantilla de aplicacin proporciona archivos de inicio y una estructura de proyecto, y contiene los objetos bsicos del proyecto y la configuracin del entorno que necesitamos para crear el tipo de aplicacin que deseamos.
Esta ventana contiene las plantillas instaladas de Visual Studio Net. En forma predeterminada se elige aplicacin para Windows.
En la caja de herramientas, escriba el nombre de su nueva aplicacin y presione Enter o haga clic en el botn Aceptar.
12
Programacin Digital I
Ventana Propiedades
13
Programacin Digital I
Barra de Ttulo
Contiene el nombre del proyecto y su estado. Cuando estamos en estado de diseo, es decir dibujando los controles o escribiendo las instrucciones, la barra slo muestra el nombre del proyecto.
Cuando ejecuta la aplicacin se muestra la palabra ejecutando en la barra de titulo. Durante este estado la aplicacin solo ejecutara las instrucciones indicadas y no se podr modificar las ni alterar el diseo de la aplicacin. Los siguientes botones que s encuentran en la barra estndar permiten iniciar, interrumpir, detener o depurar una aplicacin.
La Barra de Men
La barra de mens contienen todas las opciones que permiten utilizar el Visual Basic 2005 Express.
El Cuadro de Herramientas
Como su nombre lo indica, este cuadro contiene todas las herramientas que se necesita para desarrollar las aplicaciones. Al pasar el puntero del Mouse por este cuadro se visualizan todas las herramientas. Si desea que el cuadro de herramientas est permanente en su pantalla, debe hacer clic en el botn Ocultar Automticamente.
14
Programacin Digital I
El Formulario
El formulario es el objeto principal de cada aplicacin porque aqu se construye la interfaz del usuario, es decir, la comunicacin del usuario con la aplicacin que se desarrolla. El desarrollo de una aplicacin consiste en agregar los formularios necesarios y asignarles sus propiedades luego dibujar los controles que cada uno ellos necesitan y asignarles tambin sus propiedades y finalmente escribir las instrucciones requeridas por la aplicacin. Cuando se crea una aplicacin, en forma predeterminada se crea un formulario llamado Form1.Para agregar nuevos formularios a su aplicacin puede elegir la Opcin Proyecto Agregar Windows Forms.
15
Programacin Digital I
Otra forma de agregar formularios a una aplicacin es haciendo clic en el nombre del proyecto del explorador de soluciones y eligiendo la opcin Agregar Windows Forms. En la ventana que se visualiza selecciones Windows Forma y luego clic en el botn Agregar, si desea ,antes de hacer clic en el botn Agregar puede asignarle un nombre diferente al predeterminado del nuevo formulario. En el siguiente ejemplo se est agregando un nuevo formulario con el nombre frmejemplo por Form2.vb
Para eliminar un formulario haga clic derecho en su nombre en el explorador de soluciones y del men contextual que se visualiza elija la opcin Eliminar. Del mensaje que se visualiza, haga clic en el botn Aceptar para confirmar la eliminacin. Cuando se ejecuta el proyecto, se visualiza el primer formulario. Para indicar el formulario inicial seleccione el nombre de la aplicacin luego clic derecho, propiedades. Luego seleccione el nombre del formulario inicial.
16
Programacin Digital I
Barra de Mens
Nuevo proyecto
Guardar Form1.vb
Deshacer
La Ventana de Propiedades
Esta ventana, como su nombre lo indica, contiene todas las propiedades o caractersticas que se les pueden asignar a los controles que se dibujan en el formulario. Como en casi todas las ventanas, en la barra de ttulo se visualizan los botones que permiten: Indicar posicin de la ventana de la pantalla Indicar si la ventana se oculta en forma automtica Cerrar la ventana
Los botones
Permiten lo siguiente: Mostrar las propiedades o eventos ordenados por su categora Mostrar las propiedades o eventos ordenadas alfabticamente por su n nombre Ver slo las propiedades del objeto seleccionado Ver slo los eventos del objeto seleccionado
17
Programacin Digital I
El Explorador de Soluciones(CTRL + R)
El explorador de servidores contiene todos los objetos que forman parte de nuestra aplicacin, como formularios, controles de usuarios, mdulos etc.
Estos botones permiten: Mostrar las propiedades del archivo seleccionado Mostrar todos los archivos del proyecto Actualizar el explorador de soluciones Ingresar a la ventana de cdigo del objeto seleccionado Ver la ventana de diseo Ver diagrama de clase
Ventana de Cdigo
18
Programacin Digital I
Explorador de soluciones
Ventana de Diseo
Como en las versiones anteriores de Visual Basic, tambin se puede ingresar a la ventan de cdigo de un objeto pulsando la tecla F7 y para regresar a la ventan de diseo Shift+f7
CONFIGURAR EL VISUAL BASIC NET Si desea configurar el Visual Basic Net como por ejemplo cambiar el tipo, tamao, color de la letra de las instrucciones que escriba o el color del texto de cada comentario, etc. debe elegir la opcin Herramientas Opciones. Se visualiza una ventana con 2 opciones. 1.-Crear una Carpeta de trabajo en la unidad d:\Mis Proyectos 2,-Clic en herramientas, Opciones, Proyectos y soluciones Escoger la ruta de la carpeta de trabajo en; D:\mis proyectos
19
Programacin Digital I
1. 2. 3. Ubicacin de proyectos de Visual Studio Ubicacin de plantillas de proyecto de usuario de Visual Studio Ubicacin de plantillas de elementos de usuario de Visual Studio
Observe lo siguiente:
20
Programacin Digital I
Asigne las siguientes Propiedades: Propiedades Text Backcolor BackgroundImage Mi Primer Formulario InactiveCaptionText Imagen1
Cuadro de Herramientas
Para observar el cuadro de herramientas pulsar las teclas ALT +CTRL +X Para ocultar el cuadro de herramientas hacer clic en el icono
21
Programacin Digital I
Cdigo Diseador Explorador de Soluciones Ventana de Propiedades Cuadro de Herramientas Examinador de Objetos Ejecutar Application
22
Programacin Digital I
SESIN II
INSTRUCCIONES CONDICIONALES
CONTENIDO
23
Programacin Digital I
Figura 1
Figura 2
Procedimiento
a)primero Realizamos el diseo del formulario b)Pulsar alt + ctrl + x para para usar el control etiqueta
24
Programacin Digital I
Y usar el control boton de comando para generar el boton de comando
Objeto Label1
Valor Label1 Microsoft Sans Serif, 36pt, style=Bold Label1 Microsoft Sans Serif, 36pt, style=Bold Button1 APLICAR
Label2
Nombre Font
Button1
Name Text
Propiedades de los controles del Formulario Establecer las siguientes propiedades de los controles Realize el siguiente cdigo
Pulse shift +F7 para pasar del formulario ala venatna de cdigo
Public Class Form4 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "BIENVENIDOS A VISUAL STUDIO " Label1.ForeColor = Color.Blue Label2.Text = "UCV SE MAS" Label2.ForeColor = Color.Brown End Sub End Class Explicacin
En este ejemplo se aplica el evento clic al objeto Button1, el cual activa las propiedades de los 2 objetos: Label1 y Label 2 de la siguiente forma:
Objeto
propiedad 25
Programacin Digital I
La propiedad Text permite asignar el texto al Objeto La propiedad ForeColor permite asignar el color al Objeto
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub
En este caso el formulario se identifica con Me y se le asigna el METODO close()
Segunda Aplicacin
Otra aplicacin ser un simple formulario con algunos elementos de escritorio comunes para ir familiarizando con el entorno. Abra el entorno de desarrollo visual studio y cree un nuevo proyecto (ctrl+n).
26
Programacin Digital I
En el cuadro de dialogo Name escriba alumnos y pinche el botn OK. El IDE inmediatamente creara el proyecto y nos mostrar una esto:
27
Programacin Digital I
En la cual se mostrar como pgina principal una pestaa que contendr el diseador visual con un formulario el cual el sistema habr llamado Form1. En la ventana de propiedades cambie el nombre a form_alumnos
28
Programacin Digital I
Adems cambie la propiedad text a Registro de Alumnos y el tamao (size) a 800,600.Lo que acabamos de hacer es ajustar las propiedades del objeto form mediante el diseador. agregando controles a nuestro formulario. Desde la ventana de herramientas o toolbox podemos agregar distintos controles a nuestro formulario, esto lo podemos hacer pinchando el control que deseamos y arrastrndolo al formulario. Ingrese los siguientes controles a su formulario: 9 Etiquietas (Label) 6 cuadros de texto (TextBox) 1 cuadro de lista desplegable (combo box) 1 Calendario (DateTimePicker) Cambie la propiedad de cada Label con los siguientes nombres: RUN Nombre Ap. Paterno Ap.Materno Direccin Telfono Email Carrera Fecha de Ingreso Cambie la propiedad name de los text_box de la siguiente forma: Text_run Text_nombre Text_ap_pat Text_ap_mat Text_direccion Text_telefono Text_email
Cambie la propiedad nombre del combo box a cmb_carrera y la del DateTimerPicker a DTP_fec_ingreso. Distribuya estos controles de la siguiente Manera
29
Programacin Digital I
para ejecutar la aplicacin y ver como quedar nuestro formulario, debera ver algo similar a
30
Programacin Digital I
Hasta el momento no hemos utilizado absolutamente nada de cdigo, bueno, dependiendo de la ptica del programador, esto es una ventaja ya que el IDE nos permite crear en forma rpida una aplicacin. Hagamos algo ms interesante, agreguemos dos botones al formulario para utilizarlo como disparador de un eventos, para ello iremos nuevamente al toolbox y busquemos el control Button, ubiquemos uno debajo del combobox de carrera y cambiemos su nombre a btn_grabar y la la propiedad text a Grabar, el otro botn ubiqumoslo al costado derecho del botn Grabar y cambie su propiedad nombre a btn_Salir y su text a Salir. Como comentario aparte, Se han fijado que para dar el nombre a los controles hemos utilizado una nomeclatura comn?, por ejemplo Textbox1 lo llamamos Text_run, Combobox1 lo llamamos cmb_carrera, bueno, utilizar nomeclaturas comunes que identifiquen claramente el tipo de control y el campo o dato con el cual se est trabajando es una buena idea ya que nos permitir fcilmente identificar estos cuando estemos trabajando con cdigo. Sigamos con nuestra apliacion, hasta ahora no hemos utilizado nada de cdigo, asi que ya es hora de utilizar nuestras neuronas . Haga doble click en el botn btn_salir. Qu ha pasado?, se ha activado la pestaa de cdigo y auto-magicamente el cursor se ha ubicado entre estas lneas:
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
As
Agreguemos algo de estilo a nuestro formulario. Para ello pondremos una imagen en el top de formulario con el Titulo de la aplicacin. Primero debemos hacer espacio para nuestra imagen, seleccione todos los controles y muvalos hacia abajo. Para ello mantenga presionado el botn derecho del mouse y seleccione los controles de formulario. Agregamos un Label a nuestro Formulario, y le agregamos las siguientes propiedades (en tiempo diseo):
31
Programacin Digital I
Dock = Top Autosize = False En la propiedad Image, importamos una nueva imagen, yo ocup el logo de Ceduc , ustedes elijan el que gusten
y aceptamos: Cambiemos las siguientes propiedades: ImageAlign = MiddleLeft Text = [Titulo] TextAlign = MiddleRight Font = Microsoft Sans Serif, 18pt, style=Bold BackColor = Window Modifiers = Public
32
Programacin Digital I
form.
Ahora agregamos un nuevo formulario (Windows Form), frmLogin.vb. Y le agregamos los siguientes controles:
33
Y en el control txtPassword: UseSystemPasswordChar = Trae PasswordChar = * Y en el propio formulario cambiamos las siguientes propiedades: AcceptButton = btnAceptar CancelButton = btnCancelar
Ahora debemos hacer que nuestro formulario de autentificacin sea el principal en nuestro proyecto, para ello vamos nuevamente a la ventana del explorador de soluciones y seleccionamos nuestro proyecto haciendo doble click en el. En este instante se abrir el cuadro de propiedades de la aplicacin. En el cuadro de opciones startup form selecionaremos el formulario frmLogin:
Vamos nuevamente al formulario frmLogin y hacemos clic en el botn aceptar para acceder al cdigo del evento. Instanciaremos el formulario form_alumnos para llamarlo de la siguiente forma. Dim falumnos = New form_alumnos() falumnos.show()
34
Programacin Digital I
Variables y Operadores
Uso de variables y operadores de VB.NET Variable Ubicacin de memoria temporal, se usan para almacenar datos. Una variable tiene un nombre y un tipo de dato. Ejemplo:
Integer Long Short Byte Double Single Decimal Boolean Char String DateTime Object Numero entero 32 bits Numero entero 64 bits Numero Entero 16 bits Binarios o caracteres ASCII en numrico Decimales 64 bits Decimales de coma flotante 32 bits Decimales con coma como enteros 128 bits True o False nmeros de 16 bits Un carcter numero de 16 bits sin signo Alfanumricos Fechas y horas como entero de 64 bits Datos de cualquier tipo Declaracin de Variables Indicar su presencia a un programa. Sintaxis:
35
Programacin Digital I
Tambien se pueden declarar por medio de caracteres de tipo identificador. Dim StrVar$
Decimal String
Nomenclatura de variables
@ $
Debe ser exclusivo dentro del mismo mbito (procedimiento, formulario o modulo).
Inicializacin de variables
De manera predeterminada una variable contienen un valor cuando se declara. Por ejemplo, una variable Integer contiene 0 y una variable Boolean almacena False. Ejemplos Dim NumVar As Integer Declaracin
NumVar=200
Inicializacin en 200
Declaracin e Inicializacin
36
Programacin Digital I
Disociar una variable de su tipo de dato: Nothing Nothing disocia una variable de su tipo de dato correspondiente. pOr ejemplo si se asinga Nothing a una variable de tipo Integer la variable pierde su valor y adopta el valor predeterminado de su tipo de datos. Ejemplo Dim Ctr Integer = 10 Ctr = Nothing Adopta 10 Adopta 0
Declaraciones implcitas y explicitas Se puede declarar variables implcita que permiten utilizar variables sin declararlas y explcitamente. Ejemplorcy Vilche [email protected] NumVar= 2*5 10 3
Se recomienda declarar explcitamente una variable. La instruccin Option Explicit garantiza que las variables se declaren antes de utilizarlas. Sintaxis Option Explicit On Off Por defecto es On
37
Programacin Digital I
Ambito de las variables El mbito determina su accesibilidad. En funcin a ello, una variable puede ser variable local o de nivel de modulo. Variable local, declaradas en un procedimiento. Variable de modulo, declaradas a nivel de la aplicacin o de mdulos de una aplicacin. A su vez se clasifican en privadas(solo en el modulo) y publicas(entre mdulos). Ejemplos Private Dim NumVar Integer Private NumVar As Integer Public Dim NumVar As Integer Public NumVar as Integer Conversin de Tipos Se dispone de dos tipos de conversiones:
Option Strict [On Off] On comprueba los tipos de datos antes de la conversin. Off puede generar conversiones implcitas. El valor por defecto es On Nota: Cuando se define la instruccin Option Strict On, es necesario declarar las variables explcitamente. Constante Una variable cuyo valor no cambia durante la ejecucin de un programa. Const MaxPuntos As Integer = 100 Const MaxPuntos = 100
38
Programacin Digital I
Uso de Operadores
Un operador es una unidad de cdigo que realiza una operacin en una variable(s) o elementos. Tenemos los siguientes:
Aritmticos
Asignacin
Comparacin
Lgicos/ de bits
Concatenacin
Operadores Aritmticos
Operador ^ Descripcin Calcula la potencia Sintaxis Numero ^ Exponente * Multiplicar dos nmeros Numero1 * Numero2 / Dividir dos nmeros Numnero1 / Numero2 \ Mod Divide y devuelve un entero Devuelve el resto Numero1 \ Numero2 Numero1 Mod Numero2 12 Mod 4.3 3.4 200\3 5 Mod 2 1 8/3.5 (-3)^4 3.5*3.25 Ejemplo 2^3
39
Programacin Digital I
Operadores de Asignacin
Operador =
Ejemplo Num1 = 12
+=
Asignacin de suma
-=
Asignacin de resta
Variable -= Expresion
*=
Asignacin de
Variable *=
\=
&=
Asignacin de concatenacin
^=
Asignacin de potencia
Numero ^= Exponente
Numero1 ^=3
40
Programacin Digital I
Operadores de Comparacin
Permiten comparar dos expresiones, el resultado es un valor booleano. Operador < <= > >= = <> Is Descripcin Menor que Menor o igual que Mayor que Mayor o igual que Igual que No igual que Comparar dos referencias a Sintaxis Expresion1< Expresion2 Expresion1<= Expresion2 Expresion1> Expresion2 Expresion1>= Expresion2 Expresion1= Expresion2 Expresion1<> Expresion2 Objeto1 Is Ejemplo 23 < 30 56 <= 56 8>3 78 >= 12 5=5 63 <> 89 Dim Objeto1, Objeto2 As
PRAMAR .NET
Visual
Rango de Valores
Boolean Date
Verdadero o Falso 0:00:00 del 1 de enero de 0001 a 11:59:59 PM del 31 de diciembre de 9999 Hasta 29 dgitos significativos, con valores de hasta 7,9228 x 10 (con signo) -4,94065645841246544E-324 a +1,79769313486231570E+308 (con signo -2.147.483.648 a +2.147.483.647 (con signo
Decimal
16 bytes
Double
8 bytes
Integer
4 bytes
Single
4 bytes
String
Variant
41
Programacin Digital I
INSTRUCCIN CONDICIONAL
Estas instrucciones nos permiten tomar decisiones, permiten evaluar una expresin y ejecutar unas instrucciones en caso contrario ejecuta otras series de instrucciones
Sintaxis:
Primera Forma: If <expresin a evaluar> Then <Instruccin (si la expresin devuelve Verdadero)> Ejemplo: If a = b Then MessageBox(.Son Nmeros Iguales.) Si la expresin a evaluar de a = b devuelve o mejor dicho es verdadera, este nos mostrar un mensaje, con el texto de .Son Nmeros Iguales.. Segunda Forma: If <expresin a evaluar> Then <Instruccin (si la expresin evaluada devuelve Verdadero)> End If Ejemplo: If b <> 0 Then Res = a / b Console.WriteLine("El Resultado de La Divisin es: {0}", Res) End If Esta segunda forma, lo utilizamos cuando tengamos que hacer mas de una instruccin si la expresin a evaluar resulta verdadera, en este caso si a es mayo que b, si es verdadero este har la siguiente instruccin de a dividir entre b y el resultado guardarlo en una variable llamada Res, que despus la mostraremos en pantalla. Tercera Forma: If <expresin a evaluar> Then < Instruccin (si la expresin evaluada devuelve Verdadero)> Else < Instruccin (si la expresin evaluada devuelve Falso)>
42
Programacin Digital I
End If Ejemplo: If b <> 0 Then Res = a / b Console.WriteLine("El Resultado de La Divisin es: {0}", Res) Else Console.WriteLine("Error: Divisin Entre Cero") End If Esta forma nos permite utilizar los dos tipos de resultados de la expresin evaluada, por ejemplo, si b es diferente a cero este dividir a a, pero si es falso, nos mostrara un mensaje de Error. Cuarta Forma: If <expresin a evaluar> Then <Instruccin (si la expresin evaluada devuelve Verdadero)> Else <Instruccin (si la expresin evaluada devuelve Falso)> (todo en una misma lnea) Esta forma no tan muy usada, solo en los casos cuando hay que hacer una sola instruccin en cada tipo de respuesta de la expresin evaluada, por ejemplo, si a es igual b nos mostrar un mensaje de Nmeros Iguales, pero si es falso nos mostrara otro mensaje dicindonos que No son Nmeros iguales, y recuerden que es en una sola lnea. Quinta Forma: If <expresin a evaluar> Then < Instruccin (si la expresin evaluada devuelve Verdadero)> ElseIf <expresin a evaluar> Then < Instruccin (si la expresin evaluada devuelve Verdadero)> Else < Instruccin (si la expresin evaluada devuelve Falso)> End If Ejemplo: If b = 0 Then Console.WriteLine("Error: Divisin Entre Cero") ElseIf a <> b Then Res = a / b Console.WriteLine("El Resultado de La Divisin es: {0}", Res) Else Console.WriteLine("El Resultado de La Divisin es: 1") End If
43
Programacin Digital I
EJEMPLOS CON SENTENCIA CONDICIONAL(IF-THEN) Desarrollar una aplicacin con 4 ejercicios que permita realizar lo siguiente: Ejercicio1.- Ingresar las Notas de Un alumno y obtener su promedio
Vista Diseo del Formulario Principal Objeto Form1 Propiedad (Name) BackColor BackgroundImage BackgroundImageLayout Font Label1 (Name) Text Font ForeColor Button1 (Name) BackColor BackgroundImage BackgroundImageLayout Font Label1 Ejercicios de Visual Basic Net Valor Form1
44
Programacin Digital I
Vista Cdigo del Formulario Principal Clic en el primer botn, escriba el siguiente cdigo dentro del procedimiento que permite llamar a un formulario. Si queremos llamar a los formulario en modo Modal es decir, que solo se active el formulario priincipal,cuando cerramos el formulario secundario,debemos utilizar el metodo ShowDialog.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.ShowDialog() End Sub
Las siguientes instrucciones muestran el formulario form2 en modo Modal.
Declaracin de Variables
Se Requiere lo siguiente: El Ingreso del cdigo solo numrico El ingreso de apellidos y nombres y el curso solo letras Las notas deben ser valor numrico Obtener el Promedio
45
Programacin Digital I
FORMULARIO
Cuando se inicia el formulario el cursor debe ubicarse en el primer cuadro , en este aplicaremos al formulario el evento activated.
Private Sub Form2_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated TextBox1.Focus() End Sub
En las Notas Las Notas deben cambiar de color si es aprobatorio color azul ,en caso contrario color rojo.
If Val(TextBox1.Text) >= 11 Then TextBox1.ForeColor = Color.Blue Else TextBox1.ForeColor = Color.Red End If End Sub
Aplicando Consistencia: Las Notas deben ser de valor Numrico
Private Sub TextBox1_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If (Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57) And Asc(e.KeyChar) <> 8 Then e.Handled = True
Escuela Superior Privada de Tecnologa SENATI
End If
46
End Sub
Programacin Digital I
47
Programacin Digital I
CALCULOS Obtener el promedio escriba sub y la palabra promedio pulse enter luego digite el cdigo Para llamar procedimiento promedio utilizar:
Sub promedio() n1 = Val(TextBox1.Text) n2 = Val(TextBox2.Text) n3 = Val(TextBox3.Text) prom = (n1 + n2 + n3) / 3 TextBox4.Text = prom.ToString("##.00") If (prom >= 0 And prom < 10.5) Then PictureBox1.Image = WindowsApplication3.My.Resources.Resources.desaprobado MsgBox("Desaprobado") Else If (prom > 10.5 And prom <= 20) Then PictureBox1.Image = WindowsApplication3.My.Resources.Resources.aprobado MsgBox("Aprobado") End If End If End Sub
En el botn
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call promedio() End Sub
Observe el promedio respectivo Se requiere que las notas deben estar entre un valor de 0 y 20
48
Programacin Digital I
En este caso se crea un procedimiento llamado evaluar
Sub evaluar() if Val(TextBox1.Text) < 0 Or Val(TextBox1.Text) > 20 Then MsgBox("La nota debe estar entre 0 y 20", MsgBoxStyle.Exclamation, "verifique") TextBox1.Clear() TextBox1.Focus() Else TextBox2.Focus() End If End Sub
49
Programacin Digital I
Public Class Form4 Dim EDAD As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click EDAD = Val(TextBox1.Text) Select Case EDAD Case 0 To 9 Label2.Text = "INFANCIA" Case 10 To 13 Label2.Text = "NIEZ" Case 15, 16, 17 Label2.Text = "ADOLESCENCIAZ" Case 18 To 59 Label2.Text = "ADULTEZ" Case Is >= 60 Label2.Text = "ANCIANO" Case Else
Escuela Superior Privada de Tecnologa SENATI
50
Programacin Digital I
51
Programacin Digital I
LABORATORIOS
LABORATORIO - 001
1.
Elaborar una aplicacin que permita ingresar el nombre de un usuario y que luego permita saludarlo en un Label.
Public Class Form1 Private Sub BtnSaludo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaludo.Click 'Define la variable nombre y le asigna el valor ingresado Dim Nombre As String = TxtNombre.Text 'Alinea el texto del saludo al centro de la etiqueta LblSaludo.TextAlign = ContentAlignment.MiddleCenter 'Muestra el saludo LblSaludo.Text = "Hola: " & Chr(10) & Chr(13) & Nombre & Chr(10) & Chr(13) & Chr(10) _ & Chr(13) & "Bienvenido a Visual Basic 2005" End Sub Private Sub BtnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCerrar.Click Close() End Sub End Class
52
Programacin Digital I
LABORATORIO - 002
Elaborar una aplicacion que permita obtener el promedio de tres notas, mostrandome los puntos obtenidos (suma de las notas) y el promedio del mismo.
Public Class Form1 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim Nota1, Nota2, Nota3, Puntos, Promedio As Single Nota1 = Single.Parse(TxtNota1.Text) Nota2 = Single.Parse(TxtNota2.Text) Nota3 = Single.Parse(TxtNota3.Text) Puntos = Nota1 + Nota2 + Nota3 Promedio = Puntos / 3 LblPuntos.Text = Puntos.ToString LblPromedio.Text = Promedio.ToString If Promedio >= 10.5 Then LblPromedio.ForeColor = Color.Blue Else LblPromedio.ForeColor = Color.Red End If End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) TxtNombre.Text = "" TxtNota1.Text = "" TxtNota2.Text = "" TxtNota3.Text = "" LblPuntos.Text = "" LblPromedio.Text = "" TxtNombre.Focus()
53
Programacin Digital I
End Sub End Class
LABORATORIO - 003
Elaborar una aplicacin que permita mostrar el promedio de dos notas, este promedio se mostrara en un cuadro de mensaje, de la siguiente manera:
Public Class Form4 Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim kb As Integer = 0 Dim seg As Integer = 0 Dim velocidad As Integer = 0 kb = 55 velocidad = kb / seg MsgBox(CStr(velocidad) & " kb por seg") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim aNumber As Integer = CInt(TextBox1.Text) Dim bNumber As Integer = CInt(TextBox2.Text) MsgBox(calculopromedio(aNumber, bNumber)) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = "" TextBox1.Text = "" habilitabotones() End Sub Sub deshabilitabotones() TextBox1.Enabled = False TextBox2.Enabled = False End Sub Sub habilitabotones()
54
Programacin Digital I
TextBox1.Enabled = True TextBox2.Enabled = True End Sub Function calculopromedio(ByVal N1 As Integer, ByVal N2 As Integer) As Integer Return (N1 + N2) / 2 End Function End Class
55
Programacin Digital I
LABORATORIO - 004
2.
Elaborar una aplicacion que permita ingresar el nombre de un cliente asi como el monto consumido, luego al hacer click debera mostrar el importe del mismo acompaado del igv, mostrandose en los labels respectivos.
Public Class Form1 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim Monto, Importe, Igv As Double Monto = Double.Parse(TxtMonto.Text) Importe = Monto / 1.19 Igv = Monto - Importe LblImporte.Text = Importe.ToString("###,##0.00") LblIgv.Text = Igv.ToString("###,##0.00") End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) TxtCliente.Text = "" TxtMonto.Text = "" LblImporte.Text = "" LblIgv.Text = "" TxtCliente.Focus() End Sub Private Sub BtnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Close() End Sub End Class
56
Programacin Digital I
57
Programacin Digital I
Public Class Form7 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Select Case ComboBox1.SelectedIndex Case 0 TextBox1.Text = 1000 Case 1 TextBox1.Text = 2000 Case 2 TextBox1.Text = 3000 End Select End Sub
58
Programacin Digital I
Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ComboBox1.Items.Add("DIGITADOR") ComboBox1.Items.Add("PROGRAMADOR") ComboBox1.Items.Add("ANALISTA") End Sub End Class
El control ComboBox de Visual Basic 6.0 se ha reemplazado por el control ComboBox de Windows Forms en Visual Basic 2005. Los nombres de algunas propiedades, mtodos, eventos y constantes son diferentes y, en algunos casos, existen diferencias de comportamiento. Diferencias conceptuales Change (Evento) En Visual Basic 6.0, el evento Change del control ComboBox se desencadena cuando se modifica el texto del control. El evento Change no se desencadena cuando se selecciona un elemento en la seccin de la lista del control. Si se modifica el texto de un elemento de la lista mediante programacin, no se desencadena el evento Change. En Visual Basic 2005, el evento Change ya no existe; el evento TextChanged se desencadena cada vez que el texto se modifica por alguna razn; por ejemplo:
Cuando se modifica la seccin de entrada de texto Cuando se selecciona un elemento de la lista Cuando se modifica un elemento de la lista mediante programacin Cuando se llama al mtodo AddItem
ItemData (Propiedad) En Visual Basic 6.0 la propiedad ItemData de un control ComboBox se puede establecer en tiempo de diseo en la ventana Propiedades para asociar un valor Integer con un elemento ComboBox. En Visual Basic 2005, la propiedad ItemData ya no existe. La biblioteca Microsoft.VisualBasic.Compatibility contiene una funcin SetItemData que se puede utilizar para asociar un valor Integer con un elemento; la funcin GetItemData se puede utilizar para recuperar el elemento. Locked (Propiedad) En Visual Basic 6.0, la propiedad Locked de un control ComboBox determina si se puede editar la seccin del cuadro de texto del control. En Visual Basic 2005, la propiedad Locked impide que un control se mueva en tiempo de diseo. No existe un equivalente directo para la propiedad Locked de Visual Basic 6.0; sin embargo, puede conseguir el mismo efecto si establece la propiedad DropDownStyle del control ComboBox en DropDownList. Nota En Visual Basic 6.0, si se establece la propiedad Locked en True, tambin se impedir que se modifique la seleccin. Para duplicar este comportamiento, puede cancelar la seleccin en el evento MouseDown.
59
Programacin Digital I
NewIndex (Propiedad) En Visual Basic 6.0, la propiedad NewIndex se usaba para recuperar el ndice del ltimo elemento agregado a un control ComboBox. En Visual Basic 2005, la propiedad NewIndex ya no existe. Puede utilizar el valor devuelto desde el mtodo Item.Add para recuperar el ndice de un elemento cuando ste se agrega. TopIndex (Propiedad) En Visual Basic 6.0, la propiedad TopIndex se utilizaba para devolver o establecer un valor que especificara el elemento del control ComboBox o ListBox que deba mostrarse en la posicin superior. Esta propiedad sola utilizarse para desplazarse por la lista sin seleccionar ningn elemento. En Visual Basic 2005, la propiedad ComboBox ya no es compatible con la propiedad TopIndex. En la mayora de los casos esto no debera representar un problema, porque al definir la propiedad TopIndex, no se producir ningn efecto visible a menos que se hubiera establecido la propiedad Style en 1 - SimpleCombo. En este caso, puede emular su comportamiento utilizando un control ListBox y un control TextBox; el control ListBox contina admitiendo la propiedad TopIndex. Scroll (Evento) El evento Scroll de Visual Basic 6.se utiliza junto con la propiedad TopIndex para llevar a cabo acciones cuando se desplaza por la lista. Visual Basic 2005 no admite el evento Scroll; sin embargo, en la mayora de los casos, el evento SelectedIndexChanged constituye un sustituto vlido. Otras diferencias Existen numerosas diferencias conceptuales que se aplican a todos los controles, como diferencias en los enlaces de datos, control de fuentes, operaciones de arrastrar y colocar, compatibilidad con Ayuda, y otras. Para obtener ms informacin, vea Conceptos de formularios Windows Forms para usuarios de Visual Basic 6.0. Cambios de cdigo para el control ComboBox En los ejemplos siguientes se muestran las diferencias que existen entre las tcnicas de codificacin de Visual Basic 6.0 y Visual Basic 2005. El cdigo se modifica para hacer que un control ComboBox sea de slo lectura El cdigo siguiente muestra cmo impedir que un usuario agregue nuevos elementos a un control ComboBox. Copiar cdigo ' Visual Basic 6.0 Combo1.Locked = True Visual Basic Copiar cdigo
60
Programacin Digital I
' Visual Basic 2005 ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList El cdigo se modifica para seleccionar el ltimo elemento agregado en un control ComboBox El cdigo siguiente muestra cmo se establece la seleccin en un elemento que se ha agregado mediante programacin a un control ComboBox. Copiar cdigo ' Visual Basic 6.0 Combo1.AddItem "This is a new item" Combo1.ListIndex = Combo1.NewIndex Visual Basic Copiar cdigo ' Visual Basic 2005 Dim i As Integer i = ComboBox1.Items.Add("This is a new item") ComboBox1.SelectedIndex = i El cdigo de Private Sub se modifica para asociar datos de elementos El cdigo siguiente muestra cmo se asocia un nmero de empleado a cada empleado mostrado en un control ComboBox y cmo se recupera despus ese nmero en tiempo de ejecucin. Copiar cdigo ' Visual Basic 6.0 Private Sub Form_Load Combo1.AddItem "Nancy Davolio" Combo1.ItemData(Combo1.NewIndex) = 12345 Combo1.AddItem "Judy Phelps" Combo1.ItemData(Combo1.NewIndex) = 67890 End Sub Private Sub Combo1_Click() Label1.Caption = "Empoyee #" & _ CStr(Combo1.ItemData(Combo1.ListIndex)) End Sub Visual Basic Copiar cdigo ' Visual Basic 2005 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ComboBox1.Items.Add("Nancy Davolio") Microsoft.VisualBasic.Compatibility.VB6. _ SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 12345) ComboBox1.Items.Add("Judy Phelps") Microsoft.VisualBasic.Compatibility.VB6. _ SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 67890)
61
Programacin Digital I
End Sub Visual Basic Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Label1.Text = "Employee #" & CStr( _ Microsoft.VisualBasic.Compatibility.VB6. _ GetItemData(ComboBox1, ComboBox1.SelectedIndex)) End Sub
62
Programacin Digital I
Control ListBox
El control ListBox permite aadir elementos en forma de lista y tambin poder seleccionar elementos de la misma para trabajar los datos. Este control permite seleccionar un elemento solo o varios de ellos, utilizando la propiedad Multiselect. La imagen de la izquierda muestra un ListBox en el que se selecciona un solo elemento y a la derecha se seleccionan varios: Algunas de sus propiedades. ListBox.Items.Add: Sirve para agregar informacin al control ListBox.SelectedIndex: Indica los elementos que han sido seleccionado en el control, (ojo) esta propiedad es una de las mas funcionales que tiene este control, ya que, no da una perspectiva completa de la informacin que tenemos almacenada en el mismo. ListBox.Items.RemoveAt: Remueve o elimina la informacin seleccionada en el mismo. ListBox.Sorted: Esta propiedad es de tipo Boolean (Verdadero o Falso), nos sirve para ordenar alfabticamente (A hasta Z) la informacin contenida en el control.
Public Class Form8 Private Sub Form8_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ListBox1.Items.Add("DIGITADOR") ListBox1.Items.Add("PROGRANADOR") ListBox1.Items.Add("ANALISTA") End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Select Case ListBox1.SelectedIndex
Escuela Superior Privada de Tecnologa SENATI
63
Programacin Digital I
Case 0 TextBox1.Text = 1200 Case 1 TextBox1.Text = 2500 Case 2 TextBox1.Text = 4500 End Select End Sub End Class
Ejercicio 2
Public Class Form1 'Aqui valido que no quede entradas en blanco Private Sub btnAgregar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAgregar.Click If Me.txtNombre.Text = "" Then MessageBox.Show("El Nombre esta en blanco", "Datos en blanco") Me.txtNombre.Focus() Exit Sub
Escuela Superior Privada de Tecnologa SENATI
64
Programacin Digital I
Else If Me.txtDireccion.Text = "" Then MessageBox.Show("La Direccion esta en blanco", "Datos en blanco") Me.txtDireccion.Focus() Exit Sub Else If Me.txtTelefono.Text = "" Then MessageBox.Show("El Telefono esta en blanco", "Datos en blanco") Me.txtTelefono.Focus() Exit Sub Else 'Agrego a la lista Me.lstLista.Items.Add(Me.txtNombre.Text.Trim _ & " " & "---" & " " & Me.txtDireccion.Text.Trim _ & " " & "---" & " " & Me.txtTelefono.Text.Trim) 'Limpio las entradas Me.txtNombre.Clear() Me.txtDireccion.Clear() Me.txtTelefono.Clear() 'Enfoco Me.txtNombre.Focus() End If End If End If End Sub Private Sub btnEliminar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnEliminar.Click 'Aqui eliminamos los datos del ListBox If Me.lstLista.SelectedIndex <> -1 Then Me.lstLista.Items.RemoveAt(Me.lstLista.SelectedIndex) MessageBox.Show("El Dato ha sido borrado", "Dato borrado") Exit Sub Else MessageBox.Show("Debe seleccionar para poder borrar", "Seleccione el dato") End If End Sub
65
Programacin Digital I
Private Sub btnSalir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSalir.Click 'Aqui mandamos a salir Application.Exit() End Sub Private Sub Llenar_Lista() 'Aqui creamos un metodo para llenar la lista With Me.lstLista.Items .Add("Carlos Perez --- La Vega --- 8095286969") .Add("Roman Fernandez --- Santiago --- 8094715896") .Add("Juan Fco. --- Santiago --- 8094718494") .Add("Alberto Fernandez --- La Vega --- 8093256969") .Add("Adalberto Perez --- San Cristobal --- 8098526969") End With End Sub Private Sub btnLlenar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnLlenar.Click 'Aqui llamamos el metodo Call Llenar_Lista() 'Mandamos a ordenar Me.lstLista.Sorted = True End Sub End Class
66
Programacin Digital I
BackColor
Checked
Obtiene o establece un valor que indica si el estado de la casilla de verificacin es el de activada. Obtiene o establece un valor que indica si el control puede responder a la interaccin del usuario. Obtiene o establece la fuente del texto que muestra el control. Obtiene o establece el color de primer plano del control. Obtiene o establece el texto asociado al control.
Enabled
Se utiliza un control CheckBox para dar al usuario una opcin del tipo verdadero/falso o s/no. El control de la casilla de verificacin puede mostrar una imagen o texto o ambos. Se utiliza la propiedad Checked para obtener o establecer el valor de un control de casilla de verificacin de dos estados.
Hide Refresh
Oculta el control al usuario. Obliga al control a invalidar su rea cliente y, acto seguido, obliga a que vuelva a dibujarse el control y sus controles secundarios.
67
Programacin Digital I
Show
68
Programacin Digital I
Public Class Form5 Dim sueldo, bon, descuento, neto As Single Private Sub Opcion1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Form2.Show() End Sub Private Sub Opcion2ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Form4.Show() End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then sueldo = 1500 TextBox1.Text = sueldo Else sueldo = 0 TextBox1.Text = sueldo End If
69
Programacin Digital I
End Sub
70
Programacin Digital I
Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then bon = 500 TextBox2.Text = bon Else bon = 0 TextBox2.Text = bon End If End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = True Then descuento = 345 TextBox3.Text = descuento Else descuento = 0 TextBox3.Text = descuento
End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click neto = sueldo + bon - descuento TextBox4.Text = neto.ToString("##.00") End Sub
71
Programacin Digital I
Private Sub Form5_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load sueldo = 0 bon = 0 descuento = 0 neto = 0 End Sub End Class
72
Programacin Digital I
Control Radiobutton
Ofrece opciones que el usuario puede activar o desactivar, pero solamente una opcin si existe un grupo de RadioButton. El control RadioButton puede mostrar texto, Imagen o ambos. Cuando el usuario selecciona un botn de opcin en un grupo, los dems se desactivan automticamente. Se utiliza la propiedad Checked para obtener o establecer el estado de un RadioButton. Ofrece opciones que el usuario puede activar o desactivar, pero solamente una opcin si existe un grupo de RadioButton. El control RadioButton puede mostrar texto, Imagen o ambos. Cuando el usuario selecciona un botn de opcin en un grupo, los dems se desactivan automticamente. Se utiliza la propiedad Checked para obtener o establecer el estado de un RadioButton.
PROPIEDADES
BackColor CheckAlign
Obtiene o establece el color de fondo del control. Obtiene o establece la ubicacin de la parte de casilla de verificacin del control de botn de opcin. Obtiene o establece un valor que indica si el control est activado. Obtiene o establece un valor que indica si el control puede responder a la interaccin del usuario. Obtiene o establece la fuente del texto que muestra el control. Obtiene o establece el color de primer plano del control. Obtiene o establece el nombre del control. Obtiene o establece el texto asociado al control. Obtiene o establece un valor que indica si se muestra el control.
Checked
Enabled
73
Programacin Digital I
Establece el foco de entrada en el control. Oculta el control al usuario. Obliga al control a invalidar su rea cliente y, acto seguido, obliga a que vuelva a dibujarse el control y sus controles secundarios. Sobrecargado. Activa un control. Muestra el control al usuario. Hace que el control vuelva a dibujar las regiones no vlidas en su rea de cliente.
MTODOS
Public Class Form6 Dim SUELDO As Single Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Enabled = True Then SUELDO = 960 TextBox1.Text = SUELDO End If
74
Programacin Digital I
End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged If RadioButton2.Enabled = True Then SUELDO = 2500 TextBox1.Text = SUELDO End If End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged If RadioButton3.Enabled = True Then SUELDO = 3500 TextBox1.Text = SUELDO End If End Sub End Class
75
Programacin Digital I
Public Class Form9 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call visibilidad() TabPage1.BackColor = Color.BlanchedAlmond Label6.Text = "DATOS REGISTRADOS" Label7.Text = TextBox1.Text Label8.Text = TextBox2.Text Label9.Text = TextBox3.Text Label10.Text = TextBox4.Text Label11.Text = ComboBox1.Text End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub
76
Programacin Digital I
Private Sub Form9_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label6.Visible = False Label7.Visible = False Label8.Visible = False Label9.Visible = False Label10.Visible = False Label11.Visible = False ComboBox1.Items.Add("DIGITADOR") ComboBox1.Items.Add("PROGRAMADOR") ComboBox1.Items.Add("ANALISTA") TabPage1.Text = "DATOS PERSONALISIMOS" TabPage2.Text = "ESTUDIOS" TabPage3.Text = "RESUMEN" TabPage1.BackColor = Color.BlanchedAlmond TabPage2.BackColor = Color.White TabPage3.BackColor = Color.Chartreuse End Sub Sub visibilidad() Label6.Visible = True Label7.Visible = True Label8.Visible = True Label9.Visible = True Label10.Visible = True Label11.Visible = True End Sub
77
Programacin Digital I
LABORATORIOS
LABORATORIO - 001
Se desea elaborar una aplicacin que me permita mostrar el Neto a Pagar en el sueldo de un empleado para ello debemos tomar en cuenta lo siguiente: Si hacemos click en el Check de Bon Mov, se debera tomar en cuenta: El basico va a Depender del Cargo: Cargo Analista Programador Operador Digitador Secretaria Bon Mov es el 2% del Basico Si es Bon Ref es el 1% del Basico El Sueldo Bruto es la Suma del Basico mas las Bonificaciones esta se mostrara en el Label14. El Adelanto es el 3% del Basico, la AFP es el 13% del Basico, Otros es el 7% del Basico, por lo tanto el total de Descuentos es : Adelanto + AFP + Otros esto se mostrara en el Label15. El Neto es Bruto TotalDescuentos. Basico 2800 2000 1600 1250 1000
78
Programacin Digital I
LABORATORIO - 002
Elaborar una aplicacin que permita ingresar el Nombre, Edad y Estado Civil asi como su Turno, cuando presionemos Agregar este se visualizara en las Listas respectivas. Luego si deseamos eliminar a uno de los elementos de la lista, debemos seleccionarla y luego hacer clic en el boton Quitar. Del mismo modo cuando se haga clic en Limpiar todos los controles se borraran.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAgregar.Click Dim Nombre, Casado, Turno As String Dim Edad As Byte If TxtNombre.Text.Trim = "" Then MessageBox.Show("Ingrese el Nombre", "Por Favor") TxtNombre.Focus() Exit Sub End If If RbMaana.Checked = False And RbTarde.Checked = False And RbNoche.Checked = False Then MessageBox.Show("Seleccione el Turno", "Por Favor") Exit Sub End If 'Cambia el nombre a maysculas Nombre = TxtNombre.Text.ToUpper() Edad = UpEdad3.Value If CkCasado.Checked = True Then Casado = "Si" Else Casado = "No"
79
Programacin Digital I
End If If RbMaana.Checked = True Then Turno = "Maana" ElseIf RbTarde.Checked = True Then Turno = "Tarde" Else Turno = "Noche" End If LbNombre.Items.Add(Nombre) LbEdad.Items.Add(Edad.ToString) LbTurno.Items.Add(Turno) LbCasado.Items.Add(Casado) TxtNombre.Clear() UpEdad3.Value = 18 CkCasado.Checked = False RbMaana.Checked = False RbTarde.Checked = False RbNoche.Checked = False TxtNombre.Focus() End Sub Private Sub LbNombre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LbNombre.SelectedIndexChanged Seleccionar(LbNombre.SelectedIndex) End Sub Private Sub LbEdad_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LbEdad.SelectedIndexChanged Seleccionar(LbEdad.SelectedIndex) End Sub Private Sub LbTurno_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LbTurno.SelectedIndexChanged Seleccionar(LbTurno.SelectedIndex) End Sub Private Sub LbCasado_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LbCasado.SelectedIndexChanged Seleccionar(LbCasado.SelectedIndex) End Sub Private Sub BtnQuitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnQuitar.Click If LbNombre.SelectedIndex < 0 Then MessageBox.Show("Seleccione un elemento", "Para Quitar", MessageBoxButtons.OK, MessageBoxIcon.Information) Else Quitar(LbNombre.SelectedIndex)
80
Programacin Digital I
End If End Sub Private Sub BtnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLimpiar.Click LbNombre.Items.Clear() LbTurno.Items.Clear() LbEdad.Items.Clear() LbCasado.Items.Clear() End Sub Sub Seleccionar(ByVal Elemento As Integer) LbNombre.SelectedIndex = Elemento LbTurno.SelectedIndex = Elemento LbEdad.SelectedIndex = Elemento LbCasado.SelectedIndex = Elemento End Sub Sub Quitar(ByVal Elemento As Integer) LbNombre.Items.RemoveAt(Elemento) LbTurno.Items.RemoveAt(Elemento) LbEdad.Items.RemoveAt(Elemento) LbCasado.Items.RemoveAt(Elemento) End Sub End Class
81
Programacin Digital I
LABORATORIO - 003
Elaborar una aplicacin que permita ingresar :
Nombre de una Persona Seleccionar el Sexo de una persona Seleccionar el Estado Civil Ingresar la Edad.
Cuando se ingresa la Edad y se presiona ENTER, se mostrara la informacion ingresada y seleccionada en las listas respectivamente, y al mismo tiempo se debera mostrar Los Nros que solicitan en la parte inferior.
82
Programacin Digital I
LABORATORIO - 004
Elaborar una aplicacin que permita ingresar : Nombre de una Persona Seleccionar el Turno Seleccionar el Ciclo Seleccionar la Especialidad Seleccionar los datos Adicionales.
Se debera tomar en cuenta las siguientes alternativas : ESPECIALIDADES Contabilidad Computacion 290 290 310 320 260 270 280 280 295 295 340 340
Ciclo I , II y III IV, V ,VI I , II y III IV, V ,VI I , II y III IV, V ,VI
Los precios se mostrara en la Caja de Texto Mensualidad, asi mismo cuando seleccionamos un dato Adicional esta se acumulara en la caja de texto Pago Adicional. El Descuento sera de la siguiente manera : Turno Maana Tarde Noche Descuento 2% de la Suma (Mensualidad + Adicional) 3% de la Suma (Mensualidad + Adicional) 4% de la Suma (Mensualidad + Adicional)
83
Programacin Digital I
84
Programacin Digital I
PROCESOS REPETITIVOS
Los procesos repetitivos o llamados bucles, se utilizan para repetir el o los cdigos, un numero determinado de veces, para esto usaremos el For, que nos permitir repetir un numero determinado de veces el cdigo. For / Next Con este tipo de bucle podemos repetir un cdigo un nmero determinado de veces. Sintaxis: For <variable numrica> = <valor inicial> To <valor final> [Step <incremento>] 'contenido del bucle, lo que se va a repetir Next Primera Forma: Una de las formas mas utilizadas. For i = 1 To 10 'contar de 1 hasta 10 'la variable i tomar los valores 1, 2, 3, etc. Next Segunda Forma: Esta forma se utiliza para decirle como va a incrementar, ya sea como el ejemplo de 2 en 2. For i = 1 To 100 Step 2 'contar desde 1 hasta 100 (realmente 99) de 2 en 2 'la variable i tomar los valores 1, 3, 5, etc. Next Tercera Forma: Cuando queremos que un bucle sea en decreciente solo bastar darle un valor negativo, al nmero, como en el ejemplo, queremos que en vez que avance del 1 al 10 queremos que este vaya del 10 al 1. For i = 10 To 1 Step -1 'contar desde 10 hasta 1 'la variable i tomar los valores 10, 9, 8, etc. Next
85
Programacin Digital I
For Each Este bucle repetir o iterar por cada uno de los elementos contenidos en una coleccin. Sintaxis: For Each <variable> In <coleccin del tipo de la variable> 'Lo que se har mientras se repita el bucle Next Ejemplo: Dim s As String For Each s In "Hola Mundo" Console.WriteLine(s) Next Console.ReadLine() Este bucle recorre cada uno de los caracteres de una cadena, en este caso recorrer cada carcter de la cadena s (Hola Mundo)., comenzando por la H y de ah la o y as hasta la ultima o de la palabra Mundo. Las estructuras repetitivas o llamados tambin bucles, se utilizan para repetir el o los cdigos, hasta que la expresin evaluada de un valor de Falso. While / End While Se repete mientras se cumpla la expresin lgica que se indicar despus de While Sintaxis: While <expresin> Lo que haya que hacer mientras se cumpla la expresin End While Ejemplo: While i < 10 Console.WriteLine(i) i=i+1 End While
86
Programacin Digital I
Este cdigo escribira el valor de i hasta que el valor de i tome el valor de 10 Do / Loop Este tipo de bucle es muy parecido al anterior. Si se utiliza slo con esas dos instrucciones, este tipo de bucle no acabar nunca y repetir todo lo que haya entre Do y Loop. Pero este tipo de bucle se puede usar con dos instrucciones que nos permitirn evaluar expresiones lgicas: While y Until Pero no debemos confundir este While con el While/End While que acabamos de ver anteriormente. La ventaja de usar While o Until con los bucles Do/Loop es que estas dos instrucciones podemos usarlas tanto junto a Do como junto a Loop, la diferencia est en que si los usamos con Do, la evaluacin se har antes de empezar el bucle, mientras que si se usan con Loop, la evaluacin se har despus de que el bucle se repita al menos una vez. Sintaxis: Primera Forma: Este bucle evala al principio, mejor dicho realizara el cdigo o las instrucciones un numero que digamos que sea n veces. Do While <expresin> Instruccin Loop Segunda Forma: Este bucle evala al final, mejor dicho realizara el cdigo o las instrucciones n veces. Do Instruccin Loop While <expresin> Tercera Forma: Este bucle evala al principio, a diferencia que el primero realizara el cdigo siempre y cuando la expresin sea falsa, mejor dicho realizara el cdigo o las instrucciones n veces. Do Until <expresin> Instruccin Loop Cuarta Forma: Este bucle evalua al final, a diferencia que el segundo realizara el cdigo siempre y cuando la expresin sea falsa, mejor dicho realizara el cdigo o las instrucciones n 1 veces Do Instruccin
87
Programacin Digital I
Loop Until <expresin>
Public Class Form10 Dim I As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click I=0 While (I <= 20) I=I+1 ListBox1.Items.Add(I) End While End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click I=0
88
Programacin Digital I
Do I=I+1 ListBox2.Items.Add(I) Loop While (I <= 20) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click I=0 Do While (I < 20) I=I+1 ListBox3.Items.Add(I) Loop End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click For I = 1 To 20 ListBox4.Items.Add(I) Next End Sub
89
Programacin Digital I
ESTRUCTURA S
Es una combinacin de tipos de datos 1. Se utilizan para crear tipos de valores definidos por el usuario 2. Sus miem bros pueden ser variables, propiedades, mtodos o eventos Ejemplo de estructura definida por el usuario:
Public Structure Empleado Public Nombre As String Public Apellido As String Public FechaContrato As Date Public Cargo As String Private Salario As Decimal End Structure
Crear una estructura para almacenar informacin sobre coches Declare una estructura pblica con el nombre CarInfo en la seccin de declaraciones de Form1. Incluya los miembros que se muestran en la siguiente tabla. Public Structure CarInfo Public Marca As String Public Modelo As String Public PrecioCompra As Single Public FechaCompra As Date Declare una variable de tipo CarInfo y asgnele valores 1. En el evento Button1_Click, declarar una variable con el nombre miCoche de tipo de estructura CarInfo. El cdigo debera ser parecido a: Dim miCoche As CarInfo 2. Asignar valores a los miembros de la estructura. Podemos utilizar los siguientes valores o escoger otros. miCoche.Marca = "Jeep" miCoche.Modelo = "Cherokee" miCoche.PrecioCompra = 27999 miCoche.FechaCompra = #06/23/2000#
90
Programacin Digital I
Visualizar la informacin del coche en los cuadros de texto Establezca las propiedades TextBox para visualizar la estructura CarInfo estructura en cuadros de texto en el formulario. El cdigo debera ser parecido a: TextBox1.Text = miCoche.Marca TextBox2.Text = miCoche.Modelo TextBox3.Text = miCoche.PrecioCompra TextBox4.Text = miCoche.FechaCompra
Ejecutar y probar la aplicacin Ejecutar la aplicacin y hacer clic en Display Car Structure. El formulario que se ejecute debera tener un aspecto parecido a ste
91
Programacin Digital I
LABORATORIOS
LABORATORIO - 001
Elaborar una aplicacin que permita ingresar : Nombre de una Persona Seleccionar una Zona (Norte y Sur) Al ingresar El Monto de la Venta y se presiona ENTER se calcula : La Movilidad sera : o o Norte 20 soles Sur 15 soles 3% del Monto 2% del Monto
La Comision sera de : o o
Al mismo tiempo se ingresara automaticamente la informacion que se solicita en las listas. Cuando se presione el Boton RESUMEN se mostrara los Totales que se solicitan.
92
Programacin Digital I
LABORATORIO - 002
Crear una aplicacin que permita agregar los datos de sus amigos en las listas que se muestran en el diseo, para ello debera tomar en cta lo siguiente: El codigo debera estar creado de la siguiente manera: (Primer carcter del Apellido Paterno + Primer carcter del Apellido Materno + Ao + Mes del Nacimineto). Se debe agregar en la Lista Apellido Los Apellidos y Nombres. Asi como en la Lista signo debe mostrar el signo de la Persona de acuerdo a su fecha de nacimiento.
93
Programacin Digital I
LABORATORIO - 003
Crear una aplicacin que me permita adicionar a un grupo de datos que son ingresados desde ciertos controles, estos controles estan distribuidos de la siguiente manera :
94
Programacin Digital I
ARREGLOS TIPO LISTA ARREGLOS TIPO TABLA ARREGLOS CON PARAMETROS ARREGLOS DE CONTROLES
PRCTICA DE REFORZAMIENTO
95
Programacin Digital I
PROCEDIMIENTOS
Son pequeos programas que son invocados desde cualquier parte de un programa Se usa de la siguiente forma: Sub nombre_procedimiento(Byval argumento1 as tipo1,Byval argumento2 as tipo2.) Sentencia1 Sentencia2 End sub Se les llama de la siguiente forma: Call nombre_procedimiento(argumento1,argumento2..)
FUNCIONES
Son pequeos programas que son invocados desde cualquier parte de un programa pero que devuelven un valor Se usa de la siguiente forma: Sub nombre_funcion(Byval argumento1 as tipo1,Byval argumento2 as tipo2.) Sentencia1 Sentencia2 End sub Se les llama de la siguiente forma: variable=nombrefuncion(arg1,arg2,arg3)
96
Programacin Digital I
Public Class Form12 Dim n1, n2, n3 As Integer, obtenerprom, prome As Single Function promedio(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) As Single promedio = (x + y + z) / 3 Return promedio End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click n1 = Val(TextBox1.Text) n2 = Val(TextBox2.Text) n3 = Val(TextBox3.Text) 'con funciones obtenerprom = promedio(n1, n2, n3) TextBox4.Text = obtenerprom.ToString("##.00") 'llamar a procedimientos Call mensaje() End Sub Sub mensaje() If obtenerprom >= 11 Then MsgBox("ESTAS APROBADO") Else MsgBox("ESTAS DESAPROBADO") End If End Sub Sub CALCULARPROM(ByVal m As Integer, ByVal n As Integer, ByVal p As Integer) prome = (m + n + p) / 3 TextBox4.Text = prome.ToString("##.00") End Sub End Class Public Class Form13 Dim n1, n2, n3 As Integer, prome As Single, cadena As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click n1 = Val(TextBox1.Text) n2 = Val(TextBox2.Text)
97
Programacin Digital I
n3 = Val(TextBox3.Text) Call CALCULARPROM(n1, n2, n3) End Sub Sub CALCULARPROM(ByVal m As Integer, ByVal n As Integer, ByVal p As Integer) prome = (m + n + p) / 3 TextBox4.Text = prome.ToString("##.00") If prome >= 11 Then cadena = "ESTAS APROBADO" Else cadena = "ESTAS DESAPROBADO" End If Call MENSAJE(cadena) End Sub Sub MENSAJE(ByVal TEXTO As String) MsgBox(TEXTO) End Sub End Class
98
Programacin Digital I
ARREGLOS
Uno de los problemas mas comunes en los diversos sistemas de informacion es el tratamiento o procesamiento de una gran volumen de datos o de informacin. Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares porque solo permiten almacenar o procesar un dato a la vez. Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el metodo tradicional se ocuparan 30 variables y solo es nombre y edad de 15 personas, agreguen mas datos y mas personas y ya es tiempo de empezar a analizar otro tipo de variables. Es decir, en problemas que exigen manejar mucha informacin o datos a la vez, variables escalares no son suficientes ya que su principal problema es que solo permiten almacenar y procesar un dato a la vez. Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la vez. Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez. Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura, operacion, despliegue ) usando el nombre del arreglo respectivo y un subindice indicando la posicion relativa del elemento con respecto a los demas elementos del arreglo, solo recordar que en VISUAL BASIC 2005 la primera posicion, elemento o renglon es el 0 (cero), ej. NOMBRES Juan >nombres(0) Pedro nombres(1)
Rosa > nombres(2) Jose > nombres(3) Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc. En programacion tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos: a) LISTAS DE EDADES
18 34 22
B) TABLAS DE SUCURSALES
15
99
Programacin Digital I
SUC A 10 20 30 SUC B 50 60 70 40 80
Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de columnas que contienen.
100
Programacin Digital I
GetLength Gets the number of elements in the specified dimension of the Array
101
Programacin Digital I
GetLowerBound Gets the lower bound of the specified dimension in the Array. GetType (inherited from Object) Gets the Type of the current instance. GetUpperBound Gets the upper bound of the specified dimension in the Array. GetValue Overloaded. Gets the value of the specified element in the current Array. IndexOf Overloaded. Returns the index of the first occurrence of a value in a one-dimensional Array or in a portion of the Array. Initialize Initializes every element of the value-type Array by calling the default constructor of the value type. LastIndexOf Overloaded. Returns the index of the last occurrence of a value in a one-dimensional Array or in a portion of the Array. Reverse Overloaded. Reverses the order of the elements in a one-dimensional Array or in a portion of the Array. SetValue Overloaded. Sets the specified element in the current Array to the specified value. Sort Overloaded. Sorts the elements in one-dimensional Array objects. ToString (inherited from Object) Returns a String that represents the current Object. FUENTE: Ayuda Microsoft Net notas: En visual Basic 2005 recordar que la primera posicion o renglon en una lista es la posicion o renglon 0 (cero). El dato capturado, proviene de momento de un componente escalar textbox y/o se usan tantos de estos controles como elementos tenga el arreglo o mas facil aun se debera controlar la captura de elementos usando algun algoritmo sencillo de validacion como lo muestra el programa ejemplo.
Public Class Form1 Shared EDADARR(4) As Integer ' DECLARANDO RENG COMO GLOBAL Dim RENG As Integer Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated EDAD.Focus()
102
Programacin Digital I
End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load EDAD.Focus() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ' LIMPIANDO LISTAS LISTA1.Items.Clear() LISTA2.Items.Clear() ' CARGANDO LISTA ORIGINAL CON EDAD CAPTURADA For RENG = 0 To 4 LISTA1.Items.Add(EDADARR(RENG)) Next ' A MESES Y Y DESPLEGANDO For RENG = 0 To 4 EDADARR(RENG) = EDADARR(RENG) * 12 LISTA2.Items.Add(EDADARR(RENG)) Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' EN ESTE MODULO SOLO SE TRABAJA CON EL ARREGLO ' EN MEMORIA EDAD.Focus() LISTA1.Items.Add(EDAD.Text) Label2.Text = RENG
103
Programacin Digital I
EDADARR(RENG) = Val(EDAD.Text) RENG = RENG + 1 EDAD.Text = "" End If If RENG >= 5 Then EDAD.Visible = False RENG = 0 End If End Sub End Class
Notas:
Observar que en el programa el arreglo edad y la variable rengln se declararon de tipo GLOBAL porque los dos mtodos el de captura y el de operacin-despliegue, las estn compartiendo. Adems observar que se declararon antes de los eventos clickButton, para crearlos como objetos globales. Para el caso de operaciones y comparaciones con todos los elementos de la lista a la vez se deber usar un ciclo for con una variable entera llamada rengln, misma que tambin se usa como indice de la lista. Recordar que todos los datos internos de la lista estarn almacenados en la memoria ram del computador, para despliegues se usa un componente visual que permite manipular un conjunto de datos a la vez, el ListBox con sus mtodos apropiados pero se tiene que usar un ciclo for para ir anadiendo o agregando elemento por elemento como se observa en el problema ejemplo que se ha venido desarrollando, en este caso se quiere desplegar las cinco edades convertidas a meses. La ultima instruccin y muy importante es poner en cero las variables de control de ciclos o ndice de arreglos, esto es porque el servidor mantiene el programa ejecutndose continuamente en memoria y si se vuelve a pedir la ejecucin del programa, en cuento se intente capturar un nuevo dato va a marcar el error arreglo fuera delimite o arrayofbound, estan avisados.
Para inicializar una lista se debe usar el siguiente formato: shared dim nomlista() as tipodato={lista de valores separados por comas} ej; shared dim edad() as integer = {15,16,17,18} shared dim sueldo() as double = {40.85, 65.30, 33.33} shared dim ciudad() as string = {tecate, tijuana, mexicali, rosarito, ensenada}
TAREAS PROGRAMACION VISUAL BASIC 2005 1.- Capturar y desplegar 5 precios de productos cualesquiera usando dos panel uno para capturar y uno para desplegar
104
Programacin Digital I
2.- Capturar 4 sueldos en un panel desplegarlos aumentados en un 25% en otro panel 3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo nombre, precio y cantidad en sus 3 listas respectivas, despus calcular una cuarta lista con el gasto total por cada producto desplegarlo todo en un segundo panel e incluir tambin el gran total 4.- Capturar en una lista solamente 6 nmeros mltiplos de 5, se debe de estar capture y capture numeros hasta que se completen los 6 mltiplos de 5
105
Programacin Digital I
Public Class Form2 ' DECLARANDO LISTA GLOBAL ' RECORDAR QUE SON 3 RENG Y 4 COLUMNAS Shared CALIFICACION(2, 3) As Integer ' DECLARANDO RENG Y COL COMO GLOBAL Dim R, C As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' EN ESTE MODULO SOLO SE TRABAJA CON EL ARREGLO ' EN MEMORIA CALIFICACION(R, C) = CALIF.Text C=C+1 CALIF.Text = "" If C = 4 Then R=R+1 C=0 End If If R = 3 Then CALIF.Visible = False End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim TEMP As String ' PROCESANDO Y REGALANDO 5 PUNTOS A TODOS For R = 0 To 2
106
Programacin Digital I
For C = 0 To 3 CALIFICACION(R, C) = CALIFICACION(R, C) + 5 Next C Next R ' desplegando For R = 0 To 2 TEMP = CALIFICACION(R, 0) & " " & CALIFICACION(R, 1) & " " & CALIFICACION(R, 2) & " " & CALIFICACION(R, 3) LISTA1.Items.Add(TEMP) ' limpiando temporal antes de otro renglon TEMP = " " Next End Sub
End Class
Notas: Observar el formato de declaracion y como se controlan los indices de captura r, c Para procesar los elementos se usan dos ciclos for y el formato tabla (reng,col). En este problema se usa el objeto LISTBOX para presentar el resultado mas adelante se usara un objeto mas apropiado. Corrida: Para inicializar tablas, se usa el siguiente formato: Dim nomarreglo() As tipodato = {lista valores} Dim ciudades() as String = {tijuana', tecate, ensenada}
107
Programacin Digital I
Recordar que no se pueden inicializar arreglos de tamano fijo, para inicializar tablas aqui esta el ejemplo: Dim alfa(,) As Integer = {{1, 2}, {3, 4} {5,6} } TAREAS PROGRAMACION VISUAL BASIC 2005 1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA (2 prog uno capturado y otro inicializado ). 2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL ANO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL(2 progs uno capturado y otro inicializado). 3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y PROMEDIOS GANADAS POR LOS VENDEDORES, ASI COMO LISTAS DE COMISIONES TOTALES Y PROMEDIOS POR TIPO DE LINEA BLANCA ANALIZAR ESTE CODIGO Y ESCRIBA LOS RESULTADOS QUE SE OBTIENEN
' PARA TOTALES Y PROMEDIOS POR RENGLON FOR R = 0 TO 3 FOR C = 0 TO 2 TOTRENG(R) = TOTRENG(R) + TABLA(R,C) NEXT C PROMRENG(R) = TOTRENG(R)/3 NEXT R 'PARA TOTALES Y PROMEDIOS POR COLUMNA FOR C = 0 TO 2 FOR R = 0 TO 3 TOTCOL(C)=TOTCOL(C) + TABLA(R,C) NEXT R PROMCOL(C) = TOTCOL(C) / 4 NEXT C
108
Programacin Digital I
ARREGLOS CON LISTBOX ListBox uno de los nuevos Controls, es un componente DINAMICO(es decir no tiene tamano definido) que permite procesar visualmente un conjunto de elementos de tipo string. La propiedad Rows que se usa al crearlo, es solo para indicarle cuantos renglones desplegara en pantalla, es decir si se usa rows=5, en listbox se podra capturar todos los elementos o datos que se quiera pero solo desplegara los ultimos cinco elementos. Sin embargo existen ciertas propiedades del listbox que permiten conocer cuantos elementos estan cargados en el listbox. Otra importante aspecto a recordar cuando se procese o programe, es que el primer indice de la lista, es el indice numero 0(cero). Este componente, contiene muchas propiedades y metodos que facilitan el trabajo con datos la mas importante es su propiedad ITEMS, que a su vez tiene: PROPIEDAD ACCION O SIGNIFICADO Items.Add(dato): Inserta un elemento al final del listbox. Items.Clear(): Elimina todos los elementos de la lista. Items.Count(): Regresa la cantidad de elementos en lista. Items.Sorted = true; Ordena los elementos de la lista usada solo al tiempo de diseno. Items.Contains(dato): Regresa true o false, si el dato se encuentra o no se encuentra en la lista. Items.IndexOf(dato): Regresa el indice del objeto dentro del listbox. Items.Insert(indice,dato): Inser ta el dato en la posicion indicada. Items.Remove(dato): Elimina el dato de el listbox. Items.RemoveAt(indice): Elimina el dato que esta en la posicion indicada. Items[indice]: get or set el dato en la posicion indicada (ver primera nota abajo). Notas: GET y SET son propiedades asociadas a todos los objetos o controles y sus propiedades en microsoft net, por ejemplo para un textbox, si en un programa se dice alfa = text5.text; se esta usando get, si se dice text5.text=500; se esta usando set. Otro ejemplo alfa=listbox2.Items(2); se esta usando (get) listbox2.Items(4)=mama; se esta usando (set). OBSERVAR QUE NO SE USA PROPIEDAD TEXT. Esto de get-set se puede usar para cualquier propiedad, por ejemplo alfa = listbox8.background; se esta usando get, pero si se codifica listbox8.background=amarillol; se esta usando set, como se observa es importante entender y aplicar este GET-SET en todos los programas. Capturas: Solo se ocupara un TextBox, el evento click del button y el metodo Add del ListBox. Proceso: Se ocupara un ciclo for y el metodo count de ListBox. Despliegues: No se ocupa porque todos los cambios son visibles. Pero si se quiere pasar de un ListBox a otro ListBox, entonces ciclo for, count, etc. ejemplo prog
109
Programacin Digital I
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click LISTA.Items.Add(DATO.Text) DATO.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim r, cant, meses As Integer cant = LISTA.Items.Count For r = 0 To cant - 1 meses = LISTA.Items(r) meses = meses * 12 LISTA.Items(r) = meses Next r End Sub Recordar que el primer indice en un ListBox es el cero por eso el ciclo va desde el cero hasta la cantidad de elementos menos uno. Corrida:
TAREAS PROGRAMACION VISUAL BASIC 2005 1.- CAPTURAR EN UNA LISTA LOS SUELDOS DE 6 EMPLEADOS Y DESPLEGARLOS EN UNA SEGUNDA LISTA AUMENTADOS EN UN 30% 2.- CAPTURAR EN UNA LISTA LOS PESOS EN KILOGRAMOS DE 6 PERSONAS DESPLEGARLOS EN UNA SEGUNDA LISTA CONVERTIDOS A LIBRAS Y ADEMAS SOLO LOS MAYORES DE 100 LIBRAS.
110
Programacin Digital I
3.- CAPTURAR EN SUS 4 LISTAS RESPECTIVAS MATRICULA, NOMBRE Y DOS CALIFICACIONES DE 5 ALUMNOS, DESPUES CALCULAR UNA LISTA DE PROMEDIOS DE CALIFICACIONES. 4.- CAPTURAR EN SUS LISTAS RESPECTIVAS NUMEMPLEADO, NOMEMPLEADO, DIAS TRABAJADOS Y SUELDO DIARIO DE 5 EMPLEADOS, DESPLEGAR EN OTRA PANTALLA O PANEL LA NOMINA PERO SOLO DE AQUELLOS EMPLEADOS QUE GANAN MAS DE $300.00 A LA SEMANA
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' creando y cargando una lista local con 5 elementos Dim lista1() As Integer = {1, 2, 3, 4, 5} ' pasandola a un procedimiento ' observar que se pasa sin parentesis Call PROC1(lista1) ' desplegando lista original y observar el resultado Dim r As Integer
111
Programacin Digital I
For r = 0 To 4 LISTA.Items.Add(lista1(r)) Next r End Sub Sub PROC1(ByVal vector) ' recibiendola con otro nombre y ' sumando a vector + 100 Dim r As Integer For r = 0 To 4 vector(r) = vector(r) + 100 Next r End Sub ARRAYS DE CONTROLES
Visual Basic cuenta con el concepto de array de controles, en elque varios controles comparten el mismo conjunto de procedimientos de suceso, incluso aunque cada uno de los elementos individuales en el array pueda tener asignados diferentes valores para sus propiedades. Slo podr crear un array de control en tiempo de diseo y, como mnimo, al menos un control debe pertenecer al array. Podr crear un array de controles utilizando cualquiera de los siguientes mtodos: 1. 2. Crear un control y, posteriormente, asihnar un valor numrico (no negativo) a su propiedad Index; de esta forma habr creado un array de control con un nico elemento. Crear dos controles de la misma clase y asignarles el mismo valor a su propiedad Name. Visual Basic muestra un cuadro de dilogo avisndole que ya existeun control con el mismo nombre y le preguntara sidesea crear un array de controles. 3. Seleccionar un control del formulario, pulsar Crtl + C para copiarlo en el portapapales y, posteriormente, pulsar Ctrl + V para pegar una nueva isntancia del control con la misma propiedad Name que el objeto inicial. Visual Basic muestra el mensaje de aviso mencionando en el punto anterior. Los array de controles son una de las caracteristicas ms interesantesdel entorno Visual Basic y aade una gran flexibilidad a sus programas:
Parametro
Los controles que pertenecen al mismo array comparten el mismo conjunto de procedimientos de suceso; de esta forma podr reducir drasticamente la cantidad de cdigo que tendra que escribir en respuesta a una accin del usuario.
Podr aadir dinamicamente nuevos elementos al array de controles en tiempo de ejecucin; en otras palabras, podr crear nuevos controles que no existan en tiempo de diseo.
112
Programacin Digital I
Los elementos de los array de controles consumen pocos recursos en comparacin con los controles normales y producen archivos ejecutables de menor tamao. Adems , los formularios de Visual Basic pueden almacenar hasta 256 nombres de controles distintos, pero un array de controles cuenta como uno solo de estos nombres. En otras palabras , los arrays de controles le permiten superar con facilidad esa limitacin
Dim T(7) As TextBox Dim Lb(7) As Label Dim Titu() As String = {"Nombre:", "Domicilio:", "Localidad:", "Partido:", "Telfono:", "Pas:", "Cdigo Postal:"}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim I As Integer, Y As Integer For i = 0 To 6
113
Programacin Digital I
For i = 0 To 6 Me.Controls.Add(T(i)) Me.Controls.Add(Lb(I)) Lb(I).Top = Y + 3 T(I).Top = Y Y = Y + 30 T(I).Text = Rnd() * 200 T(I).Left = 80 Next End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click T(0).text = "hola"
114
Programacin Digital I
LABORATORIOS
Elaborar una aplicacion que me permita llamar a dos cuadros de dialogo (Fuente y Color) los cuales al ser activado van alterar el contenido de la caja de texto donde se ingreso la informacion.
Public Class Form1 Private Sub BtnFuente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFuente.Click 'Para establecer tambien el color de la letra FontD.ShowColor = True 'Activa el cuadro de dilogo FontD.ShowDialog() 'Asigna al texto escrito el Tipo,Tamao y estilo de letra seleccionado TxtTexto.Font = FontD.Font 'Asigna al texto escrito el color de letra seleccionado TxtTexto.ForeColor = FontD.Color End Sub Private Sub BtnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnColor.Click 'Activa el Cuadro de Dilogo ColorD.ShowDialog() 'Asigna el color seleccionado al fondo del texto TxtTexto.BackColor = ColorD.Color End Sub Private Sub TxtTexto_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtTexto.TextChanged BtnFuente.Enabled = TxtTexto.Text.Trim <> String.Empty BtnColor.Enabled = TxtTexto.Text.Trim <> String.Empty End Sub
115
Programacin Digital I
End Class
116
Programacin Digital I
SESIN VI
CONTROL DE EXCEPCIONES Y MENUES
117
Programacin Digital I
CONTROL DE EXCEPCIONES
Una excepcin es un error inesperado que puede ocurrir durante la ejecucin de un programa ,lo que genera que la ejecucin se detenga o funciones en forma incorrecta. El control de excepciones en toda aplicacion es muy importante ,porque permite brindar informacin adecuada al usuario de la aplicacin sobre el problema detectatdo,sin necesidad que s einterrumpa su ejecucin y permitiendo que se corrija el problema. En Visual Basic .NET existe la clase Exception que permite controlar las excepciones dentro de un aplicacin. Para empezar a controlar las excepciones debe definir una variable con esta clase .Por ejemplo: Dim Ex As Exception La variable que se derfine con la clase Exception tendr toda la informacin de la excepcin o error que se produce.Por ejemplo:
Cuando ocurre una excepcin dentro de un progrma y no se controla la ejecucin del programa, se deetiene y se visualiza una ventana similar a la siguiente,dependeiendo del tipo de excepcin: Si hace clic en Ver detallae, se visualiza el detalle de la excepcin:
Try Catch
Esta instruccin permite controlar las excepciones o errores inesperados que pueden ocurrir en Visula Basic .NET. Su sintaxis es la siguiente: Try Bloque de Instrucciones N 01 Catch Variable As Exception Bloque de Instrucciones N 02 Finally Bloque de Instrucciones N 03 End Try
118
Programacin Digital I
Bloque de Instrucciones N 01 Es el bloque de instrucciones que deseamos controlar,es decir , el bloque de instrucciones de nuestra aplicacin donde puede ocurrir la excepcin o error.Por ejemplo, en este bloque de instrucciones puede ir el metodo Open,porque puede ocurrir un error al abrir la conexin a SQL Server,porque no existe elservidor,el nombre del usuario o su contraea son incorrectos,hemos asignado un valor incorrecto en la cadena de conexin,etc. Bloque de Instrucciones N 02 Es el bloque de instrucciones que se debe ejecutar cuando ocurra una excepcin durante la ejecucin de la aplicacin. En este bloque de instrucciones debemos reconocer la excepcion o el error producido para enviar un mensaje adecuado al usuario y evitar que nuestra aplicacin deje de funcionar. En la parte inicial de este bloque de instrucciones y depues de la palbra Catch, se debe definir una avriable de tipo Excepcin, la cual almacenara en sus propiedades la informacin de la excepcin producida.La variable tambien se puede definir al inicio de programa. Bloque de Instrucciones N 03 Este bloque de instrucciones es opcional y si se escriben, se ejecutan siempre es decir.si se produce o no la excepcin. Si en una parte del bloque Try Catch desea salir de l,puede utilizar Exit Try. Exit Try es una palabra clave que permita salir del bloque Try Catch y ejecutat la instruccin o instrucciones que se encuentran despus de End Try. La palabra clave Exit Try no se puede utilizar el bloque de instrucciones N 03,es decir,despus de la palabra Finally.
119
Programacin Digital I
Public Class Form1 Dim Ex As Exception Dim Dato As String Dim Nota1, Nota2, Promedio As Double Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Ingrea la Primera Nota Dato = InputBox("Ingresa la nota N 01", "Por Favor", 0) 'PREGUNTA SI ESTA NULA O VACIA If String.IsNullOrEmpty(Dato) = False Then Nota1 = Double.Parse(Dato) Else 'Si esta vacia o nula le asigna el 0 Nota1 = 0 End If 'ingresa la primera Nota Dato = InputBox("Ingresa la nota N 02", "Por Favor", 0) 'pregunta si esta nula o vacia If String.IsNullOrEmpty(Dato) = False Then Nota2 = Double.Parse(Dato) Else 'Si esta vacia o nula le asigna el 0 Nota2 = 0 End If 'Calcual el promedio Promedio = (Nota1 + Nota2) / 2 'MUESTRA SU PROMEDIO MsgBox("Su promedio es:" & Promedio.ToString("#0.00") & "Puntos", MsgBoxStyle.Information, "resultado") Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) End Try End Sub End Class Utilizando Finally ................................................................................................... ................................................................................................. 'ingresa la primera Nota Dato = InputBox("Ingresa la nota N 02", "Por Favor", 0) 'pregunta si esta nula o vacia If String.IsNullOrEmpty(Dato) = False Then
120
Programacin Digital I
Nota2 = Double.Parse(Dato) Else 'Si esta vacia o nula le asigna el 0 Nota2 = 0 End If 'Calcual el promedio Promedio = (Nota1 + Nota2) / 2 Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) Finally 'MUESTRA SU PROMEDIO MsgBox("Su promedio es:" & Promedio.ToString("#0.00") & "Puntos", MsgBoxStyle.Information, "resultado") End Try Utilizando el bloque Finally se muestra el promedio final
121
Programacin Digital I
MenuStrip
El men principal es el que aparece en las aplicaciones abajo de la barra de la ventana (o sea, la tirita que dice "Archivo, Edicin, etc."). Para crear uno, se tiene que arrastrar el objeto MenuStrip a la ventana. El ambiente de diseo cambia un poco: el "control" aparece en la parte inferior, fuera de la ventana y en la parte superior de la ventana (o forma) que ests creando, aparece una cajita que dice "Escriba aqu". La pantalla se ve algo as:
Al darle click sobre ese mensaje, te permite escribir un texto (el letrero del primer men) y aparecen "huecos" para escribir ms opciones. Las siguientes imgenes muestran el efecto que tiene ir tecleando opciones del men.
122
Programacin Digital I
Public Class Form7 Private Sub ClientesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClientesToolStripMenuItem.Click MessageBox.Show("Esta es la opcion Mantenimiento de Clientes", "Menues") End Sub Private Sub ProductosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductosToolStripMenuItem.Click MessageBox.Show("Esta es la opcion Mantenimiento de Productos", "Menues")
123
Programacin Digital I
Menu contextual
Arrastre el icono del Menu Contextual y se puede escribir los nombres de las opciones.
si le das click afuera de la ventana del men contextual que aparece, desaparece
Para activar estas opciones se debe insertar un objeto y programar un evento para el menu contextual.
124
Programacin Digital I
Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown If e.Button = Windows.Forms.MouseButtons.Right Then ContextMenuStrip1.Show(Label1, New Point(e.X, e.Y)) End If End Sub Ejecute la aplicacin y cuando se haga click sobre la etiqueta observe que aparece el menu contextual
LABORATORIOS
LABORATORIO - 001
Elaborar una aplicacion que permita registrar los datos de los Empleados de una Empresa, estas seran mostradas en un ListView llamado LvPersonal, esta lista estara controlada por un Combo llamado CboModo el cual mostrara los estados del ListView (Iconos Grandes,Detalle,Lista,Iconos Pequeos,Ttulos), tambien podran ser mostraos algunos graficos agregados en un ImageList1
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Asigna el formato inicial al control ListView LvPersonal.View = View.Details
125
Programacin Digital I
LvPersonal.GridLines = True LvPersonal.FullRowSelect = True LvPersonal.Columns.Add("Codigo", 50, HorizontalAlignment.Center) LvPersonal.Columns.Add("Nombre", 200, HorizontalAlignment.Left) LvPersonal.Columns.Add("Sueldo", 100, HorizontalAlignment.Right) 'Llena el Personal Dim Personal As ListViewItem Personal = New ListViewItem("001", 0) Personal.SubItems.Add("Julio Dvila") Personal.SubItems.Add("2,500.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("002", 0) Personal.SubItems.Add("Oscar Ruiz") Personal.SubItems.Add("850.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("003", 0) Personal.SubItems.Add("Miguel Saavedra") Personal.SubItems.Add("1,350.00") LvPersonal.Items.Add(Personal) CboModo.SelectedIndex = 1 'Evita que se modifique el cdigo TxtCodigo.ReadOnly = True 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboModo.SelectedIndexChanged LvPersonal.View = CboVistas.SelectedIndex End Sub Private Sub LvPersonal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LvPersonal.Click TxtCodigo.Text = LvPersonal.SelectedItems(0).SubItems(0).Text TxtNombre.Text = LvPersonal.SelectedItems(0).SubItems(1).Text TxtSueldo.Text = LvPersonal.SelectedItems(0).SubItems(2).Text End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click TxtCodigo.Text = Format(LvPersonal.Items.Count + 1, "000") 'Permite escribir el Nombre y Sueldo
126
Programacin Digital I
TxtNombre.ReadOnly = False TxtSueldo.ReadOnly = False TxtNombre.Text = "" TxtSueldo.Text = "" TxtNombre.Focus() 'Desactiva el botn Nuevo BtnNuevo.Enabled = False 'Activa los botones Grabar e Ignorar BtnGrabar.Enabled = True BtnIgnorar.Enabled = True End Sub Private Sub BtnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGrabar.Click Dim Codigo, Nombre, Sueldo As String Dim Personal As ListViewItem 'Asigna los datos ingresados a Variables Codigo = TxtCodigo.Text Nombre = TxtNombre.Text Sueldo = TxtSueldo.Text 'Agrega al control ListView los datos ingresados Personal = New ListViewItem(Codigo, 0) Personal.SubItems.Add(Nombre) Personal.SubItems.Add(Sueldo) LvPersonal.Items.Add(Personal) 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub BtnIgnorar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIgnorar.Click TxtCodigo.Text = "" TxtNombre.Text = "" TxtSueldo.Text = "" NoIngresar() End Sub Sub NoIngresar() TxtNombre.ReadOnly = True TxtSueldo.ReadOnly = True 'Activa el botn Nuevo BtnNuevo.Enabled = True 'Desactiva los botones Grabar e Ignorar BtnGrabar.Enabled = False BtnIgnorar.Enabled = False
127
Programacin Digital I
End Sub End Class
128
Programacin Digital I
LABORATORIO - 002
Elaborar una aplicacion que permita mostrar la Zona, Departamentos, Provincias en un TreeView(TvElementos) y que al seleccionar uno de ellos se mostrara sus datos en los labels respectivos
Public Class Form1 Private Sub BtnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVer.Click TvElementos.Nodes.Clear() Dim Padre As TreeNode Dim Hijo As TreeNode '**** ZONA NORTE **** Padre = New TreeNode("Norte") TvElementos.Nodes.Add(Padre) 'Elementos del Norte Hijo = Padre.Nodes.Add("Lima") Hijo.Nodes.Add("Lima") Hijo.Nodes.Add("Huaral") Hijo.Nodes.Add("Huacho") Hijo = Padre.Nodes.Add("Chiclayo") Hijo.Nodes.Add("Motupe") Hijo.Nodes.Add("Monsefu") '**** ZONA SUR **** Padre = New TreeNode("Sur") TvElementos.Nodes.Add(Padre) 'Elementos de la Zona Sur Hijo = Padre.Nodes.Add("Chincha") Hijo.Nodes.Add("GrosoPrado") Hijo.Nodes.Add("ChinchaBaja") Hijo.Nodes.Add("ChinchaAlta")
129
Programacin Digital I
Hijo = Padre.Nodes.Add("Pisco") Hijo.Nodes.Add("El Tonel") Hijo.Nodes.Add("El Puerto") Hijo = Padre.Nodes.Add("Ica") Hijo.Nodes.Add("Paracas") Hijo.Nodes.Add("Ica") Hijo.Nodes.Add("Nazca") '**** ZONA CENTRO**** Padre = New TreeNode("Centro") TvElementos.Nodes.Add(Padre) 'Elementos Centro Hijo = Padre.Nodes.Add("Huancayo") Hijo = Padre.Nodes.Add("Cuzco") End Sub Private Sub TvElementos_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows .Forms. TreeViewEventArgs) Handles TvElementos.AfterSelect LblZona.Text = TvElementos.SelectedNode.Text LblDepartamento.Text = TvElementos.SelectedNode.FullPath LblProvincia.Text = TvElementos.SelectedNode.Level End Sub End Class
130
Programacin Digital I
LABORATORIO - 003
Elaborar una aplicacion que permita registrar los datos de los Empleados de una Empresa, estas seran mostradas en un ListView llamado LvPersonal, esta lista estara controlada por un Combo llamado CboModo el cual mostrara los estados del ListView (Iconos Grandes,Detalle,Lista,Iconos Pequeos,Ttulos), tambien podran ser mostraos algunos graficos agregados en un ImageList1
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Asigna el formato inicial al control ListView LvPersonal.View = View.Details LvPersonal.GridLines = True LvPersonal.FullRowSelect = True LvPersonal.Columns.Add("Codigo", 50, HorizontalAlignment.Center) LvPersonal.Columns.Add("Nombre", 200, HorizontalAlignment.Left) LvPersonal.Columns.Add("Sueldo", 100, HorizontalAlignment.Right) 'Llena el Personal Dim Personal As ListViewItem Personal = New ListViewItem("001", 0) Personal.SubItems.Add("Julio Dvila") Personal.SubItems.Add("2,500.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("002", 0) Personal.SubItems.Add("Oscar Ruiz")
131
Programacin Digital I
Personal.SubItems.Add("850.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("003", 0) Personal.SubItems.Add("Miguel Saavedra") Personal.SubItems.Add("1,350.00") LvPersonal.Items.Add(Personal) CboModo.SelectedIndex = 1 'Evita que se modifique el cdigo TxtCodigo.ReadOnly = True 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboModo.SelectedIndexChanged LvPersonal.View = CboVistas.SelectedIndex End Sub Private Sub LvPersonal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LvPersonal.Click TxtCodigo.Text = LvPersonal.SelectedItems(0).SubItems(0).Text TxtNombre.Text = LvPersonal.SelectedItems(0).SubItems(1).Text TxtSueldo.Text = LvPersonal.SelectedItems(0).SubItems(2).Text End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click TxtCodigo.Text = Format(LvPersonal.Items.Count + 1, "000") 'Permite escribir el Nombre y Sueldo TxtNombre.ReadOnly = False TxtSueldo.ReadOnly = False TxtNombre.Text = "" TxtSueldo.Text = "" TxtNombre.Focus() 'Desactiva el botn Nuevo BtnNuevo.Enabled = False 'Activa los botones Grabar e Ignorar BtnGrabar.Enabled = True BtnIgnorar.Enabled = True End Sub Private Sub BtnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGrabar.Click Dim Codigo, Nombre, Sueldo As String
132
Programacin Digital I
Dim Personal As ListViewItem 'Asigna los datos ingresados a Variables Codigo = TxtCodigo.Text Nombre = TxtNombre.Text Sueldo = TxtSueldo.Text 'Agrega al control ListView los datos ingresados Personal = New ListViewItem(Codigo, 0) Personal.SubItems.Add(Nombre) Personal.SubItems.Add(Sueldo) LvPersonal.Items.Add(Personal) 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub BtnIgnorar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIgnorar.Click TxtCodigo.Text = "" TxtNombre.Text = "" TxtSueldo.Text = "" NoIngresar() End Sub Sub NoIngresar() TxtNombre.ReadOnly = True TxtSueldo.ReadOnly = True 'Activa el botn Nuevo BtnNuevo.Enabled = True 'Desactiva los botones Grabar e Ignorar BtnGrabar.Enabled = False BtnIgnorar.Enabled = False End Sub End Class
133
Programacin Digital I
LABORATORIO - 003
Elaborar una aplicacion que permita mostrar la Zona, Departamentos, Provincias en un TreeView(TvElementos) y que al seleccionar uno de ellos se mostrara sus datos en los labels respectivos
Public Class Form1 Private Sub BtnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVer.Click TvElementos.Nodes.Clear() Dim Padre As TreeNode Dim Hijo As TreeNode '**** ZONA NORTE **** Padre = New TreeNode("Norte") TvElementos.Nodes.Add(Padre) 'Elementos del Norte Hijo = Padre.Nodes.Add("Lima") Hijo.Nodes.Add("Lima") Hijo.Nodes.Add("Huaral") Hijo.Nodes.Add("Huacho") Hijo = Padre.Nodes.Add("Chiclayo") Hijo.Nodes.Add("Motupe") Hijo.Nodes.Add("Monsefu") '**** ZONA SUR **** Padre = New TreeNode("Sur") TvElementos.Nodes.Add(Padre) 'Elementos de la Zona Sur Hijo = Padre.Nodes.Add("Chincha") Hijo.Nodes.Add("GrosoPrado")
134
Programacin Digital I
Hijo.Nodes.Add("ChinchaBaja") Hijo.Nodes.Add("ChinchaAlta") Hijo = Padre.Nodes.Add("Pisco") Hijo.Nodes.Add("El Tonel") Hijo.Nodes.Add("El Puerto") Hijo = Padre.Nodes.Add("Ica") Hijo.Nodes.Add("Paracas") Hijo.Nodes.Add("Ica") Hijo.Nodes.Add("Nazca") '**** ZONA CENTRO**** Padre = New TreeNode("Centro") TvElementos.Nodes.Add(Padre) 'Elementos Centro Hijo = Padre.Nodes.Add("Huancayo") Hijo = Padre.Nodes.Add("Cuzco") End Sub Private Sub TvElementos_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows .Forms. TreeViewEventArgs) Handles TvElementos.AfterSelect LblZona.Text = TvElementos.SelectedNode.Text LblDepartamento.Text = TvElementos.SelectedNode.FullPath LblProvincia.Text = TvElementos.SelectedNode.Level End Sub End Class
135
Programacin Digital I
LABORATORIO - 004
Elaborar una aplicacin que permita obtener el factorial y si es un numero primo de un numero atravez de la creacion de una clase, donde la clase debera validar el ingreso de los numeros y debera calcular el factorial y si el numero es primo.
CLASE INFORME Public Class Informe Dim m_Numero As Long 'Constructor de la clase Public Sub New(ByVal Numero As Integer) m_Numero = Numero End Sub 'Propiedad de la clase Public Property Numero() As Integer Get Return m_Numero End Get Set(ByVal value As Integer) m_Numero = value End Set End Property 'Mtodos de la clase Public Function Factorial() As Integer Dim X, F As Integer If Numero > 11 Then MessageBox.Show("Ingrese Valores entre 0 y 11", "Por Favor") Exit Function End If F=1 For X = 1 To m_Numero F=F*X Next Return F
136
Programacin Digital I
End Function Public Function Primo() As String Dim X As Integer Dim Sw As Boolean = False If m_Numero < 3 Then Sw = False For X = 2 To m_Numero - 1 If m_Numero Mod X = 0 Then Sw = True End If Next If Sw = True Then Return "No" Else Return "Si" End If End Function End Class EN EL FORMULARIO Public Class Form1 Private Sub BtnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVer.Click If TxtNumero.Text = String.Empty Then MessageBox.Show("Ingrese Nmero", "Por Favor") TxtNumero.Focus() Exit Sub End If Dim Numero As Integer 'Almacena el numero ingresado Numero = Integer.Parse(TxtNumero.Text) 'Crea una instancia de la clase Informe Dim Num As New Informe(Numero) 'Muestra los resultados LblFactorial.Text = Num.Factorial.ToString LblPrimo.Text = Num.Primo End Sub End Class
137
Programacin Digital I
LABORATORIO - 005
Elaborar una aplicacin que usando una clase nos permita obtener en el primer formulario el Total vendido a un cliente, y en el formulario dos el total vendido al cliente con descuentos asi como el total a pagar.
Creando la Clase General:(Total Compra) Public Class TotalCompra Dim m_PrecioCompra As Double Dim m_Cantidad As Integer 'Constructor de la clase Public Sub New(ByVal Pc As Double, ByVal Cant As Integer) m_PrecioCompra = Pc m_Cantidad = Cant End Sub 'Propiedades de la clase Public Property PCompra() As Double Get Return m_PrecioCompra End Get Set(ByVal value As Double) m_PrecioCompra = value End Set End Property Public Property Cantidad() As Integer Get Return m_Cantidad End Get Set(ByVal value As Integer) m_Cantidad = value
138
Programacin Digital I
End Set End Property 'Metodo de la clase Public Function Total() As Double Dim Utilidad, PrecioVenta As Double Select Case m_Cantidad Case 1 To 10 Utilidad = 50 Case 11 To 20 Utilidad = 35.8 Case 20 To 40 Utilidad = 10 Case Is > 40 Utilidad = 5.5 End Select PrecioVenta = m_PrecioCompra * (1 + Utilidad / 100) Return PrecioVenta * m_Cantidad End Function End Class Public Class TotalPago Inherits TotalCompra Dim m_Descuento As Double 'Constructor de la clase Sub New(ByVal Pc As Double, ByVal Cant As Integer, ByVal Des As Double) MyBase.New(Pc, Cant) m_Descuento = Des End Sub Public Property Descuento() As Double Get Return m_Descuento End Get Set(ByVal value As Double) m_Descuento = value End Set End Property Public Function Pagos() As Double Dim DSoles, Pago As Double DSoles = MyBase.Total * m_Descuento / 100 Pago = MyBase.Total - DSoles Return Pago End Function
139
Programacin Digital I
End Class En el Formulario1 Public Class Form1 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalcular.Click Dim Precio As Double Dim Cantidad As Integer Precio = Double.Parse(TxtPrecio.Text) Cantidad = Integer.Parse(TxtCantidad.Text) Dim R As New TotalCompra(Precio, Cantidad) LblTotal.Text = R.Total.ToString("#,##0.00") End Sub End Class En el Formulario2 Public Class Form2 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalcular.Click Dim Precio, Utilidad As Double Dim Cantidad As Integer Precio = Double.Parse(TxtPrecio.Text) Cantidad = Integer.Parse(TxtCantidad.Text) Utilidad = Integer.Parse(TxtUtilidad.Text) Dim R As New TotalPago(Precio, Cantidad, Utilidad) LblTotal.Text = R.Total.ToString("#,##0.00") LblPago.Text = R.Pagos.ToString("#,##0.00") End Sub End Class
140
Programacin Digital I
LABORATORIO - 006
Elaborar una aplicacin que use una clase para validar las notas al ingresar y que permita obtener el promedio la Condicion (Aprobado o Desaprobado) la cualidad (Excelente o Bueno) de un determinado alumno.
141
Programacin Digital I
CONTENIDO
PRACTICA DE REFORZAMIENTO
142
Programacin Digital I
NUM -DPTO 10 15 10 12 25
SQL 2 3
SELECT num_emp, apellido, nombre, num-dpto FROM empleado WHERE num_dpto = 10;
143
Programacin Digital I
SQL (Structured Query Language) se usa para manipular bases de datos relacionales. Discusin El ANSI (American National Standards Institute) ha establecido a SQL como el lenguaje estndar para operar sobre bases de datos relacionales. Una base de datos relacional puede soportar un completo conjunto de operaciones relacionales. Las operaciones relacionales manipulan conjuntos de valores de datos. Las tablas pueden ser operadas para crear otras tablas. Las operaciones relacionales pueden ser anidadas. CLAVE PRIMARIA Una Clave Primaria (PK) es una columna o conjunto de columnas que nicamente identifica cada fila en una tabla. Cada tabla debe tener una clave primaria y una clave primaria debe ser nica. Ejemplo
La clave primaria para la tabla EMPLEADOS consiste en la columna NUM_EMP. Cada fila en la tabla es nicamente identificada por su valor NUM_EMP.
Clave Primaria
NUM-DPTO 10 15 10
Tabla EMPLEADOS
JOHNSON LUCY
05
144
Programacin Digital I
Discusin No se permiten los duplicados en una Clave Primaria. La clave primaria debe ser nica. Las claves primarias generalmente no pueden ser cambiadas. El UID de una entidad se mapear a una Clave Primaria en su correspondiente tabla.
CLAVES PRIMARIAS COMPUESTAS Una Clave Primaria que se conforma de mltiples columnas se llama Clave Primaria Compuesta. Ejemplo La clave primaria compuesta para la tabla CUENTA consiste en la combinacin de las columnas NUM_BANCO y NUM_CUENTA. Cada fila es unicamente identificada por sus valores de NUM_BANCO y NUM_CUENTA.
Clave Primaria
Tabla CUENTA
Discusin
Las columnas de un clave primaria compuesta debe ser nica en la combinacin. Las columnas individuales pueden tener duplicados, pero en la combinacin, no se permiten duplicados.
CLAVES PRIMARIAS NO NULAS Ninguna parte de una clave primaria puede ser NULL (nula). Ejemplo NUM_EMP es la clave primaria de la tabla EMPLEADOS. Por lo tanto NUM_EMP debe ser definido como NOT NULL.
145
Programacin Digital I
Clave Primaria
NUM-DPTO 10 15 10
Tabla EMPLEADOS
JOHNSON LUCY
05
Ejemplo Cmo viola la tabla CUENTA las reglas de las Claves Primarias?
Clave Primaria
Tabla CUENTA
Dos de las filas contienen valores NULL en parte de la clave primaria compuesta. Tanto NUM_BANCO como NUM_CUENTA deben ser definidos como NOT NULLS. CLAVES CANDIDATAS Y CLAVES ALTERNAS
Una tabla puede tener ms de una columna o combinacin de columnas que pueden servir como la clave primaria de la tabla. Cada una de ellas se llama Clave Candidata. Ejemplo Cules son las claves candidatas para la tabla EMPLEADOS?
146
Programacin Digital I
NUM-DPTO 10 15 10 05
ID-PLASUELD
Tabla
9710 8730 1157 3394 4477
EMPLEADOS
NUM_EMP e ID_PLASUELD son claves candidatas. Seleccione una clave candidata para ser la Clave Primaria para la tabla. Las otras candidatas se convierten en Claves Alternas. Ejemplo
Clave Primaria
Clave Alterna
NUM-DPTO 10 15 10 05
Tabla EMPLEADOS
Discusin Todas las Claves Candidatas deben ser nicas y NOT NULL. Los UIDs secundarios se mapean a claves alternas.
CLAVES FORNEAS
Una Clave Fornea (FK) es una columna o combinacin de columnas en una tabla que es clave primaria en la misma u otra tabla. Ejemplo NUM_DEPT es una FK en la Tabla EMPLEADOS y se refiere a los valores en la columna NUM_DEPT en la Tabla DEPARTAMENTO.
147
Programacin Digital I
Clav e Primaria Clav e Fornea
NUM-DPTO 10 15 10 05
Tabla EMPLEADOS
JOHNSON LUCY
Clav e Primaria
NUM-DPTO 10 15 12 25
Tabla DEPARTAMENTO
Discusin Las claves forneas son la implementacin de las relaciones de un modelo de datos conceptual. Las claves forneas se basan en los valores de los datos y son puramente lgicas.
148
Programacin Digital I
Una clave fornea siempre debe parearse con el valor de una clave primaria (o de lo contrario ser NULL). Ejemplo La FK NUM_DEPT en la tabla EMPLEADOS se refiere a los valores de la PK NUM_DEPT en la tabla DEPARTAMENTO.
Clav e Primaria
Clav e Fornea
Clav e Primaria
NUM-DPTO 10 15 10
NUM-DPTO 10 15 20 25
Tabla EMPLEADOS
Tabla DEPARTAMENTO
Si una Clave Fornea es parte de una Clave Primaria, esa FK no puede ser NULL. Ejemplo En la tabla CUENTA, la FK NUM_BANCO debe ser NOT NULL porque es parte de la PK.
Clav e Primaria
Clav e Fornea
Clav e Primaria
Tabla BANCO
Tabla CUENTA
149
Programacin Digital I
LENGUAJE SQL
SQL (Structured Query Language) es el lenguaje que se utiliza para comunicarse con la base de datos
Lenguaje SQL
SELECT Sintaxis:
SELECT expresin FROM tabla [WHERE condicin] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] row_count | row_count OFFSET offset]
Ejemplo: SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC Obtiene las noticias del da con un tope mximo de 10, ordenadas de la ms reciente a la ms antigua
Operadores Lgicos Operador AND Uso Es el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negacin lgica. Devuelve el valor contrario de la expresin.
OR NOT
150
Programacin Digital I
Operadores de Comparacin
Operador < > <> <= >= = BETWEEN LIKE In Menor que Mayor que Distinto de Menor Igual que Mayor Igual que Igual que
Uso
Utilizado para especificar un intervalo de valores. Utilizado en la comparacin de un modelo Utilizado para especificar registros de una base de datos
COMANDO
DESCRIPCION
CREATE
Utilizados para crear nuevas tablas, campos e ndices DROP.empleado para eliminar tablas o ndices
DROP
ALTER
Utilizado para modificar las tablas agregando campos o cambiando la definicin de los campos
151
Programacin Digital I
152
Programacin Digital I
DESCRIPCION Usado para consultar registros en la sede datos Usados para cargar lotes de datos Usado para modificar los valores de campos y registros Utilizados para eliminar los registros de una tabla de una base de datos.
Permite generar consultas para ordenar , filtrar y extraer datos de la base de datos Clusulas Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.
CLAUSULA FROM
DESCRIPCION Utilizada para especificar la tabla de la cual se van a seleccionar los registros.
WHERE
Utilizadas para especificar las condiciones que deben reunir los registros que se van a seleccionar.
Utilizadas para separar los registros seleccionados en grupos especficos. Utilizada para expresar la condicin que debe satisfacer cada grupo Utilizada para ordenar los registros sleccionados de acuerdo con un orden especifico.
153
Programacin Digital I
AGRUPACION DE DATOS
Funciones de Agregado Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros. Funcin AVG Descripcin Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin SUM MAX MIN Utilizada para devolver la suma de todos los valores de un campo determinado Utilizada para devolver el valor ms alto de un campo especificado Utilizada para devolver el valor ms bajo de un campo especificado
GROUP BY
Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula HAVING para filtrar los registros una vez agrupados. A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la clusula FROM, incluso si el campo no esta incluido en la instruccin SELECT, siempre y cuando la instruccin SELECT incluya al menos una funcin SQL agregada. Todos los campos de la lista de campos de SELECT deben o bien incluirse en la clusula GROUP BY o como argumentos de una funcin SQL agregada. SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia; Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING. HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar.
154
Programacin Digital I
SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*; AVG Calcula la media aritmtica de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente Avg(expr) En donde expr representa el campo que contiene los datos numricos para los que se desea calcular la media o una expresin que realiza un clculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmtica (la suma de los valores dividido por el nmero de valores). La funcin Avg no incluye ningn campo Null en el clculo. SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100; Count Calcula el nmero de registros devueltos por una consulta. Su sintaxis es la siguiente Count(expr) En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto. Aunque expr puede realizar un clculo sobre un campo, Count simplemente cuenta el nmero de registros sin tener en cuenta qu valores se almacenan en los registros. La funcin Count no cuenta los registros que tienen campos null a menos que expr sea el carcter comodn asterisco (*). Si utiliza un asterisco, Count calcula el nmero total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente ms rpida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*'). SELECT Count(*) AS Total FROM Pedidos; Si expr identifica a mltiples campos, la funcin Count cuenta un registro slo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos con ampersand (&). SELECT Count(FechaEnvo & Transporte) AS Total FROM Pedidos; Max, Min Devuelven el mnimo o el mximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es: Min(expr) Max(expr) En donde expr es el campo sobre el que se desea realizar el clculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Espaa'; SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Espaa'; StDev, StDevP Devuelve estimaciones de la desviacin estndar para la poblacin (el total de los registros de la tabla) o una muestra de la poblacin representada (muestra aleatoria) . Su sintaxis es: StDev(expr)
155
Programacin Digital I
StDevP(expr) En donde expr representa el nombre del campo que contiene los datos que desean evaluarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL) StDevP evala una poblacin, y StDev evala una muestra de la poblacin. Si la consulta contiene menos de dos registros (o ningn registro para StDevP), estas funciones devuelven un valor Null (el cual indica que la desviacin estndar no puede calcularse). SELECT StDev(Gastos) AS Desviacion FROM Pedidos WHERE Pais = 'Espaa'; SELECT StDevP(Gastos) AS Desviacion FROM Pedidos WHERE Pais= 'Espaa'; Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: Sum(expr) En donde expr respresenta el nombre del campo que contiene los datos que desean sumarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido; Var, VarP Devuelve una estimacin de la varianza de una poblacin (sobre el total de los registros) o una muestra de la poblacin (muestra aleatoria de registros) sobre los valores de un campo. Su sintaxis es: Var(expr) VarP(expr) VarP evala una poblacin, y Var evala una muestra de la poblacin. Expr el nombre del campo que contiene los datos que desean evaluarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL) Si la consulta contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la varianza no puede calcularse). Puede utilizar Var y VarP en una expresin de consulta o en una Instruccin SQL. SELECT Var(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa'; SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa'
156
Programacin Digital I
COMANDOS DML
COMANDO CREATE TABLE
El comando CREATE TABLE se usa para especificar una nueva relacin por medio de un nombre y especificando cada uno de sus atributos. A cada atributo se le da un nombre, un tipo de datos (para especificar su dominio) y algunas constraints sobre el atributo. La sintaxis del comando es : CREATE TABLE nombre_de_tabla (definicion_de_columna [,definicion_de_columna ] ...) donde la definicin de columna es de la forma : nombre_de_columna tipo_de_dato [ NOT NULL ] Claves Primarias Tambin se puede definir una clave primaria sobre una columna, usando la palabra clave KEY o PRIMARY KEY. Solo puede existir una clave primaria en cada tabla, y la columna sobre la que se define una clave primaria no puede tener valores NULL, Si esto no se especifica explicita, SQL lo har de foma automtica. Por ejemplo, si queremos crear un ndice en la columna nombre de la tabla alumno crearemos la tabla de la siguiente manera; Ejemplo: de forma
create table alumno(idalumno char(4) primary key not null, nomalum varchar(20) not null, diralum varchar(40) not null, disalum varchar(40) not null);
COMANDO DROP TABLE El comando DROP TABLE se usa para eliminar una relacin y su definicin de atributos como tambin borra del catlogo la tupla relacionada a esta. La sintaxis de la Instruccin es : DROP TABLE nombre_de_tabla; Ejemplo : drop table alumno;
157
Programacin Digital I
COMANDO ALTER TABLE
ALTER TABLE permite modificar la estructura de una tabla existente. Por ejemplo, se pueden aadir o eliminar columnas, crear y destruir ndices, cambiar el tipo de una columna existente o renombrar columnas o la propia tabla. Tambin es posible modificar el comentario y el tipo de la tabla ALTER TABLE nombre_de_tabla ADD nombre_de_columna tipo_de_dato; Ejemplo: alter table alumno add telefono varchar(10); Query OK, 2 rows affected (0.20 sec) Records: 2 Duplicates: 0 Warnings: 0 Ejemplo create table editorial(codeditorial INT AUTO_INCREMENT PRIMARY KEY, nomeditorial char(25) NOT NULL, direditorial varchar(25) NOT NULL, telef varchar(9) NOT NULL)
COMANDOS DLL
INSERT Sintaxis: INSERT [INTO] nombre_tabla [(nombre_columna,...)] VALUES ((expresin | DEFAULT),...), (...),... INSERT [INTO] nombre_tabla SET nombre_columna=(expresin | DEFAULT), ... Ejemplo: INSERT INTO noticias (id, titulo, texto, categoria, fecha) VALUES (37, Nueva promocin en Nervin, 145 viviendas de lujo en urbanizacin ajardinada situadas en un entorno privilegiado, promociones, CURDATE())
158
Programacin Digital I
Inserta una noticia con los valores indicados SELECT Sintaxis: SELECT expresin FROM tabla [WHERE condicin] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] row_count | row_count OFFSET offset] Ejemplo: SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC Obtiene las noticias del da con un tope mximo de 10, ordenadas de la ms reciente a la ms antigua UPDATE Sintaxis: UPDATE nombre_tabla SET nombre_columna1=expr1 [, nombre_columna2=expr2 ...] [WHERE condicin] [ORDER BY ...] [LIMIT row_count] Ejemplo: UPDATE noticias SET categoria = ofertas WHERE id=37 Modifica la categora de la noticia con id=37 de la tabla DELETE Sintaxis: DELETE FROM nombre_tabla [WHERE condicin] [ORDER BY ...] [LIMIT row_count] Ejemplo: DELETE FROM noticias WHERE fecha < CURDATE()-10 Borra las noticias con ms de 10 das de antigedad
159
Programacin Digital I
160
Programacin Digital I
fuente microsoft.net
El problema es comunicar un programa o aplicacion aspx con una base de datos y mas que comunicar se pretende que el programa o aplicacion realize una serie de procesos u operaciones con la base de datos o mejor aun con el conjunto de tablas que contiene una base de datos. La primera nota a recordar es que una base de datos puede estar fisicamente en el servidor y en algun folder o directorio del disco duro de dicha maquina servidora, por ejemplo, c:\DATOS\mibase.mbd, como se observa la base que se construyo en MICROSOFT access (mibase.mbd) se almaceno en el disco c en el folder DATOS. Sin embargo tambien es necesario conocer que asi como existen servidores de paginas ( web server ), servidores de correo ( mail server ), servidores de ftp ( ftp server ), etc, tambien existen servidores de bases de datos ( database server ), los mas comunes son el sqlserver de microsoft, oracle, mysql, etc, estos servidores tambien pueden crear, administrar y procesar una base de datos, por supuesto que el procedimiento que se dio para crearla en access en el tema anterior no se puede usar para crear y cargar una base de datos en un servidor de bases de datos.(esperar libros de bases de datos en programacionfacil en un proximo futuro). El modo de comunicarse entre nuestro programa o aplicacion y la base de datos (ya sea fisica o un dbserver), implica que ambos manejen un lenguaje de programacion comun, es decir no se puede mandar una instruccion en csharp, o en basic o pascal a la base de datos y ademas esperar que esta ultima la entienda ( para entender esto, una razon muy sencilla es que la base de datos tendria que conocer o comprender todos los lenguajes de programacion), para resolver este problema de comunicacion es que se usa un lenguaje comun de bases de
161
Programacin Digital I
datos que tanto los lenguajes de programacion existentes como las bases de datos entienden, este lenguaje comun de bases de datos es el SQL (structured query languaje) o lenguaje estructurado de consultas. La pregunta es ahora como mandamos las instrucciones sql a la base de datos, la respuesta son los OBJETOS ADO NET que estamos analizando en orden y proposito de uso, los estaremos explicando. OBJETO CONNECTION:- OBJETO QUE SE UTILIZA PARA ESTABLECER UNA CONECCION O ENLACE A LA BASE DE DATOS. Este objeto primero se tendra que crear en el programa y luego se tendra que cargar con dos parametros(ver ejemplo mas abajo), el primer parametro es el provedor o la fuente que proporcionara los datos, los provedores o fuentes de datos que existen son: SQLSERVER NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESAR BASES DE DATOS CONSTRUIDAS CON MICROSOF SQL SERVER V7.0 OLEDB.NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESAR BASES DE DATOS QUE A LA FECHA DEL PRESENTE MANUAL UTILIZEN ALGUNOS DE LOS SIGUIENTES DRIVERS, SQ EDB ( VERSIONES ANTERIORES DE SQL SERVER DE MICROSOFT), MSDAORA
(ORACLE), MICROSOFT.JET ( ACCESS Y ALGUNOS OTROS DBMS DE MICROSOFT) NOTA: Este es el que se usa en los ejemplos siguientes, observar que aunque VISUAL BASIC 2005 trae por default los controles SQL, en este capitulo se usaran los objetos OLEDB, lo malo es que se tendran que crear, cargar y codificar a mano y no olvidar incluir en la parte de arriba del programa la instruccion using System.Data.OleDb; ODBC NET .- BASES DE DATOS QUE USAN ODBC COMO MEDIO DE COMUNICACION CON OTRAS BASES DE DATOS Y APLICACIONES COMO NOTA A CONSIDERAR ODBC NET NO ESTA INCLUIDA POR DEFAULT EN MICROSOFT NET, SE TIENE QUE BAJAR DE MICROSOFT, AUNQUE SI SE INSTALO CORRECTAMENTE EL COMPULDARO VISUAL BASIC 2005 YA ESTARA INCLUIDA El segundo parametro es la propia base de datos con la cual se comunicara el programa o aplicacion. Ejemplo del objeto CONNECTION DIM coneccion AS OLEDBCONNECTION coneccion = NEW OLEDBCONNECTION(Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=c:\progfacil\lauro\mibase.mdb) Es una sola string y los dos parametros mencionados van separados por el punto y coma. ATENCION es DATA SOURCE= no usar DATASOURCE= estan adevertidos. ejemplos de los otros poveedores o fuentes mencionados: //Provider=MSDAORA; Data Source=ORACLE8i7; User ID=OLEDB; Password=OLEDB //Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb;
162
Programacin Digital I
//Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI;
optimizado para conectarse a base de datos SQL Server en las versiones indicadas.
SQLDATAADAPTER
Este objeto es el encargado de llevar la conexin establecida en el Objeto Connection, el comando con los requerimientos deseado y depositar los resultados obtenidoe en otro objeto llamado DataSet(Conjunto de Datos) para poder utilizarlos y/o manipularlos en una aplicacin. Los requerimientos pueden ser el contenido de una tabla de una base de datos o parte de ella,as como la actualizacion,adicin o eliminacin de la infrmacin.
SQLCOMMAND
Este objeto se utiliza para almacenar el comando con el requerimiento para la conexin establecida. El comando consisten en una instruccin SQL que depende del requerimiento deseado y puede ser Select,Update,Insert Delete.
DATASET
Este objeto se encarga de recibir el conjunto de datos que devuelve la conexin a travs de objeto DataAdapter,segn el comando establecido por el objeto Command. Procedimiento,1)Agregar el objeto SQLCONNECTION en la barra de herramientas ,clic derecho ,elegir elementos ,seleccin SQLCONNECTION,aceptar
163
Programacin Digital I
Ubicar el objeto SQLCONNECTION en el formulario ,clic derecho propiedades ,clic en la propiedad:
Connectionstring(elija conexin nueva) 2)ubicar el objeto SQLCOMMAND en el formulario,clic derecho en propiedades, clic en:
Valor SqlConecction1
164
Programacin Digital I
165
Programacin Digital I
5) Ubicar TabControl
el
control
Text Text
166
Programacin Digital I
En el DataGrid se presentan los datos provenientes del conjunto de datos(DataSet) asignando en la propiedad DataSoirce lo siguiente:
Propiedad Datasource En el evento load del Formulario llenar el siguiente Cdigo Dataset1.clear() SQLADAPTER1.fill(Dataset1)
Valor Dataset1
Ficha1 Ficha2 Ficha3 Ficha4 Ficha5 Ficha6 Ficha7 Ficha8 Ficha9 Ficha10
Lista de Productos Lista de Categoras Lista de los Nombres de categora y Nombres de Producto Lista de Nombres de Producto y Cantidad Solicitada Lista de Nombre de Producto e Importe Lista de Nombre de Producto y Cuantos por Producto Lista de Nombre de Producto y Suma de Importes por Producto Lista de Nombre de Categora y Cuantos por Categoria Lista de Nombre de Clientes(Customers) Lista de Nombre de Cliente y el Importe por cada cliente
167
Programacin Digital I
VISUAL NET
(Acceso a Datos)
Imports System.Data Imports System.Data.SqlClient Public Class Form28 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim cn As New SqlConnection("Data Source=(local);Initial Catalog=Northwind;uid=sa;pwd=") Dim sql As String, nivel As Integer sql = "select * from usuario where iduser='" & TextBox1.Text & "' and " & " pwd='" & TextBox2.Text & "'" TextBox3.Text = sql Dim cmd As New SqlCommand(sql, cn) Dim dato As SqlDataReader, acceso As Boolean
168
Programacin Digital I
dato.Read() Dim usuario, contrasea As String usuario = dato(0) contrasea = dato(2) nivel = Val(dato(3)) MessageBox.Show("El usuario es :" & usuario, "Prueba") MessageBox.Show("La Contrasea es1 :" & contrasea, "Prueba") MessageBox.Show("El Nivel es " & nivel, "Prueba") MsgBox("hay conexion") Form29.Show() If nivel = 1 Then Form29.Button1.Enabled = True Form29.Button3.Enabled = True Form29.Button4.Enabled = True Form29.Button5.Enabled = True Else If nivel = 2 Then Form29.Button1.Enabled = False Form29.Button3.Enabled = True Form29.Button4.Enabled = True Form29.Button5.Enabled = True Else Form29.Button1.Enabled = False Form29.Button3.Enabled = False Form29.Button4.Enabled = False Form29.Button5.Enabled = True End If
End If cn.Close() Catch ex As SqlException MsgBox("no hay conexion") End Try End Sub End Class
169