PPT 10

advertisement
CIS162AD
Loops, Lists, Printing
10_loops.ppt
Overview of Topics
 While Loop
 Do While Loop
 For Loop
 Pretest vs Posttest
 Nested Loops
 List and Combo Boxes
 Printing Controls
CIS162AD
2
Flowcharting
 A flowchart is a pictorial representation of an
algorithm or logical steps.
 Each step is represented by a symbol and the
arrows indicate the flow and order of the steps.
 The shape of the symbol indicates the type of
operation that is to occur.
 Flowcharts may help the move visual students
learn and understand logic.
CIS162AD
3
Flowchart Symbols
Begin or End
Processing
Input or Output
Decision
Branch or Direction of Flow
CIS162AD
4
Flow Control Structures
 The order in which statements are executed.
 There are four structures.
1. Sequence Control Structure
2. Selection Control Structure
• Also referred to as branching (if and if-else)
3. Case Control Structure (select)
4. Repetition Control Structure (loops)
CIS162AD
5
4. Repetition Control (loops)
 Loops are the 4th flow control structure.
 Loop – a group of statements that are repeated
until a certain condition occurs to stop it.
 The conditions are Boolean expressions like
those in if statements.
 The conditions evaluate to True or False.
 Can use Relational and Logical Operators.
CIS162AD
6
While is a Pretest Loop - Example
intCount = 1;
//initialize controlling variable
while (intCount < 4)
{
txtCount.Text = intCount.ToString(“N0”);
intCount++;
//add one
}
Output:
1 2 3
CIS162AD
7
While is a Pretest Loop
 Pretest - controlling condition is evaluated before
executing loop body.
 Controlling variable must be initialized.
 Condition must be true to enter loop body.
 There is NO semi-colon after the condition.
 It is possible that body is not executed at all.
 Condition must be false to get out of loop.
 Controlling variable should be modified within the
loop.
 Execution continues with next statement after Loop.
CIS162AD
8
Flowchart – While Pretest Loop
Initialization important
for While Pretest Loop
count = 1
while
count < 4
False
True
Represents
Loop
Output
count
Skip or Exit Loop
count +1
Next statement
CIS162AD
9
Do-While is a Posttest Loop -Example
intCount = 1; //initialize
controlling variable
do
{
txtCount.Text = intCount.ToString(“N0”);
intCount++;
} while (intCount < 4);
Output:
1 2 3
CIS162AD
10
Do-While Posttest Loop
 Posttest - controlling condition is evaluated after
executing loop body.
 So, body is always executed at least one time.
 Initialization of controlling variable not necessarily
required.
 Condition must be false to get out of loop.
 There is a semi-colon after the condition.
 Controlling variable should be modified within the
loop.
 Execution continues with next statement after Loop.
CIS162AD
11
Flowchart – Do-While Posttest Loop
count = 1
Output
count
count + 1
Represents
Loop
True
Loop will be executed
at least one time,
because the condition
is at the bottom.
while
count < 4
False - Exit Loop
Next statement
CIS162AD
12
Pretest vs. Posttest
 Pretest
– For pretest loops the terminating condition is at the
top of the loop.
– It is possible that the body is not executed if the
condition to get into the loop is not met.
 Posttest
– For posttest loops the terminating condition is at
the bottom of the loop.
– The body is always executed at least one time.
CIS162AD
13
Loop Summary
 Infinite loop
– A loop that never ends.
– While – condition always evaluates to true.
– Controlling variable must be altered within the loop.
– Click on the close form icon to stop the program.
– Use Control-Break to enter debug mode.
 When to use a While or Do-While will become
evident as we continue to use and learn each loop.
 Nested Loop is a loop inside another loop
(see next slide).
CIS162AD
14
Nested Loops
intCount = 1;
while (intCount < 4)
{
1 1 2 3
2 1 2 3
3 1 2 3
txtCount.Text = intCount.ToString(“N0”);
intCount++;
intCount2 = 1;
do
{
txtCount.Text = intCount2.ToString(“N0”);
intCount2++;
} while (intCount2 < 4);
}
CIS162AD
15
For Loop
 Good when a task needs to be completed a
fixed number of times.
 Good when counting with fixed increments.
 Compares to a While Pretest loop.
for (initialization; condition; action)
{
body
}
CIS162AD
16
For Loop
//For includes initialization and ending condition
for (int intCount = 1; intCount < 4; intCount++;)
{
txtCount.Text = intCount.ToString(“N0”);
}
Output:
1 2 3
CIS162AD
17
For Loop
 Controlling variable is initialized.
 Pretest - controlling condition is evaluated before
executing loop body.
 Condition must be true to enter loop body.
 It is possible that body is not executed at all.
 Condition must be false to get out of loop.
 The action (intCount++) is automatically executed
when the bottom of the loop is reached, and then the
condition is evaluated again.
 Do not alter the value of controlling variable within the
body.
 Compares to a While Pretest loop.
CIS162AD
18
Flowchart – For Pretest Loop
count = 1
while
count < 4
False
True
Represents
Loop
Output
count
Skip or Exit Loop
count +1
Next statement
CIS162AD
19
Nested For-Next Loops
 For loops may contain other For loops.
 The second loop must be completely contained
inside the first loop.
 The second loop should have a different
controlling variable.
 Should indent inner loops for readability.
CIS162AD
20
Nested For-Next Layout
for (i = 1; i <= 10; i++)
{
for (j = 1; j <= 20; j++)
{
for (k = 1; k <= 15; k++)
{
//body
}
}
}
CIS162AD
21
List and Combo Boxes
CIS162AD
22
List and Combo Boxes
 Both allow you to have a list of items from which the
user can make a selection.
 Items in the list can be set at design time or loaded at
run-time.
 Space on the form and input options will help
determine which to use.
 A scroll bar automatically added for long lists.
 Since the two are similar, we’ll only review the
combo boxes here.
 See textbook additional options and details.
CIS162AD
23
Collection of items
 The list of items that is displayed is called a collection.
 A collection is an object that has properties and
methods.
– Properties: item count, selected index
– Methods: add, remove, clear
 Each item in the list is referred to an element.
 Each element is referenced by providing an index
value.
 The first one is referenced with an index value of zero.
CIS162AD
24
Design Time – Use Items Property
 In the properties window there is a property
named Items.
 Use the Collection Editor button to open a
window that allows you to enter the items.
 One item per line (cboCatalog example)
Odds and Ends
Solutions
Camping Needs
CIS162AD
25
Collection Concepts
Position
Index
1
2
3
0
1
2
Text
Odds and Ends
Solutions
Camping Needs
There are 3 items.
The first is referenced with an index value of zero.
The last one is referenced with an index value of
Items.Count – 1
The item the user picks is recorded in SelectedIndex.
CIS162AD
26
Run Time –methods
 To add an item to the end of the list at run time use the
Items.Add method.
cboCatalog.Items.Add(“ToolTime”);
cboCatalog.Items.Add(“Spiegel”);
 To insert an item in a particular place in the list use
Items.Insert.
cboCatalog.Items.Insert(1,”The Outlet”);
 Use the cboCatalog.Items.RemoveAt(index) or
cboCatalog.Items.Remove(strValue) to remove items
from list.
 Use cboCatalog.Items.Clear( ) to remove all items in
the list.
CIS162AD
27
Selected Item
 When we are ready to process the form, we’ll want
to record the item the user selected.
 The SelectedIndex can be used:
strCatalog = cboCatalog.Items(cboCatalog.SelectedIndex);
 The Text property also holds the text of the selected item.
strCatalog = cboCatalog.Text;
CIS162AD
28
Printing Documents
 Printing documents is not as easy as creating
forms.
 There are other tools that can be used to create
reports, such as Crystal Reports.
 However, there will be times when information
from an application may need to be printed.
 Use the PrintDocument control by adding it to
the component tray.
CIS162AD
29
Print Page Event
 The PrintDocument control is named like other
controls, such as printDocument1.
 Add a Print option using a button or menu item.
 From the button or menu click method, call the Print
method.
printDocument1.Print( );
 This will fire the PrintPage event.
 In the PrintPage event method is where we place the
code to print a page.
CIS162AD
30
Graphics Page
 A graphics page is built in memory and then
the page is sent to the printer.
 You must specify the exact location on the
graphics page for each element that you want
to print.
 There are various methods to draw on the
graphics page, but we’ll just cover the
introductory ones here.
CIS162AD
31
X and Y Coordinates
X
Y
CIS162AD
32
e.Graphics.DrawString Method
 Use the DrawString method to send a line of
text to the graphics page.
 Pass the upper-left corner of where you want
the string placed as X and Y coordinates.
 e.Graphics.DrawString(strToPrint, Font, Brush, X, Y)
– Font can be specified
– Brush is the color
CIS162AD
33
PrintPage Event Logic
 Declare coordinate, line height and font variables.
– float fltX, fltY, fltLineHeight;
– Font printFont = new Font(“Arial”, 12);
 Get left margin and top margin values using some of the
properties of the page event.
– fltX = e.MarginBounds.Left;
– fltY = e.MarginBounds.Top;
 Call DrawString to place a line on the graphics page.
 Move down the page by increasing Y.
Assign the font height to line height.
fltLineHeight = printFont.GetHeight( );
Add the height of the line just printed to Y.
fltY += fltLineHeight;
 When the procedure is exited, the graphics page is sent
to the printer.
CIS162AD
34
Print Preview
 Place a PrintPreviewDialog control in the component tray.
 The control is named printPreviewDialog1.
 Add a menu or button control for the user to select, and for its
event use the code:
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog( )
 Use the same PrintDocument control declared for the printer
output.
 Assign the PrintDocument to the Document property of the
printPreviewDialog1 and call ShowDialog.
 ShowDialog will fire the PrintPage event, so the same code to
create the page is executed for print preview and an actual
print.
CIS162AD
35
Summary







While Loop
Do While Loop
For Loop
Pretest vs Posttest
Nested Loops
List and Combo Boxes
Printing Controls
– I may have over simplified the Print process in this
presentation. The best way to learn it is to practice it (CS10).
CIS162AD
36
Download