[Powered by Google Translate] Funktioner är delar av kod som används inom ett större program att utföra en viss uppgift. De är också kända som förfaranden, subrutiner och underprogram, eftersom de är egentligen bara mini program inom program. Även om du kanske inte har märkt, du absolut ha använt funktioner som redan om du har programmerat i C När du skriver saker till skärmen med printf, du faktiskt använder en funktion som kallas printf. Likaså getInt och GetString är funktioner som CS50 ger dig. Som programmerare använder vi funktioner för ett antal skäl. Med funktioner för att utföra vanliga uppgifter som att skriva på skärmen och uppmanar användaren för inmatning sparar oss tid vid programmering. Det är inte nödvändigt att skriva kod för att göra samma saker eftersom de är redan gjort för oss. Det är inte ens nödvändigt för oss att förstå exakt hur dessa funktioner fungerar internt. Istället har vi bara veta hur man använder eller ringa dem i våra program. Det är också bra att skriva funktioner i större program även om du inte planerar att ha andra använder dem, bara för att dela upp större uppgiften. På så sätt ger du struktur koden ungefär som du skulle ge struktur åt en uppsats, och med riktigt stora projekt du aktiverar flera personer att arbeta på olika delar samtidigt eftersom det är tydligt var en persons arbete slutar och en annan är börjar. Funktioner fungerar normalt på 1 eller flera ingångar, sk argument eller parametrar, omvandla dessa ingångar till en utgång värde som sedan returneras. Men det är också möjligt att ha funktioner som inte använder någon input argument och inte tillbaka en utgång. Okej, nog med fluffiga grejer. Låt oss ta en titt på några riktiga funktioner i C. Här har vi en funktion som kallas torg som, tro det eller ej, beräknar kvadraten av insignalen. Låt oss dissekera syntaxen av det. Det första ordet du ser i funktion, int, anger returtyp av funktionen, dvs C-typ av funktionens utgång. Denna funktion kommer mata ett värde med typen int. Nästa ord du ser är namnet på funktionen, torget i det här fallet. Namnge funktioner korrekt är särskilt viktigt eftersom det är förmodligen den mest synliga dokumentation av vad funktionen gör. Det kan vara häftigt att namnge denna funktion Shazam eller Booyah, men det skulle inte berätta något om vad funktionen gör. Efter funktionsnamnet kommer ingångarna till funktionen, argumenten. De är listade i en uppsättning parenteser med både deras typ och ett namn som ska användas för dem i kroppen av funktionen. Square tar bara 1 argument, int till torget, som jag har beslutat att ge namnet X. Detta avslutar funktionen deklarationen eller prototyp. Klammerparenteserna kring resten av funktionen beteckna början och slutet av funktionen kroppen, definitionen av själva funktionen. Square är en ganska enkel funktion. Det har bara fick 1 rad, eftersom allt vi behöver göra är att multiplicera x med sig själv. Ordet tillbaka anger produktionsvärde och utlöser slutet av funktionen. För att använda fyrkantiga funktionen måste vi leverera lämpliga ingångar och sedan fånga utdata. Här ser du ett par sätt att göra det. Vi kan passera i en rå int som 6, eller så kan vi passera i en variabel som en. Observera att varje gång vi kallar kvadrat, Vi fånga utdata i en variabel och sedan skriva ut den. Däremot har vi inte lagra returvärdet i en variabel och sedan skriva ut. Vi kan bara skicka det direkt till printf som vi gör när vi fyrkant 10, men det betyder inte att vi inte har tillgång till returvärdet av torget 10 annanstans i koden. Låt oss titta på ett annat enkelt exempel. Den här gången kommer vi att sammanfatta 2 flyter ihop så att vi kan se hur en funktion ser ut när det har fått 2 ingångar istället för bara 1. Som ni ser, det är inte mycket annorlunda. Allt vi gör är att lägga i 2: a argumentet en flottör som heter B, till argumentlistan med ett komma för att skilja den från det första argumentet, flyta en. Så vår torget och funktioner summan är ganska lätt att förstå eftersom de är likvärdiga med funktioner som du har sett förut i matematik klass. Nu ska vi titta på en funktion som är lite annorlunda. Istället för att returnera ett värde, ändrar det en stat. Detta är känt som att ha en bieffekt. I detta program, printf_fudd_style funktionen har en returtyp som vi inte har sett förut, ogiltiga. Void används för att säga att en funktion inte returnerar någonting. Det finns inga variabler av typen void, så om du försöker returnera något från en funktion som printf_fudd_style, kompilatorn kommer skrika på dig. Inne printf_fudd_style ser vi att medan funktionen fortfarande utför en uppgift, nämligen byta alla skivor till Ws, den punkt i funktion är att modifiera strängen och sedan skriva ut det på skärmen, ändra tillståndet av programmet istället för att returnera ett resultat. Med hjälp av denna funktion är mycket lik använda vår torget och funktioner summan, förutom att vi sparar inte resultatet i en variabel eller passera det till en annan funktion eftersom det inte finns någon resultat att tala om. Så när vi kompilera och köra vårt Elmer Fudd programmet, du ser att "Du rascally kanin!" blir transformerad rätt till "Du Wabbit wascally!" Slutligen, det finns 1 mer funktion värt att diskutera eftersom du har använt det i varje C-program du någonsin skrivit, huvud. Main är en funktion mycket som alla andra. Det har fått en returtyp, ett namn, en lista med argument och en kropp. Avkastningen typ av huvud är alltid en int, och denna int används för att kommunicera status för programmet när den är klar. Har det köras, eller tog det slut tidigt på grund av ett fel? Återvänder till noll indikerar en lyckad körning, och returnerar en icke-noll-värde indikerar ett fel. Beroende på vilken typ av program du skriver, återvänder olika koder för olika fel kan vara till hjälp för personer som använder ditt program senare. Mains argument är lite mer komplicerat. Argumentlistan kan antingen vara tom, som vi visar genom att skriva tomrum mellan parenteserna, eller listan kan ha 2 argument: en int och en mängd char * s. Dessa används när programmet avser att använda argument passerade på kommandoraden när programmet anropas. Int argumentet kallas vanligtvis argc, och det är lika med längden av char * array, som kallas argv. Argv innehåller kommandoradsargumenten skickas till programmet. I en annan kort kommer vi att tala om hur du använder dessa variabler mer i detalj. För nu kan du gärna förklara huvudsakliga båda hållen. Jag väljer oftast att skriva ut den kortare vägen, utan argument, om möjligt. Nu när du vet hur man skriver funktioner, du på god väg att utveckla större och mer komplexa program. Mitt namn är Nate Hardison. Detta är CS50.