Skip to main content

পাঠ ২: প্রকল্প-পরবর্তী সারাংশ

[যদি তাহলে অন্যথায়] ব্লকটি ব্যবহার করা হয় যাতে ভিআর রোবট সিদ্ধান্ত নিতে পারে। যদি বুলিয়ান কন্ডিশনটি TRUE হয়, তাহলে 'If Then' শাখার ভিতরের ব্লকগুলি চলবে। যদি বুলিয়ান কন্ডিশন FALSE হয়, তাহলে 'Else' শাখার ভিতরের ব্লকগুলি চলবে।

ফরএভার লুপের মধ্যে if then else ব্লকের প্রকল্প প্রবাহ নির্দেশ করে এমন একটি চিত্র। প্রকল্পটি শুরু হলে দূরত্ব সেন্সরের অবস্থা পরীক্ষা করা হয়। যদি কোন বস্তু পাওয়া যায়, সেই শর্তটি সত্য হয়, তাহলে ড্রাইভ ফরোয়ার্ড ব্লকটি কার্যকর হয়। যদি কোন বস্তু না পাওয়া যায়, তাহলে সেই শর্তটি মিথ্যা বলে রিপোর্ট করবে, অন্যথায় ডানদিকে ঘুরতে থাকা ব্লকটি কার্যকর হবে। এই সবকিছুই ফরএভার লুপের মধ্যে ক্রমাগত পুনরাবৃত্তি হয়।

এই প্রজেক্টে, VR রোবটটি একটি বিল্ডিং এর দিকে চলে যায় যখন দূরত্ব সেন্সর একটি বস্তু সনাক্ত করে এবং <Distance found object> ব্লকটি সত্য হিসাবে রিপোর্ট করে। এতে প্রকল্পটির 'যদি তারপর' শাখাকে পরিচালনার নির্দেশ দেওয়া হয়। এই শাখার মধ্যে রয়েছে [ড্রাইভ] ব্লক। VR রোবট তারপর প্রকল্পের 'অন্য' শাখা এড়িয়ে যায়।

প্রকল্পটি বাম দিকে একটি সবুজ হাইলাইট সহ রয়েছে যা if then শাখার বাস্তবায়নের প্রকল্প প্রবাহ দেখায়। ডানদিকে খেলার মাঠের উপরের নিচের দৃশ্য দেখানো হয়েছে, যেখানে একটি তীর এবং লাল বাক্স রয়েছে যা এই ক্ষেত্রে দূরত্ব সেন্সর দ্বারা সনাক্ত করা দুর্গ বা বস্তুটিকে হাইলাইট করে।

কারণ [If then else] ব্লকটি একটি [ফরএভার] ব্লকের ভিতরে স্থাপন করা হয়, প্রকল্পটি [যদি তাহলে অন্য] ব্লকের অবস্থা পরীক্ষা করার জন্য [ফরএভার] ব্লকের শীর্ষে ফিরে যায়। এই লুপ চিরতরে চলতে থাকবে, VR রোবটকে প্রতি সেকেন্ডে শত শত বার ক্রমাগত [যদি অন্যথায়] অবস্থা চেক করার নির্দেশ দেয়।

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

একই VEXcode VR প্রজেক্ট যেখানে Forever ব্লকের নিচ থেকে তীরচিহ্নগুলি আবার উপরে সরানো হয়েছে, যা নির্দেশ করে যে Project প্রবাহ Forever লুপের উপরে ফিরে যাচ্ছে এবং এর মধ্যে থাকা সমস্ত কমান্ড পুনরাবৃত্তি করছে।

যদি <Distance found object> ব্লক মিথ্যা হিসাবে রিপোর্ট করে, তাহলে প্রকল্পের 'অন্য' শাখাটি কার্যকর করা হবে। 'অন্য' শাখায় [টার্ন] ব্লক অন্তর্ভুক্ত।

প্রকল্পটি বাম দিকে একটি লাল হাইলাইট সহ রয়েছে যা অন্য শাখার বাস্তবায়নের প্রকল্প প্রবাহ দেখায়। ডানদিকে খেলার মাঠের উপরের নিচের দৃশ্য দেখানো হয়েছে, VR রোবটের চারপাশে বাঁকা তীরচিহ্নগুলি নির্দেশ করে যে কোনও বস্তু সনাক্ত করার জন্য ঘুরছে, কারণ দূরত্ব সেন্সরের সামনে সরাসরি কোনও বস্তু নেই।

আপনার তথ্যের জন্য

[তাহলে অন্যথায়] ব্লক ব্যবহার করা হয় নিশ্চিত করার জন্য যে প্রজেক্টের একটি মাত্র শাখা যখন কন্ডিশন চেক করা হয়। শুধুমাত্র একটি উদাহরণ বা শর্ত যেকোনো সময় সত্য হতে পারে। এটি প্রকল্পটিকে আরও দক্ষ করে তোলে।

