Part B - Computations

A Simple Calculation

Create a computer program to solve a basic programming task

"An application program is a computer program designed to perform a group of coordinated functions, tasks, or activities for the benefit of the user."
(Wikipedia, 2016)

Constant Values | Simple Input | Computation | Simple Output | Exercises



Application programs receive input from the user, convert that input into output and display the output to the user.  The user enters the input through a keyboard or similar device and receives converted output through a monitor or similar device.  Program instructions store the input data in RAM, retrieve that input data from RAM, convert it using the ALU and FPA in the CPU and store the result in RAM as illustrated in the figure below. 

A program that directs these operations consists of both program variables and program instructions that operate on data stored in those variables.

This chapter describes how to write an interactive program for calculating the area of a circle.  The chapter covers the syntax for defining a program constant, accepting the radius from the user, calculating the area, storing the result in a variable and displaying a copy of that result to the user.


Constant Values

Constant values in a program can be numbers, characters, or string literals.  Each constant is of a specific type.  We define the type of a constant, like the type of a variable, when we declare the constant. 

Numeric Constants

We specify the type of a numeric constants by a suffix, if any, on the value itself and possibly a decimal point. 

Type   Suffix  Example
int   1456234
long L or l 75456234L
 long long    LL or ll     75456234678LL  
float F or f 1.234F
double   1.234
 long double  L or l 1.234L

To define a numeric constant in hexadecimal representation, we prefix the value with 0x.

 const int x = 0x5C;  // same as     const int x = 92; 

Example

To define the constant pi (π) to 8 significant digits, we select the float type and write

 int main(void)
 {
         const float pi = 3.14159f; // pi is a constant float 

         // ... completed below

         return 0;
 }

The const keyword qualifies the value stored in in the 'variable' pi as unmodifiable.

Character Constants

All character constants are of char type.  The ways of defining a character constant include:

  • the digit or letter enclosed in single quotes - for example 'A'
  • the decimal value from the collating sequence - for example 65 for 'A' (ASCII)
  • the hexadecimal value from the collating sequence - for example 0x41 for 'A' (ASCII)

The single-quotes form is the preferred form, since it is independent of the collating sequence of the execution environment.

Escape Sequences

Character constants include special actions and symbols.  We define special actions and symbols by escape sequences.  The backslash (\) before each symbol identifies the symbol as part of an escape sequence:

Character   Sequence     ASCII     EBCDIC  
alarm\a747
backspace\b822
form feed\f1212
newline\n1037
  carriage return  \r1313
horizontal tab\t95
vertical tab\v1111
backslash\\92*
single quote\'39125
double quote\"34127
  question mark  \?63111

* - In the IBM reference card, System /370 Architecture Reference Summary, the \ does not have an EBCDIC code.  Its value may vary from machine to machine.

Escape sequences are relatively independent of the execution environment.  Their decimal values however vary with the collating sequence of the execution environment and should be avoided. 

String Literals

A string literal is a sequence of characters enclosed within a pair of double quotes.  For example,

 "This is C\n"

The \n character constant adds a new line to the end of the string.


Simple Input

The scanf(...) instruction accepts data from the user (that is, the standard input device) and stores that data in memory at the address of the specified program variable.  The instruction takes the form

 scanf(format, address);

This statement calls the scanf() procedure, which performs the input operation.  We say that format and address are the arguments in our call to scanf()

format

format is a string literal that describes how to convert the text entered by the user into data stored in memory.  format contains the conversion specifier for translating the input characters.  Conversion specifiers begin with a % symbol and identify the type of the destination variable.  The most common specifiers are listed below. 

  Specifier  Input Text is a  Destination Type
%ccharacter  char
%ddecimal  int, short
%ffloating-point  float
%lffloating-point  double

A more complete table is listed in the chapter entitled Input and Output.

address

address contains the address of the destination variable.  We use the prefix & to refer to the 'address of' of a variable. 

Example (continued)

To accept the radius of the circle, we write

 #include <stdio.h>                   // for printf, scanf

 int main(void)
 {
         const float pi = 3.14159f;   // pi is a constant float 
         float radius;                // radius is a float

         printf("Enter radius : ");   // prompt user for radius input
         scanf("%f", &radius);        // accept radius value from user 

         // ... completed below

         return 0;
 }

The argument in the call to scanf() is the address of radius, not the value of radius

Coding the value radius as the argument is likely to generate a run-time error

         scanf("%f", radius); // *** ERROR possibly SEGMENTATION FAULT *** 

Missing & in the call to scanf() is a common mistake for beginners and does not necessarily produce a compiler error or warning.  Some compilers accept options (such as -W) to produce warnings, which may identify such errors.


Computation

We know that the area of a circle is given by the formula

 A = π r2

To store the area in memory involves 4 program instructions:

  • define a variable to hold the area (a declaration)
  • square the radius (an expression)
  • multiply the square by π (another expression)
  • assign the result to the defined variable (another expression)

Multiplication

The multiplication operation takes the form

 operand * operand

operand is a placeholder for the variable or constant being multiplied.  * denotes the 'multiply by' operation.  The value of this expression is equal to the result of the multiplication. 

Assignment

The assignment operation stores the value of an expression in the memory location of the destination variable.  Assignment takes the form

 destination = expression

destination is a placeholder for the destination variable.  expression refers to the value to be assigned to the destination variable.  = denotes the 'is assigned from' operation.  We call = the assignment operator

Note that assignment is a unidirectional operation.  destination must be a variable; that is, it must have a location in memory. 

C compilers reject statements such as

 4 = age;  // *** ERROR cannot set 4 to the value in age *** 

Example (continued)

Adding the statements to store the area in memory yields

 #include <stdio.h>                   // for printf, scanf

 int main(void)
 {
         const float pi = 3.14159f;   // pi is a constant float 
         float radius;                // radius is a float
         float area;                  // area is a float

         printf("Enter radius : ");   // prompt user for radius input
         scanf("%f", &radius);        // accept radius value from user 

         area = pi * radius * radius; // calculate area from radius

         // ... completed below

         return 0;
 }

Since the C language does not define an exponentiation operator, we need to calculate the square of the radius explicitly.  Later, we will learn the pow procedure to perform exponentiation.


Simple Output

The printf(...) instruction reports the value of a variable or expression to the user (that is, copies the value to the standard output device).  The instruction takes the form

 printf(format, expression);

This statement calls the printf() procedure, which performs the operation.  We say that format and expression are arguments in our call to printf()

format

format is a string literal describing how to convert data stored in memory into text readable by the user.  format contains the conversion specifier and any characters to be output directly.  The conversion specifier begins with a % symbol and identifies the type of the source variable.  The most common specifiers are listed below. 

  Specifier  Output as a  Use With Type Most Common 
%ccharacter  char *
%ddecimal  char, int *
%ffloating-point  float *
%lffloating-point  double *

A more complete table is listed in the chapter entitled Input and Output.

The default number of decimal places displayed by %f and %lf is 6.  To display two decimal places, we write %.2f or %.2lf.

Expression

expression is a placeholder for the source variable.  The printf() procedure copies the variable and converts it into the output text. 

Example (completed)

The complete program for calculating the area of a circle is

 // Area of a Circle
 // area.c

 #include <stdio.h>                   // for printf, scanf

 int main(void)
 {
         const float pi = 3.14159f;   // pi is a constant float 
         float radius;                // radius is a float
         float area;                  // area is a float

         printf("Enter radius : ");   // prompt user for radius input
         scanf("%f", &radius);        // accept radius value from user 

         area = pi * radius * radius; // calculate area from radius

         printf("Area = %f\n", area); // copy area to standard output

         return 0;
 }

The input and output while executing this program is

 Enter radius : 1
 Area = 3.141593

C rounds floating-point output to 6 decimal places by default.


Exercises

  • Write a C program that prompts the user to enter the amount of cash in their pockets, accepts the user's input, and displays the amount in the format shown below. 

    If the user has entered 4.52, your program displays

         How much money do you have in your pockets ? 4.52 
         The amount of money in your pockets is $4.52
  • Write a C program that calculates the area of a triangle.  Your program prompts the user to enter the height and base, accepts the user's input in decimal format, multiplies the product of the height and base by 0.5, stores the area in memory and outputs the area to 2 decimal places along with its address in memory in hexadecimal format (use the %p conversion specifier to output an address).



   Printer Friendly Version of this Page print this page     Top  Go Back to the Top of this Page
  Previous: Data Types Next: Expressions  


  Designed by Chris Szalwinski   Copying From This Site   

Creative Commons License