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.

Toiminnon määritelmä

Nyt kun olemme käyneet läpi muutaman esimerkin, katsotaanpa funktion määritelmän yleistä muotoa:

void funktion_nimi() {

	Muuttujien ilmoitukset jne.
	Lausekkeet...
	//nimellistä palautusta ei tarvita.
}

Funktio ei palauta mitään erityistä arvoa eikä palauta saapuvia parametreja.

void funktion_nimi(tietotyyppimuuttuja) {

	Muuttujien ilmoitukset jne.
	Lausekkeet...
	//nimellistä palautusta ei tarvita.
}

Jos haluat useita muuttujia, käytä erottimena ",":

Funktio ei palauta erityistä arvoa, mutta yhdellä parametrilla.

void-funktion nimi (tietotyyppimuuttuja, tietotyyppimuuttuja jne.) {

	Muuttujamäärityksiä jne.
	Lausekkeet...
	//nimellistä palautusta ei tarvita.
}

Funktio ei palauta erityistä arvoa, mutta sillä on useampi kuin yksi parametri.

void-funktion nimi (tietotyyppimuuttuja, tietotyyppimuuttuja jne.) {

	Muuttujamäärityksiä jne.
	Lausekkeet...
	palauttaa palautusarvon
}

Funktio palauttaa tietyn tietotyypin arvon ja syöttää useamman kuin yhden parametrin.

Funktionreturn-tyypin on oltava sama kuin funktion palauttaman palautusarvon tietotyyppi. Palautusarvovoi olla vakioarvo 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() vai 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 virheilmoituksen:ilmoittamattoman tunnuksen getGCD käyttö

 Kuvakaappaus VEXcode V5 -ohjelmointiliittymästä, jossa näkyy erilaisia ​​koodauslohkoja ja vaihtoehtoja VEX Robotics -järjestelmien ohjelmointiin, havainnollistaen ohjelmointiosion käyttäjien käytettävissä olevia ominaisuuksia.

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 jäännös = 1;
  while (jäännös > 0) {
    jäännös = a % b;
    a = b;
    b = jäännös;
  }
  paluu 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 jäännös = 1;
  while (jäännös > 0) {
    jäännös = a % b;
    a = b;
    b = jäännös;
  }
  paluu a;
}
	

Laita funktion prototyyppi (kutsutaan myös allekirjoitukseksi) ennen "kutsuvaa toimintolohkoa".


Entä jos haluat moduloida toimintoja eri tiedostoissa?

Vaihe 1: Luo otsikkotiedosto ja laita 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:

Näyttökuva ohjelmointiliittymästä, joka esittelee V5-luokan ominaisuuksia, mukaan lukien koodinpätkät ja työkalut kehittäjille, havainnollistaen ohjelmointiosiossa saatavilla olevia toimintoja.

Näyttökaappaus ohjelmointiin liittyvästä sisällöstä V5-kategorian kuvauksessa, joka esittelee tärkeimmät ominaisuudet ja toiminnot kehittäjille.

Kuvakaappaus V5-ohjelmointikategorian kuvauksesta, joka esittelee V5-alustan ohjelmointiin liittyviä tärkeimpiä ominaisuuksia ja toimintoja.

Tässä otsikkotiedostossa "common.h" (voit nimetä mitä haluat, kunhan se on aakkosnumeerinen ilman välilyöntiä.)

Vaihe 2: Luo erillinen cpp-tiedosto, esim. nimellä common.cpp

Kuvakaappaus ohjelmointiliittymästä, joka esittelee erilaisia ​​koodausvaihtoehtoja ja ominaisuuksia, havainnollistaen ohjelmointiosion V5-luokan kuvauksen toimivuutta ja asettelua.

//tämä on common.cpp-tiedosto

int getGCD(int a, int b) {
  int jäännös = 1;
  while (jäännös > 0) {
    jäännös = a % b;
    a = b;
    b = jäännös;
  }
  paluu a;
}

Siirrä funktio getGCD(...) tähän tiedostoon

#include "vex.h"
#include "common.h"
käyttäen nimiavaruutta 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: