Truyền tham số

3 371 0
Truyền tham số

Đang tải... (xem toàn văn)

Thông tin tài liệu

3 Truyền tham số a Các loại tham số Như trình bày phần trên, tham số có loại: tham số hình thức tham số thực tế Với hai loại tham số này, thiết kế hàm mà không cần qua tâm đến biến toàn cục khai báo chương trình biến khai báo hàm khác Các tham số danh sách tham số hàm gọi tham số hình thức, tham số lời gọi hàm gọi tham số thực b Truyền giá trị cho hàm Truyền giá trị (truyền trị) có nghĩa giá trị thực (tham số thực) không bị thay đổi giá trị truyền cho tham số hình thức Ví dụ: Chúng ta xem xét đoạn chương trình sau, tham số truyền vào theo hình thức truyền trị void ham(int a) { printf(“a=%d”,a); } void main() { int n; …… ham(n); … ham(9); }  Chúng ta thấy biến n giá trị truyền vào cho ham, với biến giá trị có ý nghĩa đưa giá trị thực cho tham số hình thức a, không quan tâm đến việc thực giá trị hàm c Truyền tham biến cho hàm – truyền địa Truyền tham biến khác so với truyền tham trị chổ giá trị thực (tham số thực) bị thay đổi truyền cho tham số hình thức trình sử dụng hàm Chúng ta muốn truyền theo kiểu tham biến truyền nội dung lẫn địa biến, phải sử dụng đến biến trỏ Sau ví dụ việc sử dụng phương pháp truyền địa (truyền tham biến) #include #include void Tong(int *s, int a, int b){ *s= a+b; } void main(){ int x, y, z; x=10; y=20; Tong(&z,x,y); printf(“Gia tri tong: %d”, z); } Để hiểu rõ việc truyền địa cần tìm hiểu trỏ, tìm hiểu trỏ phần tiếp sau Tầm vực biến a Biến toàn cục: Biến toàn cục biến sử dụng nơi chương trình Biến toàn cục khai báo nhiều chổ chương trình Nhung tính sáng sủa, dễ nhìn, cần khai báo đầu chương trình Sau ví dụ việc khai báo biến toàn cục có tên i n #include int i ; void main() { … } int n; b Biến địa phương – biến cục bộ: Biến địa phương biến có giá trị thời gian hàm hoạt động khai báo thân hàm Nếu biến địa phương biến toàn cục trùng tên biến địa phương che hiệu lực biến toàn cục Ví việc sử dụng biến địa phương #include … int a; Biến địa int Ham(int b){ phương a, int a, c; c ………… c= a+b; Gọi biến ……… địa phương return … a } c Biến địa phương tĩnh static  Được cấp phát vị trí cố định (một địa cố định)  Tồn hàm kết thúc  Được khởi tạo =  Chỉ sử dụng hàm Ví dụ : void thi_du() { static int i; i++; printf(“Goi lan thu %d\n”,i); } d Biến địa phương ghi register  Biến cấp phát địa nhớ ghi  Tốc độ truy cập tức thời, nhanh Do đó, biến sử dụng nhiều cần cấp phát biến địa phương ghi  cải thiện tốc độ chương trình  Tuy nhiên, CPU ghi nên cần hạn chế sử dụng Ví dụ: void thidu() { register int i; i++; printf(“goi lan thu %d\n”,i); } Chương trình đệ qui  Khái niệm thuật toán đệ qui  Một thuật toán gọi đệ qui thuật toán định nghĩa đựa thân Điều có nghĩa là: thuật toán dang thiết kế định nghĩa dựa thân (đệ qui trực tiếp), định nghĩa dựa nhiều thuật toán định nghĩa dựa thuộc toán ban đầu (đệ qui gián tiếp)  Ví dụ Tính lũy thừa số Nếu gọi p(x,n) lũy thừa bậc n số x, : • Lũy thừa bậc số x cho : P(x,0)=1 • Lũy thừa bậc n số x tính qua lũy thừa bậc n-1 x: P(x, n)=x*P(x, n-1)  Tính giai thừa số n Nếu gọi GT(n) giai thừa n thì: • Giai thừa cho bởi: GT(0)=1 • Giai thừa n tính qua giai thừa n-1: GT(n)=n*GT(n-1)  Thiết kế thuật toán đệ qui Qua ví dụ ta thấy thuật toán đệ qui có hai phần: • Phần dừng: phần khởi đầu tính toán điểm kết thúc thuật toán, không chứa phần định nghĩa • Phần đệ qui: phần có sử dụng thuật toán định nghĩa mô tả sau: R=F(T,R), T phần dừng R phần đệ qui  Tính đệ qui chương trình Một hàm gọi đệ qui thân hàm có lời gọi thân gọi lẫn Ví dụ sau chương trình đệ qui dùng để tính giai thừa số n long giaithua(int n) { if (n= =0) return 1; else return n*(n-1); }

Ngày đăng: 22/12/2016, 13:38

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan