Estructuras bsicas de control del flujo de ejecucin - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

Estructuras bsicas de control del flujo de ejecucin

Description:

Estructuras bsicas de control del flujo de ejecucin – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Slides: 22
Provided by: luishern
Category:

less

Transcript and Presenter's Notes

Title: Estructuras bsicas de control del flujo de ejecucin


1
Estructuras básicas de control del flujo de
ejecución
Departamento de Sistemas Informáticos y
Programación
  • Facultad de CC. FísicasLaboratorio de
    Programación curso 05/06 TEMA 2

2
Contenido
  • Composición secuencial
  • Selección
  • Condicional
  • if simple
  • if...else
  • Con tipos ordinales
  • switch
  • Iteración
  • while
  • for
  • do...while

3
Composición secuencial
  • Las instrucciones en C se ejecutan en el orden
    en que aparecen escritas.
  • Orden de evaluación de los operadores.
  • La unidad de estructuración es el bloque de
    código.
  • Las declaraciones sólo sobreviven hasta el
    final del bloque.
  • //Diferencias?
  • int x 0
  • x x 1
  • x
  • // //
  • int x 0 int x 0
  • x x 1 x x 1
  • x
  • x

4
Composición secuencial
  • Orden de evaluación de los operadores
  • () de dentro a fuera
  • !, , -- de derecha a izq
  • /, , de izq a derecha
  • , - de izq a derecha
  • lt, gt, gt, lt de izq a derecha
  • , ! de izq a derecha
  • de izq a derecha
  • de izq a derecha

prioridad - prioridad
5
Selección condicional if simple
  • Condiciona la ejecución de una instrucción o de
    un grupo de instrucciones.
  • Sintaxis
  • if (expresión) instrucción
  • if (expresión) secuencia de
    instrucciones
  • expresión debe ser un tipo bool.

Los paréntesis son obligatorios sintaxis if
expresión debe ser un tipo bool.
6
Selección condicional if simple
  • Ejemplo if
  • int main()
  • int n
  • cout ltlt Introduzca un entero comprobaremos si
    es par. \n
  • cin gtgt n
  • if(n 2 0) cout ltlt n ltlt es par. \n
  • char caracter
  • cin gtgt caracter
  • return 0

Cierto distinto de cero Falso cero
Al llegar al condiciona 1º se evalúa la
condición si es cierta se ejecuta el cuerpo. Si
es falsa se obvia.
7
Selección condicional if simple
  • // Diferencias?
  • if(n 2 1)
  • p p x
  • n n 1
  • //
  • if(n 2 1)
  • p p x
  • n n 1

Normas de estilo Para una única instrucción
corta una línea. if (expresión)
instrucción Para un bloque if (expresión)
instruccion 1 instruccion n Para una
única instrucción larga if (expresión)
instruccion
8
Selección condicional if .. else
  • Para elegir condicionalmente entre la ejecución
    de dos instrucciones.
  • Sintaxis
  • if (expresión) instrucción else
    instrucción
  • if (expresión)
  • secuencia de instrucciones else
    secuencia de instrucciones

9
Selección condicional if .. else
  • Ejemplo if ... else
  • int main()
  • int magico 123 / número mágico /
  • int intento
  • cout ltlt "Adivina el número mágico "
  • cin gtgt intento
  • if(intento magico)
  • cout ltlt " Correcto "
  • else cout ltlt ".. Incorrecto .."
  • return 0

10
Selección condicional if .. else
  • Ejemplo if ... else
  • int main()
  • int n
  • cout ltlt Introduzca un entero comprobaremos si
    es par. \n
  • cin gtgt n
  • if(n 2 0) cout ltlt n ltlt es par. \n
  • else cout ltlt n ltlt es impar.
  • char caracter
  • cin gtgt caracter
  • return 0

11
Selección condicional if .. else
  • Ejemplo if ... else
  • int main()
  • short int mes, dias
  • cout ltlt Introduzca entero correspondiente al
    mes. Le diremos cuantos dias tiene. \n
  • cin gtgt mes
  • if(mes 1) dias 31
  • else if (mes 2) dias 28
  • else if (mes 3) dias 31
  • else ...
  • cout ltlt El mes ltlt mes ltlt tiene ltlt dias
  • ltlt dias
  • getchar()
  • return 0

Evaluación secuencial. Podemos ahorrar pasos?
12
Selección condicional if .. else
  • Ejemplo if ... else
  • int main()
  • short int mes, dias
  • cout ltlt Introduzca entero correspondiente al
    mes. Le diremos cuantos dias tiene. \n
  • cin gtgt mes
  • if(mes lt 7)
  • if (mes 2 1) dias 31
  • else if (mes 2) dias 28
  • else dias 30
  • else
  • if (mes 2 1) dias 30
  • else dias 31
  • cout ltlt El mes ltlt mes ltlt tiene ltlt dias
  • ltlt dias
  • getchar()
  • return 0

