• No se han encontrado resultados

Funciones en programaci´on y condicionales II Estructuras condicionales y validaci´on de datos

N/A
N/A
Protected

Academic year: 2021

Share "Funciones en programaci´on y condicionales II Estructuras condicionales y validaci´on de datos"

Copied!
66
0
0

Texto completo

(1)

Funciones en programaci´ on y condicionales II

Estructuras condicionales y validaci´ on de datos

Jonatan Gom´ ez Perdomo, Ph.D.

[email protected]

Arles Rodr´ıguez, Ph.D.(c)

[email protected]

Camilo Cubides, Ph.D.(c)

[email protected]

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

(2)

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

(3)

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.

(4)

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

(5)

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

(6)

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

(7)

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.

(8)

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

(9)

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;

(10)

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;

};

(11)

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;

};

(12)

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

(13)

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.

(14)

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

(15)

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;

};

};

(16)

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

(17)

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.

(18)

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>;

(19)

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;

};

(20)

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;

};

(21)

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

(22)

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.

(23)

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

(24)

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.

(25)

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

(26)

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.

(27)

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

(28)

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.

(29)

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

(30)

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

(31)

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 ;

(32)

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;

};

};

(33)

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

(34)

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

(35)

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.

(36)

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>

(37)

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>

(38)

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>

(39)

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

(40)

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.

(41)

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

(42)

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.

(43)

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;

(44)

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;

};

};

(45)

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

(46)

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

(47)

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>

(48)

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).

(49)

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.

(50)

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;

...

(51)

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;

};

(52)

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

(53)

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.

(54)

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){

...

(55)

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;

(56)

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;

};

(57)

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){

...

(58)

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;

};

(59)

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.

(60)

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;

};

};

(61)

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

(62)

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

(63)

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.

(64)

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;

};

(65)

Validaci´on de datos usando condicionales

Area de un rect´ ´ angulo validando datos II

Ejemplo (continuaci´ on) int main(){

double largo;

double ancho;

cout << "largo? = ";

cin >> largo;

if(largo < 0){

cout << "El largo no es valido";

cout << endl;

system("pause");

return EXIT_FAILURE;

};

(66)

Area de un rect´ ´ angulo validando datos III

Ejemplo (continuaci´ on)

cout << "ancho? = ";

cin >> ancho;

if(ancho < 0){

cout << "El ancho no es valido";

cout << endl;

system("pause");

return EXIT_FAILURE;

};

cout << "El area del rectangulo es: ";

cout << area_rectangulo(largo, ancho);

cout << endl;

system("pause");

return EXIT_SUCCESS;

};

Referencias

Documento similar

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

Por PEDRO A. EUROPEIZACIÓN DEL DERECHO PRIVADO. Re- laciones entre el Derecho privado y el ordenamiento comunitario. Ca- racterización del Derecho privado comunitario. A) Mecanismos

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa

Como en el caso de los tipos enteros, los lenguajes suelen soportar varios tipos real, de modo que el programador pueda seleccionar aquel cuyo rango y precisi´on en el coeficiente

El inconveniente operativo que presenta el hecho de que la distribuci´ on de probabilidad de una variable aleatoria es una funci´ on de conjunto se resuelve mediante el uso de

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados