Biến toàn cục và biến địa phương - khái niệm tam tác dụng trong Pascal

Thứ tư - 29/07/2020 10:23
Các biến được khai báo trong chương trình chính được gọi là biến toàn cục. Các biến này có thể được đùng ở mọi nơi trong chương trình. Các biến được khai báo trong một CTC được gọi là các biến địa phương và nó chỉ có tác dụng trong phạm vi CTC đó hay trong Block đó. Khi CTC kết thúc thì các biến này cũng mất tác dụng theo. Để diễn tả tầm tác dụng của các biến, của các khai báo, người ta đưa ra khái niệm mức: chương trình chính có mức 0, các chương trình con tiếp theo có mức là 1, 2... tùy theo vị trí khai báo.
Cho chương trình sau:

PROGRAM VI_DU
       VAR
            x : Integer ;
       Procedure A ;
           Var
               Y : Integer ;
            Procedure AA ;
               Var
                   M, N : Integer ;
               Begin
                 …
               End ;
            Procedure AB ;
               Var
                    M, N : Integer ;
               Begin
                  …
               End ;
            Begin
                …
            End ; {Procedure A}
        Procedure B ;
            Var
                X, Z : Integer ;
            Procedure BA ;
                Begin
                    …
                End ;
            Begin
                 …
            End ; {Procedure B}
        BEGIN
            …
        END. {Chương trình chính }

Trong PROGRAM VI_DU, chương trinh con A và B có mức là 1, chương trình con AA, AB, BA có mức là 2.

Sau đây là một số qui tắc sử dụng:
• Tầm tác dụng của một tên (biến, hằng, kiểu...) được xác định bằng mức Bloc trong đó tên được khai báo và bằng các mức Bloc khác có mức cao hơn và nằm trong Bloc chứa khai báo.
■ Ví dụ : Trong PROGRAM VI_DU, biến Y được khai báo trong CTC A (có mức là 1). Như vậy biến Y có thể được sử dụng ở trong CTC A (là nơi khai báo) và trong CTC AA và AB (là 2 CTC có mức cao hơn và nằm trong CTC A). Ngoài ra Y không thể được sử dụng ở CTC B, BA, BB vì chúng không phải là CTC của A.
• Tầm tác dụng của các biến khai báo ở mức 0 (chương trình chính) là toàn bộ chương trình.
• Ở các mức khác nhau của các CTC, ta có thể khai báo một biến có cùng tên với biến ở mức khác. Tên biến này không phải là một biến duy nhất mà là hai biến khác nhau với tầm tác dụng khác nhau. Ví dụ trong PROGRAM VI_DU, CTC B có biến địa phương X và trong chương trình chính có biến toàn cục cũng có là X. Khi đó trong CTC thì biến X địa phương có tác dụng, còn khi CTC kết thúc thì biến toàn cục lại lấy lại tác dụng của nó. Hãy xét kỹ ví dụ cụ thể sau:

PROGRAM TAM_TAC_DUNG) ;
     Var I : integer ; {biến 1 địa phương}
     Begin
          I := 7 ; writein (1:6);
     End ;
     Begin
          I := 5 ;
          Writeln (1:6);
          DIA_PHUONG ;
         Writein (i : 6) ;
      End.

Kết quả cho ra :
5 {giá trị của I toàn cục}
7 {giá trị của I địa phương}
5 {giá trị của I toàn cục}

Tên biến I được dùng cho cả biến toàn cục và biến địa phương. Đầu tiên biến I toàn cục nhận giá trị bằng 5. Sau đó thủ tục DIA_PHUONG được gọi. Vì thủ tục này cũng có biến tên là I (biến địa phương) nên biến I toàn cục được xem như tạm bị treo không dùng đến. Biến địa phương lấy giá trị bằng 7. Sau khi kết thúc CTC, biến I địa phương bị mất và biến I toàn cục lại được khôi phục lại tác dụng. Tất nhiên nó vẫn giữ giá trị bằng 5 là giá trị có được trước khi gọi thủ tục DIA_PHUONG.

Trường hợp trong thủ tục DIA_PHUONG, ta muốn chiếu đến biến I toàn cục, ta vẫn có thể dùng nó bằng cách chỉ rõ tên chương trình ngoài tên biến ; TAM_TAC_DUNG. i. Cách tham chiếu như trên cũng tương tự như khi ta chỉ ra đường dẫn trực tiếp trên DOS.

  Ý kiến bạn đọc

