Anda di halaman 1dari 6

Fundamentos de Informtica

2005-2006 Laboratorio 7: Sentencias Condicionales 4.

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales Al hacer clic en el botn Salir, el programa finalizar. Para ello usaremos la funcin End.
a, b, c: dobles d, d1: dobles raiz1, raiz2: dobles

Objetivos: Adquirir habilidades en el uso de sentencias condicionales (if, select case). Introduccin a los subprogramas Identificar las propiedades de los objetos grficos: alineamiento, fuentes, visibilidad, ... Cambiar dinmicamente el valor de las propiedades grficas de los objetos Copiado y pegado de cdigo

Algoritmos:
Botn Calcular

Leer: a, b, c

Programa de resolucin de ecuaciones de primero y segundo grado


Interfaz:

no

Coeficientes correctos

Escribir error: coeficientes no numricos

Resolver ecuacin y mostrar resultado

Fin

Resolver ecuacin y mostrar resultado

no a <> 0 no b <> 0 s

Calcular discriminante d no d >= 0 s

Figura 1: Objetos presentes en la interfaz de la calculadora de ecuaciones Funcionamiento: 1. Al lanzar el programa los objetos del resultado (en azul) estarn invisibles 2. Al hacer clic en el botn Calcular, se debe: Recoger el valor de los coeficientes a, b y c de la ecuacin Calcular las races, pudiendo ser (si es a0 y b0): i. De primer grado (ecuacin lineal, si a = 0) ii. De segundo grado, pudiendo ser real, cuando el discriminante sea positivo o nulo, o imaginaria (nmeros complejos), cuando el discriminante es negativo. Bloquear los campos para que no se modifiquen los valores y se pierda la coherencia 3. Al hacer clic en el botn Borrar se debe borrar el contenido de las cajas de texto volviendo todos los objetos al estado inicial 1 de 12

Escribir: No es una ecuacin

Calcular ecuacin lineal

Calcular y mostrar races imaginarias

Calcular y mostrar races reales

Fin

Frmula general
b b 2 4ac r= 2a

1er grado
c r= b

2 grado reales
r1 = r2 = b + b 4ac 2a b b 2 4ac 2a
b 2 4ac 0
2

2 grado imaginarias
r1 = r2 = b + 2a b 2a 4ac b 2 i 2a 4ac b 2 i 2a

Caso particular:

a=0

b 2 4ac < 0

2 de 12

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Pasos a seguir: 1. Crearemos los objetos del tipo y forma mostrados en la Figura 1. Slo daremos un nombre particular a aqullos que nos interesa leer o modificar sus propiedades en algn momento del programa. En la Figura 2 se muestran en rojo los nombres de estos objetos.

visibles de manera selectiva algunos de ellos, e incluso cambiaremos las etiquetas segn convenga:
Private Sub ponerSolucionInvisible() lblSol1.Visible = False lblSol2.Visible = False txtSol1.Visible = False txtSol2.Visible = False lblMas1.Visible = False lblMas2.Visible = False txtIma1.Visible = False txtIma2.Visible = False lblIma1.Visible = False lblIma2.Visible = False End Sub

Cdigo del botn Calcular: se controlar la validez de los coeficientes (han de ser numricos) y en funcin de los valores introducidos por el usuario, se determina el tipo de ecuacin y se calcularn los resultados. Veamos el cdigo paso a paso. Primero declararemos las variables para los coeficientes a, b y c como Doubles (reales), as como otras especificadas en el algoritmo. Luego controlaremos que sean numricas y si es as leeremos su valor a sus variables correspondientes.
Private Sub cmdCalcular_Click() Dim a As Double Dim b As Double Dim c As Double Dim d As Double ' Discriminante Dim d1 As Double ' Raz cuadrada del discriminante Dim raiz1 As Single Dim raiz2 As Single ' Obtener los valores de los coeficientes If IsNumeric(txtA.Text) And _ IsNumeric(txtB.Text) And _ IsNumeric(txtC.Text) Then ' Los valores son numricos a = Val(txtA.Text) b = Val(txtB.Text) c = Val(txtC.Text) If (a <> 0) Then ' Ecuacin de segundo grado ... Aqu ir el cdigo adicional, que veremos a continuacin Else MsgBox ("Error: Coeficientes no numricos") End If End Sub ' Fin de cmdCalcular_Click

