Vai jūs bieži atrodaties, kopējot un ielīmējot kodu, lai to atkārtoti izmantotu dažādās programmas sadaļās?
Ja tā, ieteicams apsvērt iespēju izmantot funkcijas. Funkcijas ir ļoti spēcīga programmēšanas valodu iezīme. Tie var padarīt kodu efektīvāku, vieglāk lasāmu un elegantu.
Kas ir funkcija?
Funkcija ir koda bloks, kas veic uzdevumu. To var saukt un atkārtoti vairākas reizes. Jūs varat nodot informāciju funkcijai, un tā var nosūtīt informāciju atpakaļ. Daudzās programmēšanas valodās ir iebūvētas funkcijas, kurām varat piekļūt viņu bibliotēkā, bet jūs varat arī izveidot savas funkcijas.
Uzziniet rekursijas pamatus, kas ir būtisks, taču nedaudz prātu saliekošs rīks programmētājiem.
Kad jūs izsaucat funkciju, programma pārtrauc pašreizējo programmu un izpilda funkciju. Funkcija tiks nolasīta no augšas uz leju. Kad funkcija ir pabeigta, programma turpina darboties tur, kur tā bija apturēta. Ja funkcija atgrieza vērtību, šī vērtība tiks izmantota vietā, kur funkcija tika izsaukta.
Kā jūs rakstāt funkciju?
Funkciju rakstīšanai ir daudz dažādu veidu. Precīza sintakse būs atkarīga no valodas, kurā jūs programmējat. Mēs parādīsim piemērus Python, JavaScript un C ++, lai parādītu programmēšanas sintakses diapazonu.
Saistīts: Kāpēc valodu programmēšana nevar pastāvēt bez funkcijām?
Void funkcijas
Pirmais funkcijas veids, kuru mēs aplūkosim, ir tukšuma funkcija. Tas vienkārši nozīmē, ka funkcija neatgriež vērtību. Void funkcijas tiek izmantotas, lai pabeigtu instrukciju kopumu. Šajos piemēros tiek saukta mūsu uzrakstītā funkcija sveiki Funkcija. Funkcijas mērķis ir izdot "Hello World".
PADOMS: piešķiriet funkciju nosaukumiem, kas izskaidro to darbību. Tas būs vieglāk pārvaldīt funkcijas un lasīt kodu, jo jūsu programma kļūst sarežģītāka.
Python
def helloFunction ():
drukāt ("Sveika pasaule")
helloFunction ()
Atslēgvārds def tiek izmantots Python, lai definētu un izveidotu funkciju. Tālāk ir funkcijas nosaukums. Funkcijā sniegtie norādījumi seko nākamajā rindā aiz resnās zarnas. Vietai Python ir nozīme, tāpēc noteikti ievilkiet visu kodu, kuru vēlaties, lai jūsu funkcija palaistu. Iepriekš minētajā piemērā funkcija palaiž vienu koda rindu.
Jūsu labās acis, iespējams, to pamanīja izdrukāt () ir arī funkcija, bet to sauc citādi nekā mūsu funkciju. Turieties pie šīs domas tūlīt, mēs vēlāk izpētīsim funkcijas parametrus.
JavaScript
funkcija helloFunction () {
trauksme ("Sveika pasaule!");
}
sveiki Funkcija ();
JavaScript - atslēgvārds funkciju tiek izmantots, lai izveidotu funkcijas. Tālāk mums ir funkcijas nosaukums. Jebkurš kods, kas atrodas starp cirtainajām iekavām, tiek palaists, izsaucot funkciju.
Vieta JavaScript nav svarīga, taču funkcijā ir ierasts ievilkt kodu. Ievilkums atvieglo koda lasīšanu, kas ir ļoti svarīgi, jo jūsu programmas kļūst sarežģītākas.
Piezīme: Līdzīgi izdrukāt () iepriekšējā piemērā brīdinājums () ir arī funkcija.
C ++
# iekļaut
izmantojot nosaukumvietu std;
void helloFunction () {
cout << "Sveika pasaule!";
}
int main () {
sveiki Funkcija ();
atgriešanās 0;
}
Funkcijas C ++ tiek veidotas atšķirīgi. Funkcijas definēšanas atslēgvārda vietā pirmais vārds apraksta datu veidu, ko funkcija atgriezīs. Šajā gadījumā mūsu funkcija neatgriež datus, tāpēc dati ir nederīgi. Tālāk mums ir funkcijas nosaukums. Līdzīgi kā JavaScript, viss kods starp cirtainajām iekavām tiek palaists, kad tiek izsaukta funkcija. Arī līdzīgi kā JavaScript, atstarpe neietekmē funkciju, bet ir laba prakse.
Vai C ++ kodā pamanījāt citu funkciju? Jā, galvenais () ir funkcija. Izpildot C ++ programmu, jūs automātiski izsaucat galveno funkciju. Kad galvenā funkcija ir veiksmīgi pabeigta, tā atgriež 0, izejot no programmas, lai norādītu, ka programmas palaišanā nav kļūdu.
Funkcijas, kurām nepieciešamas vērtības
Void funkcijas ir lieliskas, ja atklājat, ka atkal un atkal rakstāt vienu un to pašu koda bitu. Bet tie var būt ierobežojoši. Tie ir statiski un nemainās. Viņi vienmēr izpilda tās pašas instrukcijas. Viens no veidiem, kā mēs varam palielināt to lietderību, ir dažādu vērtību nodošana funkcijai.
Jūs būsiet pamanījis, ka iekavās ir norādīts visu mūsu funkciju nosaukums. Iekavās mēs varam paziņot, ka dati ir nepieciešami, lai palaistu mūsu funkciju. Tad funkcijā mēs varam izmantot mūsu funkcijai nodotos datus. Vēlreiz apskatīsim iepriekšējos piemērus, bet šoreiz nododiet frāzi, ka mēs vēlamies, lai mēs tiktu izdoti.
Python
def helloFunction (newPhrase):
drukāt (newPhrase)
helloFunction ("Mūsu jaunā frāze")
Tagad starp iekavām mūsu funkcija paziņo, ka tās darbībai nepieciešams mainīgais. Mēs esam nosaukuši mainīgo newPhrase un tagad to var izmantot mūsu funkcijās. Izsaucot funkciju, mums jānodod pieprasītā informācija, ievietojot to starp iekavām. Tādas pašas izmaiņas tika veiktas arī JavaScript.
JavaScript
funkcija helloFunction (newPhrase) {
brīdinājums (newPhrase);
}
helloFunction ("Mūsu jaunā frāze");
C ++
# iekļaut
izmantojot nosaukumvietu std;
void helloFunction (string newPhrase) {
cout << newPhrase;
}
int main () {
helloFunction ("Mūsu jaunā frāze");
atgriešanās 0;
}
Mūsu C ++ funkcijai bija nepieciešama nedaudz vairāk informācijas. Mēs zinām, ka jūsu funkcija vēlas virknes datus, taču tas nav pietiekami labs C ++. Veidojot funkciju, jums jānorāda, kāda veida dati nepieciešama jūsu funkcijai. Ja nesūtāt pareiza veida datus, funkcija radīs kļūdu.
Tas varētu šķist nedaudz kaitinoši, taču stingras valodas bieži var ietaupīt galvassāpes. Ja JavaScript rakstāt funkciju, kurai nepieciešams vesels skaitlis, bet numurs tiek nosūtīts kā virkne, tā var izveidot kļūdu, kuru ir ļoti grūti izsekot.
Saistīts: 5 funkcionālās programmēšanas valodas, kas jums jāzina
Funkcijas, kas atgriež vērtību
Pēdējā funkcijas spēja, kuru mēs aptversim, ir datu atgriešana. Tas ir īpaši vērtīgi, ja vēlaties mainīt datus pirms to izmantošanas. Lai gan jūs varētu uzrakstīt šo teksta rindiņu, ja daudzkārt izmantosiet tos pašus aprēķinus, piemēram, pārveidojot imperiālu par metriku, varētu būt lietderīgāk to rakstīt kā funkciju. Mūsu piemērs būs vienkāršāks. Mūsu funkcijai būs nepieciešami divi veseli skaitļi, un tā atgriezīs summu.
Python
def pievienošanaFunkcija (a, b):
atgriezt a + b
drukāt (pievienojotFunction (2, 4))
Šajā piemērā mūsu funkcijai nepieciešami divi mainīgie, nevis viens. Mēs to norādām, atdalot mainīgo nosaukumus ar komatu. Atslēgvārds atgriešanās liek funkcijai atgriezt šādus datus, šajā gadījumā 2 + 4 vai 6. Mēs izsaucam funkciju iekšpusē izdrukāt () funkciju.
Kad mūsu programma nonāca pie šīs līnijas, tā būtu apstājusies, izpildījusi mūsu funkciju un pēc tam turpinājusi it kā pievienošanaFunkcija (2, 4) faktiski bija tikai atgrieztā vērtība 6.
JavaScript
JavaScript kods ir ļoti līdzīgs Python kodam. Galvenā atšķirība ir tā, ka funkcija tiek izsaukta brīdinājumā.
funkcija addFunction (a, b) {
atgriezt a + b;
}
brīdinājums (pievienojotFunction (2, 4));
C ++
# iekļaut
izmantojot nosaukumvietu std;
int pievienojotFunction (int a, int b) {
atgriezt a + b;
}
int main () {
cout << pievienojotFunction (2, 4);
atgriešanās 0;
}
C ++ kods darbojas līdzīgi, taču, kā parasti, nepieciešams mazliet vairāk informācijas. Pirmkārt, mums jāsaka, kāda veida datus atgriezīs mūsu funkcija. Jūs to redzēsiet spēkā neesošs ir mainīts uz int. Tas nozīmē, ka tā vietā, lai atgrieztu datus, mūsu funkcija atgriezīs veselu skaitli. Papildus tam kods ir līdzīgs jau izpētītajam kodam.
Pārvaldiet savas funkcijas
Jautri par funkcijām ir tas, ka funkcijas var izsaukt citas funkcijas. Viņi pat var sevi saukt! Bet ar lielu spēku nāk liela atbildība. Nepazīstieties, veidojot kodu ar funkcijām, kas izsauc citas funkcijas, kas izsauc vēl citas funkcijas.
Kā jau minēts, katru reizi, kad tiek izsaukta funkcija, programma tiek apturēta, kamēr tā darbojas. Tas nozīmē, ka programma tiek turēta aktīvajā atmiņā. Ja izsaucat vēl vairākas funkcijas, tās neizpildot, tiek izmantota aktīvāka atmiņa. Ja neesat piesardzīgs, jūsu programma var izkļūt no rokas.
Globālie mainīgie varētu šķist vienkārši, taču tie bieži ir tik daudz kļūdu cēlonis. Lūk, kā vienkāršot kodu, izmantojot iekapsulēšanu.
- Programmēšana
- Programmēšana
- Funkcionālā programmēšana
Dž. Sītons ir zinātņu rakstnieks, kas specializējas sarežģītu tēmu sadalīšanā. Viņai ir doktora grāds Saskačevanas universitātē; viņas pētījumi koncentrējās uz spēļu balstītas mācīšanās izmantošanu, lai palielinātu studentu iesaistīšanos tiešsaistē. Kad viņa nestrādā, jūs atradīsit viņu lasot, spēlējot videospēles vai dārzkopībā.
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!
Vēl viens solis !!!
Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.