2124C 04id 29203 ppt

background image

Module 4:

Statements and

Exceptions

background image

Overview

Introduction to Statements

Using Selection Statements

Using Iteration Statements

Using Jump Statements

Handling Basic Exceptions

Raising Exceptions

background image

Introduction to Statements

Statement Blocks

Types of Statements

background image

Statement Blocks

Use braces

As block

delimiters

{

// code

}

{

// code

}

{

int i;

...

{

int i;

...

}

}

{

int i;

...

{

int i;

...

}

}

{

int i;

...

}

...

{

int i;

...

}

{

int i;

...

}

...

{

int i;

...

}

A block and its

parent block

cannot have a

variable with

the same name

Sibling

blocks can

have

variables

with

the same

name

background image

Types of Statements

Selection Statements
The if and switch statements

Selection Statements
The if and switch statements

Iteration Statements
The while, do, for, and foreach statements

Iteration Statements
The while, do, for, and foreach statements

Jump Statements
The goto, break, and continue statements

Jump Statements
The goto, break, and continue statements

background image

Using Selection Statements

The if Statement

Cascading if Statements

The switch Statement

Quiz: Spot the Bugs

background image

The if Statement

Syntax:

No implicit conversion from int to bool

int x;
...
if (x) ... // Must be if (x != 0) in C#
if (x = 0) ... // Must be if (x == 0) in C#
 

int x;
...
if (x) ... // Must be if (x != 0) in C#
if (x = 0) ... // Must be if (x == 0) in C#
 

if ( Boolean-expression )
first-embedded-statement
else
second-embedded-statement

if ( Boolean-expression )
first-embedded-statement
else
second-embedded-statement

background image

Cascading if Statements

enum Suit { Clubs, Hearts, Diamonds, Spades }
Suit trumps = Suit.Hearts;
if (trumps == Suit.Clubs)
color = "Black";
else if (trumps == Suit.Hearts)
color = "Red";
else if (trumps == Suit.Diamonds)
color = "Red";
else
color = "Black";

enum Suit { Clubs, Hearts, Diamonds, Spades }
Suit trumps = Suit.Hearts;
if (trumps == Suit.Clubs)
color = "Black";
else if (trumps == Suit.Hearts)
color = "Red";
else if (trumps == Suit.Diamonds)
color = "Red";
else
color = "Black";

background image

The switch Statement

Use switch statements for

multiple case blocks

Use break statements to ensure

that no fall through occurs

switch (trumps) {
case Suit.Clubs :
case Suit.Spades :
color = "Black"; break;
case Suit.Hearts :
case Suit.Diamonds :
color = "Red"; break;
default:
color = "ERROR"; break;
}

switch (trumps) {
case Suit.Clubs :
case Suit.Spades :
color = "Black"; break;
case Suit.Hearts :
case Suit.Diamonds :
color = "Red"; break;
default:
color = "ERROR"; break;
}

background image

Quiz: Spot the Bugs

if number % 2 == 0 ...

if number % 2 == 0 ...

if (percent < 0) || (percent > 100) ...

if (percent < 0) || (percent > 100) ...

if (minute == 60);
minute = 0;

if (minute == 60);
minute = 0;

switch (trumps) {
case Suit.Clubs, Suit.Spades :
color = "Black";
case Suit.Hearts, Suit.Diamonds :
color = "Red";
defualt :
...
}

switch (trumps) {
case Suit.Clubs, Suit.Spades :
color = "Black";
case Suit.Hearts, Suit.Diamonds :
color = "Red";
defualt :
...
}

2

2

2

2

3

3

3

3

4

4

4

4

1

1

1

1

background image

Using Iteration Statements

The while Statement

The do Statement

The for Statement

The foreach Statement

Quiz: Spot the Bugs

background image

The while Statement

Execute embedded statements based

on Boolean value

Evaluate Boolean expression at

beginning of loop

Execute embedded statements while

Boolean value

Is True

int i = 0;
while (i < 10) {
Console.WriteLine(i);
i++;
}

int i = 0;
while (i < 10) {
Console.WriteLine(i);
i++;
}

0 1 2 3 4 5 6 7 8 9

background image

The do Statement

Execute embedded statements based

on Boolean value

Evaluate Boolean expression at end of

loop

Execute embedded statements while

Boolean value

Is True

int i = 0;
do {
Console.WriteLine(i);
i++;
} while (i < 10);

int i = 0;
do {
Console.WriteLine(i);
i++;
} while (i < 10);

0 1 2 3 4 5 6 7 8 9

background image

The for Statement

Place update information at the start of the

loop

Variables in a for block are scoped only within

the block

A for loop can iterate over several values

for (int i = 0; i < 10; i++) {
Console.WriteLine(i);
}

for (int i = 0; i < 10; i++) {
Console.WriteLine(i);
}

0 1 2 3 4 5 6 7 8 9

for (int i = 0; i < 10; i++)
Console.WriteLine(i);
Console.WriteLine(i); // Error: i is no longer in scope

for (int i = 0; i < 10; i++)
Console.WriteLine(i);
Console.WriteLine(i); // Error: i is no longer in scope

for (int i = 0, j = 0; ... ; i++, j++)

for (int i = 0, j = 0; ... ; i++, j++)

background image

The foreach Statement

Choose the type and name of the

iteration variable

Execute embedded statements for

each element of the collection class

ArrayList numbers = new ArrayList( );
for (int i = 0; i < 10; i++ ) {
numbers.Add(i);
}

foreach (int number in numbers) {
Console.WriteLine(number);
}

ArrayList numbers = new ArrayList( );
for (int i = 0; i < 10; i++ ) {
numbers.Add(i);
}

foreach (int number in numbers) {
Console.WriteLine(number);
}

0 1 2 3 4 5 6 7 8 9

background image

Quiz: Spot the Bugs

for (int i = 0, i < 10, i++)
Console.WriteLine(i);

for (int i = 0, i < 10, i++)
Console.WriteLine(i);

int i = 0;
while (i < 10)
Console.WriteLine(i);

int i = 0;
while (i < 10)
Console.WriteLine(i);

for (int i = 0; i >= 10; i++)
Console.WriteLine(i);

for (int i = 0; i >= 10; i++)
Console.WriteLine(i);

do
...
string line = Console.ReadLine( );
guess = int.Parse(line);
while (guess != answer);

do
...
string line = Console.ReadLine( );
guess = int.Parse(line);
while (guess != answer);

2

2

2

2

3

3

3

3

4

4

4

4

1

1

1

1

background image

Using Jump Statements

The goto Statement

The break and continue Statements

background image

The goto Statement

Flow of control transferred to a

labeled statement

Can easily result in obscure

“spaghetti” code

if (number % 2 == 0) goto Even;
Console.WriteLine("odd");
goto End;
Even:
Console.WriteLine("even");
End:;

if (number % 2 == 0) goto Even;
Console.WriteLine("odd");
goto End;
Even:
Console.WriteLine("even");
End:;

background image

The break and continue Statements

The break statement jumps out of an

iteration

The continue statement jumps to the

next iteration

int i = 0;
while (true) {
Console.WriteLine(i);
i++;
if (i < 10)
continue;
else
break;
}

int i = 0;
while (true) {
Console.WriteLine(i);
i++;
if (i < 10)
continue;
else
break;
}

background image

Lab 4.1: Using Statements

background image

Handling Basic Exceptions

Why Use Exceptions?

Exception Objects

Using try and catch Blocks

Multiple catch Blocks

background image

Why Use Exceptions?

Traditional procedural error handling

is cumbersome

int errorCode = 0;
FileInfo source = new FileInfo("code.cs");
if (errorCode == -1) goto Failed;
int length = (int)source.Length;
if (errorCode == -2) goto Failed;
char[] contents = new char[length];
if (errorCode == -3) goto Failed;
// Succeeded ...
Failed: ...

int errorCode = 0;
FileInfo source = new FileInfo("code.cs");
if (errorCode == -1) goto Failed;
int length = (int)source.Length;
if (errorCode == -2) goto Failed;
char[] contents = new char[length];
if (errorCode == -3) goto Failed;
// Succeeded ...
Failed: ...

Error handling

Error handling

Core program logic

Core program logic

background image

Exception Objects

Exception

Exception

SystemException

SystemException

OutOfMemoryException

OutOfMemoryException

IOException

IOException

NullReferenceException

NullReferenceException

ApplicationException

ApplicationException

background image

Using try and catch Blocks

Object-oriented solution to error

handling

Put the normal code in a try block

Handle the exceptions in a separate

catch block

try {

Console.WriteLine("Enter a number");
int i = int.Parse(Console.ReadLine());

}
catch (OverflowException caught)
{

Console.WriteLine(caught);

}

try {

Console.WriteLine("Enter a number");
int i = int.Parse(Console.ReadLine());

}
catch (OverflowException caught)
{

Console.WriteLine(caught);

}

Error handling

Error handling

Program logic

Program logic

background image

Multiple catch Blocks

Each catch block catches one class of

exception

A try block can have one general catch

block

A try block is not allowed to catch a

class that is derived from a class

caught in an earlier catch block

try
{

Console.WriteLine("Enter first number");
int i = int.Parse(Console.ReadLine());
Console.WriteLine("Enter second number");
int j = int.Parse(Console.ReadLine());
int k = i / j;

}
catch (OverflowException caught) {…}
catch (DivideByZeroException caught) {…}

try
{

Console.WriteLine("Enter first number");
int i = int.Parse(Console.ReadLine());
Console.WriteLine("Enter second number");
int j = int.Parse(Console.ReadLine());
int k = i / j;

}
catch (OverflowException caught) {…}
catch (DivideByZeroException caught) {…}

background image

Raising Exceptions

The throw Statement

The finally Clause

Checking for Arithmetic Overflow

Guidelines for Handling Exceptions

background image

The throw Statement

Throw an appropriate exception

Give the exception a meaningful

message

throw expression ;

throw expression ;

if (minute < 1 || minute >= 60) {
throw new InvalidTimeException(minute +
" is not a valid minute");
// !! Not reached !!
}

if (minute < 1 || minute >= 60) {
throw new InvalidTimeException(minute +
" is not a valid minute");
// !! Not reached !!
}

background image

The finally Clause

All of the statements in a finally block

are always executed

Monitor.Enter(x);
try {
...
}
finally {
Monitor.Exit(x);
}

Monitor.Enter(x);
try {
...
}
finally {
Monitor.Exit(x);
}

Any catch blocks are optional

Any catch blocks are optional

background image

Checking for Arithmetic Overflow

By default, arithmetic overflow is not

checked

A checked statement turns overflow

checking on

checked {
int number = int.MaxValue;
Console.WriteLine(++number);
}

checked {
int number = int.MaxValue;
Console.WriteLine(++number);
}

unchecked {
int number = int.MaxValue;
Console.WriteLine(++number);
}

unchecked {
int number = int.MaxValue;
Console.WriteLine(++number);
}

-2147483648

OverflowException

OverflowException

Exception object is
thrown. WriteLine is
not executed.

MaxValue + 1 is
negative?

background image

Guidelines for Handling Exceptions

Throwing

Avoid exceptions for normal or expected cases

Never create and throw objects of class

Exception

Include a description string in an Exception

object

Throw objects of the most specific class possible

Catching

Arrange catch blocks from specific to general

Do not let exceptions drop off Main

background image

Lab 4.2: Using Exceptions

background image

Review

Introduction to Statements

Using Selection Statements

Using Iteration Statements

Using Jump Statements

Handling Basic Exceptions

Raising Exceptions


Document Outline


Wyszukiwarka

Podobne podstrony:
18 wyklad Metale wiĄzania pierw przejc [F]7 12 04id 17855 ppt
12 04id 13142 ppt
2124C 00id 29199 ppt
2124C 03id 29202 ppt
2124C 01id 29200 ppt
2009 03 25 POZ 04id 26789 ppt
18 wyklad Metale wiĄzania pierw przejc [F]7 12 04id 17855 ppt
03 Sejsmika04 plytkieid 4624 ppt
Choroby układu nerwowego ppt
10 Metody otrzymywania zwierzat transgenicznychid 10950 ppt

więcej podobnych podstron