Académique Documents
Professionnel Documents
Culture Documents
INDICE
CAPITULO I
Lenguaje de Programacin Qu es Lenguaje de Programacin? Algoritmos Pseudocdigo Lectura Estructura Escritura Ejercicio N 1 Ejercicio N 2 Ejercicio N 3 Ejercicio N 4 Ejercicio N 5 Ejercicio N 6 Ejercicio N 7 Ejercicio N 8 Instruccin Condicional Operadores Relacionales o Comparativas Ejercicio N 9 Ejercicio N 10 Ejercicio N 11 Ejercicio N 12 Ejercicio N 13 Condiciones Mltiples Ejercicio N 14 Ejercicio N 15 Ejercicio N 16 Ejercicio N 17 Ejercicio N 18
01 01 01 02 02 02 02 03 04 05 06 07 07 08 08 10 11 11 12 13 14 15 16 17 19 20 21 22
Procesos Repetitivos Ejercicio N 19 Ejercicio N 20 Ejercicio N 21 Ejercicio N 22 Ejercicio N 23 Estructuras Repetitivas Ejercicio N 24 Ejercicio N 25 Ejercicio N 26 Tipos de Datos Ejercicio N 27 Ejercicio N 28 Ejercicio N 29 Diagrama de Flujo Ejercicio N 30 Ejercicio N 31 Ejercicio N 32 Ejercicio N 33 Despedida
23 23 24 25 25 27 28 28 29 30 31 31 32 33 35 36 36 38 39 40
Materiales Didcticos
! ! ! ! !
Microsoft Visual Basic .Net 2005 (Ingles o Espaol) Windows XP Service Pack 2 Windows 2003 Server Microsoft SQL Server 2005 Framework 2
Lenguaje de Programacin
Qu es Lenguaje de Programacin? En informtica, cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por un ordenador o computadora. Es complicado definir qu es y qu no es un lenguaje de programacin. Se asume generalmente que la traduccin de las instrucciones a un cdigo que comprende la computadora debe ser completamente sistemtica. Normalmente es la computadora la que realiza la traduccin. Los lenguajes de programacin permiten comunicarse con los ordenadores o computadoras. Una vez identificada una tarea, el programador debe traducirla o codificarla a una lista de instrucciones que la computadora entienda. Un programa informtico para determinada tarea puede escribirse en varios lenguajes. Segn la funcin, el programador puede optar por el lenguaje que implique el programa menos complicado. Tambin es importante que el programador elija el lenguaje ms flexible y ms ampliamente compatible para el caso de que el programa tenga varias aplicaciones.
Algoritmos: Son representaciones, estos pueden ser: 1. Lenguaje Natural.- Es el lenguaje comn (coloquial). 2. Lenguaje Estructurado.- Es un lenguaje mas limitado que el anterior, con reglas de sintaxis y semntica definidas, esto quiere decir que consiste en crear programas con instrucciones agrupadas en un estricto orden secuencial, el cual es imprescindible conservar para la resolucin de un problema. a. Pseudocdigo; lenguaje universal para comunicarse entre programadores, esto quiere decir que es un conjunto de instrucciones en lenguaje natural, como el castellano o el ingles, de acuerdo a la persona que desarrollar un algoritmo basado en dicho lenguaje natural, en conclusin, es elaborar el algoritmo usando palabras y frases que se comprendan fcilmente. b. Cdigo; lenguaje orientado a un tipo de compilador especifico, para ser interpretado por el computador, en otras palabras es un conjunto de instrucciones que son parte de un lenguaje de programacin especifico que se escriben en orden secuencial y se almacenan en un archivo al que se denomina programa, cuando el programa es pequeo se le denomina mini-programa o con el nombre de macro (en ingles se le denomina Script). 3. Lenguaje Simblico.- Es una representacin que usa smbolos predefinidos para diagramar un algoritmo, con el fin de que sea fcil de seguir la lgica de la solucin que se desea expresar en forma de un flujo de pasos a realizar, indicando el inicio y el termino de los mismos a. Diagramas de flujo; b. Carta N-S;
PSEUDOCODIGO
Lectura ! ! ! Obtener un dato inicial Solicitar un dato inicial Requerir un dato de entrada
En otras palabras, lectura viene a ser la entrada de datos que nosotros vamos a requerir para poder hallar la solucin, por eso, para nosotros la Entrada va ser el sinnimo de Lectura. Se deduce a: Leer <Dato> (Dato de entrada)
Estructura ! ! Operar sobre el dato obteniendo nuevo valor Procesar los datos, obteniendo nuevo valor
En otras palabras, la estructura lo conoceremos como Instrucciones, esto quiere decir que las instrucciones son todos los procesos, clculos, comparaciones etc., que nosotros haremos para hallar la solucin. Se deduce a: <Nuevo Valor> <Expresin de Clculo>
Como la misma palabra lo dice, vamos a escribir o mejor dicho vamos a mostrar el resultado de las instrucciones hechas (operaciones). Se deduce: Escribir <Valor Resultante>
Bueno ya vimos la parte de concepto, se que es poco aburrida, por no decir que bastante, pero es necesario, por que sino no me entenderan lo que hago, para terminar de entender vamos a resolver alguno ejemplos, que a su tiempo lo llevaremos a un cdigo de algn programa, todava no se si usar el Visual Sharp C# o la consola de aplicacin del Visual Basic, ya ver con cual es mas fcil para que entiendan.
Ejercicios
1. Se desea calcular la distancia recorrida (m) por un mvil que tiene velocidad constante (m/s) durante un tiempo T (Sg), considerar que es un MRU (Movimiento Rectilneo Uniforme)
Solucin:
DATOS Identificadores Salida Distancia Recorrida (m) Entrada Velocidad Constante (m/s) Tiempo (Sg) V T D
Sencillo el algoritmo no?, bueno no se preocupen si no lo han entendido, les voy a explicar: Qu son Identificadores?, los identificadores, variables que van a tomar el valor que se le asigne, para poder hallar la solucin. Qu son Variables?, las variables son mayormente letras, es como si dijramos que son comodines en un juego de cartas, como ustedes saben un comodn en un juego de cartas, puede tomar el valor que uno le asigne, como por ejemplo, puede tomar el valor de dos trbol, cinco de corazones, tres de diamantes, etc. El valor que tu le quieras dar, es por eso que los datos de entrada, van a hacer ledos por los identificadores de V (velocidad constante) y T (tiempo), en realidad pueden poner cualquier letra que ustedes deseen, pero yo les asigno esas letras para que lo entiendan mucho mejor, ahora veamos otro ejemplo para que lo tengan mas en claro.
2. Se necesita obtener el promedio simple de un estudiante a partir de sus tres notas parciales.
Solucin:
DATOS Identificadores Salida Promedio Entrada Primera Nota Parcial Segunda Nota Parcial Tercera Nota Parcial N1 N2 N3 P
Que tal les pareci fcil?, bueno haber les explico un poco, como ustedes saben el promedio simple de cualquier dato, se halla, sumando todos los dato y de ah dividiendo entre el numero de datos sumados, por ejemplo, les vamos a asignar valores a los identificadores ok. N1 = 14 N2 = 13 N3 = 15 P = (14 + 13 + 15) / 3 Entonces P (Promedio) tomara el valor de 14
Llegaron a entender, les recomiendo volver a leerlo si no lo han entendi, por que mas adelante les voy a dejar unos pequeos problemas para que ustedes lo resuelvan ok, ahora sigamos con los ejemplos.
3. Elaborar un algoritmo que solicite el nmero de respuestas correctas, incorrectas y en blanco, correspondientes a postulantes, y muestre su puntaje final considerando, que por cada respuesta correcta tendr 4 puntos, respuestas incorrectas tendr -1 y respuestas en blanco tendr 0.
Solucin:
DATOS Identificadores Salida Puntaje Final Entrada Nmero de Respuestas Correctas Nmero de Respuestas Incorrectas Nmero de Respuestas en Blanco Intermedio Puntaje de Respuestas Correctas Puntaje de Respuestas Incorrectas PRC PRI RC RI RB PF
Inicio Leer RC Leer RI Leer RB PRC = RC * 4 PRI = RI * -1 PF = PRC + PRI Escribir PF Fin
Seguro se estarn diciendo que no les haba dicho de los datos intermedios, bueno tienen razn y no es por lo que se me haya pasado, sino que tenia que explicarles con un ejemplo, buenotes explico, la parte Intermedio, aqu van todos los identificadores que solo vamos a almacenar algn valor temporalmente. Como lo es de asignarles los puntos de las respuestas correctas e incorrectas, no puse ningn intermedio para las respuestas en blanco ya que solo estas tiene un valor nulo sea cero, y para terminar con esta explicacin, aqu en el pseudocodigo existe una regla, la regla es que solo se van a usar los identificadores que definimos en la parte de datos, ya que si no lo defines, en un futuro cuando pasemos a programar en un procesador, este te botara un error. As que aprendan a definir todos los identificadores que van a usar para resolver un algoritmo.
4. Elaborar un algoritmo que permita ingresar el nmero de partidos ganados, perdidos y empatados, por Universitario de Deportes en el torneo de apertura, se debe de mostrar su puntaje total, teniendo en cuenta que por cada partido ganado obtendr 3 puntos, empatado 1 punto y perdido 0 puntos.
Solucin:
DATOS Identificadores Salida Puntaje Total Entrada Nmero de Partidos Ganados Nmero de Partidos Empatados Nmero de Partidos Perdidos Intermedio Puntaje de Partidos Ganados Puntaje de Partidos Empatados PPG PPE PG PE PP PT
Inicio Leer PG Leer PE Leer PP PPG = PG * 3 PPE = PE * 1 PT = PPG + PPE Escribir PT Fin
Se me olvidaba, creo que no les dije los operadores del pseudocodigo, estos son los siguientes: + * / ^ Suma Resta Multiplicacin Divisin Potencia
5. Se requiere el algoritmo para elaborar la planilla de un empleado. Para ello se dispone de sus horas laboradas en el mes, as como de la tarifa por hora.
Solucin:
DATOS Identificadores Salida Planilla Entrada Nmero de Horas Laboradas en el mes Tarifa por Hora HL TH P
6. Elabore un algoritmo que lea los 3 lados de un triangulo cualquiera y calcule su rea, considerar: Si A, B y C son los lados, y S el semipermetro.
A=
S * (S A) * (S B) * (S C)
Solucin:
DATOS Identificadores Salida rea del Triangulo Entrada Longitud del Lado A Longitud del Lado B Longitud del Lado C Intermedio Longitud del Semipermetro LS LA LB LC AT
Inicio Leer LA Leer LB Leer LC LS = (LA + LB + LC)/2 AT = [LS * (LS LA) * (LS LB) * (LS LC)] ^ 0.5 Escribir AT Fin
7. Elaborar un algoritmo que permita calcular el nmero de micro discos 3 necesarios para hacer una copia de seguridad, de la informacin almacenada en un disco cuya capacidad se conoce. Considerar que el disco duro esta lleno de informacin, adems expresado en gigabyte. Un micro disco tiene 1.44 megabyte y una gigabyte es igual a 1,024 megabyte.
Solucin:
DATOS Identificadores Salida Nmero de Micro Disco 3 Entrada Nmero de Gigabyte del Disco Duro Intermedio Nmero de Megabyte del Disco Duro MG GB MD
8. Se tiene los puntos A y B en el cuadrante positivo del plano cartesiano, elabore el algoritmo que permite obtener la distancia entre A y B.
A B C I S A
B ORDENADA
Solucin:
Inicio Leer AA Leer AB Leer OA Leer OB D = [(AB AA) ^ 2 + (OB OA) ^ 2] ^ 0.5 Escribir D Fin
INSTRUCCIN CONDICIONAL
Se emplea cuando es necesario representar una decisin, en base a la cual se realizan acciones excluyentes entre si.
SI <expresin condicional (lgica booleana)> ENTONCES Instruccin Verdadera (V) SINO Instruccin Falsa (F) FIN_SI
Las acciones se representan como instruccin V (cuando es verdadera), instruccin F (cuando es falsa), despus que las acciones se realizan, en algoritmo continua su secuencia, pues la condicin a terminado (FIN_SI) ejemplo:
EJERCICIOS
9. Elabora un algoritmo que permita averiguar si una persona debe de inscribirse para el SMO (Servicio Militar Obligatorio), sabiendo su ao de nacimiento.
Solucin:
Inicio Leer AN Leer AA E = AA - AN SI (E > 17) ENTONCES Escribir Debe de Inscribirse en el SMO SINO Escribir No debe de Inscribirse en el SMO FIN_SI Fin
10. Elabora un algoritmo que solicite la edad de 2 hermanos y muestre un mensaje indicando la edad del mayor y cuantos aos de diferencia tiene con el menor.
Solucin:
DATOS Identificadores Entrada Edad del Primer Hermano Edad del Segundo Hermano Intermedio Diferencia de Edades DE E1 E2
Inicio Leer E1 Leer E2 SI (E1 > E2) ENTONCES Escribir El Primer Hermano es el Mayor, por DE = E1 E2 SINO Escribir El segundo Hermano es el Mayor por DE = E2 E1 FIN_SI Escribir DE Fin
Como se habrn dado cuenta, no es tan difcil lo de instrucciones condicionales no?, como ustedes ven para iniciar y encerrar un SI, lo hacemos mediante unas lneas que indica de donde a donde va la funcin SI, esto nos quiere decir que podemos tener una instruccin condicional Si dentro de otra instruccin condicional SI, me entienden?, bueno para que lo entiendan mejor lo vern en el ejercicio 12, y si se han dado cuenta que para mostrar un mensaje no es necesario declarar un identificador que va a contener el mensaje, mas fcil nos seria mostrar el mensaje directamente, ya que se trata de una cadena, o mejor dicho de un texto. Para que lo entiendan mejor, el siguiente ejercicio lo haremos mostrando el mensaje mediante un identificador declarado okis.
11. Se tiene registrado la produccin (unidades) logradas por un operario a lo largo de la semana (lunes a sbado). Elabore un algoritmo que nos muestre o nos diga si el operario recibir incentivos sabiendo que el promedio de produccin mnima es de 100 unidades.
Solucin:
DATOS Identificadores Entrada Produccin Produccin Produccin Produccin Produccin Produccin Intermedio Produccin Total Produccin Promedia Salida Mensaje MSG PT PP del del del del del del da da da da da da Lunes Martes Mircoles Jueves Vienes Sbado PL PMa PMi PJ PV PS
Inicio Leer PL Leer PMa Leer PMi Leer PJ Leer PV Leer PS PT = (PL + PMa + PMi + PJ + PV + PS) PP = PT / 6 SI (PP >= 100) ENTONCES MSG = Recibir Incentivos SINO MSG = No Recibir Incentivos FIN_SI Escribir MSG Fin
12. Elabora un algoritmo para leer 3 nmeros enteros diferentes entre si, y determinar el nmero mayor de los tres.
Solucin:
DATOS Identificadores Entrada Primer Nmero Entero Segundo Nmero Entero Tercer Nmero Entero Salida Nmero Mayor NM N1 N2 N3
Inicio Leer N1 Leer N2 Leer N3 SI (N1 > N2) y (N1 > N3) ENTONCES NM = N1 SINO SI (N2 > N3) ENTONCES NM = N2 SINO NM = N3 FIN_SI FIN_SI Escribir NM Fin
Seguro que viendo este ejercicio ya han entendido que se puede tener a una instruccin condicional dentro de otra, esto se llama, instrucciones anidadas, pero hay una regla para hacer estas instrucciones anidadas, la regla es que para cada Si que usen debe haber un FIN_SI, pero estas a la vez pueden tener un SINO o no, depende como lo usen, por ejemplo, para hacer un instruccin anidada tenemos que tener obligado un SINO en el SI general me entienden, porque si este no tendra un SINO, nunca podramos validar la comparacin que hagamos en el segundo SI, que tenemos adentro del primer SI, me entienden?, bueno creo que esto lo vana tener mas en claro cuando ya lo llevemos al compilador. Mientras tanto sigamos haciendo unos cuantos ejercicios.
13. Elabora un algoritmo que sirva para identificar el tipo de triangulo conociendo sus tres lados.
Solucin:
DATOS Identificadores Entrada Primer Lado Segundo Lado Tercer Lado Salida Tipo de Triangulo TT L1 L2 L3
Inicio Leer L1 Leer L2 Leer L3 SI (L1 <> L2) y (L2 <> L3) y (L3 <> L1) ENTONCES TT = Escaleno SINO SI (L1 = L2) y (L2 = L3) ENTONCES TT = Equiltero SINO TT = Issceles FIN_SI FIN_SI Escribir TT Fin
CONDICIONES MULTIPLES
Cuando en un algoritmo se llega a un punto de realizacin de varias opciones, nos vemos obligados a usar condiciones mltiples, por que nos seria mas fcil de realizar la lgica, aunque tambin resulta hacerlo con la Instruccin condicional SI, pero este se nos hara muy tedioso, ya que tendramos que hacer varias instrucciones ya sean independientes o anidadas.
EN CASO (Expresin_Valor) Sea CASO Valor 1 Instruccin 1 CASO Valor 2 Instruccin 2 CASO Valor 3 Instruccin 3 CASO Valor 4 Instruccin 4 . . . CASO Valor n Instruccin n OTRO CASO Instruccin x [Opcional (Cuando seleccionado se realizar la instruccin imperativa)] FIN_CASO ningn valor
Al poner mas CASO la maquina no ser eficiente, para esto se utilizara otras estructuras, que mas adelante lo veremos, la mayora de uso de esta condicin mltiple se hace para nmeros. Para que lo entiendan mejor de cmo funciona veremos de cmo funciona esta condicin mltiple y despus veremos algunos ejercicios okis.
Compara
Verdadero
Expresin
Valor 1
Falso Compara Verdadero
Hacer Instruccin
FIN_CASO
Valor 2
Falso Compara Verdadero
Hacer Instruccin
FIN_CASO
Valor 3
Falso Compara Verdadero
Hacer Instruccin
FIN_CASO
Valor 4
Falso Compara Verdadero
Hacer Instruccin
FIN_CASO
Valor 5
Hacer Instruccin
FIN_CASO
Falso
Compara
Verdadero
Valor n
Hacer Instruccin
FIN_CASO
EJERCICIOS
14. Elabore un algoritmo que permita ingresar un nmero entero (1 a 10), y muestre su equivalente en romano.
Solucin:
Empecemos con la explicacin, aunque si ustedes tiene lgica, ya lo habrn entendido, pero igual les voy a explicar, lo que hace este algoritmo es solicitar el ingreso de un nmero entero que este en el rango del 1 10, y este lo reemplaza por su equivalente romano, por ejemplo: si el usuario ingresa un nmero 4 este se ira a la expresin de las condiciones mltiples, y mas o menos lo que hara el compilador es lo siguiente, en case del que el numero ingresado sea, en caso sea 1, la respuesta seria falsa, entonces pasara a la siguiente condicin, en caso sea 2, la respuesta seria tambin falsa, y pasara a la siguiente condicin, en caso sea 3, la respuesta seria otra vez falsa, y pasara a l a siguiente condicin, en caso sea 4, la respuesta seria verdadero, y hara la instruccin de asignarle el nmero IV en romanos al identificador ER, y luego pasara a dar fin a las condiciones mltiples, ya que encontr una condicin verdadera y pasara a escribir la respuesta ER, en caso de no encontrarla, el algoritmo dara una respuesta en blanco. Entendieron la explicacin?, bueno no les exijo que lo tengan todo en claro ahora mismo, solo que tengan una lgica coherente y que tengan muchas ganas de aprender, por que lo terminaran de entender cuando pasemos a diagramas de flujo y luego a codificar en Visual Basic 2005, y adems ya lo decid, vamos a resolver unos cuantos ejercicios en las plantillas de Aplicacin Para Consola, y despus haremos en la plantilla de Aplicacin para Windows, as que no se impacienten, por que nos falta todava mucho por aprender.
15. Elabore un algoritmo que permita ingresar el monto de venta alcanzado por un promotor durante el mes, luego de calcular la bonificacin que le corresponde sabiendo:
Bonificacin (%) 0 3 5 8
Solucin:
Inicio Leer MV EN CASO MV SEA CASO MV >= 0 y MV < 1000 TB = (0 * MV) / 100 CASO MV >= 1000 y MV < 5000 TB = (3 * MV) / 100 CASO MV >= 5000 y MV < 20000 TB = (5 * MV) / 100 CASO MV >= 20000 TB = (8 * MV) / 100 FIN_CASO Escribir TB Fin
16. Elabore un algoritmo que solicite un nmero entero y muestre un mensaje indicando la vocal correspondiente, considerando que la vocal A = 1.
Solucin:
Inicio Leer NE EN CASO NE SEA CASO 1 V = A CASO 2 V = E CASO 3 V = I CASO 4 V = O CASO 5 V = U OTRO CASO V = Valor Incorrecto FIN_CASO Escribir V Fin
Lo nico nuevo de este pseudocdigo es la condicin de OTRO CASO, esta condicin se usa para asignarle un valor en caso que el dato que se ingresa no tenga una respuesta, por ejemplo, si el usuario ingresa un nmero 3, este le dar una respuesta de I, pero si ingresa un nmero que no esta en el rango del 1 al 5, este le dar una respuesta de Valor Incorrecto.
17. Se desea leer un nmero entero de 2 cifras y que se muestre el nmero de unidades, decenas que lo componen.
Solucin:
DATOS Identificadores Salida Nmero de Decenas Nmero de Unidades Entrada Nmero Entero de 2 Dgitos Intermedio Cociente Entero Residuo Q R NE D U
18. Elabore un algoritmo que solicite un nmero entero y diferente a cero, e indique si es par.
Solucin:
DATOS Identificadores Entrada Nmero Entero Intermedio Cociente Entero Residuo Salida Mensaje MSG Q R NE
Inicio Leer NE Q = NE / 2 R = NE (Q * 2) SI (R = 0) ENTONCES MSG = Es Par SINO MSG = Es Impar FIN_SI Escribir MSG Fin
PROCESOS REPETITIVOS
Aquellas que se desarrollan en forma repetitiva un nmero determinado de veces. Procesos Cclicos Finitos; Se conoce el nmero de repeticiones a realizar, se controlan definiendo un intervalo para un contador de ciclos.
Solucin:
N 2 4 6 8 10
K Nmero ya Mostrado 1 2 3 4
20. Elaborar un algoritmo que permita mostrar el sueldo promedio de un grupo de empleados.
Solucin:
DATOS Identificadores Entrada Sueldo del Empleado Nmero de Empleados Intermedio Contador Suma de Sueldos Salida Sueldo Promedio SP K SS SE NE
Que les parece esto de Procesos Repetitivos, seguro que fcil, les explico un poco lo que hace este algoritmo, primero tenemos que saber cuantos sueldos de empleados van a ingresar, es por eso que le pedimos ingresar el numero de empleados (NE), despus teniendo el nmero de empleados empezamos a pedir el monto de sueldo de cada empleado (SE), y cada vez que ingrese un nuevo sueldo, lo sumaremos con los sueldos anteriores que hayan ingresado, hasta llegar el numero indicado de empleados, y al final lo dividimos la suma de todos los sueldos de todos los empleados (SS) entre en nmero de empleado (NE), y obtendremos al fin el promedio de sueldos del numero de empleados que haya ingresado el usuario (SP), por ejemplo, el usuario ingresa el nmero de empleados que va ingresar el sueldo de estos, supongamos que sea 10 empleados (NE), lo que hace el algoritmo es iniciar la suma de sueldos en valor nulo o mejor dicho cero (SS = 0) y luego har la contabilizacin, mejor dicho el usuario va a tener que ingresar 10 sueldos de 10 empleados, y este a la ves se irn sumando (SS = SS + SE), despus de ingresar todos los sueldo, se seguir a calcular el promedio de sueldos( SP = SS / NE), que va a ser la suma de sueldos (SS) dividido entre 10.
21. Elaborar un algoritmo que solicite la edad de 200 personas, y que muestre cuantos son mayores y menores de edad hay.
Solucin:
DATOS Identificadores Entrada Edad de Persona Salida Mayores Menores Intermedio Contador K MAY MEN EP
Inicio MEN = 0 MAY = 0 PARA K = 1 A 200 Leer EP SI EP < 18 ENTONCES MEN = MEN + 1 SINO MAY = MAY + 1 FIN_SI FIN_PARA Escribir MAY Escribir MEN Fin
22. Elaborar un algoritmo que solicite 2 nmero enteros y muestre su producto por el mtodo de sumas sucesivas.
Solucin:
DATOS Identificadores Entrada Primer Nmero Segundo Nmero Intermedio Contador Salida Producto P K PN SN
Reiniciar Ciclo (Suspende las Instrucciones siguiente del bucle y Avanza a la nueva repeticin) Instruccin Terminar Ciclo (Termina las instrucciones sin regresar al siguiente Bucle) Instruccin FIN_PARA
23. Elaborar un algoritmo que muestre 10 nmeros enteros a partir de 1 excepto los pares.
Solucin:
Inicio PARA K = 1 A 10 Q=k/2 R = k (Q * 2) SI (R = 0) ENTONCES Reiniciar Ciclo SINO Escribir N FIN_SI FIN_PARA Fin
ESTRUCTURAS REPETITIVAS
Cuando no se conoce el nmero de ciclo a realizar. Se debe prever que las expresiones lgicas llegue a ser falsa en algn momento, sino este llegara a formar un LOOP (Proceso repetitivo infinito que nunca termina, se da cuando la expresin lgica de control nunca llega a ser falsa)
MIENTRAS <Condicin Lgica> Instruccin Reiniciar Ciclo (Suspende las Instrucciones siguiente del bucle y Avanza a la nueva repeticin) Instruccin Terminar Ciclo (Termina las instrucciones sin regresar al siguiente Bucle) Instruccin FIN_MIENTRAS
Las instrucciones se realizan, siempre y cuando la lgica sea verdadera, en caso contrario, por no decir si llega a ser falsa, esta dar por terminado el algoritmo o mejor dicho el programa.
24. Elabore un algoritmo que muestre los trminos de la serie que sean menores a 1000.
1, 2, 5, 26
25. Elaborar un algoritmo que solicite ingresar letras hasta que este ingrese una vocal.
Solucin:
Inicio SEMAF = V MIENTRAS (SEMAF = V) Leer L EN CASO L SEA CASO A o a SEMAF = CASO E o e SEMAF = CASO I o i SEMAF = CASO O o o SEMAF = CASO U o u SEMAF = OTRO CASO SEMAF = FIN_CASO FIN_MIENTRAS Fin
R R R R R V
26. Elabore un algoritmo que muestre los trminos de la serie Fibonacci que sean menores a 100000. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Solucin: DATOS Identificadores Intermedio Primer Nmero Segundo Nmero Tercer Nmero A B C
Inicio A=0 B=1 C=A+B Escribir A Escribir B MIENTRAS (C < 100000) Escribir C A=B B=C C=A+B FIN_MIENTRAS Fin
TIPOS DE DATOS
A nivel de algoritmo, lo bsico es definir el tipo de dato, los siguientes tipos de datos son los siguientes:
! !
Numricos; Dgitos, cifras (Nmeros reales) Carcter; un smbolo que el computador puede reconoces (Letras, dgitos, signos de puntuacin, smbolos), representan un texto (no se utilizan en operaciones matemticas) Booleana; un valor lgico que puede ser verdadero (V) o falso (F).
27. Elaborar un algoritmo que solicite 2 nmeros enteros y un operador aritmtico y luego debe de mostrar el resultado de la operacin correspondiente.
+ - * ^
Solucin:
DATOS Identificadores Entrada Primer Nmero Segundo Nmero Operador Salida Resultado R Numrico N1 N2 OP Numrico Numrico Carcter Tipo de Dato
Inicio Leer N1 Leer N2 Leer OP EN CASO OP SEA CASO + R = N1 CASO - R = N1 CASO * R = N1 CASO ^ R = N1 OTRO CASO R=0 FIN_CASO Escribir R Fin
+ N2 N2 * N2 ^ N2
28. Elaborar un algoritmo que permita ingresar 10 letras cualquiera, y luego nos indique al final cuantas vocales y consonantes se ingresaron.
Solucin:
DATOS Identificadores Entrada Letra Intermedio Contador Salida Numero de Vocales Nmero de Consonantes NV NC Numrico Numrico K Numrico L Carcter Tipo de Dato
Inicio NV = 0 NC = 0 PARA K = 1 A 10 Leer L EN CASO L SEA CASO A o a NV = NV CASO E o e NV = NV CASO I o i NV = NV CASO O o o NV = NV CASO U o u NV = NV OTRO CASO NC = NC FIN_CASO FIN_PARA Fin
+1 +1 +1 +1 +1 +1
29. Elaborar un algoritmo para obtener el resultado del escrutinio en las elecciones del delegado del aula I B - 10, considerar que hay 60 electores y se han presentado 3 candidatos, todos votaron, el algoritmo debe de declara al ganador por mayora simple.
Solucin:
DATOS Identificadores Entrada Voto del Elector Intermedio Contador Candidato 1 Candidato 2 Candidato 3 Voto Nulo o Blanco Salida Ganador G Numrico K C1 C2 C3 C0 Numrico Numrico Numrico Numrico Numrico VE Numrico Tipo de Dato
Inicio C1 = 0 C2 = 0 C3 = 0 C0 = 0 PARA K = 1 A 60 Leer VE EN CASO VE SEA CASO 1 C1 = C1 + 1 CASO 2 C2 = C2 + 1 CASO 3 C3 = C3 + 1 OTRO CASO C0 = C0 + 1 FIN_CASO FIN_PARA SI (C1 > C2) y (C1 > C3) y (C1 > C0) ENTONCES G = C1 SINO SI (C2 > C3) y (C2 > C0) ENTONCES G = C2 SINO SI (C3 > C0) ENTONCES G = C3 SINO G = C0 FIN_SI FIN_SI FIN_SI Escribir G Fin
DIAGRAMA DE FLUJO
Smbolo
Descripcin
Terminal: Indica el inicio o fin del algoritmo Asignacin (procesos o instrucciones que realizar el algoritmo)
Escritura (Muestra los resultados o el mensaje deseado por el programador) Condicin Simple (SI), Condicin Mltiple (EN CASO)
Repeticin Finitas (PARA y MIENTRAS) Termino: Indica el termino de una repeticin finita (PARA y MIENTRAS)
Flechas de direccin
Conectores
31. Elaborara un algoritmo que solicite 3 nmeros enteros y muestre un mensaje indicando si forma una Terna Pitagrica.
32. Elabora un algoritmo que solicite un nmero entero y muestre el nombre del mes correspondiente. Ejemplo: Enero = 1.
33. Elabore un algoritmo que permita ingresar un nmero entero diferente a cero y muestre sus divisores.
Bueno, ya llegamos al final de esta primera entrega, que se llama, Lenguaje de Programacin, Programando con Visual Basic .Net 2005, como se habrn dado cuenta, no es nada difcil, as que solo les recomiendo que repasen todos lo que les he explicado y hemos hecho en este primer capitulo, por ejemplo pueden hacer todos los diagramas de flujo de los ejercicios del 1 al 29, para que aprendan sobre diagramas de flujo, bueno en realidad a mi no me gusta el mtodo de solucin de algoritmos, que es mediante diagramas de flujo, prefiero el pseudocdigo, lo veo mas fcil de entender, bueno les voy adelantando lo que les tengo preparado para el segundo capitulo. ! ! ! ! ! Introduccin a Visual Studio .Net 2005 Framework .Net 2 Elementos de la Programacin Introduccin a la Programacin de la Aplicacin de Consola en VB 2005 Resolveremos los primeros 8 ejercicios que hemos hecho en pseudocdigo en este capitulo, y unos ejercicios nuevos, para que terminen de entender
Como se han dado cuenta es casi pura teora lo que tocaremos el siguiente capitulo, se que es tedioso la teora pero creedme que es necesario, y adems van a entender y a saber para que esta hecho este nuevo Visual Basic .Net 2005. As que ya nos veremos hasta la prxima entrega, si no pasa algn inconveniente lo estar publicando el da 17 de enero del prximo ao. As que Feliz Navidad y Un Prospero Ao Nuevo 2006, y no tomen mucho okis. Byes
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
! Cuenta en Soles: 067-3008573552 ! Cuenta en Dlares: 067-3008573560
www.interbank.com.pe"
Capitulo II
INDICE
CAPITULO II
Microsoft .Net Microsoft .Net FrameWork La Plataforma Microsoft .Net El Marco .Net Los Bloques de Servicios .Net Visual Studio .Net Servidores Empresariales .Net Marco .Net Qu es el Marco .Net? Componentes del Marco .Net Common Language Runtime (CLR) Libreras de Clases del Marco .Net ADO .Net: Datos y XML ASP .Net: Formularios y Servicios Web Terminologa usada en el Marco .Net Visual Studio .Net 2005 Qu es el Visual Studio .Net? Ventajas de usar MS Visual Studio .Net Lenguajes de la Plataforma .Net Administracin de Ventanas Diseadores Herramientas de Bases de Datos Introduccin a Visual Basic .Net 2005 Lo nuevo en Visual Basic .Net 2005 Extensin de los ficheros de cdigo. Tipos de ejecutables.
01 01 02 02 02 02 02 03 03 03 03 04 04 04 04 05 05 05 05 05 05 06 07 07 07 08
MICROSOFT .NET
Microsoft.Net es una nueva tecnologa que responde a la necesidad de comunicacin total entre negocios de sistemas heterogneos y con gran capacidad de procesamiento. Microsoft .Net proporciona todas las herramientas y tecnologas para construir Aplicaciones Web Distribuidas usando protocolos Web estndares tales como HTTP (HiperText Transfer Protocol), XML (extensible Markup Lnguage) y SOAP (Simple Object Access Protocol). Las aplicaciones creadas en la plataforma :net podrn ser usadas por un gran nmero de clientes, tales como PC, PC de bolsillo (Palm PC), celulares digitales, PC de juegos (PC Games), PC de auto (Auto PC), PC Televisor (Ultimate TV), etc.
Lo que dice el MSDN Library. "El .NET Framework es un entorno multi-lenguaje para la construccin, distribucin y ejecucin de Servicios Webs y aplicaciones." "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.
El Marco .Net Es la parte principal de la plataforma .Net. Esta formado por un compilador comn (CLR) y un conjunto de componentes utilizados por los lenguajes de Visual Studio .Net
Los Bloques de Servicios .Net Son un conjunto de servicios Web que permiten la integracin entre los usuarios y las aplicaciones clientes. Actualmente, Microsoft tiene construidos dos servicios. ! ! Microsoft Passport Microsoft Hailstorm
Visual Studio .Net Visual Studio .Net proporciona un entorno de desarrollo de alto nivel para construir aplicaciones basadas en el Marco .Net. Esta tecnologa permite simplificar la creacin, distribucin y evolucin continua de aplicaciones Windows, aplicaciones Web y servicios Web que sean seguras y escalables.
Servidores Empresariales .Net Estos servicios proporcionan escalabilidad, fiabilidad, administracin e integracin entre soluciones, entre los principales tenemos: ! ! ! ! ! ! ! ! Microsoft Microsoft Microsoft Microsoft Microsoft Microsoft Microsoft Microsoft Windows 2000 Server SQL Server 2000 Biz Talk Server 2000 Host Integration Exchange 2000 Enterprise Server Application Center 2000 Internet Security and Acceleration Server 2000 Commerce Server 2000
MARCO .Net
Qu es el Marco .Net? Es la parte central de la plataforma Microsoft .Net y consiste en un compilador comn llamado CLR (Comon Language Runtime).
Componentes del Marco .Net ! ! ! ! ! ASP .Net: Formularios Web Servicios Web Windows Form: Interfaz de usuario ADO .Net: Daros y XML Librera de clases del Marco .Net Lenguaje Comn en tiempo de ejecucin (CLR)
Common Language Runtime (CLR) Conocido como el lenguaje comn en tiempo de ejecucin. Es el Runtime comn que soportan todos los lenguajes del Marco .Net y que realiza la mayor parte de las funciones para que corran las aplicaciones .Net. Es el que se encarga de compilar y ejecutar una aplicacin. Principales tareas del CLR: ! ! ! ! ! Cargar las clases y administrar la metadata Convierte el lenguaje intermedio Microsoft a cdigo nativo Administra la ejecucin del cdigo Administra automticamente objetos Soporte de Thread, control de errores, etc.
En otras palabras: El Common Lenguage Runtime (CLR) es una serie de libreras dinmicas (DLLs), tambin llamadas assemblies, que hacen las veces de las DLLs del API de Windows as como las libreras runtime de Visual Basic o C++. Cualquier ejecutable depende de una forma u otra de una serie de libreras, ya sea en tiempo de ejecucin como a la hora de la compilacin. Pues el CLR es eso, una serie de libreras usadas en tiempo de ejecucin para que nuestros ejecutables o cualquiera basado en .NET puedan funcionar. Se acab eso de que existan dos tipos de ejecutables: los que son autosuficientes y no dependen de libreras externas o los que necesitan de libreras en tiempo de ejecucin para poder funcionar, tal es el caso de las versiones anteriores de Visual Basic. Por otro lado, la librera de clases de .NET Framework proporciona una jerarqua de clases orientadas a objeto disponibles para cualquiera de los lenguajes basados en .NET, incluido el Visual Basic. Tambin permite crear Threads o hilos o tramas de ejecucin y otras cosas que antes nos estaban vetadas
Libreras de Clases del Marco .Net Conjunto de clases comunes. Unifica los diferentes marcos existentes: APIs, MFC, WFC, VB y VBA. La clase base principal se llama System.
ADO .Net: Datos y XML ADO .Net proporciona soporte mejorado para el modelo de programacin desconectada. ADO .Net tambin proporciona un amplio soporte XML.
ASP .Net: Formularios y Servicios Web ASP .Net es un marco de programacin, incorporable en el CLR y puede construir aplicaciones Web potentes.
CTS: Sistema de Tipos Comn, tipos de datos y estructuras iguales en cualquier lenguaje. CLS: Especificacin en lenguaje comn, conjunto de normas que deben cumplir las DLLs. MSIL: Lenguaje intermedio de Microsoft, cdigo semicompilado independiente del CPU Datos y Cdigo Administrado: Cuando se utiliza caractersticas del Marco .Net. Assemblies: Un Assemblie es uno o mas archivos EXE y/o DLLs en que se distribuye una aplicacin. NameSpace: Un NameSpace es un nombre lgico donde se encuentra un componente.
Qu es el Visual Studio .Net? Visual Studio .Net es una herramienta rpida de desarrollo para crear aplicaciones usando el Marco .Net, CLR, la librera de clases, ADO .Net, ASP .Net, etc. Visual Studio .Net permite la integracin y el uso cruzado de los lenguajes de programacin .Net de Microsoft.
Ventajas de usar MS Visual Studio .Net ! ! ! Creacin de pginas Web mediante formularios Web. Creacin de Servicios Web XML
Lenguajes de la Plataforma .Net La plataforma .Net es neutral con respecto al lenguaje de programacin y admite prcticamente cualquiera de ellos, trae siguientes beneficios: ! ! ! ! Cdigo rehusable y compartido. Acceso a APIs. Herencia cruzada entre lenguajes. Manejo de errores cruzado entre lenguajes.
Administracin de Ventanas ! ! ! Auto Ocultar: Nueva caracterstica que permite ocultar una ventana automticamente permitiendo liberar espacio en el IDE. Ventana Acopladas: Al igual que en el VB 6, esta caracterstica permite acoplar la ventana, las cuales estarn fijas en el IDE. Fichas de Documentos: Nueva caracterstica que permite un acceso rpido a las ventanas a travs de las fichas que aparecen en la parte superior del editor. Ventana de Ayuda Rpida. Nueva caracterstica que permite mostrar en una ventana todos los temas relacionados al elemento donde se encuentre el cursor.
Diseadores ! Windows Form Designer: Se muestra al crear un proyecto Windows Application o Windows Control Library habilitando los controles Windows en el ToolBox. Web Form Designer: Se muestra al crear un proyecto ASP .Net Web Application habilitando los controles para Web Form y los controles HTML en el ToolBox para disear una pgina Web.
! !
Component Designer: Se muestra al crear un proyecto Class Library o Windows Service habilitando los controles Windows en el ToolBox, creando una interfase rehusable desde otra aplicacin. Web Service Designer: Se muestra al crear un proyecto Web Service habilitando los controles Windows, Components, etc. Server Explorer: Es una excelente herramienta que permite acceder a bases de datos, administrar Servidores, Servicios Web, Aplicaciones COM+, etc. Data Adapter Wizard: Es un asistente que permite crear un objeto DataAdapter el cual es un comando con el cual se podr generar un conjunto de registros o DataSet.
Herramientas de Bases de Datos ! ! Query Designer: Es un diseador de consultas SQL de manera sencilla arrastrando tablas y eligiendo los campos que se vern. Database Project: Es un tipo de plantilla de proyecto que sirve para trabajar con una base de datos, para lo cual debe de existir una conexin con un origen de datos. Estos proyectos permiten administrar una base de datos. Editor de Script: Es una herramienta que permite administrar bases de datos remotas como SQL Server, Oracle, etc. Permite definir el Script para crear tablas, consultas, vistas, etc. Depurador de Procedimientos Almacenados. Permite realizar seguimientos paso a paso de los Stores Procedures, permitiendo un mayor control y seguimiento de errores.
Visual Basic .Net es uno de cuatro lenguajes .Net que provee Microsoft para la construccin de lo ltimo en componentes, aplicaciones y servicios. Con esta nueva versin, los desarrolladores pueden construir todas las aplicaciones de ASP .Net para servicios Web XML.
Lo nuevo en Visual Basic .Net 2005 Visual Basic .Net ofrece numerosas caractersticas nuevas y mejoradas, como herencia, interfaces y sobrecarga, la palabra clave Overrides, miembros compartidos y constructores, que lo convierten en un eficaz Lenguaje de Programacin orientado a objetos. Ahora se puede crear aplicaciones multiproceso y escalables utilizando subprocesamiento mltiple explcito. Otra caracterstica nueva de Visual Basic .Net incluye el control estructurado de excepciones, atributos personalizados y compatibilidad con CLS (Common Language Specification, Especificacin de Lenguajes Comn. Tambin se incluyen el control estructurado de excepciones, delegados y varios tipos de datos nuevos. Visual Basic .Net 2005 tiene nuevas funciones que simplifican la manipulacin del bits y la declaracin de variables de bucle. Con esta nueva versin, los desarrolladores pueden construir todas las aplicaciones ASP .Net para servicios Web XML.
Caractersticas: ! ! Con Visual Basic se podr disear dos tipos de aplicaciones: Aplicaciones para Windows y Aplicaciones para Internet. El acceso de datos ser usando ADO .Net el cual nos permitir trabajar con DataSers desconectados.
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. 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, (realmente no es una aplicacin o ejecutable, sino un compendio de distintos tipos de elementos...), servicios Web, servicios Windows, etc.
Capitulo III
INDICE
CAPITULO III
Visual Basic .Net 2005 Por qu Visual Basic? Por qu Console Application y no Windows Application? IDE de Visual Basic .Net 2005 Tipos de Datos del Visual Basic .Net 2005 Console Read ReadLine Write WriteLine mbito de Variables Dim Static Private Public Constantes Creacin de un Proyecto de Consola de Aplicacin Solucin del Ejercicio 01 Errores de Ejecucin Solucin del Ejercicio 02 Solucin del Ejercicio 03 Solucin del Ejercicio 04 Solucin del Ejercicio 05 Clase Math Campos Pblicos Mtodos Pblicos Solucin del Ejercicio 06 Solucin del Ejercicio 07
01 02 02 03 06 09 09 09 09 09 10 10 10 10 11 11 11 13 15 17 19 20 21 22 22 22 23 24
25 25 26
Por qu Visual Basic? La respuesta es muy sencilla, el Visual Basic te permite realizar unos buenos diseos en tus programas, adems de que el programa que realices en Visual Basic se podr correr (ejecutar) en casi todos los sistemas operativos de la Microsoft, y lo mejor, bueno a mi opinin, es mucho mas fcil de realizar los cdigos, ya que tiene una ayuda de auto complementar.
Por qu Console Application y no Windows Application? Utilizamos la Console Applicatin (Consola de Aplicacin) por que ustedes, los que tienen deseos de aprender, les ser mas fcil de aprender la lgica que van a necesitar para resolver cualquier algoritmo que se les presente, y adems por que casi todos los cdigos que vamos a usar en la Console Application, lo vamos a usar en Windows Application. Bueno, no uso el Windows Application para comenzar a programar, por que me parece que les enseara a manejar moto sin saber manejar bicicleta, me entienden no?, de lo que habla?, en otras palabras, si no aprenden a ver como uno puede capturar y mostrar datos mediante cdigo y no mediante unos controles, al principio les seria mas fcil, pero conforme avancemos no les va a quedar en claro, y es por eso que uso primero Console Application, pero no se preocupen, que solo lo vamos a usar unos cuantos captulos noms, okis.
En Visual Studio .Net 2005 existe un ambiente de trabajo o IDE (Integrated Development Environment = Ambiente Integrado de Desarrollo) el cual permite trabajar con el Visual Basic, Visual C#, Visual J# y Visual C++, el que permite disear las interfaces grficas de usuario de una o mas aplicaciones, es decir el que se puede crear formularios que contengan a otros formularios u objetos diversos como los TextBox, ComboBox, etc.
Primero veremos la pantalla de presentacin del Visual Basic 2005 y seguido veremos el Ambiente de Desarrollo.
Bueno como se dan cuenta, yo voy a utilizar el Visual Basic 2005 en Ingles, ya que todava la versin en espaol esta en versin Beta 2, as que va a tener algunos cambios, en cambio con la versin en ingles, la versin que yo utilizo es la final, wueno si no tienes Money (Dinero) para comprar la versin original, le hara una sugerencia de descargarse la versin de evaluacin, para que puedan aprender, aunque les dure unos 60 a 90 das, pero antes se tienen que inscribir en el MSDN de la Microsoft para poder descargarlo en Imgenes de CD (*.ISO), para que lo puedan grabar en CD y llevrselos a su casa. Eso solo es una sugerencia, okis.
1. Barra de Titulo
2. Barra de Mens
4. Explorador de Solucin
5. Pantalla de Propiedades
Byte
System.Byte
1 byte
Char
System.Char
2 bytes
Date
System.DateTime 8 bytes
Decimal
System.Decimal
16 bytes
Double
System.Double
8 bytes
Integer
System.Int32
4 bytes
8 bytes
Object
System.Object (class)
4 bytes
2 bytes
Single
System.Single
4 bytes
System.String (clase)
Se puede convertir a: Double o Decimal sin producir overflow. Se pueden usar la letra F y el smbolo para indicar que es un nmero Single: Dim unSingle As Single = 987.125F Dim unSingle2 As Single = 65478.6547! Depende de Una cadena de caracteres Unicode. la Valores: plataforma de 0 to aproximadamente 2 billones (2^31) de caracteres Unicode.
Se puede usar el smbolo $ para indicar que una variable es un String. (heradada de Depende de Cada miembro de la estructura Tipos definidos por System.ValueType) la tiene su rango, dependiendo del el usuario plataforma tipo de dato que representa.
(estructuras)
Read, nos captura o lee el dato que el usuario ingresa. Variable = Console.Read ReadLine, nos captura o lee el dato que el usuario ingresa, pero a la vez hace un cambio de lnea al terminar de leer el dato. Variable = Console.ReadLine Write, nos permite mostrar ya sea una cadena (texto) o un dato numrico (nmero). ! Para mostrar texto y datos calculados o capturados
Console.Write(Texto a Mostrar {0},{1}, {2}, , {n}, Var0, Var1, Var2,, Varn)
WriteLine, nos permite mostrar ya sea una cadena (texto) o un dato numrico (nmero), y a la vez hace un cambio de lnea, despus de haber mostrado el dato. ! Para mostrar texto y datos calculados o capturados
Console.WriteLine(Texto a Mostrar {0},{1}, {2}, , {n}, Var0, Var1, Var2,, Varn)
As que lo deben de tener en claro, que por cada variable o dato que queremos mostrar despus del texto que mostramos, tendremos que agregar {0}, en donde el 0 indica que numero de dato se va mostrar, mejor dicho lo convierte en un array y este muestre el valor del array comenzando del 0, as que si queremos mostrar 5 datos despus del texto tendremos que escribir {0}, {1},{2}, {3}, {4}, y si queremos mostrar tres datos despus del texto tendremos que escribir desde el 0 al 2, espero que les halla quedado en claro, jejejeje, bueno seguiremos con los conceptos.
AMBITO DE VARIABLES
El mbito indica en que lugar de la aplicacin desea utilizar la variable y puede ser una de las siguientes palabras claves. Dim, Static, Private o Public.
Dim: Se puede utilizar a nivel de procedimiento y a nivel del formulario. Si se declara una variable a nivel de procedimiento con la palabra Dim, Visual Basic reinicializa (borra su contenido) la variable cada vez que ejecuta el procedimiento. Ejemplo: Dim a As Integer Static: Se utiliza solo a nivel del procedimiento. Cuando una variable se declara con la palabra Static, Visual Basic no reinicializa la variable cada vez que se ejecuta el procedimiento, solo lo hace la primera vez. Esto quiere decir que la variable conserva su valor entre una llamada al procedimiento y otra. Ejemplo: Static b As Double Private: Se utiliza solo a nivel del modulo e indica que la variable es privada; es decir, solo va a ser reconocida dentro del mdulo donde ha sido declarada. Ejemplo: Private c As String
CONSTANTES
Es un elemento con un nombre determinado que mantiene un valor constante durante el desarrollo de todo el programa el cual no se puede cambiar. Las constantes se definen con la instruccin Const por ejemplo:
Const e = 10
Nota: La definicin de las constantes puede empezar con las palabras Public o Private. Para que sean pblicas o privadas. Por defecto son privadas.
1. ingresar a Microsoft Visual Basic .Net. En la barra de estado haga clic en el botn Inicio y luego en la opcin Todos los Programas y de clic en Microsoft Visual Basic 2005 Express Edition. 2. Dentro del visual Basic tenemos dos formas para crear un nuevo proyecto, la primera es: ! File -> New Project
Y de la otra forma es mediante Start Page (pgina de Inicio), le damos clic en Create Project.
3. Luego nos aparecer la ventana de New Project (Nuevo Proyecto), despus introduciremos el nombre de Ejecicio01, Visual Basic proporciona una ruta predeterminada para el ensamblado de los archivos peo se puede cambiar haciendo clic en el botn Browser, bueno eso lo haremos cuando guardemos el archivo. Por ahora vamos seleccionaremos el icono de Console Application y le ponemos el nombre que ya les dije.
4. Al dar clic en OK nos aparecer la ventana de cdigo del modulo que acabamos de crear, el modulo tendr el nombre de Module1, as que lo cambiaremos por Ejercicio01, en la ventana de propiedades.
As que todo el cdigo que vamos a escribir lo haremos del Main. Ahora resolveremos el primer ejercicio que hemos hecho en Pseudocdigo.
Bueno yo estoy utilizando las variables (Identificadores) que hemos declarado en el Pseudocdigo, para que ustedes lo tengan mas en claro, por ahora utilizo el tipo de variable Integer (entero), ya que no creo que sea necesario usar el tipo Double, aunque puede ser ms exacto en el resultado (por los decimales que muestra).
5. Ejecutar el programa creado. Tenemos tres formas para hacerlo. ! ! Presionando la tecla F5 Eligiendo en el men Debug -> Start Debugging
Por cada dato que ingresemos tendremos que presionar la tecla Enter, para que el programa reciba ese dato.
ERRORES DE EJECUCIN
Este error es no tan comn, por que creo que no existe personas que borraran un End Sub, End Module, Sub Main o Module Ejercicio01.
Este si es un error, digamos que cotidiano, este error se debe que cuando el usuario ingresa un tipo de dato diferente al requerido, existe un desbordamiento de Pila, as que lo podremos restringir ya sea en el cdigo, pero eso de restricciones de ingreso de datos lo veremos en los proyectos de Windows Application.
6. Guardar el proyecto que acabamos de crear, para esto existe tres formas:
Luego nos aparecer la siguiente ventana, aqu podemos cambiar la direccin donde se va a guardar el proyecto (Browse), por default creara una carpeta con el nombre del proyecto.
Ya vieron que no es nada del otro mundo, solo basta aprender bien el cdigo de capturar y mostrar datos, nada mas, solo por este capitulo les escribir el comentario por cada cdigo que utilice, as que aprndanlo por que en el prximo capitulo ya lo har sin comentarios okis, mientras tanto sigamos con la solucin de los ejercicios que hemos hecho en el primer capitulo, si el de los Pseudocdigos, exactamente.
Solucin del Ejercicio N 02 Primero crearemos un nuevo proyecto llamado Ejercicio02 y luego cambiaremos el nombre del modulo, que por default tiene el de Module1.vb as que lo cambiaremos por este Ejercicio02.vb.
Antes de continuar, haremos un pequeo cambio en visual Basic, para bien de ustedes que estn empezando a programar, as que primero nos dirigiremos en la barra de men en la opcion de Tool y daremos clic en Options.
Luego nos aparecer la siguiente ventana en donde nos ubicaremos en Projects and Solutionsn y luego daremos clic, y de nuevo daremos clic en VB Defaults y cambiaremos una sola cosa, en donde dice Option Strict por default aparece en Off, as que lo cambiaremos por On . Y luego le daremos clic en el botn de Ok.
Esta opcin, si se activa, se indica con Option Strict On, obligar a que los tipos de datos que uses sean del tipo adecuado, de esta forma, har que las cosas las hagas o las programes cmo debes... seguramente acabars dejando esa opcin en el valor que el vb.NET trae por defecto... valor que no creo que cambien en la versin del espaol, en este caso, ya que usando Option Strict On es ms complicado hacer las conversiones entre tipos diferentes de datos) Por ejemplo, con el Option Strict On no podemos hacer esto: Dim unChar As Char = "N", ya que "N" es una constante del tipo String. El compilador de Visual Basic nos dira algo as: Option Strict no permite la conversin entre Char y String
Solucin del Ejercicio N 03 Crearemos un proyecto llamado Ejercicio03, y el modulo se llamara igual.
Solucin del Ejercicio N 04 Crearemos un proyecto llamado Ejercicio04, y el modulo se llamara igual.
Solucin del Ejercicio N 05 Crearemos un proyecto llamado Ejercicio05, y el modulo se llamara igual.
Sorry por ponerles imgenes del cdigo, es que si lo pongo en texto, ustedes lo pueden seleccionar, copiar y lo pegaran en el editor de cdigo del Visual Basic, y as no aprenderan mucho ya que solo se dedicaran a copiar, pegar, as que escriban noms el cdigo para que aprendan okis.
CLASE MATH
Permite utilizar funciones matemticas muy tiles, a continuacin veremos un cuadro extrado de la ayuda y seguidamente veremos como utilizamos la clase Math en la solucin del Ejercicio N 06.
Campos Pblicos E PI Representa la base logartmica natural, especificada por la constante e. Representa la relacin entre la longitud de la circunferencia de un circulo y su dimetro, especificada por la constante "
Mtodos Pblicos Abs Acos Asin Atan Atan2 BigMul Ceiling Cos Cosh DivRem Exp Floor IEEERemainder Log Log10 Max Min Pow Round Sign Sin Sinh Sqrt Tan Tanh Sobrecargado. Devuelve el valor absoluto de un nmero. Devuelve el ngulo cuyo coseno es el nmero especificado. Devuelve el ngulo cuyo seno es el nmero especificado. Devuelve el ngulo cuya tangente corresponde al nmero especificados. Devuelve el ngulo cuya tangente es el cociente de dos nmero especificados Calcula el producto completo de dos nmeros de 32 bits. Devuelve el nmero entero ms pequeo mayor o igual que el nmero especificado. Devuelve el coseno del ngulo especificado. Devuelve el coseno hiperblico del ngulo especificado. Sobrecargado. Devuelve el cociente de dos nmeros y pasa tambin como parmetro de salida el resto de la divisin. Devuelve e elevado a la potencia especificada. Devuelve el nmero entero ms grande menor o igual que el nmero especificado. Devuelve el resto de la divisin de dos nmeros especificados. Sobrecargado, devuelve el logaritmo de un nmero especificado. Devuelve el logaritmo en base 10 de un nmero especificado. Sobrecargado. Devuelve el mayor de dos nmeros. Sobrecargado. Devuelve el menor de dos nmeros. Devuelve un nmero especificado elevado a la potencia especificada. Sobrecargado. Devuelve el nmero ms prximo al valor especificado. Sobrecargado. Devuelve un valor que indica el signo de un nmero. Devuelve el seno del ngulo especificado. Devuelve el seno hiperblico del ngulo especificado. Devuelve la raz cuadrada de un nmero especificado. Devuelve la tangente del ngulo especificado. Devuelve la tangente hiperblica del ngulo especificado.
Solucin del Ejercicio N 06 Crearemos un proyecto llamado Ejercicio06, y el modulo se llamara igual.
Solucin del Ejercicio N 07 Crearemos un proyecto llamado Ejercicio07, y el modulo se llamara igual.
Solucin del Ejercicio N 08 Crearemos un proyecto llamado Ejercicio08, y el modulo se llamara igual.
Ejercicio Propuesto: A. Elaborar un algoritmo, en Pseudocdigo, diagrama de flujo y en codificacin, este algoritmo debe de hallar el valor absoluto de cualquier nmero.
Bueno seores con esto acaba la segunda entrega de este manual, se que ha sido muy poco, pero as es la vida, mientras tanto, ir elaborando la tercera entrega, esta tercera entrega no se cuantos captulos va a tener, pero si se que temas vamos a tocar, tocaremos lo siguiente: ! ! ! ! Instruccin Condicional Condiciones Mltiples Procesos Repetitivos Estructuras Repetitivas
Y nada ms, aunque parece muy poco por los ttulos, pero creo que va a ser una de las entregas mas largas que voy a hacer, pero no se preocupen, que ya estar comenzando a hacer la tercera entre y cuarta, solo les pido algo, repacen lo que hemos hecho en este capitulo y si pueden repasen la primera entrega, me importa mucho que sepan y entiendan la lgica del Pseudocdigo, para que a la hora que entremos a programar en aplicaciones de ventanas, no estn en las nubes, okis, bueno conmigo ser hasta la prxima entrega, ya saben aqu les dejo mi correo por si tienen alguna duda.
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe#
Capitulo IV
INDICE
CAPITULO IV
Funciones de Conversin Smbolos de Comparacin Operadores And AndAlso Or Xor OrElse Not Is To Funcin Fecha Now Date Year Month Day WeekDay DateAdd DateDiff DatePart Instruccin Condicional Solucin del Ejercicio 09 Solucin del Ejercicio 10 Solucin del Ejercicio 11 Solucin del Ejercicio 12 Solucin del Ejercicio 13
01 02 02 02 02 03 03 05 05 05 06 06 06 06 06 06 06 06 07 07 07 07 10 11 11 12 13
Condiciones Mltiples Solucin del Ejercicio 14 Solucin del Ejercicio 15 Solucin del Ejercicio 16 Solucin del Ejercicio 17 Solucin del Ejercicio 18
14 15 16 16 17 17
FUNCIONES DE CONVERSIN
Como se habrn dado cuenta que al activar la opcin de Option Strict, este nos obliga que tenemos que utilizar funciones de conversin para cada tipo de dato, con lo que no hacamos, si no lo estaba activado, como lo fue en los 8 primeros ejercicios, las funciones mas utilizadas estarn de color verde, las funciones de conversin son las siguientes:
Nombre de la Tipo de datos Valores del argumento funcin que devuelve "expresin" CBool(expresion) Boolean Cualquier valor de cadena o expresin numrica. CByte(expresion) Byte De 0 a 255; las fracciones se redondean. CChar(expresion) Char Cualquier expresin de cadena; los valores deben ser de 0 a 65535. CDate(expresion) Date Cualquier representacin vlida de una fecha o una hora. CDbl(expresion) Double Cualquier valor Double, ver la tabla anterior para los valores posibles. CDec(expresion) Decimal Cualquier valor Decimal, ver la tabla anterior para los valores posibles. CInt(expresion) Integer Cualquier valor Integer, ver la tabla anterior para los valores posibles, las fracciones se redondean. CLng(expresion) Long Cualquier valor Long, ver la tabla anterior para los valores posibles, las fracciones se redondean. CObj(expresion) Object Cualquier expresin vlida. CShort(expresion) Short Cualquier valor Short, ver la tabla anterior para los valores posibles, las fracciones se redondean. CSng(expresion) Single Cualquier valor Single, ver la tabla anterior para los valores posibles. CStr(expresion) String Depende del tipo de datos de la expresin. Nota: Todos los objetos de vb.NET tienen unos mtodos para realizar conversiones a otros tipos, al menos de nmero a cadena, ya que tienen la propiedad .ToString que devuelve una representacin en formato cadena del nmero en cuestin (igual que CStr). CType(expresion, El indicado en Cualquier tipo de datos el segundo Tipo) parmetro Val(expresion) Double Una cadena de caracteres. Fix(expresion) Depende del Cualquier tipo de datos tipo de datos de la expresin
Una de las funciones ms utilizadas, para hallar restos es la funcin Mod, ya sea para diversas soluciones ya sean Matemticas, fsicas y entre otras.
Mod: Devuelve el resto de una divisin, la sintaxis es la siguiente: Dividendo Mod Divisor
Smbolos de Comparacin = < > <= >= <> igual Menor que Mayor que menor o igual mayor o igual Distinto
OPERADORES
And El operador And solo utilizamos cuando queremos que se cumpla una serie de expresiones, por ejemplo:
Como vemos en este ejemplo, hacemos dos comparaciones, el primero si a es mayor que b, y la segunda si a es mayor que c, si estas dos expresiones (comparaciones) resultan verdaderas, nos mostrar un mensaje dicindoos que a es mayor que b y c.
AndAlso El operador AndAlso comprueba tambin una seria de expresiones, pero a comparacin del And, este comprueba siempre y cuando la expresin anterior resulta ser verdadera por ejemplo:
Como vemos en este ejemplo, hacemos dos comparaciones, el primero si a es mayor que b, y la segunda si a es mayor que c, si la primera expresin (a > b) resulta ser verdadera har la comparacin de la segunda expresin (a > c), pero si no lo es, ya no se evaluara la expresin siguiente. Pero si las dos resultan verdaderas, nos mostrar un mensaje dicindoos que a es mayor que b y c.
Or El operador Or solo utilizamos cuando queremos que se cumpla una expresin de toda una serie de expresiones, por ejemplo:
If Promedio < 0 Or Promedio > 20 Then Console.WriteLine("Ingrese la Nota Correcta (1 20)") End If
En este ejemplo, si promedio es menor a cero o promedio es mayor a 20 nos mostrar un mensaje indicndonos que la nota que se ingreso es incorrecta, solo basta que una de las dos expresiones evaluadas sea verdadera.
Xor El operador Xor lo utilizaremos para casos especiales ya que realiza una operacin de exclusin lgica entre dos expresiones de tipo Boolean o bien una exclusin bit a bit entre dos expresiones numricas, por ejemplo: Resultado = expresin1 Xor expresin2
Resultado: Requerido. Cualquier variable numrica o de tipo Boolean. En una comparacin de tipo Boolean, el resultado ser la exclusin lgica de dos expresiones. En operaciones bit a bit, el resultado ser un valor numrico resultante de la disyuncin bit a bit de dos expresiones numricas. Expresin1: Requerido. Cualquier expresin numrica o de tipo Boolean. Expresin2: Requerido. Cualquier expresin numrica o de tipo Boolean del mismo tipo que expression1
Y el bit en Expresin2 es 0 1 0 1
Resultado ser 0 1 1 0
Dim A As Integer = 10 Dim B As Integer = 8 Dim C As Integer = 6 Dim Resultado As Boolean Resultado = A > B Xor B > C Resultado = B > A Xor B > C Resultado = B > A Xor C > B
En este ejemplo se usa el operador Xor para realizar una exclusin lgica entre cada uno de los bits de dos expresiones numricas. El bit en el modelo resultante se establecer si antes se han establecido solamente uno de los bits correspondientes a los operndoos. Dim A As Integer = 10 Dim B As Integer = 8 Dim C As Integer = 6 Dim Resultado As Integer Resultado = (A Xor B) ' Returns 2. Resultado = (A Xor C) ' Returns 12. Resultado = (B Xor C) ' Returns 14.
Esto de Xor, he tomado referencia del MSDN de Visual Basic 2005, ya que aqu se encuentra unos ejemplos ms claros, mientras tanto sigamos haciendo los dems operadores.
If Promedio < 0 OrElse Promedio > 20 Then Console.WriteLine("Ingrese la Nota Correcta (1 20)") End If
En este ejemplo si la primera expresin resulta verdadera, ya no realizara la siguiente expresin, en cambio si resultara falsa, realizara la siguiente expresin.
Not Este operador se utiliza para hacer negaciones, ms en los casos de tipo Bolean por ejemplo:
Dim Variable As Boolean = True Dim Resultado As Boolean Resultado = Not Variable ' Retorna False. Primero declaramos una variable de tipo Boolean y le asignamos un valor de Trae, pero despus en la instruccin negamos el valor almacenado y lo cambiamos por False (Not Variable), as que la variable resultado tendr el valor de False, sencillo no?.
Is Este operador nos permite hacer comparaciones ya sea Booleanas o de String, este nos devolver un valor Boolean de la expresin dada, por ejemplo:
Este ejemplo es parecido al anterior solo que le preguntamos si la Variable es de valor Numrico (IsNumeric(Variable)), pero como es de tipo de cadena (String) nos devolver un valor de False,
Este bucle correr o mejor dicho, realizara 10 veces la instruccin de A=A+1 Ya que le indicamos que la variable K va a valer del 1 al 10.
Funcin Now() Esta funcin nos devuelve la fecha y hora actual del sistema, en un formato largo.
Funcin Date() Esta funcin nos devuelve la fecha actual del sistema.
Funcin WeekDay(Fecha) Obtiene el nmero del da de la semana, tomando el domingo como valor nmero 1.
INSTRUCCIN CONDICIONAL
Como vimos en la primera entrega, estas instrucciones nos permiten tomar decisiones, dndonos un resultado de Verdadero o Falso, a menudo esta instruccin es la ms utilizada por todos los programadores, as que tendrs que aprendrtela de memoria, y no te preocupes que es muy fcil de usar. 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
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)> 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
Wueno a mi parecer y si es que no me equivoco, esta es una de las formas mas usadas, ya que son if anidados, como lo haba en los pseudocdigos, el else es opcional, como lo ven en este ejemplo, si b es igual a cero, nos mostrara un mensaje de Error de Divisin, pero si es falso, har la siguiente evaluacin que ser si a es diferente de b har la divisin y nos mostrar el resultado de la divisin,
Bueno, despus de tanta teora, empezaremos a resolver los ejercicios de la primera entrega, si, los mismo que hicimos en Pseudocdigo,
Module Ejercicio09 'Este algoritmo permite averiguar si una persona debe de inscribirse 'en el SMO (Servicio Militar Obligatorio), sabiendo su ao de nacimiento. Sub Main() Dim AA, AN, E As Integer Console.Write("Ingrese el Ao de Nacimiento : ") AN = CInt(Console.ReadLine) 'Capturamos el ao del sistemas y lo almacenamos 'en la variable AA AA = Microsoft.VisualBasic.Year(Now) E = AA - AN If E > 17 Then Console.WriteLine("Debe de Inscribirse en el SMO") Else Console.WriteLine("No Debe de Inscribirse en el SMO") End If Console.ReadLine() End Sub End Module
En el pseudocdigo, nosotros pedamos el ingreso de la fecha actual, pero teniendo funciones que nos permiten capturar la fecha actual del sistema, mejor opte por resolverlo as, pero si no les gusta, pueden hacerlo como el pseudocdigo, y el otro detalle que tengo que recalcar es que ahora estoy utilizando la opcin Option Strict, el cual me obliga a utilizar funciones de conversin de datos, que ya hemos visto al principio de esta entrega, as que no se pueden quejar. Para utilizar las funciones de fecha, tendremos que hacer mencin a la clase Microsoft, y de ah a la sub clase VisualBasic, aqu se encontrarn casi todas las funciones, ya sean de fecha, de cadenas, de conversin, etc.
Les explicare un poco, la funcin Now me devuelve la fecha actual del sistema, que seria mas o menos as: 11-02-2006 01:57:25 pm, por lo tanto nosotros no queremos saber toda esta fecha larga por decirle, as que utilizamos la funcin Year que capturara el ao de toda la fecha larga, mejor dicho solo nos obtendr el siguiente dato que es 2006, nada mas, si que es sencillo no?.
Module Ejercicio10 'Este algoritmo solicita la edad de 2 hermanos y muestre un mensaje indicando 'la edad del mayor y cuantos aos de diferencia tiene con el menor. Sub Main() Dim E1, E2, DE As Integer Console.Write("Ingrese la Edad del Primer Hermano : ") E1 = CInt(Console.ReadLine) Console.Write("Ingrese la Edad del Segundo Hermano : ") E2 = CInt(Console.ReadLine) If E1 > E2 Then DE = E1 - E2 Console.Write("El Primer Hermano es Mayor por {0} {1}", DE, " aos") Else DE = E2 - E1 Console.Write("El Segundo Hermano es Mayor por {0}{1}", DE, " aos") End If Console.ReadLine() End Sub End Module
Module Ejercicio11 'Este algoritmo nos muestre si el operario recibir incentivos sabiendo 'que el promedio de produccin mnima es de 100 unidades. Sub Main() Dim PL, PMa, PMi, PJ, PV, PS As Integer Dim PP As Single Console.Write("Ingrese la Produccin del dia Lunes: ") PL = CInt(Console.ReadLine) Console.Write("Ingrese la Produccin del dia Martes: ") PMa = CInt(Console.ReadLine) Console.Write("Ingrese la Produccin del dia Miercoles: ") PMi = CInt(Console.ReadLine) Console.Write("Ingrese la Produccin del dia Jueves: ") PJ = CInt(Console.ReadLine) Console.Write("Ingrese la Produccin del dia Viernes: ") PV = CInt(Console.ReadLine) Console.Write("Ingrese la Produccin del dia Sbado: ") PS = CInt(Console.ReadLine) PP = CSng((PL + PMa + PMi + PJ + PV + PS) / 6) If PP >= 100 Then Console.WriteLine("Recibira Incentivos") Else Console.WriteLine("No Recibira Incentivos") End If Console.ReadLine() End Sub End Module
Module Ejercicio12 'Este algoritmo permite leer 3 nmeros enteros diferentes entre si 'y determina el nmero mayor de los tres. Sub Main() Dim N1, N2, N3, NM As Integer Console.Write("Ingrese el Primer Nmero: ") N1 = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") N2 = CInt(Console.ReadLine) Console.Write("Ingrese el Tercer Nmero: ") N3 = CInt(Console.ReadLine) If N1 > N2 And N1 > N3 Then NM = N1 Else If N2 > N3 Then NM = N2 Else NM = N3 End If End If 'Segunda forma 'If N1 > N2 And N1 > N3 Then 'NM = N1 'ElseIf N2 > N3 Then 'NM = N2 'Else 'NM = N3 'End If Console.WriteLine("El Nmero Mayor es: {0}", NM) Console.ReadLine() End Sub End Module
Me olvidaba algo de explicarles, la funcin Console.ReadLine() nos devuelve una cadena, es por eso que tenemos que convertirlo al tipo de dato de la variable que estamos almacenando.
Module Ejercicio13 'Este algoritmo sirve para identificar el tipo de triangulo 'conociendo sus tres lados. Sub Main() Dim L1, L2, L3 As Integer Dim TT As String Console.Write("Ingrese el Lado 1: ") L1 = CInt(Console.ReadLine) Console.Write("Ingrese el Lado 2: ") L2 = CInt(Console.ReadLine) Console.Write("Ingrese el Lado 3: ") L3 = CInt(Console.ReadLine) If L1 <> L2 And L2 <> L3 And L3 <> L1 Then TT = "Escaleno" Else If L1 = L2 And L2 = L3 Then TT = "Equilatero" Else TT = "Issceles" End If End If 'Segunda Forma 'If L1 <> L2 And L2 <> L3 And L3 <> L1 Then 'TT = "Escaleno" 'ElseIf L1 = L2 And L2 = L3 Then 'TT = "Equilatero" 'Else 'TT = "Issceles" 'End If Console.WriteLine("El Tipo de Triangulo Ingresado es {0}", TT) Console.ReadLine() End Sub End Module
CONDICIONES MULTIPLES
Este tipo de condiciones lo usamos para tener varios tipos de compariciones (expresiones a evaluar).
Sintaxis:
Select Case <expresin a evaluar> Case <lista de expresiones> Instrucciones Case <otra lista de expresiones> Instrucciones Case Else 'si no se cumple ninguna de las listas de expresiones End Select
Ejemplo:
Select Case i Case 3 : 'Instruccin a realizar Case 6 To 11 ' Instruccin a realizar Case 14, 17 ' Instruccin a realizar Case Is > 25 ' Instruccin a realizar Case Else ' Instruccin a realizar End Select
En el ejemplo, hacemos varias comprobaciones, si i vale 3 haremos la instruccin que sigue despus de los dos puntos (podemos ejecutar solo una instruccin despus de los dos puntos, si en caso hubiera mas instrucciones a ejecutar, estas instrucciones las pondramos en la parte inferior del Case), en cambio si tiene un valor de 6 a 11 ejecutara la instruccin que se encuentra en su inferior, o si tiene el valor de 14 17, ejecutara la instruccin que se encuentra en su inferior, o si i es mayor que 25, realizara la instruccin que se encuentra en su inferior, y por ultimo si no cumple ninguna comparacin, existe el Case Else, que ejecutara su instruccin, siempre y cuando no se cumpla ninguna expresin en los dems Case.
Module Ejercicio14 'Este algoritmo permite ingresar un nmero entero (1 a 10) 'y muestra su equivalente en romano. Sub Main() Dim NE As Integer Dim ER As String Console.Write("Ingrese Un Nmero Entero (1 - 10): ") NE = CInt(Console.ReadLine) Select Case NE Case 1 : ER = "I" Case 2 : ER = "II" Case 3 : ER = "III" Case 4 : ER = "IV" Case 5 : ER = "V" Case 6 : ER = "VI" Case 7 : ER = "VII" Case 8 : ER = "VIII" Case 9 : ER = "IX" Case 10 : ER = "X" Case Else : ER = "No Existe" End Select Console.WriteLine("Su Equivalente en Romano es: {0}", ER) Console.ReadLine() End Sub End Module
Como se ve en este ejemplo, utilizamos una expresin por cada Case, as que esta instruccin la escribir despus de los dos puntos de la expresin evaluada.
Solucin del Ejercicio 16 Module Ejercici16 'Este algoritmo solicita un nmero entero y muestre un mensaje 'indicando la vocal correspondiente, considerando que la vocal A = 1. Sub Main() Dim NE As Integer Dim V As String Console.Write("Ingrese Un Nmero (1 - 5): ") NE = CInt(Console.ReadLine) Select Case NE Case 1 : V = "A" Case 2 : V = "E" Case 3 : V = "I" Case 4 : V = "O" Case 5 : V = "U" Case Else : V = "No Existe" End Select Console.WriteLine("El Equivalente en vocal es: {0}", V) Console.ReadLine() End Sub End Module
Module Ejercicio17 'Se desea leer un nmero entero de 2 cifras y que se muestre el nmero de 'unidades, decenas que lo componen. Sub Main() Dim NE, D, U, Q, R As Integer Console.Write("Ingrese Un Nmero Entero de 2 Dgitos: ") NE = CInt(Console.ReadLine) Q = CInt(NE / 10) R = NE - (Q * 10) D=Q U=R Console.WriteLine("Tiene {0} {1} {2} {3}", D, " Decenas y ", U, " Unidades") Console.ReadLine() End Sub End Module
Module Ejercicio18 'Este algoritmo solicita un nmero entero y diferente a cero 'e indica si es par. Sub Main() Dim NE, Q, R As Integer Dim MSG As String Console.Write("Ingrese Un Nmero Entero: ") NE = CInt(Console.ReadLine) Q = CInt(NE / 2) R = NE - (Q * 2) If R = 0 Then MSG = "Es Par" Else MSG = "Es Impar" End If Console.WriteLine("El Nmero que Ingreso {0}", MSG) Console.ReadLine() End Sub End Module
Capitulo V
INDICE
CAPITULO V
Procesos Repetitivos For / Next For Each Solucin del Ejercicio 19 Solucin del Ejercicio 20 Solucin del Ejercicio 21 Solucin del Ejercicio 22 Funcin Reset Funcin Exit Solucin del Ejercicio 23 Estructuras repetitivas While / End While Do / Loop Solucin del Ejercicio 24 Solucin del Ejercicio 25 Solucin del Ejercicio 26 Solucin del Ejercicio 27 Solucin del Ejercicio 28 Solucin del Ejercicio 29 Solucin Del Problema Propuesto Solucin del Problema A Ejercicios Despedida
01 02 02 02 03 03 04 04 04 05 06 06 06 08 08 09 10 11 12 13 13 14 16
PROCESOS REPETITIVOS
Los procesos repetitivos o llamados bucles, se utilizan para repetir el o los cdigos, un nmero determinado de veces, para esto usaremos el For, que nos permitir repetir un nmero 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
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
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:
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.
Module Ejercicio19 'Elabore un algoritmo que contenga los nmero pares del 1 al 10 Sub Main() Dim N, K As Integer N=2 Console.WriteLine(N) For K = 1 To 4 N=N+2 Console.WriteLine(N) Next Console.ReadLine() End Sub End Module
Module Ejercicio20 'Este algoritmo permite mostrar el sueldo promedio de un grupo de 'empleados. Sub Main() Dim SE, NE, K, SS As Integer Dim SP As Single Console.Write("Ingrese el Numero de Empleados: ") NE = CInt(Console.ReadLine) SS = 0 For K = 1 To NE Console.Write("Ingrese el Sueldo {0}: ", K) SE = CInt(Console.ReadLine) SS = SS + SE Next SP = CSng(SS / NE) Console.WriteLine("El Sueldo Promedio es: {0}", SP) Console.ReadLine() End Sub End Module
Module Ejercicio21 'Este algoritmo solicita la edad de 200 personas, y muestra 'cuantos son mayores y menores de edad hay. Sub Main() Dim EP, MAY, MEN, K As Integer MAY = 0 MEN = 0 For K = 1 To 200 Console.Write("Ingrese la Edad : ") EP = CInt(Console.ReadLine) If EP < 18 Then MEN += 1 Else MAY += 1 End If Next Console.WriteLine("Usted ha Ingresado {0} {1}", MEN, " Menores de Edad") Console.WriteLine("Usted ha Ingresado {0} {1}", MAY, " Mayores de Edad") Console.ReadLine() End Sub End Module
Module Ejercicio22 'Este algoritmo solicita 2 nmero enteros y muestra su producto 'por el mtodo de sumas sucesivas. Sub Main() Dim PN, SN, K, P As Integer Console.Write("Ingrese el Primer Nmero: ") PN = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") SN = CInt(Console.ReadLine) P=0 For K = 1 To SN P += PN Next Console.WriteLine("El Producto Hallado Por Sumas Sucesivas: {0}", P) Console.ReadLine() End Sub End Module
Funcin Reset: Esta funcin nos permite reiniciar un ciclo de proceso, o mas aun podemos volver a un formato original de un control, esto ya lo veremos de aca mas adelante cuando tocaremos las ventanas de aplicacin, que va a ser mas o menos de aca a unas 2 o 3 entregas mas.
Funcin Exit: Esta funcin nos permite salir ya sea de un proceso o un bucle, tambin salir de toda una funcin, clase, y funcin principal Main.
Module Ejercicio23 'Este algoritmo muestra 10 nmeros enteros a partir de 1 excepto 'los pares. Sub Main() Dim Q, R, K As Integer For K = 1 To 20 Q = CInt(K / 2) R = K - (Q * 2) If R = 0 Then Reset() Else Console.WriteLine("Nmero {0}", K) End If 'Segunda Forma 'If R <> 0 Then 'Console.WriteLine("Nmero {0}", K) 'End If Next Console.ReadLine() End Sub End Module
ESTRUCTURAS REPETITIVAS
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.
Sintaxis:
While <expresin> Lo que haya que hacer mientras se cumpla la expresin End While
Este cdigo escribir el valor de i hasta que el valor de i tome el valor de 10 o ms.
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 1 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 evala 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 Loop Until <expresin>
Module Ejercicio24 'Este algoritmo muestra los trminos de la serie 'que sean menores a 1000. '1, 2, 5, 26 Sub Main() Dim S As Integer S=1 While (S < 1000) Console.Write(" {0} ", S) S = CInt(Math.Pow(S, 2) + 1) End While Console.ReadLine() End Sub End Module
Module Ejercicio25 'Elaborar un algoritmo que solicite ingresar letras 'hasta que este ingrese una vocal. Sub Main() Dim L, SEMAF As String SEMAF = "V" While SEMAF = "V" L = Console.ReadLine Select Case L Case "A", "a" SEMAF = "R" Case "E", "e" SEMAF = "R" Case "I", "i" SEMAF = "R" Case "O", "o" SEMAF = "R" Case "U", "u" SEMAF = "R" Case Else SEMAF = "V" End Select End While 'Presionar ENTER por cada letra ingresada End Sub End Module
Module Ejercicio26 'Este algoritmo muestra los trminos de la serie Fibonacci que sean 'menores a 100000. '0, 1, 1, 2, 3, 5, 8, 13, 21, 34 Sub Main() Dim A, B, C As Integer A=0 B=1 C=A+B Console.Write(" {0}", A) Console.Write(" {0}", B) While (C < 100000) Console.Write(" {0}", C) A=B B=C C=A+B End While Console.ReadLine() End Sub End Module
Module Ejercicio27 'Elaborar un algoritmo que solicite 2 nmeros enteros y un operador aritmtico 'y luego debe de mostrar el resultado de la operacin correspondiente. ' + Suma ' - Resta ' * Multiplicacin ' / Divisin Sub Main() Dim N1, N2 As Integer Dim R As Single Dim OP As String Console.Write("Ingrese el Primer Nmero: ") N1 = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") N2 = CInt(Console.ReadLine) Console.Write("Ingrese el Operador: ") OP = Console.ReadLine Select Case OP Case "+" : R = CSng(N1 + N2) Case "-" : R = CSng(N1 - N2) Case "*" : R = CSng(N1 * N2) Case "/" : R = CSng(N1 / N2) Case Else : R = 0 End Select Console.WriteLine("El Resultado de la Operacin es: {0}", R) Console.ReadLine() End Sub End Module
Module Ejercicio28 'Este algoritmo permite ingresar 10 letras cualquiera, y luego nos 'indica al final cuantas vocales y consonantes se ingresaron. Sub Main() Dim L As String Dim NV, NC, K As Integer For K = 1 To 10 L = Console.ReadLine Select Case L Case "A", "a" : NV += 1 Case "E", "e" : NV += 1 Case "I", "i" : NV += 1 Case "O", "o" : NV += 1 Case "U", "u" : NV += 1 Case Else : NC += 1 End Select Next Console.WriteLine("Usted Ingreso {0} {1} {2} {3}", NV, " Vocales y ", NC, " Consonantes") Console.ReadLine() 'Presionar ENTER por cada letra ingresada End Sub End Module
Module Ejercicio29 'Este algoritmo permite obtener el resultado del escrutinio en las 'elecciones del delegado del aula I - B - 10, considerar que hay 60 electores y 'se han presentado 3 candidatos, todos votaron, el algoritmo debe de declara 'al ganador por mayora simple. Sub Main() Dim VE, K As Integer Dim C1, C2, C3, C0 As Integer Dim G As String For K = 1 To 60 Console.Write("Voto: ") VE = CInt(Console.ReadLine) Select Case VE Case 1 : C1 += 1 Case 2 : C2 += 1 Case 3 : C3 += 1 Case Else : C0 += 1 End Select Next If C1 > C2 AndAlso C1 > C3 AndAlso C1 > C0 Then G = "Candidato 1" ElseIf C2 > C3 AndAlso C2 > C0 Then G = "Candidato 2" ElseIf C3 > C0 Then G = "Candidato 3" Else G = "Votos Nulos" End If Console.WriteLine("El Ganador es: {0}", G) Console.ReadLine() End Sub End Module
Problema A.
Module ValorAbsoluto 'Este algoritmo halla el valor absoluto de cualquier nmero. Sub Main() Dim Num As Integer, Val As Double Console.Write("Ingrese Un Nmero Cualquiera: ") Num = CInt(Console.ReadLine) Val = Math.Abs(Num) Console.WriteLine("Le valor Absoluto de {0}{1}{2}", Num, " es ", Val) Console.ReadLine() End Sub End Module
EJERCICIOS
1. Zodiaco, El usuario debe de ingresar el da y mes de su nacimiento, y este me debe de decir, a que signo zodiacal pertenece. 2. Ecuacin, El usuario debe de ingresar tres nmeros cualquiera, el programa me debe de mostrar las dos soluciones.
X1 = ( -b+ d ) / ( 2 *a ) X2 = ( -b- d ) / ( 2 *a )
3. Fraccin, El usuario debe de ingresar el numerado y el denominador y nos deber de mostrar la fraccin simplificada. 4. Notas, El usuario debe de ingresar su promedio obtenido y este nos mostrara un mensaje dependiendo del rango de las notas
Promedio 0a5 6 a 10 11 a 15 16 a 20
5. Hora, dada la hora del da en horas, minutos y segundos encuentre la hora del siguiente segundo. Por ejemplo: si son las 10:58:40 nos deber de mostrar lo siguiente: 10:58:41. 6. Sueldo, Si el sueldo de un empleado es 1000 o menos se le descuenta el 10 %, si esta entre 1000 y 2000 el % % sobre el adicional, y si esta arriba de 2000, el 3 % sobre el adicional, Elabore un programa que lea el sueldo y muestre el salario neto y el impuesto. 7. Signo, Elabore un programa que lea un nmero y obtenga el signo, su parte entera y su parte fraccionaria. 8. Algoritmo, Elabore un programa que muestre un algoritmo que nos permita evaluar la funcin:
g(x)
Si Si Si
9. Triangulo, Elabore un programa que pida tres longitudes, y compruebe si pueden formar un triangulo y luego clasifique el triangulo segn los lados. Para saber si forman un triangulo deber de cumplir lo siguiente: LadoA<LadoB+LadoC y LadoB<LadoA+LadoC y LadoC<LadoB+LadoA. 10. Mayor, Elaborar un programa que lea tres nmero e indique cual es el mayor. 11. Expresin, Elaborar un programa, que lea un valor x y encuentre el valor numrico de la siguiente expresin: y = (x-3)/(x2-25). 12. Mltiplo, Elabore un programa que lea tres nmeros (n y d1, d2) y determine si n es mltiplo de d1 y de d2. 13. Bisiesto, Elaborar un programa que lea un ao y este nos indique si el ao es bisiesto, tomar en cuenta que un ao bisiesto es aquel ao que tiene 366 das y adems es mltiplo de 4, pero no mltiplo de 100 pero si de 400. 14. Ordenar, Elabora un programa que ordene de mayor a menor 3 nmeros ingresados por el teclado. 15. Ecuacin, Elabore un programa que resuelva una ecuacin de primer grado, teniendo en cuenta que debe de ingresar un coeficiente (a) y un termino independiente (b). x = -b/a. 16. Producto, Elabore un programa que lea dos nmeros, si los dos nmeros son positivos calcule su producto, en caso contrario calcule su suma. 17. Menor, Elaborar un programa que sin usar estructuras repetitivas, lea 5 nmeros y determine el menor. 18. Ordenados, Elaborar un programa que lea 5 nmeros y diga si estn ordenados ascendentemente. 19. rea, Elabora un programa que lea tres nmeros a, b, c y determine si pueden formar un triangulo comprobando que p>a, p>b y p>c donde p es el semiperimetro y equivale a: p=(a+b+c)/2. Luego calcule el rea del triangulo usando la frmula de Hern: A = p(p-a)(p-b)(p-c). 20.Funcin, Elabore un programa que nos permita evaluar la funcin:
f(x)
Si Si Si
Bueno seores con esto acaba la Tercera entrega de este manual, se que ha sido muy poco, pero les estoy dejando 20 pequeo ejercicios para que practiquen, mientras tanto yo seguir elaborando la cuarta entrega, en donde tocaremos lo siguiente: ! Arreglos ! Funciones ! Polimorfismo
Dependiendo si nos alcanza tiempo voy a ver si puedo hacer unos cuantos ejercicios sobre clases y punteros, para dar por finalizado los programas en Consolas de Aplicacin y comenzar a programar en Ventanas de Aplicacin, as que traten de resolver los ejercicios, que todo lo que hemos tocado ac lo aplican en estos ejercicios, no hay nada nuevo, pero igual les estar entregando las soluciones en la siguiente entrega, okis, bueno conmigo ser hasta la prxima entrega, ya saben aqu les dejo mi correo por si tienen alguna duda.
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe#
Capitulo VI
INDICE
CAPITULO VI
01 01 02 03 04 06 07
ARREGLOS
Array Unidimensional
Un Array (arreglo) es un indicador que puede almacenar varios valores simultneamente. Cada uno de estos valores se identifica mediante un nmero al cual se llama ndice. As, para acceder al primer elemento del array habra que usar el ndice cero, para el segundo el ndice uno, para el tercero el ndice dos, y as sucesivamente. Vamos a ver cmo se declara un Array
En efecto, tal como pueden apreciar, el array ser utilizable nicamente a partir de su declaracin. Por ejemplo:
En este ejemplo, el nmero 3 que est dentro de los parntesis indica el nmero total de elementos + 1 de que constar el array. Puesto que todos los arrays estn basados en cero, esto es, el primer elemento del array es cero. Por lo tanto, en este caso, el ltimo elemento sera 3, ya que son cuatro y no tres los elementos que lo componen (0, 1, 2 y 3). Veamos un ejemplo algo ms completo y despus lo comentamos:
Dim Numeros(3) As Integer Dim K As Integer Numeros(0) = 1 Numeros(1) = 2 Numeros(2) = 3 Numeros(3) = 4 For K = 0 to 3 Console.WriteLine("Indice [{0}{1}{2}", K, "] = ", Numeros(K)) Next
= = = =
1 2 3 4
Bueno ahora se ve mas claro lo que hablo, como se habrn dado cuenta al declarar un array e indicar los elementos que va a contener dicho array, siempre debemos de tener en cuenta de esto: Numero de elementos 1, por ejemplo, si queremos un array de 4 elementos tendramos que indicarle as: Array (3), por que seria el numero de elementos 1 en este caso 4 1 = 3. Aunque es un poco difcil de acostumbrarse, ya que en las versiones antiguas no eran as, se parecen un poco al C, C++.
Array Multidimensional
Los arrays multidimensionales son aquellos que constan de dos o ms dimensiones, es decir, que cada elemento del array viene definido por dos o ms ndices. Veamos un ejemplo de declaracin de un array multidimensional (en este caso, ser tridimensional, es decir, con tres dimensiones):
Como vemos, hay tres letras dentro de los parntesis, separadas por comas, lo cual indica que el array es tridimensional, puesto que los tres ndices del mismo se separan uno de otro por comas. Veamos un pequeo ejemplo que lo clarifique un poco ms:
Este array es bidimensional y servira para almacenar una lista de alumnos por Nombres y Apellidos, tenemos un array bidimensional (el primer ndice del array nos almacenar los nombres y el segundo ndice nos almacenar los apellidos). Veamos un poco de cdigo y una tabla para que se hagn una idea de cmo se almacena esto:
0 1 2 3
Bueno parece que esta un poco claro, lo de arrays, en esta tabla he separado por indicie, mejor dicho lo que declaro en la variable lo he graficado, como?, bueno as: tenemos nuestro array llamado Alumnos(1,3), todos sabemos que va a tener dos columnas y cuatro filas, as que en la columna 0 voy a almacenar los nombres y el la columna 1 sus apellidos, guindome de los ndices de cada nombre que ingrese, en otras palabras en el array Alumnos, en la columna 0 y en la fila 0 voy a almacenar el nombre de Jos, as que en la columna 1 y en la misma fila 0 voy a almacenar su apellido Vargas, y as sucesivamente hasta que se llene el array. Ahora veamos unos ejercicios para que lo entiendan mejor.
EJERCICIOS
34. Se desea mostrar los cuatros primeros nmeros positivos y el nmero del ndice en donde es almacenado en el array unidimensional.
Solucin:
Module Ejercicio34 'Ejemplo de un Array Unidimensional Sub Main() Dim ArrayUnidimensional(3) As Integer Dim X, Num As Integer For X = 0 To 3 Num = X + 1 ArrayUnidimensional(X) = Num Next Console.WriteLine() Console.WriteLine("Array Unidimensional 4") Console.WriteLine() For X = 0 To 3 Console.WriteLine("Indice [{0}{1}{2}", X, "] = ", ArrayUnidimensional(X)) Next Console.ReadLine() End Sub End Module
Ahora expliquemos, primero declaramos un array unidimensional llamado: ArrayUnidimensional, este va a contener 4 elementos, por lo tanto entre los parntesis pondremos el numero de elementos menos uno, sea 3, despus declaramos una variable que va a comportarse (funcionar) como un contador, as que primero almacenamos los valores en el array, en el ndice 0 tendr almacenado el valor de 1, en el ndice 1 tendr almacenado el valor 2 y as sucesivamente hasta almacenar los cuatro elementos. Despus pasaremos a mostrar elemento por elemento con el for, tomando desde el ndice 0 a 3, y eso es todo lo que hace ese cdigo.
35. Se desea mostrar los diecisis primeros nmeros positivos y el nmero del ndice en donde es almacenado en el array bidimensional.
Solucin:
Module Ejercicio35 'Ejemplo de un Array Bidimensional Sub Main() Dim ArrayBidimensional(3, 3) As Integer Dim X, Y, Num As Integer For X = 0 To 3 For Y = 0 To 3 Num = Y + 1 If X = 1 Then Num += 4 ElseIf X = 2 Then Num += 8 ElseIf X = 3 Then Num += 12 End If ArrayBidimensional(X, Y) = Num Next Next Console.WriteLine() Console.WriteLine("Array Bidimensional 4 x 4") Console.WriteLine() For X = 0 To 3 For Y = 0 To 3 Console.WriteLine("Indice [{0}{1}{2}{3}{4}", X, "][", Y, "] = ", ArrayBidimensional(X, Y)) Next Next Console.ReadLine() End Sub End Module
Bueno expliquemos, primero declaramos el array bidimensional que va a ser ArrayBidimensional(3,3), como ustedes saben, este array va a contener 16 elementos y no 9 como parece, despus almacenamos los valores mediante un For, mejor dicho, almacenamos los valores mediante una estructura de repeticin, primero almacenaremos los valores de la primera fila, as que el array bidimensional ser as: cuando X valga 0 ser y Y valga 0, ArrayBidimensional(0,0) y almacenaremos el valor de 1, por lo tanto X va a mantener su valor de 0 y Y tendr el valor de 1, por lo tanto el array ser as: ArrayBidimensional(0,1) va a tener el valor de 1 y as sucesivamente hasta que el valor de X sea 1, esto nos indicara que tocara llenar la fila 1 por lo tanto cuando X valga 1 y Y valga 0 el array ser as: ArrayBidimensional(1,0) va a contener el valor de 5, bueno si estn algo confundido, veamos grficamente como estara almacenado el array.
ArrayBidimensional(3,3)
Y 0 1 2 3 0 1 5 9 13 1 2 6 10 14 2 3 7 11 15 3 4 8 12 16
Grficamente eso es lo que hara la codificacin, con respecto a al almacenar de elementos en el array, y para mostrar los elementos, seria casi lo mismo, por no decir lo mismo, primero muestra el elemento que est en el ndice (0,0), y despus el del ndice (0,1), y as sucesivamente, segn lo que indique el For. Para que les quede un poco mas claro la idea de los array, resolveremos dos ejercicios ms de arrays, uno de unidimensional y el otro bidimensional, cada uno respectivamente con su grfico para que les sea ms claro.
36. Se desea mostrar los Nombres y Apellidos de 4 alumnos que estn almacenados en arrays unidimensionales diferentes.
Solucin: Module Ejercicio36 'Este algoritmo contiene dos Array, uno que almacena los nombres 'y el otro almacena los apellidos y despus muestra los nombres y apellidos Sub Main() Dim Nombres(3), Apellidos(3) As String Dim X As Integer Nombres(0) = "Joel" Nombres(1) = "Nahum" Nombres(2) = "Krizia" Nombres(3) = "Giselle" Apellidos(0) = "Chuco" Apellidos(1) = "Chuco" Apellidos(2) = "Rupay" Apellidos(3) = "Valverde" For X = 0 To 3 Console.Write("indice [{0}{1}{2}", X, "] = ", Nombres(X)) Console.WriteLine(" {0}", Apellidos(X)) Next Console.ReadLine() End Sub End Module
Para este ejercicio hemos declarado dos arrays uno llamado Nombres y otro llamado Apellidos ambos van a contener 4 elementos y van a ser de tipo cadena (String) ya que van a almacenar textos, despus de declararlos pasaremos a almacenar valores en los arrays, una vez almacenado mediante un For, empezaremos a mostrar los nombres y los apellidos, cuando el contador valga 0, se mostrar los elementos del ndice 0 de ambos arrays, as sucesivamente hasta mostrar los cuatro elementos, mas o menor se almacenara as los array, grficamente.
Nombres(3) Apellidos(3)
0 Joel Chuco
3 Giselle Valverde
Como se ve en el grfico, en el ndice 0 del array Nombres figura mi nombre y en el array Apellidos figura mi apellido, y as sucesivamente con los dems elementos.
Solucin: Module Ejercicio37 'Este algoritmo muestra los Nombres y Apellidos almacenados 'en un Array Bidimensional Sub Main() Dim NomApe(1, 3) As String Dim X1, X2, Y As Integer NomApe(0, 0) = "Joel" NomApe(0, 1) = "Nahum" NomApe(0, 2) = "Krizia" NomApe(0, 3) = "Giselle" NomApe(1, 0) = "Chuco" NomApe(1, 1) = "Chuco" NomApe(1, 2) = "Rupay" NomApe(1, 3) = "Valverde" Console.WriteLine("Los Nombres y Apellidos Son: ") Console.WriteLine() For X1 = 0 To 0 For Y = 0 To 3 Console.Write("{0}{1}", NomApe(X1, Y), " ") For X2 = 1 To 1 Console.WriteLine(NomApe(X2, Y)) Next Next Next Console.ReadLine() End Sub End Module
Primero declaramos un array bidimensional que contendr 8 elementos, dos filas y 4 columnas, en la primera fila se encontrarn todos los nombres y el la segunda fila, se encontrarn todos los apellidos, despus de almacenar los valores, pasaremos a mostrarlos mediante For, primero mostramos el nombre, y despus con el siguiente For mostraremos el apellido, grficamente el arrays estara almacenado as: NomApe(1,3)
Bueno en este grfico creo que se ve mas entendible, y tambin se puede ver que cada nombres esta con su apellido, como lo almacenamos.
Capitulo VII
INDICE
CAPITULO VII
Procedimientos Parmetros o argumentos de los procedimientos Ejercicio 38 Ejercicio 39 Ejercicio 40 Ejercicio 41 Ejercicio 42 Ejercicio 43 Ejercicio 44 Ejercicio 45 Ejercicio 46 Ejercicio 47 Ejercicio 48 Ejercicio 49 Enumeraciones Ejercicio 50 Ejercicio 51 Ejercicio 52 Soluciones de los Ejercicios Propuestos Ejercicio 01 Ejercicio 02 Ejercicio 03 Ejercicio 04 Ejercicio 05 Ejercicio 06 Ejercicio 07 Ejercicio 08 Ejercicio 09
01 02 03 04 04 05 05 06 07 08 09 10 11 12 13 14 15 16 17 17 19 20 20 21 22 22 23 24
Ejercicio 10 Ejercicio 11 Ejercicio 12 Ejercicio 13 Ejercicio 14 Ejercicio 15 Ejercicio 16 Ejercicio 17 Ejercicio 18 Ejercicio 19 Ejercicio 20 Despedida
25 25 26 27 27 28 28 29 30 30 31 32
PROCEDIMIENTOS
Los procedimientos son las sentencias de cdigo ejecutable de un programa. Las instrucciones de un procedimiento estn delimitadas por una instruccin de declaracin y una instruccin End. Existen tres tipos de procedimientos en Microsoft Visual Basic .NET: procedimientos Sub, procedimientos Function y procedimientos Property. ! Los procedimientos Sub realizan acciones pero no devuelven un valor al procedimiento que origina la llamada. Los controladores de eventos son procedimientos Sub que se ejecutan en respuesta a un evento. Los procedimientos Function pueden devolver un valor al procedimiento que origina la llamada. La instruccin MessageBox.Show es un ejemplo de funcin. Los procedimientos Property devuelven y asignan valores de propiedades de clases, estructuras o mdulos.
Un procedimiento puede ser invocado, o llamado, desde otro procedimiento. Cuando un procedimiento llama a otro procedimiento, se transfiere el control al segundo procedimiento. Cuando finaliza la ejecucin del cdigo del segundo procedimiento, ste devuelve el control al procedimiento que lo invoc. Debido a esta funcionalidad, los procedimientos resultan tiles para realizar tareas repetidas o compartidas. En lugar de escribir el mismo cdigo ms de una vez, podemos escribir un procedimiento e invocarlo desde varios puntos de nuestra aplicacin o desde otras aplicaciones. Utilizamos un modificador de acceso para definir la accesibilidad de los procedimientos que escribimos (es decir, el permiso para que otro cdigo invoque al procedimiento). Si no especificamos un modificador de acceso, los procedimientos son declarados public de forma predeterminada. Las opciones de accesibilidad para declarar un procedimiento dentro de un mdulo:
Public: Ninguna restriccin de acceso Friend: Accesible desde el programa que contiene la declaracin y desde cualquier otro lugar del mismo ensamblado Private: Accesible nicamente en el mdulo que contiene la declaracin
Cuando queramos que un procedimiento realice una tarea, es posible que necesitemos indicarle alguna informacin adicional. Esa informacin se suele indicar mediante parmetros o argumentos. Los argumentos pasados a los procedimientos pueden ser pasados por valor o por referencia.
Por Valor: Cuando un argumento es pasado por valor, este valor no se podr alterar, por ejemplo:
Module Ejemplo Sub Main() MostrarNumero(1) Console.ReadLine() End Sub Sub MostrarNumero(ByVal Valor As Integer) Valor = Valor + 1 Console.WriteLine("El Valor del Parametro es: {0}", Valor) End Sub End Module
Expliquemos, nosotros llamamos al procedimiento MostrarNumero, y le mandamos el parmetro de 1, este numero 1 entra al procedimiento mediante la variable Valor, que despus lo alteramos sumndole mas uno, entonces el valor de la variable Valor seria 2, supuestamente, pero a la hora de mostrarlo en la consola, nos mostrar el valor de 1, se preguntarn Por qu?, esto solo tiene un respuesta, como es pasado por Valor, este Valor no puede ser alterado, por mas que le sumemos, dividamos, restamos, etc. El valor que va a contener la variable Valor siempre va a ser 1.
Por Referencia: Cuando un argumento es pasado por referencia, este valor se podr alterar, por ejemplo: Module Ejemplo Sub Main() MostrarNumero(1) Console.ReadLine() End Sub Sub MostrarNumero(ByRef Valor As Integer) Valor = Valor + 1 Console.WriteLine("El Valor del Parametro es: {0}", Valor) End Sub End Module
Expliquemos, nosotros llamamos al procedimiento MostrarNumero, y le mandamos el parmetro de 1, este numero 1 entra al procedimiento mediante la variable Valor, que despus lo alteramos sumndole mas uno, entonces el valor de la variable Valor seria 2, a la hora de mostrarlo en la consola, nos mostrar el valor de 2, se preguntarn Por qu?, esto solo tiene un respuesta, como es pasado por Referencia, este Valor puede ser alterado.
algunos ejercicios
de procedimientos, y el paso de
EJERCICIOS
Module Ejercicio38 'Este algoritmo usa un procedimiento extern para mostrar los 'numeros que le son enviados. Sub Main() MostrarNumero(1) MostrarNumero(1001) MostrarNumero(-532) Console.ReadLine() End Sub Sub MostrarNumero(ByVal Valor As Integer) Console.WriteLine("El Valor del Parametro es: {0}", Valor) End Sub End Module
Module Ejercicio39 'Este algoritmo usa un procedimiento externo para mostrar los 'elementos que le son enviados. Sub Main() MostrarEmpleado(32, 25000.0) Console.ReadLine() End Sub Sub MostrarEmpleado(ByVal Edad As Integer, ByVal Salario As Double) Console.WriteLine("El Empleado Tiene {0}{1}", Edad, " aos") Console.WriteLine("El Empleado Gana $ {0}", Salario) End Sub End Module
Module Ejercicio40 'Este algoritmo usa un Procedimiento externo para realizar una operacin 'y devolver el resultado, para que despues mostrarlo Sub Main() Console.WriteLine("100 + 200 = {0}", SumaValores(100, 200)) Console.WriteLine("500 + 501 = {0}", SumaValores(500, 501)) Console.WriteLine("-1 + 1 = {0}", SumaValores(-1, 1)) Console.ReadLine() End Sub Function SumaValores(ByVal a As Integer, ByVal b As Integer) As Integer SumaValores = a + b End Function End Module
Module Ejercicio41 'Este algoritmo usa un Procedimiento para mostrar un mensaje Sub Main() Console.WriteLine("LLamado a una Funcin") MuestraMensaje() Console.WriteLine("Regreso del Llamado a la Funcin") Console.ReadLine() End Sub Sub MuestraMensaje() Console.WriteLine("Hola, He Sido Rescatado por VB .Net 2005") End Sub End Module
Module Ejercicio42 'Este algoritmo usa dos procedimientos para mostrar dos mensajes Sub Main() MuestraTitulo() MuestraLeccion() Console.ReadLine() End Sub Sub MuestraTitulo() Console.WriteLine("APUNTES: Apuntes de COMPUTACIN") End Sub Sub MuestraLeccion() Console.WriteLine("LECCION: Conocimientos Bsicos Sobre Funciones") Console.WriteLine() End Sub End Module
43. Se desea saber el mayor y el menor nmero de tres nmeros que son enviados a un procedimiento externo.
Module Ejercicio43 'Este algoritmo usa un procedimientos para determinar que nmero es mayor y 'menor de los tres numeros que le son enviados Sub Main() Console.WriteLine() grandeYpequeo(1, 2, 3) Console.WriteLine() grandeYpequeo(500, 0, -500) Console.WriteLine() grandeYpequeo(1001, 1001, 1001) Console.ReadLine() End Sub Sub grandeYpequeo(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) Dim pequeo, grande As Integer If a < b AndAlso b < c Then pequeo = a ElseIf b < a AndAlso b < c Then pequeo = b Else pequeo = c End If If b < a AndAlso c < a Then grande = a ElseIf a < b AndAlso c < b Then grande = b Else grande = c End If Console.WriteLine("El Valor Ms Grande es: {0}", grande) Console.WriteLine("El Valor Ms Pequeo es: {0}", pequeo) End Sub End Module
44. Se desea mostrar la tabla de multiplicar de un nmero dado, especificando hasta que nmero quiere que se muestre, esto se realizar un procedimiento externo.
Module Ejercicio44 'Este algoritmo utiliza un procedimiento para realizar y mostrar la tablar 'de multiplicar deseada, indicando de que nmero quiere que se le muestre 'la tabla y hasta que nmero quiere que se le muestre. Sub Main() Dim n, m As Integer Console.Write("Que Tabla de Multiplicar Desea? : ") n = CInt(Console.ReadLine) Console.Write("Cuantos Nmeros Desea Ver? : ") m = CInt(Console.ReadLine) Console.WriteLine() TablaMult(n, m) Console.ReadLine() End Sub Sub TablaMult(ByVal n As Integer, ByVal m As Integer) Dim i As Integer Console.WriteLine("Tabla de Multiplicar del {0}", n) Console.WriteLine() For i = 1 To m Console.WriteLine("{0}{1}{2}{3}{4}", i, " x ", n, " = ", i * n) Next End Sub End Module
45. Se desea mostrar los divisores comunes de dos nmeros enviados a un procedimiento.
Module Ejercicio45 'Este algoritmo muestra los divisores comunes de dos nmeros 'enviados. Sub Main() Dim a, b As Integer Console.WriteLine("Divisores Comunes de Dos Nmeros") Console.WriteLine() Console.Write("Ingrese Primer Nmero: ") a = CInt(Console.ReadLine) Console.Write("Ingrese Segundo Nmero: ") b = CInt(Console.ReadLine) Console.WriteLine() Comunes(a, b) Console.ReadLine() End Sub Sub Comunes(ByVal a As Integer, ByVal b As Integer) Dim i As Integer = 1 While (i <= a And i <= b) If a Mod i = 0 AndAlso b Mod i = 0 Then Console.WriteLine(i) End If i=i+1 End While End Sub End Module
46. Se desea saber si una fecha es correcta, esta fecha es ingresada por el usuario.
Module Ejercicio46 'Este algoritmo utiliza un procedimiento para verificar si una fecha que se 'halla ingresado es correcta o incorrecta Sub Main() Dim dia, mes, ao As Integer Console.Write("Ingrese el Da: ") dia = CInt(Console.ReadLine) Console.Write("Ingrese el Mes: ") mes = CInt(Console.ReadLine) Console.Write("Ingrese el Ao: ") ao = CInt(Console.ReadLine) Console.WriteLine() FechaOk(dia, mes, ao) Console.ReadLine() End Sub Sub FechaOk(ByVal dia As Integer, ByVal mes As Integer, ByVal ao As Integer) Dim MaxDia As Integer Select Case mes Case 1, 3, 5, 7, 10, 12, 8 MaxDia = 31 Case 4, 6, 9, 11 MaxDia = 30 Case 2 If ao Mod 4 = 0 AndAlso ao Mod 100 <> 0 Or ao Mod 400 = 0 Then MaxDia = 29 Else MaxDia = 28 End If Case Else Console.WriteLine("Mes Incorrecto") Exit Sub End Select If dia > 0 And dia <= MaxDia And mes > 0 And mes < 13 And ao > 0 Then Console.WriteLine("La Fecha Es Correcta") Else Console.WriteLine("La Fecha Es Incorrecta") End If End Sub End Module
47. Se desea hallar la longitud del tercer ngulo de un triangulo cualquiera, utilizando el teorema del coseno.
Module Ejercicio47 'Este algoritmo halla la longitud del tercer lado de un triangulo 'utilizando el teorema del coseno. Sub Main() Dim a, b, c, Alfa As Double Console.WriteLine("Soluciona un Tringulo : ") Console.WriteLine("Caso: Lado - ngulo - Lado : ") Console.Write("Ingrese Lado b : ") b = CDbl(Console.ReadLine) Console.Write("Ingrese Lado c : ") c = CDbl(Console.ReadLine) Console.Write("ngulo Formado (En Radianes) : ") Alfa = CDbl(Console.ReadLine) a = LadosAngulos(b, c, Alfa) Console.WriteLine("El Tercer ngulo Mide {0}", a) Console.ReadLine() End Sub Function LadosAngulos(ByVal b As Double, ByVal c As Double, ByVal Alfa As Double) As Double Dim a As Double a = Math.Sqrt(b * b + c * c - 2 * b * c * Math.Cos(Alfa)) LadosAngulos = a End Function End Module
Module Ejercicio48 'Este algoritmo muestra un mensaje diciendo si un 'nmero es primo o no Sub Main() Dim n As Integer Console.Write("Ingrese el Nmero a Evaluar : ") n = CInt(Console.ReadLine) If EsPrimo(n) = True Then Console.WriteLine("El Nmero SI es Primo") Else Console.WriteLine("El Nmero NO es Primo") End If Console.ReadLine() End Sub Function EsPrimo(ByVal n As Integer) As Boolean Dim i As Integer i=n-1 While (i > 1) If n Mod i = 0 Then EsPrimo = False Exit Function End If i=i-1 End While EsPrimo = True End Function End Module
49. Se desea hallar lo siguiente: Si los dos nmeros son mayores que cero halla su producto y en caso contrario hallar su suma, y nos tendr que preguntar si queremos continuar con la aplicacin.
Module Ejercicio49 'Este algoritmo solicita dos nmeros, si los dos son mayores 'que cero halla su producto, en caso contrario halla su suma 'y hace una pregunta sobre si desea continuar con el programa Sub Main() Dim a, b, Resp As Integer Do Console.Clear() Console.ForegroundColor = ConsoleColor.Red Console.WriteLine() Console.Write("Ingrese el Primer Nmero: ") a = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") b = CInt(Console.ReadLine) If a > 0 AndAlso b > 0 Then Resp = a * b Else Resp = a + b End If Console.WriteLine("El Resultado de La Operacion es: {0}", Resp) Loop While (Pregunta() = True) End Sub Function Pregunta() As Boolean Dim Resp As Char Console.ForegroundColor = ConsoleColor.Green Console.WriteLine() Console.Write("Desea Continuar [s/n] ==> ") Resp = CChar(Console.ReadLine) If Resp = "s" Or Resp = "S" Then Pregunta = True Else Pregunta = False End If End Function End Module
Lenguaje de Programacin Capitulo VII Programando con Visual Basic 2005 ENUMERACIONES
Una enumeracin es un tipo especial de variable numrica en la que los valores que dicha variable puede tomar, son constantes simblicas, es decir que en lugar de usar un nmero, se usa una palabra (constante) que hace referencia a un nmero, esta constante comenzara desde al valor de 0, por ejemplo veamos un ejemplo mas antiguo que es de los colores.
Estas enumeraciones se declaran desde afuera del Main, expliquemos, tenemos una enumeracin llamada colores, que contendr las siguientes constantes: Azul, Rojo, Verde, que por default el azul contendr el valor de 0, el rojo ser 1 y el verde ser 2, si se preguntan, Podemos cambiar esos valores? La respuesta es si, por ejemplo, ponemos lo siguiente:
En este caso le asignamos a Azul el valor de 255, entonces el Rojo valdr 256 y el Verde ser 257. La enumeracin Colores ya viene a ser un tipo de dato, as que cuando declaramos una variable, podemos asignarles de tipo Colores.
Las enumeraciones pueden ser de varios tipos de datos, como integer, Byte, Long, etc. Cuando declaramos una variable de tipo enumeracin, que hayamos creado, solo podremos asignarles la constante que contenga esta enumeracin, para que me entiendan vean este grfico.
Ahora veamos algunos ejercicios de enumeracin para que les quede un poco mas claro.
50. Esta aplicacin nos muestra que valor contiene cada constante de la enumeracin Colores.
Module Ejercicio50 Enum Colores Azul Rojo Verde End Enum Sub Main() Dim Color As Colores Color = Colores.Azul Console.WriteLine("El Nmero 0 Vale: {0}", Color) Color = Colores.Rojo Console.WriteLine("El Nmero 1 Vale: {0}", Color) Color = Colores.Verde Console.WriteLine("El Nmero 2 Vale: {0}", Color) End Sub End Module
Presionar las teclas CTRL + F5 para poder visualizar bien la ventana a la hora de ejecutar.
51. Este ejercicio usamos una enumeracin para cambiar de color a la letra de la aplicacin.
Module Ejercicio51 Enum Colores Azul Rojo Verde End Enum Sub Main() Dim Numero As Integer Dim Color As String Console.WriteLine("{0}{1}", Space(30), "ELEGIR COLOR") Console.WriteLine() Console.WriteLine("{0}{1}", Space(5), "[0] Color Azul") Console.WriteLine("{0}{1}", Space(5), "[1] Color Rojo") Console.WriteLine("{0}{1}", Space(5), "[2] Color Verde") Console.WriteLine() Console.Write("Ingrese el Nmero de Color ==> ") Numero = CInt(Console.ReadLine) If Numero < Colores.Azul Or Numero > Colores.Verde Then Console.WriteLine("Color no Vlido") Exit Sub End If Console.WriteLine() Console.Write("Usted Eligio el color ") Select Case Numero Case Colores.Azul Console.ForegroundColor = ConsoleColor.Blue Color = "Azul" Case Colores.Rojo Console.ForegroundColor = ConsoleColor.Red Color = "Rojo" Case Colores.Verde Console.ForegroundColor = ConsoleColor.Green Color = "Verde" End Select Console.WriteLine(Color) Console.ForegroundColor = ConsoleColor.Gray Console.WriteLine() End Sub End Module
52. Esta aplicacin nos mostrara que tipo de cuenta es asignada a un cliente usando una enumeracin, teniendo en cuenta que debe de tener mas de 2500 soles en saldo para tener una cuenta corriente.
Module Ejercicio52 Enum TipoCuenta Corriente Ahorro End Enum Sub Main() Dim Cuenta As TipoCuenta Dim Cliente As String Dim Saldo As Integer Console.Write("Ingrese el Nombre del Cliente: ") Cliente = Console.ReadLine Console.Write("Ingrese el saldo de su Cuenta: ") Saldo = CInt(Console.ReadLine) If Saldo < 2500 Then Cuenta = TipoCuenta.Ahorro Else Cuenta = TipoCuenta.Corriente End If Console.WriteLine() Console.WriteLine("{0}{1}", Space(10), "*** DETALLE DE CUENTA DEL CLIENTE ***") Console.WriteLine() Console.WriteLine("Cliente: {0}", Cliente) Console.WriteLine("El tipo de cuenta del cliente es: {0}", Cuenta) Console.WriteLine("El saldo de la cuenta del cliente es: {0}", Saldo) End Sub End Module
Ejercicio 01
Module zodiaco 'Este algoritmo me indica a que signo pertenece, segun la 'fecha que uno ingresa. Sub Main() Dim Dia, Mes As Integer Console.Write("Ingrese el Da de Nacimiento: ") Dia = CInt(Console.ReadLine) Console.Write("Ingrese el mes de Nacimiento: ") Mes = CInt(Console.ReadLine) Console.Write("Tu Signo del Zodiaco es: ") Select Case Mes Case 1 If Dia < 21 Then Console.Write("Capricornio") Else Console.Write("Acuario") End If Case 2 If Dia < 20 Then Console.Write("Acuario") Else Console.Write("Piscis") End If Case 3 If Dia < 21 Then Console.Write("Piscis") Else Console.Write("Aries") End If Case 4 If Dia < 21 Then Console.Write("Aries") Else Console.Write("Tauro") End If Case 5 If Dia < 21 Then Console.Write("Tauro") Else Console.Write("Gminis") End If Case 6 If Dia < 22 Then Console.Write("Geminis") Else
Module Ecuacion 'Este algoritmo halla las dos soluciones de una ecuacin Sub Main() Dim a, b, c, d As Single Dim x1, x2 As Double Console.Write("Ingrese el Valor de a: ") a = CSng(Console.ReadLine) Console.Write("Ingrese el Valor de b: ") b = CSng(Console.ReadLine) Console.Write("Ingrese el Valor de c: ") c = CSng(Console.ReadLine) If a <> 0 Then d=b*b-4*a*c If d >= 0 Then x1 = (-b + Math.Sqrt(d)) / (2 * a) x2 = (-b - Math.Sqrt(d)) / (2 * a) Console.WriteLine("La Primera Solucin es: {0}", x1) Console.WriteLine("La Segunda Solucin es: {0}", x2) Else Console.WriteLine("Las Soluciones son Imaginarias") End If Else Console.WriteLine("El valor de <a> NO puede ser Cero (0)") End If Console.ReadLine() End Sub End Module
Ejercicio 04 Module Notas 'Este algoritmo calfica al alumno, de acuerdo a la nota 'obtenida en el examn Sub Main() Dim Prom As Integer Console.Write("La Nota de tu Examen es: ") Prom = CInt(Console.ReadLine) If Prom < 0 Xor Prom > 20 Then Console.WriteLine("VIVO no Mientas") ElseIf Prom <= 5 Then Console.WriteLine("PSIMO, Estas ya Difunto") ElseIf Prom <= 10 Then Console.WriteLine("DEFICIENTE, Estas en Capilla") ElseIf Prom <= 15 Then Console.WriteLine("REGULAR, te Defiendes") Else Console.WriteLine("BUENO, Felicitaciones") End If Console.ReadLine() End Sub End Module
Ejercicio 07 Module Signo 'Este algoritmo nos halla el signo del nmero a evaluar 'y nos muestra la parte entera y fraccionaria del nmero Sub Main() Dim x As Single Console.Write("Ingrese Numero a Evaluar: ") x = CSng(Console.ReadLine) If x >= 0 Then Console.WriteLine("Signo Positivo") Else Console.WriteLine("Signo Negativo") End If Console.WriteLine("Parte Entera: {0}", Math.Floor(x)) Console.WriteLine("Parte Fraccionaria: {0}", x - Math.Floor(x)) Console.ReadLine() End Sub End Module
Ejercicio 08
Module Algoritmo 'Este algoritmo nos halla una funcin dada Sub Main() Dim x As Single Dim y As Double Console.Write("Ingrese el Valor de x: ") x = CSng(Console.ReadLine) If x <= 0 Then y = x + Math.Sin(x) Else If x <= 8 Then y = 2 * x - Math.Log(x) Else If x >= 8 Then y = Math.Log10(x - 8) End If End If End If Console.WriteLine("La Funcin Vale -> {0}", y) Console.WriteLine("Cuando x Vale -> {0}", x) Console.ReadLine() End Sub End Module
Ejercicio 09
Module Triangulo 'Este algoritmo nos solicita que ingresemos tres nmeros 'y no dice si forman un triangulo y nos dice que tipo 'de triangulo se ha formado Sub Main() Dim a, b, c As Single Console.WriteLine("Ingrese Tres Numeros") Console.Write("Ingrese el Primer Nmero: ") a = CSng(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") b = CSng(Console.ReadLine) Console.Write("Ingrese el Tercer Nmero: ") c = CSng(Console.ReadLine) If a < b + c AndAlso b < a + c AndAlso c < a + b Then If a = b AndAlso b = c Then Console.WriteLine("Triangulo Equilatero") ElseIf a = b Or b = c Or a = c Then Console.WriteLine("Triangulo Issceles") Else Console.WriteLine("Triangulo Escaleno") End If Else Console.WriteLine("No Forman un Triangulo") End If Console.ReadLine() End Sub End Module
Module Mayor 'Este algoritmo nos indica el mayor de tres nmeros cualquiera Sub Main() Dim a, b, c, m As Integer Console.Write("Ingrese el Primer Nmero: ") a = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") b = CInt(Console.ReadLine) Console.Write("Ingrese el Tercer Nmero: ") c = CInt(Console.ReadLine) If a >= b Then If a >= c Then m=a Else m=c End If Else If b >= c Then m=b Else m=c End If End If Console.WriteLine("El Mayor Nmero es: {0}", m) Console.ReadLine() End Sub End Module
Ejercicio 11
Module Expresion 'Este algoritmo no indica si una funcion es discontinua, desde 'cualquier valor que ingresemos a X Sub Main() Dim x, y As Single Console.Write("Ingrese el Valor de x: ") x = CSng(Console.ReadLine) If x = 5 Or x = -5 Then Console.WriteLine("La Funcin es Discontinua") Else y = (x - 3) / (x * x - 25) Console.WriteLine("La Funcin Vale: {0}{1}{2}", y, " Cuando x Vale: ", x) End If Console.ReadLine() End Sub End Module
Module Multiplo 'Este algoritmo nos muestra si los nmeros ingresados son 'multiplos simultaneamente de cualquier nmero ingresado Sub Main() Dim n, d1, d2 As Integer 'Dim q, r1, r2 As Integer Console.Write("Ingrese el Nmero: ") n = CInt(Console.ReadLine) Console.Write("Ingrese el Primer Posible Divisor: ") d1 = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Posible Divisor: ") d2 = CInt(Console.ReadLine) 'Primera Forma If n Mod d1 = 0 And n Mod d2 = 0 Then Console.WriteLine("Es Multiplo de {0}{1}{2}{3}", d1, " y de ", d2, " Simultaneamente") Else Console.WriteLine("No es Multiplo de {0}{1}{2}{3}", d1, " y de ", d2, " Simultaneamente") End If 'Segunda Forma 'q = CInt(n / d1) 'r1 = n - (q * d1) 'q = CInt(n / d2) 'r2 = n - (q * d2) 'If r1 = 0 AndAlso r2 = 0 Then 'Console.WriteLine("Es Multiplo de {0}{1}{2}{3}", d1, " y de ", d2, " Simultaneamente") 'Else 'Console.WriteLine("No es Multiplo de {0}{1}{2}{3}", d1, " y de ", d2, " Simultaneamente") 'End If Console.ReadLine() End Sub End Module
Module Bisiesto 'Este algoritmo nos indica si un ao es bisiesto o no Sub Main() Dim ao As Integer Console.Write("Ingrese el Ao: ") ao = CInt(Console.ReadLine) If ao Mod 4 = 0 And ao Mod 100 <> 0 Or ao Mod 400 = 0 Then Console.WriteLine("El Ao {0}{1}", ao, " es Bisiesto") Else Console.WriteLine("El Ao {0}{1}", ao, " no es Bisiesto") End If Console.ReadLine() End Sub End Module
Ejercicio 14
Module Ordena 'Este algoritmo ordena tres nmeros cualquiera de mayor a menor Sub Main() Dim a, b, c As Integer Console.Write("Ingrese el Primer Nmero: ") a = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") b = CInt(Console.ReadLine) Console.Write("Ingrese el Tercer Nmero: ") c = CInt(Console.ReadLine) Console.WriteLine("Los Nmero Ordenados de Mayor a Menor son: ") If a >= b And b >= c Then Console.WriteLine(" {0}{1}{2}{3}{4}", a, " ; ", b, " ; ", c) ElseIf a >= c And c >= b Then Console.WriteLine(" {0}{1}{2}{3}{4}", a, " ; ", c, " ; ", b) ElseIf b >= a And a >= c Then Console.WriteLine(" {0}{1}{2}{3}{4}", b, " ; ", a, " ; ", c) ElseIf b >= c And c >= a Then Console.WriteLine(" {0}{1}{2}{3}{4}", b, " ; ", c, " ; ", a) ElseIf c >= a And a >= b Then Console.WriteLine(" {0}{1}{2}{3}{4}", c, " ; ", a, " ; ", b) Else Console.WriteLine(" {0}{1}{2}{3}{4}", c, " ; ", b, " ; ", a) End If Console.ReadLine() End Sub End Module
Module Ecuacion 'Este algoritmo nos indica si el coeficiente de X es una 'ecuacin de primer grado Sub Main() Dim a, b, x As Single Console.Write("Ingrese el Coeficiente de x: ") a = CSng(Console.ReadLine) Console.Write("Ingrese el Termino Independiente: ") b = CSng(Console.ReadLine) If a = 0 Then Console.WriteLine("No es una Ecuacin de Primer Grado") Else x = CSng(-b / a) Console.Write("La Raz es: {0}", x) End If Console.ReadLine() End Sub End Module
Ejercicio 16
Module Producto 'Si dos nmeros son positivos calcule su producto 'En caso contrario calcule su suma Sub Main() Dim a, b, Res As Integer Console.Write("Ingrese el Primer Nmero: ") a = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") b = CInt(Console.ReadLine) If a > 0 AndAlso b > 0 Then Res = a * b Else Res = a + b End If Console.WriteLine("El Resultado de la Operacin es: {0}", Res) Console.ReadLine() End Sub End Module
Module Menor 'Sin usar estructuras repetitivas, lea 5 nmeros y 'Determine el menor Sub Main() Dim a, b, c, d, e, Menor As Integer Console.Write("Ingrese el Primer Nmero: ") a = CInt(Console.ReadLine) Console.Write("Ingrese el Segundo Nmero: ") b = CInt(Console.ReadLine) Console.Write("Ingrese el Tercer Nmero: ") c = CInt(Console.ReadLine) Console.Write("Ingrese el Cuarto Nmero: ") d = CInt(Console.ReadLine) Console.Write("Ingrese el Quinto Nmero: ") e = CInt(Console.ReadLine) If a < b AndAlso a < c AndAlso a < d AndAlso a < e Then Menor = a ElseIf b < a AndAlso b < c AndAlso b < d AndAlso b < e Then Menor = b ElseIf c < a AndAlso c < b AndAlso c < d AndAlso c < e Then Menor = c ElseIf d < a AndAlso d < b AndAlso d < c AndAlso d < e Then Menor = d Else Menor = e End If Console.WriteLine("El Menor Nmero Ingresado es: {0}", Menor) Console.ReadLine() End Sub End Module
Module Funcion 'Este programa nos permite evaluar la funcin: ' x^2+1 Si x <= 8 ' x^2+3x+2 Si 0 < x < 3 ' x+1 Si x >= 3 Sub Main() Dim x As Integer Dim Res As Double Console.Write("Ingrese el Valor de x: ") x = CInt(Console.ReadLine) If x <= 0 Then Res = Math.Pow(x, 2) + 1 ElseIf 0 < x AndAlso x < 3 Then Res = Math.Pow(x, 2) + (3 * x) + 2 ElseIf x >= 3 Then Res = x + 1 End If Console.WriteLine("El Resultado de La Funcin: {0}", Res) Console.ReadLine() End Sub End Module
Bueno seores con esto acaba la Cuarta entrega de este manual, se que ha sido muy poco, pero les estoy dejando las 20 soluciones de los ejercicios de la tercera entrega, en la prxima entrega acabaremos con lo que es consola de aplicacin para empezar a llevar la consola de Windows, en la prxima entrega tocaremos lo siguiente, si o si: ! ! ! ! Programacin Orientada a Objetos Estructuras Polimorfismo Clases, y todo lo que nos falte
Bueno conmigo ser hasta la prxima entrega, ya saben aqu les dejo mi correo por si tienen alguna duda.
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe#
Capitulo VIII
INDICE
CAPITULO VIII
Paradigmas Paradigmas Por Procedimientos Paradigmas Declarativos Paradigmas Funcional Paradigma Orientado a Objetos Programacin Programacin Clsica Programacin Modular Ejercicio 53 Ejercicio 54 Programacin Orientada a Objetos Introduccin Qu es la Programacin Orientada a Objetos? Los Tres Pilares de la Programacin ! ! ! Las Clases Los Objetos Los Miembros de Una Clase Crear o Definir Una Clase Definir los Miembros de Una Clase Crear un Objeto a Partir de Una Clase Acceder a Los Miembros de Una Clase Ejemplo de Usar la Herencia Las Estructuras Herencia Encapsulacin Polimorfismo
01 01 01 01 01 02 02 02 03 05 06 06 06 07 07 07 08 08 08 09 09 10 10 11 11 14
El Nombre de Espacios (NameSpace) Qu es un NameSpace? Qu Finalidad Tiene el Uso de los Namespace? Anidar Espacios de Nombres Cmo Acceder a los Tipos Declarados Dentro de un Namespace? Ejemplos de Cmo Usar Los Namespace Ejercicio 55 Ejercicio 56 Ejercicio 57 Ejercicio 58 Ejercicio 59 Ejercicio 60 Despedida
14 14 16 16 16 17 20 21 22 24 25 27 29
PARADIGMAS
Son aquellas llamadas tambin paradigmas interactivos, representan al enfoque tradicional de la programacin en donde los programas se conciben como mdulos que realizan una determinada tarea o accin, para posteriormente obtener una salida o resultado.
Paradigmas Declarativos
Este paradigma hace hincapi a la pregunta Cul es el problema?, sin interesarle al programador, que procedimiento necesita para resolver el problema, pues as tenemos el GPS, sistemas simulados de propsitos generales, que permite modelar el problema, por ejemplo los problemas particulares como el problema de las colas de un banco, simular el programa de mantenimiento de una fbrica, el problema de producir N piezas en un determinado proceso productivo.
Paradigma Funcional
Plantea el proceso de creacin de software, como un sistema de cajas negras, cada uno de las cuales acepta una entrada por arriba y produce salidas por abajo, desde el punto de vista matemtico, dichas cajas son funciones por lo que ha de ser un paradigma funcional.
Es un paradigma que ha adquirido popularidad en los ltimos aos que es el resultado de la evolucin de la programacin estructurada, en la cual se subdivide en mdulos y que cada uno de ellos realiza una determinada tarea, ese mismo concepto se aplica a los objetos para que cumplan una determinada accin o tarea, pues as tenemos los lenguajes de programacin C, C++, Java. Conduce a paradigma orientado a objetos, donde sin duda es una evolucin de la programacin estructurada y adems los conceptos fundamentales son: clase, herencia, polimorfismo, reutilizacin. Los lenguajes de programacin orientada a objetos son SmallTalk, Simula, C++ y Java.
PROGRAMACIN
Programacin Clsica
Surge por los aos 50 y 60, es de tipo monoltica donde si el programa era grande, era difcil de corregir, y su mantenimiento era muy costoso.
Programacin Modular
Surge a principios de los 70, es uno de los mtodos de diseo ms flexible y potentes para mejorar la productividad de un programa. Todo programa contiene un mdulo denominado programa principal, que controla todo lo que sucede, es decir transfiere el control a su mdulo, de modo que ellos pueden ejecutar funciones, las tareas de los mdulos se sigue dividiendo hasta que cada uno tenga exclusivamente una funcin especfica, a este tipo de programacin se le conoce como el mtodo Divide y Venceras (Top Down).
Raz
Mdulo 1
Mdulo 2
Mdulo 3
Mdulo 4
Mdulo 5
Mdulo 6
Mdulo 7
Mdulo 8
53. Esta aplicacin utiliza varios procedimientos para realizar una cierta tarea, utilizando la programacin modular.
Module Ejercicio53 'Programa que muestra un men de opciones Sub Main() Dim opc, Numero As Integer Call Menu() Console.WriteLine() Console.Write("Elija Su Opcin ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() While opc <> 4 Select Case opc Case 1 Console.Write("Ingrese un Nmero Entero: ") Numero = CInt(Console.ReadLine) Call Pares(Numero) Case 2 Console.Write("Ingrese un Nmero Entero: ") Numero = CInt(Console.ReadLine) Call EsPrimo(Numero) Case 3 Console.Write("Ingrese un Nmero Entero: ") Numero = CInt(Console.ReadLine) Call Factorial(Numero) Case Else Console.WriteLine("Opcin No Vlida") Console.Clear() Call Menu() End Select Console.WriteLine() Console.Write("Elija Su Opcin ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() End While Console.WriteLine("Fin del Programa") Console.ReadLine() End Sub Sub Menu() Console.WriteLine() Console.WriteLine("{0}{1}", Space(30), "MEN DE OPCIONES") Console.WriteLine() Console.WriteLine("[1] Pares") Console.WriteLine("[2] Es Primo") Console.WriteLine("[3] Factorial") Console.WriteLine("[4] Salir") Console.WriteLine() End Sub
Sub Pares(ByVal Numero As Integer) Dim i As Integer = 1 Console.WriteLine() Console.WriteLine("Los Pares Menores que {0} Son: ", Numero) Console.WriteLine() While i < Numero If i Mod 2 = 0 Then Console.WriteLine("{0}", i) End If i=i+1 End While End Sub Sub EsPrimo(ByVal Numero As Integer) Dim Primo As Boolean If Numero < 6 And Numero <> 4 Then Primo = True ElseIf Numero Mod 2 = 0 Or Numero Mod 3 = 0 Or Numero Mod 5 = 0 Then Primo = False Else Primo = True End If Console.WriteLine() If Primo = True Then Console.WriteLine("El Nmero es Primo") Else Console.WriteLine("El Nmero No Es Primo") End If End Sub Sub Factorial(ByVal Numero As Integer) Dim k As Integer Dim r As Long = 1 For k = 1 To Numero r=r*k Next Console.WriteLine() Console.WriteLine("El Factorial del Nmero es : {0}", r) End Sub End Module
54. Esta aplicacin utiliza procedimientos y funciones para realizar una cierta tarea, utilizando la programacin modular.
Module Ejercicio54 Sub Main() Dim opc, Num As Integer Call Menu() Console.Write("Elija su Opcin ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() While opc <> 4 Select Case opc Case 1 Console.Write("Ingrese el Radio: ") Num = CInt(Console.ReadLine) Console.WriteLine("El rea de la circunferencia es: {0}", Area(Num)) Case 2 Console.Write("Ingrese el Radio: ") Num = CInt(Console.ReadLine) Console.WriteLine("El volumen de la esfera es: {0}", Volumen(Num)) Case 3 Console.Write("Ingrese el Radio: ") Num = CInt(Console.ReadLine) Console.WriteLine("La longitud de la circunferencia es: {0}", Circunferencia(Num)) Case Else Console.WriteLine("Opcin No Vlida") End Select Console.ReadLine() Console.Clear() Call Menu() Console.Write("Elija su Opcin ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() End While Console.WriteLine("Fin del Programa") Console.ReadLine() End Sub Sub Menu() Console.WriteLine() Console.WriteLine() Console.WriteLine("{0} Console.WriteLine() Console.WriteLine() Console.WriteLine("{0} Console.WriteLine("{0} Console.WriteLine("{0} Console.WriteLine("{0} Console.WriteLine() End Sub
El rea de una circunferencia", Space(10)) El volumen de una esfera", Space(10)) La longitud de una circunferencia", Space(10)) Salir del Programa", Space(10))
Introduccin
La programacin orientada a objetos es un importante conjunto de tcnicas que pueden utilizarse para hacer el desarrollo de programas eficientes en la programacin orientada a objetos, los objetos son los elementos principales de construccin sin embargo el uso de objetos en un programa no significa que estn programando en un modo orientado a objetos, lo que cuenta es el sistema, en el cual los objetos se interconectan y se comunican entre s.
La programacin orientada a objetos es una tcnica estructurada siendo los objetos los principales elementos de construccin. La programacin orientada a objetos es el producto de la evolucin de paradigma estructurada a fin de conseguir que el software sea un producto industrial, la programacin orientada a objetos es una programacin que enva mensajes a los objetos segn Grade Booch, autor del mtodo orientado a objetos, define a esta programacin como: Un mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de las cuales representa una instancia de alguna clase y cuyas clases son todos los miembros de una jerarqua de clases unidos mediante relacin de herencia. Sea de tipo de dato abstracto (IDA). Todo .NET Framework est basado en clases (u objetos). A diferencia de las versiones anteriores de Visual Basic, la versin .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases contenidas en .NET Framework, adems casi sin ningn tipo de limitaciones.
Herencia
La herencia es la capacidad de poder derivar una clase a partir de otra, la clase inicial se usa como clase base y la clase derivada es un nuevo tipo completamente de datos que incorpora todos los datos miembros y funciones miembros de la clase original, con cualquier dato nuevo o funcin miembro nueva y unidos en clase derivada. La clase base se conoce como clase padre o superclase y la clase derivada como clase hija o subclase. Para que lo entiendas mejor, veamos un ejemplo clsico: Supongamos que tenemos una clase Gato que est derivada de la clase Animal. El Gato hereda de Animal todas las caractersticas comunes a los animales, adems de aadirle algunas caractersticas particulares a su condicin felina. Podemos decir que un Gato es un Animal, lo mismo que un Perro es un Animal, ambos estn derivados (han heredado) de la clase Animal, pero cada uno de ellos es diferente, aunque en el fondo los dos son animales. Esto es herencia: usar una clase base (Animal) y poder ampliarla sin perder nada de lo heredado, pudiendo ampliar la clase de la que se ha derivado (o heredado).
Encapsulacin
La encapsulacin es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. Las clases proporcionan una de las formas ms comunes de encapsular elementos. La encapsulacin es la capacidad de separar la implementacin de la interfaz de una clase del cdigo que hace posible esa implementacin. Esto realmente sera una especie de abstraccin, ya que no nos importa cmo est codificado el funcionamiento de una clase, lo nico que nos debe interesar es cmo funciona... Para que nos vayamos entendiendo, cuando digo: la implementacin de la interfaz de una clase, me refiero a los miembros de esa clase: mtodos, propiedades, eventos, etc. Es decir, lo que la clase es capaz de hacer. Cuando usamos las clases, stas tienen una serie de caractersticas (los datos que manipula) as como una serie de comportamientos (las acciones a realizar con esos datos). Pues la encapsulacin es esa capacidad de la clase de ocultarnos sus interioridades para que slo veamos lo que tenemos que ver, sin tener que preocuparnos de cmo est codificada para que haga lo que hace... simplemente nos debe importar que lo haga.
Polimorfismo
El polimorfismo permite que diferentes objetos respondan de modo diferente al mismo mensaje, por lo cual se dice que adquiere su mxima potencia, cuando se utiliza en unin a la herencia, el polimorfismo permite que el mismo nombre de mtodo emboque una operacin a los objetos de una clase padre y una operacin diferente en los objetos de la clase derivada. El Polimorfismo nos permite usar miembros de distintas clases de forma genrica sin tener que preocuparnos si pertenece a una clase o a otra. Siguiendo con el ejemplo de los animales, si el Gato y el Perro pueden morder podramos tener un "animal" que muerda sin importarnos que sea el Gato o el Perro, simplemente podramos usar el mtodo Morder ya que ambos animales tienen esa caracterstica "animal mordedor".
LAS CLASES
Todo lo que tiene el .NET Framework, en realidad son clases. Una clase no es ni ms ni menos que cdigo. Aunque dicho de esta forma, cualquier programa sera una clase. Cuando definimos una clase, realmente estamos definiendo dos cosas diferentes: los datos que dicha clase puede manipular o contener y la forma de acceder a esos datos. Por ejemplo, si tenemos una clase de tipo Cliente, por un lado tendremos los datos de dicho cliente y por otro la forma de acceder o modificar esos datos. En el primer caso, los datos del Cliente, como por ejemplo el nombre, domicilio etc., estarn representados por una serie de campos o propiedades, mientras que la forma de modificar o acceder a esa informacin del Cliente se har por medio de mtodos. Esas propiedades o caractersticas y las acciones a realizar son las que definen a una clase. Los Objetos Por un lado tenemos una clase que es la que define un "algo" con lo que podemos trabajar. Pero para que ese "algo" no sea un "nada", tendremos que poder convertirlo en "algo tangible", es decir, tendremos que tener la posibilidad de que exista. Aqu es cuando entran en juego los objetos, ya que un objeto es una clase que tiene informacin real. Digamos que la clase es la "plantilla" a partir de la cual podemos crear un objeto en la memoria. Por ejemplo, podemos tener varios objetos del tipo Cliente, uno por cada cliente que tengamos en nuestra cartera de clientes, pero la clase slo ser una. Dicho de otra forma: podemos tener varias instancias en memoria de una clase. Una instancia es un objeto (los datos) creado a partir de una clase (la plantilla o el cdigo).
LAS ESTRUCTURAS
Las estructuras o tipos definidos por el usuario, son un tipo especial de datos que veremos en otra ocasin con ms detalle, pero que se comportan casi como las clases, permitiendo tener mtodos, propiedades, etc., la diferencia principal entre las clases y las estructuras es que stas ltimas son tipos por valor, mientras que las clases son tipos por referencia. Las estructuras, al igual que las clases, las podemos declarar a nivel de espacios de nombres y tambin dentro de otras estructuras e incluso dentro de clases y mdulos.
Qu es un Namespace? Un Namespace es una forma de agrupar clases (tipos) que estn relacionadas de alguna forma. El uso de los espacios de nombres nos permitir tener nuestros ensamblados agrupados segn la tarea para la que los hemos programado. De esta forma, si escribimos ensamblados que accedern al disco, los podemos agrupar para tenerlos en sitio diferente a los que, por ejemplo, accedan a una base de datos. Eso mismo es lo que se hace en las clases base de .NET Framework y por esa razn existen los espacios de nombres System.IO y System.Data, por poner slo dos. Cada vez que creamos un proyecto con Visual Studio .NET de forma automtica se crea un espacio de nombres para nuestra aplicacin. Por tanto todos los tipos (clases, estructuras, enumeraciones, etc.) que definamos en dicho proyecto estarn incluidos dentro de ese espacio de nombres. Aunque el editor de Visual Studio no nos muestra que todo esto es as, ya que para crear o definir un espacio de nombres debemos usar la instruccin Namespace y marcar el final de dicha definicin usando End Namespace, por tanto es como si el IDE aadiera esas instrucciones por nosotros. Por tanto es importante saber que, aunque no lo veamos, todos nuestros proyectos estarn dentro de un espacio de nombres. Dicho Namespace se llamar de la misma forma que nuestro proyecto, salvo si tiene espacios, en ese caso se cambiarn los espacios (o caracteres no vlidos en un nombre de .NET) por un guin bajo.
Para poder acceder a las clases desde Main, tenemos que indicar en que espacio de nombres est cada una de las clases, esto es as porque el mdulo que contiene el mtodo Main est declarado dentro de un espacio de nombres diferente. Lo mismo ocurre con la instruccin Inherits ClasesUno.PruebaA de la clase PruebaB, ya que cada una de las clases est dentro de un espacio de nombres distinto y si no indicamos expresamente ese espacio de nombres, el compilador no sabr donde localizar la clase PruebaA. Por supuesto, si hacemos una importacin del espacio de nombres ClasesUno, podramos acceder a la clase ClaseA sin necesidad de indicar el espacio de nombres que la contiene. Algunas cosas que debes saber sobre los Namespace "automticos" y los definidos por t Para ir finalizando esta entrega quiero decirte que si quitas el espacio de nombres predeterminado que utiliza el Visual Studio y aades al cdigo tus propios espacios de nombres, debo decirte que hay dos cosas que debes tener en cuenta: La primera es que seguramente al ejecutar la aplicacin, el VS no encuentre la clase que usar como punto de inicio, debido a que ahora est en otro espacio de nombres distinto, por tanto tendrs que mostrar las propiedades del proyecto (ver figura 1) e indicar en Objeto inicial el mdulo o clase que se usar o bien, en el caso de las aplicaciones de consola, indicar Sub Main. La segunda, y ms importante, es que ya no existir un espacio de nombres que "contenga" tus clases (o tipos), por tanto, si en un fichero indicas tu propio espacio de nombres, en el resto de ficheros tambin debes indicar ese mismo espacio de nombres, al menos si tu intencin es que estn todas las declaraciones dentro del mismo "directorio". Todo esto viene al caso porque en un mismo proyecto podemos definir varios espacios de nombres y si no somos precisos con la ubicacin de cada tipo que tenemos en el proyecto, puede que el compilador se queje y nos diga que no encuentra tal o cual clase (o tipo). Tambin debes saber que si nuestro proyecto usa libreras creadas por nosotros, pero que simplemente las tenemos referenciadas, (es decir, podemos usar otras DLLs creadas por nosotros y ya compiladas), esos otros ensamblados (assemblies) pueden tener tambin un espacio de nombres que se llame igual que el que tenemos en nuestro proyecto, en ese caso no ser necesario indicar el espacio de nombres de la otra librera, ya que podemos tener un mismo espacio de nombres "repartido" por varios ensamblados. Esto es muy til si queremos definir una serie de clases, enumeraciones, etc., en un proyecto, crear un ensamblado DLL a partir de ese proyecto y posteriormente usarlo en otro proyecto diferente, pero sin cambiar el espacio de nombres en el que tenemos definidos todos los tipos. Con la ventaja adicional de que esa DLL la podemos usar en proyectos de otros lenguajes de .NET, por tanto podemos crear con VB una librera de clases y usarla desde C#.
EJERCICIOS
55. Esta aplicacin utiliza una estructura para realizar una cierta tarea, como la de es halla el rea y permetro de un cuadrado.
Module Ejercicio55 Structure Cuadrado Dim Lado As Double Sub Inicio(ByVal L As Double) Lado = L End Sub Function Area() As Double Area = Lado * Lado End Function Function Perimetro() As Double Perimetro = 4 * Lado End Function End Structure Sub Main() Dim X As Cuadrado X.Inicio(7) Console.WriteLine("El rea del cuadrado es: {0}", X.Area) Console.WriteLine("El perimetro del cuadrado es: {0}", X.Perimetro) Console.ReadLine() End Sub End Module
Module Ejercicio56 Public Class Cuadrado Dim Lado As Double Public Sub Inicio(ByVal L As Double) Lado = L End Sub Public Function Area() As Double Return Lado * Lado End Function Public Function Perimetro() As Double Return 4 * Lado End Function End Class Sub Main() Dim X As Cuadrado Dim L As Double = 5.0 X = New Cuadrado X.Inicio(L) Console.WriteLine("El rea del cuadrado es: {0}", X.Area) Console.WriteLine("El perimetro del cuadrado es: {0}", X.Perimetro) Console.ReadLine() End Sub End Module
57. Esta aplicacin utiliza una estructura, procedimientos (Sub y Function) para realizar una cierta tarea, como la de es hallar el rea y permetro de distintos tipos de triangulo.
Module Ejercicio57 Structure Triangulo Dim a, b, c, p, h As Double Sub TrianRec(ByVal d As Double, ByVal e As Double) a=d b=e End Sub Sub TrianNor(ByVal d As Double, ByVal e As Double, ByVal f As Double) a=d b=e c=f End Sub Function AreaTrianRec() As Double Return (a * b) / 2 End Function Function AreaTrianNor() As Double p = (a + b + c) / 2 Return Math.Sqrt(p * (p - a) * (p - b) * (p - c)) End Function Function PeriTrianRec() As Double h = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)) Return h + a + b End Function Function PeriTrianNor() As Double Return a + b + c End Function End Structure Sub Main() Dim Rec, Nor As Triangulo Dim n, a, b, c As Double Call Menu() Console.Write("Elija una Opcin ==> ") n = CDbl(Console.ReadLine) Console.WriteLine() While n <> 3 Select Case n Case 1 Console.Write("Ingrese la altura: ") a = CDbl(Console.ReadLine)
58. Esta aplicacin utiliza dos espacios de nombre, cada uno con sus clases y procedimientos, para esto primero aadiremos una clase llamada ClaseDatos y de ah un mdulo llamado Ejercicio58 en donde importaremos los espacios de nombres creados.
Clase Datos Namespace Esposa Public Class Datos Sub Nombre(ByVal nom As String) Console.WriteLine("El Nombre del esposa es: {0}", nom) End Sub Sub Apellidos(ByVal ape As String) Console.WriteLine("El Apellido del esposa es: {0}", ape) End Sub Sub Edad(ByVal AoNac As Integer) Dim Edad As Integer Edad = Microsoft.VisualBasic.Year(Date.Now) - AoNac Console.WriteLine("La edad de la esposa es: {0}", Edad) End Sub End Class End Namespace
Namespace Esposo Public Class Datos Sub Nombre(ByVal nom As String) Console.WriteLine("El Nombre del esposo es: {0}", nom) End Sub Sub Apellidos(ByVal ape As String) Console.WriteLine("El Apellido del esposo es: {0}", ape) End Sub Sub Edad(ByVal AoNac As Integer) Dim Edad As Integer Edad = Microsoft.VisualBasic.Year(Date.Now) - AoNac Console.WriteLine("La edad de la esposo es: {0}", Edad) End Sub End Class End Namespace
Imports Ejercicio58.Esposa Imports Ejercicio58.Esposo Module Ejercicio58 Sub Main() Dim Mujer As New Esposa.Datos Dim Marido As New Esposo.Datos Console.WriteLine() Mujer.Nombre("Giselle") Mujer.Apellidos("Valverde") Mujer.Edad(1985) Console.WriteLine() Marido.Nombre("Joel") Marido.Apellidos("Chuco") Marido.Edad(1984) End Sub End Module
59. Esta aplicacin utiliza dos espacios de nombre, cada uno con sus clases y procedimientos, para esto primero aadiremos una clase llamada ClaseBanco y de ah un mdulo llamado Ejercicio59 en donde importaremos los espacios de nombres creados. Clase Banco Namespace Cliente Public Class Datos Public Function Cliente(ByVal Nombre As String, ByVal Apellidos As String) As String Return (Apellidos + ", " + Nombre) End Function Public Function Direccion(ByVal dir As String) As String Return dir End Function Public Function Telefono(ByVal telf As Integer) As String Return CStr(telf) End Function Public Function DNI(ByVal LE As Long) As String Return CStr(LE) End Function End Class End Namespace
Mdulo Imports Ejercicio59.Cliente Imports Ejercicio59.Cuenta Module Ejercicio59 Sub Main() Dim Datos As Cliente.Datos Dim DatoCuenta As Cuenta.Cuenta Dim Nombre, Apellidos, Direccion As String Dim Telefono, DNI As Integer Dim Monto As Double Datos = New Cliente.Datos DatoCuenta = New Cuenta.Cuenta Console.WriteLine() Console.WriteLine("{0} Nueva Cuenta", Space(25)) Console.WriteLine() Console.Write("Nombres del Cliente: ") Nombre = CStr(Console.ReadLine) Console.Write("Apellidos del Cliente: ") Apellidos = CStr(Console.ReadLine) Console.Write("Direccin del Cliente: ") Direccion = CStr(Console.ReadLine) Console.Write("Numero de DNI: ") DNI = CInt(Console.ReadLine) Console.Write("Numero Telefonico: ") Telefono = CInt(Console.ReadLine)
60. Esta aplicacin utiliza un modulo, es algo mas suave, despus de ver espacios de nombres, clases, estructuras, y como despedida de las consolas de aplicacin.
Module Ejercicio60 Sub Main() Dim i, d As Integer Dim salir As Integer Dim s As Char Do Console.Clear() Console.WriteLine() Console.ForegroundColor = ConsoleColor.Blue Console.WriteLine() Console.WriteLine("{0}INSTITUTO SUPERIOR TECNOLGICO ARGENTINA", Space(30)) Console.WriteLine() Console.WriteLine() Console.WriteLine("{0}DEMOSTRATIVO DE UN ARREGLO UNIDIMENSIONAL", Space(29)) Console.WriteLine() Console.WriteLine() Console.WriteLine("{0}ESCRITO POR: Joel Martin Chuco Marrufo", Space(32)) Console.WriteLine() Console.WriteLine() Console.WriteLine() Console.ForegroundColor = ConsoleColor.DarkGreen Console.Write("Ingrese Nmero de datos del Arreglo: ") d = CInt(Console.ReadLine)
Bueno seores con esto acaba la Quinta entrega de este manual, con lo que acabamos las aplicaciones en consola, se que ha sido muy poco, pero lo hago para tener separadas las entregas entre consolas de aplicacin y consolas de ventanas, as que la prxima entrega ser de aplicaciones de ventanas aunque va a ser un poco de teora, pero despus de la teora nos dedicaremos de llenos a la programacin, en la prxima entrega tocaremos mas o menos lo siguiente: ! Controles ! Formularios ! Algunos Ejercicios
Bueno conmigo ser hasta la prxima entrega, ya saben aqu les dejo mi correo por si tienen alguna duda.
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe#
Capitulo IX
INDICE
CAPITULO IX
Aplicacin de Ventanas Crear un Nuevo Proyecto El IDE de WindowsApplication ! ! ! ! ! ! ! ! ! Ventana de Diseo Ventana de Cdigo Caja de herramientas Explorador de Soluciones Explorador de Base de Datos Base de Datos Ventana de Propiedades Ventana de Errores Barra de Herramientas
01 01 02 02 03 03 04 06 06 07 07 08
APLICACIN DE VENTANAS
El IDE de Visual Basic 2005, ya lo conocen, por lo tanto ya no les voy a ensear, les enseare las nuevas ventanas con que se tienen que familiarizar de hoy en adelante.
Como ustedes ya saben hay dos formas de crear un nuevo proyecto, lo nico que veremos, lo que tenemos que escoger, al crear un proyecto esta vez seleccionaremos WindowsApplication, le pondremos un nombre y luego daremos clic en aceptar.
Ac un recordatorio, tengan en cuenta que nuestro proyecto siempre se llamara el nombre y el numero de nuestro ejercicio, por ejemplo, si vamos a hacer el ejercicio 61, nuestro proyecto se llamara Ejercicio61.
El IDE de WindowsApplication
A comparacin de las consolas de aplicacin tenemos un nuevo IDE, en este IDE cada vez que creamos un nuevo Item, se abrir una nueva ventana, esto ya lo veremos en la aplicacin que realizaremos mas adelante.
Ventana de Diseo Al crear una nueva solucin de WindowsApplication, siempre nos aparecer la siguiente ventana.
Como se darn cuenta ac el archivo siempre tendr un nombre de Form1, que es el primer formulario del proyecto. Qu es un Formulario? Es la ventana principal, porque sirve de fondo para los controles que se dibujan en una aplicacin, como cajas de textos, etiquetas, botones, etc. se podra decir que es un contenedor de controles y objetos.
Ventana de Cdigo
Esta ventana contendr todo el cdigo que realizara los diferentes eventos, procedimientos, instrucciones del formulario.
Mayormente para activar esta ventana y aadir cualquier cdigo, siempre se tendr que hacer doble clic en el control deseado.
Caja de Herramientas Contiene los controles que se dibujan en el formulario, en tiempo de diseo y no en tiempo de ejecucin.
Estos controles estn divididos por clases, los controles ms usados son los de CommonControls, mas adelante ya veremos con ms detalle cada control.
Explorador de Soluciones En esta ventana se encuentra el formulario, tambin vas a poder encontrar todos los Item que agregas de aqu en adelante, ya sean formularios, mdulos, clases, etc.
Botn
Funcin Este botn nos permitir visualizar las propiedades de la solucin, proyecto, formulario, etc., todos lo Item que se encuentran en esta ventana. Nos permitir actualizar los tems de la solucin Al dar clic en este botn nos mostrara todos los tems de la solucin, ya sean Referencias, XML, formulario, etc. Nos mostrar el cdigo del Item seleccionado, puede ser formulario, mdulo, clase, etc. Este botn nos permitir visualizar la ventana de diseo del formulario o de cualquier Item seleccionado.
Despus de dar clic en New Item nos aparecer la siguiente ventana en donde seleccionaremos el Item que queramos aadir, como ustedes lo ven en la figura de abajo, una vez seleccionado el Item daremos clic en add (Aadir).
En esta ventana veremos todas las bases de datos creadas y cada una con su conexin a ella respectivamente.
Base de Datos Desde esta ventana podremos crear una base de datos nueva.
Ventana de Errores
Esta ventana nos mostrara todos los errores que ocurran en tiempo de ejecucin del programa.
Esta barra contendr diversos botones que suelen facilitar al programador en el uso del programa, al principio ya vimos que botones usbamos en las consolas de aplicaciones.
Botn
Funcin Este botn ejecutara el proyecto, tambin se puede ejecutar el proyecto presionando la tecla F5 Este botn mostrar la ventana de Lista de Errores Este botn nos mostrara una ventana en donde podremos hallar ya sean los mtodos, eventos de un control seleccionado, tambin podremos ver esa ventana presionando la tecla F2. Este botn realiza una pausa a la ejecucin del proyecto. Al dar clic en este botn, podremos visualizar la ventana de propiedades del item seleccionado. Cuando queramos convertir varias lneas en comentario, primero seleccionaremos el cdigo y luego daremos clic en este botn. Y cuando queramos ya no tener como comentario un cdigo, solo tendremos que dar clic en este botn. Nos mostrara la ventana de Explorador de Soluciones Detendr la aplicacin Nos mostrara la Caja de Herramientas
Capitulo X
INDICE
CAPITULO X
Formularios (Forms) Introduccin Tipos Propiedades Mtodos Eventos Controles Common Controls Components Containers Data Dialog Menus & TollBars Propiedades Mtodos Eventos Ejercicio 61 Ejercicio 62 Ejercicio 63 Ejercicio 64 Ejercicio 65 Ejercicio 66 Ejercicio 67 Ejercicio 68 Ejercicio 69 Ejercicio 70 Despedida
01 01 01 02 04 05 07 07 08 09 09 10 10 11 11 11 12 13 14 15 16 18 19 20 21 23 26
Formularios (Forms)
Introduccin
Es una ventana muy importante porque aqu se dibujan o pegan todos los controles que necesitamos utilizar en nuestro programa o aplicacin. Se pueden utilizar tantos formularios como se necesiten, y dependiendo de la utilidad que se les d, estos sern de diferentes tipos. As, se puede crear un formulario que contenga un grfico, para visualizar informacin o para ingresar datos. Para dejar un poco ms en claro, un formulario es una ventana tpica de Windows. Estos estn contenidos en forma automtica en el escritorio de Windows o en su defecto dentro de otros formularios a los que llamaremos formularios MDI (Multiple Document Interface Interfaz de Mltiples Documentos). Toda ventana es a su vez una interfaz grfica de usuario la que permite interactuar a un usuario no muy experimentado de una manera muy simple con ella. Cada una de estas interfaces puede tener una gran funcionalidad inherente la que se concentra en la misma ventana o en determinados controles que estn inmersos en ella. Como todo objeto, un formulario posee propiedades y mtodos, as como a su vez soporta eventos que veremos a continuacin.
Tipos Hay cuatro tipos de formularios, que son los ms usados, como son: ! El formulario MDI, que es un contenedor de otros formularios, por ejemplo tenemos las ventanas de Word que es un formulario MDI, ya que contiene o puede contener diversas ventanas de documentos abiertos. Los formularios Child, que son aquellos formularios hijos, en otras palabras son todos aquellos formularios que van a ser contenidos en el formulario MDI. El formulario normal, que el que ms vamos a usar, y el ms comn. El formulario Parents, que es aquel formulario que va a contener todos los controles de otro formulario, por ejemplo, si tenemos un formulario llamado frmPadre, que contiene un men y un botn grabar y creamos un nuevo formulario de tipo parents llamado frmHijo y le especificamos en su propiedad de parents el formulario frmPadre, automticamente el formulario frmHijo aparecer con el men y el botn grabar, bueno, eso ya lo veremos mas adelante para que les quede mas claro, as que no se preocupen.
! !
Propiedad
Descripcin
AutoScroll AutoScrollMargin AutoScrollMinSize AutoSize AutoSizeMode BackColor BackGroundImage BackGroundImageLayout CancelButton CausesValidation ContextMenuStrip ControlBox Cursor Enabled Font ForeColor
Permite identificar el formulario, su prefijo de cualquier formulario es frm Si esta establecido, el botn se activa cuando el usuario presiona la tecla [Enter] ([INTRO]) Descripcin que se proporciona a clientes con accesibilidad. Nombre que se proporciona a los clientes con accesibilidad. Funcin que se proporciona a clientes con accesibilidad. Determina si el control recibe notificaciones de arrastrar y colocar. Determina cuando el formulario o el control, cuando la escala de la resolucin de la pantalla o de la fuente de letra a cambiado. Determina si aparecen automticamente las barras de desplazamiento cuando los controles estn situados fuera del rea de clientes del formulario. Establece el margen alrededor del control durante el AutoScroll. Tamao lgico mnimo para la zona de desplazamiento automtico. Establece si el formulario se adecua al tamao especificado de los controles. Especifica el modo del tamao del formulario Color de fondo a utilizar para mostrar texto o grficos en el control. Imagen de fondo utilizada para el formulario. Especifica como se presentara la imagen de fondo del formulario, puede ser en mosaico, estirado, centrada. Si esta establecido, el botn se activa cuando el usuario presiona la tecla ESC Indica si este control causa y genera eventos de validacin. Indica el men contextual que se muestra cuando el usuario hace clic derecho. Determina si el formulario tiene un cuadro de men control el que se encuentra en la esquina superior derecha de la ventana. Indica el tipo de cursor que aparece al pasar el Mouse por el control Indica si el control esta habilitado Indica la fuente utilizada para mostrar texto en el control. Indica el color de primer plano utilizado para mostrar texto o grficos en el control.
Icon
ImeMode IsMDIContainer KeyPreview Language Localizable Location Locked MainMenuStrip MaximizeBox MaximunSize MinimizeBox MinimunSiza Opacity Padding RightToLeft ShowIcon ShowInTaskBar Size SizeGripStyle StarPosition Tag Text
Mtodos Vamos a tocar los mtodos mas utilizados, ya que existen un sin fin de mtodos.
Mtodo
Descripcin
Activate Close CreateControl CreateGraphics Dispose FindForm Finalize Focus GetType Hide Invalidate LayoutMdi Refresh RemoveOwnedForm ResetText Select Show ShowDialog Update Validate
Activa el formulario y le otorga el foco Cierra el formulario Obliga a que se cree el control, incluidos el identificador y los controles secundarios. Crea el objeto Graphics para el control Sobrecargado. Libera los recursos utilizados por componentes. Recupera el formulario en el que se encuentra el control. Libera todos los recursos del formulario y del sistema. Establece el foco de entrada al control. Obtiene el objeto Type de la instancia actual. Oculta el formulario o control al usuario. Sobrecargado, Invalida una regin especfica del control y hace que se envi un mensaje de dibujo al control. Organiza los formularios MDI secundarios del formulario MDI principal. Obliga al control invalidar su rea cliente y acto seguido obliga a que vuelva a dibujarse el control y sus controles secundarios. Quita un formulario con propietario de este formulario. Restablece el valor predeterminado de la propiedad Text. Sobrecargado, activa un control. Muestra el control o formulario al usuario. Sobrecargado. Muestra el formulario como un cuadro de dialogo modal. Hace que el control vuelva a dibujar las regiones no vlidas en su rea de cliente. Valida el ltimo control no validado y sus predecesores, pero sin incluir el control actual.
Eventos Vamos a tocar los eventos ms utilizados, ya que existen una cierta cantidad considerables de eventos.
Evento
Descripcin
Activated BackGroundImageChanged Click Disponed DoubleClick EnabledChanged Enter FormClosed FormClosing GotFocus Invalidated KeyDown KeyPress KeyUp Layout Leave Load LostFocus MenuComplete MenuStart MouseDown MouseEnter
Se produce cuando el formulario se activa por cdigo de programa o por parte del usuario. Se produce cuando el valor de la propiedad BackGroundImage cambia. Se produce cuando el usuario hace clic en el control. Agrega un controlador de eventos para escuchar al evento Disponed en el componente. Se produce cuando se hace doble clic en el control. Se produce cuando cambia el valor de la propiedad enabled. Se produce cuando se entra en el control. Tiene lugar cuando el formulario esta cerrado. Tiene lugar cuando se cierra el formulario. Se produce cuando el control recibe el foco. Se produce cuando es necesario volver a dibujar un control. Se produce cuando se presiona una tecla mientras el control tiene el foco. Se produce cuando se presiona una tecla mientras el control tiene el foco. Se produce cuando se suelta una tecla mientras el control tiene el foco. Se produce cuando el foco de entrada deja el control Se produce cuando el foco de entrada deja el control. Se produce antes de que se muestre un formulario por primera vez. Se produce cuando el control pierde el foco. Se produce cuando el men de un formulario pierde el foco. Se produce cuando el men de un formulario recibe el foco. Se produce cuando el puntero del Mouse esta sobre el control y se presiona un botn del Mouse. Se produce cuando el puntero del Mouse entra en el control.
Controles
Con el .NET Framework 2.0 tenemos una diversidad de control y objetos que podemos usar en nuestras aplicaciones, ahora veremos algunos controles que mas vamos a usar divididos en categoras.
Common Controls Como se van a dar cuenta, cada control tiene su icono, nombre, prefijo y su descripcin.
Icono
Nombre
Prefijo
Descripcin
Button CheckBox
btn chk
NotifyIcon
nti
NumericUpDown
nud
Se utiliza para iniciar, detener o interrumpir un proceso. Muestra una casilla de verificacin y una etiqueta para texto. Se utiliza n general para establecer opciones. Muestra una lista desplazable de elementos, cada uno acompaado por una casilla de verificacin. Muestra una lista desplegable de elementos. Muestra un calendario grfico desplegable, que permite que los usuarios seleccionen una fecha o una hora. Muestra texto que los usuarios no pueden modificar directamente. Muestra texto en forma de vnculo de estilo Web y desencadena un evento cuando el usuario hace clic en el texto. Muestra una lista de textos, tambin llamados elementos. Muestra los elementos ya sean texto solo o con grficos (iconos). Captura texto escrito por el usuario, ya sea teniendo un formato de entrada. Muestra un calendario grfico que permite que los usuarios seleccionen un intervalo de fechas. Muestra un icono, en el rea de notificacin de estado de la barra de tareas, que representa una aplicacin que se ejecuta en segundo plano. Muestra una lista de nmero a travs de la cual los usuarios se pueden desplazar mediante botones hacia arriba y hacia abajo.
TextBox
txt
ToolTip
ttp
TreeView
trv
WebBrowser
wbr
Nota: Los prefijos son una referencia, se utiliza para saber de que control se habla en tiempo de diseo, no es obligatorio usarlo, pero es recomendable que se familiaricen, ya que la mayora de programadores lo usan.
Components Solo les muestro dos controles, que son los ms usados.
Icono
Nombre
Prefijo
Descripcin
ImageList Timer
img tmr
Es un contenedor de imgenes, para que despus se use con otros controles. Sirve para realizar un conteo de tiempo, en tiempo de ejecucin.
Containers Esta categora se encuentran todos aquellos controles que sirven para contener otros controles.
Icono
Nombre
Prefijo
Descripcin
FlowLayoutPanel
flp
GroupBox
gpb
Panel
pnl
SplitContainer
spc
TabControl
tbc
TableLayoutPanel
tlp
Es un contenedor de controles que no permite la modificacin de la posicin del control. Agrupa un conjunto de controles (tales como botones de opcin) en un marco con etiqueta. Agrupa un conjunto de controles en un marco sin etiqueta que permite el desplazamiento. Es un contenedor de controles con dos paneles, en donde se puede insertar cualquier tipo de control. Proporciona una pgina con fichas para organizar y tener acceso a controles agrupados de forma eficiente. Es un organizador de controles, ya que podemos aadir filas o columnas para control que queramos.
Data Como se van a dar cuenta, cada control tiene su icono, nombre, prefijo y su descripcin.
Icono
Nombre
Prefijo
Descripcin
BindingNavigator
bgn
Este control nos permite la navegacin de datos, conectada a una base de datos. Este control nos permite la conexin y la navegacin de datos, de una base de datos. Nos permite visualizar los datos de una tabla o de una base de datos. Nos permite la creacin y la conexin de una base de datos.
Dialog Como se van a dar cuenta, cada control tiene su icono, nombre, prefijo y su descripcin.
Icono
Nombre
Prefijo
Descripcin
ColorDialog
cdg
FolderBrowserDialog
fbd
FontDialog
fdg
OpenFileDialog
ofd
SaveFileDialog
sfd
Muestra el cuadro de dilogo de seleccin de colore, que permite que los usuarios seleccionen el color de un elemento de la interfaz. Muestra un cuadro de dilogo que permite buscar o una carpeta de destino. Muestra un cuadro de dilogo que permite que los usuarios establezcan una fuente y sus atributos. Muestra un cuadro de dialogo que permite que los usuarios se desplacen hasta un archivo y lo seleccionen. Muestra un cuadro de dialogo que permite que los usuarios guarden un archivo.
Menus & ToolBars Como se van a dar cuenta, cada control tiene su icono, nombre, prefijo y su descripcin.
Icono
Nombre
Prefijo
Descripcin
ContextMenuStrip
cms
MenuStrip
mnu
StatusStrip
sts
ToolStrip ToolStripContainer
tls tsc
Implementa un men que aparece cuando el usuario hace clic en un objeto con el botn secundario del Mouse. Proporciona una interfaz en tiempo de diseo para la creacin de mens. Muestra informacin acerca del estado actual de la aplicacin mediante una ventana con marco, habitualmente en parte inferior de un formulario. Contiene una coleccin de botones, combos, etiquetas, etc. Muestra una interfaz de botones con men.
Propiedades: Ahora veremos algunas propiedad mas comunes que tienen los controles, solo tocaremos lo que no hemos mencionado, ya que casi todos los controles y formularios tienen las mismas propiedades.
Propiedad
Descripcin
AccessKey Anchor Attributes BorderColor BorderStyle BorderWidth FlatStyle Image ImageAlign TextAlign ToolTip
Obtiene o establece la clave de acceso (la letra subrayada) que permite desplazarse rpidamente al control de servidor Web. Establece la alineacin del control con respecto a un objeto, cuando se maximiza o minimiza. Obtiene la coleccin de atributos arbitrarios (slo para procesar) que no corresponden a propiedades del control. Obtiene o establece el color de borde del control Web. Obtiene o establece el estilo del borde del control. Obtiene o establece el ancho del borde del control. Determina el comportamiento del control, cuando es pasado el Mouse o cuando hacen clic en el control. Estable la imagen que contendr el control. Establece la alineacin de la imagen. Establece la alineacin del texto del control. Se activa cuando el objeto TooTip esta en el diseo del formulario, normalmente contiene una pequea informacin del control.
Mtodos Los mtodos son casi los mismos que tiene el formulario, as que conforme vamos avanzando veremos uno que otro mtodo propio de cada control.
Eventos Los eventos tambin son muy parecidos a los eventos del formulario, solo tocaremos algunos eventos propios de cada control, conforme avancemos.
Ahora veremos unos cuantos ejemplos usando primero un Label, TextBox, Button.
61. En esta aplicacin usaremos tres Label (etiquetas), cambindoles algunas propiedades.
Label1
Label2
Label3
Primero crearemos un nuevo proyecto con el nombre de Ejercicio61, para este ejercicio todava no alteraremos ningn nombre de los controles, solo cambiaremos las propiedades de algunos controles y pondremos en la propiedad de texto de cada Label, el texto que se muestra en la imagen. Control Label1 Propiedad Font Control Label2 Propiedad AutoSize BorderStyle Font TextAlign Descripcin False Fixed3D Verdana, Negrita 10 pt MiddleCenter Descripcin Verdana, Normal 20 pt
Eso es todo con respecto a nuestra primera aplicacin, no se olviden que para poner un control primero daremos clic sobre el control en la barra de herramientas y haremos clic en el formulario podemos hacer doble clic en el control de la barra de herramientas. Para ejecutar el programa presionaremos la tecla F5 o daremos clic en el botn Star Debugging, que ya lo conocen, por que es el mismo que se usa para ejecutar las aplicaciones de consola.
62. Ahora en este ejercicio usaremos dos tipos de controles uno es el Label y el otro es el TextBox.
Label1
Label2
TextBox1
Label5
TextBox4
Label6
TextBox5
Control Label1 Propiedad AutoSize BorderStyle Font TextAlign Descripcin False Fixed3D Microsoft Sans Serif, Negrita 9 pt MiddleCenter
Estos dos controles son los nicos al que le cambiaremos las propiedades. La propiedad de Multiline del control TextBox nos permite que podamos ingresar una cantidad considerable de caracteres y la propiedad ScrollBars nos mostrara una barra de desplazamiento sobre el control.
63. bueno esta aplicacin les dejo para que practiquen un poco, recuerden que las aplicaciones de ventanas son para mejorar la calidad de diseo de otras aplicaciones con lo son las de consola.
Label3
TextBox3
Label4
TextBox4
Label5 TextBox5
Label6
Caractersticas: ! ! ! ! En el ciclo solo debe ingresar hasta 03 caracteres. El sexo solo un carcter. En la clave hasta 05 caracteres y no se debe de visualizar a media que ingrese. No se debe permitir el ingreso en la direccin electrnica.
Control TextBox2 Propiedad MaxLength Control TextBox3 Propiedad MaxLength Control TextBox4 Propiedad MaxLength PasswordChar 5 * Descripcin 1 Descripcin 3 Descripcin
Ahora ejecuten el programa y listo. La propiedad MaxLength nos permite que especifiquemos que cantidad de caracteres va a contener el control mientras que la propiedad PasswordChar nos indica mediante que carcter va a ser reemplazado el carcter que ingresemos. 65. Este ejercicio es muy parecido al ejercicio nmero 62, le aadiremos solos dos controles mas, que son el Button y el ToolTip.
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
Button1 Button2
Recuerda que tienes que poner en la propiedad de Text de cada control el texto que se muestra en ellos en la figura.
Como se darn cuenta al aadir un ToolTip este aparece en la parte inferior como en la figura de abajo, esto sucede por que es un objeto, la propiedad ToolTip del control Button siempre va a aparecer acompaado del nombre que le pongamos a nuestro TooTip.
Button1 (Evento Cick) Para entrar a este evento solo basta darle doble clic en el botn y aparecer la siguiente ventana.
As que escribiremos el siguiente cdigo dentro del procedimiento. Me.TextBox1.Text = "" Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox1.Focus()
Como se darn cuenta escribo Me.Close, el Me nos indica el objeto actual, que es el formulario y close es un mtodo de este objeto que tiene por funcin cerrar el formulario, por ejemplo si olvidamos el nombre de un control, basta que pongamos Me. y seguido el prefijo del control y nos ser mas til de encontrar el nombre del control, es por eso que se dice que estas dos ultimas versiones de VB .Net estn orientadas a objetos.
Label1
Button1
Button2 Button3
Button4
Button2 (Evento Cick) Me.Label1.Text = "Yo Estudie en el Instituto Superior Tecnolgico Argentina"
67. En este ejercicio aprenderemos ya a ponerle nombre a cada control, en la propiedad Name de cada uno de ellos como se muestra en la figura.
txtNombre
txtFecNac
txtDNI
txtDomAct
btnNuevo btnSalir
btnNuevo (Evento Cick) Me.txtNombre.Text = "" Me.txtFecNac.Text = "" Me.txtDNI.Text = "" Me.txtDomAct.Text = "" Me.txtNombre.Focus()
68. Bueno con este ejercicio veremos la diferencia entre una Variable de tipo Dim y otra de tipo Static, si no les quedo claro en la explicacin de las entregas anteriores.
lblValA lblValB
btnIncrementa
btnIncrementa (Evento Cick) Dim A As Integer Static B As Integer A=A+1 B=B+1 Me.lblValA.Text = CStr(A) Me.lblValB.Text = B.ToString
Como ven en el ejercicio cada vez que damos clic en el botn el valor de A siempre va a ser 1, en cambio en el valor de B aumenta de 1 en 1, esto se debe a que B es una variable de tipo Static, mejor dicho es una variable que va a almacenar su valor anterior, en caso contrario la variable A, no va a almacenar ningn valor anterior, ya que es declarada cada vez que presionamos el botn y se le asigna el mismo valor de 1. Tambin se darn cuenta que uso dos formas de convertir el nmero a cadena como es el CStr o el .ToString, cualquiera de las dos es vlida, pero la de CStr pertenece a las versiones anteriores del Visual Basic, en cambio el .ToString pertenece a las versiones .Net del Visual Basic.
lblVariable
btnProcA
btnProcB
Primero veremos el siguiente cdigo, as copien el cdigo tal como esta y ejectenlo y vean lo que pasa.
Como se darn cuenta en el procedimiento btnProcB la letra N aparece con una raya azul ms o menos como en la imagen.
Esto sucede por que la variable N que declaramos en el procedimiento btnProcA es solo para ese procedimiento y no se puede utilizar en otro procedimiento.
Para ver el error daremos clic en No y luego nos ubicaremos en la ventana de Error List, en donde nos mostrar cual es el error.
Aqu nos indica en lnea y en que columna se ubica el error, y si hubiera ms proyectos en la solucin, tambin nos indica en que proyecta esta el error. Esta explicacin lo hago para que a la hora en que ejecuten sus aplicaciones sepan en donde se ubica el error, la solucin a este error seria la siguiente codificacin. Declararamos la variable N a nivel del formulario como se muestra en la figura.
70. En este ejercicio aprenderemos ya a cambiar y realizar un poco de codificacin para los siguientes botones y realizacin de clculo, tambin usaremos un procedimientos, casi todo lo que hemos aprendido en las entregas anteriores.
txtNombre
txtHTN
txtHE btnCalcular
txtTHE
txtSubTotal
txtDesc
txtTotal
Caractersticas Se debe de ingresar el nombre de un trabajador, las horas normales que ha trabajado, las horas extras, el pago por cada hora normal y extra. Al hacer un clic en el botn calcular, se deber calcular y mostrar el total por las horas normales, el total por las horas extras, el subtotal, un descuento del 10% del subtotal y el total que se le debe pagar.
Como ustedes saben los procedimientos procedimientos, en este caso a nivel del formulario.
se
hacen
fuera
de
otros
btnCalcular (Evento Cick) Dim HTN, HTE, PHN, PHE, THN, THE, ST, DES, TP As Single Const Descuento = 10 HTN = Val(Me.txtHTN.Text) 'Horas Normales Trabajadas HTE = Val(Me.txtHE.Text) 'Horas Extras Trabajadas PHN = Val(Me.txtPHN.Text) 'Pago por Hora Normal PHE = Val(Me.txtPHE.Text) 'Pago por hora Extra THN = HTN * PHN 'Total por Horas Normales THE = HTE * PHE 'Total por Horas Extras ST = THN + THE 'Sub Total DES = ST * Descuento / 100 'Descuento TP = ST - DES 'Total a Pagar Me.lblDesc.Text = DES.ToString Me.lblSubTotal.Text = ST.ToString Me.lblTHE.Text = THE.ToString Me.lblTHN.Text = THN.ToString Me.lblTotal.Text = TP.ToString
Aqu uso dos formas de calcular, una es usando variables, la uso para que entiendan mucho mejor la aplicacin y la otra es sin usar variables, que es mejor, ya que variable que se declara, queda almacenada en la memoria. Si recuerdan en las aplicaciones de consolas usamos lo que es otro tipo de conversin de cadena a tipo Single, en cambio en las aplicaciones de ventanas podemos usar la funcin Val que nos captura el valor de la caja de texto.
Bueno seores con esto acaba la Sexta entrega de este manual, si se habrn dado cuenta la codificacin es la misma de las aplicaciones de consola, podrin practicar haciendo los ejercicios del 1 al 8, ya que son parecidos a lo que hemos hecho, en la prxima entrega, aprenderemos a: ! Usar Controles Avanzado ! Restringir el acceso de datos ! Mejorar el diseo de formulario
Bueno conmigo ser hasta la prxima entrega, ya saben aqu les dejo mi correo por si tienen alguna duda.
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe#
Capitulo XI
INDICE
CAPITULO XI
MessageBox Variables de Tipo MsgBoxResult Tipos Funciones Tipo Cadena IF THEN - ELSE Ejercicio 71 Ejercicio 72 InputBox Ejercicio 73 Format Ejercicio 74 Ejercicio 75 SELECT CASE Ejercicio 76 Ejercicio 77 Ejercicio 78 Ejercicio 79 Funciones Pblicas Ejercicio 80 Clases y NameSpace en un Modulo Ejercicio 81 Ejercicio 82 Funcin Shell Ejercicio 83 Despedida
01 02 01 02 03 03 06 11 12 15 16 17 19 19 21 23 26 28 28 30 30 34 35 36 38
MSGBOX
El MSGBOX es una ventana que nos muestra un mensaje en el centro de la pantalla. Su sintaxis es la siguiente: MsgBox(Mensaje, Tipo de Mensaje, Titulo)
Por ejemplo: MsgBox("Desea Salir de la Aplicacin?", MsgBoxStyle.YesNo, "Sistema") El mensaje que nos mostrara ser el siguiente:
Tipo de Mensaje
Icono No No No No No
Botones (Botn Cerrar) Abortar, Reintentar, Ignorar (Desactivado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar (Activado) Aceptar, Ayuda (Activado) Aceptar (Activado) Aceptar (Activado y al lado Izquierdo) Aceptar (Activado) Aceptar, Cancelar (Activado) Aceptar (Activado) Aceptar (Activado) Reintentar, Cancelar (Activado) Aceptar (Activado) Icono en el Titulo Si, No (Desactivado) Si, No, Cancelar (Activado)
No No No No No No No No No No
La variable tipo MsgBoxResult, almacena los resultados que se obtenga mediante un Message Box, que despus no sirva compararala y ejecutar instrucciones, por ejemplo:
Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir?", MsgBoxStyle.YesNo, "Sistema") If Resp = MsgBoxResult.Yes Then Me.Close() End If
Explicacin: Primero declaramos una variable Resp de tipo MsgBoxResult, esta variable almacena el valor devuelto del mensaje, si el usuario responde SI, este valor que es verdadero (True) va a ser comparado con la siguiente instruccin IF que compara la variable Resp, que seria mas o menos as: Si la variables Resp tienes almacenado el valor SI, cerrara la ventana, sino, no har ninguna instruccin.
Una cadena es un dato de tipo String (Carcter); es decir se refiere a letras o letras y nmeros, ahora veremos las funciones de cadenas mas utilizadas y posteriormente realizaremos una aplicacin para que les quede mas claro, sobre las funciones de cadena.
! ! ! ! ! ! ! ! ! !
Right: Obtiene de una cadena, una cantidad de caracteres empezando por la derecha: Sintaxis; Microsoft.VisualBasic.Right(Cadena,N) Left: Obtiene de una cadena, una cantidad de caracteres empezando por la izquierda: Sintaxis; Microsoft.VisualBasic.Left(Cadena,N) Mid: Obtiene de una cadena, una cantidad de caracteres a partir de una posicin determinada: Sintaxis; Microsoft.VisualBasic.Mid(Cadena,N) Len: Obtiene la longitud de una cadena, es decir la cantidad de caracteres que contiene incluyendo los espacios en blanco: Sintaxis; Len(Cadena) Trim: Quita los espacios en blanco al final de una cadena: Sintaxis; Trim(Cadena) RTrim: Quita los espacios en blanco al final de una cadena: Sintaxis; RTrim(Cadena) LTrim: Quita los espacios en blanco al inicio de una cadena: Sintaxis; LTrim(Cadena) UCase: Convierte una cadena en maysculas: Sintaxis; UCase(Cadena) LCase: Convierte una cadena en minsculas: Sintaxis; LCase(Cadena) StrConv: Convierte una cadena en 3 formas diferentes, en maysculas = 1, minsculas = 2, la primera letra de cada palabra en maysculas = 3 : Sintaxis; StrConv(Cadena,Valor) InStr: Obtiene un nmero que indica la posicin de una subcadena dentro de una cadena: Sintaxis; InStr(Cadena,SubCadena)
IF - THEN - ELSE
Como ya hemos visto antes esta instruccin condicional, en las consolas de aplicacin, ahora veremos en las aplicaciones de ventanas, que por cierto no cambian nada, ahora veremos unos cuantos ejercicios usando el IF y el MessageBox.
txtNombre
txtDireccion
txtTelefono
txtCE
txtObservaciones
btnNuevo
btnFinalizar
! ! !
Al ejecutar la aplicacin el botn Nuevo Alumno debe estar desactivado. Slo se debe activar cuando comience a ingresar el nombre del alumno. Cuando el usuario ingrese un campo y pulse Enter, el cursor debe pasar automticamente al siguiente campo. Al hacer clic en el botn finalizar se debe mostrar un mensaje de advertencia. Las instrucciones de este botn se deben ejecutar cuando el usuario pulse la tecla Esc.
frmEjercicio71 (Evento FormClosing) Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacin?", MsgBoxStyle.YesNo, "Sistema") If Resp = MsgBoxResult.No Then e.Cancel = True End If
btnNuevo (Evento Click) Me.txtCE.Text = "" Me.txtDireccion.Text = "" Me.txtNombre.Text = "" Me.txtObservaciones.Text = "" Me.txtTelefono.Text = "" Me.txtNombre.Focus()
txtNombre (Evento TextChanged) If Trim(Me.txtNombre.Text) = "" Then Me.btnNuevo.Enabled = False Else Me.btnNuevo.Enabled = True End If
Para que se active o realice las instrucciones que se encuentren en el botn Finalizar, con solo presionar Esc, tendrn que especificar CancelButton en la propiedad del formulario, indicando el botn btnFinalizar.
Explicacin
Seguro se estarn haciendo algunas preguntas como lo son: e.KeyChar, e.Cancel, Asc, ahora les explico: ! e.KeyChar: Esta instruccin nos devuelve el carcter que ha sido digitado en ese momento, por ejemplo si digitamos la letra a, esta instruccin nos devuelve el valor de a pero como carcter. Asc: Esta funcin convierte cualquier carcter enviado en un cdigo ASCII , siguiendo del ejemplo anterior, ya que e.KeyChar tiene el carcter de a, si esto lo enviamos a la funcin Asc, quedara mas o menos as: Asc(e.KeyChar), esta instruccin nos devolvera el valor de 97, porq?, wueno el valor de a en cdigo ASCII es 97, as de simple. e.Cancel: Esta instruccin nos permite cancelar cualquier evento que se este realizando, por ejemplo si estamos cerrando el formulario, podemos indicarle que lo cancele, envindole o instan cindole un valor verdadero, para la cancelacin del evento.
72. La siguiente aplicacin nos ingresar los apellidos y nombres, fecha de ingreso, turno y promedio de un alumno. Este programa debe contar con las siguientes caractersticas: ! ! ! ! ! El primer carcter de cada nombre o apellido debe convertirse en maysculas y el reto en minsculas. Se debe de verificar que la fecha ingresada sea correcta En el turno solo se debe aceptar las letras M, T y N. El promedio debe ser un nmero entre 0 y 20. Los botones Nuevo y Salir deben permanecer desactivados hasta que se ingresen todos los datos correctos.
txtApeNom
txtFecNac
btnNuevo
Funcin Mayscula Esta funcin indica si la letra ingresada esta en mayscula. Function Mayuscula(ByVal v As Integer) As Boolean If v >= 65 And v <= 90 Then Mayuscula = True Else Mayuscula = False End If End Function
Funcin Minscula Esta funcin indica si la letra ingresada esta en minscula. Function Minuscula(ByVal v As Integer) As Boolean If v >= 97 And v <= 122 Then Minuscula = True Else Minuscula = False End If End Function
Funcin Nmero Esta funcin indica si el carcter ingresado es un nmero. Function Numero(ByVal v As Integer) As Boolean If v < 48 Or v > 57 Then Numero = False Else Numero = True End If End Function
Funcin Especial Indica si a ingresado una vocal con tilde, la letra o o pulso ENTER, la barra espaciadora o de retroceso (BackSpace). Function Especial(ByVal v As Integer) As Boolean If v = 13 Or v = 32 Or v = 8 Or v = 225 Or v = 233 Or v = 237 Or v = 243 Or v = 250 Or v = 241 Or v = 209 Then Especial = True Else Especial = False End If End Function
Funcin Ingresados Esta funcin verifican si todos lo datos han sido ingresados correctamente. Sub Ingresados() If Trim(Me.txtApeNom.Text) <> "" And IsDate(Me.txtFecNac.Text) And Trim(Me.txtTurno.Text) <> "" And Trim(Me.txtPromedio.Text) <> "" Then Me.btnNuevo.Enabled = True Me.btnSalir.Enabled = True Else Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If End Sub
Funcin Limpiar Esta funcin limpia los controles TextBox. Sub Limpiar() Me.txtApeNom.Text = "" Me.txtFecNac.Text = "" Me.txtPromedio.Text = "" Me.txtTurno.Text = "" Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False Me.txtApeNom.Focus() End Sub
txtApeNom (Evento KeyPress) Static anteriorespacio As Boolean If Asc(e.KeyChar) = 13 Then Me.txtFecNac.Focus() End If If Asc(e.KeyChar) = 32 Then anteriorespacio = True Else If Mayuscula(Asc(e.KeyChar)) Or Minuscula(Asc(e.KeyChar)) Or Especial(Asc(e.KeyChar)) Then If Trim(Me.txtApeNom.Text) = "" Or anteriorespacio Then REM Convierte a Mayuscula e.KeyChar = UCase(e.KeyChar) Else REM Convierte a Minuscula e.KeyChar = LCase(e.KeyChar) End If anteriorespacio = False Else MsgBox("Debe de Ingresar slo Letras", MsgBoxStyle.Information, "Cuidado") e.KeyChar = ChrW(0) Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If End If
txtFecNac (Evento LostFocus) If IsDate(Me.txtFecNac.Text) Then Ingresados() Else MsgBox("Debe de Ingresar una Fecha Correcta", MsgBoxStyle.Information, "Cuidado") Me.txtFecNac.SelectionStart = 0 Me.txtFecNac.SelectionLength = Len(Me.txtFecNac.Text) Me.txtFecNac.Text = Me.txtFecNac.Text Me.txtFecNac.Focus() End If
frmEjercicio72 (Evento FormClosing) Dim Resp As MsgBoxResult Resp = MsgBox("Esta Seguro de Salir", MsgBoxStyle.YesNo, "Cuidado") If Resp = MsgBoxResult.No Then REM Si respondio que NO e.Cancel = True End If
txtTurno (Evento KeyPress) Dim Letra As String If Asc(e.KeyChar) = 13 Then Me.txtPromedio.Focus() Else Letra = UCase(e.KeyChar) If Letra = "M" Or Letra = "T" Or Letra = "N" Or Asc(e.KeyChar) = 8 Then REM Convierte la Letra a Mayusculas e.KeyChar = UCase(e.KeyChar) Else MsgBox("Debe Ingresar slo las Letras M,T o N", MsgBoxStyle.Information, "Error") REM Ignora el Carcter Ingresado e.KeyChar = ChrW(0) Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If End If
txtPromedio (Evento KeyPress) If Numero(Asc(e.KeyChar)) Or Asc(e.KeyChar) = 8 Or Asc(e.KeyChar) = 13 Then Ingresados() Else MsgBox("Debe Ingresar Slo Nmeros", MsgBoxStyle.Information, "Cuidado") e.KeyChar = ChrW(0) Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False End If
txtPromedio (Evento TextChanged) If Val(Me.txtPromedio.Text) < 0 Or Val(Me.txtPromedio.Text) > 20 Then MsgBox("El Valor Debe Estar Entre 0 y 20", MsgBoxStyle.Information, "Error") Me.txtPromedio.SelectionStart = 0 Me.txtPromedio.SelectionLength = Len(Me.txtPromedio.Text) Me.txtPromedio.Text = Me.txtPromedio.SelectedText Me.txtPromedio.Focus() Me.btnNuevo.Enabled = False Me.btnSalir.Enabled = False Else Ingresados() End If
En este ejercicio no casi nada que explicar en el cdigo, ya que es casi lo mismo que hemos usado en el ejercicio anterior, solo me queda dejarle una pequea tabla de cdigo ASCII que hemos usado. De A a la Z = del 65 al 90 De a a la z = del 97 al 122 = 255, = 233, = 237, = 243, = 250, = 241, = 209 De 0 al 9 = del 48 al 57 ENTER = 13 BACKSPACE = 8 ESC = 27 Barra Espaciadora = 32
INPUTBOX
El INPUTBOX es una ventana que permite que el usuario pueda ingresar un dato. Su sintaxis es la siguiente:
! ! ! ! !
Mensaje Es el mensaje que se desea mostrar cuando se pida el dato a ingresar. Titulo Es el titulo de la ventana. Valor Predeterminado Es el valor que se muestra en forma automtica para ser ingresado. Columna Es un valor que indica la posicin horizontal del formulario, donde se desea que se muestre la ventana. Fila Es un valor que indica la posicin vertical del formulario, donde se desea que se muestre la ventana.
Ejemplo:
Dim resp As String resp = InputBox("Ingrese el Nombre de la Persona", "Nuevo Registro", "Joel Martin Chuco Marrufo")
En este ejemplo hemos declarado una variable resp de tipo cadena, para poder almacenar el nombre que el usuario ingrese, tambin se puede obtener otro tipo de dato, ya sea nmero, fecha.
73. Este ejercicio cuenta el nmero de depsitos y retiros realizados por un cliente, adems almacena el total de los montos tanto de retiros como de depsitos efectuados incluyendo el saldo actual.
txtCliente
btnOk
txtMonto
btnDeposito
btnRetiro
lblCantDep lblTotalDep
btnNuevo
lblCantRet
lblTotalRet
btnSalir
lblSaldo
Funcion Limpia Sub Limpia() cd = 0 cr = 0 td = 0 tr = 0 saldo = 0 Me.txtCliente.Text = "" Me.txtMonto.Text = "" Me.lblCantDep.Text = "" Me.lblCantRet.Text = "" Me.lblSaldo.Text = "" Me.lblTotalDep.Text = "" Me.lblTotalRet.Text = "" Me.btnOk.Visible = True Me.btnDeposito.Enabled = False Me.btnRetiro.Enabled = False Me.txtCliente.ReadOnly = False Me.txtMonto.ReadOnly = True Me.txtCliente.Focus() End Sub
frmEjercicio73 (Evento FormClosing) Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacion", MsgBoxStyle.YesNo, "Banco El Amigo") If Resp = MsgBoxResult.No Then e.Cancel = True End If
btnDeposito (Evento Click) Dim deposito As Single deposito = CSng(Me.txtMonto.Text) td = td + deposito cd = cd + 1 Me.lblCantDep.Text = CStr(cd) Me.lblTotalDep.Text = CStr(td) saldo = CSng(Me.lblSaldo.Text) Me.lblSaldo.Text = CStr(saldo + deposito) Me.txtMonto.SelectionStart = 0 Me.txtMonto.SelectionLength = Len(Me.txtMonto.Text) Me.txtMonto.Focus()
btnRetiro (Evento Click) Dim retiro As Single retiro = CSng(Me.txtMonto.Text) saldo = CSng(Me.lblSaldo.Text) If saldo < retiro Then MsgBox("La cantidad que desea retirar excede su saldo actual", MsgBoxStyle.Critical, "Disculpe") Me.txtMonto.Text = "" Me.txtMonto.Focus() Else tr = tr - retiro cr = cr + 1 Me.lblCantRet.Text = CStr(cr) Me.lblTotalRet.Text = CStr(tr) Me.lblSaldo.Text = CStr(saldo - retiro) End If Me.txtMonto.SelectionStart = 0 Me.txtMonto.SelectionLength = Len(Me.txtMonto.Text) Me.txtMonto.Focus()
FORMAT
Esta funcin format nos permite darle un formato a un dato, ya sea una fecha, nmero, hora, etc. Sus formatos mas utilizados son:
Formato devuelto 152,125.32 04 - May - 2006 04/05/06 Jueves, May 04 2006 02:49:35 pm 14:49:35
Formato ###,##0.00 dd MMM - yyyy dd/mm/yy dddd, MMM d yyyy hh:mm:ss tt HH:mm:ss
Su sintaxis seria la siguiente: Format(Variable,Formato) Ejemplo: Dim Numero As Double Numero = 100000/3 Me.Label1.Text = Format(Numero, "###,##0.00") Y lo que nos mostrara el Label en la pantalla seria lo siguiente
33,333.33
74. Esta aplicacin nos permite ingresar el nombre del producto, precio anterior y precio actual, luego nos permite calcular el alza en soles y el alza en porcentajes. El alza en porcentaje es igual al alza en soles por 100 entre precio anterior.
txtProducto
txtPrecAn
txtPrecAct
lblAlzaS
lblAlzaP
btnNuevo
btnCalcular
btnSalir
Funcion Limpia Sub Limpia() Me.txtPrecAct.Text = "" Me.txtPrecAnt.Text = "" Me.txtProducto.Text = "" Me.lblAlzaP.Text = "" Me.lblAlzaS.Text = "" Me.txtProducto.Focus() End Sub
frmEjercicio74 (Evento FormClosing) Dim Resp As MsgBoxResult Resp = MsgBox("Desea Salir de la Aplicacion", MsgBoxStyle.YesNo, "Cuidado") If Resp = MsgBoxResult.No Then e.Cancel = True End If
btnCalcular (Evento Click) Me.lblAlzaS.Text = CStr(Val(Me.txtPrecAct.Text) - Val(Me.txtPrecAnt.Text)) Me.lblAlzaS.Text = Format(Val(Me.lblAlzaS.Text), "###,##0.00") Me.lblAlzaP.Text = CStr(Val(Me.lblAlzaS.Text) * 100 / Val(Me.txtPrecAnt.Text)) Me.lblAlzaP.Text = Format(Val(Me.lblAlzaP.Text), "###,##0.00") Me.lblAlzaP.Text = Me.lblAlzaP.Text + " %"
75. Esta aplicacin nos permite ingresar el nombre del profesor, el nmero de horas normales que ha trabajado y el nmero de horas extras, luego se debe calcular el total que se le debe pagar por el nmero de horas normales, el total por horas extras y el total a pagar. Si trabajo mas de 48 horas su pago por hora es de S/. 8.00 soles y S/. 7.00 en caso contrario. Por hora extra S/. 9.50.
txtNomProf
txtHT
txtHE
lblPH
btnCalcular
lblTHN btnNuevo
lblTHE
btnSalir
lblTP
Funcion Limpia Sub Limpia() Me.txtHE.Text = "" Me.txtHT.Text = "" Me.txtNomProf.Text = "" Me.lblPH.Text = "" Me.lblTHE.Text = "" Me.lblTHN.Text = "" Me.lblTP.Text = "" Me.txtNomProf.Focus() End Sub
btnCalcular (Evento Click) Dim PHN As Single PHN = IIf(Val(Me.txtHT.Text) > 48, 8.0, 7.0) Me.lblPH.Text = Format(PHN, "##0.00") Me.lblTHE.Text = Format(Val(Me.txtHE.Text) * 9.5, "###,##0.00") Me.lblTHN.Text = Format(Val(Me.txtHT.Text) * PHN, "###,##0.00") Me.lblTP.Text = Format(Val(Me.lblTHE.Text) + Val(Me.lblTHN.Text), "###,##0.00")
SELECT - CASE
Como ya hemos visto antes esta instruccin de seleccin, en las consolas de aplicacin, ahora veremos en las aplicaciones de ventanas, que por cierto no cambian casi nada, y utilizaremos las diversas sintaxis que existen, junto con funciones, clases etc
76. En esta aplicacin se debe de ingresar el nombre del un producto, su precio unitario y la cantidad comprada de dicho producto, luego se debe calcular y visualizar el sub Total, el descuento en porcentaje, el descuento en soles y el total a pagar. El descuento en porcentaje se depende del sub total, de acuerdo a la siguiente tabla.
DESCUENTO % 2% 4% 6% 10 %
txtProducto
txtPrecUnit
txtCantComp
btnCalcular
lblTotal
Funcion Limpia Sub Limpia() Me.txtCantComp.Text = "" Me.txtPrecUnit.Text = "" Me.txtProducto.Text = "" Me.lblDescP.Text = "" Me.lblDescS.Text = "" Me.lblSubTotal.Text = "" Me.lblTotal.Text = "" Me.txtProducto.Focus() End Sub
btnCalcular (Evento Click) Dim Desc As Integer Me.lblSubTotal.Text = CStr(Val(Me.txtPrecUnit.Text) * Val(Me.txtCantComp.Text)) Select Case Val(Me.lblSubTotal.Text) Case 100, 101 : Desc = 2 Case 101.1 To 200 : Desc = 4 Case 200.1 To 500 : Desc = 6 Case Is > 500 : Desc = 10 Case Else : Desc = 0 End Select Me.lblDescP.Text = CStr(Desc) Me.lblDescS.Text = Format(Val(Me.lblSubTotal.Text) * Desc / 100, "###,##0.00") Me.lblTotal.Text = Format(Val(Me.lblSubTotal.Text) - Val(Me.lblDescS.Text), "###,##0.00") Me.lblSubTotal.Text = Format(Val(Me.lblSubTotal.Text), "###,##0.00")
77. En este programa se debe de ingresar el nombre del alumno, su nota nmero 1 y su nota nmero 2, al hacer clic en el botn obtener promedio se debe de visualizar: el promedio del alumno, una observacin que indica si el alumno esta aprobado o desaprobado, la cantidad de puntos que le faltan para aprobar, si esta desaprobado o los puntos para llegar a veinte en caso que este aprobado. Tambin se debe visualizar la nota cualitativa del alumno de acuerdo al promedio. Se debe de controlar que solo se ingresen notas entre 0 y 20.
SUBTOTAl Entre Entre Entre Entre Entre 0y5 5.1 y 10.4 10.5 y 14.4 14.5 y 17.4 17.5 y 20
txtAlumno
txtCurso
txtN1
btnOtro
txtN2
btnObtener
lblPromedio
btnSalir
lblObservacion
lblPuntos
lblCualidad
Funcin Limpiar Esta funcin limpia los controles TextBox. Sub Limpiar() Me.txtAlumno.Text = "" Me.txtCurso.Text = "" Me.txtN1.Text = "" Me.txtN2.Text = "" Me.lblCualidad.Text = "" Me.lblObservacin.Text = "" Me.lblPromedio.Text = "" Me.lblPuntos.Text = "" Me.txtAlumno.Focus() End Sub
txtN1 (Evento LostFocus) If Not IsNumeric(Me.txtN1.Text) Or Val(Me.txtN1.Text) < 0 Or Val(Me.txtN1.Text) > 20 Then MsgBox("Solo Debe Ingresar Notas Entre 0 y 20", MsgBoxStyle.Information, "Cuidado") Me.txtN1.Focus() End If
txtN2 (Evento LostFocus) If Not IsNumeric(Me.txtN2.Text) Or Val(Me.txtN2.Text) < 0 Or Val(Me.txtN2.Text) > 20 Then MsgBox("Solo Debe Ingresar Notas Entre 0 y 20", MsgBoxStyle.Information, "Cuidado") Me.txtN2.Focus() End If
78. En esta aplicacin se debe de ingresar el nombre y el ao de nacimiento de una persona y se tiene que visualizar: su edad, una observacin que indica si es mayor o menor de edad, Si es menor de edad se debe mostrar cuantos aos le faltan para se mayor de edad y si es mayor de edad se debe mostrar hace cuantos aos es mayor de edad. Tambin se debe mostrar la etapa de la persona teniendo en cuenta lo siguiente.
Edad 0 y 12 13 y 17 18 y 30 31 y 70 70 a mas
lblEdad
btnNuevo
lblObservacion btnSalir
lblAos
lblEtapa
Funcion Limpia Sub Limpia() Me.txtAoNac.Text = "" Me.txtNombre.Text = "" Me.lblAos.Text = "" Me.lblEdad.Text = "" Me.lblEtapa.Text = "" Me.lblObservacion.Text = "" Me.txtNombre.Focus() End Sub
79. Esta aplicacin es un ejemplo del uso de las funciones de cadena que ya hemos visto el concepto.
txtFrase
lblSegSex
btnSalir
lblPosA lblMinusculas
lblMayusculas
lblSoloPrim
Funcion Limpia Sub Limpia() Me.txtFrase.Text = "" Me.lblLongitud.Text = "" Me.lblMayusculas.Text = "" Me.lblMinusculas.Text = "" Me.lblPosA.Text = "" Me.lblPrimero.Text = "" Me.lblSegSex.Text = "" Me.lblSoloPrim.Text = "" Me.lblUltimo.Text = "" Me.txtFrase.Focus() End Sub
btnMuestra (Evento Click) Me.lblLongitud.Text = Len(Trim(Me.txtFrase.Text)) Me.lblPrimero.Text = Microsoft.VisualBasic.Left(Trim(Me.txtFrase.Text), 1) Me.lblUltimo.Text = Microsoft.VisualBasic.Right(Trim(Me.txtFrase.Text), 1) Me.lblSegSex.Text = Microsoft.VisualBasic.Mid(Trim(Me.txtFrase.Text), 2, 5) Me.lblPosA.Text = InStr(Me.txtFrase.Text, "a") Me.lblMinusculas.Text = LCase(Me.txtFrase.Text) Me.lblMayusculas.Text = UCase(Me.txtFrase.Text) Me.lblSoloPrim.Text = StrConv(Me.txtFrase.Text, 3)
80. En esta aplicacin se debe de ingresar el nombre y la fecha de nacimiento de una persona y se debe de visualizar por separado: el da, mes, ao, nmero del da de la semana, la fecha en letras y la fecha y hora actual. Utilizando dos funciones publicas codificadas en un modulo.
txtNombre
txtFecNac
lblDiaSem
lblFecIng
lblFecAct
Module mdFecha Public Function Dia(ByVal ndia As Integer) As String Dia = Choose(ndia, "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado") End Function Public Function Mes(ByVal nmes As Integer) As String Select Case nmes Case 1 : Mes = "Enero" Case 2 : Mes = "Febrero" Case 3 : Mes = "Marzo" Case 4 : Mes = "Abril" Case 5 : Mes = "Mayo" Case 6 : Mes = "Junio" Case 7 : Mes = "Julio" Case 8 : Mes = "Agosto" Case 9 : Mes = "Setiembre" Case 10 : Mes = "Octubre" Case 11 : Mes = "Noviembre" Case 12 : Mes = "Diciembre" End Select End Function End Module
La funcin da nos hallara el da de la semana segn el nmero de da enviado a esta funcin, igualmente la funcin mes.
btnOk (Evento Click) If Not IsDate(Me.txtFecNac.Text) Then MsgBox("Ingrese una Fecha Correcta", MsgBoxStyle.Information, "Error") Me.txtFecNac.SelectionStart = 0 Me.txtFecNac.SelectionLength = Len(Me.txtFecNac.Text) Me.txtFecNac.Focus() Exit Sub End If Me.lblAo.Text = Year(CDate(Me.txtFecNac.Text)) Me.lblDia.Text = Microsoft.VisualBasic.Day(CDate(Me.txtFecNac.Text)) Me.lblDiaSem.Text = Microsoft.VisualBasic.Weekday(CDate(Me.txtFecNac.Text)) Me.lblMes.Text = Microsoft.VisualBasic.Month(CDate(Me.txtFecNac.Text)) Me.lblFecIng.Text = Dia(Val(Me.lblDiaSem.Text)) + ", " + Me.lblDia.Text + " de " + Mes(Val(Me.lblMes.Text)) + " de " + Me.lblAo.Text
81. En esta aplicacin se debe de ingresar la fecha de nacimiento de una persona y se debe de visualizar por separado: la estacin de la fecha en que naci, su signo zodiacal la semana del ao en que naci, los meses transcurridos desde el ao que naci y la fecha actual despus de tres semanas. Para esto crearemos un NameSpace que contendr la clase y las funciones para hallar la estacin y el signo zodiacal.
txtNombre
txtFecNac
lblDiaSem
lblFecIng
lblFecAct
Primero agregaremos un modulo llamado Informacion y codificaremos lo siguiente: Primero borramos todo el cdigo que aparece y cambiamos por lo siguiente:
Namespace Informacion Public Class FecNac Public Function Estacion(ByVal dia As Integer, ByVal mes As Integer) As String If (dia >= 23 And mes = 12) Or mes = 1 Or mes = 2 Or (dia <= 22 And mes = 3) Then Estacion = "Verano" If (dia >= 23 And mes = 3) Or mes = 4 Or mes = 5 Or (dia <= 22 And mes = 6) Then Estacion = "Otoo" If (dia >= 23 And mes = 6) Or mes = 7 Or mes = 8 Or (dia <= 22 And mes = 9) Then Estacion = "Invierno" If (dia >= 23 And mes = 9) Or mes = 10 Or mes = 11 Or (dia <= 22 And mes = 12) Then Estacion = "Primavera" End Function Public Function SignoZodiacal(ByVal dia As Integer, ByVal mes As Integer) As String Select Case mes Case 1 If dia < 21 Then SignoZodiacal = "Capricornio" Else SignoZodiacal = "Acuario" End If Case 2 If dia < 20 Then SignoZodiacal = "Acuario" Else SignoZodiacal = "Piscis" End If Case 3 If dia < 21 Then SignoZodiacal = "Piscis" Else SignoZodiacal = "Aries" End If Case 4 If dia < 21 Then SignoZodiacal = "Aries" Else SignoZodiacal = "Tauro" End If Case 5 If dia < 21 Then SignoZodiacal = "Tauro" Else SignoZodiacal = "Geminis" End If Case 6
= "Cancer" = "Leo"
= "Leo" = "Virgo"
= "Virgo" = "Libra"
= "Libra" = "Escorpio"
= "Escorpio" = "Sagitario"
= "Sagitario" = "Capricornio"
La funcin Estacion nos hallara la estacin del ao en que naci, igualmente la funcin SignoZodiacal que nos hallara el signo zodiacal correspondiente.
Funcin Limpia Sub Limpia() Me.txtFecNac.Text = "" Me.lblEstacion.Text = "" Me.lblFecAct.Text = "" Me.lblMesesTrans.Text = "" Me.lblNumSem.Text = "" Me.lblSigno.Text = "" Me.txtFecNac.Focus() End Sub
frmEjercicio81 (Evento Load) Call Limpia() Me.Text = "La Fecha Actual es: " + CStr(Format(Now, "dd / MMMM / yyyy"))
btnOk (Evento Click) Dim ndia, nmes As Integer Dim Estacion, Signo As New Informacion.FecNac If Not IsDate(Me.txtFecNac.Text) Then MsgBox("Ingrese una Fecha Correcta", MsgBoxStyle.Information, "Error") Exit Sub End If ndia = Microsoft.VisualBasic.Day(CDate(Me.txtFecNac.Text)) nmes = Microsoft.VisualBasic.Month(CDate(Me.txtFecNac.Text)) Me.lblEstacion.Text = Estacion.Estacion(ndia, nmes) Me.lblSigno.Text = Signo.SignoZodiacal(ndia, nmes) Me.lblNumSem.Text = Microsoft.VisualBasic.DatePart(DateInterval.WeekOfYear, CDate(Me.txtFecNac.Text)) Me.lblMesesTrans.Text = Microsoft.VisualBasic.DateDiff(DateInterval.Month, CDate(Me.txtFecNac.Text), Now) Me.lblFecAct.Text = Microsoft.VisualBasic.DateAdd(DateInterval.WeekOfYear, 3, Now)
82. Esta aplicacin nos muestra un ejemplo de la utilidad de las funciones de tipo numricas.
txtNumero
lblEntero
lblDecimal
btnMuestra
lblValOct
lblValHex
Funcin Limpia Sub Limpia() Me.txtNumero.Text = "" Me.lblDecimal.Text = "" Me.lblEntero.Text = "" Me.lblRaiz.Text = "" Me.lblSigno.Text = "" Me.lblValAbs.Text = "" Me.lblValHex.Text = "" Me.lblValOct.Text = "" Me.txtNumero.Focus() End Sub
FUNCION SHELL
La funcin Shell se utiliza para ejecutar programas (archivos ejecutables como *.exe, *.com etc.) desde el visual Basic. Su sintaxis es la siguiente: Shell("Ruta y Nombre del programa", Estilo de Presentacin)
83. Esta aplicacin nos permitir ejecutar algunos programas desde el visual Basic.
btnCalc
btnWord
btnExcel
btnExplorador
btnDOS
btnFinalizar
btnFinalizar (Evento Click) If MsgBox("Deseas salir de la aplicacin?", MsgBoxStyle.YesNo, "Uso de Shell") = MsgBoxResult.Yes Then Me.Close()
Bueno seores con esto acaba la Sptima entrega de este manual, les pido disculpas por la demora, pero estaba con trabajo estos dos ltimos meses, aqu les dejo o mejor dicho les envo los programas elaborados hasta ahora y en la prxima entrega realizaremos lo siguiente: ! Arrays ! Procedimientos Cclicos ! Y mejoraremos el aspecto del formulario con mtodos grficos
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe#
Capitulo XII
INDICE
CAPITULO XII
Arreglos Ejercicio 84 Ejercicio 85 Ejercicio 86 GDI Los Grficos GDI Ejercicio 87 Control PictureBox Ejercicio 88 Control ListBox y ComboBox Ejemplo Ejercicio 89 Ejercicio 90 Despedida
01 01 02 06 11 11 12 15 17 19 19 23 25 46
ARREGLOS
Como hemos visto en el capitulo VI de la entrega 4, hay dos tipos de arreglos, que son los unidimensionales y los multidimensional, como lo sabemos, estos arreglos nos permiten almacenar una cierta informacin, es como si fuera nuestra base de datos, ahora es aqu donde los que no me entendieron en la entrega 4 cuando hable de arreglos, lo puedan entender aqu con un ejemplo, primero veremos un ejercicio de un arreglo unidimensional, y de ah uno bidimensional y al ultimo de esta entrega veremos un ejercicio sobre una pro forma de insumos de computo, hecho con arreglos, funciones y procedimientos.
84. Esta aplicacin nos permite ingresar un nmero del 1 al 7 y visualizar el nombre del da de la semana.
Para esta aplicacin los nombres de los controles son los siguientes:
! ! ! !
El TextBox1 se llamara txtNumero El Label2 se llamara lblNombDia El Button1 se llamara btnOk El Button2 se llamara btnSalir
Si se preguntan por que no puse los nombres de cada control con una figura de llamada, lo que pasa, es que uno se tiene que acostumbra a ponerle nombre a los controles con su prefijo y que el nombre que le pongan tiene que ir con referencia a lo que va a capturar, hacer, mostrar etc.
btnOk (Evento Click) Dim N As Integer N = Val(Me.txtNumero.Text) If N >= 1 And N <= 7 Then Me.lblNombDia.Text = "El nmero ingresado representa el da " + CStr(Dias(N - 1)) Else MsgBox("Solo nmeros del 1 al 7", MsgBoxStyle.Information, "Por Favor") Me.txtNumero.Text = "" Me.txtNumero.Focus() End If
85. Esta aplicacin llena los valores al azar entre 1 y 80 en un array de 4 x 4, luego se pueden ordenar en forma ascendente y restaurar los valores iniciales.
Para este caso los controles se llamaran: ! ! Los Buttons se llamaran de acuerdo al texto que llevan, anteponindose su prefijo, ejemplo: el botn Salir se llamara btnSalir. En el caso de las cajas de texto, aunque le pueden colocar unos Labels, el nombre de cada control ser as, teniendo en cuenta que la tabla representa a una matriz y al dibujo de los controles.
Una vez diseada la interfaz y asignada con sus nombres respectivamente, procederemos a codificar.
Declaramos variables a Nivel del Formulario Dim Arreglo(3, 3), Restaurar(3, 3) As Integer Dim Llenar As Boolean
LlenarArray,
que
nos
permitir
Sub LlenarArray() Dim J, K As Integer For J = 0 To 3 For K = 0 To 3 Arreglo(J, K) = CInt((80 - 1 + 1) * Rnd() + 1) Next Next End Sub
Crearemos un procedimiento llamado LlenarControles, que nos permitir almacenar los valores del array en las cajas de texto. Sub LlenarControles() Me.txtArray00.Text Me.txtArray01.Text Me.txtArray02.Text Me.txtArray03.Text Me.txtArray10.Text Me.txtArray11.Text Me.txtArray12.Text Me.txtArray13.Text Me.txtArray20.Text
= = = = = = = = =
0) 1) 2) 3) 0) 1) 2) 3) 0)
btnNuevo (Evento Click) Me.txtArray00.Text = "" Me.txtArray01.Text = "" Me.txtArray02.Text = "" Me.txtArray03.Text = "" Me.txtArray10.Text = "" Me.txtArray11.Text = "" Me.txtArray12.Text = "" Me.txtArray13.Text = "" Me.txtArray20.Text = "" Me.txtArray21.Text = "" Me.txtArray22.Text = "" Me.txtArray23.Text = "" Me.txtArray30.Text = "" Me.txtArray31.Text = "" Me.txtArray32.Text = "" Me.txtArray33.Text = "" Me.txtArray00.Focus() Llenar = False
btnLlenar (Evento Click) Call LlenarArray() Call LlenarControles() Me.btnOrdenar.Enabled = True Me.btnRestaurar.Enabled = False Llenar = True
btnOrdenar (Evento Click) Dim J, K, X, May As Integer Dim Temp(15) As Integer X=0 REM Guardando los valores del array Arreglo en un array Restaurar REM Almacendo los valores del array Arreglo en un array Temp For J = 0 To 3 For K = 0 To 3 Restaurar(J, K) = Arreglo(J, K) Temp(X) = Arreglo(J, K) X=X+1 Next Next REM Ordenando los valores del array Temp mediante el mtodo
btnRestaurar (Evento Click) Dim J, K As Integer For J = 0 To 3 For K = 0 To 3 Arreglo(J, K) = Restaurar(J, K) Next Next Call LlenarControles()
Bueno con estos dos ejercicios, creo que ya se les esta quedando en claro lo de los arrays no?, wueno si no es as, haremos un ultimo ejercicio de un arreglo bidimensional, aunque otros seguro estarn diciendo, por que no toca el tema de matriz de matrices?, wueno no lo hago para que no se confundan, adems la programacin a la que yo estoy haciendo es a la programacin comercial, creo que es en donde hay mas trabajo que hacer no?, y adems para que complicarnos la vida, si tenemos diseadores de base de datos, como lo es el MSACCESS o el SQLSERVER, con eso diseadores, no necesitaremos mucho de arreglos, pero siempre es bueno aprender aunque sea los mas principales.
86. Esta aplicacin nos permite manejar elementos de un Array de 4 x 4. Estos elementos son valores numricos de tipo entero con los cuales se realizaran procesos como Suma de Filas, de Columnas y Diagonales.
Para los nombres de los controles, sea cajas de texto y etiquetas, ser segn el cuadro. txtArreglo00 txtArreglo10 txtArreglo20 txtArreglo30 lblD2 lblC1 txtArreglo01 txtArreglo11 txtArreglo21 txtArreglo31 lblC2 txtArreglo02 txtArreglo12 txtArreglo22 txtArreglo32 lblC3 txtArreglo03 txtArreglo13 txtArreglo23 txtArreglo33 lblC4 lblF1 lblF2 lblF3 lblF4 lblD1
Text Limpiar el Array Limpiar los Resultados Suma las Columnas Suma las Filas Llenar el Array Columna 1 Columna 2 Columna 3 Columna 4 Fila 1 Fila 2 Fila 3 Fila 4 Diagonal N 1 [ \ ] Diagonal N 2 [ / ]
Name btnLimpArray btnLimpResult btnSumaCol btnSumaFila btnLlenarArray btnCol1 btnCol2 btnCol3 btnCol4 btnFila1 btnFila2 btnFila3 btnFila4 btnDiagonal1 btnDiagonal2
Una vez diseada la interfaz y asignada con sus nombres respectivamente, procederemos a codificar.
Declaramos variables a Nivel del Formulario Dim Arreglo(3, 3) As Integer Dim J, K, Suma As Integer
LlenarArray,
que
nos
permitir
Sub LlenarArreglo() For J = 0 To 3 For K = 0 To 3 Arreglo(J, K) = CInt((100 - 1 + 1) * Rnd() + 1) Next Next End Sub
Crearemos un procedimiento llamado LlenarControles, que nos permitir almacenar los valores del array en las cajas de texto. Sub LlenarControles() Me.txtArreglo00.Text Me.txtArreglo01.Text Me.txtArreglo02.Text Me.txtArreglo03.Text Me.txtArreglo10.Text Me.txtArreglo11.Text Me.txtArreglo12.Text Me.txtArreglo13.Text Me.txtArreglo20.Text Me.txtArreglo21.Text Me.txtArreglo22.Text Me.txtArreglo23.Text Me.txtArreglo30.Text Me.txtArreglo31.Text Me.txtArreglo32.Text Me.txtArreglo33.Text End Sub
= = = = = = = = = = = = = = = =
Arreglo(0, Arreglo(0, Arreglo(0, Arreglo(0, Arreglo(1, Arreglo(1, Arreglo(1, Arreglo(1, Arreglo(2, Arreglo(2, Arreglo(2, Arreglo(2, Arreglo(3, Arreglo(3, Arreglo(3, Arreglo(3,
0) 1) 2) 3) 0) 1) 2) 3) 0) 1) 2) 3) 0) 1) 2) 3)
btnLimpArray (Evento Click) Me.txtArreglo00.Text Me.txtArreglo01.Text Me.txtArreglo02.Text Me.txtArreglo03.Text Me.txtArreglo10.Text Me.txtArreglo11.Text Me.txtArreglo12.Text Me.txtArreglo13.Text Me.txtArreglo20.Text Me.txtArreglo21.Text Me.txtArreglo22.Text Me.txtArreglo23.Text Me.txtArreglo30.Text Me.txtArreglo31.Text Me.txtArreglo32.Text Me.txtArreglo33.Text = = = = = = = = = = = = = = = = "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
btnLimpResultr (Evento Click) Me.lblC1.Text = "" Me.lblC2.Text = "" Me.lblC3.Text = "" Me.lblC4.Text = "" Me.lblD1.Text = "" Me.lblD2.Text = "" Me.lblF1.Text = "" Me.lblF2.Text = "" Me.lblF3.Text = "" Me.lblF4.Text = ""
btnSumaFila (Evento Click) Dim ResSuma(3) As Integer For K = 0 To 3 Suma = 0 For J = 0 To 3 Suma = Arreglo(K, J) + Suma Next ResSuma(K) = Suma Next Me.lblF1.Text = CStr(ResSuma(0)) Me.lblF2.Text = CStr(ResSuma(1)) Me.lblF3.Text = CStr(ResSuma(2)) Me.lblF4.Text = CStr(ResSuma(3))
btnCol1 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(K, 0) + Suma Next Me.lblC1.Text = CStr(Suma)
btnCol3 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(K, 2) + Suma Next Me.lblC3.Text = CStr(Suma)
btnCol4 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(K, 3) + Suma Next Me.lblC4.Text = CStr(Suma)
btnFila1 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(0, K) + Suma Next Me.lblF1.Text = CStr(Suma)
btnLFila2 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(1, K) + Suma Next Me.lblF2.Text = CStr(Suma)
btnFila3 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(2, K) + Suma Next Me.lblF3.Text = CStr(Suma)
btnDiagonal1 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(K, K) + Suma Next Me.lblD1.Text = CStr(Suma)
btnDiagonal2 (Evento Click) Suma = 0 For K = 0 To 3 Suma = Arreglo(K, 3 - K) + Suma Next Me.lblD2.Text = CStr(Suma)
GDI
El CLR (Common Language Runtime) usa una implementacin avanzada de la interfaz de diseo de grfico de Windows, denominada GDI+, que permite crear grficos, dibujar texto y manipular imgenes grficas como si fueran objetos. En otras palabras, el GDI nos permite crear Textos y grficos (Lneas, cuadros, animaciones, etc.) en los formularios que estamos usando. Para crear una imagen, lo podemos hacer mediante una variable o directamente, si lo elaboramos mediante una variable, esta tendr que ser de tipo Graphics. Para que me entiendan un poco mejor, haremos un ejercicio de GDI, algo sencillo, ya que el objetivo de este curso ya les mencione que es el de realizar aplicaciones empresariales.
87. Esta aplicacin nos permite visualizar texto, figuras y una pequea animacin creados mediante GDI.
Para el nombre del control Timer1 ser tmrAnimacion y de los botones ser el siguiente:
Text Ver Texto Ver Cuadrado Ver Circulo Ver Poligono Ver Animacion Salir
Declaramos variables a Nivel del Formulario Dim Imagen As Graphics Dim Colores As Integer = 0
btnTexto (Evento Click) Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Blue, Drawing.Color.Green, Drawing2D.LinearGradientMode.Horizontal) Dim Fuente As New Font("Verdana", 30) Imagen.DrawString("Visual Basic .Net 2005", Fuente, Color, 30, 30)
btnCuadrado (Evento Click) Dim color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Yellow, Drawing.Color.White, Drawing2D.LinearGradientMode.Vertical) Imagen.FillRectangle(color, New Rectangle(30, 90, 100, 100))
btnCirculo (Evento Click) Dim color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Green, Drawing.Color.White, Drawing2D.LinearGradientMode.ForwardDiagonal) Imagen.FillEllipse(color, New Rectangle(150, 90, 100, 100))
btnPoligono (Evento Click) Dim color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Red, Drawing.Color.White, Drawing2D.LinearGradientMode.BackwardDiagonal) Imagen.FillPolygon(color, New PointF() {New PointF(300, 90), New PointF(360, 90), New PointF(390, 140), New PointF(360, 190), New PointF(300, 190), New PointF(270, 140)})
btnAnimacion (Evento Click) Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Blue, Drawing.Color.Green, Drawing2D.LinearGradientMode.Horizontal) Dim Fuente As New Font("Verdana", 30) Imagen.DrawString("Visual Basic .Net 2005", Fuente, Color, 20, 230) Me.tmrAnimacion.Enabled = True Me.tmrAnimacion.Interval = 250
tmrAnimacion (Evento Tick) Dim Fuente As New Font("Verdana", 30) If Colores = 0 Then Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.AliceBlue, Drawing.Color.AntiqueWhite, Drawing2D.LinearGradientMode.Horizontal) Imagen.DrawString("Visual Basic .Net 2005", Fuente, Color, 20, 230) ElseIf Colores = 1 Then Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Aqua, Drawing.Color.Aquamarine, Drawing2D.LinearGradientMode.Vertical) Imagen.DrawString("G D I", Fuente, Color, 200, 280) ElseIf Colores = 2 Then Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Azure, Drawing.Color.Beige, Drawing2D.LinearGradientMode.BackwardDiagonal) Imagen.DrawString("Visual Basic .Net 2005", Fuente, Color, 20, 230) ElseIf Colores = 3 Then Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.Bisque, Drawing.Color.Black, Drawing2D.LinearGradientMode.ForwardDiagonal) Imagen.DrawString("G D I", Fuente, Color, 200, 280) ElseIf Colores = 4 Then Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.BlanchedAlmond, Drawing.Color.Blue, Drawing2D.LinearGradientMode.Horizontal) Imagen.DrawString("Visual Basic .Net 2005", Fuente, Color, 20, 230) ElseIf Colores = 5 Then Dim Color As New Drawing2D.LinearGradientBrush(ClientRectangle, Drawing.Color.BlueViolet, Drawing.Color.Brown, Drawing2D.LinearGradientMode.Vertical) Imagen.DrawString("G D I", Fuente, Color, 200, 280) Colores = 0 End If Colores = Colores + 1
CONTROL PICTUREBOX
Como lo he mencionado antes, este control PictureBox nos permite mostrar imgenes ya seas *.bmp, *.jpg, *.gif, *.png, etc. Las propiedades mas usadas de este control son: ! ! ! ! BackColor; la mayora de veces la usamos para ponerle un color de fondo al control, el color mas usado es el transparente. SizeMode; nos indica como se adecua la imagen ante el control, ya sea estirarlo o mejor dicho auto ajustar, tamaa original, Zoom y centrado. BackgrounImageLayout; nos indica la forma en que se mostrara la imagen, ya sea en mosaico, centrado, estirado o Zoom. Image; aqu establecemos la imagen a mostrar en el tiempo de ejecucin del programa.
Como ya saben, en este control tambin podemos mostrar imgenes en tiempo de ejecucin, hay dos formas de hacerlo, ya sea mediante un array de imgenes o mediante la ruta de la imagen, as que veremos las dos formas. ! Mediante la direccin del archivo
PictureBox.Image = Image.FromFile(Direccion)
Mediante array de imagines (para hacerlo de esta forma, primero tendrn que ingresar las imgenes al Resources, por ejemplo: nos ubicamos en la propiedad image, como se muestra en la figura.
Una vez ubicado en la propiedad image, daremos clic en el botn y se abrir la siguiente ventana, donde daremos clic en Import e importaremos (aadiremos) las imgenes que vamos a usar, tal como se muestra la imagen.
Una vez aadidas las imgenes daremos clic en Ok de la ventana y despus haremos el siguiente cdigo: REM REM REM REM Declaramos un array de una dimensin y de un solo item llamado Luna de Tipo Image y luego le asignaremos un valor al array de imgenes, en otras palabras, en el ndice 0 del array Luna, le asignaremos la imagen de MOON01 que esta almacenada en la carpeta Resources. Protected Lunas(0) As Image Lunas(0) = My.Resources.MOON01 REM Luego en la propiedad de Image del control, solo le asignaremos el Item 0 del REM array Me.PictureBox.Image = Lunas(0)
Para que me entiendan bien veremos un pequeo ejemplo sobre un array de imgenes y del control PictureBox, para que lo entiendan mejor.
88. Esta aplicacin nos permite hallar el rea de una circunferencia, mostrando una pequea animacin.
Como vemos aqu aadiremos un TextBox llamado txtRadio, que nos capturara el radio de la circunferencia, un Label llamado lblArea que nos mostrar el rea de la circunferencia hallada, un Button llamado btnSalir, que nos permitir salir de la aplicacin, un Timer llamado tmrAnimacin, que nos permitir controlar el tiempo que vamos a mostrar las imgenes, y un PictureBox llamado picLunas, que nos mostrar las imgenes.
frmAplicacion88 (Evento Load) Lunas(0) = My.Resources.MOON01 Lunas(1) = My.Resources.MOON02 Lunas(2) = My.Resources.MOON03 Lunas(3) = My.Resources.MOON04 Lunas(4) = My.Resources.MOON05 Lunas(5) = My.Resources.MOON06 Lunas(6) = My.Resources.MOON07 Lunas(7) = My.Resources.MOON08 Me.tmrAnimacion.Enabled = True Me.tmrAnimacion.Interval = 100
tmrAnimacion (Evento Tick) If Me.picLunas.Image Is Lunas(0) Then Me.picLunas.Image = Lunas(1) ElseIf Me.picLunas.Image Is Lunas(1) Then Me.picLunas.Image = Lunas(2) ElseIf Me.picLunas.Image Is Lunas(2) Then Me.picLunas.Image = Lunas(3) ElseIf Me.picLunas.Image Is Lunas(3) Then Me.picLunas.Image = Lunas(4) ElseIf Me.picLunas.Image Is Lunas(4) Then Me.picLunas.Image = Lunas(5) ElseIf Me.picLunas.Image Is Lunas(5) Then Me.picLunas.Image = Lunas(6) ElseIf Me.picLunas.Image Is Lunas(6) Then Me.picLunas.Image = Lunas(7) Else Me.picLunas.Image = Lunas(0) End If
txtRadio (Evento TextChanged) Const PI As Double = 3.14159 If IsNumeric(Me.txtRadio.Text) Then Me.lblArea.Text = "rea = " & CStr(PI * Val(Me.txtRadio.Text) ^ 2) & " u" Else Me.lblArea.Text = "ERROR: Ingrese una Cantidad Numrica" End If
btnSalir (Evento Click) Dim Resp As MsgBoxResult Resp = MsgBox("Desea Terminar la Aplicacin?", MsgBoxStyle.YesNo, "Pregunta") If Resp = MsgBoxResult.Yes Then Me.Close() End If
Fcil no?, como lo ven no es nada del otro mundo, como les vuelvo a repetir, no estoy tocando a la profundidad las propiedades, mtodos de cada control, ya que solo este curso se dedica a realizar programas comerciales.
Estos dos controles (ListBox y ComboBox) se parecen mucho, tanto en sus propiedades como en eventos, ya sea aadiendo elementos, eliminndolos, obteniendo el elementos seleccionado, etc. Hay dos formas de ingresar los elementos en estos controles, ya sea mediante un editor (en modo de diseo), o mediante cdigo (en tiempo de ejecucin), para mi y creo que para la mayora de los programadores, la mejor forma de aadir los elementos es mediante cdigo, as que veremos como ingresar, eliminar, ordenar los elementos a un ListBox, mediante un ejemplo, no se preocupen que para los combo box, tambin son iguales. Ejemplo Esta aplicacin nos permite ingresar un numero entero cualquiera a un ListBox, y despus podemos ordenarlos ascendentemente o descendentemente, o eliminar los elementos seleccionados, tambin podremos hallar la media de los elementos del control, teniendo en cuenta que si el nmero de elementos de la lista es impar, la media es igual al nmero colocado en la posicin media de la lista, o si el numero de elementos de la lista es par, la media es igual al promedio de los dos valores medios de la lista. NOTA que se debe de tener ordenados los elementos de la lista en forma ascendente para poder hallar la media.
Los controles tendrn su nombre respectivo, con referencia a su funcin, el tectbox se llama txtNumIng, el botn aadir se llamara btnAadir, el botn cerrar se llamara btnCerrar, el botn ordenar se llamara btnOrdenar, el botn eliminar se llamara btnEliminar, el botn ejecutar clculo se llamara btnEjecutar, la lista de nmeros (ListBox) se llamar lstNumeros, el radio button ascendente se llamar rdbAscendente y el del descendente se llamara rdbDescendente y por ultimo el Label que muestra la media de la lista de nmeros se llamara lblCalculo. Cuando seleccionaremos un elemento o mas de uno, se activara el botn de eliminar, en caso contrario debe de estar desactivado.
txtNumIng (Evento TextChanged) If IsNumeric(Me.txtNumIng.Text) = True Then Me.btnAadir.Enabled = True Else Me.btnAadir.Enabled = False End If
rdbAscendente (Evento CheckedChanged) If Me.rdbAscendente.Checked = True Then Me.btnOrdenar.Enabled = True Else Me.btnOrdenar.Enabled = False End If
rdbDescendente (Evento CheckedChanged) If Me.rdbDescendente.Checked = True Then Me.btnOrdenar.Enabled = True Else Me.btnOrdenar.Enabled = False End If
btnOrdenar (Evento Click) Dim NumItems, J, K, Mayor As Integer NumItems = Me.lstNumeros.Items.Count - 1 Dim Temp(NumItems) As Integer 'Almacenamos los valores en un array temporal For J = 0 To NumItems Temp(J) = CInt(Me.lstNumeros.Items(J)) Next 'Mtodo de Ordenacin llamada BURBUJA For J = 0 To NumItems For K = 0 To NumItems If K < NumItems Then If Temp(K) > Temp(K + 1) Then Mayor = Temp(K) Temp(K) = Temp(K + 1) Temp(K + 1) = Mayor End If End If Next Next If Me.rdbAscendente.Checked = True Then 'Limpiar y Llenar el ListBox Me.lstNumeros.Items.Clear() For J = 0 To NumItems Me.lstNumeros.Items.Add(CStr(Temp(J))) Next Ordenado = True ElseIf Me.rdbDescendente.Checked = True Then 'Limpiar y Llenar el ListBox Me.lstNumeros.Items.Clear() For J = 0 To NumItems Me.lstNumeros.Items.Add(CStr(Temp(NumItems - J))) Next Ordenado = False End If
btnEliminar (Evento Click) Dim i As Integer Me.btnEliminar.Enabled = False With Me.lstNumeros For i = .SelectedItems.Count - 1 To 0 Step -1 .Items.Remove(.SelectedItems.Item(i)) Next End With
btnEjecutar (Evento Click) Dim NumItems, Index, Q As Integer Dim Media As Single NumItems = Me.lstNumeros.Items.Count If Ordenado = False Then MsgBox("Para Hallar la Media, Primero Debe de Ordenar los Elementos en Forma Ascendente", MsgBoxStyle.Information, "ERROR!") Exit Sub End If Q = NumItems \ 2 Index = NumItems - (Q * 2) If Index = 0 Then Index = CInt(Me.lstNumeros.Items.Count) \ 2 Media = (CSng(CInt(Me.lstNumeros.Items(Index)) + CInt(Me.lstNumeros.Items(Index - 1)))) / 2 Else Index = CInt(Me.lstNumeros.Items.Count) \ 2 Media = CSng(CInt(Me.lstNumeros.Items(Index))) End If Me.lblCalculo.Text = CStr(Media)
Para los que son primerizos en este lenguaje de Visual Basic, todo es nuevo para ustedes, sea en otras palabras, para agregar, eliminar o saber el numero de elementos que hay en una lista, ya sea ListBox o ComboBox, siempre tendremos que hacer invocacin al miembro de tems del control, por ejemplo, les dejo algunas instrucciones que mas se utilizan en los dos controles. Para aadir a un elemento ListBox1.Items.Add(Cadena de Texto) ComboBox1.Items.Add(Cadena de Texto)
Para eliminar un elemento ListBox1.Items.Remove(Numero del Elemento a Eliminar) ComboBox1.Items.Remove(Numero del Elemento a Eliminar)
Para seleccionar un Elemento ListBox1.SelectedIndex = Numero del Elemento a seleccionar ComboBox1.SelectedIndex = Numero del Elemento a seleccionar
Como ya vieron no es nada del otro mundo esto de listas y combo, vamos a hacer un ejercicio de estos dos controles, para que le agarren la onda al ritmo de la music electronic de DJ Tiesto, ok!, pero primero realizaremos un ejercicio con el controls Timer y las funciones de fecha, y de paso les explico lo del control Timer, que se me paso, ups!.
89. Esta aplicacin nos permitir hallar la venta de un producto cualquiera, calculando el Subtotal, IGV y Total de la venta, y a su vez nos mostrara la hora actualizndose cada segundo, mediante un control Timer.
Primero comencemos con los nombres de cada control, aunque creo que esto es lo que mas me toma tiempo, empecemos, el Label que nos mostrara la fecha se llamara lblFecha, el que nos mostrara se llamara lblHora, el del subtotal se llamara lblSubTotal, el del total se llamara lblTotal y el del IGV se llamara lblIgv, el TextBox que captura el nombre del producto se llamara txtNombProd, el del precio unitario se llamara txtPrecUnit y el de la cantidad se llamara txtCant, los botones de Nuevo, Resultados y Salir se llamaran btnNuevo, btnResultados y btnSalir, respectivamente.
frmAplicacion89 (Evento FormClosing) Dim Resp As MsgBoxResult Resp = MsgBox("Desea salir de la Aplicacin?", MsgBoxStyle.YesNo, "Cuidado") If Resp = MsgBoxResult.No Then e.Cancel = True End If
frmAplicacion89 (Evento Load) Me.tmrHora.Enabled = True Me.lblFecha.Text = Format(Now, "dd - MMMM - yyyy") Me.lblHora.Text = Format(Now, "hh:mm:ss tt") Me.Text = Space(40) + "Ventas"
btnNuevo (Evento Click) Me.txtCant.Text = "" Me.txtNombProd.Text = "" Me.txtPrecUnit.Text = "" Me.lblIgv.Text = "" Me.lblSubTotal.Text = "" Me.lblTotal.Text = "" Me.txtNombProd.Focus()
Lo nico que deben de saber del control Timer es que cuando uno lo crea, crea desactivado, as que se tiene que activar el control para poder usarlo, esto hace mediante la propiedad Enabled, en la cual tiene que estar en True, y intervalo en que el control se actualizara, por ejemplo, el intervalo de 100 equivalente a un segundo.
se se el es
90. Esta aplicacin nos permitir realizar una pro forma de venta de una tienda comercial de computo, consta de dos formularios, uno que es el principal llamado frmAplicacion90 y otro llamado frmInfo, esta aplicacin esta basada en arreglos y datos almacenados en el programa, con el fin de darnos cuenta que tan importante es tener un diseador de base de datos, ya que la aplicacin sin base de datos que maneje informacin se hara engorrosa y los datos no estaran tan seguros, veamos un ejemplo de este tipo de aplicacin sin una base de datos, y como seria su programacin, primero veremos por formulario, as que el primero ser el formulario frmInfo.
frmInfo
Este formulario tendr un GropuBox que conservara su propio nombre y los Labels de este formulario que solo nos mostraran lo que recepcionan del otro formulario, tendrn los siguientes nombres, de acuerdo a su etiqueta de su costado; lblMainboard, lblProcesador, lblDiscoDuro, lblMemoriaRAM, lblTarjVideo, lblTarjRed, lblCase.
frmAplicacion90
Ahora pondremos los nombres respectivos a cada control, en este caso, yo solo dar referencia a que control me refiero y ustedes deben de saber identificar que control es. Ok!, por ejemplo en que forma se esta mostrando los Buttons, los GroupBox y el PictureBox.
Text Cantidad Articulo Marca Modelo Precio Unitario Total Adicionar Cancelar Descripcin Imagen Lista de Cantidad Lista de Descripcin Lista de Precio Unitario Lista de Total Subtotal IGV Total Nueva Pro forma Eliminar Articulo Salir
Name nudCantidad cboArticuo cboMarca cboModelo lblPrecUnit lblTotal btnAdicionar btnCancelar btnDescripcion picArticulo lstCantidad lstDescripcion lstPrecUnit lstTotal lblSubTotalProf lblIGV lblTotalProf btnNuevo btnEliminar btnSalir
Para este caso se pide que esta aplicacin se pueda escoger un articulo y nos muestre su imagen referencial, la marca y el modelo del articulo, y a su vez nos muestre el precio unitario y el precio total, existe un caso en que cuando selecciona un CPU, se nos pueda mostrar su descripcin de ella nada mas, tambin podremos aadir los artculos seleccionados al carrito, y tambin eliminar elementos seleccionados y nos debe de mostrar el total de todos los productos, el subtotal y el IGV. Y para los que les guste hacerlo ms perfecto, tambin le pueden agregar un botn de impresin donde se imprimir el formulario en pantalla.
Una vez ya tenido el diseos del formulario listo y sus descripciones que debe tener, procederemos a la larga, pero larga, larga codificacin.
Funcin Limpiar esta funcin limpiara los controles del formulario Sub Limpiar() Me.cboArticulo.Text = "" Me.cboMarca.Text = "" Me.cboModelo.Text = "" Me.lblIGV.Text = "" Me.lblPrecUnit.Text = "" Me.lblSubTotalProf.Text = "" Me.lblTotal.Text = "" Me.lblTotalProf.Text = "" Me.lstCantidad.Items.Clear() Me.lstDescripcion.Items.Clear() Me.lstPrecUnit.Items.Clear() Me.lstTotal.Items.Clear() Me.picArticulo.Image = Imagenes(15) End Sub
Funcin MarcaArticulo esta funcin almacenara en el array Marca, las marcas respectivas de los artculos, vlgala redundancia. Sub MarcaArticulo() Marca(0) = "Micronics" Marca(1) = "Cybertel" Marca(2) = "Creative" Marca(3) = "LG" Marca(4) = "Samsung" Marca(5) = "NEC" Marca(6) = "HP" Marca(7) = "Canon" Marca(8) = "Lexmark" Marca(9) = "Epson" Marca(10) = "Xerox" Marca(11) = "Intel" Marca(12) = "PC Chips" Marca(13) = "Syntax" Marca(14) = "ASROCK" End Sub
Funcin ModeloImpresoras esta funcin almacena los distintos modelos de impresora Sub ModeloImpresoras() ModeloImpresora(0) = "HP Deskjet 3920" ModeloImpresora(1) = "HP Multifuncional 1410" ModeloImpresora(2) = "HP Laserjet Color 2600N" ModeloImpresora(3) = "Canon IP-1200 Color" ModeloImpresora(4) = "Canon IP-1600 Color" ModeloImpresora(5) = "Canon Multifuncional MP-150" ModeloImpresora(6) = "Lexmark Color Z515" ModeloImpresora(7) = "Lexmark Multifuncional X1195" ModeloImpresora(8) = "Lexmark Multifuncional X4270" ModeloImpresora(9) = "Epson Stylus C45 U" ModeloImpresora(10) = "Epson LX300+" ModeloImpresora(11) = "Epson FX-2190" ModeloImpresora(12) = "Xerox Laser 3116" ModeloImpresora(13) = "Xerox Laser Multifuncional PE114" ModeloImpresora(14) = "Xerox Laser Color 6100 DB" End Sub
Funcin ModeloCDs esta funcin almacena los distintos modelos de Lectoras Sub ModeloCDs() ModeloCD(0) = "52x24x52 Negro" ModeloCD(1) = "52x24x52 Blanco" End Sub
esta
funcin
almacena
los
distintos
modelos
de
Sub ModeloDVDs() ModeloDVD(0) = "16x Negro" ModeloDVD(1) = "16x Blanco" End Sub
Funcin ModeloModems esta funcin almacena los distintos modelos de Modems Sub ModeloModems() ModeloModem(0) = "Z135 ADSL" ModeloModem(1) = "Z135 DSL" End Sub
Funcin ModeloMonitores esta funcin almacena los distintos modelos de Monitor Sub ModeloMonitores() ModeloMonitor(0) = "15' ModeloMonitor(1) = "17' ModeloMonitor(2) = "15' ModeloMonitor(3) = "17' ModeloMonitor(4) = "15' ModeloMonitor(5) = "17' ModeloMonitor(6) = "15' ModeloMonitor(7) = "17' End Sub Funcin ModeloMP3s reproductores MP3s Sub ModeloMP3s() ModeloMP3(0) = ModeloMP3(1) = ModeloMP3(2) = ModeloMP3(3) = ModeloMP3(4) = ModeloMP3(5) = End Sub
591S Negro" 793S Negro" 591S Blanco" 793S Blanco" T530SS FLAT Negro" L1750 LCD Negro" T530SS FLAT Blanco" L1750 LCD Blanco"
esta
funcin
almacena
los
distintos
modelos
de
"2400 USB 2400x2400 DPI" "4070 USB 2400x2400 DPI" "LIDE 25 USB" "LIDE 32 USB" "1800 USB 2400x2400 DPI" "2500 USB 2400x2400 DPI" "15T USB 2400x2400 DPI" "18T USB 2400x2400 DPI" "450RT USB 2400x2400 DPI" "500RT USB 2400x2400 DPI"
Funcin ModeloTeclados esta funcin almacena los distintos modelos de Teclado Sub ModeloTeclados() ModeloTeclado(0) = "Office Set" ModeloTeclado(1) = "Multimedia" End Sub
Funcin ModeloVideoCamras esta funcin almacena los distintos modelos de Video Cmaras Sub ModeloVideoCamaras() ModeloVideoCamara(0) = "Zoom 5x, Pantalla LCD 2.5'" ModeloVideoCamara(1) = "Zoom 4x, Pantalla LCD 2.5'" End Sub
Funcin ModeloWebCams esta funcin almacena los distintos modelos de Web Cam Sub ModeloWebCams() ModeloWebCam(0) = "600x480 Pxls." ModeloWebCam(1) = "800x600 Pxls." End Sub
Funcin DescripcionesPC esta funcin almacena las descripciones de cada PC Sub DescripcionesPC() DescripcionPC(0) = "INTEL 865 GVHZ/ Tarj. Sonido Integrado" DescripcionPC(1) = "INTEL PIV 2.8 GHZ 512KB, 533MHZ, PGA" DescripcionPC(2) = "SAMSUNG 80GB 7200 RPM IDE" DescripcionPC(3) = "SPECTEK 512MB PC 533" DescripcionPC(4) = "ATI 8X 128MB DDR RADEON 9250 TV/OUT" DescripcionPC(5) = "D-LINK DFE - 530TX 10/100" DescripcionPC(6) = "PENTIUM IV 500W PRESCOTT" DescripcionPC(7) = "INTEL 915 GAGL/ Tarj. Sonido Integrado" DescripcionPC(8) = "INTEL PIV 3.0 GHZ 1MB, 800MHZ, LGA" DescripcionPC(9) = "SAMSUNG 80GB 7200 RPM IDE"
Funcin LlenarMarcas esta funcin Llena las marcas respectivas de cada articulo en el combo de Marcas del Articulo. Sub LlenarMarcas() Dim Inicio, Final As Integer Dim J As Integer Select Case IndexArticulo Case 0, 6, 9, 10, 12, 14 Inicio = 0 Final = 2 Case 1, 3, 8, 13 Inicio = 3 Final = 4 Case 5, 11 Inicio = 6 Final = 10 Case 2 Inicio = 11 Final = 14 Case 4 Inicio = 2 Final = 5 Case 7 Inicio = 11 Final = 11 End Select Me.cboMarca.Text = "" Me.cboMarca.Items.Clear() For J = Inicio To Final Me.cboMarca.Items.Add(Marca(J)) Next End Sub
Funcin SumarTotales esta funcin halla el total a pagar de los artculos aadidos (Precios). Sub SumarTotales() Dim J As Integer Dim Total, SubTotal, IGV As Double Total = 0 For J = 0 To Me.lstTotal.Items.Count - 1 Total = Total + Val(Me.lstTotal.Items(J)) Next SubTotal = Total * 0.81 IGV = Total - SubTotal Me.lblSubTotalProf.Text = Format(SubTotal, "###,##0.00") Me.lblIGV.Text = Format(IGV, "###,##0.00") Me.lblTotalProf.Text = Format(Total, "###,##0.00") End Sub
frmAplicacion90 (Evento Load) Me.cboArticulo.Items.Add("Audifonos") Me.cboArticulo.Items.Add("Lectora de CD") Me.cboArticulo.Items.Add("CPU") Me.cboArticulo.Items.Add("Lectora de DVD") Me.cboArticulo.Items.Add("Floppy 3 1/2") Me.cboArticulo.Items.Add("Impresora") Me.cboArticulo.Items.Add("Memoria USB") Me.cboArticulo.Items.Add("Modem") Me.cboArticulo.Items.Add("Monitor") Me.cboArticulo.Items.Add("Mouse") Me.cboArticulo.Items.Add("Reporductor MP3") Me.cboArticulo.Items.Add("Scaner") Me.cboArticulo.Items.Add("Teclado") Me.cboArticulo.Items.Add("Video Camara") Me.cboArticulo.Items.Add("Web Cam") Imagenes(0) = My.Resources.Audifonos Imagenes(1) = My.Resources.CD Imagenes(2) = My.Resources.CPU Imagenes(3) = My.Resources.DVD Imagenes(4) = My.Resources.Floppy_Drive Imagenes(5) = My.Resources.Impresora Imagenes(6) = My.Resources.Memoria_USB Imagenes(7) = My.Resources.Modem Imagenes(8) = My.Resources.Monitor Imagenes(9) = My.Resources.Mouse Imagenes(10) = My.Resources.MP3 Imagenes(11) = My.Resources.Scanner Imagenes(12) = My.Resources.Teclado Imagenes(13) = My.Resources.Video_Camara Imagenes(14) = My.Resources.Webcam Imagenes(15) = My.Resources.PC Call Limpiar()
cboArticulo (Evento SelectedIndexChanged) IndexArticulo = Me.cboArticulo.SelectedIndex Me.picArticulo.Image = Imagenes(IndexArticulo) Me.cboModelo.Text = "" Me.lblPrecUnit.Text = "" Me.lblTotal.Text = "" Me.cboMarca.Enabled = True Call MarcaArticulo() Call LlenarMarcas() If IndexArticulo <> 2 Then
btnDescripcion (Evento Click) Dim Inicio As Integer If Me.cboMarca.Text = "" Then MsgBox("Seleccione la Marca de la PC", MsgBoxStyle.Information, "Cuidado!") ElseIf Me.cboModelo.Text = "" Then MsgBox("Seleccione el Modelo de la PC", MsgBoxStyle.Information, "Cuidado!") Else Call DescripcionesPC() IndexMarca = Me.cboMarca.SelectedIndex IndexModelo = Me.cboModelo.SelectedIndex Select Case IndexMarca Case 0 Select Case IndexModelo Case 0 : Inicio = 0 Case 1 : Inicio = 7 Case 2 : Inicio = 14 End Select Case 1 Select Case IndexModelo Case 0 : Inicio = 21 Case 1 : Inicio = 28 Case 2 : Inicio = 35 End Select Case 2 Select Case IndexModelo Case 0 : Inicio = 42 Case 1 : Inicio = 49 Case 2 : Inicio = 56 End Select Case 3 Select Case IndexModelo Case 0 : Inicio = 63 Case 1 : Inicio = 70 Case 2 : Inicio = 77 End Select End Select My.Forms.frmInfo.lblMainboard.Text = DescripcionPC(Inicio) My.Forms.frmInfo.lblProcesador.Text = DescripcionPC(Inicio + 1) My.Forms.frmInfo.lblDiscoDuro.Text = DescripcionPC(Inicio + 2) My.Forms.frmInfo.lblMemoriaRAM.Text = DescripcionPC(Inicio + 3) My.Forms.frmInfo.lblTarjVideo.Text = DescripcionPC(Inicio + 4) My.Forms.frmInfo.lblTarjRed.Text = DescripcionPC(Inicio + 5) My.Forms.frmInfo.lblCase.Text = DescripcionPC(Inicio + 6) frmInfo.ShowDialog() End If
cboModelo (Evento SelectedIndexChanged) IndexArticulo = Me.cboArticulo.SelectedIndex IndexMarca = Me.cboMarca.SelectedIndex IndexModelo = Me.cboModelo.SelectedIndex Select Case IndexArticulo Case 1 Select Case IndexMarca Case 0 : Me.lblPrecUnit.Text = "29.00" Case 1 : Me.lblPrecUnit.Text = "30.00" End Select Case 2 Select Case IndexMarca Case 0 Select Case IndexModelo
= = = = = =
= = = = = =
= "130.00" = "140.00"
= "136.00" = "159.00"
= "124.00" = "179.00"
= "146.00" = "184.00"
= "155.00" = "210.00"
= "11.00" = "15.00"
btnAdicionar (Evento Click) Dim Descripcion As String If Me.cboArticulo.Text <> "" AndAlso Me.cboMarca.Text <> "" Then Descripcion = Me.cboArticulo.Text + " \ " + Me.cboMarca.Text If Aadir = False Then If Me.cboModelo.Text <> "" Then Descripcion = Descripcion + " \ " + Me.cboModelo.Text Else
lstCantidad (Evento SelectedIndexChanged) Dim Index As Integer Index = Me.lstCantidad.SelectedIndex Me.lstDescripcion.SelectedIndex = Index Me.lstPrecUnit.SelectedIndex = Index Me.lstTotal.SelectedIndex = Index Me.btnEliminar.Enabled = True
lstDescripcion (Evento SelectedIndexChanged) Dim Index As Integer Index = Me.lstDescripcion.SelectedIndex Me.lstCantidad.SelectedIndex = Index Me.lstPrecUnit.SelectedIndex = Index Me.lstTotal.SelectedIndex = Index Me.btnEliminar.Enabled = True
lstPrecUnit (Evento SelectedIndexChanged) Dim Index As Integer Index = Me.lstPrecUnit.SelectedIndex Me.lstDescripcion.SelectedIndex = Index Me.lstCantidad.SelectedIndex = Index Me.lstTotal.SelectedIndex = Index Me.btnEliminar.Enabled = True
lstTotal (Evento SelectedIndexChanged) Dim Index As Integer Index = Me.lstTotal.SelectedIndex Me.lstDescripcion.SelectedIndex = Index Me.lstPrecUnit.SelectedIndex = Index Me.lstCantidad.SelectedIndex = Index Me.btnEliminar.Enabled = True
btnEliminar (Evento Click) Dim Index As Integer Index = Me.lstCantidad.SelectedIndex Me.lstCantidad.Items.RemoveAt(Index) Me.lstDescripcion.Items.RemoveAt(Index) Me.lstPrecUnit.Items.RemoveAt(Index) Me.lstTotal.Items.RemoveAt(Index) Me.btnEliminar.Enabled = False Call SumarTotales()
Como se abran dado cuenta la codificacin de esta aplicacin en muy tediosa, pero aqu se encuentra casi todo los que hemos avanzado hasta ahora
Bueno seores con esto acaba la Octava entrega de este manual, quisiera pedirles una consulta, que es sobre la entrega dcima, tengo una idea y quiero consultarlo con ustedes, se que hasta ahora no hemos tocado el tema de base de datos, as que les parece, que si para la dcima entrega, elaboramos un programa casi completo, mejor dicho, un programa con formularios de presentacin, de ingreso de usuarios, de procesos, consultas, reportes, ayuda, y casi todo lo que tiene una programa de verdad, desde el diseo y modelamiento de la base de datos, este programa, se tratara de ya se de una empresa de fabricacin de mermeladas o de un centro comercial de ventas de GLP (Gas Licuado de Petrleo), ya que cuento con informacin de estos dos, aunque acepto sugerencias, y por supuesto que cada sugerencia de un programa, tiene que se con su informacin, en otras palabras aquella persona que propone que hagamos otro tipo de programa, nos tendr que brindar toda la informacin necesaria, eso quiere decir, su funcionamiento, los artculos, el manejo de ellos, los tipos de consultas, reportes, como esta estructurado su informacin, bueno espero sus comentarios en la pagina web www.lawebdelprogramador.com en la seccin del manual, en caso que no deseen que sea de esta forma la dcima entrega, lo haremos como hasta ahora, por temas, y si lo desean de la forma que propongo lo realizaremos paso por paso, mejor dicho las entregas lo haremos por partes, para que lo vayan avanzando como yo lo avanzo. Aqu les dejo o mejor dicho les envo los programas elaborados hasta ahora, las imgenes que utilizo en esta entrega y en la prxima entrega realizaremos lo siguiente: ! Los dems controles (WebBrowser, ListView, TreeView, etc.) Bueno conmigo ser hasta la prxima entrega.
Joel Martin Chuco Marrufo Visual_Basic_Net_2005@hotmail.com Donaciones a la cuenta de Ahorros del Banco de Interbank del Per
" Cuenta en Soles: 067-3008573552 " Cuenta en Dlares: 067-3008573560
www.interbank.com.pe