intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Chương 5: Chương trình con (tiếp theo)

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PPT | Số trang:28

74
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Chương 5: Chương trình con (tiếp theo) giới thiệu tới các bạn hai nội dung chính đó là phạm vi thời gian sống của biến (scope & life time); hàm đệ qui. Mời các bạn tham khảo bài giảng để hiểu rõ hơn về những nội dung này, với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Chương 5: Chương trình con (tiếp theo)

  1. CHƯƠNG 5 CHƯƠNG TRÌNH CON (TIẾP THEO) VI. PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME) VII. HÀM ĐỆ QUI
  2. VI. PHẠM VI ­ THỜI GIAN SỐNG  CỦA BIẾN (SCOPE & LIFE TIME)  Định nghĩa phạm vi biến: Phạm vi của biến là phần chương trình trong đó việc tham khảo đến biến là hợp lệ. Gồm biến cục bộ và biến tòan cục.  ĐN Thời gian sống của biến: Khi thực thi chương trình, biến được tạo ra và hủy đi. Thời gian sống là thời gian tồn tại của biến từ lúc được tạo ra đến lúc hủy đi. Thời gian sống phụ thuộc phạm vi và lớp lưu trữ.
  3. VI. PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME) 1. Biến tòan cục:  Khai báo bên ngoài các hàm.  Tự động khởi tạo giá trị 0 (không cho phép viết lệnh khai báo khởi tạo trị ).  Có thời gian sống cùng với thời gian chạy chương trình. Nhắc lại: int n; //khai báo biến int a=5; //khai báo biến có khởi tạo trị. //không cho phép đ/v tòan cục
  4. VI. PHẠM VI ­ THỜI GIAN SỐNG  CỦA BIẾN (SCOPE & LIFE TIME) 2. Biến cục bộ:  Khai báo bên trong hàm, trong khối lệnh.  Không được tự động khởi tạo giá trị.  Có phạm vi từ vị trí khai báo đến cuối hàm hoặc cuối khối lệnh.  Thời gian sống từ lúc hàm được thực thi hoặc khối lệnh được thực thi đến lúc kết thúc hàm hoặc chạy xong khối lệnh.  Xét ví dụ sau:
  5. int n1; n3=4412 void sub_fun(); main: n1=0 n2=2 void main() { sub: n1=0 n2=30 int n2=2; main: n1=40 n2=2 int n3; cout
  6. VI. PHẠM VI ­ THỜI GIAN SỐNG  CỦA BIẾN (SCOPE & LIFE TIME) Lưu ý 1:  Trong cùng phạm vi, mỗi biến chỉ được khai báo một lần.  Phạm vi cục bộ che phủ phạm vi toàn cục.  Trong phạm vi cục bộ, muốn sử dụng biến tòan cục cùng tên ta dùng tóan tử phạm vi (::)  Ví dụ:
  7. #include  main: n1=10 int n1; Global: n1=0 void sub_fun(); void main() Global: n1=40 { int n1=10; cout
  8. VI. PHẠM VI ­ THỜI GIAN SỐNG  CỦA BIẾN (SCOPE & LIFE TIME) Lưu ý 2:  Các hàm phải được khai báo toàn cục (Bên trong hàm không được khai báo hàm)  Các hàm cùng tên, khác thông số được gọi là overload.  Ví dụ:
  9. #include #include void GiaiPhuongTrinh(float, float); void GiaiPhuongTrinh(float,float,float); void main() { float m=2,n=3,p=-4; cout
  10. void GiaiPhuongTrinh(float a, float b) { if (a!=0) cout
  11. void GiaiPhuongTrinh(float a, float b, float c) { if (a==0) { GiaiPhuongTrinh(a,b); return;} float d=b*b -4*a*c; if (d>0) { cout
  12. VI. PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME) 3. Lớp lưu trữ biến: Có 4 lớp lưu trữ là: auto, static, extern, register. a. Lớp lưu trữ cho biến cục bộ: auto, static hoặc register.  Chỉ định lớp khi khai báo một biến cục bộ Ví dụ: static int x; register float y;  Mặc định là auto, không được khởi động trị. Ví dụ: int n; //n có một trị bất kỳ khi tạo  Biến thuộc lớp register có đặc tính giống auto, nhưng được lưu trong thanh ghi (Vùng nhớ CPU).
  13. VI. PHẠM VI ­ THỜI GIAN SỐNG  CỦA BIẾN (SCOPE & LIFE TIME)  Biến cục bộ auto và register có thời gian sống cùng với hàm nên trị mất đi sau mỗi lần gọi hàm.  Biến cục bộ static có thời gian sống cùng với chương trình. Được khởi động trị tự động nếu ta không khởi động trị cho nó. Và chỉ khởi động trị 1 lần duy nhất khi được tạo. Nên giữ lại được giá trị của lần gọi hàm trước đó.  Ví dụ
  14. 1 1 #include #include 2 1 void sub(); 3 1 void main() 4 1 { int i; for (i=0; i
  15. VI. PHẠM VI ­ THỜI GIAN SỐNG  CỦA BIẾN (SCOPE & LIFE TIME) b. Lớp lưu trữ cho biến tòan cục: extern hoặc static.  Ví dụ: extern int n; static float b;  Lớp lưu trữ của biến tòan cục chỉ để thay đổi phạm vi sử dụng biến, không đổi thời gian sống:  extern để thông báo (declaration) một biến đã được khai báo (definition) ở tập tin khác.  static để ngăn cấm không cho biến sử dụng ở tập tin khác.
  16. FILE1.CPP FILE2.CPP int volts; double factor; float current; extern int volts; static double power; void main() void fun3(); { fun1(); { fun2(); ... fun3(); } fun4(); } void fun4() extern double factor; { void fun1() ... { } ... } void fun2() { ... }
  17. VII. HÀM ĐỆ QUI 1. Định nghĩa: Hàm đệ qui là hàm có chứa (hoặc ẩn chứa) lời gọi hàm lại chính nó. Ví dụ: Hàm in ra n dấu * void InDauSao(int n) { cout
  18. VII. HÀM ĐỆ QUI 2. Phân lọai:  Đệ qui tuyến tính: Trong hàm chỉ có 1 lời gọi hàm đệ qui.  Đệ qui phi tuyến: Có hơn 1 lời gọi hàm đệ qui. Đệ qui nhị phân là trường hợp đặc biệt của đệ qui phi tuyến.  Đệ qui tương hỗ: Không đệ qui trực tiếp, không gọi lại chính mình. Ví dụ: A gọi B, B gọi C, C gọi A
  19. VII. HÀM ĐỆ QUI 3. Sử dụng hàm đệ qui khi nào?  Giải bài tóan có tính đệ qui giúp chương trình ngắn gọn.  Là dạng tóan có thể qui về một bài tóan cùng dạng nhưng với số lượng phép tóan hay công việc giảm đi.  Ví dụ:
  20. VII. HÀM ĐỆ QUI 3. Sử dụng hàm đệ qui khi nào?  Ví dụ: n! = n * (n-1)! USC(x,y)= USC(x-y,y) nếu x>y Số chữ số của x= 1 + số chữ số của x/10 fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2