PDF de programación - 3. Estructuras de Control - Introducción al lenguaje C

Imágen de pdf 3. Estructuras de Control - Introducción al lenguaje C

3. Estructuras de Control - Introducción al lenguaje Cgráfica de visualizaciones

Publicado el 26 de Septiembre del 2020
717 visualizaciones desde el 26 de Septiembre del 2020
600,7 KB
10 paginas
Creado hace 12a (20/10/2011)
Introducción al lenguaje C
3. Estructuras de control

Las estructuras de control permiten modificar el orden secuencial de las instrucciones de un
programa.

3.1. Estructuras selectivas

3.1.1. Sentencia if-else
Se trata de la estructura selectiva simple y doble de los principios de programación
estructurada. El formato de la instrucción es:

if(expresión)
sentencia1
[else
sentencia2]

La sentencia evalúa la expresión, si ésta es verdadera (es decir, si su valor es distinto de 0)
ejecuta la sentencia1. Si no incluye la cláusula else, en el caso de que la expresión sea
falsa no haría nada; si incluye la cláusula else y la expresión es false ejecuta la
sentencia2.

Hay que tener en cuenta que, normalmente la expresión será de tipo lógico, pero puede ser
cualquier valor numérico.

if(a+b)
printf(“a+b es distinto de 0”);
else
printf(“a+b es igual a 0”);

También hay que tener en cuenta que tanto sentencia1 como sentencia2 pueden ser
una proposición simple o una compuesta. En el segundo caso las sentencias que forman el
bloque deberían ir encerradas entre llaves y no llevaría punto y coma final.

if(a ¡= b){
a = b;
printf(“a es distinto de b”);
}else{
b = a;
printf(“a es igual a b”);
}

sentencia1 y sentencia2 pueden ser a su vez estructuras de control (por ejemplo
sentencias if-else) creando estructuras anidadas.

if(a<b)
c=a;



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



1

else
if(a>b)
c=b;
else
c =0;

La asociación entre el else y su if se hace a partir de la estructura más interna. Esto es
válido también si se omite alguna cláusula else.

if(a<b)
if (a==3)
printf("b es mayor que 3");
else
printf("sólo sabemos que a es menor que b");

Si se desea otro comportamiento habría que utilizar las llaves.

if(a<b){
if (a==3)
printf("b es mayor que 3");
}else
printf("b es menor o igual que a");



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



2

a < ba = 3escribir(“b es mayor que 3”)escribir(“b es mayor que a”)sisinonoa < ba = 3escribir(“b es mayor que 3”)escribir(“b es menor o igual que a”)sisinono En el caso de utilizar varias estructuras selectivas anidadas anidadas su escritura puede quedar
más clara si se hace de esta forma:

if(expresión1)
sentencia1
else if(expresión2)
sentencia2
else if(expresión3)
sentencia3
else if(expresiónn)
sentenciaN
else
sentenciaN+1

if(precio >= 1000)
descuento = 0.05;
else if(precio < 2000)
descuento = 0.08;
else if(precio < 5000)
descuento = 0.1;
else
descuento = 0.12;

Obsérvese que la estructura no cambia respecto a la sentencia if-else anidada que aparece
más arriba.

3.1.2. Sentencia switch
Proporciona la estructura selectiva múltiple. Evalúa una expresión de tipo entero y comprueba
su valor con cada una de las cláusulas case; si coincide ejecuta la sentencia y sigue la
comprobación, en caso contrario pasa a la siguiente cláusula. default incluirá las sentencias
que se ejecutan si fallan todas las comprobaciones anteriores.

switch(expresión){
case valor1: sentencia1;
case valor2: sentencia2;
case valorn: sentencian;
default:
sentenciaDefault
}

A diferencia de lo que ocurre en otros lenguajes, la instrucción switch no hace cortocircuito,
es decir, una vez que ha encontrado una coincidencia en el valor de un case, continúa la
comprobación de los otros valores. Para evitar esto se puede incluir una sentencia break
después de cada caso.

switch(expresión){
case valor1: sentencia1; //No hace cortocircuito
case valor2: sentencia2; break; //Hace cortocircuito
case valorn: sentencian;
default:
sentenciaDefault
}



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



3

Otra característica de la sentencia es que se pueden utilizar varios casos para una misma
sentencia. Si se utilizan varias etiquetas case para una misma sentencia, la sentencia se
ejecutará si se cumplen esas condiciones.

switch(i){
case 0:
printf("Es 0\n");
break;
case 1: case 3: case 5: case 7: case 9:
printf("Es un impar menor que 10\n");
break;
case 2: case 4: case 6: case 8:
printf("Es un par menor que 10\n");
break;
default:
printf("Es mayor que 10\n");
}

3.2. Estructuras repetitivas

3.2.1. Sentencia while
Ejecuta las sentencias del bucle mientras una expresión es verdadera. Tiene la condición de
salida al comienzo de la estructura por lo que las sentencias se ejecutarían de 0 a n veces.

