Tại sao dùng trong c

Trong bà học này, Lập rình không khó sẽ hướng ẫn các bạn các kến hức căn bản nhấ về hàm rong C (ên gọ khác là chương rình con). Mình sẽ đưa ra lý o ạ sao nên ùng hàm, cách gọ hàm ở rong ngôn ngữ C và cách hoạ động của mộ chương rình có sử ụng các hàm con… Và ấ nhên rong khóa học c bá đạo này, các bà ập và ví ụ là không hể hếu rong mỗ bà học.

NỘI DUNG BÀI VIẾT

Vo hướng ẫn hàm rong C

Dướ đây là vo hướng ẫn căn bản về hàm o ngườ ùng định nghĩa ở rong ngôn ngữ C. Nó là hàm ngườ ùng định nghĩa là để phân bệ vớ các hàm có sẵn rong các hư vện như bà học rước chúng a vừa ìm hểu. Các bạn nên ếp ục đọc bà vế để có cá nhìn sâu sắc hơn về hàm rong C.

Hàm rong C là gì?

Đặ vấn đề: Gả sử bạn muốn xây ựng mộ công y (mộ chương rình máy ính bỏ ú). Công y của bạn được hành lập vớ 4 mục êu chính như sau: ính ổng, hệu, ích, hương của 2 số nguyên nhập ừ bàn phím.

Nếu công y của bạn chỉ có mộ hành vên và hành vên đó phả ự làm và quản lý hế ấ cả 4 công vệc rên (co ấ cả rong hàm man()) – Đều này là hoàn oàn khả h. Nhưng bạn hử nghĩ xm, mộ mình bạn ôm cả 4 công vệc đó hì lệu bạn có hể quản lý nó được ố không? bạn có hể ành hờ gan để ố ưu và phá rển mỗ công vệc đó không? Bạn nghĩ sao nếu những lúc căng hẳng khến bạn quên hoặc hực hện nhầm công vệc đáng ra mình cần làm?

Gả pháp: Thuê 4 ông nhân vên về và rả lương cho họ, mỗ ông (hàm con) chỉ làm mộ vệc uy nhấ. Kh đó, công vệc của sếp (là hàm man() ý) là quản lý các ông nhân vên này, kh nào cần hì gọ ông ý làm cho mình và nếu có vấn đề gì ở 1 công vệc nào đó hì cứ lô cổ ông nhân vên đó ra mà xử lý.

Vậy hì hàm rong C là gì? Hàm chính là các ông nhân vên rong vấn đề phía rên. Trong lập rình, hàm là các khố co nhỏ chỉ hực hện mộ chức năng nhấ định của bà oán lớn.

Bạn có hể hình ung cá khung của công y phía rên sau kh áp ụng gả pháp a được như sau:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#nclu &l;so.h&g;

 

n a(n a, n b){

   // hàm con này là nhân vên làm công vệc phép cộng

}

 

n subrac (n a, n b){

   // hàm con này là nhân vên làm công vệc phép rừ

}

 

n muply (n a, n b){

   // hàm con này là nhân vên làm công vệc phép nhân

}

 

floa v (n a, n b){

   // hàm con này là nhân vên làm công vệc phép cha

}

 

n man(){

    // hàm này là ông sếp

}

Ưu đểm kh ùng chương rình con

Sau đây là mộ số ưu đểm nổ bậ của sử ụng chương rình con (hàm) mà mình có hể lệ kê, nhưng có 1 đều chắc chắn rằng: Hãy cố gắng hực hành vế co của bạn sử ụng hàm nếu có hể nhé.

    Sử ụng chương rình con khến co của bạn rông sáng sủa hơn và gọn gàng, ngườ đọc co sẽ ễ hểu hơn bằng cách nhìn vào ừng hàm con a có hể ễ àng xác định va rò của nó rong chương rình.Dễ àng quản lý, nâng cấp và ìm lỗ chương rình. Bở vì bạn bế rõ hàm nào đang làm gì, nếu mà chẳng may gặp lỗ hì bạn cũng nhanh chóng xác định lỗ đó của hàm nào hay vì phả ò ừng òng rong hàm manVế 1 lần và gọ được ở nhều nơ: Kh bạn ùng hàm hì bạn chỉ phả vế mộ lần và gọ ớ nó bấ cứ kh nào bạn muốn. Bạn cũng có hể đóng gó các hàm đó để sử ụng cho các chương rình khác

Cách hoạ động của hàm rong C

Hình ảnh ướ đây cho bạn hấy cách hoạ động của hàm (chương rình con) ở rong ngôn ngữ C. Kh mộ lờ gọ hàm được hực h hì:

    Chương rình của bạn sẽ nhảy ớ nơ định nghĩa hàm đó và hực h các lệnh ừ rên xuống ướ ở rong hàm đó.Kh hàm hực hện xong, chương rình ếp ục quay về hực hện các lệnh phía sau lờ gọ hàm.
Cách hoạ động của hàm ở rong ngôn ngữ C, ảnh: programz.com

Chương rình máy ính bỏ ú đơn gản

Sau đây mình sẽ lấy mộ ví ụ sử ụng hàm rong C (chương rình con) để xây ựng ứng ụng máy ính bỏ ú đơn gản hực hện 4 chức năng cơ bản là cộng, rừ, nhân, cha. Các bạn xm gả hích ở rong co cùng vớ xm vo để hểu hơn nhé.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

#nclu &l;so.h&g;

 

/*

    Cách kha báo hàm

 

    &l;kểu ữ lệu&g; &l;ên hàm&g; (&l;các ham số&g;){

        // hân hàm

        rurn &l;valu&g;; // valu phả cùng kểu &l;kểu ữ lệu&g;

    }

*/

// Calcula sum of wo numbr

// a: frs numbr

// b: scon numbr

n a(n a, n b){

    n sum = a + b;

    rurn sum; // lệnh rurn rả về gá rị có cùng kểu ữ lệu vớ kểu ữ lệu của hàm

}

 

// Hàm ính hệu của a - b

n subrac(n a, n b){

    rurn a - b;

}

 

// Hàm ính ích a * b

n muply(n a, n b){

    rurn a * b;

}

 

// Hàm ính hương của a / b

// Lưu ý b cần != 0

// Bạn phả ép kểu ử hoặc mẫu để hu được kế quả là số hực nhé

floa v(n a, n b){

    rurn (floa) a / b;

}

 

 

n man(){

    n a = 3, b = 4;

    // Sử ụng ên hàm để gọ nó,

    // ruyền các ham số đúng ho kểu của hàm yêu cầu

    prnf("\n% + % = %", a, b, a(a, b));

    prnf("\n% - % = %", a, b, subrac(a, b));

    prnf("\n% * % = %", a, b, muply(a, b));

    f(b != 0){

        prnf("\n% / % = %f", a, b, v(a, b));

    }

}

Kế quả chạy chương rình:

1

2

3

4

5

6

7

PS G:\c_courcs\ay_27&g; g++ .\Calculaor.cpp -o .\Calculaor

PS G:\c_courcs\ay_27&g; .\Calculaor.x

 

3 + 4 = 7

3 - 4 = -1

3 * 4 = 12

3 / 4 = 0.750000

Các bà vế sau sẽ nó rõ hơn về các loạ hàm và rấ nhều bà ập hực hành, bạn hãy ếp ục ho õ để rang bị cho mình kến hức đầy đủ về hàm rong C nhé!

Các loạ hàm rong C

Sau đây, mình sẽ lấy 1 ví ụ ham khảo ừ à lệu số [2] để hể hện cho các bạn hấy có 4 loạ hàm rong C. Chúng a sẽ ùng 4 cách vế hàm khác nhau để gả quyế cùng 1 bà oán: “Kểm ra 1 số ngườ ùng nhập ừ bàn phím có phả là số nguyên ố không”. Sau cùng, chúng a sẽ đ đến những kế luận!

1. Hàm không có ham số, không có gá rị rả về

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#nclu &l;so.h&g;

vo chckPrmNumbr();

n man()

{

    chckPrmNumbr();    // argumn s no pass

    rurn 0;

}

// rurn yp s vo manng osn' rurn any valu

vo chckPrmNumbr()

{

    n n, , flag = 0;

    prnf("Enr a posv ngr: ");

    scanf("%",&n);

    for(=2; &l;= n/2; ++)

    {

        f(n% == 0)

        {

            flag = 1;

        }

    }

    f (flag == 1)

        prnf("% s no a prm numbr.", n);

    ls

        prnf("% s a prm numbr.", n);

}

Như bạn hấy, hàm chckPrmNumbr() không có ham số đầu vào, bản hân nó ự hực hện nhận gá rị ừ bàn phím, kểm ra và sau đó cũng n ra kế quả luôn. Vì là nó không rả về gá rị nên chúng a ùng kểu vo, bạn sẽ học nó ở bà ếp ho.

    Hàm này hực hện 3 chức năng cùng 1 lúc =&g; 1 hàm chỉ nên làm 1 chức năng

2. Hàm không có ham số, có rả về gá rị

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#nclu &l;so.h&g;

n gIngr();

n man()

{

    n n, , flag = 0;

   // no argumn s pass

    n = gIngr();    

    for(=2; &l;=n/2; ++)

    {

        f(n%==0){

            flag = 1;

            brak;

        }

    }

    f (flag == 1)

        prnf("% s no a prm numbr.", n);

    ls

        prnf("% s a prm numbr.", n);

    rurn 0;

}

// rurns ngr nr by h usr

n gIngr()      

{

    n n;

    prnf("Enr a posv ngr: ");

    scanf("%",&n);

    rurn n;

}

Trong đoạn co rên, hàm gIngr() nhập 1 số ừ bàn phím và rả ra cho chúng a gá rị đó. Còn vệc kểm ra là số nguyên ố hay không hì chúng a vế nó rong hàm man(). Tạ vì chúng a muốn vế hàm kểm ra số nguyên ố hì hàm này cần ham số là “số cần kểm ra”.

    Như vậy, hàm gIngr() chỉ hực hện 1 chức năng =&g; ok. Nhưng hàm man vẫn phả đảm nhệm công vệc kểm ra số nguyên ố (công vệc nặng nhọc nhấ)

3. Hàm có ham số, không rả về gá rị

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

#nclu &l;so.h&g;

vo chckPrmAnDsplay(n n);

n man()

{

    n n;

    prnf("Enr a posv ngr: ");

    scanf("%",&n);

    // n s pass o h funcon

    chckPrmAnDsplay(n);

    rurn 0;

}

// rurn yp s vo manng osn' rurn any valu

vo chckPrmAnDsplay(n n)

{

    n , flag = 0;

    for(=2; &l;= n/2; ++)

    {

        f(n% == 0){

            flag = 1;

            brak;

        }

    }

    f(flag == 1)

        prnf("% s no a prm numbr.",n);

    ls

        prnf("% s a prm numbr.", n);

}

Nhận hấy, hàm chckPrmAnDsplay() nhận vào là mộ số cần kểm ra, sau đó hực hện kểm ra và n ra kế quả.

    Hàm chckPrmAnDsplay() đang làm 2 vệc 1 lúc =&g; cách vế hàm ố hì 1 hàm chỉ làm 1 vệc hô.Lần này hàm man đảm nhệm vệc nhập (ố) =&g; Hàm man nên đảm nhận vệc nhận npu và xuấ oupu.

4. Hàm có ham số, có rả về gá rị

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

#nclu &l;so.h&g;

n chckPrmNumbr(n n);

n man()

{

    n n, flag;

    prnf("Enr a posv ngr: ");

    scanf("%",&n);

    // n s pass o h chckPrmNumbr() funcon

    // h rurn valu s assgn o h flag varabl

    flag = chckPrmNumbr(n);

    f(flag == 1)

        prnf("% s no a prm numbr",n);

    ls

        prnf("% s a prm numbr",n);

    rurn 0;

}

// n s rurn from h funcon

n chckPrmNumbr(n n)

{

    n ;

    for(=2; &l;= n/2; ++)

    {

        f(n% == 0)

            rurn 1;

    }

    rurn 0;

}

Ở rường hợp lần này, hàm chckPrmNumbr() chỉ nhận nhệm vụ nhận vào 1 số và kểm ra xm số đó có phả số nguyên ố hay không.

    Hàm man đảm nhận nhệm vụ lấy đầu vào, xuấ kế quả =&g; Tuyệ vờHàm con chckPrmNumbr() chỉ làm 1 vệc uy nhấ =&g; Tuyệ vờ

Mình chó lỡ nhận xé sau mỗ ví ụ rồ hì hô các bạn ự đền câu chố hạ gúp mình nhé. Vệc sử ụng hàm cần khéo léo để co của chúng a được “sạch sẽ”. Các bạn nhớ đọc hêm cả à lệu ham khảo nữa nhé!

Tà lệu ham khảo

    hps://www.programz.com/c-programmng/c-funconshps://www.programz.com/c-programmng/yps-usr-fn-funcons

 

    TAGShàmhọc c bá đạokhóa học lập rình C

Facbook

Twr

Pnrs

WhasApp

Nguyễn Văn Hếu

Sáng lập cộng đồng Lập Trình Không Khó vớ mong muốn gúp đỡ các bạn rẻ rên con đường rở hành những lập rình vên ương la. Tấ cả những gì ô vế ra đây chỉ đơn gản là sở hích gh lạ các kến hức mà ô ích lũy được.