Está en la página 1de 7

ndice

2. Estructuras condicionales
Fundamentos de Informtica
Dpto. Lenguajes y Sistemas Informticos

Estructuras condicionales

Curso 2012 / 2013

1. 2. 3. 4. 5. 6. 7. 8.

Ej07: Cond. simple Ej08: Cond. doble Ej09: Cond. anidada Ej10: Cond. cascada Recomendaciones Resumen Operadores relacionales Operadores booleanos o lgicos

Condicionales

Ej07: Cond. simple

Conditionals

Ej07: Cond. simple

Ejemplo 07
Ttulo:
Condicional simple

Ej07: Diagrama de Flujo


cmd07_Click n: entero n LeeEntero no n<0 s n-n Condicional simple

Nombre
cmd07_Click

Descripcin
Leer una variable entera, calcular su valor absoluto (en la misma variable) y mostrar el resultado

Observaciones
Condicional simple

Escribe n Fin

Conditionals

Ej07: Cond. simple

Condicionales

Ej08: Cond. doble

Ej07: Codificacin VB

cmd07_Click n: entero n LeeEntero

2. Ejemplo 08
Ttulo:
Condicional doble

Sub cmd07_Click() Dim s As String Dim n As Integer

no

n<0

s n-n

Nombre
cmd08_Click

Descripcin
Leer una variable entera, calcular su valor absoluto en otra variable, y mostrar el resultado

s = InputBox ("Introduce nmero") n = CInt (s) Escribe n If n < 0 Then n = -n End If Fin MsgBox "Valor absoluto: " & CStr (n) End Sub

Observaciones
Condicional doble

Condicionales

Ej08: Cond. doble

Condicionales

Ej08: Cond. doble

Ej08: Diagrama de Flujo


cmd08_Click n, a: entero n LeeEntero no an n<0 s a-n Condicional doble

Ej08: Codificacin VB
cmd08_Click n, a: entero Sub cmd08_Click() Dim s As String Dim n As Integer Dim a As Integer n LeeEntero no n<0 s

Escribe n, a Fin

a-n an s = InputBox ("Nmero:") n = CInt (s) If n < 0 Then Escribe n, a a = -n Else a = n Fin End If MsgBox "Valor absoluto de " & CStr (n) & _ " es " & CStr (a) End Sub

Condicionales

Ej09: Cond. anidada

Condicionales

Ej09: Cond. anidada

3. Ejemplo 09
Ttulo:
Condicional anidada

Ej09: Diagrama de Flujo


cmd09_Click n1 LeeEntero n2 LeeEntero n3 LeeEntero no no m n3 n2 > n3 s m n2 n1 > n2 s no m n3 n1 > n3 s m n1 n1, n2, n3: entero m: entero

Nombre
cmd09_Click

Descripcin
Leer tres variables enteras, calcular cul es la mayor de ellas y mostrar el resultado Condicional anidada

Condicional anidada

Observaciones
Condicional anidada (condicional dentro de una condicional)

Escribe n1, n2, n3, m Fin

10

Condicionales

Ej09: Cond. anidada

Condicionales

Ej09: Cond. anidada

Ej09: Codificacin VB (I)


Sub cmd09_Click() Dim s As String Dim n1 As Integer, n2 As Integer, n3 As Integer Dim m As Integer s = InputBox ("Introduce primer nmero: ") n1 = CInt (s) s = InputBox ("Introduce segundo nmero: ") n2 = CInt (s) s = InputBox ("Introduce tercer nmero: ") n3 = CInt (s) MsgBox "El mayor de " & CStr (n1) & ", " & _ CStr (n2) & " y " & CStr (n3) & _ " es: " & CStr (m) End Sub

Ej09: Codificacin VB (II)

n3 = CInt (S)

If n1 > n2 Then If n1 > n3 Then m = n1 Else m = n3 End If Else If n2 > n3 Then m = n2 Else m = n3 End If End If
MsgBox "El mayor de " & CStr (n1) & ", " & _

11

12

Condicionales

Ej10: Cond. cascada

Condicionales

Ej10: Cond. cascada

4. Ejemplo 10
Ttulo:
Condicional en cascada

Ej10: Diagrama de Flujo


cmd10_Click n1 LeeEntero n2 LeeEntero n3 LeeEntero no no m n3 n2 > n3 s m n2 m n1 nico punto de fin n1 > n2 n1 > n3 s n1, n2, n3: entero m: entero

Nombre
cmd10_Click

Descripcin (Mismo problema que el ejemplo anterior)


Leer tres variables enteras, calcular cul es la mayor de ellas y mostrar el resultado Variante distinta de la solucin

Observaciones
Condicional en cascada Tras la alternativa Else inmediatamente viene una nueva condicin, convirtiendose en ElseIf

Escribe n1, n2, n3, m Fin


13

14

Condicionales

Ej10: Cond. cascada

Condicionales

Ej10: Cond. cascada

Ej10: Codificacin VB (I)


Sub cmd10_Click() Dim s As String Dim n1 As Integer, n2 As Integer, n3 As Integer Dim m As Integer s = InputBox "Introduce primer nmero: " n1 = CInt (s) s = InputBox "Introduce segundo nmero: " n2 = CInt (s) s = InputBox "Introduce tercer nmero: " n3 = CInt (s) MsgBox "El mayor de " & CStr (n1) & ", " & _ CStr (n2) & " y " & CStr (n3) & _ " es: " & CStr (m) End Sub

