1 00:00:00,000 --> 00:00:05,830 2 00:00:05,830 --> 00:00:08,650 >> JASON Hirschhorn: Välkommen till CS50 avsnitt, alla. 3 00:00:08,650 --> 00:00:11,430 Mitt namn är Jason Hirschhorn. 4 00:00:11,430 --> 00:00:15,850 Jag är en hel del yours TFs, men en hel del folk kommer förhoppningsvis att ansluta oss 5 00:00:15,850 --> 00:00:20,420 nätet, förlängning elever eller studenter försöker titta igenom avsnittet om de 6 00:00:20,420 --> 00:00:22,830 missade sitt avsnitt som vecka eller bara fånga upp om de ville 7 00:00:22,830 --> 00:00:24,510 att se över en del material. 8 00:00:24,510 --> 00:00:30,060 >> Så enligt den kursplan som alla av er har läst, korrigera? 9 00:00:30,060 --> 00:00:31,390 Jag ser en hel del av huvudet nickar. 10 00:00:31,390 --> 00:00:34,220 Sektioner ger dig möjligheter att utforska banans 11 00:00:34,220 --> 00:00:37,420 material i en mer intim miljö, liksom dyka in 12 00:00:37,420 --> 00:00:38,810 praktiska aktiviteter. 13 00:00:38,810 --> 00:00:41,230 >> Så det är i princip vad vi kommer att göra varje vecka. 14 00:00:41,230 --> 00:00:45,090 Vi kommer att gå igenom vad vi har bestämdes vara den viktigaste 15 00:00:45,090 --> 00:00:49,170 ämnen som behandlas i föreläsning, och de sannolikt också mest användbara och 16 00:00:49,170 --> 00:00:52,780 mest sannolikt att komma upp på problemsamlingar och i frågesporter, och i din kodning 17 00:00:52,780 --> 00:00:53,970 liv utanför CS50. 18 00:00:53,970 --> 00:00:57,260 Så vi kommer att gå in i dessa ämnen, diskutera dem, gå igenom dem, 19 00:00:57,260 --> 00:01:00,660 besvara alla frågor ni har, och då vi kommer att göra en hel del 20 00:01:00,660 --> 00:01:02,250 praxis problem i kodning. 21 00:01:02,250 --> 00:01:04,239 >> Du tog alla bärbara datorer, vilket är fantastiskt. 22 00:01:04,239 --> 00:01:05,710 Detta är en datavetenskap klass. 23 00:01:05,710 --> 00:01:10,070 Men en hel del av de övningar vi gör, du behöver inte din bärbara datorer för. 24 00:01:10,070 --> 00:01:11,720 Du kan göra dem på ett papper. 25 00:01:11,720 --> 00:01:13,580 Det är hur du ska göra dem på frågesporter. 26 00:01:13,580 --> 00:01:16,450 Och faktiskt, det är ett bra sätt att verkligen vet att du hur man gör 27 00:01:16,450 --> 00:01:19,720 något om du inte har Check 50 till förlita sig på eller göra för att förlita sig på, berättar 28 00:01:19,720 --> 00:01:20,620 du gjorde något fel. 29 00:01:20,620 --> 00:01:25,670 >> Så du är välkommen till kod på apparat eller run.cs50.net, som är 30 00:01:25,670 --> 00:01:29,770 annat verktyg som låter dig koda på nätet, men jag skulle också rekommendera, om 31 00:01:29,770 --> 00:01:32,280 du har inte provat det, med hjälp av ett ark av papper och försöker dessa metoder 32 00:01:32,280 --> 00:01:33,640 problem på ett pappersark. 33 00:01:33,640 --> 00:01:35,330 Eftersom igen, det är i slutändan vad du kommer att bli 34 00:01:35,330 --> 00:01:37,430 ombedd att göra på frågesporter. 35 00:01:37,430 --> 00:01:44,080 >> Så låt oss börja med våra agenda för idag. 36 00:01:44,080 --> 00:01:47,710 Vi kommer att gå igenom några normer för vår avdelning, då vi kommer att dyka 37 00:01:47,710 --> 00:01:51,180 in matriser, funktioner och kommandoraden argument, vilket är vad ni 38 00:01:51,180 --> 00:01:56,200 har täckt den gångna veckans föreläsning och sedan måndag, och vad du kommer att täcka 39 00:01:56,200 --> 00:01:57,330 mer i morgon. 40 00:01:57,330 --> 00:01:59,060 Och slutligen, vi ska att prata om pset2. 41 00:01:59,060 --> 00:02:03,640 Om jag kunde få en handuppräckning om du har inte tittat på problemet set två 42 00:02:03,640 --> 00:02:04,890 specifikation. 43 00:02:04,890 --> 00:02:07,060 44 00:02:07,060 --> 00:02:08,120 Vi säger alla. 45 00:02:08,120 --> 00:02:09,419 Fantastic. 46 00:02:09,419 --> 00:02:12,070 >> Vi pratar om problemsamlingar i lite, men om du läser den problembild 47 00:02:12,070 --> 00:02:14,340 specifikation, det är allt du behöver göra. 48 00:02:14,340 --> 00:02:18,370 Om du läser detta innan du kommer till klass och avsnitt på tisdag, kommer du 49 00:02:18,370 --> 00:02:19,220 vara en bra position. 50 00:02:19,220 --> 00:02:21,680 Vi kan gå igenom problemet set, vilket är vad vi tänker 51 00:02:21,680 --> 00:02:22,090 att göra i slutet. 52 00:02:22,090 --> 00:02:23,500 Vi kommer att gå igenom logiken, se till 53 00:02:23,500 --> 00:02:24,710 alla är på samma sida. 54 00:02:24,710 --> 00:02:28,650 >> Jag vill att du ska kunna lämna tisdag känsla mycket bekväm med vad du 55 00:02:28,650 --> 00:02:31,560 behöver göra för denna veckas problem set, och om du inte gör det kommer jag gärna 56 00:02:31,560 --> 00:02:33,050 stanna efter och arbeta med er. 57 00:02:33,050 --> 00:02:36,850 Men det är en sak som du måste göra men jag tror skulle vara riktigt smart, 58 00:02:36,850 --> 00:02:40,500 bara att läsa problemet set specifikation av klassen på tisdag, 59 00:02:40,500 --> 00:02:42,640 som det låter som en Många av er gjorde. 60 00:02:42,640 --> 00:02:45,810 >> Jag börjar med en agenda varje klass så du vet vart vi ska. 61 00:02:45,810 --> 00:02:49,520 Detta är också till hjälp för personer som tittar online eftersom varje avsnitt 62 00:02:49,520 --> 00:02:53,540 är färgkodade, så om du vill komma tillbaka och bara titta på 10 minuter i stället 63 00:02:53,540 --> 00:02:56,950 än hela 90-minuters avsnitt, du kan bara gå till de färgkodade avsnitt 64 00:02:56,950 --> 00:02:57,890 och titta på den delen. 65 00:02:57,890 --> 00:03:01,510 Så jag har försökt att bryta upp dem i fin moduler som gör att du kan - 66 00:03:01,510 --> 00:03:03,960 om du vill komma tillbaka och se, eller andra elever som är precis 67 00:03:03,960 --> 00:03:05,350 tittar på en avdelning för att granska - 68 00:03:05,350 --> 00:03:08,130 att hitta specifik sak som de vill uppmärksamma 69 00:03:08,130 --> 00:03:10,480 och lära sig mer om. 70 00:03:10,480 --> 00:03:11,390 Söt. 71 00:03:11,390 --> 00:03:12,180 >> Normer. 72 00:03:12,180 --> 00:03:13,680 Jag är en FOP ledare på campus. 73 00:03:13,680 --> 00:03:14,900 Jag vet inte om någon gjorde FOP. 74 00:03:14,900 --> 00:03:16,280 Var det någon som gör FOP? 75 00:03:16,280 --> 00:03:17,100 En person gjorde FOP. 76 00:03:17,100 --> 00:03:18,430 Två personer gjorde FOP. 77 00:03:18,430 --> 00:03:19,250 Awesome. 78 00:03:19,250 --> 00:03:22,360 Så FOP är det första året Outdoor Orientering Program. 79 00:03:22,360 --> 00:03:27,240 Vi tar freshmen i skogen och göra de mest magiska upplevelser 80 00:03:27,240 --> 00:03:28,830 sina liv, rätt? 81 00:03:28,830 --> 00:03:29,220 Yeah. 82 00:03:29,220 --> 00:03:30,080 Låter lagom. 83 00:03:30,080 --> 00:03:36,360 >> Så jag ville bara starta vår allra första avsnitt med att diskutera vissa normer 84 00:03:36,360 --> 00:03:38,860 för klassen och vår relation eftersom jag tror 85 00:03:38,860 --> 00:03:40,010 de är mycket viktiga. 86 00:03:40,010 --> 00:03:43,630 Först och främst, så de av er som är min avdelning har fått och 87 00:03:43,630 --> 00:03:47,150 har diskuterats i det e-post, jag älskar det här. 88 00:03:47,150 --> 00:03:48,130 Detta är min favorit del av året. 89 00:03:48,130 --> 00:03:49,100 Jag har varit så upphetsad. 90 00:03:49,100 --> 00:03:50,040 Jag har varit här i flera timmar i dag. 91 00:03:50,040 --> 00:03:54,560 Jag har inte lämnat denna byggnad förutom att gå äta eftersom jag älskar CS50 avsnitt, jag 92 00:03:54,560 --> 00:03:58,620 älskar undervisning, jag älskar att arbeta med er. 93 00:03:58,620 --> 00:04:02,000 >> En av mina högsta prioriteringar, om inte min prioritet nummer ett, inte bara för 94 00:04:02,000 --> 00:04:05,130 denna klass men med min andra klasser och extracurriculars, är att 95 00:04:05,130 --> 00:04:09,350 stödja er, och hjälpa er, och göra mitt bästa för att se till att du 96 00:04:09,350 --> 00:04:13,780 killar har en underbar, rolig, produktiv, engagerande, spännande 97 00:04:13,780 --> 00:04:15,250 uppleva i denna klass. 98 00:04:15,250 --> 00:04:16,190 Det är vad jag strävar efter att. 99 00:04:16,190 --> 00:04:17,959 Det är därför jag älskar att göra det. 100 00:04:17,959 --> 00:04:20,190 Det är mitt nummer en sak, stödja er. 101 00:04:20,190 --> 00:04:25,110 Om du har några frågor om föreläsningen, problemet set, avsnitt, 102 00:04:25,110 --> 00:04:28,830 liv, även om du vill prata om liv, är du välkommen att nå ut. 103 00:04:28,830 --> 00:04:31,210 >> Du har mitt mobilnummer, du har min e-post 104 00:04:31,210 --> 00:04:32,910 adress, du har mitt Gchat. 105 00:04:32,910 --> 00:04:37,540 Du kan kontakta mig på någon eller alla av dem när, men förmodligen inte kommer att få 106 00:04:37,540 --> 00:04:38,720 en insats närhelst. 107 00:04:38,720 --> 00:04:41,020 Jag försöker och komma tillbaka inom 24 timmar. 108 00:04:41,020 --> 00:04:44,760 Ofta kommer det att vara inom 20 minuter eller 24 minuter. 109 00:04:44,760 --> 00:04:46,110 Jag borde ha sagt att för att göra det parallellt. 110 00:04:46,110 --> 00:04:48,840 Men du kommer att få ett svar ganska snabbt. 111 00:04:48,840 --> 00:04:54,220 >> Om du texten mig en timme innan problem set är beroende, kommer jag lugna er 112 00:04:54,220 --> 00:04:57,660 ner och göra djupandningsövningar med dig, men om du inte har startat, 113 00:04:57,660 --> 00:05:00,270 du förmodligen inte kommer att sluta, och Jag kan inte riktigt hjälpa dig där ute 114 00:05:00,270 --> 00:05:01,710 även om jag ska försöka mitt bästa. 115 00:05:01,710 --> 00:05:03,920 Så jag kommer att göra allt Jag kan stödja dig. 116 00:05:03,920 --> 00:05:07,980 Tveka inte att nå ut om det är i avsnittet igen, kontorstid 117 00:05:07,980 --> 00:05:09,150 om du ser mig, eller ens utanför. 118 00:05:09,150 --> 00:05:11,800 Jag är glad att inrätta en tid för att träffa och arbeta igenom problemen 119 00:05:11,800 --> 00:05:14,410 med eller gå över material. 120 00:05:14,410 --> 00:05:15,990 Så det är nummer ett, support. 121 00:05:15,990 --> 00:05:17,940 Jag ska göra allt jag kan stödja dig. 122 00:05:17,940 --> 00:05:21,520 >> Nummer två, möte i mitten. 123 00:05:21,520 --> 00:05:24,760 Så mycket som jag skulle vilja vara, jag inte allsmäktig eller allsmäktig eller 124 00:05:24,760 --> 00:05:28,410 allvetande, så jag vet inte alla tid om vad jag gör är att få 125 00:05:28,410 --> 00:05:33,410 över, om hur jag undervisar ämne hjälper dig att lära dig det, eller om du 126 00:05:33,410 --> 00:05:36,120 är förvirrad på ett ämne men inte räcka upp handen eller fråga mig 127 00:05:36,120 --> 00:05:37,390 eller skicka mig ett mail. 128 00:05:37,390 --> 00:05:42,150 Eller även om du, återigen, är förvirrad om något på problemet set. 129 00:05:42,150 --> 00:05:44,240 Om du inte når ut till mig, Jag kan inte veta det säkert. 130 00:05:44,240 --> 00:05:46,950 Jag ska göra mitt bästa för att checka in på er, se till att allt är 131 00:05:46,950 --> 00:05:51,170 går bra, försöker lära saker på ett sätt som kommer att bidra till de flesta av 132 00:05:51,170 --> 00:05:54,910 dina inlärningsstilar, men om det finns något jag kan göra, låt mig veta. 133 00:05:54,910 --> 00:05:58,520 >> Längs dessa linjer, om du vill ha lite hjälp med problemet set, jag är mer 134 00:05:58,520 --> 00:05:59,700 än glada att hjälpa dig med problemet set. 135 00:05:59,700 --> 00:06:02,300 Vi kommer att göra en hel del att mot den andra 136 00:06:02,300 --> 00:06:03,460 hälften av detta avsnitt. 137 00:06:03,460 --> 00:06:06,040 Men om du inte har läst det problemet sätter tillbaka och har inte sett på promenad 138 00:06:06,040 --> 00:06:09,310 igenom och har inte sett shortsen och förväntar mig att lära dig 139 00:06:09,310 --> 00:06:13,260 allt som har videofilmade på nätet eller att du kan hitta på CS50 140 00:06:13,260 --> 00:06:16,720 Studien, det är inte riktigt rättvist att mig eller till dina andra kamrater. 141 00:06:16,720 --> 00:06:20,440 142 00:06:20,440 --> 00:06:25,730 >> Så snälla, jag är mer än lycklig att hjälpa dig, men ni fick träffa mig 143 00:06:25,730 --> 00:06:27,230 mitten. 144 00:06:27,230 --> 00:06:30,100 Vi har massor av resurser för du finns på CS50. 145 00:06:30,100 --> 00:06:31,230 Jag nämnde några av dem. 146 00:06:31,230 --> 00:06:32,960 Ta nytta av dem. 147 00:06:32,960 --> 00:06:35,140 Om du är förvirrad, jag är mer än nöjd att hjälpa dig att förklara dem i 148 00:06:35,140 --> 00:06:39,290 ett annat sätt, men det är inte rättvist om studenter visar upp på kontorstid, 149 00:06:39,290 --> 00:06:42,530 har inte startat något, och det är Torsdag kväll och de väntar 150 00:06:42,530 --> 00:06:45,880 TF att gå dem genom varje enskild sak för problem som beror 151 00:06:45,880 --> 00:06:47,140 vid middagstid nästa dag. 152 00:06:47,140 --> 00:06:48,300 Vettigt? 153 00:06:48,300 --> 00:06:50,890 Återigen, vänligen träffa oss i mitten. 154 00:06:50,890 --> 00:06:53,230 >> Och slutligen, höga förväntningar. 155 00:06:53,230 --> 00:06:58,010 Jag kommer att vara betygssättning alla som är I min avdelning, eller scoring din 156 00:06:58,010 --> 00:06:59,020 problemsamlingar. 157 00:06:59,020 --> 00:07:01,240 Du har inte gått tillbaka problem ange noll eller ett ännu. 158 00:07:01,240 --> 00:07:02,250 Vi ber om ursäkt för det. 159 00:07:02,250 --> 00:07:04,970 Det tog oss ett tag att slutligen reglera sektioner och nu 160 00:07:04,970 --> 00:07:05,560 Vi kan börja betygssättning. 161 00:07:05,560 --> 00:07:09,560 >> Jag ska få dem tillbaka till dig så snart som möjligt. 162 00:07:09,560 --> 00:07:11,890 De är några av mina advisees ute. 163 00:07:11,890 --> 00:07:14,150 Jag ska få dem tillbaka till dig så snart som möjligt. 164 00:07:14,150 --> 00:07:18,046 Och för problem set två, vi ska vara på schema och vi börjar få dem 165 00:07:18,046 --> 00:07:20,440 att du ganska snabbt efter du sätter dem i. 166 00:07:20,440 --> 00:07:24,130 >> När du får ditt problem ställa tillbaka, du kommer att få poäng, som ni vet från 167 00:07:24,130 --> 00:07:28,150 läser kursplanen - korrekthet, utformning, omfattning och stil poäng. 168 00:07:28,150 --> 00:07:29,760 Du får också kommentarer. 169 00:07:29,760 --> 00:07:32,160 Kommentarerna är viktigare än poängen. 170 00:07:32,160 --> 00:07:33,780 Jag tror att det är säkert att säga att. 171 00:07:33,780 --> 00:07:37,930 >> Scores är bara ett nummer från ett till fem. 172 00:07:37,930 --> 00:07:38,930 Det är svårt att läsa in dem. 173 00:07:38,930 --> 00:07:40,720 Det är svårt att förbättra sig från dem. 174 00:07:40,720 --> 00:07:44,460 Men synpunkterna kommer att peka ut specifika saker du gjorde bra eller områden 175 00:07:44,460 --> 00:07:48,360 du kan förbättra och ge dig några idéer för framtiden eller alternativa 176 00:07:48,360 --> 00:07:49,160 sätt att göra saker. 177 00:07:49,160 --> 00:07:52,270 >> Så snälla, snälla, snälla läs igenom kommentarerna. 178 00:07:52,270 --> 00:07:54,190 Jag lägger mycket tid på dessa synpunkter. 179 00:07:54,190 --> 00:07:57,190 Vänligen läs igenom dem och inte bara bläddra ner till botten av 180 00:07:57,190 --> 00:08:01,890 PDF, leta efter din poäng, eller gå online och hitta din poäng, och sedan ignorera 181 00:08:01,890 --> 00:08:02,800 kommentarerna. 182 00:08:02,800 --> 00:08:03,910 Det är inte hur du är kommer att bli bättre. 183 00:08:03,910 --> 00:08:06,550 Det är inte hur du ska öka dina poäng i slutändan, precis 184 00:08:06,550 --> 00:08:07,340 genom att titta på poängen. 185 00:08:07,340 --> 00:08:08,760 Vänligen titta på dessa synpunkter. 186 00:08:08,760 --> 00:08:13,240 >> Och längs raden av höga förväntningar, igen, som jag sa, du 187 00:08:13,240 --> 00:08:14,260 kan görs från ett till fem. 188 00:08:14,260 --> 00:08:17,120 Tvåor, treor och fyror är stora majoriteten av poäng 189 00:08:17,120 --> 00:08:17,940 du kommer att få. 190 00:08:17,940 --> 00:08:20,180 Ones och femmor är båda riktigt sällsynta. 191 00:08:20,180 --> 00:08:21,720 Det finns alltid saker vi kan göra bättre. 192 00:08:21,720 --> 00:08:23,490 När jag koda ett program, det finns alltid något jag 193 00:08:23,490 --> 00:08:24,800 kunde ha gjort bättre. 194 00:08:24,800 --> 00:08:28,740 >> Så istället för att säga att du får fem hela tiden på allt och gjorde 195 00:08:28,740 --> 00:08:31,960 allt perfekt, tror jag inte någon av oss verkligen tror att vi - eller 196 00:08:31,960 --> 00:08:34,830 Förhoppningsvis gör vi inte allt perfekt hela tiden. 197 00:08:34,830 --> 00:08:37,010 Så bli inte orolig om du fick inte en fem. 198 00:08:37,010 --> 00:08:40,470 En fem inte mappa inte på en A, en fyra inte mappa inte på en B, en tre gör 199 00:08:40,470 --> 00:08:42,950 inte kartan på ett C. Det är inte hur poängen fungerar. 200 00:08:42,950 --> 00:08:48,140 >> Som David har sagt många gånger, terminen slut alla dina poäng och 201 00:08:48,140 --> 00:08:53,390 input från mig, din TF, träffas och fastställa ett slutbetyg för dig. 202 00:08:53,390 --> 00:08:56,760 Men återigen, det är inte fem, A, fyra, B, et cetera. 203 00:08:56,760 --> 00:09:01,150 Så jag kommer att ha höga förväntningar för er. 204 00:09:01,150 --> 00:09:03,670 Jag kommer att förvänta sig bra problem uppsättningar och jag kommer att ge 205 00:09:03,670 --> 00:09:05,010 dig feedback som sådan. 206 00:09:05,010 --> 00:09:07,430 Och det kommer inte att betyda att du är kommer att få en sämre kvalitet. 207 00:09:07,430 --> 00:09:09,760 Du är graderade i termer av dina framsteg från vecka 208 00:09:09,760 --> 00:09:11,260 noll till kursens slut. 209 00:09:11,260 --> 00:09:17,190 >> Och slutligen, i termer av hög förväntningar i klassen, jag älskar när 210 00:09:17,190 --> 00:09:18,460 människor deltar. 211 00:09:18,460 --> 00:09:23,180 Jag förstår vissa människor känner sig mer eller mindre bekväm deltagande. 212 00:09:23,180 --> 00:09:26,050 Andra människor deltar inte genom att höja sin hand och 213 00:09:26,050 --> 00:09:27,320 pratar hela tiden. 214 00:09:27,320 --> 00:09:30,570 Men vi i denna klass kommer att vara gör en massa små problem, en hel del 215 00:09:30,570 --> 00:09:33,770 av mini frågor, och sedan några större kodning problem. 216 00:09:33,770 --> 00:09:36,760 Så definitivt arbeta dessa övningar ute när vi gör dem på din dator eller på 217 00:09:36,760 --> 00:09:37,900 ett pappersark. 218 00:09:37,900 --> 00:09:40,933 >> Men jag ska också ge dig lite tid innan någon har någonsin att svara på några 219 00:09:40,933 --> 00:09:42,220 av de frågor jag frågar. 220 00:09:42,220 --> 00:09:44,930 Så eftersom jag kommer att ge dig lite tid till tänka på det, eftersom vi kommer 221 00:09:44,930 --> 00:09:49,380 att göra saker på partner ibland, Jag kommer att förvänta sig att alla 222 00:09:49,380 --> 00:09:52,150 att vara engagerade något. 223 00:09:52,150 --> 00:09:56,030 Och i brist på en bättre term, det kommer förmodligen att vara cold calling, vilket 224 00:09:56,030 --> 00:09:59,045 är där alla kommer att ha en chans att tänka på svaret, och sedan 225 00:09:59,045 --> 00:10:01,150 Jag uppmanar er, och sedan du ska säga svaret. 226 00:10:01,150 --> 00:10:05,200 >> Oroa dig inte eller vara rädd om det. 227 00:10:05,200 --> 00:10:08,610 Jag har gjort det tidigare och vi har hittat att det är mycket mer framgångsrika, 228 00:10:08,610 --> 00:10:11,810 också läsa pedagogisk forskning om det till bestämma huruvida eller inte det var en 229 00:10:11,810 --> 00:10:12,640 bra taktik. 230 00:10:12,640 --> 00:10:15,790 Det är till stor hjälp, särskilt om du Ge eleverna tid att tänka på 231 00:10:15,790 --> 00:10:20,070 svar och låt dem inte bara komma ut och säga det rätt utanför bat. 232 00:10:20,070 --> 00:10:22,620 Men om du inte känner dig bekväm svara, jag är också ganska bra på 233 00:10:22,620 --> 00:10:25,370 avkänning det ut, och vi kommer inte att sätta dig på plats, särskilt på 234 00:10:25,370 --> 00:10:28,240 kameran, även om ingen av du är på kameran just nu. 235 00:10:28,240 --> 00:10:32,250 >> Så de är de normer jag har. 236 00:10:32,250 --> 00:10:34,670 En sak längs linjerna att träffa i mitten. 237 00:10:34,670 --> 00:10:36,490 Jag ska ge er mycket feedback. 238 00:10:36,490 --> 00:10:38,310 Vänligen ge mig feedback liksom. 239 00:10:38,310 --> 00:10:46,190 Det finns en hemsida, sayat.me/cs50. 240 00:10:46,190 --> 00:10:48,380 Så det är en ärlig feedback. 241 00:10:48,380 --> 00:10:50,730 Om du vill ge det under avsnittet, Jag får ett mail när det händer. 242 00:10:50,730 --> 00:10:53,820 Vi tar en paus i lite, så jag ska titta igenom den feedback då. 243 00:10:53,820 --> 00:10:55,970 Om du någonsin har någon feedback, vänligen ge det till mig där. 244 00:10:55,970 --> 00:11:01,380 >> Om du ger mig feedback på Q, det är underbart, men det är guiden 245 00:11:01,380 --> 00:11:02,570 som du gör i slutet. 246 00:11:02,570 --> 00:11:05,690 Men det kommer att vara vid terminens slut så Jag kommer inte att kunna ta något av det 247 00:11:05,690 --> 00:11:08,620 återkoppling och förvandla det till undervisning ni bättre. 248 00:11:08,620 --> 00:11:11,020 Så snälla, om du har några feedback, ge det till mig. 249 00:11:11,020 --> 00:11:12,010 Jag älskar feedback. 250 00:11:12,010 --> 00:11:14,490 Säkerhetskopiera till FOP, får vi respons hela tiden. 251 00:11:14,490 --> 00:11:18,610 >> Du kan ge mig plussidan, bra saker, deltan, saker jag kan förbättra. 252 00:11:18,610 --> 00:11:20,600 Du kan kommentera min outfits. 253 00:11:20,600 --> 00:11:24,170 Det kommer inte att vara så hjälpsamma, men du är Välkommen att kommentera på någon och 254 00:11:24,170 --> 00:11:24,570 allt. 255 00:11:24,570 --> 00:11:26,280 Snälla, snälla ge mig feedback. 256 00:11:26,280 --> 00:11:28,740 Jag värdesätter det mycket och det betyder mycket för mig. 257 00:11:28,740 --> 00:11:31,760 258 00:11:31,760 --> 00:11:33,280 >> En mer norm, kul. 259 00:11:33,280 --> 00:11:34,530 Vi kommer att ha mycket roligt. 260 00:11:34,530 --> 00:11:36,930 Förhoppningsvis i den här kursen kommer du ha mycket roligt. 261 00:11:36,930 --> 00:11:38,780 Vi kommer att ha godis på avsnittet. 262 00:11:38,780 --> 00:11:40,040 Vi ska ha musik. 263 00:11:40,040 --> 00:11:45,510 Vi kommer förhoppningsvis att lära känna annan något bra, så jag vill ha 264 00:11:45,510 --> 00:11:47,690 detta är en rolig, engagerande upplevelse. 265 00:11:47,690 --> 00:11:50,890 >> Jag vet att några av er har somnat in föreläsningarna du hade tidigare idag, 266 00:11:50,890 --> 00:11:53,750 så förhoppningsvis som inte kommer vara fallet nu. 267 00:11:53,750 --> 00:11:55,960 Och om det är fallet nu, precis snarkar inte eftersom det kan 268 00:11:55,960 --> 00:11:57,580 fångas på kameran. 269 00:11:57,580 --> 00:11:58,770 Söt. 270 00:11:58,770 --> 00:12:04,020 Har du frågor, kommentarer eller funderingar innan jag går vidare om något vi har 271 00:12:04,020 --> 00:12:05,270 pratade om? 272 00:12:05,270 --> 00:12:08,620 273 00:12:08,620 --> 00:12:11,350 Bra. 274 00:12:11,350 --> 00:12:14,830 >> Så vi kommer att gå i arrayer först. 275 00:12:14,830 --> 00:12:17,140 Detta är hur man gör en array. 276 00:12:17,140 --> 00:12:18,410 Vi har sett det här förut. 277 00:12:18,410 --> 00:12:21,830 Du har en datatyp, har du en namn, och då har du en storlek. 278 00:12:21,830 --> 00:12:24,430 Just här, jag vill skapa två matriser. 279 00:12:24,430 --> 00:12:30,360 Den första är en rad tecken, och den har 26 utrymmen. 280 00:12:30,360 --> 00:12:33,790 Den andra är en samling av värderingar, och den har tre 281 00:12:33,790 --> 00:12:35,390 utrymmen för tre heltal. 282 00:12:35,390 --> 00:12:35,827 Ja? 283 00:12:35,827 --> 00:12:38,200 >> STUDENT: Är alla dessa bilder tillgängliga någonstans för oss? 284 00:12:38,200 --> 00:12:38,850 >> JASON Hirschhorn: Bra fråga. 285 00:12:38,850 --> 00:12:40,650 Frågan var, är alla dessa bilder finns? 286 00:12:40,650 --> 00:12:40,920 Ja. 287 00:12:40,920 --> 00:12:43,420 Alla dessa bilder kommer att finnas tillgängliga, och i framtiden, ska jag maila dem till 288 00:12:43,420 --> 00:12:44,640 dig innan avsnitt. 289 00:12:44,640 --> 00:12:47,340 Men idag, eftersom det är den första vecka, vi hade en sen start. 290 00:12:47,340 --> 00:12:49,675 Så oftast får du dessa bilder, men de kommer att vara tillgängliga på nätet och 291 00:12:49,675 --> 00:12:52,420 Jag kommer att skicka dem till dig direkt efter klassen. 292 00:12:52,420 --> 00:12:54,140 Fler frågor? 293 00:12:54,140 --> 00:13:01,330 >> Så återigen, arrayer är lådor, i brist på ett bättre ord, som innehar flera 294 00:13:01,330 --> 00:13:06,420 delar av en datatyp, och de är bredvid varandra i minnet. 295 00:13:06,420 --> 00:13:11,370 Och så igen, detta är hur du kan göra två typer av matriser. 296 00:13:11,370 --> 00:13:15,090 >> Så efter du har gjort din array med att första raden - int poäng, fäste 297 00:13:15,090 --> 00:13:17,430 tre, stäng fäste - du vill initiera den. 298 00:13:17,430 --> 00:13:19,050 Du vill lägga några värderingar i det. 299 00:13:19,050 --> 00:13:24,660 Och detta är hur du lägger några värderingar i där, bara välja Indice och 300 00:13:24,660 --> 00:13:25,670 skriver numret. 301 00:13:25,670 --> 00:13:27,130 Låt oss dra detta på tavlan. 302 00:13:27,130 --> 00:13:28,270 Kan alla se? 303 00:13:28,270 --> 00:13:29,030 Alla kan se. 304 00:13:29,030 --> 00:13:30,790 Söt. 305 00:13:30,790 --> 00:13:36,550 >> Så det kommer att bli min array med namnet Scores. 306 00:13:36,550 --> 00:13:37,730 Som ni ser, det är storleken tre. 307 00:13:37,730 --> 00:13:39,210 Det finns tre rutor i det. 308 00:13:39,210 --> 00:13:43,120 Var och en kan passa vad typ av datatyp? 309 00:13:43,120 --> 00:13:43,790 >> STUDENT: Integer. 310 00:13:43,790 --> 00:13:45,250 >> JASON Hirschhorn: Ett heltal i detta. 311 00:13:45,250 --> 00:13:48,790 Vi skrev int poäng, och det första ordet är den datatyp som kommer att 312 00:13:48,790 --> 00:13:50,910 gå in rutorna i matrisen. 313 00:13:50,910 --> 00:13:52,160 Så jag kan passa tre. 314 00:13:52,160 --> 00:13:54,880 315 00:13:54,880 --> 00:13:57,000 Varför har jag noll upp finns på bordet? 316 00:13:57,000 --> 00:13:59,240 Varför står det betyget noll är lika med 1? 317 00:13:59,240 --> 00:14:02,090 318 00:14:02,090 --> 00:14:03,180 Påminn mig om ditt namn. 319 00:14:03,180 --> 00:14:03,470 >> STUDENT: Kurt. 320 00:14:03,470 --> 00:14:04,070 >> JASON Hirschhorn: Kurt. 321 00:14:04,070 --> 00:14:04,480 >> STUDENT: Ja. 322 00:14:04,480 --> 00:14:04,920 >> JASON Hirschhorn: Varför? 323 00:14:04,920 --> 00:14:07,230 >> STUDENT: Eftersom det första indexet är noll, börjar vi räkna på noll. 324 00:14:07,230 --> 00:14:08,480 >> JASON Hirschhorn: Så vi börjar räkna vid noll. 325 00:14:08,480 --> 00:14:09,580 Det är precis rätt. 326 00:14:09,580 --> 00:14:12,340 Detta är den förvirrande delen och vilja resa upp dig, speciellt när du är 327 00:14:12,340 --> 00:14:14,900 försöka iterera genom arrayer, som vi ska göra i en bit. 328 00:14:14,900 --> 00:14:15,980 Vi börjar räkna vid noll. 329 00:14:15,980 --> 00:14:19,170 Så om jag vill hänvisa till den första box, det är inte lådan en. 330 00:14:19,170 --> 00:14:22,290 Tyvärr är det box noll. 331 00:14:22,290 --> 00:14:26,460 Den andra är en låda, och i detta fallet, är den tredje i en ruta två. 332 00:14:26,460 --> 00:14:28,700 >> Vad sägs om ruta tre? 333 00:14:28,700 --> 00:14:30,670 Var är ruta tre? 334 00:14:30,670 --> 00:14:34,750 Eller om jag vill göra poäng, fäste tre, nära fästet, vad är det? 335 00:14:34,750 --> 00:14:37,650 336 00:14:37,650 --> 00:14:39,760 Så du sa nulltecknet. 337 00:14:39,760 --> 00:14:41,600 Alla andra tankar? 338 00:14:41,600 --> 00:14:44,590 Vad är poäng fäste tre fäste? 339 00:14:44,590 --> 00:14:48,045 >> STUDENT: Det finns inte riktigt eftersom du definierat endast som värderingar, 340 00:14:48,045 --> 00:14:49,370 fäste tre. 341 00:14:49,370 --> 00:14:51,400 >> JASON Hirschhorn: Så du säger Det finns egentligen inte. 342 00:14:51,400 --> 00:14:54,230 I vissa fall, när vi har att göra med strängar, vanligtvis vi ska sätta ett null 343 00:14:54,230 --> 00:14:54,790 tecken i slutet. 344 00:14:54,790 --> 00:14:56,100 Vi kommer till det i en sekund. 345 00:14:56,100 --> 00:15:01,020 Men i detta fall finns finns ingen tredje rutan här. 346 00:15:01,020 --> 00:15:06,390 Så den sista rutan i varje array är storlek minus 1. 347 00:15:06,390 --> 00:15:11,310 Så om vi har en samling av storlek n, den första rutan är noll, är det sista en 348 00:15:11,310 --> 00:15:12,700 vid n minus 1. 349 00:15:12,700 --> 00:15:14,970 Och i det här fallet, existerar det inte. 350 00:15:14,970 --> 00:15:17,970 Det finns något här i minne men det är inte vårt. 351 00:15:17,970 --> 00:15:18,460 Vi äger inte det. 352 00:15:18,460 --> 00:15:19,570 Vi ber inte om det. 353 00:15:19,570 --> 00:15:22,606 Så om vi försöker komma åt det, vilket vi kommer gör i en bit, vi kommer förmodligen att 354 00:15:22,606 --> 00:15:24,970 hamna i trubbel. 355 00:15:24,970 --> 00:15:29,180 >> I det här fallet, jag initierar min array med tre variabler. 356 00:15:29,180 --> 00:15:36,195 Vi sätter en etta i ruta noll, två i fält ett och tre i ruta två. 357 00:15:36,195 --> 00:15:39,280 Har någon några frågor om att initiera en array? 358 00:15:39,280 --> 00:15:44,540 359 00:15:44,540 --> 00:15:46,970 >> Så vi gick över detta just nu. 360 00:15:46,970 --> 00:15:52,725 Scores, fäste tre, nära Konsol, som inte existerar. 361 00:15:52,725 --> 00:15:58,130 Vi noll indexeras i datavetenskap, så vi börja räkna på noll. 362 00:15:58,130 --> 00:16:01,860 Den sista rutan tillgänglig för oss, är det den tredje rutan, men det kallas box 363 00:16:01,860 --> 00:16:03,110 nummer två. 364 00:16:03,110 --> 00:16:05,790 365 00:16:05,790 --> 00:16:09,710 >> Nedtill är detta en alternativ sätt att initiera arrayer. 366 00:16:09,710 --> 00:16:13,410 Så istället för att skapa arrayen på ett linje, fyllning den första rutan, sedan 367 00:16:13,410 --> 00:16:17,070 den andra rutan, sedan den tredje rutan, du kan göra allt på en rad. 368 00:16:17,070 --> 00:16:19,040 Så i den linjen, båda uppsättningarna. 369 00:16:19,040 --> 00:16:23,460 Detta skapar samma exakta array som vad vi skapat här, men det 370 00:16:23,460 --> 00:16:24,710 bara gör det på en rad. 371 00:16:24,710 --> 00:16:29,740 372 00:16:29,740 --> 00:16:31,360 >> Nu har vi skapat vår array. 373 00:16:31,360 --> 00:16:34,100 Vanligtvis när du skapar en array, du vill göra något med det, oavsett 374 00:16:34,100 --> 00:16:38,430 som är fyll den eller få saker ur det och skriva ut dem på skärmen. 375 00:16:38,430 --> 00:16:42,270 I det här fallet, kommer vi genom vår värderingar array, som vi initieras på 376 00:16:42,270 --> 00:16:44,740 den första raden här uppe i grått. 377 00:16:44,740 --> 00:16:49,600 Och sedan på den andra linjen, börjar vi iteration genom uppsättningen. 378 00:16:49,600 --> 00:16:52,640 Har någon några frågor om strukturen av en for-loop? 379 00:16:52,640 --> 00:16:55,250 380 00:16:55,250 --> 00:16:56,400 >> Så detta är den för slingan. 381 00:16:56,400 --> 00:16:59,530 Vi har vår ursprungliga tillstånd, och sedan vår sista villkor, och då vi 382 00:16:59,530 --> 00:17:01,160 iterera, jag, varje slinga. 383 00:17:01,160 --> 00:17:05,579 Och i klammerparenteser i detta för loop, vad händer om jag skulle köra 384 00:17:05,579 --> 00:17:06,290 det här programmet? 385 00:17:06,290 --> 00:17:10,410 Kan någon berätta för mig vad vi skulle få? 386 00:17:10,410 --> 00:17:11,589 [? Matu? ?] 387 00:17:11,589 --> 00:17:13,819 >> Matu: Skriv ut alla poängen på varje rad. 388 00:17:13,819 --> 00:17:14,900 Det skulle skriva ut varje poäng på en separat rad. 389 00:17:14,900 --> 00:17:16,300 >> JASON Hirschhorn: Vad exakt skulle den ut? 390 00:17:16,300 --> 00:17:19,790 >> STUDENT: Det skulle skriva ut en, sedan två, sedan tre. 391 00:17:19,790 --> 00:17:20,235 >> JASON Hirschhorn: Exakt. 392 00:17:20,235 --> 00:17:23,490 Det skulle skriva ut en, sedan två, sedan tre, var och en på separata rader, eftersom 393 00:17:23,490 --> 00:17:27,810 vi går igenom arrayen och du kommer se att andra den printf 394 00:17:27,810 --> 00:17:29,275 uttalande, poäng i. 395 00:17:29,275 --> 00:17:32,880 Så på den första omgången genom vår för loop, lika i noll, vilket betyder att vi är 396 00:17:32,880 --> 00:17:34,640 få värdet på betyget noll - 397 00:17:34,640 --> 00:17:36,900 vilket, om vi går tillbaka till vårt schema, är en - 398 00:17:36,900 --> 00:17:38,630 och fylla i - 399 00:17:38,630 --> 00:17:39,700 Åh, säger c.. 400 00:17:39,700 --> 00:17:41,680 Det borde vara% d. 401 00:17:41,680 --> 00:17:43,970 Jag ska fixa det i lite när Jag räcker ut det till er. 402 00:17:43,970 --> 00:17:48,670 Men vi presenterar ett heltal så det borde vara% d rätt här, inte% c. 403 00:17:48,670 --> 00:17:50,340 Vad är% c för? 404 00:17:50,340 --> 00:17:50,790 >> STUDENT: Tecken. 405 00:17:50,790 --> 00:17:52,680 >> JASON Hirschhorn: Karaktär, exakt. 406 00:17:52,680 --> 00:17:53,690 Vad är det andra? 407 00:17:53,690 --> 00:17:56,260 Om du inte vill göra% d för en heltal, vad kan du göra? 408 00:17:56,260 --> 00:17:57,000 >> Elev: Jag. 409 00:17:57,000 --> 00:17:59,180 >> JASON Hirschhorn:% i, exakt. 410 00:17:59,180 --> 00:18:01,660 Så några frågor om iteration genom uppsättningen? 411 00:18:01,660 --> 00:18:05,500 412 00:18:05,500 --> 00:18:07,800 Så vad händer om vi gör detta? 413 00:18:07,800 --> 00:18:10,290 Istället för att göra i är mindre än tre, vi i är mindre 414 00:18:10,290 --> 00:18:11,390 än eller lika med tre. 415 00:18:11,390 --> 00:18:13,420 Vad händer när vi kör den här koden? 416 00:18:13,420 --> 00:18:17,510 417 00:18:17,510 --> 00:18:18,940 Ja, Annie? 418 00:18:18,940 --> 00:18:22,030 >> STUDENT: De kommer att skriva ut konstiga saker på fjärde raden. 419 00:18:22,030 --> 00:18:23,850 >> JASON Hirschhorn: Så du sa, är det kommer att skriva ut konstiga grejer på 420 00:18:23,850 --> 00:18:24,390 fjärde raden? 421 00:18:24,390 --> 00:18:25,750 Har någon ett svar på hennes fråga? 422 00:18:25,750 --> 00:18:28,940 423 00:18:28,940 --> 00:18:33,160 Så oddsen är att när vi kommer till - 424 00:18:33,160 --> 00:18:36,700 så på den fjärde rundan genom vår för loop, precis som du trodde, Annie, 425 00:18:36,700 --> 00:18:39,430 det ska vara tjog konsol tre, vilket vi har redan räknat ut inte 426 00:18:39,430 --> 00:18:41,990 existerar, och vi kommer att försöka och åt att skriva ut den 427 00:18:41,990 --> 00:18:43,350 ut, använda det på något sätt. 428 00:18:43,350 --> 00:18:46,060 Så datorn kommer förmodligen bli arg på oss. 429 00:18:46,060 --> 00:18:46,760 Du har helt rätt. 430 00:18:46,760 --> 00:18:48,830 >> Det kan avsluta programmet helt och hållet. 431 00:18:48,830 --> 00:18:52,222 Det kanske skriva ut något verkligen konstigt. 432 00:18:52,222 --> 00:18:53,420 Du kan inte säga säkert. 433 00:18:53,420 --> 00:18:56,210 Oddsen är att det kommer förmodligen bli arg på du och bara sluta direkt. 434 00:18:56,210 --> 00:19:00,100 >> Men detta är ett vanligt misstag du har där du bara av med en i 435 00:19:00,100 --> 00:19:05,110 slutet, och detta är ett fel som kommer att plåga dig hela din kodning. 436 00:19:05,110 --> 00:19:09,350 437 00:19:09,350 --> 00:19:14,150 Ett sätt jag gillar att göra är bara på en whiteboard, gå igenom varje iteration 438 00:19:14,150 --> 00:19:18,190 av slingan på handen eller på papper för att se vad som händer, och då du 439 00:19:18,190 --> 00:19:20,440 allmänhet inser, oh vänta, ska jag inte har gått till mindre än eller 440 00:19:20,440 --> 00:19:20,870 lika med tre. 441 00:19:20,870 --> 00:19:24,730 Jag borde ha stannat vid två, vilket är vad händer om ditt tillstånd är mindre 442 00:19:24,730 --> 00:19:26,206 än tre. 443 00:19:26,206 --> 00:19:29,120 Några frågor hittills? 444 00:19:29,120 --> 00:19:31,010 Söt. 445 00:19:31,010 --> 00:19:33,360 >> Så du har alla dina datorer öppen. 446 00:19:33,360 --> 00:19:36,760 Vi kommer att ge dig 02:58 minuter för att skriva ett program som 447 00:19:36,760 --> 00:19:40,460 skapar en array med heltalen en genom fem och sedan skriver ut varje 448 00:19:40,460 --> 00:19:41,720 heltal på en ny rad. 449 00:19:41,720 --> 00:19:44,330 450 00:19:44,330 --> 00:19:46,000 Och om du har några frågor, upp handen. 451 00:19:46,000 --> 00:19:48,140 Jag är glad att komma med. 452 00:19:48,140 --> 00:19:50,630 Som sagt, låt oss ta tre minuter att skriva detta. 453 00:19:50,630 --> 00:20:41,300 454 00:20:41,300 --> 00:20:45,110 Är alla OK om jag går till en nytt fönster och stänga detta? 455 00:20:45,110 --> 00:22:13,420 456 00:22:13,420 --> 00:22:15,520 >> Jag är ledsen om du inte har haft en chans till slut, men vi kommer att göra det 457 00:22:15,520 --> 00:22:17,310 tillsammans just nu. 458 00:22:17,310 --> 00:22:23,640 Så upp på skärmen, har är jag # cs50.h, # include stdio.h. 459 00:22:23,640 --> 00:22:26,090 Kan någon berätta för mig vad dessa två linjer gör? 460 00:22:26,090 --> 00:22:32,250 461 00:22:32,250 --> 00:22:33,155 Michael? 462 00:22:33,155 --> 00:22:40,030 >> STUDENT: De inkluderar biblioteken att CS50 gjorts och att Steve har 463 00:22:40,030 --> 00:22:44,210 sparas för dig att använda för att göra ditt liv enklare. 464 00:22:44,210 --> 00:22:46,820 >> JASON Hirschhorn: Så du sa att de omfattar bibliotek, en som CS50 465 00:22:46,820 --> 00:22:51,230 gjort, cs50.h, och en som är bara standard, kommer med 466 00:22:51,230 --> 00:22:53,510 C-paketet, stdio.h. 467 00:22:53,510 --> 00:22:54,890 Vad menar du inkludera biblioteken, men? 468 00:22:54,890 --> 00:22:55,770 Kan du vara lite mer specifik? 469 00:22:55,770 --> 00:23:01,180 >> STUDENT: Det gör det så att du kan använda vissa kodord för att ha en 470 00:23:01,180 --> 00:23:05,710 fungera hända utan att behöva gå och göra funktionen c själv. 471 00:23:05,710 --> 00:23:08,730 >> JASON Hirschhorn: Kan du ge mig ett exempel? 472 00:23:08,730 --> 00:23:11,160 >> STUDENT: Gilla printf är en du kan använda. 473 00:23:11,160 --> 00:23:11,860 >> JASON Hirschhorn: Printf. 474 00:23:11,860 --> 00:23:14,680 Så du sa printf är en av dem funktioner där i stället för att 475 00:23:14,680 --> 00:23:19,840 skriver printf på egen hand, printf är ingår faktiskt i stdio.h, så du 476 00:23:19,840 --> 00:23:22,010 kan bara använda det och ta att det kommer att fungera. 477 00:23:22,010 --> 00:23:28,270 I stdio.h, om du öppnat den filen, skulle det omfatta hur printf 478 00:23:28,270 --> 00:23:31,620 verk, all kod för printf? 479 00:23:31,620 --> 00:23:33,105 Varför skakar du på huvudet? 480 00:23:33,105 --> 00:23:35,710 >> STUDENT: Eftersom header-filen bara innefattar funktionen deklarationen. 481 00:23:35,710 --> 00:23:36,400 >> JASON Hirschhorn: Exakt rätt. 482 00:23:36,400 --> 00:23:39,680 Huvudet filen innehåller bara funktionen deklarationen. 483 00:23:39,680 --> 00:23:42,950 Så i princip, när du kompilerar detta, slå Gör Count, som vi ska göra i en 484 00:23:42,950 --> 00:23:48,070 andra, vet kompilatorn att om du använder printf, printf existerar. 485 00:23:48,070 --> 00:23:49,370 Det kommer att definieras någonstans. 486 00:23:49,370 --> 00:23:51,200 Det är inte ett problem för dig att använda den. 487 00:23:51,200 --> 00:23:55,490 Och sedan senare, det ska inkludera ettor och nollor som faktiskt innehåller 488 00:23:55,490 --> 00:23:58,360 printf genomförande och sammanfoga dem med din kod. 489 00:23:58,360 --> 00:24:01,935 Hur gör du säker på att den innehåller ettor och nollor för, säg, få string? 490 00:24:01,935 --> 00:24:05,670 491 00:24:05,670 --> 00:24:07,210 >> STUDENT: Få sträng är i cs50.h. 492 00:24:07,210 --> 00:24:07,830 >> JASON Hirschhorn: Höger. 493 00:24:07,830 --> 00:24:11,110 Så att säga att få strängen existerar, funktionen deklarationen. 494 00:24:11,110 --> 00:24:15,410 Men sedan de ettor och nollor, det binära fil som faktiskt innehåller 495 00:24:15,410 --> 00:24:17,370 genomföra hämta snöre? 496 00:24:17,370 --> 00:24:19,310 Hur gör du säker på att går med ditt program? 497 00:24:19,310 --> 00:24:23,220 >> STUDENT: Passera linker i kommandoraden argument. 498 00:24:23,220 --> 00:24:25,430 >> JASON Hirschhorn: Passera linker på kommandoraden argument. 499 00:24:25,430 --> 00:24:26,700 Hur gör du det? 500 00:24:26,700 --> 00:24:29,730 >> STUDENT: Det är-L linjen i clang 501 00:24:29,730 --> 00:24:30,480 >> JASON Hirschhorn: Exakt rätt. 502 00:24:30,480 --> 00:24:32,900 Du säger-L CS50, rätt? 503 00:24:32,900 --> 00:24:34,940 Det inkluderar de ettor och nollor. 504 00:24:34,940 --> 00:24:36,460 >> Elev: Men du gör det för dig, eller hur? 505 00:24:36,460 --> 00:24:37,010 >> JASON Hirschhorn: Exakt. 506 00:24:37,010 --> 00:24:40,390 Gör inte det för dig, men så småningom, du kommer inte ha Gör, eller 507 00:24:40,390 --> 00:24:43,220 måste du göra en göra på egen hand, så det är en 508 00:24:43,220 --> 00:24:43,940 bra sak att komma ihåg. 509 00:24:43,940 --> 00:24:47,350 Om du skulle använda en av dessa andra bibliotek, inte bara du har 510 00:24:47,350 --> 00:24:49,490 att skriva # include och då biblioteket. 511 00:24:49,490 --> 00:24:51,420 Du måste också koppla den i. 512 00:24:51,420 --> 00:24:54,480 Och dessa två saker är annorlunda. -L CS50 är annorlunda 513 00:24:54,480 --> 00:24:59,260 än # include cs50.h. 514 00:24:59,260 --> 00:25:02,870 >> Sedan har vi int main void klammerparenteser, och nu ska vi koden 515 00:25:02,870 --> 00:25:03,590 inuti main. 516 00:25:03,590 --> 00:25:07,090 Den första raden jag har här är en kommentar som säger, skapar en array 517 00:25:07,090 --> 00:25:08,820 med ints ett till fem. 518 00:25:08,820 --> 00:25:12,600 Vad är ett bra ord för att beskriva vad jag har just nu på skärmen, precis 519 00:25:12,600 --> 00:25:14,170 kommentarer inuti main? 520 00:25:14,170 --> 00:25:15,722 Vad kallar vi det? 521 00:25:15,722 --> 00:25:16,820 >> STUDENT: Pseudokod. 522 00:25:16,820 --> 00:25:17,840 >> JASON Hirschhorn: Pseudokod. 523 00:25:17,840 --> 00:25:18,420 Tack, Jeffrey. 524 00:25:18,420 --> 00:25:19,540 Det är precis rätt. 525 00:25:19,540 --> 00:25:20,005 Pseudokod. 526 00:25:20,005 --> 00:25:22,854 Har ni sett pseudokod innan? 527 00:25:22,854 --> 00:25:28,340 Räck upp handen om du har använt pseudokod innan problemet som en. 528 00:25:28,340 --> 00:25:29,400 Ungefär hälften av er. 529 00:25:29,400 --> 00:25:32,700 >> Jag rekommenderar starkt med pseudokod för att bryta ner problem i 530 00:25:32,700 --> 00:25:35,210 mindre, mer lätt att bita av bitar. 531 00:25:35,210 --> 00:25:38,630 Dessutom, om du gör det pseudokod du ha dina synpunkter redan i stor utsträckning 532 00:25:38,630 --> 00:25:40,760 inbyggd, så du behöver inte gå tillbaka och försöka lista ut 533 00:25:40,760 --> 00:25:42,450 vad du gjorde. 534 00:25:42,450 --> 00:25:44,730 Så kan någon ge mig denna första raden att skapa en array med ints en 535 00:25:44,730 --> 00:25:45,980 genom fem? 536 00:25:45,980 --> 00:25:48,700 537 00:25:48,700 --> 00:25:49,130 Du? 538 00:25:49,130 --> 00:25:53,350 >> STUDENT: Int och sedan kan du ringa oavsett antal, och sedan fyrkant 539 00:25:53,350 --> 00:25:54,830 bracket fem. 540 00:25:54,830 --> 00:25:57,820 >> JASON Hirschhorn: So int tal, hakparentes fem. 541 00:25:57,820 --> 00:25:59,160 >> STUDENT: Lika med, och sedan klammerparenteser. 542 00:25:59,160 --> 00:26:00,830 >> JASON Hirschhorn: Lika med, klammerparenteser. 543 00:26:00,830 --> 00:26:01,830 >> STUDENT: Ett, två, tre, fyra. 544 00:26:01,830 --> 00:26:05,566 >> JASON Hirschhorn: Ett, två, tre, fyra, fem. 545 00:26:05,566 --> 00:26:07,390 >> STUDENT: Och sedan klammerparenteser och sedan semikolon. 546 00:26:07,390 --> 00:26:09,240 >> JASON Hirschhorn: Och lockigt hängslen och semikolon. 547 00:26:09,240 --> 00:26:10,330 Utmärkt. 548 00:26:10,330 --> 00:26:12,210 Skriv ut varje int på en ny rad. 549 00:26:12,210 --> 00:26:17,140 Kan någon annan ge mig att koden, snälla? 550 00:26:17,140 --> 00:26:17,530 [? Matu? ?] 551 00:26:17,530 --> 00:26:18,560 Gå vidare. 552 00:26:18,560 --> 00:26:20,440 >> STUDENT: För ( 553 00:26:20,440 --> 00:26:21,750 >> JASON Hirschhorn: För ( 554 00:26:21,750 --> 00:26:23,740 >> STUDENT: int i = 0 555 00:26:23,740 --> 00:26:26,070 >> JASON Hirschhorn: int i = 0 556 00:26:26,070 --> 00:26:28,190 >> STUDENT: Semikolon i mindre än fem. 557 00:26:28,190 --> 00:26:31,680 >> JASON Hirschhorn: Semikolon, Jag är mindre än 5. 558 00:26:31,680 --> 00:26:33,600 >> STUDENT: Semikolon, i + +. 559 00:26:33,600 --> 00:26:35,140 >> JASON Hirschhorn: Semikolon, i + +. 560 00:26:35,140 --> 00:26:37,720 >> STUDENT: Stängda parenteser, sedan öppna stag. 561 00:26:37,720 --> 00:26:39,410 >> JASON Hirschhorn: Stängt parenteser och två hängslen. 562 00:26:39,410 --> 00:26:40,510 Inuti tandställning? 563 00:26:40,510 --> 00:26:47,640 >> STUDENT: Och sedan printf "% d / n" 564 00:26:47,640 --> 00:26:48,695 >> JASON Hirschhorn: Sorry, hålla på. 565 00:26:48,695 --> 00:26:52,330 Printf "% d / n, stängt citat. 566 00:26:52,330 --> 00:26:55,980 >> STUDENT: Och sedan stängt citat, kommatecken, räkna, fäste jag. 567 00:26:55,980 --> 00:26:58,350 >> JASON Hirschhorn: Comma, räkna, fäste jag. 568 00:26:58,350 --> 00:26:59,970 >> STUDENT: Tyvärr, siffror fäste i.. 569 00:26:59,970 --> 00:27:01,416 >> JASON Hirschhorn: Numbers, fäste jag. 570 00:27:01,416 --> 00:27:03,200 >> STUDENT: Förlåt. 571 00:27:03,200 --> 00:27:04,750 Och sedan stängda parenteser, semikolon. 572 00:27:04,750 --> 00:27:07,156 >> JASON Hirschhorn: Stängt parenteser, semikolon. 573 00:27:07,156 --> 00:27:08,680 Jag kommer att spara det. 574 00:27:08,680 --> 00:27:12,670 Vi kommer att göra räkningen. 575 00:27:12,670 --> 00:27:14,742 Och hur kör jag räkna? 576 00:27:14,742 --> 00:27:16,470 >> STUDENT: omvänt snedstreck. 577 00:27:16,470 --> 00:27:17,180 >> STUDENT: Dot snedstreck - 578 00:27:17,180 --> 00:27:18,050 >> JASON Hirschhorn:. / Räkna, exakt. 579 00:27:18,050 --> 00:27:19,380 Tack. . / Räkna. 580 00:27:19,380 --> 00:27:21,060 Ett, två, tre, fyra, fem på nya linjer. 581 00:27:21,060 --> 00:27:22,110 Ser ut som det fungerade. 582 00:27:22,110 --> 00:27:23,200 Ja, Noah? 583 00:27:23,200 --> 00:27:26,660 >> STUDENT: Du kan också göra mindre än eller lika med fyra, som jag är mindre än 584 00:27:26,660 --> 00:27:27,630 eller lika med fyra? 585 00:27:27,630 --> 00:27:31,190 Finns det någon fördel att göra mindre än fem, eller bara ett annat sätt att 586 00:27:31,190 --> 00:27:31,610 skriva det? 587 00:27:31,610 --> 00:27:35,280 >> JASON Hirschhorn: Så frågan är du kunde ha gjort i är mindre än eller 588 00:27:35,280 --> 00:27:37,450 lika med fyra i stället för i är mindre än fem. 589 00:27:37,450 --> 00:27:38,935 Skulle det ha fungerat på samma? 590 00:27:38,935 --> 00:27:39,760 >> STUDENT: Det borde. 591 00:27:39,760 --> 00:27:39,860 >> JASON Hirschhorn: Ja. 592 00:27:39,860 --> 00:27:41,660 Det skulle helt ha fungerar likadant. 593 00:27:41,660 --> 00:27:44,780 Stylistically är det generellt sett mindre än, och du kommer att se i en sekund när 594 00:27:44,780 --> 00:27:48,160 vi strängar, kan du använda något heter strlen, som du har sett 595 00:27:48,160 --> 00:27:50,380 tidigare, för att få längden av strängen. 596 00:27:50,380 --> 00:27:54,090 Och du kan inte göra mindre än eller lika strlen. 597 00:27:54,090 --> 00:27:56,500 Du kan göra mindre än eller lika strlen minus ett. 598 00:27:56,500 --> 00:27:59,260 Så det är bara trevligare att göra mindre än strlen. 599 00:27:59,260 --> 00:28:00,240 Ja? 600 00:28:00,240 --> 00:28:03,270 >> STUDENT: Och i själva frågesporter, göra Vi måste ge synpunkter på vår 601 00:28:03,270 --> 00:28:04,620 kod också? 602 00:28:04,620 --> 00:28:06,130 >> JASON Hirschhorn: Frågan var i frågesporter, gör du 603 00:28:06,130 --> 00:28:07,760 måste ge kommentarer? 604 00:28:07,760 --> 00:28:12,050 Så vi ska prata mer om frågesporter när de kommer upp, men i allmänhet, en bra 605 00:28:12,050 --> 00:28:14,530 tumregel är när du är skriva kod, lämna kommentarer. 606 00:28:14,530 --> 00:28:18,130 Om du får koden fel men kommentera höger, kan du få några 607 00:28:18,130 --> 00:28:22,280 kredit både från mig om jag klassificera du på ett problem set eller på en frågesport. 608 00:28:22,280 --> 00:28:24,660 Så kommentarer är alltid bra att tillhandahålla. 609 00:28:24,660 --> 00:28:25,040 Söt. 610 00:28:25,040 --> 00:28:25,460 Räkna. 611 00:28:25,460 --> 00:28:26,720 Utmärkt jobb. 612 00:28:26,720 --> 00:28:28,570 Låt oss gå vidare. 613 00:28:28,570 --> 00:28:29,920 >> Strängar. 614 00:28:29,920 --> 00:28:30,630 Strängar. 615 00:28:30,630 --> 00:28:31,730 Vi har sett detta tidigare i föreläsningen. 616 00:28:31,730 --> 00:28:33,390 Det blåste mig när jag först hittade detta. 617 00:28:33,390 --> 00:28:37,240 Det förmodligen inte blåsa någons tänka på här, men det är OK. 618 00:28:37,240 --> 00:28:41,260 >> Strängar är arrayer av tecken, och de slutar med, som du sa tidigare, 619 00:28:41,260 --> 00:28:45,710 null terminator, som är detta / 0 karaktär. 620 00:28:45,710 --> 00:28:47,740 Om vi ​​ska dra en sträng på ombord, ska vi dra hit den. 621 00:28:47,740 --> 00:28:53,080 622 00:28:53,080 --> 00:28:56,420 Så hur länge är denna sträng? 623 00:28:56,420 --> 00:28:56,680 Ursäkta. 624 00:28:56,680 --> 00:28:57,660 Hur lång är denna sträng? 625 00:28:57,660 --> 00:28:57,910 >> STUDENT: [OHÖRBAR]. 626 00:28:57,910 --> 00:28:59,010 >> JASON Hirschhorn: Four? 627 00:28:59,010 --> 00:28:59,880 Varför är det fyra? 628 00:28:59,880 --> 00:29:02,240 >> STUDENT: Eftersom femte plats ankommer på den null karaktär. 629 00:29:02,240 --> 00:29:04,070 >> JASON Hirschhorn: Så femte plats ankommer på den null karaktär. 630 00:29:04,070 --> 00:29:07,130 Så om jag skulle köra strlen på detta, skulle det ge mig fyra. 631 00:29:07,130 --> 00:29:07,850 Rätta. 632 00:29:07,850 --> 00:29:11,640 Och arrayen, men om jag skulle initiera denna array, hur många platser 633 00:29:11,640 --> 00:29:13,444 skulle jag be om? 634 00:29:13,444 --> 00:29:13,821 >> STUDENT: Fem. 635 00:29:13,821 --> 00:29:14,200 >> JASON Hirschhorn: Five. 636 00:29:14,200 --> 00:29:17,650 Jag skulle behöva be om fem, men jag kan bara sätta fyra tecken här 637 00:29:17,650 --> 00:29:19,750 eftersom jag måste sätta den null terminator på slutet. 638 00:29:19,750 --> 00:29:25,260 Så vi kommer att skriva in "ohai" och sätta null terminator i slutet. 639 00:29:25,260 --> 00:29:31,820 640 00:29:31,820 --> 00:29:34,940 Vi ska säga detta är sträng s motsvarar detta. 641 00:29:34,940 --> 00:29:36,610 Vad är s fäste noll? 642 00:29:36,610 --> 00:29:40,210 643 00:29:40,210 --> 00:29:41,550 s fäste noll, Annie? 644 00:29:41,550 --> 00:29:41,950 >> STUDENT: O. 645 00:29:41,950 --> 00:29:45,400 >> JASON Hirschhorn: O, exakt. s fäste en? 646 00:29:45,400 --> 00:29:48,200 s bracket fem? 647 00:29:48,200 --> 00:29:52,670 648 00:29:52,670 --> 00:29:53,955 s bracket fem? 649 00:29:53,955 --> 00:29:54,740 >> STUDENTEN finns inte. 650 00:29:54,740 --> 00:29:55,040 >> JASON Hirschhorn: Finns inte. 651 00:29:55,040 --> 00:29:57,050 Exakt rätt. 652 00:29:57,050 --> 00:29:57,940 Cool. 653 00:29:57,940 --> 00:30:03,120 Eventuella frågor om förståelse strängar som arrayer av tecken? 654 00:30:03,120 --> 00:30:03,870 OK, då. 655 00:30:03,870 --> 00:30:05,440 En mer program för er. 656 00:30:05,440 --> 00:30:09,190 Skriv ett program som frågar användaren för en sträng sedan skriver ut varje 657 00:30:09,190 --> 00:30:11,880 tecken på en ny rad. 658 00:30:11,880 --> 00:30:14,160 Så låt oss ta tre minuter att skriva detta program, och sedan kommer vi att koda det 659 00:30:14,160 --> 00:30:15,410 som en grupp. 660 00:30:15,410 --> 00:31:04,730 661 00:31:04,730 --> 00:31:04,830 >> Ursäkta. 662 00:31:04,830 --> 00:31:06,470 Visste du måste se det här? 663 00:31:06,470 --> 00:31:07,410 >> STUDENT: Nej 664 00:31:07,410 --> 00:31:08,660 >> JASON Hirschhorn: OK. 665 00:31:08,660 --> 00:31:36,390 666 00:31:36,390 --> 00:31:40,605 Låt oss ta en minut att koda detta, eller åtminstone komma igång med det. 667 00:31:40,605 --> 00:32:13,900 668 00:32:13,900 --> 00:32:17,020 >> Så du kan fortsätta arbeta, men jag ska att börja gå igenom det. 669 00:32:17,020 --> 00:32:22,560 Så som förut, har jag på skärmen # Include cs50.h, # include stdio.h. 670 00:32:22,560 --> 00:32:24,020 int main tomrum. 671 00:32:24,020 --> 00:32:28,880 Inne viktigaste är klammerparenteser, har jag två kommentarer, pseudocode. 672 00:32:28,880 --> 00:32:30,980 En är be om en sträng från användaren. 673 00:32:30,980 --> 00:32:33,900 Den andra är att skriva ut varje tecken på en ny rad. 674 00:32:33,900 --> 00:32:39,780 Så Anna, kan du ge mig fråga för en sträng från användaren? 675 00:32:39,780 --> 00:32:41,970 >> STUDENT: Printf. 676 00:32:41,970 --> 00:32:42,720 >> JASON Hirschhorn: Printf? 677 00:32:42,720 --> 00:32:45,050 >> STUDENT: Ja. 678 00:32:45,050 --> 00:32:46,165 ( 679 00:32:46,165 --> 00:32:47,610 >> JASON Hirschhorn: ( 680 00:32:47,610 --> 00:32:49,300 >> STUDENT: "ge mig en sträng. 681 00:32:49,300 --> 00:32:52,380 >> JASON Hirschhorn: "ge mig en str - oops - 682 00:32:52,380 --> 00:32:53,710 sträng. 683 00:32:53,710 --> 00:32:59,980 >> STUDENT: / n ") semikolon. 684 00:32:59,980 --> 00:33:02,300 >> JASON Hirschhorn: Avsluta strängen, slutna parenteser, semikolon. 685 00:33:02,300 --> 00:33:03,550 >> STUDENT: Ja. 686 00:33:03,550 --> 00:33:09,080 Och sedan nästa rad, sträng s = få strängen. 687 00:33:09,080 --> 00:33:11,240 >> JASON Hirschhorn: String s = få strängen. 688 00:33:11,240 --> 00:33:11,665 >> STUDENT: Ja. 689 00:33:11,665 --> 00:33:13,080 Och sedan () 690 00:33:13,080 --> 00:33:14,365 >> JASON Hirschhorn: () 691 00:33:14,365 --> 00:33:14,720 >> STUDENT: Semikolon. 692 00:33:14,720 --> 00:33:15,540 >> JASON Hirschhorn: Semikolon. 693 00:33:15,540 --> 00:33:16,890 Fantastic. 694 00:33:16,890 --> 00:33:19,000 Så jag kommer att få en sträng och Jag ska spara den i vad? 695 00:33:19,000 --> 00:33:21,830 Vad är variabel som heter som du har skapat? 696 00:33:21,830 --> 00:33:23,290 >> STUDENT: String s. 697 00:33:23,290 --> 00:33:24,580 >> JASON Hirschhorn: Den rörliga kallas s. 698 00:33:24,580 --> 00:33:25,700 Det är typ string. 699 00:33:25,700 --> 00:33:27,200 Exakt. 700 00:33:27,200 --> 00:33:30,080 Nästa sak vi vill är att skriva ut varje tecken på en ny rad. 701 00:33:30,080 --> 00:33:31,710 Vem kan ge mig den koden? 702 00:33:31,710 --> 00:33:32,110 [OHÖRBAR]? 703 00:33:32,110 --> 00:33:33,000 Kan du ge det till mig? 704 00:33:33,000 --> 00:33:33,580 >> STUDENT: Visst. 705 00:33:33,580 --> 00:33:35,420 >> JASON Hirschhorn: Låt oss göra det. 706 00:33:35,420 --> 00:33:36,080 Och ledsen. 707 00:33:36,080 --> 00:33:38,896 Jag gillar inte att upprepa vad du säger eftersom du får det rätt, men jag 708 00:33:38,896 --> 00:33:42,100 behöva upprepa det så att när de transkribera detta, kan de få alla 709 00:33:42,100 --> 00:33:44,870 texten ut på transkriptioner. 710 00:33:44,870 --> 00:33:47,180 Så du kan bara fortsätta prata. 711 00:33:47,180 --> 00:33:48,590 Tyvärr har jag att säga det över dig. 712 00:33:48,590 --> 00:33:49,510 Jag är ledsen, men - 713 00:33:49,510 --> 00:33:50,610 >> STUDENT: Det är bra. 714 00:33:50,610 --> 00:33:53,010 För int i = 0 715 00:33:53,010 --> 00:33:54,170 >> JASON Hirschhorn: För int i = 0 716 00:33:54,170 --> 00:33:56,740 >> Elev: Jag är mindre än - 717 00:33:56,740 --> 00:33:58,206 >> JASON Hirschhorn: Semikolon. 718 00:33:58,206 --> 00:34:00,650 >> STUDENT: Före detta, kan vi sätta en variabel så du får int namnet längd? 719 00:34:00,650 --> 00:34:01,870 >> JASON Hirschhorn: Åh, gör du inte vill sätta semikolon? 720 00:34:01,870 --> 00:34:02,310 OK. 721 00:34:02,310 --> 00:34:05,120 Så vad vill du göra efter noll? 722 00:34:05,120 --> 00:34:09,340 >> STUDENT: Jag vill få stränglängd av s och 723 00:34:09,340 --> 00:34:10,410 ange att en variabel? 724 00:34:10,410 --> 00:34:11,760 >> JASON Hirschhorn: OK, så hur gör jag det? 725 00:34:11,760 --> 00:34:17,636 >> Elev: Så du gör int längd = 726 00:34:17,636 --> 00:34:20,010 >> JASON Hirschhorn: Int längd = 727 00:34:20,010 --> 00:34:22,230 >> STUDENT: S-T-R-L-E-N. 728 00:34:22,230 --> 00:34:24,260 >> JASON Hirschhorn: S-T-R-L-E-N - 729 00:34:24,260 --> 00:34:25,380 >> STUDENT: Av s. 730 00:34:25,380 --> 00:34:25,790 Konsoler. 731 00:34:25,790 --> 00:34:27,920 >> JASON Hirschhorn: (s). 732 00:34:27,920 --> 00:34:33,040 >> STUDENT: Och så tror jag att du måste sätta ett semikolon mellan de två ints. 733 00:34:33,040 --> 00:34:34,590 >> JASON Hirschhorn: Ett semikolon efter noll? 734 00:34:34,590 --> 00:34:35,260 >> STUDENT: Ja. 735 00:34:35,260 --> 00:34:40,670 Lägg sedan ett semikolon efter det, och du säger, jag är mindre än längden. 736 00:34:40,670 --> 00:34:43,250 Jag är mindre än längden, vilket är variabeln. 737 00:34:43,250 --> 00:34:44,590 >> STUDENT: Och sedan semikolon. 738 00:34:44,590 --> 00:34:45,790 >> JASON Hirschhorn: Semikolon. 739 00:34:45,790 --> 00:34:46,290 >> Elev: Jag + +. 740 00:34:46,290 --> 00:34:46,909 >> JASON Hirschhorn: i + +. 741 00:34:46,909 --> 00:34:47,530 Det är vår för slinga. 742 00:34:47,530 --> 00:34:48,860 OK, inuti for-slingan. 743 00:34:48,860 --> 00:34:51,670 >> STUDENT: Och sedan göra printf. 744 00:34:51,670 --> 00:34:53,340 >> JASON Hirschhorn: Printf. 745 00:34:53,340 --> 00:34:53,889 >> STUDENT: Konsoler. 746 00:34:53,889 --> 00:34:55,130 >> JASON Hirschhorn: parenteser, citattecken. 747 00:34:55,130 --> 00:34:59,930 >> STUDENTEN parenteser, citationstecken,% c / n. 748 00:34:59,930 --> 00:35:00,760 >> JASON Hirschhorn:% C, OK. 749 00:35:00,760 --> 00:35:01,670 >> STUDENTEN / n. 750 00:35:01,670 --> 00:35:03,470 >> JASON Hirschhorn: / n. 751 00:35:03,470 --> 00:35:04,410 >> STUDENT: Stängt offerter. 752 00:35:04,410 --> 00:35:05,270 >> JASON Hirschhorn: Stängt offerter. 753 00:35:05,270 --> 00:35:05,810 >> STUDENT: Komma. 754 00:35:05,810 --> 00:35:06,860 >> JASON Hirschhorn: Komma. 755 00:35:06,860 --> 00:35:07,800 >> STUDENT: S. 756 00:35:07,800 --> 00:35:08,070 >> JASON Hirschhorn: S. 757 00:35:08,070 --> 00:35:08,690 >> STUDENT: Konsol i.. 758 00:35:08,690 --> 00:35:10,230 >> JASON Hirschhorn: Konsol i.. 759 00:35:10,230 --> 00:35:11,520 >> STUDENTEN och sedan stängas parenteser. 760 00:35:11,520 --> 00:35:12,540 >> JASON Hirschhorn: Stängt parentes. 761 00:35:12,540 --> 00:35:13,660 >> STUDENT: Och sedan semikolon. 762 00:35:13,660 --> 00:35:13,770 >> JASON Hirschhorn: Semikolon. 763 00:35:13,770 --> 00:35:14,380 Fantastic. 764 00:35:14,380 --> 00:35:16,890 Så låt oss spara detta. 765 00:35:16,890 --> 00:35:19,770 Gör stava. 766 00:35:19,770 --> 00:35:20,040 Oh boy. 767 00:35:20,040 --> 00:35:22,275 Jag har ett par fel. 768 00:35:22,275 --> 00:35:33,120 Första felet på rad 11, den säger, förväntad uttryck, och det är att ge 769 00:35:33,120 --> 00:35:36,910 mig ett fel som den andra int, det är fel. 770 00:35:36,910 --> 00:35:38,430 Det något fel runt där. 771 00:35:38,430 --> 00:35:41,060 Vet någon vad fel det är? 772 00:35:41,060 --> 00:35:41,640 Kurt? 773 00:35:41,640 --> 00:35:44,108 >> Elev: Jag tror att det är tänkt att vara ett kommatecken och inte ett semikolon. 774 00:35:44,108 --> 00:35:46,010 >> JASON Hirschhorn: OK, kommatecken istället för semikolon. 775 00:35:46,010 --> 00:35:47,340 Så är det allt vi behöver för att fixa? 776 00:35:47,340 --> 00:35:47,655 >> STUDENT: Nej 777 00:35:47,655 --> 00:35:48,930 >> JASON Hirschhorn: Vad annat behöver vi att fixa? 778 00:35:48,930 --> 00:35:50,920 >> STUDENT: Vi måste inkludera string.h. 779 00:35:50,920 --> 00:35:51,680 >> JASON Hirschhorn: Inkludera string.h. 780 00:35:51,680 --> 00:35:53,730 Där behöver jag inkludera det? 781 00:35:53,730 --> 00:35:57,085 >> STUDENT: Samma plats du bland andra grejer, rätt 782 00:35:57,085 --> 00:35:59,560 efter inkluderar stdio.h. 783 00:35:59,560 --> 00:36:01,610 >> JASON Hirschhorn: Vi får se om det går först eftersom allmänhet, jag gillar 784 00:36:01,610 --> 00:36:06,360 att fixa en sak först, och sedan köra det, och sedan se vilka fel vi får. 785 00:36:06,360 --> 00:36:11,620 Så vi kommer att rensa terminalen med styrning n, låt oss gör spell. 786 00:36:11,620 --> 00:36:15,190 787 00:36:15,190 --> 00:36:18,770 Så ett annat fel på rad 11. 788 00:36:18,770 --> 00:36:20,540 Förväntad semikolon. 789 00:36:20,540 --> 00:36:22,640 Och jag är fortfarande få fel på denna linje. 790 00:36:22,640 --> 00:36:25,270 Så det har inte gett mig ett felmeddelande som säger det förstår inte vad strlen är, 791 00:36:25,270 --> 00:36:28,980 men det ger mig fel på denna linje, så vad är fel? 792 00:36:28,980 --> 00:36:29,690 Mark? 793 00:36:29,690 --> 00:36:30,940 Marcus. 794 00:36:30,940 --> 00:36:32,570 >> STUDENT: Måste man ta bort den andra int deklarationen? 795 00:36:32,570 --> 00:36:34,990 >> JASON Hirschhorn: Ta bort den andra int. 796 00:36:34,990 --> 00:36:35,710 Låt oss prova det här. 797 00:36:35,710 --> 00:36:37,600 Nu rensa terminalen. 798 00:36:37,600 --> 00:36:40,130 Gör stava. 799 00:36:40,130 --> 00:36:40,490 Fel. 800 00:36:40,490 --> 00:36:42,890 Underförstått förklara bibliotek funktion strlen. 801 00:36:42,890 --> 00:36:44,270 Så nu ser vi det felet. 802 00:36:44,270 --> 00:36:45,760 Vad behöver vi ta med? 803 00:36:45,760 --> 00:36:46,660 >> STUDENT: string.h. 804 00:36:46,660 --> 00:36:51,880 >> JASON Hirschhorn: Inkludera string.h, Vi ska göra # include string.h på toppen 805 00:36:51,880 --> 00:36:52,920 av skärmen. 806 00:36:52,920 --> 00:36:55,450 Låt oss spara, göra stava. 807 00:36:55,450 --> 00:36:56,970 Nu sammanställs. 808 00:36:56,970 --> 00:37:01,970 Så återigen, de saker som vi behövde för att minns linje 12 i vår för loop när 809 00:37:01,970 --> 00:37:08,010 vi ställer upp, int i = 0, längd = strlen (s). 810 00:37:08,010 --> 00:37:09,350 >> Detta är en fantastisk strategi. 811 00:37:09,350 --> 00:37:12,590 Stilen i detta är stor, utformningen av detta är stor. 812 00:37:12,590 --> 00:37:15,620 Vi kan gå in i dessa skäl senare, men detta sätt behöver du bara ringa 813 00:37:15,620 --> 00:37:19,040 strlen gång i stället för varje enskild gång du kör genom öglan. 814 00:37:19,040 --> 00:37:22,255 Men, måste du använda ett kommatecken där och du behöver inte int igen. 815 00:37:22,255 --> 00:37:24,180 Om du förklara både de variablerna tillsammans, du 816 00:37:24,180 --> 00:37:26,850 behöver inte int igen. 817 00:37:26,850 --> 00:37:29,820 Och sedan om du ska använda strlen, vilket är ett annat bibliotek 818 00:37:29,820 --> 00:37:33,560 Funktionen är inte inkluderade i stdio.h eller cs50.h, göra 819 00:37:33,560 --> 00:37:35,310 att du inkluderar string.h. 820 00:37:35,310 --> 00:37:35,900 Kurt? 821 00:37:35,900 --> 00:37:39,085 >> STUDENT: Alltså, om du inte behöver säga vilken typ längd, gör att 822 00:37:39,085 --> 00:37:40,290 menar att det måste vara en int? 823 00:37:40,290 --> 00:37:41,930 Du kan inte ha två olika typer det? 824 00:37:41,930 --> 00:37:43,290 >> JASON Hirschhorn: Så du kan har två olika typer. 825 00:37:43,290 --> 00:37:45,730 Längd är en int här, though. 826 00:37:45,730 --> 00:37:48,590 Längd är en int eftersom det är kommatecken och sedan samma sak. 827 00:37:48,590 --> 00:37:50,460 >> STUDENT: Så det förutsätter att det kommer att vara samma som den första? 828 00:37:50,460 --> 00:37:52,423 >> JASON Hirschhorn: Exakt. 829 00:37:52,423 --> 00:37:54,970 Vi kommer inte att göra detta nu, men du kan innefatta två variabler på 830 00:37:54,970 --> 00:37:57,080 samma linje genom att använda någon datatyp. 831 00:37:57,080 --> 00:38:01,415 Så int x, skulle y skapa två variabler. 832 00:38:01,415 --> 00:38:05,830 833 00:38:05,830 --> 00:38:10,770 Så int x, y, om vi gör det, ger det mig en oanvänd variabel x och y eftersom 834 00:38:10,770 --> 00:38:12,020 Vi använder inte dem. 835 00:38:12,020 --> 00:38:17,950 836 00:38:17,950 --> 00:38:21,650 Så sätter tomrum innan är bara en tjusiga trick om du inte använder 837 00:38:21,650 --> 00:38:22,810 något, för att använda det. 838 00:38:22,810 --> 00:38:26,300 Men som ni ser, skapar jag x och y på samma rad med ett kommatecken. 839 00:38:26,300 --> 00:38:28,450 Det skapar två heltal rätt där. 840 00:38:28,450 --> 00:38:31,560 Så ja, helt möjligt att skapa två saker på samma linje 841 00:38:31,560 --> 00:38:33,720 separerade med ett kommatecken. 842 00:38:33,720 --> 00:38:35,470 Låt oss bli av med dem, men. 843 00:38:35,470 --> 00:38:36,370 >> Så det finns spell. 844 00:38:36,370 --> 00:38:39,200 Tack killar för att koda det för oss. 845 00:38:39,200 --> 00:38:43,040 Låt oss göra det en gång, kör det. 846 00:38:43,040 --> 00:38:44,580 Ge mig en sträng. 847 00:38:44,580 --> 00:38:45,580 [OHÖRBAR], gjorde du det mesta av det. 848 00:38:45,580 --> 00:38:47,910 Vad är strängen? 849 00:38:47,910 --> 00:38:48,250 >> STUDENT: Hej. 850 00:38:48,250 --> 00:38:50,110 >> JASON Hirschhorn: Hej. 851 00:38:50,110 --> 00:38:52,810 H-E-L-L-O, varje tecken på en rad. 852 00:38:52,810 --> 00:38:53,700 Ser bra ut. 853 00:38:53,700 --> 00:38:54,750 Låt oss köra den igen. 854 00:38:54,750 --> 00:38:56,050 Alltid ska kolla för hörn fall. 855 00:38:56,050 --> 00:38:57,750 Vad är ett bra hörn fall att kolla? 856 00:38:57,750 --> 00:39:00,250 857 00:39:00,250 --> 00:39:00,890 >> STUDENT: Ett antal? 858 00:39:00,890 --> 00:39:02,240 >> JASON Hirschhorn: Ett antal. 859 00:39:02,240 --> 00:39:06,580 Så jag ska sätta in 1, och den skriver ut 1. 860 00:39:06,580 --> 00:39:08,970 Det är inte fråga om brev, så det verkar som nummer fungerar. 861 00:39:08,970 --> 00:39:09,890 Bra hörnet fall att kolla. 862 00:39:09,890 --> 00:39:11,740 Vad är ett bra hörn fall att kolla? 863 00:39:11,740 --> 00:39:12,420 >> STUDENT: En tom sträng. 864 00:39:12,420 --> 00:39:12,910 >> JASON Hirschhorn: Hm? 865 00:39:12,910 --> 00:39:13,880 >> STUDENT: som en tom sträng. 866 00:39:13,880 --> 00:39:14,400 >> JASON Hirschhorn: Tom sträng. 867 00:39:14,400 --> 00:39:16,730 Så låt oss inte sätta in något. 868 00:39:16,730 --> 00:39:18,660 Och vad får skrivas ut? 869 00:39:18,660 --> 00:39:19,090 >> STUDENT: Ingenting. 870 00:39:19,090 --> 00:39:19,870 >> JASON Hirschhorn: Ingenting. 871 00:39:19,870 --> 00:39:20,555 Verkar som om det fungerar. 872 00:39:20,555 --> 00:39:23,790 Du kan prova fler hörn fall, men allmänt tal, är en annan data- 873 00:39:23,790 --> 00:39:26,160 bra att prova, liksom ingenting. 874 00:39:26,160 --> 00:39:29,180 Ingenting, noll, negativ är alltid bra saker att prova och saker som du 875 00:39:29,180 --> 00:39:33,140 ska testa, saker verkligen vi ska testa för och Check 50 kommer att testa. 876 00:39:33,140 --> 00:39:34,720 Eventuella frågor om spell.c? 877 00:39:34,720 --> 00:39:37,752 878 00:39:37,752 --> 00:39:39,310 >> OK, låt oss gå tillbaka. 879 00:39:39,310 --> 00:39:42,420 Jag har en mer program för er att skriva. 880 00:39:42,420 --> 00:39:44,700 Det kallas students.c. 881 00:39:44,700 --> 00:39:49,020 Detta är ett program som frågar användaren om fem namn, sedan slumpmässigt väljer 882 00:39:49,020 --> 00:39:51,600 och skriver ut ett av namnen. 883 00:39:51,600 --> 00:39:54,840 Detta program är lite mer inblandade än de två sista vi skrev, 884 00:39:54,840 --> 00:39:58,080 så varför inte vi tar fem minuter att koda den individuellt, och sedan kommer vi 885 00:39:58,080 --> 00:40:00,130 koda den som en grupp. 886 00:40:00,130 --> 00:40:03,795 >> Detta program omfattar också vissa saker du kanske inte har sett förut, så om 887 00:40:03,795 --> 00:40:06,390 Har du en fråga om, hur gör Jag gör det, räck upp handen. 888 00:40:06,390 --> 00:40:08,530 Jag ska komma över och peka dig i rätt riktning. 889 00:40:08,530 --> 00:40:10,820 Men vi också göra det eftersom detta kommer att vara ett bra sätt att införa någon 890 00:40:10,820 --> 00:40:12,070 ämnen som är knepigt. 891 00:40:12,070 --> 00:44:14,600 892 00:44:14,600 --> 00:44:15,560 >> Så det fungerar, eller hur? 893 00:44:15,560 --> 00:44:17,580 >> STUDENT: Ja. 894 00:44:17,580 --> 00:44:19,180 >> JASON Hirschhorn: När du sätter i ett Problemet set, det finns många sätt att göra 895 00:44:19,180 --> 00:44:20,790 det, men vissa är mer elegant än andra. 896 00:44:20,790 --> 00:44:29,000 897 00:44:29,000 --> 00:44:31,110 Låt oss dyka i. 898 00:44:31,110 --> 00:44:32,880 # Include cs50.h. 899 00:44:32,880 --> 00:44:34,250 # Include stdio.h. 900 00:44:34,250 --> 00:44:37,240 int main tomrum, klammerparenteser. 901 00:44:37,240 --> 00:44:39,430 Inne i klammerparenteser, Jag har två kommentarer. 902 00:44:39,430 --> 00:44:41,500 Den första är att be, den användaren för fem namn. 903 00:44:41,500 --> 00:44:46,580 Den andra är, slumpmässigt välja och skriva ut ett av namnen. 904 00:44:46,580 --> 00:44:50,250 Så låt oss göra den första, be användaren för fem namn. 905 00:44:50,250 --> 00:44:53,730 Vem har frågat användaren om fem namn och kan berätta för mig hur man gör det? 906 00:44:53,730 --> 00:44:56,760 907 00:44:56,760 --> 00:44:58,570 Endast två personer gjorde den första delen. 908 00:44:58,570 --> 00:45:00,150 Tre personer gjorde den första delen. 909 00:45:00,150 --> 00:45:00,670 Fyra, fem. 910 00:45:00,670 --> 00:45:03,140 Tom, hur gör du det? 911 00:45:03,140 --> 00:45:09,940 >> STUDENT: Du skulle deklarera en sträng och sedan namnet, konsol fem. 912 00:45:09,940 --> 00:45:12,070 >> JASON Hirschhorn: String namnge fästet fem. 913 00:45:12,070 --> 00:45:15,350 Så vad är denna linje gör, string name bracket fem? 914 00:45:15,350 --> 00:45:17,800 >> STUDENT: Du skulle deklarera en array av strängar. 915 00:45:17,800 --> 00:45:19,000 >> JASON Hirschhorn: Detta är en array av strängar. 916 00:45:19,000 --> 00:45:21,590 Hur många strängar går att passa in här? 917 00:45:21,590 --> 00:45:22,010 >> STUDENT: Fem. 918 00:45:22,010 --> 00:45:22,320 >> JASON Hirschhorn: Five. 919 00:45:22,320 --> 00:45:22,660 Utmärkt. 920 00:45:22,660 --> 00:45:26,360 Vi kommer att kalla det namn eftersom vi kommer att få flera sådana. 921 00:45:26,360 --> 00:45:27,790 OK, nästa? 922 00:45:27,790 --> 00:45:29,270 >> STUDENT: Och då du ha en for-loop - 923 00:45:29,270 --> 00:45:30,060 >> JASON Hirschhorn: För loop. 924 00:45:30,060 --> 00:45:33,035 >> STUDENT: - för i = 0. 925 00:45:33,035 --> 00:45:37,040 >> JASON Hirschhorn: for (int i = 0. 926 00:45:37,040 --> 00:45:38,270 >> STUDENT: Semikolon. 927 00:45:38,270 --> 00:45:38,880 >> JASON Hirschhorn: Semikolon. 928 00:45:38,880 --> 00:45:39,790 >> STUDENT: Jag är mindre än fem. 929 00:45:39,790 --> 00:45:41,310 >> JASON Hirschhorn: Jag är mindre än fem. 930 00:45:41,310 --> 00:45:42,230 >> STUDENT: Semikolon. 931 00:45:42,230 --> 00:45:42,560 >> JASON Hirschhorn: Semikolon. 932 00:45:42,560 --> 00:45:43,380 >> Elev: Jag + +. 933 00:45:43,380 --> 00:45:46,050 >> JASON Hirschhorn: i + +. 934 00:45:46,050 --> 00:45:47,100 >> STUDENTEN och sedan stängas parenteser. 935 00:45:47,100 --> 00:45:48,600 >> JASON Hirschhorn: Stängt parenteser, och sedan några klammerparenteser. 936 00:45:48,600 --> 00:45:50,050 Inne i klammerparenteser? 937 00:45:50,050 --> 00:45:51,423 >> STUDENT: Och sedan printf. 938 00:45:51,423 --> 00:45:52,535 >> JASON Hirschhorn: Printf. 939 00:45:52,535 --> 00:45:56,200 >> STUDENT: Öppna parenteser, namn% d. 940 00:45:56,200 --> 00:45:57,090 >> JASON Hirschhorn: Förlåt? 941 00:45:57,090 --> 00:45:57,660 >> STUDENT: Name. 942 00:45:57,660 --> 00:45:58,200 >> JASON Hirschhorn: Namn. 943 00:45:58,200 --> 00:46:01,700 >> STUDENT: Och sedan utrymme, och sedan% d. 944 00:46:01,700 --> 00:46:02,950 >> JASON Hirschhorn: Namn, utrymme,% d. 945 00:46:02,950 --> 00:46:05,630 946 00:46:05,630 --> 00:46:10,820 >> STUDENT: Och sedan / n, och sedan stängs. 947 00:46:10,820 --> 00:46:15,070 >> JASON Hirschhorn: So namn, utrymme, % D / n, slutna parenteser. 948 00:46:15,070 --> 00:46:17,730 >> STUDENT: Comma, i + 1. 949 00:46:17,730 --> 00:46:19,390 Jag är ledsen. 950 00:46:19,390 --> 00:46:21,040 Stängt citat, och sedan komma, i +1. 951 00:46:21,040 --> 00:46:24,400 >> JASON Hirschhorn: Stängt citationstecken, kommatecken, i +1. 952 00:46:24,400 --> 00:46:25,850 >> STUDENT: Ja. 953 00:46:25,850 --> 00:46:27,650 Och sedan nästa rad - 954 00:46:27,650 --> 00:46:29,400 >> JASON Hirschhorn: i + 1. 955 00:46:29,400 --> 00:46:31,600 >> STUDENT: Ja. 956 00:46:31,600 --> 00:46:36,440 Och sedan nästa bild är namnen fäste i.. 957 00:46:36,440 --> 00:46:39,000 >> JASON Hirschhorn: Nästa rad är namnen fäste i.. 958 00:46:39,000 --> 00:46:41,360 >> STUDENTEN = få strängen. 959 00:46:41,360 --> 00:46:43,460 >> JASON Hirschhorn: = Get - 960 00:46:43,460 --> 00:46:44,510 kapitalet G-E-T - 961 00:46:44,510 --> 00:46:45,530 sträng. 962 00:46:45,530 --> 00:46:47,800 Oj, sorry. 963 00:46:47,800 --> 00:46:49,050 >> STUDENT: öppen, stängd parentes och därefter - 964 00:46:49,050 --> 00:46:50,940 >> JASON Hirschhorn: Öppen, stängd paren. 965 00:46:50,940 --> 00:46:51,030 >> STUDENT: Semikolon. 966 00:46:51,030 --> 00:46:52,500 >> JASON Hirschhorn: Semikolon. 967 00:46:52,500 --> 00:46:57,545 OK, så du initiera arrayen av strängar, namn, och sedan gå igenom en 968 00:46:57,545 --> 00:47:02,720 för slinga, och fem gånger skriva ut vissa uppmana till användaren och sedan lagra 969 00:47:02,720 --> 00:47:03,360 fem strängar. 970 00:47:03,360 --> 00:47:08,090 Har någon anpassningar av denna? 971 00:47:08,090 --> 00:47:10,030 Tom, jag tror alla håller med dig. 972 00:47:10,030 --> 00:47:10,880 Ser ganska bra. 973 00:47:10,880 --> 00:47:11,660 OK. 974 00:47:11,660 --> 00:47:14,830 Varför gjorde du i +1, men? 975 00:47:14,830 --> 00:47:18,000 >> STUDENT: Jag menar, inte har att vara, men i +1 så att det är 976 00:47:18,000 --> 00:47:19,700 namn man att nämna fem. 977 00:47:19,700 --> 00:47:21,930 Annars skulle det vara namnet noll för att nämna fyra. 978 00:47:21,930 --> 00:47:24,400 >> JASON Hirschhorn: Så du gjorde jag en eftersom det annars skulle ha 979 00:47:24,400 --> 00:47:27,060 skrivas ut noll till fyra eftersom det är hur datorer tror, ​​men människor 980 00:47:27,060 --> 00:47:28,530 egentligen inte läsa sånt. 981 00:47:28,530 --> 00:47:30,190 Det är en annan sak du stöter på. 982 00:47:30,190 --> 00:47:33,210 Ibland när du skriver ut något till användaren, kommer du vill göra det till en 983 00:47:33,210 --> 00:47:35,733 Lite snyggare, och gör I en i detta fall är en 984 00:47:35,733 --> 00:47:37,430 sätt att göra det vackrare. 985 00:47:37,430 --> 00:47:41,380 >> Jag ser också fem gånger, string namn är fem, är jag mindre än fem. 986 00:47:41,380 --> 00:47:42,430 Jag vet var du fick fem. 987 00:47:42,430 --> 00:47:44,890 Du fick det från mig berätta du fem namn. 988 00:47:44,890 --> 00:47:49,000 Men om vi ville göra koden en lite mer robust, en sak som vi 989 00:47:49,000 --> 00:47:53,110 kan göra är här ute, utanför int, vi kunde göra något sånt här, 990 00:47:53,110 --> 00:47:57,070 # Define, och vi kunde göra NAMN 5. 991 00:47:57,070 --> 00:48:01,580 992 00:48:01,580 --> 00:48:05,390 >> Så i princip överallt där jag skriver kapital N, huvudstad A, huvudstad M, huvudstad E, 993 00:48:05,390 --> 00:48:08,890 huvudstad S, den strängen, kommer den att ersätta att med 5 i koden. 994 00:48:08,890 --> 00:48:11,530 995 00:48:11,530 --> 00:48:13,445 Eller låt oss bara kalla det - vi kommer bara kalla det NUMMER. 996 00:48:13,445 --> 00:48:17,190 Så jag definiera alla caps NUMBER vara 5. 997 00:48:17,190 --> 00:48:22,830 >> Så nu var jag har nummer 5, jag kan ersätta det med versaler NUMMER. 998 00:48:22,830 --> 00:48:26,880 Och nu, om jag vill ändra antalet av namn, är allt jag behöver göra 999 00:48:26,880 --> 00:48:31,350 denna linje, linje fyra, där jag har # Define nummer 5, ändra det till 10, 1000 00:48:31,350 --> 00:48:34,340 eller ändra det till 4. 1001 00:48:34,340 --> 00:48:37,400 När din kod blir längre, du är inte kommer att minnas alla de platser du 1002 00:48:37,400 --> 00:48:41,630 sätta hur många namn du ville ha, och i För att du inte missa något, är detta 1003 00:48:41,630 --> 00:48:45,490 ett bra sätt att göra det, för att hitta något upp överst och sedan bara använda det uttrycket 1004 00:48:45,490 --> 00:48:46,400 överallt i din kod. 1005 00:48:46,400 --> 00:48:46,780 Marcus? 1006 00:48:46,780 --> 00:48:49,780 >> STUDENT: Är det stilistiskt föredragna än globalt definiera en 1007 00:48:49,780 --> 00:48:51,270 konstanta n? 1008 00:48:51,270 --> 00:48:53,760 >> JASON Hirschhorn: Så är det stilistiskt föredra än globalt 1009 00:48:53,760 --> 00:48:54,980 definierar en konstant n? 1010 00:48:54,980 --> 00:48:59,036 Så du säger att du kan göra, int antal = 5? 1011 00:48:59,036 --> 00:49:01,300 >> STUDENT: Har de konsonanter i C eller nej? 1012 00:49:01,300 --> 00:49:02,720 >> JASON Hirschhorn: Eller const - i lika. 1013 00:49:02,720 --> 00:49:04,275 Så du säger bara en global variabel? 1014 00:49:04,275 --> 00:49:04,990 >> STUDENT: Ja. 1015 00:49:04,990 --> 00:49:08,670 >> JASON Hirschhorn: Så stilistiskt, det finns ingen nödvändighet en rättighet 1016 00:49:08,670 --> 00:49:12,050 svara, men båda dessa är bättre än att bara kasta dessa slumpmässiga 1017 00:49:12,050 --> 00:49:12,960 siffror hela din kod. 1018 00:49:12,960 --> 00:49:14,650 Vi kallar dem magic numbers. 1019 00:49:14,650 --> 00:49:16,450 När jag tittar på din kod eller när någons läsa igenom det, de 1020 00:49:16,450 --> 00:49:18,790 vill inte bara dessa slumptal som inte vettiga. 1021 00:49:18,790 --> 00:49:22,420 Även numret 26, som i allmänhet är antalet bokstäver i alfabetet, 1022 00:49:22,420 --> 00:49:28,870 det är bättre att definiera ALFABETET uppe och spara numret 26 i den strängen, 1023 00:49:28,870 --> 00:49:29,550 om det är vettigt. 1024 00:49:29,550 --> 00:49:33,210 >> Eller på problem som man, i stället för - igen, vi pratar inte om det här på 1025 00:49:33,210 --> 00:49:37,020 tiden, men i stället för att bara kasta i ett 25 överallt eller en 10, kan du 1026 00:49:37,020 --> 00:49:41,860 spara numret 25 som KVARTAL eller 10 som DIME, och det gör det lättare för 1027 00:49:41,860 --> 00:49:44,140 vem som läser igenom din kod till förstår varför du valde det numret. 1028 00:49:44,140 --> 00:49:46,540 Och även för dig, om du någonsin vill uppdatera din kod, det gör det lite 1029 00:49:46,540 --> 00:49:47,290 mer robust. 1030 00:49:47,290 --> 00:49:48,070 Yeah? 1031 00:49:48,070 --> 00:49:50,830 >> STUDENT: Är den här koden kommer också att vara tillgängliga för oss efter? 1032 00:49:50,830 --> 00:49:52,453 >> JASON Hirschhorn: Alla dessa koder att vi har skrivit tillsammans är 1033 00:49:52,453 --> 00:49:54,620 kommer att skickas till dig killar och tillgängliga. 1034 00:49:54,620 --> 00:49:55,740 Ja. 1035 00:49:55,740 --> 00:49:58,040 Så be användaren om fem namn. 1036 00:49:58,040 --> 00:50:00,280 Slumpmässigt välja och skriva ut ett av namnen. 1037 00:50:00,280 --> 00:50:00,940 Vem gjorde den här linjen? 1038 00:50:00,940 --> 00:50:02,230 Detta är den svåraste linjen här. 1039 00:50:02,230 --> 00:50:02,450 Tyvärr, Tom. 1040 00:50:02,450 --> 00:50:05,510 Du gjorde ett riktigt bra jobb, men Detta är lite knepigare. 1041 00:50:05,510 --> 00:50:06,600 Marcus gå vidare. 1042 00:50:06,600 --> 00:50:10,180 >> STUDENT: Tja först, kommer du att måste inkludera stdlib.h och time.h. 1043 00:50:10,180 --> 00:50:13,200 >> JASON Hirschhorn: Så du säger på toppen, inkluderar två fler bibliotek. 1044 00:50:13,200 --> 00:50:18,830 Du vill att jag ska inkludera S-T-D-L-I-B dot H, Standard Library, och vad 1045 00:50:18,830 --> 00:50:19,760 var den andre? 1046 00:50:19,760 --> 00:50:21,010 >> STUDENT: Time.h. 1047 00:50:21,010 --> 00:50:25,130 1048 00:50:25,130 --> 00:50:27,840 >> JASON Hirschhorn: # include time.h. 1049 00:50:27,840 --> 00:50:29,470 Så dessa är två fler bibliotek. 1050 00:50:29,470 --> 00:50:31,790 Jag antar nu att vi kommer att använda funktioner som finns i dessa 1051 00:50:31,790 --> 00:50:34,240 två, vilket är varför du behövde att inkludera dem? 1052 00:50:34,240 --> 00:50:36,980 >> STUDENT: Så då, först är du kommer att vilja skriva srand. 1053 00:50:36,980 --> 00:50:38,770 >> JASON Hirschhorn: srand. 1054 00:50:38,770 --> 00:50:42,070 >> STUDENT: (tid (0) 1055 00:50:42,070 --> 00:50:42,700 >> JASON Hirschhorn: Förlåt. 1056 00:50:42,700 --> 00:50:45,580 Srand (tid ( 1057 00:50:45,580 --> 00:50:46,890 >> STUDENT: 0. 1058 00:50:46,890 --> 00:50:47,230 >> JASON Hirschhorn: 0. 1059 00:50:47,230 --> 00:50:49,990 >> STUDENT:)), semikolon. 1060 00:50:49,990 --> 00:50:51,320 >> JASON Hirschhorn: En annan sluten föräldra? 1061 00:50:51,320 --> 00:50:51,650 Semikolon. 1062 00:50:51,650 --> 00:50:53,610 Jag ska bara byta din nolla med NULL. 1063 00:50:53,610 --> 00:50:55,980 Det kommer att göra ungefär samma sak, men allmänhet, ser du NULL, vilket 1064 00:50:55,980 --> 00:50:57,720 Vi pratar om det här linje i en sekund. 1065 00:50:57,720 --> 00:50:58,580 >> STUDENT: Stilistiskt bättre? 1066 00:50:58,580 --> 00:51:02,240 >> JASON Hirschhorn: Generellt människor rätt NULL, men samma sak. 1067 00:51:02,240 --> 00:51:05,010 >> STUDENT: Och sedan int namn. 1068 00:51:05,010 --> 00:51:06,490 >> JASON Hirschhorn: Int namn. 1069 00:51:06,490 --> 00:51:07,280 >> STUDENTEN = 1070 00:51:07,280 --> 00:51:07,780 >> JASON Hirschhorn: = 1071 00:51:07,780 --> 00:51:08,580 >> STUDENT: Rand. 1072 00:51:08,580 --> 00:51:09,340 >> JASON Hirschhorn: Rand. 1073 00:51:09,340 --> 00:51:10,420 >> STUDENT: () 1074 00:51:10,420 --> 00:51:11,500 >> JASON Hirschhorn: () 1075 00:51:11,500 --> 00:51:12,850 >> STUDENT: Modulo nummer. 1076 00:51:12,850 --> 00:51:14,310 >> JASON Hirschhorn: Vad är modulo? 1077 00:51:14,310 --> 00:51:14,970 Tecknet? 1078 00:51:14,970 --> 00:51:16,000 Den procent tecknet? 1079 00:51:16,000 --> 00:51:17,790 >> STUDENT: Procent karaktär. 1080 00:51:17,790 --> 00:51:19,521 Modulo nummer som du definierat upp överst. 1081 00:51:19,521 --> 00:51:22,030 >> JASON Hirschhorn: Modulo NUMMER. 1082 00:51:22,030 --> 00:51:24,052 >> STUDENT: Och sedan semikolon. 1083 00:51:24,052 --> 00:51:24,660 >> JASON Hirschhorn: Semikolon. 1084 00:51:24,660 --> 00:51:27,820 >> STUDENT: Och sedan ny linje, printf. 1085 00:51:27,820 --> 00:51:28,460 >> JASON Hirschhorn: Printf. 1086 00:51:28,460 --> 00:51:29,730 >> STUDENT: ( 1087 00:51:29,730 --> 00:51:30,620 >> JASON Hirschhorn: ( 1088 00:51:30,620 --> 00:51:31,650 >> STUDENT: " 1089 00:51:31,650 --> 00:51:32,630 >> JASON Hirschhorn: " 1090 00:51:32,630 --> 00:51:35,320 >> STUDENT:% s / n 1091 00:51:35,320 --> 00:51:37,220 >> JASON Hirschhorn:% s / n 1092 00:51:37,220 --> 00:51:38,420 >> STUDENT: " 1093 00:51:38,420 --> 00:51:40,640 >> JASON Hirschhorn:% s / n " 1094 00:51:40,640 --> 00:51:43,540 >> STUDENT: kommatecken, mellanslag namn. 1095 00:51:43,540 --> 00:51:44,350 >> JASON Hirschhorn: Space - 1096 00:51:44,350 --> 00:51:46,300 >> STUDENT: Åh, antar jag, vad vi kallar det här? 1097 00:51:46,300 --> 00:51:48,640 >> JASON Hirschhorn: Vi kallade det namn. 1098 00:51:48,640 --> 00:51:52,360 >> STUDENT: Öppet fäste, namn. 1099 00:51:52,360 --> 00:51:55,090 >> JASON Hirschhorn: Öppet fäste, namn. 1100 00:51:55,090 --> 00:51:55,850 >> STUDENT: Stängt fäste. 1101 00:51:55,850 --> 00:51:56,490 >> JASON Hirschhorn: Stängt fäste. 1102 00:51:56,490 --> 00:51:57,460 >> STUDENT:) 1103 00:51:57,460 --> 00:51:58,800 >> JASON Hirschhorn:) 1104 00:51:58,800 --> 00:51:59,440 >> STUDENT: Semikolon. 1105 00:51:59,440 --> 00:52:00,410 >> JASON Hirschhorn: Semikolon. 1106 00:52:00,410 --> 00:52:01,500 OK, låt oss rädda. 1107 00:52:01,500 --> 00:52:04,410 Låt oss göra den här koden. 1108 00:52:04,410 --> 00:52:06,365 Studenter. 1109 00:52:06,365 --> 00:52:07,100 Låt oss köra den här koden. 1110 00:52:07,100 --> 00:52:08,480 Studenter. 1111 00:52:08,480 --> 00:52:11,630 Inte. / Elev. . / Elever. 1112 00:52:11,630 --> 00:52:12,870 Nämn en. 1113 00:52:12,870 --> 00:52:15,490 Vi säger David. 1114 00:52:15,490 --> 00:52:18,070 Namn två, RJ. 1115 00:52:18,070 --> 00:52:20,561 Nämn tre, Rob. 1116 00:52:20,561 --> 00:52:22,490 Namn fyra, Lucas. 1117 00:52:22,490 --> 00:52:26,060 Namn fem, Joseph. 1118 00:52:26,060 --> 00:52:28,850 Och sedan skriver ut Joseph igen. 1119 00:52:28,850 --> 00:52:31,730 >> Så låt mig köra igen. 1120 00:52:31,730 --> 00:52:32,460 Låt mig göra samma namn. 1121 00:52:32,460 --> 00:52:39,760 David, RJ, Rob, Lucas, Joseph. 1122 00:52:39,760 --> 00:52:41,070 Och det gav mig David den här gången. 1123 00:52:41,070 --> 00:52:43,030 Så jag gjorde samma sak, men det gav mig en annan sak, och det är 1124 00:52:43,030 --> 00:52:45,410 därför att, naturligtvis, vi ber för ett slumpmässigt namn. 1125 00:52:45,410 --> 00:52:50,950 Så jag tror, ​​baserat bort av mig vandra runt i rummet, att de flesta människor 1126 00:52:50,950 --> 00:52:55,960 förmodligen fick den första delen till höger, inrätta den arrayen och sedan få 1127 00:52:55,960 --> 00:52:56,430 alla namn. 1128 00:52:56,430 --> 00:52:59,320 Jag pratar om linjerna 10 till 16. 1129 00:52:59,320 --> 00:53:02,150 Men raderna 18 till 21 är förmodligen några saker du inte har sett förut, 1130 00:53:02,150 --> 00:53:03,750 så låt oss gå igenom dem. 1131 00:53:03,750 --> 00:53:10,390 >> Denna linje, srand tid NULL är i huvudsak - 1132 00:53:10,390 --> 00:53:14,300 ledsen, låt oss hoppa ner en linje, rand (). 1133 00:53:14,300 --> 00:53:17,320 Det ger dig ett slumptal, ett slumpmässigt heltal. 1134 00:53:17,320 --> 00:53:19,630 Och om du träffar mannen rand, vilket en hel del du gjorde - 1135 00:53:19,630 --> 00:53:21,530 M-A-N rummet R-A-N-D - 1136 00:53:21,530 --> 00:53:25,910 i terminalen som denna, M-A-N space R-A-N-D, slå Enter. 1137 00:53:25,910 --> 00:53:30,490 Du skulle komma upp i handboken och skulle kunna läsa att rand 1138 00:53:30,490 --> 00:53:34,260 kommandot utgångar num pseudoslumpdata byte efter sådd slumptalet 1139 00:53:34,260 --> 00:53:35,510 generatorn en gång. 1140 00:53:35,510 --> 00:53:38,450 1141 00:53:38,450 --> 00:53:39,700 >> Så det är en beskrivning. 1142 00:53:39,700 --> 00:53:43,860 1143 00:53:43,860 --> 00:53:46,800 Det är vad Rand, ger du ett slumpmässigt nummer när 1144 00:53:46,800 --> 00:53:48,610 du kallar den funktionen. 1145 00:53:48,610 --> 00:53:53,140 Tyvärr är det inte riktigt random för om du bara ringa random 1146 00:53:53,140 --> 00:53:55,970 utan att få det lite frö, en del utgångspunkt, kommer det alltid välja 1147 00:53:55,970 --> 00:53:59,100 samma en och den använder en formel att bestämma nästa en. 1148 00:53:59,100 --> 00:54:01,730 Så om du ringer rand, det ska bara ger dig samma sak. 1149 00:54:01,730 --> 00:54:02,610 Det kommer att bli väldigt förutsägbar. 1150 00:54:02,610 --> 00:54:03,790 Det faktiskt inte vara slumpmässigt. 1151 00:54:03,790 --> 00:54:09,610 >> Så vad vi behöver göra, per Marcus instruktioner till mig, var frö rand 1152 00:54:09,610 --> 00:54:13,810 med något annat, vilket är vad den srand funktionen gör. 1153 00:54:13,810 --> 00:54:18,055 Det frön rand med något lite mer slumpmässigt än samma sak, och 1154 00:54:18,055 --> 00:54:23,360 han seedning det med tiden NULL, vilket är, precis enligt konvention, den nuvarande 1155 00:54:23,360 --> 00:54:24,650 tid i sekunder. 1156 00:54:24,650 --> 00:54:29,790 >> Så du antar att alla inte är går att köra koden på exakt 1157 00:54:29,790 --> 00:54:33,620 Samma sekund, så det är ett säkert kort att tid NULL kommer att vara annorlunda 1158 00:54:33,620 --> 00:54:35,250 varje gång denna kod körs. 1159 00:54:35,250 --> 00:54:39,020 Säker satsning som alltså, srand viljan frö rand med något annat varje 1160 00:54:39,020 --> 00:54:39,990 enda gång. 1161 00:54:39,990 --> 00:54:44,110 Så genom konvention, när vi vill ha en slumptal, skriver vi denna linje, 1162 00:54:44,110 --> 00:54:50,540 srand tid NULL, att ge oss en mycket mer slumpmässigt frö, och sedan kör vi 1163 00:54:50,540 --> 00:54:52,080 rand, vilket ger oss ett slumptal. 1164 00:54:52,080 --> 00:54:52,840 Yeah? 1165 00:54:52,840 --> 00:54:54,140 >> STUDENT: Kan du säga vad du menar med frö? 1166 00:54:54,140 --> 00:54:55,630 >> JASON Hirschhorn: Seed som i - 1167 00:54:55,630 --> 00:54:58,730 så Rand kommer att plocka några antal och det kommer att använda en del 1168 00:54:58,730 --> 00:55:00,060 formel för att komma dit. 1169 00:55:00,060 --> 00:55:03,250 Så det kommer att börja med något och sedan förvandla det till bygger något 1170 00:55:03,250 --> 00:55:03,890 bort av den formeln. 1171 00:55:03,890 --> 00:55:06,090 Om du ger alltid det samma sak, det alltid kommer att förvandla den till det 1172 00:55:06,090 --> 00:55:06,790 samma sak. 1173 00:55:06,790 --> 00:55:08,450 Så att första du ge det är fröet. 1174 00:55:08,450 --> 00:55:10,880 Så du vill ge den något annorlunda att börja med, och så det 1175 00:55:10,880 --> 00:55:12,610 kommer att vända det till något annat. 1176 00:55:12,610 --> 00:55:15,840 >> Och sedan slutligen, rad 20, denna% kallas 1177 00:55:15,840 --> 00:55:17,470 modulo, och det är förvirrande. 1178 00:55:17,470 --> 00:55:19,850 Det är något som är lite annorlunda här att du egentligen inte 1179 00:55:19,850 --> 00:55:22,240 ha i verkliga livet matematik. 1180 00:55:22,240 --> 00:55:27,430 Men i huvudsak, när du tar en jätte nummer och du delar i C, vad 1181 00:55:27,430 --> 00:55:29,482 händer med resten? 1182 00:55:29,482 --> 00:55:30,510 >> STUDENT: Det blir stympad. 1183 00:55:30,510 --> 00:55:31,220 >> JASON Hirschhorn: får det stympade. 1184 00:55:31,220 --> 00:55:35,200 Så 20 delat med 3 är vad? 1185 00:55:35,200 --> 00:55:37,950 Vad återgår det till dig, 20 dividerat med 3. 1186 00:55:37,950 --> 00:55:39,260 Tyvärr, 10 dividerat med 3. 1187 00:55:39,260 --> 00:55:41,062 Vad återgår det till dig? 1188 00:55:41,062 --> 00:55:41,540 >> STUDENT: [OHÖRBAR]. 1189 00:55:41,540 --> 00:55:45,170 >> JASON Hirschhorn: 10 dividerat med 3 bara returnerar 3, inte 3 resterande 1. 1190 00:55:45,170 --> 00:55:51,490 Så vad 10 modulo 3 returer är bara resten, 1. 1191 00:55:51,490 --> 00:55:54,020 Så om du ville veta vad 10 delat med 3 faktiskt var, skulle du 1192 00:55:54,020 --> 00:55:58,950 göra 10 dividerat med 3, skulle du få din 3, och sedan du skulle göra 10 modulo 3, och 1193 00:55:58,950 --> 00:55:59,860 du skulle få ett 1. 1194 00:55:59,860 --> 00:56:04,630 Så du skulle inse att 10 delat av 3 är 3, resten 1. 1195 00:56:04,630 --> 00:56:07,990 >> Och i denna linje, skulle Rand vara alla heltal, huvudsakligen. 1196 00:56:07,990 --> 00:56:12,660 Så modulo säger, dela det med nummer, vilket i detta fall är 5. 1197 00:56:12,660 --> 00:56:16,420 Och om du någonsin dela med ett nummer, heltal måste alltid vara mindre än 1198 00:56:16,420 --> 00:56:17,590 det numret. 1199 00:56:17,590 --> 00:56:22,200 Så om du dividerar med ett nummer 5, resten kommer alltid att vara 1200 00:56:22,200 --> 00:56:23,396 noll till fyra. 1201 00:56:23,396 --> 00:56:25,520 Det är precis hur matematik fungerar. 1202 00:56:25,520 --> 00:56:29,700 >> Så ett stort antal moduloed av en mindre Antalet kommer alltid tillbaka 1203 00:56:29,700 --> 00:56:33,530 resten och kommer alltid att återvända någon tal som är mindre än det antal du 1204 00:56:33,530 --> 00:56:34,693 dividerat med. 1205 00:56:34,693 --> 00:56:37,920 Har någon några frågor om modulo, eftersom det kommer att komma in mycket, 1206 00:56:37,920 --> 00:56:41,450 mycket praktiskt, så jag vill vara säker alla förstår det? 1207 00:56:41,450 --> 00:56:43,710 Cool. 1208 00:56:43,710 --> 00:56:46,000 Och vi såg att detta program fungerade. 1209 00:56:46,000 --> 00:56:50,280 OK, vi går vidare. 1210 00:56:50,280 --> 00:56:52,970 >> Så nästa, kommer vi att gå in i funktioner, och vi kommer att gå 1211 00:56:52,970 --> 00:56:55,580 genom resten av det här ganska snabbt eftersom jag vill komma till 1212 00:56:55,580 --> 00:56:57,150 kommandoradsargument. 1213 00:56:57,150 --> 00:57:00,330 Så fungerar är väsentligt, som ni har sett, svarta lådor. 1214 00:57:00,330 --> 00:57:04,290 De tar saker som kallas parametrar, de gör något för dem, antingen 1215 00:57:04,290 --> 00:57:06,990 ändra dem eller skapa vissa biverkningar, och slutligen, spottar de 1216 00:57:06,990 --> 00:57:09,530 något, vilket är returvärdet. 1217 00:57:09,530 --> 00:57:12,495 Kan någon ge mig en anledning varför vi skulle använda funktionerna? 1218 00:57:12,495 --> 00:57:15,870 1219 00:57:15,870 --> 00:57:16,360 Någon? 1220 00:57:16,360 --> 00:57:19,360 En anledning till varför vi skulle använda funktionerna? 1221 00:57:19,360 --> 00:57:21,280 Någon? 1222 00:57:21,280 --> 00:57:22,700 Jag såg två händer. 1223 00:57:22,700 --> 00:57:23,590 Vad är en bra anledning? 1224 00:57:23,590 --> 00:57:24,930 Marcus? 1225 00:57:24,930 --> 00:57:27,730 >> STUDENT: Om du måste ringa samma stycke kod flera gånger. 1226 00:57:27,730 --> 00:57:29,150 >> JASON Hirschhorn: OK, om du behöver att ringa samma bit av 1227 00:57:29,150 --> 00:57:30,040 koda flera gånger. 1228 00:57:30,040 --> 00:57:32,470 Jeff, du har en annan anledning? 1229 00:57:32,470 --> 00:57:34,230 >> STUDENT: Bara så att du kan koda mindre. 1230 00:57:34,230 --> 00:57:35,070 >> JASON Hirschhorn: Du kan koda mindre. 1231 00:57:35,070 --> 00:57:35,320 Rätt. 1232 00:57:35,320 --> 00:57:38,720 Om du vill göra något en hel del - 1233 00:57:38,720 --> 00:57:41,720 i föregående kod, skulle jag ha skriven hämta sträng fem gånger, men en 1234 00:57:41,720 --> 00:57:44,620 för loop gör att det ser trevligare och du måste skriva mindre kod. 1235 00:57:44,620 --> 00:57:45,760 Funktioner är en liknande idé. 1236 00:57:45,760 --> 00:57:48,720 Om jag vill göra samma sak en hel del, flytta den till en funktion och kalla det 1237 00:57:48,720 --> 00:57:49,610 fungera varje gång. 1238 00:57:49,610 --> 00:57:51,190 Det kommer att göra det där för dig. 1239 00:57:51,190 --> 00:57:53,740 Det är en stor anledning att använda funktionerna. 1240 00:57:53,740 --> 00:57:54,870 >> Så anatomi en funktion. 1241 00:57:54,870 --> 00:57:56,670 En funktion kommer i allmänhet se ut så här. 1242 00:57:56,670 --> 00:57:59,280 Det börjar med returtyp, Du kommer att få namnet. 1243 00:57:59,280 --> 00:58:02,935 Det tar argumenten, annars känd som de parametrar, och inuti 1244 00:58:02,935 --> 00:58:05,290 dessa Klammerparenteserna, kommer du skriv din kod. 1245 00:58:05,290 --> 00:58:07,150 >> Vi har sett en funktion en hel del. 1246 00:58:07,150 --> 00:58:09,160 Det är viktigaste. 1247 00:58:09,160 --> 00:58:13,820 Här är viktigaste överlappar som anatomi jag hade tidigare. 1248 00:58:13,820 --> 00:58:15,525 Vad betyder nämligen int just här? 1249 00:58:15,525 --> 00:58:18,534 1250 00:58:18,534 --> 00:58:19,450 Vad betyder int? 1251 00:58:19,450 --> 00:58:21,026 När jag skriver int main (void). 1252 00:58:21,026 --> 00:58:21,740 >> STUDENT: Return typ? 1253 00:58:21,740 --> 00:58:22,350 >> JASON Hirschhorn: Förlåt? 1254 00:58:22,350 --> 00:58:23,170 >> STUDENT: Avkastningen typen. 1255 00:58:23,170 --> 00:58:24,820 >> JASON Hirschhorn: Int är tillbaka typ, exakt rätt. 1256 00:58:24,820 --> 00:58:25,870 Huvudsakliga returnerar en int. 1257 00:58:25,870 --> 00:58:28,678 Vad är viktigaste? 1258 00:58:28,678 --> 00:58:29,510 >> STUDENT: Function namn. 1259 00:58:29,510 --> 00:58:30,800 >> JASON Hirschhorn: Main är den namnet på funktionen. 1260 00:58:30,800 --> 00:58:31,510 Exakt rätt. 1261 00:58:31,510 --> 00:58:31,840 Och ogiltiga? 1262 00:58:31,840 --> 00:58:33,190 Vad är ogiltig innanför parenteserna? 1263 00:58:33,190 --> 00:58:36,650 1264 00:58:36,650 --> 00:58:42,030 >> STUDENT: Det tar inte någon extern värde. 1265 00:58:42,030 --> 00:58:42,930 >> JASON Hirschhorn: Så void - 1266 00:58:42,930 --> 00:58:43,240 höger. 1267 00:58:43,240 --> 00:58:45,940 Inuti parenteserna, sätter vi parametrar eller argument de 1268 00:58:45,940 --> 00:58:48,480 Funktionen tar, vad går i den svarta lådan. 1269 00:58:48,480 --> 00:58:50,760 När du skriver ogiltiga, säger du detta tar ingenting i. 1270 00:58:50,760 --> 00:58:53,802 Så int main void betyder main s inte ta något i. 1271 00:58:53,802 --> 00:58:56,950 >> Inne i klammerparenteser, har vi några koden, och då ser vi i slutet 1272 00:58:56,950 --> 00:58:57,640 returnera noll. 1273 00:58:57,640 --> 00:59:01,220 Vad betyder avkastning noll? 1274 00:59:01,220 --> 00:59:02,470 Nåväl, vi pratade om returtyp. 1275 00:59:02,470 --> 00:59:03,780 Huvudsakliga måste returnera en int. 1276 00:59:03,780 --> 00:59:04,960 Det är vad den här raden gör. 1277 00:59:04,960 --> 00:59:07,330 Den returnerar en int, noll. 1278 00:59:07,330 --> 00:59:13,600 >> Självklart har vi inte sett att en hel grund i programmering vi gör med 1279 00:59:13,600 --> 00:59:16,070 de maskiner vi gör och kompilatorer vi använder idag, du 1280 00:59:16,070 --> 00:59:16,990 behöver inte denna linje. 1281 00:59:16,990 --> 00:59:20,070 Main är speciell nog att den vet När du når slutet av huvud, precis 1282 00:59:20,070 --> 00:59:22,060 returnera noll om allt gick bra. 1283 00:59:22,060 --> 00:59:25,560 Faktum är att om något inte går bra, huvud kommer ofta tillbaka en annan 1284 00:59:25,560 --> 00:59:28,500 Antalet betyda att något gick fel med ditt program. 1285 00:59:28,500 --> 00:59:32,470 >> Så generellt när du ser koden, du skriv inte returnera noll, men det är bra 1286 00:59:32,470 --> 00:59:34,770 att veta att det händer bakom scener eftersom när du skriver 1287 00:59:34,770 --> 00:59:36,370 en annan typ av funktion, du kommer att behöva 1288 00:59:36,370 --> 00:59:37,400 inkludera en returledning. 1289 00:59:37,400 --> 00:59:39,710 Om du säger jag ska returnera en int, måste du 1290 00:59:39,710 --> 00:59:41,250 skriva tillbaka något. 1291 00:59:41,250 --> 00:59:45,160 Om du säger void upp här på början, void main tomrum, för 1292 00:59:45,160 --> 00:59:48,670 exempel, då är det inte återvänder någonting - void betyder ingenting - 1293 00:59:48,670 --> 00:59:50,320 så du behöver inte att returledningen. 1294 00:59:50,320 --> 00:59:53,610 Men du skriver någonsin något som inte ogiltig för återlämnande typ, behöver du 1295 00:59:53,610 --> 00:59:55,950 en rad som säger retur och du måste sätta något där 1296 00:59:55,950 --> 00:59:57,650 som matchar den typ. 1297 00:59:57,650 --> 00:59:58,900 Eventuella frågor om detta? 1298 00:59:58,900 --> 01:00:03,110 1299 01:00:03,110 --> 01:00:04,680 Söt. 1300 01:00:04,680 --> 01:00:05,930 >> Scope. 1301 01:00:05,930 --> 01:00:07,360 Detta är något som vi har berörde också. 1302 01:00:07,360 --> 01:00:10,720 Varje variabel, som vi vet, har en viss omfattning, och det är i princip 1303 01:00:10,720 --> 01:00:14,160 talar om där variabeln kan eller inte kan refereras. 1304 01:00:14,160 --> 01:00:16,310 Och jag gillar att säga vad som händer i klammerparenteser stannar 1305 01:00:16,310 --> 01:00:18,000 inuti klammerparenteser. 1306 01:00:18,000 --> 01:00:21,490 Så till exempel, om vi ser på denna kod, vi definierar en global variabel 1307 01:00:21,490 --> 01:00:24,510 utanför main, int a, här uppe på toppen. 1308 01:00:24,510 --> 01:00:27,380 Vi kallar en annan int en insida huvud. 1309 01:00:27,380 --> 01:00:29,760 Vi har några fler klammerparenteser, och vi kallar en annan int a. 1310 01:00:29,760 --> 01:00:31,690 >> Vi har tre a s i koden. 1311 01:00:31,690 --> 01:00:32,550 Dessa är inte samma sak. 1312 01:00:32,550 --> 01:00:34,880 Jag har skapat tre olika variabler. 1313 01:00:34,880 --> 01:00:39,370 Sedan innanför dessa inre lockigt hängslen, säger jag a = 4. 1314 01:00:39,370 --> 01:00:44,130 Vilket ett är att tala om, den första, den andra, 1315 01:00:44,130 --> 01:00:47,045 eller den tredje? 1316 01:00:47,045 --> 01:00:47,920 >> STUDENT: Den tredje. 1317 01:00:47,920 --> 01:00:49,320 >> JASON Hirschhorn: Det talar om den tredje. 1318 01:00:49,320 --> 01:00:52,850 Samtliga av dem en faktiskt kan vara talade om i denna 1319 01:00:52,850 --> 01:00:58,660 exempel eftersom deras räckvidd allt går in i dessa innersta klammerparenteser. 1320 01:00:58,660 --> 01:01:02,360 Men när du ringer saker på samma namn, det finns något som kallas gömda. 1321 01:01:02,360 --> 01:01:09,670 Så du endast behandla eller åtgärda eller använd senaste variabel, eller en 1322 01:01:09,670 --> 01:01:11,090 närmast dig. 1323 01:01:11,090 --> 01:01:14,760 Så här inne, är det tredje ett närmast till den raden, a = 4, så det 1324 01:01:14,760 --> 01:01:16,550 påverkar den tredje. 1325 01:01:16,550 --> 01:01:19,890 Och den sista raden, a = 2, vari a är att tala om, den första, andra, 1326 01:01:19,890 --> 01:01:20,805 eller tredje en? 1327 01:01:20,805 --> 01:01:22,530 >> STUDENT: Second. 1328 01:01:22,530 --> 01:01:24,430 >> JASON Hirschhorn: Det talar kring den andra en. 1329 01:01:24,430 --> 01:01:27,970 Naturligtvis, en den tredje är närmast den i koden, men den tredje en 1330 01:01:27,970 --> 01:01:30,200 existerar inte utanför dessa klammerparenteser. 1331 01:01:30,200 --> 01:01:32,650 När du kommer till det stängda lockigt stag, det är som det är borta, 1332 01:01:32,650 --> 01:01:33,570 väsentligen. 1333 01:01:33,570 --> 01:01:36,150 Så de enda två du har kvar är de första två, och naturligtvis, nu 1334 01:01:36,150 --> 01:01:37,960 det är närmast den andra en. 1335 01:01:37,960 --> 01:01:39,410 >> Så det är en bra sak att ihåg om räckvidd. 1336 01:01:39,410 --> 01:01:42,900 Till exempel, jag är säker på att du har stött på detta i en do while-slinga. 1337 01:01:42,900 --> 01:01:46,680 Om du initiera variabel inuti do while-slinga och sedan försöker 1338 01:01:46,680 --> 01:01:50,360 komma åt den utanför, förmodligen du fick någon varning så, här 1339 01:01:50,360 --> 01:01:51,680 variabel existerar inte. 1340 01:01:51,680 --> 01:01:54,370 Det är på grund av omfattningen idé, att saker existerar endast 1341 01:01:54,370 --> 01:01:55,320 innanför dessa klammerparenteser. 1342 01:01:55,320 --> 01:01:59,320 Klammerparenteserna är som en jätte kram som du ger till din kod, är en annan 1343 01:01:59,320 --> 01:02:01,380 sätt att tänka på det. 1344 01:02:01,380 --> 01:02:05,280 >> Så detta är en annan funktion, något för er till koden, hellofunction.c. 1345 01:02:05,280 --> 01:02:08,240 Vi kommer att hoppa över det för nu, men detta är något jag uppmuntrar dig att 1346 01:02:08,240 --> 01:02:09,740 öva på egen hand. 1347 01:02:09,740 --> 01:02:12,510 Skriv ett program i vilka huvudsakliga samtal annan funktion som skriver ut en 1348 01:02:12,510 --> 01:02:13,750 hälsning till användaren. 1349 01:02:13,750 --> 01:02:17,750 Det är i huvudsak tar hallå världen och abstrahera att printf in 1350 01:02:17,750 --> 01:02:18,680 annan funktion. 1351 01:02:18,680 --> 01:02:22,360 Men vi kommer inte att göra det just nu eftersom vi inte har så mycket tid 1352 01:02:22,360 --> 01:02:23,350 kvar som jag skulle ha velat. 1353 01:02:23,350 --> 01:02:26,250 >> Så fungerar deklaration. 1354 01:02:26,250 --> 01:02:28,080 Vi har sett det här förut också. 1355 01:02:28,080 --> 01:02:31,180 Om du vill skriva en annan funktion, måste du låta datorn veta och 1356 01:02:31,180 --> 01:02:32,600 main vet att den existerar. 1357 01:02:32,600 --> 01:02:37,140 Så vad vi gör är över huvud, skriver vi returtypen, namn, och 1358 01:02:37,140 --> 01:02:42,970 parametrar, och sedan ner under huvud, här nere, kopierar vi faktiskt att linjen 1359 01:02:42,970 --> 01:02:45,080 och sedan skriva själva koden. 1360 01:02:45,080 --> 01:02:50,990 Så här sättet, om du anropa funktionen i huvud upptill, vet main som 1361 01:02:50,990 --> 01:02:54,650 hej finns, till exempel, om jag var att ringa hej, och då ser det ut att 1362 01:02:54,650 --> 01:02:56,710 genomförandet ner nedan. 1363 01:02:56,710 --> 01:02:59,680 Vad händer om jag inte är här line up top, annullera hello (void)? 1364 01:02:59,680 --> 01:03:03,820 1365 01:03:03,820 --> 01:03:06,560 >> Om jag inte inkluderar denna linje och viktigaste samtalen hej, jag 1366 01:03:06,560 --> 01:03:07,640 kommer att få ett felmeddelande. 1367 01:03:07,640 --> 01:03:10,090 Jag kommer att få ett fel eftersom kompilatorn vet inte 1368 01:03:10,090 --> 01:03:13,070 att denna sak existerar. 1369 01:03:13,070 --> 01:03:16,680 Detta liknar varför vi inkluderar # cs50.h. 1370 01:03:16,680 --> 01:03:21,390 Vad väsentligen cs50.h gör sätter få strängen uppe. 1371 01:03:21,390 --> 01:03:23,120 Det är att sätta få int uppe. 1372 01:03:23,120 --> 01:03:26,570 Det är att sätta alla de funktioner prototyper upp inför main så att när 1373 01:03:26,570 --> 01:03:29,900 du kallar dem i huvud, vet main att dessa saker existerar. 1374 01:03:29,900 --> 01:03:31,630 Det är vad dessa. H. filerna gör. 1375 01:03:31,630 --> 01:03:33,850 Och så om du ska göra din egen funktion, har du att se 1376 01:03:33,850 --> 01:03:36,690 du sätter den prototyp där uppe. 1377 01:03:36,690 --> 01:03:38,380 Eventuella frågor om detta hittills? 1378 01:03:38,380 --> 01:03:41,630 1379 01:03:41,630 --> 01:03:42,490 >> Kommandoradsargument. 1380 01:03:42,490 --> 01:03:44,780 Detta är vad vi kommer att avsluta på, och sedan förhoppningsvis kommer vi 1381 01:03:44,780 --> 01:03:46,180 klämma in lite pset. 1382 01:03:46,180 --> 01:03:48,700 Jag vet inte om vi kommer att kunna pressa att på grund av tid, men 1383 01:03:48,700 --> 01:03:51,560 med er som är här, och om du killar vill säga efter för lite, vi 1384 01:03:51,560 --> 01:03:54,290 kan gå över det utanför. 1385 01:03:54,290 --> 01:03:56,020 Men vi kommer att avsluta med kommandoradsargument 1386 01:03:56,020 --> 01:03:58,510 för de sista 15 minuterna. 1387 01:03:58,510 --> 01:03:59,930 Vi vaken, Michael? 1388 01:03:59,930 --> 01:04:01,180 Du är vaken? 1389 01:04:01,180 --> 01:04:01,660 Bra. 1390 01:04:01,660 --> 01:04:03,760 Jag vet inte om du sover med stängda ögon. 1391 01:04:03,760 --> 01:04:05,800 Det skulle vara knepigt. 1392 01:04:05,800 --> 01:04:07,180 >> Kommandoradsargument. 1393 01:04:07,180 --> 01:04:10,430 De är ett sätt att överföra information i ett program. 1394 01:04:10,430 --> 01:04:12,780 Så småningom kommer vi att stöta på andra. 1395 01:04:12,780 --> 01:04:15,600 Men i huvudsak kommer vi att sluta skriver int main (void) om vi vill 1396 01:04:15,600 --> 01:04:16,720 ta vissa kommandoradsargument. 1397 01:04:16,720 --> 01:04:19,850 Vi kommer att skriva denna sak kallas int main (int argc, 1398 01:04:19,850 --> 01:04:22,430 string argv, konsoler. 1399 01:04:22,430 --> 01:04:23,710 Det är förvirrande. 1400 01:04:23,710 --> 01:04:26,070 Det är en massa bokstäver som inte är i human engelska, så vi kommer att 1401 01:04:26,070 --> 01:04:27,680 packa dem just nu. 1402 01:04:27,680 --> 01:04:30,450 >> Argc står för argument count - 1403 01:04:30,450 --> 01:04:32,600 och igen, alla dessa kommer finnas tillgängligt på nätet - 1404 01:04:32,600 --> 01:04:34,280 och det är antalet argument. 1405 01:04:34,280 --> 01:04:37,940 Argv står för argumentet vektor, och de är argumenten själva. 1406 01:04:37,940 --> 01:04:38,830 Det är en array av strängar. 1407 01:04:38,830 --> 01:04:40,880 Vi har faktiskt sett en array av strängar innan idag. 1408 01:04:40,880 --> 01:04:44,390 Vi skapade en i den sista program som vi kodat. 1409 01:04:44,390 --> 01:04:45,720 >> Så här är ett exempel. 1410 01:04:45,720 --> 01:04:50,230 Jag skriver. / Ohai CS50 avsnitt på min kommandorad. 1411 01:04:50,230 --> 01:04:54,090 Argc i detta fall är lika med 3. 1412 01:04:54,090 --> 01:05:01,170 Argv bracket 0 är ohai, argv bracket 1 är CS50 är argv fäste 2 avsnitt. 1413 01:05:01,170 --> 01:05:05,160 Återigen, är argc antalet argument, och att resa dig upp lite 1414 01:05:05,160 --> 01:05:08,710 bit, räknar vi alltid namnet på den funktion som det första argumentet. 1415 01:05:08,710 --> 01:05:12,350 Så i detta fall finns det tre argument, namnet på den funktion 1416 01:05:12,350 --> 01:05:14,590 och sedan de två som jag skrivit i. 1417 01:05:14,590 --> 01:05:18,900 >> Därefter kommer vi att rädda dem argument själva i argv. 1418 01:05:18,900 --> 01:05:22,690 Och igen, precis som vi såg tidigare, gjorde vi detta i förra programmet vi kodat. 1419 01:05:22,690 --> 01:05:27,110 Du kan gå igenom rad ArGV och få dessa strängar. 1420 01:05:27,110 --> 01:05:28,830 Det är i huvudsak vad vi gjorde på I slutet av vårt sista program. 1421 01:05:28,830 --> 01:05:33,190 Vi valde ett slumpmässigt namn och gick sedan till Namnen fäste oavsett och tryckt 1422 01:05:33,190 --> 01:05:34,580 ut strängen finns där. 1423 01:05:34,580 --> 01:05:39,870 1424 01:05:39,870 --> 01:05:43,670 >> Ovanpå bara en array, eftersom strängar själva är arrayer, som 1425 01:05:43,670 --> 01:05:46,320 talade om, kan du ha arrayer av matriser, som är 1426 01:05:46,320 --> 01:05:48,530 huvudsak vad argv är. 1427 01:05:48,530 --> 01:05:51,370 Ett sätt du kan tänka detta är rader och kolumner. 1428 01:05:51,370 --> 01:05:54,750 Jag kan dra det just nu. 1429 01:05:54,750 --> 01:05:57,370 Så argv - 1430 01:05:57,370 --> 01:05:58,630 det är inte radera. 1431 01:05:58,630 --> 01:05:59,880 Låt oss dra i ohai. 1432 01:05:59,880 --> 01:06:09,320 1433 01:06:09,320 --> 01:06:12,490 >> Så om jag skrev in, ohai CS50 avsnitt, Jag kommer att stympa 1434 01:06:12,490 --> 01:06:14,520 avsnittet för detta exempel. 1435 01:06:14,520 --> 01:06:29,026 Men i huvudsak, min multi-dimensionell array, ohai CS50, 1436 01:06:29,026 --> 01:06:32,200 vi ska göra sekt. 1437 01:06:32,200 --> 01:06:34,610 Så här kan jag komma åt - 1438 01:06:34,610 --> 01:06:40,930 1439 01:06:40,930 --> 01:06:45,710 om jag bara ge argv ett nummer - 1440 01:06:45,710 --> 01:06:46,390 Detta är fel. 1441 01:06:46,390 --> 01:06:49,020 Vad är fel i detta diagram? 1442 01:06:49,020 --> 01:06:49,690 >> STUDENT: Börja vid noll. 1443 01:06:49,690 --> 01:06:50,350 >> JASON Hirschhorn: Det bör börja med noll. 1444 01:06:50,350 --> 01:06:52,940 Jag borde nog också rotera det, men eftersom jag har redan dragit det på, jag 1445 01:06:52,940 --> 01:06:54,120 kommer att lämna den på det för nu. 1446 01:06:54,120 --> 01:06:55,160 Men det börjar på noll. 1447 01:06:55,160 --> 01:06:56,410 Det är rätt. 1448 01:06:56,410 --> 01:06:58,980 1449 01:06:58,980 --> 01:07:00,120 Jag är ledsen om det är litet. 1450 01:07:00,120 --> 01:07:01,370 Kan ni sorts se? 1451 01:07:01,370 --> 01:07:03,620 1452 01:07:03,620 --> 01:07:06,670 Så om jag gör argv 0, kommer jag få alla ohai. 1453 01:07:06,670 --> 01:07:08,555 Om jag gör argv 1, ska jag få alla CS50. 1454 01:07:08,555 --> 01:07:10,720 Om jag gör argv 2, ska jag få alla sekt. 1455 01:07:10,720 --> 01:07:13,370 >> Men nu, som sagt, strängar är arrayer själva. 1456 01:07:13,370 --> 01:07:19,740 Så vad jag kan göra är att jag kan behandla detta som en flerdimensionell array, och jag 1457 01:07:19,740 --> 01:07:24,190 kan göra något i stil med argv 0, 0, vilket ger mig bara 1458 01:07:24,190 --> 01:07:25,400 tecken 0. 1459 01:07:25,400 --> 01:07:28,760 Argv 0, 1, vilket ger mig bara timmar. 1460 01:07:28,760 --> 01:07:33,960 Argv 1, 3, vilket ger mig bara detta 0 här nere i CS50. 1461 01:07:33,960 --> 01:07:37,690 >> Så därför att strängar själva är arrayer, vi sätter 1462 01:07:37,690 --> 01:07:38,540 det i en annan matris. 1463 01:07:38,540 --> 01:07:42,850 Vi har nu matris med matriser, och vi kan indexera in i vår första samling och 1464 01:07:42,850 --> 01:07:44,840 då index in i vår andra array. 1465 01:07:44,840 --> 01:07:48,650 Och som du förväntar dig, gör vi det genom att bara sätta dessa två - 1466 01:07:48,650 --> 01:07:51,760 Vi gör hakparenteserna bara intill varandra. 1467 01:07:51,760 --> 01:07:58,930 Så i detta exempel är argv en CS50 och argv 1, 2, som vi sa, är bara 5. 1468 01:07:58,930 --> 01:08:02,120 Har någon några frågor om flerdimensionella arrayer? 1469 01:08:02,120 --> 01:08:05,090 1470 01:08:05,090 --> 01:08:06,380 Ni gör awesome. 1471 01:08:06,380 --> 01:08:07,750 Söt. 1472 01:08:07,750 --> 01:08:11,980 >> Så vi har ett annat program just här, och detta är den sista sak vi 1473 01:08:11,980 --> 01:08:13,690 kommer att göra just nu. 1474 01:08:13,690 --> 01:08:18,160 Så jag vill att du ska skriva ett program som tar en användarens fullständiga namn, två och endast 1475 01:08:18,160 --> 01:08:21,649 två kommandoradsargument, och slutligen, skriva ut en hälsning till 1476 01:08:21,649 --> 01:08:24,180 användaren som innehåller deras förnamn. 1477 01:08:24,180 --> 01:08:27,800 Så varför inte du ta tre eller fyra minuter att göra detta, och sedan går vi 1478 01:08:27,800 --> 01:08:29,870 över den som en grupp, och då ska vi slå upp? 1479 01:08:29,870 --> 01:09:44,189 1480 01:09:44,189 --> 01:09:48,084 >> Och återigen, här, när vi säger ta en användarens fullständiga namn per beskrivningen 1481 01:09:48,084 --> 01:09:54,473 av detta problem, bör det vara kommandot line argument, inte med hjälp av få sträng. 1482 01:09:54,473 --> 01:09:55,450 Ja, Marcus? 1483 01:09:55,450 --> 01:09:58,260 >> STUDENT: Så när du säger två kommandot line argument, är att förutom 1484 01:09:58,260 --> 01:10:00,000 . den / springa, eller - 1485 01:10:00,000 --> 01:10:02,980 >> JASON Hirschhorn: Bra fråga. 1486 01:10:02,980 --> 01:10:05,995 Gör, inklusive. / Run, tre kommandoradsargument. 1487 01:10:05,995 --> 01:10:08,550 1488 01:10:08,550 --> 01:10:11,320 Eller inklusive. / Personlig, i detta fall, eftersom det är 1489 01:10:11,320 --> 01:10:12,360 namnet på denna fil. 1490 01:10:12,360 --> 01:10:13,300 Så argc skulle vara tre. 1491 01:10:13,300 --> 01:10:19,480 Men jag vill bara två argument ges till programmet. 1492 01:10:19,480 --> 01:10:20,400 Jag bör ange att. 1493 01:10:20,400 --> 01:10:23,380 Jag ska göra den förändringen innan jag lägger dessa och skicka dem till er. 1494 01:10:23,380 --> 01:10:32,747 1495 01:10:32,747 --> 01:10:34,740 >> STUDENT: Vad händer om du ha ett mellannamn? 1496 01:10:34,740 --> 01:10:36,800 >> JASON Hirschhorn: Om du har en mitten namn, du är ute på tur. 1497 01:10:36,800 --> 01:10:38,050 Jag är ledsen. 1498 01:10:38,050 --> 01:10:40,320 1499 01:10:40,320 --> 01:10:43,744 Eller om du bara gå med Shakira, du är också ute på tur. 1500 01:10:43,744 --> 01:10:55,672 1501 01:10:55,672 --> 01:10:56,425 Yeah? 1502 01:10:56,425 --> 01:11:00,760 >> STUDENT: Så när folk inte har cs50.h, inte definierar de argv 1503 01:11:00,760 --> 01:11:03,450 som char stjärna argv? 1504 01:11:03,450 --> 01:11:05,160 Eller kallas det fortfarande sträng argv? 1505 01:11:05,160 --> 01:11:07,430 >> JASON Hirschhorn: Ja. 1506 01:11:07,430 --> 01:11:10,480 Så sträng, återigen, maskera vi över vad exakt som händer där. 1507 01:11:10,480 --> 01:11:14,040 Det kommer att packas upp kanske på onsdag, men snart. 1508 01:11:14,040 --> 01:11:16,380 Det är som stödhjul. 1509 01:11:16,380 --> 01:11:18,370 Eftersom grunden är det samma sak. 1510 01:11:18,370 --> 01:11:37,040 1511 01:11:37,040 --> 01:11:42,560 >> Så låt oss ta en minut till programmet detta, och då kommer vi att gå över 1512 01:11:42,560 --> 01:11:45,130 det som en grupp, och sedan som sagt, klä dig. 1513 01:11:45,130 --> 01:11:47,770 Och jag tror att de fortfarande är extra godis, så ni bör förhoppningsvis ta 1514 01:11:47,770 --> 01:11:49,790 det, eller ta det. 1515 01:11:49,790 --> 01:12:20,380 1516 01:12:20,380 --> 01:12:22,560 >> Ledsen om du fortfarande skriva, men jag vill dyka in och vi 1517 01:12:22,560 --> 01:12:24,010 kan avsluta det tillsammans. 1518 01:12:24,010 --> 01:12:30,470 Så jag har skrivit på, # include cs50.h, # include stdio.h. 1519 01:12:30,470 --> 01:12:33,970 int main (void), klammerparentes, lockigt stag, insida tre rader 1520 01:12:33,970 --> 01:12:38,760 pseudokod, ta en användarens fullständiga namn, två och endast två kommandoraden 1521 01:12:38,760 --> 01:12:42,670 argument, skriva ut en hälsning till användaren som innehåller deras förnamn. 1522 01:12:42,670 --> 01:12:45,810 >> Så det första, ta användarens fullständiga namn. 1523 01:12:45,810 --> 01:12:47,290 Vem kan hjälpa mig att ta en användarens fullständiga namn? 1524 01:12:47,290 --> 01:12:50,882 1525 01:12:50,882 --> 01:12:52,780 Hur gör jag den delen? 1526 01:12:52,780 --> 01:12:57,685 1527 01:12:57,685 --> 01:12:59,500 Har ni göra det första delen? 1528 01:12:59,500 --> 01:13:02,587 1529 01:13:02,587 --> 01:13:03,894 Ta en användarens fullständiga namn. 1530 01:13:03,894 --> 01:13:05,860 Jo, för att en kommandorad argument, vad ska jag skriva? 1531 01:13:05,860 --> 01:13:09,624 Vad ska jag byta om min funktionsdeklarationen? 1532 01:13:09,624 --> 01:13:11,140 >> STUDENT: Du vill inte det att vara ogiltiga längre. 1533 01:13:11,140 --> 01:13:11,410 >> JASON Hirschhorn: Exakt. 1534 01:13:11,410 --> 01:13:12,385 Jag vill inte att det ska vara ogiltig. 1535 01:13:12,385 --> 01:13:13,630 Vad vill jag att det ska? 1536 01:13:13,630 --> 01:13:14,650 >> STUDENT: Int argc. 1537 01:13:14,650 --> 01:13:15,720 >> JASON Hirschhorn: Int argc. 1538 01:13:15,720 --> 01:13:17,430 >> STUDENT: String argv. 1539 01:13:17,430 --> 01:13:19,055 >> JASON Hirschhorn: String argv. 1540 01:13:19,055 --> 01:13:19,705 >> STUDENT: Konsol, fäste. 1541 01:13:19,705 --> 01:13:20,070 >> JASON Hirschhorn: Konsol, bracket. 1542 01:13:20,070 --> 01:13:21,780 Det är precis rätt, och det är faktiskt hur jag ska få 1543 01:13:21,780 --> 01:13:22,820 användarens fullständiga namn. 1544 01:13:22,820 --> 01:13:24,070 De kommer att lägga den där. 1545 01:13:24,070 --> 01:13:27,720 1546 01:13:27,720 --> 01:13:28,780 Så att man har gjort. 1547 01:13:28,780 --> 01:13:30,780 Så nu vill jag två och endast två kommandoradsargument. 1548 01:13:30,780 --> 01:13:35,065 Så Noa, vad är ett sätt jag kan kontrollera antalet kommandot 1549 01:13:35,065 --> 01:13:36,315 line argument jag har? 1550 01:13:36,315 --> 01:13:39,676 1551 01:13:39,676 --> 01:13:40,725 >> STUDENT: Du gör en if-sats. 1552 01:13:40,725 --> 01:13:42,270 >> JASON Hirschhorn: Om uttalande, exakt. 1553 01:13:42,270 --> 01:13:44,830 Vad vill jag då tillståndet? 1554 01:13:44,830 --> 01:13:48,370 >> STUDENT: Om argc större än 3. 1555 01:13:48,370 --> 01:13:52,485 >> JASON Hirschhorn: Om argc är större än 3. 1556 01:13:52,485 --> 01:13:58,430 Om argc större än 3, vad gör jag? 1557 01:13:58,430 --> 01:13:59,400 >> STUDENT: Return 1. 1558 01:13:59,400 --> 01:14:01,856 >> JASON Hirschhorn: Avkastning 1. 1559 01:14:01,856 --> 01:14:04,050 Kommer att se till att jag har två och endast två? 1560 01:14:04,050 --> 01:14:07,280 1561 01:14:07,280 --> 01:14:07,820 >> STUDENT: Nej 1562 01:14:07,820 --> 01:14:13,110 Om argc är större än 3 och mindre än 2. 1563 01:14:13,110 --> 01:14:17,770 >> JASON Hirschhorn: Om argc är större än 3 och argc är mindre än 2. 1564 01:14:17,770 --> 01:14:21,540 Vad är ett sätt jag kan skriva detta i just en linje, eller utan att använda det 1565 01:14:21,540 --> 01:14:23,890 och boolesk operator? 1566 01:14:23,890 --> 01:14:25,942 >> STUDENT: Det är inte lika med 2. 1567 01:14:25,942 --> 01:14:28,790 >> JASON Hirschhorn: Om argc inte är lika med 2. 1568 01:14:28,790 --> 01:14:29,260 Exakt. 1569 01:14:29,260 --> 01:14:34,890 Så om argc inte är lika med 2, som kommer att ge mig det här programmet, 1570 01:14:34,890 --> 01:14:37,250 personifierat, när jag kör den, och som kommer att ge mig hur många 1571 01:14:37,250 --> 01:14:38,740 kommandoradsargument? 1572 01:14:38,740 --> 01:14:42,110 Hur många kommer jag leta efter? 1573 01:14:42,110 --> 01:14:42,370 >> Ursäkta. 1574 01:14:42,370 --> 01:14:43,400 Låt mig omformulera det. 1575 01:14:43,400 --> 01:14:46,620 Om argc = 2, hur många saker användaren skriver in på linjen? 1576 01:14:46,620 --> 01:14:47,500 >> STUDENT: One. 1577 01:14:47,500 --> 01:14:49,120 >> JASON Hirschhorn: Bara en. 1578 01:14:49,120 --> 01:14:50,430 Så innan, du hade rätt, Noah. 1579 01:14:50,430 --> 01:14:52,192 Vad behöver jag faktiskt att sätta dit? 1580 01:14:52,192 --> 01:14:53,640 >> STUDENT: Det motsvarar 3. 1581 01:14:53,640 --> 01:14:55,970 >> JASON Hirschhorn: argc inte är lika med 3. 1582 01:14:55,970 --> 01:15:00,250 Jag vill lika 3 eftersom jag vill personlig plus de andra två. 1583 01:15:00,250 --> 01:15:02,560 Så om argc inte lika 3, returnera 1. 1584 01:15:02,560 --> 01:15:04,475 Varför sa du tillbaka 1? 1585 01:15:04,475 --> 01:15:06,180 >> Elev: Därför att betyder att det är fel. 1586 01:15:06,180 --> 01:15:08,420 >> JASON Hirschhorn: Det betyder att det är fel, och vad är det som kommer att göra? 1587 01:15:08,420 --> 01:15:10,360 >> STUDENT: Re-fråga användaren. 1588 01:15:10,360 --> 01:15:11,940 >> JASON Hirschhorn: Det kommer att sluta programmet, så det kommer att köra 1589 01:15:11,940 --> 01:15:14,520 igen, men vi har inte något in här för att be om dem igen. 1590 01:15:14,520 --> 01:15:14,840 Jag bad inte om det. 1591 01:15:14,840 --> 01:15:15,990 Så det är precis rätt. 1592 01:15:15,990 --> 01:15:17,680 Avkastning 1 bara avslutas programmet. 1593 01:15:17,680 --> 01:15:18,520 Bra. 1594 01:15:18,520 --> 01:15:21,600 >> Och skriva ut en hälsning till användaren som innehåller deras förnamn. 1595 01:15:21,600 --> 01:15:24,010 Hur kan jag göra det? 1596 01:15:24,010 --> 01:15:25,990 Anna? 1597 01:15:25,990 --> 01:15:26,580 >> STUDENT: Printf. 1598 01:15:26,580 --> 01:15:27,785 >> JASON Hirschhorn: Printf. 1599 01:15:27,785 --> 01:15:28,640 >> STUDENTEN (" 1600 01:15:28,640 --> 01:15:30,460 >> JASON Hirschhorn: ( 1601 01:15:30,460 --> 01:15:31,600 >> STUDENT: "hello 1602 01:15:31,600 --> 01:15:33,210 >> JASON Hirschhorn: "hello 1603 01:15:33,210 --> 01:15:34,800 >> STUDENT:% s 1604 01:15:34,800 --> 01:15:37,230 >> JASON Hirschhorn:% s 1605 01:15:37,230 --> 01:15:38,840 >> STUDENTEN / n 1606 01:15:38,840 --> 01:15:41,030 >> JASON Hirschhorn: / n 1607 01:15:41,030 --> 01:15:43,120 >> STUDENT: ", 1608 01:15:43,120 --> 01:15:45,130 >> JASON Hirschhorn: ", 1609 01:15:45,130 --> 01:15:46,620 >> STUDENT: argv 1610 01:15:46,620 --> 01:15:47,080 >> JASON Hirschhorn: Förlåt? 1611 01:15:47,080 --> 01:15:47,750 >> STUDENT: argv 1612 01:15:47,750 --> 01:15:48,840 >> JASON Hirschhorn: argv 1613 01:15:48,840 --> 01:15:50,190 >> STUDENT: Square fästen 1. 1614 01:15:50,190 --> 01:15:51,230 >> JASON Hirschhorn: Hakparenteser? 1615 01:15:51,230 --> 01:15:51,870 >> STUDENTEN 1. 1616 01:15:51,870 --> 01:15:54,050 >> JASON Hirschhorn: 1. 1617 01:15:54,050 --> 01:15:55,850 >> STUDENT: Och) semikolon. 1618 01:15:55,850 --> 01:15:58,290 >> JASON Hirschhorn:) semikolon. 1619 01:15:58,290 --> 01:16:00,250 Låt oss köra. 1620 01:16:00,250 --> 01:16:03,730 Gör personifierade. 1621 01:16:03,730 --> 01:16:06,392 . / Personlig. 1622 01:16:06,392 --> 01:16:07,420 Det slutade precis. 1623 01:16:07,420 --> 01:16:10,390 Varför tog det sluta? 1624 01:16:10,390 --> 01:16:11,310 >> STUDENT: Du har inte lagt några argument. 1625 01:16:11,310 --> 01:16:12,560 >> JASON Hirschhorn: Jag gjorde inte sätta några argument i. 1626 01:16:12,560 --> 01:16:16,360 1627 01:16:16,360 --> 01:16:16,920 Ser bra ut. 1628 01:16:16,920 --> 01:16:18,130 Ni bekänt det. 1629 01:16:18,130 --> 01:16:22,420 Så återigen, du gick in i argv och du kontrolleras i början argc. 1630 01:16:22,420 --> 01:16:24,390 De är två viktiga saker att komma ihåg. 1631 01:16:24,390 --> 01:16:29,250 Så i våra två sista minuter innan vi lämnar, kommer vi inte få till pset två, men 1632 01:16:29,250 --> 01:16:33,585 som sagt, om du vill bo efter i 10 minuter, skulle jag han glad att gå 1633 01:16:33,585 --> 01:16:35,710 över med er logiken för dessa problemområden uppsättningar. 1634 01:16:35,710 --> 01:16:37,930 Vi hade en hel del att täcka idag så jag fick inte till dem. 1635 01:16:37,930 --> 01:16:39,820 Generellt tycker jag att inkludera att i slutet. 1636 01:16:39,820 --> 01:16:42,150 Så om du vill stanna kvar, stanna kvar i 10 minuter. 1637 01:16:42,150 --> 01:16:42,990 Vi kommer att göra det. 1638 01:16:42,990 --> 01:16:46,250 >> Då, som jag nämnde i början, pset noll och ett, får vi att 1639 01:16:46,250 --> 01:16:48,040 återkoppling tillbaka till dig som snart som möjligt. 1640 01:16:48,040 --> 01:16:51,260 Målet är att få pset en återkoppling, kommentarerna delen, 1641 01:16:51,260 --> 01:16:52,850 innan pset två beror. 1642 01:16:52,850 --> 01:16:56,730 Så om du gjort några misstag eller stilistiskt, skulle det vara bättre, 1643 01:16:56,730 --> 01:17:01,330 du har den informationen så att du kommer inte att göra samma saker i pset två. 1644 01:17:01,330 --> 01:17:06,140 Och sedan i framtiden, kommer du att få alla av din pset feedback och kommentarer 1645 01:17:06,140 --> 01:17:08,190 tillbaka innan nästa gång det är dags. 1646 01:17:08,190 --> 01:17:12,695 >> Slutligen, om jag kunde sätta i en annan kontakt för återkoppling. 1647 01:17:12,695 --> 01:17:13,935 Detta är ditt första avsnittet. 1648 01:17:13,935 --> 01:17:15,920 Det var min första avsnittet undervisning i år. 1649 01:17:15,920 --> 01:17:16,930 Gå dit. 1650 01:17:16,930 --> 01:17:19,800 Skriv grejer, bra och dåliga, och jag kommer att använda den för att göra 1651 01:17:19,800 --> 01:17:21,320 avsnitt bättre nästa gång. 1652 01:17:21,320 --> 01:17:24,870 Och sist, igen, om du behöver någonting, låt mig veta. 1653 01:17:24,870 --> 01:17:26,410 Jag är mer än gärna hjälpa er. 1654 01:17:26,410 --> 01:17:28,420 Om du bara vill ha godis, jag kommer att ha extra godis. 1655 01:17:28,420 --> 01:17:29,800 Jag är glad att föra den till dig. 1656 01:17:29,800 --> 01:17:31,190 >> Detta kommer att bli en fantastisk kurs. 1657 01:17:31,190 --> 01:17:34,900 Detta är en av, om inte min favorit Naturligtvis har jag tagit i hela mitt liv, 1658 01:17:34,900 --> 01:17:37,220 och jag hoppas att det kommer att vara att underbart för dig. 1659 01:17:37,220 --> 01:17:40,090 Så jag vill göra allt i min makt att göra det som häftigt för dig. 1660 01:17:40,090 --> 01:17:46,590 Jag kommer att skicka ut ett mail om du är I min avdelning eller Noah, och 1661 01:17:46,590 --> 01:17:50,310 kommer att försöka schemalägga med var och en av ni en gång för att checka in under det 1662 01:17:50,310 --> 01:17:53,820 nästa par veckor så jag kan få en känsla för vad din CS bakgrund är, 1663 01:17:53,820 --> 01:17:58,170 och det kommer också att hjälpa mig skräddarsy dessa sektioner för att bättre passa dina behov. 1664 01:17:58,170 --> 01:17:59,740 Så det är vad jag har uppradade. 1665 01:17:59,740 --> 01:18:02,260 Återigen, jag ser dig utanför Om du vill vara där. 1666 01:18:02,260 --> 01:18:03,700 Detta var vecka två avsnitt. 1667 01:18:03,700 --> 01:18:04,950 Tack killar så mycket. 1668 01:18:04,950 --> 01:18:09,067