THÀNH VIÊN

Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Kênh Bóng đá trực tiếp hôm nay miễn phí
Kênh
90Phut TV full HD ⇔ 32win
69VN ⇔ 78 WIN ⇔ F168 ⇔ 123b

Vmax ⇔ 78Win ⇔ hubet ⇔ 789club
789f ⇔ SHBET ⇔ nh88 ⇔ x88 ⇔ 789f
fo88vic88 ⇔ x88 ⇔ win678 ⇔ okvip
BL555 ⇔ Kkwin ⇔ KJC ⇔ Link MB66
mv66af88 ⇔ 8x bet ⇔ iWinClub
789BET ⇔ B52 club ⇔ BL555 ⇔ 58WIN
OKFUN ⇔ 789F ⇔ MB66 ⇔ 8xbet
https://789betcom0.com/ ⇔ https://hi88.baby/
UU88 ⇔ 86bet ⇔ win678 ⇔ SHBET
zo88 ⇔ ev99 ⇔ Vua88 ⇔ go88
Kubet11 ⇔ topbet ⇔ v8club ⇔ tv88 ⇔ 77win
MB66 ⇔ u888 ⇔ FO88 ⇔ Sanclub
188v ⇔ f168 ⇔ QQ88 ⇔ bk8 ⇔ bk8
789club ⇔ iwinclub ⇔ Subnhanh ⇔ Bluphim
vua88 ⇔ Nettruyenviet ⇔ 
vn23 ⇔ KUWIN ⇔ kubet ⇔ 888new
NOHU ⇔ hi88 ⇔ https://fun88.social/
88clbxoso66 ⇔ https://vnalo789c.com/
https://qq88.fun/ ⇔ f168 ⇔ 888New ⇔ QQ88
daga ⇔ SHBET ⇔ keo nha cai ⇔ bl-555.site
https://bshbet.com/ ⇔ https://uk88.rocks
BJ88 ⇔ 789f ⇔ mm88 ⇔ RR88 ⇔ 78WIN
https://nohu90.ad/ ⇔ https://hello8880.net/
tv88hi88 ⇔ f168 ⇔ uu88 ⇔ 33win
NOHU ⇔ hi88com ⇔ 32win ⇔ Kuwin
ek333 ⇔ xoso66 ⇔  ⇔ Xóc đĩa online
Fun88 ⇔ https://f168.com.co/ ⇔ 28Bet
NOHU ⇔ KINGFUN ⇔ https://789club24.com/
https://98winlive.com/ ⇔ https://789win.voyage/
https://bet88yk.com/ ⇔ https://alo789apk.app/
https://33win100.com/ ⇔ Cổng game rikvip
69vn ⇔ vn88 ⇔ https://king88com.uk.net/
https://j88usd.com/ ⇔ https://okwin.technology/
game bài đổi thưởng ⇔ https://hello880.net/
https://789club60.com/ ⇔ https://jun88.black/
23win ⇔ 789p ⇔ f168 ⇔ nohu90 ⇔ onbet
nhatvip ⇔ https://789club24.com/ ⇔ 789 bet
win68 ⇔ 8xbet ⇔ go99 ⇔ 78win ⇔ 32 win
XX88 ⇔ 89BET ⇔ QQ88 ⇔ topbet
Uu88 ⇔ V8club ⇔ 78win ⇔ lương sơn tv
https://33win101.com/ ⇔ oxbet ⇔ Min88
78win ⇔ https://shbet.gg/ ⇔ XX88
daga ⇔ SV388 ⇔ 77ball ⇔ Mbet
SHBET ⇔ Kkwin ⇔ Phimbathu ⇔ Hay 88
https://shbet.solar/ ⇔ https://58winbank.com/
https://32winmb.com/ ⇔ 77BET ⇔ 12BET
vmaxVMAX ⇔ ok9 football ⇔ K8CC
nhà cái uy tín ⇔ https://hi88.gives/
https://qq88.co.com/ ⇔ https://f168.law/
game bài đổi thưởng ⇔ alo88 ⇔ vwin ⇔ sut88
https://mm88login.com/ ⇔ 79king
ww88 ⇔ vankhanhtv ⇔ https://13win.vegas/
game bài đổi thưởng ⇔ https://hi88.uno/
https://58win1.info/ ⇔ j88 ⇔ j88 ⇔ 69vn
bl555.com ⇔ 78 win ⇔ 789f ⇔ go 88
MM88 ⇔ Nh88 ⇔ 73bet ⇔ S666
11uu ⇔ 123B ⇔ 78win ⇔ 888win
https://xx88.ink/ ⇔ mv88 ⇔ YO88 ⇔ QQ88
789win ⇔ Bet88 ⇔ Vmax ⇔ Sun Win
tỷ lệ kèo nhà cái hôm nay ⇔ BIN88
https://j88.ventures/ ⇔ https://qq88.studio/
https://oldhamcarnival.org.uk/ ⇔ Leo88
88CLB ⇔ SV388 ⇔ https://cakhiatv88.net/
 ⇔ i9 Bet ⇔ Tv88 ⇔ hi88 ⇔ F8BET
