Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 5 Introduction to Programming in C Arne Kutzner Hanyang University / Seoul Korea.

Similar presentations


Presentation on theme: "Lecture 5 Introduction to Programming in C Arne Kutzner Hanyang University / Seoul Korea."— Presentation transcript:

1 Lecture 5 Introduction to Programming in C Arne Kutzner Hanyang University / Seoul Korea

2 Further loop structures: for structures, do-while statements

3 Introduction to CL3.3 for structure Syntax: For-loops have three loop control statements: –Initialization of the loop control variable. –Test of the loop repetition condition –Update of the loop variable for( initialization; loop_repetition_condition; update ) statement;

4 Introduction to CL3.4 for structure with compound Syntax: for( initialization; loop_repetition_condition; update ) {statement_1; statement_2; … statement_n; }

5 Introduction to CL3.5 for structure (cont.) Any for-loop may be represented as while- loop as follows: for (stat1; expr2; stat3) { statement; } stat1; while (expr2) { statement; stat3; }

6 Introduction to CL3.6 Example while versus for i = 0; while (i < N) { printf("*"); i = i + 1; } initialization update loop repetition condition for (i = 0; i < N; i = i + 1) printf("*"); initialization loop repetition condition update statement

7 Introduction to CL3.7 Caution: common error The following loop does not sum up the values from 0 to n. (only up to n – 1) for (i=0; i<n; i = i + 1) sum = sum + i;

8 Introduction to CL3.8 Caution (weird C) Adding a semicolon at the end of the for clause before the loop body is a common mistake: int i; for (i = 0; i < 10; i = i + 1); { printf("i is %d", i); } Wrong

9 Introduction to CL3.9 do-while Statement Syntax The for and while statements both evaluate the loop repetition condition before the execution of the loop body The do-while loop checks the repetition condition at the end of the loop body do { statement_1; statement_2; … statement_n; } while (loop_repetition_condition);

10 Introduction to CL3.10 while versus do-while do { printf("Enter a letter from A to Z>"); scanf("%c", &letter_choice); } while (letter_choice => 'A' && letter_choice <= 'Z'); printf("Enter a letter from A to Z>"); scanf("%c", &letter_choice); while (letter_choice => 'A' && letter_choice <= 'Z') { printf("Enter a letter from A to Z>"); scanf("%c", &letter_choice); };

