SwitchandlomahsjhASSJjajdjsdjdjjjop.pptx

AnanyaSingh813245 7 views 52 slides Sep 02, 2024
Slide 1
Slide 1 of 52
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52

About This Presentation

operat


Slide Content

Control Flow of Program 1

Outline Program flow control – If‐else – Switch case – Looping : while, for, do‐while Looping : while, for, do‐while Problem Solving 2

Structured Programming All programs can be written in terms of only three control structures Sequence, selection and repetition The sequence structure Unless otherwise directed, the statements are executed in the order in which they are written. The selection structure Used to choose among alternative courses of action. The repetition structur e Allows an action to be repeated while some condition remains true.

Sequential Execution Statement 1 Statement 2 ... Statement n

Selective Execution : Flow chart (only if) true Boolean Exp r ession Statement 1 Statement S

Selective Execution : Flow chart Boolean Expr true f a lse statement 1 statement 2

Selection: the if‐else statement if ( condition ){ statement(s) /* if clause */ } else { stat ement ( s ) /* else clause */ }

Nesting of if‐else Statements if ( condition 1 ) { statement(s) } else if ( condition 2 ) { statement(s) } . . . /* more else clauses may be here */ else { statement(s) /* the default case */ }

Bad Example : 2 if 1 else if ( n > ) if ( a > b ) z=a ; else z=b ; if ( n > ) { if (a> b) if ( n > ) z=a; if ( a > b ) z=a; } else z=b; else z=b; Indentation will not ensure result : else match with closest if Code of Red box behaves like Code of Green box

In Assembly language: No if‐else Assembly language No support for [if else, No for loop, No while loop] All higher construct get implemented using if and goto statement goto statement uses Label If else get converted to if goto if (a> b ) z=a; else z=b; NextStmt ; 11 if (a>b) goto L1: z=b; goto L2: L1: z=a; L2: Next stmt

In Assembly language: No if‐else if (a>b) goto L1: z=b; goto L2: L1: z=a; L2: Next stmt 12

Multi‐way if else : switch case If‐else : two way, if part and else part To make it multi‐way: nested if‐else Confusing, lengthy C language provide Switch case Multi way selection Range multi‐way selection 13

The switch Multiple‐Selection Structure switch Useful when expression is tested for multiple values Consi s t s o f a serie s o f cas e label s an d an optional defaul t c ase – brea k i s (almo s t al w a y s) necessary switch (<expression>){ case <Value1> : <Action/Stmts for Value1>; break ; case <Value2> : <Action/Stmts for Value2>; break ; . . . default : <Action/Stmts for DefaultValue>; break ; }

Flowchart of Switch Statement true case a action(s) break case b action(s) break true break true case z action(s) case a false case b false . . . case z false default action(s)

