c lecture notes 1 program control (cont...). c lecture notes 2 4.8the do / while repetition...
Post on 20-Dec-2015
238 views
TRANSCRIPT
1
C Lecture Notes
Program Control (Cont...)
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 );
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
4
C Lecture Notes
4.8 The do/while Repetition Structure
• Flowchart of the do/while repetition structure
true
false
action(s)
condition
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
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
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
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
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
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
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
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;
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
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
15
C Lecture Notes
4.12Structured-Programming Summary
Rule 3
Rule 3
Rule 3
Rule 3 - Replace any rectangle with a control structure
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
17
C Lecture Notes
Functions
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
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
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
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
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
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;
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
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
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