Skip to content
Home » மலைப்பாம்பு மொழி 16 – ஊர் திருவிழாவும் கிரிக்கெட் ஸ்டேடியமும்

மலைப்பாம்பு மொழி 16 – ஊர் திருவிழாவும் கிரிக்கெட் ஸ்டேடியமும்

Python

உண்மையில் for loopன் சாத்தியங்கள் பரந்துப்பட்டவை, ஆனால் அதற்கும் ஒரு எல்லை உண்டு. நிரல் எழுதுவதற்கு முன்பே எத்தனை முறை for loop இயங்க இருக்கிறது என்னும் தெளிவு நிரலாளருக்கு இருக்கவேண்டும். உதாரணத்துக்கு, இரட்டைப்படை எண்களின் கூட்டுத்தொகையைக் கண்டுபிடிக்க ஒரு நிரல் தேவைப்படுகிறது என்றால் ‘எதுவரைக்கும்?’ என்பதே நிரலாளரின் முதல் கேள்வியாக இருக்கும். நிரல் எதுவாயினும் சரி, அதில் for loop பயன்படுத்தப்படுகிறது என்றால், அதன் இயக்க எண்ணிக்கையை முன்கூட்டியே அறிந்து வைத்திருப்பது அவசியம். ஆனால் எல்லா தருணங்களிலும் இது சாத்தியமா?

ஒரு மட்டைப்பந்து ஸ்டேடியத்திற்கு எத்தனை பேர் வருவார்கள் என்பதை முன்கூட்டியே அறிவது சாத்தியமா? இருக்கைகளின் எண்ணிக்கை, டிக்கெட் விற்பனை இதையெல்லாம் வைத்து நிச்சயம் கணிக்கலாம். ஆனால் ஊர் திருவிழாவிற்கு? கள்ளழகர் ஆற்றில் இறங்கும்பொழுது எத்தனை பேர் வருவார்கள் என்பதைத் துல்லியமாகச் சொல்ல இயலுமா?

நிரலைப் பொறுத்தவரையில் தோராய கணக்கெல்லாம் செல்லாது, கணினியின் மெமரியைச் சிக்கனமாகப் பயன்படுத்தும் கஞ்சனுக்கே மதிப்பு.

அப்படியென்றால் முன்கூட்டியே கணிக்கவியலாத தருணங்களில் என்ன செய்யலாம்? இதைத் தட்டிக்கேட்க யாருமே இல்லையா?

‘சார் ரொம்ப நல்லவர், பேரு while loop’.

பைத்தானில் பயன்படுத்தப்படும் மறுசெய்கை வரிகளின் அடுத்தவகை இது. இனி நேரடியாக நிரல்கள்.

நிரல் 1: ஏடிஎம் பயன்பாட்டைப் போலிச் செய்தல்

ஏடிஎம் பயன்பாட்டை ஒரு நிமிடம் நினைவில் கொள்ளுங்கள். பயனர் எத்தனை முறை வேண்டுமானாலும் அதன் சேவையைப் பயன்படுத்தலாம், ஆனால் எப்பொழுது வெளியேறுவார் என்பதை முன்கூட்டியே கணிக்கவியலாது. அதனால் இங்கே நாம் பயன்படுத்த வேண்டியது while loop.

விளக்கம்:

ஒவ்வொருமுறையும் ஒரு while loopஐ வடிவமைக்கும்பொழுதும், நான்கு விசயங்களைக் கவனத்தில் கொள்ளுங்கள்.

1) துவக்கம்
2) நிபந்தனை
3) தொகுதி
4) புதுப்பித்தல்

இவற்றில் ஒன்று பிசகினாலும் எதிர்பார்க்கும் முடிவுகளை நிரலிடமிருந்து பெற இயலாது. என்னவாம் என்பவர்களுக்காக ஒரு விளக்கம்.

while loopற்கு என்று பிரத்தியேகமாகப் பயன்படுத்தப்பட இருக்கும் அடையாளங்காட்டியின் மதிப்பைத் துவக்கத்திலேயே, அதாவது loop தன் இயக்கத்தை ஆரம்பிப்பதற்கு முன்பாகவே அறிவித்துவிடவேண்டும், இது துவக்கம்(1).

அடுத்தாக நிபந்தனை. இது மிக முக்கியம், ஏனெனில் குதிரையோட்டம் ஓடும் while loop எங்கே நிற்க வேண்டும் என்னும் நிபந்தனையை(2) இங்கே குறிப்பிடுகிறீர்கள். ‘அம்மாம் பெரிய கப்பலை நிறுத்தும் சிறிய ஆங்கர் இந்த நிபந்தனை’.

