c programming language #7

81
PROGRAMMING LANGUAGE #7 aragornyeh.blogspot.com

Post on 13-Sep-2014

720 views

Category:

Education


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: C programming language #7

PROGRAMMING

LANGUAGE #7

aragornyeh.blogspot.com

Page 2: C programming language #7

Test 1

Calculate the result to n = 10

(Hint: use pow function)

Page 3: C programming language #7

#include <stdio.h>

#include <math.h>

int main( )

{

int i;

double t;

double s = 0;

for(i=1; i<=10; i++) {

t = pow(2,-i);

s = s + t;

}

printf("%f", s);

return 0;

}

Page 4: C programming language #7

Test #2

Write a program that prompts the user to input an integer, x, and then

Determines which is larger: x3 or (x+1)2.

The program should print out the values of x3 and (x + 1)2 as well as which is larger.

Page 5: C programming language #7

#include <stdio.h>

int main( )

{

int x,fx,gx;

printf("Enter an integer:\n");

scanf("%d", &x);

fx = x*x*x;

gx = (x+1)*(x+1);

printf("fx: %d\n gx: %d\n", fx, gx);

if(fx>gx)

printf("X^3 is larger");

else if(gx>fx)

printf("(X+1)^2 is larger");

return 0;

}

Page 6: C programming language #7
Page 7: C programming language #7
Page 8: C programming language #7
Page 9: C programming language #7
Page 10: C programming language #7

Function is like a black box

INPUT OUTPUT

Page 11: C programming language #7

Function

main()

printf()

scanf()

getch()

system()

Page 12: C programming language #7

3.7 PRINTF() SCANF()

RETURN VALUE

Page 13: C programming language #7

/* ch3 value1.c*/ #include <stdio.h> #include <stdlib.h> int main () { int i=10, j=20; char str[10] = "Stanford"; int printf_value; printf_value = printf("%s\n",str); printf("Return value is %d\n",printf_value); printf_value = printf("%d + %d = %d\n",i, j, i+j); printf("Return value is %d\n",printf_value); printf("\n\n"); system("PAUSE"); return 0; }

Page 14: C programming language #7

Console Output

Stanford Return value is 9 10 + 20 = 30 Return value is 13

Page 15: C programming language #7

/* ch3 value2.c*/ #include <stdio.h> #include <stdlib.h> int main() { int scanf_value; int i = 10; int j = 20; int k = 30; printf("Input three decimal value :\n"); scanf_value = scanf("%d %d %d", &i, &j, &k); printf("\nReturn value is %d.\n", scanf_value); printf(" i = %d\n", i); printf(" j = %d\n", j); printf(" k = %d\n", k); system("PAUSE"); return 0; }

Page 16: C programming language #7

Input three decimal value : 123 -987 abc Return value is 2. i = 123 j = -987 k = 30

Console Output

Page 17: C programming language #7

Hello World C Program

#include <stdio.h>

int main()

{

printf("Hello, World!\n");

return 0;

}

Page 18: C programming language #7

0

n

void

int

Page 19: C programming language #7

getch()

#include <stdio.h>

int main( )

{

char a;

a=getch();

printf("%c\n",a);

system("pause");

return 0;

}

Page 20: C programming language #7

函式與儲存類別

7.1 函式的基本觀念

7.2 函式參數

7.3 具有傳回值的函式

7.4 函式原型

7.5 遞迴函式

7.6 變數儲存種類

7.7 視域和生命期

7.8 前端處理程式

Page 21: C programming language #7

7.1 FUNDAMENTAL

Page 22: C programming language #7

Function

int main()

char getline(char line, int max)

float atoi(int a, int b, int c)

Page 23: C programming language #7

Structure of a Function

<return type> Name (input1, input2,……)

{

Statement1;

Statement2;

return () ;

}

Page 24: C programming language #7

An example of function

int sum (int x, int y)

{

int result;

result = x + y;

return (result);

}

Page 25: C programming language #7

Declaration of a Function

int exponent(int a, int x)

Page 26: C programming language #7

int exponent(int a, int x) { int result = 1; while (x > 0) { result *= a; x--; } return result; }

