c lecture notes 1 program control (cont...). c lecture notes 2 4.8the do / while repetition...

26
1 C Lecture Notes Program Control (Cont...)

Post on 20-Dec-2015

228 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

1

C Lecture Notes

Program Control (Cont...)

Page 2: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

2

C Lecture Notes

4.8 The do/while Repetition Structure

• The do/while repetition structure – Similar to the while structure

– Condition for repetition tested after the body of the loop is performed

• All actions are performed at least once

– Format:do {

statement;

} while ( condition );

 

Page 3: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

3

C Lecture Notes

4.8 The do/while Repetition Structure

• Example (letting counter = 1):do {

printf( "%d ", counter );

} while (++counter <= 10);

– Prints the integers from 1 to 10

 

Page 4: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

4

C Lecture Notes

4.8 The do/while Repetition Structure

• Flowchart of the do/while repetition structure

true

false

action(s)

condition

Page 5: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

1. Initialize variable

2. Loop

3. Print

Program Output

1 /* Fig. 4.9: fig04_09.c

2 Using the do/while repetition structure */

3 #include <stdio.h>

4

5 int main()

6 {

7 int counter = 1;

8

9 do {

10 printf( "%d ", counter );

11 } while ( ++counter <= 10 );

12

13 return 0;

14 }

1 2 3 4 5 6 7 8 9 10

Page 6: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

6

C Lecture Notes

4.9 The break and continue Statements

• break– Causes immediate exit from a while, for, do/while or switch structure

– Program execution continues with the first statement after the structure

– Common uses of the break statement• Escape early from a loop

• Skip the remainder of a switch structure

Page 7: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

7

C Lecture Notes

4.9 The break and continue Statements

• continue– Skips the remaining statements in the body of a while, for or do/while structure

• Proceeds with the next iteration of the loop

– while and do/while• Loop-continuation test is evaluated immediately after the continue statement is executed

– for• Increment expression is executed, then the loop-continuation

test is evaluated

Page 8: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

1. Initialize variable

2. Loop

3. Print

Program Output

1 /* Fig. 4.12: fig04_12.c

2 Using the continue statement in a for structure */

3 #include <stdio.h>

4

5 int main()

6 {

7 int x;

8

9 for ( x = 1; x <= 10; x++ ) {

10

11 if ( x == 5 )

12 continue; /* skip remaining code in loop only

13 if x == 5 */

14

15 printf( "%d ", x );

16 }

17

18 printf( "\nUsed continue to skip printing the value 5\n" );

19 return 0;

20 }

1 2 3 4 6 7 8 9 10Used continue to skip printing the value 5

Page 9: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

9

C Lecture Notes

4.10Logical Operators

• && ( logical AND ) – Returns true if both conditions are true

• || ( logical OR ) – Returns true if either of its conditions are true

• ! ( logical NOT, logical negation )– Reverses the truth/falsity of its condition

– Unary operator, has one operand

• Useful as conditions in loopsExpression Result

true && false falsetrue || false true

!false true

Page 10: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

10

C Lecture Notes

4.11Confusing Equality (==) and Assignment (=) Operators

• Dangerous error– Does not ordinarily cause syntax errors

– Any expression that produces a value can be used in control structures

– Nonzero values are true, zero values are false– Example using ==:

if ( payCode == 4 )

printf( "You get a bonus!\n" ); • Checks paycode, if it is 4 then a bonus is awarded

Page 11: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

11

C Lecture Notes

4.11Confusing Equality (==) and Assignment (=) Operators

– Example, replacing == with =:if ( payCode = 4 )

printf( "You get a bonus!\n" );• This sets paycode to 4• 4 is nonzero, so expression is true, and bonus awarded no

matter what the paycode was

– Logic error, not a syntax error

Page 12: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

12

C Lecture Notes

4.11Confusing Equality (==) and Assignment (=) Operators

• lvalues– Expressions that can appear on the left side of an equation

– Their values can be changed, such as variable names • x = 4;

• rvalues– Expressions that can only appear on the right side of an

equation

– Constants, such as numbers • Cannot write 4 = x;• Must write x = 4;

– lvalues can be used as rvalues, but not vice versa• y = x;

Page 13: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

13

C Lecture Notes

4.12Structured-Programming Summary

• Structured programming– Easier than unstructured programs to understand, test,

debug and, modify programs

• Rules for structured programming– Rules developed by programming community

– Only single-entry/single-exit control structures are used

– Rules: 1. Begin with the “simplest flowchart”

2. Any rectangle (action) can be replaced by two rectangles (actions) in sequence

3. Any rectangle (action) can be replaced by any control structure (sequence, if, if/else, switch, while, do/while or for)