Ej10: Versin anidada (II)

n3 = CInt (S)

If n1 > n2 And n1 > n3 Then m = n1 Else If n2 > n3 Then m = n2 Else m = n3 End If Dos puntos de fin End If
MsgBox "El mayor de " & CStr (n1) & ", " & _

15

16

Condicionales

Ej10: Cond. cascada

Condicionales

5. Recomendaciones

Ej10: Versin en cascada (III)

n3 = CInt (S)

5. Recomendaciones (I)
El cuerpo de las instrucciones condicionales normalmente ir sangrado dos espacios en cada anidamiento, a aadir al cuerpo del subprograma Es por legibilidad, ya que Visual Basic lo entender de igual manera Ejemplo:
Sub ejemplo () . . . If a > b Then t = a a = b b = t End If End Sub
17 18

If n1 > n2 And n1 > n3 Then m = n1 ElseIf n2 > n3 Then m = n2 Else nico punto de fin m = n3 End If
MsgBox "El mayor de " & CStr (n1) & ", " & _

Condicionales

5. Recomendaciones

Condicionales

5. Recomendaciones

5. Recomendaciones (II)
Para facilitar la programacin es conveniente identificar conjuntos disjuntos y la condicin que las distingue Es mejor no volver a verificar condiciones excluidas Ejemplo:
If nota < 5 Then cal = "suspenso" ElseIf nota < 7 Then cal = "aprobado" ElseIf nota < 9 Then cal = "notable" Else cal = "sobresaliente" End If No volvemos a mirar si es mayor o igual a 5

5. Recomendaciones (III)
Cuando hay dos condiciones a las que queremos asociar la misma accin se agruparn en una sola

s
c1

no s A1
c2

A1

no ...

s A1

c1 c2

no ...

19

20

Condicionales

5. Recomendaciones

Condicionales

6. Resumen

5. Recomendaciones (IV)
Cuando han de cumplirse dos condiciones simultaneas no pondremos dos instrucciones condicionales sino una sola con la conjuncin de las condiciones
no
c1

6. Resumen (I)
Condicional simple If condicin Then
...

no
condicin

s ... ...

condicin

no

End If s no
c2

s A1

no

c1 c2

s A1

Condicional doble If condicin Then


...

Else
...

no
condicin

s ...

s
condicin

no ...

End If

...

...

21

22

Condicionales

6. Resumen

Condicionales

6. Resumen

6. Resumen (II)
Condicional anidada
If condicin Then
...

6. Resumen (III)
no no
condicin condicin

Condicional simple incorrecta


If condicin Then Else . . . End If

Else If condicin Then


. . .

...

...

...

s
condicin

no ... ...

no
condicin

Else
. . .

Negar la condicin y OK

End If End If

Condicional en cascada
If condicin Then
. . .

no no
condicin condicin

Representaciones incorrectas (confusin con bucles)

ElseIf condicin Then


. . .

no ... ... ...


condicin condicin

s ...

Else
. . .

...

...

End If

no ...

23

24

Condicionales

7. Relacionales

Condicionales

7. Booleanas

7. Operadores relacionales
Comparan valores y tienen resultado lgico True False Los operadores relacionales son 6 DdF
> = <

7. Operaciones booleanas o lgicas


Relacionan expresiones lgicas El resultado es de tipo lgico (Boolean): True False Los operandos lgicos son 4: DdF

VB
>

Descripcin
Mayor Mayor o igual Igual Distinto Menor Menor o igual

VB
Not And Or Xor

Descripcin
Negacin, no Conjuncin, y Disyuncin, o Disyuncin exclusiva, o exclusiva

>=
= <> < <=

Hay que tener cuidado porque no se pueden formar expresiones matemticas de acotamiento

25

26

Condicionales

7. Booleanas

Condicionales

7. Booleanas

Operadores booleanos o lgicos


El resultado se expresa mediante tablas de verdad DdF VB Descripcin
Not And Or Xor Cambia de cierto a falso y viceversa Cierto slo si ambos operandos son ciertos Cierto si algn operando o ambos son ciertos Cierto si los operandos son distintos

Leyes de De Morgan (Augustus De Morgan 1806-1871) La negacin de la disyuncin es equivalente a la conjuncin de la negaciones (cambia por ) (a b) a b
Not (a Or b) Not a And Not b Ejemplo: DdF: (a > 0 b > 0) VB: Not (a>0 And b>0) a0b0 a<=0 Or b<=0

Negacin Conjuncin Disyuncin

Disyuncin exclusiva

a
a Falso b Falso Cierto Cierto Falso Falso

ab
Falso Falso Falso Cierto

ab
Falso Cierto Cierto Cierto

ab
Falso Cierto Cierto Falso
27

Not a a And b a Or b a Xor b

Falso Cierto Cierto Falso Cierto Cierto

Not (a And b) Not a Or Not b Ejemplo: DdF: (a 0 b > 0) a<0b0 VB: Not (a >= 0 And b > 0) a < 0 Or b <= 0

La negacin de la conjuncin es equivalente a la disyuncin de las negaciones (cambia por ) (a b) a b

28