You are on page 1of 7

21/10/12

Programacin en C/Instrucciones de control - Wikilibros

Programacin en C Instrucciones de control


De Wikilibros, la coleccin de libros de texto de contenido libre. Programacin en C/Instrucciones de control

Como ya se ha mencionado, C es un ejemplo de programacin estructurada. En este tipo de programacin, es necesario contar con ciertas estructuras que permitan controlar el flujo del programa, es decir, tomar decisiones y repetir acciones.

Contenido
1 La estructura condicional if ... else 1.1 Operadores de comparacin 1.2 Operadores lgicos 1.3 Evaluacin de corto circuito 2 La estructura condicional switch ... case 3 El bucle while 4 El bucle for 5 El bucle do...while 6 La sentencia goto

La estructura condicional i . . e s f . le
En la gran mayora de los programas ser necesario tomar decisiones sobre qu acciones realizar. Esas decisiones pueden depender de los datos que introduzca el usuario, de si se ha producido algn error o de cualquier otra cosa. La estructura condicional i . . e s es la que nos permite tomar ese tipo de decisiones. Traducida literalmente f . le del ingls, se la podra llamar la estructura "si...si no", es decir, "si se cumple la condicin, haz esto, y si no, haz esto otro". Un ejemplo sencillo sera el siguiente (no se trata de un programa completo, sino tan slo una porcin de cdigo):
i (dd<1) f ea 8 pit(N pee acdr\"; rnf"o uds cee.n) es le pit(Bevnd.n) rnf"ineio\";

Este cdigo de ejemplo dice que si el valor de la variable e a es menor que 1 se imprimir " o p e e dd 8 N uds a c d r \ " mientras que en caso contrario se imprimir " i n e i o \ " cee.n, Bevnd.n. es.wikibooks.org/wiki/Programacin_en_C/Instrucciones_de_control

1/7

21/10/12

a c d r \ " mientras que en caso cee.n,

contrario se imprimir " i n e i o \ " Bevnd.n.

Como se ve en el ejemplo, la estructura de un condicional es bastante simple:


i (odc){ f cniin sneca_ivraeo etniss_eddr; }es { le sneca_iflo etniss_as; }

La condicin, encerrada entre parntesis, es una expresin que puede dar como resultado 0 (interpretado como falso) o cualquier valor distinto de 0 (interpretado como verdadero). Cuando la condicin sea verdadera, se ejecutarn las sentencias dentro del primer bloque de cdigo, cuando la condicin sea falsa, se ejecutarn las sentencias del segundo bloque de cdigo. Las expresiones y valores de tipo verdadero/falso son tambin llamados valores lgicos o booleanos. La indentacin o sangra (los espacios al comienzo de las lneas) no es necesaria, pero ayuda a la claridad del cdigo. La utilizacin de las llaves { }es obligatoria cuando se quiere utilizar ms de una instruccin por bloque, y ... optativa cuando slo se quiere escribir una instruccin. Por claridad, sin embargo, es recomendable utilizarlas an cuando slo vaya a haber una instruccin. El bloque del e s es opcional. Si no se lo encuentra, slo se realizar la accin correspondiente al bloque i . le f A continuacin, un ejemplo con una funcin, que devuelve el mayor de dos nmeros:
itmyrita itb n ao(n , n ) { i ( >a { f b ) rtr b eun ; } rtr a eun ; }

Operadores de comparacin
El smbolo >visto en el ltimo ejemplo es un operador, que en este caso compara dos nmeros enteros y devuelve verdadero si el primero es mayor, falso en caso contrario. A continuacin un listado de los posibles operadores de comparacin en C y su significado. Operadores de Comparacin Operador
< > < = > = = =

Significado estrictamente menor que estrictamente mayor que menor o igual que mayor o igual que igual a distinto de
2/7

! = es.wikibooks.org/wiki/Programacin_en_C/Instrucciones_de_control

21/10/12

Programacin en C/Instrucciones de control - Wikilibros

! =

distinto de

Teniendo en cuenta que en C se toma como falso el valor 0, y como verdadero cualquier otro valor, una prctica comn es expresar condiciones sin utilizar ningn operador:
fotdvso(n dvdno itdvsr la iiinit iied, n iio) { i (iio){ f dvsr rtr dvdno/dvsr eun iied iio; }es { le pit (N s peedvdrprcr\"; rnf "o e ud iii o eon) rtr 0 eun ; } }

En este caso, la expresin ( i i o )es equivalente a ( i i o ! 0 . dvsr dvsr = )

