Pochopení syntaxe pro vytváření funkcí ve VEXcode Pro V5

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.

Definice funkce

Nyní, když jsme prošli několika ukázkami, podívejme se na obecnou formu definice funkce:

void název_funkce() {

	Deklarace proměnných atd.
	Výrazy...
	//explicitní návrat není nutný.
}

Funkce nevrací žádnou speciální hodnotu ani žádné vstupní parametry.

void název-funkce(proměnná-datového-typu) {

	Deklarace proměnných atd.
	Výrazy...
	//explicitní návrat není nutný.
}

Pokud chcete více proměnných, jednoduše použijte jako oddělovač ",":

Funkce nevrací žádnou speciální hodnotu, ale s jedním parametrem.

void název-funkce(proměnná-datového-typu, proměnná-datového-typu atd.) {

	Deklarace proměnných atd.
	Výrazy...
	//explicitní návrat není nutný.
}

Funkce nevrací žádnou speciální hodnotu, ale s více než jedním parametrem.

void název-funkce(proměnná-datového-typu, proměnná-datového-typu atd.) {

	Deklarace proměnných atd.
	Výrazy...
	vrátit návratovou hodnotu
}

Funkce vrací hodnotu určitého datového typu a s více než jedním vstupním parametrem.

Typreturnfunkce musí být stejný jako datový typ návratové hodnoty, kterou funkce vrací. Návratová hodnotamůže být konstantní hodnota nebo proměnná. Před ním musí být klíčové slovo „return.”

Typ návratu se řídí následujícími pravidly:

  • Pro návratový typ neexistují téměř žádná omezení, kromě pole. (Pole je další pokročilejší téma týkající se vytváření dat. Je to mimo rozsah tohoto článku a není zde zahrnuto.
  • Zadání, že návratový typ „void“ znamená, že není nutná žádná návratová hodnota. Klauzule „návrat“ je implicitní. To znamená, že musíte explicitně uvést „return“ na konci funkce „void“.

Vytvoření funkce před main() nebo po ní?

Kompilátor přečte váš soubor shora dolů. Na pořadí tedy záleží.

Vezměme si jako příklad jednoduchou funkci Greatest Common Denominator (GCD). Dostanete chybu:použití nedeklarovaného identifikátoru 'getGCD'

 Editor kódu VEXcode Pro V5 zobrazující hlavní funkci volající getGCD před její definicí, přičemž getGCD je zvýrazněn jako chyba nedeklarovaného identifikátoru.

Ve skutečnosti to platí, ať už je to z hlavního() nebo jiného volajícího funkčního bloku, tj. „volaný funkční blok“ musí předcházet „volajícímu funkčnímu bloku“.

Dvě možná řešení:

int getGCD(int a, int b) {
  int zbytek = 1;
  while (zbytek > 0) {
    zbytek = a % b;
    a = b;
    b = zbytek;
  }
  return a;
}


int main() {
	Brain.Screen.printAt(5,60, “GCD( %d, %d ) = %d”, getGCD(60, 100));
}
	

Přesuňte „volanou funkci“ nad „volající funkční blok“ v příkladu „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 zbytek = 1;
  while (zbytek > 0) {
    zbytek = a % b;
    a = b;
    b = zbytek;
  }
  return a;
}
	

Umístěte prototyp (nazývaný také podpis) funkce před „volající funkční blok“.


Co když chcete modularizovat funkce v různých souborech?

Krok 1: Vytvořte hlavičkový soubor a vložte do něj prototyp funkce.

např. vytvořte soubor s názvem „myFuncs.h“

Tento soubor záhlaví musíte „přidat“ do svého projektu před kompilací kódu. To umožňuje IDE VEXcode Pro V5 „být si vědom“ zahrnutí tohoto nového hlavičkového souboru předtím, než začne budovat váš projekt.

Zde je postup:

Rozhraní VEXcode Pro V5 s otevřenou kontextovou nabídkou pro zahrnutí složky a vybranou možností Nový soubor pro vytvoření hlavičkového souboru.

Okno Vytvořit nový soubor zobrazující vybranou možnost hlavičkového souboru C++ se zadaným názvem souboru common.h.

Editor kódu VEXcode Pro V5 zobrazující funkci getGCD definovanou v samostatném souboru common.cpp.

V tomto záhlaví souboru „common.h“ (můžete si pojmenovat, co chcete, pokud je alfanumerický bez mezery.)

Krok 2: Vytvořte samostatný soubor cpp, např. s názvem common.cpp

Okno Vytvořit nový soubor s vybranou možností zdrojového souboru C++ a zadaným názvem souboru common.cpp.

//toto je soubor common.cpp

int getGCD(int a, int b) {
  int remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}

Do tohoto souboru přesuňte funkci getGCD(...).

#include "vex.h"
#include "common.h"
using namespace vex;

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "NSD( %d, %d ) = %d", getNSD(60, 100));
}

Nyní se vše, co máte v hlavním souboru cpp, bude skládat z následujícího

Odkaz:https://api.vexcode.cloud/v5/html/namespacevex.html

Budoucí témata budou v budoucnu pokryta v pokročilejších částech knihovny VEX:

  • Předat podle hodnoty vs. předat podle reference
  • Předejte v poli
  • Předejte ve struktuře

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

Last Updated: