Functions take a set of argument values and return a value result.
The argument list is just a set of variable declarations which are given initial values when the function is called. The function has a local variable total which exists only while the function is being executed. The local variables and parameters of a function have names that are visible only within the function body. At the end of the scope of the new variable the original definition is valid again. These names override any use of the same names used elsewhere in the program.