வரையெல்லை: ஒரு மதிப்பெண் வினாக்கள், புத்தக வினா விடைகள் மற்றும் குறிப்புகள்
வரையெல்லை என்பது ஒரு மாறியைப் பயன்படுத்தக்கூடிய நிரலின் பகுதி ஆகும். ஒரு பெயர் எங்கே தெரியும், எங்கே தெரியாது என்பதை இது முடிவு செய்கிறது. இந்த அலகில் மேப்பிங், பெயர்வெளிகள், மாறியின் வாழ்நாள், நான்கு வகை வரையெல்லைகள், LEGB விதி, கூறுநிலை நிரலாக்கமும் அதன் நன்மைகளும், பைத்தான், C++, Java மொழிகளில் public, protected, private உறுப்புகள் மூலம் அணுகல் கட்டுப்பாடு ஆகியவை ஒவ்வொன்றாக விளக்கப்படுகின்றன.
இந்தப் பாடத்தைப் படியுங்கள்
முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டவை
இந்தப் பாடத்திலிருந்து 6 வினாக்கள் 6 முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டன. விடையையும் விளக்கத்தையும் காண எந்த வினாவையும் திறக்கவும்.
-
மார்ச் 2026
எந்த உறுப்புகளை இனக்குழுவிற்கு வெளியே இருந்தும் அணுக முடியும் ?விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2025
__________ விதி வரையெல்லை தேடப்பட வேண்டிய வரிசையை தீர்மானிக்கப் பயன்படுகிறது.விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2024
கணினி சூழலில் உள்ள வளங்களை யார் பார்வையிட மற்றும் பயன்படுத்த முடியும் என்பதை வரைமுறைப்படுத்தும் ஒரு பாதுகாப்பு தொழில் நுட்பம் :விடையுடன் வினாத்தாளில் பார் →
-
மே 2022
மாறியின் பெயரை பொருளுடன் மேப்பிங் செய்வதற்கான இடம் __________ என அழைக்கப்படும்.விடையுடன் வினாத்தாளில் பார் →
-
துணைத் தேர்வு 2021
மாறியின் பெயரை ஒரு பொருளுடன் பிணைக்கும் செயல்முறை என்னவென்று அழைக்கப்படும் ?விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2020
எந்த இனக்குழுவின் உறுப்புகளை இனக்குழுவின் உள்ளே மட்டும்தான் கையாள முடியும் ?விடையுடன் வினாத்தாளில் பார் →
வரையெல்லை பற்றி
நடுத்தரம் ~45 நிமிடப் படிப்பு
வரையெல்லை (Scope) என்பது ஒரு மாறியின் பெயரை அணுகக்கூடிய நிரலின் பகுதி. எல்லாப் பெயர்களும் எல்லா இடத்திலும் தெரிந்தால், ஒரு செயற்கூறில் உள்ள x என்ற மாறி இன்னொரு செயற்கூறில் உள்ள x உடன் மோதும்; ஒன்று மற்றொன்றை மேலெழுதிவிடும். ஒவ்வொரு குறிமுறைத் தொகுதிக்கும் தனிப் பெயர்த் தொகுப்பைத் தருவதன் மூலம் வரையெல்லை விதிகள் இதைத் தடுக்கின்றன.
ஒரு பெயர் ஒரு பொருளுடன் எப்படி இணைக்கப்படுகிறது, அந்த இணைப்புகளைப் பெயர்வெளிகள் எப்படிக் கண்காணிக்கின்றன என்பதிலிருந்து பாடம் தொடங்குகிறது. பின்னர் நான்கு வரையெல்லைகளும் (Local, Enclosed, Global, Built-in), ஒரு பெயர் எந்த மாறியைக் குறிக்கிறது என்று முடிவு செய்ய இடைமொழியாக்கி பின்பற்றும் LEGB விதியும் வருகின்றன. அடுத்து நிரலைத் தொகுதிகளாகப் பிரிக்கும் கூறுநிலை நிரலாக்கம் விளக்கப்படுகிறது. கடைசியில் அணுகல் கட்டுப்பாடு: C++, Java மொழிகள் public, protected, private ஐ எப்படிப் பயன்படுத்துகின்றன, பைத்தான் அடிக்கோடுகள் மூலம் அவற்றை எப்படிப் பின்பற்றுகிறது என்பது வருகிறது.
இந்தப் பாடத்தில் தேர்வில் அதிகம் வரும் வேலை: உள்ளமைந்த செயற்கூறுகள் கொண்ட ஒரு சிறிய நிரலைப் படித்து, அது என்ன அச்சிடும் என்று சொல்வது. இதற்கு, முதலில் உள்ளே உள்ள செயற்கூறில் பெயரைத் தேடுங்கள்; பிறகு ஒவ்வொரு வரையெல்லையாக வெளிநோக்கி நகருங்கள். கூறுநிலை நிரலாக்கத்தின் நன்மைகளின் பட்டியலையும், பைத்தான் இனக்குழு உறுப்புகளுக்கான அடிக்கோடு மரபையும் படித்து வையுங்கள்.
நீங்கள் கற்பவை
- வரையெல்லை, வாழ்நாள், பெயர்வெளி ஆகியவற்றை உங்கள் சொற்களில் வரையறுத்தல்.
- உள்ளமைந்த நிரலில் ஒரு பெயர் எந்த மாறியைக் குறிக்கிறது என்று கண்டறிய LEGB விதியைப் பயன்படுத்துதல்.
- கொடுக்கப்பட்ட குறிமுறையில் உள்ளமை, அடைபட்ட, உலகளாவிய, உள்ளிணைந்த மாறிகளை அடையாளம் காணுதல்.
- கூறுநிலை நிரலாக்கத்தின் நன்மைகளைப் பட்டியலிடுதல்.
- இனக்குழு உறுப்புகள் கட்டுப்பாடின்றிப் பயன்படுத்தப்படாமல் அணுகல் கட்டுப்பாடு எப்படித் தடுக்கிறது என்று விளக்குதல்.
- public, protected, private உறுப்புகளை C++, Java, பைத்தான் எப்படிக் கையாளுகின்றன என்று ஒப்பிடுதல்.
தொடங்குவதற்கு முன்
- மாறிகள், கோவைகள், தரவு வகைகள்.
- எளிய செயற்கூறுகளை வரையறுத்தலும் அழைத்தலும்.
- இனக்குழுக்கள், பொருள்கள் பற்றிய அடிப்படைப் புரிதல்.
இந்த அத்தியாயத்தில் உள்ள தலைப்புகள்
வரையெல்லை — விரிவான விளக்கம்
வரையெல்லை விதிகள், தொகுதிகள் மற்றும் அணுகல் கட்டுப்பாடு
மேப்பிங், பெயர்வெளிகள் மற்றும் வாழ்நாள்
மாறியின் பெயர் நினைவகத்தில் உள்ள ஒரு பொருளைக் குறிக்கும் வழி. ஒரு பெயரை ஒரு பொருளுடன் பிணைப்பது மேப்பிங் (Mapping) எனப்படும். பைத்தானில் மதிப்பிருத்தல் செயற்குறி = இதைச் செய்கிறது: a = 5 என்பது a என்ற பெயரை 5 என்ற பொருளுடன் இணைக்கிறது. பெயர்வெளிகள் (Namespaces) இந்த இணைப்புகளை வைத்திருக்கும் கொள்கலன்கள். இவை ஒரு அகராதி போன்றவை: பெயர்கள் சாவிகள், பொருள்கள் மதிப்புகள். ஒரு மாறியின் வாழ்நாள் (Lifetime) என்பது அது நினைவகத்தில் இருக்கும் காலம். உள்ளமை மாறியின் வாழ்நாள் அதன் செயற்கூறு முடிந்ததும் முடிகிறது.
LEGB விதி
ஒரே பெயர் பல இடங்களில் இருக்கும்போது, சரியானதைக் கண்டுபிடிக்க இடைமொழியாக்கி LEGB விதியைப் பின்பற்றுகிறது. அது இந்த வரிசையில் தேடுகிறது: Local, Enclosed, Global, Built-in. பெயர் முதலில் கிடைக்கும் வரையெல்லையில் தேடல் நின்றுவிடும். எனவே அதே பெயருள்ள உலகளாவிய மாறியை உள்ளமை மாறி மறைத்துவிடும்.
நான்கு வகை வரையெல்லைகள்
உள்ளமை வரையெல்லை (Local Scope) நடப்புச் செயற்கூறுக்குள் வரையறுக்கப்படும் மாறிகளைக் குறிக்கிறது; அவற்றை அங்கே மட்டுமே பயன்படுத்தலாம். அடைபட்ட வரையெல்லை (Enclosed Scope) உள்ளமைந்த செயற்கூறுகளில் வருகிறது: உள் செயற்கூறு தன்னைக் கொண்டிருக்கும் செயற்கூறின் மாறிகளைப் படிக்கலாம். உலகளாவிய வரையெல்லை (Global Scope) எல்லாச் செயற்கூறுகளுக்கும் வெளியே அறிவிக்கப்படும் மாறிகளைக் குறிக்கிறது; அவற்றை நிரலில் எங்கும் பயன்படுத்தலாம். உள்ளிணைந்த வரையெல்லை (Built-in Scope) மிகப் பரந்தது; இடைமொழியாக்கி தொடங்கும்போதே ஏற்றப்படும் print, len போன்ற பெயர்கள் இதில் உள்ளன.
கூறுநிலை நிரலாக்கம்
கூறுநிலை நிரலாக்கம் (Modular Programming) ஒரு பெரிய நிரலைத் தொகுதிகள் (Modules) எனப்படும் சிறிய, தனித்தியங்கும் துணைநிரல்களாகப் பிரிக்கிறது. பாடநூல் தரும் நன்மைகள்: எழுத வேண்டிய குறிமுறை குறைகிறது; ஒரே செயல்முறையைப் பலமுறை மீண்டும் பயன்படுத்தலாம்; ஒவ்வொரு பகுதியிலும் ஒரு சிறிய குழு வேலை செய்வதால் நிரலை எளிதாக வடிவமைக்கலாம்; பிழைகள் ஒரே தொகுதிக்குள் அடங்குவதால் பிழை நீக்கம் எளிது; குறிமுறையைப் பல கோப்புகளில் வைக்கலாம்; குறிமுறை சுருக்கமாகவும் எளிமையாகவும் புரிந்துகொள்ள எளிதாகவும் இருக்கும்; வரையெல்லையை எளிதாக நிர்வகிக்கலாம்.
அணுகல் கட்டுப்பாடு
அணுகல் கட்டுப்பாடு (Access Control) என்பது, ஒரு கணினிச் சூழலில் வளங்களை யார் அல்லது எது பார்க்கலாம், பயன்படுத்தலாம் என்பதை ஒழுங்குபடுத்தும் பாதுகாப்பு நுட்பம். C++, Java மொழிகள் இனக்குழு உறுப்புகளுக்கான அணுகலை public, protected, private என்ற சிறப்புச் சொற்களால் கட்டுப்படுத்துகின்றன. பைத்தானில் இத்தகைய சிறப்புச் சொற்கள் இல்லை; பைத்தான் இனக்குழுவின் எல்லா உறுப்புகளும் இயல்பாக public. protected, private உறுப்புகளைப் பின்பற்ற, பைத்தான் ஒரு பெயரிடல் மரபைப் பயன்படுத்துகிறது: protected க்கு ஒற்றை அடிக்கோடு முன்னொட்டு (_name), private க்கு இரட்டை அடிக்கோடு முன்னொட்டு (__name).
தவிர்க்க வேண்டிய பொதுவான தவறுகள்
- உள்ளமை மாறியை அதன் செயற்கூறுக்கு வெளியே பயன்படுத்துதல். பைத்தான் NameError தரும்; அதற்குப் பதிலாகச் செயற்கூறிலிருந்து மதிப்பைத் திருப்பி அனுப்புங்கள்.
- உள் செயற்கூறில் உருவாக்கிய மாறி வெளிச் செயற்கூறுக்கோ முழு நிரலுக்கோ தெரியும் என்று எதிர்பார்த்தல். வரையெல்லை உள்நோக்கி மட்டுமே செல்லும்; வெளிநோக்கிச் செல்லாது.
- global என்று அறிவிக்காமல் செயற்கூறுக்குள் உலகளாவிய மாறிக்கு மதிப்பிருத்துதல். அப்போது பைத்தான் புதிய உள்ளமை மாறியை உருவாக்குகிறது; உலகளாவிய மாறி மாறாமல் இருக்கும்.
- C++, Java போலவே பைத்தானும் private உறுப்புகளுக்கான அணுகலைத் தடுக்கிறது என்று நினைத்தல். private, protected அணுகலைப் பின்பற்றப் பைத்தான் அடிக்கோடு பெயரிடல் மரபை மட்டுமே பயன்படுத்துகிறது.
இவற்றை பயிற்சித் தேர்வு மூலம் சோதித்துப் பாருங்கள்; பிறகு விடையுடன் கூடிய வினாக்கள் பகுதியில் விரிவான விளக்கத்தைப் படியுங்கள்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
மாறியின் வரையெல்லைக்கும் வாழ்நாளுக்கும் என்ன வேறுபாடு?
வரையெல்லை என்பது மாறியைப் பயன்படுத்தக்கூடிய நிரலின் பகுதி. வாழ்நாள் என்பது நிரல் இயங்கும்போது மாறி நினைவகத்தில் எவ்வளவு காலம் இருக்கிறது என்பது. உள்ளமை மாறியின் வரையெல்லை அதன் செயற்கூறு; செயற்கூறு திரும்பியதும் அதன் வாழ்நாள் முடிகிறது.
LEGB விதி ஒரு மாறியின் பெயரை எப்படித் தீர்மானிக்கிறது?
இடைமொழியாக்கி முதலில் Local வரையெல்லையில் பெயரைத் தேடுகிறது; பிறகு அடைக்கும் செயற்கூறில் (Enclosed), பிறகு Global வரையெல்லையில், கடைசியாக Built-in வரையெல்லையில் தேடுகிறது. முதலில் கிடைக்கும் பொருத்தத்தைப் பயன்படுத்துகிறது. எதிலும் பெயர் இல்லையென்றால் பிழை வரும்.
அடைபட்ட வரையெல்லை என்றால் என்ன? ஓர் எடுத்துக்காட்டு தருக.
ஒரு செயற்கூறுக்குள் இன்னொரு செயற்கூறு வரையறுக்கப்படும்போது அடைபட்ட வரையெல்லை உருவாகிறது. disp() இல் a = 7 என வரையறுத்து, அதற்குள் a ஐ அச்சிடும் disp1() என்ற செயற்கூறு இருந்தால், disp1() 7 ஐ அச்சிடும். ஏனெனில் அது a ஐ அடைக்கும் செயற்கூறான disp() இல் கண்டுபிடிக்கிறது.
பைத்தான் செயற்கூறுக்குள் உலகளாவிய மாறியை எப்படி மாற்றுவது?
உலகளாவிய மாறியைச் செயற்கூறுக்குள் சிறப்பாக எதுவும் செய்யாமலே படிக்கலாம். அதற்குப் புதிய மதிப்பிருத்த வேண்டுமென்றால், முதலில் செயற்கூறுக்குள் global என்று எழுதி அதைத் தொடர்ந்து மாறியின் பெயரை எழுதுங்கள். அந்த வரி இல்லாவிட்டால் மதிப்பிருத்தல் புதிய உள்ளமை மாறியை உருவாக்கும்.
கூறுநிலை நிரலாக்கத்தின் நன்மைகள் யாவை?
எழுத வேண்டிய குறிமுறை குறைகிறது; ஒரு செயல்முறையைப் பலமுறை மீண்டும் பயன்படுத்தலாம்; ஒவ்வொரு தொகுதியிலும் ஒரு சிறிய குழு வேலை செய்யலாம். பிழைகள் ஒரே தொகுதிக்குள் இருப்பதால் பிழை நீக்கம் எளிதாகிறது. குறிமுறையைப் பல கோப்புகளில் சேமிக்கலாம்; அது சுருக்கமாகவும் புரிந்துகொள்ள எளிதாகவும் இருக்கும்.
பைத்தான் private, protected உறுப்புகளை எப்படிக் கையாளுகிறது?
பைத்தானில் public, protected, private என்ற சிறப்புச் சொற்கள் இல்லை; இனக்குழு உறுப்புகள் இயல்பாக public. மரபுப்படி, ஒற்றை அடிக்கோட்டில் தொடங்கும் பெயர் protected ஆகவும், இரட்டை அடிக்கோட்டில் தொடங்கும் பெயர் private ஆகவும் கருதப்படுகிறது. இது C++, Java மொழிகளின் அணுகல் வரையறுப்பிகளைப் பின்பற்றுகிறது.
பெயர்வெளி என்றால் என்ன?
பெயர்வெளி என்பது பெயர்களைப் பொருள்களுடன் இணைத்து வைக்கும் கொள்கலன். அதை ஓர் அகராதியாக நினைத்துக்கொள்ளுங்கள்: மாறிப் பெயர்கள் சாவிகள்; அவை குறிக்கும் பொருள்கள் மதிப்புகள்.
கடைசியாகப் புதுப்பிக்கப்பட்டது 17 செப்டெம்பர் 2026