Skip to main content

পাঠ ৩: শর্তসাপেক্ষ বিবৃতি

আগের পাঠে, আপনি শিখেছেন কিভাবে অপটিক্যাল সেন্সর থেকে ডেটা ব্যবহার করে একটি প্রকল্পে রঙ অনুসারে একটি ডিস্ক সাজানো যায়। এই পাঠে, আপনি VEXcode-এ এমন বিকল্পগুলি অন্বেষণ করার জন্য যা শিখেছেন তার উপর ভিত্তি করে তৈরি করবেন যা অপটিক্যাল সেন্সর দ্বারা যে রঙই সনাক্ত করা হোক না কেন, প্রকল্পটিকে সিদ্ধান্ত নিতে সক্ষম করে। আপনি নিম্নলিখিত বিষয়গুলি সম্পর্কে শিখবেন: 

  • কেন একটি শিল্প পরিবেশে সিদ্ধান্ত গ্রহণের সর্বোত্তমকরণ গুরুত্বপূর্ণ?
  • যদি তারপর,যদি তারপর অন্য, এবংযদি অন্যব্লকের মধ্যে পার্থক্য।

একাধিক শর্ত পরীক্ষা করা হচ্ছে

আগের পাঠে আপনি এমন একটি প্রকল্প তৈরি করেছিলেন যা একটি ডিস্ককে রঙ অনুসারে লাল প্যালেট বা সবুজ প্যালেটে সাজাতে পারে। যদিও এটি কার্যকর, প্রকল্পটি একবারে কেবল একটি ডিস্ক বাছাই করতে পারে। কারখানার পরিবেশে, অনেক জিনিসপত্র বারবার বাছাই এবং প্যালেটাইজ করতে হয়। এটি কার্যকরভাবে করার জন্য, 6-অক্ষ আর্মকে বারবার সিদ্ধান্ত নিতে সক্ষম হতে হবে যে কীভাবে বস্তুগুলি সরানো হবে, অথবা মানুষের হস্তক্ষেপের প্রয়োজন হবে কিনা। ৬-অক্ষ বাহুর ভূমিকা কোর্সে আপনি যে কিউবগুলি স্থানান্তর করেছিলেন তা বিবেচনা করুন।অপটিক্যাল সেন্সরের উপরে একটি নীল ঘনক ধরে থাকা 6-অক্ষ বাহুর ক্লোজ আপ।

যদি একটি নীল ঘনক লোডিং জোনে থাকত? আগের পাঠের প্রকল্পে কী হবে? একটি শিল্প পরিবেশে, সম্ভাব্য সমস্ত পরিস্থিতি বিবেচনা করা প্রয়োজন। যদি কোনও ভুল বস্তু বাছাই করা বস্তুর সাথে মিশে যায়, তাহলে ওয়ার্কসেল এবং এর আশেপাশের কর্মীরা যাতে নিরাপদে থাকে এবং কার্যকরভাবে কাজ করে তা নিশ্চিত করার জন্য মানুষের হস্তক্ষেপের প্রয়োজন হতে পারে।

ক্রমিকযদি তাহলেব্লক

আগের পাঠে, আপনি দুটিযদি তারপরব্লক ব্যবহার করে পরপর দুটি পৃথক শর্ত পরীক্ষা করেছিলেন, মূলত প্রকল্পের মধ্যে দুটি প্রশ্ন জিজ্ঞাসা করেছিলেন।

পূর্ববর্তী পাঠের চ্যালেঞ্জটি সম্পন্ন করার জন্য VEXcode প্রকল্পের উদাহরণ। মন্তব্যটিতে একটি লাল হাইলাইট রয়েছে যেখানে লেখা আছে "Disk কে সঠিক প্যালেটে সরান" এবং সেই মন্তব্যের নীচে নিম্নলিখিত দুটি "If then ব্লক" রয়েছে। লাল হাইলাইট বাক্সের ব্লকগুলি নিম্নরূপ: যদি অপটিক্যাল 5 লাল সনাক্ত করে তবে বাহু 10 কে x 169 y 150 z 100 অবস্থানে সরান, এবং যদি অপটিক্যাল 5 সবুজ সনাক্ত করে তবে বাহু 10 কে x 172 y 1 z 100 অবস্থানে সরান।

