# Special Forms of Assignment

Particularly when you write procedural programs in *Mathematica*, you will often need to modify the value of a particular variable repeatedly. You can always do this by constructing the new value and explicitly performing an assignment such as . *Mathematica*, however, provides special notations for incrementing the values of variables, and for some other common cases.

i++ | increment the value of i by |

i-- | decrement i |

++i | pre-increment i |

--i | pre-decrement i |

i+=di | add di to the value of i |

i-=di | subtract di from i |

x*=c | multiply x by c |

x/=c | divide x by c |

Modifying values of variables.

This assigns the value

to the variable

.

Out[1]= | |

This increments the value of

by

.

Out[2]= | |

The value of

has been modified.

Out[3]= | |

This sets

to

, multiplies its value by

, then gives the final value of

.

Out[4]= | |

The value of

is the value of

*before* the increment is done.

The value of

is the value of

*after* the increment.

x=y=value | assign the same value to both x and y |

{x,y}={value_{1},value_{2}} | assign different values to x and y |

{x,y}={y,x} | interchange the values of x and y |

Assigning values to several variables at a time.

This assigns the value

to

and

to

.

Out[7]= | |

This interchanges the values of

and

.

Out[8]= | |

Now

has value

.

Out[9]= | |

And

has value

.

Out[10]= | |

You can use assignments to lists to permute values of variables in any way.

Out[11]= | |

When you write programs in *Mathematica*, you will sometimes find it convenient to take a list, and successively add elements to it. You can do this using the functions PrependTo and AppendTo.

PrependTo[v,elem] | prepend elem to the value of v |

AppendTo[v,elem] | append elem |

v={v,elem} | make a nested list containing elem |

Assignments for modifying lists.

This assigns the value of

to be the list

.

Out[12]= | |

This appends the element

to the value of

.

Out[13]= | |

Now the value of

has been modified.

Out[14]= | |

Although AppendTo[v, elem] is always equivalent to v=Append[v, elem], it is often a convenient notation. However, you should realize that because of the way *Mathematica* stores lists, it is usually less efficient to add a sequence of elements to a particular list than to create a nested structure that consists, for example, of lists of length 2 at each level. When you have built up such a structure, you can always reduce it to a single list using Flatten.

This sets up a nested list structure for

.

Out[15]= | |

You can use

Flatten to unravel the structure.

Out[16]= | |