1 ipc144 session 11 the c programming language. 2 objectives to format a #define statement correctly...

32
1 IPC144 Session 11 The C Programming Language

Upload: gilbert-bradford

Post on 27-Dec-2015

226 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

1

IPC144Session 11

The C Programming Language

Page 2: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

2

Objectives

To format a #define statement correctlyTo use a #define statement in a C programTo construct a printf() statementTo use a printf() statement in a C programTo construct a scanf() statementTo use a scanf() statement in a C program

Page 3: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

3

The C Language

IntroductionWhat can you tell me about the following C statement?

#define

Page 4: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

4

The C Language

IntroductionWhat can you tell me about the following C statement?

#define

It is a preprocessor directive

Page 5: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

5

The C Language

#defineWhat value is the #define preprocessor directive?

Remember the Library Fines Calculator program- the fine was set to $0.05

There was one place in the program where we used the fine. What if there were many places in the program?

Imagine if the fine was $0.07, and the Library had to charge PST of $0.07? Perhaps the fine need to be increased to $0.10. You would be looking at many lines of code trying to determine if the 0.07 related to the fine or the tax.

Page 6: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

6

The C Language

#define, continuedA sensible way to code your program would be to 'define' names that will represent the value throughout the program.

THESE ARE NOT VARIABLES- when the preprocessor processes the source code- the names are replaced the value before being passed on to the translator.

For example we could create a name called PST_TAX and another name FINE to represent the values that need to be used in the Library program. We can use these names in place of the 0.07 value, and be able to differentiate between which 0.07 relates to tax and which 0.07 relates to the fine.

In C this looks like:

#define PST_TAX 0.07#define FINE 0.07...totalFine = (overDue * FINE) + ((overDue * FINE) * PST_TAX);

Page 7: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

7

The C Language

#define, continuedAnatomy of the #define statement:

#define name value

NOTE: there is no semicolon at the end This is the value the name represents This is the name that will be used throughout the program

This is the 'define' preprocessor directiveAs discussed already, this indicates as preprocessor directive

Page 8: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

8

The C Language

#define, continuedHow the #define works:

The preprocessor creates a list of the names and their values

The preprocessor then searches through the program looking for the name

When the preprocessor finds the name, it is replaced with the corresponding value

The value is considered to start on the first non-blank character after the name, and ends at the last non-blank character before the end of the line or comment.

#define MYDEFINE 32134325235 35

start end

Page 9: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

9

The C Language

#define, continuedCoding Standard:When creating a #define, the name must be in uppercase letters. The underscore character is used to separate the words of a compound name

The #define statements follow the #include statements in your source file

All quantities that remain unchanged throughout a program must be named using the #define

Page 10: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

10

The C Language

#define, continuedThe only time that the changes made to a #define is reflected in your program is after you recompile the program.

Page 11: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

11

The C Language

printf() functionThis is the equivalent of the DISPLAY statement in pseudocode.

Whatever formatted data is output by the printf() statement is sent to the standard output device of the computer - in our case the monitor.

Page 12: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

12

The C Language

printf() function, continuedAnatomy of a simple printf() statement:

printf("A program is born.\n");

An "escape sequence" that is used to tell the computer you want to go to a NEWLINE

The beginning of a string of data to be printed EXACTLY as written

The library function being called

NOTE where the opening and closing brackets are, and what is placed inside of the double quotes.

Page 13: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

13

The C Language

printf() function, continuedExample:

#include <stdio.h>int main(void){ printf("A program is born.\n"); printf("\nOh, sure you think it's cute and cuddly now\n"); printf("but just wait!\nAs it grows up it will become a "); printf("monster before you know it!\n");}

What is the output of this program?

Page 14: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

14

The C Language

printf() function, continued

#include <stdio.h>int main(void){ printf("A program is born.\n"); printf("\nOh, sure you think it's cute and cuddly now\n"); printf("but just wait!\nAs it grows up it will become a "); printf("monster before you know it!\n");}

A program is born.

Oh, sure you think it's cute and cuddly nowbut just wait!As it grows up it will become a monster before you know it!

Page 15: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

15

The C Language

printf() function, continuedWe have defined variables in our C program, how do we display their contents?

There are two parts to the printf() function:The format string, which contains:

literal text to be output exactly as writtenspecial control characters (such as the \n)field specifications

A list of variables that correspond the field specifications in the format string

The format string is like a template, showing you where the text is (and what the text is) as well as where within the text the values of the variables are to be inserted

Page 16: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

16

The C Language

printf() function, continuedexample:printf("Total = %d Average = %f\n", ttl, avg);

The field specifications are "place holders" for the variable data that the program is calculating

Where-ever you place a field specification, the compiler will look for a corresponding variable in the list of variables

The first field specification refers to the first variable in the list, the second field specification refers the second variable in the list and so on...

Page 17: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

17

The C Language

printf() function, continuedThe field specifications in the format string that correspond to the data types discussed:

%c - char

%d - int

%f - float

%hd - short int

%ld - long int

%Lf - long double

Page 18: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

18

The C Language

printf() function, continuedThe field specification format is:

% flags minimum width .precision size conversion code

Flags provide extra control over the formatting of numbers, and to indicate left-justify. By default the flags are not set.

- left justify the field

