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 function-name() { Deklarace proměnných atd. Výrazy... //není nutný žádný explicitní návrat. }
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... //není nutný žádný explicitní návrat. } 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... //není nutný žádný explicitní návrat. }
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... návratová hodnota }
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í 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?
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). Zobrazí se chyba:použití nedeklarovaného identifikátoru 'getGCD'
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; } návrat 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; } vrátit 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 do tohoto souboru vložte 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:
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ř. nazvaný common.cpp
//toto je soubor common.cpp int getGCD(int a, int b) { int zbytek = 1; while (zbytek > 0) { zbytek = a % b; a = b; b = zbytek; } návrat a; }
Do tohoto souboru přesuňte funkci getGCD(...).
#include "vex.h" #include "common.h" pomocí jmenného prostoru vex; int main() { vexcodeInit(); Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) ); }
Nyní se vše, co máte v hlavním souboru cpp, bude skládat z následujícího
Reference: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