Funciones en programaci´ on y condicionales II
Estructuras condicionales y validaci´ on de datos
Jonatan Gom´ ez Perdomo, Ph.D.
Arles Rodr´ıguez, Ph.D.(c)
Camilo Cubides, Ph.D.(c)
Grupo de investigaci´on en vida artificial – Research Group on Artificial Life – (Alife) Departamento de Ingenier´ıa de Sistemas e Industrial
Facultad de Ingenier´ıa Universidad Nacional de Colombia
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura de control condicional s´ı (if)
El condicional if I
Es posible tener programas en los que se deban cubrir diferentes casos, para los cuales se deber´ an retornar diferentes valores dadas unas condiciones.
La estructura de control condicional o de selecci´ on permite ejecutar, o un
grupo de instrucciones u otro grupo si una condici´ on se cumple o no.
Representaci´ on de condicionales con diagramas de flujos
Un condicional se puede representar gr´ aficamente mediante un diagrama de flujo de la siguiente manera.
<bloque_prev>
<cond>
<bloque_V> <bloque_F>
<bloque_sigui>
V F
La estructura de control condicional s´ı (if)
Esquema en C++ de un condicional y su ejecuci´ on
Un esquema textual que en C++ representa una estructura condicional es la que se da en el siguiente fragmento de c´ odigo.
<bloque_prev>
if(<cond>){
<bloque_V>
}else{
<bloque_F>
};
<bloque_sigui>
Donde, despu´ es de ejecutar el bloque de instrucciones previas <bloque_prev>, se ejecutar´ a el bloque <bloque_V> si <cond>
se eval´ ua verdadero, en caso de que <cond>
se eval´ ue falso de ejecutar´ a <bloque_F>.
Despu´ es de ejecutar el bloque <bloque_V> o el bloque <bloque_F> se continua con la ejecuci´ on del resto del programa, es decir, el resto de las instrucciones del bloque
<bloque_sigui> que aparece despu´ es
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura de control condicional s´ı (if) Valor absoluto de un n´umero
Valor absoluto de un n´ umero I
Ejemplo
La funci´ on que permite calcular el valor absoluto de un n´ umero real es una funci´ on que recibe como par´ ametro de entrada un n´ umero real y retorna la distancia de ese valor al origen. La funci´ on valor absoluto en notaci´ on matem´ atica se define como
valor absoluto : R → R (x ) 7→
( x , si x ≥ 0;
−x, en otro caso.
Valor absoluto de un n´ umero II
Ejemplo (continuaci´ on)
Un diagrama de flujo que representa el condicional que est´ a impl´ıcito en la funci´ on valor absoluto es el siguiente
double valor;
x >= 0
valor = x; valor = -x;
return valor;
V F
La estructura de control condicional s´ı (if) Valor absoluto de un n´umero
Valor absoluto de un n´ umero III
Ejemplo (continuaci´ on)
La codificaci´ on en C++ de esta funci´ on junto con su programa principal es
#include<iostream>
#include<cstdlib>
using namespace std;
Valor absoluto de un n´ umero IV
Ejemplo (continuaci´ on)
double valor_absoluto(double x){
double valor;
if(x >= 0){
valor = x;
}else{
valor = -x;
};
return valor;
};
La estructura de control condicional s´ı (if) Valor absoluto de un n´umero
Valor absoluto de un n´ umero V
Ejemplo (continuaci´ on) int main(){
double x;
cout << "x? = ";
cin >> x;
cout << "El valor absoluto es: ";
cout << valor_absoluto(x);
cout << endl;
system("pause");
return EXIT_SUCCESS;
};
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura de control condicional s´ı (if) El m´aximo entre dos n´umeros
El m´ aximo entre dos n´ umeros I
Ejemplo
Una funci´ on que permite determinar el m´ aximo de dos n´ umeros reales, se puede definir como
maximo dos numeros : R × R −→ R
aqu´ı se tienen dos casos, si el n´ umero a es mayor que b el valor m´ aximo es a; en otro caso se debe retornar b. En notaci´ on matem´ atica esto puede ser escrito de la siguiente forma
maximo dos numeros : R × R → R (a, b) 7→
( a, si a > b;
b, en otro caso.
El m´ aximo entre dos n´ umeros II
Ejemplo (continuaci´ on)
Un diagrama de flujo que representa el condicional que est´ a impl´ıcito en la funci´ on m´ aximo entre dos n´ umeros es el siguiente
a > b
return a; return b;
V F
La estructura de control condicional s´ı (if) El m´aximo entre dos n´umeros
El m´ aximo entre dos n´ umeros III
Ejemplo (continuaci´ on)
La regla de traducci´ on de la funci´ on es similar a la anterior, s´ olo hay que tener en cuenta la instrucci´ on condicional, y que si no se cumple la condici´ on especificada en el if, se ejecutar´ a el flujo de instrucciones especificado bajo el alcance de la instrucci´ on else
double maximo_dos_numeros(double a, double b){
if(a > b){
return a;
}else{
return b;
};
};
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura de control condicional s´ı (if) El operador condicional ternario ?:
El operador condicional ?: I
En C++ y particularmente en las ´ ultimas d´ ecadas en muchos lenguajes de
programaci´ on se dispone de un operador ternario que act´ ua como un
condicional if compacto, este operador condicional ?: es utilizado en los
casos en los cuales se tienen que evaluar expresiones muy simples, de
forma r´ apida y que usualmente retornan alg´ un resultado, el cual depende
se si la condici´ on se eval´ ua falso o verdadero.
El operador condicional ternario ?: II
A partir de la sintaxis general de un condicional if if(<cond>){
<bloque_1>
}else{
<bloque_2>
};
se tiene que la sintaxis general de un operador condicional ?: que es equivalente al condicional if es la siguiente
<cond> ? <bloque_1> : <bloque_2>;
La estructura de control condicional s´ı (if) El operador condicional ternario ?:
El operador condicional ternario ?: III
es importante tener en cuenta que el operador condicional siempre retorna el resultado de la evaluaci´ on de la expresi´ on seleccionada.
Ejemplo
La siguiente funci´ on permite calcular el valor absoluto de un n´ umero real, pero utilizando el operador condicional ?: en vez del condicional if presentado en un ejemplo previo
double valor_absoluto(double x){
double valor;
valor = x >= 0 ? x : -x;
return valor;
};
El operador condicional ternario ?: IV
Ejemplo
Una funci´ on equivalente a la anterior, que es m´ as compacta y que tambi´ en permite calcular el valor absoluto, es la siguiente
double valor_absoluto(double x){
return x >= 0 ? x : -x;
};
La estructura condicional sin opci´on alternativa
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura condicional sin opci´ on alternativa I
Cuando en el flujo de un programa se desea que se ejecute un grupo de instrucciones cuando un condicional se evalu´ e verdadero, y que se continue con la ejecuci´ on del resto del programa se halla o no ejecutado la
instrucciones del condicional, se tiene un caso de condicional sin opci´ on alternativa.
Este tipo de estructura se suele utilizar cuando se desea agregar una
evaluaci´ on intermedia de una expresi´ on cuando la condici´ on se eval´ ua
verdadero, pero que no tiene impacto sobre la ejecuci´ on del resto del
programa que le sigue al condicional.
La estructura condicional sin opci´on alternativa
La estructura condicional sin opci´ on alternativa II
Una representaci´ on mediante diagramas de flujos de un condicional sin opci´ on alternativa es la siguiente
<bloque_prev>
<cond>
<bloque>
<bloque_sigui>
V
La estructura condicional sin opci´ on alternativa en C++ I
En un if la parte alternativa else es opcional, es decir, en el siguiente fragmento de c´ odigo
<bloque_prev>
if(<cond>){
<bloque>
};
<bloque_sigui>
se ejecutar´ a un grupo de instrucciones <bloque> si <cond> se eval´ ua verdadero, en cualquier caso, se halla o no ejecutado el bloque de instrucciones <bloque>, se salta a la siguiente estructura
<bloque_sigui> despu´ es del condicional if.
La estructura condicional sin opci´on alternativa Impresi´on de n´umeros con signo
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
Impresi´ on de n´ umeros con signo I
Ejemplo
Cuando se realiza la impresi´ on de un n´ umero en la consola o cualquier otro dispositivo de salida, es a veces se desea que si un n´ umero es positivo, este sea impreso con el signo +, es decir, que para el caso del n´ umero
3.14159265 su impresi´ on seria +3.14159265 en vez de su tradicional
representaci´ on 3.14159265. Para el caso del cero (0) y los n´ umeros
negativos la impresi´ on es la usual.
La estructura condicional sin opci´on alternativa Impresi´on de n´umeros con signo
Impresi´ on de n´ umeros con signo II
Ejemplo (continuaci´ on)
Un diagrama de flujo que describe las instrucciones para imprimir un n´ umero con signo es el siguiente
x > 0.0
cout << "+";
cout << x;
return x;
V
Impresi´ on de n´ umeros con signo III
Ejemplo (continuaci´ on)
Una funci´ on en C++ que permite imprimir los n´ umeros con signos es la siguiente
double imprimir_numero(double x){
if(x > 0.0){
cout << "+";
};
cout << x;
return x;
};
obs´ ervese como la ejecuci´ on del cuerpo del condicional no afecta las
instrucciones que siguen despu´ es del condicional.
La estructura condicional sin opci´on alternativa El operador l´ogico “condicional”
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
El operador l´ ogico “condicional” I
Ejemplo
En los lenguajes de programaci´ on t´ıpicamente est´ an definidos los
operadores l´ ogicos de la negaci´ on (¬), la conjunci´ on (∧) y la disyunci´ on (∨), pero el condicional y el bicondicional no lo est´ an, por lo tanto si se quiere utilizar estos operadores es necesario construir las funciones que permitan utilizar estos operadores. Para el caso del condicional y a partir de la tabla de verdad para el operador condicional definido en el cap´ıtulo de l´ ogica
ξ(p) ξ(q) ξ(p → q)
V V V
V F F
F V V
F F V
La estructura condicional sin opci´on alternativa El operador l´ogico “condicional”
El operador l´ ogico “condicional” II
Ejemplo (continuaci´ on)
se puede definir una funci´ on que permite calcular la operaci´ on condicional de un par de variables booleanas y que retorna el resultado de operar los valores mediante un condicional, de la siguiente manera
condicional : B × B −→ B
aqu´ı se tienen dos casos, primero, si el antecedente es verdadero y el consecuente es falso, entonces el resultado de aplicar el condicional el falso, para cualquier otro caso el condicional es verdadero. En notaci´ on matem´ atica esto puede ser escrito de la siguiente manera
condicional : B × B → B (p, q) 7→
( F , si ξ(p) = V ∧ ξ(q) = F ;
El operador l´ ogico “condicional” III
Ejemplo (continuaci´ on)
Una posible codificaci´ on en C++ de esta funci´ on seria bool condicional(bool p, bool q){
if(p == true && q == false){
return false;
}else{
return true;
};
};
La estructura condicional sin opci´on alternativa El operador l´ogico “condicional”
El operador l´ ogico “condicional” IV
Ejemplo (continuaci´ on)
obs´ ervese que es posible construir una funci´ on que utilice s´ olo una estructura if sin la sentencia else que es mucho m´ as sencilla que la funci´ on presentada anteriormente,
bool condicional(bool p, bool q){
if(p){
return q;
};
return true;
};
en esta funci´ on se tiene en cuenta que si la premisa p tiene valor true,
entonces el resultado est´ a dado por el valor de la conclusi´ on q, y si el valor
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
Estructuras condicionales enlazadas
Estructuras condicionales enlazadas I
Otra de las opciones para utilizar una estructura condicional es la de enlazar varias estructuras condicionales, de tal manera que solamente se pueda ejecutar un grupo de instrucciones dependiendo de cual de las opciones se eval´ ua verdadero. De la misma manera que en el caso del condicional tradicional la parte alternativa del final es opcional.
Una representaci´ on mediante diagramas de flujos de una secuencia de
condicionales enlazados es la que se presenta a continuaci´ on.
Estructuras condicionales enlazadas II
<bloque_prev>
<cond_1>
<bloque_1>
V
<cond_2>
F
<bloque_2>
V
· · ·
<cond_i>
F
<bloque_i>
V
· · · F
<cond_n-1>
<bloque_n-1>
V
<bloque_n>
F
<bloque_sigui>
Estructuras condicionales enlazadas
Estructuras condicionales enlazadas III
La codificaci´ on en C++ de las estructuras condicionales enlazadas es la siguiente
<bloque_prev>
if(<cond_1>){
<bloque_1>
}else if(<cond_2>){
<bloque_2>
} ...
}else if(<cond_i>){
<bloque_i>
} ...
}else if(<cond_n-1>){
<bloque_n-1>
}else{
<bloque_n>
Estructuras if enlazadas III
donde despu´ es de ejecutar las instrucciones previas <bloque_prev> se ejecutar´ a <bloque_1> si <cond_1> se eval´ ua verdadero, en caso de que
<cond_1> se eval´ ue falso de ejecutar´ a <bloque_2> si <cond_2> se eval´ ua verdadero, y as´ı se continuar´ a revisando cada una de las condiciones si la anterior se eval´ ua falso. Si alg´ un <cond_i> se eval´ ua verdadero se ejecuta su respectivo <bloque_i> y despu´ es de ejecutar todas las instrucciones del
<bloque_i> se continua ejecutando las instrucciones siguientes al condicional enlazado <bloque_sigui>.
Si ninguna <cond_i> se eval´ ua verdadero y la parte else existe al final de las estructuras if enlazadas entonces se ejecutar´ an las instrucciones del
<bloque_n>
Estructuras condicionales enlazadas El descuento del d´ıa
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
El descuento del d´ıa I
Ejemplo
Una tienda tiene las siguientes promociones
Si un cliente lleva m´ as de 5 productos del mismo tipo le realizan un descuento del 5%. Si lleva m´ as de 10 productos del mismo tipo le realizan un descuento del 10%. Si lleva m´ as de 20 productos del mismo tipo le realizan un descuento del 20%.
Realizar un programa que dado el n´ umero de productos y el
precio del producto determine el valor a pagar por el cliente.
Estructuras condicionales enlazadas El descuento del d´ıa
El descuento del d´ıa II
Ejemplo (continuaci´ on)
La siguiente funci´ on permitir´ a calcular el valor deseado pago final (n, precio) = valor Si se establecen las variables:
precio := Valor de cada producto n := N´ umero de productos
valor := Valor total a pagar despues de aplicar el descuento
entonces
El descuento del d´ıa III
Ejemplo (continuaci´ on)
pago final : Z × R → R
(n, precio) 7→
n ∗ precio, n ≤ 5;
n ∗ precio ∗ 0.95, 5 < n ≤ 10;
n ∗ precio ∗ 0.90, 10 < n ≤ 20;
n ∗ precio ∗ 0.80, en otro caso.
Estructuras condicionales enlazadas El descuento del d´ıa
El descuento del d´ıa IV
Ejemplo (continuaci´ on)
La codificaci´ on en C++ de esta funci´ on es
double pago_final(int n, double precio){
double valor;
if(n <= 5){
valor = n * precio;
}else if(5 < n && n <= 10){
valor = n * precio * 0.95;
}else if(10 < n && n <= 20){
valor = n * precio * 0.90;
}else{
valor = n * precio * 0.80;
};
return valor;
El descuento del d´ıa V
Ejemplo (continuaci´ on)
Otra posible escritura de la funci´ on puede ser
double pago_final(int n, double precio){
if(n <= 5){
return n * precio;
}else if(5 < n && n <= 10){
return n * precio * 0.95;
}else if(10 < n && n <= 20){
return n * precio * 0.90;
}else{
return n * precio * 0.80;
};
};
La estructura de conmutaci´on (switch)
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura de conmutaci´ on (switch) I
Cuando se tiene una instrucci´ on if enlazada en la cual las condiciones
consisten en comparar una misma variable con un grupos de valores
enteros constantes de forma repetida, como la que se presenta a
continuaci´ on
La estructura de conmutaci´on (switch)
La estructura de conmutaci´ on (switch) II
if(<var_entera> == <num_1>){
<bloque_1>
}else if(<var_entera> == <num_2>){
<bloque_2>
} ...
}else if(<var_entera> == <num_i>){
<bloque_i>
} ...
}else if(<var_entera> == <num_n-1>){
<bloque_n-1>
}else{
<bloque_n>
La estructura de conmutaci´ on (switch) III
en este caso se utiliza una instrucci´ on switch, la cual sirve para abreviar una instrucci´ on if enlazada como la anterior. El aspecto general de una instrucci´ on switch es la siguiente:
La variable aparece ´ unicamente como par´ ametro de la instrucci´ on switch.
Cada uno de los valores enteros constantes se trata como un caso,
especificando la palabra case seguido de la constante y terminando
con : (dos puntos).
La estructura de conmutaci´on (switch)
La estructura de conmutaci´ on (switch) IV
A continuaci´ on se escribe el cuerpo de instrucciones a realizar en cada caso.
Se termina con una instrucci´ on break que obliga a que se deje de ejecutar la instrucci´ on switch.
Como en el caso de la instrucci´ on if enlazada el ´ ultimo else es
opcional y se ejecuta cuando ning´ un otro caso es ejecutado, en el
caso del switch existe la instrucci´ on default que realiza las mismas
funciones.
La estructura de conmutaci´ on (switch) V
La codificaci´ on en C++ de una estructura switch es la siguiente switch(<var_entera>){
case <num_1>:
<bloque_1>
break;
case <num_2>:
<bloque_2>
break;
...
case <num_i>:
<bloque_i>
break;
...
La estructura de conmutaci´on (switch)
La estructura de conmutaci´ on (switch) VI
case <num_i>:
<bloque_i>
break;
...
case <num_n-1>:
<bloque_n-1>
break;
default:
<bloque_n>
break;
};
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
La estructura de conmutaci´on (switch) Detecci´on de vocales min´usculas
Detecci´ on de vocales min´ usculas I
Ejemplo
La siguiente funci´ on permite determinar si dada una letra, ´ esta es una vocal min´ uscula, en caso de no ser as´ı, entonces por defecto se retorna falso.
es vocal minuscula : ASCCI → B
(ch) 7→
V , si ch = a;
V , si ch = e;
V , si ch = i;
V , si ch = o;
V , si ch = u;
F , en otro caso.
Detecci´ on de vocales min´ usculas I
Ejemplo (continuaci´ on)
Hay que tener presente que todo car´ acter es representado por un n´ umero entero, por eso es posible utilizar una variable de tipo car´ acter dentro de una instrucci´ on switch. La codificaci´ on de la anterior funci´ on matem´ atica en C++ puede ser la siguiente.
bool es_vocal_minuscula(char ch){
bool value;
switch(ch){
...
La estructura de conmutaci´on (switch) Detecci´on de vocales min´usculas
Detecci´ on de vocales min´ usculas II
Ejemplo (continuaci´ on)
bool es_vocal_minuscula(char ch){
bool value;
switch(ch){
case ’a’:
value = true;
break;
case ’e’:
value = true;
break;
case ’i’:
value = true;
break;
Detecci´ on de vocales min´ usculas III
Ejemplo (continuaci´ on) case ’o’:
value = true;
break;
case ’u’:
value = true;
break;
default:
value = false;
break;
};
return value;
};
La estructura de conmutaci´on (switch) Detecci´on de vocales min´usculas
Detecci´ on de vocales min´ usculas IV
Cuando en una instrucci´ on switch varios casos se tratan de la misma forma, entonces estos se pueden agrupar en uno o varios casos, como se muestra en el siguiente ejemplo.
Ejemplo
En este ejemplo se agruparon todos lo casos de las vocales en uno solo.
bool es_vocal_minuscula(char ch){
bool value;
switch(ch){
...
Detecci´ on de vocales min´ usculas V
Ejemplo (continuaci´ on) switch(ch){
case ’a’:
case ’e’:
case ’i’:
case ’o’:
case ’u’:
value = true;
break;
default:
value = false;
break;
};
return value;
};
La estructura de conmutaci´on (switch) Detecci´on de vocales min´usculas
Detecci´ on de vocales min´ usculas VI
Es usual que las instructiones que se ejecutan dentro de los casos de una
instrucci´ on switch se retornen directamente cuando se calculen dentro de
una funci´ on, para estos casos, en vez de dejar de ejecutar el switch con un
break, se puede retornar el valor directamente mediante el uso de la
instrucci´ on return. Si se elije esta opci´ on no se debe utilizar la instrucci´ on
break. A continuaci´ on se muestra esta variaci´ on de la instrucci´ on switch.
Detecci´ on de vocales min´ usculas VII
Ejemplo
En este ejemplo se agruparon todos lo casos de las vocales en uno solo y se retorn´ o directamente el resultado de la evaluaci´ on de cada caso.
bool es_vocal_minuscula(char ch){
switch(ch){
case ’a’:
case ’e’:
case ’i’:
case ’o’:
case ’u’:
return true;
default:
return false;
};
};
Validaci´on de datos usando condicionales
Agenda
1
La estructura de control condicional s´ı (if) Valor absoluto de un n´ umero
El m´ aximo entre dos n´ umeros El operador condicional ternario ?:
2
La estructura condicional sin opci´ on alternativa Impresi´ on de n´ umeros con signo
El operador l´ ogico “condicional”
3
Estructuras condicionales enlazadas El descuento del d´ıa
4
La estructura de conmutaci´ on (switch) Detecci´ on de vocales min´ usculas
5
Validaci´ on de datos usando condicionales
Validaci´ on usando condicionales I
Teniendo en cuenta que el algoritmo para el c´ alculo del ´ area de un rect´ angulo dada la definici´ on del tipo de dato podr´ıan estarse leyendo largos o anchos negativos. La notaci´ on matem´ atica tambi´ en permite restringir el dominio y el rango de los conjuntos quedando la funci´ on de la siguiente forma
area rectangulo : R
0,+× R
0,+→ R
0,+(l , a) 7→ l ∗ a
Validaci´on de datos usando condicionales
Validaci´ on usando condicionales II
Dicha validaci´ on es suficiente a nivel de notaci´ on matem´ atica, pero en programaci´ on dichas validaciones sobre los par´ ametros de entrada corresponder´ an al programa principal. Para realizar estas validaciones se tienen dos opciones, el uso de un condicional ´ o el uso de un ciclo (este
´
ultimo se explicar´ a en el capitulo de ciclos).
En este caso si el usuario ingresa un largo o un ancho negativo, se
suspender´ a la ejecuci´ on del programa mostrando un mensaje de error
retornando EXIT_FAILURE al sistema operativo.
Area de un rect´ ´ angulo validando datos I
Ejemplo
La codificaci´ on en C++ de la funci´ on para calcular el ´ area de un
rect´ angulo haciendo la validaci´ on de la positividad tanto del ancho como de la altura es la siguiente
#include<iostream>
#include<cstdlib>
using namespace std;
double area_rectangulo(double l, double a){
return l * a;
};
Validaci´on de datos usando condicionales