Lessons 3 : CHƯƠNG 4 : HÀM CHƯƠNG TRÌNH VÀ CẤU TRÚC CHƯƠNG TRÌNH

CHƯƠNG 4 : HÀM CHƯƠNG TRÌNH VÀ CẤU TRÚC CHƯƠNG TRÌNH

 

Chương trình viết bằng ngôn ngữ C gồm 1 dãy các hàm trong đó có 1 hàm chính là main và chương trình bắt đầu từ main.

4.1/ Khái niệm :

– Hàm là đoạn chương trình thực hiện trọn vẹn một công việc nhất định.

– Hàm chia cắt việc lớn bằng nhiều việc nhỏ. Nó giúp cho chương trình sáng sủa, dễ sửa, nhất là đối với các chương trình lớn.

4.2/ Khai báo hàm :

< Tên hàm > (< danh sách các đối số>)

< Khai báo biến >

{

< Khai báo thêm các biến >

< Các câu lệnh >

}

– Trong đó :

+ Tên hàm : buộc phải có.

+ Danh sách các đối số : không bắt buộc. Có hay không tuỳ theo chúng ta định dùng hàm đó làm gì.

+ Khai báo biến : Nếu Danh sách các đối số mà có thì phần này buộc phải có. Còn nếu không thì ngược lại có thể bỏ qua.

+ Phần trong { } : là thân hàm. Dấu { } là bắt buộc đối với mọi hàm.

+ < Khai báo tham biến > : ngay sau { và gọi là biến cục bộ dành riêng cho hàm sử dụng.

+ đối số luôn luôn truyền theo trị ( không thay đổi giá trị).

*Ví dụ : Hàm tính giai thừa : S = x 1 /1! + x 2 /2! + ….+ x n / n!

Cách 1 :

#Include <stdio.h>

#Include <conio.h>

float giaithua ( int n)

{

int i ;float KQ ;

for ( KQ=1,i =1 ; i<=n ; i ++ )

KQ = KQ * i ;

return KQ ;

}

Void main ( ) /* khai báo biến toàn cục nếu có */

{

int n ;

printf ( ” Nhập n = ” ); scanf ( ” %d “, &n);

printf ( ” %d giai thừa là % f “, n, giaithua (n) );

getch ();

}

Cách 2 :

#Include <stdio.h>

# Include<conio.h>

/*Khai báo prototype*/ mục đích hàm đặt ở đâu cũng được không cần trước hàm gọi

float giaithua ( int n );

void main ()

{

}

/* Chi tiết hàm giai thừa */

float giaithua ( int n)

{ … return KQ };

Chú ý : – Kiểu của hàm cùng kiểu giá trị cần trả về.

– Các hàm độc lập, không được lồng nhau.

– Kiểu void tên hàm () : không cần trả về giá trị nào, hiểu ngầm là trả về int.

– ở cách 1 : hàm ở trên không được gọi hàm dười.

– ở cách 2 : các hàm gọi được lẫn nhau.

4.3 / Phạm vi của biến :

– Chẳng hạn trong ví dụ trên : biến n trong hàm main ( ) là cục bộ của main() chỉ có tác dụng trong hàm main() => trong hàm giai thừa có thẻ khai báo biến n trùng biến n của hàm main ( ) nhưng khác nhau và chỉ tồn tại trong 1 hàm.

Ví dụ : float giaithua (m);

{

int n ; float KQ = 1.0;

for ( n = 1; n<= m ; ++n )….

4.4 / Ðệ quy : giống như trong Pascal : hàm gọi đến chính nó.

* Ví dụ : Tính giai thừa :

giaithua ( n );

int n ;

{

if ( n = 0 ) return ( i ) ;

else return (giaithua ( n – 1 )*n );

}

– Chương trình sử dụng đệ quy thì dễ hiểu nhưng không tiết kiệm được bộ nhớ, không nhanh hơn.

4.5/ So sánh Lệnh trong Pascal và trong lập trình ngôn ngữ C.

– Giống nhau : + Cả Pascal và C đều có chương trình con.

– Khác nhau :

Pascal Ngôn ngữ C

Có thủ tục Chỉ có hàm

Có hàm Hàm có thể khai báo kiểu void ( không trả về giá trị nào cả, giống như thủ tục của Pascal

– Khai báo hàm

function Tên hàm (<danh sách biến) < kiểu hàm>;

< Khai báo các biến cục bộ>

Begin

< Các câu lệnh>

end; < Kiểu> tên hàm ( < danh sách các biến>)

{

< khai báo các biến cục bộ>

Các câu lệnh

}

Khai báo biến

<tên biến >: < kiểu biến>;

Ví dụ : Function max ( a, b : integer ) : integer

Begin

if a > b then max = a

Else max = b ;

End.

Trả về giá trị bằng phép gán max = giá trị ( trong đó max là tên hàm ). Khai báo biến

< kiểu biến> < tên biến >;

Ví dụ : int max ( a, b )

{

If ( a > b ) return ( a );

else return ( b );

}

– Trả về giá trị bằng câu lệnh return ( giá trị)

Kiểu tham số

+ Tham biến : truyền theo địa chỉ

+ Tham trị : truyền theo giá trị.

Tham biến trong Pascal

Procedure swap ( var x, y : real );

Var temp : real ;

Begin

Temp : = x ; x : = y ; y : = temp;

End.

– gọi hàm : swap ( a, b) Kiểu tham số

+ Chỉ có tham trị.

+ Muốn có tham biến bằng cách đưa con trỏ hình thức tham biến trong C.

Tham biến trong C

Void swap ( float *x, float * y )

{

float temp ;

temp = * x ; *x = * y ; * y = temp ;

}

swap ( &s, &b )

 

vns3curity(HCE)

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: