"வாழ்த்துக்கள், அமிகோ! லாஜிக் பிரச்சனைகளைத் தீர்த்துக்கொண்டு நான் மிகவும் அலைக்கழிக்கப்பட்டேன், நீங்கள் வருவதை நான் கவனிக்கவில்லை. இதோ உங்களுக்காக: முதலைகள் பறந்தால், பனி வெண்மையாக இருக்கும். பறக்கும் முதலை இருக்கிறது. என்ன முடிவு?"

"உம்... அப்படியானால் பனி வெண்மையாக இருக்கும் என்று முடிவு செய்கிறோம்?"

"அருமை! நீங்கள் துவக்க தேர்வில் தேர்ச்சி பெற்றீர்கள். அடுத்த தலைப்பில் தேர்ச்சி பெற நீங்கள் தயாராக உள்ளீர்கள். இது 'லாஜிக்கல் ஆபரேட்டர்கள்' என்று அழைக்கப்படுகிறது. மேலும் நாங்கள் பூலியன் தர்க்கத்தில் தொடங்குவோம். உள்ளுணர்வாக, உங்களுக்கு ஏற்கனவே தெரியும். நீங்கள் ஒரு ரோபோ, எல்லாவற்றிற்கும் மேலாக . ஜாவா மொழியைப் பொருத்த உங்கள் அமைப்புகளை நாங்கள் மாற்ற வேண்டும்."

"பூலியன் தர்க்கம்? பூலியன் வகையைப் பற்றி சமீபத்தில் என்னிடம் கூறப்பட்டது..."

"ஆம், இங்கே ஒரு நேரடி தொடர்பு உள்ளது. பூலியன் வெளிப்பாடுகள் உண்மையாகவோ அல்லது தவறாகவோ மட்டுமே இருக்க முடியும். அது நடக்கும் போது, ​​இந்த வகையான தர்க்கம் என்பது உண்மை அல்லது தவறான வெளிப்பாடுகள் மற்றும் அத்தகைய வெளிப்பாடுகளின் சேர்க்கைகளைப் பற்றியது. எடுத்துக்காட்டாக, வெளிப்பாடு 18 < 25 எப்போதும் உண்மை, மற்றும் 7 < 5 எப்போதும் தவறானது. வெளிப்பாடு (i <10) i இன் மதிப்பைப் பொறுத்தது. மேலும் வெளிப்பாடு மதிப்பிட்டால், எடுத்துக்காட்டாக, உண்மை, பின்னர் ஏதாவது செய்ய நிரலைக் கேட்கலாம்."

"ஆஹா, நான் புரிந்துகொள்கிறேன். பூலியன் வெளிப்பாடுகள் தர்க்கரீதியான முடிவுகளை எடுக்க மட்டுமல்லாமல், நிரல்களில் ஃபோர்க்குகளை உருவாக்கவும் அனுமதிக்கின்றன."

"சரியாக. முக்கிய விஷயம் என்னவென்றால், அவற்றை எவ்வாறு எழுதுவது என்பதைக் கற்றுக்கொள்வது. உதாரணமாக, ஜாவாவில் நீங்கள் வெறும் வெளிப்பாட்டை எழுத முடியாது 18 < age <65. இது தொடரியல் தவறாக இருக்கும் மற்றும் நிரல் தொகுக்கப்படாது.

"ஆனால் நீங்கள் இதை இப்படி எழுதலாம்:

(18 < age) AND (age < 65)

நிச்சயமாக, நாங்கள் உண்மையில் ஆங்கில வார்த்தையைப் பயன்படுத்துவதில்லை AND. அதற்கு பதிலாக, உங்களுக்கு ஒரு பூலியன் ஆபரேட்டர் தேவை . அதாவது, 'AND' வித்தியாசமாக குறிப்பிடப்படுகிறது.

"ஜாவாவில் மூன்று தருக்க ஆபரேட்டர்கள் உள்ளன: AND(&&), OR(||), NOT(!).

நல்ல செய்தி என்னவென்றால் , எந்தவொரு சிக்கலான தன்மையின் தர்க்க வெளிப்பாடுகளையும் உருவாக்க அடைப்புக்குறிகளைப் பயன்படுத்தலாம் .

மோசமான செய்தி என்னவென்றால், ஜாவா டெவலப்பர்கள் சொற்களுக்குப் பதிலாக சி மொழியிலிருந்து குறியீட்டைப் பயன்படுத்த முடிவு செய்தனர் and, orமற்றும் not.

திரையைப் பாருங்கள்:

தருக்க ஆபரேட்டர் எதிர்பார்ப்பு யதார்த்தம்
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"இது உண்மையில் அவ்வளவு மோசமாக இல்லை... மிகவும் கச்சிதமானது. நான் அவற்றை மனப்பாடம் செய்துவிட்டேன்."

"சரி, அது அற்புதம். ஜாவாவில் லாஜிக்கல் ஆபரேட்டர்களைப் பயன்படுத்துவதற்கான சில எடுத்துக்காட்டுகள் இங்கே:

வெளிப்பாடு விளக்கம் விளக்கம்
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) AND (a < 100)
(!a) && (!b) (not a) and (not b) (NOT a) AND (NOT b)
!(!a || !b) not((not a) or (not b)) NOT((NOT a) OR (NOT b))

ஒப்பீட்டு ஆபரேட்டர்கள் மற்றும் பூலியன் மாறிகளைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டுகள்

"நினைவில் கொள்ளுங்கள், அமிகோ, நீங்கள் ஒரு தருக்க வெளிப்பாட்டை எங்கு எழுதலாம், நீங்கள் ஒரு தருக்க மாறியை எழுதலாம்."

"அது எப்படி?"

"நீங்கள் வெவ்வேறு வழிகளில் தருக்க வெளிப்பாடுகளை எழுதலாம். உதாரணமாக:

குறியீடு விளக்கம்
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
வயதின் மதிப்பு 18மற்றும் க்கு இடையில் இருந்தால் 65, "நீங்கள் வேலை செய்யலாம்" என்ற சொற்றொடர் காட்டப்படும்.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
நாம் ஒரு isYoungமாறியை உருவாக்கி, வெளிப்பாட்டின் முதல் பகுதியை அதில் நகர்த்தினோம். நாங்கள் வெறுமனே age >= 18மாற்றினோம் age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
ஒரு isOld மாறியை உருவாக்கி, வெளிப்பாட்டின் இரண்டாம் பகுதியை அதில் நகர்த்தினோம். கூடுதலாக, age <= 65மூலம் மாற்றப்பட்டது age > 65.

if"இந்த மூன்று எடுத்துக்காட்டுகளும் சமமானவை. இரண்டாவது எடுத்துக்காட்டில் மட்டுமே , கூற்றிலிருந்து வெளிப்பாட்டின் ஒரு பகுதியை தனி பூலியன் மாறிக்கு ( ) நகர்த்தினோம் isYoung. மூன்றாவது எடுத்துக்காட்டில், வெளிப்பாட்டின் இரண்டாம் பகுதியை இரண்டாவது மாறிக்கு ( isOld) நகர்த்தினோம். மூலம், பூலியன் மாறியின் இயல்புநிலை மதிப்பு false."

"நான் அதை நினைவில் கொள்கிறேன், நான் நம்புகிறேன்."

தருக்க எண்கணிதம்

"இப்போது சுருக்கமாக தர்க்கரீதியான செயல்பாடுகளை மேற்கொள்வோம். அவை மிகவும் எளிமையான மற்றும் தர்க்கரீதியான (அது எப்படி இருக்கும்!) விதிகளுக்குக் கீழ்ப்படிகின்றன.

"முதலில் , ஆபரேட்டர் எவ்வாறு செயல்படுகிறது என்பதைப் பார்ப்போம் OR. இது டிஸ்ஜங்க்ஷன் என்றும் ||அழைக்கப்படுகிறது .

வெளிப்பாடு விளைவாக
true || true true
true || false true
false || true true
false || false false

a || b" அட்டவணையின் அடிப்படையில் வெளிப்பாட்டின் முடிவு என்ன என்பதை நீங்கள் இப்போது யூகிக்க முடியுமா ?"

"நான் பார்க்கிறேன்!" வெளிப்பாட்டின் மதிப்பு என்பது trueவெளிப்பாட்டில் குறைந்தபட்சம் ஒரு சொல்லாவது இருந்தால் true. இரண்டும் இருந்தால்தான் falseவிளைவு false.

"அது சரிதான். நீங்கள் மிகவும் புத்திசாலி என்பதால், டேபிளை இன்னொரு முறை பார்த்து, அது false0 மற்றும் true1 என்று கற்பனை செய்து கொள்ளுங்கள். அப்படிப் பார்க்கும்போது, ||​​ஆபரேட்டரின் நடத்தை சாதாரண எண்கணிதத்திலிருந்து ஏதாவது உங்களுக்கு நினைவூட்டுகிறதா?"

"ம்ம்ம்... கொஞ்சம் கூடுதலா இருக்கு... ஆனா கூட்டல் பண்ணும்போது 1 + 1 சமம் 1 ஆகாது."

||"நாம் 0 மற்றும் 1 உடன் மட்டுமே வேலை செய்தால் அது சமம் என்ற உணர்வு உள்ளது. ஆனால் இப்போது அதைப் பற்றி கவலைப்பட வேண்டாம். முக்கிய விஷயம் என்னவென்றால் , அறுவை சிகிச்சைக்கும் கூட்டலுக்கும் இடையிலான ஒற்றுமையை நீங்கள் கவனித்தீர்கள். இதன் பொருள் நீங்கள் வெற்றி பெறுவீர்கள்' இந்த செயல்பாடு பெரும்பாலும் 'தர்க்கரீதியான கூட்டல்' என்று அழைக்கப்படுகிறது என்பதில் ஆச்சரியப்பட வேண்டாம்.

"அறிந்துகொண்டேன்."

"இப்போது AND, aka , aka &&, aka conjunction ஆபரேட்டர் , மேடைக்கு வருகிறார்.

வெளிப்பாடு விளைவாக
true && true true
true && false false
false && true false
false && false false

"நான் புரிந்து கொண்டபடி, வெளிப்பாட்டை trueஉருவாக்கும் இரண்டு மதிப்புகளும் இருந்தால் மட்டுமே வெளிப்பாட்டின் விளைவு இருக்கும் true. இல்லையெனில், அது எப்போதும் இருக்கும் false."

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

"பெருக்கல்!"

"சரியாக. எனவே இங்கே நமக்கு ஒரு 'தர்க்கப் பெருக்கல்' உள்ளது".

"அடுத்து நாம் ஆபரேட்டரைப் பார்க்கிறோம் NOT, aka !, aka தர்க்க தலைகீழ் .

வெளிப்பாடு விளைவாக
!true false
!false true

"சரி, இங்கே எல்லாம் மிகவும் எளிமையானது. ஆபரேட்டர் மாறுகிறார் trueமற்றும் falseநேர்மாறாகவும்."

"சரியாக. உங்களுக்கான சில பயனுள்ள வெளிப்பாடுகள் இங்கே:"

வெளிப்பாடு விளைவாக
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b