Está en la página 1de 7

ndice

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

Estructuras condicionales

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

Curso 2012 / 2013

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

Ej07: Diagrama de Flujo

Ejemplo 07
Ttulo:

cmd07_Click

Condicional simple

n: entero

Nombre
n LeeEntero

cmd07_Click

Descripcin
no

Leer una variable entera, calcular su valor absoluto


(en la misma variable) y mostrar el resultado

n<0

Condicional simple

n-n

Observaciones
Condicional simple

Escribe n
Fin

Conditionals

Ej07: Codificacin VB

Ej07: Cond. simple

Condicionales

cmd07_Click
n: entero
n LeeEntero
no

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

2. Ejemplo 08
Ttulo:
Condicional doble

Nombre

n<0

Ej08: Cond. doble

cmd08_Click

Descripcin

n-n

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: Diagrama de Flujo

Ej08: Cond. doble

Ej08: Codificacin VB
cmd08_Click
n, a: entero

cmd08_Click
Sub cmd08_Click()
Dim s As String
Dim n As Integer
Dim a As Integer

n, a: entero
n LeeEntero
no

n<0

an

Condicional doble

n LeeEntero
no

n<0

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

a-n

Escribe n, a
Fin

Condicionales

Ej09: Cond. anidada

Condicionales

Ej09: Cond. anidada

Ej09: Diagrama de Flujo

3. Ejemplo 09
Ttulo:

n1, n2, n3: entero


m: entero

cmd09_Click

Condicional anidada

Nombre
cmd09_Click

Descripcin
Condicional anidada

Leer tres variables enteras, calcular cul es la


mayor de ellas y mostrar el resultado

n1 LeeEntero
n2 LeeEntero
n3 LeeEntero
no

Observaciones
no

Condicional anidada (condicional dentro de una


condicional)

n2 > n3

m n3

n1 > n2

Condicional anidada

s
no

s
m n2

n1 > n3

m n3

s
m n1

Escribe n1, n2, n3, m


Fin

Condicionales

Ej09: Cond. anidada

10

Condicionales

Ej09: Codificacin VB (I)

Ej09: Cond. anidada

Ej09: Codificacin VB (II)

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

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

Ej10: Diagrama de Flujo

4. Ejemplo 10
Ttulo:

cmd10_Click

Condicional en cascada

Nombre

n1, n2, n3: entero


m: entero

n1 LeeEntero
n2 LeeEntero
n3 LeeEntero

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

no

Observaciones

no

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

n2 > n3

m n3

n1 > n2 n1 > n3
s
m n2

m n1

Escribe n1, n2, n3, m

nico punto de fin

Fin
13

Condicionales

14

Ej10: Cond. cascada

Condicionales

Ej10: Codificacin VB (I)

Ej10: Cond. cascada

Ej10: Versin anidada (II)

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

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

Ej10: Versin en cascada (III)

5. Recomendaciones

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:

n3 = CInt (S)

If n1 > n2 And n1 > n3 Then


m = n1
ElseIf n2 > n3 Then
m = n2
Else
nico punto de fin
m = n3
End If

Sub ejemplo ()
. . .
If a > b Then
t = a
a = b
b = t
End If
End Sub

MsgBox "El mayor de " & CStr (n1) & ", " & _

17

Condicionales

5. Recomendaciones

Condicionales

5. Recomendaciones (II)

5. Recomendaciones

5. Recomendaciones (III)

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

18

Cuando hay dos condiciones a las que queremos


asociar la misma accin se agruparn en una sola

No volvemos a mirar si
es mayor o igual a 5

no
c1

A1

s
A1

19

c2

no
...

s
A1

c1 c2

no
...

20

Condicionales

5. Recomendaciones

Condicionales

5. Recomendaciones (IV)

6. Resumen (I)

Cuando han de cumplirse dos condiciones simultaneas


no pondremos dos instrucciones condicionales sino una
sola con la conjuncin de las condiciones

Condicional simple
If condicin Then

no

...

condicin

s
...

End If
no

6. Resumen

condicin

no

...

s
c1

no

c2

no

c1 c2

Condicional doble
If condicin Then
...

A1

A1

Else

no
condicin

...

End If

...

no
condicin

...

...

...

21

Condicionales

22

6. Resumen

Condicionales

6. Resumen (II)

6. Resumen (III)

Condicional anidada
If condicin Then
...

Else
If condicin Then

6. Resumen

no
no

condicin

...

condicin

If condicin Then
Else
. . .
End If

...

Condicional simple incorrecta

...

. . .

Else

no

no

condicin

s
condicin

...

Negar la condicin y OK

...

. . .

End If
End If

Condicional en cascada

no

If condicin Then

condicin

Representaciones incorrectas (confusin con bucles)

. . .

ElseIf condicin Then

no

condicin

no

. . .

Else

...

...

...

. . .

condicin

condicin

no
...

...

End If

...

23

s
...

24

Condicionales

7. Relacionales

Condicionales

7. Operadores relacionales

7. Booleanas

7. Operaciones booleanas o lgicas

Comparan valores y tienen resultado lgico True False

Relacionan expresiones lgicas


El resultado es de tipo lgico (Boolean): True False

Los operadores relacionales son 6

Los operandos lgicos son 4:

VB

Descripcin

>

>

Mayor

DdF

VB

Descripcin

>=

Mayor o igual

Not

Negacin, no

<

=
<>
<
<=

Igual
Distinto
Menor
Menor o igual

And

Conjuncin, y

Or

Disyuncin, o

Xor

Disyuncin exclusiva, o exclusiva

DdF

Hay que tener cuidado porque no se pueden formar expresiones


matemticas de acotamiento

25

Condicionales

7. Booleanas

Condicionales

Operadores booleanos o lgicos

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

Negacin Conjuncin Disyuncin

ab

ab

Not (a Or b) Not a And Not b


Ejemplo:
DdF:
(a > 0 b > 0)

VB:
Not (a>0 And b>0)

ab

Falso

Falso

Cierto

Falso

Falso

Falso

Falso Cierto

Cierto

Falso

Cierto

Cierto

Cierto Falso

Falso

Falso

Cierto

Cierto

Cierto Cierto

Falso

Cierto

Cierto

Falso

a0b0
a<=0 Or b<=0

La negacin de la conjuncin es equivalente a la


disyuncin de las negaciones (cambia por )
(a b) a b

Disyuncin
exclusiva

7. Booleanas

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

El resultado se expresa mediante tablas de verdad


DdF
VB
Descripcin

26

Not a a And b a Or b a Xor b

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

27

28

También podría gustarte