esc101: introduction to computing fileesc101, programming conditional expressions an expression that...

31
Esc101, Programming ESC101: Introduction to Computing Conditional Expressions Aug-15 1

Upload: others

Post on 01-Sep-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

ESC101: Introduction to Computing

Conditional Expressions

Aug-15 1

Page 2: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

A Program#include <stdio.h> int main() { float mi, km; // decl without initialization

scanf("%f",&mi); // get miles from user km = mi * 1.609; // compute and store km

printf(“%.3f miles = %.3f kms.\n”, mi, km); // show the answer. return 0; }

1/11/2015 2

Page 3: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Conditional Expressions

An expression that evaluates to either true or false. ■ Often known as Boolean expression.

C does not have a separate Boolean data type■ Value 0 is treated as false.■ Non-zero values are treated as true.

Aug-15 3

Page 4: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Conditional Expressions

If an expression evaluates to true, we get a value 1 ■ Think of 1 as default true valueIf an expression evaluates to false, we get a value 0

Aug-15 4

Page 5: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Relational Operators

Compare two quantities

Work on int, char, float, double…Aug-15 5

Operator Function

> Strictly greater than

>= Greater than or equal to< Strictly less than

<= Less than or equal to== Equal to

!= Not equal to

Page 6: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

ExamplesRel. Expr. Result Remark

3>2 13>3 0

‘z’ > ‘a’ 1 ASCII values used for char2 == 3 0

‘A’ <= 65 1 'A' has ASCII value 65‘A’ == ‘a’ 0 Different ASCII values

(‘a’ – 32) == ‘A’ 15 != 10 1

1.0 == 1 AVOID May give unexpected result due to approximation

Aug-15 6

Avoid mixing int and float values while comparing. Comparison with floats is not exact!

Page 7: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Is a number even or odd

# include <stdio.h> int main(){ int n; int cond; scanf(“%d”,&n); cond = _____; printf(“The result is %d\n”,cond); return 0; }

8/3/2015 7

Page 8: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Is a number even or odd

# include <stdio.h> int main(){ int n; int cond; scanf(“%d”,&n); cond = n%2 == 0; printf(“The result is %d\n”,cond); return 0; }

8/3/2015 8

Page 9: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

! + -

* / %

+ -

< <= > >=== !=

RL

LR

LR

LR

LR

Precedence and Associativity (Refined)

= RL

Page 10: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Conditional Statements

In daily routine■ If it is very cold, I will skip class.

■ If there is a quiz tomorrow, I will first study and then sleep. Otherwise I will sleep now.

■ If I have 500 Rs, I will order pizza. If I have 20 Rs, I will eat Maggi. If I have 5 Rs, I will eat biscuits. If I do not have any money, I will eat in hostel mess.

Aug-15 10

Page 11: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Conditional statements in CThree types of conditional statements in C■ if (condition) action else some-other-action■ if (condition) action■ switch-case

Each action is a sequence of one or more statements

Aug-15 11

Page 12: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Statements and BlocksAn expression such as x=0 or printf(…) becomes a

statement when it is followed by a semi-colon, as in x = 0; printf( … ); 5+2;

Braces { and } are used to group variable declarations and statements together into a compound statement or a block■ Syntactically equivalent to a single statement.■ Can use it anywhere a single statement can be used

Aug-15 12

Page 13: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

A single block

Statements and Blocks

Aug-15 13

{ int x; float y; /* 2 statements */ x = 10; printf(“x = %d\n”, x); }

Page 14: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

if-else statement

Read two integers and print the min.

Aug-15 14

1. Check if x is less than y.

2. If so, print x 3. Otherwise, print y.

# include <stdio.h>int main() {

int x, y; scanf(“%d%d”, &x,&y);

if (x < y) { printf(“%d”, x); } else { printf(“%d”, y); } return 0;}

Page 15: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

# include <stdio.h>int main() {

int x; int y;scanf(“%d%d”, &x,&y);if (x < y) {

printf(“%d\n”,x); }

else { printf(“%d\n”,y);} return 0;}

Input

x y

6 10

6 10

Run the program

6 < 10 so the if-branch is taken Output

6

Tracing Execution of if-else

Aug-15 15

Page 16: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Is a number even or odd• Find the correct conditional expression

# include <stdio.h> int main(){ int n; scanf(“%d”,&n); if( _____ ) printf(“%d is even\n”,n);

else printf(“%d is odd\n”,n); return 0; }

8/3/2015 16

Page 17: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Is a number even or odd