Figura 2: Nombres de los objetos en la interfaz de la calculadora de ecuaciones 2. Aadir el cdigo a los eventos, es decir, la carga del formulario y el clic sobre los botones: Cdigo de carga del formulario: para especificar el cdigo de carga del formulario haremos clic dos veces sobre el formulario. Lo que conviene hacer es inhabilitar las cajas de texto de la solucin (de una vez por todas) y poner todos los objetos asociados a la solucin invisibles (que haremos visibles cuando sea preciso):
Private Sub Form_Load() ponerSolucionInvisible txtSol1.Enabled = False txtSol2.Enabled = False txtIma1.Enabled = False txtIma2.Enabled = False End Sub

Se observa que hemos escrito ponerSolucionInvisible, que es un subprograma que escribiremos inmediatamente a continuacin. Lo que tendremos que hacer es especificar uno a uno que los objetos relacionados con la solucin van a estar invisibles. Luego, dependiendo del tipo de solucin, haremos

3 de 12

4 de 12

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Tras leer el valor de las variables, siguiendo el algoritmo, determinaremos si se trata de una ecuacin de segundo grado, de primer grado o si no se trata de una ecuacin. Habr que tener cuidado con la indentacin (sangrado) ya que afecta de manera importante a la legibilidad:
If (a <> 0) Then ' Ecuacin de segundo grado ... Aqu ir el cdigo adicional, que veremos a continuacin ElseIf b <> 0 Then ' Ecuacin de primer grado ... Aqu ir el cdigo adicional, que veremos a continuacin Else MsgBox ("Error: No es una ecuacin") End If Else MsgBox ("Error: Coeficientes no numricos")

El cdigo asociado al subprograma ponerEcuacionRealSegundoGrado se encarga de hacer visibles los objetos necesarios para mostrar la solucin de las races reales, y es el siguiente:
Private Sub ponerEcuacionRealSegundoGrado() bloquearABC lblSol1.Caption = "Raz 1:" lblSol1.Visible = True txtSol1.Visible = True lblSol2.Caption = "Raz 2:" lblSol2.Visible = True txtSol2.Visible = True End Sub

Siempre que vayamos a mostrar la solucin a una ecuacin vamos a bloquear los objetos de entrada de los coeficientes de la ecuacin, ya que si permitimos modificarlos no sern consistentes con las soluciones mostradas. Este bloqueo lo haremos con el subprograma bloquearABC. El cdigo para esto ser:
Private Sub bloquearABC() txtA.Enabled = False txtB.Enabled = False txtC.Enabled = False End Sub

Para las ecuaciones de segundo grado (coeficiente a 0) calcularemos el discriminante (variable d). Si ste es nulo tendremos dos races reales idnticas, si es positivo tendremos dos races reales y si es negativo tendremos dos races imaginarias. Tendremos dos modos distintos de visualizacin que se traducirn en los subprogramas ponerEcuacionRealSegundoGrado, para visualizar solamente los campos de la solucin real, y ponerEcuacionImagSegundoGrado, para visualizar tambin la parte imaginaria de las races complejas.
' Ecuacin de segundo grado d = b ^ 2 - 4 * a * c ' Clculo del discriminante If d >= 0 Then ' Soluciones reales d1 = Sqr(d) txtSol1.Text = (-b + d1) / (2 * a) txtSol2.Text = (-b - d1) / (2 * a) ponerEcuacionRealSegundoGrado Else ' Soluciones imaginarias d1 = Sqr(-d) txtSol1.Text = -b / (2 * a) txtSol2.Text = -b / (2 * a) txtIma1.Text = d1 / (2 * a) txtIma2.Text = -d1 / (2 * a) ponerEcuacionImagSegundoGrado End If ElseIf b <> 0 Then

Cuando se trata de una ecuacin de segundo grado con soluciones imaginarias tendremos que hacer visibles los mismos objetos que los de la solucin anterior, lo cual haremos mediante un nuevo subprograma al que llamaremos ponerEcuacionImagSegundoGrado y luego llamaremos al subprograma anterior ponerEcuacionRealSegundoGrado, correspondientes a la parte imaginaria:
Private Sub ponerEcuacionImagSegundoGrado() ponerEcuacionRealSegundoGrado lblMas1.Visible = True lblMas2.Visible = True txtIma1.Visible = True txtIma2.Visible = True lblIma1.Visible = True lblIma2.Visible = True End Sub

adems

de

visualizar

los

objetos

Finalmente, cuando el coeficiente a es nulo nos encontramos ante una ecuacin lineal, que slo tendr una raz. Con esto finalizaremos el cdigo asociado al botn Calcular y aadiremos un subprograma para visualizar una nica raz:

5 de 12

6 de 12

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales
ElseIf b <> 0 Then ' Ecuacin de primer grado txtSol1.Text = -c / b ponerEcuacionPrimerGrado Else MsgBox ("Error: No es una ecuacin")

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Programa rodillo
Interfaz:

El cdigo del subprograma ponerEcuacionPrimerGrado es ms sencillo que los anteriores:


Private Sub ponerEcuacionPrimerGrado() bloquearABC lblSol1.Caption = "Raz:" lblSol1.Visible = True txtSol1.Visible = True End Sub

Cdigo del botn Borrar: antes hemos creado un subprograma para borrar todos los objetos de la solucin al cargar el formulario llamada ponerSolucionInvisible. Adems de eso hemos de desbloquear los campos de los coeficientes a, b y c, ponindolos vacos:
Private Sub cmdBorrar_Click() ponerSolucionInvisible desbloquearABC End Sub

Figura 3: Objetos presentes en la interfaz del rodillo Funcionamiento: El programa contiene 5 cuadros de texto no editables (propiedad Enabled a False). El primero de ellos contiene el texto ste es el texto que se desplaza. Los botones de la ventana permiten desplazar el texto. 1. Botn Desplazar: El texto se desplaza a la siguiente posicin de modo circular. Si el texto se encuentra en la ltima posicin, ste pasa a la primera. 2. Botn Saltar 1: El texto se desplaza de manera circular dejando un hueco entre la posicin que ocupaba y la nueva posicin. Cuando llega al final vuelve a desplazar por arriba. 3. Botn Mover al principio: Coloca el texto en la primera casilla. 4. Botn Mover al final: Coloca el texto en la ltima casilla. Recomendaciones: Utiliza las sentencias condicionales para determinar en qu casilla se encuentra el texto y as decidir la nueva ubicacin de ste, segn el botn. Copia el texto de la casilla origen a la casilla destino y luego pon la casilla origen a

El subprograma para desbloquear los coeficientes es fcilmente adivinable:


Private Sub desbloquearABC() txtA.Enabled = True txtB.Enabled = True txtC.Enabled = True txtA.Text = "" txtB.Text = "" txtC.Text = "" End Sub

Cdigo del botn Salir. Al igual que en ejemplos anteriores, terminaremos la ejecucin del programa mediante la orden End:
Private Sub cmdSalir_Click() End End Sub

Nota: Crea un nuevo proyecto por cada ejercicio que resuelvas

cadena vaca.

7 de 12

8 de 12

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Programa calculadora 2
Interfaz:

Programa de clculo de reas


Interfaces:

Figura 4: Interfaz del segundo modelo de calculadora Funcionamiento: Esta aplicacin permite calcular los resultados de las operaciones suma (+), resta (), multiplicacin (*), cociente de la divisin entera (/) y el resto de la divisin entera (\). Ntese que en Visual Basic el cociente de la divisin entera se representa mediante la barra invertida (\) y el resto de la divisin entera mediante la palabra reservada mod. Se controlar que los valores introducidos en las cajas de texto son correctos (numricos) as como que no se intente dividir por cero. Tambin se controlar que el operador sea uno de los cinco especificados: +, , *, / o \. El cuadro de texto donde se presentan los resultados no es editable. Los botones del programa actuarn como sigue: Botn Calcular: Realiza la operacin. Botn Borrar: Limpia el contenido de las cajas de texto. Botn Salir: Finaliza la ejecucin del programa. Figura 5: Coleccin de interfaces del programa de clculo de rea

9 de 12

10 de 12

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Fundamentos de Informtica
2005-2006 Laboratorio 7: Sentencias Condicionales

Funcionamiento: Esta aplicacin permite calcular el rea de un rectngulo, un crculo o un tringulo. En cada uno de los casos pedir los datos necesarios ocultando para ello los objetos que no sean necesarios y modificando las etiquetas en caso de que sea necesario. El cuadro de texto donde se presentan los resultados no es editable. Nota: Como en el ejercicio anterior controla que los valores introducidos en las cajas de texto son correctos (son numricos). Los botones del programa actuarn como sigue: Botn Selecciona elemento: lanza un MsgBox proponiendo los elementos a calcular el rea. Para poder partir en lneas concatenaremos vbCrLf a la cadena como fin de lnea. Visualiza los elementos apropiados con las etiquetas pertinentes, ocultando los objetos que no sean adecuados. Botn Calcular: Realiza la operacin. Botn Salir: Finaliza la ejecucin del programa.

Programa de clculo de la fecha siguiente


Interfaz:

Figura 6: Interfaz del programa de clculo de fechas Funcionamiento: El programa trabaja con fechas (probar ejecutable). 1. Botn +: Controla que la fecha introducida es correcta (aos positivos de cuatro dgitos) y calcula la fecha del da siguiente, escribindola en los cuadros de texto correspondientes. 2. Botn Borrar: Elimina el contenido de las cajas de texto. 3. Botn Salir: Sale del programa. Controles: Contenido del campo da, mes y ao numricos Da correcto: mayor o igual que 1 y menor o igual que 31 Ejemplo
Select Case X+2 Case 0 ... Case Is >0 ... Case "A", "a" ... Case 0 To 10 ... Case Else ... End Select

Referencia rpida Sintaxis


If Condicin Then Instr1 [ Else Instr 2] If Condicin 1 Then Select Case Expresin Case Opcin 1

Mes correcto: mayor o igual que 1 y menor o igual que 12 Ao correcto: mayor o igual que 1000 y menor o igual que 9999 Fecha correcta: no hay da 31 en febrero, abril, junio, septiembre o noviembre Fecha correcta: no hay 30 de febrero Fecha correcta: no hay 29 de febrero los aos que no son bisiestos1 Recomendacin: Ntese que al incrementar el da podemos llegar a una fecha incorrecta, en cuyo caso habr que pasar al primer da del mes siguiente y posiblemente al primer da del ao siguiente. Esta verificacin ser similar a la del control de correccin de la fecha.

Lista sentencias 1
Case Opcin 2

Lista sentencias 1
ElseIf Condicin 2 Then

Lista sentencias 2 ...


Case Opcin n

Lista sentencias 2
Else

Lista sentencias n Lista sentencias n


Case Else

End

Lista sentencias n+1


End Select

Son bisiestos los aos divisibles por 4 que no lo son por 100 salvo los que son divisibles por 400. Por ejemplo, 1996, 2000 y 2004 fueron bisiestos, pero no lo sern el 2100, 2200 y 2300, y s 2400. A ver quines lo contamos.

11 de 12

12 de 12

Anda mungkin juga menyukai