13
Selección Aplicación programación defensiva
  • Comprobación de la validez de los datos
  • Uso del if para comprobar que el usuario no
    introduce datos incorrectos.
  • // Ejemplo calcular la raíz cuadrada y el
    recíproco de un número introducido por el usuario.

14
Selección Aplicación programación defensiva
  • int main()
  • double usenum
  • cout ltlt Este programa calcula la raiz
    cuadrada ltlt
  • y el reciproco del numero que Vd nos dé. \n
  • cout ltlt Introduzca numero. \n
  • cin gtgt usenum
  • if (usenum lt 0.0)
  • cout ltlt La raiz cuadrada de un numero
    lt ltlt negativo no existe.\n
  • else
  • cout ltlt La raiz cuadrada de ltlt usenum
  • ltlt es ltlt sqrt(usenum)ltlt \n
  • if (usenum 0.0)
  • cout ltlt El reciproco de 0 no existe\n
  • else
  • cout ltlt El reciproco de ltlt usenum ltlt es
  • ltlt (1/usenum)

15
Selección Errores comunes en uso del if
  • Emparejamientos if..else
  • // Ejemplo 10 es el numero mágico. Los números
    negativos están fuera de rango
  • if (i gt 0)
  • if (i 10)
  • cout ltlt Has adivinado el numero magico \n
    else
  • cout ltlt El numero esta fuera del rango

// El compilador trata estos enunciados con el
siguiente significado if (i gt 0) if (i
10) cout ltlt Has adivinado el numero magico
\n else cout ltlt El numero esta fuera del
rango
16
Selección Errores comunes en uso del if
  • // Para corregir el problema, la sintaxis
    correcta es
  • if (i gt 0)
  • if (i 10)
  • cout ltlt Has adivinado el numero magico \n
  • else
  • cout ltlt El numero esta fuera del rango

17
Selección Errores comunes en uso del if
  • Uso de cadenas de desigualdades
  • Es incorrecto utilizar expresiones como las
    siguientes
  • if (x lt y lt z)
  • cout ltlt z está entre x e y
  • if (x y z)
  • cout ltlt los tres numeros son iguales
  • En estos casos es necesario emplear condiciones
    compuestas
  • if ((x lt z) (z lt y))
  • cout ltlt z está entre x e y
  • if ((x y) (y z))
  • cout ltlt los tres numeros son iguales

Son expresiones incorrectas pero compilan
18
Selección Errores comunes en uso del if
  • Uso de en lugar de
  • No tiene el sentido que nosotros pensamos
  • if (x 12) ltHaz algogt
  • else ltHaz otra cosagt
  • Muchos compiladores no detectan el error y
    realizan la conversión del int al bool
    directamente.

Siempre se ejecuta cláusula true
19
Selección múltiple la instrucción switch
  • Para elegir condicionalmente entre la ejecución
    de varios grupos de instrucciones en función del
    valor que tome variable.
  • switch (variable)
  • case constante1
  • secuencia de instrucciones
  • break
  • case constante2
  • secuencia de instrucciones
  • break
  • . . .
  • default
  • secuencia de instrucciones

La instrucción break termina la ejecución del
switch. Si un caso no termina con break, cuando
le toque ejecutarse, su ejecución proseguirá con
la secuencia de instrucciones del siguiente caso
(si existe).
20
Selección múltiple la instrucción switch
  • Ejemplo de switch
  • char menu()
  • char c
  • cout ltlt "1 - Comprobar ortografía\n"
  • cout ltlt "2 - Corregir errores\n"
  • cout ltlt "Introduce tu opción "
  • cin gtgt c
  • switch(c)
  • case '1'
  • comprobar() // llamada a otra función
  • break
  • case '2'
  • corregir() // llamada a otra función
  • break
  • default
  • cout ltlt "Opción no válida"
  • c '0'

21
Selección múltiple la instrucción switch
  • Ejemplo de switch
  • int main()
  • short int mes, dias
  • cout ltlt Introduzca entero correspondiente al
    mes. Le diremos cuantos dias tiene. \n
  • cin gtgt mes
  • switch(mes)
  • case 1 case 3 case 5 case 7
  • dias 31
  • break
  • case 9 case 11
  • dias 30
  • break
  • default
  • dias 28
  • cout ltlt El mes ltlt mes ltlt tiene ltlt dias
  • ltlt dias
  • getchar()
  • return 0
Write a Comment
User Comments (0)
About PowerShow.com