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'
Насправді це вірно незалежно від того, чи це з 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 «знати» про включення цього нового файлу заголовка до того, як він почне створювати ваш проект.
Ось як:



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

//це файл 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 у майбутньому:
- Передача за значенням проти передачі за посиланням
- Передайте в масиві
- Проходять у складі