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

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

Якщо вам потрібно кілька змінних, просто використовуйте "," як роздільник:

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

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

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

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

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

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

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

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

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

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

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

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

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

 Редактор коду VEXcode Pro V5, що показує виклик головної функції 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, “НСД ( %d, %d ) = %d”, getGCD(60, 100));
}
	

Перемістіть «викликану функцію» над «викликаючим функціональним блоком» у прикладі «main().»

int getGCD(int, int);

int main() { 
	Brain.Screen.printAt(5,60, "НСД( %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"
використання простору імен vex;

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "НСД ( %d, %d ) = %d", getNSD(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: