520 likes | 744 Views
Lecture 5 Introduction to Programming in C. Arne Kutzner Hanyang University / Seoul Korea. Further loop structures: for structures, do-while statements. for structure. Syntax: For-loops have three loop control statements: Initialization of the loop control variable.
E N D
Lecture 5Introduction to Programming in C Arne Kutzner Hanyang University / Seoul Korea
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; Introduction to C
for structure with compound • Syntax: for(initialization; loop_repetition_condition; update) { statement_1; statement_2; … statement_n;} Introduction to C
for structure (cont.) • Any for-loop may be represented as while-loop as follows: stat1;while (expr2) {statement; stat3;} for (stat1; expr2; stat3) {statement;} Introduction to C
Example while versus for loop repetition condition initialization i = 0; while (i < N) { printf("*"); i = i + 1; } update loop repetitioncondition updatestatement initialization for (i = 0; i < N; i = i + 1) printf("*"); Introduction to C
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; Introduction to C
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 Introduction to C
do-whileStatement • 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); Introduction to C
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); }; Introduction to C
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 Introduction to C
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. Introduction to C
Flowchartcontinue statement(for while loop) false Continue condition? true Statement(s) continue; Statement(s) Next Statement Introduction to C
Flowchart break statement (for while loop) false Continue condition? true Statement(s) break; Statement(s) Next Statement Introduction to C
Example continue int sum = 0; int n = 1; while (n <= 100) { if ((n % 2) == 0) { n = n + 1; continue; } sum = sum + n; n = n + 1; } • In the above program the sum of all odd numbers from 1 to 99 is calculated. Introduction to C
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: Introduction to C
The goto statement (cont.) • Example:for (…) for (…) { … if (disaster) goto error; } …error:error related code Introduction to C
switchstructure • Syntaxswitch (expression) { case const-expr : statements;break;case const-expr : statements;break; … defaultstatements; } Introduction to C
switchstructure • 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. Introduction to C
true case A case A actions break false switch structure / Flow diagram true case B case B actions break false true case N case N actions break false default actions Introduction to C
switchstructure (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);} Introduction to C
Conditional Operator, decrement and increment Operators, Shortcut assignments
Conditional Operator • General form:(booleanExp) ? exp1 : exp2 • Example:if (x > 0) y = 1 else y = -1;is equivalent toy = (x > 0) ? 1 : -1; Ternary operator Introduction to C
Increment andDecrement Operators Introduction to C
Increment andDecrement Operators, cont. int i=10; Equivalent to int newNum = 10*i; int newNum = 10*(i++); i = i + 1; int i=10; Equivalent to i = i + 1; int newNum = 10*(++i); int newNum = 10*i; Introduction to C
Shortcut Assignment Operators Operator Example Equivalent +=i+=8i = i+8 -=f-=8.0f = f-8.0 *=i*=8i = i*8 /=i/=8i = i/8 %=i%=8i = i%8 Introduction to C
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 • take one or several arguments, • compute some statements and • return a single value Introduction to C
Function Definition in C • Syntax Data type of the returned value Function name(identifier) Formal Arguments data_type identifier (arg_1, arg_2,…) {local variable declarations executable statements} Introduction to C
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 Introduction to C
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. Introduction to C
The return statement • Functions return a single value using the return statement.Syntax:return expression ; Introduction to C
Example: max function int max (int i, int j) { int m; if (i > j) m = i; else m = j; return m;} Local variable definition Introduction to C
Function Calls actualarguments • Syntax: function_name(arg1, arg2, …); • Actual arguments may be constants, variables, or expressions. • Example of function callmax(a, b) • Example of function call plus assignmentx = max(a, b); Introduction to C
Example Function Call pass i pass j void main() { int a, b, x; a = 5; b = 2; x = max (a, b); printf("%d", x);} int max (int i, int j) { int m; if (i > j) m = i; else m = j; return m;} Introduction to C
Example Function Call, cont. • The values of a and bare copied to i and j .Graphically: pass 5 The main method The max method a: i: 5 5 pass 2 parameters 2 2 b: j: 5 5 m: x: return value Introduction to C
Call by Value Semantic • Because the arguments are copied in C we talk of a call by value semantic Introduction to C
Function withoutReturned Value • Syntaxvoid fname(arg1, arg2, …) {local variable declarations executable statements} • The keyword void indicates that the function does not return any value Introduction to C
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” Introduction to C
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 Introduction to C
Computing Factorial, cont. Step 9: factorial(4) returns 24 (4*6) Main function:factorial (4) factorial(4) is called in the main factorial (4) = 4*factorial(3) Step 8: factorial(3) returns 6 (3*2) Step 1: factorial(4) calls factorial(3) factorial (3) = 3*factorial(2) Step 7: factorial(2) returns 2 (2*1) Step 2: factorial(3) calls factorial(2) factorial (2) = 2*factorial(1) Step 6: factorial(1) returns 1 (1*1) Step 3: factorial(2) calls factorial(1) factorial (1) = 1*factorial(0) Step 5: factorial(0) returns 1 Step 4: factorial(1) calls factorial(0) factorial (0) = 1 Introduction to C
Function Declarations • Function declaration formatreturn-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 Introduction to C
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); { … } Introduction to C
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 <stdio> for printf function. Introduction to C
Some Mathematical Library Functions Defined in math.h Introduction to C
Some Mathematical Library Functions Defined in math.h Defined instdlib.h Introduction to C
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. Introduction to C
Example Top-Down Design:Structure Chart for drawing a Stick figure ** * * ** /\ / \ / \ ----- /\ / \ / \ Introduction to C