Quên mật khẩu

Đăng ký


You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]


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

#Include

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

# Include

/*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 (;

< 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

: < 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)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Permissions in this forum:
Bạn không có quyền trả lời bài viết