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.
Definicja funkcji
Teraz, gdy przejrzeliśmy kilka przykładów, przyjrzyjmy się ogólnej formie definicji funkcji:
void nazwa-funkcji() {
Deklaracje zmiennych itp.
Wyrażenia...
//nie jest konieczny żaden wyraźny zwrot.
}
Funkcja nie zwraca żadnej specjalnej wartości ani żadnych parametrów przychodzących.
void nazwa-funkcji(zmienna typu danych) {
Deklaracje zmiennych itp.
Wyrażenia...
//nie jest konieczny żaden wyraźny zwrot.
}
Jeśli chcesz mieć wiele zmiennych, po prostu użyj „,” jako ogranicznika:
Funkcja nie zwraca żadnej specjalnej wartości, ale z jednym parametrem.
void nazwa-funkcji(zmienna typu danych, zmienna typu danych itp.) {
Deklaracje zmiennych itp.
Wyrażenia...
//nie jest konieczny żaden wyraźny zwrot.
}
Funkcja nie zwraca żadnej specjalnej wartości, ale zawiera więcej niż jeden parametr.
void nazwa-funkcji(zmienna typu danych, zmienna typu danych itp.) {
Deklaracje zmiennych itp.
Wyrażenia...
return wartość-zwrotna
}
Funkcja zwraca wartość określonego typu danych i przy więcej niż jednym parametrze wejściowym.
Typ funkcjireturnmusi być taki sam jak typ danych wartości zwracanej przez tę funkcję. Wartość zwracanamoże być wartością stałą lub zmienną. Musi być poprzedzony słowem kluczowym „return.”
Typ zwrotu regulują następujące zasady:
- Nie ma prawie żadnych ograniczeń dotyczących typu zwracanego, z wyjątkiem tablicy. (Tablica to kolejny bardziej zaawansowany temat dotyczący tworzenia danych. Wykracza to poza zakres tego artykułu i nie będzie tu omawiane.
- Określenie, że zwracany typ „void” oznacza, że nie jest konieczna żadna wartość zwracana. Klauzula „powrót” jest dorozumiana. Oznacza to, że musisz wyraźnie określić „return” na końcu funkcji „void”.
Tworzenie funkcji przed main() czy po?
Kompilator czyta plik od góry do dołu. Zatem kolejność ma znaczenie.
Weźmy jako przykład prostą funkcję największego wspólnego mianownika (NWD). Otrzymasz błąd:użycie niezadeklarowanego identyfikatora „getGCD”
Właściwie jest to prawdą niezależnie od tego, czy pochodzi z main(), czy z innego wywołującego bloku funkcyjnego, tj. „wywoływany blok funkcyjny” musi poprzedzać „wywołujący blok funkcyjny”.
Dwa możliwe rozwiązania:
int getGCD(int a, int b) {
int reszta = 1;
podczas gdy (reszta > 0) {
reszta = a % b;
a = b;
b = reszta;
}
return a;
}
int main() {
Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
Przenieś „wywoływaną funkcję” nad „wywołujący blok funkcyjny”, w przykładzie „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 reszta = 1;
póki (reszta > 0) {
reszta = a % b;
a = b;
b = reszta;
}
powrót a;
}
Umieść prototyp (zwany także sygnaturą) funkcji przed „wywoływającym blokiem funkcyjnym”.
A co jeśli chcesz modularyzować funkcje w różnych plikach?
Krok 1: Utwórz plik nagłówkowy i umieść w nim prototyp funkcji.
np. utwórz plik o nazwie „myFuncs.h”
Musisz „dodać” ten plik nagłówkowy do swojego projektu przed skompilowaniem kodu. Dzięki temu IDE VEXcode Pro V5 „będzie świadome” dołączenia nowego pliku nagłówkowego, zanim zacznie budować projekt.
Oto jak:



W tym pliku nagłówkowym „common.h” (możesz nazwać dowolną nazwę, pod warunkiem, że będzie ona alfanumeryczna i bez spacji).
Krok 2: Utwórz osobny plik cpp, np. o nazwie common.cpp

//to jest plik common.cpp
int getGCD(int a, int b) {
int reszta = 1;
podczas gdy (reszta > 0) {
reszta = a % b;
a = b;
b = reszta;
}
return a;
}
Przenieś funkcję getGCD(...) do tego pliku
#include "vex.h"
#include "common.h"
używając przestrzeni nazw vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}
Teraz wszystko, co masz w głównym pliku cpp, będzie składać się z następujących elementów
Odniesienie:https://api.vexcode.cloud/v5/html/namespacevex.html
Przyszłe tematy zostaną omówione w bardziej zaawansowanych sekcjach Biblioteki VEX w przyszłości:
- Przekazywanie przez wartość a przekazywanie przez referencję
- Przekaż tablicę
- Przekaż strukturę