Vous êtes sur la page 1sur 13

SELECCIN

Estatutos de Control C#

IF Condicin THEN Estatuto1 ELSE Estatuto2

Estatutos de Decisin (Seleccin)


true

Estatuto1

Statement
Condicin
Antes de ver esta presentacin:
Lee el Captulo correspondiente a Decisiones, en tu libro de texto.

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

...
false

Estatuto2

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Para representar estas condiciones:


Tipo de dato boolean

C# tiene el tipo de dato bool, primitivo, que

puede tomar los valores verdadero (true) y


falso (false).

true y false son palabras reservadas.

Expresiones Boleanas
La combinacin de condiciones las llamamos

expresiones boleanas. Estas son


expresiones que al evaluarse dan como
resultado un valor de verdadero (true) o falso
(false).

Es posible declarar variables de tipo boleano

de la siguiente forma:

Una expresin boleana se forma utilizando

operadores relacionales o lgicos.


bool nombre_var;
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Representacin Grfica de las


decisiones:
false

Estatuto condicional if

Eres menor de
edad en EUA

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

El estatuto if
La condicin es una
expresin booleana (true/false)

if (condicin)
estatuto;
else
estatuto;

true

edad >=
21 ?

Eres mayor de
edad en EUA

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

El estatuto if:
if (condicin)
{
bloque de estatutos
}
else
{
bloque de estatutos

Si se requiere poner
ms de un estatuto, los
estatutos se deben
encerrar entre llaves

El else es opcional

* La parte del else es opcional


Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Ejemplos:

Ejemplos:

if (num < 0)
Console.WriteLine(El nmero es negativo);

num<0 ?

false

num<0 ?

nm es negativo

El nmero es
negativo

num =
Math.Abs(num)

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Ejemplos:

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Ejemplo con if anidados:

if (num<0)
Console.WriteLine(El nmero es negativo);
else
Console.WriteLine(El nmero es positivo o cero);

El nmero es
negativo

false

true

true

true

if (num < 0)
{
Console.WriteLine(nm es negativo, calcular su valor absoluto);
num = Math.Abs(num);
}

num<0 ?

Cuando adentro de una condicin if tenemos otro if, se


dice que tenemos ifs anidados, o condiciones anidadas.

false

El nmero es
positivo o cero

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

if (num<0)
Console.WriteLine(El nmero es negativo);
else if (num = = 0)
Console.WriteLine( El nmero es cero);
else
Console.WriteLine ( El nmero es positivo);
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Operadores Relacionales

Operadores Relacionales

Operador

Significado

==
!=
<
>
<=
>=

Igual

Ejemplos de expresiones que utilizan operadores relacionales:

ExpresinA

ExpresinB

Diferente
Menor que
Mayor que
Menor o igual que
Mayor o igual que

temperatura
B*B - 4.0*A*C
uno + dos
dos * tres
numero
inicial

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Suponiendo que x,y fueron declaradas e inicializadas:


int x, y;
x = 4; y = 6;
EXPRESION

VALOR

x < y

true

x + 2 < y

false

x != y

true

x + 3 >= y

true

y == x

false

y == x+2

true
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

>
>=
<
<=
==
!=

humedad
0.0
0
cuatro
35
J

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Ejemplos de expresiones que utilizan operadores


relacionales:

comparacin !!

Operador

Operadores Lgicos
Operador
&&
||
!

Significado
And
Or
Not

Sus operandos deben ser expresiones boleanas

y = x+2
asignacin !!

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Operadores Lgicos
AND

OR

Operadores lgicos
NOT
C#

X
T
T
F
F

Y X && Y
T
T
F
F
T
F
F
F

X
T
T
F
F

Y__X | | Y
T
T
F
T
T
T
F
F

X
T
F

!X
F
T

Expresin Lgica

!p

NOT p

p && q

p || q

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Ejemplos:
Expresin para saber si un nmero A es igual a un

nmero B
A==B
Expresin para saber si un nmero A es par
(A % 2) = = 0
Expresin para saber si 3 nmeros son iguales
( A = = B) && ( B = = C)
(A == B == C) No !
Cmo sera la expresin para saber si 2 nmeros
tienen el mismo signo?
_______________________
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Significado
es false si p es true
! p es true si p es false

p AND q

p && q es true si
ambos p y q son true.
En caso contrario es false.

p OR q

p || q es true si cualquiera
p o q o ambos son true.
En caso contrario es false

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Ejemplos:
Expresin para saber si un nmero A est en el rango

[0, 100] (incluyendo los valores 0 y 100)


(A >= 0) && (A <= 100)
Expresin para saber si un nmero A est fuera del

rango (0, 100)


(A < 0) | | (A > 100)

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Cul es el valor de cada expresin?


100
califa

-13
numero

edad = 21;
puntos = 500.0;
esMayor = (edad >= 21);
// esMayor es ?
sabeIngles = (puntos > 550.0); // sabeIngles es ?

27
hora

(califa >= 60)

(numero > 0)

(hora >= 0 && hora < 24)

(hora == 12 || hora == 0)

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

int edad;
boolean esMayor, sabeIngles;
double puntos;

EXPRESION
esMayor && sabeIngles
esMayor || sabeIngles
!esMayor
!sabeIngles
esMayor && (puntos > 550)

VALOR
?
?
?
?
?

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Cul es el valor de la expresin?

Caso de programacin
A un vendedor se le da una comisin sobre su

int
edad, peso;
edad = 25;
peso = 70;

EXPRESION

VALOR

!(edad < 10)

!(peso > 60)

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

venta, pero adems, se le otorga un bono de 200


pesos de recompensa si su venta fue mayor a 15
mil pesos.
Para hacer esta aplicacin desarrolla un mtodo
de tipo double llamado CalculaComision, que
recibe como parmetros las ventas y el
porcentaje de comisin.
Considera las ventas como double y el
porcentaje como entero.

Fundamentos de programacin C#. Romn Mtz.

Puedo hacer que mi programa tome


decisiones?

Evaluacin de Corto circuito


Evaluacin de Corto circuito: significa que las expresiones

lgicas son evaluadas de izquierda a derecha, y la evaluacin


se detiene tan pronto como se pueda determinar el valor final
de la expresin completa. Esto es:

Cuando se evala el operador &&, si el primer operando es

falso, el segundo nunca se evala.

Cuando se evala el operador ||, si el primer operando es

verdadero, el segundo nunca se evala.

Se ahorra tiempo en la evaluacin de expresiones complejas

usando los operadores || y &&

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Fundamentos de programacin C#. Romn Mtz.

Ejemplo de Corto circuito

Ejemplo de Corto circuito

int edad, altura;

int edad, altura;

edad = 25;
altura = 70;

edad = 25;
altura = 70;

EXPRESIN
(edad > 50) && (altura > 60)
false
La evaluacin se puede detener en la primera condicin porque
el resultado del && es verdadero solo si ambos lados son
verdaderos; con esto se puede determinar que toda la expresin
es falsa.
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

EXPRESIN
(altura > 60) || (edad > 40)
true
La evaluacin se puede detener en la primera condicin porque
el resultado del || es verdadero si uno de los 2 lados es
verdadero; con esto se puede afirmar que toda la expresin es
verdadera.
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Otro ejemplo:

Otro ejemplo:

int edad, peso;

int edad, altura;

edad = 25;
peso = 145;

edad = 25;
altura = 70;

EXPRESIN
(peso < 180) && (edad >= 20)
true

Debe ser evaluada toda la expresin ya que el valor final de esta


expresin no se conoce hasta evaluar la segunda parte. Por
qu? Porque el resultado de && es true si y solo si ambas
condiciones son true.

EXPRESIN
!(altura > 60)||(edad > 50)
true
false

Necesita ser evaluada esta parte?

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Escribe la expresin segn corresponda:


impuesto mayor a 25% e ingreso menor a $20000
temperatura menor o igual que 75 o humedad

menor que 70%

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Solucin
(impuesto > .25) && (ingreso < 20000)
(temperatura <= 75) || (humedad < .70)
(edad > 21) && (edad < 60)

edad mayor de 21 y edad menor que 60


edad es 21 o 22

(edad == 21) || (edad == 22)


(tipo ==

a || tipo == b || tipo == c)

tipo de cliente es a, b, c
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Jerarqua de operadores
1. parntesis
2. !, ++, - -, + (positivo), - (negativo)
3. *, /, %
4. +, 5. < , < =, >, >=
6. ==, !=
7. &&
8. ||
9. =, +=, -=, *=, /=, %=
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Ejemplo que requiere reglas de precedencia


int num;
double x;

num != 0 && x < 1 / num

/
<
!=
&&

mayor prioridad
siguiente prioridad
despus
finalmente

Qu pasa si num tiene valor 0?


Run Time Error (Divisin entre cero) !!
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

El mismo ejemplo:
int num;
double x;

(num != 0) && (x < 1/ num)

Condiciones mltiples

se evalua primero y si num == 0, su valor es false

Ya que el operador es &&, la expresin completa ser


false; debido al corto circuito la parte derecha de la
expresin no ser evaluada.
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Cul es ms eficiente ?
Discusin en el aula.

Tema: Decisiones
if (dia == 1)

if (dia == 1)

Console.WriteLine(Lunes);

Console.WriteLine(Lunes);

else if (dia == 2)

if (dia == 2)
Console.WriteLine(Martes);

Console.WriteLine(Martes);
else if (dia == 3)

if (dia== 3)
Console.WriteLine(Miercoles);

Console.WriteLine(Miercoles);
else if (dia == 4)

if (dia == 4)
Console.WriteLine(Jueves);

Console.WriteLine(Jueves);
else if (dia == 5)

if (dia == 5)
Console.WriteLine(Viernes);

Console.WriteLine(Viernes);

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Estatuto switch
Formato:
switch (expresin)
{
case const1:
estatuto1;
break;
...
case constN:
estatuto N;
break;
default:
estatuto M;
}

Estatuto switch
Cuando tenemos una condicin que implicara muchos ifs
anidados, es mejor utilizar una instruccin llamada switch.
Veamos un ejemplo:
Si queremos preguntar si el nmero de da es 1, 2, 3, 4, 5, 6,
7, para desplegar el nombre del da segn corresponda: lunes,
martes, mircoles... Utilzando ifs la solucin sera:
if (dia = = 1)
Console.WriteLine(lunes);
else if (dia = = 2)
Console.WriteLine(martes);
else if (dia = = 3)
Console.WriteLine(miercoles);
else if (dia = = 4)
y as sucesivamente.....
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Estatuto switch:
La expresin debe ser
de tipo int, char o string

switch (dia) {
break;
break;
case 3: Console.WriteLine(Miercoles); break;
case 4: Console.WriteLine(Jueves); break;
case 5: Console.WriteLine(Viernes); break;
case 6: Console.WriteLine(Sabado); break;
case 7: Console.WriteLine(Domingo); break;
case 1: Console.WriteLine(Lunes);

case 2: Console.WriteLine(Martes);

El default es opcional

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

}
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Control de la ejecucin al utilizar Switch:


El control de la ejecucin salta al estatuto que sigue

despus del case, que coincide con el valor de la


Expresin entera.
El control de la ejecucin contina hacia todos los
estatutos siguientes, incluyndose el default, a
menos que se redireccione por medio de un break.
Si ningn case coincide con el valor, el control de la
ejecucin pasa al default, si es que lo hay; de lo
contrario el control pasa al siguiente estatuto
despus del switch.
Cuidado: Olvidar el break puede causar errores de
lgica !!

Estatuto Break
El break puede ser utilizado dentro del switch o

cualquier estructura de control.


El break ocasiona una salida inmediata del switch,

while, do, o for en el cual aparece.


Si el break est dentro de estructuras anidadas, el

control de la ejecucin sale solamente de la


estructura que se encuentra ms adentro.

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Operador Condicional (Ternario)

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Sintaxis

Operador Condicional (Ternario)

// encontrar el menor de 2 nmeros:


Expresion1 ? Expresion2 : Expresion3

Cmo funciona:
Si Expresion1 es true, entonces el valor de la expresin es
Expression2. De lo contrario, el valor de la expresin ser
Expresion3.

double min;
double x;
double y;
.

min = (x < y) ? x : y;
Ejemplo . . .
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Resumen de Sintaxis:
El primer tipo de if es el siguiente:

if (condition)
statement;

o bien
if (condition) {
statement1;
statement2;
}

Resumen de Sintaxis: if
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Resumen de Sintaxis:

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Resumen de Sintaxis:
Debes ser cuidadoso al usar el if:

El segundo tipo de if es el siguiente:


if (condition)
statementA;
else
statementB;

o bien
if (condition) {
statement1;
statement2:
}
else {
statement3;
statement4;
}
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

La

condicin debe estar dentro de parntesis.


del if, si se tienen varios estatutos, estos
deben estar entre { }
Todos los enunciados dentro del if deben ser
seguidos por un punto y coma.
El switch tiene una gramtica complicada y debe
ser usado cuidadosamente.
Dentro

Fundamentos de Programacin. TC1014.


Ing. Jakeline Marcos Abed

Tips de programacin:
Para checar la condicin no olvides ponerla entre parntesis

como sta:

if (a > b)...
No olvides que la manera de checar la igualdad no es = sino = =

if (a = b)... no compila correctamente,


mientras que
if (a = = b)... si est correcto.
Ahora bien, si lo que quieres es preguntar si una variable est

dentro de un rango [18,25]:

if (a >= 18 && <= 25)... es incorrecto.


if ((a >=18) && (a <= 25))... esto s es
correcto.
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Caso para programar


Realizar una aplicacin en Windows que

sirva para capturar 3 valores, y que


verifique si corresponden a los lados de
un tringulo. En caso de que si, el
programa indicar qu tipo de tringulo
es: EQUILATERO, ISOCELES o
ESCALENO.
Condicin para que 3 valores
correpondan a los lados de un tringulo:
la suma de las longitudes de 2 lados
cualesquiera debe ser mayor a la longitud del
tercer lado. Las longitudes deben de ser
mayores a cero.
Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed

Vous aimerez peut-être aussi