"শুভেচ্ছা, অ্যামিগো! আমি যুক্তির সমস্যাগুলি সমাধান করে এতটাই দূরে সরে গিয়েছিলাম যে আমি লক্ষ্য করিনি যে আপনি এখানে এসেছেন। এখানে আপনার জন্য একটি: কুমির যদি উড়ে যায় তবে তুষার সাদা হয়। একটি উড়ন্ত কুমির আছে। উপসংহার কি?"
"উম... তাহলে আমরা উপসংহারে এসেছি যে তুষার সাদা?"
"অসাধারণ! আপনি দীক্ষা পরীক্ষায় উত্তীর্ণ হয়েছেন। আপনি পরবর্তী বিষয় আয়ত্ত করতে প্রস্তুত। এটিকে 'লজিক্যাল অপারেটর' বলা হয়। এবং আমরা বুলিয়ান লজিক দিয়ে শুরু করব। সহজাতভাবে, আপনি এটি ইতিমধ্যেই জানেন। আপনি একজন রোবট, সর্বোপরি আমাদের জাভা ভাষার সাথে মেলে আপনার সেটিংস পরিবর্তন করতে হবে।"
"বুলিয়ান লজিক? আমাকে সম্প্রতি বুলিয়ান টাইপ সম্পর্কে বলা হয়েছিল..."
"হ্যাঁ, এখানে একটি সরাসরি সংযোগ রয়েছে৷ বুলিয়ান অভিব্যক্তিগুলি কেবল সত্য বা মিথ্যা হতে পারে৷ এবং যেমনটি ঘটে, এই ধরণের যুক্তি হল সমস্ত অভিব্যক্তি যা সত্য বা মিথ্যা, এবং এই জাতীয় অভিব্যক্তিগুলির সংমিশ্রণ সম্পর্কে। উদাহরণস্বরূপ, অভিব্যক্তি 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)) |
তুলনা অপারেটর এবং বুলিয়ান ভেরিয়েবল ব্যবহার করার উদাহরণ
"মনে রাখবেন, অ্যামিগো, যেখানেই আপনি একটি লজিক্যাল এক্সপ্রেশন লিখতে পারেন, আপনি একটি লজিক্যাল ভেরিয়েবল লিখতে পারেন।"
"এটা কেমন ছিল?"
"আমি বলতে চাচ্ছি আপনি বিভিন্ন উপায়ে যৌক্তিক অভিব্যক্তি লিখতে পারেন। উদাহরণস্বরূপ:
কোড | ব্যাখ্যা |
---|---|
|
যদি বয়সের মান 18 এবং এর মধ্যে হয় 65 , তাহলে "আপনি কাজ করতে পারেন" বাক্যটি প্রদর্শিত হবে। |
|
আমরা একটি isYoung ভেরিয়েবল তৈরি করেছি এবং এক্সপ্রেশনের প্রথম অংশটি এতে স্থানান্তরিত করেছি। আমরা কেবল age >= 18 দিয়ে প্রতিস্থাপিত করেছি age < 18 । |
|
আমরা একটি isOld ভেরিয়েবল তৈরি করেছি এবং এক্সপ্রেশনের দ্বিতীয় অংশটি এতে স্থানান্তরিত করেছি। উপরন্তু, age <= 65 দ্বারা প্রতিস্থাপিত হয়েছে age > 65 . |
"এই তিনটি উদাহরণ সমতুল্য৷ শুধুমাত্র দ্বিতীয় উদাহরণে আমরা বিবৃতি থেকে অভিব্যক্তির অংশটিকে if
একটি পৃথক বুলিয়ান ভেরিয়েবল ( isYoung
) এ স্থানান্তরিত করেছি৷ তৃতীয় উদাহরণে, আমরা অভিব্যক্তির দ্বিতীয় অংশটিকে একটি দ্বিতীয় পরিবর্তনশীল ( isOld
) এ স্থানান্তরিত করেছি৷ যাইহোক, একটি বুলিয়ান ভেরিয়েবলের ডিফল্ট মান হল false
।"
"আমি এটা মনে রাখব। আমি আশা করি।"
যৌক্তিক পাটিগণিত
"এখন সংক্ষেপে যৌক্তিক ক্রিয়াকলাপের মধ্য দিয়ে যাওয়া যাক। তারা খুব সহজ এবং যৌক্তিক (এটি অন্যথায় কীভাবে হতে পারে!) নিয়ম মেনে চলে।
"প্রথমে, দেখা যাক কিভাবে OR
অপারেটর কাজ করে। এটি ||
বা disjunction নামেও পরিচিত ।
অভিব্যক্তি | ফলাফল |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
a || b
"আপনি কি এখন অনুমান করতে পারেন যে সারণির উপর ভিত্তি করে অভিব্যক্তির ফলাফল কি ?"
"আমি দেখি!" একটি অভিব্যক্তির মান হল true
যদি অভিব্যক্তিতে অন্তত একটি পদ থাকে true
। যদি উভয়ই হয় false
, তাহলে ফলাফল false
।
"এটা ঠিক। যেহেতু আপনি খুব স্মার্ট, টেবিলের দিকে আরেকটা নজর দিন এবং কল্পনা করুন যে false
0 এবং true
1 হল। আপনি যখন এটিকে এভাবে দেখেন, তখন ||
অপারেটরের আচরণ কি আপনাকে সাধারণ পাটিগণিতের কিছু মনে করিয়ে দেয়?"
"উম... ঠিক আছে, এটা অনেকটা যোগের মত... কিন্তু আপনি যখন যোগ করবেন, 1 + 1 এর সমান হবে না।"
||
"এমন একটি অর্থ আছে যেখানে আমরা শুধুমাত্র 0 এবং 1 এর সাথে কাজ করলে এটি সমান। তবে এখনই এটি নিয়ে মাথা ঘামাবেন না। গুরুত্বপূর্ণ বিষয় হল আপনি অপারেশন এবং যোগের মধ্যে মিল লক্ষ্য করেছেন। এর মানে আপনি পাবেন' এই ক্রিয়াকলাপটিকে প্রায়শই 'যৌক্তিক সংযোজন' বলা হয় তা দেখে অবাক হবেন না।
"বুঝেছি."
"এখন AND
, ওরফে &&
, ওরফে কনজেকশন অপারেটর, মঞ্চে আসে৷
অভিব্যক্তি | ফলাফল |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
"যেমনটা আমি বুঝি, অভিব্যক্তির ফলাফল true
শুধুমাত্র যদি অভিব্যক্তি তৈরি করে এমন উভয় মানই হয় true
। অন্যথায়, এটি সর্বদা হয় false
।"
"শাবাশ, অ্যামিগো! তুমি এই সব স্পঞ্জের মতো শুষে নিচ্ছ। তুমি কি পাটিগণিতের সাথে আরেকটি মিল দেখতে পাচ্ছ?"
"গুণ!"
"ঠিক। তাই এখানে আমাদের একটি 'লজিক্যাল গুন' আছে"।
"এরপরে আমরা অপারেটরের দিকে তাকাই NOT
, ওরফে !
, ওরফে লজিক্যাল ইনভার্স ।
অভিব্যক্তি | ফলাফল |
---|---|
!true |
false |
!false |
true |
"আচ্ছা, এখানে সবকিছু বেশ সহজ। অপারেটর পরিবর্তন হয় true
এবং false
এর বিপরীতে।"
"ঠিক। এখানে আপনার জন্য কিছু দরকারী অভিব্যক্তি আছে:"
অভিব্যক্তি | ফলাফল |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION