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í ⇔ u888
Kênh 90Phut TV full HD ⇔ https://okvip.training/
ABC8 ⇔  ⇔ BET88 ⇔ pg88
kuwin ⇔ link xem truc tiep bong da xoilac tv ⇔ https://104.248.99.177/
8kbet ⇔ xem bóng đá cà khịa tv trực tuyến hôm nay
78win ⇔ ABC8 ⇔ 88clb ⇔ 
23win ⇔ 789BET ⇔ kuwin ⇔ 
New88 ⇔ 789BET ⇔ BJ88 ⇔ 
BET88 ⇔ qq88 ⇔ BJ88 ⇔  SHBET
https://789betcom0.com/ ⇔ https://hi88.baby/
OK365 ⇔ https://98win.care/ ⇔ 
nhà cái shbet ⇔ Nhà cái 789bet
bet88 ⇔ F168 ⇔ 23win
hi88 ⇔ GO99 ⇔ BJ88 ⇔ KUBET
https://789club64.com/ ⇔ 99ok ⇔ 33WIN
 ⇔ nhà cái ok365 ⇔ https://fun88.social/
J88 ⇔ 8kbet ⇔ ww88 ⇔ QQ88
33win ⇔ hi88 ⇔ hi88 ⇔ i9bet
ok365 ⇔ https://okvipno1.com/
8K BET ⇔ 8kbet ⇔ https://789club63.com/
https://23win.school/ ⇔ hi88 ⇔ 33win
 ⇔ https://0fun88.com/ ⇔ New88
 ⇔ https://vicky-brown.co.uk/ ⇔ 
18win ⇔ THABET ⇔ 33win ⇔ bk8
HUBETu888 ⇔ https://kubetvn88.com/
https://8kbet25.com/ ⇔ https://uk88.rocks
https://8xbet68.net/ ⇔ https://789bet188.com/
cwin ⇔ KU3933 ⇔ https://hello8880.net/
sunwin ⇔ 33win ⇔ hi88 ⇔ https://sunwin53.com/
SH BET ⇔ 23WIN ⇔ https://ww88.cruises/
F168 ⇔ V9bet ⇔ LUCK8
trang chủ 789bet ⇔ iWin ⇔ https://kuwin.education/
12bet ⇔ https://789club24.com/
https://33win103.com/ ⇔ U888
good88 ⇔ 88CLB ⇔ https://u888rabit.com/
https://33win102.com/ ⇔ https://hi88.garden/
https://33win100.com/ ⇔ hcm66
https://betvisa8.net/ ⇔ https://hi88.report/
https://hi88.tours/ ⇔ Trang cá cược bóng đá
 ⇔ U888 ⇔ https://789win1.black
https://789bet188.us/ ⇔ https://hello880.net/
https://789club60.com/ ⇔ https://betvisacom2.com/
https://789club60.com/ ⇔ 68gamebai
qh88 đăng nhập ⇔ https://789club24.com/ ⇔ 
SHBETSHBET ⇔ qh 88 ⇔ 8xbet
sunwin ⇔ 789win ⇔ https://sunwin70.com
https://bet88.football/ ⇔ ABC8
https://go88club13.com/https://789bet188.today/
https://bk8link2.com/ ⇔ https://bk8link3.com/
https://bk8link4.com/ ⇔ https://bk8link5.com/
https://bk8link6.com/ ⇔ https://789bet188.xyz/
https://33win101.com/ ⇔ FABET ⇔ SHBET
https://tp88.finance/ ⇔ https://hi88.gives/
33win ⇔ f168 ⇔ win55 ⇔ J88
ok365 ⇔ https://789bet188.pro/
88CLB ⇔ https://789bet188.cloud/
https://ww88.supply/ ⇔ https://fb88.voyage/
Link vào NEW88 ⇔ https://f8betlv.com/
https://abc8.education/ ⇔ ABC88 ⇔ 789Bet
https://i9bet.supply/ ⇔ https://bj88.gen.in/
https://88clb.lawyer/ ⇔ https://j8884.com/ ⇔ 
https://mb66az.com/ ⇔  ⇔  ⇔ 
Nhà cái SHBET ⇔ https://shbet.law/
https://polodemocratico.info/ ⇔ https://ok365.tours/
https://j88.photography/ ⇔ f168
https://23win.cruises/ ⇔ https://kuwin.support/
https://f168.loans/ ⇔ 8kbet
https://w88okvip.com/ ⇔ ok88
https://789bet188.info/ ⇔ https://789bet188.live/
https://789bet188.online/ ⇔ https://789bet188.co/
https://789bet188.tech/ ⇔ https://789bet188.biz/
https://789bet188.club/ ⇔ https://789bet188.vip/
https://789bet188.site/ ⇔ https://789bet.asia/
https://new8818.net/ ⇔ https://new8818.org/
https://new8818.me/ ⇔ https://new8818.xyz/
https://new8818.pro/ ⇔ https://new8818.cloud/
https://new8818.info/ ⇔ https://new8818.us/
https://new8818.live/ ⇔ https://new8818.online/
https://new8818.co/ ⇔ https://new8818.today/
https://new8818.biz/ ⇔ https://new8818.club/
https://new8818.vip/ ⇔ https://new8818.site/
https://new8818.ink/ ⇔ https://ahihi88.host/
https://hi8818.xyz/ ⇔ https://hi8818.us/
https://hi8818.live/ ⇔ https://hi8818.online/
https://hi8818.site/ ⇔ https://hi8818.ink/
https://hi8818.org/ ⇔ https://hi8818.me/
https://shbet188.org/ ⇔ https://shbet188.pro/
https://shbet188.cloud/ ⇔ https://shbet188.ink/
https://shbet288.store/ ⇔ https://shbet288.today/
https://shbet288.tech/ ⇔ https://shbet188.xyz/
https://shbet188.us/ ⇔ https://shbet188.shop/
https://j88.shoes/ ⇔ https://f168.party/
https://kubet288.com/ ⇔ https://kubet188.mobi/
https://kubet188.dev/ ⇔ https://kubet288.xyz/
https://kubet288.pro/ ⇔ https://kubet288.cloud/
https://jun8818.org/ ⇔ https://jun8818.net/
https://jun8818.me/ ⇔ https://jun8818.xyz/
https://jun8818.pro/ ⇔ https://jun8818.cloud/
https://jun8818.info/ ⇔ https://jun8818.us/
https://jun8818.live/ ⇔ https://jun8818.shop/
https://win55.sh/ ⇔ KING88
https://kubet.graphics/ ⇔ https://79king.gdn/
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