2. Estructuras condicionales Ejemplo 07 Ej07: Diagrama de Flujo

Anuncio
Índice
1.
2.
3.
4.
5.
6.
7.
8.
Estructuras condicionales
2. Estructuras condicionales
Fundamentos de Informática
Dpto. Lenguajes y Sistemas Informáticos
Curso 2012 / 2013
Ej07: Cond. simple
Ej08: Cond. doble
Ej09: Cond. anidada
Ej10: Cond. cascada
Recomendaciones
Resumen
Operadores relacionales
Operadores booleanos o lógicos
2
Condicionales
Ej07: Cond. simple
Conditionals
Ej07: Cond. simple
Ej07: Diagrama de Flujo
Ejemplo 07
• Título:
cmd07_Click
– Condicional simple
n: entero
• Nombre
n ← LeeEntero
– cmd07_Click
• Descripción
no
– Leer una variable entera, calcular su valor absoluto
(en la misma variable) y mostrar el resultado
sí
n<0
Condicional simple
n←-n
• Observaciones
– Condicional simple
Escribe n
Fin
3
4
Conditionals
Ej07: Codificación 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
• Título:
– Condicional doble
• Nombre
sí
n<0
Ej08: Cond. doble
– cmd08_Click
• Descripción
n←-n
– Leer una variable entera, calcular su valor absoluto
en otra variable, y mostrar el resultado
s = InputBox ("Introduce número")
n = CInt (s)
Escribe n
If n < 0 Then
n = -n
End If
Fin
MsgBox "Valor absoluto: " & CStr (n)
End Sub
• Observaciones
– Condicional doble
5
Condicionales
6
Ej08: Cond. doble
Condicionales
Ej08: Diagrama de Flujo
Ej08: Cond. doble
Ej08: Codificación 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
a←n
sí
Condicional doble
n ← LeeEntero
no
n<0
sí
a←-n
a←n
s = InputBox ("Número:")
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
7
8
Condicionales
Ej09: Cond. anidada
Condicionales
Ej09: Cond. anidada
Ej09: Diagrama de Flujo
3. Ejemplo 09
• Título:
n1, n2, n3: entero
m: entero
cmd09_Click
– Condicional anidada
• Nombre
– cmd09_Click
• Descripción
Condicional anidada
– Leer tres variables enteras, calcular cuál 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
9
Condicionales
Ej09: Cond. anidada
10
Condicionales
Ej09: Codificación VB (I)
Ej09: Cond. anidada
Ej09: Codificación 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 número: ")
n1 = CInt (s)
s = InputBox ("Introduce segundo número: ")
n2 = CInt (s)
s = InputBox ("Introduce tercer número: ")
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
• Título:
cmd10_Click
– Condicional en cascada
• Nombre
n1, n2, n3: entero
m: entero
n1 ← LeeEntero
n2 ← LeeEntero
n3 ← LeeEntero
– cmd10_Click
• Descripción (Mismo problema que el ejemplo anterior)
– Leer tres variables enteras, calcular cuál es la
mayor de ellas y mostrar el resultado
– Variante distinta de la solución
no
• Observaciones
no
– Condicional en cascada
– Tras la alternativa Else inmediatamente viene una
nueva condición, convirtiendose en ElseIf
n2 > n3
m ← n3
sí
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: Codificación VB (I)
Ej10: Cond. cascada
Ej10: Versión 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 número: "
n1 = CInt (s)
s = InputBox "Introduce segundo número: "
n2 = CInt (s)
s = InputBox "Introduce tercer número: "
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: Versión en cascada (III)
5. Recomendaciones
5. Recomendaciones (I)
• El cuerpo de las instrucciones condicionales
normalmente irá sangrado dos espacios en cada
anidamiento, a añadir 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 programación es conveniente identificar
conjuntos disjuntos y la condición 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 acción se agruparán en una sola
No volvemos a mirar si
es mayor o igual a 5
sí
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 conjunción de las condiciones
Condicional simple
If condición Then
no
...
condición
sí
sí
...
End If
no
6. Resumen
condición
no
...
sí
c1
no
c2
sí
no
•
sí
c1 ∧ c2
Condicional doble
If condición Then
...
A1
A1
Else
no
condición
...
End If
...
sí
sí
no
condición
...
...
...
21
Condicionales
22
6. Resumen
Condicionales
6. Resumen (II)
•
6. Resumen (III)
Condicional anidada
If condición Then
...
Else
If condición Then
6. Resumen
no
no
condición
...
condición
•
sí
If condición Then
Else
. . .
End If
sí
...
Condicional simple incorrecta
...
. . .
•
Else
sí
no
no
condición
sí
condición
...
Negar la condición y OK
...
. . .
End If
End If
•
Condicional en cascada
•
no
If condición Then
condición
Representaciones incorrectas (confusión con bucles)
sí
. . .
ElseIf condición Then
no
condición
sí
no
. . .
Else
...
...
...
. . .
condición
condición
sí
no
...
...
End If
...
23
sí
...
24
Condicionales
7. Relacionales
Condicionales
7. Operadores relacionales
7. Booleanas
7. Operaciones booleanas o lógicas
– Comparan valores y tienen resultado lógico True ó False
– Relacionan expresiones lógicas
– El resultado es de tipo lógico (Boolean): True ó False
– Los operadores relacionales son 6
– Los operandos lógicos son 4:
VB
Descripción
>
>
Mayor
DdF
VB
Descripción
≥
>=
Mayor o igual
¬
Not
Negación, no
=
≠
<
≤
=
<>
<
<=
Igual
Distinto
Menor
Menor o igual
∧
And
Conjunción, y
∨
Or
Disyunción, o
⊕
Xor
Disyunción exclusiva, o exclusiva
DdF
– Hay que tener cuidado porque no se pueden formar expresiones
matemáticas de acotamiento
25
Condicionales
7. Booleanas
Condicionales
• Operadores booleanos o lógicos
Not
And
Or
Xor
Cambia de cierto a falso y viceversa
Cierto sólo si ambos operandos son ciertos
Cierto si algún operando o ambos son ciertos
Cierto si los operandos son distintos
Negación Conjunción Disyunción
¬a
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) ≡
a⊕b
b
Falso
Falso
Cierto
Falso
Falso
Falso
Falso Cierto
Cierto
Falso
Cierto
Cierto
Cierto Falso
Falso
Falso
Cierto
Cierto
Cierto Cierto
Falso
Cierto
Cierto
Falso
a≤0∨b≤0
a<=0 Or b<=0
– La negación de la conjunción es equivalente a la
disyunción de las negaciones (cambia ∧ por ∨ )
¬(a ∧ b) ≡ ¬a ∨ ¬b
Disyunción
exclusiva
a
7. Booleanas
• Leyes de De Morgan (Augustus De Morgan 1806-1871)
– La negación de la disyunción es equivalente a la
conjunción de la negaciones (cambia ∨ por ∧ )
¬ (a ∨ b) ≡ ¬a ∧ ¬b
– El resultado se expresa mediante tablas de verdad
DdF
VB
Descripción
¬
∧
∨
⊕
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<0∨b≤0
VB:
Not (a >= 0 And b > 0) ≡ a < 0 Or b <= 0
27
28
Descargar