socolive trực tiếp74bet ⇔ VN168
Bong88 ⇔ socolive ⇔ Sao789 ⇔ ok365
 ⇔ trực tiếp bóng đá
https://king88clb.com ⇔ nohu90 ⇔ kingfun
sv66nhà cái thabet ⇔ bong88 ⇔ Nn88
https://32win.vc/ ⇔ 888new ⇔ PG88 ⇔ PG88
EE88 ⇔ B52Club ⇔ B52 Club ⇔ lô đề hôm nay
sky88 ⇔ Vin777 ⇔ SV388 ⇔ MV66 ⇔ 32win
https://vankhanhtvv.com/ ⇔ game bài đổi thưởng
game bài đổi thưởng ⇔ https://u888lm.com/
https://sv66.coupons/ ⇔ https://f168.tech/
https://8kbetbh.com/ ⇔ https://ta88club.kim/
https://jun88.now/ ⇔ https://rr88.com.se/
Game bài đổi thưởng ⇔ tỷ lệ bóng đá
https://58win.jpn.com/ ⇔ https://xin88.sa.com/
https://qq88.photo/ ⇔ https://79king1.best
lô đề online ⇔ https://78winvina.com/
for88 ⇔ https://shbetasia.com/ ⇔ Bet88
https://888b-link.cc/ ⇔ https://sunwinn.deal/
https://sunwinn.team/ ⇔ https://bong88vn.wiki/
https://mb66az.com/ ⇔ https://shbet.racing/
789f ⇔ 88i ⇔ https://new88blog.org/
Jun88 ⇔ Jun88 ⇔ jun88 ⇔ 67bet
MM88 ⇔ https://789betw.co/ ⇔ UU88
https://qq887p.com/ ⇔ https://w88link1.com/
xocdia88 ⇔ 77ball ⇔ vuabet88 ⇔ betvisa
https://789freal.com/ ⇔ https://2789f.com/
https://fun88link0.com/ ⇔ https://fun88link1.com/
https://188betlink0.com/ ⇔ https://188betlink1.com/
https://188betlink2.com/ ⇔ https://w88link0.com/
thabet ⇔ 32WIN ⇔ J88 ⇔ ax88 ⇔ 789F
QQ88 COM ⇔ https://xx88.sale/ ⇔ 78win
https://bet88.pictures/ ⇔ https://xo88.group/
https://86bet.tech/ ⇔ https://nohu90.consulting/
789BET ⇔ https://i9betz4.com/ ⇔ đá gà 88
w88link2.com ⇔ w88link3.com ⇔ luck8
https://8dayvip.mobi/ ⇔ https://8dayvip.com/
QQ88 Com ⇔ af88 ⇔ https://79kingsr.com/
https://pg99yk.com/ ⇔  hm88.com ⇔ J88
https://luongson161.tv/ ⇔ 78WIN ⇔ MB66
78win ⇔ U888 ⇔ nn88 ⇔ 99win ⇔ hi88
https://8kbettt.com/ ⇔ https://hi88.biz/
https://thabetcasino.us.com/ ⇔ 789Win ⇔ vn88
https://hello88net.com/ ⇔ https://pg88.jpn.com/
https://az8888.org/ ⇔ https://fly88.gifts/
lc88 ⇔ VN88 ⇔ 69vn ⇔ nh88 ⇔ vn88
https://go800s.com/ ⇔ 888newport.com
tỷ lệ kèo nhà cái 88 ⇔ PG66 ⇔ 68win
BL555 ⇔ 23win ⇔ SV388 ⇔ SHBET ⇔ vua88
Game bài đổi thưởng ⇔ https://saobet.shop/
https://99ok99ok.com/ ⇔ hb88 ⇔ HM88
https://bet88.ventures/ ⇔
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây