C++#
VEX IQ (১ম প্রজন্ম) C++ API রেফারেন্সে VEXcode C++ প্রোজেক্টে ব্যবহৃত ক্লাস, অবজেক্ট, কনস্ট্রাক্টর, মেম্বার ফাংশন এবং ভেরিয়েবল ব্যাখ্যা করা হয়েছে।
কোনো ডিভাইস বা ফিচার কীভাবে তৈরি করা হয় তা বুঝতে, কোন ফাংশন সিগনেচার ব্যবহার করতে হবে তা যাচাই করতে, অথবা একটি ক্লাসের মধ্যে সম্পর্কিত মেম্বার ফাংশনগুলোর তুলনা করতে চাইলে এই রেফারেন্সটি ব্যবহার করুন।
VEXcode IQ C++ প্রোজেক্টে C++ কমান্ড ব্যবহার করা হয়। C++ পেজগুলো ব্লক পেজ থেকে ভিন্নভাবে সাজানো থাকে, কারণ অনেক কমান্ড একটি ক্লাসের অন্তর্ভুক্ত। একটি পেজে প্রথমে ক্লাসটি এবং কীভাবে একটি অবজেক্ট তৈরি করতে হয় তা ব্যাখ্যা করা থাকতে পারে, তারপর সেই অবজেক্টে কল করা যায় এমন মেম্বার ফাংশনগুলোর তালিকা দেওয়া থাকে।
একটি C++ ক্লাস পেজ কীভাবে পড়তে হয়#
একটি C++ ক্লাস পেজ সাধারণত এই ক্রম অনুসরণ করে:
ভূমিকা - ক্লাসটি কী বোঝায় এবং কখন এটি উপযোগী, তা ব্যাখ্যা করে।
ব্যুৎপন্ন ক্লাসসমূহ - এই ক্লাসের উপর ভিত্তি করে তৈরি হওয়া ক্লাসগুলোর তালিকা, যদি প্রযোজ্য হয়।
ক্লাস কনস্ট্রাক্টর বা কনস্ট্রাক্টরসমূহ - ক্লাস থেকে একটি অবজেক্ট তৈরি করার জন্য ব্যবহৃত সিনট্যাক্স দেখায়।
ক্লাস ডেস্ট্রাক্টর - অবজেক্টটি ধ্বংস করতে এবং প্রযোজ্য ক্ষেত্রে এর রিসোর্সসমূহ মুক্ত করতে ব্যবহৃত সিনট্যাক্স দেখায়।
প্যারামিটারসমূহ - অবজেক্ট তৈরির সময় ব্যবহৃত কনস্ট্রাক্টর প্যারামিটারগুলো ব্যাখ্যা করে।
উদাহরণ - কোডে কীভাবে অবজেক্ট তৈরি করতে হয় তা দেখানো হয়েছে।
সদস্য ফাংশনসমূহ - ক্লাসের অন্তর্গত ফাংশনগুলোর তালিকা, যা প্রায়শই উদ্দেশ্য অনুসারে শ্রেণিবদ্ধ করা হয়।
ফাংশন এন্ট্রি - প্রতিটি মেম্বার ফাংশনের ব্যাখ্যা, যার মধ্যে রয়েছে উপলব্ধ ফাংশন, প্যারামিটার, রিটার্ন ভ্যালু, নোট এবং উদাহরণ।
প্রতিটি পৃষ্ঠায় সব বিভাগ থাকে না। উদাহরণস্বরূপ, কিছু পৃষ্ঠায় ডিরাইভড ক্লাস অন্তর্ভুক্ত থাকে না, এবং কিছু ফাংশনে প্যারামিটার বা রিটার্ন ভ্যালু থাকে না।
সাধারণ C++ API উপাদান#
উপাদান |
এর মানে কী |
|---|---|
Class |
কোনো ডিভাইস বা ফিচারের জন্য C++ টাইপ, যেমন |
Object |
একটি ক্লাস থেকে তৈরি করা একটি নামযুক্ত ইনস্ট্যান্স, যেমন |
নির্মাতা |
ক্লাস থেকে অবজেক্ট তৈরি করতে ব্যবহৃত কোড। |
সদস্যের কার্যক্রম |
কোনো অবজেক্টের উপর কল করা একটি কমান্ড, যেমন |
উপলব্ধ ফাংশন |
মেম্বার ফাংশনের জন্য ব্যবহারযোগ্য একটিমাত্র ফাংশন সিগনেচার থাকে। কিছু মেম্বার ফাংশনের একাধিক ব্যবহারযোগ্য ফাংশন থাকে। |
প্যারামিটার |
কোনো কনস্ট্রাক্টর বা ফাংশনের কার্যকলাপ নিয়ন্ত্রণ করার জন্য সেটির মধ্যে একটি মান পাস করা হয়। |
ফেরত মূল্য |
একটি ফাংশন যে মান ফেরত দেয়, যেমন |
সি++ এর মৌলিক শব্দভান্ডার#
মেয়াদ |
এর মানে কী |
|---|---|
পরিবর্তনশীল |
একটি নাম যা একটি মান সংরক্ষণ করে, যেমন |
ধরণ |
কোনো কিছু যে ধরনের ডেটা সংরক্ষণ করে, যেমন |
স্ট্রিং |
উদ্ধৃতি চিহ্নের ভেতরের লেখা, যেমন |
int |
একটি ধনাত্মক বা ঋণাত্মক পূর্ণ সংখ্যা, যেমন |
দ্বিগুণ |
এমন এক ধরনের সংখ্যা যাতে দশমিক থাকতে পারে, যেমন |
বুল |
এমন একটি মান যা হয় |
যুক্তি |
মেম্বার ফাংশন বা ফাংশন কলে পাস করা একটি মান, যেমন |
কনস্ট্রাক্টর এবং অবজেক্ট#
অনেক C++ ক্লাসের মেম্বার ফাংশন ব্যবহার করার আগে একটি অবজেক্ট থাকা আবশ্যক। কনস্ট্রাক্টর দেখায় কীভাবে সেই অবজেক্টটি তৈরি করতে হয়।
উদাহরণস্বরূপ, যে স্মার্ট পোর্টে সেন্সরটি সংযুক্ত আছে, সেটি কনস্ট্রাক্টরে উল্লেখ করে একটি বাম্পার সুইচ অবজেক্ট তৈরি করা যেতে পারে:
bumper Bumper1 = bumper(PORT1);
অবজেক্টটি তৈরি হওয়ার পরে, এর মেম্বার ফাংশনগুলো কল করা যেতে পারে:
Bumper1.pressing();
VEXcode-এ, ডিভাইস মেনুর মাধ্যমে ডিভাইস কনফিগারেশন প্রায়শই স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়। VS Code-এ, কনস্ট্রাক্টরগুলো ম্যানুয়ালি লেখার প্রয়োজন হতে পারে।
সঠিক উপলব্ধ ফাংশন নির্বাচন করা#
কিছু মেম্বার ফাংশনের একাধিক ফাংশন উপলব্ধ থাকে। প্রতিটি ফাংশন ভিন্ন ভিন্ন প্যারামিটার সেট ব্যবহার করে, তাই আপনার প্রোজেক্টের প্রয়োজনীয় ভ্যালুগুলোর সাথে মেলে এমন ফাংশনটি বেছে নিন।
উদাহরণস্বরূপ, একটি ড্রাইভট্রেইন ফাংশনের একটি সংস্করণ থাকতে পারে যা বর্তমান বেগ ব্যবহার করে এবং আরেকটি সংস্করণ থাকতে পারে যা প্রজেক্টকে একটি বেগ বেছে নিতে দেয়:
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
উভয় সংস্করণেই driveবলা হয়, কিন্তু দ্বিতীয় সংস্করণটি আরও বেশি নিয়ন্ত্রণ দেয় কারণ এতে বেগের প্যারামিটার অন্তর্ভুক্ত রয়েছে।
উদাহরণ ফাংশন এন্ট্রি#
ড্রাইভ#
ড্রাইভ drive রোবটটিকে অনির্দিষ্টকালের জন্য সামনে বা পেছনে চালায়। রোবটটি ততক্ষণ চলতে থাকবে যতক্ষণ না এটিকে মোড় নেওয়া বা থামানোর মতো অন্য কোনো কাজ দেওয়া হয়।
উপলব্ধ ফাংশনসমূহ
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
রোবটটি যেদিকে চলে: |
|
|
|
|
|
বেগের একক: |
ফেরত মূল্য
এই ফাংশনটি কোনো মান ফেরত দেয় না।
টীকা
ড্রাইভ
driveঅপেক্ষারত নয়। প্রজেক্টটি সাথে সাথেই কোডের পরবর্তী লাইনটি চালাবে।যতক্ষণ না
stopকল করা হয় অথবা অন্য কোনো ড্রাইভট্রেইন মুভমেন্ট ফাংশন চলে, ততক্ষণ রোবটটি চলতে থাকবে।isDoneএবংisMoving,driveএর সাথে ব্যবহৃত হয় না কারণdriveকোনো টার্গেট ডিসটেন্স নেই।
উদাহরণ
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
অপেক্ষা এবং অ-অপেক্ষা আচরণ#
কিছু C++ মুভমেন্ট ফাংশন কোনো একটি কাজ শেষ না হওয়া পর্যন্ত অপেক্ষা করে এবং তারপরই প্রজেক্টটি কোডের পরবর্তী লাইনে যায়। আবার অন্য কিছু ফাংশন কোনো কাজ শুরু করে দেয় এবং সাথে সাথেই পরবর্তী লাইনটি রান হতে দেয়।
অপেক্ষা - ফাংশনটি শেষ না হওয়া পর্যন্ত প্রজেক্টটি অপেক্ষা করে।
অপেক্ষাবিহীন - প্রজেক্টটি ফাংশনটি শুরু করে এবং অবিলম্বে পরবর্তী লাইনে চলে যায়।
Some functions include a parameter such as waitForCompletion to choose this behavior. For those functions, true usually makes the project wait, while false lets the next line run right away.
উপবিভাগে নির্দেশাবলী#
C++ কমান্ডগুলো ডিভাইস বা বিষয় অনুসারে সাজানো থাকে। উদাহরণস্বরূপ, ব্রেইন, কন্ট্রোলার, ড্রাইভট্রেইন, ইভেন্টস, মোশন, স্মার্ট পোর্ট ডিভাইস, থ্রেডস এবং লজিকের কমান্ডগুলোকে তাদের নিজস্ব উপবিভাগে ভাগ করা হয়েছে।