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.
Funkcijas definīcija
Tagad, kad esam izpētījuši dažus paraugus, apskatīsim funkcijas definīcijas vispārējo formu:
void function-name() {
Mainīgo deklarācijas utt.
Izteiksmes...
//nav nepieciešama tieša atgriešanās.
}
Funkcija neatgriež ne īpašu vērtību, ne ienākošos parametrus.
void function-name(datu tipa mainīgais) {
Mainīgo deklarācijas utt.
Izteiksmes...
//nav nepieciešama tieša atgriešanās.
Ja vēlaties vairākus mainīgos,
izmantojiet "," kā atdalītāju:
Funkcija neatgriež īpašu vērtību, bet ar vienu parametru.
void function-name(datu tipa mainīgais, datu tipa mainīgais utt.) {
Mainīgo deklarācijas utt.
Izteiksmes...
//nav nepieciešama tieša atgriešanās.
}
Funkcija neatgriež īpašu vērtību, bet ar vairāk nekā vienu parametru.
void function-name(datu tipa mainīgais, datu tipa mainīgais utt.) {
Mainīgo deklarācijas utt.
Izteiksmes...
atgriezties atgriešanas vērtība
}
Funkcija atgriež noteikta datu tipa vērtību un ar vairāk nekā vienu parametru.
Funkcijasatgriešanastipam ir jābūt tādam pašam kā funkcijas atgriežamās vērtības datu tipam. Atgriešanas vērtība, betvar būt konstante vai mainīgais. Pirms tā jāieraksta atslēgvārds “return.”
Atgriešanas veidu regulē šādi noteikumi:
- Atgriešanas veidam gandrīz nav ierobežojumu, izņemot masīvu. (Masīvs ir vēl viena detalizētāka tēma par datu izveidi. Tas ir ārpus šī raksta darbības jomas, un tas šeit nav aplūkots.
- Norādot, ka atgriešanas veids “void” nozīmē, ka atgriešanas vērtība nav nepieciešama. Klauzula “atgriešanās” ir netieša. Tas nozīmē, ka funkcijas “neesošā” beigās ir skaidri jānorāda “atgriešanās”.
Vai izveidot funkciju pirms vai pēc main()?
Kompilators nolasa jūsu failu no augšas uz leju. Tādējādi secībai ir nozīme.
Ņemsim kā piemēru vienkāršo lielāko kopsaucēja (GCD) funkciju. Jūs saņemsiet kļūdu:tiek izmantots nedeklarēts identifikators 'getGCD'
Faktiski tā ir taisnība neatkarīgi no tā, vai tas ir no galvenā ( ) vai cita izsaucošā funkciju bloka, ti, “izsauktajam funkciju blokam” ir jābūt pirms “izsaukšanas funkciju bloka”.
Divi iespējamie risinājumi:
int getGCD(int a, int b) {
int atlikums = 1;
while (atlikums > 0) {
atlikums = a % b;
a = b;
b = atlikums;
}
return a;
}
int main() {
Brain.Screen.printAt(5,60, “GCD( %d, %d ) = %d”, getGCD(60, 100));
}
Pārvietojiet “izsaukto funkciju” virs “izsaukšanas funkciju bloka”, piemērā “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 atlikums = 1;
while (atlikums > 0) {
atlikums = a % b;
a = b;
b = atlikums;
}
return a;
}
Ievietojiet funkcijas prototipu (sauktu arī par parakstu) pirms “izsaukšanas funkciju bloka”.
Ko darīt, ja vēlaties modularizēt funkcijas dažādos failos?
1. darbība: izveidojiet galvenes failu un ievietojiet šajā failā funkcijas prototipu.
piemēram, izveidojiet failu ar nosaukumu “myFuncs.h”
Pirms koda apkopošanas šis galvenes fails ir “jāpievieno” savam projektam. Tas ļauj VEXcode Pro V5 IDE “apzināties” par šī jaunā galvenes faila iekļaušanu, pirms tas sāk veidot jūsu projektu.
Lūk, kā:



Šajā galvenes failā “common.h” (varat nosaukt visu, ko vēlaties, ja vien tas ir burtciparu un bez atstarpes).
2. solis: Izveidojiet atsevišķu cpp failu, piemēram, ar nosaukumu common.cpp

//šis ir common.cpp fails
int getGCD(int a, int b) {
int atlikums = 1;
while (atlikums > 0) {
atlikums = a % b;
a = b;
b = atlikums;
}
return a;
}
Pārvietojiet funkciju getGCD(...) šajā failā
#include "vex.h"
#include "common.h"
izmantojot namespace vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD( %d, %d ) = %d", getGCD(60, 100));
}
Tagad viss, kas jums ir galvenajā cpp failā, sastāvēs no tālāk norādītā
Atsauce:https://api.vexcode.cloud/v5/html/namespacevex.html
Nākotnes tēmas turpmāk tiks apskatītas progresīvākās VEX bibliotēkas sadaļās:
- Izlaist pēc vērtības un nokārtot pēc atsauces
- Iet masīvā
- Iet konstrukcijā