Programar en C- Instrucciones de Control
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 */ } } [code]
Hasta la próxima compañeros!!!.
Categories: C, Programación