dpto. lenguajes y sistemas...

28
2. Estructuras condicionales Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos Curso 2012 / 2013

Upload: others

Post on 27-Jul-2020

2 views

Category:

Documents


0 download

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

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

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

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

4

Ej07: Diagrama de FlujoEj07: Cond. simpleConditionals

Condicional simple

Fin

cmd07_Click

Escribe n

n ← LeeEntero

n: entero

n < 0no

n ← - n

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

...

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

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

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

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

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