என்கணித இயக்கிகள், தொடர்பு நிலை (அ) ஒப்பீட்டு இயக்கிகள் குறித்துக் கடந்த வாரம் பார்த்தோம். ஒருவேளை ஒன்றுக்கும் மேற்பட்ட நிபந்தனைகளைச்(conditions) சரிபார்க்க வேண்டியிருந்தால் அப்போது என்ன செய்வது?
உதாரணத்துக்கு நீங்கள் எழுதும் நிரலில் ராமின் சம்பளத்தைக் கேட்டுப் பெறுகிறீர்கள். அது ரஹீம் மற்றும் ஜான் ஆகிய இருவரது சம்பளத்தோடு ஒப்பிடுகையில் அதிகமாக இருக்கிறதா, இல்லையா என்பதை எப்படிக் கண்டறிவீர்கள்? பின்னணி இசையேதும் இருந்தால் ஒலிக்கவிடுங்கள், வருபவை தர்க்க இயக்கிகள்.
and, or, not
ஒன்றுக்கும் மேற்பட்ட நிபந்தனைகளை இணைக்க இந்த இயக்கிகள் பயன்படுகின்றன. இவற்றைப் பயன்படுத்தி எத்தனை நிபந்தனைகளை இணைத்தாலும் சரி, முடிவு boolean தரவு வகையாகத்தான் இருக்கும். அதாவது ஒன்று True அல்லது False. ஆம், இல்லை என்று மட்டுமே சொல்லத் தெரிந்த அப்பாவி இயக்கிகள் இவை. ஒவ்வொரு இயக்கியாக எடுத்துக்கொண்டு உதாரணங்களைப் பார்ப்போம். முதலில் and.
and இயக்கியைப் பொறுத்தவரையில், நிபந்தனைகள் அனைத்தும் ‘ஆம்’ என்று இருக்கும் பட்சத்தில் மட்டுமே முடிவும் Trueவாக வரும். அதிகம் யோசிக்காமல் உதாரணங்களுக்குச் சென்று விடுவோம்.
>>>x = 5
>>>y = 7
>>>z = 9
>>>result = (x < y) and (y < z)
>>>print(result)
5, 7ஐ விட சிறியதா? ஆம்.
7, 9ஐ விட சிறியதா? ஆம்.
ஆம் மற்றும் ஆம், பெறக்கூடிய முடிவும் ஆம் என்று கிடைக்கும்.
இரண்டு நிபந்தனைகளுமே இல்லை என்றோ (அ) ஏதாவது ஒன்று இல்லை என்று வந்தாலும் கூட முடிவு இல்லை தான். and ஒரு கண்டிப்பான அதிகாரி என்பதை நினைவில் வைத்துக்கொள்ளுங்கள், ஏதாவது ஒன்று இல்லையென்றாலும் கூட கையெழுத்துப் போட மாட்டார். இப்போது மேலே பார்த்த அதே உதாரணத்தில் ஒரு சிறிய மாற்றத்தைச் செய்து விளையாடுவோம்.
>>>x = 5
>>>y = 7
>>>z = 6
>>>result = (x < y) and (y < z)
>>>print(result)
5, 7ஐ விட சிறியதா? ஆம்.
7, 6ஐ விட சிறியதா? இல்லை.
ஆம் மற்றும் இல்லை, பெறக்கூடிய முடிவு இல்லை என்று கிடைக்கும்.
அடுத்ததாக or. இவர் கொஞ்சம் தாராளவாதி. கோப்புகளில் ஒன்றிரண்டு இல்லையென்றாலும் கூட, தொலைகிறது பரவாயில்லை என்று கையெழுத்துப் போட்டுவிடுவார். அதாவது நிரலில் பரிசோதிக்கப்படும் நிபந்தனைகளில் ஒன்று மட்டும் ஆம் என்றிருந்தால் கூட போதுமானது, முடிவும் ஆம் என்றே கிடைக்கும். இரண்டாவதாகப் பார்த்த உதாரணத்தை மீண்டும் பயன்படுத்துவோம்.
>>>x = 5
>>>y = 7
>>>z = 6
>>>result = (x < y) or (y < z)
>>>print(result)
5, 7ஐ விட சிறியதா? ஆம்.
7, 6ஐ விட சிறியதா? இல்லை.
ஆம் அல்லது இல்லை, பெறக்கூடிய முடிவு ஆம் என்று கிடைக்கும்.
கடைசியாக பார்க்கவிருக்கும் தர்க்க இயக்கி not. எதைக் கேட்டாலும் அதற்கு நேர்மாறாக பதில் சொல்லும் நல்ல நண்பர் உங்களுக்கும் இருப்பார் தானே? அவரை நிரலில் கொண்டுவர notஐ பயன்படுத்தலாம். கிடைக்கும் boolean முடிவை அதற்கு நேர்மாறாக மாற்றித்தரும் வேலையையே not பார்க்கிறது. ஆம் என்று வந்தால் இல்லை, இல்லையென்று வந்தால் ஆம்.
>>>x = 5
>>>y = 7
>>>result = not (x < y)
>>>print(result)
5, 7ஐ விட சிறியதா? ஆம்.
not(ஆம்), பெறக்கூடிய முடிவு இல்லை என்று கிடைக்கும்.
இந்த மூன்று தர்க்க இயக்கிகளையும் ஒரே சமயத்தில் பயன்படுத்த முடியுமா? ஏன் முடியாது?
>>>x = 5
>>>y = 7
>>>z = 9
>>>result = (x < y) and (y > z) or (x == z) and not(y > z)
>>>print(result)
வாசிப்பதை நிறுத்திவிட்டு முடிவு என்னவாக இருக்கும் என்பதை யோசியுங்கள்.
முடிவு Falseஆகத் தான் இருக்கும். ஏன்?
(x < y) and (y > z), முடிவு இல்லை.
இல்லை or (x == z), முடிவு இல்லை.
இல்லை and not(y>z), முடிவு இல்லை.
சரி, இப்போது ஊடாடும் முறையில் பின்வரும் நிரல் வரியை மட்டும் பரிசோதனை செய்து பாருங்கள்.
>>>10/0
சிவப்பு நிறத்தில் பிழையென்று சொல்கிறது இல்லையா? காரணம் தெரிந்தது தானே, ஒரு எண்ணைப் பூஜ்ஜியத்தால் வகுக்க இயலாது. கணிதத்துக்குப் பொருந்துவது, நிரலுக்கு அப்படியே பொருந்தும். ஒரு சமயத்தில் இது பிழையென்று சொல்லும் பைத்தான், வேறொரு சமயத்தில் அப்பிழையைக் கண்டுகொள்ளாமல் சமர்த்தாக விடையைச் சொல்லிவிடுகிறது. இது என்ன அநியாயம் என்பவர்களுக்காக.
>>>(11>10) or (10/0)
இதன் முடிவு ஆம் என்று கிடைக்கும். or இயக்கி இயங்கும் அடிப்படை மீண்டுமொருமுறை அசை போட்டால், ஆசுவாசம் கொள்ளலாம். orஐ பொறுத்தவரையில், ஏதாவது ஒன்று ஆம் என்று வந்தால் போதுமானது தானே, அதனால் தான் அவர் தலையாட்டுகிறார். அப்படியென்றால் அந்த பிழை? பிழை இருக்கும் பக்கம் சென்றால் தானே? கிடைத்துவிட்டது ஆம், அப்படியென்றால் விடையும் ஆம் என்பதோடு முடித்துக்கொள்கிறது பைத்தான். ஒருவேளை முதலாவது நிபந்தனை இல்லை என்று வந்தால்?
>>>(10>11) or (10/0)
இப்போது நீங்கள் எதிர்பார்க்கும் சிவப்பு நிற பிழைச் செய்தியை பைத்தான் தருவதைத் திரையில் பார்க்கலாம். இப்போது இந்த மூன்று தர்க்க இயக்கிகளான and, or, not இயங்கும் விதத்தை ஒரு அட்டவணையாக மாற்ற முடிகிறதா என்று பார்ப்போம். நிரலாக்க மொழியில் இதற்குப் பெயர் Truth Table.
and, or, not ஆகிய இயக்கிகளைக் குறிக்க &&, ||, ! சின்னங்களையும் பயன்படுத்தலாம்.
0
எல்லாம் தனித்தனி தலைப்புகளாக இருப்பதைப் போன்ற ஒரு உணர்வு வருகிறது இல்லையா? நிரலில் ஒரு சிக்கலுக்குத் தீர்வு காண்பதற்குப் பயன்படுத்தாத வரையில், கற்பது எதுவும் முழுமை பெறாது. நிரலாக்க மொழி தொடர்பாக எதை கற்றாலும் சரி, அதன் ஆழத்தை அடைய விதவிதமாக நிரல் எழுதிப் பார்ப்பதே சிறந்த வழி.
நிரல் 1:
ஒரு எண்ணைப் பயனரிடமிருந்து பெற்று, அது 4க்கும், 7க்கும் இடையே இருக்கிறதா என்பதைக் கண்டறிந்து, ஒருவேளை இருந்தால் True என்று சொல்ல நிரல் எழுத வேண்டும்.
பிட்: and இயக்கியைப் பயன்படுத்தவும்
நிரல் 2:
ஒரு எண்ணைப் பயனரிடமிருந்து பெற்று, அது நேர்மறை எண்ணாகவோ(அ) இரட்டைப்படை எண்ணாகவோ இருக்கும் பட்சத்தில் True என்று நிரல் அச்சிட வேண்டும்.
பிட்: or இயக்கியைப் பயன்படுத்தவும்
நிரல் 3:
ஒரு எண்ணைப் பயனரிடமிருந்து பெற்று, அது பூஜ்ஜியத்திற்கு நிகரானதாக இல்லாமல் இருக்கும் பட்சத்தில், நிரலை True என்று சொல்லச் சொல்லுங்கள்.
பிட்: not இயக்கியைப் பயன்படுத்தவும்
வழக்கமாக நிரலின் திரைச்சொட்டுகளையும் கட்டுரையோடு இணைப்பதே வழக்கம். ஆனால் இத்தொடரை வாசிக்கும் ‘கோடிக்கணக்கான’ வாசகர்களை நிரல் எழுத வைக்காவிடில், இதை வாசிப்போரில் மூன்று பேரைத் தேர்ந்தெடுத்து மொட்டையடிக்கச் சபதம் மேற்கொண்டிருப்பதால், விடைகளைத் தனிப் பக்கத்தில் கொடுத்திருக்கிறேன்.
ஆன வரைக்கும் முயற்சி செய்து பாருங்கள். வேலைக்கே ஆகாது என்று தோன்றும் பட்சத்தில் மாட்டும் கீழிருக்கும் சுட்டியைச் சொடுக்குங்கள். நேரடியாகவே நிரல் கோப்புகளை இணைத்திருக்கிறேன், அதை உங்கள் கணினிக்குத் தரவிறக்கம் செய்து எளிதாகச் செயல்படுத்திப் பார்க்க முடியும்.
முக்கயமான பின்குறிப்பு: தரவிறக்கம் செய்யும்பொழுது, இது .exe வகையைச் சார்ந்தது, ஒருவேளை வைரஸாக இருக்கலாம் என்று கூகுள் பயமுறுத்தினால் நம்பி விடாதீர்கள். ஒரு நிரலாக்க கோப்புக்கும், வைரசுக்கும் அவனுக்கு வித்தியாசம் தெரியாது. அன்பை மட்டுமே பரப்புவோம், வைரஸை அல்ல என்று உறுதியேற்று விட்டு துணிந்து தரவிறக்குங்கள்.
(தொடரும்)