ফরএভার লুপের মধ্যে if then else ব্লকের প্রকল্প প্রবাহ নির্দেশ করে এমন একটি চিত্র। প্রকল্পটি শুরু হলে দূরত্ব সেন্সরের অবস্থা পরীক্ষা করা হয়। যদি কোন বস্তু পাওয়া যায়, সেই শর্তটি সত্য হয়, তাহলে ড্রাইভ ফরোয়ার্ড ব্লকটি কার্যকর হয়। যদি কোন বস্তু না পাওয়া যায়, তাহলে সেই শর্তটি মিথ্যা বলে রিপোর্ট করবে, অন্যথায় ডানদিকে ঘুরতে থাকা ব্লকটি কার্যকর হবে। এই সবকিছুই ফরএভার লুপের মধ্যে ক্রমাগত পুনরাবৃত্তি হয়।

বর্তমান প্রকল্পটির সাথে ইউনিট ৭-এ তৈরি প্রকল্পের তুলনা করুন।  ইউনিট ৭ প্রকল্পে চারটি [যদি থাকে] ব্লক ব্যবহার করা হয়েছে।

ইউনিট ৭ থেকে চারটি "If then" ব্লক ক্রমানুসারে সহ একটি নমুনা প্রকল্পের প্রকল্প প্রবাহের একটি চিত্র। প্রতিটি ক্ষেত্রে, If প্যারামিটারটি একটি নির্দিষ্ট রঙ সনাক্ত করতে এবং সনাক্ত করা রঙের উপর ভিত্তি করে একটি আচরণ সম্পাদন করতে ফ্রন্ট আই সেন্সর ব্যবহার করছে। যদি রঙটি সনাক্ত করা হয়, তাহলে "If then" সত্য হবে, এবং এর মধ্যে থাকা ব্লকটি চলবে, এবং কোডের প্রতিটি অংশের জন্য এটি বারবার ঘটবে।

একাধিক [যদি তাহলে] ব্লক সহ একটি প্রকল্পের মাধ্যমে চালানোর সময়, এটি সম্ভব হতে পারে যে একাধিক শর্ত সত্য রিপোর্ট করবে এবং প্রকল্পটি [চিরকাল] ব্লকের কমান্ডের মাধ্যমে চলে। এই প্রকল্পে, উভয় শর্ত একই [চিরকাল] লুপের সময় সত্য রিপোর্ট করতে পারে। এই ধরনের দ্বন্দ্বের কারণে প্রকল্পটি চলমান বন্ধ হতে পারে বা আরও ধীর গতিতে চলতে পারে।

একটি চিরস্থায়ী লুপের মধ্যে দুটি ক্রমযুক্ত If then ব্লকের প্রকল্প প্রবাহের একটি চিত্র। শুরু হলে, প্রকল্পটি প্রথমে শর্ত ১ পরীক্ষা করবে, প্রথম if then ব্লকের প্যারামিটার। যদি তা সত্য হয়, তাহলে এর মধ্যে 90 ব্লকের জন্য ডানদিকে মোড় নেওয়া হবে। যদি সেই শর্তটি মিথ্যা হয়, তাহলে প্রকল্পটি পরবর্তী if then ব্লকে চলে যাবে যাতে শর্ত 2 পরীক্ষা করা যায়। যদি শর্ত ২ সত্য হয়, তাহলে এর মধ্যে ২০০ মিমি ব্লকের জন্য ড্রাইভ ফরোয়ার্ড চলবে। যদি এটি মিথ্যা হয়, তাহলে প্রকল্পটি আবার প্রক্রিয়াটি পুনরাবৃত্তি করার জন্য চিরতরে লুপের শীর্ষে ফিরে যাবে।

একটি [if then else] ব্লক ব্যবহার করলে এই ধরনের বাগগুলি এড়ানো যায় কারণ এই ব্লকের সাথে একটি নির্দিষ্ট মুহুর্তে শুধুমাত্র একটি শর্তই সত্য হতে পারে।

একটি ফরএভার লুপের মধ্যে if then else ব্লক ব্যবহার করে প্রকল্প প্রবাহের একটি চিত্র। শুরু হলে, if then শাখার অবস্থা পরীক্ষা করা হবে। যদি এটি সত্য হয়, এবং ড্রাইভ চলমান থাকে, তাহলে If শাখার মধ্যে ব্লকটি চলবে, এবং রোবটটি 90 ডিগ্রি বাম দিকে ঘুরবে; অন্যথায়, রোবটটি 200 মিমি এগিয়ে যাবে। প্রকল্পটি একটি চিরস্থায়ী চক্রের মধ্যে থাকায় একটি শর্ত পরীক্ষা করার এই সিদ্ধান্তটি ক্রমাগত নেওয়া হবে।

প্রশ্ন

পাঠ কুইজ অ্যাক্সেস করতে নীচের একটি লিঙ্ক নির্বাচন করুন.

গুগল ডক / .ডকএক্স / .পিডিএফ