while(expresión)
sentencia;



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



4

i=0escribir(“es 0”)i=1 o i=3 o i=5 o i=7 o i=9escribir(“es un impar menor que 10”)i=2 o i=4 o i=6 o i=8escribir(“es un par menor que 10”)escribir(“es mayor o igual que 10”)sisisinonono Si expresión es distinta de 0 (es decir, si es verdadera) ejecuta la sentencia; cuando es 0
finaliza la estructura y el flujo del programa continuaría a la instrucción siguiente. Por ejemplo,
el fragmento de código siguiente escribiría los números entre 0 y 5.

int j=0;
while(j<=5){
printf("%i\n",j);
j++;
}

3.2.2. Sentencia for
La sentencia for también proporciona un bucle que se ejecutará de 0 a n veces pero que
incorpora un mecanismos para la inicialización de variables del bucle, controlar la salida o
modificar la variable del bucle.

for(expresión1;expresión2;expresión3){
sentencia;

La expresión1 se ejecutará antes de entrar en el bucle la primera vez, la expresión3 se
ejecuta al final de cada iteración del bucle y la expresión2 se encargará, al comienzo de
cada iteración de comprobar si deben continuar las repeticiones: si la expresión2 es
verdadera se entra en el bucle y en caso contrario se sale. Cualquiera de las tres puede ser una
expresión de cualquier tipo e incluso se puede omitir cualquiera de las tres. Sin embargo, lo
normal es utilizar la expresión1 para inicializar la variable del bucle, la expresión2 para
comprobar la salida del bucle a partir de la variable y la expresión3 para modificar el valor
de la variable del bucle. El siguiente ejemplo, también escribiría los números entre 0 y 5.

for(j=0;j<=5;j++)
printf("%i\n",j);

El funcionamiento sería exactamente el mismo que el del fragmento de código anterior.
Normalmente se elegirá un bucle for cuando se sepa cuantas veces se debe ejecutar el bucle
antes de entrar en el (bucles controlados por contador), mientras que la sentencia while se
utilizará cuando se desconozca ese dato (bucle controlado por centinela).

3.2.3. Sentencia do-while
Los bucles generados tanto por la sentencia for, como por la sentencia while comprueban
si el bucle debe ejecutarse al comienzo del mismo, pudiendo darse el caso de que el bucle se
repita 0 veces. La sentencia do..while haría la comprobación al final.

do
sentencia
while(expresión);

Primero ejecuta la sentencia y al final del bucle hace la comprobación. Si la expresión es
distinta de 0 (es verdadera) repite la sentencia; en caso contrario se sale del bucle.



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



5

3.3. Sentencias de salto

3.3.1. Sentencia break
La sentencia break permite la salida de un bucle sin pasar por la comprobación del mismo (es
decir, permite crear bucles en los que la comprobación de salida no esté sólo al comienzo o al
final). Una sentencia break dentro de un bucle while, for o do..while (al igual que
ocurría en la sentencia switch) realiza un salto incondicional al final de la sentencia.

El siguiente fragmento de código escribe los número entre 1 y m, pero pararía si alguno de
esos números el múltiplo de n:

for(int j=1;j<=m;j++){
if(j % n == 0)
break;
printf("%i\n",j);
}

Hay que tener en cuenta que este comportamiento también se puede realizar utilizando bucles
while con condiciones múltiples:

int j=1;
while(j<=m && j%n !==0){
printf("%i\n",j);
j++;
}

Utilizando la sentencia break y con bucle infinitos, sería posible crear estructuras iterativas
en las que la condición de salida no tuviera que estar necesariamente al comienzo o al final.

while(1){
sentencia1
if(expresión)
break;
sentencia2
}

for(;;){
sentencia1
if(expresión)
break;
sentencia2
}

do{
sentencia1
if(expresión)
break;
sentencia2
}while(1);



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



6

3.3.2. Sentencia continue
La sentencia continue permite omitir algunas de las acciones del bucle, ya que realiza un
salto a la siguiente iteración; es decir, en el while y el do..while se pasa a la
comprobación, mientras que en el for se ejecuta la expresión3, la que se utiliza
normalmente para el incremento.

Por ejemplo, el siguiente fragmento de código procesa de forma distinta los números pares y
los impares:

for(j=1;j<=m;j++){
if(j % 2 == 0){
printf("%i es par\n",j);
continue;
}
printf("%i es impar\n",j);
}

3.3.3. Sentencia return
La sentencia return también se puede utilizar, como break, para terminar un bucle. La
diferencia es que esta sentencia hace que finalice la función dónde se encuentra tomando el
control la función llamadora (o el sistema operativo si es que se encuentra en la función
main).

Además, como se verá más adelante, la sentencia return puede ir acompañada de una
expresión que será el valor que devolverá la función.

3.3.4. Sentencia Goto
La sentencia goto transfiere
  • Links de descarga
http://lwp-l.com/pdf18267

Comentarios de: 3. Estructuras de Control - Introducción al lenguaje C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad