பைத்தான் படிக்கலாம் வாங்க! 14 – while

இது வரை if elif else பார்த்திருக்கிறோம். இந்தப் பதிவில் while பார்க்கப் போகிறோம். while என்னும் ஆங்கிலச் சொல்லின் பொருள் என்ன? எப்போது என்பது! இதை எதற்கு நிரல் மொழிகளில் பயன்படுத்துகிறார்கள்? ஓர் எடுத்துக்காட்டு சொல்கிறேன் பாருங்களேன். 1 என்று ஐந்து முறை அச்சிட வேண்டும் எப்படி நிரல் எழுதுவது?


print(1)
print(1)
print(1)
print(1)
print(1)

view raw

printone.py

hosted with ❤ by GitHub

இந்த நிரல் சரியா என்று கேட்டால் மிகச் சரி என்று சொல்ல வேண்டும். இந்த நிரல் தவறா என்று கேட்டால் அப்போதும் ஆமாம் என்று சொல்ல வேண்டும். என்ன உளறுகிறீர்கள் – சரி என்றும் சொல்ல வேண்டும் தவறு என்றும் சொல்ல வேண்டுமா? எப்படி என்கிறீர்களா?

இதற்கான விடையைத் தேடுவதற்கு முன், உங்களிடம் ஒரு கேள்வி – நிரலாக்கம்(Programming) ஏன் படிக்க வேண்டும்?

1. துல்லியமான விடையைக் கொடுப்பது.
2. துல்லியமான விடையையும் மிக மிகக் குறைந்த நேரத்தில் கொடுக்க வேண்டும்.
3. நிரல், சின்ன உள்ளீடுகளுக்கும் பொருந்த வேண்டும், பெரிய உள்ளீடுகளுக்கும் பொருந்த வேண்டும். (இது புரியவில்லை என்றாலும் இப்போதைக்கு விட்டு விடுங்கள். பிறகு கட்டாயம் பேசுவோம்!)

இவை மூன்றையும் தவிர, இன்னும் சில விடைகளை நீங்கள் சொல்லலாம். சரி தான்! இருந்தாலும் இவை மூன்றும் நிரலாக்கம் ஏன் தேவை என்பதற்கான அடிப்படையான கருத்துகள்!

இந்தக் கருத்துகளை இப்போது ஏன் பேச வேண்டும்? காரணம் இருக்கிறதா? இருக்கிறதே! மேல் உள்ள நிரல், இந்த மூன்றையும் நிறைவு செய்கிறதா என்று பாருங்கள். முதல் இரண்டைக் கட்டாயம் நிறைவு செய்யும். எனவே, மேல் உள்ள நிரல் சரியான நிரல் தான்!

ஆனால், மூன்றாவது கருத்தை மேல் உள்ள நிரல் நிறைவு செய்கிறதா? மூன்றாவது கருத்து என்ன? ஒரு நிரல், சின்ன உள்ளீடுகளுக்கும் வேலை செய்ய வேண்டும், பெரிய உள்ளீடுகளுக்கும் வேலை செய்ய வேண்டும்.

மேல் உள்ள நிரல், 1 என்பதை ஐந்து முறை அச்சிட மிகச் சரியாக வேலை செய்யும். அதாவது இங்கு ‘ஐந்து முறை’ என்பது தான் உள்ளீடு. ஐந்தாயிரம் முறை 1 என்பதை அச்சிட வேண்டும் என்றால் என்ன செய்வீர்கள். ஐந்தாயிரம் முறை, print(1) என்று கொடுப்பீர்களா? சொல்லுங்களேன். ஐந்தாயிரம் முறை, print(1) என்று கொடுத்து அச்சிடுவதைக் காட்டிலும் ஒரு தாளை எடுத்து, மனித முயற்சியில் ஐந்தாயிரம் முறை 1 என்று எழுதுவதே
சாலச் சிறந்ததல்லவா?

எனவே, மேல் உள்ள நிரல், சின்ன அளவில் சரியாகவும் பெரிய அளவில் தவறாகவும் இருக்கிறது என்பது இப்போது உங்களுக்குப் புரிந்திருக்கும்.

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


count = 1
if count<=5:
print(1)
count+=1 # மனத்தில் இந்தக் கணக்கை வைத்துக் கொள்வோம்.
if count<=5:
print(1)
count+=1
if count<=5:
print(1)
count+=1
if count<=5:
print(1)
count+=1
if count<=5:
print(1)
count+=1

view raw

ifone.py

hosted with ❤ by GitHub

இது தான் நமக்குத் தெரிந்த முறை. இது எளிதாகப் புரிகிறது. ஆனால், இந்த முறையும் சிக்கலைத் தீர்க்கவில்லை. சிக்கலைத் தீர்க்கவில்லை என்பது மட்டுமல்லாமல் சிக்கலைப் பெரிதுபடுத்தி விட்டது பாருங்கள். 1 என்பதை அச்சிட print(1) என்று ஐந்து வரிகளில் இருந்த நிரல், இப்போது பதினைந்து வரிகள் வந்து நிற்கிறது. பதினைந்து வரிகள் நிற்பது மட்டுமில்லை, இப்போது ஐந்தாயிரம் முறை 1 என்பதை அச்சிட வேண்டும் என்றால் என்ன செய்வது?

தீர்வை நோக்கிப் போவதாக நினைத்து, எதிர்த்திசையில் பயணிக்கிறோமோ என்னும் உணர்வைக் கொடுத்திருக்கிறது அல்லவா? இதை எப்படித் தீர்ப்பது? தொடக்கப்பள்ளிப் பாடத்தில் இருந்து தான்! தொடக்கப்பள்ளிப் பாடமா? ஆமாம்! தொடக்கப்பள்ளியில் படித்த கணக்கில் இருந்து தான் பாடம் படிக்கப் போகிறோம். ஐந்து முறை இரண்டைக் கூட்டினால் என்ன கிடைக்கும்?

2+2+2+2+2 = 10

இப்படி எழுதுவதைத் தானே,

2*5 = 10 என்று சுருக்கி எழுதுவோம். அதாவது, கூட்டலின் சுருக்கம் தான் பெருக்கல். இந்தப் பாடம் புரிவது போதும். எப்படிக் கூட்டலின் சுருக்கம் என்பது பெருக்கலோ அதைப் போலவே, if என்பதன் சுருக்கம் while. பலமுறை கூட்டல் குறியீட்டை(+) எழுதுவதற்கு மாற்றாக, ஒரு முறை பெருக்கல் குறியீட்டை(*) எழுதுவது போல, பல முறை if எழுதுவதற்கு மாற்றாக, ஒரே ஒரு முறை, while எழுதினால் போதும்.


count = 1 #1. முதலில் மனத்தில் இருக்கும் countஇன் மதிப்பு 1
while count<=5: #2. countஇன் மதிப்பு ஐந்துக்குக் கீழ் இருக்கும் வரை:
print(1) #3. 1 என அச்சிடுக.
count+=1 #4. countஉடன் ஒன்று கூட்டிக் கொள்க.

view raw

while_1.py

hosted with ❤ by GitHub

என்று எழுதினால் போதும். இப்போது while நன்றாகப் புரிந்திருக்குமே!

இப்போது வீட்டுப்பாடமாக: 
1) மேல் உள்ள நிரலுக்குப் பாய்வுப்படம்(Flow chart) வரைந்து வாருங்கள்.
2) மேல் உள்ள நிரலில் print(1) என்பதை மாற்றி print(count) என்று கொடுங்கள். அப்போது வரும் வெளியீடு புரிகிறதா எனப் பாருங்கள்.
3) மேல் உள்ள நிரலில் print(1) என்பதை மாற்றி print(count*2) என்று கொடுங்கள். அப்போது வரும் வெளியீடு புரிகிறதா எனப் பாருங்கள்.
4) மேல் உள்ள நிரலில் print(1) என்பதை மாற்றி print(count*count) என்று கொடுங்கள். அப்போது வரும் வெளியீடு புரிகிறதா எனப் பாருங்கள்.
5) மேல் உள்ள நிரலில் print(1) என்பதை மாற்றி print(count*count*count) என்று கொடுங்கள். அப்போது வரும் வெளியீடு புரிகிறதா எனப் பாருங்கள்.

– கி. முத்துராமலிங்கம், பயிலகம்

%d bloggers like this: