தலைவர் வடிவேலுக்கு நன்றி. ‘என்னா கைய புடிச்சி இழுத்தியா?’ நகைச்சுவை நம்மைச் சிரிக்கவைக்க என்றுமே தவறியதில்லை. ஆனால் அதில் தலைவரிடம் கேள்வி கேட்பவரின் நிலையைக் கொஞ்சம் யோசித்துப் பாருங்கள். கிட்டத்தட்ட மயங்கிச் சரிவார் இல்லையா? ஏன் அவருக்கு அவ்வளவு எரிச்சல்? மனிதன் திரும்பத் திரும்ப கேட்பதையோ, ஒரே பதிலை சொல்வதையோ விரும்புவதில்லை. (எடுத்துக்காட்டு: எஸ்பிஐ பணியாளர் தொடங்கி,பேருந்து நடத்துனர் வரை). விருப்பம் என்ன விருப்பம்? அவருடைய இயலாமை அது. ‘பேரென்ன சொன்னீங்க?’ என்று இரண்டாவது முறை கேட்கப்படும்போது ஓர் அசௌகரியத்தை உணருகிறோம் தானே?
இதை ஒரு நிரல் எப்படிக் கையாள்கிறது? அதற்கு எந்த சொரணையும் இல்லை. ஒரே வேலையை ஒருநாள் முழுவதும் செய்யச்சொன்னால்கூட, சலிக்காமல் செய்யும். எப்போதெல்லாம் தலைவர் போல ‘திரும்பத் திரும்ப பேச வேண்டிய’ நிர்பந்தம் நிரலுக்கு ஏற்படுகிறதோ அங்கெல்லாம் ‘மறு செய்கை வரிகளைப் (Iterative Statements)’ பயன்படுத்த பைத்தான் வாய்ப்புகளை வழங்குகிறது.
சில உதாரணங்களைப் பார்ப்போம்.
1) உங்கள் பெயரை 100 முறை நிரல் அச்சிட வேண்டும்
2) 1லிருந்து 1000 வரை உள்ள எண்களில், எவையெல்லாம் 5ஆல் வகுபடுகிறது என்பதைக் கண்டறிந்து, அவற்றைப் பயனருக்குச் சொல்லவேண்டும்
3) உங்கள் கல்லூரியில் பயிலும் 1500 மாணவர்களின் பெயர், தந்தை பெயர், முகவரி, அலைபேசி எண், ஆதார் எண் ஆகியவற்றைக் கேட்டுப்பெற நிரல் எழுதவேண்டும்.
மேற்கண்ட 3 உதாரணங்களிலும் ‘திரும்பத் திரும்ப நிகழுதல்’ என்கிற அம்சம் பொதுவானதாக இருக்கிறது. 100 முறை என் பெயரை அச்சிட 100 நிரல் வரிகளையா உட்கார்ந்து எழுதிக்கொண்டிருக்க முடியும்?
என்ன செய்யலாம்? தமிழ் சினிமாவில் அதிகம் பயன்படுத்தப்பட்ட அதே வசனம் தான். ‘அடடே, அவரே வந்துட்டாரே!’
1) for loop
2) while loop
என்று இரண்டு வகையான மறு செய்கை வகைகளை பைத்தான் வழங்குகிறது.
முதலில் for loop.
range() என்ற முன் வரையறுக்கப்பட்ட செயல்பாடு(மு.வ.செ) குறித்து இவ்விடத்தில் அறிந்துகொள்வது அவசியம். இந்தச் செயல்பாட்டோடு தான் for loop அதிக அளவிற்கு சேர்ந்து வேலை செய்யவிருக்கிறது.
1 முதல் 100 வரை என்று எளிமையாகச் சொல்லிவிடுகிறோம், ஆனால் ஒரு நிரல் எப்படி ஒவ்வொரு எண்ணாகப் பயணம் செய்யும்?அதற்காகத்தான் range().
இனி மேலே பார்த்த உதாரணங்களை range() எப்படிக் கையாள்கிறது என்று பார்ப்போம்.
உதாரணம் 1: பெயரை 100 முறை அச்சிடுதல்
range(101)
துவக்கம், நிலை மற்றும் மேம்படுத்தல் ஆகிய 3 மதிப்புகளை வைத்துகொண்டுதான் range() செயல்பாடு எண்களோடு விளையாடுகிறது. இவற்றில் துவக்க மற்றும் மேம்படுத்தல் மதிப்புகள் கட்டாயமற்ற ஒன்று, கொடுத்தால் கொடுக்கலாம் இல்லையென்றால் ஒன்றும் பிரச்சனையில்லை. ஆனால் கட்டாயம் நிலையின் மதிப்பை தந்தே ஆகவேண்டும்.
range(தொடக்கம், நிலை, மேம்படுத்தல்)
range(101) என்பது நிலையின் மதிப்பையே குறிக்கிறது. துவக்கம் மற்றும் மேம்படுத்தலின் மதிப்புகள் இங்கே விடுபட்டு இருப்பதின் காரணத்தால், அவற்றை நிரலே இட்டு நிரப்பிக்கொள்ளும். அதற்கு சில விதிகள் உண்டு, அதற்கு முன்பாக அது என்ன துவக்கம், நிலை மற்றும் மேம்படுத்தல்?
1, 2, 3 ……. 97, 98 ,99, 100.
– இந்த எண்களின் தொடரில் ஒரு துவக்கம் இருக்கிறதா? ஆம் 1.
– இத்தொடர் எங்கே முடிகிறது? 100இல். ஆக நிலையின் மதிப்பு 100.
– தொடரின் அடுத்த எண் எப்படி முடிவாகிறது? ஒரு எண்ணின் மதிப்போடு 1 கூட்டபடுகிறது தானே? இது அந்த தொடரின் அனைத்து எண்களுக்கும் பொருந்தும். அதனால் மேம்படுத்தலின் மதிப்பு 1.
எண்களின் தொடருக்கான range() செயல்பாட்டை இப்படி எழுதலாம், range(1, 101, 1).
என்னப்பா தம்பி 100ன்னு சொல்லிட்டு 101 போட்ருக்க
என்று கேட்பவர்கள் n-1ஐ நினைவில் வைத்துக்கொள்ளுங்கள். 101 என்று மொய் எழுதினால், அதிலிருந்து 1ஐ கழித்து வரும் மதிப்பு வரை மட்டுமே range() பயணம் செய்யும்.
சரி, தொடக்கம் மற்றும் மேம்படுத்தலின் மதிப்புகளை நிரலாளர் தராவிட்டால் நிரலே இட்டு நிரப்பிக்கொள்ளும் என்று பார்த்தோம் அல்லவா? அதற்கான விதிகள் இனி
– தொடக்கம் விடுப்பட்டிருந்தால், 0 கொண்டு நிரப்புக
– மேம்படுத்தல் விடுபட்டிருந்தால், 1 கொண்டு நிரப்புக
குழப்பம் தீரதவர்களுக்காக, சில பல உதாரணங்கள்
range(5) -> 0,1,2,3,4
range(0,5) -> 0,1,2,3,4
range(1,5) -> 1,2,3,4
range(1,5,2)-> 1,3
range(1,6) -> 1,2,3,4,5
range(2,21,2) -> 2,4,6,8,10,12,14,16,18,20
range(-1,-6,-1) -> -1,-2,-3,-4,-5
range(5,0,-1)-> 5,4,3,2,1
range(3) -> 0,1,2
range(1,10,5) -> 1, 6
இன்னொரு ஜாலியான விஷயத்தையும் நீங்கள் கவனிக்கலாம், தொடக்கம் எப்பொழுதுமே நிலையைவிடக் குறைவான மதிப்பையே கொண்டிருக்கும்.
for loopல் rangeஐ இணைப்பது எப்படி? இதற்குப் பதில்சொல்ல பெயரை 100 முறை அச்சடிக்கும் அதே உதாரணத்தை மீண்டும் எடுத்துக்கொள்வோம்.
இந்த for loop 100 முறை இயங்கும். name என்பது நாம் பயன்படுத்தும் ஒரு அடையாளங்காட்டி, அதில்தான் 1 தொடங்கி 100 வரைக்குமான மதிப்புகள் சேமிக்கப்பட்டு இருக்கும். முதல் செய்கையில் nameன் மதிப்பு 1, அடுத்தது 2 என. மேலே எழுதப்பட்டு இருக்கும் நிரலுக்கும் அடுத்ததற்கும் ஒரு ஒற்றுமை, ஒரு வித்தியாசம் உண்டு. என்னவென்று கண்டறியுங்கள்.
ஒற்றுமை: 2 நிரல்களும் பெயரை 100 முறை அச்சிடும்
வித்தியாசம்: இரண்டாவது நிரலின் தொடக்கம் 0, நிலையின் கடைசி மதிப்பு 99ஆக இருக்கும்.
உதாரணம் 2: 1லிருந்து 1000வரை உள்ள எண்களில் எவையெல்லாம் 5ஆல் வகுப்படுகிறது என்பதைக் கண்டறிந்து பயனருக்குச் சொல்வது
– முதல் செய்கையில் iயின் மதிப்பு 1, அது 5ஆல் வகுப்படுமா? இல்லை.
– iயின் மதிப்பு 2, அது 5ஆல் வகுப்படுமா? இல்லை.
.
.
.
– iயின் மதிப்பு 5, அது 5ஆல் வகுப்படுமா? ஆம், எனில் அதை அச்சிடுக.
இப்படியே iயின் மதிப்பு 1000 ஆகும் வரைக்கும் நிரல் இயங்கும்.
உதாரணம் 3: கல்லூரியில் பயிலும் 1500 மாணவர்களின் பெயர், தந்தை பெயர், முகவரி, அலைபேசி எண், ஆதார் எண் ஆகியவற்றை கேட்டுப்பெற நிரல் எழுதவேண்டும்.
1500 என்பது மிக அதிக மதிப்பாக உங்களுக்கு தோன்றினால், 5 என்று கூட மாற்றிக்கொள்ளுங்கள். நிரல் பயனரிடமிருந்து மேற்கண்ட விவரங்களை 5 முறை கேட்டுப்பெறும், அவ்வளவுதான்.
0
ஒரு தலைப்பை அறிமுகப்படுத்திக் கொண்டு, கொஞ்சம் கொஞ்சமாக அதை விரிவுபடுத்தி புரிந்துகொள்ளுதல் ஒருவகை கற்றல், இதுவரை நாம் பார்த்த உதாரணங்களைப் போல.
ஒரு சிக்கலை எடுத்துக்கொண்டு அதைத் தீர்க்க நிரலில் என்ன மாதிரியான வாய்ப்புகள் எல்லாம் இருக்கின்றன என்பதைக் கண்டறிந்து அதன்மூலம் தீர்வை அடைவது இன்னொரு வகை கற்றல். சுவாரசியமானதும்கூட. அதையும் வாசகர்கள் முயன்று பார்க்கலாம்.
என்ன சிக்கல்?
நடிகர் சூரிக்கு நன்றி. அவரது பரோட்டா காமெடி எத்தனை ஆண்டுகள் ஆனாலும் நினைவில் சிரிக்கும். அதில்வரும் போட்டியின் விதிகளைக் கொஞ்சம் விரிவாகப் பார்ப்போம்.
1) ஒருவர் 50 பரோட்டாக்கள் சாப்பிட வேண்டும்.
2) அப்படிச் சாப்பிட்டால் 100 ரூபாய் சன்மானம், கூடவே சாப்பிடும் பரோட்டாக்களுக்கு காசுத்தர தேவையில்லை.
3) 50க்கு கீழே சாப்பிடும் ஒருவர் தோற்றவராக அறிவிக்கப்பட்டு, அவரிடமிருந்து சாப்பிட்ட பரோட்டாவுக்கு உண்டான காசையும், கூடவே 100 ரூபாயையும் கடைக்காரர் பெற்றுக்கொள்வார்.
நீங்கள் இந்த போட்டியில் கலந்து கொள்கிறீர்கள் என்று வைத்துகொள்வோம். நீங்கள் 100 ரூபாயை வென்றீர்களா இல்லையா என்பதைச் சொல்ல ஒரு நிரல் எழுதுவோமா?
‘நீ என்னடா பைத்தான்ல நிரல் எழுத சொன்ன, பரோட்டாவுக்கு எழுதிட்டு இருக்க?’ என்பவர்கள் சால்னா சொல்லிவிட்டு சாந்தமாகத் தொடரவும்.
எளிமையான புரிதலுக்காகவும், சுவாரசியத்திற்காகவும் கூடுதலாக இன்னொரு விதியையும் நமது நிரலில் சேர்த்துக் கொள்வோம்.
4) 50 பரோட்டாகளையும் ஒருவர் அதிகபட்சம் 3 தவணைகளில் சாப்பிட்டாக வேண்டும். உதரணத்துக்கு (20+15+15) என்றால், முதலில் 20 பரோட்டாக்கள், பிறகு 15 பரோட்டாக்கள், நிறைவாக 15 பரோட்டாக்கள் என்கிற அடிப்படையில் மூன்று தவணைகளாக பிரித்து பரிமாறப்படும்.
இதை ஒரு நிரலாக உங்களால் மாற்ற முடிந்தால், பரோட்டாவின் வரலாறு உங்களை விடுதலை செய்யும்.
(தொடரும்)