Page 27: C programming language #7

int main(void) { int result; result = exponent(2, 10); } return 0; }

int exponent(int a, int x) { int result = 1; while (x > 0) { result *= a; x--; } return result;}

Page 28: C programming language #7
Page 29: C programming language #7

int findarea(int , int )

int main( )

{

int one, two;

scanf("%d %d",&one ,&two);

printf("%d",findarea(one, two));

getch();

return 0;

}

int findarea(int x, int y)

{

return x * y;

}

Page 30: C programming language #7

Example: Function Call

1

2

3

4

Page 31: C programming language #7
Page 32: C programming language #7
Page 33: C programming language #7

#include <stdio.h>

int fn1(int a);

int fn2(void);

int main(void){

fn2();

return 0;}

int fn1(int a){

a = a + 7;

printf("a:%d\n", a);

return a;}

int fn2(void){

int b = 7;

fn1(b);

printf("b:%d\n", b);

return b;}

Page 34: C programming language #7

/* Ch7 title4.c */ #include <stdio.h> #include <stdlib.h> void process(void); void title(void); void choose(char); int main() { process(); process(); system("PAUSE"); return 0; } void process(void) { char ch; title(); printf("\n Choose ===> "); ch = getche(); printf("\n Echo : "); choose(ch);

Page 35: C programming language #7

} void title(void) { printf("\n\n MENU\n\n"); printf(" [1] one [2] two\n"); printf(" [3] three [4] four\n"); } void choose(char ch) { switch (ch){ case '1' : printf("ONE"); break; case '2' : printf("TWO"); break; case '3' : printf("THREE"); break; case '4' : printf("FOUR"); } }

Page 36: C programming language #7

7.2 FUNCTION PARAMETER

Page 37: C programming language #7

/* Ch7 para.c */ #include<stdio.h> #include <stdlib.h> void list(char, int); int main() { int i; list ('*',10); list('#',15); i = 20; list ('A',i); system("PAUSE"); return 0; } void list(char ch, int count) { int i; for(i=1; i<=count; i++) printf("%c", ch) printf("\n"); }

Page 38: C programming language #7

void list(char ch, int count )

void list(char, int);

Page 39: C programming language #7

Console Output

**********

###############

AAAAAAAAAAAAAAAAAAAA

Page 40: C programming language #7

7.3 FUNCTION WITH RETRUN VALUE

Page 41: C programming language #7

/* Ch7 ret1.c */ #include <stdio.h> #include <stdlib.h> int get_int(void); int find_max(int, int); int main() { int a,b; int max; a = get_int(); b = get_int(); max = find_max(a,b); printf("\nMAX(%d,%d) is %d.\n",a,b,max); system("PAUSE"); return 0;

Page 42: C programming language #7

} int get_int(void) { int num; printf("Input a valid integer : "); while (scanf("%d",&num) != 1){ while (getchar () !='\n') continue; printf("Input error! Please input again : "); } return(num); } int find_max(int x, int y) { if (x > y) return(x); else return(y); }

Page 43: C programming language #7

int find_max(int x, int y)

{

if(x>y)

return(x);

else

return(y);

}

find_max():

Page 44: C programming language #7

int get_int(void) { int num; printf("Input a valid integer : "); while (scanf("%d", &num) != 1){ while (getchar () !='\n') continue; printf("Input error! Please input again : "); } return(num); }

44

get_int()

Page 45: C programming language #7

getchar()

while (getchar () != '\n')

continue;

Page 46: C programming language #7

Console Output

Input a valid integer : 14 Input a valid integer : 62 MAX(14,62) is 62. Input a valid integer : good14 Input error! Please input again : 14 Input a valid integer : best62 Input error! Please input again : 62 MAX(14,62) is 62.

Page 47: C programming language #7

7.4 FUNCTION PROTYPE

Page 48: C programming language #7

/* Ch7 proto1.c */ #include <stdio.h> #include <stdlib.h> float get_score(void); char level(float,float,float); int main() { float s1,s2,s3; char grade; s1 = get_score(); s2 = get_score(); s3 = get_score(); grade = level(s1, s2, s3); printf("\n Your score grade is %c.\n", grade); system("PAUSE"); return 0; } float get_score(void) {