+ print positive numbers with a leading '+' sign

(there is a space at the beginning of this line). Print positive numbers with leading spaces

Page 19: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

19

The C Language

printf() function, continuedThe field specification format is:

% flags minimum width .precision size conversion code

Minimum width of the print zone by default is the total width of the value including any characters added by the use of the flags and precision.

If the total width of the value is less than the specified width, then the value is right-justified within the print zone. If the '-' flag is used, the value is left-justified.

If the total width of the value is greater than the minimum width, the print zone will be extended to accommodate the value. The value is not truncated.

If set to '*', the width field can be based on an integer value found in the variable list

int i = 5, j = 4;printf(“%*d\n”, j, i); is the same as:printf(“%4d\n”, i);

Page 20: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

20

The C Language

printf() function, continuedThe field specification format is:

% flags minimum width .precision size conversion code

Precision has different effects depending on the data type of the variable being printed

Integers - minimum numbers of digits to print. Pad with leading zeroes ifnecessary

Float - maximum number of digits to print on the right side of the decimal point (default is six digits).

If set to '*', the precision field can be based on an integer value found in the variable listint i = 5, j = 4, k = 3;printf(“%*.*d\n”, j, k, i); is the same as:printf(“%4.3d\n”, i);

Page 21: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

21

The C Language

printf() function, continuedThe field specification format is:

% flags minimum width .precision size conversion code

Size modifies the data type represented by the conversion code:

h - Use with 'd' to specify short int

l - used with 'd' to specify a long int

L - used with 'f' to specify a long double

Page 22: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

22

The C Language

printf() function, continuedThe field specification format is:

% flags minimum width .precision size conversion code

Conversion code specifies the data type, and in most cases the format, and in some cases the format in which it is to be printed:

d - int, signed decimal number, no fractions

f - float, signed decimal number with 6 decimal numbers (rounding takes place)

% - so that you can print a '%' character

Page 23: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

23

The C Language

printf() function, continuedWhat is the printf() format string to produce the required output given the data type and the value of the variable myVar:

Data Type Value Required outputint 1 001float 1.345 +1.35int 56 56float 2.1 2.10%

The 'required output' field is 15 characters in size.

Page 24: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

24

The C Language

printf() function, continuedWhat is the printf() format string to produce the required output given the data type and the value of the variable myVar:

Data Type Value Required outputint 1 001 "%15.3d"float 1.345 +1.34 "%+15.2f“int 56 56 "%-15d“float 2.1 2.10% "%-15.2f%%"

The 'required output' field is 15 characters in size.

Page 25: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

25

The C Language

scanf() functionA computer program is fairly limited if it cannot get input data from a user as it is executing

There exists a function that is very similar to the printf() function that is used for formatted input

Anatomy of the scanf() statement:

scanf("format string", v1, v2, ...);

A list of variables that are referenced in theformat string. Each variable of type char, int or float is preceded

by a '&' character

A list of field specifications for the data being read

The function being called

Page 26: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

26

The C Language

scanf() function, continuedThere is one major difference with the scanf() function when dealing with the variables:

scanf("%d", &i);

Notice the "&" symbol before the variable name

This is called the "address-of" operator

For now, it means that when you place the value read from the user into the variable, you can only store the data if you know the address of the variable within the computer's memory

Page 27: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

27

The C Language

scanf() function, continuedThe field specification format is:

% flags maximum width size conversion code

Flag in this case is called assignment suppression character. It has only one value:

* This indicates the input is to be discarded

Its purpose is to be able to skip over a sequence of characters in the input file.

Input file in this case, by definition, includes the keyboard.

Page 28: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

28

The C Language

scanf() function, continuedThe field specification format is:

% flags maximum width size conversion code

Maximum width indicates the maximum characters to be read into the variable.

Scanning for integers and floats, stops when a white-space character is found, an invalid character is found (strictly based on the data type), or the scan has hit the end of the file.

Page 29: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

29

The C Language

scanf() function, continuedThe field specification format is:

% flags maximum width size conversion code

Size behaves the same way as in the printf() function.

Page 30: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

30

The C Language

scanf() function, continuedThe field specification format is:

% flags maximum width size conversion code

The conversion code also behaves the same way as in the printf() function.

Page 31: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

31

The C Language

scanf() function, continuedExercise:What would be the values of the variables if the scanf() function were to be executed within the data types specified and the input data specified:

Data Type Input Data scanf() function Variables after Readint i; 12334 scanf("%d", &i); i =

int i; 155.347 7 scanf("%d %f", &i, &x); i =float x; x =

int i1; 1234 scanf("%3d%d", &i1, &i2); i1 =int i2; i2 =

Page 32: 1 IPC144 Session 11 The C Programming Language. 2 Objectives To format a #define statement correctly To use a #define statement in a C program To construct

32

The C Language

scanf() function, continuedExercise:What would be the values of the variables if the scanf() function were to be executed within the data types specified and the input data specified:

Data Type Input Data scanf() function Variables after Readint i; 12334 scanf("%d", &i); i = 12334

int i; 155.347 7 scanf("%d %f", &i, &x); i = 155float x; x = 0.347

int i1; 1234 scanf("%3d%d", &i1, &i2); i1 = 123int i2; i2 = 4