lsi1 4: control de flujo condicionales y bucles. lsi2 motivación n secuencia de acciones n...

22
LSI 1 4: Control de flujo Condicionales y bucles

Upload: amparo-fonseca

Post on 02-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 1

4: Control de flujo Condicionales y bucles

Page 2: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 2

Motivación

Secuencia de acciones Programas lineales Limitación en el tipo de programas que se

pueden desarrollar

¿Cómo se puede construir un programa que calcule el valor absoluto de un número entero?

Page 3: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 3

Motivación

En ocasiones, un programa necesita controlar las condiciones en las que se pueden ejecutar algunas instruccionesEjemplo:

resultado = numero / X‘ Si X es 0, error!!!!

Especificación:Si X es distinto de cero se calcula la división número / X

Page 4: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 4

Condicionales

¿ExpresiónLógica?

Cierto

Cierto

Falso

Expresión lógica: Devuelve verdadero o falso Determina las acciones a ejecutar en función del

resultado de una expresión lógica

Page 5: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 5

Diagrama de flujoInicio

Escribir: “introduce un número”Leer X

X<>0?

Escribir num/X

Fin

no

Escribir: “introduce un número”Leer num

si

Page 6: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 6

IF….THEN …. END IF

If condicion then

Lista_sentencias

end if

Page 7: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 7

Codigo en Visual Basic

Private sub Command1_click()Dim x as integerDim num as integerNum=Inputbox(“introduce un número”)x=Inputbox(“introduce otro número”)

If x<>0 thenmsgbox(“El resultado es” & num/x)

End ifEnd sub

Page 8: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 8

Diagrama de flujo

Escribir: “no se puede realizar la división”

Inicio

Escribir: “introduce un número”Leer X

X<> 0?

Escribir num/X

Fin

no

Escribir: “introduce un número”Leer num

si

Page 9: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 9

IF….THEN ….ELSE …. END IF

If condicion then

Lista_sentencias_1

else

Lista_sentencias_2

end if

Page 10: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 10

Código en Visual BasicPrivate sub Command1_click()

Dim x as integerDim num as integerNum=Inputbox(“introduce un número”)x=Inputbox(“introduce otro número”)If x<>0 then

msgbox(“El resultado es” & Num/X)Else

msgbox(“no se puede realizar la división”)End if

End sub

Page 11: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 11

Múltiples comprobaciones

Problema:Dado un número, mostrar en pantalla si el número es positivo, negativo o igual a cero

Page 12: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 12

Diagrama de flujoInicio

Escribir: “Introduceun número”

Leer num

Num > 0

Num < 0

Escribir: “El númeroes positivo”

Escribir: “El númeroes negativo”

Escribir: “El númeroes cero”

Inicio

No

NoSi

Si

Page 13: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 13

IF…. THEN …. ELSEIF …. ELSE…. END IF

IF Condicion_1 THENLista_sentencias_1

ELSEIF Condicion_2 THENLista_sentencias_2

…ELSE

Lista_Sentencias_nEND IF

Page 14: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 14

Codigo en Visual BasicPrivate sub Command1_click()

Dim Num as integerNum=Inputbox(“introduce un número”)

If Num > 0 thenmsgbox(“El número es positivo”)

Elseif Num < 0 thenmsgbox(“El número es negativo”)

Else msgbox(“El número es cero”)

End ifEnd sub

Page 15: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 15

Condiciones múltiples

¿Qué hacemos cuando hay muchas condiciones distintas para una única expresión?

Ejemplo:Dada la nota numérica de un alumno, escribir la calificación correspondiente

8 Notable

Page 16: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 16

Diagrama de flujoInicio

Escribir: “IntroduceLa nota”

Leer num

nota = 10

nota < 10and

nota >= 9

Escribir: “MH”

Escribir:“Sobresaliente

Inicio

nota < 9and

nota >= 7

nota < 7and

nota >= 5

Escribir: “Notable”

Escribir: “Aprobado”

Escribir: “Suspenso”

Si

Si

Si

Si

No

No

No

No

Page 17: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 17

Select case Select case Nombre_Variable  case opción_1

Lista_Sentencias_1case opción_2

Lista_Sentencias_2 . . . .case opción_n

Lista_Sentencias_n case else

Lista_Sentencias_n+1End select

Page 18: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 18

Select Case

Opciones– Valor

Case 0

– IS expresiónCase is <0

– Lista de valoresCase 20,30,40

– Rango de valores (TO)Case 50 to 80

Page 19: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 19

Select Case

Comprobaciones sobre una única variable o expresión

Rangos disjuntos de valores Más sencillo y eficiente

Page 20: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 20

Codigo en Visual BasicPrivate sub Command1_click()

Dim nota as integernota=Inputbox(“introduce un número”)Select Case notaCase 10msgbox(“MH”)Case is >= 9msgbox(“Sobresaliente”)Case is >= 7msgbox(“Notable”) Case is >= 5msgbox(“Aprobado”) Case Else msgbox(“Suspenso”)

End SelectEnd sub

Page 21: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 21

EjemploSelect case Variable  case is <10 ‘Expresion

result = 1+3case 20 ‘Valor

result = 20+4case 30,40,50 to 80 ‘Lista y rango de valores

result = 98/10 case else

result = 50End select

Page 22: LSI1 4: Control de flujo Condicionales y bucles. LSI2 Motivación n Secuencia de acciones n Programas lineales n Limitación en el tipo de programas que

LSI 22

Select Case vs If…Then…Elseif…else

Select Case– Muchas posibilidades (rangos)– Una única variable o expresión

If … then … elseif … else– Pocas posibilidades– Comprobaciones sobre distintas variables o expresiones

If a < b thenMsgbox(a)

elseif c <> 0 then msgbox(c)else

msgbox(b)end if