1 00:00:00,000 --> 00:00:02,830 >> HÖGTALARE 1: Låt oss skriva ett program som ber användaren om ett positivt 2 00:00:02,830 --> 00:00:05,950 heltal, n, och sedan skriver ut summan av alla tal 3 00:00:05,950 --> 00:00:07,980 mellan 1 och n. 4 00:00:07,980 --> 00:00:10,580 Tja, här har vi stora, som jag har redan skrivit i förväg. 5 00:00:10,580 --> 00:00:13,520 Och märker här på toppen av huvud, jag förklarar en int n. 6 00:00:13,520 --> 00:00:16,079 >> Jag då, inne i en gör samtidigt slinga, först skriva ut 7 00:00:16,079 --> 00:00:17,530 positivt heltal, tack. 8 00:00:17,530 --> 00:00:21,070 Fortsätt sedan jag för att få ett heltal användaren med CS50 bibliotekets get 9 00:00:21,070 --> 00:00:22,070 int funktion. 10 00:00:22,070 --> 00:00:26,410 Och sedan i min länge villkor här, jag se till att n är större än eller 11 00:00:26,410 --> 00:00:30,480 lika med 1 innan jag faktiskt gå vidare att göra något med det värdet. 12 00:00:30,480 --> 00:00:31,520 >> Vad gör jag nu? 13 00:00:31,520 --> 00:00:34,690 Tja, jag kallar en funktion som jag ska att ringa sigma, representant för 14 00:00:34,690 --> 00:00:37,700 kapital sigma som du kan ha återkallas från matematik klasser som 15 00:00:37,700 --> 00:00:40,860 anger att du vill summera något från ett värde till ett annat. 16 00:00:40,860 --> 00:00:44,540 Och vad som funktionen returnerar som dess returvärde, jag ska förvara 17 00:00:44,540 --> 00:00:46,500 i en variabel som kallas svar. 18 00:00:46,500 --> 00:00:50,280 >> Slutligen, i min sista raden i huvud, jag är kommer att skriva ut vad svaret är. 19 00:00:50,280 --> 00:00:52,840 Självklart har vi ännu inte genomfört denna funktion sigma. 20 00:00:52,840 --> 00:00:54,590 Så hur ska vi gå om att göra det? 21 00:00:54,590 --> 00:00:58,040 >> Jo, längst ner i min fil, jag är kommer att fortsätta att deklarera en funktion 22 00:00:58,040 --> 00:00:59,450 som returnerar en int. 23 00:00:59,450 --> 00:01:01,630 Och jag ska ringa som funktion sigma. 24 00:01:01,630 --> 00:01:06,340 Och jag kommer att ange att som indata funktionen accepterar också en int. 25 00:01:06,340 --> 00:01:09,800 Och jag ska kalla det bara, för att vara distinkt, m istället för n. 26 00:01:09,800 --> 00:01:12,120 Men vi kunde ha kallade det mest något som vi skulle vilja. 27 00:01:12,120 --> 00:01:14,930 >> Inne i kroppen av denna funktion är jag kommer att fortsätta att använda ett bekant 28 00:01:14,930 --> 00:01:16,420 konstruera, nämligen en slinga. 29 00:01:16,420 --> 00:01:19,010 Men jag kommer också att göra lite förstånd kontroll för att se till att 30 00:01:19,010 --> 00:01:22,340 användaren inte ger mig med ett nummer att jag inte förväntar sig. 31 00:01:22,340 --> 00:01:28,010 Framför allt kommer jag att göra om m är mindre än 1 och, något godtyckligt, 32 00:01:28,010 --> 00:01:31,280 Jag är helt enkelt att returnera 0 om numret är inte ett positivt 33 00:01:31,280 --> 00:01:32,800 heltal som jag förväntar mig. 34 00:01:32,800 --> 00:01:36,920 >> Sen kommer jag att deklarera en variabel kallas summa och initiera den till 0. 35 00:01:36,920 --> 00:01:40,810 Detta kommer i slutändan spara summan av alla nummer mellan 1 och m. 36 00:01:40,810 --> 00:01:43,550 Och då kommer jag att använda en bekant framåt loop-konstruktion. 37 00:01:43,550 --> 00:01:50,272 För int i får 1, är jag mindre än eller lika med m, i plus plus. 38 00:01:50,272 --> 00:01:54,010 Och sedan, i kroppen av detta slinga, jag helt enkelt ska göra summan 39 00:01:54,010 --> 00:01:56,350 är lika med summan plus jag. 40 00:01:56,350 --> 00:02:01,900 Eller, enklare, summa plus lika med i, som uppnår samma resultat. 41 00:02:01,900 --> 00:02:04,810 >> Och så slutligen, jag behöver gå tillbaka det belopp som jag har beräknats. 42 00:02:04,810 --> 00:02:07,640 Så jag lägger i gengäld summa. 43 00:02:07,640 --> 00:02:08,560 >> Nu är jag inte klar än. 44 00:02:08,560 --> 00:02:11,360 Jag måste lära C att detta funktion faktiskt existerar. 45 00:02:11,360 --> 00:02:14,400 Och så ovanpå min fil jag ska förklara vad vi har kallat en funktion 46 00:02:14,400 --> 00:02:18,270 prototyp, identisk med signaturen som jag använde för att definiera funktionen 47 00:02:18,270 --> 00:02:19,250 för en stund sedan. 48 00:02:19,250 --> 00:02:22,450 >> Specifikt, precis ovanför huvud, Jag kommer att skriva int 49 00:02:22,450 --> 00:02:26,080 sigma, int m, semikolon. 50 00:02:26,080 --> 00:02:29,240 Inte genomföra funktionen igen, helt enkelt förklara det. 51 00:02:29,240 --> 00:02:32,800 Om jag nu spara, kompilera och köra program, låt oss se vad jag får. 52 00:02:32,800 --> 00:02:37,460 Gör sigma 0 dot slash sigma 0. 53 00:02:37,460 --> 00:02:41,050 Och nu ska vi ge ett positivt heltal som 2, vilket borde ge mig 54 00:02:41,050 --> 00:02:45,920 tre, eftersom värdena mellan 1 och 2 är 1 plus 2 är lika med 3. 55 00:02:45,920 --> 00:02:47,300 Och faktiskt, det är vad jag får. 56 00:02:47,300 --> 00:02:49,940 >> Låt oss köra den igen, detta tid med, säg, 3. 57 00:02:49,940 --> 00:02:53,470 Så jag borde få 1 plus 2 plus 3 skulle ge mig 6. 58 00:02:53,470 --> 00:02:54,740 Och faktiskt, får jag 6. 59 00:02:54,740 --> 00:02:57,380 >> Och låt oss försöka en sista värde, säger 50. 60 00:02:57,380 --> 00:03:01,160 Och 1275 är vårt svar. 61 00:03:01,160 --> 00:03:02,253