11 Introduction to CL3.11 Caution (weird C) The problem with while, do-while and the semicolon. int i=0; while (i<10); { printf("i is %d", i); i = i + 1; } In the case of the do loop, the following semicolon is needed to end the loop. int i=0; do { printf("i is %d“, i); i = i + 1; } while (i<10); Wrong Correct

12 break, continue and goto

13 Introduction to CL3.13 break and continue Statements A break statement causes the innermost enclosing loop to be exited immediately. continue causes the next iteration of the enclosing for, while, or do-while loop to begin. When continue statement is used in while and do-while loops, then this means that the condition part is executed immediately; in the for loop, control passes to loop variable update step.

14 Introduction to CL3.14 Flowchart continue statement (for while loop) false true Statement(s) Next Statement Continue condition? Statement(s) continue;

15 Introduction to CL3.15 Flowchart break statement (for while loop) false true Statement(s) Next Statement Continue condition? Statement(s) break;

16 Introduction to CL3.16 Example continue In the above program the sum of all odd numbers from 1 to 99 is calculated. int sum = 0; int n = 1; while (n <= 100) { if ((n % 2) == 0) { n = n + 1; continue; } sum = sum + n; n = n + 1; }

17 Introduction to CL3.17 The goto statement General Syntax: goto label; … label: … The goto statement is only for very special situations and almost never used. If the program flow reaches the goto statement it continues at the position marked with label:

18 Introduction to CL3.18 The goto statement (cont.) Example: for (…) for (…) { … if (disaster) goto error; } … error: error related code

19 switch Structures

20 Introduction to CL3.20 switch structure Syntax switch (expression) { case const-expr : statements; break; case const-expr : statements; break; … default : statements; }

21 Introduction to CL3.21 switch structure To select one of several alternatives. Selection is based on the value of an expression. Expression can be a single value. The type of expression can be either int or char, but not double.

22 Introduction to CL3.22 switch structure / Flow diagram case A case A actions true false break case B case B actions true false break case N case N actions true false break default actions

23 Introduction to CL3.23 switch structure (Example) switch (class) { case 'B': case 'b': printf ("Battleship\n"); break; case 'C': case 'c': printf ("Cruiser\n"); break; case 'D': case 'd': printf ("Destroyer\n"); break; case 'F': case 'f': printf ("Frigate\n"); break; default: printf ("Unknown ship class%c\n", class); }

24 Conditional Operator, decrement and increment Operators, Shortcut assignments

25 Introduction to CL3.25 Conditional Operator General form: (booleanExp) ? exp1 : exp2 Example: if (x > 0) y = 1 else y = -1; is equivalent to y = (x > 0) ? 1 : -1; Ternary operator

26 Introduction to CL3.26 Increment and Decrement Operators

27 Introduction to CL3.27 Increment and Decrement Operators, cont. int i=10; int newNum = 10*(i++); int newNum = 10*i; i = i + 1; Equivalent to int i=10; int newNum = 10*(++i); i = i + 1; int newNum = 10*i; Equivalent to

28 Introduction to CL3.28 Shortcut Assignment Operators OperatorExampleEquivalent +=i+=8i = i+8 -=f-=8.0f = f-8.0 *=i*=8i = i*8 /=i/=8i = i/8 %=i%=8i = i%8

29 Functions

30 Introduction to CL3.30 Functions: Introduction Functions are program modules written to –avoid the repetition of identical code parts –solve “a bigger problem” by decomposing it into “smaller problems” Example: A Function max that delivers the maximum of two values. Functions 1.take one or several arguments, 2.compute some statements and 3.return a single value

31 Introduction to CL3.31 Function Definition in C Syntax data_type identifier (arg_1, arg_2,…) { local variable declarations executable statements } Function name (identifier) Formal Arguments Data type of the returned value

32 Introduction to CL3.32 Function Arguments / Local Variables Syntax of a single formal argument: data_type identifier Local variables are variables that are known inside a function only –Different functions may have local variables with identical names

33 Introduction to CL3.33 Scope of Local Variables Scope of a variable: The part of the program where a variable can be referenced. The scope of a local variable starts from its declaration and continues to the end of the function that contains the variable.

34 Introduction to CL3.34 The return statement Functions return a single value using the return statement. Syntax: return expression ;

35 Introduction to CL3.35 Example: max function int max (int i, int j) { int m; if (i > j) m = i; else m = j; return m; } Local variable definition

36 Introduction to CL3.36 Function Calls Syntax: function_name(arg1, arg2, …); –Actual arguments may be constants, variables, or expressions. –Example of function call max(a, b) –Example of function call plus assignment x = max(a, b); actual arguments

37 Introduction to CL3.37 Example Function Call pass i pass j int max (int i, int j) { int m; if (i > j) m = i; else m = j; return m; } void main() { int a, b, x; a = 5; b = 2; x = max (a, b); printf("%d", x); }

38 Introduction to CL3.38 Example Function Call, cont. The main method a: b: x: The max method i: j: m: pass 5 5 2 5 5 2 5 pass 2 parameters return value The values of a and b are copied to i and j.Graphically:

39 Introduction to CL3.39 Call by Value Semantic Because the arguments are copied in C we talk of a call by value semantic

40 Introduction to CL3.40 Function without Returned Value Syntax void fname (arg1, arg2, …) { local variable declarations executable statements } The keyword void indicates that the function does not return any value

41 Introduction to CL3.41 Iterative Programming The factorial function can be programmed by a for loop as follows: int factorial(int x) { int prod, i; prod = 1; for (i = 1; i <= x; i = i + 1) prod = prod * i; return prod; } Such a loop-based solution is called a “iterative programming”

42 Introduction to CL3.42 Recursion A function can call itself inside its body. Example factorial function: int factorial(int x) { if (x > 1) return x * factorial(x - 1); else return 1; } This programming technique is called Recursion Recursive call of factorial

43 Introduction to CL3.43 Computing Factorial, cont. Main function: factorial (4) factorial (4) = 4*factorial(3) factorial (3) = 3*factorial(2) factorial (2) = 2*factorial(1) factorial (1) = 1*factorial(0) factorial (0) = 1 factorial(4) is called in the main Step 5: factorial(0) returns 1 Step 1: factorial(4) calls factorial(3) Step 2: factorial(3) calls factorial(2) Step 3: factorial(2) calls factorial(1) Step 4: factorial(1) calls factorial(0) Step 6: factorial(1) returns 1 (1*1) Step 7: factorial(2) returns 2 (2*1) Step 8: factorial(3) returns 6 (3*2) Step 9: factorial(4) returns 24 (4*6)

44 Introduction to CL3.44 Function Declarations Function declaration format return-value-type function-name (arguments'-type); return-value-type: data type of the result (default int) –void indicates that the function returns nothing function-name: any valid identifier Arguments' type: comma separated list of arguments' type

45 Introduction to CL3.45 Example: Function declaration and definition in a program A function named example that takes 2 arguments of type double and returns no data, would look like: double example(double, int); int main() { … } double example (double a, int b); { … }

46 Introduction to CL3.46 Predefined Library Functions Functions that are implemented as a part of C toolkit. Example: printf If a library function is used, then the corresponding header file should be included at the top of the program using an appropriate preprocessor directive. Example: #include for printf function.

47 Introduction to CL3.47 Some Mathematical Library Functions Defined in math.h FunctionPurpose double ceil(double x) returns the smallest integer greater than x double exp(double x) returns double fabs(double x) returns the absolute value of x double floor(double x) returns the largest integer less than x double log(double x) returns the natural logarithm of x double log10(double x) returns the base 10 logarithm of x double sqrt(double x) returns the square root of x

48 Introduction to CL3.48 Some Mathematical Library Functions Defined in math.h FunctionPurpose double sin(double x) returns the sine of x double cos(double x) returns the cosine of x double tan(double x) returns the tangent of x double pow(double x, double y) returns int abs(int x) returns the absolute value of x Defined in stdlib.h

49 Introduction to CL3.49 Programming Technique: Top-Down Design A problem-solving method in which a given problem is first broken into its major subproblems. Then the subproblems are solved to get some solution for the original problem Subproblems are typically solved by use of functions.

50 Introduction to CL3.50 Example Top-Down Design: Structure Chart for drawing a Stick figure ** /\ ----- /\ ** /\ ----- /\

51 Introduction to CL3.51 Program for drawing a stick figure #include /* function declarations (prototypes) */ void draw_circle(void); void draw_intersect(void); void draw_base(void); void draw_triangle(void); int main() { /* draw a circle */ draw_circle(); /* draw a triangle */ draw_triangle(); /* draw intersection lines */ draw_intersect(); }

52 Introduction to CL3.52 Function Definitions used for Drawing a Stick Figure /* Draw a circle */ void draw_circle(void) { printf(" **\n"); } /* Draw a intersection lines */ void draw_intersect(void) { printf(" /\\\n"); } /* Draw a base line */ void draw_base(void) { printf ("------\n"); } /* Draw a triangle */ void draw_triangle(void) { draw_intersect(); draw_base(); }


Download ppt "Lecture 5 Introduction to Programming in C Arne Kutzner Hanyang University / Seoul Korea."

Similar presentations


Ads by Google