1
Chapter 4 – Control Structures Part 1
Outline
4.1 Introduction
4.2 Algorithms
4.3 Pseudocode
4.4 Control Structures
4.5 if Selection Structure
4.6 if/else Selection Structure
4.7 while Repetition Structure
4.8 Formulating Algorithms: Case Study 1
(Counter-Controlled Repetition)
4.9 Formulating Algorithms with Top-Down, Stepwise Refinement:
Case Study 2 (Sentinel-Controlled Repetition)
4.10 Formulating Algorithms with Top-Down, Stepwise Refinement:
Case Study 3 (Nested Control Structures)
4.11 Assignment Operators
4.12 Increment and Decrement Operators
4.13 Introduction to Windows Application Programming
2002 Prentice Hall. All rights reserved.
2
4.1 Introduction
• Before writing a program
– Understand the problem
– Think of an approach
– Understand building blocks
– Use proven principals of structured programming
2002 Prentice Hall. All rights reserved.
3
4.2 Algorithms
• Procedure
– The actions a program will perform
– The order these actions will be performed
– Also called an algorithm
• Program control
– The task of ordering a computers procedure correctly
2002 Prentice Hall. All rights reserved.
4
4.3 Pseudocode
• Pseudocode
– Artificial and informal language
– Helps programmers to plan an algorithm
– Similar to everyday English
– Not an actual programming language
– Converting simply replaces words with C# code
2002 Prentice Hall. All rights reserved.
5
4.4 Control Structures
• Program of control
– Program performs one statement then goes to next line
• Sequential execution
– Different statement other than the next one executes
• Selection structure
– The if and if/else statements
– The goto statement
• No longer used unless absolutely needed
• Causes many readability problems
• Repetition structure
– The while and do/while loops (chapter 5)
– The for and foreach loops (chapter 5)
2002 Prentice Hall. All rights reserved.
6
4.4 Control Structures
• Flow carts
– Used to map program
– Illustrates the order events will go in
• Rectangle used to show action
• Oval used to show beginning
• Circles used as connectors
• Diamonds used as decisions
– Combination of control structures
• Stacking
– Placing one after another
• Nesting
– Inserting of one structure into another
2002 Prentice Hall. All rights reserved.
7
4.4 Control Structures
add grade to total total = total + grade;
add 1 to counter counter = counter + 1;
Fig. 4.1 Flowcharting C#’s sequence structure.
2002 Prentice Hall. All rights reserved.
8
4.4 Control Structures
C # Ke yw o rd s
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach get
goto if implicit in int
interface internal is lock long
namespace new null object operator
out override params private protected
public readonly ref return sbyte
sealed set short sizeof stackalloc
static string struct switch this
throw true try typeof uint
ulong unchecked unsafe ushort using
value virtual void volatile while
Fig . 4.2 C # ke ywo rd s.
2002 Prentice Hall. All rights reserved.
9
4.5 if Selection Structure
• The if structure
– Causes the program to make a selection
– Chooses based on conditional
• Any expression that evaluates to a bool type
• True: perform an action
• False: skip the action
– Single entry/exit point
– Require no semicolon in syntax
2002 Prentice Hall. All rights reserved.
10
4.5 if Selection Structure
true
Grade >= 60 print “Passed”
false
Fig. 4.3 Flowcharting a single-selection if structure.
2002 Prentice Hall. All rights reserved.
11
4.6 if/else selection structure
• The if/else structure
– Alternate courses can be taken when the statement is false
– Rather than one action there are two choices
– Nested structures can test many cases
– Structures with many lines of code need braces ({)
• Can cause errors
– Fatal logic error
– Nonfatal logic error
2002 Prentice Hall. All rights reserved.
12
4.6 if/else Selection Structure
false true
Grade >= 60
print “Failed” print “Passed”
Fig. 4.4 Flowcharting a double-selection if/else structure.
2002 Prentice Hall. All rights reserved.
13
Conditional Operator (?:)
• Conditional Operator (?:)
– C#’s only ternary operator
– Similar to an if/else structure
– The syntax is:
• (boolean value ? if true : if false)
2002 Prentice Hall. All rights reserved.
14
4.7 while Repetition Structure
• Repetition Structure
– An action is to be repeated
• Continues while statement is true
• Ends when statement is false
– Contain either a line or a body of code
• Must alter conditional
– Endless loop
2002 Prentice Hall. All rights reserved.
15
4.7 while Repetition Structure
true
Product <= 1000 Product = 2 * product
false
Fig. 4.5 Flowcharting the while repetition structure.
2002 Prentice Hall. All rights reserved.
16
4.8 Formulating Algorithms: Case Study 1
(Counter Controlled Repetition)
• Counter Controlled Repetition
– Used to enter data one at a time
• Constant amount
– A counter is used to determine when the loop should break
– When counter hits certain value, the statement terminates
2002 Prentice Hall. All rights reserved.
17
4.8 Formulating Algorithms: Case Study 1
(Counter Controlled Repetition)
Set total to zero
Set grade counter to one
While grade counter is less than or equal to ten
Input the next grade
Add the grade into the total
Add one to the grade counter
Set the class average to the total divided by ten
Print the class average
Fig. 4.6 Pseudocode algorithm that uses counter-controlled repetition to solve the class-
average problem.
2002 Prentice Hall. All rights reserved.
18
1 // Fig. 4.7: Average1.cs Outline
2 // Class average with counter-controlled repetition.
3
4 using System;
5 Average1.cs
6 class Average1
7 {
8 static void Main( string[] args )
9 {
10 int total, // sum of grades
11 gradeCounter, // number Initialize
of grades entered
total to 0
12 gradeValue, // grade value
13 average; // average of all grades
14 Initialize gradeCounter to 1
15 // initialization phase
16 total = 0; // clear total
17 gradeCounter = 1; The
// prepare to loop while loop will loop through 10
18
19 // processing phase
times to get the grades of the 10 students
20 while ( gradeCounter <= 10 ) // loop 10 times
21 {
22 // prompt for input and read grade from user
23 Console.Write( "Enter integer grade: " ); Prompt the user to enter a grade
24
25 // read input and convert to integer
26 gradeValue = Int32.Parse( Console.ReadLine() );
27 Accumulate the total of the 10 grades
28 // add gradeValue to total
29 total = total + gradeValue; Add 1 to the counter so the loop will eventually end
30
31 // add 1 to gradeCounter
32 gradeCounter = gradeCounter + 1;
33 }
2002 Prentice Hall.
All rights reserved.
19
34 Outline
35 // termination phase
36 average = total / 10; // integer division
37
38 // display average of exam grades Average1.cs
39 Console.WriteLine( "\nClass average is {0}", average );
40
41 } // end Main Divide the total by ten to get
42
43 } // end class Average1 the average of the ten grades
Display the results
Enter integer grade: 100 Program Output
Enter integer grade: 88
Enter integer grade: 93
Enter integer grade: 55
Enter integer grade: 68
Enter integer grade: 77
Enter integer grade: 83
Enter integer grade: 95
Enter integer grade: 73
Enter integer grade: 62
Class average is 79
2002 Prentice Hall.
All rights reserved.
4.9 Formulating Algorithms with Top-Down, 20
Stepwise Refinement: Case Study 2 (Sentinel
Controlled Repetition)
• Sentinel controlled repetition
– Continues an arbitrary amount of times
– Sentinel value
• Causes loop to break
• Avoid collisions
– When flag value = user entered value
• Creating pseudocode
– Start with one task
– Break it into several tasks
– Continue breaking until each task is simple
• Casting
– Allows one variable to temporarily be used as another
2002 Prentice Hall. All rights reserved.
4.9 Formulating Algorithms with Top-Down, 21
Stepwise Refinement: Case Study 2 (Sentinel
Controlled Repetition)
Initialize total to zero
Initialize counter to zero
Input the first grade (possibly the sentinel)
While the user has not as yet entered the sentinel
Add this grade into the running total
Add one to the grade counter
Input the next grade (possibly the sentinel)
If the counter is not equal to zero
Set the average to the total divided by the counter
Print the average
Else
Print “No grades were entered”
Fig. 4.8 Pseudocode algorithm that uses sentinel-controlled repetition to solve the class-
average problem.
2002 Prentice Hall. All rights reserved.
22
1 // Fig. 4.9: Average2.cs Outline
2 // Class average with sentinel-controlled repetition.
3
4 using System;
5 Average2.cs
6 class Average2
7 {
8 static void Main( string[] args )
9 {
10 int total, // sum of grades The variable average is set to a
11 gradeCounter, // number of grades entered
double so that it can be more exact
12 gradeValue; // grade value
13 and have an answer with decimals
14 double average; // average of all grades
15
16 // initialization phase Variables gradeCounter and total are
17 total = 0; // clear total
18 gradeCounter = 0; // prepare to loop set to zero at the beginning
19
20 // processing phase
21 // prompt for input and convert to integer
22 Console.Write( "Enter Integer Grade, -1 to Quit: " );
23 gradeValue = Int32.Parse( Console.ReadLine() );
24 Get a value from the user and
store it in gradeValue
2002 Prentice Hall.
All rights reserved.
23
25 // loop until a -1 is entered by user Outline
26 while ( gradeValue != -1 )
27 {
28 // add gradeValue to total Have the program loop as
29 total = total + gradeValue; long as gradeValue is not -1 Average2.cs
30
Accumulate the total of the grades
31 // add 1 to gradeCounter
32 gradeCounter = gradeCounter + 1; Add 1 to the counter in order
33 to know the student count
34 // prompt for input and read grade from user
35 // convert grade from string to integer
36 Console.Write( "Enter Integer Grade, -1 to Quit: " );
37 gradeValue = Int32.Parse( Console.ReadLine() );
38
39 } // end while
40
41 // termination phase Prompt the user for another
42 if ( gradeCounter != 0 ) grade, this time it is in the loop
43 { so it can happen repeatedly
44 average = ( double ) total / gradeCounter;
45
46 // display average of exam grades
47 Console.WriteLine( "\nClass average is {0}", average ); Makethesure theby
total
48 } Divide total theamount
49 else of entered
number grades
of times thewas not
program
50 { zero to
looped to prevent
find theany errors
average
51 Console.WriteLine( "\nNo grades were entered" );
52 }
53
54 } // end method Main
Display the average
55 Inform user if no grades
56 } // end class Average2
were entered
2002 Prentice Hall.
All rights reserved.
24
Enter Integer Grade, -1 to Quit: 97 Outline
Enter Integer Grade, -1 to Quit: 88
Enter Integer Grade, -1 to Quit: 72
Enter Integer Grade, -1 to Quit: -1
Average2.cs
Class average is 85.6666666666667 Program Output
2002 Prentice Hall.
All rights reserved.
4.10 Formulating Algorithms with Top-Down, 25
Stepwise Refinement: Case Study 3 (Nested
Control Structures)
• Nesting
– The insertion of one control structure inside another
• Multiple loops
• Loops with if statements
2002 Prentice Hall. All rights reserved.
4.10 Formulating Algorithms with Top-Down, 26
Stepwise Refinement: Case Study 3 (Nested
Control Structures)
Initialize passes to zero
Initialize failures to zero
Initialize student to one
While student counter is less than or equal to ten
Input the next exam result
If the student passed
Add one to passes
Else
Add one to failures
Add one to student counter
Print the number of passes
Print the number of failures
If more than eight students passed
Print “Raise tuition”
Fig. 4.10 Pseudocode for examination-results problem.
2002 Prentice Hall. All rights reserved.
27
1 // Fig. 4.11: Analysis.cs Outline
2 // Analysis of Examination Results.
3
4 using System;
5 Analysis.cs
6 class Analysis
7 {
8 static void Main( string[] args )
9 { Initialize both passes and failures to 0
10 int passes = 0, // number of passes
11 failures = 0,
Set the student count to 1
// number of failures
12 student = 1, // student counter
13 result; // one exam result
14 A while loop that will loop 10 times
15 // process 10 students; counter-controlled loop
16 while ( student <= 10 )
17 {
18 Console.Write( "Enter result (1=pass, 2=fail): " );
19 result = Int32.Parse( Console.ReadLine() );
20
21 if ( result == 1 )
A nested if statement that determines
22 passes = passes + 1; which counter should be added to
23
24 else
25 failures = failures + 1; If the user enters 1
26 add one to passes
27 student = student + 1;
28 }
29 If the user enters 2 then add one to failures
Keep track of the total number of students
2002 Prentice Hall.
All rights reserved.
28
30 // termination phase Outline
31 Console.WriteLine();
32 Console.WriteLine( "Passed: " + passes );
33 Console.WriteLine( "Failed: " + failures );
34 Analysis.cs
35 if ( passes > 8 )
36 Console.WriteLine( "Raise Tuition\n" ); Display the results to the user
37
38 } // end of method Main
39
40 } // end of class Analysis
If the total number of passes was greater than
8 then also tell the user to raise the tuition
Enter result (1=pass, 2=fail): 1 Program Output
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Passed: 9
Failed: 1
Raise Tuition
2002 Prentice Hall.
All rights reserved.
29
Enter result (1=pass, 2=fail): 1 Outline
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2
Enter result (1=pass, 2=fail): 2 Analysis.cs
Enter result (1=pass, 2=fail): 2 Program Output
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Enter result (1=pass, 2=fail): 1
Passed: 5
Failed: 5
2002 Prentice Hall.
All rights reserved.
30
4.11 Assignment Operators
• Assignment operators
– Can reduce code
• x += 2 is the same as x = x + 2
– Can be done with all the math operators
• ++, -=, *=, /=, and %=
2002 Prentice Hall. All rights reserved.
31
4.11 Assignment Operators
Assig n m e n t o p e ra to r Sa m p le e xp re ssio n Exp la na tio n Assig n s
Assume: int c = 3,
d = 5, e = 4, f =
6, g = 12;
+= c += 7 c = c + 7 10 to c
-= d -= 4 d = d - 4 1 to d
*= e *= 5 e = e * 5 20 to e
/= f /= 3 f = f / 3 2 to f
%= g %= 9 g = g % 9 3 to g
Fig . 4.12 Arith m e tic a ssig n m e n t o p e ra to rs.
2002 Prentice Hall. All rights reserved.
32
4.12 Increment and Decrement Operators
• Increment operator
– Used to add one to the variable
– x++
– Same as x = x + 1
• Decrement operator
– Used to subtract 1 from the variable
– y--
• Pre-increment vs. post-increment
– x++ or x--
• Will perform an action and then add to or subtract one from
the value
– ++x or --x
• Will add to or subtract one from the value and then perform an
action
2002 Prentice Hall. All rights reserved.
33
4.12 Increment and Decrement Operators
O p e ra to r C a lle d Sa m p le e xp re ssio n Exp la na tio n
++ preincrement ++a Increment a by 1, then use the new value
of a in the expression in which a resides.
++ postincrement a++ Use the current value of a in the expression
in which a resides, then increment a by 1.
-- predecrement --b Decrement b by 1, then use the new value
of b in the expression in which b resides.
-- postdecrement b-- Use the current value of b in the expression
in which b resides, then decrement b by 1.
Fig . 4.13 The inc re m e nt a nd d e c re m e nt o p e ra to rs.
2002 Prentice Hall. All rights reserved.
34
1 // Fig. 4.14: Increment.cs Outline
2 // Preincrementing and postincrementing
3
4 using System;
5 Increment.cs
6 class Increment
7 {
8 static void Main(string[] args)
9 {
10 int c; Declare variable c
11
12 c = 5; Set c equal
Display c (5) to 5
13 Console.WriteLine( c ); // print 5
14 Display
Console.WriteLine( c++ ); // print 5 then c (5) then
postincrement add 1
15 Console.WriteLine( c ); // print 6
16 Display c (6)
17 Console.WriteLine(); // skip a line
18
19 c = 5;
20 Console.WriteLine( c ); // print c5 is set to 5 Display c (5)
21 Console.WriteLine( ++c ); // preincrement then print 6
22 Console.WriteLine( c ); // print 6 Add 1 then display c (6)
23
24 } // end of method Main Display c (6)
25
26 } // end of class Increment
5 Program Output
5
6
5
6
6 2002 Prentice Hall.
All rights reserved.
35
4.12 Increment and Decrement Operators
O p e ra to rs Asso c ia tivity Typ e
() left to right parentheses
right to left unary postfix
++ --
++ -- + - (type) right to left unary prefix
* / % left to right multiplicative
+ - left to right additive
< <= > >= left to right relational
== != left to right equality
?: right to left conditional
= += -= *= /= %= right to left assignment
Fig . 4.15 Pre c e d e nc e a nd a sso c ia tivity o f the o p e ra to rs d isc usse d so fa r in this
b o o k.
2002 Prentice Hall. All rights reserved.
36
4.13 Introduction to Windows Application
Programming
• Inheritance
– Base class
• a class from which another class inherits from
– Derived class
• The class from which another class inherits
– Classes inherit basics of a class
• Attributes (data)
• Behaviors (methods)
– Prevents the continual rewriting of code
2002 Prentice Hall. All rights reserved.
37
4.13 Introduction to Windows Application
Programming
Collapsed
comment
Collapsed
code
Fig. 4.16 IDE showing program code for Fig. 2.15.
2002 Prentice Hall. All rights reserved.
38
4.13 Introduction to Windows Application
Programming
Expanded code
Fig. 4.17 Windows Form Designer generated code when expanded.
2002 Prentice Hall. All rights reserved.
39
4.13 Introduction to Windows Application
Programming
Click here for Property initializations
code view for WelcomeLabel
Click here for
design view
Fig. 4.18 Code generated by the IDE for welcomeLabel.
2002 Prentice Hall. All rights reserved.
40
4.13 Introduction to Windows Application
Programming
Text property
Fig. 4.19 Using the Properties window to set a property value.
2002 Prentice Hall. All rights reserved.
41
4.13 Introduction to Windows Application
Programming
Fig. 4.20 Windows Form Designer generated code reflecting new property values.
2002 Prentice Hall. All rights reserved.
42
4.13 Introduction to Windows Application
Programming
Text property
Fig. 4.21 Changing a property in the code view editor.
2002 Prentice Hall. All rights reserved.
43
4.13 Introduction to Windows Application
Programming
Text property value
Fig. 4.22 New Text property value reflected in design mode.
2002 Prentice Hall. All rights reserved.
44
4.13 Introduction to Windows Application
Programming
ASimpleProgram_Load method
Fig. 4.23 Method ASimpleProgram_Load.
2002 Prentice Hall. All rights reserved.
45
4.13 Introduction to Windows Application
Programming
Fig. 4.24 Changing a property value at runtime.
2002 Prentice Hall. All rights reserved.