Programación en C | © © 2003 Kishori Mundargi. Traducción 2006, Lourdes Sada |
Este capítulo trata sobre las sentencias del lenguaje C que controlan el flujo de ejecución de un programa. Antes de comenzar con las sentencias que cambian este flujo de ejecución, debemos entender cómo se ejecuta repetidamente un código. Esta operación se conoce como ejecución de un bucle. Cada ejecución de un bucle se llama iteración. El lenguaje C tiene tres sentencias de programación distintas para efectuar bucles. Son las sentencias for , while y do .
El formato general de una sentencia for es:
for ( expresión1; condición_del_bucle;
expresión2)
{
sentencias del programa;
}
El primer componente de la sentencia for , expresión1, se utiliza para definir los valores iniciales antes de que comience una iteración. El segundo componente, condición_del_bucle, especifica la(s) condición(es) que se debe(n) cumplir para que el bucle continúe. El componente final, expresión2, especifía la expresión que se ejecuta cada vez, después de que el cuerpo del bucle se haya ejecutado.
|
Según las exigencias de un programa, puede encontrarse un bucle for dentro de otro. Esto se conoce como bucles anidados. En este caso, el bucle interior se completa primero, y después se termina el bucle exterior. Para que un programa en C sea más legible, es importante la tabulación de las sentencias en los bucles for .
La sintaxis de la sentencia while es
while (expresión)Se evalúa la expresión especificada dentro del paréntesis, y si el resultado de dicha expresión es verdadero, se ejecutan las sentencias que hay dentro del bucle. Después de una iteración, la expresión se evalúa de nuevo y se ejecuta o no el bucle, dependiendo de si el resultado sigue siendo verdadero. Si el resultado es falso, se detiene el bucle y continúa la ejecución del programa con las sentencias que siguen al bucle while.
|
Este programa define primero el valor inicial como 2, después comienza la ejecución del bucle y como el valor del contador es menor a 50, se imprime el valor del contador, 2, y luego se incrementa a 4. Esto sigue así hasta que el valor del contador llegue a 50.
El programa anterior también se puede implementar utilizando un bucle for:
Nota: Antes de escribir un programa completo, busque un algoritmo
que produzca el resultado final que desea.
|
Las dos sentencias anteriores, for
y while, evalúan una condición o
expresión antes de ejecutar un bucle. Por tanto, el cuerpo del
bucle nunca se ejecuta si las condiciones no se cumplen al comienzo.
Algunas veces es necesario evaluar la condición al final de un
bucle. Esto se consigue utilizando la sentencia do .
La sintaxis de esta sentencia es la
siguiente:
do
{
sentencias del programa
}
while (expresión1)
En este caso, se ejecutan una vez las
sentencias del programa, después se evalúa la
expresión1. Si es verdadero, continúa con la siguiente
iteración, y así una y otra vez hasta que el valor de la
expresión1 sea falso.
El formato de esta sentencia es
break;
En ocasiones se hace necesario terminar
un bucle dependiendo de una condición. En estas circunstancias
se puede utilizar una sentencia break. Esta sentencia hace que el
programa salga del bucle y continúe su ejecución en las
sentencias que siguen a dicho bucle.
En caso de bucles anidados, sólo se detiene el bucle que
contiene la sentencia break.
El formato de esta sentencia es
continue
Al contrario de break , esta
sentencia causa que el bucle que la contiene se siga ejecutando,
ignorando todas las sentencias que siguen a la sentencia
continue. Se utiliza para eludir
dentro de un bucle un grupo de sentencias basadas en ciertos criterios
o condiciones.
Con la sentencia if, el programa adquiere la capacidad de
tomar decisiones. El formato de esta
sentencia es
if (condición)
{
sentencias del programa;
}
La sentencia if examina primero
la condición, que no es otra cosa que una expresión. Si
la expresión arroja un valor verdadero, se ejecutan las
sentencias del programa que siguen a la sentencia if . Si la
expresión da un valor de falso, las sentencias que siguen a la
sentencia if se ignoran. Una sentencia compuesta después
de una sentencia if debe ir acotada por paréntesis de
llave.
|
La expresión evaluada por una sentencia if puede ser una simple sentencia que compara dos variables o puede tratarse de dos o tres expresiones unidas por un operador lógico Y u O.
|
Otra variación de una sentencia if es la sentencia if else , que ayuda al programador a evaluar una condición y emprender dos acciones diferentes dependiendo de si el resultado es verdadero o falso.
|
Cuando la expresión evaluada por una sentencia if arroja VERDADERO, se ejecuta la sentencia que sigue a if , que puede ser otra sentencia if . En las sentencias if anidadas, cada claúsula else se asocia con la última sentencia if .
Cuando comparamos una variable con tres valores diferentes, podemos utilizar la sentencia else if , más simple, en lugar de tres sentencias if distintas. El formato general de esta sentencia es el siguiente:
if (expresión1)
{
sentencias;
}
else if (expresión2)
{
sentencias;
}
else
{
sentencias;
}
|
Es habitual en aplicaciones en las que el valor de una variable se compara sucesivamente con distintos valores. Resulta engorroso tener que escribir una larga serie de sentencias if y else if , y el programa se hace más difícil de leer. Se puede expresar de una forma más elegante utilizando la sentencia switch . Su formato es el siguiente:
La expresión1 se compara repetidamente cont los valores val1, val2, etc. hasta que se encuentra una coincidencia. Entonces se ejecutan las sentencias correspondientes del programa. Cada conjunto de sentencias necesita una sentencia break , o la ejecución del programa continuaría con la siguiente sentencia case que satisficiera la expresión. Existe una sentencia especial default al final que se ejecuta cuando el valor de expresión1 no coincide con ninguno de los valores case.
|
El lenguaje C incluye la raramente utilizada sentencia goto , cuyo uso se recomienda evitar. Pero cada programador debe decidir si su programa la necesita o no, y emplearla con sensatez. Una sentencia goto produce una bifurcación en un punto específico del programa. Este punto se marca con una etiqueta, que consiste en un nombre seguido de una coma. Para la creación de etiquetas se aplican las mismas reglas que para los nombres de variables. Pueden colocarse en cualquier lugar del programa, ya sea antes o después de la sentencia goto .
|
Nota: La utilización de demasiadas sentencias goto en un programa lo hace más ilegible, y el programa resultará más difícil de corregir y mantener.
Números
triangulares
Guía de estilo para la programación en C
Estilo
en C y patrones de codificación
[Su opinión es importante. Si tiene un comentario, corrección o pregunta respecto a este capítulo, envíe un mensaje a comments@peoi.org].
Anterior: Expresiones aritméticas |
Siguiente: Vectores (arrays) |