மூன்றாவதாகத் தொகுதி(3), ஒவ்வொரு இயக்கத்தின் பொழுதும் for loop என்ன செய்யவேண்டும் போன்ற விவரங்கள்.

நிறைவாகப் புதுப்பித்தல்(4), ஒவ்வொரு இயக்கத்திற்கு பிறகும் நிபந்தனையின் நிலை புதுப்பிக்கப்பட வேண்டும், ஏன் இது அவசியமாகிறது? ஒரு while loop சதா இயங்கிக்கொண்டே இருக்கமுடியாது அல்லவா? தனது முடிவை நோக்கி ஓடியே ஆகவேண்டும் தானே? அதற்காகத்தான் இந்த ஏற்பாடு.

இப்போது இந்த நான்கையும் எழுதிய நிரலோடு பொருத்திப் பாருங்கள்.

பயனரிடமிருந்து பெறவிருக்கும் விருப்பத்தை choice என்னும் அடையாளங்காட்டியில் சேமிக்கிறோம். அவர் 4ஐ அழுத்தி வெளியேறும் வரைக்கும், while loop தனது இயக்கத்தைத் தொடர்ந்தபடியே இருக்கும். ஒவ்வொரு முறையும் பயனரின் விருப்பம் பெறப்பட்டு, அதற்கு ஏற்றார் போலச் செயல்பாடுகள் மேற்கொள்ளப்படும்.

வெளியீடு 1:

நிரல் 2: கடவுச்சொல்லைச் சரிபார்த்தல்

பயனர் சரியான கடவுச்சொல்லை உள்ளீடு செய்யும்வரைக்கும் நிரல் இயங்கும். இதில் 2 குழப்பங்கள் நேர வாய்ப்பிருக்கிறது.

1) கடவுச்சொல்தான் கண்கூடாகத் தெரிகிறதே? பிறகென்ன ரகசியம் வேண்டிக்கிடக்கிறது?

ஏற்கனவே பார்த்ததுதான். நிரல் வேறு, பயனர் வேறு. இப்போதைக்கு அந்த இரண்டு பாத்திரங்களையும் நாமே ஏற்கிறோம். ஆனால், ஒரு பயனர் நிரலின் வெளிப்பாட்டைப் பயன்படுத்திக்கொள்ளலாமே தவிர, அதைப் பார்க்க இயலாது. நாமெல்லாம் வாட்ஸ்அப் பயனாளிகள். ஆனால் அதை உருவாக்க எழுதப்பட்ட நிரலைப் பார்த்துவிடமுடியுமா என்ன? நிச்சயம் முடியாது.

2) நிரலின் வெளியீட்டில் கடவுச்சொல் வெட்ட வெளிச்சமாகத் தெரிகிறதே?

நியாயமான கேள்விதான். “*” என்றுதான் இருக்கவேண்டும். ஆனால் அதைச் செய்வதற்கு முன்பு இன்னும் கொஞ்சதூரம் நாம் பயணிக்கவேண்டி இருக்கிறது. அதுவரை பொறுத்துக் கொள்ளுங்கள்.

வெளியீடு 2:

நிரல் 3: பயனரிடமிருந்து தொடர்ச்சியாக எண்களைப் பெற்று, அதன் ஒற்றைப்படை மற்றும் இரட்டைப்படை எண்களின் கூட்டுத்தொகையை தனித்தனியாக அச்சிடுதல்

பயனர் எப்போது முடிப்பார் தெரியாது, என்ன செய்யலாம். ஒரு எண்ணை ஒதுக்கிக் கொடுப்போம், பயனர் அதை அழுத்தினால், நிரல் அப்பாடா என்ற சப்தத்தோடு நிற்கும். ‘அப்போ அதுவரைக்கும்?’

– ஒவ்வொரு எண்ணாகப் பெறுவது
– அது ஒற்றைப்படையா அல்லது இரட்டைப்படையா என்கிற அடிப்படையில் பிரிப்பது
– அப்படிப் பிரிக்கப்படும் எண்களின் கூட்டுத்தொகையை தனித்தனியாக அச்சிடுவது

சரி எதை அழுத்தினால் நிரல் நிற்கும் என்பதைச் சொல்லவே இல்லையே? வேறு என்ன? 0 தான்.

வெளியீடு 3:

நிரல் 4: எண்ணோடு விளையாடு

