C++#
VEX EXP C++ API संदर्भ VEXcode EXP C++ प्रोजेक्ट्स में उपयोग किए जाने वाले क्लास, ऑब्जेक्ट, कंस्ट्रक्टर, मेंबर फंक्शन और वेरिएबल की व्याख्या करता है।
जब आप यह समझना चाहते हैं कि कोई डिवाइस या फ़ीचर कैसे बनाया जाता है, यह जांचना चाहते हैं कि किस फ़ंक्शन सिग्नेचर का उपयोग करना है, या किसी क्लास में संबंधित सदस्य फ़ंक्शंस की तुलना करना चाहते हैं, तो इस संदर्भ का उपयोग करें।
VEXcode EXP C++ प्रोजेक्ट्स में C++ कमांड का उपयोग किया जाता है। C++ API की जानकारी VEX Visual Studio Code एक्सटेंशन के साथ Visual Studio Code में लिखे गए प्रोजेक्ट्स को भी सपोर्ट कर सकती है।
C++ क्लास पेज को कैसे पढ़ें#
एक C++ क्लास पेज आमतौर पर इस क्रम का पालन करता है:
परिचय - यह बताता है कि यह क्लास क्या दर्शाती है और कब उपयोगी होती है।
व्युत्पन्न वर्ग - यदि लागू हो, तो इस वर्ग पर आधारित किसी भी वर्ग को सूचीबद्ध करता है।
क्लास कंस्ट्रक्टर या कंस्ट्रक्टर्स - यह क्लास से ऑब्जेक्ट बनाने के लिए उपयोग किए जाने वाले सिंटैक्स को दर्शाता है।
क्लास डिस्ट्रक्टर - ऑब्जेक्ट को नष्ट करने और उसके संसाधनों को मुक्त करने के लिए उपयोग किए जाने वाले सिंटैक्स को दर्शाता है, यदि लागू हो।
पैरामीटर - ऑब्जेक्ट बनाते समय उपयोग किए जाने वाले कंस्ट्रक्टर पैरामीटर की व्याख्या करता है।
उदाहरण - कोड में ऑब्जेक्ट बनाने का तरीका दर्शाता है।
सदस्य फ़ंक्शन - यह उन फ़ंक्शनों की सूची देता है जो क्लास से संबंधित हैं, जिन्हें अक्सर उद्देश्य के आधार पर समूहीकृत किया जाता है।
फ़ंक्शन प्रविष्टियाँ - प्रत्येक सदस्य फ़ंक्शन की व्याख्या करती हैं, जिसमें उपलब्ध फ़ंक्शन, पैरामीटर, प्रतिफल मान, नोट्स और उदाहरण शामिल हैं।
हर पेज में सभी सेक्शन मौजूद नहीं होते। उदाहरण के लिए, कुछ पेजों में व्युत्पन्न क्लास शामिल नहीं होते, और कुछ फंक्शन में पैरामीटर या रिटर्न वैल्यू नहीं होते।
सामान्य C++ API तत्व#
तत्व |
इसका क्या मतलब है |
|---|---|
कक्षा |
किसी डिवाइस या फ़ीचर के लिए C++ टाइप, जैसे |
वस्तु |
किसी क्लास से बनाया गया एक नाम वाला इंस्टेंस, जैसे |
कंस्ट्रक्टर |
किसी क्लास से ऑब्जेक्ट बनाने के लिए उपयोग किया जाने वाला कोड। |
सदस्य कार्य |
किसी ऑब्जेक्ट पर कॉल किया गया कमांड, जैसे |
उपलब्ध फ़ंक्शन |
किसी सदस्य फ़ंक्शन के लिए उपयोग किया जा सकने वाला एक सटीक फ़ंक्शन हस्ताक्षर। कुछ सदस्य फ़ंक्शन में एक से अधिक उपलब्ध फ़ंक्शन होते हैं। |
पैरामीटर |
किसी कंस्ट्रक्टर या फंक्शन को दिया गया मान, जो उसके कार्यों को नियंत्रित करता है। |
वापसी मूल्य |
एक फ़ंक्शन द्वारा लौटाया गया मान, जैसे |
बुनियादी सी++ शब्दावली#
अवधि |
इसका क्या मतलब है |
|---|---|
चर |
एक नाम जो एक मान संग्रहीत करता है, जैसे |
प्रकार |
डेटा का प्रकार जो कोई वस्तु संग्रहीत करती है, जैसे |
डोरी |
उद्धरण चिह्नों के अंदर का पाठ, जैसे |
इंट |
एक धनात्मक या ऋणात्मक पूर्ण संख्या प्रकार, जैसे |
दोहरा |
एक संख्या प्रकार जिसमें दशमलव शामिल हो सकता है, जैसे |
बूल |
एक मान जो या तो |
तर्क |
किसी सदस्य फ़ंक्शन या फ़ंक्शन कॉल में पास किया गया मान, जैसे |
कंस्ट्रक्टर और ऑब्जेक्ट#
कई C++ क्लासों के मेंबर फंक्शन का उपयोग करने से पहले, एक ऑब्जेक्ट का होना आवश्यक है। कंस्ट्रक्टर उस ऑब्जेक्ट को बनाने का तरीका बताता है।
उदाहरण के लिए, कंस्ट्रक्टर को आवश्यक पोर्ट या कॉन्फ़िगरेशन जानकारी देकर एक मोटर ऑब्जेक्ट बनाया जा सकता है:
motor Motor1 = motor(PORT1, false);
ऑब्जेक्ट बन जाने के बाद, उसके सदस्य फ़ंक्शन को कॉल किया जा सकता है:
Motor1.spin(forward);
VEXcode में, डिवाइस कॉन्फ़िगरेशन अक्सर डिवाइस मेनू द्वारा स्वचालित रूप से उत्पन्न होता है। Visual Studio Code में VEX एक्सटेंशन के साथ, कंस्ट्रक्टर को मैन्युअल रूप से लिखने की आवश्यकता हो सकती है।
सही उपलब्ध फ़ंक्शन का चयन करना#
कुछ सदस्य फ़ंक्शनों में एक से अधिक उपलब्ध फ़ंक्शन होते हैं। प्रत्येक फ़ंक्शन अलग-अलग पैरामीटर सेट का उपयोग करता है, इसलिए वह फ़ंक्शन चुनें जो आपके प्रोजेक्ट द्वारा प्रदान किए जाने वाले मानों से मेल खाता हो।
उदाहरण के लिए, एक ड्राइवट्रेन फ़ंक्शन का एक संस्करण हो सकता है जो वर्तमान वेग का उपयोग करता है और दूसरा संस्करण जो प्रोजेक्ट को वेग चुनने की अनुमति देता है:
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
दोनों फ़ंक्शन driveको कॉल करते हैं, लेकिन दूसरा फ़ंक्शन अधिक नियंत्रण प्रदान करता है क्योंकि इसमें वेग पैरामीटर शामिल होते हैं।
उदाहरण फ़ंक्शन प्रविष्टि#
गाड़ी चलाना#
ड्राइव drive मोड में रोबोट लगातार आगे या पीछे चलता रहता है। रोबोट तब तक चलता रहेगा जब तक उसे कोई और क्रिया, जैसे मुड़ना या रुकना, करने का निर्देश न दिया जाए। RPM या DPS के लिए, सीमा ड्राइवट्रेन के गियर अनुपात द्वारा बदली जाती है।
उपलब्ध कार्य
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
रोबोट की गति की दिशा: |
|
|
वेग 0% से 100% तक होता है जब |
|
|
वेग इकाई: |
वापसी मूल्य
इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
टिप्पणियाँ
driveप्रतीक्षा नहीं कर रहा है; कॉल के तुरंत बाद प्रोजेक्ट कोड की अगली पंक्ति को निष्पादित करना जारी रखेगा।ड्राइवट्रेन तब तक चलती रहेगी जब तक
stopकॉल नहीं किया जाता या कोई अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन निष्पादित नहीं किया जाता।isDoneऔरisMovingजैसे फ़ंक्शनdriveपर लागू नहीं होते हैं, क्योंकि यह लक्ष्य-आधारित गति का उपयोग नहीं करता है।
उदाहरण
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
प्रतीक्षा और गैर-प्रतीक्षा व्यवहार#
कुछ C++ मूवमेंट फ़ंक्शन किसी क्रिया के समाप्त होने तक प्रतीक्षा करते हैं, उसके बाद ही प्रोजेक्ट कोड की अगली पंक्ति पर जाता है। वहीं, कुछ अन्य फ़ंक्शन क्रिया शुरू करते हैं और अगली पंक्ति को तुरंत चलने देते हैं।
प्रतीक्षा कर रहा है - प्रोजेक्ट तब तक प्रतीक्षा करता है जब तक फ़ंक्शन समाप्त नहीं हो जाता।
बिना प्रतीक्षा के - प्रोजेक्ट फ़ंक्शन शुरू करता है और तुरंत अगली पंक्ति पर चला जाता है।
कुछ फ़ंक्शन में waitForCompletion जैसे पैरामीटर शामिल होते हैं, जिनका उपयोग व्यवहार चुनने के लिए किया जाता है। इन फ़ंक्शन के लिए, true आमतौर पर प्रोजेक्ट को प्रतीक्षा करने के लिए कहता है, जबकि false अगली पंक्ति को तुरंत चलने देता है।
उपखंडों में आदेश#
C++ कमांड को डिवाइस या विषय के अनुसार व्यवस्थित किया जाता है। उदाहरण के लिए, ड्राइवट्रेन, मोशन, ब्रेन, कंट्रोलर, स्मार्ट पोर्ट डिवाइस, 3-वायर डिवाइस, कंसोल, लॉजिक और VEXlink के कमांड को उनके अपने उपखंडों में समूहीकृत किया गया है।