domingo, 5 de junio de 2016

Capítulo 35. C: Como utilizar los operadores de comparación, cómo comparar cadenas. Instrucción IF, Switch


Diario de un programador día 79

Operadores de igualdad.
Esta clase será muy semejante a la que se vio en java.
Los operadores utilizados en C son los siguientes:
< menor que
> mayor que
<= menor o igual
>= mayor o igual
== igual a.
!= distinto a.

Instrucción IF

La sintaxis para esta instrucción es la que sigue:

if (condicion) {
    instrucciones;
}
else{
    instrucciones;
}

Ejemplo:

#include<stdio.h>
int main(void){
  int a,b;

  printf("Ingresa el valor de a: ");
  scanf("%d", &a);
  printf("Ingresa el valor de b: ");
  scanf("%d", &b);

  if(a > b){
    printf("A es mayor que B\n");
  }
  else{
    printf("B es mayor que A\n");
  }
  return 0;

}


Lo que hace este código es simplemente solicitar dos números. El primero solicita el valor de A y el segundo solicita el valor de B. Luego, utilizando la instrucción IF se comprueba cuál es el mayor de ambos.

COMPARAR CADENAS

En C, no se pueden comparar cadenas utilizando el operador == al igual como se hace con los números. Para poder comparar cadenas en C, se puede utilizar la función strcmp. Para utilizar strcmp se debe incorporar la cabecera string.h y su sintaxis es strcmp(cadena1, cadena2). Esta función tiene tres valores de retorno. Si el retorno es menor a cero, significa que cadena1 es menor a cadena2. Si el retorno es mayor a cero, significa que cadena2 es menor que cadena1 y si el retorno es igual a cero, entonces ambas cadenas son iguales.
Quizás esto suene un poco enredado, pero en resumidas cuentas, lo principal que hay que saber es que si el resultado de la comparación es igual a cero, entonces ambas cadenas son iguales. Ejemplo.
  
#include<stdio.h>
#include<string.h>

int main(void){
  char cadena1[] = "hola";
  char cadena2[] = "hola";

  if(strcmp(cadena1,cadena2) == 0){
    printf("son iguales\n");
  }
  else{
    printf("no son iguales\n");
  }
  return 0;
}


En la zona destacada en gris se puede ver el uso de la función strcmp, la cual es utilizada por una instrucción if. Básicamente aquí dice “Si cadena1 comparada con cadena2 es igual a cero...” mostrar en pantalla “son iguales”. De lo contrario mostrar “no son iguales”. Independiente del valor de retorno, en este caso solamente interesa saber que el valor sea igual a cero para saber que ambas cadenas son iguales.

INSTRUCCION SWITCH

Esta instrucción es como una alternativa a la instrucción if y se usa principalmente cuando en un programa se tienen que escoger entre varias opciones, como puede ser un menú. Entonces, para no tener que insertar varias instrucciones if una tras otra, es que se utiliza esta instrucción.
Su sintaxis es así:

variable = 1
switch (variable){
    case 1:
        ejecutar instrucciones;
        break;
    case 2:
        ejecutar instrucciones;
        break;
    default:
        ejecutar instrucciones;
        break;
}

Al igual que la instrucción IF, la instrucción switch ejecutará una determinada acción en caso de que la variable sea verdadera o se cumpla. En este caso se muestra que la variable vale 1, por lo tanto se ejecutará el "case 1" conjuntamente con todas sus instrucciones. Notar y no olvidar colocar los 2 puntos (:) al final de la instrucción "case". Al final de cada bloque "case" se debe colocar la instrucción "break", que sirve para salir de la instrucción switch. Si no se coloca el break, se seguirán ejecutando todas las instrucciones case que siguen a continuación, o sea el case 2, 3, etc. Más abajo aparece la instrucción "default". Esta se ejecutará en caso que la variable sea distinta a todos los otros case. Por ejemplo, si tengo un menú con tres opciones, algo así:

opcion 1
opcion 2
opcion 3

Y le pido al usuario que ingrese el nombre de alguna opción. En caso de que el usuario ingrese una opción que no corresponde, yo puedo indicar mediante la instrucción "default" que la opción ingresada no existe o no es válida.  Funciona de manera similar a la instrucción "else".

Ejemplo:

#include<stdio.h>

int main(void){
  int opcion;

  printf("Opcion1\nOpcion2\nOpcion3\n\n");
  printf("Ingresa una opcion: ");
  scanf("%d", &opcion);

  switch(opcion){
    case 1:
      printf("Has ingresado en la opcion 1\n");
      break;

    case 2:
      printf("Has ingresado en la opcion 2\n");
      break;

    case 3:
      printf("Has ingresado en la opcion 3\n");
      break;

   default:
      printf("La opcion no es valida\n");
      break;

  }//fin switch

return 0;
}


Espero que se entienda y si hay dudas sobre la instrucción IF, siempre se puede revisar el apartado de small basic, donde di una introducción más detallada. No lo hago porque se es materia ya enseñada y sería volver a repetir lo mismo. Como he dicho, la idea es simplemente mostrar la sintaxis y si hay algo nuevo, entonces lo explicaré lo más detallado posible. Hasta la próxima.

Gustavo J. Cerda Nilo
Enero 2016, última actualización, Junio 2016




No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...