Assignment (computer science)

From Wikipedia, the free encyclopedia

(Redirected from Assignment (programming))
Jump to: navigation, search

In computer science the assignment statement sets or re-sets the value stored in the storage location(s) denoted by a variable name. In most imperative computer programming languages the assignment statement is one of the basic statements.

The assignment statement often allows that the same variable name to contain different values at different times during program execution.

Contents

Common textual representations of the assignment include an equals sign (“=”) and “:=”. These two forms are typical of programming languages, such as C), that classify assignment as an infix operator.

variable = expression Fortran, C, Java, Windows PowerShell, …
variable := expression ALGOL, Pascal, Ada, Dylan, …

Other possibilities include a left arrow or a keyword.

variable <- expression Objective Caml, S, R, ...
variableexpression APL
MOVE expression TO variable COBOL
set variable to expression AppleScript

Some expression-oriented languages, such as Lisp and Tcl, uniformly use functional syntax for all statements, including assignment.

(setq variable expression) Lisp, Scheme (set!), …
set variable expression Tcl

Semantically, an assignment operation modifies the current state of the executing program. Consequently, assignment is dependent on the concept of variables. In an assignment:

  • The expression is evaluated in the current state of the program.
  • The variable is assigned the computed value, replacing the prior value of that variable.

Example: Assuming that a is a numeric variable, the assignment a := 2*a means that the content of the variable a is doubled after the execution of the statement.

An example segment of C code:

int x = 10; 
   float y;
   x = 23;
   y = 32.4;

In this sample, the variable x is first declared as an int, and is then assigned the value of 10. Notice that the declaration and assignment occur in the same statement. In the second line, y is declared without an assignment. In the third line, x is reassigned the value of 23. Finally, y is assigned the value of 32.4.

For an assignment operation, it is necessary that the value of the expression is well-defined (it is a valid rvalue) and that the variable represent a modifiable entity (it is a valid modifiable (non-const) lvalue). In some languages, such as Perl, it is not necessary to declare a variable prior to assigning it a value.

Some programming languages, such as Python, Perl, Ruby, Windows PowerShell, OCaml and JavaScript (since 1.7), allow several variables to be assigned in parallel. In pseudocode:

a,b := 0,1

Simultaneously assigns 0 to a and 1 to b. More interestingly,

a,b := b,a

Swaps the values of a and b. In languages without parallel assignment, this would have to be written to use a temporary variable

var t := a
a := b
b := t

since a:=b ; b:=a leaves both a and b with the original value of b.

In most expression-oriented programming languages, the assignment statement returns the assigned value, allowing such idioms as x = y = a, which assigns the value of a to both x and y, and while (f = read()) {}, which uses the return value of a function to control a loop while assigning that same value to a variable.

In other programming languages, the return value of an assignment is undefined and such idioms are invalid. Examples are Scheme and Haskell.

Main article: single assignment

In functional programming, assignment is discouraged in favor of single assignment, also called name binding. Single assignment differs from assignment as described in this article in that it can only be made once; no subsequent re-assignment is allowed. Once created by single assignment, named values are not variables but immutable objects.

Single assignment is the only form of assignment available in purely functional languages, such as Haskell, which do not have variables in the sense of imperative programming languages. Impure functional languages provide both single assignment as well as true assignment (though true assignment is used with less frequency than in imperative programming languages). For example, Objective Caml provides single assignment by a let name = value syntax; true assignment is provided by a separate <- operator, which can only be used on a variable that has been declared mutable (meaning capable of being changed after its initial declaration) by the programmer.

Beginning programmers sometimes confuse assignment with the relational operator for equality, as "=" means equality in mathematics, and is used for assignment in many languages. But assignment alters the value of a variable, while equality testing tests whether two expressions have the same value.

In many languages, the assignment operator is a single equals sign ("=") while the equivalence operator is a pair of equals signs ("=="); in some languages, such as BASIC, a single equals sign is used for both, with context determining which is meant.

This can lead to errors if the programmer forgets which form (=, ==, :=) is appropriate (or mistypes = when == was intended). This is a common programming problem with languages such as C, where the assignment operator also returns the value assigned, and can be validly nested inside expressions (in the same way that a function returns a value). If the intention was to compare two values in an if statement, for instance, an assignment is quite likely to return a value interpretable as TRUE, in which case the then clause will be executed, leading the program to behave unexpectedly. Some language processors can detect such situations, and warn the programmer of the potential error.

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.