universidad don bosco facultad de estudios tecnológicos escuela de

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #02
CICLO: 02/ 2011
Nombre de la Practica:
ESTRUCTURAS REPETITIVAS
Lugar de Ejecución:
Centro de Computo
Tiempo Estimado:
2 horas y 30 minutos
MATERIA:
Lenguajes de Programación 1
I. OBJETIVOS
Que el estudiante sea capaz de:
•
Declarar variables de acuerdo a los requerimientos de datos a manejar
•
Definir todo tipo de expresiones complejas (matemáticas y lógicas) en un programa VB.NET
•
Implementar las instrucciones de control repetitiva (For, While, Do) en el cod.fuente
•
Diseñar la combinación apropiada de las diferentes estructuras vistas en el diseño de un programa
cualquiera
II. INTRODUCCION TEORICA
Declarar variables de acuerdo a los requerimientos de datos a manejar
Es muy importante elegir bien el tipo de dato a la hora de declarar una variable, esto nos ayudará a consumir
menos recursos de memoria y lograr mayor eficiencia en nuestras aplicaciones.
Como vimos en la práctica anterior cada tipo de dato ocupa cierto espacio en memoria. Por tanto debemos ser
cuidadosos al momento de elegir un tipo de dato para almacenar la información.
Por ejemplo cuando necesitemos almacenar datos que contienen solo números, como por ejemplo un número de
teléfono, un número de DUI o ISSS, es mejor declararla de tipo String en vez de tipo Integer o Short, Dado que al
declararlos como String estos ocupara en memoria solo la cantidad de bytes necesarios para representar a cada
uno de los caracteres que compone la información.
Pero entonces cuando debemos declarar variables de tipo numérico, sencillo lo haremos solo cuando necesitemos
almacenar datos con los cuales haremos operaciones o cálculos matemáticos con dichas variables.
También es necesario al elegir un tipo de dato numérico la cantidad de números que va a almacenar y si estos son
de coma flotante o no. Debe de tomar muy en cuenta los rangos de valores que puede tomar cada tipo de dato
para hacer la elección correcta.
Estructuras Repetitivas
Permiten ejecutar un conjunto de sentencias repetidamente una cierta cantidad de veces o hasta que se cumpla
una determinada condición. Al conjunto de sentencias se le denomina bucle y a cada repetición del cuerpo del
bucle se denomina iteración.
Visual Basic.Net cuanta con varias instrucciones para el control de repeticiones de bucles, veamos detalladamente
cada una de ellas.
1
Guía # 2: ESTRUCTURAS REPETITIVAS
Instrucción Do…Loop
Sintaxis:
Do While|Until <condición>
Do
(Instrucciones)
(Instrucciones)
[Exit Do]
[Exit Do]
Loop
Loop While|Until <condición>
Opción 1
Opción 2
While|Until son las palabras clave que se utilizan para repetir el bucle. Solamente se puede utilizar una de las
dos. Si utiliza While el bucle se repetirá hasta que la condición se falsa. Por el contrario si utiliza Until, el bucle se
repetirá hasta que la condición resulte verdadera.
La instrucción Exit Do se utiliza para salir del bucle Do.
Si usted utiliza la opción 1, primero se va a evaluar la condición y, depende de la instrucción que usted utilice, se
ejecutará el lazo si la condición es verdadera (si utiliza While) ó si la condición es falsa (si utiliza Until). Mientras
que con la opción 2, el bucle se ejecutará por lo menos una vez.
Instrucción While … End While
Sintaxis:
While <condición>
(Instrucciones)
End While
La instrucción While se utiliza para repetir un conjunto de acciones cuando se verifica una condición.
Instrucción For … Next
La instrucción For … Next se utiliza para repetir un conjunto de instrucciones, un número dado de veces.
Sintaxis:
For contador=<valor inicial> To <valor Final> [Incremento]
(Instrucciones)
[Exit For]
Next [Contador]
Donde:
•
Contador: cualquier variable numérica
•
Valor Inicial: Es el valor inicial del contador
•
Valor Final: Es el valor final del contador
•
Instrucciones: Son las instrucciones que se repetirán un número de veces dada.
•
Exit For: Es opcional y se utiliza para salir del bucle For.
•
Next: Marca el final de la instrucción For. Tan pronto como el programa se tope con la instrucción Next,
se agregará el valor de incremento al contador y la siguiente iteración del bucle tendrá lugar. Una buena
práctica de programación consiste en especificar el nombre del contador en la instrucción Next, pero no
es obligación.
Lenguajes de Programación 1
2
Guía # 2: ESTRUCTURAS REPETITIVAS
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No.
1
Requerimiento
Cantidad
Guía de Laboratorio 2 de LP1
1
PC con Microsoft Visual Studio 2008 .NET instalado
1
2
Memoria USB
1
3
Computadora con acceso a Internet
1
IV. PROCEDIMIENTO
Para esta práctica deberá crear una carpeta con el nombre de “Práctica2LP1”, en la cual va a guardar todos los
archivos de esta práctica y de análisis de resultados.
PARTE 1: Aplicación utilizando For … Next
Problema a Solucionar: “Calcular y mostrar el factorial de un número”
1. Cree un nuevo proyecto de Windows en VB.Net
2. Diseñe el siguiente esquema de objetos (Figura 1.1) y asigne los valores a las propiedades que se
muestran.
Propiedades
Figura 1.1 Diseño de objetos del Form1
(Controles)
Name
Text
Form1
frmFactorial
Calculo del
factorial
Label1
lblNumero
Numero:
Label2
lblFactorial
Factorial:
Textbox1
txtNumero
(Vacio)
Textbox2
txtFactorial
(Vacio)
Button1
btnCalcular
Calcular
Button2
btnSalir
Salir
3. Proceda a digital el código detallado a continuación, en el evento y objeto especificado.
Objeto y Evento/Nivel
btnCalcular
Click
Dim factorial As Long = 1
Dim i As Long
'Verificamos que el TxtNumero contenga un dato numérico
If IsNumeric(txtNumero.Text) Then
'Se realiza un for desde 1 hasta el Número
For i = CDbl(txtNumero.Text) To 1 Step -1
'Se multiplica el factorial por todos los números menores
factorial *= i
Lenguajes de Programación 1
3
Enable
False
Guía # 2: ESTRUCTURAS REPETITIVAS
Next i
txtFactorial.Text = factorial.ToString
Else
MsgBox("Debe ingresar un número!", MsgBoxStyle.Exclamation)
txtNumero.Clear()
txtNumero.Focus()
End If
btnSalir
Click
Redacte el código para salir!!
4. Guarde los cambios en el proyecto actual y realice pruebas con varios números. Responda estas
interrogantes: ¿Cree que los tipos de variables elegidas son las correctas?, ¿Debería de realizarse más
validaciones en este ejercicio?. Si es así agregue las que considere necesarias.
PARTE 2: Aplicación utilizando For … Each
Problema a solucionar: “Crear una aplicación para encriptar y desencriptar un mensaje utilizando el código de
césar. Este código consiste en sustituir cada letra por la que se encuentra alfabéticamente n posiciones más
adelante. A esta n se le conoce como llave”
1. Agregue un nuevo formulario al proyecto actual y elíjalo como formulario de inicio.
2. Diseñe el siguiente esquema de objetos (ver Figura 1.2) y asigne los valores a las propiedades descritas.
Figura 1.2 Diseño de objetos del Form2
Lenguajes de Programación 1
4
Guía # 2: ESTRUCTURAS REPETITIVAS
Propiedades
(Controles)
Name
Text
Enable
Form2
frmCesar
Encriptador/Desencriptador de Código de César
Label1
Lbltitulo
Encriptamiento por código César
Label2
lblTexto
Ingrese el texto a Encriptar/Desencriptar
Label3
lblllave
Llave
Label4
lblResultado
(Vacio)
Textbox1
txtLlave
(Vacio)
Textbox2
txtTexto
(Vacio)
Textbox3
txtResultado
(Vacio)
RadioButton1
rdbEncriptar
Encriptar
RadioButton2
rdbDesencriptar
Desencriptar
Button1
btnEncriptar
Encriptar
Button2
btnLimpiar
Limpiar
Button3
btnSalir
Salir
Checked
False
True
3. Proceda a digital el código detallado a continuación, en el evento y objeto especificado.
Objeto y Evento/Nivel
btnEncriptar
Click
'Verificamos que la llave contenga un número y que este sea positivo
If IsNumeric(txtLlave.Text) AndAlso CInt(txtLlave.Text) > 0 Then
txtResultado.Clear()
Dim ascii As Short
'Para cada caracter en el objeto txtTexto
For Each c In txtTexto.Text
'Verificamos si el usuario desea encriptar o desencriptar el texto
If rdbEncriptar.Checked = True Then
'Convertimos el caracter extraido a su equivalente numero ASCII
' y le sumamos la llave
ascii = Asc(c) + CInt(txtLlave.Text)
Else
'Convertimos el caracter a su equivalente numero ASCII
'y le restamos la llave
ascii = Asc(c) - CInt(txtLlave.Text)
End If
'Concatenamos en txtResultado el nuevo ascii convertido a caracter
txtResultado.Text += Chr(ascii)
Next
lblresultado.Text = "Texto Encriptado:"
Else
MsgBox("El dato introducido en la llave es incorrecto", MsgBoxStyle.Critical)
txtLlave.Focus()
txtLlave.Clear()
End If
rdbEncriptar
If rdbEncriptar.Checked = True Then
btnEncriptar.Text = "Encriptar"
End If
Lenguajes de Programación 1
CheckedChanged
5
Guía # 2: ESTRUCTURAS REPETITIVAS
rdbDesencriptar
If rdbDesencriptar.Checked = True Then
btnEncriptar.Text = "Desencriptar"
End If
CheckedChanged
btnLimpiar
Click
txtTexto.Clear()
txtResultado.Clear()
btnSalir
Click
Redacte el código para salir
4. Guarde los cambios en el proyecto actual y realice pruebas con varios textos y llaves.
PARTE 3: Aplicación que utiliza Do … Loop Until
Problema a solucionar: “Crear una aplicación que dado un número lo muestre al revés.”
1. Agregue un nuevo formulario al proyecto y elíjalo como formulario de inicio.
2. Diseñe el siguiente esquema de objetos (Figura 1.3) y asigne los valores a las propiedades descritas.
Propiedades
Figura 1.3 Diseño de objetos del Form3
(Controles)
Name
Text
Form3
frmReves
Mostrar un
número al
revéz
Label1
lblNumero
Numero:
Label2
lblFactorial
Al revés:
Textbox1
txtNumero
(Vacio)
Textbox2
txtreves
(Vacio)
Button1
btnCalcular
Calcular
Button2
btnSalir
Salir
Enable
False
3. Proceda a digital el código detallado a continuación, en el evento y objeto especificado.
Objeto y Evento/Nivel
btnCalcular
Click
If IsNumeric(txtnumero.Text) AndAlso CInt(txtnumero.Text) > 0 Then
Dim numero As Integer = CInt(txtnumero.Text)
'Para poner al revés un número hay que ir dividiendo el número
'para sacar al digito mas significativo y colocarlo en el nuevo
'numero en el digito menos significativos y asi sucesivamente
Dim div As Integer 'Contiene el dividor para sacar el digito mas significativo
Dim r As Integer 'Almacena el digito mas significativo
Dim reves As Integer 'Almacena el numero al revés
Dim multi As Integer = 1 'Multiplica digito mas significativo
txtnumero.Text = numero.ToString
'verificamos la cantidad de digitos del número
'Para asignar su divisor
If numero >= 100000 And numero <= 999999 Then
div = 100000
Lenguajes de Programación 1
6
Guía # 2: ESTRUCTURAS REPETITIVAS
ElseIf numero >= 10000 And numero <= 99999 Then
div = 10000
ElseIf numero >= 1000 And numero <= 9999 Then
div = 1000
ElseIf numero >= 100 And numero <= 999 Then
div = 100
ElseIf numero >= 10 And numero <= 99 Then
div = 10
ElseIf numero < 10 Then
div = 1
Else
MsgBox("Número fuera de rango (1-999999)")
Exit Sub
End If
Do
'Capturamos el digito mas significativo
r = numero \ div
'Restamos este digito al numero
numero = numero - r * div
'Calculamos el siguiente divisor
div = div / 10
'multiplicamos el digito segun su peso y lo sumanos al nuevo numero
reves = reves + (r * multi)
'Calculamos el siguiente multiplicador
multi = multi * 10
'El proceso se repite hasta que el numero es igual a 0
Loop Until numero = 0
txtreves.Text = reves.ToString
End If
btnSalir
Click
Redacte el código para salir
4. Guarde los cambios en el proyecto actual y realice pruebas con varios números.
PARTE 4: Aplicación utilizando While … End while
Problema a solucionar: “Crear una aplicación que muestre la sucesión de ULAM dado un número entero positivo.
La conjetura de ULAM comienza con cualquier numero positivo, Si es par se divide entre 2, si es impar, se
multiplica por 3 y se le agrega 1, se obtienen enteros sucesivamente hasta obtener un 1”
Propiedades
(Controles)
Name
Text
Form4
frmULAM
Sucesión de
ULAM
Label1
lblNumero
Sucesión de
ULAM:
ListBox1
lstLista
Button1
btnCalcular
Calcular
Button2
btnSalir
Salir
Figura 1.4: Diseño de objetos del Form4
1. Agregue un nuevo formulario al proyecto y elíjalo como formulario de inicio.
Lenguajes de Programación 1
7
Enable
Guía # 2: ESTRUCTURAS REPETITIVAS
2. Diseñe el siguiente esquema de objetos (Figura 1.4) y asigne los valores a las propiedades ahí descritas.
3. Proceda a digital el código detallado a continuación, en el evento y objeto especificado.
Objeto y Evento/Nivel
btnCalcular
Click
Dim numero As Integer
Dim texto As String
texto = InputBox("Ingrese un número positivo")
If IsNumeric(texto) AndAlso CInt(texto) > 0 Then
numero = CInt(texto)
lstLista.Items.Add(numero)
While numero <> 1
If numero Mod 2 = 0 Then
numero /= 2
Else
numero = (numero * 3) + 1
End If
lstLista.Items.Add(numero)
End While
Else
MsgBox("Dato incorrectos. Debe ingresar un número positivo", MsgBoxStyle.Critical)
End If
btnSalir
Click
Redacte el código para salir
4. Guarde los cambios en el proyecto actual y realice pruebas con varios números.
EJERCICIOS A REALIZAR AL FINALIZAR EL PROCEDIMIENTO
•
Modifique el formulario desarrollado en la Parte 1, agregando otro boton, el cual realice el calculo del
factorial, pero con una estructura de control repetitiva diferente al utilizado inicialmente.
•
Realice una aplicación que verifique si un número es primo o no. Recuerde que un número primo es
aquel que solo puede ser divisible entre el mismo y la unidad.
•
Realice una aplicación que solicite una contraseña (Usted elije cual sera..). Si la contraseña es correcta
muestra en ese formulario un mensaje secreto. El usuario tendrá 3 intentos para ingresar la contraseña
correcta. Si no lo logra muestre un mensaje de error en el formulario.
V. DISCUSION DE RESULTADOS
Elabore un proyecto en el cual solucione los siguientes problemas, cada uno en un form diferente.
PROBLEMAS A RESOLVER:
1. Elabore una aplicación que muestre en un control ListBox los números de la serie Fibonacci (0, 1, 1, 2, 3, 5, 8, 13,
21...) generados hasta un número introducido por el usuario.
Ejemplo: si el usuario introduce valor 11, la serie a mostrar constaria de estos valores: 0, 1, 1, 2, 3, 5 y 8. No se
mostraria el 13 por ser mayor que el valor limite ingresado por usuario.
2. Un estudiante de la materia de Expresión oral y escrita necesita un programa donde pueda introducir un texto
y este le calcule la cantidad de palabras que contiene el texto.
Lenguajes de Programación 1
8
Guía # 2: ESTRUCTURAS REPETITIVAS
3. Un docente necesita una aplicación para calcular la nota promedio, nota mayor y menor de su grupo de
estudiantes del curso de CCNA de la Academia Cisco. El docente ingresará la cantidad de notas a procesar, para
luego digitar nota por nota. Una nota es un puntaje “entero” valido solamente entre el rango de 1 – 100
Finalmente, envíe la carpeta del proyecto resultante, de manera comprimida al email de su instructor(a) en la
fecha que lo indique!!
VII. BIBLIOGRAFÍA
•
Bill Evjen, Jason Beres y otros (2002), El libro de Visual Basic.NET (1era Ed), España. Editorial Anaya
•
Ceballos, Francisco Javier (2006), ENCICLOPEDIA DE MICROSOFT VISUAL BASIC (1er Ed), Mexico,
Editorial ALFAOMEGA, ISBN: 9701512189
Lenguajes de Programación 1
9
Descargar