প্রথমে, বস্তুটি কি লাল?, তারপর, বস্তুটি কি সবুজ?। অপটিক্যাল সেন্সর দ্বারা যা সনাক্ত করা হয়েছে তা নির্বিশেষে, প্রকল্পটি চালানোর সময় প্রতিটি শর্ত পরীক্ষা করা হয়। যদিও এই কাঠামোটি আপনাকে একবারে একটি ডিস্ক কার্যকরভাবে সাজানোর সুযোগ করে দিয়েছে, এটি করার সবচেয়ে কার্যকর উপায় নয়। একটি লাল ডিস্ক সাজানো যেতে পারে, কিন্তু অপটিক্যাল সেন্সর পরিবেশের অন্য কিছু থেকে সবুজ রঙ সনাক্ত করতে পারে, এবং বিপরীতভাবে। এমন কোনও বস্তুর জন্যও কোনও বিবেচনা করা হয় না যা লাল বা সবুজ নয়, যেমন একটি অপ্রত্যাশিত বস্তু যা নিরাপত্তার সমস্যা তৈরি করতে পারে।

প্রকল্প প্রবাহের ছবি

এই পাঠ জুড়ে, VEXcode প্রকল্পগুলির প্রবাহ ব্যাখ্যা করে এমন ছবিগুলি ভাগ করা হয়েছে। পাঠটি পড়ার সময় আপনি আপনার ইঞ্জিনিয়ারিং নোটবুকে এই ছবিগুলি পুনরায় তৈরি করতে পারেন। 

আপনার নোটবুকে আপনার জন্য সবচেয়ে ভালো কাজ করে এমন ভিজ্যুয়ালাইজেশন তৈরি করতে সাহায্য করার জন্য গুগল স্লাইডস বা মাইক্রোসফ্ট পাওয়ারপয়েন্টের মতো সরঞ্জামগুলি যেমন তীর, বাক্স বা ফ্লোচার্ট ব্যবহার করুন।

গুগল স্লাইডে লাইন টুলবক্স খোলা আছে। টুলবক্সটি লাইন, অ্যারো, এলবো কানেক্টর, কার্ভড কানেক্টর, কার্ভ, পলিলাইন এবং স্ক্রিবলের বিকল্পগুলি দেখায়।

 

ক্রমিকযদি অন্যথায়ব্লক

লাল এবং সবুজ অবস্থা পরীক্ষা করার জন্য এবং ভিন্ন রঙের জন্য হিসাব করার জন্য আমাদের একটি ভিন্ন ব্লক ব্যবহার করা যেতে পারে। যদি তারপর অন্যব্লকটি একটি সি ব্লক যা রিপোর্ট করা বুলিয়ান মানের উপর ভিত্তি করেযদিশাখা অথবাযদিশাখার ভিতরে ব্লকগুলি চালায়।

প্রকল্পের প্রবাহ বোঝাতে লাল এবং সবুজ তীর দিয়ে if then else ব্লক ব্যবহার করে কোডের একটি স্নিপেট। প্রকল্পটিতে লেখা আছে: ডিস্কটিকে সঠিক প্যালেটে সরান, যদি অপটিক্যাল 5 লাল শনাক্ত করে তাহলে বাহু 10 কে x 169 y 150 z 100 অবস্থানে সরান অন্যথায় সিগন্যাল টাওয়ার 6 কে নীল এবং জ্বলজ্বলে সেট করুন, বাহু 10 কে নিয়ন্ত্রিত স্টপে সেট করুন। মনে রাখবেন যে else এর পরে দুটি কমান্ড if then else ব্লকের else শাখার মধ্যে রয়েছে। একটি সবুজ তীর এবং টেক্সট রিডিং অপটিক্যাল, If then থেকে move to position ব্লক পর্যন্ত লাল ট্রু পয়েন্ট সনাক্ত করে। টেক্সট রিডিং অপটিক্যাল সহ একটি লাল তীর if then থেকে else শাখার শুরুতে সেট সিগন্যাল টাওয়ার ব্লক পর্যন্ত লাল মিথ্যা বিন্দু সনাক্ত করে।

যদিশাখা অথবা অথবাশাখা চালানোর পর, প্রকল্পটি স্ট্যাকের পরবর্তী ব্লকে চলে যাবে। শাখাগুলিকে আরও দৃশ্যমান করার জন্যIf then elseব্লকের প্রকল্প প্রবাহও দেখানো যেতে পারে।

আগের মতোই প্রকল্প প্রবাহ, কিন্তু স্পষ্টতার জন্য if শাখা এবং else শাখা আলাদা করে রাখা হয়েছে। বাম দিকে লাল লেখা আছে "red not detected false else", যেখানে একটি তীরচিহ্ন সেট সিগন্যাল টাওয়ারের দিকে নির্দেশ করছে এবং নিয়ন্ত্রিত স্টপ ব্লক সেট করছে। ডানদিকে লাল "true then" লেখাটি রয়েছে, যেখানে একটি তীরচিহ্ন অবস্থানে সরানোর ব্লকের দিকে নির্দেশ করছে। বাম এবং ডান উভয় দিকেই কমলা রঙের তীর রয়েছে যা নির্দেশ করে যে তারা if then else ব্লকের নীচে প্রকল্পটি চালিয়ে যাবে।

মনে রাখবেন যে এই উদাহরণগুলিতে, elseশাখাটি কোনও বস্তুর লাল বা সবুজ না হওয়ার অবস্থা পরিচালনা করতে ব্যবহৃত হয়। সেক্ষেত্রে, মানুষের হস্তক্ষেপের প্রয়োজন হবে। আগে আপনি জেনেছেন যে সিগন্যাল টাওয়ারের নীল আলো মানুষের হস্তক্ষেপের প্রয়োজনীয়তা নির্দেশ করতে ব্যবহৃত হয়। উপরন্তু, একটি নিয়ন্ত্রিত স্টপ 6-অ্যাক্সিস আর্মের গতি বন্ধ করবে যাতে মানুষ এবং যন্ত্রপাতি নিরাপদ থাকে। অন্যশাখায় একটি সেট সিগন্যাল টাওয়ারব্লক এবংসেট কন্ট্রোল স্টপব্লক যোগ করা যেতে পারে, যাতে লাল বা সবুজ নয় এমন কোনও বস্তু এই সুরক্ষা বৈশিষ্ট্যগুলিকে ট্রিগার করতে পারে।

If then else ব্লকের else শাখার বিষয়বস্তু একটি লাল বাক্স দিয়ে ডাকা হবে। এর মধ্যে রয়েছে সেট সিগন্যাল টাওয়ার ব্লক এবং আর্ম নিয়ন্ত্রিত স্টপ ব্লক।

এখন পর্যন্ত যেসব ছবি দেখা গেছে, তাতে কেবল লাল রঙের বস্তুটি কীভাবে সামলাতে হয় তা দেখানো হয়েছে। বস্তুটির সবুজ অবস্থা পরীক্ষা করার জন্য আরও একটি If then elseপ্রয়োজন।

একই ভেক্সকোড প্রজেক্ট, যেখানে প্রথমটির পরেই সেকেন্ডের "if then else" ব্লক যোগ করা হয়েছে। এই ব্লক এবং এর মধ্যে থাকা ব্লকগুলি পড়ুন: যদি অপটিক্যাল 5 সবুজ শনাক্ত করে তাহলে বাহু 10 কে x 172 y 1 z 100 অবস্থানে সরান অন্যথায় সিগন্যাল টাওয়ার 6 কে নীল এবং জ্বলজ্বলে সেট করুন, বাহু 10 কে নিয়ন্ত্রণ বন্ধে সেট করুন।

এই কাঠামোর সাথে প্রকল্প প্রবাহ সম্পর্কে চিন্তা করা যাক। প্রতিবার প্রকল্পটি চালানোর সময়, একাধিক শাখা চালানো হবে, অপটিক্যাল সেন্সর দ্বারা যে রঙই সনাক্ত করা হোক না কেন।

