Presentation is loading. Please wait.

Presentation is loading. Please wait.

Module 4: Statements and Exceptions. Overview Introduction to Statements Using Selection Statements Using Iteration Statements Using Jump Statements Handling.

Similar presentations


Presentation on theme: "Module 4: Statements and Exceptions. Overview Introduction to Statements Using Selection Statements Using Iteration Statements Using Jump Statements Handling."— Presentation transcript:

1 Module 4: Statements and Exceptions

2 Overview Introduction to Statements Using Selection Statements Using Iteration Statements Using Jump Statements Handling Basic Exceptions Raising Exceptions

3 Introduction to Statements Statement Blocks Types of Statements

4 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

5 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

6 Using Selection Statements The if Statement Cascading if Statements The switch Statement Quiz: Spot the Bugs

7 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

8 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";

9 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; }

10 Quiz: Spot the Bugs if number % 2 == 0... if (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 :... }

11 Using Iteration Statements The while Statement The do Statement The for Statement The foreach Statement Quiz: Spot the Bugs

12 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++; }

13 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);

14 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); } 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++)

15 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); }

16 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);

17 Using Jump Statements The goto Statement The break and continue Statements

18 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:;

19 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; }

20 Lab 4.1: Using Statements

21 Handling Basic Exceptions Why Use Exceptions? Exception Objects Using try and catch Blocks Multiple catch Blocks

22 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 Core program logic

23 Exception Objects Exception SystemException OutOfMemoryException IOException NullReferenceException ApplicationException

24 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 Program logic

25 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) {…}

26 Raising Exceptions The throw Statement The finally Clause Checking for Arithmetic Overflow Guidelines for Handling Exceptions

27 The throw Statement Throw an appropriate exception Give the exception a meaningful message throw expression ; if (minute = 60) { throw new InvalidTimeException(minute + " is not a valid minute"); // !! Not reached !! } if (minute = 60) { throw new InvalidTimeException(minute + " is not a valid minute"); // !! Not reached !! }

28 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

29 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); } OverflowException Exception object is thrown. WriteLine is not executed. MaxValue + 1 is negative?

30 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

31 Lab 4.2: Using Exceptions

32 Review Introduction to Statements Using Selection Statements Using Iteration Statements Using Jump Statements Handling Basic Exceptions Raising Exceptions


Download ppt "Module 4: Statements and Exceptions. Overview Introduction to Statements Using Selection Statements Using Iteration Statements Using Jump Statements Handling."

Similar presentations


Ads by Google