கடந்த வாரம் நிபந்தனை வரிகளின் மூன்று வகைகளைப் பார்த்தோம். இவ்வாரம் மீதியிருக்கும் இரண்டையும் வரச் சொல்லியிருக்கிறேன்.
நிபந்தனை வகை: Nested if
ஒன்றுக்குள் நுழைந்தால் மற்றொன்று என்ற அமைப்பின் அடிப்படையில் கட்டப்பட்ட பறவையின் கூடுதான் இந்த நிபந்தனை வகையின் முன்மாதிரி. ஒரு ifக்குள் மற்றொரு if என்ற கட்டமைப்பில் நிரல் இயங்கும். புரிதலுக்காக வெளி if, உள் if என்று இவற்றை அழைக்கலாம்.
முதலில் இப்படியொரு வகைமையை எப்போதெல்லாம் பயன்படுத்த வேண்டும்?
1) ஒன்றிற்கும் மேற்பட்ட நிபந்தனைகளைப் பரிசோதிக்க வேண்டிய சூழல் நிரலுக்கு ஏற்படும்போதெல்லாம்
2) நிபந்தனை 2 பரிசோதிக்கப்பட வேண்டுமென்றால், முதலில் நிபந்தனை 1ன்றின் பரிசோதனை முடிவு ‘ஆம்’ என்றிருக்க வேண்டியது அவசியம் போன்ற சூழல்களில்
3) நிபந்தனைகளை அடுக்கு அடுக்காகப் பரிசோதிக்க நிரலாளர் விரும்பினால்
‘தம்பி இன்னும் டீ வரலை’ என்பவர்களுக்காக ஓர் உதாரணம்.
நிரல் 1:
மூன்று எண்களில் பெரியதைக் கண்டறிவது
ஏற்கனவே பார்த்த உதாரணம்தான். அதையே Nested ifன் கட்டமைப்புக்கு மாற்றியிருக்கிறோம். அவ்வளவுதான்.
விளக்கம்:
நிரலில் மூன்று மதிப்புகளை நேரடியாகவே a,b,cக்கு ஒதுக்கியிருக்கிறோம். நீங்கள் பயனரிடமிருந்து பெறுவதைப் போலவும் மாற்றி எழுதிப் பார்க்கலாம். பின்வரும் குறு அனிமேஷனை பாருங்கள் அதன்பின் எழுத்து வடிவிலான விளக்கம்.
நிரல், முதலில் a மற்றும் bயின் மதிப்புகளை ஒப்பிட்டுப் பார்க்கிறது. அதாவது 10, 20ஐ விடப் பெரியதா என்று பரிசோதிக்கிறது. முடிவு இல்லை என்று வருவதனால், உள் ifற்கு இங்கே வேலையே இல்லை. அதனால், வெளி ifன் மற்றொரு சாத்தியமான else பகுதிக்கு நிரலின் கட்டுப்பாடு வந்து சேர்கிறது.
இப்போது b மற்றும் cயின் மதிப்புகளை ஒப்பிட்டுப் பார்க்கிறது. அதாவது 20, 15ஐ விட பெரியதா என்று ஒப்பிடுகிறது. முடிவு என்ன? ஆம் தானே. அதனால், ஒதுக்கப்பட்ட மூன்று எண்களில் bயே பெரியது என்று நிரல் முடிவெடுத்து அச்சிடுகிறது.
இந்த நிரலின் எல்லாச் சாத்தியங்களையும் பரிசோதித்துப் பார்க்க a,b,cக்கு வெவ்வேறான நிறைய மதிப்புகளைத் தந்து பாருங்கள். அதன்மூலம் aவிற்கும், bவிற்கும்கூட தானும்தான் பெரிய எண் என்கிற அந்தஸ்தை வழங்குங்கள்.
நிரல் 2:
ஒரு எண் நேர்ம எண்ணாக இருந்தால், அது ஒற்றைப்படையா அல்லது இரட்டைப்படையா என்பதைக் கண்டறிதல். நேர்ம எண்ணாக இல்லாத பட்சத்தில், எதிர்ம எண் என்று அச்சிடவும்.
வெளியீடு:
விளக்கம்:
– பயனரிடமிருந்து ஒரு மதிப்பைப் பெற்று அதை num என்ற அடையாளங்காட்டியில் சேமிக்கவும். numன் மதிப்பு 0வை விடப் பெரிதாக இருக்கும் பட்சத்தில், அதை 2ஆல் வகுக்கவும். கிடைக்கப்பெற்ற மீதியைவைத்து இரண்டு சாத்தியங்களை உருவாக்கலாம்.
1) மீதி 0வாக இருந்தால் இரட்டைப்படை
2) இல்லையென்றால், ஒற்றைப்படை
– நிரலின் ஆரம்பத்திலேயே ஒரு நிபந்தனையைப் பரிசோதனை செய்திருந்தோம் அல்லவா? அதன் else தொகுதியைக் கடைசியாக எழுதியிருக்கிறோம். numன் மதிப்பு 0வாக இல்லாத பட்சத்தில் என்ன செய்வது என்பதை இத்தொகுதி கையாள்கிறது.
மேலே பார்த்த நிரல்களுக்கு இடையே ஓர் ஒற்றுமை உண்டு. அவை பல்வேறு நிபந்தனைகளைப் பரிசோதிக்கின்றன, அவை அனைத்துமே “ஆம்” என்று சொல்வதற்கான வாய்ப்பினையும் பெற்றிருக்கின்றன. “நீ பேசாம அங்கன்வாடிக்கே போயிடு சிவாஜி” என்று கண்ணாடி முன்னின்று துப்பிக் கொள்பவர்கள் நிதானமாகத் தொடர்ந்து படிக்கவும்.
Nested if பயன்படுத்தி ஒரு நிரல் எழுதுகிறீர்கள். அதில் மூன்று if இருக்கிறது என்று வைத்துக்கொள்வோம், அந்த மூன்றின் நிபந்தனைகளும் பரிசோதிக்கப்பட்டு “ஆம்” என்று சொல்வதற்கான வாய்ப்பை நிரல் வழங்குகிறது.
“பல பெண்களைத் தேர்ந்தெடுத்துக் காதலித்து அவர்கள் அனைவருக்குமே வாழ்க்கைக் கொடுப்பது”.
ஆனால் எனது நிரலில் நிறைய நிபந்தனைகள் இருக்கவேண்டும், அவற்றிலிருந்து ஒன்று மட்டும் தான் பலிக்கவேண்டும் என்றொரு சூழல் வந்தால் என்ன செய்வது?
“ரொம்ப நேரமா நின்னுக்கிட்டு இருக்க அந்தக் கடைசி ஆள வர சொல்லுங்கப்பா. நேரமாவுது”.
நிபந்தனை வகை: if…elif…elif…else
நிரல் 3:
மூன்று எண்களில் பெரியதைக் கண்டறிவது (இது வேற மாரி)
வெளியீடு:
விளக்கம்:
பயனரிடமிருந்து மூன்று float மதிப்புகளைப் பெற்று அவற்றை முறையே num1, num2 மற்றும் num3இல் சேமித்து வைக்கிறோம். மூன்றில் ஏதாவதொன்று தான் பெரியதாக இருக்கமுடியும் என்பதுதானே தர்க்கம். ஆகவே ஒரு எண்ணைத் தேர்ந்தெடுத்து, அதை மற்ற இரண்டோடு ஒப்பிட்டுப் பார்க்கவிருக்கிறோம்.
முதலில் num1ஐ எடுத்துக்கொண்டு, அது num2 மற்றும் num3ஐ விட பெரியதாக இருக்கிறதா என்று பார்க்கிறோம், அப்படியிருந்தால் largest என்னும் அடையாளங்காட்டி num1ஐ குறிக்கும்.
இப்பொழுது இரண்டாவது சாத்தியத்துக்கு நிரல் நகர்கிறது. num2ஐ எடுத்துக்கொண்டு, அது num1 மற்றும் num3ஐ விட பெரியதாக இருக்கிறதா என்று பார்க்கிறோம், அப்படியிருந்தால் largest என்னும் அடையாளங்காட்டி num2ஐ குறிக்கும்.
மேற்சொன்ன இரண்டு சாத்தியங்களுமே பலிக்காமல் போனால்,மிச்சமிருப்பது என்ன? num3 தானே? அதனால் இப்போது largestல் num3.
“இவ்வளவுதானா? இதுக்கு ஏன்டா Nested ifஐ சுத்தி, பர்னிச்சர ஒடச்சி” என்பவர்களுக்குச் சொல்ல ஒரு ரகசியம் இருக்கிறது. நிரலாக்க மொழிகளில் 1, 2 , 3 என்று கற்க வேண்டியவை பட்டியலிடப்பட்டால், ஜாலியாக இருங்கள். அவற்றை நினைவில் வைத்திருப்பது மிக எளிது. 1லிருக்கும் சிக்கல் நம்மை 2வதை நோக்கி நகர்த்தும், 2ன் சிக்கல் மூன்றாவதை நோக்கி…, எந்த சூழலுக்கு எதைப் பயன்படுத்துவது என்ற தெளிவு பிறந்துவிட்டால் நீங்கள் திரையிலிருந்து முகத்தை நகர்த்தி பல் தெரியாமல் சிரித்துக் கொள்ளலாம்.
“பல பெண்களைத் தேர்ந்தெடுத்துக் காதலித்து அவர்களில் ஒருவருக்கு மட்டும் வாழ்க்கைக் கொடுத்தால்”, if…elif…elif…else.
நிரல் 5:
இது பரீட்சைகளின் காலம், அதனால் அதை முன்னிட்டு.
விளக்கம்:
“Dry Run” முறையில் இந்த நிரலைப் புரிந்துகொள்ள வாய்ப்பிருக்கிறதா பாருங்கள். எனது மதிப்பெண் 51.6, எனக்கு என்ன கிரேடு கிடைக்கும். கொஞ்சம் பார்த்துச் செய்யுங்கள்.
இத்தோடு நிபந்தனை வரிகளின் கதை முடிகிறது. குறைந்தது இத்தலைப்பில் 50 நிரல்களையாவது எழுதிப் பாருங்கள், அப்படிச் செய்தால் என் கனவில் நீங்கள் தேவதையாக (ஆண்கள் நீங்கலாக) தோன்ற வாய்ப்பிருக்கிறது. உங்கள் வசதிக்காக ஒரு 5 நிரல் ஐடியாக்களை மட்டும் இங்கே பட்டியலிடுகிறேன்.
1) பயனரிடமிருந்து இரண்டு எண்களைக் கேட்டுப் பெறுங்கள், கூடவே இவற்றிலிருந்து (+,-,*,/) ஒன்றைத் தேர்ந்தெடுக்கச் சொல்லுங்கள். இயக்கியின் அடிப்படையில் எண்கணித செயல்பாடுகளை மேற்கொள்ளுங்கள்.
2) வெப்பநிலையை உள்ளீடு செய்யச்சொல்லி பயனரைக் கேளுங்கள். அதனடிப்படையில் காலநிலையை (வெப்பம், குளிர்,இதம்) அச்சிடுங்கள்.
3) பயனரிடமிருந்து மூன்று எண்களைப் பெற்று, அவை ஒரு முக்கோணத்தை வடிவமைக்க முடியுமா என்பதை நிர்ணயம் செய்யுங்கள்.
4) பயனர் ஒரு எண்ணைத் தருகிறார், அது 3 மற்றும் 5ஆல் வழிபடுகிறதா என்று பாருங்கள்.
5) ஒருவரின் எடையையும், உயரத்தையும் வாங்கி அவரது உடல் நிறை குறியீட்டு எண்ணை (Body Mass Index) அச்சிடுங்கள். கூடவே அவர் குறைந்த எடையா? சாதாரண எடையா? அதிக எடையா? என்பதையும் குறிப்பிட்டு கொளுத்திப் போடுங்கள். வெடித்துக் கொண்டிருக்கட்டும்.
இடையில் ஒருவாரம் இருக்கிறது இல்லையா?
(தொடரும்)