Page 49: C programming language #7

float temp; printf("Input your score : "); scanf("%f", &temp); return(temp); } char level (float a1, float a2, float a3) { float avg; printf("\n Score : %.2f %.2f %.2f\n",a1, a2, a3); avg = (a1 + a2 + a3) / 3; printf(" Average : %f.\n", avg); if(avg >= 90) return ('A'); if(avg >= 80) return ('B'); if(avg >= 70) return ('C'); if(avg >= 60) return ('D'); return('E'); }

Page 50: C programming language #7

Console Output

Input your score : 90.5

Input your score : 86.8

Input your score : 77.0

Score : 90.50 86.80 77.00

Average : 84.766668.

Your score grade is B.

Page 51: C programming language #7

7.5 Recursive Call

When a function calls itself:

Page 52: C programming language #7

/* Ch7 recur.c */ #include<stdio.h> #include <stdlib.h> void recur(int); int main() { printf("Recursive call...\n\n"); recur(4); system("PAUSE"); return 0; } void recur(int level) { printf(" BEFORE level ===> %d\n", level); if(level > 0) recur (level-1); printf(" AFTER level ===> %d\n", level); }

Page 53: C programming language #7

Recursive call...

BEFORE level ===> 4

BEFORE level ===> 3

BEFORE level ===> 2

BEFORE level ===> 1

BEFORE level ===> 0

AFTER level ===> 0

AFTER level ===> 1

AFTER level ===> 2

AFTER level ===> 3

AFTER level ===> 4

Console Ouput

Page 54: C programming language #7

/* Ch7 fact.c */ #include<stdio.h> #include <stdlib.h> unsigned int fact(int); int main() { int i; printf("Factorial...\n\n"); for(i=0; i<=17; i++) printf(" %3d! = %-3u\n",i , fact(i)); system("PAUSE"); return 0; } unsigned int fact(int num) { if (num == 0) return(1); return (num * fact (num-1)); }

Page 55: C programming language #7

Factorial...

0! = 1

1! = 1

2! = 2

3! = 6

4! = 24

5! = 120

6! = 720

7! = 5040

8!=40320

9!=362880

10!=3628800

11!=39916800

12!=479001600

13!=1932053504

14!=1278945280

15!=2004189184

16!=2004189184

17!=4006445056

Page 56: C programming language #7

7.6 Storage Class

auto、static、extern、register

auto int num, value;

static char ch = 'A';

register int cache;

Page 57: C programming language #7

Auto Variable = Local Variable

變數只能在宣告的函數中使用。

Page 58: C programming language #7

Static Variable

其它函數並無法存取這些靜態變數。

靜態變數會配置固定的記憶體位置,在重複呼叫函數時,靜態變數值都會保留下來。

Page 59: C programming language #7

External Variable

外部變數都會配置固定的記憶體位置,可在所有函數並存取外部變數。

Page 60: C programming language #7

Register Variable

針對程式中存取十分頻繁的變數,可以直接將變數置於CPU的暫存器,以便加速程式的執行。

EX.使用在迴圈的計數器變數

Page 61: C programming language #7

/* ch7 static.c */ #include <stdio.h> #include <stdlib.h> void test(void); int main() { int i; printf("static variable testing ...\n\n"); for (i=0; i<5; i++) { printf(" Iteration %d : ", i+1); test(); } system("PAUSE"); return 0; } void test(void) { int auto_var = 1; static int static_var = 1; printf(" auto_var = %d static_var = %d\n", auto_var++, static_var++); }

Page 62: C programming language #7

static variable testing ...

Iteration 1 : auto_var = 1 static_var = 1

Iteration 2 : auto_var = 1 static_var = 2

Iteration 3 : auto_var = 1 static_var = 3

Iteration 4 : auto_var = 1 static_var = 4

Iteration 5 : auto_var = 1 static_var = 5

Console Output

Page 63: C programming language #7

/* ch7 extern.c */ #include <stdio.h> #include <stdlib.h> #define SIZE 5 void auto_fun(void); void extern_fun(void); void void_fun(void); void default_fun(void); int ary[SIZE] = {1, 2, 3, 4, 5}; int main() { printf("extern variable testing ...\n\n"); auto_fun(); extern_fun(); void_fun(); default_fun(); system("PAUSE"); return 0; }

Page 64: C programming language #7

void auto_fun(void) { auto int ary[SIZE]; int i; printf("In auto_fun() :\n\n"); for (i=0;i<SIZE;i++) printf(" ary[%d] : %d\n", i, ary[i]); printf("\n\n"); } void extern_fun(void) { extern int ary[SIZE]; int i; printf("In extern_fun() :\n\n"); for (i=0; i<SIZE; i++) printf(" ary[%d] : %d\n",i , ary[i]); printf("\n\n");

Page 65: C programming language #7

} void void_fun(void) { int i; printf(" In void_fun() :\n\n"); for (i=0; i<SIZE; i++) printf(" ary[%d] : %d\n",i,ary[i]); printf("\n\n"); } void default_fun(void) { int ary[SIZE]; int i; printf(" In default_fun() :\n\n"); for (i=0; i<SIZE; i++) printf("ary[%d] : %d\n", i, ary[i]); printf("\n\n"); }

Page 66: C programming language #7

extern variable testing ... In auto_fun() : ary[0] : -10 ary[1] : 180 ary[2] : 388 ary[3] : 6593 ary[4] : -10 In extern_fun() :

Console Output

Page 67: C programming language #7

ary[0] : 1 ary[1] : 2 ary[2] : 3 ary[3] : 4 ary[4] : 5 In void_fun() : ary[0] : 1 ary[1] : 2 ary[2] : 3 ary[3] : 4 ary[4] : 5 In default_fun() : ary[0] : 7111 ary[1] : 1792 ary[2] : -10 ary[3] : 3866 ary[4] : 26496

Page 68: C programming language #7

7.7 SCOPE AND LIFETIME

Page 69: C programming language #7

Global Scope

int a;

int main(void)

{

a = 2;

}

int sub(void)

{

a = 3;

}

Page 70: C programming language #7

Function Scope

int main(void)

{ int a;

a = 2;

}

int sub(void)

{ int a;

a = 3;

}

Page 71: C programming language #7

7.8 Preprocessor

#include

#define

#define MSG printf("message.\n");

保留字 巨集名稱 巨集本體

#define PI 3.14

Page 72: C programming language #7

/* ch7 macro.c */ #include <stdio.h> #include <stdlib.h> #define MSG "macro message !\n" #define PI 3.14 #define RADIUS 10 #define AREA PI*RADIUS*RADIUS int main() { printf("MACRO MSG : %s",MSG); printf("Area of circle with radius 10 is %.2f\n",AREA); system("PAUSE"); return 0; }

Page 73: C programming language #7

Console Output

MACRO MSG : macro message !

Area of circle with radius 10 is 314.00

Page 74: C programming language #7

/* ch7 mac_fun.c */ #include <stdio.h> #include <stdlib.h> #define SQUARE(n) n*n int main() { int num1, num2; num1 = SQUARE(3); printf(" num1 = %d \n",num1); num2 = SQUARE(10); printf(" num2 = %d \n",num2); system("PAUSE"); return 0; }

Page 75: C programming language #7

Console Output

num1 = 9

num2 = 100

Page 76: C programming language #7

7.10 Exercise

• Exercise 1

• Exercise 2

Page 77: C programming language #7

Homework #7

• 7.11 No.3 (P.40)

• Write or Print in A4 Paper

• Name & I.D.

Page 78: C programming language #7
Page 79: C programming language #7

創業家培訓課程 12/7 9:00-16:30

主題:如何運用創新與創意開創新事業

演講者:葉勇志

地點:東海大學育成中心創育工坊

報名方式:請至東海大學活動報名系統完成報名手續

校內分機30146,E-mail:[email protected]

Page 80: C programming language #7
Page 81: C programming language #7

C Programming is Easy!

Any Question?

aragornyeh@gmail .com