28 | Pruebas y condicionales |
¿Es 2+2 igual a 4? Se le pregunta a Wolfram Language.
Compruebe si 2+2 es igual a 4:
No es de sorprender que al comprobar si 2+2 es igual a 4, el resultado sea
True (que significa verdadero en ingl
és).
Puede comprobarse tambi
én si 2
×2 es mayor que 5. Para ese prop
ósito se usa
>.
Compruebe si 2
×2 es mayor que 5:
La funci
ón
If permite elegir un resultado cuando una comprobaci
ón da
True, y otro cuando da
False.
Puesto que la comprobaci
ón da
True, el resultado del
If es
x:
Si se usa una funci
ón pura con
/@, puede aplicarse un
If a cada elemento de una lista.
Si un elemento es menor que 4, hacerlo x, de lo contrario hacerlo y:
Puede hacerse la comprobaci
ón para menor o igual usando
≤, lo que se escribe como
<=.
Si un elemento es menor o igual a 4, hágalo x; de lo contrario, hágalo y:
En lo que sigue, un elemento se hace x solo si es igual a 4:
Puede hacerse la comprobaci
ón de que dos cosas no sean iguales usando
≠, lo que se escribe como
!=.
Si un elemento no es igual a 4, hacerlo x; de lo contrario, hacerlo y:
A veces es
útil seleccionar aquellos elementos de una lista que satisfagan un criterio. Esto se hace usando
Select, estableciendo dicha comprobaci
ón en t
érminos de una funci
ón pura.
Seleccione los elementos de la lista que sean mayores que 3:
Seleccione los elementos que estén entre 2 y 5:
Adem
ás de las comparaciones de tama
ño tales como
<,
> y
==, Wolfram Language incluye muchos otros tipos de pruebas. Algunos ejemplos son
EvenQ y
OddQ, que comprueban si un n
úmero es par o impar. (La
“Q” indica que una funci
ón est
á formulando una pregunta).
4 es un número par:
Seleccione de la lista los números pares:
En este caso no es necesario que la función pura se haga explícita:
IntegerQ comprueba si algo es un entero;
PrimeQ comprueba si un n
úmero es primo.
Seleccione los números primos:
A veces se necesita combinar comprobaciones.
&& representa
“y
”,
|| representa
“o
” y
! representa
“no
”.
Seleccione los elementos de la lista que sean a la vez pares y mayores que 2:
Seleccione los elementos que sean pares o mayores que 4:
Seleccione los elementos que no sean pares o mayores que 4:
Hay muchas otras
“funciones Q
” que formulan preguntas sobre diversos tipos de cosas.
LetterQ comprueba si una cadena de caracteres est
á compuesta solo de letras.
El espacio entre letras no es una letra, ni tampoco lo es “!”:
Convierta una cadena en una lista de caracteres, y compruebe cu
áles de ellos son letras:
Seleccione los caracteres que sean letras:
Seleccione las letras que est
én despu
és de la posici
ón 10 en el alfabeto ingl
és:
Puede usarse
Select para encontrar palabras en ingl
és que sean
palíndromos, esto es, que se lean igual si se invierte el orden de sus letras.
MemberQ comprueba si alguna cosa aparece como un elemento de una lista o est
á contenido en ella.
5 aparece en la lista {1, 3, 5, 7}:
Seleccione los números entre 1 y 100 cuyas secuencias de dígitos contengan el 2:
ImageInstanceQ es una comprobaci
ón basada en el aprendizaje autom
ático que comprueba si una imagen es un caso de alg
ún tipo particular de algo como, por ejemplo, un gato.
Compruebe si una imagen es la de un gato:
Seleccione las imágenes que sean de gatos:
He aqu
í un ejemplo geogr
áfico de
Select: encuentre cu
áles de las ciudades en una lista se ubican a menos de 3
000 millas de San Francisco.
Seleccione las ciudades cuya distancia a San Francisco sea menor de 3 000 millas:
ab | | comprueba igualdad |
a<b | | comprueba si es menor que |
a>b | | comprueba si es mayor que |
a≤b | | comprueba si es menor o igual |
a≥b | | comprueba si es mayor o igual |
If[test,u,v] | | obtiene el resultado u si test es True y v si es False |
Select[lista,f] | | selecciona los elementos que satisfacen un criterio |
EvenQ[x] | | comprueba si es par |
OddQ[x] | | comprueba si es impar |
IntegerQ[x] | | comprueba si es un entero |
PrimeQ[x] | | comprueba si es un número primo |
LetterQ[cadena] | | comprueba si solo son letras |
MemberQ[lista,x] | | comprueba si x está contenido en lista |
ImageInstanceQ[imagen,categoría] | | comprueba si imagen es un caso de categoría |
28.1Compruebe si 123^321 es mayor que 456^123.
»
28.2Obtenga una lista de los n
úmeros hasta el 100 cuyos d
ígitos sumen menos de 5.
»
28.3Haga una lista de los 20 primeros enteros, coloreando con rojo los que sean primos.
»
28.4Encuentre las palabras en
WordList[ ] que comiencen y terminen con la letra
“p
”.
»
28.5Haga una lista de los 100 primeros primos, conservando aquellos cuyo
último d
ígito sea menor que 3.
»
28.6Encuentre los n
úmeros romanos hasta el 100 que no contengan
“I
”.
»
28.7Obtenga la lista de los n
úmeros romanos hasta el 1000 que sean pal
índromos.
»
28.8Encuentre los nombres en ingl
és de los enteros hasta el 100 que comiencen y terminen con la misma letra.
»
28.9Obtenga la lista de las palabras en el art
ículo de Wikipedia
“words
”, cuyo n
úmero de caracteres sea mayor de 15.
»
28.10A partir de 1000, divida entre 2 si el n
úmero es par y, en caso contrario, calcule
3#+1& ; repita esto 200 veces (
problema de Collatz).
»
28.11Cree la nube de las palabras que tengan 5 letras en el art
ículo de Wikipedia sobre
“computers
”.
»
28.12Encuentre las palabras en
WordList[ ] cuyas 3 primeras letras sean las mismas que sus 3
últimas en orden inverso, pero tales que la cadena completa de sus caracteres no sea un pal
índromo.
»
28.13Encuentre las palabras de 10 letras en
WordList[ ] donde el total de los valores obtenidos con
LetterNumber sea 100.
»
+28.1Haga una lista de los enteros hasta el 25, donde cada entero que termine en 3 se reemplace por 0.
»
+28.2Use
Table e
If para hacer un arreglo de 5
×5 que tenga 1 en su diagonal principal, y 0 fuera de ah
í.
»
+28.3Haga una lista de los n
úmeros hasta el 1000 que sean a la vez iguales a 1 mod 7 y a 1 mod 8.
»
+28.4Haga una lista de los n
úmeros hasta el 100, en la que los m
últiplos de 3 se reemplacen por
Black, los que sean m
últiplos de 5 se reemplacen por
White y los que sean a la vez m
últiplos de 3 y de 5 se reemplacen por
Red.
»
+28.5Use
Select para obtener la lista de los planetas cuya masa sea mayor que la de la Tierra.
»
+28.6Haga un gr
áfico de arreglo 50
×50 donde haya un cuadrado negro en la posici
ón
i, j si
Mod[i, j]==0.
»
+28.7Haga un gr
áfico de arreglo de 100
×100, donde un cuadrado sea negro si los dos valores de sus posiciones
x y
y no contienen un 5.
»
¿Por qu
é la igualdad se comprueba con
== y no con
=?
Porque en Wolfram Language = significa otra cosa. Si por error se usa = en vez de
, se obtendr
án resultados muy extra
ños. (
= es para asignar valores a variables.) Para evitar posibles confusiones, suele leerse
== como
“doble signo de igual
”.
¿Por qu
é “and
” se escribe como
&&, y no como
&?
Porque
& significa otra cosa en Wolfram Language. Por ejemplo, se usa para indicar d
ónde termina una funci
ón pura.
¿C
ómo se interpretan
==,
>,
&&, etc. ?
¿En qu
é casos se requiere usar par
éntesis al usar
&&,
||, etc.?
Hay un orden en las operaciones que es directamente an
álogo al de la aritm
ética.
&& es como
×,
|| es como
+, y
! es como
−. Entonces,
!p&&q significa
“(no
p) y
q”;
!(p&&q) significa
“no (
p y
q)
”.
¿Qu
é tienen de especial las funciones
“Q”?
Hacen una pregunta que normalmente tiene como respuesta
True o
False.
¿Qu
é otras funciones
“Q
” existen?
¿Hay alguna forma mejor que
Select para encontrar entidades del mundo real que tengan alguna propiedad dada?
S
í. Se pueden hacer cosas como
Entity["Country", "Population"GreaterThan[]] para encontrar
“entidades impl
ícitas
”, y usar luego
EntityList para obtener listas expl
ícitas de entidades.
- True y False se llaman típicamente booleanos en las ciencias de la computación (por George Boole, a mediados de los años 1800s). Las expresiones con &&, ||, etc. se suelen llamar expresiones booleanas.
- En Wolfram Language, True y False son símbolos, y no están representadas por 1 y 0, como sucede en muchos otros lenguajes de computación.
- If se suele llamar una condicional. En If[test, then, else], el then y else no se calculan a menos que test diga que la condición se cumple.
- PalindromeQ prueba directamente si una cadena de caracteres forma un palíndromo.
- En Wolfram Language, x es un símbolo (ver la Sección 33) que puede representar cualquier cosa, así que x==1 es simplemente una ecuación, que no es inmediatamente True o False. x===1 (“triple igual”) prueba si x es “lo mismo” que 1, y puesto que no lo es, da False.