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 ⇔ https://xn88.bio/
GK88 ⇔ SHBET ⇔ nh88 ⇔ u888 ⇔ 789f
fo88vic88 ⇔ x88 ⇔ win678 ⇔ 69vn
BL555 ⇔ 99OK ⇔ KJC ⇔ Link MB66
mv66af88 ⇔ 8x bet ⇔ 88AA
789BET ⇔ LC88 ⇔ BL555 ⇔ 789f
OKFUN ⇔ 789F ⇔ MB66 ⇔ 8xbet
https://789betcom0.com/ ⇔ https://hi88.baby/
UU88 ⇔ au88 ⇔ win678 ⇔ https://xx88.ink/
zo88 ⇔ ev99 ⇔ 888b ⇔ go88 ⇔ kèo nhà cái
cm88 ⇔ 88aa ⇔ Kkwin ⇔ tv88 ⇔ 77win
mb66.racing ⇔ u888 ⇔ FO88 ⇔ 88xx
188v ⇔ f168 ⇔ QQ88 ⇔ bk8 ⇔ bk8
789club ⇔ iwinclub ⇔ Subnhanh ⇔ Bluphim
m88 ⇔ Nettruyenviet ⇔ P3 ⇔ 8s
vn23 ⇔ SHBET ⇔ kubet ⇔ 888new
NOHU ⇔ hi88 ⇔ https://fun88.social/
thabet ⇔ SV88 ⇔ https://vnalo789c.com/
https://qq88.fun/ ⇔ f168 ⇔ 888New ⇔ QQ88
daga ⇔ SHBET ⇔ keo nha cai ⇔ bl-555.site
https://bshbet.com/ ⇔ https://uk88.rocks
BJ88 ⇔ KUWIN ⇔ 8xbet ⇔ RR88 ⇔ 78WIN
mb6678win ⇔ https://hello8880.net/
tv88UU88 ⇔ 5mb ⇔ uu88 ⇔ 33win
NOHU ⇔ hi88com ⇔ 32win ⇔ Kuwin
ek333 ⇔ xoso66 ⇔ nổ hũ ⇔ SUN WIN
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/ ⇔ https://u888ny.com/
69vn ⇔ vn88 ⇔ OK8386 ⇔ x88 ⇔ SHBET
https://j88usd.com/ ⇔ https://79kings.blue/
https://dom88.jp.net/ ⇔ https://hello880.net/
https://789club60.com/ ⇔ https://blc88.net/
23win ⇔ 6ff ⇔ f168 ⇔ xoso66 ⇔ bomwin
nhatvip ⇔ https://789club24.com/ ⇔ 789 bet
win68 ⇔ 8xbet ⇔ go99 ⇔ 78win ⇔ QQ88
XX88 ⇔ ev99 ⇔ 69vn ⇔ rr88 ⇔ rr88
Uu88 ⇔ win456 ⇔ 78win ⇔ lương sơn tv
https://33win101.com/ ⇔ oxbet ⇔ Min88
78win ⇔ https://shbet.gg/ ⇔ XX88
daga ⇔ SV388 ⇔ OKFUN ⇔ ee88 ⇔ 12bet
hitclub ⇔ Kkwin ⇔ VankhanhTV ⇔ Hay 88
https://shbet.solar/ ⇔ https://58winbank.com/
68 game bàiEE88 ⇔ 77BET ⇔ 12BET
vmaxVMAX ⇔ ok9 football ⇔ K8CC
https://hi88o.com/ ⇔ https://hi88.gives/
https://qq88.co.com/ ⇔ https://f168.law/
8xbet ⇔ https://shbetk.net/ ⇔ RIKVIP ⇔ rikvip
https://mm88login.com/ ⇔ 79king
ww88 ⇔ https://78win.bot/ ⇔ https://13win.vegas/
https://lc88o.com/ ⇔ https://hi88.uno/
https://58win1.info/ ⇔ j88 ⇔ j88 ⇔ 69vn
bl555.com ⇔ 78 win ⇔ UU88 ⇔ 32 win
MM88 ⇔ wstar77 ⇔ 73bet ⇔ S666
11uu ⇔ 123B ⇔ 78win ⇔ 888win
789f ⇔ 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://nh8811.com/ ⇔ Leo88
88CLB ⇔ SV388 ⇔ https://cakhiatv88.net/
7m ⇔ i9 Bet ⇔ Tv88 ⇔ hi88 ⇔ F8BET
socolive trực tiếp74bet ⇔ VN168
Bong88 ⇔ socolive ⇔ bet88 ⇔ 555WIN
https://au88.black/ ⇔ trực tiếp bóng đá
https://king88clb.com/ ⇔ https://f168hi.com/
sv66nhà cái thabet ⇔ 88clb ⇔ Nn88
https://32win.vc/ ⇔ 888new ⇔ PG88 ⇔ PG88
EE88 ⇔ SanClub ⇔ F168 ⇔ QQ88
hb88 ⇔ Vin777 ⇔ SV388 ⇔ MV66 ⇔ 32win
https://vankhanhtvv.com/ ⇔ Nhà Cái LC88
https://789fnew.com/ ⇔ https://u888lm.com/
https://sv66.coupons/ ⇔ https://f168.tech/
https://8kbetbh.com/ ⇔ https://ta88club.kim/
socolivemv88 ⇔ https://rr88.com.se/
https://qq88.photo/ ⇔ https://79king1.best
https://bet168.com.co/ ⇔ https://78winvina.com/
for88 ⇔ https://shbetasia.com/ ⇔ Bet88
https://888b-link.cc/ ⇔ https://sunwinn.deal/
88gokingfun ⇔ 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
GO8 ⇔ 888new ⇔ sv388 ⇔ KWIN
tỷ lệ kèo nhà cái 88 ⇔ PG66 ⇔ 68win
BL555 ⇔ 23win ⇔ SV388 ⇔ SHBET ⇔ hitclub
Game bài đổi thưởng ⇔ https://saobet.shop/
https://99ok99ok.com/ ⇔ UU88 ⇔ HM88
https://bet88.ventures/ ⇔ bongdalu22.com
zx88 ⇔ ev99 ⇔ 8s ⇔ bet8s ⇔ QQ88
https://f168.name/ ⇔ https://13wincom.io/
Nhà cái vn88 ⇔ Nhà Cái QQ88
https://fb888.in.net/ ⇔ https://kjc.ac/
https://onbet.in.net/ ⇔ link vn88
http://58win.trading/ ⇔ https://qq88.gives/
bong88 ⇔ sky88 ⇔ Cổng game rikvip ⇔ ev99
79KING ⇔ Bet88 ⇔ Vmax ⇔ daga
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