[Speel van musiek] David Malan: Alle reg dit is CS50 en dit is die einde van die week een. So ek wil graag my voormalige te stel advisee, Andel Duff, wat nie net maak iPhone 5 staan, sowel as die kateder, maak hy ook motors. ANSEL DUFF: Hoe gaan dit, almal? Ek wil net 'n bietjie te vertel bietjie oor Formule SAE, waarvan ek is die kaptein. Dit is 'n MIT-span. Ek wil net vir jou sê ouens 'n bietjie oor dit en hopelik 'n paar belang genereer. So laat my net loop deur 'n paar dinge oor ons span. So ons is heeltemal student run, waarin al van die lede ontwerp, boots, toets, en vervaardiger 'n subsisteem van die motor. Ons het ons eie masjien koop en motorhuise en N52-- of jammer, N51-- wat dieselfde gebou as die MIT Science Museum. En ons is die volk dat die motor ry. Daar is 'n nasionale kompetisie in die begin van die somer, en dan is daar kleiner skietery kompetisies deur die jaar. En dan doen ons bestuurder opleiding dae te kry nuwe lede vertroud. Ons bou dae op Saterdae 11:00-20:00. Middagete en aandete sorg van, van Bertucci en Bean Town onderskeidelik. Ons het 'n weeklikse vergadering en seminaar wat vir kursus krediet. Wat is nuut van hierdie semester, en dit sal ook vir die volgende semester, sodat jy kan steek-reg vir daardie. En dan het ons ontwerp, winkel, en CAD dae gedurende die week, terwyl lede sal onafhanklik CAD dele, om voorraad ensovoorts. So vir elektriese ingenieurswese aan die span ons het ons aantrekkingskrag, hoë spanning stelsel, wat loop teen 'n nominale 300 volts, wat insluit motors, motor beheerders, en battery pakke. Dan het ons 'n lae spanning stelsel, wat strek op 12 volts, wat insluit beheer, kan nodusse, die brein boks, en die paneelbord. Sover CS gaan, ons doen het die webwerf onderhoud dat ons vir die gebeure hoef gedoen, lidmaatskap veranderinge, nuwe foto's, en PR materiaal. En dan het ons kode wat beheer die motor vir ons vastrapbeheer, bekendstelling beheer, stamp beheer, wringkrag vectoring, en regeneratiewe remstelsels, wat hardloop gewoonlik in MATLAB, Simulink en LabView. Vertel 'n bietjie oor die motor. So dit is ongeveer 500 pond. Dit is reëls beperk tot 85 kilowatt. Dit het 2 EMRAX 207 motors in die terug, een vir elke agterwiel. Dit het spesiaal gebou battery packs van Prismatiese A123 sak selle, altesaam 300 volts en 5.6 kilowatt uur. En dit is direkte ry met 'n 2,64-1 ry verhouding. Hier is 'n paar foto's wat ons het dit by die kompetisie. Hier is die rug, neuskas, en hier is die motors, die groot swart skywe onder die et mens manus. Hier is 'n skyfie wat ek getrek uit ons kompetisie skema. En dit is net vergelyk ons ​​motor tot 'n paar van kommersieel beskikbare motors, soos die KTM XBOW, Ariel Atoom en Caterha M 7-280. As jy vertroud is met die prys, krag trek gewig, dollar per perdekrag, dollar per wringkrag, en ons motor waai hulle almal uit die water. As jy enige vrae het, neerskryf hierdie e-pos adres. Skiet ons 'n e-pos aan fsae@mit.edu. Ons is bly om te praat oor enigiets wat jy wil. Harvard studente is soort van die minderheid op die span. Indien u enige vrae oor dat u nie skiet ons 'n e-pos, bly om te praat, en ek gaan terug na David kop. Dankie. Ek waardeer dit, ouens. [Applous] David Malan: Ansel spandeer die somer saam met ons hier op die kampus in CS50 hierdie somer. En benewens die werk op dinge soos die binêre bolle, hy eintlik baie deure oopgemaak eyes-- en myne in particular-- wat werklik die kruising van nie van hardeware en sagteware kan wees. In werklikheid 'n baie van die dinge wat hy net getoer jy deur uiteindelik geskep eerste in sagteware, en dan uiteindelik vervaardigde in die werklike wêreld in hardeware. So as jy belangstel in ondersoek dat kruising, dalk neem die groep. Nou intussen, dié van julle wat die ondersteuners van die tegnologie, en Apple produkte in veral weet dat daar was 'n paar aankondigings gister. Maar ons het gedink ons ​​wil wys jy die een wat kom uit 'n paar dae voor dit jy mag nie gesien het nie. Jörgen EGHAMMER: Jy weet, een keer in 'n rukkie iets kom saam wat verander die manier waarop ons leef. 'N toestel so eenvoudig en intuïtief gebruik dit voel amper bekend is. Bekendstelling 2015 IKEA katalogus. Dit is nie 'n digitale boek of 'n e-boek, dit is 'n boek-boek. Die eerste ding om daarop te let is geen kabels, nie eens 'n elektriese kabel. Die 2015 IKEA katalogus kom ten volle gelaai, en die battery lewe is die ewige. Die koppelvlak is 7.5 deur 8 duim, maar kan uitbrei tot 15 met 8 duim. Die navigasie is gebaseer op tasbare aanraking tegnologie wat jy kan eintlik voel. Inhoud kom pre-geïnstalleer via 328 hoë-definisie bladsye inspirerende huis meubels idees. Om mee te begin op, net raak en sleep. Regs na links om vorentoe te beweeg, links na regs agteruit beweeg. Let iets anders? Dit is reg. Geen lag. Elke kristalhelder bladsy vragte onmiddellik, maak nie saak hoe vinnig jy blaai. As jy wil 'n vinnige oorsig te kry, hou dit net in die palm van jou hand, en die gebruik van net jou duim, spoed blaai deur die inhoud. As jy iets vind wat jy wil red vir later, kan jy net boekmerk. En selfs as jy die aansoek sluit, jy kan maklik vind die boekmerk weer. Amazing. [Gelag] [Applous] So dit bring ons by die einde van die week een. 'N Paar aankondigings nou. So seksie is nou aan die gang. Gaan na hierdie URL hier iewers tussen nou en Vrydag middag eintlik spesifiseer of jy onder diegene wat minder gemaklik meer gemaklik, of iewers tussen in. Dit is tipies een van daardie dinge wat jy net soort van weet. En in die feit dat dié van julle wat minder gemaklik waarskynlik weet soveel, dié van julle wat meer gemaklik weet soveel, en weer as jy nie heeltemal seker wat van die emmers jy val in jy waarskynlik iewers tussen in. Maar wees verseker jy kan wissel na 'n paar weke indien nodig. Intussen, vir die komende week ons artikels per se begin nie, maar super afdelings, wat is oop vir alle studente. Eerskomende Sondag by 'n plek te word op die kursus webblad aangekondig ons een vir sal hê diegene wat minder gemaklik, asook een vir diegene wat meer gemaklik. En dié iewers tussen kan kies watter een van die twee, of beide as jy wil, om te sit in op. En die fokus van die sal uiteindelik op C wees, wat ons sal voortgaan om ons gesprek van vandag. Probleem gestel 0 intussen is hopelik in jou hande. Amptelik as gevolg van môre, Donderdag middag. Tensy jy kontant in een van jou 5 laat dae, wat dit sou bring tot Vrydag middag. Probleem stel 1 intussen sal wees geplaas op die kursus se webblad. En dit sal wees om ons eerste inval as 'n klas in C. En dat die probleem gestel spec sal loop jy deur 'n groot deel van die meganika van wat Ons het begin praat oor op Maandag, en ons sal voortgaan om te praat oor vandag. C, Linux, die CS50 apparaat, al van daardie sal jy wag in die spesifikasie. Kantoorure intussen aan die gang is, in die voorgraadse eetsaal. Kop aan hierdie URL hier om die te sien skeduleer vir vanaand en môre, As jy wil deelneem. Vrae intussen, sodat jy het om vrae te vra asynchroon, 24/7, besef jy nie beperk tot artikels en kantoor uur, maar eerder die hulpmiddel hier, CS50 Bespreek by daardie URL sal die kursus se aanlyn wees bord sagteware, via wat jy vrae kan vra klasmaats en ook personeel. So in gedagte hou dat hulpbron asook. Intussen het 'n tradisie begin hierdie Vrydag. Soos jy dalk skrams het uit verlede Woensdag se teaser video, ons het 'n tradisie mees elke Vrydag gedurende die eerste kwartaal van die neem van 'n 50-studente en personeel na 'n plaaslike restaurant genoem Vuur en ys, waar ons tipies verbind deur 'n paar alumni of vriende van die industrie om in die algemeen streef maak 'n groot klas kleiner voel. So dit is 'n heeltemal gemaklik middagete. 'N Klomp van ons, die personeel sal veral musikale stoele speel en gesels met studente oor 50, die lewe buite van 50, lewe in die toekoms, die werklike wêreld, Ek praat oor werksgeleenthede saam met vriende in die bedryf. So as jy wil ons aan te sluit hierdie Vrydag, die hoof van hierdie URL hier. Ruimte is beperk, maar ons sal dit doen recurringly regdeur die termyn. Kop daar te cs50.harvard.edu/rsvp. En as jy dit nie kry nie in hierdie tyd, nie te bekommer nie. Ons sal dit weer doen in die komende weke as well. So dit is die prentjie ons verlede week geverf, en jy het waarskynlik rondspeel in dusver. Maar laat ons probeer om dit nou te koppel na wat ons gaan vandag om te doen en verder. Kan ek 'n vrywilliger? Alle reg, of 'n paar. Hoe gaan hier op die einde, in die blou hemp. Kom op, wat is jou naam? Alana: Alana. David Malan: Alana. So Alana, net vir 'n moment-- lekker om te voldoen you-- gaan die rol te speel van hierdie funksie hier. Die pers blok ons ​​het genoem wat tot dusver 'n funksie. So wat ek gaan om te gaan voor hier en bied Alana is 'n bietjie naamkaartjie te maak duidelik watter rol jy speel. So moet jy dan die seggenskap blok. As jy wil om voort te gaan en sit dit op. En ons gaan hou hierdie super eenvoudig. As die doel aan die hand is eenvoudig nou te implementeer met Alana, hierdie sogenaamde sê blok, hier is hoe dit gaan werk. Ek have-- kom ons noem dit 'n argument of parameter, dit is regtig net 'n skoon vel papier. En dit is wit soort herinner wees van die wit blokkie waarin jy woorde kan skryf. Intussen gaan ek hier gaan. Ek gaan om voort te gaan en skryf H-E-L-L-O komma wêreld. En nou het ek, as sê die programmeerder, doen nie eintlik weet hoe om iets te sê. Ek kan kom met die woorde, maar ek doen nie noodwendig weet hoe om myself te druk mondelings of op die skerm. En ja, wat ek gaan te doen, is om hierdie stuk van funksies, wie se input-- of argument, soos ons dit sal noem, Ek het op hierdie stuk paper-- geskryf en ek gaan dit uit te kontrakteer. En inderdaad is dit die rol wat funksies in 'n programmeertaal kan speel. Iets soos die sê blok uitgekontrakteer kan word aan iemand wat regtig weet wat sy of hy praat. So as jy stap oor hier vir 'n oomblik, Ek gaan hierdie insette te gee aan Alana, en vra dat jy sê dit insette. Alana: Hello, world. David Malan: Dit is dit. Sodat daar is 'n funksie. Nou kan ons dit 'n bietjie meer te neem, Ons kan 'n stap vorentoe neem hier. Want dit was duidelik underwhelming. So laat ons nou sit om dit te iets wat 'n bietjie meer gesofistikeerd. So dit is natuurlik ons ​​C-weergawe. So nou as jy wil om dit te neem een af, wat naamplaatjie af, en laat ons 'jy sit op 'n nuwe naam. Maar fundamenteel jy dieselfde rol speel, dit gebeur net so te word genoem printf nou. Die storie is, natuurlik, gaan waarskynlik be-- net soos underwhelming-- is gaan om die volgende te wees. Jy is nou die funksie printf. Ek is die oproeper, of die programmeerder, wat wil op die skouers van om op te staan mense in die verlede soos jy, wat reeds uitgepluis het hoe eintlik skryf iets neer. En so hierdie tyd, eerder as sê dit laat eintlik gebruik ons ​​die skerm hier. So as jy wil om te stap hier, ek gaan weer hierdie slaag as insette te my printf vriend. As jy voor kan gaan en druk wat op die skerm, eenvoudig deur 'met jou vinger op die swart skerm. Uitstekend. Alle reg, sodat baie van die spanning vir hoe dit gaan om te speel. So nou, laat ons neem dinge op een finale kerf, as ons kon, soos volg. So dit is 'n C program soos ons sê die laaste keer. En dit net doen wat jy gedoen het, is dit druk uit na die skerm, hallo, wêreld. Selfs al is daar is duidelik 'n baie van steurende dinge daar. Maar laat ons dinge op 'n kerf en stel hierdie weergawe, wat onthou was die derde weergawe wat ons geëindig met die laaste keer. En nou is daar duidelik twee gebruike van printf. Daar is 2 oproepe Alana in hierdie geval vir printf, maar daar is ook 'n oproep na 'n ander funksie. Wat is die funksie duidelik? Getstring. Kan ons nog 'n vrywilliger? OK, kom op. Wat is jou naam? JAVIER: Javier. David Malan: Javier, kom op. So Javier se rol is op hierdie stuk papier. Watter Ek gaan generies bel s. En dit is 'n veranderlike, dit is string-tipe, soos geïmpliseer deur daardie tweede lyn in die middel is daar. En ek wil jou om te gaan vir my 'n string. Kop spesifiek na die orkes afdeling en kry vir my die naam van iemand, en terug te kom met 'n veranderlike wat daardie waarde. Dit kan iemand wat jy wil wees. Hier gaan ons. Alle reg, Javier is die naam neer te skryf. Alle regte. Ons kan almal seker raai hoe dit gaan om te speel. Ons is dalk belaboring die punt van wat 'n funksie doen nie, maar nietemin baie dankie. So Javier het teruggekeer hierdie string hier, wat nie heeltemal sien, Jonathan is die string dat ons gekry het. So nou wat ek eintlik gaan te verskaf aan Alana al is iets wat 'n bietjie anders. Omdat in hierdie weergawe van die program, eerste daar is jou naam. So het die eerste argument Ek moet Alana te voorsien met gaan wees letterlik jou naam. Alle reg, so eenvoudig soos dit Ek sou dit handig om jou. En as ek skryf die volgende argument, as jy wil om voort te gaan en skryf dit op die bord, laat ons gaan voort en doen die laaste voorbeeld hier te maak duidelik wat uiteindelik móét gebeur. So sê jou naam, skryf dit in die rigting van die top As jy nie omgee nie, net sodat Ons het plek vir 'n sekonde lyn. Want die laaste ding wat ek gaan nou u voorsien is nie een nie, maar twee stukke papier. Alle regte. H-E-L-L-O komma en dan 'n leë lyn. So wat ek oor Alana nou oorhandig is iets wat 'n bietjie anders. Nie net is sy kry dit, waar vul die leë verteenwoordig dat percent-- wat was die plekhouer ons het al met behulp? Ja, so persent s. Intussen gaan ek slaag haar in 'n tweede argument wat is presies wat Javier opgespoor van Jonathan. So laat my gee u hierdie twee. As jy wil, gaan voort en druk daardie effek. Wat uiteindelik gebeur dit is nou, Alana weer speel die rol van printf. Javier speel die rol van GetString. So wat jou aandenking wees. En uiteindelik wat gebeur, ten spyte hierdie hello-- yep voort en komma gaan. Alana: Het ek hierdie nog of nee? David Malan: Yep, jy ontvang hulle albei gelyktydig. Dus is die idee is dat jy kan nou draai die bladsy die tweede te hanteer van die twee insette. So dit is net by die huis die hamer wys dat terwyl Alana uitgevoer hierdie groen lyn hier, en dan Javier het hierdie een vir ons en terug te keer na my iets Ons bel s, maar dit was regtig net dat die stuk papier van sy eie. En nou Alana het die derde lyn gedoen. En selfs al is al hierdie lyk so ongelooflik kriptiese miskien met die eerste oogopslag, is dit regtig is so eenvoudig soos dit. Verby insette rondom, kry uitgange, óf fisies terug oorhandig iets, of sien 'n newe-effek soos hierdie. Iets visueel geskryf op die skerm. So laat ons gaan voort en dankie Alana en Javier, wat hier vir saam met ons hier. [Applous] So laat ons nou as vanselfsprekend aanvaar net hoe eenvoudig al wat kan wees. En laat ons voortgaan om werklik doen iets in die werklike kode. So op die skerm hier is 'n kiekie van die sogenaamde CS50 toestel. En as jy moes op, as 'n 02:00 op Woensdag middag, sommige maat verduidelik wat die CS50 toestel is, Hoe sou jy dit in 'n sin te definieer? Enige een sin? Ja? STUDENT: Dit is soos 'n program dit maak almal se rekenaar loop met dieselfde stelsel. David Malan: Goeie! Dit is 'n program wat dit moontlik maak om almal se rekenaar uit te voer met dieselfde stelsel. Dit is soort van jou eie afskrif van 'n bedryfstelsel stelsel wat gebeur met word genoem Ubuntu Linux. En dit effektief loop binnekant van 'n venster op jou eie Mac of PC, sodat hierdie manier reg uit die hek in week 1, almal hier in die klas het toegang tot die dieselfde gereedskap, dieselfde opset, en daar is geen leer kurwe spesifieke 'n Mac of 'n rekenaar in die besonder. Nou het ons oopgemaak, binnekant van die CS50 toestel op Maandag, hierdie program hier. Dit gebeur gedit genoem te word. Maar dit is eintlik net 'n grafiese redakteur. Dit is iets soos Notepad of teks Wysig op Windows of Mac OS onderskeidelik. En ek het voorgestel dat daar werklik drie belangrike dele van hierdie skerm. Die top-span is waar jy sou jou kode te skryf. En dit is waar ons spandeer baie van ons drie voorbeelde in Maandag se lesing. Die onderste ons genoem wat, hierdie swart venster, ja? STUDENT: Vertalerkonstruksie? David Malan: Compiler ons verkry deur middel van die venster. Maar meer algemeen. Ja, dit was net 'n terminale venster. Dit is 'n eeue-oue term wat net beskryf in wese 'n knip vinnige, wat jare gelede gebruik om te wees op een van die groot CRT styl monitors. Maar deesdae is dit soort virtuele in sagteware. En die terminale vensters Kom ons ons tik opdragte. Dit soort van die vereenvoudigde weergawe van die gebruikerskoppelvlak of UI. Dit is nie 'n grafiese user of GUI, dit is 'n teks-gebaseerde koppelvlak of 'n command line interface. En inderdaad dit is waar uiteindelik Ek was in staat om 'n kode te skryf. Sodra ek 'n paar kode geskryf het egter onthou dat ek gebruik word om hierdie opdrag. En as dit die naam soort aandui, laat my toe om 'n te maak program genaamd Hello. Maar wat is dit regtig doen? Wel maak, is om my insette, my bron-kode, en dit herlei na wat uiteindelik? Voorwerp-kode. En voorwerp-kode is net 'n fancy manier om te sê nulle en ene. En dan keer ek wou daardie voorwerp kode uit te voer, keer ek wou om te slaag as insette wat nulle en ene in my rekenaar se brein, die sogenaamde CPU of sentrale verwerking van eenheid, Ek het die program uit te voer. Maar dit was nie heeltemal 'n eenvoudige op Maandag as net dubbel kliek sommige ikoon. Wat plaas het ek het om te doen om 'n program uit te voer? Wat was dat die tweede gebod? Ek hoor 'n bietjie houe? Ja, ja? STUDENT: Dot streep en naam van die program. David Malan: Presies. Dot streep en die program se naam. Nou wat het dit beteken? Wel dot is net 'n manier arcane sê die huidige gids. Wat ook al die gids jy in is verwys as, word verteenwoordig as dot. Die streep is net wat jy gesien het in Mac OS en Windows vir die jaar, dit is 'n skeiding tussen 'n gids of gids en die res van 'n paar naam. In Windows dit gebeur om te gaan agtertoe, in Linux en Mac OS dit gebeur vorentoe te gaan. Maar dit is net die skeiding, so dit is net 'n vervelige sintaktiese detail. Die sappige deel van die kursus is die naam van die program, Hello. En dit is wat geskep maak vir ons. Dit outputted die lêer vir ons. Maar hoe het ons by die punt? Kom ons vra nou die vraag, wat was werklik hier aan die gang is, ten minste met betrekking tot 'n paar van hierdie sintaksis? So in 'n sin of so, hoe het ons weg te verduidelik hierdie eerste lyn wat uitgelig in groen? Wat was die eerste lyn te doen, met betrekking tot my program? Ja? STUDENT: [onhoorbaar]. David Malan: Sê dit weer doen? STUDENT: ingesluit en af ​​te laai afgelope funksies [onhoorbaar]. David Malan: Goed. Insluitend, sal ek nie sê aflaai nie, maar kom ons sê insluitende funksies wat mense het in die verlede geskryf is. En daardie funksies geïmplementeer iewers in my rekenaar. Iemand het 'n lêer jaar gelede, en dat 'n lêer iewers binnekant van die CS50 apparaat, of op my hardeskyf meer in die algemeen. En so hierdie lyn is in wese sê, gaan vind dat die lêer, standaard I / O dot h, en kopieer en plak die inhoud hier op die top van my lêer sodat ek nie hoef te doen met die hand myself. En onder die sappigste stukke binnekant van die lêer ons beweer was wat funksie? Watter funksie het ons gesê verklaar of wat in standaard I / O dot h waarskynlik? Printf, reg? Ons het nie printf op skryf Maandag, is dit net bestaan ​​het. Baie soos Alana het net op die verhoog en sy het net bestaan ​​en het geweet hoe om te trek iets op die skerm, so nie printf bestaan ​​vir baie jare. En so dit is hoe ons toegang tot dit. Nou as ons beweeg op hier, belangrikste was analoog ons Hy het aan die legkaart stuk genoem wanneer groen vlag gekliek in die wêreld van nuuts af. Dit is net soort van die standaard naam wat mense besluit sou verteenwoordig die standaard inskrywing punt na 'n program. Die stuk van programmeringskode wat kry eerste uitgevoer word. Intussen hierdie krulhakies is soort van soos die geboë vorm van 'n baie van die geel krap stukke. Hulle soort omsluit 'n hele n klomp van die instruksies saam. So is dit net soort bind 'n paar verwante funksies. printf van die kursus is 'n funksie wat druk op die skerm, as ons nou net gedoen het. Wat van hierdie hakies? Hoe sal jy define-- Selfs as jy nog nooit geprogrammeer voor, maar net op grond nou op 'n toenemende hopelik intuïsie, wat word die hakies vir ons doen hier? Of wat is hulle behoeftes? Ja? STUDENT: Hulle sê wat jy gaan om te druk met printf. David Malan: Ja, hulle sê wat jy gaan om te druk met printf. Of meer algemeen, is hulle rondom die insette van die funksie. So jy kan amper dink van die hakies as om soos die metaal clip op hierdie knipbord. Dit is wat hou, dit is wat gebruik gaan word om argumente te verskaf in die funksie, wat in hierdie geval is printf genoem. So in die algemeen byna enige tyd wat ons noem 'n funksie, Ons gaan 'n paar hakies te sien. Miskien met iets in dit, soos nou, miskien niks in dit. Maar dit is waar jy sal sit die insette of sogenaamde argumente na 'n funksie. Hier is een so 'n argument. Ek het alles uitgelig tussen die lyne, omdat dit blyk in hierdie taal genoem C, wanneer jy wil 'n te verteenwoordig string-- wat 'n woord of 'n frase of selfs 'n paragraph-- wat jy hoef te omring dit met dubbele aanhalingstekens. Nie aanhalingstekens, dubbele aanhalingstekens. En dit is presies wat ek gedoen het. Intussen is daar 'n funky simbool in die rigting van die einde is daar. Agteroorskuisstreep n. Wat het ons gesê dat verteenwoordig? Ja? STUDENT: 'n nuwe lyn. David Malan: Nuwe lyn. Reg, jy dit nie doen nie algemeen druk Enter wanneer jy wil die program uit te spoeg om 'n nuwe lyn. Eerder jy sê dit uitdruklik met hierdie weliswaar arcane stuk van sintaksis, agteroorskuinsstreep n, wat jy wil 'n nuwe lyn te gaan nie. Uiteindelik het die kommapunt. Ons het nie regtig praat te veel oor dit, en by verre dit die vloek van 'n paar wees van jou bestaan ​​vir die eerste probleem stel, wanneer jy net nie besef jy iets so dom vergeet het as 'n kommapunt. En in die algemeen om dit daar sal die probleem op te los. Maar wat is dit doen vir ons, sou jy sê? STUDENT: [onhoorbaar]. David Malan: Jammer? STUDENT: [onhoorbaar]. David Malan: Afwerking n verklaring gesê. Dit is soort van soos die tydperk by die einde van 'n Engelse sin, terwyl dit in hierdie taal C dit eindig 'n verklaring gesê. 'N opdrag van die ontwikkeling kode wat jy wil net om te sê, Ek is klaar met hierdie. Nou sien dit is die enigste een hier. So jy wil nie te kry in 'n gewoonte om kommapunte na elke geslote hakies. Byvoorbeeld is daar geen langs niet, en ons sal kom terug in die toekoms na wat nietig beteken. Maar in hierdie geval jou printf is 'n funksie, of 'n verklaring wat gebruik word, en so het ons wil hê dat eindpunt aan die einde van dit. En ek doelbewus pluk op C. En eerlik 'n baie tale soos C, C ++, Java, JavaScript, en enige aantal ander tale het 'n groot deel van hierdie soort sintaktiese besonderhede. Wat seker as jy nuut is tot ontwikkeling kan werklik jou laat val. En jy sal merk my woorde, sommige van julle sal het hierdie ervaring in kantoorure of laat in die nag werk op sommige p-stel, waar jou damn program net nie saam te stel, dit nie uitvoer nie, moet jy geen idee wat verkeerd is, dit heeltemal lyk logies korrek nie. En dit is omdat jy vergeet iets soos die slaan 'n kommapunt aan die einde van 'n paar lyn. Maar dit is die soort van dinge wat jy gaan onmiddellik leer om te sien. En inderdaad dit is die dinge dat die GR's en TF's het is soort van opgelei om te sien veel vinniger as jy. En so is dit net om te sê, as jy duik in die probleem stel 1 veral kry nie gefrustreerd deur hierdie dinge. Sodra jy soort van acclimatiseren aan die wêreld, wat jy begin om dinge te sien dat jy dalk nie sien met die eerste oogopslag die eerste week. So bron-kode is iets soos dit. Ons wil dit in te slaag die sogenaamde samesteller. En dat samesteller as ons gesê bied uitset bekend as voorwerp kode, die sogenaamde nulle en ene. Maar van daar af, het wat dit gee ons? Wel, dit gee ons hierdie patrone. En weer jou rekenaar, jou Intel binnekant, hierdie patrone verstaan nulle en ene. En soms die patroon verteenwoordig 'n werklike desimale getal soos ons gesien het verlede week, soms dit verteenwoordig 'n brief soos ons gesien het verlede week, soms dit verteenwoordig 'n opdrag, soos die druk om iets aan die skerm. So printf vir instance-- maar eerder, laat my rewind. Ons het al neem vir toegestaan dat diegene nulle en ene is vervaardig deur hierdie bevel maak. Maar maak nie 'n samesteller. Maak dit nie die ding in die middel dit is die vervaardiging van die nulle en ene. Eerder is om net 'n baie gerieflik vernoem program wie se doel in die lewe is in wese om uit te vind hoe om jou program saam te stel. En ons gebruik dit in hierdie eerste weke omdat dit net red ons 'n baie moeite. Maar wat maak werklik doen wanneer jy stel hallo, is, soos ons het verlede tyd, dit is soek op jou hardeskyf of in die huidige gids vir lêer wat glo? Hello.c, reg? Dit is net 'n soort van 'n verdrag. Dit is arbitrêr, maar dit is die manier waarop dinge is. Maak, as jy net die naam van 'n program wat nog nie bestaan ​​nie, dit gaan om te kyk na die bron-kode in 'n lêer by verstek beteken hello.c. En as dit bevind is, groot. Dit gaan daardie bron te omskep kode in voorwerp-kode vir jou. Maar elke keer as ek druk Enter na die uitvoer maak hallo, Het jy onthou my laaste keer dat 'n redelik lank en kriptiese volgorde van ander wit letters en karakters op die skerm? Wel, dit was die eintlike opdrag, die werklike samesteller, wat hardloop. So die werklike samesteller sal ons die meeste van gebruik die semester is iets genoem klang. Sommige van julle sal gebruik het Visual Studio voor of GCC, of enige aantal ander opstellers. Ons sal gebruik klang. En klang ons toelaat om werklik te sit dat die bron-kode kode beswaar. Wat beteken dit eintlik beteken in die praktyk? Wel laat ek gaan in een van my dopgehou vanaf die laaste keer. Binnekant van die CS50 toestel. En laat my voort te gaan en die skep van hierdie dieselfde lêer, sluit in standaard I / O dot h. Int belangrikste leemte. En ons sal terug te kom in die toekoms as na wat int beteken en wat nietig beteken. Maar vir nou, laat ons doen Hello World agteroorskuinsstreep n, net soos ons gedoen het op die bord. Laat my red van hierdie lêer genaamd hello.c. En nou as ek wil om dit te stel Ek could-- laat my zoom in-- run maak hallo betree. En dit was weer dat baie kripties lyn. Maar nou ten minste een woord waarskynlik spring uit by jou. Klang is dat die lyn wat ons gesien het voor. Nou is daar 'n baie ander dinge eerlik dat ons ons hande sal waai vir vandag. Maar daar is 'n paar onderafdelings, 'n paar karakters in hier wat van belang is. Maar ek gaan om voort te gaan en dit doen. Ek gaan eerste lopie hallo, net om te bewys dat dit werk soos dit was Maandag. Maar nou gaan ek die program te verwyder. En net soos wat ons gehad het om hierdie kort name laaste keer, die bevel vir die verwydering van iets is RM, verwyder, vul. Jy gaan 'n paar te kry redelik kriptiese vrae. Moeilik om te glo dat jy kan maak selfs hierdie vraag moeilik om te verstaan. Maar verwyder gereelde lêer hallo net middel te doen wat jy wil verwyder hallo. En ek kan voort te gaan en tik y vir ja, kom, en nou is dit weg. Wat beteken dit nou, As ek my skerm, is dat in plaas van doen maak hello-- jy weet wat, ek kry goed op hierdie. Ek gaan die vertaler te loop myself. Ek 'n program nodig nie uit te vind wat my lêer genoem word. Ek het hello.c, ek weet wat dit genoem word, Ek is duidelik in staat te tik nie. So ek gaan om voort te gaan en moenie kletteren hello.c Enter. Blyk te werk. En daar is geen bykomende uitset, omdat klang is die samesteller. Dit is wat die omskakeling van die bron-kode te nulle en ene. So as ek nou doen dot streep hallo Tik, hm. Nuwe fout boodskap vandag. So bash is net die naam van die flikkerende vinnige dat ons gebruik. Dit is 'n growwe oorvereenvoudiging, maar vir nou is dit al wat is, dit is die flikkerende vinnige. En dit is hoekom dit skree op ons. Geen lêer of gids is 'n bietjie meer eenvoudig. Maar ja, ek het daardie voorwerp kode. Maar die catch is, wat as ek tik die opdrag die inhoud van hierdie lys gids, en dit is wat? ls vir die lys. Daar is 'n klomp van die dinge in hier, waarvan sommige het met die toestel, soos my lessenaar gids, Downloads gids, Dropbox gids, en al daardie dinge. Maar wat is interessant is hello.c, wat Ek het 'n oomblik gelede met gedit. En wat is die snaaksste soek naam hier, Miskien is dit wat ons gedoen het nie sien laaste tyd glad nie? a.out, reg? So terug in die dag, is dit is net besluit dat wanneer jy 'n program saam te stel vir die eerste keer, en jy nie die naam gee nie van 'n lêer, kom ons noem dit 'n. En a.out beteken net dit was die opbrengs van die samesteller. So dit is 'n aaklige naam vir 'n program. Maar teen daardie logika, dot streep vir huidige gids, streep a.out, moet beteken daar is in werklikheid my Hello World program. Nou 'n bietjie opwarm oefening ook. As ek wil om dit te hernoem lêer, blyk dat jy skuif na 'n lêer van die een se naam na die ander. So mv a.out, en dan het ek kan dit noem hallo Enter. So dit is 'n Linux opdrag. DOS het hierdie jaar gelede, Windows het 'n terminale venster van 'n soort wat lyk soos hierdie, Linux en Mac rekenaars het hierdie flikkerende vinnige. Selfs al is die meeste van ons waarskynlik selde, indien ooit, gebruik dit. Maar wat ek gedoen het, is hardloop 'n program, wie se naam is MV, en ek het op voorwaarde dat dit met twee argumente, om so te praat. Twee insette. a.out is die oorspronklike naam. Hallo is die nuwe naam. So as ek nou doen dot streep hallo, Tik, wat bestaan. En as ek doen dot streep a.out, wat verwag jy moet ek sien? Bash, nie so 'n lêer of gids. Omdat ek net dit herdoop. So neem 'n bietjie gewoond raak aan. Maar die probleem stel 1 spesifikasie sal waarlik hou jou hand deur sommige van hierdie minutae. Want dit is 'n volledige intellektuele afleiding van die meer interessante idees aan die hand, wat is eintlik die skep iets uit van die kode. Maar laat ons nie een verandering nou tot hierdie program. Onthou dat dit die laaste keer dat ek iets gedoen het soos hierdie, printf jou naam. En inderdaad het ons net het hierdie op die groot skerm daar. En dan het ek string s kry GetString oop hakie, naby hakie. En hakie net snelskrif notasie vir hakies. So het GetString neem enige argumente? Geen insette nie, maar dit moet die hakies, want dit is wat die omskrywing die roeping van 'n funksie. So ek gaan om voort te gaan en probeer om te loop die samesteller van hierdie program nou. Klang hello.c, want ek het nie sy naam nou verander. En ek het 'n klomp van die foute. Kom ons zoom hier. As ek blaai weer, soos ek gesê het die laaste keer, na die eerste dieselfde fout dat ek die laaste keer. On line 6 van hello.c het ek 'n onverklaarde identifiseerder string, het ek bedoel standaard in? Ek het nie. Want wat fout wat ek gemaak het in hierdie program, as jy onthou van verlede tyd? Ja, ons moet die sogenaamde opleiding wiele dat ons net sal gebruik vir 'n paar weke. Maar ek nodig om dit te spesifiseer ook, iewers binnekant van die toestel, is 'n lêer wat ons geskryf het net 'n paar jaar gelede. Binnekant van wat funksies soos blykbaar GetString. So as ek nou terug gaan hier, vergroot, en re-run klang hello.c. Damn, nog 'n fout. Maar ons het nie gesien voor hierdie een. Hierdie een is 'n bietjie meer esoteriese om uit te vind. Maar dit is doelbewus op die skerm, want ons wou die storie te vertel. Wanneer jy stel hello.c, net soos die foto van voor voorgestel, jy net die omskakeling wat bron-kode te nulle en ene. Nou CS50 personeel 'n paar jaar gelede geskryf CS50.h, en 'n ooreenstemmende lêer, CS50.c. En ons, 'n paar jaar gelede, saamgestel daardie lêers in 'n lêer wat gebeur genoem te word CS50.o. Of dit herdoop kan word om 'n paar verskillende dinge. Maar dit is 'n eenvoudige manier dink oor dit. So het ons saamgestel CS50 se biblioteek in nulle en ene. Maar nêrens het ek verskaf wat ek wil my nulle te kombineer en een vir my Hello World program met die nulle en ene dat CS50 personeel het 'n paar jaar gelede in een volledige program. Al wat ek vermeld het deur skriftelik klang hello.c is stel hello.c. Ek het nie gesê klang te skakel in die nulle en ene dat CS50 personeel geskep vir 'n geruime tyd gelede. So dit is 'n maklike oplossing, stamp l vir skakel, CS50. En ons sal weer sien kort voor lank weer en weer. Maar nou sien daar was geen klagtes. So nou as ek hardloop dot streep hallo, nou is dit werk. Hoewel dit 'n bietjie misleidend want ek het net herskep wat lêer? a.out. So laat my rewind net vir 'n oomblik. Die program het ons net saamgestel het die drie reëls van die kode. Toe ek gehardloop hallo wêreld, hallo 'n oomblik gelede, het ek nie sien jou naam. En dit is omdat ek het die n ou weergawe van die program. Maar as ek wel hardloop dot streep a.out Gee, meld u naam, Rob, hallo, wêreld. Hm. Dit is soort van 'n fout. Waarskynlik bedoel om te sê Rob, reg? So, wat is die oplossing hier in die kode. STUDENT: [onhoorbaar]. David Malan: Presies. So ek moet net daardie finale tweak te maak sodat ek verby in 'n tydelike, soos 'n vul die leë, soos ons gedoen het 'n oomblik gelede. Maar persent s is nou in die leeg wat vul. So laastens laat openbaar 'n laaste detail sodat daar is geen magic. Ek gaan om voort te gaan en ontslae te raak van hellow. Ek gaan om voort te gaan en ontslae te raak van a.out. So nou het ek geen programme, net my bron-kode. En ek gaan 'n te hardloop effens langer opdrag, klang stamp o hallo hello.c Dash LCS50. Nou is dit besig om te sorteer van Weg in die een oor en uit die ander miskien. Maar net terg mekaar wat dit doen. Klang is die samesteller, stamp LCS50 doelbewus aan die einde doen wat in 'n sin? Skakels na die CS50 biblioteek. Gryp die nulle en Diegene wat die personeel het en crams hulle in my eie program. So het die laaste vraag aan die hand is, wat stamp o hallo waarskynlik doen, selfs as jy nog nooit gesien sintaksis voor? Uitdruk van 'n program wat nie die naam van die standaard a.out. Inteendeel, dit is die naam hallo. So nou is daar geen a.out. Geen lêer of gids, want ek uitdruklik gesê noem hierdie program hallo, sodat Ek kan nou tik in 'n naam soos daardie en het dit gedra. Nou eerlik, seun, is dat oninteressant te hê al wat om te onthou bietjie minutia, reg? So laat ons gaan voort en kry weer ontslae te raak van hallo. En laat ons nou terugkeer na 'n wêreld in wat is dit voldoende om te sê maak hallo. Maar dit is die magie wat maak vir jou doen, dit is die verveling wat dit doen vir jou. En as ons programme en probleme meer kompleks, maak, sal werklik jou vriend wees. Omdat nie te lank van nou af gaan ons programme wat geskryf is het nie met 'n lêer, maar 'n paar lêers, en maak die proses van outomatiseer die opstel van al wat vir ons saam. So nou druk. printf is die binnekant van hierdie lêer, standaard I / O dot h, wat ons reeds gesien het, maar daar is meer aan printf as dit. Daar is agteroorskuinsstreep n, maar daar is ook 'n klomp van die ander ontsnapping rye. En ontsnapping ry is net 'n fancy manier van iets sê wat begin met 'n back slash, nie 'n slash, 'n agteroorskuinsstreep, en nie 'n paar spesiale ding. En ons sal nie daarin woon nie op die meeste van hierdie, Maar hoekom is daar agteroorskuinsstreep dubbele quote, dink jy? Hoekom is daar hierdie vreemde volgorde van karakters, agteroorskuinsstreep dubbele quote, Hoekom kan dit nuttig wees? STUDENT: [onhoorbaar]. David Malan: Presies, reg? Dink terug aan ons hallo wêreld program wat ons gesien het nogal 'n paar keer nou, elke keer het ons gesien dat Hello World program wat ons gehad het dubbele aanhalingstekens binne waarvan hallo komma wêreld agteroorskuinsstreep n. Maar dink aan jouself, Wat gebeur as jy eintlik wou om uit te druk 'n kwotasie merk? Jou eerste instink kan wees, doen ek nie, weet hoekom ek dalk hier wil do--, ons kan 'n bietjie passief aggressief, hallo vriend. Ons wil dalk iets te doen. Maar hoekom is dit nou 'n probleem? Ignoreer die krullerige aanhalings opsy dat hoofrede vir ons gemaak outomaties. Hoekom is dit problematies? Presies. Want ons het soos 4 aanhalingstekens. Wel, die eerste een waarskynlik gaan met die tweede een, en miskien die vierde gaan met die derde een, of nie, ek bedoel ek is nie eens seker, of is die rekenaar gaan wees. Rekenaars weer opstellers weer, is redelik dom. Hulle sal net doen wat jy hulle vertel om te doen. En as jy nie ondubbelsinnig hulle gaan waarskynlik 'n fout om te gooi. As jy nie ondubbelsinnig hoe om te 'n grondboontjiebotter en jellie toebroodjie vreemde dinge kan kom. Dit is dieselfde idee. Voldoende is dit nou om te sê daar is 'n ander ontsnap rye, maar ons sal aan diegene kom voor lank. Wese die ontsnapping rye iets dat jy nie dalk in staat wees te maklik op die klawerbord, sonder verwarrend die rekenaar. Nou intussen het ons ' plekhouers in printf. Persent d, wat ook geskryf word In byna alle gevalle as persent i, is 'n plekhouer vir watter tipe data? Watter tipe waarde? 'N desimale getal. So eintlik ons ​​sal begin gebruik persent i want dit is 'n bietjie makliker, soos 'n heelgetal. Persent i. 'N heelgetal wat gebeur desimale te wees. Persent s ons reeds gesê het, is 'n plekhouer vir 'n string. Wat net 'n woord, 'n frase, 'n paragraaf, 'n opstel, wat ook al. Dit is 'n reeks van karakters van sommige lengte. En ons sal sien voor lank sommige van hierdie ander. Maar persent c is vir 'n enkele karakter. Persent f is vir 'n drywende punt nommer, soos 'n ware getal wat 'n desimale punt in, wat is natuurlik nie 'n heelgetal. En daar is 'n hele n klomp van die ander. Intussen is in C en in 'n baie tale, ons het verskillende data tipes. Verskillende tipes glas bakke as jy wil. Die bakkie het ek die laaste tyd was vir tafeltennis balle, maar ons kan ook verskillende stoor waardes soos karakters en stringe en heelgetalle in 'n houer, soos 'n veranderlike, en C het hierdie. Kar is die tipe van data, die aard van die veranderlike, in wat jy kan 'n karakter stoor. Float is 'n tipe van 'n veranderlike in wat jy kan 'n reële getal stoor. Int is natuurlik vir 'n int. En eerder belaglik naam van 'n lang lang is waar jy eintlik kan stoor 'n baie lang nommer, met nog meer syfers dan 'n tipiese int mag winkel. Maar ons sal terug kom kort voor lank. In CS50 dot h intussen die ander kop lêer wat ons gesien het 'n paar keer in gebruik is, is daar twee ander data tipes wat nie in C bestaan ​​tipies. Een is string, en ons sal sien in 'n paar weke wat snare regtig is onder die enjinkap. En een is Bool. En 'n Bool is 'n veranderlike wat kan slegs op sekere waardes. En net gebaseer op verlede week se verduideliking van nuuts af, en meer onlangs C, wat sou jy dink is die twee moontlike waardes vir sommige houer wat van die tipe Bool? Ja en nee. Een en 'n nul. Waar of vals. En inderdaad is dit die laaste wat geneig is konvensionele in 'n ontwikkeling wees taal, sê iets soos ware of vals. Intussen het die CS50 biblioteek kom met 'n klomp van die funksies dat die personeel geskryf vir jou, Behalwe net om 'n string. Ons het vooraf funksies wat kan 'n heelgetal van die gebruikers, 'n enkele karakter, 'n vlot, wat is net 'n aantal van die desimale punt. Kry 'n lang lang, 'n baie groot waarde van die gebruiker. Dus het ons net gesien in aksie in die vorm van GetString. Maar deur middel van hierdie funksies sal binnekort in staat wees om te skryf programme wat insette van die gebruiker. Intussen oorweeg hierdie program, en oorweeg hoe ons nou kan begin by te voeg om dit met 'n nuwe idees. 'N vinnige storm toer en dan sal ons sien op 'n sekere skryf 'n paar programme hand onsself. Voortaan as ons wil 'n toestand te implementeer, dit gaan nie om te lyk soos 'n mooi klein mooi legkaart stuk. Dit gaan 'n bietjie meer arcane kyk. Maar dit is die kanonieke struktuur van 'n toestand in C. Die woord as twee hakies, binnekant van wat gaan 'n soort te wees van Boole-uitdrukking. Nou is die streep streep in die middel, dit is op die oomblik soort van soos pseudokode kode plekhouer. Maar meer behoorlik, enige reël van die kode in C wat met streep streep begin is 'n kommentaar. Dit is soos 'n taai noot wat jy dalk sit op 'n opstel, gedruk op papier. Dit is 'n nota aan jouself. Dit het geen funksionele impak op die program. Dit is soort van 'n herinnering, is dit jou eie dokumentasie oor wat aangaan. So doen dit op die oomblik is 'n soort van 'n tydelike vir alles wat binne- van daardie krulhakies uiteindelik gaan om iets te doen. Intussen het jy twee vurke in die pad, 'n as anders bou soos hierdie. Jy kan, indien elseif, anders. Nou is dit die moeite werd om daarop te let, veral as jy het al Googlen rondom aanlyn hulpbronne uit nuuskierigheid, of as jy haal een van die kursus se aanbevole boeke oor C, sal jy sien dat mense baie van verskillende voorkeure vir hoe hulself uit te druk in die kode. Sommige mense hou van die te sit krulhakies as ek hier gedoen het. Sommige mense hou van die krullerige te sit draadjies byvoorbeeld hier. Sommige mense hou van die elses te sit hier en dan is dit hier. Daar is 'n aantal van maniere om te Skryf kode, en nie een van hulle is reg per se. Hoewel daar is 'n paar wat mooi verkeerd. Maar daar is no-- indien dit uiteindelik 'n baie godsdienstige debat. Trouens, een van die mees irriterende dinge oor rekenaarwetenskap is hoe uitgesproke rekenaar wetenskaplikes kan wees. En jy sal met verloop van tyd vind dat selfs jy persoonlike voorkeure ontwikkel hoe om jou kode moet kyk. Nie net tree, nie net die skep van die produksie, maar hoe dit esteties moet lyk. So, wat sal ons doen, is om te lei jou langs in die rigting van, vir nou ten minste, 'n standaard CS50 styl wat ten minste hou dinge uniform en maklik om te lees. Maar meer op daardie onderskeidings voor lank. 'N Boole-uitdrukking in C, as jy wou sê as hierdie toestand is waar en hierdie ander toestand waar, jy nie die woord skryf nie en, soos jy sou in Engels. Jy plaas gebruik ampersand-teken, om redes wat ons sal terug te kom. As jy wil om te sê of jy twee vertikale bars, wat op 'n Amerikaanse sleutelbord is oor die algemeen bo die Voer sleutel langs die agteroorskuinsstreep. En dit beteken net as hierdie toestand of die ander voorwaarde is waar dit doen. Intussen is daar hierdie mal ding, wat jy sal die geleentheid hê een keer in 'n rukkie gebruik. Maar dit is net 'n alternatiewe manier om jouself uit te druk. Dit, vir nou, laat ons stipuleer, dit is net 'n ander funky manier om Indien elseif, elseif, elseif, elseif. Dit is net formaat in terme van die gevalle, waar jy letterlik opsom die waardes wat jy dalk wil om te kyk vir. Intussen loops. Ons het 'n vergelyking van Krap met 'n lus. En ek gaan my hand te waai wat elkeen van hierdie dinge beteken. Maar let op dat 'n lus sal dikwels begin met die navraag vir. Of dit sal begin met die navraag rukkie. Of dit sal begin met die navraag doen, en eindig met die navraag rukkie. Maar wat ons is oor om te sien is dinge meer soos hierdie. Hier is, in die algemeen in C, hoe jy verklaar 'n veranderlike en gee dit 'n waarde. In C dit is nie voldoende nie, soos in Scratch, het jy net sê gee my 'n veranderlike genoem iets. Jy het C te vertel, en vertel jou samesteller, meer spesifiek, watter tipe waarde het jy wil om te sit in die glas bak. Is dit 'n heelgetal? As dit so is, jy het om te letterlik sê int en dan die naam van die veranderlike, dan 'n kommapunt. As jy in plaas wou string en 'n beroep dit is soos ek gedoen het my kode hier vandag, jy sou string s kommapunt sê. Sodra jy wil om dit te gee 'n waarde Jy kan dan gebruik om die gelyke teken, andersins bekend as die opdrag operateur. En sien hoe elke van hierdie reëls van die kode het die kommapunt aan die einde van dit. Maar eerlik dit net lyk 'n bietjie lelik. Hoekom kan ek nie sê aan die rekenaar, gee my 'n veranderlike en inisialiseer aan nul. Dit is, gee my 'n leë glas bak. Terwyl jy kan. En so een van die uitspraak noem jy moet stilisties maak oor die tyd is, die kode soos hierdie skryf jy, of jy soort van skoon te maak en te beïndruk mense deur die skryf van twee lyne as net een. En dit sal oorweeg word algemeen 'n meer elegante manier van die skryf van jou kode stilisties. Funksies wat ons is natuurlik gesien. Hulle gaan hierdie formaat te neem. Die naam van 'n funksie, sommige hakies, en dan miskien 'n paar dinge binne-in. Of jy kan gebruik van sien verskeie funksies kant mekaar, soos iets soos hierdie. Nou as 'n raaklyn, doen hierdie grap sin maak nou? [Gelag] Dit beteken nie dit is snaaks nie, maar dit nie dalk 'n bietjie meer sin. So nou, laat ons gaan in die CS50 toestel vir 'n oomblik. En laat my oop een teaser hier. En inderdaad een van die redes vir die bekendstelling van IKEA katalogus en flikker die prentjie van die iPhone 'n bietjie gelede was eintlik bind saam die feit dat net 'n paar jaar gelede, in 2007, hierdie stuk van die kode was vrygestel, wat een van die heel eerste implementering van 'n stukkie van die sagteware wat doen wat genoem jailbreaking. Vir diegene wat nie vertroud, jailbreaking iets soos 'n selfoon of 'n iPhone wese beteken besyfering hoe om dinge te doen met dit wat die maatskappy wat dit nie van plan is. Soos wat jy wil om seker te installeer sagteware wat nie in die app store, jailbreaking jou selfoon wat jy dinge doen soos wat en nog baie meer. Maar wat was groot pret in 2007-- en daar was dekades van die verskillende weergawes hierdie dinge het sedertdien, in alle vorme van languages-- is dat hierdie program hier, genaamd iUnlock, is eintlik geskryf in C. En so het ek trek die bron-kode vir die, net om te soort wys jou 'n paar van die die ooreenkomste met die konstrukte ons het bespreek tot dusver. Nou is daar 'n manier om meer kompleksiteit hier as ons het reeds gesien in die klas. Laat my blaai tot net 'n bietjie hier. Maar let these-- goed sien ons 'n paar things--, maar kennis van hierdie lyne hier insluitende standaard I / O dot h. En all-- lyn 24, please-- kennis standaard I / O dot h en 'n hele klomp van die ander lêers wat glo ander mense geskryf het. En as ons scroll down deur hierdie, bietjie arbitrêr, KENNISGEWING Ek weet nie hoe om te skryf al hierdie myself noodwendig nie, maar daar is as. So glo dit het 'n tak. En as ek blaai af 'n bietjie verder is daar 'n ander as. As ek blaai, ek dink rondom line 100 Ek het vir. So ek is nie heeltemal seker hoe dit werk nie, maar dit is 'n lus vir die wat gaan laat my Itereer sommige paar keer. En as ek blaai al die pad na die onderkant Ek sien dat daar 'n funksioneer hier genoem hoof, en 'n paar ekstra krediete Vir jou lees genot. So dit is net te say-- en ons sal sit hierdie aanlyn onder die kursus se bron kode today-- dat selfs sommige van hierdie toestelle wat ons as vanselfsprekend aanvaar, aan die einde van die dag is jy nog steeds die gebruik van hierdie basiese konstrukte wat ons het reeds die bekendstelling tot dusver. Dit is genoeg van daardie een. Alle reg, sodat nou, laat ons eintlik iets te bou. Kom ons gaan verder as iets soos hello.c, en maak dit, Ons skryf hierdie program hier. Ek gaan om voort te gaan en skryf 'n program met die naam adder.c, wie se doel in die lewe gaan wees soos my eerste super eenvoudige sakrekenaar dat net voeg 'n paar van die nommers. Nie, want dit is 'n harde probleem nie, maar omdat dit laat my toe om nou te bind saam 'n paar dinge. So ek gaan om voort te gaan en sluit standaard I / O dot h en CS50 dot h. Ek gaan om te sê int main nietig. En weer in die toekoms ons sal terug te kom na dit in hierdie konteks en leeg beteken. En nou gaan ek iets te sê soos printf, gee my 'n heelgetal. En nou op my tweede lyn, hoe druk ek myself so dat ek wil 'n veranderlike te verklaar wat gaan 'n int te slaan? Letterlik doen wat ek tik as ek wil 'n veranderlike wat slaan 'n int sou jy sê? int n gelyk getint. Seker nie, so wat werk. En net vir konsekwentheid met die kode wat jy sal sien aanlyn is, laat my verandering dit x, net omdat x is 'n algemene veranderlike naam te gebruik, ten minste in algebra. Laat my gaan voort en doen printf nou weer. Gee my 'n ander heelgetal. En nou gaan ek soort van leer uit daardie patroon, Ek gaan om te sê int y kry om GetInt. En ons het nie gebruik GetInt voor, maar net soos GetString gaan en kry 'n string, soos Javier het uit die gehoor, Net so doen GetInt begin flikkerende die vinnige. En effektief wag vir die gebruiker dit gee 'n heelgetal is, deur dit in te tik en slaan Enter. Nou laastens ek gaan doen hierdie, printf die som of-- en laat my fancy now-- persent i en persent i teenwoordig i uitroepteken agteroorskuinsstreep n. En wat dink jy ek gaan sit nou as die addisionele insette te printf? Ek wil nie te sê letterlik aanhaal unquote x. Ek wil na die klas in x en dan, en laat ons nou fancy en laat ons net aanvaar ons kan doen wat ons wil hê. Wat jy wil sê die volgende? x plus y. En inderdaad wat sal werk. Dit is minimaal programmeringstale doen basiese rekenkundige verstaan, En so gaan dit moet eintlik werk. So laat my gaan voort en maak adder in my swart en wit venster hier, Tik. Kriptiese lyn, maar geen fout boodskap, so dit is goed. Dot streep adder, gee my 'n heelgetal, 1. Gee my 'n ander heelgetal, 2. Die som van 1 en 2 is 3. Alle reg, sodat 'n redelik triviaal program, maar wat dit gedoen het? Dit het my toegelaat om 'n funksie te gebruik noem hier, bel 'n ander funksie hier, twee oproepe na GetInt, 'n derde oproep te printf, en dan die gebruik van hierdie plekhouers. So dit is 'n bietjie meer gesofistikeerd as die vorige keer. Maar wat as ek wil 'n bietjie liefhebber? Laat my gaan voort en nou doen. Laat my voort te gaan en die skep van 'n nuwe lêer genaamd voorwaardes nul. En ek gaan om te spaar 'n tyd vir klasse wille en net plak in daardie kode as 'n beginpunt. En nou is ek net gaan sit iets nuuts hier in die middel. So printf Ek wil graag 'n heelgetal asseblief. En al hierdie kode is beskikbaar op die kursus se webblad, jy hoef te tik nie dit alles in die klas as jy liewer nie. int, en nou gaan ek gebruik, in plaas van x en y, Ek gaan n te gebruik, wat waarskynlik die mees algemene naam vir 'n heelgetal in 'n rekenaar program. En nou, ek wil 'n om te doen bietjie oordeel hier. Ek gaan om te sien of n is groter as 0, dan Ek gaan printf-- Oeps om te sê, printf-- jy pluk 'n positiewe getal, uitroepteken agteroorskuinsstreep n. Maak dit. Anders gaan ek druk printf jy pluk 'n negatiewe getal. Nou voordat jy op my skreeu, laat ons hierdie program. Laat my gaan hier. En hoe stel ek 'n program genoem voorwaardes Dash 0? Maak voorwaardes Dash 0. Soort van 'n dom naam but-- dammit. OK, goed onderrig oomblik. Hoekom het wat breek? Wat het ek per ongeluk noem hierdie lêer? Jy kan soort aflei van die blad hier. So dit is nie sleg dat ek het dit gedoen, want dit sal dalk gebeur dat sommige van julle. So ek per ongeluk die naam van my bron-kode toestand 0. Maar my bron kode deur ooreenkoms moet wees in 'n lêer genaamd toestand 0 Dash c, of wat ook al dot c. So laat my regmaak. Net soos Microsoft Word ek kan gaan As te red en doen toestand 0 dot c. Nou net om netjies Ek is nie gaan om voort te gaan en te verwyder toestand 0, wat was my ou weergawe. En nou, laat ons maak toestand 0, Tik. OK, lyk goed. Toestand 0, Tik. Ek wil graag 'n heelgetal asseblief, 50, jy pluk 'n positiewe getal. Nou hoe negatief 50? Jy pluk 'n negatiewe getal. Hoe gaan nou, 0. Redelik seker 0 is nie negatief. So dit is 'n soort van 'n logiese fout. Hoe kan ek dit regmaak? Anders as n minder as 0, dit doen, anders Ons kan 'n drie manier tak hier het, printf jy opgetel 0. So nou as ek tik hierdie program, na die opstel van dit weer met grimering, en nou tik toestand 0, wat ek hier sien 0 gee my dat uitset. So waar gaan ons met hierdie? Wel, dit is baie maklik uit die oog te verloor van die bos vir die bome. En so laat ons tot die gevolgtrekking met hierdie 2 en 1/2 minute video wat uiteindelik 'n bietjie van 'n advertensie van Google, maar wat werklik getuig van wat selfs die gebruik van hierdie basiese gebou blokke kan ons uiteindelik een keer te doen ons het 'n bietjie van die ontwikkeling vaardig onder ons gordels. [Speel van musiek] SAROO Brierley (Voice Over): Dit was 26 jaar gelede, en ek was net oor te draai 5. Ons het na die stasie en het ons aan boord van ons trein saam. My broer het net gesê ek sal bly hier en ek sal terug kom. En ek het net gedink, goed jy weet, Ek kan net so goed gaan slaap en hy sal net maak my wakker. En toe ek wakker word die volgende dag, die hele vervoer was leeg op 'n weghol trein, 'n spook trein neem my Ek weet nie waar. Ek aanvaar uit na Australië, 'n Australiese familie. En ma het versier my kamer met die kaart van Indië, waarin sy sit langs my bed. Ek het elke oggend sien die kaart, en dus dit soort het die herinneringe lewendig. Mense sou sê, is jy probeer om 'n naald te vind in 'n hooimied, Saroo sal jy nooit vind nie. Ek sal geflits het van die plekke wat ek gebruik om te gaan, die flitse van my familie gesigte. Daar was die beeld van my ma, sit met haar bene gekruis, net kyk na haar geroep. Die lewe is net so hard. Dit was my skat. En ek was op soek na Google Map en besef daar is Google Earth as well. In 'n wêreld waar jy kan zoom in, Ek het begin om al hierdie gedagtes te hê en watter moontlikhede dat dit kon doen vir my. Ek het vir myself gesê, jy weet, jy het het al die fotografiese herinneringe en landmerke waar jy vandaan, en jy weet wat die dorp lyk. Dit kan 'n aansoek dat jy kan gebruik om jou pad terug te vind. Ek het gedink, en ek sal sit 'n dot op Calcutta stasie, en 'n radius lyn, jy weet, dat jy moet soek word om hierdie area. Ek soort van afgekom hierdie treinspore. En ek begin die volgende nie, en Ek het na 'n stasie wat dieselfde beeld weerspieël dit was in my herinneringe. Alles wat ooreenstem. Ek het net gedink yep, ek weet waar ek gaan. Ek gaan net die te laat kaart wat ek in my kop lei my en neem my terug na my tuisdorp. Ek het na die drumpel van die huis wat ek gebore is. En rondgeloop ongeveer 15 meter om die draai, daar was drie dames staan buite, aangrensend aan mekaar. En die middelste een tree vorentoe en Ek het net gedink dit is jou moeder. Sy het na vore gekom het, het sy my gedruk, en ons was daar vir sowat vyf minute. Sy gryp my hand en Sy het my aan die huis en het oor die telefoon, waar sy lui my suster en my broer wat om te sê, jy weet, jou broer het net al skielike verskyn soos 'n spook. En dan is die familie is weer herenig. Alles is alles goed, Ek het gehelp om my ma uit, Sy hoef nie te word weg slaaf. Sy kan die res lewe van haar lewe in vrede. Dit was 'n naald in 'n hooimied, maar die naald was daar. Alles is daar. Alles wat ons het in die wêreld is by die kraan van 'n knoppie. Maar jy het die wil te hê en die vasberadenheid om te wil om dit. [Speel van musiek] David Malan: Wonderlik soet getuigskrif net wat jy kan nou doen met die tegnologie. Ons sal u sien volgende week.