Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
Es aquella estructura que dentro del alcance de una condición tiene otra condición,
en otras palabras, en un if – else se encuentra otro if –else. Cada condición será
evaluada en el orden en el que va apareciendo: si la condición 1 es verdadera se
ejecuta la primera instrucción y ya no se revisan las demás condiciones, de lo
contrario se evalúa la siguiente condición – la 2 – y si ésta es verdadera realizará
su instrucción y así sucesivamente. El else final que contiene la última instrucción
será ejecutado si ninguna de las condiciones anteriores fue verdadera. Esta
estructura es más útil cuando se tienen tres o más opciones.
if (condición)
instrucción 1;
else
if (condición 2)
instrucción 2;
else
instrucción 3;
Dentro de los bloques del if o del else en una sentencia selectiva simple pueden
utilizarse a su vez sentencias selectivas simples, dando lugar a sentencias
selectivas simples anidadas. En este caso, hay que tener en cuenta que la sentencia
else se asocia siempre al if más cercano.
if (n > 0)
if (a > b)
z = a;
else
z = b;
el else se asocia a if (a > b). Si quisiéramos que se aplicara al primer if, bastaría
con encerrar entre llaves el segundo if:
1
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
if (n > 0)
{
if (a > b)
z = a;
}
else
z = b;
if(expresión1)
sentencia1
else if(expresión2)
sentencia2
else if(expresión3)
sentencia3
else if(expresiónn)
sentenciaN
else
sentenciaN+1
2
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
#include <stdio.h>
main()
{
int valor;
printf("Enter a value:");
scanf("%d", &valor);
if (valor < 0)
printf("\nEl valor es negativo\n");
else
if (valor == 0)
printf("\nEl valor es cero\n");
else
printf("\nEl valor es positivo\n");
return 0;
}
# include <stdio.h>
void main( )
{
char c;
3
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
c=getchar( );
if ( ( c>=65 ) && ( c<=90 ) )
printf("Es letra mayuscula\n");
else
{
if ( (c>=97) && (c<=122) )
printf("Es letra minuscula\n");
else
printf("No es un caracter alfabetico\n");
}
}
#include <stdio.h>
void main()
{
float a,b;
printf(“Coeficientes de la ecuación ax+b=0:”);
scanf (“%f %f”,&a,&b);
if (a!=0)
{
printf(“La solución es %f”, -b/a);
}
else
{
if (b!=0)
{
printf(“La ecuación no tiene solución.”);
}
else
{
printf(“Solución indeterminada.”);
}
}
}
4
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
if (a!=0)
{
printf(“La solución es %f”, -b/a);
}
if ((a==0) && (b!=0))
{
printf(“La ecuación no tiene solución.”);
}
if ((a==0) && (b==0))
{
printf(“Solución indeterminada.”);
}
El operador condicional ?:
C proporciona una forma de abreviar una sentencia if
Permite incluir una condición dentro de una expresión.
Sintaxis
“equivale” a
if (condición)
expresión1
else
expresión2
Sólo se evalúa una de las sentencias, por lo que deberemos ser cuidadosos con los
efectos colaterales.
5
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
Ejemplos
max = (x>y)? x : y;
min = (x<y)? x : y;
Es aquella estructura que permite elegir entre dos o más opciones, switch evalúa
la expresión que se encuentra dentro de los paréntesis y el resultado se compara
con valores alternativos. El switch en la expresión lleva implícito el operador igual
(==), por lo que compara si la expresión es igual a alguna de las opciones. Por lo
tanto no se puede comparar utilizando otro operador relacional.
El tipo de dato de la expresión sólo puede ser entero o carácter, por lo tanto, las
opciones deberán coincidir con el tipo de dato de la expresión. Switch compara el
valor de la expresión con cada una de las opciones en el orden en que se
encuentran. Cada opción se representa con la palabra reservada case, por lo tanto
habrá tantos case como opciones.
Una vez que encuentra la igualdad de la expresión con una opción se realizarán las
instrucciones que están a continuación del case hasta encontrar un break, si no
encuentra ningún valor igual a la expresión, realizará la instrucción asignada al
default, si éste existe.
La sintaxis es:
6
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
switch (expresión)
{
case 1: instrucción 1;
break;
case 2: instrucción 2;
break
.
.
case n: instrucción n;
break;
default: break instrucción n+1;
}
#include <stdio.h>
void main()
{
int nota;
printf(“Calificación: ”);
scanf(“%d”, ¬a);
switch (nota) {
case 0:
case 1:
case 2:
case 3:
case 4: printf(“Suspenso”);
break;
7
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
case 5:
case 6: printf(“Aprobado”);
break;
case 7:
case 8: printf(“Notable”);
break;
case 9: printf(“Sobresaliente”);
break;
case 10:printf(“Matrícula”);
break;
default: printf(“Error”);
}
}
Nota: Si trabajamos con datos de tipo real, tendremos que usar sentencias if encadenadas.
#include <stdio.h>
#include <stdlib.h>
main()
{
int peso;
printf("Introduzca peso en kilogramos:");
scanf("%d",&peso);
printf("Seleccione opción:\n");
printf("1 - Hectogramos\n");
printf("2 - Decagramos\n");
printf("3 - Gramos\n");
printf("4 - Decigramos\n");
printf("5 - Centigramos\n");
printf("6 - Miligramos\n");
scanf("%d",&opcion);
switch (opcion)
{
case 1: printf("El peso es:%d\n",peso/10);
break;
case 2: printf("El peso es:%d\n",peso/100);
8
LSCA. Andrea O. Nájera Avila
Instituto Tecnológico de Toluca
Ingeniería Industrial
Algoritmos y Lenguajes de Programación
break;
case 3: printf("El peso es:%d\n",peso/1000);
break;
case 4: printf("El peso es:%d\n",peso/10000);
break;
case 5: printf("El peso es:%d\n",peso/100000);
break;
case 6: printf("El peso es:%d\n",peso/1000000);
break;
default: printf("Opción no válida.");
break;
}
system("PAUSE");
}
Referencias
9
LSCA. Andrea O. Nájera Avila