Multiway Switch Selection example int main(){//simple calculator int a=50,b=10, R; char choice; printf(“Enter choice”); scanf(“%c”,&choice); switch (choice){ case ‘a’ : R=a+b; printf(“R=%d”,R); break ; case ‘s’ : R=a-b; printf(“R=%d”,R); break ; case ‘m’ : R=a*b; printf(“R=%d”,R); break ; case ‘d’ : R=a/b; printf(“R=%d”,R); break ; : printf(“Wrong choice”) ; break ; default } return 0; }

Multiway Switch Selection example int main(){//simple calculator int a=50,b=10, R; char choice; printf(“Enter choice”); scanf(“%c”,&choice); switch (choice){ case ‘a’ : R=a+b; printf(“R=%d”,R); break ; case ‘s’ : R=a-b; printf(“R=%d”,R); break ; case ‘m’ : R=a*b; printf(“R=%d”,R); break ; case ‘d’ : R=a/b; printf(“R=%d”,R); break ; : printf(“Wrong choice”) ; break ; default } return 0; }

Multiway Switch Selection example switch (choice){ case ‘A’ : // no break, work for both A & a ‘ ‘ ’ ’ “ “ ” ” // next statement automatically // get executed case ‘a’ : R=a+b; printf(“R=%d”,R); break ; case ‘S’ : case s : R=a-b; printf( R=%d ,R); break ; case ‘M’ : case ‘m’ : R=a*b; printf(“R=%d”,R); break ; case ‘D’ : case ‘d’ : R=a/b; printf(“R=%d”,R); break ; default : printf(“Wrong choice”) ; break ; }

Range Multiway Switch Selection example int x; scanf(“%d”,&x); switch (x){ case 1 ... 20: // 1 space three dots space 20 printf(“You entered >=1 and <=20”); break ; case 21 ... 30 : printf(“You entered >=21 and <=30”); break ; defaul t : printf(“You entered < 1 and >31”) ; break ; } Synta x = cas e <low_range > .. . <high_range > :

Loops and Repetition Loops in programs allow us to repeat blocks of code Useful for: Counting Repetitive activities Programs that never end Because of looping feature of computer We also name “Computer” as “Machine” (which can do repetitive mechanical work for us)

Three Types of Loops/Repetition in C while – top‐tested loop (pretest) for – counting loop – forever‐sentinel do – bottom‐tested loop (posttest)

Th e while loop Top‐tested loop (pre‐test) while (condition) statement; Note that, as in IF selection, only one statement is executed. You need a block to repeat more than one statement (using { }) while (condition){ statements; }

while(condition)statement; c ondition true statements f a l se

Similar to the if statement Check the Boolean condition If true, execute the statement/block Repeat the above until the Boolean is false

In Assembly language: No while loop Assembly language No support for [ while loop] All higher construct get implemented using if and goto statement goto statement uses Label while get converte d to if goto while (Cond){ STMTS; } Next STMT; 25 L1: if (!Cond) goto L2; STMTS; goto L1; L2:Next STMT

While statement using goto L1: if (!C) goto L2 condition Statements true f a lse statements goto L1 L2 :

While loop f al s e whil e (condition) statement; c o ndit i on true statements whil e (condition){ statement1; statement2; } int i = 10; while (i > 0) { printf("i=%d\n", i); i = i ‐ 1; }

Forever loops and never loops Because the conditional can be – “always true” : you can get a loop that runs forever – or “always false”, you can get a loop never runs at all. int count=0; while (count !=0) printf(“Hi .. \n”); // never prints while (count=1 ) //insidious error!!! count = 0; What is wrong with these statements?

How to count using while First, outside the loop, initialize the counter variable Test for the counter’s value in the Boolean Do the body of the loop Last thing in the body should change the value of the counter! i = 1; whil e (i <= 10) { 1. 2. 3. 4. printf("i=%d\n", i); i = i + 1; }

The for loop Th e while loo p is p r e t t y g e n e r a l. – Anything that can be done using repetition can be done with a while loop Because counting is so common – There is a specialized construct – Called : for loop . for loop – Makes it easy to set up a counting loop

For loop: Three parts Three parts to a for loop (just like the while): Set the initial value for the counter Set the condition for the counter Set how the counter changes each time through the loop for ( count=1; count<=5; count++ ){ statement; }

For Loop: Example for (count=1; count<=5; count++) printf(“count=%d\n”, count); count = 1 false count <= 5 true printf count ++

For loop: Ascending for ctrl_var = init_val for ( ctrl_var=init_val; ctrl_var <=limit_val; ctrl_var++) { statement; } c n tr l _ v a r true f a lse <= limit_val statement ctrl_var ++

For Loop : Descending for for ( ctrl_var=init_val; ctrl_var >=limit_val; ctrl_var‐‐) { statement; ctrl_var = init_val } cntrl_var >= limit_val true f alse statement ctrl_var ‐‐

Precaution in Coding Dangerous to alter within the body of the loop control variable ctrl_var limit_var Components of the for statement can be a arbitrary statements e.g. the loop condition may be a function call.

For loop : Examples " " for (i=1; i<=10; i++){ printf( % \n , i); } i = 1 i <= 10 true f a lse pri n tf i ++

For loop Examples : Float ctrl variable for (t=1.7; t<3.5; t=t+0.1){ printf("%f\n", t); } t = 1.7 t < 3.5 true f a l se printf t=t+0.1

For Loop: “one off” error It is easy to get a for loop to be “one off” of the number you want. Be careful of the combination of init_value and < vs. <= – for (i=0; i<10; i++) – for (i=0; i<=10; i++) – for (i=1; i<10; i++) for (i=1; i<=10; i++)

For Loop: “one off” error It is easy to get a for loop to be “one off” of the number you want. Be careful of the combination of init_value and < vs. <= – for (i=0; i<10; i++) – for (i=0; i<=10; i++) values: to 9 values: to 10 9 values: 1 to 9 – for (i=1; i<10; i++) – for (i=1; i<=10; i++) 10 values: 1 to 10 Counting from 0, with <, is a good combination and good for invariants as well – As array indexing in C start with 0 : will be discussed later

Nested For loop : Examples i= 1 for (i=1; i<5; i++){ for (j=1; j<4; j++){ printf("%d * %d = %d\n", i, j, i*j); } } j= 1 i < 5 true f al s e f a ls e FOR LOOP j< 4 pri n tf true i + + J + +

Equivalence of top‐tested while loop and for loop The following loop for (x=init; x<=limit; x++){ statement_list } Is equivalent to x=init; while (x<=limit) { statement_list; x++; }

F o r ‐ ev e r or i n fini t e loop Used for event driven case Mostly event break the infinite loop using break statement : coming out of the loop while ( 1 ) { /* Loop until value is valid */ } for (;;) { /* Loop without testing */ }

F o r ‐ ev e r or i n fini t e loop Used for event driven case Mostly event break the infinite loop using break statement while ( 1 ) { scanf(“%c”,&c); if (c==‘e’ || c==‘E’) { printf(“\nEntered the required character e or E\n”); brea k ; / / c om i n g ou t o f the loop } printf(“%c”,c); }

F o r ‐ ev e r or i n fini t e loop Used for event driven case Mostly event break the infinite loop using break statement for (;;) { scanf(“%c”,&c); if (c==‘e’ || c==‘E’) { printf(“\nEntered the required character e or E\n”); brea k ; / / c om i n g ou t o f the loop } printf(“%c”,c); }

Finite for loop with : break i = 1 printf("%d, ", i); if(i==5) break ; f a lse } i <= 10 true 1, 2, 3, 4, 5, pri n tf true i == 5 / / c o min g ou t o f the loop false i ++

Finite while loop w it h : break i=0; i = f a lse while (i<=10){ printf("%d, ", i); if(i==5) break ; i=i+1; } i <= 10 true pri n tf true 0, 1, 2, 3, 4, 5, i == 5 f a lse / / c o min g ou t o f the loop i=i+1

Finite for loop w it h : continue i = 1 if(i==5) continue ; printf("%d\n", i); f a lse } i <= 10 true true 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, i == 5 f a lse printf // Skip a case if condition satisfied i ++

Finite while loop with : continue i = true f a ls e i=0; Whil e (i<=10){ i++; if(i==5) continue ; printf("%d, ", i); i <= 10 } i ++ true 1, 2, 3, 4, 6, 7, 8, 9, 10, i == 5 f a lse printf // Skip a case if condition satisfied

The do‐while loop bottom‐tested loop (posttest) One trip through loop is guaranteed, i.e. statement is executed at least once do statement while (loop_condition); Usually! do { statement1; statement2; } while (loop_condition);

do‐while loop do { statement; } while (condition); statement; condition true false

do loop Examples i = 0; do { i++; printf("%d\n", i); } while (i < 10); do { printf("Enter a value>0: "); scanf("%lf", &val); } while (val <= 0);

Bottom‐tested Equivalence Bottom‐tested do loop (posttest) do { statement; } while (condition); Similar to bottom‐tested forever loop for (;;) { statement_list; if (!condition) break ; }

Than k s 53
Tags