Operadores lgicos
Los operadores & ("y"), | ("o") y !("no") son operadores lgicos. Permiten operar con expresiones lgicas & | para generar expresiones ms complejas. Por ejemplo: determinar si un ao es bisiesto o no. Los aos son bisiestos si son divisibles por 4, pero no si son divisibles por 100, a menos que tambin sean divisibles por 400.
i ((( %4 & (a%10) | !a%40 ) { f !a ) & ( 0)) | ( 0) pit(e u aobset.n) rnf"s n iiso\"; }es { le pit(n e u aobset.n) rnf"o s n iiso\"; }

En este caso, se utiliza el operador mdulo (%), que obtiene el resto de la divisin entera de un nmero por otro. Cuando un nmero es divisible por otro, el resto de su divisin entera ser cero. Siendo que cero es equivalente a falso, y cualquier valor distinto de cero es equivalente a verdadero, podemos usar el operador !para verificar si el nmero es mltiplo de 4, de 100 o de 400.

Evaluacin de corto circuito


La evaluacin en corto circuito es una caracterstica del lenguaje C que se utiliza para optimizar la ejecucin de programas. Consiste en que el programa puede verificar si una expresin es verdadera o falsa antes de haber evaluado toda condicin. Por ejemplo, si se tiene una condicin como la siguiente:
i (a>2 | ( <4){ f ( ) | b ) .. . }

es.wikibooks.org/wiki/Programacin_en_C/Instrucciones_de_control

3/7

21/10/12

Programacin en C/Instrucciones de control - Wikilibros

Al ejecutarse el programa, se evaluar primero si a > 2 En el caso en que sea verdadero, no continuar con la . siguiente condicin, ya que el resultado ser de cualquier modo verdadero. De la misma forma, si la condicin fuera:
i (a>2 & ( <4){ f ( ) & b ) .. . }

En este caso, si no se cumple que a > 2 no se evaluar la siguiente condicin, ya que el resultado ser falso de , todos modos. Esta caracterstica no tiene demasiada importancia al comenzar a programar, pero facilitar ciertas operaciones y optimizaciones en programas avanzados.

La estructura condicional s i c . . c s wth . ae


La estructura condicional s i c . . c s se utiliza cuando queremos evitarnos las llamadas escaleras de wth . ae decisiones. La estructura i nos puede proporcionar, nicamente, dos resultados, uno para verdadero y otro para f falso. Una estructura s i c . . c s , por su parte, nos permite elegir entre muchas opciones. Ejemplo: wth . ae
#nld <ti.> icue sdoh #nld <tlbh icue sdi.> itmi(od { n anvi) itda n i; pit(qenmr d dad l smn e?) rnf"u eo e e a eaa s"; saf"d,da; cn(%"&i) sic(i){ wthda cs 1: ae pit(Ln Ln"; rnf"u, ua) bek ra; cs 2: ae pit(Mr Mre) rnf"a, at"; bek ra; cs 3: ae pit(Me,Mrui"; rnf"ir ecro) bek ra; cs 4: ae pit(Je Jptr) rnf"u, uie"; bek ra; cs 5: ae pit(Ve Vns) rnf"i, eu"; bek ra; cs 6: ae pit(Sb Stro) rnf"a, aun"; bek ra; cs 7: ae pit(Dm Sl) rnf"o, o"; bek ra; dfut: eal pit(N eit"; rnf"o xse)

} rtr 0 eun ; }

es.wikibooks.org/wiki/Programacin_en_C/Instrucciones_de_control

4/7

21/10/12

Programacin en C/Instrucciones de control - Wikilibros

La estructura anterior, de realizarse con sentencias i , necesitara cuatro de ellas, resultando un enorme bloque f muy difcil de leer. En la mayora de los casos, adems, la sentencia s i c proporciona una ganancia en wth velocidad del cdigo, pues permite al compilador trabajar en base a que se trata de una decisin mltiple para una nica variable, cosa que con sentencias i el compilador no tiene por qu detectar. f Como vemos, para cada valor de la variable se ejecuta un bloque de sentencias distinto, en el que no necesitamos llaves. Hay un caso especial, d f u t que se ejecuta si ningn otro corresponde, y que no es necesario poner. eal, Es, en todo, equivalente al bloque e s de una sentencia i . le f Las sentencias b e kson muy importantes, ya que el comportamiento normal de un bloque s i c es ejecutarlo ra wth todo desde la etiqueta c s que corresponda hasta el final. Por ello, si no queremos que se nos ejecute ms de un ae bloque, pondremos sentencias b e kal final de cada bloque excepto el ltimo. ra Es decir, las etiquetas c s son puntos de entrada de la ejecucin, y no implican que al acabarse el bloque c s la ae ae ejecucin salte al final del bloque s i c . Las etiquetas c s siguientes a la que hemos utilizado para entrar son, wth ae sencillamente, ignoradas. A la ausencia de sentencias b e kse le llama, en ocasiones, "dejar caer la cascada s i c ". ra wth

