dpto. lenguajes y sistemas...
TRANSCRIPT
![Page 1: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/1.jpg)
2. Estructuras condicionales
Fundamentos de InformáticaDpto. Lenguajes y Sistemas Informáticos
Curso 2012 / 2013
![Page 2: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/2.jpg)
2
ÍndiceEstructuras condicionales
1. Ej07: Cond. simple2. Ej08: Cond. doble
3. Ej09: Cond. anidada
4. Ej10: Cond. cascada
5. Recomendaciones6. Resumen
7. Operadores relacionales
8. Operadores booleanos o lógicos
![Page 3: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/3.jpg)
3
Condicionales
Ejemplo 07• Título:
– Condicional simple
• Nombre– cmd07_Click
• Descripción– Leer una variable entera, calcular su valor absoluto
(en la misma variable) y mostrar el resultado
• Observaciones– Condicional simple
Ej07: Cond. simple
![Page 4: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/4.jpg)
4
Ej07: Diagrama de FlujoEj07: Cond. simpleConditionals
Condicional simple
Fin
cmd07_Click
Escribe n
n ← LeeEntero
n: entero
n < 0no
n ← - n
sí
![Page 5: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/5.jpg)
5
Ej07: Codificación VBEj07: Cond. simple
Sub cmd07_Click()Dim s As StringDim n As Integer
s = InputBox ( "Introduce número" )n = CInt (s)If n < 0 Then
n = -nEnd IfMsgBox "Valor absoluto: " & CStr (n)
End Sub
Conditionals
Fin
Escribe n
n ← - n
n < 0no sí
n ← LeeEntero
cmd07_Clickn: entero
![Page 6: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/6.jpg)
6
Condicionales
2. Ejemplo 08• Título:
– Condicional doble
• Nombre– cmd08_Click
• Descripción– Leer una variable entera, calcular su valor absoluto
en otra variable, y mostrar el resultado
• Observaciones– Condicional doble
Ej08: Cond. doble
![Page 7: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/7.jpg)
7
Ej08: Diagrama de FlujoEj08: Cond. dobleCondicionales
Condicional doble
Fin
cmd08_Click
Escribe n, a
a ← - n
n, a: entero
n < 0no sí
a ← n
n ← LeeEntero
![Page 8: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/8.jpg)
8
Ej08: Codificación VBEj08: Cond. dobleCondicionales
Fin
Escribe n, a
a ← - n
n < 0no sí
a ← n
Sub cmd08_Click()Dim s As StringDim n As IntegerDim a As Integer
s = InputBox ( "Número:" )n = CInt (s)If n < 0 Then
a = -nElse
a = nEnd IfMsgBox "Valor absoluto de " & CStr (n) & _
" es " & CStr (a)End Sub
n ← LeeEntero
cmd08_Clickn, a: entero
![Page 9: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/9.jpg)
9
Condicionales
3. Ejemplo 09• Título:
– Condicional anidada
• Nombre– cmd09_Click
• Descripción– Leer tres variables enteras, calcular cuál es la
mayor de ellas y mostrar el resultado
• Observaciones– Condicional anidada (condicional dentro de una
condicional)
Ej09: Cond. anidada
![Page 10: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/10.jpg)
10
Ej09: Diagrama de FlujoEj09: Cond. anidadaCondicionales
Condicional anidada
Fin
cmd09_Click
Escribe n1, n2, n3, m
n1, n2, n3: enterom: entero
m ← n1
n1 > n3no sí
m ← n3m ← n2
n2 > n3no sí
m ← n3
n1 > n2sí
Condicional anidada
no
n1 ← LeeEnteron2 ← LeeEnteron3 ← LeeEntero
![Page 11: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/11.jpg)
11
Ej09: Codificación VB (I)Ej09: Cond. anidada
Sub cmd09_Click()Dim s As StringDim n1 As Integer, n2 As Integer, n3 As IntegerDim m As Integers = 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
Condicionales
![Page 12: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/12.jpg)
12
Ej09: Codificación VB (II)Ej09: Cond. anidada
…n3 = CInt (S)
If n1 > n2 ThenIf n1 > n3 Then
m = n1Else
m = n3End If
ElseIf n2 > n3 Then
m = n2Else
m = n3End If
End IfMsgBox "El mayor de " & CStr (n1) & ", " & _
…
Condicionales
![Page 13: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/13.jpg)
13
Condicionales
4. Ejemplo 10• Título:
– Condicional en cascada
• Nombre– 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
• Observaciones– Condicional en cascada– Tras la alternativa Else inmediatamente viene una
nueva condición, convirtiendose en ElseIf
Ej10: Cond. cascada
![Page 14: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/14.jpg)
14
Ej10: Diagrama de FlujoEj10: Cond. cascadaCondicionales
Fin
cmd10_Click
Escribe n1, n2, n3, m
n1, n2, n3: enterom: entero
m ← n1
no sí
m ← n2
n2 > n3no sí
m ← n3
n1 > n2 ∧ n1 > n3
n1 ← LeeEnteron2 ← LeeEnteron3 ← LeeEntero
Único punto de fin
![Page 15: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/15.jpg)
15
Ej10: Codificación VB (I)Ej10: Cond. cascada
Sub cmd10_Click()Dim s As StringDim n1 As Integer, n2 As Integer, n3 As IntegerDim m As Integers = 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
Condicionales
![Page 16: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/16.jpg)
16
Ej10: Versión anidada (II)Ej10: Cond. cascada
…n3 = CInt (S)
If n1 > n2 And n1 > n3 Thenm = n1
ElseIf n2 > n3 Then
m = n2Else
m = n3End If
End IfMsgBox "El mayor de " & CStr (n1) & ", " & _
…
Condicionales
Dos puntos de fin
![Page 17: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/17.jpg)
17
Ej10: Versión en cascada (III)Ej10: Cond. cascada
…n3 = CInt (S)
If n1 > n2 And n1 > n3 Thenm = n1
ElseIf n2 > n3 Thenm = n2
Elsem = n3
End IfMsgBox "El mayor de " & CStr (n1) & ", " & _
…
Condicionales
Único punto de fin
![Page 18: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/18.jpg)
18
5. Recomendaciones (I)5. RecomendacionesCondicionales
• 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 :Sub ejemplo ()
. . .
If a > b Then
t = a
a = b
b = t
End If
End Sub
![Page 19: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/19.jpg)
19
5. Recomendaciones (II)5. RecomendacionesCondicionales
• 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
No volvemos a mirar si es mayor o igual a 5
![Page 20: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/20.jpg)
20
5. Recomendaciones (III)5. RecomendacionesCondicionales
• Cuando hay dos condiciones a las que queremos asociar la misma acción se agruparán en una sola
c1nosí
A1c2
nosí
...A1
c1 ∨ c2nosí
...A1
![Page 21: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/21.jpg)
21
5. Recomendaciones (IV)5. RecomendacionesCondicionales
• Cuando han de cumplirse dos condiciones simultaneas no pondremos dos instrucciones condicionales sino una sola con la conjunción de las condiciones
c1síno
A1
c2síno
c1 ∧ c2síno
A1
![Page 22: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/22.jpg)
22
6. ResumenCondicionales
• Condicional simpleIf condición Then
...
End If
6. Resumen (I)
• Condicional dobleIf condición Then
...
Else
...
End If
condiciónno sí
...
condiciónno sí
... ...
condiciónnosí
... ...
condiciónnosí
...
![Page 23: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/23.jpg)
23
6. ResumenCondicionales
• Condicional anidadaIf condición Then...
Else
If condición Then. . .
Else. . .
End If
End If
6. Resumen (II)
• Condicional en cascadaIf condición Then. . .
ElseIf condición Then. . .
Else. . .
End If
condición
condición
no sí
no sí
... ... ...
condición
condición
no sí
no sí
... ... ...
![Page 24: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/24.jpg)
24
6. ResumenCondicionales
• Condicional simple incorrectaIf condición Then
Else
. . .
End If
• Negar la condición y OK
6. Resumen (III)
• Representaciones incorrectas (confusión con bucles)
condiciónnosí
...
condiciónsíno
...
condiciónno
sí...
...
condición
no
sí
...
...
![Page 25: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/25.jpg)
25
Condicionales
7. Operadores relacionales– Comparan valores y tienen resultado lógico True ó False
– Los operadores relacionales son 6
DdF VB Descripción> > Mayor
≥ >= Mayor o igual
= = Igual
≠ <> Distinto< < Menor
≤ <= Menor o igual
– Hay que tener cuidado porque no se pueden formar expresiones matemáticas de acotamiento
7. Relacionales
![Page 26: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/26.jpg)
26
7. Operaciones booleanas o lógicas– Relacionan expresiones lógicas– El resultado es de tipo lógico (Boolean): True ó False
– Los operandos lógicos son 4:
DdF VB Descripción¬ Not Negación, no
∧ And Conjunción, y
∨ Or Disyunción, o
⊕ Xor Disyunción exclusiva, o exclusiva
Condicionales 7. Booleanas
![Page 27: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/27.jpg)
27
• Operadores booleanos o lógicos– El resultado se expresa mediante tablas de verdad
DdF VB Descripción¬ Not Cambia de cierto a falso y viceversa∧ And Cierto sólo si ambos operandos son ciertos
∨ Or Cierto si algún operando o ambos son ciertos
⊕ Xor Cierto si los operandos son distintos
Negación Conjunción DisyunciónDisyunción exclusiva
¬a a ∧ b a ∨ b a ⊕ ba b Not a a And b a Or b a Xor 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
Condicionales 7. Booleanas
![Page 28: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.es/asignaturas/FdIvb/es/teo/FdIvb-02-Condic... · 2012-09-03 · – Condicional simple • Nombre – cmd07_Click • Descripción](https://reader034.vdocuments.net/reader034/viewer/2022042807/5f7858c3f9c5912efa4c6c25/html5/thumbnails/28.jpg)
28
Condicionales
• 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 ∧ ¬bNot (a Or b) ≡ Not a And Not b
Ejemplo:DdF: ¬ (a > 0 ∧ b > 0) ≡≡≡≡ a ≤ 0 ∨ b ≤ 0VB: Not (a>0 And 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 ∨ ¬bNot (a And b) ≡ Not a Or Not b
Ejemplo:DdF: ¬(a ≥ 0 ∧ b > 0) ≡ a < 0 ∨ b ≤ 0VB: Not (a >= 0 And b > 0) ≡ a < 0 Or b <= 0
7. Booleanas