# include <stdio.h> int main(){ int n; scanf(“%d”,&n); if( n%2 == 0) printf(“%d is even\n”,n);

else printf(“%d is odd\n”,n); return 0; }

8/3/2015 17

Page 18: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Is a number even or odd

# include <stdio.h> int main(){ int n; scanf(“%d”,&n); if( n%2 != 0) printf(“%d is odd\n”,n);

else printf(“%d is even\n”,n); return 0; }

8/3/2015 18

Page 19: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

ESC101: Introduction to Computing

Logical Expressions

Aug-15 19

Page 20: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Logical OperatorsLogical Op Function Allowed Types

&& Logical AND char, int, float, double

|| Logical OR char, int, float, double

! Logical NOT char, int, float, double

Aug-15 20

Remember • value 0 represents false.• any other value represents true.

Page 21: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Truth Tables

E1 E2 E1 && E2 E1 || E20 0 0 00 Non-0 0 1

Non-0 0 0 1Non-0 Non-0 1 1

Aug-15 21

E !E0 1

Non-0 0

Page 22: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Examples

Expr Result Remark2 && 3 12 || 0 1

‘A’ && 0 0‘A’ && ‘0’ 1 ASCII value of ‘0’≠0‘A’ && ‘b’ 1

! 0.0 1 0.0 == 0 is guaranteed

! 10.05 0 Any real ≠ 0.0(2<5) && (6>5) 1 Compound exprAug-15 22

Page 23: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

ExamplesYou can create very complex expressions,

involving arithmetic, logical and relational operators, constants, variables, function calls.

Example:

(x + 7 > 93) && !(y + 3 % z)|| (abs(sqrt(w) – g) < epsilon);

Aug-15 23

Page 24: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

int a; int b; int c; int cEven; // count of even inputsscanf(“%d%d%d”, &a,&b,&c); // input a,b,c

// (x%2 == 0) evaluates to 1 if x is Even,// 0 if x is Odd _____________________printf(“Even=%d\nOdd=%d”, cEven, 3-cEven);

ExampleProblem: Input 3 positive integers. Print the

count of inputs that are even and odd.■ Do not use if-then-else

Aug-15 24

INPUT 10 5 3

Page 25: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

int a; int b; int c; int cEven; // count of even inputsscanf(“%d%d%d”, &a,&b,&c); // input a,b,c

// (x%2 == 0) evaluates to 1 if x is Even,// 0 if x is Odd cEven = (a%2 == 0) + (b%2 == 0) + (c%2 == 0); printf(“Even=%d\nOdd=%d”, cEven, 3-cEven);

ExampleProblem: Input 3 positive integers. Print the

count of inputs that are even and odd.■ Do not use if-then-else

Aug-15 25

INPUT 10 5 3

OUTPUT Even=1 Odd=2

Page 26: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

QuestionWhat is the value of expression:

a) Compile time error

b) Run time crash

c) False (0)

d) True (1)

Aug-15 26

0 <= 10 <= 4

Page 27: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Esc101, Programming

Evaluation

Aug-15 27

0 <= 10 <= 4

(0 <= 10) <= 4

1 <= 4

1 /* True */

0 <= 10 && 10 <= 4

(0 <= 10) && (10 <= 4)

(1) && (10 <= 4)

1 && (0)

0 /*False*/

Probably not what you intended. The intended expression is:

Page 28: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

! + -

* / %

+ -

< <= > >=== !=

&&||

RL

LR

LR

LR

LRLR

LRPrecedence and Associativity (Refined)

= RL

Page 29: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

# include <stdio.h> int main(){ char c; scanf(“%c”,&c);

if( ___________ ) printf(“%c is a valid alphabet\n”,c); else

printf(“%c with value %d is not a valid alphabet\n”,c,c);

return 0; }

Esc101, Programming

Is input character a valid alphabet

8/3/2015 29

Page 30: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

# include <stdio.h> int main(){ char c; scanf(“%c”,&c);

if( (c >= ‘a’ && c <=‘z’)|| (c >= ‘A’ && c <=‘Z’) ) printf(“%c is a valid alphabet\n”,c); else

printf(“%c with value %d is not a valid alphabet\n”,c,c);

return 0; }

Esc101, Programming

Is input character a valid alphabet

8/3/2015 30

Page 31: ESC101: Introduction to Computing fileEsc101, Programming Conditional Expressions An expression that evaluates to either true or false. Often known as Boolean expression. C does not

Next classCompound if statements

31