Inicio > C, Programación > Programar en C- Instrucciones de Control

Programar en C- Instrucciones de Control

Viernes, 3 de junio de 2011 Dejar un comentario Ir a comentarios

Vamos a dar las gracias al arriba presente Dennis M. Ritchie por crear en 1972 este grandioso lenguaje y darnos la oportunidad de seguir hablando aun hoy en día sobre el.  Ken Thompson, quien aparece sentado tecleando a su lado, tampoco es ningún mindundi que digamos, ¿ verdad ?.

Hoy nos toca comentar las instrucciones de control.

Podemos encontrarnos con Instrucciones de :

  • Selección o condicional: if y switch
  • Iteración o bucles: while, for y do-while
  • Salto: break, continue, goto y return
  • Etiquetado: case y default

Veamos todo ello en el siguiente pedacito de código….


/*INSTRUCCIONES DE SELECCIÓN O CONDICIONALES: IF y SWITCH
If (0 falsa-Otro valor verdadera incluidos los valores negativos)
*/
srand ( time(NULL) ); //inicializar generador aleatorio

//IF
int i,j;
i=rand() % 100 ;//generar números pseudo-aleatorio entre 0 y 100
j=rand() % 100;
printf ("Los números elegidos son i: %i, j: %i \n", i,j);

if (i==j)
{
printf( "Milagro!!. i es igual a  j \n");
}

//IF - ELSE
if ( i>=5 )	{
printf ( "i es >=5 \n" );
}
else{
printf ( "i es < 5 \n" );
}

//IF - ELSE IF
if ( i<10 )	{
printf ( "i es < 10 \n" ); } else if (i > 50){
printf ( "i es > 100 \n" );
}
else{
printf( "i >= 10 y <= 50 \n" );
}

//Operador ? para reemplazar las instrucciones if-else. Algo mas enrevesado...
i = ( j<20 ) ? 1 : 4 ; printf ( "El nuevo valor de i : %i y j=%i\n", i,j );
if ( i==5 && j>6 ) printf( "Se cumple la condición AND \n" );
if ( i<5 || j>=6 ) printf( "Correcta porque se cumple alguna
de las 2 condiciones \n" );

//Podemos agrupar condiciones

if (  ( i>4 && i<10 ) || ( j>1 && j<50 ) )printf( "Correcta porque se cumple
alguna de las 2 condiciones \n" );

if ( 1 ) printf( "Se cumple siempre la condición\n" );

/*SWITCH
No podemos usar condiciones en los case
Dos sentencias case pueden tener el mismo código
Si se utilizan constantes de tipo carácter se convierten a valores enteros
No puede haber dos constantes case con el mismo valor
Podemos anidar instrucciones switch
*/

switch( i )
{
case 1:
printf( "Es valor de i es 1\n" );
break; //para finalizar la secuencia de instrucciones
case 2:
printf( "Es valor de i es 2\n" );
break;
case 3:
switch (j){
case 0:
printf( "Es valor de i es 3 y j=0 \n" );
break;
default:
printf( "Es valor de i es 3 y j!=0 \n" );
break;
}
break;
default: //opcional - Se ejecuta si fallan todas las comprobaciones.
printf( "Es valor de i es no es ni 1, ni 2, ni 3\n" );
}

//ITERACIÓN O BUCLES: while, for y do-while

/*FOR
Admite muchas variantes
Posible la omisión de cualquiera de las secciones
(inicialización, condiciones o incrementos)
Posible uso de mas de una variable al inicializar, más de una condición y
más de un incremento.
Los elementos de cada sección se separan por comas. Cada sección se separa
por punto y coma.
Aunque el lenguaje C lo permite, es conveniente no modificar la variable
contadora dentro del bucle.
*/

/*
Esta primera forma de definición con llaves que se muestra a
continuación quizás sea la mas clara
*/
for ( i=0 ; i<10 ; i++ ) //No poner ; porque sino no se trataría de un bucle
{
printf( "Esto es un bucle for\n" );
}

//Otra forma de definir lo mismo
for ( i=0 ; i<10 ; i++ ) printf( "Esto es un bucle for\n" );
//Nuevamente lo mismo
for ( i=0 ; i<10 ; i++ )
printf( "Esto es un bucle for\n" );

for( i=0, j=5 ; i<10 ; i++, j=j+3 )
{
printf( "Valor de i %i", i );
printf( "Valor de j = %i\n", j );
}

/*Bucle for infinito
for (;;)
{
printf("Bucle infinito.\n");
}
*/
//Aunque podemos parar su ejecución
i=0;
for (;;)
{
i++;
if (i==100) break;
printf("Bucle infinito???.\n");
}

//WHILE (mientras se cumpla la condición)
i = 0;

while ( i<10 )
{
i++;
printf( "Valor de i %i\n", i );
}

/*Bucle while infinito
while (1)
{
printf("Bucle infinito.\n");
}
*/

//DO WHILE (Similar al While - Las instrucciones se ejecutan al menos una vez)

i=0;
do
{
i++;
printf( "El valor de i %i.\n", i );

} while ( i<10 );

/*
SALTO: BREAK, CONTINUE, GOTO y RETURN
GOTO - sólo se puede usar dentro de funciones y no se puede saltar desde
una función a otra. No suele estar muy bien vista en programación
RETURN- Volver de una funcion. Salta al punto en que se hizo la llamada a la función.
puede tener o no un valor asociado
BREAK - Para Finalizar una sentencia case dentro de un switch o terminar
de forma inmediata un bucle
EXIT() - Salir de un programa. Efecto de break que afecta a todo el programa.
CONTINUE -  similar a break, pero fuerza una nueva iteración el bucle y salta
a cualquier código que exista entre medias.
*/

for (i=1; i<10; i++)
{
for (j=1; j<10; j++)
{
printf ("Procesos");
if (i==5)
goto abortar;
}
}
abortar: ;
printf ("Seguimos desde el Abort \n");

//continue fuerza una nueva iteración
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
if (i==j)
continue;
/* hacemos cosillas */
}
}

Hasta la próxima compañeros!!!.

Enviar a un amigo: Share this page via Email
Categories: C, Programación Tags:
  1. Sin comentarios aún.
  1. Sin trackbacks aún.
*