VEXcode Pro V5 で関数を作成するための構文を理解する

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

関数の定義

いくつかのサンプルを確認したので、関数定義の一般的な形式を見てみましょう。

void 関数名() {

	変数などの宣言
	式...
	//明示的なリターンは必要ありません。
}

関数は特別な値や受信パラメータを返しません。

void 関数名(データ型変数) {

	変数の宣言など
	式...
	//明示的なリターンは必要ありません。
}

複数の変数が必要な場合は、単に「,」を区切り文字として使用します。

関数は特別な値を返しませんが、パラメータが 1 つあります。

void 関数名(データ型変数、データ型変数など) {

	変数などの宣言
	式...
	//明示的なリターンは必要ありません。
}

関数は特別な値を返しませんが、複数のパラメータを返します。

void 関数名(データ型変数、データ型変数など) {

	変数などの宣言
	式...
	return 戻り値
}

関数は、複数のパラメータを入力して、特定のデータ型の値を返します。

関数のreturn型は、関数が返す戻り値のデータ型と同じである必要があります。 戻り値は、定数値または変数にすることができます。 先頭にキーワード「return」を付ける必要があります。

戻り値の型は次の規則によって決まります。

  • 戻り値の型には、配列を除いてほとんど制限がありません。 (配列は、データの作成方法に関するもう 1 つの高度なトピックです。 これはこの記事の範囲外であるため、ここでは説明しません。
  • 戻り値の型を「void」に指定すると、戻り値が不要になります。 「返却」条項は暗黙的です。 つまり、「void」関数の最後に「return」を明示的に記述する必要があります。

関数を作成するのは main() の前ですか、それとも後ですか?

コンパイラはファイルを上から下に読み取ります。 したがって、順序は重要です。

単純な最大公約数 (GCD) 関数を例として考えてみましょう。 エラーが発生します:use of undeclared identifier 'getGCD'

 VEXcode V5 プログラミング インターフェイスのスクリーンショット。VEX Robotics システムをプログラミングするためのさまざまなコーディング ブロックとオプションが表示され、プログラミング セクションでユーザーが利用できる機能が説明されています。

実際、これは main() からのものであっても、他の呼び出し関数ブロックからのものであっても当てはまります。つまり、「呼び出される関数ブロック」は「呼び出し関数ブロック」より前になければなりません。

考えられる解決策は 2 つあります。

int getGCD(int a, int b) {
  int 剰余 = 1;
  while (剰余 > 0) {
    剰余 = a % b;
    a = b;
    b = 余り。
  }
  戻り値;
}


int main() {
	Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
	

「main()」の例では、「呼び出される関数」を「呼び出し元の関数ブロック」の上に移動します。

int getGCD(int, int);

int main() { 
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

int getGCD(int a, int b) {
  int 剰余 = 1;
  while (余り > 0) {
    余り = a % b;
    a = b;
    b = 余り。
  }
  戻り値;
}
	

関数のプロトタイプ (シグネチャとも呼ばれる) を「呼び出し側関数ブロック」の前に置きます。


関数を異なるファイルにモジュール化したい場合はどうすればよいでしょうか?

ステップ 1: ヘッダー ファイルを作成し、関数のプロトタイプをこのファイルに置きます。

たとえば、「myFuncs.h」という名前のファイルを作成します。

コードをコンパイルする前に、このヘッダー ファイルをプロジェクトに「追加」する必要があります。 これにより、VEXcode Pro V5 IDE は、プロジェクトのビルドを開始する前に、この新しいヘッダー ファイルが含まれていることを「認識」できるようになります。

その方法は次のとおりです。

コード スニペットや開発者向けツールなど、V5 カテゴリの機能を紹介するプログラミング インターフェイスのスクリーンショット。プログラミング セクションで利用できる機能を示しています。

V5 カテゴリの説明にあるプログラミング関連コンテンツのスクリーンショット。開発者向けの主要な機能と機能性を紹介しています。

V5 プログラミング カテゴリの説明のスクリーンショット。V5 プラットフォームでのプログラミングに関連する主要な機能と機能を紹介しています。

このヘッダー ファイル「common.h」(スペースを含まない英数字であれば、任意の名前を付けることができます)。

ステップ 2: 別の cpp ファイル (たとえば、common.cpp という名前) を作成します。

さまざまなコーディング オプションと機能を紹介するプログラミング インターフェイスのスクリーンショット。プログラミング セクションの V5 カテゴリの説明の機能とレイアウトを示しています。

//これは common.cpp ファイルです

int getGCD(int a, int b) {
  int剰余 = 1;
  while (剰余 > 0) {
    剰余 = a % b;
    a = b;
    b = 余り。
  }
  a を返します。
}

関数 getGCD(...) をこのファイルに移動します

#include "vex.h"
#include "common.h"
名前空間 vex を使用します。

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

これで、メインの cpp ファイルにあるものは次のもので構成されます。

参考:https://api.vexcode.cloud/v5/html/namespacevex.html

今後のトピックは、VEX ライブラリのより高度なセクションで取り上げられる予定です。

  • 値渡しと参照渡し
  • 配列を渡す
  • 構造物を渡す

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: