Syntaksin ymmärtäminen funktioiden luomiseksi VEXcode Pro V5:ssä

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ö

 VEXcode Pro V5 -koodieditori, jossa näkyy pääfunktio kutsumassa getGCD-funktiota ennen sen määrittelyä, ja getGCD on korostettu ilmoittamattomana tunnistevirheenä.

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:

VEXcode Pro V5 -käyttöliittymä, jossa on avoinna Sisällytä kansio -kontekstivalikko ja valittuna Uusi tiedosto -vaihtoehto otsikkotiedoston luomiseksi.

Luo uusi tiedosto -ikkuna, jossa näkyy valittuna C++-otsikkotiedosto ja tiedostonimi common.h.

VEXcode Pro V5 -koodieditori, jossa näkyy erillisessä common.cpp-tiedostossa määritelty getGCD-funktio.

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

Luo uusi tiedosto -ikkuna, jossa näkyy valittuna C++-lähdekooditiedosto ja annettu tiedostonimi 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

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: