1. Trang chủ
  2. » Thể loại khác

PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME)BIẾN (SCOPE & LIFE TIM

29 6 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 252,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ệ..  ĐN Thời gian sống của

Trang 1

CÂU HỎI: Cho biết kết quả thực

thi chương trình sau:

void f(int, int&, int);

Trang 2

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

Trang 3

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

Trang 4

VI PHẠM VI - THỜI GIAN SỐNG CỦA

BIẾN (SCOPE & LIFE TIME)

1 Biến tòan cục:

 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ị

Trang 5

VI PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME)

 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

Trang 6

cout<<“main: n1=”<<n1<<“ n2= “<<n2<<endl; }

Trang 7

VI PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME)

 Ví dụ:

Trang 9

VI PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME)

Trang 11

void GiaiPhuongTrinh(float a, float b){

if (a!=0) cout<<“x=“<<–b/a<<endl;else

if (b!=0) cout<<“PTVN”<<endl;else cout<<“VSN”<<endl;

return;

}

Trang 12

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<<“x1=“<<(-b-sqrt(d))/(2*a)<<endl; cout<<“x2=“<<(-b+sqrt(d))/(2*a)<<endl; }

Trang 13

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,

Trang 14

VI PHẠM VI - THỜI GIAN SỐNG CỦA BIẾN (SCOPE & LIFE TIME)

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 đó.

Trang 16

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

static float b;

phạm vi sử dụng biến, không đổi thời gian

sống:

được khai báo (definition) ở tập tin khác.

Trang 17

}

Trang 18

VII HÀM ĐỆ QUI

(hoặc ẩn chứa) lời gọi hàm lại chính nó

Trang 19

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

Trang 20

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

Trang 22

VII HÀM ĐỆ QUI

4 Nguyên tắc viết hàm đệ qui: Hàm đệ qui

cần thỏa 2 đk:

 Giải quyết được trong trường hợp riêng

ứng với giá trị đặc biệt của tham số (tr/h suy biến)

 Trường hợp tổng quát, bài tóan được

định nghĩa đệ qui với giá trị tham số thay đổi

Ví dụ: Tính n!

Tổng quát: n!= n*(n-1)!

Trang 24

5 Quá trình thực thi hàm đệ qui:

Trang 25

5 Quá trình thực thi hàm đệ qui:

DigitCount(517)

Thực thi DigitCount(517)

Khởi tạo biến cục bộ và tham trị

n=517 {

if (n<10) //false return 1+DigitCount(51);

}

Thực thi DigitCount(51)

Khởi tạo biến cục bộ và tham trị

n=51 {

if (n<10) //false return 1+ DigitCount(5);

Thực thi DigitCount(5)

Khởi tạo biến cục bộ và tham trị

n=5 {

if (n<10) //true

1 2

3

Trang 26

5 Quá trình thực thi hàm đệ qui:

Ví dụ 2: Tìm ước số chung lớn nhất của 2 số

Trang 27

5 Quá trình thực thi hàm đệ qui:

USCLN(9,6)

Thực thi USCLN(9,6)

Khởi tạo biến cục bộ và tham trị

u=9, v=6 {

if (v=0) //false return USCLN(6,3);

}

Thực thi USCLN(6,3)

Khởi tạo biến cục bộ và tham trị

u=6, v=3 {

if (v==0) //false return USCLN(3,0);

Thực thi USCLN(3,0)

Khởi tạo biến cục bộ và tham trị

u=3, v=0 {

if (v==0) //true

3 3

3

3

Trang 28

5 Quá trình thực thi hàm đệ qui:

Kết luận:

 Mỗi lần gọi đệ qui tập các biến cục bộ,

tham trị được tạo ra độc lập với tập các

biến tạo ra cho lần gọi hàm trước

 Mỗi lần thóat ra khỏi hàm của 1 lần gọi thì

tập biến cục bộ tương ứng bị xóa

 Lần gọi hàm sau cùng sẽ thóat ra đầu

tiên

Ngày đăng: 18/04/2022, 21:20

🧩 Sản phẩm bạn có thể quan tâm

w