Понимание синтаксиса для создания функций в 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 function-name() {

	Объявления переменных и т. д.
	Выражения...
	// Явный возврат не требуется.
}

Функция не возвращает ни специального значения, ни входящих параметров.

void function-name(data-type variable) {

	Объявления переменных и т. д.
	Выражения...
	// Явный возврат не требуется.
}

Если вам нужно несколько переменных, просто используйте запятую в качестве разделителя:

Функция не возвращает специального значения, а возвращает один параметр.

void function-name(data-type variable, data-type variable, etc) {

	объявлений переменных и т. д.
	выражение...
	// Явный возврат не требуется.
}

Функция не возвращает специального значения, но имеет более одного параметра.

void function-name(data-type variable, data-type variable, etc) {

	объявлений переменных и т. д.
	выражение...
	return return-value
}

Функция возвращает значение определенного типа данных и имеет более одного входного параметра.

Тип возвращаемого значения функциидолжен совпадать с типом данных возвращаемого значения этой функции. Возвращаемое значениеможет быть константой или переменной. Ему должно предшествовать ключевое слово «return».”

Следующие правила регулируют тип возвращаемого значения:

  • Ограничений на тип возвращаемого значения практически нет, кроме массива. (Массив — еще одна более сложная тема, касающаяся создания данных. Это выходит за рамки данной статьи и здесь не рассматривается.
  • Указание типа возвращаемого значения «void» означает, что возвращаемое значение не требуется. Пункт «возврат» неявный. Это означает, что вы должны явно указать «return» в конце «void» функции.

Как создать функцию: до или после вызова main()?

Компилятор читает ваш файл сверху вниз. Таким образом, порядок имеет значение.

Давайте возьмем в качестве примера простую функцию наибольшего общего знаменателя (НОД). Вы получите ошибку:использование необъявленного идентификатора 'getGCD'

 В редакторе кода VEXcode Pro V5 показан вызов функции main функции getGCD до её определения, при этом getGCD выделена как ошибка необъявленного идентификатора.

На самом деле это справедливо независимо от того, исходит ли он из main() или другого вызывающего функционального блока, т.е. «вызываемый функциональный блок» должен предшествовать «вызывающему функциональному блоку».

Два возможных решения:

int getGCD(int a, int b) {
  int remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}


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 remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}
	

Поместите прототип (также называемый сигнатурой) функции перед «блоком вызывающей функции».


Что делать, если вы хотите разделить функции на модули в разных файлах?

Шаг 1: Создайте заголовочный файл и поместите в него прототип функции.

например, создайте файл с именем «myFuncs.h»

Вам необходимо «добавить» этот заголовочный файл в свой проект перед компиляцией кода. Это позволяет среде IDE VEXcode Pro V5 «знать» о включении этого нового заголовочного файла до того, как она начнет создавать проект.

Вот как:

Интерфейс VEXcode Pro V5 с открытым контекстным меню папки включения и выбранной опцией «Новый файл» для создания заголовочного файла.

В окне «Создать новый файл» выбран параметр «Заголовочный файл C++» и указано имя файла common.h.

Редактор кода VEXcode Pro V5 демонстрирует функцию getGCD, определенную в отдельном файле common.cpp.

В этом заголовочном файле «common.h» (вы можете назвать все, что захотите, главное, чтобы оно было буквенно-цифровым и без пробелов.)

Шаг 2: Создайте отдельный файл .cpp, например, с именем common.cpp.

В окне «Создать новый файл» выбран параметр «Исходный файл C++», и указано имя файла common.cpp.

//Это файл common.cpp

int getGCD(int a, int b) {
  int remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}

Переместите функцию getGCD(...) в этот файл.

#include "vex.h"
#include "common.h"
using namespace 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: