Programación
      (L109)
        Sesión: 4
Instrucciones de Control
    Ing. José C. Benítez P.
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   2
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   3
Operadores lógicos
                                               /* Uso de los op. lógicos AND, OR, NOT. */
Los operadores lógicos básicos son             #include <stdio.h>
tres:                                          main() /* Compara un número introducido */
                                               {
                                                  int numero;
      &&        AND                               printf("Introduce un número: ");
      ||        OR                                scanf("%d",&numero);
      !         NOT                               if(!(numero>=0))
         (El valor contrario)                                printf("El número es negativo");
                                                  else if((numero<=100)&&(numero>=25))
                                                             printf("El número está entre 25 y 100");
Estos operadores actúan sobre                     else if((numero<25)||(numero>100))
expresiones lógicas.                                         printf("El número no está entre 25 y 100");
Permiten unir expresiones lógicas              }
simples formando otras más
complejas.

V = Verdadero    F = Falso

                           Programación - Prof. Ing. Jose C. Benitez P.                            4
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   5
/* Uso de la sentencia condicional IF. */
                                                         #include <stdio.h>
If - else                                                main() /* Simula una clave de acceso */
                                                         {
                                                            int usuario,clave=18276;
                                                            printf("Introduce tu clave: ");
                                                            scanf("%d",&usuario);
                                                            if(usuario==clave) printf("Acceso permitido");
 Sintaxis:                                                  else printf("Acceso denegado");
                                                         }
       if (condición) sentencia;


 La sentencia solo se ejecuta si se cumple la condición. En caso contrario el
 programa sigue su curso sin ejecutar la sentencia.

 Otro formato:

       if (condición) sentencia1;
         else sentencia2;


 Si se cumple la condición ejecutará la sentencia1, sino ejecutará la sentencia2.
 En cualquier caso, el programa continuará a partir de la sentencia2.
                           Programación - Prof. Ing. Jose C. Benitez P.                            6
/* Uso de la sentencia condicional ELSE...IF. */
                                                   #include <stdio.h>
If - else                                          main() /* Escribe bebé, niño o adulto */
                                                   {
                                                      int edad;
                                                      printf ("Introduce tu edad: ");
                                                      scanf("%d",&edad);
 Otro formato:                                        if (edad<1) printf ("Lo siento, te has equivocado.");
                                                      else if (edad<3) printf("Eres un bebé");
                                                      else if (edad<13) printf("Eres un niño");
 if (condición1) sentencia1;
                                                      else printf("Eres adulto");
 else if (condición2) sentencia2;
                                                   }
 else if (condición3) sentencia3;
 else sentencia4;


 • Con este formato el flujo del programa únicamente entra en una de las
   condiciones.
 • Si una de ellas se cumple, se ejecuta la sentencia correspondiente y salta
   hasta el final de la estructura para continuar con el programa.

 • Existe la posibilidad de utilizar llaves ({ }) para ejecutar más de una
   sentencia dentro de la misma condición.

                            Programación - Prof. Ing. Jose C. Benitez P.                            7
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   8
/* Uso de la sentencia WHILE. */
                                                             #include <stdio.h>
while                                                        main() /* Escribe los números del 1 al 10 */
                                                             {
                                                                int numero=1;
Sintaxis:                                                       while (numero<=10)
while (condición) sentencia;                                    {
                                                                    printf("%dn",numero);
Otra forma:                                                         numero++;
while (condición) {                                              }
    sentencias;                                              }
}
• Con esta sentencia se controla la condición antes de entrar en el bucle. Si
  ésta no se cumple, el programa no entrará en el bucle.
• Naturalmente, si en el interior del bucle hay más de una sentencia, éstas
  deberán ir entre llaves para que se ejecuten como un bloque.

              Los bucles son estructuras que permiten ejecutar partes del
              código de forma repetida mientras se cumpla una condición.

              Esta condición puede ser simple o compuesta de otras
              condiciones unidas por operadores lógicos.

                           Programación - Prof. Ing. Jose C. Benitez P.                             9
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   10
Do while                                                /* Uso de la sentencia DO...WHILE. */
                                                        #include <stdio.h>
Sintaxis:                                               main() /* Muestra un menú si no se pulsa 4 */
do                                                      {
{                                                         char seleccion;
      sentencia1;                                         do {
      sentencia2;                                            printf("1.- Comenzarn");
} while (condición);                                         printf("2.- Abrirn");
                                                             printf("3.- Grabarn");
                                                             printf("4.- Salirn");
• Con esta sentencia se controla la
                                                             printf("Escoge una opción: ");
  condición al final del bucle. Si ésta se                   seleccion=getchar();
  cumple, el programa vuelve a ejecutar                      switch (seleccion) {
  las sentencias del bucle.                                     case '1':printf("Opción 1"); break;
                                                                case '2':printf("Opción 2"); break;
• La única diferencia entre las sentencias
                                                                case '3':printf("Opción 3");
  while y do...while es que con do el                        }
  cuerpo del bucle se ejecutará por lo                    } while (seleccion!='4');
  menos una vez.                                        }




                           Programación - Prof. Ing. Jose C. Benitez P.                          11
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   12
Ejemplo Archivo: switch.c
Switch
                                                                         /* Uso de la sentencia condicional SWITCH. */
switch se utiliza en los menús, de manera que según la                   #include <stdio.h>
                                                                         main() /* Escribe el día de la semana */
opción seleccionada se ejecuten una serie de sentencias.                 {
Sintaxis:                                                                   int dia;
switch (variable) {                                                         printf("Introduce el día: ");
                                                                            scanf("%d",&dia);
          case contenido_variable1:
                                                                            switch(dia) {
               sentencias;                                                      case 1: printf("Lunes");
               break;                                                                    break;
          case contenido_variable2:                                             case 2: printf("Martes");
               sentencias;                                                               break;
               break;                                                           case 3: printf("Miércoles");
          default: sentencias;                                                           break;
                                                                                case 4: printf("Jueves");
       }                                                                                 break;
Cada case puede incluir una o más sentencias sin                                case 5: printf("Viernes");
necesidad de ir entre llaves, ya que se ejecutan todas                                   break;
hasta que se encuentra la sentencia BREAK.                                       case 6: printf("Sábado");
                                                                                         break;
La variable evaluada sólo puede ser de tipo entero o                             case 7: printf("Domingo");
caracter. default ejecutará las sentencias que incluya, en                               break;
                                                                             }
caso de que la opción escogida no exista.                                }


                                Programación - Prof. Ing. Jose C. Benitez P.                                13
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   14
/* Uso de la sentencia FOR. */
                                                           #include <stdio.h>
For                                                        main() /* Escribe la tabla de multiplicar */
                                                           {
                                                              int num,x,result;
                                                              printf("Introduce un número: ");
                                                              scanf("%d",&num);
                                                              for (x=0 ; x<=10 ; x++)
Sintaxis:                                                     {
for (inicialización;condición;incremento)
                                                                 result=num*x;
{
   sentencia1;                                                   printf("n%d por %d = %dn",num,x,result);
   sentencia2;                                                }
}
                                                           }

La inicialización indica una variable (variable de control) que condiciona la
repetición del bucle.
Si hay más, van separadas por comas:
for (a=1 , b=100 ; a!=b ; a++ , b- -) {
El flujo del bucle FOR transcurre de la siguiente forma:




                             Programación - Prof. Ing. Jose C. Benitez P.                           15
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   16
Break                                                          /* Uso de la sentencia condicional SWITCH. */
                                                               #include <stdio.h>
                                                               main() /* Escribe el día de la semana */
                                                               {
La sentencia BREAK se                                             int dia;
utiliza para terminar la                                          printf("Introduce el día: ");
                                                                  scanf("%d",&dia);
ejecución de un bucle                                             switch(dia) {
(WHILE, DO, FOR) o salir de                                           case 1: printf("Lunes");
                                                                               break;
una sentencia SWITCH.                                                 case 2: printf("Martes");
                                                                               break;
                                                                      case 3: printf("Miércoles");
                                                                               break;
                                                                      case 4: printf("Jueves");
                                                                               break;
                                                                      case 5: printf("Viernes");
                                                                               break;
                                                                       case 6: printf("Sábado");
                                                                               break;
                                                                       case 7: printf("Domingo");
                                                                               break;
                                                                   }
                                                               }



                         Programación - Prof. Ing. Jose C. Benitez P.                                17
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   18
continue
                                                     /* Uso de la sentencia CONTINUE. */
   Se utiliza continue dentro de un                  #include <stdio.h>
  bucle.                                             main() /* Escribe del 1 al 100 menos el 25 */
                                                     {
  Cuando el programa llega a una                        int numero=1;
  sentencia continue no ejecuta las                     while(numero<=100) {
  líneas de código que hay a                               if (numero==25) {
  continuación y salta a la siguiente                      numero++;
                                                           continue;
  iteración del bucle.                                     }
                                                         printf("%dn",numero); numero++;
                                                         }
                                                     }




                         Programación - Prof. Ing. Jose C. Benitez P.                            19
Sesión 4. Temas


        Instrucciones de Control
          Operadores lógicos
          If – else
          While
          Do while
          Switch
          For
          Break
          Continue
          goto
                  Programación - Prof. Ing. Jose C. Benitez P.   20
goto                                             #include <stdio.h>
                                                 int main() {
                                                 int n, a=0;
                                                 do
 Existe otra sentencia, GOTO, que                { printf( "Introduzca un numero entero: " );
 permite al programa saltar hacia un               scanf( "%d", &n );
 punto identificado con una etiqueta,              if ( n == 0 )
                                                   { printf( "ERROR: El cero no tiene opuesto.n" );
 pero el buen programador debe
                                                      goto etiqueta_1;
 prescindir de su utilización.                      }
 Es una sentencia muy mal vista en la               printf( "El opuesto es: %dn", -n );
                                                    a += n;
 programación en C.                              } while ( n >= -10 && n <= 10 );
                                                 etiqueta_1:
                                                 printf( "Suma: %d", a );
                                                 return 0;
                                                 }




                         Programación - Prof. Ing. Jose C. Benitez P.                            21
Tarea (T4)
 Hacer un programa en C para los siguientes enunciados:
 1. Hallar el mínimo común múltiplo (mcm) y el máximo común divisor
     (MCD) de dos numero enteros.
 2. Contar el numero de caracteres en una cadena de texto que contiene
     espacios en blanco.
 3. Dados dos números, seleccionar la operación de un menú:
    a. Suma
    b. Resta
    c. Multiplicación
    d. División
    Mostrar los números y el resultado.
 4. Hallar los números primos del 1 al 100.
 5. Hallar los 5 primeros números amigos.
 6. Utilizando sentencias de control hacer un grafico en modo texto.
 7. Juego: Numero secreto.
    Generar un numero aleatorio entero, solicitar que adivinen, ingresar un
    numero y decir si es menor o mayor hasta encontrar el numero secreto.
                         Programación - Prof. Ing. Jose C. Benitez P.     22
Presentación

   Todas las fuentes y tareas deben presentarse en
   formato digital (USB), dentro de una carpeta que
   lleve las iniciales del curso, sus Apellidos, guion bajo
   y luego el numero de la tarea. Ejemplo:
                 PRG_BenitezPalacios_T4
   La fuente debe conservar el nombre original y
   agregar _tema.


            Las Tareas que no cumplan las
                indicaciones no serán
            recepcionados por el profesor.



                  Programación - Prof. Ing. Jose C. Benitez P.   23
Sesión 4. Elementos del lenguaje C

               Programación




         http://utpprogc.blogspot.com
               Programación - Prof. Ing. Jose C. Benitez P.   24

Utp pti_s4_instrucciones de control

  • 1.
    Programación (L109) Sesión: 4 Instrucciones de Control Ing. José C. Benítez P.
  • 2.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 2
  • 3.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 3
  • 4.
    Operadores lógicos /* Uso de los op. lógicos AND, OR, NOT. */ Los operadores lógicos básicos son #include <stdio.h> tres: main() /* Compara un número introducido */ { int numero; && AND printf("Introduce un número: "); || OR scanf("%d",&numero); ! NOT if(!(numero>=0)) (El valor contrario) printf("El número es negativo"); else if((numero<=100)&&(numero>=25)) printf("El número está entre 25 y 100"); Estos operadores actúan sobre else if((numero<25)||(numero>100)) expresiones lógicas. printf("El número no está entre 25 y 100"); Permiten unir expresiones lógicas } simples formando otras más complejas. V = Verdadero F = Falso Programación - Prof. Ing. Jose C. Benitez P. 4
  • 5.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 5
  • 6.
    /* Uso dela sentencia condicional IF. */ #include <stdio.h> If - else main() /* Simula una clave de acceso */ { int usuario,clave=18276; printf("Introduce tu clave: "); scanf("%d",&usuario); if(usuario==clave) printf("Acceso permitido"); Sintaxis: else printf("Acceso denegado"); } if (condición) sentencia; La sentencia solo se ejecuta si se cumple la condición. En caso contrario el programa sigue su curso sin ejecutar la sentencia. Otro formato: if (condición) sentencia1; else sentencia2; Si se cumple la condición ejecutará la sentencia1, sino ejecutará la sentencia2. En cualquier caso, el programa continuará a partir de la sentencia2. Programación - Prof. Ing. Jose C. Benitez P. 6
  • 7.
    /* Uso dela sentencia condicional ELSE...IF. */ #include <stdio.h> If - else main() /* Escribe bebé, niño o adulto */ { int edad; printf ("Introduce tu edad: "); scanf("%d",&edad); Otro formato: if (edad<1) printf ("Lo siento, te has equivocado."); else if (edad<3) printf("Eres un bebé"); else if (edad<13) printf("Eres un niño"); if (condición1) sentencia1; else printf("Eres adulto"); else if (condición2) sentencia2; } else if (condición3) sentencia3; else sentencia4; • Con este formato el flujo del programa únicamente entra en una de las condiciones. • Si una de ellas se cumple, se ejecuta la sentencia correspondiente y salta hasta el final de la estructura para continuar con el programa. • Existe la posibilidad de utilizar llaves ({ }) para ejecutar más de una sentencia dentro de la misma condición. Programación - Prof. Ing. Jose C. Benitez P. 7
  • 8.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 8
  • 9.
    /* Uso dela sentencia WHILE. */ #include <stdio.h> while main() /* Escribe los números del 1 al 10 */ { int numero=1; Sintaxis: while (numero<=10) while (condición) sentencia; { printf("%dn",numero); Otra forma: numero++; while (condición) { } sentencias; } } • Con esta sentencia se controla la condición antes de entrar en el bucle. Si ésta no se cumple, el programa no entrará en el bucle. • Naturalmente, si en el interior del bucle hay más de una sentencia, éstas deberán ir entre llaves para que se ejecuten como un bloque. Los bucles son estructuras que permiten ejecutar partes del código de forma repetida mientras se cumpla una condición. Esta condición puede ser simple o compuesta de otras condiciones unidas por operadores lógicos. Programación - Prof. Ing. Jose C. Benitez P. 9
  • 10.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 10
  • 11.
    Do while /* Uso de la sentencia DO...WHILE. */ #include <stdio.h> Sintaxis: main() /* Muestra un menú si no se pulsa 4 */ do { { char seleccion; sentencia1; do { sentencia2; printf("1.- Comenzarn"); } while (condición); printf("2.- Abrirn"); printf("3.- Grabarn"); printf("4.- Salirn"); • Con esta sentencia se controla la printf("Escoge una opción: "); condición al final del bucle. Si ésta se seleccion=getchar(); cumple, el programa vuelve a ejecutar switch (seleccion) { las sentencias del bucle. case '1':printf("Opción 1"); break; case '2':printf("Opción 2"); break; • La única diferencia entre las sentencias case '3':printf("Opción 3"); while y do...while es que con do el } cuerpo del bucle se ejecutará por lo } while (seleccion!='4'); menos una vez. } Programación - Prof. Ing. Jose C. Benitez P. 11
  • 12.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 12
  • 13.
    Ejemplo Archivo: switch.c Switch /* Uso de la sentencia condicional SWITCH. */ switch se utiliza en los menús, de manera que según la #include <stdio.h> main() /* Escribe el día de la semana */ opción seleccionada se ejecuten una serie de sentencias. { Sintaxis: int dia; switch (variable) { printf("Introduce el día: "); scanf("%d",&dia); case contenido_variable1: switch(dia) { sentencias; case 1: printf("Lunes"); break; break; case contenido_variable2: case 2: printf("Martes"); sentencias; break; break; case 3: printf("Miércoles"); default: sentencias; break; case 4: printf("Jueves"); } break; Cada case puede incluir una o más sentencias sin case 5: printf("Viernes"); necesidad de ir entre llaves, ya que se ejecutan todas break; hasta que se encuentra la sentencia BREAK. case 6: printf("Sábado"); break; La variable evaluada sólo puede ser de tipo entero o case 7: printf("Domingo"); caracter. default ejecutará las sentencias que incluya, en break; } caso de que la opción escogida no exista. } Programación - Prof. Ing. Jose C. Benitez P. 13
  • 14.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 14
  • 15.
    /* Uso dela sentencia FOR. */ #include <stdio.h> For main() /* Escribe la tabla de multiplicar */ { int num,x,result; printf("Introduce un número: "); scanf("%d",&num); for (x=0 ; x<=10 ; x++) Sintaxis: { for (inicialización;condición;incremento) result=num*x; { sentencia1; printf("n%d por %d = %dn",num,x,result); sentencia2; } } } La inicialización indica una variable (variable de control) que condiciona la repetición del bucle. Si hay más, van separadas por comas: for (a=1 , b=100 ; a!=b ; a++ , b- -) { El flujo del bucle FOR transcurre de la siguiente forma: Programación - Prof. Ing. Jose C. Benitez P. 15
  • 16.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 16
  • 17.
    Break /* Uso de la sentencia condicional SWITCH. */ #include <stdio.h> main() /* Escribe el día de la semana */ { La sentencia BREAK se int dia; utiliza para terminar la printf("Introduce el día: "); scanf("%d",&dia); ejecución de un bucle switch(dia) { (WHILE, DO, FOR) o salir de case 1: printf("Lunes"); break; una sentencia SWITCH. case 2: printf("Martes"); break; case 3: printf("Miércoles"); break; case 4: printf("Jueves"); break; case 5: printf("Viernes"); break; case 6: printf("Sábado"); break; case 7: printf("Domingo"); break; } } Programación - Prof. Ing. Jose C. Benitez P. 17
  • 18.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 18
  • 19.
    continue /* Uso de la sentencia CONTINUE. */ Se utiliza continue dentro de un #include <stdio.h> bucle. main() /* Escribe del 1 al 100 menos el 25 */ { Cuando el programa llega a una int numero=1; sentencia continue no ejecuta las while(numero<=100) { líneas de código que hay a if (numero==25) { continuación y salta a la siguiente numero++; continue; iteración del bucle. } printf("%dn",numero); numero++; } } Programación - Prof. Ing. Jose C. Benitez P. 19
  • 20.
    Sesión 4. Temas Instrucciones de Control Operadores lógicos If – else While Do while Switch For Break Continue goto Programación - Prof. Ing. Jose C. Benitez P. 20
  • 21.
    goto #include <stdio.h> int main() { int n, a=0; do Existe otra sentencia, GOTO, que { printf( "Introduzca un numero entero: " ); permite al programa saltar hacia un scanf( "%d", &n ); punto identificado con una etiqueta, if ( n == 0 ) { printf( "ERROR: El cero no tiene opuesto.n" ); pero el buen programador debe goto etiqueta_1; prescindir de su utilización. } Es una sentencia muy mal vista en la printf( "El opuesto es: %dn", -n ); a += n; programación en C. } while ( n >= -10 && n <= 10 ); etiqueta_1: printf( "Suma: %d", a ); return 0; } Programación - Prof. Ing. Jose C. Benitez P. 21
  • 22.
    Tarea (T4) Hacerun programa en C para los siguientes enunciados: 1. Hallar el mínimo común múltiplo (mcm) y el máximo común divisor (MCD) de dos numero enteros. 2. Contar el numero de caracteres en una cadena de texto que contiene espacios en blanco. 3. Dados dos números, seleccionar la operación de un menú: a. Suma b. Resta c. Multiplicación d. División Mostrar los números y el resultado. 4. Hallar los números primos del 1 al 100. 5. Hallar los 5 primeros números amigos. 6. Utilizando sentencias de control hacer un grafico en modo texto. 7. Juego: Numero secreto. Generar un numero aleatorio entero, solicitar que adivinen, ingresar un numero y decir si es menor o mayor hasta encontrar el numero secreto. Programación - Prof. Ing. Jose C. Benitez P. 22
  • 23.
    Presentación Todas las fuentes y tareas deben presentarse en formato digital (USB), dentro de una carpeta que lleve las iniciales del curso, sus Apellidos, guion bajo y luego el numero de la tarea. Ejemplo: PRG_BenitezPalacios_T4 La fuente debe conservar el nombre original y agregar _tema. Las Tareas que no cumplan las indicaciones no serán recepcionados por el profesor. Programación - Prof. Ing. Jose C. Benitez P. 23
  • 24.
    Sesión 4. Elementosdel lenguaje C Programación http://utpprogc.blogspot.com Programación - Prof. Ing. Jose C. Benitez P. 24