Розуміння синтаксису для створення функцій у 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 ім'я-функції (змінна типу даних, змінна типу даних тощо) {

	Оголошення змінних тощо.
	Вирази...
	//не потрібно явного повернення.
}

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

void ім'я-функції (змінна типу даних, змінна типу даних тощо) {

	Оголошення змінних тощо.
	Вирази...
	повернути повертається значення
}

Функція повертає значення певного типу даних із більш ніж одним вхідним параметром.

Типreturnфункції має збігатися з типом даних значення, яке повертає функція. Повернене значенняможе бути постійним значенням або змінною. Йому має передувати ключове слово «return.

Наступні правила регулюють тип повернення:

  • Обмежень на тип повернення майже немає, крім масиву. (Масив — це ще одна більш складна тема щодо створення даних. Це виходить за межі цієї статті, і тут не розглядатиметься.
  • Якщо вказати, що тип повернення «void» означає, що значення, що повертається, не потрібне. Речення «повернути» є неявним. Це означає, що ви повинні явно вказати «return» у кінці функції «void».

Створення функції перед main() чи після?

Компілятор читає ваш файл зверху вниз. Отже, порядок має значення.

Візьмемо для прикладу просту функцію найбільшого спільного знаменника (НСЗ). Ви отримаєте повідомлення про помилку:використання неоголошеного ідентифікатора 'getGCD'

 Знімок екрана інтерфейсу програмування VEXcode V5, на якому показано різні блоки кодування та параметри для програмування систем VEX Robotics, ілюструючи функції, доступні для користувачів у розділі програмування.

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

Два можливі рішення:

int getGCD(int a, int b) {
  int remainder = 1;
  while (залишок > 0) {
    залишок = a % b;
    а = b;
    b = залишок;
  }
  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 залишок = 1;
  while (залишок > 0) {
    залишок = a % b;
    а = b;
    b = залишок;
  }
  return a;
}
	

Розмістіть прототип (також званий сигнатурою) функції перед «викликаючим функціональним блоком».


Що робити, якщо ви хочете модульувати функції в різних файлах?

Крок 1: Створіть файл заголовка та помістіть у нього прототип функції.

наприклад, створити файл під назвою «myFuncs.h»

Вам потрібно «додати» цей заголовний файл у ваш проект перед компіляцією коду. Це дозволяє IDE VEXcode Pro V5 «знати» про включення цього нового файлу заголовка до того, як він почне створювати ваш проект.

Ось як:

Знімок екрана інтерфейсу програмування, що демонструє функції категорії V5, включаючи фрагменти коду та інструменти для розробників, що ілюструє функції, доступні в розділі програмування.

Знімок екрана вмісту, пов’язаного з програмуванням, в описі категорії V5, що демонструє ключові функції та функції для розробників.

Знімок екрана опису категорії «Програмування V5», що демонструє ключові функції та функції, пов’язані з програмуванням на платформі V5.

У цьому файлі заголовка «common.h» (ви можете назвати будь-яку назву, якщо вона є буквено-цифровою без пробілів).

Крок 2: Створіть окремий файл cpp, наприклад, під назвою common.cpp

Знімок екрана інтерфейсу програмування, що демонструє різні варіанти кодування та функції, ілюструє функціональність і макет опису категорії V5 у розділі програмування.

//це файл common.cpp

int getGCD(int a, int b) {
  int remainder = 1;
  while (залишок > 0) {
    залишок = a % b;
    а = b;
    b = залишок;
  }
  return 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: