Selection Hussein Suleman UCT Dept of Computer Science CS115 ~ 2004.

Slides:



Advertisements
Similar presentations
Black box testing  Black box tests focus on the input/output behavior of the component  Black-box tests do not deal with the internal aspects of the.
Advertisements

Chapter 5 Selection Statements. Topics Controlling program flow selection –if –switch Boolean expressions –boolean primitive type –comparison operators.
1 Chapter 4 Language Fundamentals. 2 Identifiers Program parts such as packages, classes, and class members have names, which are formally known as identifiers.
Selection Statements choice of one among several blocks of code Java supports 3 kinds of selection statements: if statement – selects one block or leaves.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 4: Control Structures I (Selection)
C++ for Engineers and Scientists Third Edition
Slides prepared by Rose Williams, Binghamton University Chapter 3 Flow of Control if-else and switch statements.
The switch Statement, DecimalFormat, and Introduction to Looping
System/Software Testing
Flow of Control Java Programming Mrs. C. Furman January 5, 2009.
CONTROL STATEMENTS IF-ELSE, SWITCH- CASE Introduction to Computer Science I - COMP 1005, 1405 Instructor : Behnam Hajian
DEPARTMENT OF COMPUTER SCIENCE & TECHNOLOGY FACULTY OF SCIENCE & TECHNOLOGY UNIVERSITY OF UWA WELLASSA 1 CST 221 OBJECT ORIENTED PROGRAMMING(OOP) ( 2 CREDITS.
1 Chapter 4: Selection Structures. In this chapter, you will learn about: – Selection criteria – The if-else statement – Nested if statements – The switch.
Chapter 4: Control Structures I (Selection). Objectives In this chapter, you will: – Learn about control structures – Examine relational operators – Discover.
Computer Science Department Relational Operators And Decisions.
Chapter 4: Control Structures I (Selection). Objectives In this chapter, you will: – Learn about control structures – Examine relational and logical operators.
CPS120: Introduction to Computer Science Decision Making in Programs.
CIS 234: Control Structures - Selection Dr. Ralph D. Westfall April, 2010.
1 Conditions Logical Expressions Selection Control Structures Chapter 5.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Flow of Control Part 1: Selection
Making Decisions Chapter 5.  Thus far we have created classes and performed basic mathematical operations  Consider our ComputeArea.java program to.
CPS120: Introduction to Computer Science Decision Making in Programs.
1 COMS 261 Computer Science I Title: C++ Fundamentals Date: September 21, 2005 Lecture Number: 10.
1 2. Program Construction in Java. 2.4 Selection (decisions)
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Selection Statements Selection Switch Conditional.
CSE 1301 Lecture 8 Conditionals & Boolean Expressions Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Chapter 7 Selection Dept of Computer Engineering Khon Kaen University.
Java Basics Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
Conditional Statements © Copyright 2014, Fred McClurg All Rights Reserved.
Iteration Hussein Suleman UCT Dept of Computer Science CS115 ~ 2004.
Selection Hussein Suleman UCT Dept of Computer Science CS115 ~ 2003.
Copyright Curt Hill The C/C++ switch Statement A multi-path decision statement.
Sections © Copyright by Pearson Education, Inc. All Rights Reserved.
Java Programming Fifth Edition Chapter 5 Making Decisions.
Chapter 5: Making Decisions. Objectives Plan decision-making logic Make decisions with the if and if…else structures Use multiple statements in if and.
1 CS161 Introduction to Computer Science Topic #8.
Chapter 4: Control Structures I (Selection). Objectives In this chapter, you will: – Learn about control structures – Examine relational and logical operators.
CSCI 171 Presentation 3. Operators Instructs C to perform some operation Assignment = Mathematical Relational Logical.
CPS120: Introduction to Computer Science Decision Making in Programs.
An Object-Oriented Approach to Programming Logic and Design Chapter 5 Making Decisions.
Selection statements Repetition statements. Lesson plan Main concepts Practice session –If- then –Switch –Nested if.
Decision Statements, Short- Circuit Evaluation, Errors.
Chapter 7 Conditional Statements. 7.1 Conditional Expressions Conditions - compare the values of variables, constants and literals using one or more relational.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
CPS120: Introduction to Computer Science Decision Making in Programs.
4 - Conditional Control Structures CHAPTER 4. Introduction A Program is usually not limited to a linear sequence of instructions. In real life, a programme.
Design A software design specifies how a program will accomplish its requirements A design includes one or more algorithms to accomplish its goal.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
Program Control: Selection Subject: T0016 – ALGORITHM AND PROGRAMMING Year: 2013.
Debugging and Testing Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
C++ for Engineers and Scientists Second Edition Chapter 4 Selection Structures.
UCT Department of Computer Science Computer Science 1015F Iteration
Selection UCT Department of Computer Science Computer Science 1015F Hussein Suleman March 2009.
Testing and Debugging UCT Department of Computer Science Computer Science 1015F Hussein Suleman March 2009.
Information and Computer Sciences University of Hawaii, Manoa
Java Programming Fifth Edition
More on the Selection Structure
Week 3 - Friday CS222.
Selections Java.
The switch Statement, and Introduction to Looping
Control Structures Combine individual statements into a single logical unit with one entry point and one exit point. Used to regulate the flow of execution.
Lecture 3- Decision Structures
Selection UCT Department of Computer Science Computer Science 1015F
Expressions and Control Flow in JavaScript
Control Structures – Selection
Expression Review what is the result and type of these expressions?
Chapter 4: Control Structures I (Selection)
Controlling Program Flow
3.0 - Design A software design specifies how a program will accomplish its requirements A design includes one or more algorithms to accomplish its goal.
Presentation transcript:

Selection Hussein Suleman UCT Dept of Computer Science CS115 ~ 2004

UCT-CS What is Selection? Making choices in the flow of execution of a program  e.g., if it is a leap year then there are 29 days in February – otherwise there are 28 leap year? February has 29 days February has 28 days yes no

UCT-CS Conditional expressions Selections are made on the basis of expressions that must evaluate to true or false (boolean) Relational operators always return boolean values, e.g.:  answer > 1.0  numberOfPeople <= 14  month == 12 // note: this is not the same as “=”  date != 13 // not equal  money >= 5000

UCT-CS The “if” statement if (boolean_expression) { statements … } else { statements … }

UCT-CS Example usage if (month == 12) { System.out.println (“Hoorah! No classes”); } else { System.out.println (“:-(”); }

UCT-CS Another example if (year < 2000) { fearFactor = 1; } else { fearFactor = 0; } if (fearFactor == 1) { System.out.println (“be afraid – be very afraid”); } else { System.out.println (“it’s OK! no Y2K bug!”); }

UCT-CS Shortcuts I No else part if (numberOfStudents > 150) { System.out.println (“Full!”); } year-end? Bonus cheque !! yes no

UCT-CS Shortcuts II Only one statement in block – can leave out the braces if (numberOfStudents > 150) System.out.println (“Full!”); else System.out.println (“Not full”);

UCT-CS More Data Types char – stores a single character  char literals are enclosed in single quotes  e.g., char aLetter = ‘a’; boolean – stores only true or false values  e.g., boolean iLikeCSC115 = true; if (iLikeCSC115) { iEatWeetbix = true; }

UCT-CS Issues with Strings You cannot compare two strings like other types of data  i.e., “Hello” == “Hello” may not work ! Instead, use methods in String class  “Hello”.compareTo(“Hello”) == 0  “Hello”.equals (“Hello”)  aString.compareTo (“somevalue”) == 0  aString.equals (“somevalue”)

UCT-CS Nested “if” statement String password = Keyboard.readString(); if (password.equals (realPassword)) { if (name.equals (“admin”)) { loggedIn = superPrivileges = true; } else { System.out.println (“Error”); }

UCT-CS Dangling Else Compiler cannot determine which “if” an “else” belongs to if there are no braces String password = Keyboard.readString(); if (password.equals (realPassword)) if (name.equals (“admin”)) loggedIn = superPrivileges = true; else System.out.println (“Error”); Java matches else with last unfinished if Moral: Use shortcuts at your own risk – or don’t !

UCT-CS Multiway selection Multiple conditions, each of which causes a different block of statements to execute Can be used where there are more than 2 options if (condition1) { statements … } else { if (condition2) { statements … } else … }

UCT-CS “if” ladder Just a nicer way to write multiway selection if (operation == ‘a’) { answer = first + second; } else if (operation == ‘s’) { answer = first – second; } else if (operation == ‘m’) { answer = first * second; }

UCT-CS The “switch” statement Selects among different statements based on a single integer or character expression Each set of statements starts in “case” and ends in “break” because switch does not use {}s  break passes control to statement immediately after switch “default” applies if none of the cases match

UCT-CS Sample switch statement switch (SouperSandwichOrder) { case 1 : cheese = 1; break; case 2 : cheese = 1; chicken = 1; break; case 3 : cheese = 1; chicken = 1; chilli = 1; break; default : cheese = 1; break; }

UCT-CS “break” optimisation If break is omitted, control continues to next statement in the switch switch (SouperSandwichOrder) { case 3 : chukka = 1; case 2 : tomato = 1; case 1 : default : cheese = 1; }

UCT-CS Characters in “switch” char Operation = Keyboard.readChar (“What to do?”); switch (Operation) { case ‘a’ : answer = a + b; break; case ‘s’ : answer = a – b; break; case ‘m’ : answer = a * b; break; case ‘d’ : if (b != 0) { answer = a / b; break; } default : answer = 0; System.out.println (“Error”); break; }

UCT-CS Boolean operators Boolean Algebra JavaMeaning AND&&true if both parameters are true OR||true if at least one parameter is true NOT!true if parameter is false; false if parameter is true;

UCT-CS Operator precedence Now that we have seen how operators can be mixed, we need precedence rules for all operators  () (highest precedence – performed first)  !  * / %  + -  >=  == !=  &&  ||  = (lowest precedence – performed last)

UCT-CS Reversing expressions Use ! operator to reverse meaning of boolean expression, e.g., if (mark >= 0) { // do nothing } else System.out.println (“Error”); Instead, invert the condition if (! (mark >= 0)) System.out.println (“Error”); Can we do better ?

UCT-CS Boolean operator example boolean inClassroom, isRaining; … if (inClassroom && isRaining) System.out.println (“Lucky!”); … if (! inClassroom && isRaining) System.out.println (“Wet and miserable!”); … if (! isRaining && ! inClassroom) System.out.println (“Happy!”);

UCT-CS Boolean expression example int marks; char symbol; … if (marks >= 75) symbol = ‘A’; … if (marks >= 65 && marks <75) symbol = ‘B’; … if (marks 100) { symbol = ‘X’; System.out.println (“Invalid mark!”); }

UCT-CS DeMorgan’s Laws !(A && B) = !A || !B !(A || B) = !A && !B Invert the whole expression, the operators and the operands  !(A … B)  (A … B)  A  !A  &&  || Use this tranformation to simplify expressions by removing “!”s wherever possible

UCT-CS Simplification Apply DeMorgan’s Laws to simplify (! (mark >= 0 && mark <= 100)) (! (mark >= 0)) || (! (mark <= 100)) (mark 100) Apply DeMorgan’s Laws to simplify ! ( salary < || ! me.bigChief ()) (! (salary < 10000)) && (!! me.bigChief ()) salary >= && me.bigChief ()

UCT-CS Errors and testing Quick Poll In a typical hour spent programming, how many minutes do you spend fixing errors?

UCT-CS Errors What is an error?  When your program does not behave as intended or expected What is a bug?  “…a bug crept into my program …” Debugging  the art of removing bugs

UCT-CS Types of Errors Compile-time Error  Discovered by Java when you hit “compile”  Improper use of Java language  e.g., int x + 1; Run-time Error  Program compiles but does not execute as expected  e.g., int x=0, y = 15/x;

UCT-CS Types of Errors II Logic Error  Program compiles and runs but produces incorrect results - because of a flaw in the algorithm or implementation of algorithm int a = Keyboard.readInt(); int b = Keyboard.readInt(); int maximum; if (a < b) { maximum = a; } else { maximum = b; }

UCT-CS Testing Methods Programs must be thoroughly tested for all possible input/output values to make sure the programs behaves correctly But how do we test for all values of integers? int a = Keyboard.readInt(); if (a 100) { System.out.println (“Error”); }

UCT-CS Equivalence Classes Group input values into sets with similar expected behaviour and choose candidate values  e.g., -50, 50, 150 Choose values at and on either side of boundaries (boundary value analysis)  e.g., 0, 1, 2, 99, 100, 101

UCT-CS Path Testing Create test cases to test every path of execution of the program at least once int a = Keyboard.readInt(); if (a 100) { System.out.println (“Error”); } Path 1: a=35Path 2: a=-5

UCT-CS Statement Coverage What if we had: Rather than test all paths, test all statements at least once  e.g., (a,b) = (10, 10), (50, 50) if (a < 25) { System.out.println (“Error in a”); } if (b < 25) { System.out.println (“Error in b”); }

UCT-CS Quick Poll So, which of these is the best testing approach to use? 1. Exhaustive testing of all values 2. Equivalence classes and boundary values 3. Path testing 4. Statement coverage

UCT-CS Glass and Black Boxes If you can create your test cases based on only the problem specification, this is black box testing. If you have to look at the code, this is glass box testing. Which categories do these fall in: Equivalence classes/boundary values Path coverage Statement coverage

UCT-CS Intro to Artificial Intelligence What is AI?  making machines appear to be intelligent Did you see the movie? Various approaches taken  complex algorithms  representating knowledge in a natural way  simulating the brain  simulating mother nature (e.g., evolution)

UCT-CS Neural Networks Can we simulate the brain by creating neuron “objects” and linking them together? How does the brain learn? and how does it recall information? Example:  EasyNN

UCT-CS The Turing Test If you put a machine and a computer behind a screen and communicate with them, can you figure out which is which? Famous example:  ELIZA