Bài giảng Hàm và kỹ thuật tổ chức chương trình - Biến toàn cục, biến cục bộ cung cấp cho người học các kiến thức: Khái niệm tầm vực của biến, khái niệm biến cục bộ tĩnh, sử dụng biến cục bộ,... Mời các bạn cùng tham khảo.
Nhập mơn lập trình Trình bày: Nguyễn Sơn Hồng Quốc Email: nshquoc@fit.hcmus.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt Khái niệm tầm vực biến • Là phạm vi hiệu biến khai báo chương trình • Biến cục (local variable) – Được khai báo bên hàm – Chỉ có tác dụng hàm – Được khởi tạo số biểu thức tương ứng với kiểu biến – Biến cục bị xóa khỏi nhớ kết thúc hàm CuuDuongThanCong.com https://fb.com/tailieudientucntt Khái niệm tầm vực biến • Biến toàn cục (global variable) – Được khai báo bên tất hàm (kể hàm main()) – Có tác dụng tồn chương trình(!) – Được khởi tạo lần số tương ứng với kiểu trước sử dụng bên hàm (tự động gán giá trị không khởi gán tường minh) – Chỉ giải phóng kết thúc chương trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ biến tồn cục, cục Biến tồn cục int x = 999; void f(); void main() { printf("%d\n", x); f(); } void f() { printf("%d\n", x); } Biến cục void f(); void main() { int x = 999; printf("%d\n", x); f(); } void f() { printf("%d\n", x); } CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ biến tồn cục, cục int x = 1, y = 2; void f() { int x = 3; printf("x = %d, y = %d\n", x, y); if (y > 0) { int z = 4; printf("%d\n", z); } printf("x = %d\n", x); printf("z = %d\n", z); // error } CuuDuongThanCong.com https://fb.com/tailieudientucntt Nói thêm biến tồn cục • Biến tồn cục (global variable) cách gọi khác biến (external variable) • Nói ra, tầm vực biến ngồi (hay biến toàn cục) toàn mã nguồn tập tin chứa khai báo biến • Các chương trình C có kích thước khơng lớn chứa tập tin mã nguồn nên tầm vực tồn chương trình • Biến ngồi khai báo tường minh từ khóa extern CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ khai báo biến Source1.cpp int x = 999; // external/global variable void f() { extern int x; printf("%d\n", x); } main.cpp 1.extern int x; 2.void main() 3.{ printf("%d\n", x); 5.} CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng biến cục • Hạn chế sử dụng biến ngồi/tồn cục điều phá vỡ tính độc lập đơn thể (modular independence), nguyên lý trung tâm lập tình cấu trúc • Độc lập đơn thể ý tưởng hàm hay đơn thể chương trình chứa tất mã nguồn liệu cần thiết để thực cơng việc • Đối với chương trình nhỏ việc sử dụng chung biến ngồi/tồn cục khơng quan trọng làm việc với chương trình lớn phức tạp q ràng buộc vào biến ngồi nảy sinh nhiều vấn đề rắc rối CuuDuongThanCong.com https://fb.com/tailieudientucntt Khái niệm biến cục tĩnh • Mỗi chương trình thực thi lời khai báo biến cục bộ, riêng biệt biến cục tạo • Nếu biến cục khai báo tĩnh (static) biến tạo lần lần chương trình thực thi lời khai báo • Khơng biến tồn cục, biến cục tĩnh khơng bị truy cập thay đổi hàm khác 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ biến cục tĩnh void f() { static int n = 0; // initialized once int x = 0; // initialized n times printf("n = %d, x = %d\n", n++, x++); } n = 0, x = n = 1, x = void main() { n = 2, x = int i; for (i = 0; i < 3; i++) 10 f(); 11.} 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Dữ liệu nhập, xuất, trung gian • Có loại liệu sau thực yêu cầu gọi hàm: – Dữ liệu nhập: liệu có sẵn, cần thiết để thực hàm, thường truyền dạng tham trị tham biến – Dữ liệu xuất: liệu hàm tính tốn được, thường trả lệnh return dạng tham biến – Dữ liệu trung gian: liệu hàm tạo q trình thực cơng việc, thường phục vụ cho việc tính tốn liệu xuất 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ loại liệu // returns f(x, y) = ax + by and reverses the signs of a, b if f < int Calculate(float &a, float &b, float x, float y) { int temp1, temp2, f; temp1 = a * x; temp2 = b * y; f = temp1 + temp2; if (f < 0) { Dữ liệu nhập? a = -a; Dữ liệu trung gian? Dữ liệu xuất? b = -b; 10 } 11 return f; 12 } 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... lập đơn thể (modular independence), nguyên lý trung tâm lập tình cấu trúc • Độc lập đơn thể ý tưởng hàm hay đơn thể chương trình chứa tất mã nguồn liệu cần thiết để thực cơng việc • Đối với chương. .. temp1 = a * x; temp2 = b * y; f = temp1 + temp2; if (f < 0) { Dữ liệu nhập? a = -a; Dữ liệu trung gian? Dữ liệu xuất? b = -b; 10 } 11 return f; 12 } 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt... – Có tác dụng tồn chương trình(!) – Được khởi tạo lần số tương ứng với kiểu trước sử dụng bên hàm (tự động gán giá trị không khởi gán tường minh) – Chỉ giải phóng kết thúc chương trình CuuDuongThanCong.com