1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> David J. MALAN: Så dette er CS50. 3 00:00:13,800 --> 00:00:18,970 Og dette var CS50 egen Colton Ogden, for mere af, hvem der er musik, du kan 4 00:00:18,970 --> 00:00:22,820 downloade på soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Så vi i dag fokuserer så meget desto mere om kunsten at programmeringen. 6 00:00:26,690 --> 00:00:28,980 Og vi tager, hvor vi forlod slukket i sidste uge, med fokus 7 00:00:28,980 --> 00:00:31,660 på bunden, der var det grafisk programmeringssprog. 8 00:00:31,660 --> 00:00:35,490 Og tage tingene ned til et lavere niveau, ved hjælp af en mere traditionel programmering 9 00:00:35,490 --> 00:00:38,420 sprog er kendt som C. Men undervejs, realisere 10 00:00:38,420 --> 00:00:40,730 at de samme ideer, vi talte om sidste fredag 11 00:00:40,730 --> 00:00:44,390 vil gentage sig ikke kun i denne sprog C, men i de fleste hver anden 12 00:00:44,390 --> 00:00:46,350 at vi ser på dette semester. 13 00:00:46,350 --> 00:00:50,247 >> Så vi kaldte denne ting her hvad sidste gang? 14 00:00:50,247 --> 00:00:51,830 Dette er repræsentativt for en redegørelse. 15 00:00:51,830 --> 00:00:53,080 Så vi kaldte det en erklæring. 16 00:00:53,080 --> 00:00:54,100 Og det gør noget. 17 00:00:54,100 --> 00:00:56,910 Det er en instruktion om, at et computer eller Scratch måtte udføre. 18 00:00:56,910 --> 00:00:59,910 Og nu, lad os også begynde kalde noget som dette en funktion, 19 00:00:59,910 --> 00:01:02,070 grunde skal vi snart se. 20 00:01:02,070 --> 00:01:03,681 >> I mellemtiden, så vi ting som dette. 21 00:01:03,681 --> 00:01:05,680 Og disse er generelt kendt som hvad konstruere? 22 00:01:05,680 --> 00:01:06,240 >> PUBLIKUM: Loop. 23 00:01:06,240 --> 00:01:06,860 >> David J. MALAN: Så en løkke. 24 00:01:06,860 --> 00:01:07,943 Så temmelig ligetil. 25 00:01:07,943 --> 00:01:09,470 Det bogstaveligt gør hvad den siger. 26 00:01:09,470 --> 00:01:12,210 Og i Scratch, hvis du vil proppe flere puslespilsbrikker derinde, 27 00:01:12,210 --> 00:01:13,950 stykket vil vokse til at passe det. 28 00:01:13,950 --> 00:01:16,790 Og vi vil se i C, der vi kan gøre det samme. 29 00:01:16,790 --> 00:01:20,000 >> En anden type af bue, selv om, i Scratch kan være evigt, 30 00:01:20,000 --> 00:01:21,820 eller der er et vilkårligt antal af andre metoder. 31 00:01:21,820 --> 00:01:24,150 Men lad os tage et mere generalist look, med et ansigt 32 00:01:24,150 --> 00:01:27,402 Det er sandsynligvis helt fortrolig, på loops mere generelt. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: One ting som computere 34 00:01:29,110 --> 00:01:31,860 er rigtig gode til, er gentage kommandoer. 35 00:01:31,860 --> 00:01:33,910 Som person, ville du få virkelig keder sig, hvis du 36 00:01:33,910 --> 00:01:36,730 havde at gøre det samme masser af gange i træk. 37 00:01:36,730 --> 00:01:40,530 Men en computer kan gøre det samme millioner eller endda milliarder af gange, 38 00:01:40,530 --> 00:01:43,290 og ikke kede sig, og være i stand til at udføre den rigtig godt. 39 00:01:43,290 --> 00:01:45,650 >> Så for eksempel, hvis jeg ønskede at ønske alle 40 00:01:45,650 --> 00:01:48,840 på Facebook tillykke med fødselsdagen ved at sende dem en e-mail, 41 00:01:48,840 --> 00:01:51,550 det kan tage mig mere end en århundrede til rent faktisk at skrive ud 42 00:01:51,550 --> 00:01:53,000 alle disse e-mails til alle. 43 00:01:53,000 --> 00:01:57,780 Men med blot et par linjer kode, kan jeg have et system sende en e-mail til alle 44 00:01:57,780 --> 00:01:59,930 på Facebook, der ønsker dem tillykke med fødselsdagen. 45 00:01:59,930 --> 00:02:02,730 Så det er hvad loops er, og hvorfor de er værdifulde og noget 46 00:02:02,730 --> 00:02:04,740 at computere kan gøre meget godt. 47 00:02:04,740 --> 00:02:05,630 >> David J. MALAN: Så hvis du har været modtager 48 00:02:05,630 --> 00:02:07,820 nogle af CS50-og Dropbox plads for sent, 49 00:02:07,820 --> 00:02:10,590 det er faktisk præcis, hvad vi gøre, ved hjælp af kode helt ligesom det. 50 00:02:10,590 --> 00:02:12,600 Vi hovedsagelig har en stor regneark, hvori 51 00:02:12,600 --> 00:02:15,016 folk har været indtaste deres navne og e-mailadresser. 52 00:02:15,016 --> 00:02:18,160 Og vi skrev en lille smule kode, kan gentage over disse adresser 53 00:02:18,160 --> 00:02:21,860 og spytte ud unikke adresser i tilfælde af nogen fremlagt flere gange. 54 00:02:21,860 --> 00:02:25,120 Og derefter sender vi en automatiseret e-mail fra CS50 bot, 55 00:02:25,120 --> 00:02:27,190 herunder kuponkode. 56 00:02:27,190 --> 00:02:29,290 >> Nu har vi også set på denne konstruktion sidste gang. 57 00:02:29,290 --> 00:02:33,100 Og det er en særlig eksempel på, hvad? 58 00:02:33,100 --> 00:02:35,050 Så ja, en boolsk udtryk. 59 00:02:35,050 --> 00:02:37,050 Og formen menes at fange så godt. 60 00:02:37,050 --> 00:02:39,966 Alle sådanne spørgsmål til danner sandt eller falsk i Scratch 61 00:02:39,966 --> 00:02:41,590 vil se lidt noget som dette. 62 00:02:41,590 --> 00:02:43,200 Og vi kalde dette en boolsk udtryk. 63 00:02:43,200 --> 00:02:46,170 Det er faktisk sandt eller falsk, ja eller nej. 64 00:02:46,170 --> 00:02:49,150 Det er en måde at besvare et spørgsmål. 65 00:02:49,150 --> 00:02:52,420 >> Og i mellemtiden kan du bruge disse boolesk udtryk indersiden af ​​konstruktioner 66 00:02:52,420 --> 00:02:54,720 som disse, hvilke af Selvfølgelig er betingelserne 67 00:02:54,720 --> 00:02:57,259 eller filialer, legendarisk gafler i vejen. 68 00:02:57,259 --> 00:02:59,550 Og de kan ikke blot se som dette, men de kan også 69 00:02:59,550 --> 00:03:02,080 har elses forbundet med dem. 70 00:03:02,080 --> 00:03:05,820 Og du kan faktisk have en trevejs gaffel i vejen eller en fire vejs gaffel 71 00:03:05,820 --> 00:03:08,340 i vejen, blot ved indlejrer disse ting, 72 00:03:08,340 --> 00:03:10,510 som du kan se i Scratch hvis du ikke allerede har. 73 00:03:10,510 --> 00:03:13,550 Og som du kan gøre i C så godt. 74 00:03:13,550 --> 00:03:16,810 >> Lad os tage en anden generalist se på et alumnist, samt, som 75 00:03:16,810 --> 00:03:21,490 kan udgøre en anden tilgang disse ting kaldet betingelser. 76 00:03:21,490 --> 00:03:24,060 >> Bill Gates: Folk laver beslutninger hver dag. 77 00:03:24,060 --> 00:03:27,530 For eksempel, før du går uden dig slags har en if-sætning, der siger, 78 00:03:27,530 --> 00:03:31,480 hvis det regner så jeg brug for at få min jakke. 79 00:03:31,480 --> 00:03:36,820 Og computere er forbløffende, når du beslutte den slags udtalelser, 80 00:03:36,820 --> 00:03:42,280 at de pålideligt kan udføre disse ting til utrolige hastighed. 81 00:03:42,280 --> 00:03:48,240 Og så et edb-program virkelig er en lille smule af matematik og nogle 82 00:03:48,240 --> 00:03:53,050 hvis sætninger, hvor afgørelsen bliver foretaget. 83 00:03:53,050 --> 00:03:55,020 >> David J. MALAN: Så som du måske ved, var det 84 00:03:55,020 --> 00:03:57,880 folk som Bill Gates, Paul Allen, og andre 85 00:03:57,880 --> 00:04:00,240 der virkelig sparket off såkaldt personlig computer 86 00:04:00,240 --> 00:04:01,990 revolution for nogle år siden. 87 00:04:01,990 --> 00:04:04,140 Jeg troede, før vi dykker ind i nogle dokumentet, 88 00:04:04,140 --> 00:04:09,920 vi ville fortælle en fortælling fra Albuquerque, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 og videnskab, hvor nogle af Bill Gates ' og Paul Allen tidligste historier 90 00:04:13,650 --> 00:04:17,470 er fortalte, hvordan vi har nu nutidens pc'er og Mac'er og meget mere. 91 00:04:17,470 --> 00:04:22,390 Til dette har vi brug to frivillige der har meget gode indtaling stemmer 92 00:04:22,390 --> 00:04:23,735 at læse et script højt. 93 00:04:23,735 --> 00:04:25,530 >> Okay, hvad med i tilbage der. 94 00:04:25,530 --> 00:04:26,120 Kom op. 95 00:04:26,120 --> 00:04:27,770 Og hvad med foran her. 96 00:04:27,770 --> 00:04:28,340 Kom ned. 97 00:04:28,340 --> 00:04:29,600 Tag din steder her. 98 00:04:29,600 --> 00:04:32,444 Som du fyre kommer op, et par af administrative meddelelser. 99 00:04:32,444 --> 00:04:34,360 sektionering processen at vælge en sektion, 100 00:04:34,360 --> 00:04:36,068 vil starte dette Onsdag til fredag. 101 00:04:36,068 --> 00:04:38,400 Mere om det i det kommende Onsdag i forelæsning. 102 00:04:38,400 --> 00:04:41,770 >> Super sektioner, i mellemtiden, er noget, som vi tilbyder i næste uge 103 00:04:41,770 --> 00:04:45,310 hvorved hele klassen opfordres at deltage i forholdsvis stor skala 104 00:04:45,310 --> 00:04:47,690 afdelinger, en mere komfortabel, en mindre behagelig. 105 00:04:47,690 --> 00:04:51,340 Og vi vil annoncere de oplysninger af det, så godt, senere i denne uge. 106 00:04:51,340 --> 00:04:53,310 >> Imens sektioner, selv, vil begynde 107 00:04:53,310 --> 00:04:57,241 i uge tre af naturligvis nul indeks, hvilket betyder de er et par uger 108 00:04:57,241 --> 00:04:57,740 ud. 109 00:04:57,740 --> 00:04:58,450 Så ikke at bekymre dig. 110 00:04:58,450 --> 00:05:01,014 Du har endnu ikke savnet noget langs disse linjer. 111 00:05:01,014 --> 00:05:03,930 I mellemtiden i mellemtiden, hvis du har spørgsmål administrativt 112 00:05:03,930 --> 00:05:08,120 email mig og Devon og Gabe og Rob på denne adresse her. 113 00:05:08,120 --> 00:05:10,320 >> Endelig problem sæt 0 er naturligvis ud. 114 00:05:10,320 --> 00:05:12,320 Du har måske bemærket det på kursets hjemmeside. 115 00:05:12,320 --> 00:05:14,840 Det bør give dig alle svar på spørgsmål 116 00:05:14,840 --> 00:05:18,250 du måtte have langs vejen for komme i gang med problemet sæt. 117 00:05:18,250 --> 00:05:21,430 Men hvis du befinder dig har behov for en hjælpende hånd, 118 00:05:21,430 --> 00:05:25,020 med alle midler deltage kontortid, Mandag, tirsdag, onsdag, torsdag 119 00:05:25,020 --> 00:05:27,290 af denne uge i aften i fire spisesale. 120 00:05:27,290 --> 00:05:31,650 Se denne webadresse der for de oplysninger, hvor kontortid skal være. 121 00:05:31,650 --> 00:05:34,000 >> Nu Lad os mødes vores to gæster her i dag. 122 00:05:34,000 --> 00:05:34,740 Hvad er dit navn? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> David J. MALAN: Jay Paul, rart at møde dig. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> David J. MALAN: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> David J. MALAN: Hikari. 129 00:05:38,810 --> 00:05:39,790 Rart at møde dig så godt. 130 00:05:39,790 --> 00:05:42,123 Jay Paul og Hikari har i foran dem på disse musik 131 00:05:42,123 --> 00:05:45,100 står to scripts, som jeg trykte ud denne morgen fra New Mexico 132 00:05:45,100 --> 00:05:46,692 Museum of Natural History og Science. 133 00:05:46,692 --> 00:05:48,400 Og hvad jeg troede Jeg ville gøre over hovedhøjde 134 00:05:48,400 --> 00:05:52,830 er ledsage din recitation af scriptet, og denne historie 135 00:05:52,830 --> 00:05:54,700 med nogle visuelle billeder, ingen overraskelser. 136 00:05:54,700 --> 00:05:57,512 >> Og hvad jeg har gjort i forvejen er prehighlight på dit script 137 00:05:57,512 --> 00:05:59,470 hvad du skal læse, og hvad du bør læse. 138 00:05:59,470 --> 00:06:00,920 Og vi vil i det væsentlige bare alternative stykker. 139 00:06:00,920 --> 00:06:03,211 Så det er meget ligesom du kan har gjort i engelsk klasse. 140 00:06:03,211 --> 00:06:06,875 Det er virkelig tvinge publikum at tro på din historie her. 141 00:06:06,875 --> 00:06:07,600 Skal vi? 142 00:06:07,600 --> 00:06:13,272 Så historien her er, at vi har et BASIC, og det begynder i Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Det var vinter, 1974 i Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 hvor vintrene kan være koldt. 145 00:06:20,240 --> 00:06:22,800 En skægget, langhårede kollegium frafald opkaldt 146 00:06:22,800 --> 00:06:27,280 Paul Allen blev drudging tværs Harvard Square, absorberet i sine tanker. 147 00:06:27,280 --> 00:06:31,050 Hans største bekymring i disse dage var, hvordan man får sin ven, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 at forlade skolen og gå i forretninger med ham. 149 00:06:34,974 --> 00:06:37,890 HIKARI: De to var allerede gået gennem en række erhvervsprojekter 150 00:06:37,890 --> 00:06:40,850 sammen, begyndende ved Lakeside skole i Seattle, hvor 151 00:06:40,850 --> 00:06:45,220 de blev betalt i fri computer tid til teste et PDP-10 computer på en lokal tid 152 00:06:45,220 --> 00:06:46,580 deling selskab. 153 00:06:46,580 --> 00:06:50,930 Den seneste plan havde været at holde op skole og danne et software firma. 154 00:06:50,930 --> 00:06:53,440 Allen havde forladt Washington State University. 155 00:06:53,440 --> 00:06:58,380 Men i sidste øjeblik, Gates besluttede at holde fast Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Den dag, krydser Harvard Square, Allen spottet i januar, 157 00:07:02,080 --> 00:07:07,530 1975 nummer af Popular Electronics med jorden standsning overskrift, 158 00:07:07,530 --> 00:07:11,900 Verdens første minicomputer kit til rival forretningsmodeller. 159 00:07:11,900 --> 00:07:14,430 Under overskriften var et billede af en lille boks 160 00:07:14,430 --> 00:07:16,160 smykket med lys og switche. 161 00:07:16,160 --> 00:07:19,770 Det blev kaldt Mits Altair 8800. 162 00:07:19,770 --> 00:07:24,100 Og Allen vidste, at dette var, hvad han havde ledt efter. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Days of diskussion følges. 164 00:07:26,350 --> 00:07:30,170 Allen og Gates forstod Betydningen af ​​Altair. 165 00:07:30,170 --> 00:07:32,480 De havde talt ofte om mikroprocessorer 166 00:07:32,480 --> 00:07:35,250 og ventede på at se, hvad ville ske med dem. 167 00:07:35,250 --> 00:07:39,770 Nu var der en minicomputer kit på dække af Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 Det havde tilsyneladende ingen software endnu. 169 00:07:42,830 --> 00:07:46,830 De forestillede sig en nation af programmører faldende på Mits. 170 00:07:46,830 --> 00:07:49,590 Og så de kaldte Ed Roberts, lederen af ​​virksomheden, 171 00:07:49,590 --> 00:07:53,330 hævder at have en version af BASIC programmeringssprog næsten klar 172 00:07:53,330 --> 00:07:54,710 til Altair. 173 00:07:54,710 --> 00:07:55,570 De gjorde ikke. 174 00:07:55,570 --> 00:07:58,910 Og Roberts må have vidst, at de ikke gjorde. 175 00:07:58,910 --> 00:08:03,170 Han fik 10 opkald om dagen fra mennesker, der havde en grundlæggende næsten klar. 176 00:08:03,170 --> 00:08:05,570 Og hans lager svar var, "Den første person 177 00:08:05,570 --> 00:08:11,090 der dukker op med en arbejdsgruppe BASIC får kontrakten. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates og Allen aldrig havde set en Altair. 179 00:08:13,910 --> 00:08:17,600 De havde aldrig selv set den Intel 8080 mikroprocessor 180 00:08:17,600 --> 00:08:19,060 i hjertet af Altair. 181 00:08:19,060 --> 00:08:21,470 Men et par år tidligere Allen havde skrevet et program 182 00:08:21,470 --> 00:08:25,220 på en mainframe computer, emuleret driften af ​​en tidligere Intel 183 00:08:25,220 --> 00:08:26,217 mikroprocessor. 184 00:08:26,217 --> 00:08:28,300 Og denne gang omkring de ville gøre det samme. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Med en Intel 8080 manual ved hans side, 187 00:08:34,380 --> 00:08:37,770 Allen sad på en Harvard PDP-10 computer 188 00:08:37,770 --> 00:08:42,010 og skrev emulatoren og software nødvendige redskaber til at gøre programmeringen. 189 00:08:42,010 --> 00:08:45,820 Imens Gates stoppet går til klasser og helligede sig 190 00:08:45,820 --> 00:08:48,120 at designe BASIC, hjælp alle trick 191 00:08:48,120 --> 00:08:53,130 han vidste at få størrelsen ned under 4 kilobyte. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Ude i Albuquerque, Ed Roberts fik et opkald fra Gates 193 00:08:55,870 --> 00:08:59,754 beder om flere oplysninger om, hvordan Altair håndteres specifikke rutiner. 194 00:08:59,754 --> 00:09:01,170 Ingen har nogensinde havde bedt før. 195 00:09:01,170 --> 00:09:02,670 Og Roberts begyndte at blive interesseret. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Med udviklingen værktøjer og design klar, 198 00:09:07,970 --> 00:09:10,780 Gates og Allen skrev koden på PDP-10, 199 00:09:10,780 --> 00:09:16,060 mobilisere en anden Harvard-studerende, Monte Davidoff, at skrive matematiske rutiner. 200 00:09:16,060 --> 00:09:19,450 Efter en sidste nat af programmering, Allen fik på et fly 201 00:09:19,450 --> 00:09:22,970 til at levere deres BASIC til Mits. 202 00:09:22,970 --> 00:09:25,800 Han tilbragte flyet ride ud bekymrende. 203 00:09:25,800 --> 00:09:28,490 Og tilbage i Cambridge Gates var bekymrende. 204 00:09:28,490 --> 00:09:32,100 De havde testet deres grundlæggende og det havde arbejdet på emulatoren. 205 00:09:32,100 --> 00:09:35,444 Men hvad nu hvis emulatoren var forkert? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Da flyet nærmede Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen indså, at deres BASIC, nu pænt indeholdt 208 00:09:40,070 --> 00:09:42,460 på en lille rulle hullet papir tape, ville 209 00:09:42,460 --> 00:09:44,970 være ubrugelig uden et separat program, kaldet en læsser, som 210 00:09:44,970 --> 00:09:47,550 ville fortælle Altair hvordan at læse papir tape væsen 211 00:09:47,550 --> 00:09:49,620 tilføres Teletype maskinen. 212 00:09:49,620 --> 00:09:52,970 Han tog sin notesbog og hurtigt skriblet ned et loader program 213 00:09:52,970 --> 00:09:56,819 i forsamlingen sprog, derefter manuelt oversat det til 1s og 0'erne 214 00:09:56,819 --> 00:09:57,985 Altair ville forstå. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen forventer en ren, lille, højteknologisk virksomhed 217 00:10:03,830 --> 00:10:05,470 drives af mænd i jakkesæt. 218 00:10:05,470 --> 00:10:09,210 Så han blev overrasket, da Roberts mødte ham i lufthavnen ligne en ranch 219 00:10:09,210 --> 00:10:10,270 hånd. 220 00:10:10,270 --> 00:10:12,070 Roberts var også overrasket. 221 00:10:12,070 --> 00:10:16,340 Da han faldt Harvard programmør på et dyrt hotel, 222 00:10:16,340 --> 00:10:20,790 Allen måtte tilstå, at han havde ikke råd til rummet. 223 00:10:20,790 --> 00:10:24,510 >> JAY Paul: Mits, selv, var placeret i en støvet striben mall. 224 00:10:24,510 --> 00:10:27,040 Inde på en rodet arbejdsbord var en Altair 225 00:10:27,040 --> 00:10:30,390 læsset op med 5 kilobyte hukommelse og forbundet med et kabel 226 00:10:30,390 --> 00:10:32,030 en Teletype maskine. 227 00:10:32,030 --> 00:10:37,200 Roberts og Chief Engineer, Bill Yates, ventede forventningsfuldt 228 00:10:37,200 --> 00:10:40,660 som Allen slås hans læsser program i Altair. 229 00:10:40,660 --> 00:10:44,980 Teletype begyndte chugging som det trak papiret tape gennem båndet læseren. 230 00:10:44,980 --> 00:10:47,215 Det tog måske 15 minutter at hente programmet. 231 00:10:47,215 --> 00:10:52,110 Så fjernskriver brat udskrevet en hukommelse prompt, så en klar prompt, 232 00:10:52,110 --> 00:10:55,340 og Allen begyndte at skrive et par test-kommandoer. 233 00:10:55,340 --> 00:10:57,400 Til alles forbløffelse, softwaren arbejdet. 234 00:10:57,400 --> 00:10:58,525 Der var fejl, selvfølgelig. 235 00:10:58,525 --> 00:11:02,070 Men det vigtigste var det fungerede. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Senere, på vej til en $ 3,00 frokost på Pancho, en hveps fløj 237 00:11:06,570 --> 00:11:10,470 i vinduet af pickup lastbil og stukket Allen på armen. 238 00:11:10,470 --> 00:11:13,070 Men på det tidspunkt intet kunne ødelægge stemningen. 239 00:11:13,070 --> 00:11:17,210 Altair nu havde sin grundlæggende, første kommercielle software til et hjem 240 00:11:17,210 --> 00:11:23,260 computer, lavet af Paul Allen og Bill Gates, at drive forretning som Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> David J. MALAN: Mange takket være vores to læsere. 242 00:11:25,336 --> 00:11:30,690 >> [Applaus] 243 00:11:30,690 --> 00:11:32,520 >> David J. MALAN: Nu du har dit valg, 244 00:11:32,520 --> 00:11:35,880 før du forlader, et sprudlende eller en glød i dark-- åh, 245 00:11:35,880 --> 00:11:40,810 vent et sekund, wait-- sprudlende og en glød i mørke elefant 246 00:11:40,810 --> 00:11:42,534 fra CS50 egen Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, tak. 248 00:11:43,450 --> 00:11:45,324 David J. MALAN: Alle højre, tak så meget. 249 00:11:45,324 --> 00:11:49,855 [Applaus] 250 00:11:49,855 --> 00:11:51,105 David J. MALAN: Så sand historie. 251 00:11:51,105 --> 00:11:54,380 Dette vil sige, at alle disse maskiner og den lethed, hvormed vi 252 00:11:54,380 --> 00:11:56,270 bruge dem nu og tage for givet, virkelig 253 00:11:56,270 --> 00:12:00,070 startede her, blot et par skridt fra denne faktiske teater. 254 00:12:00,070 --> 00:12:03,930 Og nu i dag, hvis du ikke har været, dette er Maxwell Dworkin, computeren 255 00:12:03,930 --> 00:12:05,810 videnskaber bygning, også rundt om hjørnet. 256 00:12:05,810 --> 00:12:09,760 Og på den anden etage i denne bygning hænger tre sider 257 00:12:09,760 --> 00:12:12,740 fra den oprindelige kildekode, Bill Gates og Paul Allen skrev. 258 00:12:12,740 --> 00:12:14,770 I virkeligheden, hvis brug du zoome i du kan se ikke kun 259 00:12:14,770 --> 00:12:17,350 deres navne i oprindelige type, men også 260 00:12:17,350 --> 00:12:22,100 deres underskrifter, at de prydede en par år tilbage, da de sidst besøgte. 261 00:12:22,100 --> 00:12:25,800 >> Men hvad var særligt overbevisende om dette er, hvad de satte sig for at gøre 262 00:12:25,800 --> 00:12:29,760 var at skrive et program, der ville give andre folk til at skrive 263 00:12:29,760 --> 00:12:30,950 deres egne programmer. 264 00:12:30,950 --> 00:12:34,280 På det tidspunkt var der alle med denne Altair maskine lavet af Mits. 265 00:12:34,280 --> 00:12:40,020 Og alt, hvad de havde brug for var en måde at gør det nemt for hobbyfolk og mennesker 266 00:12:40,020 --> 00:12:45,300 ligesom os i dette rum til rent faktisk at programmet at uden nødvendigvis at forstå 267 00:12:45,300 --> 00:12:49,060 Forsamlingen kode, eller maskine kode, eller Gud forbyde det, 0'er og 1-taller. 268 00:12:49,060 --> 00:12:51,190 Vi programmører, ligesom dem i dette rum, vi 269 00:12:51,190 --> 00:12:54,070 ønsker at være i stand til at udtrykke os meget mere ligesom pseudokode 270 00:12:54,070 --> 00:12:57,330 selvom det er en smule mere nit kræsne end vi talte i sidste uge. 271 00:12:57,330 --> 00:13:00,970 Vi ønsker ikke at skrive kode som denne, som Paul Allen og Bill Gates gjorde. 272 00:13:00,970 --> 00:13:04,850 Vi, i stedet ønsker at skrive kode, ser lidt mere brugervenlig. 273 00:13:04,850 --> 00:13:07,150 >> Nu er dette er et sprog kaldet BASIC. 274 00:13:07,150 --> 00:13:11,497 Og linjenumre der er, hvad du bruge til blot at nummerere linjer kode 275 00:13:11,497 --> 00:13:12,330 at du skriver. 276 00:13:12,330 --> 00:13:14,038 Vi behøver ikke engang at gør at disse dage. 277 00:13:14,038 --> 00:13:16,060 Men du kan se her hvordan PRINT "Hello, world" 278 00:13:16,060 --> 00:13:18,660 ville faktisk formentlig udskrive netop det. 279 00:13:18,660 --> 00:13:22,710 Og hvad så Bill og Paul gjorde, var sætte folk til at skrive kode som denne 280 00:13:22,710 --> 00:13:27,240 i stedet af-- hvis du tager et kig på den datalogi wall-- kode som denne. 281 00:13:27,240 --> 00:13:29,290 >> Faktisk CS50 nylig haft mulighed 282 00:13:29,290 --> 00:13:32,540 at sidde ned med professor Harry Lewis i Datalogi, der 283 00:13:32,540 --> 00:13:34,640 faktisk lærte Bill Gates nogle år siden, 284 00:13:34,640 --> 00:13:38,460 og står her før disse tre sider af uddrag. 285 00:13:38,460 --> 00:13:39,560 Lad os tage et kig. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Hvad du har her er en registrering af en tidlig stykke software 287 00:13:45,520 --> 00:13:50,240 skrevet af Bill Gates og Paul Allen, grundlæggerne af Microsoft. 288 00:13:50,240 --> 00:13:52,570 Så koden er interessant af to grunde. 289 00:13:52,570 --> 00:13:55,480 Først og fremmest blev det Microsofts første produkt, 290 00:13:55,480 --> 00:14:01,810 der var en tolk til BASIC programmeringssprog. 291 00:14:01,810 --> 00:14:04,940 Og for det andet, var dette et af de første forsøg 292 00:14:04,940 --> 00:14:10,580 at skabe en tolk så almindelig folk kunne bruge personlige computere. 293 00:14:10,580 --> 00:14:12,670 >> Så Bill Gates var en bachelor på Harvard. 294 00:14:12,670 --> 00:14:14,820 Jeg begyndte at undervise på Harvard i 1974. 295 00:14:14,820 --> 00:14:16,560 Dette blev gjort i 1975. 296 00:14:16,560 --> 00:14:20,180 Så det var tidligt i sin karriere og tidligt i min karriere. 297 00:14:20,180 --> 00:14:23,790 Jeg faktisk lærte Bill et kursus omkring dette tidspunkt. 298 00:14:23,790 --> 00:14:27,130 Paul Allen var ikke en Harvard-studerende, men han 299 00:14:27,130 --> 00:14:31,020 havde været en high school klassekammerat af Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Hvis du kommer og ser på listen, skal du 301 00:14:33,740 --> 00:14:36,230 faktisk finde en tredje navn, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 der var Gates klassekammerat her på Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, så her er en interessant kommentar op her. 304 00:14:41,340 --> 00:14:47,150 Det siger "I 4K kan slette kvadratroden men efter sløjfer skal stadig arbejde. " 305 00:14:47,150 --> 00:14:53,080 OK, så hvad det betyder, er, at der var to måder at kompilere dette program. 306 00:14:53,080 --> 00:14:57,860 Det ene var at køre på en version denne Altair computer 307 00:14:57,860 --> 00:15:04,310 der kun havde 4K ord hukommelse, 4.096 ord hukommelse. 308 00:15:04,310 --> 00:15:07,050 Men den store version, havde 8K. 309 00:15:07,050 --> 00:15:09,770 Og så, hvad det siger, er at i 4K udgave 310 00:15:09,770 --> 00:15:12,770 du var nødt til at slette nogle kode til at gøre det passer. 311 00:15:12,770 --> 00:15:14,790 Og en af ​​de ting, der ville blive slettet 312 00:15:14,790 --> 00:15:16,290 ville være kvadratroden rutine. 313 00:15:16,290 --> 00:15:20,360 Men tilsyneladende efter sløjfer bør stadig 314 00:15:20,360 --> 00:15:26,392 arbejde, selv når du kompilerer ned for blot 4K version af computeren. 315 00:15:26,392 --> 00:15:29,350 David J. MALAN: Så en af ​​de temaer, som vi skal se i datalogi, 316 00:15:29,350 --> 00:15:31,430 er dette begreb lagdeling og abstraktion, 317 00:15:31,430 --> 00:15:34,670 og virkelig stå på skuldrene af folk, der er kommet før os, ikke 318 00:15:34,670 --> 00:15:37,890 i modsætning til nogle af Bill Gates og Paul Allen fortælling her. 319 00:15:37,890 --> 00:15:40,080 Og hvad det betyder er at vi i dag kan tage for 320 00:15:40,080 --> 00:15:43,490 givet, at tingene er faktisk lettere for os at skrive kode. 321 00:15:43,490 --> 00:15:47,170 Faktisk kode, som vi sagde på fredag, er mere teknisk kendt som kildekode. 322 00:15:47,170 --> 00:15:52,210 Og det er denne engelske ligesom syntaks der er mere korrekt og mere veldefineret 323 00:15:52,210 --> 00:15:55,480 end noget pseudo kode, hvor der ikke er nogen formel definition. 324 00:15:55,480 --> 00:15:58,320 >> Og i dag, hvad vi vil at fokusere på, er kildekode 325 00:15:58,320 --> 00:16:01,010 der ligner dette, som ganske vist ved første øjekast 326 00:16:01,010 --> 00:16:02,690 ser helt kryptisk. 327 00:16:02,690 --> 00:16:08,540 Og helt ærligt, det er langt mere æstetisk kompleks end det underliggende program. 328 00:16:08,540 --> 00:16:13,300 Alt dette program gør, tilbagekaldelse, er hvad gjorde vi sige? 329 00:16:13,300 --> 00:16:14,990 Det bare udskriver "Hej verden". 330 00:16:14,990 --> 00:16:19,600 Og alligevel se på alle de ting, vi har brug for at ombrydes omkring det meget enkle sætning. 331 00:16:19,600 --> 00:16:21,750 Men inden længe alle disse linjer og mere 332 00:16:21,750 --> 00:16:24,800 vil gøre meget bedre mening for dig. 333 00:16:24,800 --> 00:16:26,940 >> Og strømmen er som følger. 334 00:16:26,940 --> 00:16:31,220 Hvad vi har brug for til vores rådighed er at tage kode, ligesom kilden 335 00:16:31,220 --> 00:16:32,340 kode, som vi lige har set. 336 00:16:32,340 --> 00:16:35,060 Og vi har brug for et nyt program at køre det igennem. 337 00:16:35,060 --> 00:16:39,130 Vi har behov for algoritmer, som kan konvertere kildekode, som dette, 338 00:16:39,130 --> 00:16:41,932 i objekt kode, 0'er og 1-taller. 339 00:16:41,932 --> 00:16:43,890 Med andre ord, hvad vi kommer til at lære i dag 340 00:16:43,890 --> 00:16:46,620 er, hvordan man gør dette, så skriv kildekode op øverst, 341 00:16:46,620 --> 00:16:49,930 videregive det som input til en særlig program kaldet en compiler, 342 00:16:49,930 --> 00:16:52,140 og vi kommer til at producere objekt kode. 343 00:16:52,140 --> 00:16:54,600 Hvilket er bare en fancy måde siger vi vil tage noget 344 00:16:54,600 --> 00:16:58,350 der ligner dette, passere det ind i et program kaldet en compiler, 345 00:16:58,350 --> 00:17:01,210 producerende objekt kode der ligner dette. 346 00:17:01,210 --> 00:17:04,720 >> Så dette er bogstaveligt talt mønstre af 0'er og 1'ere 347 00:17:04,720 --> 00:17:08,550 der forstås af en Intel computer i disse dage, 348 00:17:08,550 --> 00:17:12,480 at hvis fortolket af CPU, hjerner inde i en computer, 349 00:17:12,480 --> 00:17:16,130 vil bogstaveligt udskrive, ganske enkelt, "Hej verden". 350 00:17:16,130 --> 00:17:19,670 Nu er der langt mere 0'er og 1-taller, end du håber kan være nødvendig for at. 351 00:17:19,670 --> 00:17:22,520 Men det er fordi vi er ved at bygge på en god del af kompleksitet 352 00:17:22,520 --> 00:17:24,270 at vi fremover kan tage for givet. 353 00:17:24,270 --> 00:17:27,869 Med andre ord, en masse smarte mennesker har givet os en masse fede værktøjer 354 00:17:27,869 --> 00:17:32,480 og kraftfuld software, som vi kan nu lave projekter af vores egne. 355 00:17:32,480 --> 00:17:33,400 >> Så lad os komme i gang. 356 00:17:33,400 --> 00:17:36,640 Betragtninger sidste fredag, og til Problem Sæt 0 i denne uge, 357 00:17:36,640 --> 00:17:39,000 du kan spille i et verden, der ser sådan ud. 358 00:17:39,000 --> 00:17:42,180 Fra i dag og til Problem Set 1 i næste uge, koden 359 00:17:42,180 --> 00:17:45,410 kommer til at se lidt mere kryptisk, men funktionelt er 360 00:17:45,410 --> 00:17:46,940 vil være den samme. 361 00:17:46,940 --> 00:17:50,770 Så varsel, toppen er Scratch, bund er C. Frankly Scratch 362 00:17:50,770 --> 00:17:52,780 er meget mere bruger venlige og tilgængelige. 363 00:17:52,780 --> 00:17:56,890 Men hvis du nu sammenligne visuelt top til bund, der er form for en for en 364 00:17:56,890 --> 00:17:59,690 korrespondance mellem puslespilsbrikker og sprog 365 00:17:59,690 --> 00:18:00,870 vi er ved at lege med. 366 00:18:00,870 --> 00:18:04,420 Især sige den blå brik op øverst, 367 00:18:04,420 --> 00:18:08,370 er tilsyneladende svarer til, hvad søgeord eller særlig sætning i dette sprog 368 00:18:08,370 --> 00:18:09,062 kaldet C? 369 00:18:09,062 --> 00:18:09,770 Publikum: printf. 370 00:18:09,770 --> 00:18:10,728 David J. MALAN: printf. 371 00:18:10,728 --> 00:18:12,140 Det betyder formateret udskrivning. 372 00:18:12,140 --> 00:18:15,240 Og det er bare en fancy måde at sige printf i C 373 00:18:15,240 --> 00:18:18,615 kommer til at være en erklæring eller en funktion der udskriver noget til skærmen. 374 00:18:18,615 --> 00:18:19,990 Hvad vil det udskrive til skærmen? 375 00:18:19,990 --> 00:18:23,627 Uanset hvad du fortælle det til inde citater, inde i parenteser. 376 00:18:23,627 --> 00:18:25,460 Så igen, ganske vist, der er en masse ting 377 00:18:25,460 --> 00:18:27,990 at du er nødt til at huske på, parenteser, citater, semikoloner, 378 00:18:27,990 --> 00:18:28,656 og alt dette. 379 00:18:28,656 --> 00:18:30,600 Men alt dette er sortering af ved siden af ​​punktet. 380 00:18:30,600 --> 00:18:33,660 Det interessante takeaway for nu er, at sige blok i Scratch 381 00:18:33,660 --> 00:18:37,520 er temmelig meget svarende til printf erklæring i C. 382 00:18:37,520 --> 00:18:41,390 >> I mellemtiden er den gule brik op øverst, når grønt flag klikkes, 383 00:18:41,390 --> 00:18:44,736 er sandsynligvis ækvivalent hvad søgeord her? 384 00:18:44,736 --> 00:18:45,360 PUBLIKUM: Hoved. 385 00:18:45,360 --> 00:18:46,359 David J. MALAN: So main. 386 00:18:46,359 --> 00:18:47,410 Måske int, måske ugyldige. 387 00:18:47,410 --> 00:18:51,280 Men vigtigste slags lyde som det er vigtigt, og det er faktisk. 388 00:18:51,280 --> 00:18:54,080 Så når grønt flag klikkede er igen brik 389 00:18:54,080 --> 00:18:56,390 der starter en Hele Scratch programmet. 390 00:18:56,390 --> 00:19:02,140 Men vi vil nu begynde at kalde at main, denne funktion er kendt som vigtigste. 391 00:19:02,140 --> 00:19:06,410 >> Nu i mellemtiden vi vil generalisere dette som følger. 392 00:19:06,410 --> 00:19:08,780 Vi kunne kalde sige en funktion. 393 00:19:08,780 --> 00:19:10,580 Og det kunne se ud specielt som denne. 394 00:19:10,580 --> 00:19:11,770 Jamen, hvad med sløjfer? 395 00:19:11,770 --> 00:19:16,540 Hvis vi ønsker at begynde at konvertere eller oversætte mere i Scratch til C, 396 00:19:16,540 --> 00:19:19,400 denne ting her tilsyneladende blot siger "hej verden" for evigt. 397 00:19:19,400 --> 00:19:23,060 Så hvis du forbinder disse scripts med en kat i Scratch, 398 00:19:23,060 --> 00:19:26,560 det bare at gå at holde siger i en slags tegneserie boble, 399 00:19:26,560 --> 00:19:29,922 "Hej verden, hej verden, goddag verden, "ad nauseum, for evigt. 400 00:19:29,922 --> 00:19:33,130 Hvis vi ønsker at gøre noget lignende i C, går det til at se lidt kryptisk. 401 00:19:33,130 --> 00:19:35,463 Men vi kan opnå den samme resultater, som vi vil til sidst 402 00:19:35,463 --> 00:19:36,861 finde ud af, med syntaks som denne. 403 00:19:36,861 --> 00:19:39,360 Jeg har tænkt mig at bruge printf igen, fordi i slutningen af ​​dagen 404 00:19:39,360 --> 00:19:42,040 Jeg ønsker at udskrive "Hej verden". 405 00:19:42,040 --> 00:19:45,610 Og jeg åbenbart bruger en søgeord, der er ikke for evigt. 406 00:19:45,610 --> 00:19:47,320 Det er i stedet ordet mens. 407 00:19:47,320 --> 00:19:49,650 Men netop semantisk i Engelsk, mens slags 408 00:19:49,650 --> 00:19:52,120 tyder på en vis form for løkke eller cykle. 409 00:19:52,120 --> 00:19:55,070 >> Så det sker for at være nøgleordet, at C bruger. 410 00:19:55,070 --> 00:20:00,700 Og mens sandt, hvorfor gør samtidig sand effektivt betyde for evigt? 411 00:20:00,700 --> 00:20:04,240 Nå, mens, som vi vil snart værdsætte desto mere, 412 00:20:04,240 --> 00:20:08,140 har denne parentes ved siden af ​​det hvor du kan sætte et boolsk udtryk. 413 00:20:08,140 --> 00:20:11,360 Og så længe det udtryk er sandt, denne kode, 414 00:20:11,360 --> 00:20:14,750 som betegnet mellem disse to krøllede parenteser, som vi kalder dem, 415 00:20:14,750 --> 00:20:16,880 vil bare holde kørende igen og igen. 416 00:20:16,880 --> 00:20:18,410 >> Så sandt, er sandt. 417 00:20:18,410 --> 00:20:20,900 Så mens sande midler bare gøre det for evigt. 418 00:20:20,900 --> 00:20:23,480 Det er næsten en dum konstruere at udtrykke dig. 419 00:20:23,480 --> 00:20:26,590 Men der var ingen for evigt nøgleord i C. Der var tid. 420 00:20:26,590 --> 00:20:29,390 Og der var en meget enkel Boolesk udtryk som sandt. 421 00:20:29,390 --> 00:20:32,210 Og så dette, vil vi se, giver det samme resultat. 422 00:20:32,210 --> 00:20:33,890 >> Hvor ellers kan du implementere en løkke? 423 00:20:33,890 --> 00:20:36,980 Tja, i Scratch du måske hård kode et bestemt antal 424 00:20:36,980 --> 00:20:39,430 gentagelser i sløjfen her. 425 00:20:39,430 --> 00:20:43,210 Og så det er præcis, hvad vi kan gøre i denne version af C, 426 00:20:43,210 --> 00:20:46,140 hvorved vi har en såkaldt for-løkke. 427 00:20:46,140 --> 00:20:49,850 Og for-løkken her vil at gentage, noget kryptisk, 428 00:20:49,850 --> 00:20:54,100 fra værdien 0 på op til, men mindre end 10. 429 00:20:54,100 --> 00:20:55,955 >> Nu variabler i bunden. 430 00:20:55,955 --> 00:20:57,830 Du har måske ikke haft lejlighed til at bruge disse. 431 00:20:57,830 --> 00:21:02,516 Men hvad er pointen i almindelighed af en variabel vi sige i sidste uge? 432 00:21:02,516 --> 00:21:03,015 Hvad er det? 433 00:21:03,015 --> 00:21:03,780 >> Publikum: Points. 434 00:21:03,780 --> 00:21:05,200 >> David J. MALAN: At påpege? 435 00:21:05,200 --> 00:21:05,700 Åh, påpeger. 436 00:21:05,700 --> 00:21:07,620 OK, holde styr på punkter, for eksempel i et spil. 437 00:21:07,620 --> 00:21:09,510 Eller mere generelt at gøre hvad med den variable? 438 00:21:09,510 --> 00:21:10,450 Hvad er nytten af ​​dem? 439 00:21:10,450 --> 00:21:10,825 >> Publikum: Hukommelse. 440 00:21:10,825 --> 00:21:11,750 >> David J. MALAN: Ja, så hukommelse. 441 00:21:11,750 --> 00:21:13,000 Det er til lagring af noget. 442 00:21:13,000 --> 00:21:17,336 Og den slags fjollet visuel jeg brugte sidste gang var ligesom denne glasskål. 443 00:21:17,336 --> 00:21:19,710 Og hvis vi ønskede at gemme noget inde i en variabel, 444 00:21:19,710 --> 00:21:21,918 for eksempel lige nu værdi er seks, fordi der 445 00:21:21,918 --> 00:21:23,450 er seks ping pong bolde i her. 446 00:21:23,450 --> 00:21:26,158 Det er bare en slags opbevaring beholder, der under hætten 447 00:21:26,158 --> 00:21:30,030 er implementeret med bits, 0'er og 1-taller, Men en computer sker for at gøre det. 448 00:21:30,030 --> 00:21:32,900 >> Så i Scratch, hvis vi ønsker at have en variabel, 449 00:21:32,900 --> 00:21:34,840 vi kan bruge en orange blok som denne. 450 00:21:34,840 --> 00:21:37,050 Vi vil kalde det tæller i dette særlige tilfælde. 451 00:21:37,050 --> 00:21:38,890 Jeg initialiseret det til 0. 452 00:21:38,890 --> 00:21:41,080 Og hvad det jeg så gøre? 453 00:21:41,080 --> 00:21:44,780 Evigt, siger tæller, som, hvis du spiller med det i Scratch, 454 00:21:44,780 --> 00:21:45,780 du bare se Scratch. 455 00:21:45,780 --> 00:21:49,920 Katten eller hvad kostume du lægge på ham vil tale det pågældende nummer. 456 00:21:49,920 --> 00:21:52,840 >> Skift disken af ​​1 er ligesom forøgelse med 1. 457 00:21:52,840 --> 00:21:56,580 Og så det kommer til at tælle fra hvad så hvad? 458 00:21:56,580 --> 00:21:59,114 Fra 0 to uendelighed, eller indtil Scratch pauser, 459 00:21:59,114 --> 00:22:01,030 eller indtil du slags mister interessen i at se 460 00:22:01,030 --> 00:22:02,650 hvor højt han rent faktisk kan tælle. 461 00:22:02,650 --> 00:22:04,800 >> Så hvordan kan vi konvertere dette til C? 462 00:22:04,800 --> 00:22:06,480 Det kommer til at se lidt kryptisk. 463 00:22:06,480 --> 00:22:08,896 Men igen, hvis man ser på de enkelte af disse linjer enkeltvis 464 00:22:08,896 --> 00:22:10,410 de slags lineup generelt. 465 00:22:10,410 --> 00:22:13,526 Så tilsyneladende int kommer til at har nogle særlige betydning i C. 466 00:22:13,526 --> 00:22:14,400 Vi vil se det igen. 467 00:22:14,400 --> 00:22:15,810 Som en side betyder det heltal. 468 00:22:15,810 --> 00:22:16,990 Så det betyder bare tal. 469 00:22:16,990 --> 00:22:18,920 Så det er den type glas skål jeg vil, en 470 00:22:18,920 --> 00:22:21,120 der kan lagre numre, ikke ping pong bolde. 471 00:22:21,120 --> 00:22:25,520 Og jeg har tænkt mig at bruge lighedstegnet der for at tildele den en værdi på 0. 472 00:22:25,520 --> 00:22:29,440 Så det er helt ligesom sæt tælleren til 0, men i C. 473 00:22:29,440 --> 00:22:32,840 >> I mellemtiden, mens sand, der var ækvivalent, naturligvis evigt, 474 00:22:32,840 --> 00:22:35,980 selvom det er lidt kryptisk, og derefter indersiden af ​​krøllede parenteser. 475 00:22:35,980 --> 00:22:39,188 Og du kan tænke på disse krøllede parenteser, som du kan skrive på dit tastatur, 476 00:22:39,188 --> 00:22:43,110 som virkelig bliver ligesom krumningen i Disse gule sløjfe blokke i bunden. 477 00:22:43,110 --> 00:22:45,700 Det omfatter flere linjer kode. 478 00:22:45,700 --> 00:22:48,120 >> Printf er at få en lidt skræmmende nu, fordi jeg 479 00:22:48,120 --> 00:22:51,120 se ikke kun citerer i parentes. 480 00:22:51,120 --> 00:22:55,160 Men hvad der ellers er nyt syntaktisk i dette eksempel? 481 00:22:55,160 --> 00:22:57,300 Der er en procent d. 482 00:22:57,300 --> 00:22:58,551 Og så backslash n er der. 483 00:22:58,551 --> 00:23:00,883 Vi ser, at før, selv selvom jeg ikke nævne det. 484 00:23:00,883 --> 00:23:01,886 Så er der et komma. 485 00:23:01,886 --> 00:23:03,010 Og så er der en tæller. 486 00:23:03,010 --> 00:23:05,010 >> Men vi vil se på blot et øjeblik at dette er blot 487 00:23:05,010 --> 00:23:09,080 en standard måde at sige at udskrive en "Decimaltal," citat, citat slut, 488 00:23:09,080 --> 00:23:10,500 nogle decimaltal. 489 00:23:10,500 --> 00:23:13,370 Men jeg har tænkt mig at fortælle dig senere hvad det decimaltal er. 490 00:23:13,370 --> 00:23:16,835 Så det faktum, at der er et komma i denne linje siger printf, 491 00:23:16,835 --> 00:23:18,710 betyder gå videre og udskrive nogle decimaltal. 492 00:23:18,710 --> 00:23:23,110 Åh, og ved den måde, at antallet er uanset værdien af ​​denne variabel er. 493 00:23:23,110 --> 00:23:25,880 Og så for at gøre dette mere klar, vil vi se et eksempel 494 00:23:25,880 --> 00:23:30,930 inden længe involverer præcis printf i forbindelse med virkelige C-programmer. 495 00:23:30,930 --> 00:23:33,472 >> Nu bare at ombryde op nogle af disse konstruktioner. 496 00:23:33,472 --> 00:23:36,680 Boolske udtryk, du måske ikke har lejlighed til at bruge disse i dit program 497 00:23:36,680 --> 00:23:39,450 men du kan meget vel, især hvis anvendelse af betingelser. 498 00:23:39,450 --> 00:23:43,460 Og så disse to eksempler fra Scratch betyde, hvis x er mindre end y, 499 00:23:43,460 --> 00:23:48,770 eller hvis x er mindre end y og y er mindre end z, hvordan kan vi oversætte det? 500 00:23:48,770 --> 00:23:50,810 >> Tja, i C er det bare kommer til at se sådan ud. 501 00:23:50,810 --> 00:23:55,300 Lidt kryptiske, flere parenteser, nogle underlige ampersands, men fundamentalt 502 00:23:55,300 --> 00:23:59,160 ideerne er så enkle, som de er i brik verden. 503 00:23:59,160 --> 00:24:02,690 Vi blot at markere, hvis noget er mindre end noget andet. 504 00:24:02,690 --> 00:24:03,910 >> Hvordan omkring forhold? 505 00:24:03,910 --> 00:24:09,710 I en nøddeskal på engelsk, hvad betyder dette luns af Scratch kode gøre ville du sige? 506 00:24:09,710 --> 00:24:11,050 >> Publikum: Sammenligner to numre. 507 00:24:11,050 --> 00:24:13,760 >> David J. MALAN: Sammenligner to tal, og hvis x er mindre end y 508 00:24:13,760 --> 00:24:14,860 det siger så meget. 509 00:24:14,860 --> 00:24:18,080 Hvis x er større end y det siger så meget, ellers 510 00:24:18,080 --> 00:24:20,740 hvis x er lig med y det siger så meget. 511 00:24:20,740 --> 00:24:22,180 Nu hvor har x og y kommer fra? 512 00:24:22,180 --> 00:24:22,680 Hvem ved. 513 00:24:22,680 --> 00:24:25,380 Denne luns af Scratch kode er ud af kontekst. 514 00:24:25,380 --> 00:24:29,050 Men hvad vi ønsker at gøre nu, er at oversætte dette for bare et øjeblik at se. 515 00:24:29,050 --> 00:24:31,660 >> Så som du får komfortabel denne uge i Problem sæt 516 00:24:31,660 --> 00:24:34,190 0 spiller i denne verden til venstre, indser 517 00:24:34,190 --> 00:24:36,940 at idéerne ikke ændrer denne uge eller næste eller senere. 518 00:24:36,940 --> 00:24:38,690 Vi er simpelthen at gå til begynde at skrive tingene 519 00:24:38,690 --> 00:24:41,240 på en anden måde med vores tastaturet i stedet for vores mus. 520 00:24:41,240 --> 00:24:44,577 >> Så hvis x er mindre end y, og der er nogle parenteser dér, 521 00:24:44,577 --> 00:24:47,160 så er der nogle krøllede parenteser igen at slags indkapsle det 522 00:24:47,160 --> 00:24:48,970 ligesom de gule puslespilsbrikker gøre. 523 00:24:48,970 --> 00:24:53,000 Og jeg har tænkt mig at printf x er mindre end y og så videre. 524 00:24:53,000 --> 00:24:56,540 >> Hvad er rart om C, som du kan se her, 525 00:24:56,540 --> 00:25:00,480 er, at du ikke får denne nesting, nesting, nesting det er nødvendigvis 526 00:25:00,480 --> 00:25:02,220 skal skubbe din kode til højre. 527 00:25:02,220 --> 00:25:04,990 Du kan i stedet have alt lineup pænt lide dette. 528 00:25:04,990 --> 00:25:08,960 Men det er bare en æstetisk detalje, som vi vil se igen inden længe. 529 00:25:08,960 --> 00:25:09,660 >> Okay. 530 00:25:09,660 --> 00:25:13,290 Så det bringer os tilbage til dette kryptiske søger programmet. 531 00:25:13,290 --> 00:25:15,180 Lad os rent faktisk at skrive noget kode. 532 00:25:15,180 --> 00:25:16,830 Nu, hvordan kan du gå om at skrive kode? 533 00:25:16,830 --> 00:25:21,310 I alle disse år, at du har ejet en Mac eller PC, stationær eller bærbar, 534 00:25:21,310 --> 00:25:24,520 du rent faktisk har haft mulighed at begynde at skrive programkode. 535 00:25:24,520 --> 00:25:27,050 Men du sandsynligvis mangler en speciel type program. 536 00:25:27,050 --> 00:25:28,470 Du kan helt sikkert skrive kode. 537 00:25:28,470 --> 00:25:30,740 Men du kan ikke nødvendigvis, ud af kassen, 538 00:25:30,740 --> 00:25:34,210 konvertere denne kildekode til objektkode, 0'er og 1'ere 539 00:25:34,210 --> 00:25:35,619 uden hvad på din computer? 540 00:25:35,619 --> 00:25:36,410 Publikum: Compiler. 541 00:25:36,410 --> 00:25:37,630 David J. MALAN: Så en compiler, til højre. 542 00:25:37,630 --> 00:25:39,730 Nu er de fleste af jer sikkert ejer ikke en compiler, 543 00:25:39,730 --> 00:25:41,259 har aldrig hentet en compiler. 544 00:25:41,259 --> 00:25:44,300 Men du vil se, kan du downloade det ligesom de fleste enhver anden stykke software. 545 00:25:44,300 --> 00:25:47,470 I en verden af ​​Mac OS, kan du downloade eller har hentet allerede 546 00:25:47,470 --> 00:25:50,437 noget, der hedder Xcode eller GCC eller Dunk. 547 00:25:50,437 --> 00:25:52,270 Hvis du kommer fra Windows-verden, du måske 548 00:25:52,270 --> 00:25:56,190 har hentet Visual Studio, Visual Basic, miljøer som. 549 00:25:56,190 --> 00:25:59,200 Der er snesevis af compilere disse dage, at du kan bruge. 550 00:25:59,200 --> 00:26:01,940 Men korte af det her er, at det ville være en smerte 551 00:26:01,940 --> 00:26:04,480 og helt ærligt, en teknologisk mareridt for hundreder 552 00:26:04,480 --> 00:26:07,680 af mennesker med forskellig computerkonfigurationer til alle 553 00:26:07,680 --> 00:26:09,800 konfigurere deres maskiner på nøjagtig samme måde 554 00:26:09,800 --> 00:26:11,700 så vi alle kan være på den samme side. 555 00:26:11,700 --> 00:26:15,240 >> Så hvad vi i stedet gøre i CS50 er giver vi dig 556 00:26:15,240 --> 00:26:18,349 en standard miljø, en Linux-miljø, der er 557 00:26:18,349 --> 00:26:20,140 kommer til at se lidt noget som dette. 558 00:26:20,140 --> 00:26:22,980 Du vil se mere af denne i Problem Set 1 specifikation, der 559 00:26:22,980 --> 00:26:25,330 vil gå online i denne fredag ​​aften. 560 00:26:25,330 --> 00:26:28,360 >> Og hvad det betyder er, at du fremover 561 00:26:28,360 --> 00:26:32,060 vil være i stand til at downloade og installere et program 562 00:26:32,060 --> 00:26:33,650 kaldet CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 Og du kommer til at hente og installere et andet program kaldet 564 00:26:36,275 --> 00:26:40,300 en hypervisor, som er blot en fancy måde at opnå dette. 565 00:26:40,300 --> 00:26:44,600 Uanset om du ejer en Mac eller pc eller en Linux-computer eller en Solaris computer, 566 00:26:44,600 --> 00:26:46,830 eller hvad skøre drift system, du kører, 567 00:26:46,830 --> 00:26:49,820 du kommer til at downloade et program kaldet hypervisor, der er 568 00:26:49,820 --> 00:26:53,350 kommer til at køre CS50 Appliance på din computer 569 00:26:53,350 --> 00:26:55,430 uanset hvad dit operativsystem er. 570 00:26:55,430 --> 00:27:00,640 En hypervisor andre ord konverterer vores stuff til hvilket som helst sprog, 571 00:27:00,640 --> 00:27:03,850 uanset instruktioner dine egen computer forstår. 572 00:27:03,850 --> 00:27:04,962 >> Så dette er en lagdeling. 573 00:27:04,962 --> 00:27:06,920 Og igen, det er lidt af tematisk i computer 574 00:27:06,920 --> 00:27:08,722 videnskab, bygningen på toppen af ​​tingene. 575 00:27:08,722 --> 00:27:09,680 Du har måske Windows. 576 00:27:09,680 --> 00:27:10,710 Du har måske Mac OS. 577 00:27:10,710 --> 00:27:12,960 Men fra næste uge, du er kommer til at have downloadet 578 00:27:12,960 --> 00:27:14,980 et frit stykke software kaldet hypervisor. 579 00:27:14,980 --> 00:27:17,800 Du kommer til at have downloadet et stykke software kaldet CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Det kommer til at køre i hypervisor, der kommer til at køre på din computer. 581 00:27:21,050 --> 00:27:23,030 Og slutresultatet er at vi alle vil 582 00:27:23,030 --> 00:27:26,220 har en simpel vindue som dette på din Mac eller pc 583 00:27:26,220 --> 00:27:30,160 der giver os en illusion af alle kører det samme operativsystem, 584 00:27:30,160 --> 00:27:32,800 uden nogen anden indvirkning på din computer. 585 00:27:32,800 --> 00:27:34,870 Og du kan fuld skærm det og i det væsentlige opfører 586 00:27:34,870 --> 00:27:37,550 som om du kører en operativsystem kaldet Linux, 587 00:27:37,550 --> 00:27:40,270 hvilket er, hvad CS50 Appliance er baseret på. 588 00:27:40,270 --> 00:27:42,930 >> Så lad os faktisk bruger dette nu til at skrive et program. 589 00:27:42,930 --> 00:27:45,450 Du kan skrive et program bruger Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Du kan skrive et program hjælp TextEdit eller Notepad, 591 00:27:48,160 --> 00:27:51,880 eller WordPad, eller stort set enhver ord forarbejdning program, du nogensinde har brugt. 592 00:27:51,880 --> 00:27:55,174 Men virkeligheden er, bør du ikke bruge rigtig nogen af ​​disse programmer. 593 00:27:55,174 --> 00:27:57,840 Du bør helt sikkert ikke bruge noget som Microsoft Word, som 594 00:27:57,840 --> 00:28:01,120 har fed vendende og kursiv, og større skrifttyper og mindre skrifttyper, 595 00:28:01,120 --> 00:28:03,560 fordi computeren ikke bekymre sig om noget af det. 596 00:28:03,560 --> 00:28:05,600 Alle computeren er kommer til at bekymre sig om, er 597 00:28:05,600 --> 00:28:09,040 Engelsk lignende instruktioner skrevet i C. 598 00:28:09,040 --> 00:28:12,050 >> Så hvad vi vil gøre inde af CS50 Appliance 599 00:28:12,050 --> 00:28:14,290 er at bruge et program, frit rådighed, og det er 600 00:28:14,290 --> 00:28:17,360 præ-installeret i denne apparat, kaldet Gedit. 601 00:28:17,360 --> 00:28:22,280 Og Gedit er bare en super enkel teksteditor som Mac OS'er TextEdit 602 00:28:22,280 --> 00:28:26,200 som Windows Notesblok, der kommer til ser lidt noget som dette. 603 00:28:26,200 --> 00:28:28,910 >> Så lad os faktisk ikke se lysbilleder af dette. 604 00:28:28,910 --> 00:28:32,580 Men lad os faktisk gå ind i selve miljøet. 605 00:28:32,580 --> 00:28:36,090 Jeg har tænkt mig at gå videre og log ind, i dette andet vindue, 606 00:28:36,090 --> 00:28:40,910 til min CS50 Appliance, som jeg har præ-installeret på min bærbare computer her. 607 00:28:40,910 --> 00:28:43,771 >> Bemærk, at, ligesom Windows og Mac OS, er det fik nogle menuer. 608 00:28:43,771 --> 00:28:45,520 Ligesom Windows det sætter det dernede i stedet 609 00:28:45,520 --> 00:28:47,020 af Mac OS, som sætter det dernede. 610 00:28:47,020 --> 00:28:48,930 Men virkeligheden er, det er alle slags af det samme. 611 00:28:48,930 --> 00:28:50,770 Og her er en hel bundt af software. 612 00:28:50,770 --> 00:28:51,770 Der er Dropbox. 613 00:28:51,770 --> 00:28:54,780 Der er en hel masse af tilbehør, grafiske programmer, som vi vil 614 00:28:54,780 --> 00:28:56,430 bruge senere i betegnelsen for problemet sæt. 615 00:28:56,430 --> 00:28:59,650 Der er en webbrowser indbygget, så at dette er en fuldt udbygget computer 616 00:28:59,650 --> 00:29:01,240 inde i en computer. 617 00:29:01,240 --> 00:29:04,170 >> Men jeg har tænkt mig at klikke på dette længst til venstre hvide ikon her, 618 00:29:04,170 --> 00:29:05,890 som er ikonet for Gedit. 619 00:29:05,890 --> 00:29:09,650 Og det kommer til at åbne et vindue der har tre paneler til det, 620 00:29:09,650 --> 00:29:12,590 en venstre en, en øverste og en nederste. 621 00:29:12,590 --> 00:29:16,071 >> Nu er det i denne top rigtige, der Jeg har tænkt mig at rent faktisk at skrive noget kode. 622 00:29:16,071 --> 00:29:16,820 Så lad os gøre dette ,. 623 00:29:16,820 --> 00:29:19,040 Jeg har tænkt mig at gå til Fil, Gem. 624 00:29:19,040 --> 00:29:22,100 Og du måske ikke nogensinde har set dette vindue før. 625 00:29:22,100 --> 00:29:23,620 Men det er ligesom Mac OS eller Windows. 626 00:29:23,620 --> 00:29:25,490 Det er bare et vindue med alle mapper 627 00:29:25,490 --> 00:29:27,290 at jeg har inde i denne computer. 628 00:29:27,290 --> 00:29:30,320 >> Og jeg har tænkt mig at spare filen som hello.c. 629 00:29:30,320 --> 00:29:32,690 Og jeg har tænkt mig at gå videre og klik på Gem. 630 00:29:32,690 --> 00:29:36,364 Og nu opdager jeg har en fane øverst til venstre kaldet hello.c. 631 00:29:36,364 --> 00:29:38,280 Så sandsynligvis temmelig velkendt, selvom du ikke har 632 00:29:38,280 --> 00:29:40,240 brugt dette program før. 633 00:29:40,240 --> 00:29:44,890 >> Og nu jeg har tænkt mig at skrive i dem temmelig kryptisk sekvens af kommandoer 634 00:29:44,890 --> 00:29:46,360 at vi så et øjeblik siden. 635 00:29:46,360 --> 00:29:49,330 Medtag, standard I / O.h. 636 00:29:49,330 --> 00:29:50,600 Mere om det snart. 637 00:29:50,600 --> 00:29:55,670 Int main tomrum, åben krøllet klampe, lukket klammeparentes. 638 00:29:55,670 --> 00:30:01,570 Og så inde i der jeg synes er hvor vi havde "Hej verden" semikolon. 639 00:30:01,570 --> 00:30:03,100 Og nu gemme. 640 00:30:03,100 --> 00:30:08,780 >> Så dette er et program skrevet i C, skrevet, derfor i kildekoden. 641 00:30:08,780 --> 00:30:10,720 Men jeg kan ikke bare køre dette program. 642 00:30:10,720 --> 00:30:13,390 Jeg slags ønsker at fordoble klik på et ikon eller andet sted, 643 00:30:13,390 --> 00:30:16,390 men intet ikon findes andre end kildekoden fil. 644 00:30:16,390 --> 00:30:20,359 Hvad igen, er processen nu at Jeg har brug for at køre denne fil igennem? 645 00:30:20,359 --> 00:30:21,150 Publikum: Compiler. 646 00:30:21,150 --> 00:30:22,399 David J. MALAN: Så en compiler. 647 00:30:22,399 --> 00:30:24,890 Så i forskellige computere, du gør dette på forskellige måder. 648 00:30:24,890 --> 00:30:27,480 Men hvad vi har gjort her i det CS50 Appliance, der er 649 00:30:27,480 --> 00:30:31,260 repræsentativt for, hvordan du kan gøre dette på mange forskellige systemer, 650 00:30:31,260 --> 00:30:34,036 er jeg simpelthen gå til køre en kommando kaldet fabrikat. 651 00:30:34,036 --> 00:30:35,660 Og gøre bogstaveligt talt kommer til at gøre det. 652 00:30:35,660 --> 00:30:36,640 Gør mig et program. 653 00:30:36,640 --> 00:30:39,060 >> Så gør kommer til at køre en compiler til mig. 654 00:30:39,060 --> 00:30:42,160 Og navnet på det program Jeg ønsker at gøre, er hej. 655 00:30:42,160 --> 00:30:43,510 Nu gør er et program. 656 00:30:43,510 --> 00:30:47,170 Og gøre er smart nok til at indse, at hvis jeg siger gøre hej, 657 00:30:47,170 --> 00:30:50,980 det kommer til at se ud automatisk efter en fil kaldet hello.c 658 00:30:50,980 --> 00:30:53,420 bare fordi det er den måde den er konfigureret. 659 00:30:53,420 --> 00:31:00,300 >> Så når jeg nu trykke Enter her, det skøre kryptiske linje lige blevet henrettet. 660 00:31:00,300 --> 00:31:02,720 Og tro mig, før lang, indenfor blot få dage, 661 00:31:02,720 --> 00:31:05,590 du vil forstå, hvad alle af det pjat midler. 662 00:31:05,590 --> 00:31:11,150 Men for nu, bare vide, at gøre udløst udførelse af en compiler. 663 00:31:11,150 --> 00:31:13,290 Med andre ord fandt en compiler på min computer 664 00:31:13,290 --> 00:31:14,820 der er forudinstalleret på CS50 Appliance 665 00:31:14,820 --> 00:31:16,560 at vi vil aflevere til dig i Problem Set 1. 666 00:31:16,560 --> 00:31:20,990 Og det så tog hello.c som indgang og producerede tilsyneladende 667 00:31:20,990 --> 00:31:23,040 0'er og 1-taller som output. 668 00:31:23,040 --> 00:31:29,410 >> Og som standard, hvad det gør, er det sparer disse 0'er og 1-taller i en fil kaldet hej. 669 00:31:29,410 --> 00:31:33,180 Og selv om denne syntaks også kan være nyt for dig, ved blot at sige prik 670 00:31:33,180 --> 00:31:37,110 slash hej vil være den midler, som jeg køre dette program. 671 00:31:37,110 --> 00:31:40,360 >> For nu og for mindst et par uger næsten alle programmerne 672 00:31:40,360 --> 00:31:44,230 vi skriver vil være i sorte og hvide tekstvinduer. 673 00:31:44,230 --> 00:31:47,006 Ingen mus, ingen klikke, ingen vinduer, ingen ikoner. 674 00:31:47,006 --> 00:31:49,630 Vi kommer til at holde det simpelt og fokusere på de underliggende ideer 675 00:31:49,630 --> 00:31:52,490 første gang inden vi kommer til noget højere niveau, for eksempel, 676 00:31:52,490 --> 00:31:56,410 ligesom break out spil, som vi talte om i den første forelæsning i sidste uge. 677 00:31:56,410 --> 00:32:00,820 >> Så når jeg trykker på Enter her, det er tilsvarende i en tekst kun miljø 678 00:32:00,820 --> 00:32:03,272 at fordoble på et ikon kaldet hej. 679 00:32:03,272 --> 00:32:05,480 Hvad forventer du vil ske, når jeg trykker på Enter så? 680 00:32:05,480 --> 00:32:07,120 >> PUBLIKUM: Det vil udskrive "Hej verden". 681 00:32:07,120 --> 00:32:10,000 >> David J. MALAN: Forhåbentlig det vil udskrive "Hello World". 682 00:32:10,000 --> 00:32:11,370 Og ja det gjorde. 683 00:32:11,370 --> 00:32:13,690 Nu har der været nogle kryptiske syntaks her. 684 00:32:13,690 --> 00:32:15,950 Lad os spole tilbage for kun et øjeblik og se, om vi 685 00:32:15,950 --> 00:32:19,530 kan ikke starte udlede blot ved lappeløsninger, forsøger og undlader, 686 00:32:19,530 --> 00:32:21,130 om, hvad der foregår her. 687 00:32:21,130 --> 00:32:23,609 Hvad hvis jeg slippe af med backslash n? 688 00:32:23,609 --> 00:32:25,650 Nu er nogle af jer, der har programmeret før sandsynligvis 689 00:32:25,650 --> 00:32:27,054 ved straks hvad det betyder. 690 00:32:27,054 --> 00:32:29,220 Men for dem af jer, der har aldrig programmeret før, 691 00:32:29,220 --> 00:32:34,052 mindst tror på dig selv, hvad der foregår at ændre sig, når jeg køres igen dette program? 692 00:32:34,052 --> 00:32:37,010 Så jeg har tænkt mig at gå tilbage til mit lille sort og hvid vindue, som 693 00:32:37,010 --> 00:32:39,290 er det vindue, Jeg kan kompilere dette. 694 00:32:39,290 --> 00:32:41,130 Jeg har tænkt mig at recompile hej. 695 00:32:41,130 --> 00:32:43,520 Vi kommer til at se den samme kryptisk sekvens af kommandoer. 696 00:32:43,520 --> 00:32:45,719 Og jeg har tænkt mig at gøre dot skråstreg hej. 697 00:32:45,719 --> 00:32:48,260 Og nu man har, hvis man ville, som aldrig programmeret før, 698 00:32:48,260 --> 00:32:49,770 hvad der kunne være anderledes denne gang? 699 00:32:49,770 --> 00:32:50,020 Ja. 700 00:32:50,020 --> 00:32:51,840 >> PUBLIKUM: Det vil ikke stoppe udskrivning "Hej verden". 701 00:32:51,840 --> 00:32:52,660 >> David J. MALAN: Det kommer til-- undskyld? 702 00:32:52,660 --> 00:32:54,210 >> PUBLIKUM: Det vil ikke stoppe udskrivning det? 703 00:32:54,210 --> 00:32:55,810 >> David J. MALAN: det vil ikke stoppe udskrivning "Hej verden". 704 00:32:55,810 --> 00:32:56,560 Så ikke en dårlig idé. 705 00:32:56,560 --> 00:32:58,633 Andre ideer? 706 00:32:58,633 --> 00:32:59,132 Ja. 707 00:32:59,132 --> 00:33:00,060 >> PUBLIKUM: Fejl besked? 708 00:33:00,060 --> 00:33:01,750 >> David J. MALAN: Fejl budskab, OK, kunne være. 709 00:33:01,750 --> 00:33:02,250 Hvad ellers? 710 00:33:02,250 --> 00:33:05,479 PUBLIKUM: Det kan udskrive beslag med semikolon så godt? 711 00:33:05,479 --> 00:33:08,270 David J. MALAN: Might udskrive beslag med semikolon så godt. 712 00:33:08,270 --> 00:33:11,950 Så måske det omvendt skråstreg så er nogle slags terminous, der er vigtigt. 713 00:33:11,950 --> 00:33:14,860 Alle andre tanker? 714 00:33:14,860 --> 00:33:16,412 >> Så alle gode ideer. 715 00:33:16,412 --> 00:33:18,370 Og i virkeligheden, går det at være en fejlmeddelelse. 716 00:33:18,370 --> 00:33:20,400 Det er nok mest sandsynligt at være svaret i almindelighed 717 00:33:20,400 --> 00:33:22,420 for de næste par uger som vi lære at kode her. 718 00:33:22,420 --> 00:33:27,680 >> Men for nu huske, at computere kun gøre, hvad du fortæller dem at gøre. 719 00:33:27,680 --> 00:33:30,400 Meget ligesom latterlige peanut smør og gelé eksempel. 720 00:33:30,400 --> 00:33:33,860 Vores menneskelige computere skulle kun at gøre, hvad du fortalte dem at gøre. 721 00:33:33,860 --> 00:33:36,250 Så i dette tilfælde, hvis du ikke fortælle computeren 722 00:33:36,250 --> 00:33:41,190 at flytte den blinkende markør til næste linje, er det ikke kommer til at gøre det. 723 00:33:41,190 --> 00:33:45,390 Så når jeg kører dette program nu mærke forskellen. 724 00:33:45,390 --> 00:33:46,900 >> Ligner en fejl. 725 00:33:46,900 --> 00:33:49,190 Det er en æstetisk fejl, måske. 726 00:33:49,190 --> 00:33:53,310 Men hvad er anderledes ved denne output versus sidste naturligvis? 727 00:33:53,310 --> 00:33:53,810 Ja. 728 00:33:53,810 --> 00:33:54,920 >> PUBLIKUM: Det gjorde det ikke en ny linje. 729 00:33:54,920 --> 00:33:56,586 >> David J. MALAN: Det gjorde ikke gøre en ny linje. 730 00:33:56,586 --> 00:33:58,740 Nu dem af jer der har måske gjort websider 731 00:33:58,740 --> 00:34:01,910 før, du måske kender det BR-tag eller det stykke tag, 732 00:34:01,910 --> 00:34:03,120 meget ens i ånden. 733 00:34:03,120 --> 00:34:06,680 En webbrowser vil ignorere dig indtil du fortælle det præcis, hvad de skal gøre. 734 00:34:06,680 --> 00:34:10,020 Tilsvarende er et sprog som C kun kommer til at gøre, hvad du fortæller det at gøre. 735 00:34:10,020 --> 00:34:12,730 >> Så grunden til, at alle disse eksempler, 736 00:34:12,730 --> 00:34:15,350 hidtil har slags henkastet havde denne backslash 737 00:34:15,350 --> 00:34:18,560 i der, det er de midler, som du udtrykker dig 738 00:34:18,560 --> 00:34:21,380 som en ny linje, så at sige. 739 00:34:21,380 --> 00:34:26,219 Og du kan slags forstå, måske, at dette ville se lidt dum 740 00:34:26,219 --> 00:34:27,070 hvis intet andet. 741 00:34:27,070 --> 00:34:29,150 Hvis jeg ønskede en ny linje, bare trykke Enter og derefter venlig 742 00:34:29,150 --> 00:34:32,219 af slagte koden sådan burde egentlig ikke gnide dig på den rigtige måde. 743 00:34:32,219 --> 00:34:33,830 Og selv hvis du ikke gør virkelig pleje på dette tidspunkt, 744 00:34:33,830 --> 00:34:35,830 du vil indse, at dette er ikke en særlig 745 00:34:35,830 --> 00:34:37,870 god leder stykke kode. 746 00:34:37,870 --> 00:34:39,969 >> Og så, hvad verden besluttet år siden, er 747 00:34:39,969 --> 00:34:43,420 at når du ønsker at sætte markøren hen på en ny linje eksplicit 748 00:34:43,420 --> 00:34:46,332 skal du udtrykkeligt sige ny linje, backslash n. 749 00:34:46,332 --> 00:34:48,040 Og der er nogle andre symboler lide. 750 00:34:48,040 --> 00:34:50,719 Men for nu vi bare fokusere på backslash n. 751 00:34:50,719 --> 00:34:53,790 >> Lad os nu gøre programmet lidt mere interessant. 752 00:34:53,790 --> 00:34:59,200 Jeg har tænkt mig at gå videre og denne gang åbne en ny fil. 753 00:34:59,200 --> 00:35:02,520 Jeg har tænkt mig at gemme dette som goddag-1.c. 754 00:35:02,520 --> 00:35:05,540 Og bare for sjov, jeg vil gå sætte det ind i min Dropbox mappe. 755 00:35:05,540 --> 00:35:09,030 >> Som du kan se i CS50 dokumentationen til apparatet, 756 00:35:09,030 --> 00:35:11,210 senere i denne uge for Problem Set 1, vil vi opfordre 757 00:35:11,210 --> 00:35:13,230 dig at bruge Dropbox eller nogle tilsvarende tjeneste, 758 00:35:13,230 --> 00:35:15,430 fordi så alle dine kodens vil blive bakket op automatisk. 759 00:35:15,430 --> 00:35:17,830 Og så det er derfor jeg har gået ind i denne mappe her. 760 00:35:17,830 --> 00:35:20,230 >> Og nu jeg har tænkt mig at skrive et lidt andet program. 761 00:35:20,230 --> 00:35:24,740 Medtag, standard I / O.h, int main tomrum. 762 00:35:24,740 --> 00:35:29,660 Og så her printf, hej verden, som er præcis den samme som før. 763 00:35:29,660 --> 00:35:32,450 >> Men nu jeg ønsker at udskrive noget , der er lidt anderledes. 764 00:35:32,450 --> 00:35:34,800 Jeg ønsker at udskrive, sige, "Hej, David." 765 00:35:34,800 --> 00:35:37,590 Okay, så selvfølgelig, det skulle gerne 766 00:35:37,590 --> 00:35:40,360 være tilfældet, at hvis jeg genkompilere dette program, gentages det, 767 00:35:40,360 --> 00:35:41,840 det kommer til at sige "Hej, David." 768 00:35:41,840 --> 00:35:45,160 >> Men hvad hvis jeg ønsker at indføre denne form for variabel 769 00:35:45,160 --> 00:35:49,240 begrebet af en beholder, der sker til at gemme D-a-v-i-d og ikke hårdt kode det 770 00:35:49,240 --> 00:35:50,600 ind i mit program. 771 00:35:50,600 --> 00:35:53,430 Jamen hvad nu hvis jeg begynder gør noget som dette? 772 00:35:53,430 --> 00:35:57,120 >> String s, så dette er en variabel. 773 00:35:57,120 --> 00:36:00,250 Hvis du vil have en streng, alias et ord eller en sætning. 774 00:36:00,250 --> 00:36:03,485 En sekvens af tegn er, hvad vi i programmeringen kalde en streng. 775 00:36:03,485 --> 00:36:06,610 Vi vil bare generisk opkald det s, fordi det er et dejligt simpelt navn. 776 00:36:06,610 --> 00:36:08,010 Men jeg kunne kalde det noget. 777 00:36:08,010 --> 00:36:12,920 >> Jeg har tænkt mig at sige string s ligemænd citat citat slut, "David" semikolon. 778 00:36:12,920 --> 00:36:18,330 Og nu jeg ønsker at indsætte D-a-v-i-d i, hvad jeg udskrivning. 779 00:36:18,330 --> 00:36:23,720 Og før vi så en teaser på skærmen nogle speciel syntaks 780 00:36:23,720 --> 00:36:26,050 , tilladt os at erstatning i en værdi. 781 00:36:26,050 --> 00:36:29,250 Hvad var det særlige symbolet nogle glider siden? 782 00:36:29,250 --> 00:36:30,040 >> Så procent. 783 00:36:30,040 --> 00:36:33,830 På det tidspunkt var det procent d til decimaltal. 784 00:36:33,830 --> 00:36:35,850 Det betyder ikke rigtig synes relevant her. 785 00:36:35,850 --> 00:36:38,650 Slår derude er anden procent symbol 786 00:36:38,650 --> 00:36:42,810 som procent s, som står for en pladsholder for en streng. 787 00:36:42,810 --> 00:36:49,350 >> Så nu, meget enkelt, jeg er kommer til at gå gøre goddag-1, 788 00:36:49,350 --> 00:36:54,210 fordi denne fil hedder hej-1.c, og tryk Enter. 789 00:36:54,210 --> 00:36:56,230 Og jeg skruet op. 790 00:36:56,230 --> 00:36:57,394 Hvad sker der? 791 00:36:57,394 --> 00:37:00,560 Nå, her er, hvor vi er nødt til at begynde at forstå, at vi er i denne kommando 792 00:37:00,560 --> 00:37:02,810 line miljø, er dette kun tekst miljø. 793 00:37:02,810 --> 00:37:06,114 Der er ingen på deres ikoner ligesom mapper lige nu. 794 00:37:06,114 --> 00:37:07,280 Og tænke tilbage for et øjeblik siden. 795 00:37:07,280 --> 00:37:10,740 I hvad der gjorde mappe jeg siger Jeg sparede min kode? 796 00:37:10,740 --> 00:37:11,657 Så mappen Dropbox. 797 00:37:11,657 --> 00:37:12,989 Kunne have blevet kaldt noget. 798 00:37:12,989 --> 00:37:14,530 Men det sker at blive kaldt Dropbox. 799 00:37:14,530 --> 00:37:18,380 Så jeg en eller anden måde nødt til at dobbeltklikke på at Dropbox mappe for at få 800 00:37:18,380 --> 00:37:21,657 ind i det og få på min kode kaldet goddag-1.c. 801 00:37:21,657 --> 00:37:24,490 Faktisk, lad mig gå videre og minimere dette vindue for bare et øjeblik. 802 00:37:24,490 --> 00:37:27,560 Ligesom Windows og Mac OS, Der er mapper i Linux. 803 00:37:27,560 --> 00:37:29,410 Der er mapper i CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 Det er bare lige nu er vi indespærre os til denne tekst miljø. 805 00:37:32,380 --> 00:37:34,700 >> Men hvis jeg fordobler klik på Dropbox, bemærk der 806 00:37:34,700 --> 00:37:37,210 er den fil, som jeg ønsker at kompilere. 807 00:37:37,210 --> 00:37:41,430 Men jeg har brug for denne sort og hvid terminalvindue, så at sige. 808 00:37:41,430 --> 00:37:45,750 Men jeg har brug for, er derfor, at flytte ind i denne mappe eller bibliotek. 809 00:37:45,750 --> 00:37:48,290 Så lidt mystisk, men du vænne sig til denne også. 810 00:37:48,290 --> 00:37:50,430 >> I en verden af ​​Linux, som igen er operativsystemet 811 00:37:50,430 --> 00:37:54,860 system, vi kører inde i CS50 Appliance, der er en kommando kaldet cd. 812 00:37:54,860 --> 00:37:58,310 Hvilket betyder, at jeg kan gøre cd, rum, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, skift bibliotek. 814 00:37:59,900 --> 00:38:00,400 Højre. 815 00:38:00,400 --> 00:38:02,890 Tilbage i dag, når folk var opfinde computere og drift 816 00:38:02,890 --> 00:38:05,806 systemer som dette, de ønskede at skriv færrest tastetryk muligt. 817 00:38:05,806 --> 00:38:08,760 Så den nemmeste måde at sige ændring bibliotek var cd. 818 00:38:08,760 --> 00:38:13,910 >> Så hvis jeg ramte cd, rum Dropbox, mærke til, hvad der er ændret her. 819 00:38:13,910 --> 00:38:16,480 Inde i parentes apparatet er venlig 820 00:38:16,480 --> 00:38:19,360 af humoring mig og minde mig hvor jeg er. 821 00:38:19,360 --> 00:38:21,480 Så den åbne mappe er Dropbox. 822 00:38:21,480 --> 00:38:24,950 Hvis jeg nu skriver LS til liste, igen kortfattet, 823 00:38:24,950 --> 00:38:27,540 fordi folk ikke ønsker at skrive tilbage i dag l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Så de i stedet gjort det ls. 825 00:38:29,300 --> 00:38:30,110 >> Enter. 826 00:38:30,110 --> 00:38:35,740 Bemærk, at jeg kan se to ting, goddag-1.c, og så er denne kryptiske ting, kilde 1m. 827 00:38:35,740 --> 00:38:38,310 Det er bare min måde at sige kildekoden til uge 1 mandag. 828 00:38:38,310 --> 00:38:42,020 Det er en mappe, jeg har hentet fra CS50 hjemmeside, som jeg gjorde tidligere i dag 829 00:38:42,020 --> 00:38:43,990 og bare sætte det ind i apparat i forvejen. 830 00:38:43,990 --> 00:38:47,550 >> Men for nu er den eneste, vi bekymrer sig om, er at gøre dette program. 831 00:38:47,550 --> 00:38:50,440 Så når jeg skriver gøre goddag-1, Enter. 832 00:38:50,440 --> 00:38:51,320 Damn det. 833 00:38:51,320 --> 00:38:53,060 Noget gik galt. 834 00:38:53,060 --> 00:38:54,580 Så lad os drille det fra hinanden. 835 00:38:54,580 --> 00:38:58,489 Og det er desværre, hvor tingene få lidt stressende i starten, 836 00:38:58,489 --> 00:39:00,280 i hvert fald hvis du har aldrig programmeret før. 837 00:39:00,280 --> 00:39:00,980 >> Min gud. 838 00:39:00,980 --> 00:39:04,990 Jeg skrev en to line program og Jeg har fire linjer af fejl. 839 00:39:04,990 --> 00:39:07,180 Så hvad der foregår her. 840 00:39:07,180 --> 00:39:11,370 Først og fremmest altid rulle tilbage op og finde den første fejlmeddelelse, 841 00:39:11,370 --> 00:39:15,730 fordi oftentimes compilers bare blive forvirret over, hvad du og jeg gør. 842 00:39:15,730 --> 00:39:17,000 Oversættere er temmelig dum. 843 00:39:17,000 --> 00:39:18,360 De vil kun gøre, hvad du fortælle dem at gøre. 844 00:39:18,360 --> 00:39:21,484 Og hvis du forvirre dem, de er bare kommer til at slags kaste op deres hænder 845 00:39:21,484 --> 00:39:25,010 og måske smide flere fejlmeldinger end rent faktisk er relevante. 846 00:39:25,010 --> 00:39:26,380 >> Så lad os se på det første. 847 00:39:26,380 --> 00:39:27,540 Super kryptisk i første omgang. 848 00:39:27,540 --> 00:39:31,050 Men varsel, her er navnet på den fil, hvor jeg skruet op tilsyneladende. 849 00:39:31,050 --> 00:39:36,570 Colon 5, kolon 5 betyder blot på linie 5 ved femte karakter. 850 00:39:36,570 --> 00:39:39,760 Så femte kolonne tegn, hvis du vil, fejl. 851 00:39:39,760 --> 00:39:41,870 Anvendelse af sort identifikator streng. 852 00:39:41,870 --> 00:39:43,120 Mente du standard n? 853 00:39:43,120 --> 00:39:44,850 >> Nej, jeg mente streng. 854 00:39:44,850 --> 00:39:47,640 Og så er det sådan kopiere og indsætte 855 00:39:47,640 --> 00:39:50,700 hvad jeg har skrevet til virkelig trækker min opmærksom på, hvor jeg skruet op. 856 00:39:50,700 --> 00:39:54,260 Så en eller anden grund C eller mindst compileren 857 00:39:54,260 --> 00:39:56,470 forstår ikke ordet streng. 858 00:39:56,470 --> 00:39:57,890 Og det er fordi vi gjorde det op. 859 00:39:57,890 --> 00:40:01,440 Så streng eksisterer ikke i C. Hvad CS50 gør, 860 00:40:01,440 --> 00:40:03,380 for de første par uger kun af klassen, 861 00:40:03,380 --> 00:40:05,700 er vi give nogle uddannelse hjul, så at sige. 862 00:40:05,700 --> 00:40:11,160 Og vi sætte disse støttehjul inde i en speciel fil kaldet CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Så dette er den anden af ​​to fil navne, der tilsyneladende ender på dot t. 864 00:40:14,970 --> 00:40:16,300 Lad os spole tilbage. 865 00:40:16,300 --> 00:40:19,360 Printf er et udsagn eller en funktion der tilsyneladende udskriver noget 866 00:40:19,360 --> 00:40:20,580 på skærmen. 867 00:40:20,580 --> 00:40:23,470 Men du kunne ikke se mig gennemføre printf, til højre. 868 00:40:23,470 --> 00:40:26,360 Nogen år siden gennemført printf. 869 00:40:26,360 --> 00:40:30,420 I hvilken fil ville du satse han eller hun satte gennemførelsen 870 00:40:30,420 --> 00:40:34,270 til printf, koden for printf? 871 00:40:34,270 --> 00:40:36,860 >> I en fil kaldet standard I / O.h. 872 00:40:36,860 --> 00:40:39,930 Faktisk er det sandsynligvis i to filer, standard I / O.h, 873 00:40:39,930 --> 00:40:42,650 som står for header fil, og standard I / O.c, 874 00:40:42,650 --> 00:40:44,060 der står for en C-kildekode. 875 00:40:44,060 --> 00:40:48,220 Så han eller hun for nogle år siden smed den kode, de skrev i filen 876 00:40:48,220 --> 00:40:51,240 så folk som os år senere kan omfatte det, 877 00:40:51,240 --> 00:40:53,040 så at sige, i vores egne programmer. 878 00:40:53,040 --> 00:40:56,320 >> Og ja, det er hvad havelåge efterfulgt af ordet omfatter gør. 879 00:40:56,320 --> 00:41:00,250 Det ser på den lokale harddisk, finder fil kaldet standard I / O.h, 880 00:41:00,250 --> 00:41:03,840 og så effektivt kopier og indsætter det inde i min egen fil. 881 00:41:03,840 --> 00:41:07,210 Så nu mit program ved hvordan du udskriver til skærmen. 882 00:41:07,210 --> 00:41:11,120 >> Så ved denne logik, hvor er streng defineres? 883 00:41:11,120 --> 00:41:12,260 >> Publikum: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> David J. MALAN: CS50.h. 885 00:41:13,290 --> 00:41:15,540 Og ja, det er hvad vi, kernen personale, har gjort. 886 00:41:15,540 --> 00:41:19,590 Vi har opfundet et par datatyper, så at sige, som en streng, 887 00:41:19,590 --> 00:41:22,370 i tillæg til dem, du få gratis, ligesom en int. 888 00:41:22,370 --> 00:41:26,010 Og vi vil se andre som en char til en karakter og et par mere. 889 00:41:26,010 --> 00:41:30,670 Inde i CS50.h tilsyneladende er i det mindste nogle omtale af strengen. 890 00:41:30,670 --> 00:41:34,980 >> Så lad mig gå videre og gentagelsen make hej-1. 891 00:41:34,980 --> 00:41:37,100 Jeg vil zoome ind igen og krydser mine fingre. 892 00:41:37,100 --> 00:41:41,370 Nu ved at have foretaget en ændre jeg fast fleste ting. 893 00:41:41,370 --> 00:41:42,100 Men damn it. 894 00:41:42,100 --> 00:41:44,290 Flere procenter end data argumenter. 895 00:41:44,290 --> 00:41:45,980 Hvad har jeg gjort forkert denne gang? 896 00:41:45,980 --> 00:41:47,420 >> Så det er stadig temmelig kryptisk. 897 00:41:47,420 --> 00:41:51,560 Men denne fejl er på linje 7 og karakter 21. 898 00:41:51,560 --> 00:41:53,880 Så lad os gå se op her. 899 00:41:53,880 --> 00:41:55,350 Det er lidt subtil. 900 00:41:55,350 --> 00:41:59,167 Men hvis du tænker over hvad grundtankerne her er, 901 00:41:59,167 --> 00:42:00,500 kan vi måske drille dette fra hinanden. 902 00:42:00,500 --> 00:42:02,300 >> Så printf er navnet på funktionen. 903 00:42:02,300 --> 00:42:04,960 Parenteser, hidtil, er ligesom hvad vi sætte omkring 904 00:42:04,960 --> 00:42:07,005 de ting, vi passerer som input til en funktion. 905 00:42:07,005 --> 00:42:08,921 Okay, bare en vilkårlig menneskelig konvention. 906 00:42:08,921 --> 00:42:09,919 Brug parenteser. 907 00:42:09,919 --> 00:42:12,460 Inde i disse parenteser Vi har været at sætte anførselstegn, 908 00:42:12,460 --> 00:42:14,810 og derefter en streng som "Hej verden". 909 00:42:14,810 --> 00:42:18,160 >> Men i det tidligere eksempel meget kortvarigt gjorde vi ser på med Scratch. 910 00:42:18,160 --> 00:42:22,590 Og vi havde procent d, hvad ellers var inde i de parenteser 911 00:42:22,590 --> 00:42:23,730 at jeg kaldte verbalt? 912 00:42:23,730 --> 00:42:24,230 Ja. 913 00:42:24,230 --> 00:42:28,166 >> PUBLIKUM: Så det er, hvad du tager [Uhørligt] indefra [uhørligt] 914 00:42:28,166 --> 00:42:30,200 hvad disse [uhørligt]? 915 00:42:30,200 --> 00:42:31,200 David J. MALAN: Præcis. 916 00:42:31,200 --> 00:42:32,700 Så vi havde procent d. 917 00:42:32,700 --> 00:42:36,620 Men så havde vi tæt citat, komma, tæller. 918 00:42:36,620 --> 00:42:37,120 Højre. 919 00:42:37,120 --> 00:42:40,680 Vi specificerede hvad vi ønsker at gøre, som pladsholder. 920 00:42:40,680 --> 00:42:44,621 Så hvad jeg har tænkt mig at gøre her, er komma, hvad vil du have mig til at sætte? 921 00:42:44,621 --> 00:42:45,120 Publikum: S. 922 00:42:45,120 --> 00:42:46,828 David J. MALAN: S, fordi s i dette tilfælde 923 00:42:46,828 --> 00:42:48,700 er navnet på lagerbeholderen. 924 00:42:48,700 --> 00:42:50,180 Det er navnet på denne glasskål. 925 00:42:50,180 --> 00:42:53,610 Hvor det før var tæller i det simpelt Scratch eksempel vi kiggede på. 926 00:42:53,610 --> 00:42:56,630 Så nu have foretaget to ændringer, lad mig zoome ind 927 00:42:56,630 --> 00:42:59,800 og prøv en gang til kompilere dette program. 928 00:42:59,800 --> 00:43:01,596 >> Nu ser jeg, at kryptiske linje. 929 00:43:01,596 --> 00:43:03,470 Men det er faktisk det navn på compiler. 930 00:43:03,470 --> 00:43:04,886 Dunk er navnet på oversætteren. 931 00:43:04,886 --> 00:43:07,100 Gør bare gemme mig hovedpine af nogensinde 932 00:43:07,100 --> 00:43:09,830 skrive det lange vanvittigt kommando ud. 933 00:43:09,830 --> 00:43:14,900 Så nu hvis jeg prik skråstreg goddag-1, Jeg skulle se "Hej, David." 934 00:43:14,900 --> 00:43:16,450 >> Temmelig underwhelming, selv om, ikke? 935 00:43:16,450 --> 00:43:18,158 Vi kunne have gjort dette en meget mere enkelt 936 00:43:18,158 --> 00:43:20,940 uden at tale om variable og CS50.h og alt dette. 937 00:43:20,940 --> 00:43:23,080 Så lad os gøre det til en lidt mere interessant. 938 00:43:23,080 --> 00:43:31,010 >> Ud over CS50.h, der ting som snor 939 00:43:31,010 --> 00:43:34,550 erklærede, at CS50 biblioteket også har et par funktioner. 940 00:43:34,550 --> 00:43:38,520 Så ligesom år siden, nogen skrev printf og sætte det i standard I / O.h 941 00:43:38,520 --> 00:43:39,530 og en anden fil. 942 00:43:39,530 --> 00:43:44,010 >> Vi, CS50 personale, skrev en funktion kaldet getchar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, getString, og vi sætter dem i en fil 944 00:43:47,610 --> 00:43:49,890 kaldet CS50.h og CS50.c. 945 00:43:49,890 --> 00:43:51,880 Og vi sætter dem inde af CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 Og folk kan også hente dem på nettet, hvis de 947 00:43:53,880 --> 00:43:55,880 ønsker at sætte dem på deres egne computere så godt. 948 00:43:55,880 --> 00:44:00,880 Hvilket vil sige, at vi har skabt funktioner, der får input fra brugeren. 949 00:44:00,880 --> 00:44:02,930 Jeg ved ikke, hvad alle af disse datatyper er. 950 00:44:02,930 --> 00:44:06,490 GetInt er slags ligetil, ligesom få et heltal eller anden måde fra brugeren. 951 00:44:06,490 --> 00:44:09,980 Og getString er nok ligesom get et ord eller en sætning fra brugeren. 952 00:44:09,980 --> 00:44:11,770 >> Så lad os fokusere på det. 953 00:44:11,770 --> 00:44:14,710 Og jeg har tænkt mig at gå tilbage til apparat og jeg har tænkt mig at gå videre 954 00:44:14,710 --> 00:44:20,790 og gemme denne fil som, lad os kalde det goddag-2.c som min anden version. 955 00:44:20,790 --> 00:44:23,030 Og lad os lave et par ændringer. 956 00:44:23,030 --> 00:44:25,800 >> Denne gang i stedet for hårdt kodende David, som 957 00:44:25,800 --> 00:44:29,120 gør en utrolig konsekvent men underwhelming program, 958 00:44:29,120 --> 00:44:32,640 hvad hvis jeg i stedet gøre getString? 959 00:44:32,640 --> 00:44:35,660 Bemærk nu getString har en åben parentes, 960 00:44:35,660 --> 00:44:38,500 lukket parentes, fordi det behøver ikke nogen input. 961 00:44:38,500 --> 00:44:40,850 Det er bare kommer til at gå få en snor fra brugeren. 962 00:44:40,850 --> 00:44:42,460 >> Og nu et par ord om anden syntaks. 963 00:44:42,460 --> 00:44:45,439 Semikoloner bare afslutte en linje kode. 964 00:44:45,439 --> 00:44:46,730 Du behøver ikke dem overalt. 965 00:44:46,730 --> 00:44:48,896 Men det betyder bare jeg færdig med denne linje kode. 966 00:44:48,896 --> 00:44:51,080 Lad mig gå videre til en anden erklæring eller funktion. 967 00:44:51,080 --> 00:44:53,010 String erklærer en variabel. 968 00:44:53,010 --> 00:44:55,920 String er ligesom at sige give mig en skål, tak. 969 00:44:55,920 --> 00:44:57,940 Og lad mig sige en streng i det. 970 00:44:57,940 --> 00:44:59,430 >> Og nu lighedstegnet. 971 00:44:59,430 --> 00:45:03,510 Hvad er lighedstegnet væsentlige svarer til? 972 00:45:03,510 --> 00:45:04,500 >> Publikum: Tildel. 973 00:45:04,500 --> 00:45:06,190 >> David J. MALAN: Ja, tildele en værdi. 974 00:45:06,190 --> 00:45:09,872 Så hvis jeg for eksempel opkald denne funktion getString, 975 00:45:09,872 --> 00:45:12,830 og vi vil se i et øjeblik, der er kommer til at bede brugeren om en streng. 976 00:45:12,830 --> 00:45:17,810 Det er som at lade mig så skriv D-a-v-i-d på et stykke papir. 977 00:45:17,810 --> 00:45:21,060 Og når jeg siger streng s lig getString, 978 00:45:21,060 --> 00:45:24,140 lig betyder ikke rigtigt lige i C programmering. 979 00:45:24,140 --> 00:45:27,880 Det betyder tildele fra højre side til den venstre side. 980 00:45:27,880 --> 00:45:29,510 >> Så jeg har fået en streng. 981 00:45:29,510 --> 00:45:32,785 Og lighedstegnet betyder sætte det i opbevaringsboksen kaldet sek. 982 00:45:32,785 --> 00:45:36,730 Og derefter sende dette ud til printf til rent faktisk at gøre sin ting. 983 00:45:36,730 --> 00:45:39,790 >> Så slutresultatet derefter går at se lidt anderledes ud. 984 00:45:39,790 --> 00:45:40,840 Lad os gør goddag-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Enten kunne arbejde. 987 00:45:45,260 --> 00:45:46,450 Du følger med. 988 00:45:46,450 --> 00:45:47,940 Gør goddag-2 virkede. 989 00:45:47,940 --> 00:45:52,640 Dot skråstreg goddag-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Jeg synes at have en uendelig sløjfe eller noget. 991 00:45:54,620 --> 00:45:55,453 Intet sker. 992 00:45:55,453 --> 00:45:56,134 Hvorfor? 993 00:45:56,134 --> 00:45:57,805 >> PUBLIKUM: Det gør en uendelig løkke. 994 00:45:57,805 --> 00:45:59,430 David J. MALAN: Det er en uendelig løkke. 995 00:45:59,430 --> 00:46:02,710 Det er lidt venter på mig at faktisk give det nogle input. 996 00:46:02,710 --> 00:46:05,800 Så lad mig gå videre og skrive i David, og tryk på Enter. 997 00:46:05,800 --> 00:46:07,230 Og nu står der "hej, David." 998 00:46:07,230 --> 00:46:09,040 Hvis jeg kører det igen. 999 00:46:09,040 --> 00:46:11,530 Lad os skrive i Rob, "Hej, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Nu er dette er den værste brugergrænseflade nogensinde. 1001 00:46:13,900 --> 00:46:16,110 Brugeren er tilsyneladende formodes at vide, hvad de skal gøre. 1002 00:46:16,110 --> 00:46:17,120 Men uanset. 1003 00:46:17,120 --> 00:46:19,570 Ved hjælp af disse samme bygning blokke ligesom i Scratch, 1004 00:46:19,570 --> 00:46:24,980 vi kan løse dette problem og sige noget lignende dit navn venligst, kolon, 1005 00:46:24,980 --> 00:46:27,820 rum, lukket tilbud, tæt parentes, semikolon. 1006 00:46:27,820 --> 00:46:30,680 Så en masse igen dumhed med syntaksen. 1007 00:46:30,680 --> 00:46:34,040 >> Men bemærk jeg har lige tilføjet en brik over denne ene 1008 00:46:34,040 --> 00:46:35,280 og over denne. 1009 00:46:35,280 --> 00:46:38,870 Så nu, hvis jeg kør det, hej-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Vent et øjeblik. 1011 00:46:41,180 --> 00:46:41,830 Hvad er der galt? 1012 00:46:41,830 --> 00:46:43,570 Det er ikke opfører anderledes. 1013 00:46:43,570 --> 00:46:44,200 Ja. 1014 00:46:44,200 --> 00:46:46,010 >> PUBLIKUM: Du har ikke køre gøre igen. 1015 00:46:46,010 --> 00:46:47,968 >> David J. MALAN: Jeg gjorde ikke køre gøre igen, til højre. 1016 00:46:47,968 --> 00:46:49,430 Så jeg har ændret min kildekode. 1017 00:46:49,430 --> 00:46:50,638 Men igen, der er det flow. 1018 00:46:50,638 --> 00:46:54,530 Kildekode gennem compiler giver du nyt objekt kode, eller 0'er og 1'ere. 1019 00:46:54,530 --> 00:47:00,209 Så jeg har brug for til rent faktisk gentagelsen make hej-2 Enter. 1020 00:47:00,209 --> 00:47:01,750 OK, noget ser ud til at være sket. 1021 00:47:01,750 --> 00:47:04,220 Dot skråstreg goddag-2. 1022 00:47:04,220 --> 00:47:05,390 Dit navn venligst. 1023 00:47:05,390 --> 00:47:09,990 Og for at være klart nu, hvorfor er markøren på samme linje? 1024 00:47:09,990 --> 00:47:10,490 Præcis. 1025 00:47:10,490 --> 00:47:13,020 Jeg har ikke sat den omvendte skråstreg n op her i min kode. 1026 00:47:13,020 --> 00:47:16,110 Så nu kan jeg skrive noget lignende Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Jeg kan køre det igen og skrive noget som Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 og vi får et andet program igen og igen og igen. 1029 00:47:22,250 --> 00:47:28,940 >> Nu vi i sidste ende får brug for at bruge et par forskellige kapaciteter. 1030 00:47:28,940 --> 00:47:32,860 Vi er nødt til at indføre i sidste ende nogle betingelser for at gøre tingene betinget. 1031 00:47:32,860 --> 00:47:35,550 Måske sløjfer så vi kan gøre ting igen og igen. 1032 00:47:35,550 --> 00:47:38,220 >> Måske ville det være rart, hvis vi kunne gennemføre vores egne funktioner, 1033 00:47:38,220 --> 00:47:41,355 ligesom vi kan gennemføre vores egen printf eller vores egen version af getString 1034 00:47:41,355 --> 00:47:45,870 og GetFlow, fordi i sidste ende selv bruger denne kommandolinje miljø 1035 00:47:45,870 --> 00:47:49,780 kan vi gøre selv de mest visuelt interessant ting. 1036 00:47:49,780 --> 00:47:51,950 >> Faktisk i konklusion lad mig gøre dette. 1037 00:47:51,950 --> 00:47:54,020 Jeg har tænkt mig at gå videre og lukker disse vinduer 1038 00:47:54,020 --> 00:47:57,400 og åbne denne ikon her, der er bare en større 1039 00:47:57,400 --> 00:48:00,020 version af denne integrerede terminalvindue. 1040 00:48:00,020 --> 00:48:02,329 Så Gedit har ikke kun sted for min kode, 1041 00:48:02,329 --> 00:48:05,620 men også en indbygget terminal vinduet, sort og hvid vindue, hvor jeg kan køre 1042 00:48:05,620 --> 00:48:06,230 kommandoer. 1043 00:48:06,230 --> 00:48:08,600 >> Jeg lige er sket til at åbne en større version af dette. 1044 00:48:08,600 --> 00:48:11,170 Og nu jeg har tænkt mig at gå ind i den mappe, jeg har allerede 1045 00:48:11,170 --> 00:48:13,150 lagt på forhånd på kursets hjemmeside. 1046 00:48:13,150 --> 00:48:16,720 Og jeg har tænkt mig at gå videre og åbne en fil kaldet thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 som blev skrevet af en anden. 1048 00:48:18,710 --> 00:48:21,220 >> Og hvis vi ser på det, dette er ikke den slags kode 1049 00:48:21,220 --> 00:48:24,370 vi vil skrive, da målet med denne kode 1050 00:48:24,370 --> 00:48:28,450 var at skrive den smukkeste søger kode, at han eller hun kunne, 1051 00:48:28,450 --> 00:48:31,290 uanset om eller ej andet menneske nogensinde kunne 1052 00:48:31,290 --> 00:48:33,660 forstå denne kode. 1053 00:48:33,660 --> 00:48:37,050 >> Faktisk, er der hvert år, hvad der er kaldes en korrumperet C konkurrence, som 1054 00:48:37,050 --> 00:48:39,570 er for rigtige nørder, der skriver kode, som ingen andre kan læse, 1055 00:48:39,570 --> 00:48:42,050 men det betyder noget, enten virkelig simpelt eller virkelig forbløffende. 1056 00:48:42,050 --> 00:48:43,890 Og vi troede, vi havde slutte med dette look 1057 00:48:43,890 --> 00:48:48,300 på noget, der er ret fantastisk du måske har set en gang før. 1058 00:48:48,300 --> 00:48:52,650 Men vi ender på dette note, prik skråstreg, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Dette er altså, hvad der venter. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Det er det for CS50. 1062 00:48:58,500 --> 00:48:59,935 Vi vil se dig på onsdag. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [Musik spiller] 1065 00:49:10,016 --> 00:53:31,883