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.
Funktion määritelmä
Nyt kun olemme käyneet läpi muutaman esimerkin, katsotaanpa funktion määritelmän yleistä muotoa:
void function-name() {
Muuttujien määrittelyt jne.
Lausekkeet...
//ei eksplisiittistä paluuta tarvita.
}
Funktio ei palauta mitään erityistä arvoa eikä palauta saapuvia parametreja.
void function-name(tietotyyppimuuttuja) {
Muuttujien jne. deklaroinnit.
Lausekkeet...
//ei eksplisiittistä paluuta tarvita.
}
Jos haluat useita muuttujia, käytät erottimena merkkiä ",":
Funktio ei palauta erityistä arvoa, mutta yhdellä parametrilla.
void function-name(tietotyyppimuuttuja, tietotyyppimuuttuja, jne.) {
Muuttujien jne. deklaroinnit.
Lausekkeet...
//ei eksplisiittistä paluuta tarvita.
}
Funktio ei palauta erityistä arvoa, mutta sillä on useampi kuin yksi parametri.
void function-name(tietotyyppimuuttuja, tietotyyppimuuttuja, jne.) {
Muuttujien jne. deklaroinnit.
Lausekkeet...
return paluuarvo
}
Funktio palauttaa tietyn tietotyypin arvon ja syöttää useamman kuin yhden parametrin.
Funktionreturn-tyypin on oltava sama kuin funktion palauttaman paluuarvon tietotyyppi. Paluuarvovoi olla vakio tai muuttuja Sen eteen tulee kirjoittaa avainsana "return.”
Palautustyyppiä säätelevät seuraavat säännöt:
- Palautustyypillä ei ole juuri mitään rajoituksia, paitsi array. (Array on toinen edistyneempi aihe tietojen luomiseen. Se ei kuulu tämän artikkelin soveltamisalaan, eikä sitä käsitellä tässä.
- Jos määritetään, että palautustyyppi "void" tarkoittaa, että palautusarvoa ei tarvita. Lause "palautus" on implisiittinen. Tämä tarkoittaa, että sinun on nimenomaisesti ilmoitettava "palautus" "tyhjä"-funktion lopussa.
Luodaanko funktio ennen main()-funktiota vai sen jälkeen?
Kääntäjä lukee tiedostosi ylhäältä alas. Järjestyksellä on siis väliä.
Otetaan esimerkkinä yksinkertainen Greatest Common Denominator (GCD) -funktio. Saat virheen:määrittämättömän tunnisteen 'getGCD' käyttö
Itse asiassa tämä on totta riippumatta siitä, onko se peräisin main( ) tai muusta kutsuvasta toimintolohkosta, eli "kutsutun toimintolohkon" on edeltävä "kutsuvaa toimintolohkoa".
Kaksi mahdollista ratkaisua:
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));
}
Siirrä "kutsuttu funktio" "kutsuvan funktiolohkon" yläpuolelle esimerkissä "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;
}
Laita funktion prototyyppi (kutsutaan myös allekirjoitukseksi) ennen "kutsuvaa toimintolohkoa".
Entä jos haluat modularisoida funktioita eri tiedostoissa?
Vaihe 1: Luo otsikkotiedosto ja lisää funktion prototyyppi tähän tiedostoon.
esim. luo tiedosto nimeltä "myFuncs.h"
Sinun on "lisättävä" tämä otsikkotiedosto projektiisi ennen koodin kääntämistä. Tämän ansiosta VEXcode Pro V5 IDE "tietää" tämän uuden otsikkotiedoston sisällyttämisestä ennen kuin se alkaa rakentaa projektia.
Näin:



Tässä otsikkotiedostossa "common.h" (voit nimetä mitä haluat, kunhan se on aakkosnumeerinen ilman välilyöntiä.)
Vaihe 2: Luo erillinen cpp-tiedosto, esim. nimeltään common.cpp

//tämä on common.cpp-tiedosto
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
Siirrä funktio getGCD(...) tähän tiedostoon
#include "vex.h"
#include "common.h"
using namespace vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD( %d, %d ) = %d", getGCD(60, 100));
}
Nyt kaikki mitä sinulla on pääcpp-tiedostossa, koostuu seuraavista
Viite:https://api.vexcode.cloud/v5/html/namespacevex.html
Tulevia aiheita käsitellään jatkossa VEX-kirjaston edistyneemmissä osioissa:
- Ohita arvo vs. ohita viite
- Pass taulukossa
- Ohita rakenteessa