[Video speel] -A Triomf van wiskundige en meganiese vaardigheid is hierdie groot nuwe outomatiese sakrekenaar by Harvard Universiteit. Ingewikkelde probleme in wiskunde sit deur die masjien in gekodeerde vorm op band akkuraat opgelos in 'n minuut fraksie van die tyd wat nodig is vir menslike berekening. Ontwerp om alle vorms van bespoedig wiskundige en wetenskaplike navorsing, die reuse meganiese brein sal werk vir die Verenigde State Vloot tot einde oorlog. [Einde afspeel] DAVID J. MALAN: Dit is CS50. Die verlede was 'n magiese plek, maar as jy ooit gewonder wat dit toestel in Harvard Science Center, dit is inderdaad deel van die Harvard Mark I, en dit is op mekaar nou daar vir die afgelope jare. En wat jy sal sien ingebed in die probleem stel een is 'n kykie agter die skerms na wat daardie toestel het, en doen, van professor Harry Lewis, wat in die Departement Rekenaarwetenskap hier. Sodat meer oor wat in net 'n bietjie. Maar vandag het ons begin om die oorgang van verlede week om hierdie, en ons sal noem bring van een foto hier dit is eintlik baie bekende. Is daar iemand wat weet hier op die skerm? Ten minste volgens die mite. Ja. GEHOOR: Die eerste virus. DAVID J. MALAN: So dit was vermoedelik die heel eerste werklike fout in 'n rekenaar. Nou in werklikheid die woord fout, vir 'n fout in 'n program, saam met ons vir 'n paar keer in die fisiese wêreld, en dit was een van die eerste gedokumenteer keer waar iemand eintlik uitgeruk 'n groot mot uit die Mark II rekenaar, sit dit in die band, en dan is dit aangeteken as die eerste bekende fout het eintlik fisies gevind. So dus aangegaan wat in leersaamhede vandag se. Alles van die laaste week is aanlyn beskikbaar. In die besonder hulpbronne wat jy dalk nie noodwendig sien, veral As hier kom in die persoon. So een van die onderrig genote elke jaar maak 'n kanoniese stel notas, sodat jy hoef nie te hou jou kop af, probeer die meeste enigiets skryf wat kan hier gebeur in die klas. So besef dat diegene sogenaamde [? Scribd?] Notas aanlyn, seker die skyfies en bronkode wat ons gebruik in die klas. Ons maak volledige teks transkripsies sowel beskikbaar. So as jy vaagweg onthou sommige termyn, en wil om dit 'n bietjie kyk meer geredelik besef dat alle van daardie is soekbare aanlyn. Sowel as ipv sowel. Inderdaad, vandag begin ons om te kyk na 'n laer vlak programmeertaal, binnekort aan ons bekend as C, en dit is baie maklik om soort van verlore raak na 'n paar oomblikke tyd, en dan soort van wonder hoe ons eintlik het om 'n paar meer komplekse voorbeeld van die eenvoudigste. En so het ons besef sal kersie haal tydens die klas paar van die verteenwoordigende voorbeelde, maar besef dat soveel meer is ook aanlyn beskikbaar sodat jy kan werk deur dit in jou eie tempo, maar jy is baie gemaklik. Maar ons opgehou het met programme wat net hierdie was. So ek op die groen vlag, en wat beteken hierdie program doen? Sê hello, wêreld. Dit maak die kat sê hallo in sy klein wêreld op die top linkerkant van die gebruikerskoppelvlak Scratch se. Maar ons begin om in te voer terminologie verlede week. En so, dinge soos hierdie ons wat genoem word? Wat kan die generiese term vir dit wees? Ja. 'N metode of 'n verklaring. Natuurlik, dit is 'n aksie. Doen dit. En tog was daar ander vorms te krap, Behalwe hierdie sogenaamde verklaring, was hulle ook dinge soos hierdie, wat ons wat genoem word? Ja. So 'n lus. En in hierdie geval, hierdie ding herhaal, natuurlik, 10 keer. Daar is 'n ewig blok. Daar is 'n paar van die ander. En vandag gaan ons om te sien hoe om vertaal na 'n meer moderne wêreld, as jy wil, selfs al is dit gaan verskyn op die eerste oogopslag veel meer arcane wees. Maar dit was inderdaad lusse. En dan het ons dinge soos hierdie, wat hierdie vorm gehad het, en wese vrae. En ons verwys na hierdie as wat? GEHOOR: Boole-uitdrukking. DAVID J. MALAN: Ja. Boole-uitdrukking. Iets wat waar of valse, ja of nee, een of nul, maar jy wil om die wêreld te sien. Maar ons genoem diegene Boole uitdrukkings, en ons hulle prop in omstandighede, of takke. En in die wêreld van die Nuuts af, alles mooi gespreek in terme van sy vorm, as dit maak logies sin om dit te doen, maar jy hoef nie te stop by net doen een ding voorwaardelik, jy kan 'n spreekwoordelike het Vurk in die pad en doen nie dit of dat, indien die toestand waar is of nie. En dan, soos jy sal sien, as jy nog nie het nie, jy kan nes selfs hierdie blokke. So Scratch groei om die vorms in te vul wat jy dalk wil om te voeg in dit, sodat jy kan eintlik druk mees enige logika wat jy dalk wil om te doen. Nou 'n paar woorde van aankondiging vir beide hier en New Haven. So seksie begin vandag. Die URL vir hierdie is op die kursus se webwerf, vir diegene wat nie vertroud. Artikels sal 'n geleentheid om bymekaar te kry in 'n baie meer intieme omgewing as [? Sanders?] Toelaat, met 10 tot 20 klasmaats met 'n onderrig fellow by verskillende spore, en verskillende treë, as jy so verkies. Inderdaad die kursus bied verskillende afdelings vir diegene minder gemaklik, meer gemaklik en iewers tussen, en die rol van die duim hier, is daar is geen formele definisie, maar as jy minder gemaklike, jy soort van weet nie. Jy is 'n bietjie oor die onverskrokke idee van 'n sterker voet, miskien, terug in die klaskamer, of wat tot 'n in tussen artikel. As jy programmering het sedert jy was ses jaar oud, meer gemaklik, dalk aan u. En as dit is soort van 'n loot-up, dit is presies wat die tussen is bedoel om te wees. Nou, in die tussentyd, vir 'n klas van hierdie grootte, dit neem ons 'n geruime tyd aan artikel almal, so ons het die sogenaamde, super afdelings, kom hierdie naweek en vroeg volgende week, so neem 'n blik op die webwerf die kursus se vir diegene wat natuurlik wyd, en ook verfilm vir diegene wat dit nie kan maak nie. En artikels self sal begin in week drie van CS50 nul indeks. Probleem gestel 0 reeds op die webwerf die kursus se. En besef dat jy het nie nege dae laat hierdie semester. So, dit is 'n opgradering van verlede jaar, toe ons moes vyf laat dae. So as jy wonder, Ons het nege probleem stelle. Jy het nege dae laat, wat elk jy kan net een keer per week spandeer op. Dat al maak effektief die probleem sit as gevolg van Vrydag, maar die doel is om 'n bietjie te sit bietjie van sielkundige druk op jou om te probeer om te kry dinge op Donderdag want soos jy sal vinnig ontdek, vir 'n beter of vir slegter, die meeste alles in die sagteware wêreld eindig neem baie langer as wat jy verwag. So dit oorweeg 'n soort geleentheid om te help jouself te rig Donderdag, maar troos in dat, ja, alles is te danke Vrydag. En as jy hulle dien op Donderdag, dit is wonderlik. Daar is geen bonus punte of ekstra krediet vir die vergadering dat die sperdatum. Dit is bedoel om net 'n kruk wees. En kantoorure, beide hier en in New Haven, in die persoon, as jy wil ontmoet met enige van ons kursusse onderrig genote en GR'e vir hulp. Alle regte. So nou, laat ons dit meer real. En vir 'n oomblik dit gaan om te begin om 'n bietjie meer arcane te kry, maar baie vinnig op Vrydag en volgende week sal ons in staat om soveel meer te doen as ons kon tot dusver in Scratch. Sodat ons kode laaste bekendgestel week, hoewel pictoral. Dit was stukke van die legkaart. En ons geformaliseer dat dit iets genoem bronkode, maar sou wou lyk? Wel, dit lyk 'n bietjie iets soos hierdie. En, in werklikheid, net soort terg waar ons kan gaan met hierdie. Ek gaan om voort te gaan en oop 'n venster hier en Ek gaan net na New File kies. En ek gaan na hierdie lêer te stoor as iets soos hallo dot c. Meer oor die keuse van woorde in net 'n oomblik. En dit is hoe iemand dalk gaan oor die skryf van 'n program. Sluit in standaard I / O dot h, int main leemte, en dan oop krullerige brace, naby krullerige brace, printf hallo komma wêreld, backslash n, kommapunt, Save, gedoen. OK. Ek het my eerste geskryf program, maar dit gaan ongelooflik underwhelmed te wees want toe ek eintlik hardloop hierdie program, natuurlik, deur eerste skrif te maak hello, en dan dot streep hello, en ons sal gaan deur dit in baie meer detail in 'n oomblik, dit is al wat hy doen nie. Nie pop oop enige vensters. Dit hoef nie iets te doen veral fancy. Al wat dit doen is wat ek het dit aan doen nie, maar hoe kry ons om dit? En hoe kan ons bou op dit? Wel, laat ons stel 'n paar verskillende konsepte hier. So een, ons is op die punt om te begin met behulp van 'n program genaamd 'n samesteller. A samesteller bestaan ​​vir Mac OS, Windows, Linux, 'n aantal van bedryfstelsels, en ons sal jou gou bekend te stel aan die omgewing wat ons sal gebruik word, maar 'n vertaler is net 'n algemene term vir 'n stukkie van die sagteware wat neem bronkode en produseer voorwerp kode van dit. Met ander woorde, as jy het as insette jou bron kode, iets soos wat ek nou net getik, dit uiteindelik produseer voorwerp kode. En voorwerp kode is regtig net 'n fancy manier om te sê wat dit uitset nul en 'n mens se. Met ander woorde, die bron kode, selfs al is dit gaan 'n bietjie arcane kyk, en 'n bietjie minder vriendelik as Scratch met die eerste oogopslag, dit is ten minste iets dat ons mense kan verstaan. Dit lyk soort en klink soos Engels, selfs al is dit baie bondige. AANGESIEN programmering in nul en 'n mens se, as ons voorgangers het om te doen, 'n paar jaar gelede, was nie 'n veral pret uitdaging. En tog, dit is wat die rekenaar nog steeds verstaan. So samesteller kry ons van bronkode kode beswaar. Dit is soos die opening van 'n lêer met die samesteller, en wanneer jy dit stoor, jy daardie nulle en ene. So ons sal sien hoe om te doen wat in net 'n oomblik. Maar laat ons nou probeer om 'n voorsien brug tussen laaste week en dit, sodat selfs as ons hang oor dinge soos krulhakies, en kommapunte en hakies, en al hierdie intellektueel interessante aspekte van programmering, wat baie verstaanbaar reis mense vroeg, besef dat al die idees vandag is dieselfde as verlede. So laaste, hierdie voorbeeld het ons gesien hier, Hello World program. Wel, begin vandag, as ons wil te implementeer wat dieselfde program, dit gaan om 'n blik bietjie iets soos hierdie. En ons sal verduidelik voor lank wat int, en die belangrikste, en leeg, en al wat is nie, maar ten minste het ek hier sien reeds die bekende Hello World. Intussen dinge soos funksie, sê hello, is baie eenvoudig gaan 'n wees baie eenvoudige stelling soos hierdie. Printf hello world, met 'n paar haal, met 'n backslash, met 'n kommapunt, maar meer oor dit te kom. Loops, intussen, is dit 'n lus wat, natuurlik, sê hallo wêreld vir ewig, en hierdie een gaan 'n kyk bietjie Weirder as in die laaste, maar as ek iets sê soos, terwyl ware, ek kan dan druk Hello world weer en weer en weer en weer. En dan as jy kan soort van begin tot hier aflei, hierdie konvensie van die gebruik van krulhakies is 'n soort van soos die aanvaarding van die ingekeep lyn van die kode is daar. Die printf reël van die kode veel soos die geel legkaart stuk bo. So ons gaan nie om vir ewig te sê, ons gaan om te sê, terwyl ware, maar ons sal sien waarom dit in net 'n bietjie. Intussen, as ons 'n lus soos hierdie, waar jy iets 'n eindige herhaal aantal kere, hierdie een ook dit is gaan 'n bietjie te neem om gewoond nie, maar dit gaan om te sê vir int i kry nul, i minder as 10, i ++, en dan printf weer. Maar daar gaan wees patrone. En vir dié van julle vertroud met AP Rekenaarwetenskap, of Java, of enige aantal ander tale, byna almal van hierdie konstrukte dusver moet meestal bekende lyk. So veranderlike. So hier is 'n eenvoudige Scratch uittreksel wat stel 'n veranderlike genoem toonbank tot nul, en dan vir ewig, sê die toonbank, en dan is dit verander die toonbank vir een. So dit begin met 'n nul, en dan een, twee, drie. Wel, hoe kan ons stel dat in hierdie nuwe taal 'n bietjie soortgelyk? Int counter gelyk nul, terwyl ware, wat is dat dieselfde idee voor om iets te doen vir ewig, en ek is net gaan om te printf. En nou is dit 'n bietjie vreemd, persent i, maar meer oor dit te kom, maar hierdie idees is presies dieselfde. Ons het nou net moet voldoen aan die sintaksis wat die rekenaar gaan om te eis van ons. Boole-uitdrukking, iets soos sx minder as y, of x minder as y, en y minder as z. Dit gaan 'n bietjie iets sien soos hierdie, met hakies net soos in wiskunde vir 'n goeie maatreël om net verseker dat die volgorde van bewerkings is as wat ons beplan. En nou, voorwaardes. So as x minder as y, sê x is minder as y, anders as x groter as y, sê x is groter as y, andersins logies, moet x gelyk aan y wees. So jy kan implementeer iets soos hierdie in Scratch, of jy kan implementeer dit in hierdie sintaksis. En weer, die krulhakies is soort van gee ons die dieselfde vorm as die legkaart stukke, maar die sintaksis, nou, is dalk begin om 'n paar patrone volg. So, wat beteken dit vir ons hier? So ons is terug dan op ons hoof program. Kom ons eintlik, nou, iets te doen met dit. So in hierdie heel eerste lyn sien ons skerp sluit, standaard I / O, dot h, en dan 'n paar weird hoek hakies onder dit. int main leemte, en dan printf hello world. Dus net 'n stap. Iemand wat nog nooit tevore is geprogrammeer, ten minste verduidelik een van hierdie lyne. Met behulp van 'n paar van miskien die jargon van verlede week. Wat is printf, byvoorbeeld? Ja. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. Dit is 'n funksie, of 'n verklaring, van terminologie verlede week se. En dit is 'n aksie dat iets doen. Nou is hierdie funksie, of hierdie stelling, doen Dit blyk 'n soort van insette te neem? En in watter sin dit doen lyk insette te neem, indien wel? Insette, wat moet ek daarmee? Ja. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. So Krap uit paar stukke van die legkaart waar jy kan dit parametrize. Jy kan die herhaling vertel blok hoeveel keer te herhaal, so dit was 'n inset van soorte, en net soos Scratch het 'n klein wit plekhouer vir die nommer wat jy wil tik in, doen wat ons gebruik in hierdie teks wêreld hakies aan ons te gee dat ronde vorm waarin ons kan ons insette te prop. Na alles, tien jaar gelede wanneer hierdie taal, die sogenaamde C, is uitgevind niemand verwagte dit is een van ons, hierdie paar jaar later, sou ons wil 'n funksie wat hallo sê. Reg? Dit sou lekker wees as daar 'n legkaart stuk, of 'n sleutel woorde, Dit is genoem hello, wat letterlik net sê hallo. Maar ons hoef nie daardie. Ons kan iets baie laer het vlak, soos 'n generiese druk opdrag, wat insette neem, en afdrukke wat ons wil. So kyk nou die patroon wat sal begin te voorskyn kom. Open paren, naby hakie is blykbaar die aanvaarding van die insette, en dan sien ek dubbel haal aan beide kante. Daar is nog vreemd backslash n, maar hopelik nou is jy kan begin om ten minste wat visualiseer printf neem in 'n vorm van insette. Nie so gebruikersvriendelik as Krap, maar dit is net soos om ingeprop in 'n bietjie waarde daar. Alle reg, laat ons nou eintlik iets met dit te doen. So 'n paar van julle dalk weet van met inkopies die klas voor, gesels met vriende, wat vir baie jare ons iets gebruik genoem die CS50 toestel. Dit was 'n term wat 'n tegnologie genoem die virtuele masjien, wat is 'n stuk sagteware wat jou voorgangers sou af te laai webwerf die kursus se gratis. Hulle sal ook 'n gratis stukkie sagteware genoem hypervisor, iets genoem soos VMware, of VirtualBox, of enige aantal van ander instrumente en op hul Mac of PC of wat ook al rekenaar wat hulle verlede jaar het en in die afgelope jare, het hulle sou dubbel kliek 'n ikoon om hierdie sagteware te loop genoem die hypervisor. En dan binnekant van die program hulle sou die CS50 toestel oopmaak. En die effek was dat of 'n voorganger van jou hardloop Mac OS of Windows, kan hy of sy dan Daarna het 'n nuwe venster op hul skerm hardloop CS50 se omgewing. So 'n virtuele masjien kan jy een hardloop bedryfstelsel binnekant van 'n ander, en dit is presies wat ons gedoen het. Regdeur die meeste van die kursus het ons gebruik 'n bedryfstelsel genoem Linux, spesifiek Ubuntu Linux, en dit is 'n baie mooi manier in die afgelope jare van om seker te maak dat almal in die loop net het dieselfde omgewing. En jy kan enige soort gebruik rekenaar wat jy eintlik wil hê. Onder die nadele, al is, was dit was soos twee gigagrepe om hierdie saak te laai. Dit het nie noodwendig werk super goed op mense wie se rekenaars wat dalk net het 'n gig of so RAM, of nie te veel gigahertz van CPU spoed, en so hierdie jaar, vir hierdie en ander redes, het ons die oorgang hierdie omgewing. Die sogenaamde CS50 IDE, wat is gebaseer op open source sagteware, en 'n platform ondersteun dat 'n maatskappy genaamd Cloud9 ondersteun in Europa, wat kan ons wese het wat presies dieselfde omgewing as in die afgelope jare, maar in die sogenaamde wolk. So, wat is die wolk? Jy het waarskynlik gekliek die ikoon op jou Mac of PC. Wat is die wolk? Ja? 'N bietjie harder. Ja. Dit is net 'n klomp van rekenaars elders die winkel data en hardloop sagteware en dies meer. So dit is regtig net om die woord de jure beskryf [? verhuurbare?] rekenaars wat elders woon. Dat jy, jouself, nie noodwendig besit. So wanneer jou data, of jou programme, is in die wolk, is dit net beteken dat dit op iemand anders se rekenaars elders, en nie, waarskynlik, op jou fisiese of laptop lessenaar. En so dit is wat CS50 IDE is nou. Voortaan sal jy gaan na 'n sekere URL wat jy sal stel om, in die probleem stel 1, later week, wat sal dan op te teken, gee jou hierdie omgewing. En baie soos Scratch het 'n paar verskillende panele wat betrokke is, so ook CS50 se IDE het presies dit. Op die top linkerkant hier, is jy gaan 'n bekende lêer leser sien. So enige van die lêers wat jy sit in hierdie omgewing is net gaan om daar gelys word. Lêers en dopgehou. Op die top reg hier, jy gaan na 'n plek te sien waar jy kan eintlik skryf jou kode. Aanvanklik in C, later in die term in PHP en JavaScript, en dalk vir finale projekte, Ruby of Java Python of enige aantal tale ondersteun in hierdie omgewing. Dit is glad nie vasgebind spesifiek CS50. En dan in die onderste hoek hier veral vir diegene wat meer gemaklik, jy iets bekend as 'n terminale venster. En dit terminale venster laat om enige bevel te voer dat jy wil in hierdie wolk omgewing. Dit laat jou toe om te installeer enige bykomende sagteware wat jy wil, want jy het die sogenaamde wortel, of administrateur voorregte. So met ander woorde, selfs al is dit uiteindelik aangebied in die wolk, en selfs al het ons vereenvoudig dit tot 'n mate by verstek, letterlik die bekendstelling, danksy Dan Armendariz, en Dino, en Dan Bradley op CS50 se span oor die afgelope maande, 'n minder gemaklik af wat 'n baie van die huide aanvanklik verwarrend afleiding. Alles wat daar bestaan ​​om verteenwoordig 'n tipiese rekenaarstelsel wat jy kan gebruik in die werklike wêreld. So, wat beteken dit alles, en wat kan ons eintlik doen met dit? Kom ons neem 'n blik eintlik op 'n program. So ek gaan om oop te maak die werklike omgewing hier, wat net ons Chrome leser, wat Firefox kan wees, kan wees Internet Explorer, of 'n ander leser as well. Dit is hier vol gekeur vir die oomblik. En ek wil eintlik terg afgesien wat hierdie program was. So laat ons 'n blik deur inzoomen up bo, na wat ek gedoen het, en hoe ek hier beland het. So hier is die presiese dieselfde reëls van die kode. So dit is die verklaring, as jy vroeër genoem. Die funksie wat hallo sê. Die krulhakies op line vier en ses lyn, vermoedelik soort envelop dat die lyn om dit te assosieer met die essensie van my program. So inderdaad, hierdie navraag belangrikste, dit is daar op die lyn drie, jy kan dink dat as die ekwivalent van dat wanneer groen vlag gekliek, blok in Scratch. So dit is al wat ons hier het, is wanneer groen vlag gekliek, druk, of sê, hello world. Maar laat ons neem 'n raaiskoot, nou, op watter hierdie eerste, meer arcane lyn, is. Skerp sluit, oop skuins bracket, standaard I / O dot h, sluit skuins bracket. Wat is dit dalk te doen, veral as jy het geprogrammeer voor in 'n ander taal. Ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. Presies. So dit gee jou toegang tot 'n biblioteek, so te sê, van funksies. En 'n biblioteek van funksies is funksies wat iemand anders geskryf het, óf het onlangs of lank gelede, sodat jy nie aan die wiel te herontwerp. Byvoorbeeld, ons doen nie het om te weet, in 2015, hoe om kode wat wan skryf 'n karakter op my skerm. Iemand anders het gedink dat uit met die printf funksie sodat ek kan sorteer van abstrakte weg van daardie, of laag op die top van sy of haar kode, en nou net ' vanselfsprekend dat enige program wat ek skryf kan iets doen om die skerm te druk. So die eerste lyn daar in stap een sluit die sogenaamde kop lêer vir die standaard biblioteek. So sien die taal wat ons nou werk het 'n standaard biblioteek met baie van die funksies. Printf is een van hulle, en dat die eerste reël van die kode beteken gee my toegang tot daardie funksies, sodat ek hoef nie te wat wiel. Nou laat gaan na die onderste venster en doen presies wat ek gedoen het voordat. 'N Oomblik gelede, toe ek whizzing deur die kode, uit te tik dit vir die eerste keer, Ek baie vinnig getik, maak hallo. Wat was dit alles oor sou jy raai? Wat is ek? Ja? Never mind. Dit is OK. Ja. GEHOOR: Opstel dit. DAVID J. MALAN: Ja. Dit was net die opstel van dit. Reg? Selfs al is dit heeltemal onbekende vir julle, dit is redelik Engels wil. Dit is beslis nie nulle en kinders, so ek het nog nodig het om dit uit te voer deur middel van dat die sogenaamde program, 'n samesteller, wat gaan om dit te neem as invoer en produseer uitset. En ten minste vir nou in hierdie Linux omgewing, maar dit word nie voorvereiste dit is net waar ons sal begin, jy in die algemeen interaksie met rekenaarstelsels soos hierdie deur 'n sogenaamde command line. So met 'n knip vinnige en jou sleutelbord, en nie soseer jou muis, en nie soveel vensters en ikone en spyskaarte, eerder alles is tekstuele. En selfs al is dit voel, op die eerste oogopslag, miskien, soos 'n stap agteruit, dit is eintlik 'n baie meer kragtige en ekspressiewe manier beheer 'n rekenaar veral as jy, jouself, raak meer gemaklik van minder. Dit gaan jou toelaat om 'n baie te doen meer dinge as net dit wat Microsoft of Apple kan jy te doen het met hul grafiese bedryfstelsel. So wanneer ek druk Enter, nou, niks gebeur hierdie tyd want blykbaar die program hallo op datum is. En wat was die opdrag Ek hardloop na dit? Dot streep hello, en hello world. Nou laat ons neem 'n stap terug vir 'n oomblik. Dit blyk dat die maak hallo is net 'n vereenvoudigde manier van die opstel van 'n program. Laat ons net bekend een stuk jargon, maar dan weg te beweeg van dit, want dit is nie alles wat interessant vir doeleindes vandag se. Die samesteller ons gaan begin gebruik genoem klang, vir die C-taal. En dit is 'n program wat net hardloop soos ons gedoen het by die opdrag lyn daar. En so as ek wil 'n program saam te stel dat ek het in 'n lêer genaamd hallo dot geskryf c, ek het letterlik net tik klang hallo c betree. Die funny ding is, vir historiese redes, as ek nie spesifiseer die naam van die program wat ek wil uitvoer, as ek dit nie doen nie spesifiseer 'n lêer naam vir die nulle en kinders, 'n baie vreemde konvensie aanvaar jaar gelede waar dit gevoel soort van 'n goeie antwoord op die oomblik, Wel, laat ons net arbitrêr noem die eerste program wat ons 'n punt te stel nie. A kom eerste in die alfabet. Out, dit is die uitset. So sal ons die program noem by verstek 'n punt uit. En dit is goed, want as ek wil hardloop die program in hierdie teks gebaseer omgewing, ek tik net dot dot streep 'n uit te voer. En dit sou presies soos voor hardloop. So laat ons sien wat ware vinnig. So as ek gaan terug na my bronkode in CS50 IDE, en ek plaas dit te doen, klang hallo bed c ingaan, lyk kennisgewing niks gebeur nie, maar byna altyd in hierdie Linux omgewing, wanneer niks sleg lyk om te gebeur, dat beteken iets goeds werklik gebeur het. As jy nie 'n fout sien boodskap, al is waarskynlik goed. En inderdaad, as ek nou doen dot streep 'n punt uit te voer, het ek my dieselfde program te hardloop. Ek het nog steeds die hallo program van vroeër, want inderdaad, dit is gaan so baie lekkerder wees net tik maak in plaas van om te onthou hierdie inkantasies van opdragte, maar laat ons sien hoe ons kan verbeter op hierdie, nietemin. So, dit is die opdrag om die kode te stel. Dit is die opdrag om te hardloop die saamgestelde kode daarna. Hoe kan ek 'n lêer naam spesifiseer? Wel, laat ons net bekend een stuk jargon. Wanneer jy in hierdie teks-gebaseerde omgewing, jy gaan om te wil om te spesifiseer dinge genoem command line argumente. Wat net 'n fancy manier om te sê, ander woorde op die instruksielyn dat tweak die gedrag van watter program wat jy loop. So spesifiek die program Ek is hardloop, deur te tik die naam klang, is die program genaamd klang. So dit is of die ou skool ekwivalent van dubbel-kliek op Microsoft Word of icon paar program. Ek plaas net tik sy naam, maar in hierdie weergawe van die bevel, Ek het dan stamp o ruimte hallo hallo ruimte dot c. So selfs as jy nog nooit gespeel in hierdie wêreld voor, net 'n raaiskoot te neem wat nie Dash o hallo doen? Of wat beteken dit vertel klang om te doen? Ja. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. Dit stel net uitset die lêer se te wees hallo in plaas van die slordiger n dot uit. En, inderdaad, laat ons probeer om hierdie. So as ek nou doen, in die eerste laat dit te doen, r m hallo. Dit is verwyder. En dit gaan om te verwyder sê gereelde lêer hello, wat is onnodig arcane, maar dit net middel te doen wat jy wil die lêer verwyder, en ek tik y vir ja. En sien, as jy skrams by top gelaat het, het dit verdwyn uit daar. Laat my nou te doen klang Dash o, en Ek gaan om voort te gaan en te doen hello, in hoofletters, hello dot c. Nou, as ek dit doen dot streep hello, wat sou jy verwag? Miskien is dit die geval sensitief. Miskien is dit nie. Kom ons kyk. Geen lêer of gids. En ons kan soort van kul deur net te kyk na links bo. Wat het ek natuurlik Stoor die program as? Alle pette hallo. So ja, dit is gaan om 'n verskil te maak. So nou hello world is terug. Nou is dit alles goed en wel, en al baie mind-numbing, om soort van kry vasgeval in hierdie besonderhede nie, maar hulle verstaan is goed. Tik aan hierdie toenemend lang inkantasies gaan nie veral nie pret, sodat mense in die wêreld uitgevind 'n ander program, 'n paar jaar gelede, genoem maak dat eenvoudig kan jy om te maak tik, die naam van die program jy wil om te maak, en maak is slim dat dit sal lyk in die huidige gids, aka gids, en as jy 'n lêer genoem hallo dot c, dit is die lêer sal stel vir jou in 'n program genaamd hallo. So dit is 'n baie makliker manier doen die meer kriptiese opdragte dat ons vroeër gedoen het. En ons het 'n pre-ingestel CS50 IDE weet dat dit bietjie o en 'n aantal moet doen ander vlae, of command line argumente, dat ons sal sien voor lank. Maar laat ons nou eintlik doen iets meer interessant. Net tik aan hello world al die tyd is nie al wat dwingende. So laat my gaan voort en verandering hierdie program en sê hallo David. Nou gaan ek hier af te gaan. Ek gaan om voort te gaan en te doen hallo. En nou weer jy sien maak, is die langer wys jy volgorde van instruksies wat dit is doen, want ons het 'n pre-ingestel dit so nie, maar ons moet nie bekommerd wees vir nou wat dit anders as dit doen samestelling van dot streep hello, hello world. Wat is verkeerd? Ja. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. So, noobie fout. Ek sien dit is super subtiele, maar die asterisk hier, in die blad, beteken net julle het dit nie gered nie, en blaaiers en ander programme doen dit soms. So beheer s of opdrag s moet dit red. Nou kan ek gaan voort en re-run van die program. Gehercompileerd. Right, so dit is 'n multi-stap proses. Nie een van wat is veral kompleks, maar enige tyd verander ons die lêer, ons nodig het om die gevolglike verandering nulle en ene, en dot streep hallo. Wow. So dit is baie underwhelming dat ons net gedruk hiervan. Kom ons maak dinge 'n bietjie meer dinamiese, nou. Wel dit blyk dat graag Nuuts af, C ondersteun veranderlikes. En dit blyk as jy wil om 'n veranderlike wat winkels het, nie 'n nommer soos ons tipies gedoen het met Scratch, maar soos 'n woord of 'n frase, of 'n naam, kan jy kan 'n veranderlike spesifiseer te wees van die tipe string. So sal ons meer van sien dit in 'n oomblik, maar dit blyk dat C en 'n baie tale soos dit het 'n baie spesifieke tipes veranderlikes. Dit is nie net soos algebra, waar jy 'n x, 'n y, en z kry En dit is net altyd getalle, in 'n programmeertaal jy kan getalle te stoor, kan jy individuele karakters te stoor, jy kan die hele woorde stoor, kan jy stoor hele beelde, geheel klank lêers, en dies meer. So moet ons wat spesifiseer die tipe van ons veranderlike. En deur konvensie ek gaan bel my veranderlike s net omdat dit bondige, en s staan ​​vir string. En dan gaan ek slaan binnekant van hierdie veranderlike, net soos met Scratch toe ek die gebruik van die stel blok, Ek gaan die gebruik opdrag operateur in C, wat mooi genoeg is die gelyke teken, maar die gelyk teken doen dit. Dit beweeg iets van die reg om die linkerkant van die uitdrukking. So, wat ek gedoen het, duidelik in wees line vyf is Ek het 'n veranderlike verklaar. Ek het die rekenaar vertel, gee my geheue vir 'n veranderlike, noem dit is, en vooraf weet dat ek gaan word om 'n string in dit. En 'n string is net 'n volgorde van die karakters. Dit is 'n woord of 'n frase, of paragraaf, maar dit is 'n reeks van karakters. Dit is nie getalle. Wat string ek gaan wees om in daardie veranderlike? Wel, blykbaar haal unquote, "Hannah". Nou let op die patroon wat is opkomende. Daar is 'n linkerhand uitdrukking. Daar is 'n regterhand uitdrukking, geskei deur die gelyk teken. En net 'n raaiskoot, as onbekende nietemin, met wat die kommapunt doen. Wat is dit vermoedelik vir ons doen? Ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. Dit is net die beëindiging van die lyn. Reg? Die rekenaars wil onomwonde wees vertel, letterlik, wat om te doen. Soos die grondboontjiebotter en jellie toebroodjie byvoorbeeld as jy nie spesifiseer presies wat jy van plan is, sou word oorgelaat aan die oordeel of foute. Die kommapunt beteken, dit is dit vir hierdie opdrag. Dit is wat super akkurate, en dit is 'n baie maklike ding om af te verlaat. So nou hierdie program lyk nie word gedra nie anders totdat ek maak dit meer dinamies. So eerder as harde kon my eie noem, laat ek 'n tydelike waarde. En dit blyk dat, en ek weet dit uit die dokumentasie gelees het, en gebruik die funksie vir die jaar, wat printf is ontwerp dinamiese wees. Jy hoef nie om vooraf te weet watter woorde jy wil om dit in te sit. Jy kan plaas 'n plekhouer soos persent s, wat gaan die vertel rekenaar, sit hier 'n string. Watter string wil ons daar sit? Will blyk dat tussen hierdie hakies, wat onthou, af te baken die insette om 'n funksie, as jy ' kommas geskei lys van dinge hier, ons eintlik in verskeie slaag insette om 'n funksie. Dus net graag 'n paar Scratch blokke, kan jy nie gespeel het saam met hulle vir jou projekte nog of glad nie, sommige Scratch blokke het twee insette. Twee wit bokse wat jy kan tik nommers of woorde in. So om nie C het funksies soos printf dat twee insette kan neem. En weer, hierdie komma skei hulle. So in Engels, weer, selfs as jy nog nooit voorheen geprogrammeer, deur daardie logika printf is 'n funksie, neem twee insette, waarvan een is 'n plekhouer, wat sou jy hoop printf gaan doen met hierdie insette? Dit gaan om hallo te sê Hannah, hopelik. So om dit wat ons nodig om dit te red nie. Ek gaan om te vergroot. Ek gaan hier terug te gaan en sê hallo te maak betree. Oh. Iets is verkeerd, en eintlik dit is nogal oorweldigend. Ek het ses reëls van die kode en soos 12 lyne van die foute. So, kyk uit na hierdie. So, wat gaan hier aan? Dus is die beste reël hier, veral wanneer jy begin, nie afgelei kry deur die dinge aan die onderkant. Trouens, ek het baie doelbewus net scrolled up omdat baie dikwels, 'n rekenaar is nie al wat helder van 'n toestel. Dit gaan deurmekaar raak. As dit sien een ding wat dit nie verstaan ​​nie, dit ander kan aansien reëls van die kode as verkeerd, selfs al is hulle heeltemal fyn. Sodat jy altyd wil om te werk bo af deur die foute. En dit is weliswaar super arcane op die oomblik. Fout, die gebruik van onverklaarde identifiseerder string. Het ek bedoel standaard in? Nee, ek bedoel string. En dit is wys om, miskien is dit 'n tikfout. Soort van soos, speltoets in 'n baie geeky manier, maar die rede hier, en jy sal weet net deur die praktyk, is dat dit blyk dat string bestaan ​​nie in C. In werklikheid, C is 'n besonder ou taal, en dit is 'n baie lae vlak, en dit nie 'n baie van die funksies dat jy dalk gegroei met as jy, in werklikheid, geprogrammeer in Java, soos sommige van julle het, maar jy kan dit te leer nuwe dinge. En inderdaad, het ons hierdie CS50 gedoen, selfs al teen die einde van die semester, al hierdie opleiding wiele sal geneem af, wat ons doen in hierdie eerste paar weke aanvanklik is ons ook jy sluit CS50 dot h. Wat is 'n kop-lêer. Meer oor wat in die toekoms. Dit is 'n lêer wat funksies bevat dat ons vir jou geskryf. En onder dié funksies is funksies vir om insette van die gebruiker, soos snare, en getalle en reële getalle, en meer. Maar dit het ook 'n paar kortpaaie. Dit definieer 'n Boole as 'n tipe data. C nie waar of vals is. Maar ons kan dit gee die idee van waar of vals deur middel van hierdie biblioteek. En dit het ook nie 'n string het gebou in totdat ons sluit hierdie lyn. So hierdie lyn van die kode vertel die samesteller, hey, klang, kyk in hierdie lêer vir 'n hele n klomp van die kode wat CS50 geskryf het sodat enigiemand met behulp van hierdie lêer kan vanselfsprekend die funksies wat hulle het bygevoeg. So nou laat my gaan voort en duidelik die skerm, en as nuuskierig Ek sê maar net beheer l elke keer om die skerm skoon, of jy kan duidelik tik. Ek gaan net nou voort te gaan en tipe maak hello, en alles is goed. Steeds 'n arcane uitset, maar dit is nie 'n foutiewe boodskap. Maar as ek doen dot streep hello, en as 'n eenkant, dot streep onbekend aan die meeste. Dit beteken net, dot middel die huidige gids. So as jy ooit gebruik DOS, of Linux, Unix of jy dalk iets gedoen het soos cd dot dot, waar dot dot beteken gaan terug in tyd, of gaan agteruit, of hoër in jou gids. Dot beteken net kyk in die huidige gids. Ek wil hello, wat is reg hier. En inderdaad, nou is dit sê hallo Hannah. En as ek dit weer verander Maria, heropstel dit sou hello, dot streep te maak hello, die program bly maar verander. Maar dit is nog steeds 'n redelik dom program. As ek wil hierdie program skip, of gee dit aan 'n vriend, of gee dit aan Maria of Hannah vir die saak, is dit goed. Ek kan dit aan te pas vir beide van hulle, maar dit gaan nooit dinamiese wees. Hulle kan dit nie verander nie nadat dit opgestel af in die nulle en ene. So wat ons het iets slimmer? Wat as, in plaas van harde kodering in die program se naam hierdie persoon, wat as ons net kry die string op aanvraag? So met ander woorde, laat my dit doen. Ek gaan hierdie program heropstel. En laat my in zoom aan die onderkant nou. Maak hallo dot streep hallo. Nou niks gebeur nie. Kan ons 'n vinnige vrywilliger Om iets te laat gebeur? Kom up. Wat is jou naam? Pancho: Pancho. DAVID J. MALAN: Pacho? Kom up. Sodra jy hier opstaan, dit is gaan baie underwhelming te wees, maar dit is meer interessant as ek tik. As jy wil om voort te gaan en tik jou naam, het ek hierdie program net vir jou. Tik net jou naam. Betree. Wonderlik. Alle reg, baie dankie. Pancho: Dankie. DAVID J. MALAN: OK. [Applous] Dit was baie vriendelik. Hier gaan jy. Wat het ons te doen? So uiteindelik het ons, ten minste, het hierdie program dinamiese. Nou is dit nog steeds beslis deur ontwerp underwhelming, maar ons het uiteindelik het die vermoë nou kode te skryf in advance, veel soos die skrywers van printf, en dan dinamies ontwaren gebaseer op die insette wat ons is oorhandig, hetsy deur die programmeerder, of deur die mens wat eintlik interaksie met die program. So laat eintlik nou probeer om 'n paar ander konstrukte te doen en kyk of ons nie die programme kan maak hulself meer gesofistikeerd. So laat ons gaan voort en in plaas van skryf hierdie een van nuuts af, Ek gaan in vandag se om te gaan bronkode, en al hierdie dinge is beskikbaar op die kursus se webwerf, en jy kan sleep en dit in jou eie omgewing kom Vrydag keer probleem stel 1 gee jou die instruksies, of jy kan doen dit op die command line as goed, maar meer om te kom in p stel 1. Kom ons sien wat in hierdie program hier genoem word, adder dot c. Nou het ek al opgemerk nie, maar wat is nuut? Met die eerste oogopslag, watter lyn van die kode is absoluut nuut? Waarskynlik nie fundamenteel onbekende nou. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja, so int x gelyk te kry n. Ons het nog nooit enige van hierdie gesien voor, maar is waarskynlik int die simbool vir watter soort veranderlike, [? uit?] 'n heelgetal. So int vir heelgetal. Dit is net om meer bondige. x is net arbitrêr. x en y en z nog mooi redelike getalle, maar oor die algemeen sal ons woorde een keer gebruik ons programme te kry meer kompleks. Kry int, natuurlik, baie soos get string, is waarskynlik gaan om te kry 'n int van die gebruiker, en dan gaan ons doen dieselfde ding met y. En blykbaar, selfs al is dit laaste reël, 24, lyk meer kompleks, dit gaan die som van hierdie sê en dit is die ander ding. En kennis persent i waarskynlik dui wat? Watter rol persent i blykbaar dien? Dis net plekhouers. Reg? Persent s was vir string, persent i is vir heelgetal. Daar gaan persent f wees vir drywende punt waarde, wat is net 'n nommer met 'n desimale punt. Met ander woorde, 'n reële getal. So laat eintlik hierdie stel program real vinnig en maak nie basilisk. Oeps. Goeie geleentheid. So sien hier, al hierdie tyd het my gebruiker naam vir hierdie rekening is jharvard. Ek is in CS50 IDE, aka IDE50. En nou in die blou hier, is 'n melding nie, maar uit die omgewing, van waar ek is. En in die feit, as ek zoom op die top hier, sien dat ek 'n IDE50 en ek sien hierdie woord, as jy soort draai jou kop na die kant, werkspasie. In 'n neutedop, die feit dat Ek sien tilde slash werkspasie beteken dat in hierdie teks gebaseer opdrag omgewing, Ek is in die teks ekwivalent van hierdie grafiese hier gids tot. So wanneer ek doen dot streep adder, is dit gesê geen reël teiken adder stop te maak. Ek weet nie wat dit beteken, maar dit is sleg vir een of ander rede. Geen lêer of gids is selfs meer duidelik. Waar is dit dan? Gebaseer op waar ek gekliek om die lêer oop te maak vroeër. Waar kan dit wees? Dit is waarskynlik in die bron een w, vir Woensdag, en ek kan dit sien, inderdaad, as ek oop te maak. Daar is adder dot c, maar in hierdie teks-gebaseerde omgewing, Weereens, ek het super eksplisiete wees. As ek wil dopgehou verander in bron een Woensdag, moet ek tik, cd bron een spasie Woensdag betree en nou my vinnige veranderinge aan gee my 'n visuele cue wat Ek is inderdaad elders in my omgewing, maar nou kan ek maak nie adder, dit blyk te werk, dot streep adder, gee my 'n heelgetal. Een. Twee. Die som van een en twee is drie. Maar as ek nie saamwerk nie, Kom ons kyk wat kry int doen. Gee my 'n heelgetal. No. Weer. OK. Boete. 50. 50. Alle regte. So dit uiteindelik saam. En dit is 'n paar van die funksies wat hierdie funksies kan gebou in vir jou. So in die implementering kry van int, wat ontwikkeling bou van verlede week is waarskynlik in daar om hierdie gedrag van weer probeer dwing, weer probeer, weer probeer? Ja, daar is waarskynlik 'n soort van loop. Dit gaan 'sintakties te kyk anders blokke Scratch se maar dit is inderdaad wat binne die lêer. En in 'n paar weke keer sal ons eintlik kyk na die CS50 biblioteek as om dit wat binne, maar daar is 'n lus instelling presies dit. Kom ons speel 'n simpel spel hier met hierdie lêer. Voorwaarde nul dot c. Ons is net gaan om in die algemeen begin tel op nul. En ek hou afgelope blaai sommige van die dinge wat op die top. Blou hier, afgebaken met al van hierdie sterre en die houe, dié van julle wat die program voor, wat is dit? Hoekom moet ons hou draai oor dit? Wat? GEHOOR: Dis 'n kommentaar. DAVID J. MALAN: Ja. Dis net 'n kommentaar. Dit is 'n kommentaar vir die mens om te lees, wat in ons geval, vertel ons wat die naam van die lêer is, wat dit geskryf het, en wat dit doen, sodat jy nie deur te lees die kode om te weet wat hierdie lêer is alles oor. Dit is net 'n beskrywing, maar funksioneel is dit irrelevant. En ek kan selfs verwyder dit van my lêer en dit het geen impak. Die sappige lyne is hierdie eerste twee hier, nou. int main leemte is die ekwivalent van ons wanneer groen vlag gekliek, so ons gaan laat dit wees vir vandag, en ons sal terug te kom, uiteindelik, soos wat int en leeg is nie, maar nou, sien wat ek gedoen het ook hier, jy kan ook, as jy 'n lyn in kommentaar, indien jy 'n gedagte wat jy wil deel oor 'n spesifieke reël van die kode, konvensie in C is om te doen slash streep, en dan 'n paar bondige woorde, nie 'n volsin, oor die algemeen nie 'n paragraaf, wat net verduidelik aan jou, of jou TF of ander lesers of kollegas, wat jou kode doen. So eerder as om te kyk aan hierdie en aflei lyne nege en 10, wat is om dit te doen, in lyn agt Ek gee net 'n kommentaar aan vra die gebruiker vir 'n heelgetal is, dan sal ek nie te hard dink oor wat lyne nege en 10 is. Ek weet net dat dit is wat gesamentlik hulle doen. Hoe? Wel, hier is die vinnige. Hier is die kry van die int. En gebaseer op die vorige gedrag, dit lyk soos get int is slim genoeg om seker te maak dat die menslike saam en gee dit 'n heelgetal. Maar nou sien ons dit. En dit is wat herinner aan Scratch. Ek beweer dat ek ontleding insette van die gebruiker maar ietwat verkeerd. En dit glo in C is hoe ons spreek 'n as anders, 'n tak, 'n vurk in die pad, maar ek sê ietwat verkeerd. Wat is die fout in die program? Oor verder terug? Ja. GEHOOR: [onhoorbaar] nul. DAVID J. MALAN: Ja. So as ek tik in nul, laat ons kyk presies daardie geval, of hoek geval, as jy wil. So as ek tik in nul, wat van die blokke gaan blykbaar gryp dit? Die as of anders? Die anders, en dit gaan om te sê, jy 'n negatiewe getal opgetel. En inderdaad, nul is nie veronderstel positief of negatief te wees, en so sou dit verkeerdelik wees. Dit sou 'n fout wees. So hoe kan ons dit regmaak? Iemand wat nog nooit geprogrammeer? Het jy want-- GEHOOR: [onhoorbaar] DAVID J. MALAN: terugtrek? GEHOOR: [onhoorbaar] DAVID J. MALAN: O, jy het? Iemand wat nog nooit geprogrammeer. Wil om te probeer om jou hand op Dit, in die rooi hemp? Kom up. O ja, kom op, as jy nie omgee nie. So nooit gesien geprogrammeer voor, wat is jou naam? LAUREN: Lauren. DAVID J. MALAN: Lauren, alles reg. So los hierdie fout vir ons. Jy het nie gesien C, vermoedelik, en waarskynlik geen ander taal. So los hierdie program vir ons. Nice om ya ontmoet. Geen druk. LAUREN: Ja. DAVID J. MALAN: Maar weereens, as dit waagstuk volgens plan verloop, die afhaal hier wees, net weer te begin om patrone raaksien en aflei uit bestaande sintaksis hoe anders kan jy dalk te druk jouself, geen woordspeling bedoel, ten einde om 'n paar ekstra scenario te vang. So ons sê anders as. printf, goed. En op met CS50 IDE, en frankly-- IDE staan ​​vir Geïntegreerde Development Environment. Dit is net 'n fancy manier om te sê 'n program wat jy program help. Dit doen use dinge soos wanneer jy een hakies tik, dit gee jou outomaties die ander. Die vermoede is dat jy uiteindelik gaan wil tik dat en dit beteken dit ook met aanhalings. So ek wil lyn 23. 99% van die manier waarop daar. Iemand wil in slaan met 'n wenk? Ek het gehoor kommapunt uit die gehoor. Goed. Sodat daardie voltooi. En nou, ek het net 'n bietjie ontsteltenis met 'n lyn 21. Hoe wil ons dit uit te druk? Watter vraag wil ons vra, dink jy? So voorheen het ons gevra die vraag as n groter as nul is, doen dit. Anders, doen dit. So moet ons 'n keuse vraag hier te vra. GEHOOR: [onhoorbaar] DAVID J. MALAN: Goed. So as N gelyk aan nul. Uitstekend. So laat breek hier. Baie dankie vir hierdie trotseer. Kom ek gee jou 'n bietjie welverdiende stres bal, miskien is daar. So ons is amper daar. In werklikheid, Lauren, as jy dit nie doen nie gedagte, laat my een aanpas hier net om konsekwent te wees, selfs met wat ons gesien het in Scratch, wat doen wat ek wil doen met lyne 21 en 24, net weer gebaseer oor hoe ons dit gedoen het in Scratch, miskien? GEHOOR: Beweeg dit op. DAVID J. MALAN: Ja, beweeg dit op. So het die anders toestand, die derde, of vierde of vyfde, of finale tak moet werklik kom daarna, en dit is net deur konvensie, net omdat as jy wil. So ek het nie nodig om hierdie tweak te maak. En ek moet my sit krullerige brace terug hier. En nou, is hierdie program sal saamstel. Ons is so naby, maar daar is 'n baie, baie subtiel fout. Kom ons kyk wat gebeur. Eerstens, laat my gaan voort en zoom uit. Ek gaan om voort te gaan en tik maak toestand nul. O, ek het gelieg. Nou is die samesteller is eintlik redelik slim. En ek het nie regtig verstaan dit is fout boodskap. Die gebruik van die gevolg van 'n opdrag as 'n voorwaarde sonder hakies, is blykbaar sleg. Maar wat beteken dit? Weer goed, op soek na patrone in kode wat ons reeds gesien het, Wat is lyn 17 eintlik, selfs al Lauren bedoel effens anders? Ja. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. So onthou die gelyk teken, blykbaar soos ons dit het gebruik is nie gelyk. Sy opdrag, van regs na links. So reël 17 op die oomblik is 'n toestand, en dit is uitvoering kode binne-in die hakies, maar wanneer daardie kode voer, wat gebeur met die waarde van nul? Wat gebeur met die waarde van n? Om nul. So as N steeds zero, en weer, soos per verlede week, ons in die algemeen sê dat zero is vals en 'n waar is, of ja is een en geen is nul. So waar en vals, een en 0. As n as van die lyn 17 was gegewe die waarde 0, is nul waar? No. Per definisie zero is onwaar. Dit is die konvensie ons gaan klou aan om vorentoe te beweeg. So sal lyne 18, 19, 20 en nou ooit toepassing, logies? Hulle kan nie. So die vraag gevra ons maar nie heeltemal presies, en jy sal nie weet nie, tensy jy dit gesien, die oplossing in C is wanneer jy wil uit te druk gelykheid, sê jy gelykes gelyk. So gelyk teken is reeds opgebruik deur opdrag, van regs na links. Gelyk gelyk middel gelyk. En as jy regtig wil jou gedagtes word gebuig, in JavaScript en PHP, daar is gelyk gelyk gelykes, wat beteken iets heeltemal anders, maar ons sal kry om dit kort voor lank. So, dit is 'n eenvoudige oplossing nie, maar besef super maklik om hierdie fout maak, en dan wonder en stryd vir minute, indien nie 'n uur, Hoekom is my kode nie uitvoering as ek van plan is? Dit is omdat jy nie vertel dit presies wat jy bedoel. Sodat amper volmaak nie, en dit was groot dat ons struikel oor hierdie twee klein dinge, want nou as ons hulle op te los, en ek maak toestand nul dot streep toestand nul, Ek wil graag 'n heelgetal asseblief. Kom ons kyk. No. Dit gaan my dwing om dit te doen. So 42. Ek pluk 'n positiewe getal. So nou hoe kan ek bewys hierdie program korrek? As jy 'n wiskundige, kan jy nie dit werklik te bewys deur trial and error, reg? Jy kan nie net 'n bewys deur Byvoorbeeld, maar ten minste as 'n programmeerder ons is nie gaan probeer om te bewys vir nou dat dit eintlik korrek, maar ek moet waarskynlik toets paar verteenwoordigende gevalle. Ek het getoets 42. Ek kon toets 43. Ek kon toets 44. Toets 45. Reg? Maar ek kan dit 'n baie lang tyd te doen. Wat sou 'n paar meer wees interessante gevalle te probeer? GEHOOR: [onhoorbaar] nul. DAVID J. MALAN: So nul. Beslis. En 'n goeie, ons het dit hierdie keer, danksy nuwe kode Lauren se. Wat is 'n goeie saak te probeer? GEHOOR: Negatief een. DAVID J. MALAN: Negatief een en Miskien iets 'n bietjie groter, so miskien negatiewe 42, maar in die algemeen, wanneer toets jou programme vorentoe beweeg, is jy gaan wil om te dink om jouself, soos wat is die fundamentele verskillende gevalle. En durf ek sê 'n negatiewe geval, 'n positiewe geval, en 'n nul geval pretty much rondes dit uit. Kom ons kyk na 'n variant van hierdie al. Voorwaardes een. Dit is 'n korrekte oplossing hier, sodat jy sal sien twee en aanlyn, as jy deur die loop ipv, sal oor die algemeen inkrementeer hierdie stapsgewyse totdat ons kry presies die regte benadering. Wat gebeur as ons wou vra twee vrae op een slag? Laat my dit oop te maak in plaas. Nie-skakelaar, vir die redes ons sal 'n ander tyd te sien. Wat is nuut sintakties hier? Ek is tans 'n spel waar die rekenaar vertel my, gee my 'n heelgetal tussen een en 10, en dan is ek oordeel insette van die gebruiker. In Engels, gebaseer op die kode wat jy hier sien in blou, wat hierdie program doen? GEHOOR: [onhoorbaar] opgetel 'n groot of klein aantal. DAVID J. MALAN: Ja. Dit is net beoordeel of Ek pluk 'n groot, of medium, of klein aantal gebaseer op 'n baie arbitrêre definisie van klein, medium, en hier groot, maar kennis die sintaksis wat nuut is hierdie. Daar is nie minder nie as int of gelyk aan teken, of groter as of gelyk aan teken, waar 'n mens is bo die ander, dat jy kan uitdruk in soos Microsoft Word. So in 'n programmeringstaal wat jy tipies net nie twee karakters, een na die ander. En wat beteken dit waarskynlik verteenwoordig, ampersand ampersand. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja. Dit beteken net en omdat dit blyk dat die skrywers van C gebruik om 'n enkele ampersand, wat jy dink ideaal vir die idee sou wees van en word reeds gebruik word, so ampersand ampersand eintlik vang die geval het ons eintlik wil hê. So laat nou struikel oor twee dinge. Laat my gaan voort en maak een. Iets wat 'n bietjie kommerwekkend. Onakkuraatheid dot c. Laat my twee dinge hier bekend te stel. Een, kennis dat ons kan doen wiskunde, as net so voor wanneer ons het plus van twee getalle, x en y. Wat is hierdie program blykbaar doen? Ek het dit nog nie gedraai, en ek het persent f ingestel, maar ek het gou vroeër gesê persent f beteken swaai punt waarde, wat reële getal. Iets met 'n desimale punt, wat nie 'n heelgetal. Wat dink jy van hierdie program is probeer om my te wys op die skerm? Ja? GEHOOR: Die resultaat van een oor 10. DAVID J. MALAN: Ja. Wat is die gevolg van 'n gedeel deur 10. Reg, want almal van julle het waarskynlik grootgeword met die wete dat die een oor die 10 is wat? Ja, dit is net 1/10 of 0,1. Reg? So laat ons sien wat dit werklik is. So laat my gaan voort en behalwe hierdie. Laat my af hier gaan. Maak onakkuraatheid dot streep onakkuraatheid, en kennis, ook in 'n Linux-omgewing, het jy nie moet tik onakkuraatheid en neem die hele dag lank. Algemeen, as jy Tab getref is, is dit sal jou denke klaar vir jou, gebaseer op die woorde wat beskikbaar in die huidige gids. OK. So jy was reg. Een gedeel deur 10 is, in werklikheid, 0,1. Maar ek is 'n bietjie nuuskierig. En dit blyk printf ondersteun sommige kenmerke waardeur jy meer as kan spesifiseer die standaard aantal desimale punte. So as ek wil 10 desimale sien punte wat ek kan doen persent, vir die plekhouer simbool, dot 10 vir, gee my 10 desimale punte, en dan nog swaai punt waarde, en as 'n eenkant, wat is hierdie backslash N blykbaar hou ons die gebruik van? Dit blyk dit is 'n simbool vir 'n nuwe reël. Dit is die baie duidelike manier sê aan die rekenaar, beweeg die muis na die volgende lyn nadat jy klaar is. En ons sal sien wat gebeur wanneer ons dit nie doen nie. Laat my heropstel maak onakkuraatheid. Dot nou streep onakkuraatheid. OK. Nog reg is. Een gedeel deur 10. Nou Ek kry 'n bietjie nuuskierig, al is. Wat as ek kyk 20 desimale uitwys, heropstel, tik, en as 'n eenkant vir spoed, kan jy ook gebruik jou op en af ​​pyltjies om blaai deur jou geskiedenis, so jy hoef nie te hou tik hierdie opdragte, te betree. Huh. Ek het nie besef dat in graad skool. Alle reg, so laat my sien soos 29 plekke uit. Miskien is dit net 'n gelukskoot. Miskien is my rekenaar optree vreemd. Dit is nie 'n ding, reg? Dit is om iets te doen deterministisch. So maak onakkuraatheid. OK, dit is deurmekaar. So, wat gaan aan? So glo jou onderwyser gelê aan julle almal van hierdie tyd vir redes wat ons sal sien voor lank. Maar laat ons eindig met 'n ander program. Dit is 'n bietjie programme iemand het 'n paar jaar gelede, en dit is eintlik deel van 'n wedstryd. Niemand eintlik skryf kode soos hierdie, en as jy dit doen, dit is stilisties 'n probleem. Maar mense doen dit vir bragging rights. Om te skryf die mees verwarrende soek program wat nietemin iets interessant. En die nota het ek gedink ons ​​wil laat op vandag voor Colton speel ons hier, is om hierdie program te hardloop, wat, selfs in net die gebruik van C in hierdie teks-gebaseerde omgewing, gee ons hierdie. Dammit. [Gelag] Staan. [Onhoorbaar] c Dash l m. Jy gaan die magiese sien inkantasie wat ons sal sien voor lank. [Onhoorbaar] Alle regte. En nou kan jy selfs dinge soos hierdie te doen nie. Dit is dit. Vir CS50 ons, sal jy sien op Vrydag. [Speel van musiek] [Applous]