Lab N° 6 - Programación Visual C++ - Estructuras Selectivas o Condicionales - 2014-I.doc
Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas •...
Transcript of Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas •...
![Page 1: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/1.jpg)
Informática
Tema4- Estructuras de Control en C:
Estructuras selectivas o condicionales
![Page 2: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/2.jpg)
Estructuras de control
• Van a controlar la ejecución de las
instrucciones:
• Tipos:
– Selectivas (Eligen las instrucciones ejecutar).
– Repetitivas (Repiten un cjto de instrucciones).
![Page 3: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/3.jpg)
Estructuras selectivas
• Selección simple. (if)
• Selección complementaria (if-else)
• Anidamiento
• Selección múltiple (switch)
![Page 4: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/4.jpg)
Selectivas: Elegir qué hacer!!
• ¿Cómo se ejecuta un programa?
• ¿Podemos alterar el orden de ejecución?
• ¿Podemos decidir qué ejecutar y qué no?
Ejemplo:
Decir si un número es positivo o negativo
Solución:
emplear instrucciones que nos permitan hacer una cosa u otra
![Page 5: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/5.jpg)
Conceptos previos
• Bloque de instrucciones: Conjunto de
instrucciones que se encuentra encerradas
entre dos llaves {....}
• p.e.{
printf(“Deme un numero”); /* mensaje de cortesia*/
scanf(“%d”,&numero); /* se introduce el numero*/
}
Comentarios
![Page 6: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/6.jpg)
Selección simple: if
• La instrucción if permite elegir si se ejecuta
o no un bloque de instrucciones.
• Ejemplo: Decir si un número introducido
por teclado es positivo.
![Page 7: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/7.jpg)
Ejemplo 1
int main(){
int x;
printf(“Deme un numero”); /* mensaje indicando lo que se pide */
scanf(“%d”,&x); /* se introduce el número */
if (x>=0) /* expresión condicional del if */
{
printf(“El numero %d es positivo”,x); /* bloque */
}
}Indentación
![Page 8: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/8.jpg)
Esquema del if
x>0
Bloque
Resto de
instrucciones
Cierto(1)
Falso(0)
if
![Page 9: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/9.jpg)
• Ampliemos el problema:
– Decir si un número introducido por teclado es
positivo o negativo.
• Este problema plantea dos alternativas que
además son complementarias y excluyentes:
– O el número es positivo o es negativo
• En estos casos se emplea el if...else
![Page 10: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/10.jpg)
int main(){
int x;
printf(“Deme un numero”); /* mensaje indicando lo que se pide*/
scanf(“%d”,&x); /* se introduce el número */
if (x>=0) /* expresión condicional del if */
{
printf(“El numero %d es positivo”,x); /* bloque1*/
}
else
{
printf(“El numero %d es negativo”,x); /* bloque2*/
}
}
![Page 11: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/11.jpg)
Otra posibilidadint main(){
int x;
printf(“Deme un numero”); /* mensaje indicando lo que se pide */
scanf(“%d”,&x); /* se introduce el número */
if (x>=0) /* expresión condicional del if */
{
printf(“El numero %d es positivo”,x); /* bloque1*/
}
if (x<0)
{
printf(“El numero %d es negativo”,x); /* bloque2*/
}
}
![Page 12: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/12.jpg)
Esquema if...else
x>0
Bloque1
Resto de
instrucciones
Cierto(1)
Falso(0)
if...else
Bloque2
![Page 13: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/13.jpg)
Instrucciones de selección
anidadas
• Supongamos el siguiente problema:
– Resolver una ecuación de primer grado
ax+b=0
• Análisis de las soluciones:
– Si a distinto de 0 entonces x=-b/a
– Si a=0 b distinto de 0 entonces solución imposible.
b=0 entonces “solución indeterminada”
![Page 14: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/14.jpg)
int main(){
double a,b;
printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */
scanf(“%lf%lf”,&a,&b); /* se introduce el número */
if (a!=0) {
printf(“El resultado es: %lf”,-b/a);
}
else {
if (b!=0) {
printf(“La solución es imposible”);
}
else {
printf(“La solución es indeterminada”);
}
}
}
![Page 15: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/15.jpg)
int main(){
double a,b;
printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */
scanf(“%lf%lf”,&a,&b); /* se introduce el número */
if (a!=0)
printf(“El resultado es: %lf”,-b/a);
else
if (b!=0)
printf(“La solución es imposible”);
else
printf(“La solución es indeterminada”);
}
![Page 16: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/16.jpg)
int main(){
double a,b;
printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */
scanf(“%lf%lf”,&a,&b); /* se introduce el número */
if (a!=0) /*sin identación*/
printf(“El resultado es: %lf”,-b/a);
else
if (b!=0)
printf(“La solución es imposible”);
else
printf(“La solución es indeterminada”);
}
![Page 17: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/17.jpg)
Esquema anidado
a!=0
Bloque1
Resto de
instrucciones
Cierto(1)
Falso(0)
if...else
anidado
b!=0
Bloque2
Cierto(1)
Falso(0)
Bloque3
![Page 18: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/18.jpg)
Otra solución, condiciones
compuestasint main(){
double a,b;
printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */
scanf(“%lf%lf”,&a,&b); /* se introduce el número */
if (a!=0)
printf(“El resultado es: %lf”,-b/a);
if ((a==0) && (b!=0))
printf(“La solución es imposible”);
if ((a==0) && (b==0))
printf(“La solución es indeterminada”);
}
Realiza 5 comparaciones
Frente las dos del
programa anterior.
![Page 19: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/19.jpg)
• Problema:
– Se desea diseñar un programa en C que lea
desde teclado una calificación alfabética
A,B,C,D,E y las convierta en las numéricas
9,7,5,3,1 respectivamente.
![Page 20: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/20.jpg)
Posible soluciónint main(){
char nota;
printf(“Deme una calificación”); /* mensaje indicando lo que se pide */
scanf(“%c”,¬a); /* se introduce el número */
if ((nota<„A‟) || (nota>‟E‟)) printf(“Calificación desconocida”);
else {
if (nota==„A‟) printf(“La nota es 9”);
if (nota==„B‟) printf(“La nota es 7”);
if (nota==„C‟) printf(“La nota es 5”);
if (nota==„D‟) printf(“La nota es 3”);
if (nota==„E‟) printf(“La nota es 1”);
}
}
![Page 21: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/21.jpg)
La selección múltiple con switch
• Permite seleccionar entre infinitos caminossin necesidad de anidar y evaluando unaúnica expresión.
• Sintaxis:
switch (expresion){
case valor1 : bloque1 break;
case valor2 : bloque2 break;
......
}
Estos bloques no precisan de
llaves pues van precedidos
por “:” y acaban con un break;
![Page 22: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/22.jpg)
int main(){
char nota;
printf(“Deme una calificación”); /* mensaje indicando lo que se pide */
scanf(“%c”,¬a); /* se introduce el número */
switch (nota) {
case „A‟: printf(“La nota es 9”); break;
case „B‟: printf(“La nota es 7”); break;
case „C‟: printf(“La nota es 5”); break;
case „D‟: printf(“La nota es 3”); break;
case „E‟: printf(“La nota es 1”); break;
default : printf(“Nota desconocida”);
}
}
![Page 23: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/23.jpg)
Propiedades del break
• Problema: Supongamos que deseamos saber
la calificación de un alumno (Aprobado,
Suspendido, Notable, Sobresaliente,
Matricula, etc...)
– Valores: [0-5[ corresponde a Suspendido
[5-7[ corresponde a Aprobado
[7-9[ corresponde a Notable
[9-10[ corresponde a Sobresaliente
10 corresponde a matricula.
![Page 24: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/24.jpg)
int main(){
int nota;
printf(“Deme una calificación”);
scanf(“%d”,¬a); /* se introduce el número */
switch (nota) {
case 1:
case 2:
case 3:
case 4: printf(“La nota %d = Suspendido”,nota); break;
case 5:
case 6: printf(“La nota %d = Aprobado”,nota); break;
case 7:
case 8: printf(“La nota %d = Notable”,nota); break;
case 9: printf(“La nota %d = Sobresaliente”,nota); break;
case 10: printf(“La nota %d = Matricula”,nota); break;
default : printf(“Nota desconocida”);
}
}
![Page 25: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/25.jpg)
Inconvenientes del switch
• Sólo se selecciona en base a la evaluación
de una única expresión.
• Los valores de cada case (caso) del switch
pueden ser resultado de una expresión, en
ese caso debe estar formada por ctes, por lo
tanto no se puede utilizar nombres de
variables.
• El resultado de las expresiones de cada case
deben ser números enteros.
![Page 26: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/26.jpg)
int main(){
double nota;
printf(“Deme una calificación”);
scanf(“%lf”,¬a); /* se introduce el número */
if ((nota<0)||(nota>10))
printf(“Calificación desconocida”);
else {
if ((nota>0) && (nota<5))
printf(“La nota %lf es Suspenso”,nota);
if ((nota>=5) && (nota<7))
printf(“La nota %lf es Aprobado”,nota);
if ((nota>=7) && (nota<9))
printf(“La nota %lf es Notable”,nota);
if ((nota>=9) && (nota<10))
printf(“La nota %lf es Sobresaliente”,nota);
if (nota==10)
printf(“La nota %lf es Matricula”,nota);
}
}
/* Con reales */
![Page 27: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/27.jpg)
Menú con un switch
• Hacer un programa que construya una
calculadora básica.
– Debe pedirse que se introduzcan dos números.
– Se debe de elegir una operación a través de un
menú de opciones: suma, resta, multiplicación,
división.
– Realizar la operación correspondiente.
– Nota: (No se puede dividir un número por cero)
![Page 28: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/28.jpg)
/* ejemplo de menu de opciones */
.....
printf(“Menu de opciones\n\t1-suma\n\t2-resta\n\t3-multiplicación\n\t4-division\n”);
printf(“deme una opción de 1-4”);
scanf(“%d”,&opc);
switch(opc){
case 1: .....
case 2: .....
case 3: .....
case 4: .....
default: printf(“opción incorrecta”);
}
....
![Page 29: Tema4- Estructuras de Control en C: Estructuras selectivas ... · Estructuras selectivas • Selección simple. (if) • Selección complementaria (if-else) • Anidamiento • Selección](https://reader031.fdocuments.co/reader031/viewer/2022021708/5ba96b6a09d3f28b6f8c28ce/html5/thumbnails/29.jpg)
int main() {
int opc;
double a,b;
printf(“Deme el primer numero”);
scanf(“%lf”,&a);
printf(“Deme el segundo numero”);
scanf(“%lf”,&b);
printf(“Menu de opciones\n\t1-Sumar\n\t2-Restar\n\t3-Multiplicar\n\t4-dividir\nDeme una opcion de 1-4: ”);
switch(opc){
case 1: printf(“el resultado es %lf”, a+b);break;
case 2: printf(“el resultado es %lf”, a-b);break;
case 3: printf(“el resultado es %lf”, a*b);break;
case 4: if (b!=0)
printf(“el resultado es %lf”, a/b);
else
printf(“el resultado es indefinido”);
break;
default: printf(“opción incorrecta”);
}
}