4. Rules 2 and 3 can be applied in any order and multiple times

 

 

Page 14: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

14

C Lecture Notes

4.12Structured-Programming Summary

.

.

.

Rule 2 Rule 2 Rule 2

Rule 1 - Begin with the simplest flowchart

Rule 2 - Any rectangle can be replaced by two rectangles in sequence

Page 15: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

15

C Lecture Notes

4.12Structured-Programming Summary

Rule 3

Rule 3

Rule 3

Rule 3 - Replace any rectangle with a control structure

Page 16: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

16

C Lecture Notes

4.12Structured-Programming Summary

• All programs can be broken down into 3 controls– Sequence – handled automatically by compiler

– Selection – if, if/else or switch

– Repetition – while, do/while or for• Can only be combined in two ways

– Nesting (rule 3)

– Stacking (rule 2)

– Any selection can be rewritten as an if statement, and any repetition can be rewritten as a while statement

Page 17: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

17

C Lecture Notes

Functions

Page 18: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

18

C Lecture Notes

5.1 Introduction

• Divide and conquer – Construct a program from smaller pieces or components

• These smaller pieces are called modules

– Each piece more manageable than the original program

Page 19: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

19

C Lecture Notes

5.2 Program Modules in C

• Functions– Modules in C– Programs combine user-defined functions with library functions

• C standard library has a wide variety of functions

• Function calls– Invoking functions

• Provide function name and arguments (data)• Function performs operations or manipulations• Function returns results

– Function call analogy:• Boss asks worker to complete task

– Worker gets information, does task, returns result– Information hiding: boss does not know details

Page 20: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

20

C Lecture Notes

5.3 Math Library Functions

• Math library functions – perform common mathematical calculations– #include <math.h>

• Format for calling functions– FunctionName( argument );

• If multiple arguments, use comma-separated list

– printf( "%.2f", sqrt( 900.0 ) ); • Calls function sqrt, which returns the square root of its

argument

• All math functions return data type double

– Arguments may be constants, variables, or expressions

Page 21: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

21

C Lecture Notes

5.4 Functions

• Functions– Modularize a program– All variables declared inside functions are local variables

• Known only in function defined

– Parameters• Communicate information between functions• Local variables

• Benefits of functions– Divide and conquer

• Manageable program development

– Software reusability• Use existing functions as building blocks for new programs• Abstraction - hide internal details (library functions)

– Avoid code repetition

Page 22: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

22

C Lecture Notes

5.5 Function Definitions

• Function definition formatreturn-value-type function-name( parameter-list ){ declarations and statements}

– Function-name: any valid identifier

– Return-value-type: data type of the result (default int)• void – indicates that the function returns nothing

– Parameter-list: comma separated list, declares parameters• A type must be listed explicitly for each parameter unless, the

parameter is of type int

Page 23: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

23

C Lecture Notes

5.5 Function Definitions

• Function definition format (continued)return-value-type function-name( parameter-list ){ declarations and statements}

– Declarations and statements: function body (block)• Variables can be declared inside blocks (can be nested)

• Functions can not be defined inside other functions

– Returning control• If nothing returned

– return;

– or, until reaches right brace

• If something returned – return expression;

Page 24: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

1. Function prototype (3 parameters)

2. Input values

2.1 Call function

3.Function definition

Program Output

1 /* Fig. 5.4: fig05_04.c2 Finding the maximum of three integers */3 #include <stdio.h>45 int maximum( int, int, int ); /* function prototype */67 int main()8 {9 int a, b, c;1011 printf( "Enter three integers: " );12 scanf( "%d%d%d", &a, &b, &c );13 printf( "Maximum is: %d\n", maximum( a, b, c ) );1415 return 0;16 }1718 /* Function maximum definition */19 int maximum( int x, int y, int z )20 {21 int max = x;2223 if ( y > max )24 max = y;2526 if ( z > max )27 max = z;2829 return max;30 }

Enter three integers: 22 85 17Maximum is: 85

Page 25: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

25

C Lecture Notes

5.6 Function Prototypes

• Function prototype – Function name

– Parameters – what the function takes in

– Return type – data type function returns (default int)

– Used to validate functions

– Prototype only needed if function definition comes after use in program

– The function with the prototypeint maximum( int, int, int );

• Takes in 3 ints

• Returns an int

• Promotion rules and conversions– Converting to lower types can lead to errors

Page 26: C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to

26

C Lecture Notes

5.7 Header Files

• Header files– Contain function prototypes for library functions– <stdlib.h> , <math.h> , etc

– Load with #include <filename>#include <math.h>

• Custom header files– Create file with functions

– Save as filename.h– Load in other files with #include "filename.h"– Reuse functions