Vous êtes sur la page 1sur 4

Sentencias if-else y switch con caracteres y palabras

Cuando se trabaja con las sentencias switch e if-else es importante resaltar que
estas trabajan con operadores relacionales por lo que siempre funcionan con
números, al utilizar caracteres lo que realmente se hace es traducir estos a un
valor numérico el cual está dado por una tabla estándar, llamada tabla ASCII.

En los siguientes bloques de código se ejemplifica la utilización de las


estructuras selectivas if-else con números y caracteres.
//Ejemplo de selectiva con números
#include​ ​<stdio.h>
#include​ ​<stdlib.h>

int​ main​(){
int​ op;

printf​(​"introduzca una letra: "​);


scanf​(​"%i"​,&​op​);

if​(​op​==​1​){
printf​(​"el numero fue el 1"​);
}​else{
printf​(​"el numero no fue el 1"​);
}
return​ ​0;
}

//Ejemplo de selectiva con caracteres


#include​ ​<stdio.h>
#include​ ​<stdlib.h>

int​ main​(){
char​ op​=​'\0';

printf​(​"introduzca una letra: "​);


scanf​(​"%c"​,&​op​);

if​(​op​==​'a'​){
printf​(​"la letra es a"​);
}​else{
printf​(​"la letra no es a"​);
}
return​ ​0;
}

En el caso de los números estos se colocan de forma directa al lado del operador
relacional, pero en el caso de los caracteres estos deben ser colocados entre

comillas simples, Ejemplo: ​op == 1 vs ​op == ‘a’, de esta forma se le indica al
compilador que se quiere trabajar con el valor numérico de dicho carácter.

UCAB - Ingeniería en Telecomunicaciones - Programación 1 - Camilo Pérez


La sentencia switch trabaja solo con el operador relacional == para cada caso y
de la misma forma que la sentencia if los caracteres van colocados entre comillas
simples, Ejemplo: ​case 1: vs ​case ‘a’:

En los siguientes bloques de código se ejemplifica la utilización de las


estructura switch con números y caracteres.
//Ejemplo de switch con numeros
#include​ ​<stdio.h>
#include​ ​<stdlib.h>

int​ main​(){
​int​ o;
printf​(​" Introduzca un numero(0-9): "​);
scanf​(​"%i"​,​ ​&​o​);
fflush​(​stdin​);
​switch​(​o​){
​case​ ​1:
printf​(​" El numero dado fue el numero uno.\n"​);
​break;
​case​ ​2:
printf​(​" El numero dado fue el numero dos.\n"​);
​break;
​default:
printf​(​" El numero dado fue diferente a 1,2,3 y fue: %i.\n"​,​o​);
​break;
}
​return​ ​0;
}

//Ejemplo de switch con caracteres


#include​ ​<stdio.h>
#include​ ​<stdlib.h>

int​ main​(){
​char​ c;
printf​(​"\n Introduzca un caracter(a-z): "​);
scanf​(​"%c"​,​ ​&​c​);
fflush​(​stdin​);
​switch​(​c​){
​case​ ​'a':
printf​(​" El caracter dado dado fue la letra \'a\'.\n"​);
​break;
​case​ ​'b':
printf​(​" El caracter dado dado fue la letra \'b\'.\n"​);
​break;
​default:
printf​(​" El caracter dado fue diferente a a,b,c y fue: \'%c\'.\n"​,​c​);
​break;
}
​return​ ​0;
}

UCAB - Ingeniería en Telecomunicaciones - Programación 1 - Camilo Pérez


Al momento de trabajar palabras no se puede hacer comparaciones de forma directa
y para esto es necesario utilizar funciones adicionales, en el caso del lenguaje
C existe una librería llamada ​string.h la cual contiene varias funciones para el
manejo de cadenas de caracteres o palabras.

En el siguiente bloque de código se ejemplifica la utilización de la función


strcmp() para comparar dos palabras, esta función recibe como parámetros de
entrada dos palabras o cadenas de caracteres y retorna un valor numérico
dependiendo de si estas palabras son iguales o alguna es mayor o menor
alfabéticamente.
//Ejemplo de utilizacion de funcion strcmp
#include​ ​<stdio.h>
#include​ ​<stdlib.h>
#include​ ​<string.h>

int​ main​(){
char​ s1​[​10​],​ s2​[​10​];
int​ res;
printf​(​"\n Introduzca dos palabras consecutivas"​);
printf​(​"\n separadas por un espacio(p1 p2): "​);
scanf​(​"%s %s"​,&​s1​,&​s2​);
fflush​(​stdin​);
res​=​strcmp​(​s1​,​s2​);
printf​(​" El valor que retorna la funcion strcmp() es: %i\n"​,​res​);
​if​(​res​==​0​){
printf​(​" Ambas palabras son iguales \'%s\'=\'%s\'.\n"​,​s1​,​s2​);
​}​else​ ​if​(​res​==​1​){
printf​(​" La palabra \'%s\' es mayor que \'%s\'.\n"​,​s1​,​s2​);
}
​else​ ​if​(​res​==-​1​){
printf​(​" La palabra \'%s\' es menor que \'%s\'.\n"​,​s1​,​s2​);
}
​return​ ​0;
}

Es importante recordar que para declarar una variable que guardará un solo
carácter se declara de la forma habitual pero para guardar palabras o cadenas de
caracteres debemos indicar un tamaño máximo de palabra que la variable va a poder
almacenar, para esto se utilizan corchetes, Ejemplo: ​char nombre[10]; donde 10
sería el tamaño maximo de palabra que se podría almacenar en la variable.

También se debe estar pendiente de que para leer o imprimir variables que
contengan palabras o cadenas de caracteres, se debe utilizar el identificador ​%s
ya que la “s” en este caso es la inicial de string que significa palabra en
ingles.

UCAB - Ingeniería en Telecomunicaciones - Programación 1 - Camilo Pérez


Como no se puede hacer comparaciones de forma directa no se puede utilizar la
sentencia switch con palabras, pero con la ayuda de la función ​strcmp() es posible
utilizar la sentencia if-else.

En el siguiente bloque de código se ejemplifica cómo utilizar la función ​strcmp()


con la sentencia if-else y además simular una estructura switch con palabras.
//Ejemplo de utilizacion de funcion strcmp para simular un switch con palabras
#include​ ​<stdio.h>
#include​ ​<stdlib.h>
#include​ ​<string.h>

int​ main​(){
char​ s1​[​10]
printf​(​"\n Indique una opcion (si/no): "​);
scanf​(​"%s"​,&​s1​);
fflush​(​stdin​);
​if​(​strcmp​(​s1​,​"si"​)==​0​){
printf​(​" Eligio la opcion si.\n"​);
}
​else​ ​if​(​strcmp​(​s1​,​"no"​)==​0​){
printf​(​" Eligio la opcion no.\n"​);
}
​else{
printf​(​" Eligio una opcion diferente a las especificadas.\n"​);
}
​return​ ​0;
}

Como se puede observar se utiliza la función ​strcmp() y al comparar la palabra


que ha indicado el usuario con las palabras “sí” o “no” y se ejecuta un bloque de
código distinto, también se toma en cuenta el caso en que se introduzca una
palabra distinta a las antes mencionadas.

UCAB - Ingeniería en Telecomunicaciones - Programación 1 - Camilo Pérez

Vous aimerez peut-être aussi