# Procedural Programming Example

This function illustrates many of Analytica's key constructs for procedural programming. It computes the prime factors of an integer «x»:

Here's more detail on the numbered procedural features in this function:

1. VAR x := e defines a local identifier x and sets its value to the result of evaluating expression e. See Defining a Local Value.
2. Expressions (statements) in a sequence should be separated by “;” (semicolons). The expressions can be on the same line, successive lines, or may be broken over multiple lines. Newlines are just for clarity and have no effect on the syntax. See Begin-End for Grouping Expressions.
3. WHILE test DO body tests condition est, and, if True, evaluates Body, and repeats until Test is False. See While(Test) Do Body.
4. One way to group a sequence of expressions separated by semicolons “;” is to enclose them as BEGIN e1; e2; … END— in this case as the body of a While loop. See Begin-End for Grouping Expressions.
5. Another way to group a sequence of expressions is to enclose them between parentheses(e1; e2; …) — in this case, as the action to be taken in the Then case. See Begin-End for Grouping Expressions.
6. x := e assigns the value of expression e to a local value x or, as in the first case, to a parameter of a function. See Assigning to a local value.
7. The value returned from a sequence of expressions, in this case the Definition of the Function, is the value of the last expression. Here the function Factors returns the final expression, which is simple the local value result.