Sentencias de control condicionales y ciclos

33
 1 04 – Sentencias de control condicionales y ciclos Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

description

Funcionamiento de las sentencias condicionales y majejo de ciclos.Ideal para personas que se inician en la programación

Transcript of Sentencias de control condicionales y ciclos

  • 104 Sentencias de control condicionales y ciclos

    Diego Andrs Alvarez MarnProfesor Asociado

    Universidad Nacional de ColombiaSede Manizales

  • 2Temario

    Condicionales if, if-else

    switch, case, default

    Cicloswhile

    do-while

    for

    break, continue

    goto

  • 3if else

    if (condicin)comando1;

    elsecomando2;

    comando3;comando2

    condicin

    comando1

    comando3

    true false

  • 4if else

    Observeque los ifs se pueden

    anidar

    Observe que la condicin va entre

    parntesis

  • 5a ? b : c

    Si la expresin a es verdadera, entonces se evala la expresin b y el resultado es el valor de b; de lo contrario la expresin c se evalua y se retorna dicho resultado.

  • 6switch case defaultswitch(var){case op1:

    comando1;break;

    case op2:comando2;

    case op3:comando3;break;

    default:comando4;

    }comando5;

    var = op1

    var = op2

    var = op3

    comando4

    comando5

    comando1

    comando2

    comando3

    true

    true

    true

    false

    false

    false

  • 7switch case default

    Este ltimo break esinnecesario

    Las expresiones comparadas deben ser de tipo entero o char.

    Las expresiones contra las que se comparan deben ser constantes enteras o tipo char

  • 8GNU C extension switch case

    default

    Se puede especificar un rango en la etiqueta, algo as como:

    case bajo ... alto:

    Cuidado con los espacios:

    bajo ... alto correcto bajo...alto incorrecto

    GNU C extension quiere decir que esta es una caracterstica soportada por el compilador gcc, pero que no est definida en el estndar ANSI C

    Este ltimo break es innecesario

  • Declarando variables dentro de un switch {}

  • 10

    while

    condicin comando1

    while (condicin)comando1;

    comando2;

    comando2

    false

    true

  • 11

    while

    El ciclo while se ejecuta mientras la condicin sea verdadera. Si la condicin es falsa, se sale del ciclo.

  • 12

    while

    Se puede utilizar un break para salirse del ciclo

    Uno puede leer este bucle infinito con la salida utilizando el if como un: repita hasta que (c = 'Z')

  • 13

    do while

    condicin

    comando1

    do{

    comando1;}while(condicin);comando2;

    comando2

    false

    true

  • 14

    do whileRepite hasta que la condicin de salida se vuelve falsa

  • 15

    for

    condicin

    inicializacin

    for(inicializacin;condicin; incremento)comando1;

    comando2;

    comando1

    true

    false

    incremento

    comando2

  • 16

    for

    La estructura general del ciclo for es:

    for(inicializacin; condicin; incremento) comando1;comando2;

    Primero se evala la expresin de inicializacin, luego se evala la condicin. Si la condicin es falsa, entonces el ciclo termina y el programa continua en el comando2. De lo contrario, si la condicin es verdadera, el comando1 se ejecuta. Finalmente el incremento se evalua y una nueva iteracin del ciclo comienza con una nueva evaluacin de la condicin.

  • 17

    0 1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9 10

    x = 1, y = 10x = 3, y = 9x = 5, y = 8x = 7, y = 7x = 9, y = 6

  • 18

    En C99 se permite utilizar declaracin de variables dentro del for, similar a como se hace en C++

    Se debe usar la bandera de compilacin -std=c99

  • 19

    Convirtiendo decimales a binarios

  • 20

    break

    break se utiliza para salirse del bloque {} actual de un ciclo (for, while, do while) o de un switch.

    Si se pone un break dentro de un ciclo o switch anidado, el break solo se sale del bloque (ciclo o switch) interior, no de los otros ciclos o switchs.

  • 21

    continue

    continue usa en ciclos para saltarse el resto del bloque actual y salta de nuevo a la condicin del ciclo.

    Si se pone un continue dentro de un ciclo anidado, este solo afecta el ciclo interior.

  • 22

    goto(evite usar esta orden)

    La etiqueta debe residir en la misma funcin que el goto que salta a ella. Un goto no puede saltar a una etiqueta en una funcin diferente.

    Este es un ejemplo en el cual el uso del goto est justificado. Observe que aqu quiero salir de los dos ciclos. Un break, solo nos sacara del for interior, mientras que el goto nos saca de los dos ciclos con una sola instruccin, sin perder claridad en el cdigo.

  • 23

    Tomado de: http://xkcd.com/292/

    Evite usar gotohttp://en.wikipedia.org/wiki/Goto

  • 24

    Normas de estiloUnas normas de estilo en programacin, son tan importantes que todas las empresas dedicadas a programacin imponen a sus empleados una mnima uniformidad, para facilitar el intercambio de programas y la modificacin por cualquier empleado, sea o no el programador inicial. Por supuesto, cada programa debe ir acompaado de una documentacin adicional, que aclare detalladamente cada mdulo del programa, objetivos, algoritmos usados, ficheros... (ver por ejemplo https://code.google.com/p/google-styleguide/)

    No existen un conjunto de reglas fijas para programar con legibilidad, ya que cada programador tiene su modo y sus manas y le gusta escribir de una forma determinada. Lo que s existen son un conjunto de reglas generales, que aplicndolas, en mayor o menor medida, se consiguen programas bastante legibles. Aqu intentaremos resumir estas reglas.

  • Normas de estilo en la programacin

    Lo principal es mejorar tanto como se pueda la claridad en el cdigo. El cdigo debe ser leble por usted mismo (en el futuro) y por otras personas sin dificultad.

    Cuando se escriben los programas se debe priorizar la legibilidad del cdigo por encima de todo, incluso sobre la velocidad de ejecucin (excepto en aplicaciones muy especficas).

    Hay que entender que el cdigo normalmente se escribe una vez, pero se lee decenas de veces.

    Sea consistente con su estilo de programacin.

  • Lneas Una lnea no debe sobrepasar la columna 80. Use lneas en blanco para separar el cdigo en

    prrafos o bloques. Coloque una instruccin por lnea; sin embargo, si el

    colocar dos o ms sentencias en una misma lnea mejora la claridad del programa, entonces hgalo as.

    Evite lneas muy largas. En vez de esto utilice varias lneas.

    Coloque los operadores ++ y -- en sus propias lneas. No use ++ y -- dentro de otras sentencias.

  • Espacios e identaciones Use identaciones de 3 espacios (configure su

    editor). Coloque espacios antes y despus de cada

    operador binario y de cada signo =, as como los espacios separan las palabras en un texto. Los operadores unarios (++, ) van junto al identificador sobre el que actun.

    En una sentencia que consiste de dos o ms lneas, cada lnea excepto la primera debe identarse un nivel extra para indicar que es una continuacin de la primera.

  • La identacin y las llaves {} Utilice apropiadamente las llaves {} para

    delimitar los bloques de cdigo. Las llaves deben ocupar una sola lnea y deben estar en la misma columna (identacin ALLMAN).

    Cuando un if/while afecta a ms de una lnea, encirrela entre llaves.

  • Nombres de variables Use nombres de variables simples y descriptivos Las constantes se escriben en MAYUSCULAS. Use el guin bajo _ para mejorar la claridad de los

    nombres de las variables. Ej: ancho_viga No use la L minscula o la O mayscula como

    nombres de variables. Los nombres cortos tales como x y son aceptables

    cuando su significado es claro y cuando un nombre largo no aadira informacin o claridad adicional.

    i,j,k se utilizan exclusivamente como contadores en los ciclos for/while/do-while.

  • Variables Evite en lo posible usar variables globales.

    Utilice en lo posible variables shared o en su defecto pase las variables globales como argumentos a la funcin.

    Declare las variables globales tan cerca al lugar donde las va a utilizar como sea posible.

  • Comentarios Comente el cdigo mientras programa. Despus de declarar una variable, escriba un

    comentario que explique para que sirve esa variable. Incluya comentarios antes de cada bloque de cdigo.

    Estos describirn los propsitos del bloque en el cumplimiento de una tarea cohesiva. El uso de nombres significativos en variables y funciones minimizan la necesidad de comentarios.

    Procure alinear los comentarios que van en lneas seguidas

  • Comentarios Antes de definir una funcin se debe poner un

    comentario que diga en una lnea o dos qu es lo que hacen dichas funciones y se expliquen los parmetros de la misma. Estos comentarios son para que una persona que est explorando el cdigo pueda entender qu hace una funcin sin tener que estudiarla en profundidad. Este breve comentario en el encabezado de la funcin debe apoyarse a su vez en un nombre de funcin descriptivo.

  • Consejos generales Compile el cdigo de modo tal que este no

    tenga Warnings. Muchas veces los Warnings muestran errores en los cdigos.

  • Material basado en:

    http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html

    http://en.cppreference.com/w/cpp/language/goto

    Wikipedia

    Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21Pgina 22Pgina 23Pgina 24Pgina 25Pgina 26Pgina 27Pgina 28Pgina 29Pgina 30Pgina 31Pgina 32Pgina 33Pgina 34