An Elementary Introduction to the Wolfram Language
38Asignación de nombres a cosas
Con frecuencia, en Wolfram Language conviene usar % para referirse al resultado más reciente que se haya obtenido, principalmente cuando se está en una etapa inicial de la resolución de algún problema.
Efectúe un cómputo sencillo:
In[1]:=
Click for copyable input
Out[1]=
% presenta el resultado del último cómputo:
In[2]:=
Click for copyable input
Out[2]=
Esto eleva al cuadrado el resultado más reciente:
In[3]:=
Click for copyable input
Out[3]=
Asigne thing como nombre del resultado de Range[10]:
In[4]:=
Click for copyable input
Out[4]=
Cada vez que surja la palabra thing, se sustituirá por el resultado de Range[10]:
In[5]:=
Click for copyable input
Out[5]=
Eleve al cuadrado el valor de thing:
In[6]:=
Click for copyable input
Out[6]=
Asigne un nombre a la lista de un millón de elementos, pero sin mostrar la lista:
In[7]:=
Click for copyable input
In[8]:=
Click for copyable input
Out[8]=
Al asignar un nombre a alguna cosa, dicho nombre sigue vigente hasta que se borre explícitamente.
Asigne x al valor 42:
In[9]:=
Click for copyable input
Out[9]=
En lo que sigue, podría pensarse que el resultado sería {x, y, z}, pero x tiene el valor 42:
In[10]:=
Click for copyable input
Out[10]=
Borre cualquier asignación que se haya hecho a x:
In[11]:=
Click for copyable input
Así, x no se sustituye, tal como sucede con y y z:
In[12]:=
Click for copyable input
Out[12]=
In[13]:=
Click for copyable input
Out[13]=
x no tiene asignado ningún valor fuera del módulo:
In[14]:=
Click for copyable input
Out[14]=
Defina las variables locales x y n, y calcular x^n usando los valores que se les haya asignado:
In[15]:=
Click for copyable input
Out[15]=
Para especificar secuencias de acciones en Wolfram Language simplemente se separan con un punto y coma (;). (El poner un punto y coma al final es equivalente a especificar una acción vacía, lo que tiene por efecto que el resultado no se muestre en la pantalla).
Realice una secuencia de operaciones; el resultado es lo producido por la última operación:
In[16]:=
Click for copyable input
Out[16]=
En el ejemplo anterior se definieron valores globales para x e y; no hay que olvidarse de borrarlas:
In[17]:=
Click for copyable input
Dentro de Module se pueden usar signos de punto y coma para realizar secuencias de operaciones.
Lo siguiente realiza una secuencia de operaciones, mientras se mantiene a x y y como variables locales:
In[18]:=
Click for copyable input
Out[18]=
Pueden mezclarse variables locales que tengan valores iniciales con otras que no los tengan:
In[19]:=
Click for copyable input
Out[19]=
% el resultado más reciente que se haya obtenido
x=valor asigna un valor
Clear[x] borra un valor
Module[{x=valor}, ...] establece una variable temporal
expr; realiza una labor de cómputo, sin mostrar el resultado al final
expr1; expr2; ... efectúa una secuencia de procesos de cómputo
38.1Use Module para calcular x^2+x donde x es Range[10]»
Salida esperada:
Out[]=
38.2Use Module para generar una lista de 10 enteros aleatorios hasta el 100, y cree una columna con la lista original más los resultados de aplicarle Sort, Max y Total»
Muestra de salida esperada:
Out[]=
38.3Use Module para generar un collage de imágenes con la foto de una jirafa, más los resultados de aplicarle Blur, EdgeDetect y ColorNegate»
Muestra de salida esperada:
Out[]=
38.4Dentro de un Module, sea r=Range[10], y entonces obtenga una gráfica con los puntos unidos de r juntado con el reverso de r juntado con r y juntado con r en orden inverso. »
Salida esperada:
Out[]=
38.5Encuentre una forma más simple de {Range[10]+1, Range[10]-1, Reverse[Range[10]]}»
Salida esperada:
Out[]=
38.6Encuentre una forma más simple de Module[{u=10}, Join[{u}, Table[u=Mod[17u+2, 11], 20]]]»
Salida esperada:
Out[]=
38.7Genere 10 cadenas de caracteres aleatorios que consten de 5 letras, donde las consonantes estén alternadas con las vocales (aeiou). »
Muestra de salida esperada:
Out[]=
Habiendo llegado a la Sección 38, ¿cómo es que apenas hasta ahora se introducen las asignaciones de variables?
Porque, como se ha visto, en Wolfram Language se puede llegar muy lejos sin necesidad de introducirlas. Además, un programa sin asignaciones resulta mucho más limpio.
Puede asignarse un nombre a cualquier cosa?
Sí. Ya sean gráficas, arreglos, imágenes, funciones puras, lo que sea.
x igual a 4, o, menos frecuentemente, asignar x a 4, o dar a x el valor 4.
Use nombres específicos y explícitos. No hay que preocuparse de que sean demasiado largos; se autocompletarán al escribirlos. Para nombres informales, iniciarlos con letras minúsculas. En el caso de nombres pensados cuidadosamente, podrían usarse iniciales mayúsculas, como en las funciones nativas.
% se refiere al resultado anterior. Y, ¿en el caso del penúltimo y los que están antes?
%% da el penúltimo, %%% da el antepenúltimo, etc. %n da el resultado en la línea n (esto es, el resultado con etiqueta Out[n]).
Sí. x=y=6 asigna a x y a y el 6. {x, y}={3, 4} asigna x a 3 y y a 4. {x, y}={y, x} intercambia los valores de x y y.
¿Qué sucede si se escapa una variable de un Module sin que le haya sido asignado un valor?
¡Inténtelo! Verá que hay una nueva variable a la que se le ha dado un nombre único.
¿Y qué hay con otras instrucciones de la programación procedimental, tales como Do y For?
También existen en Wolfram Language. A veces puede ser útil utilizar Do, especialmente cuando hay efectos secundarios, tales como la asignación de variables o la exportación de datos. Casi siempre, For es una mala idea y puede sustituirse por código mucho más limpio usando funciones como Table.
 
Download Notebook Version
en