1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] DAVID Malan: Dette er CS50, og dette er begyndelsen af ​​uge 1. 2 00:00:12,200 --> 00:00:15,520 Hvad vi troede, vi ville gøre i dag, er at tage et kig tilbage på 3 00:00:15,520 --> 00:00:18,290 noget mange af jer har sikkert gik forbi for nogle 4 00:00:18,290 --> 00:00:20,570 tid nu og kan se en lille smule bekendt. 5 00:00:20,570 --> 00:00:23,720 Denne ting her, dette er naturligvis i - 6 00:00:23,720 --> 00:00:24,155 PUBLIKUM: Science. 7 00:00:24,155 --> 00:00:26,030 DAVID Malan: Science center. 8 00:00:26,030 --> 00:00:28,940 Så dette er faktisk en af ​​de tidligste computere 9 00:00:28,940 --> 00:00:30,220 tilbage fra 1940'erne. 10 00:00:30,220 --> 00:00:33,790 Det var en af ​​de første elektromekaniske computere 11 00:00:33,790 --> 00:00:35,730 der var i stand til særlig langt, 12 00:00:35,730 --> 00:00:38,450 selvforbrændende beregninger, og hvad vi rent faktisk ser i 13 00:00:38,450 --> 00:00:41,580 science centret er kun et lille stykke af denne ting. 14 00:00:41,580 --> 00:00:44,170 Hvad vi troede, vi ville gøre så er at tage et kig tilbage på en video 15 00:00:44,170 --> 00:00:46,670 der blev lavet nogen tid siden, at indføre denne 16 00:00:46,670 --> 00:00:47,520 ting til verden. 17 00:00:47,520 --> 00:00:50,200 Og du vil se fra musikken og stemme, som faktisk er de samme 18 00:00:50,200 --> 00:00:52,070 var meget lykkelige tider. 19 00:00:54,885 --> 00:00:59,700 >> [VIDEO PLAYBACK] 20 00:00:59,700 --> 00:01:02,490 -A triumf matematisk og mekaniske færdigheder er dette 21 00:01:02,490 --> 00:01:06,340 store nye automatiske regnemaskine på Harvard University. 22 00:01:06,340 --> 00:01:08,620 Indviklede problemer i matematik, satte igennem 23 00:01:08,620 --> 00:01:12,420 maskine i kodet form på bånd, er nøjagtigt løses i et 24 00:01:12,420 --> 00:01:15,200 brøkdel af den tid, der kræves til human 25 00:01:15,200 --> 00:01:16,450 beregning. 26 00:01:27,050 --> 00:01:30,600 Designet til at fremskynde alle former for matematiske og videnskabelige 27 00:01:30,600 --> 00:01:34,610 forskning, vil den gigantiske mekaniske hjerne arbejde for FN 28 00:01:34,610 --> 00:01:36,570 States Navy indtil krigens slutning. 29 00:01:50,280 --> 00:01:52,980 >> DAVID Malan: Så hvad du måske ikke ved er, at det var i 30 00:01:52,980 --> 00:01:56,310 samme enhed, et begreb vi alle nu tage temmelig meget 31 00:01:56,310 --> 00:01:59,300 for givet blev opfundet, nemlig en fejl. 32 00:01:59,300 --> 00:02:01,140 Så en af ​​de ingeniører, der arbejder i denne computer 33 00:02:01,140 --> 00:02:05,280 bogstaveligt fundet en lille møl i maskinen, som resulterede 34 00:02:05,280 --> 00:02:07,580 i nogle forkerte beregninger. 35 00:02:07,580 --> 00:02:10,410 Og som historien går på, at møl var tapede til denne log 36 00:02:10,410 --> 00:02:14,180 journal her, tilbage fra september 9 i 1940-noget, 37 00:02:14,180 --> 00:02:16,550 og dermed blev født for verden udtrykket "bug". 38 00:02:16,550 --> 00:02:19,880 Så fremover vi overveje bugs at være nogen form for fejl i 39 00:02:19,880 --> 00:02:23,290 programmer, uanset om de menneskeskabte eller i dette tilfælde,. insekter 40 00:02:23,290 --> 00:02:25,030 >> Så et par meddelelser, som vi går videre. 41 00:02:25,030 --> 00:02:29,160 Så CS50 har en tradition for at tilbyde Madpakker af slags på 42 00:02:29,160 --> 00:02:31,600 de fleste fredage i løbet af semesteret, hvor vi tager 30 til 43 00:02:31,600 --> 00:02:34,650 40 studerende i Fire and Ice in the Square for casual 44 00:02:34,650 --> 00:02:36,390 småsnak, taler om datalogi, 45 00:02:36,390 --> 00:02:37,420 tale om fremtiden. 46 00:02:37,420 --> 00:02:40,000 Vi inviterer alumner og venner fra industrien at chatte op 47 00:02:40,000 --> 00:02:40,690 studerende. 48 00:02:40,690 --> 00:02:44,020 Virkelig mod en ende af at gøre, hvad der er en temmelig stor klasse 49 00:02:44,020 --> 00:02:46,740 desto mere intime, mindst én gang i mens den for 50 00:02:46,740 --> 00:02:47,710 delmængder af studerende. 51 00:02:47,710 --> 00:02:50,940 Så hvis du gerne vil slutte sig til os på fredag, 01:15, gå til 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch til RSVP. 53 00:02:53,340 --> 00:02:55,840 Og vi vil gøre det recurringly, så ikke at bekymre dig, hvis du ikke er 54 00:02:55,840 --> 00:02:57,930 blandt de første 30 eller deromkring i denne uge. 55 00:02:57,930 --> 00:02:59,070 >> Så skriftklog noter. 56 00:02:59,070 --> 00:03:01,500 Et ord på de ressourcer, der nu vil begynde at stå til rådighed 57 00:03:01,500 --> 00:03:03,040 til elever i klassen. 58 00:03:03,040 --> 00:03:05,540 Så at jeres hoveder ikke behøver at være nede under forelæsninger 59 00:03:05,540 --> 00:03:08,560 skrible ned alt, hvad jeg siger og så videre, hvad vi gør 60 00:03:08,560 --> 00:03:10,765 i stedet er at tilvejebringe fra lærerstaben en 61 00:03:10,765 --> 00:03:11,920 kanoniske sæt noter. 62 00:03:11,920 --> 00:03:14,850 Så vi har en af ​​vores undervisning stipendiater, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 der sidder ned hver uge, gennemgår de videoer, og derefter 64 00:03:17,830 --> 00:03:19,730 skriver ned, hvad vi synes er en rimelig 65 00:03:19,730 --> 00:03:21,840 autoritative sæt noter. 66 00:03:21,840 --> 00:03:24,180 Og Andrew glad, også for at sætte snarky fodnoter i 67 00:03:24,180 --> 00:03:24,820 bunden. 68 00:03:24,820 --> 00:03:27,300 Så du vil forhåbentlig nyde disse som en opslagsbog for 69 00:03:27,300 --> 00:03:30,230 sjov, og også komme quiz tid, som en mulighed for at gennemgå 70 00:03:30,230 --> 00:03:31,830 hvad der skete i de enkelte foredrag. 71 00:03:31,830 --> 00:03:33,580 Så de er forbundet på foredrag siden. 72 00:03:33,580 --> 00:03:35,300 >> Problem set 0, i mellemtiden, er ude. 73 00:03:35,300 --> 00:03:37,470 Og med hensyn til de ressourcer til rådighed for dig - 74 00:03:37,470 --> 00:03:38,020 den walkthrough. 75 00:03:38,020 --> 00:03:39,730 Milo førte den første fredag. 76 00:03:39,730 --> 00:03:41,470 Det blev filmet, lagt online ved lørdag. 77 00:03:41,470 --> 00:03:44,030 Og så indse, hvis du ikke er helt sikker på hvor man skal begynde, 78 00:03:44,030 --> 00:03:47,280 til dette eller kommende p-sæt, drej altid først til den 79 00:03:47,280 --> 00:03:49,300 walkthrough eller video deraf. 80 00:03:49,300 --> 00:03:52,950 Sektionering er i gang, ved cs50.net/section er, hvor du 81 00:03:52,950 --> 00:03:54,540 skal indsende dine præferencer, hvis du ikke har 82 00:03:54,540 --> 00:03:55,880 allerede ved i dag. 83 00:03:55,880 --> 00:03:58,140 Fordi sektioner vil starte i den kommende søndag, mandag, 84 00:03:58,140 --> 00:03:58,760 og tirsdag. 85 00:03:58,760 --> 00:04:02,470 Vi gør sektioner disse tre dage, hver uge af 86 00:04:02,470 --> 00:04:03,870 semester for det meste. 87 00:04:03,870 --> 00:04:06,600 Og vi også indføre, igen, forskellige spor. 88 00:04:06,600 --> 00:04:08,270 Så vil du blive spurgt om dette sektionering formular, hvis du 89 00:04:08,270 --> 00:04:10,350 har ikke set det allerede, hvis du er blandt dem mindre 90 00:04:10,350 --> 00:04:12,800 komfortabel, mere komfortabel, eller et sted midt imellem. 91 00:04:12,800 --> 00:04:14,960 Og hvis du er slags på hegnet, generelt et eller andet sted i 92 00:04:14,960 --> 00:04:18,160 mellem er hvad de fleste studerende ender kontrol. 93 00:04:18,160 --> 00:04:19,579 Kontortid begynder i aften. 94 00:04:19,579 --> 00:04:23,020 >> Så Scratch er temmelig lav nøgle, selvom det er helt naturligt 95 00:04:23,020 --> 00:04:25,300 at løbe ind i diverse bugs, eller være usikker på, hvordan man 96 00:04:25,300 --> 00:04:26,550 gennemføre noget. 97 00:04:26,550 --> 00:04:28,880 Så indser, at vi vil begynde kontortid i denne uge. 98 00:04:28,880 --> 00:04:30,500 De vil være på Annenberg mandag, tirsdag, onsdag, 99 00:04:30,500 --> 00:04:34,300 Torsdag, fra 20:00 til 11:00 i løbet af hjernen pause. 100 00:04:34,300 --> 00:04:38,160 Øvre classmen kan komme ind, og hvis du nogensinde har problemer med at få 101 00:04:38,160 --> 00:04:40,720 i døren, fordi de vil være at føre bare snakke din vej 102 00:04:40,720 --> 00:04:42,560 i og forklare du er sammen med CS50. 103 00:04:42,560 --> 00:04:45,230 Typisk 20 til 30 af os på personalet vil være der til at hjælpe 104 00:04:45,230 --> 00:04:46,190 du en på én. 105 00:04:46,190 --> 00:04:48,980 >> Ved ankomsten ideen er denne: du vil bringe din bærbare computer, 106 00:04:48,980 --> 00:04:51,300 har du din oplader, vil vi have ekstra netledninger, 107 00:04:51,300 --> 00:04:53,320 især langs den sydlige væg af Annenberg hvor 108 00:04:53,320 --> 00:04:55,080 der er masser af stikkontakter. 109 00:04:55,080 --> 00:04:59,290 Og det vigtigste indgang til kontor timer Q & A er at gå til 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss og at skrive 111 00:05:01,690 --> 00:05:02,580 dit spørgsmål der. 112 00:05:02,580 --> 00:05:05,600 Og at mærke det med Pset 0 eller Pset 1, uanset ugen 113 00:05:05,600 --> 00:05:06,810 kunne ske at være. 114 00:05:06,810 --> 00:05:09,240 Og så, hvad vi vil gøre, er at have en tabel over undervisning stipendiater 115 00:05:09,240 --> 00:05:12,040 og kursus assistenter, generelt 8 eller 10 eller deromkring af os, 116 00:05:12,040 --> 00:05:14,430 går igennem, holder et vågent øje på tavlen, og 117 00:05:14,430 --> 00:05:16,810 plukning off spørgsmål virkelig så hurtigt som vi kan, 118 00:05:16,810 --> 00:05:19,600 henvise dig til relaterede indlæg, hvis du ikke har fundet dem 119 00:05:19,600 --> 00:05:22,220 jer selv, online referencer efter behov. 120 00:05:22,220 --> 00:05:24,280 Og så hvis der er problemer, da der uundgåeligt 121 00:05:24,280 --> 00:05:27,190 vil være, eller det bare giver det mere mening at sidde ned en på én, 122 00:05:27,190 --> 00:05:28,660 arbejde gennem problemer med nogen. 123 00:05:28,660 --> 00:05:30,810 >> Eller du bare komme i kontortiden virkelig 124 00:05:30,810 --> 00:05:31,640 brug denne tankegang. 125 00:05:31,640 --> 00:05:33,400 Du ønsker ikke at gå gennem den elektroniske formular, du 126 00:05:33,400 --> 00:05:34,410 virkelig ønsker at mødes med nogen. 127 00:05:34,410 --> 00:05:37,240 Kommunikere det til os, og hvad der vil ske er, når din 128 00:05:37,240 --> 00:05:40,620 Spørgsmålet er blevet set af et medlem af personalet, og vi 129 00:05:40,620 --> 00:05:43,660 bestemme, yup bør dette sendes til en af ​​de 20 eller 130 00:05:43,660 --> 00:05:47,800 30 teammedlemmer her lokalt, vil du se øverst til venstre denne 131 00:05:47,800 --> 00:05:51,590 lidt Indtast Queue knappen blinker på cs50.net / 132 00:05:51,590 --> 00:05:52,165 diskutere. 133 00:05:52,165 --> 00:05:55,260 Og det er at fortælle dig, at du nu er blevet inviteret, så 134 00:05:55,260 --> 00:05:56,880 til at tale, for at indtaste køen. 135 00:05:56,880 --> 00:05:59,090 Og ved at klikke på denne knap, vil dit navn og derefter vises på 136 00:05:59,090 --> 00:06:02,660 en iPad, at CS50 greeter, en af ​​kursets hoveder, vil 137 00:06:02,660 --> 00:06:05,250 afholde nær ved indgangen til Annenberg, som så vil 138 00:06:05,250 --> 00:06:08,630 ser som afbildet her, de studerende, der har spørgsmål om 139 00:06:08,630 --> 00:06:11,630 venstre, de medarbejdere, der er til stede i højre side. 140 00:06:11,630 --> 00:06:14,830 Og med et klik på venstre og højre, vil din web browser 141 00:06:14,830 --> 00:06:18,610 begynder at blinke, så snart f.eks Professor McGonnagal 142 00:06:18,610 --> 00:06:21,460 er klar til at se dig på en bestemt tabel i Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Så vi gjorde nogle af det sidste år. 144 00:06:23,340 --> 00:06:25,430 Vi har genstartet kontortid og 145 00:06:25,430 --> 00:06:26,980 igen gennemført en stor del af softwaren. 146 00:06:26,980 --> 00:06:29,940 Så indse, at dette vil blive varme op i denne uge. 147 00:06:29,940 --> 00:06:32,970 Men også indse også, i de forløbne år, som du måske har hørt 148 00:06:32,970 --> 00:06:35,710 fra venner, havde kontortid faktisk 50 til 149 00:06:35,710 --> 00:06:37,040 150 studerende på én gang. 150 00:06:37,040 --> 00:06:39,300 Og det er simpelthen ikke muligt for os at håndtere, at 151 00:06:39,300 --> 00:06:42,060 effektivt, en på én, hele aftenen. 152 00:06:42,060 --> 00:06:44,570 Og så, hvad vi egentlig vil forsøge at gøre dette år er 153 00:06:44,570 --> 00:06:46,590 udnytte det faktum, at en masse spørgsmål er 154 00:06:46,590 --> 00:06:49,050 ofte stillet og kan ofte bedre besvaret 155 00:06:49,050 --> 00:06:50,030 asynkront. 156 00:06:50,030 --> 00:06:52,140 Så du kan sortere i tænke igennem de ansattes reaktion, 157 00:06:52,140 --> 00:06:54,360 og vi kan tænke igennem din kode, uden den opvarmede 158 00:06:54,360 --> 00:06:57,050 tryk nødvendigvis kæmper 159 00:06:57,050 --> 00:06:58,210 igennem den side om side. 160 00:06:58,210 --> 00:07:00,980 Så vi anslår, at omkring en tredjedel eller halvdelen af ​​spørgsmålene 161 00:07:00,980 --> 00:07:03,500 vil blive afsendt i person, og vi vil forsøge at plukke ud som 162 00:07:03,500 --> 00:07:05,530 mange som en halv eller mere elektronisk, 163 00:07:05,530 --> 00:07:06,710 i kontortiden. 164 00:07:06,710 --> 00:07:08,070 Og vi vil fortsætte med at bruge Diskuter 165 00:07:08,070 --> 00:07:09,990 hele ugen så godt. 166 00:07:09,990 --> 00:07:12,680 >> Og endelig indser, at dette kursus kan tages bestået / ikke bestået. 167 00:07:12,680 --> 00:07:16,230 Så hvis du er på hegnet eller bare tror, ​​at du virkelig 168 00:07:16,230 --> 00:07:18,650 ikke sikker på, om dette er verden for dig, eller det er virkelig 169 00:07:18,650 --> 00:07:21,310 helt fremmed for dig, indse, at dette er en vidunderlig måde 170 00:07:21,310 --> 00:07:24,840 for at få nogle tillid, som at træde ind i 171 00:07:24,840 --> 00:07:26,780 klasse, som jeg gjorde ærligt år siden. 172 00:07:26,780 --> 00:07:28,630 Og så har fem uger til at sortere i tal ud for 173 00:07:28,630 --> 00:07:30,850 dig selv, hvis du ønsker at bo bestået / ikke bestået, skifte til et brev 174 00:07:30,850 --> 00:07:31,800 klasse, eller lignende. 175 00:07:31,800 --> 00:07:34,050 Og typisk hvad bestået / ikke bestået gør, tror jeg, for de studerende er 176 00:07:34,050 --> 00:07:36,700 at hvis du lægger i, at 10 timer, 20 timer, hvad det 177 00:07:36,700 --> 00:07:38,830 kan være på nogle problemer, og du banke hovedet 178 00:07:38,830 --> 00:07:39,690 mod væggen, 179 00:07:39,690 --> 00:07:41,750 og du virkelig kan bare ikke jage noget ned, og du 180 00:07:41,750 --> 00:07:44,230 har så mange andre ting, du skal gøre, ærligt, hvad jeg 181 00:07:44,230 --> 00:07:46,070 tænke bestået / ikke bestået, er det tager brodden af ​​af 182 00:07:46,070 --> 00:07:47,250 situationer som denne. 183 00:07:47,250 --> 00:07:49,350 Hvor du har taget ting 90% af vejen. 184 00:07:49,350 --> 00:07:50,830 Du ved, det er ikke helt perfekt. 185 00:07:50,830 --> 00:07:52,950 Men du fik en masse ud af det, alligevel. 186 00:07:52,950 --> 00:07:55,440 Så overveje bestået / ikke bestået med at du får at 187 00:07:55,440 --> 00:07:57,590 mental model, måske. 188 00:07:57,590 --> 00:08:00,680 >> Okay, så i sidste uge vi dove i Scratch, og vi 189 00:08:00,680 --> 00:08:03,610 talte om programmering på et ret højt grafisk niveau. 190 00:08:03,610 --> 00:08:05,340 Og i dag har vi gøre overgangen til et sprog 191 00:08:05,340 --> 00:08:08,300 kaldet C, et lavere niveau programmeringssprog oven på 192 00:08:08,300 --> 00:08:11,260 som mange moderne sprog er nu bygget, herunder nogle 193 00:08:11,260 --> 00:08:13,010 af dem, vi vil bruge til udtryk udgang. 194 00:08:13,010 --> 00:08:15,530 Og syntaktisk, hvordan de ser ud 195 00:08:15,530 --> 00:08:17,330 er alle temmelig ens. 196 00:08:17,330 --> 00:08:19,080 Så lad os begynde at gøre denne overgang her. 197 00:08:19,080 --> 00:08:21,730 Så det var et program i sidste uge, var den enkleste 198 00:08:21,730 --> 00:08:22,910 Hello World-programmer. 199 00:08:22,910 --> 00:08:25,560 Det er simpelthen udskrives til skærmen hej verden, med en 200 00:08:25,560 --> 00:08:27,650 lille taleboble kommer ud af katten. 201 00:08:27,650 --> 00:08:30,590 Tja, hvis vi begynder nu at omsætte dette til en anden 202 00:08:30,590 --> 00:08:33,419 sprog, indse, at de ideer, i dag og på onsdag 203 00:08:33,419 --> 00:08:36,450 er identiske, men syntaksen begynder at ændre sig. 204 00:08:36,450 --> 00:08:39,370 Så mens vi i sidste uge havde, da grønt flag klikket, siger 205 00:08:39,370 --> 00:08:40,340 hej verden. 206 00:08:40,340 --> 00:08:43,870 I dag vil vi have int, main, ugyldig, printf, 207 00:08:43,870 --> 00:08:46,350 tilbagevenden med nogle andre syntaks der samt. 208 00:08:46,350 --> 00:08:49,200 Krøllede parenteser og parenteser, og citater, og whatnot. 209 00:08:49,200 --> 00:08:54,520 Men indse, at kernen i idéen her er udskrivningen, 210 00:08:54,520 --> 00:08:58,470 og i sidste ende det faktum, at main nu vil være 211 00:08:58,470 --> 00:09:00,770 synonymt med start af et program. 212 00:09:00,770 --> 00:09:04,250 Main vil være der, hvor det grønne flag sparker ting ud. 213 00:09:04,250 --> 00:09:06,390 >> Så lad os nu drille hinanden nogle af de byggesten her 214 00:09:06,390 --> 00:09:08,650 før vi dykke ned i nogle konkrete eksempler. 215 00:09:08,650 --> 00:09:11,620 Så vi kaldte det en erklæring i sidste uge, hvorved det er bare 216 00:09:11,620 --> 00:09:12,470 en instruktion. 217 00:09:12,470 --> 00:09:15,660 Gør dette - i dette tilfælde, hej verden sige. 218 00:09:15,660 --> 00:09:18,400 Godt i C, hvis vi ser på netop denne linje, det er sådan vi er 219 00:09:18,400 --> 00:09:20,920 vil begynde at udtrykke denne særlige puslespilsbrik: 220 00:09:20,920 --> 00:09:24,780 printf ("Hello World");. 221 00:09:24,780 --> 00:09:27,330 Og nu vil vi drille dem fra hinanden mere og mere over tid, 222 00:09:27,330 --> 00:09:29,330 men indse, at der er et mønster her. 223 00:09:29,330 --> 00:09:31,870 Så man har vi denne ting kaldet printf, som er 224 00:09:31,870 --> 00:09:34,310 det væsentlige analog med ordet Sig. 225 00:09:34,310 --> 00:09:35,800 Det er, hvad det kommer til at gøre. 226 00:09:35,800 --> 00:09:37,870 Printf, og f her betyder "formateret". 227 00:09:37,870 --> 00:09:39,270 Så det bare betyder, at du kan indsætte 228 00:09:39,270 --> 00:09:41,600 forskellige æstetiske detaljer. 229 00:09:41,600 --> 00:09:43,770 Så citerer citat slut er begyndelsen på, hvad vi skal 230 00:09:43,770 --> 00:09:45,340 at begynde at kalde en streng. 231 00:09:45,340 --> 00:09:47,110 Et ord, en sætning, en sætning. 232 00:09:47,110 --> 00:09:50,220 En snor i et programmeringssprog er en sekvens af nul 233 00:09:50,220 --> 00:09:51,330 eller flere tegn. 234 00:09:51,330 --> 00:09:54,390 Så h-e-l-l-o, komma, og så videre er, 235 00:09:54,390 --> 00:09:56,290 citat citat slut, en streng. 236 00:09:56,290 --> 00:09:58,710 Og nu backslash n, lidt syntaktisk underligt, men vi 237 00:09:58,710 --> 00:10:01,780 allerede defineret i sidste uge således hvad? 238 00:10:01,780 --> 00:10:02,630 Det er bare en ny linje. 239 00:10:02,630 --> 00:10:05,000 Det er bare en måde at formidle til den computer, du ønsker 240 00:10:05,000 --> 00:10:07,700 ækvivalent for at ramme Enter der, men du behøver ikke 241 00:10:07,700 --> 00:10:10,460 vil faktisk Enter og derfor rodet op alle de 242 00:10:10,460 --> 00:10:12,130 formatering af din faktiske program. 243 00:10:12,130 --> 00:10:15,500 Nu parenteserne vedlægge denne streng, åbne paren og 244 00:10:15,500 --> 00:10:18,130 close paren, og indersiden af ​​det er vores streng. 245 00:10:18,130 --> 00:10:22,600 Fordi det er fordi i C, og anden programmering 246 00:10:22,600 --> 00:10:27,510 sprog, kan lide at tingene printf tage argumenter, eller tage 247 00:10:27,510 --> 00:10:28,420 parametre. 248 00:10:28,420 --> 00:10:31,490 >> Så begynde at tænke nu af denne lilla Say blok som en 249 00:10:31,490 --> 00:10:34,890 funktion, som en fremgangsmåde, som en procedure. 250 00:10:34,890 --> 00:10:36,890 Du kan virkelig kalde det hvad du vil for nu, men 251 00:10:36,890 --> 00:10:39,260 Det er en slags miniature program, der kun gør man 252 00:10:39,260 --> 00:10:41,480 ting, i en enkelt linje, intet mindre. 253 00:10:41,480 --> 00:10:43,620 Så printf er også det, vi vil begynde at kalde en 254 00:10:43,620 --> 00:10:46,680 funktion og funktioner gøre noget - i dette tilfælde 255 00:10:46,680 --> 00:10:49,320 udskriver en formateret streng til skærmen - 256 00:10:49,320 --> 00:10:53,220 men fungerer også tage argumenter eller parametre. 257 00:10:53,220 --> 00:10:55,880 Og med argumenter eller parametre, tak, mener vi 258 00:10:55,880 --> 00:11:01,220 at deres adfærd kan være påvirket af, hvad du passerer i 259 00:11:01,220 --> 00:11:03,420 i parentes. 260 00:11:03,420 --> 00:11:06,460 Så i dette tilfælde, kan printf behov at vide, hvad der skal udskrives, og vi 261 00:11:06,460 --> 00:11:09,520 bare gå i, i gåseøjne her, den streng, som vi 262 00:11:09,520 --> 00:11:11,270 faktisk ønsker at udskrive. 263 00:11:11,270 --> 00:11:14,060 Og semikolon på selve slutningen af ​​denne linje er blot en 264 00:11:14,060 --> 00:11:18,020 historisk gene hvorved i slutningen af ​​de fleste linjer kode, 265 00:11:18,020 --> 00:11:21,170 du sætte et semikolon for at gøre super klar til computeren 266 00:11:21,170 --> 00:11:23,020 at denne linje kode ender her. 267 00:11:23,020 --> 00:11:25,600 Nu er dette er godt, fordi som vi vil se som programmer får mere 268 00:11:25,600 --> 00:11:29,030 kompleks, vil semikolon gøre super klart for os mennesker, 269 00:11:29,030 --> 00:11:32,280 og også den computer, hvor linjer kode start og afslutning. 270 00:11:32,280 --> 00:11:34,360 Erkend, at nogle sprog ikke har nogen 271 00:11:34,360 --> 00:11:35,045 af de samme oplysninger. 272 00:11:35,045 --> 00:11:37,870 Og i virkeligheden, i JavaScript, behøver du ikke altid brug for noget 273 00:11:37,870 --> 00:11:38,670 ligesom semikolon. 274 00:11:38,670 --> 00:11:40,210 Men mere om det at komme. 275 00:11:40,210 --> 00:11:41,170 >> Så sløjfer. 276 00:11:41,170 --> 00:11:43,520 Vi havde noget som dette, meget intuitivt indlysende, gøre 277 00:11:43,520 --> 00:11:44,860 noget igen og igen og igen. 278 00:11:44,860 --> 00:11:47,720 Ligesom at sætte på sokker, eller sige hej, i dette tilfælde. 279 00:11:47,720 --> 00:11:51,090 Nå, begynder i dag i C, kunne vi udtrykke dette Scratch 280 00:11:51,090 --> 00:11:54,970 blokere så while (true) printf ("Hello World"). 281 00:11:54,970 --> 00:11:57,630 Så opdager vi er begyndt at bygge videre på bogstaveligt talt puslespillet 282 00:11:57,630 --> 00:11:58,480 stykke fra før. 283 00:11:58,480 --> 00:12:01,310 Vi har den samme lilla blok, men det er inde i dette 284 00:12:01,310 --> 00:12:04,880 parentes Forever blok, og den bedste måde at oversætte det 285 00:12:04,880 --> 00:12:06,480 til C er som følger. 286 00:12:06,480 --> 00:12:08,130 Der er ingen Forever søgeord. 287 00:12:08,130 --> 00:12:10,940 Du kan ikke bare skrive f-o-r-e-v-e-r i C. 288 00:12:10,940 --> 00:12:13,440 Så den nærmeste analog er samtidig. 289 00:12:13,440 --> 00:12:17,050 >> Nu, mens (sand) virker lidt dum, fordi gør værdien 290 00:12:17,050 --> 00:12:18,700 af ægte nogensinde forandring? 291 00:12:18,700 --> 00:12:19,810 Formentlig ikke. 292 00:12:19,810 --> 00:12:22,770 Det er ligesom at sige, mens en, mens du er på, mens sandt. 293 00:12:22,770 --> 00:12:25,430 Det er alt sammen det samme, gælder det altid er tilfældet. 294 00:12:25,430 --> 00:12:29,860 Så denne løkke er faktisk inducere hvilken slags loop? 295 00:12:29,860 --> 00:12:31,210 Bare en uendelig løkke, højre. 296 00:12:31,210 --> 00:12:32,930 En Forever sløjfe eller som vi kaldte det i sidste uge, 297 00:12:32,930 --> 00:12:33,870 bare en uendelig løkke. 298 00:12:33,870 --> 00:12:35,250 Så nogle gange er det slemt. 299 00:12:35,250 --> 00:12:37,060 Nogle gange er det en fejl, nogle gange det er derfor du får 300 00:12:37,060 --> 00:12:39,340 den roterende badebold eller timeglas eller lignende. 301 00:12:39,340 --> 00:12:41,260 Men i dette tilfælde, vi bevidst, uanset 302 00:12:41,260 --> 00:12:43,040 Derfor ønskede at udskrive det samme igen 303 00:12:43,040 --> 00:12:43,970 og igen og igen. 304 00:12:43,970 --> 00:12:45,900 Eller i tilfælde af lignende et ur, du ønsker at gøre 305 00:12:45,900 --> 00:12:47,470 noget igen og igen og igen. 306 00:12:47,470 --> 00:12:49,070 Så uendelige løkker kan give mening. 307 00:12:49,070 --> 00:12:53,560 Og det er sådan i C vi kan oversætte Forever til kode. 308 00:12:53,560 --> 00:12:55,570 >> Så nu er denne ene er lidt mere specifik. 309 00:12:55,570 --> 00:12:58,880 Vi havde gentag 10 gange følgende erklæring. 310 00:12:58,880 --> 00:13:02,490 Så mens (sand) ikke helt arbejde der, fordi sand er 311 00:13:02,490 --> 00:13:03,590 altid sandt. 312 00:13:03,590 --> 00:13:07,060 Så hvis vi i stedet se på C-version, nu syntaksen får en 313 00:13:07,060 --> 00:13:08,180 lidt mere kryptisk. 314 00:13:08,180 --> 00:13:11,380 Men for at være ærlig, når du begynder at se dette, det hele bliver 315 00:13:11,380 --> 00:13:12,600 temmelig bekendt hurtigt. 316 00:13:12,600 --> 00:13:14,370 Så dette er hvad der kaldes en for-løkke. 317 00:13:14,370 --> 00:13:17,210 En for-løkke vil fortælle computeren til at gøre noget 318 00:13:17,210 --> 00:13:20,710 igen og igen og igen så længe 319 00:13:20,710 --> 00:13:21,850 disse ting er sande. 320 00:13:21,850 --> 00:13:23,370 Nu hvad mener vi med det? 321 00:13:23,370 --> 00:13:25,470 Tja, der er tre dele til en for-løkke, og vi vil 322 00:13:25,470 --> 00:13:28,240 vende tilbage til dette i forbindelse med den faktiske 323 00:13:28,240 --> 00:13:29,100 eksempler i et øjeblik. 324 00:13:29,100 --> 00:13:31,650 Så du skal ikke bekymre dig, hvis det ikke helt synke i på én gang. 325 00:13:31,650 --> 00:13:35,400 Men int i = 0 er, lang historie kort, siger give mig en 326 00:13:35,400 --> 00:13:38,290 variabel, der er af typen heltal, så giv mig et nummer 327 00:13:38,290 --> 00:13:40,890 kaldte jeg, og det initialiseres til 0. 328 00:13:40,890 --> 00:13:43,460 Det er at give mig som en algebraisk variabel x og 329 00:13:43,460 --> 00:13:44,580 initialisere den til 0. 330 00:13:44,580 --> 00:13:46,250 Men i dette tilfælde har vi kaldte det i. 331 00:13:46,250 --> 00:13:49,120 Så i midten, siger, at det i er mindre end 10. 332 00:13:49,120 --> 00:13:52,150 Det er at fortælle computeren gøre følgende ting, så længe 333 00:13:52,150 --> 00:13:53,770 som jeg er mindre end 10. 334 00:13:53,770 --> 00:13:55,370 Og selvfølgelig er det starter mindre end 10, fordi 335 00:13:55,370 --> 00:13:56,550 starter ved 0. 336 00:13:56,550 --> 00:13:59,150 Så endelig kan du måske gætte, hvad jeg + + midler. 337 00:13:59,150 --> 00:14:02,140 Det er en lille smule af syntaks, der betyder bare tilvækst i. 338 00:14:02,140 --> 00:14:05,270 Så tilsættes 1 til i, igen og igen og igen. 339 00:14:05,270 --> 00:14:09,260 >> Og så vi vil se denne løkke, denne syntaks snarere, implementerer 340 00:14:09,260 --> 00:14:12,160 præcis det samme, som helt ærligt, i Scratch var lige så 341 00:14:12,160 --> 00:14:13,250 meget lettere at udtrykke. 342 00:14:13,250 --> 00:14:15,170 Gentag 10, og du er færdig. 343 00:14:15,170 --> 00:14:17,690 I C, og i de fleste programmeringssprog, skal vi være en 344 00:14:17,690 --> 00:14:20,190 lidt mere lærerigt for computeren og faktisk 345 00:14:20,190 --> 00:14:21,630 specificere noget som dette. 346 00:14:21,630 --> 00:14:23,730 Men vi vil vende tilbage til dette og andre syntaks. 347 00:14:23,730 --> 00:14:24,780 >> Hvad med variabler? 348 00:14:24,780 --> 00:14:26,940 I Scratch havde vi noget som de orange blokke, 349 00:14:26,940 --> 00:14:28,180 hvor jeg kunne erklære en variabel. 350 00:14:28,180 --> 00:14:30,000 Lad os vilkårligt kalde det tæller. 351 00:14:30,000 --> 00:14:31,880 Lad os initialisere den til 0 og derefter 352 00:14:31,880 --> 00:14:33,240 lad os for evigt gøre noget. 353 00:14:33,240 --> 00:14:35,760 I dette tilfælde i Scratch jeg siger tælleren, så den 354 00:14:35,760 --> 00:14:38,230 kat kommer til at have en lille taleboble, der er tale 355 00:14:38,230 --> 00:14:40,010 det antal, der er i denne variabel. 356 00:14:40,010 --> 00:14:42,460 Og så har vi ændre tæller med 1. 357 00:14:42,460 --> 00:14:45,760 Så alt dette er viklet inde i en Forever lås. 358 00:14:45,760 --> 00:14:48,960 Så vi allerede nu har de byggesten i C med 359 00:14:48,960 --> 00:14:50,040 der til at oversætte denne. 360 00:14:50,040 --> 00:14:51,650 >> En måde, vi kunne gøre det er det. 361 00:14:51,650 --> 00:14:53,890 Giv mig et heltal, kalder det tæller. 362 00:14:53,890 --> 00:14:55,190 Initialiser den til 0 363 00:14:55,190 --> 00:14:56,490 i første linje der. 364 00:14:56,490 --> 00:14:59,390 Mens (sand), så jeg stjæler den ide fra blot et øjeblik 365 00:14:59,390 --> 00:15:01,300 siden, gå videre og gøre følgende. 366 00:15:01,300 --> 00:15:04,880 Print ud tælleren, og derefter inkrementere tælleren, 367 00:15:04,880 --> 00:15:06,930 igen og igen, og igen. 368 00:15:06,930 --> 00:15:09,380 Eller igen, + + betyder blot tilføje 1 til noget. 369 00:15:09,380 --> 00:15:11,030 Men der er et nyt stykke syntaks her. 370 00:15:11,030 --> 00:15:15,730 Hvad springer ud som ikke blandt vores tidligere eksempler? 371 00:15:15,730 --> 00:15:17,190 Ja, dette% d. 372 00:15:17,190 --> 00:15:19,810 Så du kan måske udlede, hvad det gør, helt ærligt, der er baseret 373 00:15:19,810 --> 00:15:21,410 på, hvad Scratch blokken gør. 374 00:15:21,410 --> 00:15:24,510 Men igen i C, vi bare nødt til at være lidt mere specielt 375 00:15:24,510 --> 00:15:25,990 når det kommer til at udtrykke os selv. 376 00:15:25,990 --> 00:15:30,560 >> Så printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Nå det meste af det, vi kan smide væk som bekendt. 378 00:15:32,320 --> 00:15:34,910 Citaterne bare betyder, at det er en streng, backslash n 379 00:15:34,910 --> 00:15:35,970 er bare en ny linje. 380 00:15:35,970 --> 00:15:38,860 Så det eneste nye ting her er% d. 381 00:15:38,860 --> 00:15:40,390 Og alt det er er en pladsholder. 382 00:15:40,390 --> 00:15:43,510 % D kommer til at betegne et decimaltal. 383 00:15:43,510 --> 00:15:47,820 Og% d betyder computer, sætte et decimaltal her. 384 00:15:47,820 --> 00:15:49,450 Nå, hvad nummer du ønsker at sætte der? 385 00:15:49,450 --> 00:15:52,400 Nå, som du måske kan udlede, efter kommaet vi siger 386 00:15:52,400 --> 00:15:55,480 tæller, det er navnet på en variabel, som vi erklæret eller 387 00:15:55,480 --> 00:15:57,260 skabt et par linjer tidligere. 388 00:15:57,260 --> 00:16:02,420 Så dette er bare C måde at tilslutte en variabel ind i en 389 00:16:02,420 --> 00:16:04,480 streng dynamisk. 390 00:16:04,480 --> 00:16:07,350 Fordi derimod, hvis jeg i stedet havde gjort noget lignende 391 00:16:07,350 --> 00:16:12,470 dette, printf ("counter"), hvad ville dette 392 00:16:12,470 --> 00:16:15,220 program i stedet gøre, formentlig? 393 00:16:15,220 --> 00:16:17,260 Det vil bogstaveligt talt udskrive "tæller". 394 00:16:17,260 --> 00:16:18,750 Hvilket ikke den virkning, at jeg vil have. 395 00:16:18,750 --> 00:16:20,920 Jeg har brug for at erstatte i nogle numeriske værdi. 396 00:16:20,920 --> 00:16:24,340 Så vi vil se, at funktionerne derefter, ligesom printf kan tage ikke 397 00:16:24,340 --> 00:16:26,930 kun lige enkelte argumenter, ligesom 398 00:16:26,930 --> 00:16:28,150 "Hej verden". 399 00:16:28,150 --> 00:16:32,050 De kan tage citat citat slut komma, og derefter nogle variabler 400 00:16:32,050 --> 00:16:35,830 der vil få sat ind, som vi vil se den forrige streng 401 00:16:35,830 --> 00:16:38,280 via disse%-tegnet pladsholdere. 402 00:16:38,280 --> 00:16:39,660 >> Nå hvad med booleske udtryk? 403 00:16:39,660 --> 00:16:42,200 Boolske udtryk var disse værdier, sande eller falske. 404 00:16:42,200 --> 00:16:42,830 Ja eller nej. 405 00:16:42,830 --> 00:16:44,020 1 eller 0. 406 00:16:44,020 --> 00:16:45,190 Tændt eller slukket. 407 00:16:45,190 --> 00:16:47,570 Så i Scratch de ser sådan ud, og bemærke, at 408 00:16:47,570 --> 00:16:50,170 bundblokken her er faktisk sammenholdt 409 00:16:50,170 --> 00:16:51,500 af to mindre blokke. 410 00:16:51,500 --> 00:16:53,610 Så jeg slags trækkes og slippes tre puslespilsbrikker 411 00:16:53,610 --> 00:16:56,450 sammen for at gøre det længere puslespilsbrik der så at jeg 412 00:16:56,450 --> 00:17:00,420 kunne vække det indtryk, at jeg ønsker x at være mindre end y og 413 00:17:00,420 --> 00:17:02,540 y er mindre end z. 414 00:17:02,540 --> 00:17:05,790 Og så jeg kan oversætte disse to separate linjer som følger. 415 00:17:05,790 --> 00:17:08,650 Den øverste man kan blive meget trivielt oversættes til C, 416 00:17:08,650 --> 00:17:10,069 med blot x 00:17:11,990 Måske med nogle parenteser for god foranstaltning. 418 00:17:11,990 --> 00:17:15,520 Og så i C, behøver du ikke skrive og til at betegne den 419 00:17:15,520 --> 00:17:16,819 sammenholdt af noget. 420 00:17:16,819 --> 00:17:19,585 Du i stedet skrive &&. 421 00:17:19,585 --> 00:17:22,849 Og da vi i sidste ende vil se en enkelt tegnet sker for 422 00:17:22,849 --> 00:17:23,880 betyde noget andet. 423 00:17:23,880 --> 00:17:27,530 Så && lige betegner ideen om OG. 424 00:17:27,530 --> 00:17:30,040 >> Så igen, selvom det begynder at se temmelig kompleks, 425 00:17:30,040 --> 00:17:32,560 et af formålene med introduktionen af ​​Scratch, foruden 426 00:17:32,560 --> 00:17:34,810 bare at have en slags sjov on-rampe, hvor du kan gøre 427 00:17:34,810 --> 00:17:36,590 noget, der er meget grafisk, og animeret, og 428 00:17:36,590 --> 00:17:39,000 deles og lignende, også at transportere tanken, der 429 00:17:39,000 --> 00:17:42,010 alle de ideer, vi starter dykning i dag og fremefter 430 00:17:42,010 --> 00:17:44,300 er blevet indarbejdet i selv at simple 431 00:17:44,300 --> 00:17:46,850 grænseflade siden dag ét. 432 00:17:46,850 --> 00:17:47,790 Hvad med denne her? 433 00:17:47,790 --> 00:17:48,860 >> Så betingelser. 434 00:17:48,860 --> 00:17:50,590 Så Scratch blokken til venstre der ser 435 00:17:50,590 --> 00:17:51,610 lidt mere kompliceret. 436 00:17:51,610 --> 00:17:52,650 Men det er bare nogle at trække og 437 00:17:52,650 --> 00:17:54,140 nedkastning af velkendte stykker. 438 00:17:54,140 --> 00:17:56,690 Hvis x er mindre end y, så sig. 439 00:17:56,690 --> 00:17:59,900 Else hvis x er større end y, så sig det. 440 00:17:59,900 --> 00:18:02,460 Else, kan vi logisk antage det er udledes, 441 00:18:02,460 --> 00:18:03,580 De skal være ens. 442 00:18:03,580 --> 00:18:05,220 Så at sige, at de er ens. 443 00:18:05,220 --> 00:18:07,690 Nu i C til højre, samme nøjagtige ting. 444 00:18:07,690 --> 00:18:09,730 Og se, at de krøllede parenteser vil være en 445 00:18:09,730 --> 00:18:12,190 træk af C og andre sprog, der gør denne slags 446 00:18:12,190 --> 00:18:13,210 af indkapsling. 447 00:18:13,210 --> 00:18:15,470 Ligesom hvis blokken er denne gule ting, der er slags 448 00:18:15,470 --> 00:18:17,770 snuppe den lilla blok inde i den. 449 00:18:17,770 --> 00:18:19,480 Tilsvarende er disse seler - 450 00:18:19,480 --> 00:18:20,870 disse krøllede parenteser - 451 00:18:20,870 --> 00:18:24,710 betød at fremmane den samme idé om at omfavne en eller flere 452 00:18:24,710 --> 00:18:27,680 linjer kode, der er indrykket inde i dem. 453 00:18:27,680 --> 00:18:31,270 Så på den højre side her, hvis x er mindre end y, printf 454 00:18:31,270 --> 00:18:32,270 ("X er mindre end y"). 455 00:18:32,270 --> 00:18:34,980 Ellers hvis x er større end y, printe det samme. 456 00:18:34,980 --> 00:18:38,360 Else udskrive, at de er ens. 457 00:18:38,360 --> 00:18:41,750 >> Så kort sagt, er der en temmelig direkte kortlægning eller oversættelse 458 00:18:41,750 --> 00:18:44,720 af det sprog, vi har set hidtil, også for nogle 459 00:18:44,720 --> 00:18:45,940 af de mere avancerede funktioner. 460 00:18:45,940 --> 00:18:48,680 Så du kan ikke bruge dette til dit projekt, eller måske ikke 461 00:18:48,680 --> 00:18:51,150 bruge dette til dit projekt i denne uge. 462 00:18:51,150 --> 00:18:54,650 Men vi har disse ting kaldet arrays i C. I Scratch, 463 00:18:54,650 --> 00:18:55,680 de kaldes lister. 464 00:18:55,680 --> 00:18:59,370 Og vi så dem med Fruitcraft RPG sidste uge. 465 00:18:59,370 --> 00:19:01,320 Den lille blå fyr, der gik rundt, picking up 466 00:19:01,320 --> 00:19:03,010 kirsebær og appelsiner og lignende. 467 00:19:03,010 --> 00:19:05,110 Godt i Scratch, blev der gennemført med denne orange 468 00:19:05,110 --> 00:19:09,000 blokere, der indeholder ord, i dette tilfælde, er vi bogstaveligt talt 469 00:19:09,000 --> 00:19:10,800 tilføje "orange" til en 470 00:19:10,800 --> 00:19:12,460 variabel kaldet opgørelse. 471 00:19:12,460 --> 00:19:14,910 Så i C, er denne syntaks vil få en lidt mere kryptisk. 472 00:19:14,910 --> 00:19:17,250 Og vi vil vende tilbage til dette i næste uge og gøre mere 473 00:19:17,250 --> 00:19:21,060 interessante ting i verden af ​​kryptografi med det. 474 00:19:21,060 --> 00:19:23,990 Men ved bunden her, disse to linjer væsentlige 475 00:19:23,990 --> 00:19:27,550 oversætte til, hvad vi laver i én Scratch blokere deroppe. 476 00:19:27,550 --> 00:19:30,120 Men mere om det at komme. 477 00:19:30,120 --> 00:19:34,120 >> Så sætte det sammen, her er et program i C. Så lad os 478 00:19:34,120 --> 00:19:36,590 hurtigt drille hinanden nogle af stykker af syntaks her, men 479 00:19:36,590 --> 00:19:40,300 så lad os faktisk begynde at skrive noget kode, sætte 480 00:19:40,300 --> 00:19:42,440 dig med nogle af de værktøjer, vi skal bruge, og se, om vi 481 00:19:42,440 --> 00:19:45,400 kan bygge på nu nogle af disse grundlæggende byggesten fra 482 00:19:45,400 --> 00:19:49,150 i sidste uge, nu syntaktisk i C. Så øverst her, dette 483 00:19:49,150 --> 00:19:51,380 er måske et af de mest kedelige programmer, du kunne 484 00:19:51,380 --> 00:19:53,130 skrive i de fleste enhver programmeringssprog. 485 00:19:53,130 --> 00:19:55,010 Men det er slags har særlig betydning, fordi det er den 486 00:19:55,010 --> 00:19:58,120 kanoniske program at enhver datalog skriver, når 487 00:19:58,120 --> 00:19:59,620 undervisning nogen et programmeringssprog - 488 00:19:59,620 --> 00:20:01,230 et hej verden program. 489 00:20:01,230 --> 00:20:05,120 >> Så øverst ser vi denne opfattelse af # include 490 00:20:05,120 --> 00:20:08,180 og derefter, i vinklede parenteser. stdio.h 491 00:20:08,180 --> 00:20:10,580 Vi vil vende tilbage til det, men virkelig, hvad det 492 00:20:10,580 --> 00:20:13,770 betyder, at der er en fil i denne verden kaldet standard 493 00:20:13,770 --> 00:20:17,670 I / O, stdio dot h, og det er bare en tekstfil, 494 00:20:17,670 --> 00:20:19,240 nogen skrev år siden. 495 00:20:19,240 --> 00:20:22,550 Og inde i den pågældende tekstfil er en hel masse 496 00:20:22,550 --> 00:20:25,840 funktioner eller metoder eller procedurer, som en anden har 497 00:20:25,840 --> 00:20:28,970 skrev, at vi er modtagere af, fordi vi 498 00:20:28,970 --> 00:20:31,420 kan nu bruge denne persons kode. 499 00:20:31,420 --> 00:20:33,070 De funktioner, han eller hun skrev. 500 00:20:33,070 --> 00:20:36,320 I dette tilfælde er printf ikke noget, som jeg skrev, det er 501 00:20:36,320 --> 00:20:37,500 ikke noget, som CS50 skrev. 502 00:20:37,500 --> 00:20:40,290 Det er noget, som nogen skrev år siden og sat i en 503 00:20:40,290 --> 00:20:43,450 fil kaldet stdio.h og derefter, som en sidebemærkning, sætte 504 00:20:43,450 --> 00:20:45,830 en anden del af funktion i en anden fil. 505 00:20:45,830 --> 00:20:46,940 Men vi vil komme der. 506 00:20:46,940 --> 00:20:50,070 >> Så # include er bare vores måde at sige, i 507 00:20:50,070 --> 00:20:53,110 C, giv mig adgang til funktioner, som en anden skrev. 508 00:20:53,110 --> 00:20:55,490 Og i dette tilfælde jeg ligeglad, fordi jeg ønsker printf. 509 00:20:55,490 --> 00:20:57,530 Nu får vi int main (void). 510 00:20:57,530 --> 00:21:00,160 Så dette er en af ​​disse ting, helt ærligt, at på dag 0, 511 00:21:00,160 --> 00:21:02,400 temmelig meget jeg har at slags zone ud, fordi det er bare 512 00:21:02,400 --> 00:21:03,260 ikke interessant 513 00:21:03,260 --> 00:21:04,780 intellektuelt, nogle af syntaksen. 514 00:21:04,780 --> 00:21:07,940 Men for nu, at funktioner, også kendt som 515 00:21:07,940 --> 00:21:11,660 procedurer, eller metoder, frembringer i almindelighed en vis værdi. 516 00:21:11,660 --> 00:21:12,520 De gør noget. 517 00:21:12,520 --> 00:21:13,810 De kommer med et svar. 518 00:21:13,810 --> 00:21:15,020 De producerer output. 519 00:21:15,020 --> 00:21:18,780 Så int næste to main er bare vores forkortet måde at sige 520 00:21:18,780 --> 00:21:21,380 at denne funktion, denne procedure i sidste ende vil 521 00:21:21,380 --> 00:21:22,650 at give dig tilbage et nummer. 522 00:21:22,650 --> 00:21:24,370 Og hvorfor det er, vi vil komme tilbage til. 523 00:21:24,370 --> 00:21:27,810 Main er bare standard verden standard for standard 524 00:21:27,810 --> 00:21:30,990 funktion, der kommer til at blive henrettet i et C-program, når 525 00:21:30,990 --> 00:21:31,860 du kører det. 526 00:21:31,860 --> 00:21:34,160 Void betyder bare denne ting, main, tager ikke 527 00:21:34,160 --> 00:21:35,270 argumenter, i dette tilfælde. 528 00:21:35,270 --> 00:21:36,400 Så jeg er super eksplicit. 529 00:21:36,400 --> 00:21:38,160 Der er ingen strenge derinde, der er ingen kommaer. 530 00:21:38,160 --> 00:21:40,690 Void betyder ingen argumenter til main. 531 00:21:40,690 --> 00:21:44,350 >> Nu endelig, heldigvis, de to sidste linjer er velkendte. 532 00:21:44,350 --> 00:21:46,160 Inde i de krøllede parenteser vi har en printf 533 00:21:46,160 --> 00:21:47,620 og vi har en tilbagevenden. 534 00:21:47,620 --> 00:21:50,450 Og afkastet er lidt uheldigt, at vi er nødt til at 535 00:21:50,450 --> 00:21:53,510 sætte det der, fordi det i dette tilfælde er ikke at gøre alt, 536 00:21:53,510 --> 00:21:54,600 meget af interesse. 537 00:21:54,600 --> 00:21:58,790 Men i et edb-program, når en funktion returnerer 0, 538 00:21:58,790 --> 00:22:00,610 det betyder alt er godt. 539 00:22:00,610 --> 00:22:01,820 Intet gik galt. 540 00:22:01,820 --> 00:22:06,170 Derimod hvis en funktion returnerer 1, eller negativ 1, eller 541 00:22:06,170 --> 00:22:11,670 negativ 1.337, eller nogle tilfældige numre som det, der 542 00:22:11,670 --> 00:22:14,020 generelt betyder, at en fejl, der faktisk er opstået. 543 00:22:14,020 --> 00:22:16,150 Så hvis du er på din Mac eller din pc, hvis du nogensinde har set 544 00:22:16,150 --> 00:22:18,590 nogle irriterende besked, fordi din computer er gået ned eller 545 00:22:18,590 --> 00:22:20,660 frosset, og der er en kryptisk fejlmeddelelse, 546 00:22:20,660 --> 00:22:23,320 og derefter nogle kode, som systemet kode 547 00:22:23,320 --> 00:22:25,110 1,2,3,4 nogle nummer, 548 00:22:25,110 --> 00:22:29,270 der generelt er en unødvendig detalje at fortælle 549 00:22:29,270 --> 00:22:32,110 de fleste af os mennesker, men det er, hvad en funktion eller nogle 550 00:22:32,110 --> 00:22:34,890 Programmet har faktisk returneres, en ikke-nul værdi. 551 00:22:34,890 --> 00:22:38,540 Og fordelen ved dette er, at 0 betyder alt så godt, og 552 00:22:38,540 --> 00:22:40,470 så du hovedsagelig have et uendeligt antal af ting, som 553 00:22:40,470 --> 00:22:41,130 kan gå galt. 554 00:22:41,130 --> 00:22:44,700 Hvilket er hvorfor de valgte 0 for god og en ikke-nul værdi for 555 00:22:44,700 --> 00:22:46,450 dårlige, som vi skal snart se. 556 00:22:46,450 --> 00:22:47,870 >> Så lad os gå videre og skriver dette. 557 00:22:47,870 --> 00:22:51,610 Så minde om, at den anden dag brugte jeg min Mac til at åbne op for en 558 00:22:51,610 --> 00:22:53,970 terminalvindue, og så åbnede jeg op tekst program, ligesom 559 00:22:53,970 --> 00:22:55,900 TextEdit, og jeg begyndte at skrive noget kode. 560 00:22:55,900 --> 00:22:56,580 Nå det er fint. 561 00:22:56,580 --> 00:22:58,636 Men din oplevelse vil være anderledes på en Mac, eller 562 00:22:58,636 --> 00:23:01,220 på en Solaris computer, en Linux computer, uanset operativsystem 563 00:23:01,220 --> 00:23:02,810 system du tilfældigvis bruger. 564 00:23:02,810 --> 00:23:04,970 Og så i kurset, er, hvad vi i stedet for at bruge noget 565 00:23:04,970 --> 00:23:07,010 kaldet CS50 Appliance. 566 00:23:07,010 --> 00:23:10,420 Så CS50 Appliance er et downloades stykke software 567 00:23:10,420 --> 00:23:13,640 der giver dig mulighed for at køre et operativsystem kaldet Linux, 568 00:23:13,640 --> 00:23:16,810 specifikt Fedora Linux, på din egen Mac eller pc. 569 00:23:16,810 --> 00:23:20,810 Og du gør dette ved at hente noget, der hedder en hypervisor. 570 00:23:20,810 --> 00:23:23,100 Så alt dette vil blive dokumenteret i problem sæt 1. 571 00:23:23,100 --> 00:23:25,240 Og du vil blive guidet mod, hvad du behøver at downloade. 572 00:23:25,240 --> 00:23:27,510 Men det endelige resultat, om du har en Mac eller pc, er du 573 00:23:27,510 --> 00:23:29,080 hente nogle gratis software. 574 00:23:29,080 --> 00:23:32,340 Du kan derefter hente den CS50 Appliance, og du fortælle, at 575 00:23:32,340 --> 00:23:33,960 fri software - hypervisoren - 576 00:23:33,960 --> 00:23:38,080 at køre CS50 Appliance i et vindue på din computer. 577 00:23:38,080 --> 00:23:39,490 Og hvad der sker, er dette. 578 00:23:39,490 --> 00:23:43,660 >> Jeg har nu, mærke her, hvad der synes at være en stationær 579 00:23:43,660 --> 00:23:44,130 miljø. 580 00:23:44,130 --> 00:23:46,150 Og lad mig faktisk skrumpe denne enkelt vindue. 581 00:23:46,150 --> 00:23:49,640 Så dette nu er min Mac, med et lille vindue her, og inde 582 00:23:49,640 --> 00:23:51,300 af dette vindue sker for at være en helt 583 00:23:51,300 --> 00:23:52,380 andet operativsystem. 584 00:23:52,380 --> 00:23:55,250 Faktisk er der denne startmenuen hernede, der minder om 585 00:23:55,250 --> 00:23:57,990 Windows, der har en hel bunke af undermenuer, herunder 586 00:23:57,990 --> 00:24:00,720 et link til CS50 manual, Dropbox og lignende. 587 00:24:00,720 --> 00:24:03,480 Og hvad dette miljø nu er en standard miljø 588 00:24:03,480 --> 00:24:06,280 at vi alle nu kan bruge, så uanset hvad din 589 00:24:06,280 --> 00:24:08,960 computer er, hvad du har installeret på den, hvilken version 590 00:24:08,960 --> 00:24:11,430 af Mac OS eller Windows du kører, alle nu har vi 591 00:24:11,430 --> 00:24:12,800 samme miljø. 592 00:24:12,800 --> 00:24:15,850 Og nu i dette miljø kan vi begynde at skrive noget kode. 593 00:24:15,850 --> 00:24:18,480 >> Så jeg har tænkt mig at gå videre og åbne et program kaldet gedit. 594 00:24:18,480 --> 00:24:21,500 Dette kan sammenlignes med notepad.exe, eller 595 00:24:21,500 --> 00:24:22,790 TextEdit på en Mac. 596 00:24:22,790 --> 00:24:25,390 Og det er bare et super simpelt tekst redigering program 597 00:24:25,390 --> 00:24:27,500 der ligner dette ved første øjekast. 598 00:24:27,500 --> 00:24:30,640 Nu øverst, har jeg en hvid palet, nederst I 599 00:24:30,640 --> 00:24:33,860 har denne sorte vindue, der siger jharvard @ apparatet. 600 00:24:33,860 --> 00:24:36,440 Og det er fordi den brugerkonto, vi på forhånd skabt 601 00:24:36,440 --> 00:24:38,430 for alle hedder John Harvard. 602 00:24:38,430 --> 00:24:41,490 Han har en mappe, hvor alle hans filer kommer til at gå, og 603 00:24:41,490 --> 00:24:43,500 her er, hvor vi kan begynde at skrive noget kode. 604 00:24:43,500 --> 00:24:45,810 Så lad mig gå videre her og zoome ind bare en smule, og jeg er 605 00:24:45,810 --> 00:24:51,550 vil gøre # include , int main (void), og 606 00:24:51,550 --> 00:24:57,470 så jeg har tænkt mig at gøre printf ("Hello World") 607 00:24:57,470 --> 00:24:59,490 ; Returnerer 0. 608 00:24:59,490 --> 00:25:01,400 Nu er alle helt sort og hvidt. 609 00:25:01,400 --> 00:25:03,830 >> Lad mig gå videre og gøre én ting at undervise gedit hvad jeg 610 00:25:03,830 --> 00:25:04,510 faktisk gør. 611 00:25:04,510 --> 00:25:06,140 Lad mig gå til Gem som. 612 00:25:06,140 --> 00:25:08,560 Jeg har tænkt mig at vælge i venstre side her jharvard. 613 00:25:08,560 --> 00:25:11,010 Så igen, selvom du aldrig har brugt Linux før, helt ærligt 614 00:25:11,010 --> 00:25:13,680 disse dage er de alle dekoncentration i det væsentlige 615 00:25:13,680 --> 00:25:14,590 samme type interface - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows og Linux. 617 00:25:16,030 --> 00:25:18,680 Så jeg valgte jharvard hjemmemappe her. 618 00:25:18,680 --> 00:25:21,120 Og jeg har tænkt mig at gemme denne fil som hello.c. 619 00:25:21,120 --> 00:25:24,260 Så øverst, skrev jeg hello.c, at navngive en C 620 00:25:24,260 --> 00:25:26,520 program med det. c. forlængelse 621 00:25:26,520 --> 00:25:27,570 hvad der er almindelig praksis. 622 00:25:27,570 --> 00:25:28,650 Og jeg ramte Gem. 623 00:25:28,650 --> 00:25:32,510 Og nu, hvad er rart er, at jeg faktisk har lært gedit, 624 00:25:32,510 --> 00:25:33,690 at dette er et C-program. 625 00:25:33,690 --> 00:25:36,470 Bemærk, at min sorte og hvide tekst nu er farvekodet, eller 626 00:25:36,470 --> 00:25:39,330 syntaks fremhævet, hvilket bare gør mig opmærksom på det 627 00:25:39,330 --> 00:25:41,540 forskellige semantiske dele af programmet. 628 00:25:41,540 --> 00:25:44,260 Øverst til venstre der, som mine programmer bliver mere kompleks, jeg er 629 00:25:44,260 --> 00:25:47,060 vil have en oversigt over alle de ting jeg har skrevet. 630 00:25:47,060 --> 00:25:48,050 Så det er det deroppe. 631 00:25:48,050 --> 00:25:52,350 Så lad mig nu zoome ud og gå ned til denne terminal vindue. 632 00:25:52,350 --> 00:25:54,570 >> Så det er måske nyt for mange mennesker. 633 00:25:54,570 --> 00:25:57,260 Hvis du aldrig har brugt en kommandolinje miljø, du har aldrig 634 00:25:57,260 --> 00:26:00,020 brugt DOS, eller du aldrig har brugt Linux, eller du aldrig har åbnet 635 00:26:00,020 --> 00:26:02,550 Mac OS terminalvindue, der er en masse ting, du 636 00:26:02,550 --> 00:26:04,820 kunne gøre med den GUI, som peger, og klikke, og 637 00:26:04,820 --> 00:26:07,080 trække, og slippe, og lignende, men generelt - 638 00:26:07,080 --> 00:26:09,360 sikkert i verden af ​​datalogi - 639 00:26:09,360 --> 00:26:11,580 hjælp af en kommandolinje, hvor du ikke har din mus 640 00:26:11,580 --> 00:26:14,220 generelt, du kun har dit tastatur, er faktisk en masse 641 00:26:14,220 --> 00:26:17,260 mere kraftfuld end interface, når du får akklimatiseret til 642 00:26:17,260 --> 00:26:18,580 forskellige kommandoer. 643 00:26:18,580 --> 00:26:20,940 Og du slags fri dig selv for at skulle pege og klikke 644 00:26:20,940 --> 00:26:21,690 på alt. 645 00:26:21,690 --> 00:26:23,890 Så i gedit vi sortere i har det bedste fra begge verdener. 646 00:26:23,890 --> 00:26:25,600 Vi kan trække og slippe tekst, kan vi se det 647 00:26:25,600 --> 00:26:26,840 rart og farvekodet. 648 00:26:26,840 --> 00:26:29,630 Men når det drejer sig tid til at køre vores program, vil vi undertiden 649 00:26:29,630 --> 00:26:31,750 bare bruge denne lille vindue her. 650 00:26:31,750 --> 00:26:33,460 >> Så jeg har tænkt mig at gå videre og gøre det. 651 00:26:33,460 --> 00:26:36,420 I den nederste sorte og hvide vindue, vil jeg gå videre 652 00:26:36,420 --> 00:26:37,890 og skrive klang. 653 00:26:37,890 --> 00:26:40,130 Og klang er navnet på en compiler. 654 00:26:40,130 --> 00:26:43,310 Det er et program, der konverterer min kildekode 655 00:26:43,310 --> 00:26:48,770 ind, således, objektkode. 656 00:26:48,770 --> 00:26:51,270 0'er og 1-taller, at vi så kort i sidste uge. 657 00:26:51,270 --> 00:26:53,700 Recall fra sidste uge, vi lovede, at vi skulle 658 00:26:53,700 --> 00:26:55,920 gå fra noget som dette - vi skulle være 659 00:26:55,920 --> 00:26:57,010 noget som dette - 660 00:26:57,010 --> 00:26:58,700 og det er bestemt ikke noget, at et menneske kommer 661 00:26:58,700 --> 00:26:59,690 at gøre manuelt. 662 00:26:59,690 --> 00:27:01,980 Så i stedet vil vi bruge et program, og dette program i 663 00:27:01,980 --> 00:27:03,430 dette tilfælde kaldes Dunk. 664 00:27:03,430 --> 00:27:06,020 Og navnet på mit program er hello.c. 665 00:27:06,020 --> 00:27:09,670 Så for at kompilere hello.c fra kildekode til 666 00:27:09,670 --> 00:27:12,930 objekt kode, eller 0'er og 1-taller, bør det være tilstrækkeligt at bare gøre 667 00:27:12,930 --> 00:27:14,820 dette og tryk på Enter. 668 00:27:14,820 --> 00:27:16,850 >> Okay, intet synes at være sket. 669 00:27:16,850 --> 00:27:20,450 Men jeg ved nu, eller fra sidste uge, at standard navn 670 00:27:20,450 --> 00:27:24,920 et program, når skrevet i C, er tåbelig kaldes a.out. 671 00:27:24,920 --> 00:27:26,610 Mest uinteressante navn, du kunne komme op med. 672 00:27:26,610 --> 00:27:28,790 A er det første bogstav i alfabetet, ud er, hvad der var 673 00:27:28,790 --> 00:27:29,960 udsendes, men så må det være. 674 00:27:29,960 --> 00:27:33,570 Dette er mit program, og nu dot slash, som vi vil se, er 675 00:27:33,570 --> 00:27:36,170 faktisk bare en slags sikkerhed funktion, fordi 676 00:27:36,170 --> 00:27:38,250 a.out er et program jeg skrev. 677 00:27:38,250 --> 00:27:39,650 Det kom ikke med min computer, det er 678 00:27:39,650 --> 00:27:40,790 ikke i Program Files. 679 00:27:40,790 --> 00:27:42,910 Det er ikke i Mac OS er mappen Programmer. 680 00:27:42,910 --> 00:27:45,740 Jeg er nødt til at være super eksplicit med computeren, og sige 681 00:27:45,740 --> 00:27:49,030 dette program, a.out, er i den aktuelle mappe, 682 00:27:49,030 --> 00:27:50,260 aktuelle bibliotek. 683 00:27:50,260 --> 00:27:53,160 Og den måde, du repræsenterer dette i et miljø som dette 684 00:27:53,160 --> 00:27:57,070 er prik repræsenterer uanset mappe du befinder dig i. 685 00:27:57,070 --> 00:27:59,420 Og så. / Betyder blot kører a.out 686 00:27:59,420 --> 00:28:00,530 i den aktuelle mappe. 687 00:28:00,530 --> 00:28:04,830 Og jeg køre dette med Enter, og voila, min allerførste program. 688 00:28:04,830 --> 00:28:05,990 >> Lad mig tage et skridt tilbage. 689 00:28:05,990 --> 00:28:08,280 Dette vindue er lidt lille, og indse, at bunden 690 00:28:08,280 --> 00:28:10,340 venstre af apparatet her er en anden ikon. 691 00:28:10,340 --> 00:28:12,660 Den ene er Chrome, som bør være ganske velkendt, bare en web 692 00:28:12,660 --> 00:28:14,350 browser inde i skabet. 693 00:28:14,350 --> 00:28:16,340 Og denne sorte og hvide ikon er blot en 694 00:28:16,340 --> 00:28:17,720 større terminalvindue. 695 00:28:17,720 --> 00:28:19,830 Så hvis det bliver lidt irriterende at sortere i har bare 696 00:28:19,830 --> 00:28:22,270 denne lille lille udsnit af et vindue med til at interagere 697 00:28:22,270 --> 00:28:24,370 med programmer, kan vi i stedet gøre dette. 698 00:28:24,370 --> 00:28:26,640 Og lad mig starte med at skrive et par snart 699 00:28:26,640 --> 00:28:27,980 at være velkendte kommandoer. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Så ls er kommandoen til notering. 702 00:28:31,410 --> 00:28:33,900 Så i en Mac OS eller Windows, vil du normalt dobbeltklikke på en 703 00:28:33,900 --> 00:28:36,510 mappe og derefter, voila, du se alle de forskellige filer 704 00:28:36,510 --> 00:28:37,210 og mapper. 705 00:28:37,210 --> 00:28:39,650 I en kommandolinje miljø, hvor du kun kan skrive 706 00:28:39,650 --> 00:28:42,390 kommandoer eller tekst, ls er tilsvarende. 707 00:28:42,390 --> 00:28:44,380 Så vis mig hvad der er i denne mappe. 708 00:28:44,380 --> 00:28:46,540 >> Nu er der en masse ting her, der er både lidt 709 00:28:46,540 --> 00:28:48,190 velkendt og lidt uvant. 710 00:28:48,190 --> 00:28:50,740 Men bemærk, at ligesom Windows og Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 har en mappe på skrivebordet. 712 00:28:52,190 --> 00:28:54,520 Så enhver ikoner, der er på mit skrivebord ske 713 00:28:54,520 --> 00:28:55,650 at være i denne mappe. 714 00:28:55,650 --> 00:28:57,250 Der er en downloads mappe, ting, 715 00:28:57,250 --> 00:28:58,890 Chrome kan sætte der. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 Så Apparatet leveres med indbygget understøttelse af Dropbox 718 00:29:01,820 --> 00:29:04,500 således at der i løbet af semestret, kan du synkronisere med din Dropbox 719 00:29:04,500 --> 00:29:06,420 konto, så alle dine programmer bakkes op. 720 00:29:06,420 --> 00:29:08,050 De er tilgængelige på din anden computer. 721 00:29:08,050 --> 00:29:09,780 Hvis noget nogensinde går galt med apparatet, kan du 722 00:29:09,780 --> 00:29:11,340 meget nemt genoprette fra Dropbox. 723 00:29:11,340 --> 00:29:12,940 Så det folder er der for. 724 00:29:12,940 --> 00:29:14,660 Der er to filer, som jeg gjorde - hello.c 725 00:29:14,660 --> 00:29:16,540 og a.out. 726 00:29:16,540 --> 00:29:18,530 Og så til højre er der nogle andre mapper, vi får 727 00:29:18,530 --> 00:29:20,710 komme til i slutningen af ​​semestret, med web 728 00:29:20,710 --> 00:29:21,540 programmering. 729 00:29:21,540 --> 00:29:26,160 Så når jeg gør. /, A.out, Enter, det siger gå 730 00:29:26,160 --> 00:29:29,460 i den mappe jeg er i, den aktuelle mappe, og kør 731 00:29:29,460 --> 00:29:32,465 program kaldet a.out lige der. 732 00:29:32,465 --> 00:29:35,810 >> Okay, så det er rart og godt, men det er ikke alt, 733 00:29:35,810 --> 00:29:38,550 overbevisende at skrive et program, der hedder hjælpe a.out. 734 00:29:38,550 --> 00:29:40,790 Så vi kan faktisk gøre dette lidt anderledes. 735 00:29:40,790 --> 00:29:43,980 Så i stedet for bare at køre klang, hello.c, lad os tilføje 736 00:29:43,980 --> 00:29:46,850 hvad der kaldes en kommandolinje argument. 737 00:29:46,850 --> 00:29:50,730 Så en kommandolinje argument, eller en switch i denne sag, er blot 738 00:29:50,730 --> 00:29:54,930 et andet ord eller en sætning, du skriver på en prompt efter 739 00:29:54,930 --> 00:29:56,290 det program, du vil køre. 740 00:29:56,290 --> 00:29:59,970 Så i dette tilfælde, klang er det program, jeg ønsker at køre,-o 741 00:29:59,970 --> 00:30:03,480 betyder output en fil, der er ikke længere hedder a.out. 742 00:30:03,480 --> 00:30:07,510 Output en fil kaldet goddag, og gør det ved at opgøre 743 00:30:07,510 --> 00:30:10,200 sidste ord på linjen, hello.c. 744 00:30:10,200 --> 00:30:13,200 Så kort sagt, er dette en meget marginal forbedring, hvorved 745 00:30:13,200 --> 00:30:15,850 i stedet for at have dette dumt fil med navnet a.out, 746 00:30:15,850 --> 00:30:21,430 Jeg kan nu gøre klang-o hej, så hello.c, og 747 00:30:21,430 --> 00:30:22,530 derefter trykke på Enter. 748 00:30:22,530 --> 00:30:25,510 Intet synes at ske, men igen meget gerne med 0 - når 749 00:30:25,510 --> 00:30:28,510 intet synes at ske det betyder noget galt sket - 750 00:30:28,510 --> 00:30:31,460 så lad os gøre ls nu, Enter, og ja, jeg nu 751 00:30:31,460 --> 00:30:32,780 have en hello program. 752 00:30:32,780 --> 00:30:38,510 Så hvis jeg skriver hej nu, command not found. 753 00:30:38,510 --> 00:30:39,440 OK,. /. 754 00:30:39,440 --> 00:30:40,220 Så helt rigtigt. 755 00:30:40,220 --> 00:30:43,170 Så fordi dette program jeg skrev, og det kom ikke med 756 00:30:43,170 --> 00:30:45,810 computeren,. / hej, Enter, betyder 757 00:30:45,810 --> 00:30:47,350 Jeg kører nu hej. 758 00:30:47,350 --> 00:30:48,440 >> Så det er det der. 759 00:30:48,440 --> 00:30:51,070 Nu, hvad vi vil i sidste ende komme til mere og mere kommandolinjen 760 00:30:51,070 --> 00:30:54,110 argumenter, der tillader os at gøre mere, men bare for dem, for 761 00:30:54,110 --> 00:30:57,760 hvem det kan være gamle hat, lad mig faktisk gå ind i en 762 00:30:57,760 --> 00:31:01,910 bibliotek her og bare give dig en smagsprøve på, hvordan vi ellers 763 00:31:01,910 --> 00:31:05,770 kunne gå om gennemførelsen hej verden. 764 00:31:05,770 --> 00:31:10,730 Lad mig komme ind på her, og jeg har tænkt mig at åbne den. 765 00:31:10,730 --> 00:31:13,090 Så faktisk, jeg vil forklare, hvad jeg gør, så 766 00:31:13,090 --> 00:31:15,610 Dette er nyttigt. 767 00:31:15,610 --> 00:31:17,410 Lad mig op igen. 768 00:31:17,410 --> 00:31:19,620 >> Så jeg har gjort det i lang tid. 769 00:31:19,620 --> 00:31:23,030 Så opdager over på den højre er der et par af 770 00:31:23,030 --> 00:31:26,940 mapper, der er mærkeligt navngivne source1m og source1w. 771 00:31:26,940 --> 00:31:28,830 Det er bare fjollet konvention vi bruger. 772 00:31:28,830 --> 00:31:31,825 Kilde betyder bare kildekode, 1 betyder dette er uge et, og 773 00:31:31,825 --> 00:31:34,000 m betyder, at det er mandag, og w betyder det er onsdag. 774 00:31:34,000 --> 00:31:34,900 Så intet kryptisk der. 775 00:31:34,900 --> 00:31:37,830 Det er bare stenografi notation. 776 00:31:37,830 --> 00:31:39,860 Disse blå ting er mapper, ellers kendt som 777 00:31:39,860 --> 00:31:40,630 mapper. 778 00:31:40,630 --> 00:31:43,870 Jeg ønsker at gå ind i denne mappe nu, og på en normal computer 779 00:31:43,870 --> 00:31:45,710 Jeg kunne bare dobbeltklikke på et mappeikon og 780 00:31:45,710 --> 00:31:46,810 der er alle mine filer. 781 00:31:46,810 --> 00:31:49,270 Men i en kommandolinje miljø, kan jeg ikke helt gøre 782 00:31:49,270 --> 00:31:52,640 at, så i stedet, jeg er nødt til at skifte mapper manuelt. 783 00:31:52,640 --> 00:31:57,900 Så hvis jeg skriver cd og derefter source1m, Enter, bemærke, at 784 00:31:57,900 --> 00:32:01,180 min prompt, den ting i hvidt til venstre, lige skiftet. 785 00:32:01,180 --> 00:32:03,690 Og så ja, når det lige har sagt parenteser og derefter de 786 00:32:03,690 --> 00:32:06,450 lille krusedulle, tildesymbolet symbol, der bare betød, at jeg var 787 00:32:06,450 --> 00:32:08,800 i John Harvard hjemmemappe,, hans Mine dokumenter 788 00:32:08,800 --> 00:32:10,390 hans personlige filer. 789 00:32:10,390 --> 00:32:14,000 Men nu i parentes står ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Det betyder bare, jeg er i en mappe kaldet source1m 791 00:32:17,090 --> 00:32:19,160 det er i John Harvard hjemmemappe. 792 00:32:19,160 --> 00:32:22,030 Så hvis jeg nu ønsker at vise en filerne i denne mappe, let 793 00:32:22,030 --> 00:32:25,300 spørgsmål, jeg skriver bare ls. 794 00:32:25,300 --> 00:32:28,860 Og nu vil jeg se alle de filer, som jeg på forhånd skabt til nutidens 795 00:32:28,860 --> 00:32:31,020 foredrag, der alle eller de fleste af dem, sker 796 00:32:31,020 --> 00:32:32,740 at ende i. c. 797 00:32:32,740 --> 00:32:36,210 >> Så lad mig gå videre nu og køre gedit af et program kaldet 798 00:32:36,210 --> 00:32:39,140 holloway.c, som er skrevet af nogle tilfældige hacker 799 00:32:39,140 --> 00:32:42,920 på internettet, ser det lidt som denne. 800 00:32:42,920 --> 00:32:44,880 Og vi vil ikke gå igennem denne ene i ethvert 801 00:32:44,880 --> 00:32:48,530 detalje, men for dem mere komfortable, navnlig hvis 802 00:32:48,530 --> 00:32:50,935 du ønsker at tage et gæt om, hvad dette program gør her. 803 00:32:57,950 --> 00:32:59,990 Være forvisset om, uanset om du er mindre eller mere komfortabel, 804 00:32:59,990 --> 00:33:01,655 vi ikke engang komme til denne slags ting ved udgangen af 805 00:33:01,655 --> 00:33:02,160 dette semester. 806 00:33:02,160 --> 00:33:05,390 Dette er, hvad er et eksempel på en uklar C konkurrence, som 807 00:33:05,390 --> 00:33:08,390 midler skrive den mest kryptiske leder program du muligvis 808 00:33:08,390 --> 00:33:10,820 kan at overgå andre kloge mennesker, der ligeledes er 809 00:33:10,820 --> 00:33:13,010 forsøger at skrive ting og vise, at de kan skrive 810 00:33:13,010 --> 00:33:14,280 mere kryptiske ting end dig. 811 00:33:14,280 --> 00:33:17,290 Så dette er ikke et eksempel på en velskrevet program fra 812 00:33:17,290 --> 00:33:21,260 perspektiv stil, er dette et eksempel på et program, 813 00:33:21,260 --> 00:33:22,860 vinder en konkurrence, for folk forsøger at 814 00:33:22,860 --> 00:33:24,090 være vag og abstrakt. 815 00:33:24,090 --> 00:33:27,670 >> Så hvis vi kører det her, så lad mig gå ind i min terminal vindue, 816 00:33:27,670 --> 00:33:28,110 så at sige. 817 00:33:28,110 --> 00:33:29,650 Så denne sorte og hvide omgivelser kaldes 818 00:33:29,650 --> 00:33:31,160 terminalvindue generelt. 819 00:33:31,160 --> 00:33:32,600 Lad mig gå videre og kompilere den. 820 00:33:32,600 --> 00:33:34,440 Jeg har ikke tænkt mig at bruge klang, fordi dette program er en 821 00:33:34,440 --> 00:33:36,340 lidt kryptisk og det kræver en anderledes 822 00:33:36,340 --> 00:33:38,190 compiler, en kaldet GCC. 823 00:33:38,190 --> 00:33:39,200 Men det gør de samme ting. 824 00:33:39,200 --> 00:33:41,130 Det tager kildekode til objektkode. 825 00:33:41,130 --> 00:33:43,940 Og nu, hvis jeg løber a.out, at program, du 826 00:33:43,940 --> 00:33:46,065 lige set gør dette. 827 00:33:49,220 --> 00:33:51,170 Så det fyr samme år vandt konkurrencen. 828 00:33:51,170 --> 00:33:54,020 Under alle omstændigheder, vi ikke går i den retning, i sig selv. 829 00:33:54,020 --> 00:33:57,400 >> Så lad os faktisk prøve at nu drille hinanden, hvad vi kan gøre 830 00:33:57,400 --> 00:33:59,540 med disse grundlæggende byggesten til at gøre mere og mere 831 00:33:59,540 --> 00:34:00,590 interessante programmer. 832 00:34:00,590 --> 00:34:02,800 Så vi har skrevet et program, har vi kørt et program. 833 00:34:02,800 --> 00:34:05,780 Nu kan vi faktisk forenkle og ikke længere behøver at skrive 834 00:34:05,780 --> 00:34:07,210 Ordet klang ved prompten. 835 00:34:07,210 --> 00:34:10,710 Det viser sig som vores programmer får mere kryptisk, vi kan, eller 836 00:34:10,710 --> 00:34:14,699 mere kompleks snarere, kan vi faktisk køre denne kommando. 837 00:34:14,699 --> 00:34:17,610 Så lad mig vende tilbage til mit hjem bibliotek, så at sige, så lad mig 838 00:34:17,610 --> 00:34:20,750 fjerne - rm er den fjernelseskommando - jeg kommer til at fjerne 839 00:34:20,750 --> 00:34:23,060 filen hedder a.out og goddag. 840 00:34:23,060 --> 00:34:25,489 Og nu mærke i en kommandolinje miljø, meget gerne i 841 00:34:25,489 --> 00:34:27,800 en GUI, får du bedt om det. Jeg kan ikke klikke på en knap selvom, jeg 842 00:34:27,800 --> 00:34:31,040 nødt til at skrive y for ja, y for ja. 843 00:34:31,040 --> 00:34:33,460 Og nu, hvis jeg skriver ls igen, meddelelse om, at de grønne 844 00:34:33,460 --> 00:34:35,469 programmer - a.out og goddag - 845 00:34:35,469 --> 00:34:35,734 er væk. 846 00:34:35,734 --> 00:34:37,340 Pas rm. 847 00:34:37,340 --> 00:34:39,739 Det kan gøre dårlige ting, ligesom du kan ved at trække 848 00:34:39,739 --> 00:34:40,810 ting til din papirkurv. 849 00:34:40,810 --> 00:34:43,989 >> Så lad os nu gå videre - og jeg kunne gøre dette - klang-o 850 00:34:43,989 --> 00:34:45,139 hej, hej - 851 00:34:45,139 --> 00:34:46,884 Jeg er allerede keder skrive denne kommando. 852 00:34:46,884 --> 00:34:48,080 Selvom jeg har skrevet det lidt hurtigt. 853 00:34:48,080 --> 00:34:51,870 Så vi kan i stedet gøre gøre hej. 854 00:34:51,870 --> 00:34:53,880 Så gør ikke en compiler. 855 00:34:53,880 --> 00:34:57,720 Det er bare et venligt program, der kommer med Linux, i dette 856 00:34:57,720 --> 00:34:59,070 sag - operativsystemet - 857 00:34:59,070 --> 00:35:02,480 der automatiserer processen med udarbejdelse af programmer. 858 00:35:02,480 --> 00:35:05,555 Så i stedet for at huske klang-o filnavn og 859 00:35:05,555 --> 00:35:08,190 så så videre, især når disse linjer bliver længere og 860 00:35:08,190 --> 00:35:10,110 længere tid, kan jeg bare skrive lave. 861 00:35:10,110 --> 00:35:12,030 Og det kommer til at spytte ud en hel masse ting, som 862 00:35:12,030 --> 00:35:13,940 vil vi til sidst se dette semester. 863 00:35:13,940 --> 00:35:17,500 Men bemærk nu, hvis I type LS, hej er tilbage i mit bibliotek. 864 00:35:17,500 --> 00:35:19,850 Og ja, jeg kan køre det med. / Hej. 865 00:35:19,850 --> 00:35:23,330 Så gør bare automatiserer processen med at køre, hvad der var, 866 00:35:23,330 --> 00:35:26,910 i dette tilfælde en meget længere, mere komplekse kommando. 867 00:35:26,910 --> 00:35:29,060 Så vi kommer til at begynde at bruge mærke, bare fordi det er en meget 868 00:35:29,060 --> 00:35:30,530 mere brugervenlige. 869 00:35:30,530 --> 00:35:32,770 >> Men lad os nu lave en mere interessant program 870 00:35:32,770 --> 00:35:34,650 end bare sige hej. 871 00:35:34,650 --> 00:35:38,680 Så i de programmer, vi har skrevet hidtil er der main. 872 00:35:38,680 --> 00:35:40,890 Det er bare den standard ting, der sparker alt off. 873 00:35:40,890 --> 00:35:43,340 Men der er andre funktioner derude så godt, og 874 00:35:43,340 --> 00:35:45,890 stdio.h er den ting, som vi så på toppen af ​​vores 875 00:35:45,890 --> 00:35:48,480 fil før, og det er hvad der er kendt som standard biblioteket. 876 00:35:48,480 --> 00:35:51,300 Inde i standard biblioteket er en hel masse funktioner 877 00:35:51,300 --> 00:35:53,850 at en anden skrev, og vi kan begynde at bruge disse 878 00:35:53,850 --> 00:35:55,050 funktioner til at skrive mere 879 00:35:55,050 --> 00:35:56,760 interessante programmer os selv. 880 00:35:56,760 --> 00:35:58,370 >> Så lad mig gå tilbage til apparatet. 881 00:35:58,370 --> 00:35:59,820 Jeg har tænkt mig at lukke denne terminal vindue. 882 00:35:59,820 --> 00:36:02,630 Jeg har tænkt mig at lukke de ting, vi skrev tidligere, og bare gå 883 00:36:02,630 --> 00:36:07,350 i hello.c, mærke og nu kan jeg gøre følgende. 884 00:36:07,350 --> 00:36:09,730 Hej Verden er ikke så interessant, jeg gerne vil 885 00:36:09,730 --> 00:36:11,770 personliggøre dette program for mig selv. 886 00:36:11,770 --> 00:36:13,440 Så i stedet for at sige verden, vil jeg 887 00:36:13,440 --> 00:36:14,830 gå videre og sige - 888 00:36:14,830 --> 00:36:16,880 Jeg kunne skrive David - men dette er virkelig slags 889 00:36:16,880 --> 00:36:18,050 grundlæggende de samme. 890 00:36:18,050 --> 00:36:19,970 Men lad os prøve denne pladsholder idé. 891 00:36:19,970 --> 00:36:24,460 Minde om, at i C, snarere i printf, havde vi disse 892 00:36:24,460 --> 00:36:28,110 pladsholdere, og der er mere end bare% d. 893 00:36:28,110 --> 00:36:31,150 Så% d var hurtig tilregnelighed check. 894 00:36:31,150 --> 00:36:32,310 Okay, decimaltal, det er det. 895 00:36:32,310 --> 00:36:33,860 Decimaler, det er alt. 896 00:36:33,860 --> 00:36:37,755 Så% c, som vi vil møde, vil være et tegn. 897 00:36:37,755 --> 00:36:40,530 Put en karakter her, et brev A til Z, 898 00:36:40,530 --> 00:36:41,600 eller tegnsætning symbol. 899 00:36:41,600 --> 00:36:45,590 Et enkelt tegn,% f, nogen kender fra andre sprog? 900 00:36:45,590 --> 00:36:47,020 Så en kommatalsværdi. 901 00:36:47,020 --> 00:36:47,880 Et reelt tal. 902 00:36:47,880 --> 00:36:51,550 Så ikke et decimaltal - det er faktisk et reelt tal med 903 00:36:51,550 --> 00:36:54,130 et komma, og nogle flere cifre til venstre 904 00:36:54,130 --> 00:36:55,520 og højre for den. 905 00:36:55,520 --> 00:36:58,060 % S, streng. 906 00:36:58,060 --> 00:36:59,530 At man vi kommer til at se ganske ofte. 907 00:36:59,530 --> 00:37:02,140 En streng, igen, er bare et ord, en sætning, en sekvens af 908 00:37:02,140 --> 00:37:03,330 individuelle karakterer. 909 00:37:03,330 --> 00:37:06,730 Og endelig, LLD? 910 00:37:06,730 --> 00:37:08,210 Så dette er mere af et hjørne sag. 911 00:37:08,210 --> 00:37:09,850 Lang, lang decimal. 912 00:37:09,850 --> 00:37:12,035 Så hvis du ønsker ikke bare et nummer, der er så store, du 913 00:37:12,035 --> 00:37:14,160 ønsker en større tal, er du nødt til at specificere til 914 00:37:14,160 --> 00:37:16,400 den computer, den er af en bestemt størrelse. 915 00:37:16,400 --> 00:37:17,610 >> Så lad os nappe dette en lille smule. 916 00:37:17,610 --> 00:37:20,610 I stedet for bare hårdt kode i David, lad mig lidt 917 00:37:20,610 --> 00:37:22,460 dynamisk sige% s. 918 00:37:22,460 --> 00:37:25,790 Så læg% s her, hvilket er en pladsholder for en streng. 919 00:37:25,790 --> 00:37:30,500 Så lad mig gøre komma, og derefter "David" herovre. 920 00:37:30,500 --> 00:37:32,770 Nu er det er ikke alt, intellektuelt interessant, 921 00:37:32,770 --> 00:37:35,060 fordi alt hvad jeg har gjort nu virkelig skabe mere arbejde for 922 00:37:35,060 --> 00:37:35,790 computeren. 923 00:37:35,790 --> 00:37:39,660 Snarere end at fortælle computeren gøre det hele på én gang, er jeg nu 924 00:37:39,660 --> 00:37:43,760 siger, at gøre dette og indsætte en streng her til sidst, komma, 925 00:37:43,760 --> 00:37:44,950 her er, at streng. 926 00:37:44,950 --> 00:37:47,220 Så dette er ikke en bedre forbedring, men det er mindst 927 00:37:47,220 --> 00:37:49,010 et skridt i retning af et mere interessant program. 928 00:37:49,010 --> 00:37:51,240 Fordi nu, lad mig gå videre og gøre dette vindue lidt 929 00:37:51,240 --> 00:37:56,850 større, lad mig gå videre og køre make goddag. 930 00:37:56,850 --> 00:38:01,340 Og nu. / A.out virker ikke, hvorfor? 931 00:38:03,880 --> 00:38:05,570 Okay, nu er det hedder hello. 932 00:38:05,570 --> 00:38:09,400 Så igen gøre, og også Klang med a-o, omdøbt til 933 00:38:09,400 --> 00:38:11,120 program til at være noget mere interessant. 934 00:38:11,120 --> 00:38:13,060 Og voila: nu er det siger Hej David. 935 00:38:13,060 --> 00:38:14,590 >> Okay, stadig en dum program. 936 00:38:14,590 --> 00:38:18,070 Så lad os nu rent faktisk gå tilbage her og indføre begrebet 937 00:38:18,070 --> 00:38:18,810 af en variabel. 938 00:38:18,810 --> 00:38:21,600 Ville det ikke være rart, hvis jeg kunne erklære en variabel 939 00:38:21,600 --> 00:38:23,150 hvis type er streng? 940 00:38:23,150 --> 00:38:26,720 Og variablens værdi faktisk kommer fra brugeren 941 00:38:26,720 --> 00:38:27,810 ham eller hende selv. 942 00:38:27,810 --> 00:38:30,240 Så vilkårligt, jeg vil ringe til min variable s, hvilket er 943 00:38:30,240 --> 00:38:32,410 blot et fælles konvention, når du har en variabel kaldet 944 00:38:32,410 --> 00:38:33,250 strengen. 945 00:38:33,250 --> 00:38:35,670 Jeg har tænkt mig at gøre lighedstegnet, og så jeg har tænkt mig at kalde en 946 00:38:35,670 --> 00:38:38,030 funktion kaldet GetString. 947 00:38:38,030 --> 00:38:40,830 Så GetString er ikke noget, der kommer indbygget i C. Det er 948 00:38:40,830 --> 00:38:43,330 en funktion, som den CS50 personale skrev, virkelig bare for 949 00:38:43,330 --> 00:38:45,670 disse første par uger, for at forenkle processen med 950 00:38:45,670 --> 00:38:49,450 få brugerinput og få brugerinput i form 951 00:38:49,450 --> 00:38:51,960 af strygere, eller tal, og sådan. 952 00:38:51,960 --> 00:38:55,520 Så GetString er ligesom printf, men naturligvis i stedet 953 00:38:55,520 --> 00:38:58,700 udskrive det kommer til at gøre, hvad navnet siger, få en streng. 954 00:38:58,700 --> 00:39:00,970 Men for at bruge GetString, vi nødt til at foretage en ændring 955 00:39:00,970 --> 00:39:03,180 her, ud over dette. 956 00:39:03,180 --> 00:39:07,170 Så intuitivt, dette program, forhåbentlig, vil en eller anden måde 957 00:39:07,170 --> 00:39:09,700 få en snor fra brugeren, og derefter hvad det kommer til at gøre 958 00:39:09,700 --> 00:39:11,460 med denne streng, kaldet s? 959 00:39:15,060 --> 00:39:16,470 Det er bare at udskrive det, ikke? 960 00:39:16,470 --> 00:39:18,870 Stadig ikke et stimulerende program, fordi alt det går 961 00:39:18,870 --> 00:39:22,160 at gøre, er plug i denne værdi i, hvor% s 962 00:39:22,160 --> 00:39:23,750 siger, at det skal gå. 963 00:39:23,750 --> 00:39:25,290 >> Så lad os i det mindste se det i aktion. 964 00:39:25,290 --> 00:39:27,040 Lad mig spare og zoome ud. 965 00:39:27,040 --> 00:39:30,280 Nu i min terminal vinduet ned her, den lille skive af en, 966 00:39:30,280 --> 00:39:32,760 Lad mig igen gøre gøre hej. 967 00:39:32,760 --> 00:39:35,160 Okay, og ah, damn, jeg fik en hel masse fejl. 968 00:39:35,160 --> 00:39:38,020 Lad mig rulle op, og vi ser vores første - 969 00:39:38,020 --> 00:39:40,430 så lad os rent faktisk gør dette i et endnu større vindue, så du 970 00:39:40,430 --> 00:39:42,110 kan se, hvor dårligt jeg skruet op - 971 00:39:42,110 --> 00:39:44,460 så gør hej. 972 00:39:44,460 --> 00:39:46,540 Okay, det er en katastrofe, ikke? 973 00:39:46,540 --> 00:39:48,740 Jeg har skrevet tre linjer kode, og 974 00:39:48,740 --> 00:39:50,070 det har givet mig 12 fejl. 975 00:39:50,070 --> 00:39:51,980 Så hvorfor er dette? 976 00:39:51,980 --> 00:39:55,720 Så heldigvis ofte når du ser mange, mange fejl 977 00:39:55,720 --> 00:39:57,730 spytte ud på én gang, det er virkelig bare fordi du har 978 00:39:57,730 --> 00:39:59,760 forvirret computeren op her. 979 00:39:59,760 --> 00:40:02,330 Og det er fortsat forvirret over den tid, det kommer ned her. 980 00:40:02,330 --> 00:40:04,400 Og så er det bare begynder at snuble, og snublende, og 981 00:40:04,400 --> 00:40:07,310 spytte ud mere skræmmende ting end rent faktisk gælder. 982 00:40:07,310 --> 00:40:10,120 Så generelt starte altid med den øverste. 983 00:40:10,120 --> 00:40:13,320 >> Så selve toppen mest forekomst af rød, 984 00:40:13,320 --> 00:40:14,740 fejlmeddelelse er dette. 985 00:40:14,740 --> 00:40:17,750 Anvendelse af sort identifikator streng, jeg 986 00:40:17,750 --> 00:40:19,160 betyde standard i? 987 00:40:19,160 --> 00:40:19,900 Jeg gjorde ikke. 988 00:40:19,900 --> 00:40:24,180 Jeg mente snor, men det er fordi, også ordet streng 989 00:40:24,180 --> 00:40:26,020 at jeg fortsætte med at bruge verbalt faktisk 990 00:40:26,020 --> 00:40:27,240 findes ikke i C enten. 991 00:40:27,240 --> 00:40:29,470 Det er noget, vi vil bruge bare for den første uge eller to 992 00:40:29,470 --> 00:40:34,500 her, men det findes i en fil kaldet cs50.h. 993 00:40:34,500 --> 00:40:37,110 Så for nu, ved, at der er denne anden bibliotek at 994 00:40:37,110 --> 00:40:39,330 Personalet skrev, så det er blevet skrevet senere end 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Men inde i cs50.h er en definition, et synonym for 997 00:40:45,020 --> 00:40:48,310 sorterer, der skaber dette ord streng. 998 00:40:48,310 --> 00:40:50,890 >> Så nu lad mig vende tilbage til mit terminalvindue. 999 00:40:50,890 --> 00:40:53,200 Jeg har tænkt mig at rydde hele denne rod ved Ctrl-L. Vi vil bare 1000 00:40:53,200 --> 00:40:55,700 Tør alt ren, og jeg har tænkt mig at gå videre og gøre 1001 00:40:55,700 --> 00:40:57,860 hej igen, Enter. 1002 00:40:57,860 --> 00:40:59,440 Så hvad der er sket nu? 1003 00:40:59,440 --> 00:41:01,150 Nu er alle disse fejl gik bort. 1004 00:41:01,150 --> 00:41:02,230 Så hvad har jeg virkelig gjort? 1005 00:41:02,230 --> 00:41:05,920 Jeg har lige lært den computer, strengen eksisterer, og det er 1006 00:41:05,920 --> 00:41:07,890 i denne fil kaldet cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Så stoppe klager, fordi nu ved du hvor du kan finde 1008 00:41:10,930 --> 00:41:13,220 denne funktion erklæring så at sige. 1009 00:41:13,220 --> 00:41:15,200 Hvor der findes i verden. 1010 00:41:15,200 --> 00:41:18,820 >> Så nu vil jeg gå videre og køre goddag. 1011 00:41:18,820 --> 00:41:22,300 Jeg synes at have en uendelig løkke, intet sker. 1012 00:41:25,530 --> 00:41:26,870 Så jeg er nødt til at skrive noget her, lige. 1013 00:41:26,870 --> 00:41:29,650 Den første linje kode i mit program var GetString. 1014 00:41:29,650 --> 00:41:31,750 Så det er bogstaveligt venter for mig at få en streng. 1015 00:41:31,750 --> 00:41:33,680 Så i den forstand ja, det er en uendelig løkke. 1016 00:41:33,680 --> 00:41:36,520 Tilsyneladende i GetString er standard opførsel, som vi 1017 00:41:36,520 --> 00:41:37,510 skrev - personale - 1018 00:41:37,510 --> 00:41:39,550 der bare siger vente og vente og vente og vente og vente, 1019 00:41:39,550 --> 00:41:42,550 indtil brugeren giver dig en streng ved at skrive noget i. 1020 00:41:42,550 --> 00:41:46,000 Så lad mig gå videre og skriv D-a-v - i-d, Enter. 1021 00:41:46,000 --> 00:41:47,420 Og der er det, hej David. 1022 00:41:47,420 --> 00:41:50,430 >> Nu betyder det synes som om det er bare en handling? 1023 00:41:50,430 --> 00:41:52,810 Lad mig gå videre og skrive Tommy. 1024 00:41:52,810 --> 00:41:54,740 Indtast, okay, synes at virke. 1025 00:41:54,740 --> 00:41:59,130 Værker for Rob, arbejder for Zamyla, arbejder for - okay. 1026 00:41:59,130 --> 00:42:01,000 Så det kommer til at arbejde, mest sandsynligt. 1027 00:42:01,000 --> 00:42:05,030 Så det burde udskrive hvad vi faktisk give det, 1028 00:42:05,030 --> 00:42:07,830 og vi kan være lidt svært her. 1029 00:42:07,830 --> 00:42:12,130 Lad os se, om vi gør noget som hej. 1030 00:42:12,130 --> 00:42:18,000 Kan gå over her, lad os se, kopier, indsæt. 1031 00:42:18,000 --> 00:42:19,950 Jeg har ikke tænkt mig at være i stand til at indsætte, at mange gange her. 1032 00:42:19,950 --> 00:42:24,410 Sæt ind, okay, Shift + Ctrl + V. Så hvad kunne 1033 00:42:24,410 --> 00:42:26,970 ske, det er slemt her? 1034 00:42:26,970 --> 00:42:27,770 >> Okay, så, segfault'er. 1035 00:42:27,770 --> 00:42:29,710 Så nogle af jer med tidligere baggrunde vil vide, at 1036 00:42:29,710 --> 00:42:32,710 generelt, hvilket giver computere masser af input, når de er 1037 00:42:32,710 --> 00:42:36,140 sandsynligvis ikke ment til at modtage lange navne som dette - dårlige 1038 00:42:36,140 --> 00:42:36,740 ting sker. 1039 00:42:36,740 --> 00:42:39,230 Faktisk i verden af ​​internettet, også dette sker ganske lidt, 1040 00:42:39,230 --> 00:42:41,000 hvorved, når du designer en hjemmeside, når du er 1041 00:42:41,000 --> 00:42:43,850 designe Facebook, er du nødt til at foretage vilkårlige beslutninger op 1042 00:42:43,850 --> 00:42:45,370 front, ligesom hvor længe vil en persons 1043 00:42:45,370 --> 00:42:46,360 Facebook brugernavn være? 1044 00:42:46,360 --> 00:42:48,050 Eller hvor længe vil en persons fornavn være? 1045 00:42:48,050 --> 00:42:50,110 Hvor længe vil nogen telefonnummer være og lignende. 1046 00:42:50,110 --> 00:42:53,580 Og hvis programmører lave dårlige forudsætninger, programmer bryder 1047 00:42:53,580 --> 00:42:56,640 fordi du prøver at give dem mere output, mere input 1048 00:42:56,640 --> 00:42:58,330 snarere end de har hukommelse. 1049 00:42:58,330 --> 00:43:01,860 Eller RAM afsat til det, og så hvis nu jeg trykker på Enter, 1050 00:43:01,860 --> 00:43:04,640 dette program faktisk arbejdede, fordi vi var på biblioteket 1051 00:43:04,640 --> 00:43:06,790 og vi faktisk forventet dette særlige tilfælde. 1052 00:43:06,790 --> 00:43:10,900 Men uden tvivl dette semester, vil du skrive mindst en 1053 00:43:10,900 --> 00:43:13,280 program, der vil sige disse ord. 1054 00:43:13,280 --> 00:43:16,520 Husk dette uger fra nu, måske to dage fra nu. 1055 00:43:16,520 --> 00:43:18,760 Segmenteringsfejl er en dårlig ting. 1056 00:43:18,760 --> 00:43:21,920 Det vil henvise til din gør noget, som computeren 1057 00:43:21,920 --> 00:43:23,310 ikke foregribe. 1058 00:43:23,310 --> 00:43:25,810 Og i så fald, du som programmør, ikke foregribe. 1059 00:43:25,810 --> 00:43:27,720 Meget gerne, hvad denne bunke af sokker, der var forskellige 1060 00:43:27,720 --> 00:43:29,520 hjørne sager vi kunne have mødt. 1061 00:43:29,520 --> 00:43:32,340 Tilsvarende i programmer, hvis du ikke foregribe hvor lang er 1062 00:43:32,340 --> 00:43:33,310 en persons navn kommer til at være. 1063 00:43:33,310 --> 00:43:35,890 Eller hvad hvis jeg har en ondsindet bruger, og hans eller hendes navn er 1064 00:43:35,890 --> 00:43:37,230 faktisk temmelig kort, men de prøver bare 1065 00:43:37,230 --> 00:43:37,960 at rode med mig? 1066 00:43:37,960 --> 00:43:40,490 Hvad kommer til at være adfærd mit program? 1067 00:43:40,490 --> 00:43:43,930 Tja, i dette tilfælde, kan noget faktisk ned. 1068 00:43:43,930 --> 00:43:44,750 >> Så lad os gøre det. 1069 00:43:44,750 --> 00:43:46,860 I 90 minutter, er det en forfærdelig lang tid 1070 00:43:46,860 --> 00:43:47,780 at gøre datalogi. 1071 00:43:47,780 --> 00:43:49,550 Hvorfor vi ikke komme ind i vane med at tage en fem minutters 1072 00:43:49,550 --> 00:43:51,520 pause her, og når vi kommer tilbage, vil vi dykke ned i nogle 1073 00:43:51,520 --> 00:43:53,430 mere komplekse og overbevisende programmer? 1074 00:43:53,430 --> 00:43:54,680 Fem minutter. 1075 00:43:56,910 --> 00:43:58,160 >> Ok. 1076 00:44:01,138 --> 00:44:02,780 Så en hurtig kommentar. 1077 00:44:02,780 --> 00:44:05,590 Jeg får at vide, at selv om det var på skærmen før, hvad 1078 00:44:05,590 --> 00:44:08,880 kom ud af min mund var cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Det er korrekt. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Så nu kan du prøve RSVPing for dette på / frokost. 1081 00:44:16,030 --> 00:44:16,980 Men lad os gøre det nu. 1082 00:44:16,980 --> 00:44:20,150 Så det har været super hurtig, super nyt for en masse folk. 1083 00:44:20,150 --> 00:44:21,560 Gammel hat for nogle folk. 1084 00:44:21,560 --> 00:44:24,930 Så lad os spole tilbage for bare et øjeblik, og se, hvordan vi kom til 1085 00:44:24,930 --> 00:44:29,350 denne hello verden output bare for et øjeblik siden. 1086 00:44:29,350 --> 00:44:31,780 >> Så det første, der er denne CS50 Appliance. 1087 00:44:31,780 --> 00:44:34,270 Igen stykke software, problem sæt 1 kommer til at fortælle 1088 00:44:34,270 --> 00:44:36,610 dig, hvordan du henter den, hvor man kan hente det, hvad man skal klikke på 1089 00:44:36,610 --> 00:44:37,430 og så videre. 1090 00:44:37,430 --> 00:44:39,670 Og så når du følger disse instruktioner, vil du være i stand 1091 00:44:39,670 --> 00:44:42,840 at maksimere dit vindue, og din Mac eller PC vil se en 1092 00:44:42,840 --> 00:44:43,910 lidt noget som dette. 1093 00:44:43,910 --> 00:44:47,170 En sort baggrund, en hjemmemappe øverst, hvor alle 1094 00:44:47,170 --> 00:44:49,850 dine filer gå, en skraldespand øverst til venstre, 1095 00:44:49,850 --> 00:44:51,130 en menu i bunden. 1096 00:44:51,130 --> 00:44:54,010 Så igen, temmelig ens i ånden til Mac OS eller Windows, 1097 00:44:54,010 --> 00:44:56,040 selv om det sker for at være Linux. 1098 00:44:56,040 --> 00:44:58,120 Så hvad gjorde vi næste gøre? 1099 00:44:58,120 --> 00:44:59,580 Nå, vi startede med at skrive programmer. 1100 00:44:59,580 --> 00:45:02,260 Og husker fra sidste uge, at alt det tager at skrive en 1101 00:45:02,260 --> 00:45:04,970 program er en simpel teksteditor, 1102 00:45:04,970 --> 00:45:06,550 som Notesblok eller TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Helt ærligt, kan du endda bruge Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Men dårlige ting i sidste ende vil ske, fordi det er en meget 1105 00:45:11,170 --> 00:45:13,930 hårdhændet løsning til at skrive et program, plus det vil 1106 00:45:13,930 --> 00:45:15,400 gemme det i den forkerte filformat. 1107 00:45:15,400 --> 00:45:18,150 Men det er bare en tekst editor, et tekstbehandlingsprogram, er alt, hvad der er 1108 00:45:18,150 --> 00:45:19,390 nødvendig for at skrive et program. 1109 00:45:19,390 --> 00:45:23,420 >> Så i CS50 Appliance, kan vi gøre dette i en enkel måde. 1110 00:45:23,420 --> 00:45:25,580 Vi kan blot klikke på dette ikon nederst til venstre. 1111 00:45:25,580 --> 00:45:28,790 Og igen, problem sæt 1 vil rådgive dig om dette, og voila - 1112 00:45:28,790 --> 00:45:31,210 du får denne sorte og hvide brugergrænseflade, hvor vi kan begynde 1113 00:45:31,210 --> 00:45:32,160 skrive kode. 1114 00:45:32,160 --> 00:45:34,960 Så lad os begynde at skrive et super simpelt program igen. 1115 00:45:34,960 --> 00:45:38,890 Jeg har tænkt mig at gå op til Fil, Gem, og jeg har tænkt mig at kalde 1116 00:45:38,890 --> 00:45:42,870 dette, lad os sige, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 Og jeg bare at fortælle det ved at klikke på jharvard, det sat 1118 00:45:45,410 --> 00:45:46,750 i sit hjem bibliotek, kan jeg ikke rigtig pleje 1119 00:45:46,750 --> 00:45:47,980 hvor denne ene går. 1120 00:45:47,980 --> 00:45:49,090 Og derefter Gem. 1121 00:45:49,090 --> 00:45:50,880 Og nu kan jeg begynde at skrive mit program. 1122 00:45:50,880 --> 00:45:53,560 Og jeg husker fra tidligere, at jeg er nødt til at skrive int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom ind på øverst til venstre. 1125 00:45:57,000 --> 00:46:02,670 Og så vil jeg sige printf, tage to. 1126 00:46:02,670 --> 00:46:05,690 Og nu en ny linje, tæt tilbud, lukke 1127 00:46:05,690 --> 00:46:07,820 parenteser, semikolon. 1128 00:46:07,820 --> 00:46:10,560 Og så går jeg ned her til min terminal vindue, der er 1129 00:46:10,560 --> 00:46:12,840 indlejret i gedit, bare for nemheds skyld. 1130 00:46:12,840 --> 00:46:15,200 Og jeg har tænkt mig at gå videre og skrive gøre goddag, men ikke 1131 00:46:15,200 --> 00:46:17,500 hej alene, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Så min fil hedder hello2.c. Min fil derfor 1133 00:46:20,490 --> 00:46:23,510 bør kaldes hello2 i dette tilfælde. 1134 00:46:23,510 --> 00:46:26,490 For helvede, hvad gjorde jeg forkert? 1135 00:46:26,490 --> 00:46:29,490 Okay, så jeg helt klart udeladt en linje, hvis du huske, hvad 1136 00:46:29,490 --> 00:46:31,020 tidligere programmer se ud. 1137 00:46:31,020 --> 00:46:32,480 Men lad os se om vi ikke kan drille dette fra hinanden. 1138 00:46:32,480 --> 00:46:35,310 Desværre er de fleste mennesker, der skriver de programmer, som 1139 00:46:35,310 --> 00:46:38,820 vi skriver programmer ikke forenkle tingene så godt. 1140 00:46:38,820 --> 00:46:41,520 Så vi er nødt til at slags skimme over hvad der ikke helt gøre 1141 00:46:41,520 --> 00:46:44,050 fornemmer her, og se om vi kan finde ud af hvad der er galt. 1142 00:46:44,050 --> 00:46:46,700 Den allerførste linje der siger implicit erklære C 1143 00:46:46,700 --> 00:46:49,310 biblioteksfunktionen printf med type int. 1144 00:46:49,310 --> 00:46:51,210 OK, jeg forstod en del af det. 1145 00:46:51,210 --> 00:46:54,570 Men det synes at være hentyder til det faktum, at jeg brugte printf 1146 00:46:54,570 --> 00:46:55,700 forkert, eller anden måde. 1147 00:46:55,700 --> 00:46:56,930 Og hvilken forstand er det forkert? 1148 00:46:56,930 --> 00:46:59,970 Jeg vidste bare ikke lære den computer, det er i en fil 1149 00:46:59,970 --> 00:47:01,420 kaldet stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Nu har jeg kun skal bare huske nu, at printf er 1151 00:47:04,120 --> 00:47:06,540 i stdio.h, og faktisk der vil være andre 1152 00:47:06,540 --> 00:47:08,900 funktioner i samme fil, som vi vænne os til. 1153 00:47:08,900 --> 00:47:12,490 >> Så nu lad mig gå videre og bruge Ctrl + L for bare klart, at 1154 00:47:12,490 --> 00:47:16,050 væk, køre lave hello2, og voila. 1155 00:47:16,050 --> 00:47:19,490 Og denne kommando igen, mere kompleks, end vi vil forklare om 1156 00:47:19,490 --> 00:47:20,520 dag formål. 1157 00:47:20,520 --> 00:47:23,570 Men det kørte klang, og klang tager kildekode og 1158 00:47:23,570 --> 00:47:24,870 spytter 0'er og 1'ere. 1159 00:47:24,870 --> 00:47:28,610 Og de 0'er og 1-taller i dette tilfælde kaldes hvad? 1160 00:47:28,610 --> 00:47:29,470 Okay, objektkoden. 1161 00:47:29,470 --> 00:47:32,210 Og den fil, de er i kaldes, så, 1162 00:47:32,210 --> 00:47:33,820 hello2 i dette tilfælde. 1163 00:47:33,820 --> 00:47:37,040 Fordi min tekstfil var hello2.c, Enter. 1164 00:47:37,040 --> 00:47:39,820 Og nu har jeg tage to udråbstegn, udråbstegn 1165 00:47:39,820 --> 00:47:41,880 punkt, udråbstegn. 1166 00:47:41,880 --> 00:47:45,430 Okay, så vi har nu evnen til at få strenge, 1167 00:47:45,430 --> 00:47:46,280 tilsyneladende. 1168 00:47:46,280 --> 00:47:48,190 Nå, hvad kan vi ellers får fra brugere? 1169 00:47:48,190 --> 00:47:51,010 >> Godt i CS50 biblioteket, er der andre funktioner, 1170 00:47:51,010 --> 00:47:53,300 kommer til at forenkle vores liv i disse første par dage. 1171 00:47:53,300 --> 00:47:56,350 Getchar, GetDouble, GetFloat, GetInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Nå, lad os plukke ud den nemmeste af disse først. 1174 00:47:59,550 --> 00:48:01,430 GetString bogstaveligt gør det. 1175 00:48:01,430 --> 00:48:04,210 Det sidder bare og venter på, at brugeren indtaster noget i, 1176 00:48:04,210 --> 00:48:07,170 og så snart jeg skriver noget i og trykker på Enter, det 1177 00:48:07,170 --> 00:48:08,860 gør noget med den værdi. 1178 00:48:08,860 --> 00:48:11,700 Så lad os gå tilbage til dette eksempel for at se, præcis hvad 1179 00:48:11,700 --> 00:48:12,950 GetString gjorde. 1180 00:48:12,950 --> 00:48:17,445 Lad mig gå videre og åbne op i gedit, hello.c, og genkalde 1181 00:48:17,445 --> 00:48:20,590 denne ret inden pausen, er dette, hvor vi slap. 1182 00:48:20,590 --> 00:48:23,240 >> Så lad os nu drille dette fra hinanden i en lidt mere detaljeret. 1183 00:48:23,240 --> 00:48:27,190 Så på linie 6, er der to ting 1184 00:48:27,190 --> 00:48:28,450 sker i øjeblikket. 1185 00:48:28,450 --> 00:48:32,630 Lighedstegnet adskille første halvdel og anden halvdel. 1186 00:48:32,630 --> 00:48:34,670 Så på den venstre side af lighedstegnet er vi 1187 00:48:34,670 --> 00:48:35,580 sige streng s. 1188 00:48:35,580 --> 00:48:37,580 Og så bare lægmandssprog, hvad er streng s 1189 00:48:37,580 --> 00:48:41,040 gøre, tror du? 1190 00:48:41,040 --> 00:48:42,990 Det skaber en hvad? 1191 00:48:42,990 --> 00:48:44,930 Så det er at skabe en streng ved navn s. 1192 00:48:44,930 --> 00:48:46,370 Nu, hvad betyder det egentlig? 1193 00:48:46,370 --> 00:48:51,540 Nå, det reservere plads til en streng kaldet s. 1194 00:48:51,540 --> 00:48:52,490 Det er ikke helt rigtigt. 1195 00:48:52,490 --> 00:48:53,120 Hvad er dette gør? 1196 00:48:53,120 --> 00:48:55,400 Well computere, som du kender, har harddiske, det er, hvor 1197 00:48:55,400 --> 00:48:56,300 dine filer er gemt. 1198 00:48:56,300 --> 00:48:59,100 Computere har RAM, og det er her programmer er indlæst 1199 00:48:59,100 --> 00:49:00,240 mens de kører. 1200 00:49:00,240 --> 00:49:02,470 Så når du dobbeltklikker på et ikon, og Microsoft Word åbner 1201 00:49:02,470 --> 00:49:06,380 op, er Microsoft Word kører, så at sige, i RAM, hvilket er 1202 00:49:06,380 --> 00:49:08,160 den elektroniske del af din computer. 1203 00:49:08,160 --> 00:49:10,660 Ikke de fysiske, mekaniske del, der er spinding, hvor 1204 00:49:10,660 --> 00:49:12,640 data opbevares generelt lang sigt. 1205 00:49:12,640 --> 00:49:15,810 Så string s er temmelig meget at fortælle computeren giver mig 1206 00:49:15,810 --> 00:49:18,150 nok RAM til at passe en snor. 1207 00:49:18,150 --> 00:49:20,450 Nu, er lidt af en oversimplificering, fordi 1208 00:49:20,450 --> 00:49:22,300 Hvor stort er strengen vil blive? 1209 00:49:22,300 --> 00:49:24,410 Jamen vi faktisk ikke kender endnu, så i de kommende uger 1210 00:49:24,410 --> 00:49:27,290 vi vil faktisk trække sig tilbage det lag, der er streng og 1211 00:49:27,290 --> 00:49:28,510 vi vil fortælle dig hvad det egentlig er. 1212 00:49:28,510 --> 00:49:31,050 String, for nu, er blot en nice forenkling af vores verden. 1213 00:49:31,050 --> 00:49:35,700 Men string s erklærer en streng kaldet s, for nu. 1214 00:49:35,700 --> 00:49:36,520 Erklærer en streng. 1215 00:49:36,520 --> 00:49:39,310 Det forbeholder nogle plads i RAM efter strengen brugeren er 1216 00:49:39,310 --> 00:49:40,150 om at skrive. 1217 00:49:40,150 --> 00:49:41,840 >> Lad os nu se på højre side af lighedstegnet. 1218 00:49:41,840 --> 00:49:44,110 Så det siger GetString (). 1219 00:49:44,110 --> 00:49:45,070 Og lidt tilregnelighed check. 1220 00:49:45,070 --> 00:49:47,940 Den omstændighed, at der ikke er noget i parentes 1221 00:49:47,940 --> 00:49:50,810 indebærer hvad GetString? 1222 00:49:50,810 --> 00:49:52,180 Det tager ingen argumenter. 1223 00:49:52,180 --> 00:49:55,290 Det vil sige, kan du ikke påvirke dens adfærd på nogen måde. 1224 00:49:55,290 --> 00:49:58,940 Hver gang du bruger det, vil det få en streng og det er det. 1225 00:49:58,940 --> 00:50:02,210 I modsætning hertil printf forhåbentlig sin opførsel gør 1226 00:50:02,210 --> 00:50:03,010 ændre hver gang. 1227 00:50:03,010 --> 00:50:05,230 Ellers er det en temmelig ubrugelig udskrivning funktion, hvis 1228 00:50:05,230 --> 00:50:06,480 det gør det samme. 1229 00:50:06,480 --> 00:50:07,970 Hvis det altid udskriver David eller noget 1230 00:50:07,970 --> 00:50:09,500 vilkårlige hele tiden. 1231 00:50:09,500 --> 00:50:11,540 Så printf giver mening at have et argument. 1232 00:50:11,540 --> 00:50:14,240 GetString ikke virkelig har brug for et argument, fordi jeg gerne ville 1233 00:50:14,240 --> 00:50:16,700 at få en snor fra brugeren, og det er den bruger, der kommer 1234 00:50:16,700 --> 00:50:19,580 at levere den dynamik ved at skrive i forskellige breve 1235 00:50:19,580 --> 00:50:20,850 hver gang på tastaturet. 1236 00:50:20,850 --> 00:50:23,140 >> Så hvad gør GetString gør i sidste ende? 1237 00:50:23,140 --> 00:50:25,080 Tænk på det som denne lille sorte boks. 1238 00:50:25,080 --> 00:50:29,340 Og denne sorte boks tager ingen input, men når du bang på 1239 00:50:29,340 --> 00:50:33,240 det, det spytter en streng, som brugeren har indtastet i. 1240 00:50:33,240 --> 00:50:36,660 Og det faktum, at der er et lighedstegn der betyder tage 1241 00:50:36,660 --> 00:50:39,890 hvad der er spytte ud til højre og opbevares inde 1242 00:50:39,890 --> 00:50:41,390 hvad der er til venstre. 1243 00:50:41,390 --> 00:50:43,470 Så lighedstegn her, er det faktisk ikke betyder 1244 00:50:43,470 --> 00:50:46,490 ligestilling, det snarere er teknisk betyder opgave. 1245 00:50:46,490 --> 00:50:49,330 Tag værdien til højre, og sætte det i 1246 00:50:49,330 --> 00:50:51,050 variabel til venstre. 1247 00:50:51,050 --> 00:50:52,820 Så det er alt, hvad der sker der. 1248 00:50:52,820 --> 00:50:55,640 >> Nu i linje 7, vi kalder printf. 1249 00:50:55,640 --> 00:50:58,170 Så printf forhåbentlig bliver lidt kedeligt nu. 1250 00:50:58,170 --> 00:50:59,530 Så udskrive en formateret streng. 1251 00:50:59,530 --> 00:51:00,440 Hvilken snor? 1252 00:51:00,440 --> 00:51:05,460 Udskrive, "h-e-l-l-o,% s 1253 00:51:05,460 --> 00:51:07,840 ! \ N ". 1254 00:51:07,840 --> 00:51:10,470 Okay, så hvad ønsker jeg at plug-in for% s? 1255 00:51:10,470 --> 00:51:12,960 Bogstaveligt, uanset hvilken gemt i s. 1256 00:51:12,960 --> 00:51:15,570 Så i dette tilfælde, lille tilregnelighed check, hvor mange argumenter gør 1257 00:51:15,570 --> 00:51:16,820 printf tage? 1258 00:51:19,860 --> 00:51:21,110 Okay, jeg har hørt en. 1259 00:51:23,840 --> 00:51:26,330 Jeg hørte en gang. 1260 00:51:26,330 --> 00:51:27,730 To, jeg hørte to. 1261 00:51:27,730 --> 00:51:29,920 Og hvad med tre? 1262 00:51:29,920 --> 00:51:30,450 Okay, tre? 1263 00:51:30,450 --> 00:51:30,930 Excellent. 1264 00:51:30,930 --> 00:51:33,170 Tre mulige svar, kun en af ​​dem er korrekt. 1265 00:51:33,170 --> 00:51:36,390 Så argumenter igen påvirke adfærden hos en funktion. 1266 00:51:36,390 --> 00:51:39,380 Før i tiden har printf kun tage ét argument. 1267 00:51:39,380 --> 00:51:42,260 "Hej verden" var et enkelt argument. 1268 00:51:42,260 --> 00:51:45,190 Men nu, mærke hvor dette komma er. 1269 00:51:45,190 --> 00:51:49,600 Denne komma er uden for citat / citat slut, hvilket betyder 1270 00:51:49,600 --> 00:51:52,170 hey printf, her kommer et andet argument. 1271 00:51:52,170 --> 00:51:54,240 >> Så kommaer i de fleste programmeringssprog 1272 00:51:54,240 --> 00:51:57,300 adskil flere argumenter. 1273 00:51:57,300 --> 00:51:59,600 Så svaret her er bestemt ikke en, fordi 1274 00:51:59,600 --> 00:52:00,390 der er denne komma. 1275 00:52:00,390 --> 00:52:03,680 Så minimalt, er printf tilsyneladende tage to 1276 00:52:03,680 --> 00:52:04,940 argumenter denne gang. 1277 00:52:04,940 --> 00:52:07,050 Men muligheden for et trick spørgsmål her er, hvad 1278 00:52:07,050 --> 00:52:07,990 om denne komma? 1279 00:52:07,990 --> 00:52:11,260 Betyder det, at der er faktisk tre argumenter? 1280 00:52:11,260 --> 00:52:13,820 Det er denne, og dette. 1281 00:52:13,820 --> 00:52:18,820 Så nej, fordi det komma er inde i de citater, som 1282 00:52:18,820 --> 00:52:20,890 betyder, at det er egentlig bare en æstetisk på engelsk. 1283 00:52:20,890 --> 00:52:23,180 Det har intet at gøre med antallet af 1284 00:52:23,180 --> 00:52:24,890 argumenter i dette program. 1285 00:52:24,890 --> 00:52:27,670 Så dette komma er uden for de dobbelte anførselstegn. 1286 00:52:27,670 --> 00:52:28,850 Og derefter vende tilbage 0. 1287 00:52:28,850 --> 00:52:30,980 For lad os nu bare slags tage denne ene på tro for 1288 00:52:30,980 --> 00:52:34,460 i dag, og bare vide, at når funktioner er færdig fuldbyrdende 1289 00:52:34,460 --> 00:52:37,950 linjer kode, bør de generelt returnere en vis værdi. 1290 00:52:37,950 --> 00:52:42,010 I dette tilfælde, fordi bare main skal returnere en int, 1291 00:52:42,010 --> 00:52:44,320 det er bare den måde sproget C fungerer. 1292 00:52:44,320 --> 00:52:47,040 >> Så fordi intet gik galt, føles dette programs 1293 00:52:47,040 --> 00:52:49,960 fint, jeg bare hårdt kodet til gengæld 0. 1294 00:52:49,960 --> 00:52:52,980 Men i modsætning, og jeg har tænkt mig at skrive dette i pseudokode 1295 00:52:52,980 --> 00:52:55,020 nu, ligesom Joseph gjorde, da vi gjorde sokken 1296 00:52:55,020 --> 00:52:56,220 eksempel i sidste uge. 1297 00:52:56,220 --> 00:53:00,440 Hvis noget gik galt - det er ikke faktiske kode - gik 1298 00:53:00,440 --> 00:53:06,570 forkert, derefter vende tilbage, lad os sige, 1. 1299 00:53:06,570 --> 00:53:08,770 Else returnere 0. 1300 00:53:08,770 --> 00:53:10,070 Så dette er hvor vi skal hen med dette. 1301 00:53:10,070 --> 00:53:12,090 Dette er ikke egentlige C-kode, bare pseudokode. 1302 00:53:12,090 --> 00:53:14,010 Men dette er, hvordan du kan vende tilbage 1303 00:53:14,010 --> 00:53:15,580 forskellige værdier. 1304 00:53:15,580 --> 00:53:19,520 Men for nu er jeg bare tænkt mig at gå videre og returnere 0. 1305 00:53:19,520 --> 00:53:24,410 Okay, nogen spørgsmål hidtil på syntaks, funktionalitet, 1306 00:53:24,410 --> 00:53:25,000 eller lignende? 1307 00:53:25,000 --> 00:53:26,280 Ja, i ryggen. 1308 00:53:26,280 --> 00:53:27,530 >> PUBLIKUM: [uhørligt] 1309 00:53:30,510 --> 00:53:32,210 DAVID Malan: Kan du tale lidt højere? 1310 00:53:32,210 --> 00:53:34,325 Hvorfor gjorde dette program return 0, og? 1311 00:53:34,325 --> 00:53:35,575 PUBLIKUM: [uhørligt] 1312 00:53:39,910 --> 00:53:43,450 DAVID Malan: Åh, det er fordi jeg fik doven, sorry. 1313 00:53:43,450 --> 00:53:48,290 Ingen god akademisk svar, returnerer 0. 1314 00:53:48,290 --> 00:53:52,690 Jeg kan slags bjærgning dette, ved at sige teknisk C, hvis vigtigste 1315 00:53:52,690 --> 00:53:55,900 ikke udtrykkeligt returnere en værdi, vil 0 blive returneret 1316 00:53:55,900 --> 00:53:57,730 automatisk for dig. 1317 00:53:57,730 --> 00:54:00,290 Hvilket er sandt, jeg ikke bare dækker op. 1318 00:54:00,290 --> 00:54:03,270 Men skulle jeg have gjort det på denne måde. 1319 00:54:03,270 --> 00:54:05,250 Ingen interessant takeaway end at andre end min fejl. 1320 00:54:05,250 --> 00:54:06,170 Ja? 1321 00:54:06,170 --> 00:54:08,470 >> PUBLIKUM: Normalt når du skriver i tomrum, som betyder, at du 1322 00:54:08,470 --> 00:54:10,770 returnerer ikke noget. 1323 00:54:10,770 --> 00:54:11,420 DAVID Malan: Korrekt. 1324 00:54:11,420 --> 00:54:15,800 Hvis man i stedet kan du angive før navnet på en funktion, 1325 00:54:15,800 --> 00:54:18,590 eksempel her, ugyldig, så funktionen 1326 00:54:18,590 --> 00:54:20,480 ikke vender tilbage noget. 1327 00:54:20,480 --> 00:54:25,210 Og derfor vil jeg bare sige, afkast eller slet ingenting, 1328 00:54:25,210 --> 00:54:26,730 og det ville være konsekvent. 1329 00:54:26,730 --> 00:54:27,750 Og vi vil komme tilbage til. 1330 00:54:27,750 --> 00:54:31,030 Og bare FYI, en af ​​de fangster med indlæringsvanskeligheder 1331 00:54:31,030 --> 00:54:33,450 programmering i en verden, der har hundredvis af bøger og 1332 00:54:33,450 --> 00:54:36,180 hundredvis af hjemmesider derude er, du vil uvægerligt 1333 00:54:36,180 --> 00:54:38,220 se anden syntaks i forskellige bøger 1334 00:54:38,220 --> 00:54:40,220 af forskellige mennesker. 1335 00:54:40,220 --> 00:54:42,100 Indse at vi vil gøre vores bedste i sektioner og foredrag for at være 1336 00:54:42,100 --> 00:54:42,960 sammenhængende. 1337 00:54:42,960 --> 00:54:46,660 Men nogle gange vil du se modstridende syntaks. 1338 00:54:46,660 --> 00:54:48,540 Så hver gang i tvivl, så spørg. 1339 00:54:48,540 --> 00:54:51,100 Og generelt, vil vi passe på foredrag og sektioner til 1340 00:54:51,100 --> 00:54:53,710 næsten altid præsentere det på den rigtige måde. 1341 00:54:53,710 --> 00:54:56,070 Og jeg siger næsten altid, fordi sag. 1342 00:54:56,070 --> 00:54:56,860 Andre spørgsmål? 1343 00:54:56,860 --> 00:55:01,590 >> PUBLIKUM: Er% s eksisterer udenfor apparatet? 1344 00:55:01,590 --> 00:55:03,710 DAVID Malan: Er% s eksisterer udenfor apparatet? 1345 00:55:03,710 --> 00:55:04,180 Ja. 1346 00:55:04,180 --> 00:55:07,760 Så% s har at gøre med C. Det faktum, at vi bruger det i 1347 00:55:07,760 --> 00:55:10,290 apparatet fundamentalt har intet at gøre med den 1348 00:55:10,290 --> 00:55:12,080 funktioner i det sprog, vi bruger. 1349 00:55:12,080 --> 00:55:15,990 Faktisk sidste uge, da vi brugte min Mac, jeg skrev 1350 00:55:15,990 --> 00:55:17,160 C-kode på min Mac. 1351 00:55:17,160 --> 00:55:20,020 Jeg kunne have brugt% s på min Mac, og du kan bruge det på 1352 00:55:20,020 --> 00:55:22,400 din Windows-computer, hvis du installerer en compiler, ligesom 1353 00:55:22,400 --> 00:55:24,070 Visual Studio fra Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Så% s. 1355 00:55:24,990 --> 00:55:27,860 Alt, hvad vi laver inde i dette vindue i dag har til 1356 00:55:27,860 --> 00:55:31,140 gøre med C. Og grundlæggende intet at gøre med den 1357 00:55:31,140 --> 00:55:33,450 operativsystem i spørgsmålet. 1358 00:55:33,450 --> 00:55:35,900 Derimod den sorte og hvide terminalvindue - når 1359 00:55:35,900 --> 00:55:40,160 Jeg skriver ting som ls, og rm, og cd - 1360 00:55:40,160 --> 00:55:42,020 der har at gøre med operativsystemet og 1361 00:55:42,020 --> 00:55:43,562 navigere rundt. 1362 00:55:43,562 --> 00:55:44,546 Yeah. 1363 00:55:44,546 --> 00:55:46,520 PUBLIKUM: Jeg mente biblioteket, CS50 biblioteket. 1364 00:55:46,520 --> 00:55:49,960 DAVID Malan: Okay, så hvis du mener søgeordet streng, at 1365 00:55:49,960 --> 00:55:52,460 kun findes i CS50 biblioteket, korrekt. 1366 00:55:52,460 --> 00:55:55,350 Det eksisterer ikke i C selv, og faktisk i et par 1367 00:55:55,350 --> 00:55:58,220 uger vil vi smide CS50 bibliotek og starte 1368 00:55:58,220 --> 00:56:02,290 gøre tingene fra bunden selv, så at sige. 1369 00:56:02,290 --> 00:56:02,940 Andre spørgsmål? 1370 00:56:02,940 --> 00:56:04,577 Yeah. 1371 00:56:04,577 --> 00:56:05,827 >> PUBLIKUM: [uhørligt] 1372 00:56:09,470 --> 00:56:10,160 DAVID Malan: Godt spørgsmål. 1373 00:56:10,160 --> 00:56:11,720 Er det kommandoer små bogstaver? 1374 00:56:11,720 --> 00:56:13,710 Og lad mig gøre en forskel her. 1375 00:56:13,710 --> 00:56:15,840 Så kommandoer er generelt de ting, vi skal skrive på 1376 00:56:15,840 --> 00:56:17,940 nederst i vinduet, i terminalvinduet. 1377 00:56:17,940 --> 00:56:21,770 Alt op her ville være erklæringer eller C-kode. 1378 00:56:21,770 --> 00:56:24,490 Men i begge tilfælde er svaret det samme, ja. 1379 00:56:24,490 --> 00:56:27,800 Begge disse miljøer, C-kode øverst og 1380 00:56:27,800 --> 00:56:29,910 operativsystem kommandolinje på 1381 00:56:29,910 --> 00:56:31,440 bund, store og små bogstaver. 1382 00:56:31,440 --> 00:56:33,830 Så du skal udnytte GetString med stort G, 1383 00:56:33,830 --> 00:56:37,050 kapital S. Du skal skrive printf i alle små bogstaver. 1384 00:56:37,050 --> 00:56:39,520 Du skal skrive ls i alle små bogstaver. 1385 00:56:39,520 --> 00:56:43,260 Så i næsten enhver situation dette semester, sag vil i 1386 00:56:43,260 --> 00:56:44,820 Faktisk stof. 1387 00:56:44,820 --> 00:56:46,148 Ja. 1388 00:56:46,148 --> 00:56:47,398 >> PUBLIKUM: [uhørligt] 1389 00:56:54,770 --> 00:56:56,480 DAVID Malan: Ah, så okay, hvad nu hvis vi havde en fil 1390 00:56:56,480 --> 00:56:57,840 kaldet hello.d. 1391 00:56:57,840 --> 00:57:00,090 Så viser det sig, D er et programmeringssprog. 1392 00:57:00,090 --> 00:57:02,790 Og så i nogle tilfælde kan vi faktisk skrive et program i 1393 00:57:02,790 --> 00:57:06,190 denne fil og har det kompileret på denne måde. 1394 00:57:06,190 --> 00:57:09,090 Vi kan, og faktisk, korte svar er, ved jeg ikke. 1395 00:57:09,090 --> 00:57:10,440 Så vi vil gøre dette. 1396 00:57:10,440 --> 00:57:13,040 Lad mig gå videre og oprette en ny fil. 1397 00:57:13,040 --> 00:57:15,580 Og spin her, ærligt i almindelighed, er når nogen tvivl 1398 00:57:15,580 --> 00:57:18,130 dette semester, og du har din apparat eller computer 1399 00:57:18,130 --> 00:57:20,030 åbne, gå videre og prøve noget. 1400 00:57:20,030 --> 00:57:23,740 Så jeg har tænkt mig at gemme en fil kaldet hello.d. 1401 00:57:23,740 --> 00:57:25,010 Gem dette. 1402 00:57:25,010 --> 00:57:29,070 Og jeg har tænkt mig at køre make hej Enter. 1403 00:57:29,070 --> 00:57:31,660 Det syntes at antyde, at AC var mere sandsynligt 1404 00:57:31,660 --> 00:57:35,920 end d,. i dette tilfælde 1405 00:57:35,920 --> 00:57:38,046 Andre spørgsmål. 1406 00:57:38,046 --> 00:57:40,456 Yeah. 1407 00:57:40,456 --> 00:57:41,706 >> PUBLIKUM: [uhørligt] 1408 00:57:48,170 --> 00:57:49,837 DAVID Malan: Okay, siger, at en gang mere. 1409 00:57:49,837 --> 00:57:51,087 PUBLIKUM: [uhørligt] 1410 00:58:04,250 --> 00:58:05,780 DAVID Malan: Hvordan ville du gå om diagnosticering dette eller 1411 00:58:05,780 --> 00:58:06,380 fejlfinding det? 1412 00:58:06,380 --> 00:58:08,800 Så mest sandsynligt, fordi de er forskellige sprog, 1413 00:58:08,800 --> 00:58:10,280 mest sandsynligt du ville få en helt 1414 00:58:10,280 --> 00:58:11,580 anderledes program udsendes. 1415 00:58:11,580 --> 00:58:14,140 Du ville få helt forskellige fejlmeddelelser. 1416 00:58:14,140 --> 00:58:16,750 Og også bare med hensyn til design, ville det nok være en 1417 00:58:16,750 --> 00:58:19,140 dårligt design afgørelse, der skal skrive to forskellige 1418 00:58:19,140 --> 00:58:21,510 sprog med næsten identisk navngivne filer, i 1419 00:58:21,510 --> 00:58:23,000 nøjagtig samme bibliotek ved hjælp af en 1420 00:58:23,000 --> 00:58:24,550 automatisk værktøj som gør. 1421 00:58:24,550 --> 00:58:27,750 Så jeg kan også skubbe tilbage og sige i 15 år at gøre dette, 1422 00:58:27,750 --> 00:58:29,190 aldrig lavet den fejl. 1423 00:58:29,190 --> 00:58:30,030 Kunne ske. 1424 00:58:30,030 --> 00:58:31,190 Men der er bare forskellige, tror jeg, 1425 00:58:31,190 --> 00:58:33,180 logistiske forsvar på plads. 1426 00:58:33,180 --> 00:58:35,440 Plus de fejlmeddelelser, der vil følge, ville 1427 00:58:35,440 --> 00:58:37,260 til sidst afsløre, hvad problemet er. 1428 00:58:37,260 --> 00:58:39,120 Men en mulig hjørne tilfælde. 1429 00:58:39,120 --> 00:58:41,730 >> Okay, så lad os indføre bare et par andre 1430 00:58:41,730 --> 00:58:45,600 funktioner her nu, så vi kan begynde at bygge op i mere 1431 00:58:45,600 --> 00:58:47,140 og mere komplekst program. 1432 00:58:47,140 --> 00:58:49,000 Så først og fremmest, matematik. 1433 00:58:49,000 --> 00:58:51,520 Så matematiske eksempler er bare lidt let i den første uge. 1434 00:58:51,520 --> 00:58:53,560 Dette er ikke til at sige, at al programmering handler om 1435 00:58:53,560 --> 00:58:54,390 matematik. 1436 00:58:54,390 --> 00:58:57,890 Bestemt, forstå forskellige funktioner i 1437 00:58:57,890 --> 00:58:59,610 matematik, algebra i særdeleshed er 1438 00:58:59,610 --> 00:59:00,330 helt relevant her. 1439 00:59:00,330 --> 00:59:03,010 I højere niveau CS klasser, lineær algebra, 1440 00:59:03,010 --> 00:59:03,920 calculus og lignende. 1441 00:59:03,920 --> 00:59:06,500 Men indse det meste af, hvad vi vil gøre dette semester reducerer ikke 1442 00:59:06,500 --> 00:59:09,230 til matematik, og slet ikke til aritmetik, per se, men virkelig 1443 00:59:09,230 --> 00:59:11,570 til bare logik og omhyggelig tænkning. 1444 00:59:11,570 --> 00:59:14,310 Og så denne kobling, at datalogi længe har haft, 1445 00:59:14,310 --> 00:59:16,570 især på high school niveau, med matematik, er en 1446 00:59:16,570 --> 00:59:17,370 lidt vildledende. 1447 00:59:17,370 --> 00:59:20,090 Fordi de fleste af de programmer, vi vil skrive, virkelig er 1448 00:59:20,090 --> 00:59:23,290 slags højere niveau og fokusere på at løse problemer, som, 1449 00:59:23,290 --> 00:59:26,410 sikker, kan bruge nogle addition, subtraktion, og forskellige 1450 00:59:26,410 --> 00:59:28,650 matematiske formler eller lignende, 1451 00:59:28,650 --> 00:59:30,860 men i slutningen af ​​dagen, er det om at tænke og ikke 1452 00:59:30,860 --> 00:59:33,240 bare at gennemføre, hvad man kunne have gjort på som en TI 1453 00:59:33,240 --> 00:59:35,050 lommeregner i gymnasiet. 1454 00:59:35,050 --> 00:59:38,410 >> Så med det sagt, lad os nu gøre noget med disse 1455 00:59:38,410 --> 00:59:40,980 matematiske operatorer, der findes, så vi kan rejse 1456 00:59:40,980 --> 00:59:43,950 over nogle af de underliggende aspekter af programmeringen, eller i 1457 00:59:43,950 --> 00:59:48,930 dette tilfælde C. Så der er, som det CS50 biblioteket foreslået, 1458 00:59:48,930 --> 00:59:51,520 og i dag er vi kun bruger GetString - og i et øjeblik 1459 00:59:51,520 --> 00:59:52,940 måske en anden funktion - 1460 00:59:52,940 --> 00:59:55,380 men der er forskellige datatyper i en computer. 1461 00:59:55,380 --> 00:59:58,550 I slutningen af ​​dagen, kun computere kender 0'er og 1'ere. 1462 00:59:58,550 --> 01:00:01,880 Men huske på, at i sidste uge talte vi om det binære system 1463 01:00:01,880 --> 01:00:05,000 i at repræsentere tal, ligesom tallet 0 og 1 og 2, 1464 01:00:05,000 --> 01:00:07,480 hele vejen på op til 8, som i Nates video. 1465 01:00:07,480 --> 01:00:08,840 Og så kan vi tælle langt højere, da vi 1466 01:00:08,840 --> 01:00:10,000 gjorde på scenen her. 1467 01:00:10,000 --> 01:00:15,660 Men hvis du ønsker at repræsentere ikke bare tal, men bogstaver, 1468 01:00:15,660 --> 01:00:18,240 vi, mennesker, er nødt til at komme med nogle vilkårlige 1469 01:00:18,240 --> 01:00:21,180 konventioner, idet såfremt slutningen af ​​dagen al min computer 1470 01:00:21,180 --> 01:00:24,260 har, er evnen til at udtrykke 0'er og 1-taller, godt vi hellere 1471 01:00:24,260 --> 01:00:27,990 begynde at standardisere mønstre af 0'er og 1'ere, der repræsenterer 1472 01:00:27,990 --> 01:00:28,800 forskellige ting. 1473 01:00:28,800 --> 01:00:32,370 Et mønster af 0'er og 1-taller, der repræsenterer bogstavet a. 1474 01:00:32,370 --> 01:00:34,840 Mønstre af 0'er og 1-taller, der repræsenterer bogstavet z. 1475 01:00:34,840 --> 01:00:37,600 Mønstre af 0'er og 1-taller, der repræsenterer farven blå, eller 1476 01:00:37,600 --> 01:00:38,600 rød, eller lignende. 1477 01:00:38,600 --> 01:00:42,360 Vi er nødt til at bruge alle disse 0'er og 1-taller at udtrykke os i 1478 01:00:42,360 --> 01:00:45,140 forskellige sammenhænge, ​​på forskellige måder, der ikke er 1479 01:00:45,140 --> 01:00:46,470 nødvendigvis numerisk. 1480 01:00:46,470 --> 01:00:51,150 >> Så med hensyn til repræsentation, har C forskellige datatyper, 1481 01:00:51,150 --> 01:00:52,550 og vi har set en af ​​disse hidtil. 1482 01:00:52,550 --> 01:00:54,940 Vi så int, og læg mærke til hvad der ikke er på skærmen 1483 01:00:54,940 --> 01:00:56,140 lige nu er streng. 1484 01:00:56,140 --> 01:00:58,550 String ikke i virkeligheden, findes i C. Igen, det er en 1485 01:00:58,550 --> 01:01:00,610 forenkling vi præsenterer for første 1486 01:01:00,610 --> 01:01:01,570 par uger. 1487 01:01:01,570 --> 01:01:03,770 En char er en individuel karakter. 1488 01:01:03,770 --> 01:01:07,050 En flyder er et reelt tal, med et komma og numre til 1489 01:01:07,050 --> 01:01:09,066 venstre og højre for den. 1490 01:01:09,066 --> 01:01:16,040 En dobbelt er hvad, for dem med tilbage til før baggrund? 1491 01:01:16,040 --> 01:01:19,720 Så en dobbelt er to gange noget. 1492 01:01:19,720 --> 01:01:21,240 Tilføjer dobbelt så meget præcision. 1493 01:01:21,240 --> 01:01:22,440 Så hvad betyder dette? 1494 01:01:22,440 --> 01:01:26,090 Så i hvert af disse tilfælde har verdens slags standardiseret 1495 01:01:26,090 --> 01:01:27,960 hvor mange bit til at repræsentere 1496 01:01:27,960 --> 01:01:29,160 hver af disse ting. 1497 01:01:29,160 --> 01:01:31,590 Så hvis du har set Nates ASCII video, der allerede for en del 1498 01:01:31,590 --> 01:01:36,170 af Pset 0 eller senere i denne uge, vil du, vil du sandsynligvis vide 1499 01:01:36,170 --> 01:01:37,450 at ASCII - 1500 01:01:37,450 --> 01:01:38,610 karakter repræsentationer - 1501 01:01:38,610 --> 01:01:40,670 bruge hvor mange bits? 1502 01:01:40,670 --> 01:01:43,410 Og du kan endda huske fra vores demo i sidste uge om, hvordan 1503 01:01:43,410 --> 01:01:45,500 mange mennesker var på scenen. 1504 01:01:45,500 --> 01:01:46,840 Så 7 eller 8, typisk. 1505 01:01:46,840 --> 01:01:49,230 Så generelt 8, og der er noget, der hedder som forlænget 1506 01:01:49,230 --> 01:01:51,240 ASCII, der bruger alle 8 bit, i stedet for 7. 1507 01:01:51,240 --> 01:01:54,710 Men generelt taler vi i potenser af 2, så i dette tilfælde, 8. 1508 01:01:54,710 --> 01:01:58,900 Så en char i et programmeringssprog er normalt 8 bit. 1509 01:01:58,900 --> 01:02:02,550 Så en int er generelt 32 bits. 1510 01:02:02,550 --> 01:02:04,810 En flyder er generelt 32 bits. 1511 01:02:04,810 --> 01:02:08,060 En dobbelt er generelt 64 bits. 1512 01:02:08,060 --> 01:02:08,870 Og hvad betyder det? 1513 01:02:08,870 --> 01:02:11,500 Det betyder, at du kan repræsentere større tal, eller i tilfælde 1514 01:02:11,500 --> 01:02:15,490 af reelle tal, kan du få en masse flere numre efter 1515 01:02:15,490 --> 01:02:16,240 decimal. 1516 01:02:16,240 --> 01:02:18,980 En masse mere præcision, i dette tilfælde. 1517 01:02:18,980 --> 01:02:21,780 Nu er en lang lang er desværre navngivet. 1518 01:02:21,780 --> 01:02:24,340 Så der er en int, som er 32 bit. 1519 01:02:24,340 --> 01:02:29,800 Der er en lang som, nej, 32 bits. 1520 01:02:29,800 --> 01:02:32,610 Og en lang lang som er 64 bits. 1521 01:02:32,610 --> 01:02:34,830 Men nogle af dem er kontekstafhængige, det afhænger 1522 01:02:34,830 --> 01:02:36,190 hvilken type computer du har. 1523 01:02:36,190 --> 01:02:40,510 Så generelt, vil vi angiver i en hjemmearbejde eller i en quiz, hvor 1524 01:02:40,510 --> 01:02:41,180 det faktisk betyder noget. 1525 01:02:41,180 --> 01:02:43,080 Men pointen er at der er alle disse forskellige 1526 01:02:43,080 --> 01:02:44,250 repræsentationer her. 1527 01:02:44,250 --> 01:02:45,950 >> Så lad os faktisk dykke ned i et program. 1528 01:02:45,950 --> 01:02:48,300 Snarere end at skrive denne ene fra bunden, lad mig gå videre 1529 01:02:48,300 --> 01:02:50,940 og åbne op fra dagens kildekode - som alle er 1530 01:02:50,940 --> 01:02:54,980 online - hvis du ønsker at pille rundt på nettet, eller afkast af 1531 01:02:54,980 --> 01:02:57,120 Onsdag med apparatet på din computer, instruktion 1532 01:02:57,120 --> 01:02:59,160 for der skal forbinde på kursets hjemmeside. 1533 01:02:59,160 --> 01:03:00,830 Her er et super simpelt program. 1534 01:03:00,830 --> 01:03:02,520 Men det har fået lidt noget nyt i toppen, at 1535 01:03:02,520 --> 01:03:03,650 vi ikke havde før. 1536 01:03:03,650 --> 01:03:05,800 En hel masse blå linjer tekst. 1537 01:03:05,800 --> 01:03:08,410 Så disse blå linier repræsenterer kommentarer. 1538 01:03:08,410 --> 01:03:10,620 Så det er ganske nyttigt i et program for at kunne skrive 1539 01:03:10,620 --> 01:03:13,160 nogle kommentarer til dig selv, eller til kolleger eller venner, eller 1540 01:03:13,160 --> 01:03:15,700 undervisning stipendiater, den slags beskrive, hvad der sker i 1541 01:03:15,700 --> 01:03:18,500 denne fil, men har intet at gøre med C-kode selv. 1542 01:03:18,500 --> 01:03:20,860 Intet at gøre med det program, funktionelt, det er bare 1543 01:03:20,860 --> 01:03:21,760 æstetik. 1544 01:03:21,760 --> 01:03:24,580 Så den måde du gør dette i C er du generelt starte din 1545 01:03:24,580 --> 01:03:29,860 kommentarer med / *, og du ender dine kommentarer med 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 Og hvis du virkelig anal og gerne henlede slags billeder, 1548 01:03:34,140 --> 01:03:35,870 så du ville lægge en hel masse stjerner, ville du lave en 1549 01:03:35,870 --> 01:03:36,970 lille boks som denne. 1550 01:03:36,970 --> 01:03:37,990 Men intet af dette spørgsmål. 1551 01:03:37,990 --> 01:03:40,230 Det eneste, der betyder noget, er den allerførste 1552 01:03:40,230 --> 01:03:41,620 og den allersidste. 1553 01:03:41,620 --> 01:03:43,820 Dette er, hvad der kaldes en multi-line kommentar. 1554 01:03:43,820 --> 01:03:46,610 Og det er bare menneskelig konvention til ofte gøre stjernerne og kasse 1555 01:03:46,610 --> 01:03:48,420 ting i som dette, hvis du har en masse fritid. 1556 01:03:48,420 --> 01:03:51,550 >> Så efter du har skrevet i nogle kommentarer, generelt kommer 1557 01:03:51,550 --> 01:03:53,160 de faktiske tarme af programmet. 1558 01:03:53,160 --> 01:03:55,630 Her er vores velkendte # include . 1559 01:03:55,630 --> 01:04:00,410 Og netop hurtig, dette er nødvendigt eller ikke er nødvendig? 1560 01:04:00,410 --> 01:04:02,860 PUBLIKUM: Nødvendig. 1561 01:04:02,860 --> 01:04:04,390 DAVID Malan: Så det er faktisk ikke nødvendigt. 1562 01:04:04,390 --> 01:04:07,070 Så hvorfor dog er det ikke nødvendigt? 1563 01:04:07,070 --> 01:04:08,170 Så der er ingen printf. 1564 01:04:08,170 --> 01:04:08,510 Indeed. 1565 01:04:08,510 --> 01:04:10,470 Alt, hvad vi laver i dette program er matematik. 1566 01:04:10,470 --> 01:04:11,640 Så jeg kan faktisk slette det. 1567 01:04:11,640 --> 01:04:14,330 Så du behøver ikke altid at inkludere noget 1568 01:04:14,330 --> 01:04:15,420 toppen af ​​et program. 1569 01:04:15,420 --> 01:04:17,020 >> Så lad os forenkle det en smule. 1570 01:04:17,020 --> 01:04:18,650 Og nu mærke til, hvad dette program gør. 1571 01:04:18,650 --> 01:04:19,920 Ikke meget af interesse. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Nå, hvad er dette gør? 1574 01:04:22,550 --> 01:04:25,130 Nå, tænker tilbage til den mentale model fra før. 1575 01:04:25,130 --> 01:04:27,500 Den venstre side af dette udtryk gør hvad? 1576 01:04:31,440 --> 01:04:32,830 Give plads til et heltal. 1577 01:04:32,830 --> 01:04:33,930 Så hvor meget plads? 1578 01:04:33,930 --> 01:04:36,980 Tja, vi tilfældigvis ved nu, at det er 32 bit. 1579 01:04:36,980 --> 01:04:40,070 Tidligere en streng var teknisk 32 bit, men mere 1580 01:04:40,070 --> 01:04:40,950 om det i fremtiden. 1581 01:04:40,950 --> 01:04:42,240 Men en int er 32 bit. 1582 01:04:42,240 --> 01:04:45,590 Så dette udtryk til venstre her, x bare int siger hey 1583 01:04:45,590 --> 01:04:48,490 operativsystem, giv mig 32 bit RAM - 1584 01:04:48,490 --> 01:04:50,450 ellers kendt som 4 byte RAM - 1585 01:04:50,450 --> 01:04:53,930 så jeg kan sætte et heltal i dette rum. 1586 01:04:53,930 --> 01:04:55,330 Hvad heltal har du ønsker at sætte? 1587 01:04:55,330 --> 01:04:56,640 Nå, bare nummer 1. 1588 01:04:56,640 --> 01:04:59,530 int y får 2, gør præcis det samme, selv om 1589 01:04:59,530 --> 01:05:02,160 antallet er større med hensyn til dets størrelse. 1590 01:05:02,160 --> 01:05:04,790 Antallet selv er stadig blot 32 bits. 1591 01:05:04,790 --> 01:05:06,520 Det er bare det mønster af bits er anderledes 1592 01:05:06,520 --> 01:05:08,260 udgøre 1 versus 2. 1593 01:05:08,260 --> 01:05:11,980 int z nu siger give mig en anden 32 bits, kalde det z, og sætte 1594 01:05:11,980 --> 01:05:14,210 summation af 1 og 2 derinde. 1595 01:05:14,210 --> 01:05:18,050 Så der nu z er formentlig lagre værdien 3, 1596 01:05:18,050 --> 01:05:19,360 og derefter vende tilbage 0. 1597 01:05:19,360 --> 01:05:23,020 >> Nu er dette program, gør den noget af interesse? 1598 01:05:23,020 --> 01:05:26,170 Så det faktisk ikke gør noget interessant under alle 1599 01:05:26,170 --> 01:05:28,450 mening, fordi hvorfor? Det laver nogle matematik. 1600 01:05:28,450 --> 01:05:30,590 Men det er ikke returnere svaret, højre. 1601 01:05:30,590 --> 01:05:31,790 Det tilbage 0. 1602 01:05:31,790 --> 01:05:33,440 Det er ikke udskrives svaret. 1603 01:05:33,440 --> 01:05:35,760 Så dette program er fundamentalt værdiløs, da det 1604 01:05:35,760 --> 01:05:36,350 står nu. 1605 01:05:36,350 --> 01:05:37,220 Det gør nogle arbejde. 1606 01:05:37,220 --> 01:05:39,530 Det kommer til at tage nogle flere sekunder, eller mikrosekunder, at 1607 01:05:39,530 --> 01:05:41,510 køre, men det er faktisk ikke gør noget 1608 01:05:41,510 --> 01:05:42,770 anvendelige til mennesker. 1609 01:05:42,770 --> 01:05:46,810 >> Så lad os faktisk nu åbne math2, hvor nu er jeg faktisk 1610 01:05:46,810 --> 01:05:48,250 udskrivning af resultatet. 1611 01:05:48,250 --> 01:05:51,260 Så også dette kan udledes vores tidligere eksempler. 1612 01:05:51,260 --> 01:05:54,320 Hvis jeg ønsker at gøre nogle enkle matematik, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z er 1 plus 2 nu. 1614 01:05:56,820 --> 01:05:59,240 Hvad er dette vil udskrive tydeligvis? 1615 01:05:59,240 --> 01:06:00,120 Blot 3. 1616 01:06:00,120 --> 01:06:01,590 Så hurtig tilregnelighed check. 1617 01:06:01,590 --> 01:06:03,830 Lad mig flytte ind i denne mappe. 1618 01:06:03,830 --> 01:06:06,480 Så cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Lad mig gå videre og skrive make math2. 1620 01:06:09,370 --> 01:06:11,510 Ingen fejlmeddelelser kom ud, så lad mig løbe - 1621 01:06:11,510 --> 01:06:14,800 ikke a.out--lad mig løbe math2. Enter. 1622 01:06:14,800 --> 01:06:16,750 Og ja, det udskrives 3. 1623 01:06:16,750 --> 01:06:18,460 Jamen så lad os tage et kig på en variant af denne. 1624 01:06:18,460 --> 01:06:23,870 I math3.c har vi nu dette eksempel her. 1625 01:06:23,870 --> 01:06:26,540 >> Så denne ene er lidt interessant. 1626 01:06:26,540 --> 01:06:32,000 Så i denne ene her er svaret kommer til at få 1 divideret med 10, 1627 01:06:32,000 --> 01:06:33,910 og bemærk jeg har erklæret det som en float. 1628 01:06:33,910 --> 01:06:35,200 Hvorfor vil jeg have det til at være en float? 1629 01:06:35,200 --> 01:06:36,110 Tja, det er en brøkdel. 1630 01:06:36,110 --> 01:06:37,140 Det kommer til at være et reelt tal. 1631 01:06:37,140 --> 01:06:40,970 Så det kommer til at være 0,1, forhåbentlig - 10%, i dette tilfælde. 1632 01:06:40,970 --> 01:06:42,610 Og hvad gør jeg så gerne udskrive? 1633 01:06:42,610 --> 01:06:43,440 Nå, dette svar. 1634 01:06:43,440 --> 01:06:44,760 Nå, lad os drille dem fra hinanden først. 1635 01:06:44,760 --> 01:06:47,020 Så på den venstre side, erklære en 1636 01:06:47,020 --> 01:06:49,410 flyde, kalder det svar. 1637 01:06:49,410 --> 01:06:52,280 På højre side, har 1 divideret med 10 og sætte det 1638 01:06:52,280 --> 01:06:54,370 answer indersiden af ​​den variable. 1639 01:06:54,370 --> 01:06:56,410 Nu, denne linje ser lidt mere kryptisk. 1640 01:06:56,410 --> 01:06:59,440 Men læg mærke til nogle velkendte funktioner. % Betyder her kommer en 1641 01:06:59,440 --> 01:07:00,490 pladsholder. 1642 01:07:00,490 --> 01:07:03,230 f betyder her er en kommatalsværdi, bare en reel 1643 01:07:03,230 --> 01:07:05,490 nummer, noget med et komma. 1644 01:07:05,490 --> 01:07:07,330 0,2 betyder hvad? 1645 01:07:07,330 --> 01:07:10,740 Alle kender fra tidligere erfaring? 1646 01:07:10,740 --> 01:07:12,010 To decimaler. 1647 01:07:12,010 --> 01:07:14,050 Så vi har ikke set det før, men det er bare en måde at 1648 01:07:14,050 --> 01:07:16,360 udøve lidt mere kontrol over printf og 1649 01:07:16,360 --> 01:07:20,840 talemåde ikke give mig 30 point efter kommaet, 1650 01:07:20,840 --> 01:07:22,490 i stedet give mig bare 2. 1651 01:07:22,490 --> 01:07:23,960 >> Og så lad os gå videre og køre dette. 1652 01:07:23,960 --> 01:07:30,160 Så gør matematik 3, og lad mig nu køre matematik 3, Enter. 1653 01:07:30,160 --> 01:07:34,630 Og det er ikke rigtigt. 1654 01:07:34,630 --> 01:07:37,390 Vi synes at have stødt på vores første ægte bug. 1655 01:07:37,390 --> 01:07:39,400 Tja, måske er jeg bare ikke ser tæt nok. 1656 01:07:39,400 --> 01:07:41,960 Så lad mig gå op her, og lad mig sige 20 decimal 1657 01:07:41,960 --> 01:07:43,300 point steder der. 1658 01:07:43,300 --> 01:07:47,950 Og lad mig samle dette, skal math3, køre. 1659 01:07:47,950 --> 01:07:50,960 Temmelig sikker på 1 divideret med 10 ikke er 0. 1660 01:07:50,960 --> 01:07:54,270 Så hvad sker der? 1661 01:07:54,270 --> 01:07:56,740 Nå okay, så faktisk det behøver ikke at gøre med dette. 1662 01:07:56,740 --> 01:07:57,600 Det er en god tanke. 1663 01:07:57,600 --> 01:07:59,140 Dette er egentlig bare en tilfældighed 1664 01:07:59,140 --> 01:08:00,220 at vi gør dette. 1665 01:08:00,220 --> 01:08:02,010 Men bare for at bevise, at det ikke er det, jeg vil 1666 01:08:02,010 --> 01:08:03,160 returnere noget tilfældigt. 1667 01:08:03,160 --> 01:08:05,160 Gør ikke dette derhjemme, fordi det er bare forkert. 1668 01:08:05,160 --> 01:08:08,000 Men lave math3, lad mig køre den. 1669 01:08:08,000 --> 01:08:10,690 Så har intet at gøre med hvad jeg vender tilbage, kun har at gøre 1670 01:08:10,690 --> 01:08:11,940 med hvad jeg udskriver. 1671 01:08:11,940 --> 01:08:14,150 Men jeg hørte det hernede. 1672 01:08:14,150 --> 01:08:15,270 Hvad? 1673 01:08:15,270 --> 01:08:17,524 PUBLIKUM: Så vi er nødt til at skrive numrene i 1674 01:08:17,524 --> 01:08:19,680 delingen som - 1675 01:08:19,680 --> 01:08:20,319 >> DAVID Malan: Okay godt. 1676 01:08:20,319 --> 01:08:22,810 Så vi er nødt til at skrive numrene, der deltager i 1677 01:08:22,810 --> 01:08:25,979 division her som kommeværdier selv. 1678 01:08:25,979 --> 01:08:29,359 Så problemet her er som tidligere: C, med en masse 1679 01:08:29,359 --> 01:08:31,819 sprog, har forskellige datatyper. 1680 01:08:31,819 --> 01:08:34,600 Og disse datatyper, for eksempel, er disse her. 1681 01:08:34,600 --> 01:08:37,430 Og datatyper i spørgsmål her, når jeg skriver 1 og derefter jeg 1682 01:08:37,430 --> 01:08:40,870 type 10, er sandsynligvis, hvad datatyper? 1683 01:08:40,870 --> 01:08:42,170 Så det er nok en int, right? 1684 01:08:42,170 --> 01:08:44,149 Det er bestemt ikke en svømmer fordi der er ingen decimal 1685 01:08:44,149 --> 01:08:45,460 punkt eller noget lignende. 1686 01:08:45,460 --> 01:08:48,270 Så virkelig, jeg har en int divideret med en int. 1687 01:08:48,270 --> 01:08:52,160 >> Så det interessante ting om matematik og en computer er, at 1688 01:08:52,160 --> 01:08:54,840 hvis du laver division med heltal - 1689 01:08:54,840 --> 01:08:57,310 1 divideret med 10, ja er 0,1. 1690 01:08:57,310 --> 01:09:01,420 Men når du dividere et helt tal med et heltal, den 1691 01:09:01,420 --> 01:09:06,859 Svaret må også være et heltal bare fordi, for nu. 1692 01:09:06,859 --> 01:09:08,630 Og hvad er konsekvenserne så? 1693 01:09:08,630 --> 01:09:13,640 Tja, hvis svaret 1 er divideret med 10 er lig med 0,1, hvad 1694 01:09:13,640 --> 01:09:15,680 computeren kommer til at gøre, er jeg har ingen idé, hvordan man 1695 01:09:15,680 --> 01:09:19,270 repræsentere 0,1, fordi det er en kommatalsværdi, ikke en 1696 01:09:19,270 --> 01:09:21,910 integer, det kommer til at hugge alt efter 1697 01:09:21,910 --> 01:09:27,470 decimaltegn og bare vise dig 0 i begyndelsen. 1698 01:09:27,470 --> 01:09:29,540 Og det faktum, at det er udskrivning som en floating point 1699 01:09:29,540 --> 01:09:31,200 værdi, det er bare en æstetisk ting. 1700 01:09:31,200 --> 01:09:34,279 Det er fordi jeg tvinge computeren til at udskrive dette som en 1701 01:09:34,279 --> 01:09:35,229 decimaltalsværdi. 1702 01:09:35,229 --> 01:09:37,720 Og faktisk har jeg erklæret det som en float, men matematik er 1703 01:09:37,720 --> 01:09:39,010 sker herovre. 1704 01:09:39,010 --> 01:09:41,859 >> Så lad mig faktisk løse dette på en temmelig nem måde. 1705 01:09:41,859 --> 01:09:45,250 Hvorfor kan jeg ikke bare gøre 10,0 og 1,0, selv om 1706 01:09:45,250 --> 01:09:47,609 teknisk jeg kunne slippe afsted med blot at gøre en af ​​dem. 1707 01:09:47,609 --> 01:09:50,630 Lad mig nu gå videre og gøre math3. 1708 01:09:50,630 --> 01:09:56,350 Lad mig gå videre og nu køre math3, Enter. 1709 01:09:56,350 --> 01:09:57,500 Og nu, oh boy. 1710 01:09:57,500 --> 01:10:00,050 Nu har vi et nyt problem helt. 1711 01:10:00,050 --> 01:10:05,600 Så bedre, højre, vi er tættere på 0,1, men hvad tydeligvis er 1712 01:10:05,600 --> 01:10:06,240 galt her? 1713 01:10:06,240 --> 01:10:08,260 Medmindre vi har liggende til dig i mange år, ikke? 1714 01:10:08,260 --> 01:10:13,660 1 divideret med 10 er faktisk ikke helt 0,1, så hvad er 1715 01:10:13,660 --> 01:10:14,700 virkelig foregår der her? 1716 01:10:14,700 --> 01:10:16,420 Nå du kan slags grund gennem denne logisk. 1717 01:10:16,420 --> 01:10:19,200 Hvis en computer kun har en begrænset mængde RAM til at begynde 1718 01:10:19,200 --> 01:10:23,530 med, og faktisk en computer kun bruger 32 bits til en 1719 01:10:23,530 --> 01:10:26,200 decimaltalsværdi, det er indlysende, at med en 1720 01:10:26,200 --> 01:10:29,870 endeligt antal bits, 32 i dette tilfælde, ja, du kan 1721 01:10:29,870 --> 01:10:31,050 repræsentere en masse ting. 1722 01:10:31,050 --> 01:10:33,220 Det faktisk er fire milliarder forskellige værdier kan være 1723 01:10:33,220 --> 01:10:38,040 repræsenteret med 32 bits, 2 til 32, men det er stadig begrænset. 1724 01:10:38,040 --> 01:10:40,730 Så problemet er der et uendeligt antal reelle 1725 01:10:40,730 --> 01:10:41,370 numre, højre. 1726 01:10:41,370 --> 01:10:43,560 Hvis du giver mig et reelt tal, kan jeg altid finde dig en 1727 01:10:43,560 --> 01:10:46,080 lidt større, lidt mindre, ved blot tweaking 1728 01:10:46,080 --> 01:10:47,970 numre, der er efter kommaet. 1729 01:10:47,970 --> 01:10:50,870 Så hvis du ikke har et uendeligt antal bit, du 1730 01:10:50,870 --> 01:10:52,940 kan umuligt udgøre en uendelig 1731 01:10:52,940 --> 01:10:54,800 Antallet af reelle tal. 1732 01:10:54,800 --> 01:10:58,090 >> Så der er denne iboende unøjagtighed i computere, og 1733 01:10:58,090 --> 01:11:00,930 dette bliver snublede over hele tiden, selv i den simpleste af 1734 01:11:00,930 --> 01:11:02,260 programmer som dette. 1735 01:11:02,260 --> 01:11:05,640 Men også i nogle meget reelle verdens problemer så godt. 1736 01:11:05,640 --> 01:11:07,790 Faktisk, lad os tage et øjeblik til bare tage et kig på 1737 01:11:07,790 --> 01:11:09,530 noget, der rent faktisk er sket i virkeligheden. 1738 01:11:09,530 --> 01:11:11,620 Vi ser bare de første par minutter, og derefter 1739 01:11:11,620 --> 01:11:13,270 vi vil sende linket online. 1740 01:11:13,270 --> 01:11:16,700 Men dette er et udtryk for netop hvad der kan gå galt, helt 1741 01:11:16,700 --> 01:11:19,680 ærligt, på en meget tragisk måde, når disse ting er ikke 1742 01:11:19,680 --> 01:11:23,870 værdsat eller bare vi mennesker laver fejl, når det kommer til 1743 01:11:23,870 --> 01:11:26,792 disse former for gennemførelsesdetaljer af moderne computere. 1744 01:11:26,792 --> 01:11:27,284 >> [Video spiller] 1745 01:11:27,284 --> 01:11:30,730 -Vi vender nu tilbage til tekniske katastrofer på Modern Marvels. 1746 01:11:30,730 --> 01:11:32,200 Computere. 1747 01:11:32,200 --> 01:11:34,920 Vi har alle kommet til at acceptere de ofte frustrerende problemer 1748 01:11:34,920 --> 01:11:36,750 der går med dem. 1749 01:11:36,750 --> 01:11:40,690 Bugs, virus og software glitches er små priser til 1750 01:11:40,690 --> 01:11:42,550 betale for bekvemmelighed. 1751 01:11:42,550 --> 01:11:45,170 Men i high tech og høj hastighed militær og rum 1752 01:11:45,170 --> 01:11:48,450 programansøgninger, kan den mindste problemet være 1753 01:11:48,450 --> 01:11:52,220 forstørret ind i katastrofen. 1754 01:11:52,220 --> 01:11:56,780 Den 4. juni 1996, udarbejdet forskerne at lancere en ubemandet 1755 01:11:56,780 --> 01:11:58,430 Ariane 5 raket. 1756 01:11:58,430 --> 01:12:00,750 Man gennemførte videnskabelige satellitter, der skal 1757 01:12:00,750 --> 01:12:03,580 fastslå præcist, hvordan jordens magnetfelt 1758 01:12:03,580 --> 01:12:06,900 interagerer med solvinden. 1759 01:12:06,900 --> 01:12:10,330 Raketten blev bygget til Den Europæiske Rumorganisation og 1760 01:12:10,330 --> 01:12:13,450 løftes fra sit anlæg på kysten af ​​Fransk Guyana. 1761 01:12:13,450 --> 01:12:16,970 >> -På omkring cirka 37 sekunder inde i flyvningen, de først 1762 01:12:16,970 --> 01:12:19,700 bemærket noget gik galt, at dyserne var 1763 01:12:19,700 --> 01:12:21,590 drejning på en måde, de bør virkelig ikke. 1764 01:12:21,590 --> 01:12:25,020 Omkring 40 sekunder inde i flyvningen, klart køretøjet 1765 01:12:25,020 --> 01:12:27,340 var i vanskeligheder, og det er når de traf beslutningen om at 1766 01:12:27,340 --> 01:12:28,136 ødelægge det. 1767 01:12:28,136 --> 01:12:31,450 En række sikkerheds officer med enorme indvolde pressede 1768 01:12:31,450 --> 01:12:34,160 knappen, sprængte raket, før det kan blive en 1769 01:12:34,160 --> 01:12:37,470 fare for den offentlige sikkerhed. 1770 01:12:37,470 --> 01:12:40,750 >> -Det var den jomfrurejse af Ariane 5, og dens 1771 01:12:40,750 --> 01:12:43,990 ødelæggelse fandt sted på grund af en fejl indlejret i 1772 01:12:43,990 --> 01:12:45,480 rakettens software. 1773 01:12:45,480 --> 01:12:47,660 >> -Problemet om Ariane var, at der var et nummer, 1774 01:12:47,660 --> 01:12:51,245 kræver 64 bits til at udtrykke og de ønskede at konvertere det 1775 01:12:51,245 --> 01:12:53,010 til et 16 bit tal. 1776 01:12:53,010 --> 01:12:54,900 De antog, at antallet aldrig var 1777 01:12:54,900 --> 01:12:56,280 vil være meget store, 1778 01:12:56,280 --> 01:12:59,920 at de fleste af disse cifre i 64 bit nummer var 0'erne. 1779 01:12:59,920 --> 01:13:01,860 De var forkert. 1780 01:13:01,860 --> 01:13:04,550 >> -Den manglende evne af et software-program til at acceptere 1781 01:13:04,550 --> 01:13:07,730 slags tal genereres af et andet var roden til 1782 01:13:07,730 --> 01:13:08,930 fejlen. 1783 01:13:08,930 --> 01:13:11,490 Softwareudvikling var blevet en meget bekostelig del af 1784 01:13:11,490 --> 01:13:13,280 ny teknologi. 1785 01:13:13,280 --> 01:13:16,530 Ariane 4 raket havde været meget vellykket. 1786 01:13:16,530 --> 01:13:19,100 Så meget af den software, skabt til det blev også brugt 1787 01:13:19,100 --> 01:13:21,050 i Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -Det grundlæggende problem var, at Ariane 5 var hurtigere, 1789 01:13:25,530 --> 01:13:27,280 fremskyndes hurtigere. 1790 01:13:27,280 --> 01:13:30,590 Og softwaren havde ikke tegnede sig for det. 1791 01:13:30,590 --> 01:13:33,060 >> -Den ødelæggelse af raketten var en enorm økonomisk 1792 01:13:33,060 --> 01:13:37,670 katastrofe, alt sammen på grund et minut software fejl. 1793 01:13:37,670 --> 01:13:40,750 Men det var ikke første gang, datakonvertering problemer havde 1794 01:13:40,750 --> 01:13:43,680 plaget moderne raketteknologi. 1795 01:13:43,680 --> 01:13:44,390 >> DAVID Malan: Vi vil lade det blive ved det. 1796 01:13:44,390 --> 01:13:46,870 Men dette er et udtryk for, hvor relevant selv nogle af 1797 01:13:46,870 --> 01:13:48,750 Disse laveste niveau detaljer, som vi er begyndt at 1798 01:13:48,750 --> 01:13:50,040 udforske dag. 1799 01:13:50,040 --> 01:13:52,510 Så selv om du får lidt distraheret måske af nogle af 1800 01:13:52,510 --> 01:13:55,240 syntaks og arcaneness her, indser, at over 1801 01:13:55,240 --> 01:13:57,690 sigt vil vi være fokuseret bare på, hvordan relevant det er at 1802 01:13:57,690 --> 01:13:59,530 verdener langt ud over CS. 1803 01:13:59,530 --> 01:14:00,780 Vi vil se dig på onsdag.