நிரலில் ஒரு எண்ணை ஒளித்து வைத்திருக்கிறோம். அதைப் பயனர் கண்டுபிடிக்க வேண்டும். சரியாகக் கணிக்கும் வரைக்கும் நிரல் மீண்டும் மீண்டும் இயங்கும். மூன்று நிபந்தனைகள் while loopன் தொகுதிக்குள் சோதித்து இருக்கிறோம். பயனர் கணிக்கும் எண், நிரலில் குறிப்பிடப்பட்டிருக்கும் எண்ணுக்குக் கூடுதலாகவோ, குறைவாகவோ இருக்கும் பட்சத்தில் அது குறித்த அறிவிப்புகள். சரியாகக் கணிக்கும் கணத்தில் நிரல் வாழ்த்து தெரிவித்துவிட்டு இயக்கத்தை நிறுத்திக் கொள்ளும்.

வெளியீடு 4:

நிரல் 5: தறிகெட்ட ஓட்டம்

இதுவரைக்கும் குதிரை வேகத்தில் ஓடும் மறுசெய்கை நிரல்களைத்தானே பார்த்தோம்? தறிகெட்ட ஓட்டத்தையும் பார்த்து விடுவோமா?

while loopல் மிக மிக எச்சரிக்கையாக இருக்கவேண்டிய இடம் என்று இதைச் சொல்லலாம். நிரல் எப்போது தனது இயக்கத்தை நிறுத்தவேண்டும் என்பதைக் குறிப்பிட்ட அந்நிரலின் நிபந்தனையே முடிவு செய்கிறது இல்லையா? ஒருவேளை அந்த நிபந்தனை எப்போதுமே பலிக்காமல் போய்விட்டால் என்ன செய்வது?

இந்நிரலில் while loopற்கு தேவைப்படும் 4ல், 3 மட்டுமே இடம்பெற்றுள்ளது. நிபந்தனை புதுப்பித்தல் குறிப்பிடப்படவில்லை.

என்ன நடக்கும்?

வெளியீடு 5:

ஒன்றும் நடக்காது. ஓடும், ஓடும், ஓடிக்கொண்டே இருக்கும். நிரலை வழுகட்டயமாக நிறுத்த Ctrl+xஐ அழுத்துங்கள். ஆரம்ப நிலையிலிருக்கும் நிரலாளர்கள் இடரும் இடமென்று இதைச் சொல்லலாம். while loopஐ வடிவமைக்கும்போது, எந்த தருணத்தில் இது தனது ஓட்டத்தை நிறுத்தும் என்ற தெளிவு இருப்பது அவசியம்.

இதை நேர்காணல்களில் “Infinite Loop (or) Endless Loop” என்ற பெயரில் கேள்வியாக அடிக்கடி கேட்கிறார்கள்.

நிரல் 6:

போன அத்தியாயத்தில் பார்த்த Nested forன் வடிவத்தை while loopற்கு மாற்றியிருக்கிறோம். அவ்வளவுதான்.

அத்தியாயத்தின் கடைசி நிரலை Dry Runற்கு விட்டுவிடுவது தானே உலக வழக்கம். அதனால் இம்முறையும் …..

வெளியீடு 6:

0

இத்தோடு பைத்தான் நிரலாக்க மொழி கற்றலில் ஒரு சுழற்சியை முடித்திருக்கிறோம், 25% என்று வைத்துக்கொள்ளலாம். வலது கையால் உங்கள் இடப்பக்க தோள்பட்டையைத் தட்டிக்கொள்ளுங்கள். நாம் சிறிது கொண்டாடிக் கொள்ளலாம், தவறில்லை. அடுத்த 1 அல்லது 2 அத்தியாயங்களை, நாம் இதுவரை கற்றுக்கொண்டதைப் பரிசோதித்துப் பார்க்கப் பயன்படுத்திக்கொள்வோம்.

ஆனால் அதை எப்படிச் செய்வது என்று இதுவரைக்கும் எந்தவொரு யோசனையுமில்லை. ஆலோசனைகள் வரவேற்கப்படுகின்றன.

(தொடரும்)

பகிர:
ரிஷிகேஷ் ராகவேந்திரன்

ரிஷிகேஷ் ராகவேந்திரன்

நாமக்கல் மாவட்டம் இராசிபுரத்தை அடுத்த புதுப்பாளையம் என்னும் கிராமத்தைச் சேர்ந்தவர். தொழில்நுட்பத் துறை சார்ந்து தொடர்ந்து எழுதிவருபவர். இவர் எழுதிய ‘தமிழ் ராக்கர்ஸ் தோற்றமும் மறைவும்‘ என்னும் மின்னூல் பரவலான கவனத்தைப் பெற்றது. ரூபியா ரிஷி என்ற பெயரில் புனைவுகள் எழுதி வருகிறார்.View Author posts

பின்னூட்டம்

Your email address will not be published. Required fields are marked *