El bucle w i e hl
El bucle w i esirve para ejecutar cdigo reiteradas veces. hl
wie(odco){ hl cniin / Cdg * * io / }

La condicin debe de ser una expresin lgica, similar a la de la sentencia i . Primero se evala la condicin. Si el f resultado es verdadero, se ejecuta el bloque de cdigo. Luego se vuelve a evaluar la condicin, y en caso de dar verdadero se vuelve a ejecutar el bloque. El bucle se corta cuando la condicin da falso. Ejemplo: imprimir los nmeros de 0 a 99:
iti=0 n ; wie( <10 { hl i 0) pit(%\" i; rnf"dn, ) i=i+1 ; }

El bucle f r o
El bucle f res un bucle muy flexible y a la vez muy potente ya que tiene varias formas interesantes de o implementarlo, su forma ms tradicional es la siguiente:
fr(*iiilzc *;/ cniin*;/ iceet *){ o / ncaiain / * odc / * nrmno / / cdg aeeua * * io jctr / }

es.wikibooks.org/wiki/Programacin_en_C/Instrucciones_de_control

5/7

21/10/12

Programacin en C/Instrucciones de control - Wikilibros

Inicializacin: en esta parte se inicia la variable que controla el bucle y es la primera sentencia que ejecuta el bucle. Slo se ejecuta una vez ya que solo se necesita al principio del bucle. Expresin condicional: al igual que en el bucle w i e esta expresin determina si el bucle continuar ejecutndose hl, o no. Incremento: es una sentencia que ejecuta al final de cada iteracin del bucle. Por lo general, se utiliza para incrementar la variable con que se inicio el ciclo. Luego de ejecutar el incremento, el bucle revisa nuevamente la condicin, si es verdadera tiene lugar una ejecucin ms del cuerpo del ciclo, si es falsa se termina el ciclo y as. Aqu se muestra el mismo ejemplo visto para el bucle w i e pero implementado con un bucle f r hl, o:
fr(n i0 i<10 i=i+1 { o it =; 0; ) pit(%\" i; rnf"dn, ) }

Nota: En C, la sentencia i = i + 1puede escribirse en forma ms reducida como i + Esta forma se utiliza ms +. comnmente en el bucle f r o:
fr(n i0 i<10 i+ { o it =; 0; +) pit(%\" i; rnf"dn, ) }

El bucle d . . h l o.wie
El bucle d . . h l es un bucle que, por lo menos, se ejecuta una vez. Do significa literalmente "hacer", y while o.wie significa "mientras" Su forma es esta:
d { o

/ CDG * * OIO / }wie(*Cniind eeuindlbce*) hl / odc e jcc e ul /

Os muestro un ejemplo sencillo de uso:


itaetro n laoi; d { o aetro=rn(; laoi ad) }wie(laoi ! 2) hl aetro = 5;

La verdad es que este ejemplo puede resultar un poco absurdo, pero es bastante intuitivo. El cdigo del bucle asigna un valor aleatorio a la variable definida anteriormente, y mientras esa variable no tenga el valor 25, el bucle sigue ejecutndose.

La sentencia g t oo
La sentencia g t sirve para indicar al programa que continue ejecutndose desde la lnea de cdigo indicada. Su oo
es.wikibooks.org/wiki/Programacin_en_C/Instrucciones_de_control 6/7

sintaxis es ms o menos as:


/ Cdg * * io / EIUT: TQEA / Cdg * * io / gt EIUT; oo TQEA / Cdg * * io /

As, cuando se ejecute la sentencia g t , el programa "saltar" y continuar su ejecucin a partir de la etiqueta oo marcada. Como se puede observar se puede usar para crear un bucle, o para ir a una parte del cdigo u otra si se combina con una sentencia i . . l e Pero por lo general puede obtenerse el mismo efecto utilizando los bucles f.es. anteriormente vistos. Por eso, la sentencia g t es poco aceptada por la comunidad de programadores, pues puede provocar que se oo hagan programas un poco "sucios" y confusos. Slo en ocasiones muy excepcionales ser recomendado el uso del goto al crear iteraciones muy complejas. Sin embargo, con el pasar de los aos este comando ya ha quedado prcticamente descartado del lenguaje de los programadores.

Obtenido de http://es.wikibooks.org/w/index.php? title=Programacin_en_C/Instrucciones_de_control&oldid=189524 Categora: Programacin en C Esta pgina fue modificada por ltima vez el 28 jul 2012, a las 22:49. El texto est disponible bajo la Licencia Creative Commons Atribucin/Compartir-Igual 3.0; clusulas adicionales pueden aplicar. Vase los trminos de uso para ms detalles.

You might also like