‘இவ்விரண்டில் எந்தப் பாதை சிறந்தது?’
‘தனியார் வங்கி (அ) பொதுத்துறை வங்கி, எதில் முதலீடு செய்வது?’
‘ரெட்மி (அ) சாம்சங், எது குறைந்த விலைக்குக் கிடைக்கும்?’
‘சைவம் (அ) அசைவம், இரவு உணவுக்கு எதைத் தேர்ந்தெடுப்பது?’
‘சம்பளம் (அ) பணிநிறைவு, எந்த நிறுவனத்தில் சேருவது?’
ஒரு முடிவை எடுப்பதற்குள்தான் எத்தனை குழப்பங்கள், ‘யோசிச்சி முடிவெடு’ போன்ற எத்தனை எத்தனை அறிவுரைகள். நாம் எடுத்த முடிவுகள் தான் இன்றைய நமது நிலைக்குக் காரணம் என்ற ஒன்றைத்தவிர இதற்கெல்லாம் வேறென்ன விளக்கம் தர முடியும்?
மனிதர்களுக்குத்தான் இத்தனை கஷ்டங்கள் என்றால், இந்த நிரலுக்கும்கூட இதெல்லாம் பொருந்தும் என்கிறார்கள். அது சரி, ஒரு நிரல் எப்படி முடிவெடுக்கும்?
‘ஆம்’ என்றால் இதைச்செய், ‘இல்லை’ என்றால் வேறொன்றைச் செய் என்று ஒரு நிரலுக்கு எப்படிக் கட்டளைகள் இடுவது?
இதைச் சாத்தியப்படுத்த ‘நிபந்தனை வரிகளை’ (Conditional Statements) பயன்படுத்தலாம். இரண்டு காரணங்களுக்காக இவை முக்கியமானவை.
1) இதுவரை நாம் எழுதிய நிரல்கள் எல்லாம், ஒவ்வொரு வரியாக மட்டுமே தங்களைச் செயல்படுத்தி வந்தன. உதாரணத்துக்கு வரி 1, வரி 2, வரி 3 … என. ஒருவேளை 1ஆம் வரிக்குப் பிறகு, 4ஆம் வரி செயல்படுத்தப்பட வேண்டுமென்றால் (2ம், 3ம் நிராகரிக்கப்பட்டு) நிபந்தனை வரிகளைப் பயன்படுத்தலாம்.
2) நிரலின் சில பகுதிகள் மட்டும் எப்பொழுதெல்லாம் ஒரு முடிவின் அடிப்படையில் செயல்பட வேண்டிய கட்டாயம் வருகிறதோ, அப்போதெல்லாம் நிபந்தனை வரிகள் உங்கள் நினைவுக்கு வர வேண்டும். ‘இதைத்தான் அந்த டைலரும் சொன்னான்’ என்பவர்கள் மேலே படிக்கவும்.
– ரஹீமின் சம்பளம் 25000ஐ விடக் குறைவாக இருக்கும் பட்சத்தில் மட்டும் அவருக்கு 10% போனஸ் வழங்கவும், இல்லையென்றால் 5%.
– ராமின் மதிப்பெண் 35க்குள் இருந்தால் மட்டும் அவருக்கு நன்னடத்தை மதிப்பெண் 5ஐ கூடுதலாக வழங்கவும், இல்லையென்றால் வாங்கிய மதிப்பெண்ணையே உறுதி செய்யவும்.
மேலேயிருக்கும் இரண்டு உதாரணங்களையும் கவனித்தீர்கள் என்றால் ஒன்று விளங்கும், ஒரு நிபந்தனை -> அது பலிக்கும் பட்சத்தில் நிரலின் ஒரு பகுதி மட்டும் இயங்குகிறது -> மாறாக நிபந்தனை பலிக்காத பட்சத்தில் நிரலின் வேறொரு பகுதி இயங்குகிறது.
இனி பைத்தானில் நிபந்தனை வரிகளின் வகைகளைப் பார்ப்போம்.
1) if
2) if else
3) nested if
4) if..elif..else
நிபந்தனை வகை : if
நிரல் 1:
வெளியீடு:
நிரல் 2:
வெளியீடு:
நிரல் 3:
வெளியீடு:
மீண்டும் பைத்தானின் இலக்கணம் குறித்துப் பேசவேண்டியிருக்கிறது. if பயன்படுத்தப்பட்டிருக்கும் நிரல் வரி எவ்வாறு முடிகிறது என்று கவனியுங்கள், : சின்னம் வைத்து முடிக்கப்பட்டு இருக்கிறது. அப்படியென்றால் if என்பது ஒரு தொகுதி, அதற்கு உள்ளாக சில/பல நிரல் வரிகள் தொடர்ந்து வரலாம் என்று பொருள். சரி, எவையெல்லாம் ifஐ தொடர்ந்து வருகின்றன என்பதை எப்படிக் கண்டறிவது? ifற்கு கீழே எந்தெந்த நிரல் வரியெல்லாம், இடது பக்கமிருந்து நான்கு இடைவெளிகள் (Four Spaces) தள்ளி இருக்கின்றனவோ அவையெல்லாம் if என்னும் தொகுதிக்கு உட்பட்டவையாக இருக்கின்றன.
if என்பது காம்பவுண்ட் சுவர் என்றால், அதைப் பின்தொடர்ந்து வரும் நிரல் வரிகள் சுவரின் எல்லைக்கு உட்பட்டவை.
அந்த நான்கு இடைவெளிகளையும் நிரலாளர்தான் தர வேண்டுமா? தேவையில்லை. நிரலாளர் :ஐ வைத்து ஒரு நிரல் வரியை முடித்தார் என்றால், அது ஒரு தொகுதியின் தொடக்கம் என்பதைத் தாமாகவே புரிந்துகொண்டு, அடுத்த நிரல் வரியை 4 இடைவெளியை விட்டு தாமாகவே தொடங்கிவிடுகின்றன பெரும்பான்மை IDLEக்கள். இருப்பினும் அதை ஒருமுறை சரிபார்ப்பது நிரலாளரின் கடமை.
நிரல் 1ன் விளக்கம்:
பயனரிடமிருந்து அவரது வயதைக் கேட்டுப் பெறுகிறீர்கள். அம்மதிப்பு 18ற்கு மேலே இருந்தால் அவர் தேர்தலில் வாக்கு செலுத்தத் தகுதியானவர் என்று திரையில் தோன்ற வைக்கிறீர்கள்.
நிரல் 2ன் விளக்கம்:
பயனரிடமிருந்து ஒரு எண்ணைப் பெறுகிறீர்கள். அது இரட்டைப்படை எண் தானா என்பதைக் கண்டறிந்து, அப்படியிருக்கும் பட்சத்தில் அதை உறுதி செய்கிறீர்கள்.
நிரல் 3ன் விளக்கம்:
x என்னும் அடையாளங்காட்டிக்கு 10ஐ ஒதுக்கீடு செய்கிறீர்கள். இப்போது xன் மதிப்பு 5ஐ விட அதிகமாக இருக்கிறதா என்பதைப் பரிசோதித்து, அப்படி இருந்தால் மட்டும் அதை நிரலில் சொல்கிறீர்கள்.
எல்லாம் சரிதான். ஆனால்…
இந்த நிரல்கள் எதுவுமே ஒருவேளை
– பயனர் 18 வயதிற்கு உட்பட்டு இருந்தால்
– இரட்டைப்படை எண்ணாக இல்லாமல் இருந்தால்
– xன் மதிப்பு 10ற்கு குறைவாக இருந்தால்
போன்ற மற்றொரு சாத்தியத்தைப் பற்றிக் கவலைப்பட்டதாகத் தெரியவேயில்லை. நிபந்தனை பலித்தால் என்ன நடக்கும் என்பதிலேயே தான் குறியாக இருக்கின்றதே ஒழிய, முழுமைபெற்றதாகத் தோன்றவில்லை. நாடிவந்த பொருள் இல்லை என்பதைக் கடைக்காரர் சொல்லவேண்டுமென்று எதிர்பார்ப்பதில் என்ன தவறு இருக்கிறது?
என்ன செய்யலாம்? ifன் இரண்டாம் வகையைக் கூப்பிடுங்கள்.
நிபந்தனை வகை : if…else
உங்கள் கணிப்பு சரிதான். ஒரு நிபந்தனையின் ஆம், இல்லையென்ற இரண்டு சாத்தியங்களையும் இவ்வகை திறம்படக் கையாளும். புரிதலுக்காக ஏற்கனவே பார்த்த மூன்று உதாரணங்களையும், புதிதாக மூன்றையும் பார்ப்போம்.
நிரல் 1 (புதுப்பிக்கப்பட்டது):
வெளியீடு:
நிரல் 2 (புதுப்பிக்கப்பட்டது):
வெளியீடு:
நிரல் 3 (புதுப்பிக்கப்பட்டது):
இந்த மூன்று நிரல்களின் விளக்கத்தையும் ஒரே வரியில் சொல்லிவிடலாம். ஒரு நிபந்தனையின் ஆம், இல்லையென்ற இரு சாத்தியங்களையும் if…else கையாள்கிறது.
மேலும் சில உதாரணங்களைப் பார்ப்போம்.
நிரல் 4:
வெளியீடு:
விளக்கம்:
பயனரிடமிருந்து ஒரு மதிப்பைப் பெற்று, அது லீப் ஆண்டா இல்லையா என்பதைக் கண்டறிய நேரடியாக எழுதப்பட்ட ஒரு நிரல். பயனரிடமிருந்து பெற்றதை yearக்கு ஒதுக்கீடு செய்து, அதை 4ஆல் வகுக்கையில் மீதி பூஜ்ஜியமும், மற்றும் 100ஆல் வகுக்கையில் பூஜ்ஜியம் அல்லாத மதிப்போ (அ) 400ஆல் வகுக்கையில் பூஜ்ஜியமோ மீதியாகக் கிடைத்தால், பெற்றது லீப் ஆண்டு. அதன் மற்றொரு சாத்தியத்தையும் அடையாளப்படுத்துகிறது நிரல்.
நிரல் 5:
வெளியீடு:
விளக்கம்:
மூன்று எண்களைப் பயனரிடமிருந்து பெற்று, அவற்றில் பெரியதை அச்சிடுதல். a,b,c ஆகிய மூன்று அடையாளங்காட்டிகளுக்கும் பின்வரும் மதிப்புகளை ஒதுக்கீடு செய்யவும்.
a=10
b=25
c=15
நிரலைச் செயல்படுத்திப் பார்ப்பதற்கு முன்பு, இம்மதிப்புகளை வைத்து நிரல் எப்படி பெரிய எண்ணைக் கண்டறிகிறது என்பதை ஒவ்வொரு வரியாக எடுத்துக்கொண்டு நீங்களே நிரலாக இருந்து முயன்று பாருங்கள். ஒரு நிரலைப் புரிந்துகொள்வதற்கான மிகச் சிறப்பான வழி இது. இதற்கு ‘Dry Run’ என்று பெயர்.
நிரல் 6:
வெளியீடு:
வெளியீடு:
விளக்கம்:
1) வெப்பநிலை மதிப்பை செல்சியசாக பெற்று, அதை பாரன்ஹீட்டாக மாற்றுதல்.
2) வெப்பநிலை மதிப்பை பாரன்ஹீட்டாக பெற்று, அதை செல்சியசாக மாற்றுதல்.
பயனர் cஐ அழுத்தினால் 1 செயல்படுத்தப்படும், Fஐ அழுத்தினால் 2 செயல்படுத்தப்படும்.
அப்படியென்றால் இந்த வகையில் குறை என்று சொல்ல ஒன்றுமே இல்லையா?
ஏன் இல்லை?
அது என்ன எப்போது பார்த்தாலும் ஒரே நிபந்தனையை வைத்துக்கொண்டு உருட்டிக்கொண்டிருப்பது? அன்றாட வாழ்வில் நிபந்தனைகளுக்கா பஞ்சம்? ஒரு நிரல் அதைப் பிரதிபலிக்க வேண்டாமா?
இப்படியெல்லாம் உரக்கப் பேசினால் என்ன அர்த்தம்? வேறென்ன அடுத்த வகை வரப்போகிறது என்பதைத்தவிர. அதற்கு முன்பு, ஒரு கேள்வி
ஒரு ifற்கு இரண்டு else இருக்கலாமா என்பதைக் கொஞ்சம் பார்த்துச் சொல்லுங்களேன்.
(தொடரும்)