7.1: Condicionales
- Page ID
- 81991
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)C utiliza una construcción if/else bastante estándar para condicionales básicos. Pueden ser anidadas y cada porción puede constar de varias declaraciones. La condición en sí puede tener múltiples elementos y estar formada en lógica positiva o negativa. El constructo básico es:
if( test condition(s)... ) { //...do stuff... }
La porción else es opcional y se ve así:
if( test condition(s).. ) { //...do stuff... } else { //...do other stuff... }
Si solo hay una sola sentencia en el bloque (es decir, entre las llaves), las llaves pueden eliminarse si se desea:
if( test condition(s).. ) //...single statement... else //...do other statement...
La condición de prueba puede verificar numerosas posibilidades. Los operadores son:
== | igualdad |
! = | desigualdad |
> | mayor que |
< | menos de |
>= | mayor o igual a |
<= | menor o igual a |
Es muy importante señalar que la igualdad utiliza un doble signo igual. Un solo signo igual es una operación de asignación. No pienses “igual”, piensa “igual que”, con un símbolo por cada palabra. También puede usar operadores booleanos (lógicos), como se muestra en Tabla\(\PageIndex{2}\).
|| | O |
&& | Y |
! | NO |
Tenga en cuenta que los operadores lógicos no se comportan igual que los operadores bitwise de nombre similar. Por ejemplo, un AND lógico devuelve VERDADERO si sus dos argumentos son distintos de cero, no necesariamente los mismos bits. Eso es 1 y 2
rinde 0
, pero 1 && 2
rinde VERDADERO. TRUE se toma como cualquier valor distinto de cero. Cualquier variable o expresión que se evalúe a un valor distinto de cero es lógicamente TRUE. Si el resultado es cero, entonces es lógicamente FALSO. Tiempo para algunos ejemplos. El condicional se escribe como un fragmento con una explicación siguiente:
if( a==6 ) /* taken only if the variable a is a 6 */ if( b!=7 ) /* taken as long as the variable b isn’t 7 */ if( (a==6) && (b!=7) ) /* taken as long as a is 6 and b is something other than 7 */ if( (a==6) || (b!=7) ) /* taken as long as a is 6 or b is something other than 7 */ if( a==0 ) /* taken if a is zero */ if( !a ) /* another way of saying taken if a is zero */ if( a!=0 ) /* taken if a is not zero */ if( a ) /* another way of saying taken if a is not zero */
Cómo se dice algo depende de usted. Los siguientes dos fragmentos de código son equivalentes:
if( a==b ) do_x(); else do_y(); if( a!=b ) do_y(); else do_x();
Es muy común que los nuevos programadores usen =
cuando quieran ==
. Esto puede tener resultados desastrosos. Considere el siguiente fragmento de código:
if( a=b )
¿Qué hace esto? A primera vista, podrías pensar que prueba para ver si a
y b
son iguales. ¡No hace nada de eso! En cambio, asigna el valor de b
a a
y luego verifica si ese valor no es cero. En otras palabras, hace esto:
a=b; if( a )
Un truco para ayudarte con esto, al menos con constantes, es revertir el orden normal. En lugar de escribir if (a==6)
, use if (6==a)
. De esta manera, si accidentalmente usas un solo signo igual, el compilador generará un error de sintaxis.