Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE-105 – Structured Programming CSE, BUET Programming Style CSE 105 Structured Programming Language Presentation - 2 Thanks to Arie Rapoport, cs.huji.ac.il.

Similar presentations


Presentation on theme: "CSE-105 – Structured Programming CSE, BUET Programming Style CSE 105 Structured Programming Language Presentation - 2 Thanks to Arie Rapoport, cs.huji.ac.il."— Presentation transcript:

1 CSE-105 – Structured Programming CSE, BUET Programming Style CSE 105 Structured Programming Language Presentation - 2 Thanks to Arie Rapoport, cs.huji.ac.il

2 CSE-105 – Structured Programming CSE, BUET 2 Word Counting (K n R – 1.5.4) #include #define IN 1/* inside a word */ #define OUT 0/* outside a word */ /* count lines, words, and characters in input */ main( ) { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ((c = getchar()) != EOF) { ++nc; if (c == \n) ++nl; if (c == || c == \n || c == \t) sate = OUT; else if (state == OUT) { state = IN; ++nw; } } printf(%d %d %d\n, nl, nw, nc); } c != EOF Start ++nc; state=OUT nl=nw=nc=0 c = getchar() ++nl c==\n state = OUT c is white- char state== OUT state=IN ++nw print nl,nw,nc End Y N Y N Y N Y

3 CSE-105 – Structured Programming CSE, BUET 3 Program Style Readability Clarity Common sense Right focus

4 CSE-105 – Structured Programming CSE, BUET 4 Whats in a name Example #define ONE 1 #define TEN 10 #define TWENTY 20 More reasonable #define INPUT_MODE 1 #define INPUT_BUFSIZE 10 #define OUTPUT_BUFSIZE 20

5 CSE-105 – Structured Programming CSE, BUET 5 Whats in a name Use descriptive names for global variables int npending = 0; // current length of input queue Naming conventions vary numPending num_pending NumberOfPendingEvents …

6 CSE-105 – Structured Programming CSE, BUET 6 Whats in a name Compare for( theElementIndex = 0; theElementIndex < numberOfElements; theElementIndex++ ) elementArray[theElementIndex] = theElementIndex; and for( i = 0; i < nelems; i++ ) elem[i] = i; Use short names for locals

7 CSE-105 – Structured Programming CSE, BUET 7 Whats in a name Consider int noOfItemsInQ; int frontOfTheQueue; int queueCapacity; … The word queue appears in 3 different ways Be Consistent Follow naming guidelines used by your peers

8 CSE-105 – Structured Programming CSE, BUET 8 Whats in a name Use active name for functions now = getDate() Compare if( checkdigit(c) ) … to if( isdigit(c) ) … Accurate active names makes bugs apparent

9 CSE-105 – Structured Programming CSE, BUET 9 Indentation Use indentation to show structure Compare for(n++; n <100; field[n++] = 0); c = 0; return \n; to for( n++; n <100; n++) field[n] = 0; c = 0; return \n;

10 CSE-105 – Structured Programming CSE, BUET 10 Expressions Use parenthesis to resolve ambiguity Compare leap_year = y % 4 == 0 && y %100 != 0 || y % 400 == 0; to leap_year = ((y % 4 == 0) && (y %100 != 0)) || (y % 400 == 0);

11 CSE-105 – Structured Programming CSE, BUET 11 Statements Use braces to resolve ambiguity Compare if( i < 100 ) x = i; i++; to if( i < 100 ) { x = i; } i++;

12 CSE-105 – Structured Programming CSE, BUET 12 Idioms Do not try to make code interesting i = 0; while( i <= n – 1 ) array[i++] = 1; … for( i = 0; i < n; ) array[i++] = 1; … for( i = n; --i >= 0; ) array[i] = 1; … for( i = 0; i < n; i++ ) array[i] = 1; This is the common idiom that any programmer will recognize

13 CSE-105 – Structured Programming CSE, BUET 13 Idioms Use else if for multi-way decisions if ( cond 1 ) statement 1 else if ( cond 2 ) statement 2 … else if ( cond n ) statement n else default-statement

14 CSE-105 – Structured Programming CSE, BUET 14 Idioms if( x > 0 ) if( y > 0 ) if( x+y < 100 ) {... } else printf(Too large!\n" ); else printf("y too small!\n"); else printf("x too small!\n"); if( x <= 0 ) printf("x too small!\n"); else if( y <= 0 ) printf("y too small!\n"); else if( x+y >= 100 ) printf("Sum too large!\n" ); else {... }

15 CSE-105 – Structured Programming CSE, BUET 15 Comments Dont belabor the obvious // return SUCCESS return SUCCESS; // Initialize total to number_received total = number_received; Test: does comment add something that is not evident from the code

16 CSE-105 – Structured Programming CSE, BUET 16 Comments Document each function // random: return a random integer in [0..r] int random( int r ) { return (int)floor(rand()*r); }

17 CSE-105 – Structured Programming CSE, BUET 17 Comments A more elaborate function comment // // GammaGreaterThanOne( Alpha ) // // Generate a gamma random variable when alpha > 1. // // Assumption: Alpha > 1 // // Reference: Ripley, Stochastic Simulation, p.90 // Chang and Feast, Appl.Stat. (28) p.290 // double GammaGreaterThanOne( double Alpha ) { … }

18 CSE-105 – Structured Programming CSE, BUET 18 Comments Dont comment bad code – rewrite it! … // If result = 0 a match was found so return // true; otherwise return false; return !result; Instead … return matchfound;

19 CSE-105 – Structured Programming CSE, BUET 19 Style recap Descriptive names Clarity in expressions Straightforward flow Readability of code & comments Consistent conventions & idioms

20 CSE-105 – Structured Programming CSE, BUET 20 Why Bother? Good style: Easy to understand code Smaller & polished Makes errors apparent Yields a good grade Sloppy code bad code Hard to read Broken flow Harder to find errors & correct them, maintenance.


Download ppt "CSE-105 – Structured Programming CSE, BUET Programming Style CSE 105 Structured Programming Language Presentation - 2 Thanks to Arie Rapoport, cs.huji.ac.il."

Similar presentations


Ads by Google