দুটি if then else ব্লকের জন্য প্রজেক্ট ফ্লো ইমেজ। উপরের অর্ধেকটি আগের একই প্রকল্প প্রবাহ দেখায়, তারপর একটি কমলা তীর প্রথম ব্লক থেকে দ্বিতীয় ব্লকে সরে যেতে দেখা যায়। দ্বিতীয় if then else ব্লকটিতে সবুজ তীর এবং পাশে লেখা আছে: অপটিক্যাল সবুজ সত্য সনাক্ত করে। তীরটি if then থেকে if then শাখার মধ্যে অবস্থানে স্থানান্তর ব্লকের দিকে নির্দেশ করে। একই বিন্দু থেকে শুরু করে লাল লেখা এবং একটি লাল তীর রয়েছে যা লেখা আছে: Optical detects green false. তীরটি if then থেকে else শাখায় সেট সিগন্যাল টাওয়ার ব্লকের দিকে নির্দেশ করে।

আসুন একটি লাল ডিস্কের উদাহরণ দিয়ে এটি সম্পর্কে চিন্তা করি। যদি অপটিক্যাল সেন্সর লাল শনাক্ত করে, তাহলে প্রথমIf then elseব্লকের অবস্থা সত্য হিসাবে রিপোর্ট করবে। যদিশাখার ভেতরের ব্লকটি চলবে, ৬-অক্ষ বাহুটিকে লাল প্যালেটের উপর দিয়ে সরাবরাহ করবে। তবে, দ্বিতীয়If then elseব্লকের ভিতরের অবস্থা মিথ্যা হিসাবে রিপোর্ট করবে। এর অর্থ হল এরঅথবাশাখার ভেতরের ব্লকটি চলবে, ৬-অ্যাক্সিস আর্মকে একটি নিয়ন্ত্রিত স্টপে রাখবে এবং সিগন্যাল টাওয়ারে নীল আলো জ্বলবে। যেহেতু 6-অ্যাক্সিস আর্মটি একটি নিয়ন্ত্রিত স্টপ অবস্থায় থাকবে, তাই প্রকল্পের অন্য কোনও ব্লক চলতে পারবে না এবং এটি সমাধান না হওয়া পর্যন্ত সমস্ত কার্যক্রম বন্ধ করে দেবে। 

লাল রঙ সনাক্তকারী অপটিক্যাল সেন্সরের উদাহরণের মধ্য দিয়ে প্রকল্প প্রবাহ। প্রকল্পের পাশের নোট এবং তীরগুলি অপটিক্যাল ডিটেক্টগুলিকে লাল সত্য হিসাবে পড়বে, তারপর প্রথমে অবস্থান ব্লকে স্থানান্তরিত হবে যদি তারপর শাখাটি চলবে। নীচের লেখাটিতে লেখা আছে: else branch will not run কারণ if then branch টি চালানো হয়েছিল। একটি তীর দ্বিতীয় ব্লকের দিকে নির্দেশ করে, যদি তারপর অন্যথায়। পাশে লেখা আছে: অপটিক্যাল সবুজ মিথ্যা সনাক্ত করে এবং লাল তীরটি দ্বিতীয় if then else ব্লকের else শাখার দিকে নির্দেশ করে। একটি কমলা তীর চিহ্ন সেট আর্ম টু কন্ট্রোল স্টপ ব্লক থেকে পাশের আর্ম ১০ কন্ট্রোল স্টপড হ্যাট ব্লকের দিকে নির্দেশ করে। নিচের লেখাটিতে লেখা আছে, "কন্ট্রোল স্টপ" ট্রিগার হবে, সমস্ত ব্লক বন্ধ করে, শুধুমাত্র "কন্ট্রোল স্টপ" এর সাথে সংযুক্ত ব্লকগুলি ছাড়া।

যদিও আমরা এখন একটি অপ্রত্যাশিত বস্তুর (যেমন একটি নীল ঘনক) হিসাব করতে পারি, কিন্তু 6-অক্ষ আর্ম কখনই প্যালেটে ডিস্কটি ছেড়ে দেওয়ার প্রকল্পের বিন্দুতে পৌঁছাবে না। লাল এবং সবুজ অবস্থা একের পর এক পরীক্ষা করার পরিবর্তে, কোনও বস্তু সবুজ কিনা তা পরীক্ষা করার একটি উপায় আছেশুধুমাত্রযদি বস্তুটি লাল না হয়।   

নেস্টেডযদি অন্যথায়ব্লক 

If then elseব্লকের প্রতিটি শাখা তাদের মধ্যে অন্যান্য C ব্লক গ্রহণ করতে পারে। একে 'বাসা বাঁধা' বলা হয়। এর মানে হল যে দ্বিতীয়If then elseব্লকটি প্রথমটিরelseশাখার মধ্যে নেস্ট করা যেতে পারে, এভাবে।উপরের প্রজেক্টের মতোই, কিন্তু দ্বিতীয় if then else ব্লকের সাথে প্রথম if then else ব্লকের else শাখার ভিতরে। প্রথম if then else ব্লকের else শাখায় দ্বিতীয় if then else শাখার চারপাশে একটি লাল বাক্স রয়েছে।

এখন সবুজ শনাক্তকারী অপটিক্যাল সেন্সরের অবস্থা কেবল তখনই পরীক্ষা করা হবে যখন পূর্ববর্তী অবস্থা (অপটিক্যাল সেন্সর লাল শনাক্ত করে) মিথ্যা বলে রিপোর্ট করবে। তাই যখন অপটিক্যাল সেন্সর লাল শনাক্ত করে, তখন শুধুমাত্র প্রথমযদিশাখা থাকে তবে তা চলবে, যা ডিস্কটিকে লাল প্যালেটের উপরে সরিয়ে দেবে। 

প্রথম if then else ব্লকের if then শাখায় পজিশন ব্লকে স্থানান্তরের মাধ্যমে প্রকল্পের ক্লোজ আপ ভিউ, একটি লাল বাক্স দিয়ে ডাকা হয়েছে।

যদি অপটিক্যাল সেন্সর সবুজ শনাক্ত করে, তাহলেশাখার প্রথম(অপটিক্যাল লাল শনাক্ত করে) অবস্থা মিথ্যা রিপোর্ট করবে, এবং তাই অন্যশাখাটি চলবে। নেস্টেড If then elseব্লকের অবস্থা পরীক্ষা করে দেখা হবে যে অপটিক্যাল সেন্সর সবুজ রঙ সনাক্ত করে কিনা। সেই অবস্থাটি সত্য হিসাবে রিপোর্ট করবে, তাই দ্বিতীয়যদিশাখার ভিতরের ব্লকটি চলবে, ডিস্কটিকে সবুজ প্যালেটের উপর দিয়ে সরানো হবে। 

যদি অপটিক্যাল সেন্সর লাল বা সবুজ কোনটিই সনাক্ত না করে (যেমন নীল ঘনক তোলার ক্ষেত্রে), উভয় অবস্থাই মিথ্যা হিসাবে রিপোর্ট করবে, এবং তাই নেস্টেডIf then elseব্লকেরelseশাখাটি চলবে, একটি নিয়ন্ত্রিত স্টপ ট্রিগার করবে এবং কর্মীদের মানব হস্তক্ষেপের প্রয়োজনীয়তা সম্পর্কে সতর্ক করবে। এই প্রকল্প প্রবাহগুলিকে একটি প্রবাহ চার্ট হিসাবেও কল্পনা করা যেতে পারে, যেমনটি এখানে দেখানো হয়েছে।

একটি প্রকল্পের প্রবাহ ব্যাখ্যা করে চিত্র। উপরে প্রশ্নটি হল অপটিক্যাল ডিটেক্টস রেড? বাম দিকে একটি সবুজ রেখা শাখা প্রশাখা করে লাল প্যালেটের উপরে সরে যাওয়ার কথা বলে, তারপর সেখান থেকে একটি কমলা রেখা নেমে আসে যা সঠিক প্যালেটের উপর ডিস্ক স্থাপন করার কথা বলে। মূল প্রশ্ন থেকে একটি লাল রেখা সরে এসে মিথ্যা বলে। এর পরে আরেকটি প্রশ্ন আসে: অপটিক্যাল সবুজ সনাক্ত করে? আবার ডানদিকের সবুজ রেখাটি সত্য বলে এবং সবুজ প্যালেটের উপরে চলে যাও। এটি একটি কমলা রেখার সাথে একই বাক্সের সাথে সংযুক্ত হয় যা অন্য সবুজ রেখার সাথে সংযুক্ত, যেখানে লেখা আছে সঠিক প্যালেটে ডিস্ক স্থাপন করুন। ডানদিকে লাল রেখাটি মিথ্যা বলে এবং সিগন্যাল টাওয়ারকে ঝলকানি নীলে সেট করে এবং ট্রিগার নিয়ন্ত্রিত স্টপ দেখায়।

নেস্টেডযদি অন্যথায়ব্লকপ্রশ্নের একটি ক্যাসকেডিং তালিকা হিসাবে দেখা যেতে পারে। এখানে প্রশ্নগুলি নিম্নরূপ: 

  1. বস্তুটি কি লাল? 
    1. হ্যাঁ? লাল প্যালেটের উপর দিয়ে সরে যাও এবং প্রশ্ন করা বন্ধ করো।
    2. না? আরেকটি প্রশ্ন জিজ্ঞাসা করুন। 
      1. বস্তুটি কি সবুজ?
        1. হ্যাঁ? সবুজ প্যালেটের উপর দিয়ে সরে যাও এবং প্রশ্ন করা বন্ধ করো।
        2. না? তাহলে বস্তুটি লাল বা সবুজ নয়। সিগন্যাল টাওয়ারের রঙ পরিবর্তন করুন এবং একটি নিয়ন্ত্রিত স্টপ ট্রিগার করুন।

লক্ষ্য করুন যে, পূর্ববর্তী প্রশ্নের উত্তর নেতিবাচক হলেই কেবল প্রশ্নগুলি করা হবে। 

যদিও এটি আমাদের পরীক্ষা করতে চাওয়া সমস্ত শর্ত পরিচালনা করে, আরেকটি ব্লক আছে যা একইভাবে শর্তগুলি পরীক্ষা করবে, তবে নেস্টিং ব্লকের চেয়ে তৈরি করা সহজ। 

অন্যথায় যদিব্লক

Else if ব্লক আপনাকে একই ব্লকের মধ্যে একাধিক শর্ত পরীক্ষা করতে সক্ষম করে। এই ব্লকের প্রতিটি শর্ত ক্রমানুসারে পরীক্ষা করা হবে, শুধুমাত্র যদি পূর্ববর্তী শর্তটি মিথ্যা বলে রিপোর্ট করে। যদি else if শাখার জন্য সমস্ত বুলিয়ান শর্ত মিথ্যা হয়, তাহলে else বিভাগের ভিতরের ব্লকগুলি চালানো হবে।

অন্যথায় যদি VEXcode এ ব্লক করা হয়। এই ব্লকটিতে "if then else if then else" লেখা আছে এবং এর সাথে একটি প্লাস আইকন আছে যা ব্লকে অতিরিক্ত "if then else" অংশ যুক্ত করে প্রসারিত করে।

এই ব্লকটিতে নেস্টেডIf then elseব্লকের মতো একই প্রকল্প প্রবাহ রয়েছে, তবে এটি তৈরি করা সহজ কারণ নেস্ট ব্লকের প্রয়োজন নেই। আপনি পরবর্তী পাঠে Else ifব্লক দিয়ে কোডিং সম্পর্কে আরও শিখবেন।

তোমার বোধগম্যতা পরীক্ষা করো

পরবর্তী পাঠে যাওয়ার আগে, আপনার ইঞ্জিনিয়ারিং নোটবুকে নিম্নলিখিত প্রশ্নগুলির উত্তর দিয়ে নিশ্চিত করুন যে আপনি এই পাঠের ধারণাগুলি বুঝতে পেরেছেন।

আপনার বোঝার প্রশ্নগুলি পরীক্ষা করুন > (Google Doc/ .docx / .pdf)


একটি প্রকল্পে Else ifব্লক প্রয়োগ করতেNext >নির্বাচন করুন।