[Muziek] DAVID MALAN: Oke dit is CS50 en dit is het einde van een week. Dus ik zou graag willen introduceren mijn vroegere advisee, Andel Duff, die maakt niet alleen iPhone 5 staat, alsmede deze lessenaar, hij maakt ook auto's. ANSEL DUFF: Hoe gaat het, iedereen? Ik wil gewoon om je een beetje te vertellen beetje over Formula SAE, waarvan ik ben de kapitein. Het is een MIT-team. Ik wil gewoon om u te vertellen jongens een beetje over het en hopelijk het genereren van enige interesse. Dus laat me gewoon lopen door een paar dingen over ons team. Dus we zijn helemaal student run, waarin alle van de leden ontwerp, simuleren test, en fabrikant van een subsysteem van de auto. Wij hebben onze eigen werkplaats en garages, en N52-- of sorry, N51-- die hetzelfde gebouw als het MIT Science Museum. En wij zijn het volk dat de auto rijden. Er is een nationale wedstrijd in het begin van de zomer, en dan zijn er nog kleinere shootout wedstrijden gedurende het hele jaar. En dan doen we rijopleiding dagen te krijgen nieuwe leden kennis te maken. Onze build dagen zijn op Zaterdag 11:00-20:00. Lunch en diner zijn het verzorgen van, van Bertucci's en Beantown respectievelijk. We hebben een wekelijkse vergadering en seminar, dat is voor de cursus krediet. Die nieuw is met ingang van dit semester, en Het zal ook voor volgend semester, dus je kunt oversteken-reg voor. En dan hebben we het ontwerpen, winkel, en CAD dagen in de week, terwijl leden zal onafhankelijk CAD-onderdelen, om voorraad et cetera. Dus voor elektrische bouwkunde aan het team we hebben onze trekkracht, hoogspanningsinstallatie, die een nominale loopt 300 volts, waaronder motoren, motor controllers, en accu's. Dan hebben we een laag voltage systeem, dat loopt bij 12 volt, waaronder controles, CAN-knooppunten, de hersenen doos, en het dashboard. Voor zover CS gaat, we doen hebben website onderhoud dat hoeven we gedaan voor evenementen, het lidmaatschap veranderingen, nieuwe foto's, en PR-materiaal. En dan hebben we code die het controleert auto voor onze traction control, launch controle, dash controle, torque vectoring, en een regeneratief remsysteem, dat loopt gewoonlijk in MATLAB, Simulink en LabView. Vertel je een beetje over de auto. Dus het is ongeveer 500 kilo. Het is de regels beperkt tot 85 kilowatt. Het heeft 2 EMRAX 207 motoren in de back, een voor elk achterwiel. Het heeft op maat gemaakte accu's van Prismatic A123 pouch cellen, een totaal van 300 volt en 5.6 kilowattuur. En het is direct drive met een 2,64-1 aandrijving verhouding. Hier zijn een aantal foto's die we nam van het bij de concurrentie. Hier is de achterkant, neuskegel, en hier zijn de motoren, die grote zwarte schijven onder de et heren manus. Hier is een foto die ik trok uit onze competitie schema. En dit is slechts het vergelijken van onze auto naar een aantal commercieel beschikbare auto, zoals de KTM XBOW, Ariel Atoom, en Caterha M 7-280. Als u bekend bent met de prijs bent, macht Trek gewicht, dollars per pk, dollar per koppel, en onze auto blaast ze allemaal uit het water. Als u vragen heeft, noteer dit e-mailadres. Stuur ons een e-mail op fsae@mit.edu. We zijn blij om te praten over alles wat je zou willen. Harvard studenten zijn soort van de minderheid op het team. Als u vragen heeft over dat doe stuur ons een e-mail, blij om te praten, en ik ga terug naar David het hoofd. Bedankt. Ik waardeer het, jongens. [Applaus] DAVID MALAN: Ansel bracht de zomer werken met ons hier op de campus in CS50 deze zomer. En behalve aan dingen zoals de binaire bollen, hij eigenlijk echt opende onze eyes-- en mijn in particular-- wat werkelijk het kruispunt van niet die van hardware en software zijn. In feite is een groot deel van de dingen die hij net toerde je door bent uiteindelijk gecreëerd voor het eerst in de software, en dan uiteindelijk gefabriceerde in de echte wereld in hardware. Dus als je geïnteresseerd bent het verkennen van dat kruispunt, misschien wel het nemen van die groep. Nu ondertussen, die van u die zijn fans van de technologie, en Apple-producten in vooral weten dat er waren een paar aankondigingen van gisteren. Maar we dachten dat we zouden zien je er een dat kwam een paar dagen voor die u misschien niet hebben gezien. JORGEN EGHAMMER: Je weet wel, af en toe iets komt langs die verandert de manier waarop we leven. Een apparaat zo eenvoudig en intuïtief met behulp van het voelt bijna vertrouwd. Introductie van 2015 IKEA catalogus. Het is niet een digitaal boek of een e-boek, het is een boek-boek. Het eerste wat opvalt, is geen kabels, zelfs een voedingskabel. 2015 IKEA catalogus komt volledig opgeladen, en de levensduur van de batterij is eeuwig. De interface is 7,5 bij 8 inch, maar kan worden uitgebreid tot 15 bij 8 inch. De navigatie is gebaseerd op tactiele aanraking technologie die je daadwerkelijk kunt voelen. Content wordt geleverd met vooraf geïnstalleerde via 328 high-definition pagina's inspirerende woninginrichting ideeën. Om te beginnen met surfen, gewoon aanraken en slepen. Rechts naar links om vooruit te komen, links naar rechts om terug te keren. Merkt iets anders? Dat klopt. Geen vertraging. Elke kristalheldere pagina ladingen ogenblikkelijk, het maakt niet uit hoe snel je scrollen. Wilt u snel een overzicht te krijgen, gewoon houd hem in de palm van je hand, en met de duim, snelheid surfen op het gehalte. Als je iets vindt dat u wilt opslaan voor later, kun je gewoon een bladwijzer. En zelfs als je de toepassing te sluiten, kunt u gemakkelijk vinden de bladwijzer opnieuw. Geweldig. [Lachen] [Applaus] Dus dat brengt ons bij het einde van een week. Een paar aankondigingen nu. Dus snijden is nu in volle gang. Ga naar deze URL hier ergens tussen nu en vrijdag 's middags om daadwerkelijk te geven of u bent onder die minder comfortabel, meer comfortabel, of ergens tussenin. Dit is typisch zo'n dingen die je gewoon een soort van weten. En in feite degenen die minder comfortabele waarschijnlijk weet zo veel, degenen onder u die meer comfortabele weet zo veel, en weer als je niet helemaal zeker welke van die emmers je valt in je waarschijnlijk ergens tussenin. Maar wees gerust je kunnen ruilen na een paar weken als dat nodig is. Ondertussen, voor de komende week we niet secties per se starten maar super secties, die staan ​​open voor alle studenten. Komende zondag op een locatie te worden bekend gemaakt op de cursus website we zullen een voor hebben die minder comfortabel, en een voor die meer comfortabel. En die ergens tussen kan kiezen welke van die twee, of allebei als je wilt, om te zitten-in op. En de focus van deze uiteindelijk op C, waar we blijven onze gesprek van vandaag. Probleem set 0 ondertussen is hopelijk in jouw handen. Officieel moet morgen, Donderdag op de middag. Tenzij u contant geld in een van je 5 dagen te laat, die het zou brengen tot en met vrijdag 's middags. Probleem set 1 ondertussen zal zijn geplaatst op de website van de cursus. Dit zal onze eerste uitstapje als een klasse in C. En dat probleem stellen spec zal u door veel van de mechanica van wat we begonnen te praten over op maandag, en we blijven praten over vandaag. C, Linux, de CS50 apparaat dat alles zal op je wachten in de specificatie. Kantooruren ondertussen aan de gang zijn, in het undergraduate eetzaal. Ga naar deze URL hier om het te zien plannen voor vanavond en morgen, Als u wilt deelnemen. Vragen ondertussen, zodat u hebben mogelijkheden om vragen te stellen asynchroon, 24/7, besef je bent niet beperkt tot profielen en kantoor uur, maar deze tool hier, CS50 Bespreek op die URL zal online de cursus zijn bulletin board software, via welke U kunt vragen of vragen klasgenoten en ook personeel. Dus hou er rekening mee dat resource ook. Inmiddels is er een traditie begint deze vrijdag. Zoals u wellicht een glimp hebben opgevangen van afgelopen woensdag de teaser video, We hebben een traditie meest elke vrijdag tijdens de looptijd van het nemen van ongeveer 50 studenten en personeel naar een lokaal restaurant genaamd Fire and Ice, waar we meestal vergezeld door een aantal alumni of vrienden uit de industrie om in het algemeen streven om een ​​grote klasse kleiner voelen. Dus het is een heel informele lunch. Een aantal van ons, het personeel vooral, zal stoelendans spelen en chatten met studenten over 50, het leven buiten de 50, leven in de toekomst, de echte wereld, Ik heb het over kansen op werk met vrienden in de industrie. Dus als je zou willen om mee te doen deze vrijdag, het hoofd naar deze URL hier. De ruimte is beperkt, maar we zullen dit doen recurringly gedurende de looptijd. Ga er naar cs50.harvard.edu/rsvp. En als je niet in dit keer, geen zorgen te maken. We zullen het opnieuw doen in de komende weken ook. Dus dit is het beeld We schilderde vorige week, en je hebt waarschijnlijk al ploeteren in tot nu toe. Maar laten we proberen om dit nu aan te sluiten aan wat we gaan doen vandaag en verder. Mag ik een vrijwilliger? Goed, of meerdere. Hoe zit het hier op de einde, in het blauw shirt. Kom op, wat is uw naam? ALANA: Alana. DAVID MALAN: Alana. Dus Alana, voor slechts een moment-- leuk om je-- ontmoeten zal de rol van deze functie hier. De paarse blok we hebben genoemd dusver functie. Dus wat ik ga om te gaan vooruit hier en bieden Alana is een klein naamplaatje, om ervoor te duidelijk welke rol je speelt. Zo zult gij het woord blok. Als u wilt doorgaan en we deze op. En we gaan Houd dit super simpel. Als het doel bij de hand is gewoon nu te implementeren met Alana, deze zogenaamde zeggen blok, Hier is hoe het gaat werken. Ik have-- laten we noemen het een argument of parameter, het is eigenlijk gewoon een blanco vel papier. En het is wit tot soort denken zijn van de witte doos waarin u kan woorden te schrijven. Ondertussen ga ik hier gaan. Ik ga om te gaan en Schrijf H-E-L-L-O komma wereld. En nu heb ik, als zeggen dat de programmeur, niet eigenlijk weten hoe iets te zeggen. Ik kan komen met de woorden: maar dat doe ik niet per se weten hoe om mezelf uit te drukken mondeling of op het scherm. En dus wat ik ga te doen is dit stuk functionaliteit, waarvan input-- of argument, zoals we het zullen noemen, Ik heb op dit stuk van paper-- geschreven en ik ga het uit te besteden. En inderdaad dat is de rol die functies in een programmeertaal kunnen spelen. Zoiets als de inspraak blok kan worden uitbesteed aan iemand die echt weet wat hij of zij het over heeft. Dus als je stap over hier slechts voor een ogenblik, Ik ga deze input te geven aan Alana, en vragen dat u deze ingang zeggen. ALANA: Hallo, wereld. DAVID MALAN: Dat is het. Zodat er een functie. Nu kunnen we het een beetje meer te nemen, kunnen we een stap voorwaarts te nemen hier. Want dat was duidelijk underwhelming. Dus laten we nu deze om te zetten in iets een beetje meer verfijnd. Dus dit is natuurlijk onze C-versie. Dus als je nu wilt nemen dat eenmalige, dat naamplaatje af, en laten we u op een nieuwe naam. Maar fundamenteel je bent spelen dezelfde rol, het gewoon zo gebeurt te worden nu genoemd printf. Het verhaal is natuurlijk gaat waarschijnlijk be-- zoals is underwhelming-- ga naar de volgende te zijn. U bent nu de functie printf. Ik ben de beller, of de programmeur, die wil de schouders aan te staan mensen in het verleden net als u, die al bedacht hebben hoe om daadwerkelijk iets opschrijven. En dus deze keer, in plaats van zeggen dat het laten daadwerkelijk gebruik maken van ons scherm hier. Dus als je wilt naar stap hier, ik ga om ook dit doorgaan als input voor mijn printf vriend. Als je je gang kon gaan en te drukken die op het scherm, simpelweg door het tekenen met uw vinger op het zwarte scherm. Excellent. Oke, dus veel spanning voor hoe dat zou gaan om uit te spelen. Dus nu laten we de dingen nemen een laatste notch, als we konden, als volgt. Dit is een C programma zoals we al zeiden de vorige keer. En dit alleen maar doet wat je deed, het drukt om het scherm, hello, wereld. Hoewel er duidelijk veel afleidende dingen daar. Maar laten we de dingen nemen een inkeping en invoering van deze versie, die herinneren was de derde versie belandden we met de vorige keer. En nu is er duidelijk twee vormen van gebruik van printf. Er is 2 gesprekken naar Alana in dit geval voor printf, maar er is ook een oproep een andere functie. Wat is die functie duidelijk? GetString. Kunnen we nog een vrijwilliger? OK, kom op. Wat is je naam? JAVIER: Javier. DAVID MALAN: Javier, kom op. Dus rol Javier is op dit stuk papier. Die ik ga noemen generiek s. Nu is dit een variabele, het is van het type String, zoals wordt gesuggereerd door deze tweede lijn in het midden is. En ik wil graag dat je me halen een string. Specifiek hoofd naar beneden naar het orkest sectie en krijg me de naam van iemand, en kom terug met een variabele met die waarde. Het kan iedereen die je wilt zijn. Hier gaan we. Oke, Javier is het opschrijven van de naam. Oke. We kunnen allemaal wel raden hoe dit gaat om uit te spelen. We zijn misschien belaboring het punt van wat een functie is te doen, maar toch heel erg bedankt. Dus Javier heeft deze string terug hier, die niet helemaal zien, Jonathan is de string dat we hebben gekregen. Dus nu wat ik eigenlijk aan de hand Alana wel te voorzien is iets anders. Omdat in deze versie van de programma, de eerste is er uw naam. Dus de allereerste argument Ik moet Alana bieden met gaat worden letterlijk uw naam te vermelden. Oke, zo simpel is dat Ik zou dit je nageven. En terwijl ik dit schrijf de volgende argument, als je wil om vooruit te gaan en schrijf dit op het bord, laten we gaan vooruit en doen hier de laatste voorbeeld maken duidelijk wat er uiteindelijk moet gebeuren. Dus je naam, schrijf het in de richting van de top als je het niet erg, gewoon zo dat We hebben ruimte voor een tweede lijn. Want het laatste wat ik ga om u nu te voorzien van niet een, maar twee vellen papier. Oke. H-E-L-L-O komma en vervolgens een lege regel. Dus wat ik ga nu overhandigen Alana is iets anders. Niet alleen is ze het krijgen van deze, waar in de lege vulling vertegenwoordigt dat percent-- wat was de placeholder We gebruiken? Ja, dus procent s. Ondertussen ga ik voorbij haar in een tweede argument, dat is precies wat Javier opgehaald van Jonathan. Dus laat me je deze twee. Als je wilt, ga je gang en af ​​te drukken dat effect. Wat er uiteindelijk gebeurt is nu, Alana weer speelt de rol van printf. Javier speelde de rol van GetString. Dus dat zal uw souvenir zijn. En uiteindelijk wat er gebeurt, ondanks Dit hello-- yep ga je gang en komma. ALANA: Heb ik deze nog of nee? DAVID MALAN: Yep, je ontving ze allebei tegelijk. Dus het idee is dat je kan nu flip de pagina de tweede verwerken van deze twee ingangen. Dus dit is alleen maar om thuis de hamer wijzen dat terwijl Alana uitgevoerd deze groene lijn hier, en dan Javier deed dit voor ons en terug te keren naar me iets we s noemen, maar het was echt net dat stukje papier van zijn eigen. En nu Alana heeft deze derde lijn gedaan. En hoewel dit alles ziet zo ongelooflijk cryptisch misschien op het eerste gezicht, het is echt is zo simpel als dat. Passen ingangen rond, krijgen uitgangen, hetzij fysiek overhandigd iets terug, of het zien van een bijwerking als deze. Iets visueel geschreven op het scherm. Dus laten we verder gaan en bedanken Alana en Javier, die hier beneden was, voor bij ons hier. [Applaus] Dus laten we nu voor lief nemen hoe eenvoudig dat alles kunnen zijn. En laten we overgaan tot daadwerkelijk iets in de eigenlijke code doen. Dus op het scherm hier is een screenshot van de zogenaamde CS50 apparaat. En als je moest bij, als een 02:00 op woensdagmiddag, uit te leggen aan een aantal vriend wat CS50 apparaat, Hoe zou je het omschrijven in een zin? Iemand zin? Yeah? STUDENT: Het is als een programma dat maakt ieders computer uitgevoerd met hetzelfde systeem. DAVID MALAN: Goed! Het is een programma dat iedereen in staat stelt computer om te draaien met hetzelfde systeem. Het is een soort van je eigen kopie van een operationele systeem dat overkomt worden genoemd Ubuntu Linux. En het loopt effectief binnenin een venster op je eigen Mac of pc, zodat op deze manier recht uit de poort in week 1, iedereen hier in de klas heeft toegang tot dezelfde middelen, dezelfde configuratie, en er is geen leercurve specifieke naar een Mac of een PC in het bijzonder. Nu zijn we geopend, de binnenkant van de CS50 toestel op maandag, het programma hier. Het gebeurt gedit genoemd te worden. Maar dat is eigenlijk alleen maar een grafische editor. Het is iets zoals Notepad of tekst Bewerken op Windows of Mac OS respectievelijk. En ik stelde voor dat er echt drie belangrijke onderdelen van dit scherm. De bovenkant is waar je zou je code te schrijven. En dat is waar we veel van onze drie voorbeelden in de lezing van maandag. De onderste belden we wat, deze zwart venster, ja? STUDENT: Compiler? DAVID MALAN: Compiler we toegankelijk door middel van dat venster. Maar meer in het algemeen. Ja, het was gewoon een terminal venster. Dit is een eeuwenoude term die net beschrijft in wezen een knipperend prompt, die jaren geleden gebruikt om aan te zijn een van die grote CRT-monitoren stijl. Maar tegenwoordig is het een soort virtuele software. En de terminal vensters Laten we ons opdrachten in te voeren. Het soort van de vereenvoudigde versie van de gebruikersinterface of UI. Het is niet een grafische gebruikersinterface of GUI, het is een op tekst gebaseerde interface of een command line interface. En inderdaad dat is waar uiteindelijk Ik was in staat om wat code te schrijven. Zodra ik wat code al geschreven had, herinner me dat ik vroeger deze opdracht. En als het de naam soort doet vermoeden, kan ik een te maken programma genaamd Hello. Maar wat is het eigenlijk? Nou maak was met mijn input, mijn source code, geconverteerd naar wat uiteindelijk? Objectcode. En object code is gewoon een fancy manier om te zeggen nullen en enen. En dan een keer wilde ik om dat object code uit te voeren, zodra ik wilde passeren als input die nullen en enen in mijn computer hersenen, de zogenaamde CPU of centrale verwerkingseenheid, Ik moest het programma uit te voeren. Maar het was niet helemaal een eenvoudige op maandag als gewoon dubbel te klikken op een aantal pictogram. Wat in plaats daarvan moest ik doen om een ​​programma uit te voeren? Wat was dat tweede bevel? Ik hoor een beetje schuine strepen? Ja, ja? STUDENT: Dot slash en de naam van het programma. DAVID MALAN: Precies. Dot slash en de naam van het programma. Nu, wat deed dit betekenen? Goed punt is slechts een geheimzinnige manier zeggen de huidige directory. Welke map u zich in genoemd, wordt weergegeven als dot. De schuine streep is net wat je hebt gezien in Mac OS en Windows op jaar, het is een scheiding tussen een directory of de map en de rest van een naam. In Windows het gebeurt om te gaan achteruit, in Linux en Mac OS het gebeurt om vooruit te gaan. Maar het is gewoon de separator, dus het is gewoon een oninteressante syntactische detail. De sappige deel is natuurlijk de naam van het programma, Hello. En dat is wat maken voor ons gecreëerd. Het uitgestuurd dat bestand voor ons. Maar hoe komen we aan op dat punt? Laten we nu vragen de vraag, wat was echt hier aan de hand, althans met aanzien van enkele van deze syntax? Dus in een zin of zo, hoe hebben we wegredeneren deze eerste regel dat groen gemarkeerd? Wat was die eerste lijn te doen, met respect voor mijn programma? Yeah? STUDENT: [onverstaanbaar]. DAVID MALAN: Zeg het nog eens? STUDENT: Inclusief en downloaden verleden functies [onverstaanbaar]. DAVID MALAN: Goed. Inbegrip van, zal ik niet zeggen downloaden, maar laten we zeggen waaronder functies die mensen hebben geschreven in het verleden. En die functies zijn geïmplementeerd ergens in mijn computer. Iemand schreef een bestand jaar geleden, en dat bestand ergens binnen het CS50 apparaat, of op mijn harde schijf meer in het algemeen. En dus is deze lijn is in wezen zeggen, gaan zoeken dat bestand standaard I / O dot h, en kopieer en plak de inhoud ervan hier op de top van mijn dossier zodat ik niet hoeft te dat handmatig doen mezelf. En onder de sappigste stukjes binnenkant van dat bestand we beweerden was welke functie? Welke functie hebben wij zeggen werd verklaard of standaard I / O dot h genoemde waarschijnlijk? Printf, toch? We hebben niet te schrijven printf op Maandag, het is gewoon bestaan. Net als Alana kwam net op het podium en ze gewoon bestond en wist hoe te tekenen iets op het scherm, zo werkt printf bestaan ​​al vele jaren. En dus dit is hoe we er toegang toe. Nu, als we hier verder gaan, main was analoog we zei tegen de puzzelstukje aangeroepen als groene vlag geklikt in de wereld van Scratch. Het is gewoon een soort van de standaardnaam die de mens besloten zou het vertegenwoordigen standaard toegangspoort tot een programma. De brok van programmeercode dat wordt eerst uitgevoerd. Ondertussen deze accolades zijn net zoiets als de gebogen vorm van veel van die gele kras stukken. Het soort inkapselen geheel stelletje instructies samen. Dus het gewoon een soort van samenbindt sommige gerelateerde functionaliteit. printf natuurlijk is een functie die drukt het scherm, zoals we net gedaan. Hoe zit het met deze haakjes? Hoe zou u define-- zelfs als u hebt nooit eerder geprogrammeerd, maar alleen gebaseerd nu een stijgende hopelijk intuïtie, wat worden de haakjes voor ons doet hier? Of wat zijn ze rond? Yeah? STUDENT: Ze zeggen wat je gaat om af te drukken met printf. DAVID MALAN: Ja, ze zeggen wat je gaat om af te drukken met printf. Of meer in het algemeen, zij rondom de ingangen naar de functie. Dus je kunt bijna denken van deze haakjes als zijnde als het metaal clip op dit klembord. Het is wat houdt, het is wat zal worden gebruikt om argumenten aan in de functie die dit geval heet printf. Dus in het algemeen vrijwel elke tijd een functie noemen we, we gaan een paar haakjes te zien. Misschien met iets erin, zoals nu, misschien niets in. Maar dat is waar je zou zetten de ingangen of zogenaamde argumenten een functie. Hier is een dergelijk argument. Ik heb gewezen op alles tussen de aanhalingstekens, omdat het blijkt in deze taal genaamd C, als je wilt een vertegenwoordigen string-- dat een woord of een zin of zelfs een paragraph-- moet je omringen met dubbele aanhalingstekens. Geen enkele aanhalingstekens, dubbele aanhalingstekens. En dat is precies wat ik hier heb gedaan. Ondertussen is er een funky symbool in de richting van het einde daar. De backslash n. Wat hebben we te zeggen dat vertegenwoordigd? Yeah? STUDENT: Een nieuwe lijn. DAVID MALAN: Nieuwe lijn. Juist, je doet niet over het algemeen druk op Enter als u het programma wilt uit te spugen een nieuwe regel. Liever dat je het expliciet vertellen met deze weliswaar mysterieuze stuk van syntax, backslash n, dat U wilt een nieuwe lijn naar daar te gaan. Tot slot de puntkomma. We hebben niet echt praten te veel over dit, en veruit dit zal de vloek van sommigen van je bestaan ​​voor het eerste probleem ingesteld, als je gewoon niet te realiseren je iets zo dom bent vergeten als een puntkomma. En in het algemeen zetten het daar zal dat probleem op te lossen. Maar wat doet het voor ons, zou je dan zeggen? STUDENT: [onverstaanbaar]. DAVID MALAN: Sorry? STUDENT: [onverstaanbaar]. DAVID MALAN: Afbouw een verklaring. Het is een soort als de periode van het einde van een Engels zin, terwijl in deze taal C dat het beëindigen van een verklaring. Een instructie van de programmering code die je gewoon wilt zeggen, Ik ben klaar met dit. Merk nu dat is de enige hier. Dus je wilt niet in krijgen een gewoonte om een ​​puntkomma na elke gesloten haakjes. Zo is er geen naast vervallen, en we zullen terug te komen in de toekomst wat betekent void. Maar in dit geval uw printf is een functie, of een verklaring wordt gebruikt, en dus we willen hebben dat eindpunt aan het einde van het. En ik opzettelijk plukken op C. En gezegd veel talen zoals C, C ++, Java, JavaScript, en een willekeurig aantal andere talen hebben veel van deze soort van syntactische details. Dat zeker als je nieuw bent programmering kunt u echt struikelen. En je zal, let op mijn woorden, sommigen van jullie zal hebben deze ervaring spreekuur of laat nachts aan een p-set, waarbij je verdomde programma werkt gewoon niet compileren, het loopt niet, je hebt geen idee wat er mis is, lijkt volledig logisch juiste voor jou. En het is omdat je vergeten iets als het raken een puntkomma aan het einde van een regel. Maar dit zijn de soorten dingen die je bent zal meteen leren zien. En inderdaad, dit zijn de dingen dat en TF van de CA's hebben zijn soort opgeleid om te zien veel sneller dan jij. En dus dit is alleen maar om te zeggen, als je duik in probleem set 1 met name, niet gefrustreerd door dit spul. Zodra je een soort van wennen aan de wereld, je beginnen om dingen te zien die je misschien niet zie op het eerste gezicht deze eerste week. Dus de broncode is zoiets. We willen het overgaan in de zogenaamde compiler. En dat compiler als we zeiden biedt uitgang bekend als objectcode, de zogenaamde nullen en enen. Maar van daar, wat zegt dat ons? Nou, het geeft ons deze patronen. En nogmaals uw computer, uw Intel inside, begrijpt deze patronen van nullen en enen. Soms het patroon vertegenwoordigt een werkelijke decimaal getal zoals we zagen vorige week, soms het een letter staat zoals we zagen vorige week, soms vertegenwoordigt een instructie, als iets af te drukken om het scherm. Dus printf voor instance-- maar, laat me terug te spoelen. Hebben we zo voor lief dat die nullen en enen zijn geproduceerd door dit commando make. Maar zorg is niet een compiler. Maken is niet het ding in het midden dat is het produceren van de nullen en enen. Plaats te maken is gewoon een zeer gunstig noemde programma waarvan het doel in het leven is in wezen om erachter te komen hoe u uw programma te compileren. En we gebruiken het in deze eerste weken omdat het net bespaart ons een hoop ellende. Maar wat maakt is echt doet als je compileren hello, is, zoals we al zeiden de vorige keer, het is zoek op uw harde schijf of in de huidige map, voor bestand genaamd wat blijkbaar? Hello.c, toch? Dat is gewoon een soort van een conventie. Het is willekeurig, maar dat is de manier waarop dingen zijn. Maak, als je gewoon de naam op van een programma dat nog niet bestaat, het gaat op zoek naar de broncode in een bestand, standaard betekent hello.c. En indien hij constateert het, geweldig. Het gaat om die bron te zetten code in object code voor u. Maar elke keer dat ik druk op Enter na het uitvoeren van maken hello, Herinnert u zich het zien van de laatste keer dat een vrij lange en cryptische sequentie andere witte letters en tekens op het scherm? Nou dat was de eigenlijke opdracht, de werkelijke compiler, dat werd uitgevoerd. Dus de werkelijke compiler we zullen het grootste deel van gebruiken het semester is iets genaamd clang. Sommigen van u zou kunnen hebben gebruikt Visual Studio vóór of GCC, of een aantal andere compilers. We zullen gebruik maken van klank. En clang stelt ons in staat om daadwerkelijk te zetten dat broncode code bezwaar. Wat doet dit eigenlijk in de praktijk? Nou laat me gaan in een van mijn mappen van de vorige keer. Binnenkant van de CS50 apparaat. En laat me ga je gang en maak deze hetzelfde bestand bevatten standaard I / O dot h. Int main leegte. En we zullen terugkomen in de toekomst als wat int betekent en wat void middelen. Maar voor nu laten we het doen hello wereld backslash n, net zoals we deden op het bord. Laat me dit bestand genaamd hello.c slaan. En nu als ik wil dit compileren Ik could-- laat me zoomen in-- run maken hello voeren. En dit was weer dat zeer cryptisch lijn. Maar nu tenminste een woord waarschijnlijk uit bij u springt. Clang is die lijn we eerder zagen. Nu is er een heleboel andere dingen eerlijk gezegd dat we onze handen zullen zwaaien voor vandaag. Maar er is een aantal subgroepen, een paar letters in hier die van belang zijn. Maar ik ga je gang gaan en doen dit. Ik ga naar de eerste run hallo, gewoon om te bewijzen dat dit werkt zoals het was maandag. Maar nu ga ik naar het programma te verwijderen. En net als we hadden deze korte namen de laatste tijd, het commando voor het verwijderen iets is rm, te verwijderen, in te voeren. Je gaat om wat te krijgen vrij cryptische vragen. Moeilijk te geloven dat je kunt maken zelfs deze vraag moeilijk te begrijpen. Maar verwijder regelmatig file hello gewoon middelen te doen die u wilt verwijderen hello. En ik kan gaan en typ y voor ja, Enter, en nu is het weg. Wat betekent dit nu, als ik mijn scherm te wissen, is dat in plaats van doen make hello-- u Weet je wat, ik ben hier goed in. Ik ga aan de compiler zelf uit te voeren. Ik weet niet wat het programma nodig te hebben erachter te komen wat mijn bestand heet. Ik schreef hello.c, I weet hoe het heet, Ik ben duidelijk in staat dat te typen. Dus ik ga om verder te gaan en weet Clang hello.c Enter. Lijkt te werken. En er is geen extra output, omdat clang is de compiler. Het is wat het omzetten van de broncode om nullen en enen. Dus als ik nu dot slash hallo Enter, hm. Nieuw foutmelding vandaag. Dus bash is gewoon de naam van de knipperende prompt die we gebruiken. Dat is een grove oversimplificatie, maar voor nu is dat al wat is, het is de knipperende prompt. En dat is waarom het is schreeuwen tegen ons. Onbekend bestand of map is iets eenvoudiger. Maar toch heb ik dat object code. Maar de vangst is, dat als ik typ het commando om de inhoud van deze directory, wat is wat? ls voor de lijst. Er is een heleboel dingen in hier, waarvan sommige kwam met het apparaat, zoals mijn Desktop map Downloads map Dropbox-map, en alle dat spul. Maar wat interessant is is hello.c, die Ik heb daarnet met gedit. En wat is de vreemdste zoek naam hier, misschien dat we niet zie de laatste tijd bij allen? a.out, toch? Dus terug in de dag, het was net besloten dat wanneer een programma gecompileerd voor de eerste keer, en je hoeft niet de naam op te geven van een bestand, laten we noemen het een. En a.out betekent alleen deze was de output van de compiler. Dus het is een verschrikkelijke naam voor een programma. Maar tegen die logica, dot slash voor huidige directory, slash a.out, zou betekenen dat er in feite mijn Hello World programma. Nu een beetje op te warmen oefening, ook. Als ik wil deze hernoemen bestand, blijkt dat je Een bestand van de ene naar de andere naam. Dus mv a.out, en dan heb ik kunnen noemen hello Enter. Dus dit is een Linux-commando. DOS had dit jaren geleden, Windows heeft een terminal venster van een soort dat eruit ziet als dit, Linux en Mac computers hebben dit knipperen prompt. Hoewel de meeste van ons waarschijnlijk zelden of nooit gebruik van maken. Maar wat ik heb gedaan is het uitvoeren van een programma, waarvan de naam is mv, en ik heb het voorzien van twee argumenten, om zo te zeggen. Twee ingangen. a.out is de oorspronkelijke naam. Hallo is de nieuwe naam. Dus als ik nu dot slash hello, Enter, dat bestaat. En als ik dat doe dot slash a.out, wat verwacht je dan ik zou moeten zien? Bash, no such file of directory. Omdat ik net noemde het. Dus dit is even wennen. Maar het probleem set 1 specificatie zal echt Houd uw hand door sommige van deze feitjes. Omdat dit een volledig intellectuele afleiding van de meer interessante ideeën bij de hand, die eigenlijk creëren iets uit code. Maar laten we een modificatie nu op dit programma. Bedenk dat laatste keer dat ik iets deed als dit, printf uw naam. En inderdaad hebben we alleen deze hebben op het grote scherm daar. En dan deed ik touwtje s krijgt GetString geopend paren, dicht paren. En paren gewoon steno notatie voor haakjes. Dus doet GetString nemen alle argumenten? Geen ingangen nee, maar het moet de haakjes, want dat is wat afbakent de roeping van een functie. Dus ik ga om verder te gaan en proberen te lopen de compiler over dit programma nu. Clang hello.c, omdat ik heeft zijn naam niet veranderen voor nu. En ik heb een heleboel fouten. Laten zoomen hier uit. Als ik scroll weer op, zoals ik al zei vorige keer, de eerste, dezelfde fout dat ik de vorige keer. Op lijn 6 van hello.c had ik een zwartwerk identifier string heb ik bedoel standaard in? Dat deed ik niet. Want wat fout heb ik gemaakt in deze programma, als u zich herinneren van de vorige keer? Ja, moeten we de zogenaamde zijwieltjes dat we gewoon zullen gebruiken voor een paar weken. Maar ik moet ook aangeven dat, ergens binnenkant van het apparaat, is een bestand dat we schreven slechts een paar jaar geleden. Binnen waarvan functies zoals blijkbaar getString. Dus nu als ik ga hier terug naar beneden, opnieuw in, en de re-run clang hello.c. Damn, een andere fout. Maar we hebben niet dit eerder gezien. Deze is een beetje meer esoterische te achterhalen. Maar dit is bewust op het scherm, want we wilden om dit verhaal te vertellen. Wanneer u hello.c compileren, net zoals het beeld van vóór gesuggereerd, je bent alleen het omzetten van dat broncode om nullen en enen. Nu CS50 personeel een paar jaar geleden schreef CS50.h, en een bijbehorende bestand, CS50.c. En wij, een paar jaar geleden, samengesteld die bestanden in een bestand dat gebeurt genoemd te worden CS50.o. Of het kan worden omgedoopt tot een paar verschillende dingen. Maar dat is een eenvoudige manier van het denken over het. Dus we samengesteld CS50's bibliotheek in nullen en enen. Maar nergens heb ik opgegeven dat ik wil mijn nullen combineren en degenen voor mijn hello wereld programma met nullen en enen dat CS50 personeel creëerde een paar jaar geleden in een compleet programma. Alles wat ik heb opgegeven door het schrijven clang hello.c is compileren hello.c. Ik heb niet verteld clang aan schakel in de nullen en enen dat CS50 personeel aangemaakt voor u enige tijd geleden. Dus het is een makkelijke oplossing, dash l voor link, CS50. En we zullen ook dit zien het duurde niet lang opnieuw en opnieuw. Maar merk nu toe was er geen klachten. Dus nu als ik zonder dot slash hallo, nu het werkt. Hoewel dat is een beetje misleidend aangezien ik net herschapen welk bestand? a.out. Dus laat me terugspoelen voor slechts een moment. Het programma dat we gewoon gecompileerd heeft de drie regels code. Toen ik liep hallo wereld, hallo even geleden, heb ik niet gezien je naam. En dat komt omdat ik liep de oude versie van het programma. Maar als ik inderdaad lopen dot slash a.out Voer, uw naam, Rob, hello, wereld. Hm. Dat is een soort van een bug. Waarschijnlijk bedoelde te zeggen Rob, toch? Dus wat is de oplossing hier in code. STUDENT: [onverstaanbaar]. DAVID MALAN: Precies. Dus ik moet gewoon die laatste tweak maken zodat ik passeren in een tijdelijke aanduiding, net als in de blanco een vulling, zoals we deden een moment geleden. Maar procent en is nu in het lege dat invullen. Dus tot slot laten we onthullen een laatste detail, zodat er geen magie. Ik ga om te gaan en zich te ontdoen van hellow. Ik ga om te gaan en zich te ontdoen van a.out. Dus nu heb ik geen programma's, gewoon mijn broncode. En ik ga een run iets langer commando, clang dash o hello hello.c dash LCS50. Nu dit begint een soort van gaan het ene oor in en het andere misschien wel. Maar plagen elkaar wat dit doet. Clang is de compiler, dash LCS50 bewust aan het einde wat doet in een zin? Links naar de CS50 bibliotheek. Grijpt de nullen en degenen die het personeel heeft en propt ze in mijn eigen programma. Dus de laatste vraag bij de hand is, wat is dash o hello waarschijnlijk te doen, zelfs als je nog nooit hebt eerder gezien deze syntax? Het uitvoeren van een programma dat is niet de naam van de standaard a.out. Veeleer is genoemd hello. Dus nu is er geen a.out. Onbekend bestand of map, omdat ik zei expliciet noemen dit programma hello, zodat Ik kan nu een naam in als dat en het hebben gedragen. Nu eerlijk gezegd, jongen, is dat oninteressant om te hebben alle herinner weinig munitia, toch? Dus laten we verder gaan en krijgen weer ontdoen van hello. En laten we nu terugkeren naar een wereld in die volstaat om te zeggen hallo maken. Maar dat is de magie die maken voor u doet, dat is de verveling die het doet voor je. En als onze programma's en problemen krijgen meer complexe, maken zal echt je vriend zijn. Omdat niet al te lang vanaf nu gaan we programma's die zijn geschreven hebben niet met een bestand, maar een aantal bestanden, en maken de werkwijze te automatiseren samenstellen dat alles voor ons samen. Dus nu afdrukken. printf is de binnenkant van dit bestand, standaard I / O punt h, dat we al eerder hebben gezien, maar er is meer aan printf dan dat. Er is backslash n, maar er is ook een heleboel andere escape sequences. En escape is slechts een mooie manier om iets te zeggen die begint met een backslash, niet een slash, een backslash, en doet een aantal speciale dingen. En we zullen niet stilstaan ​​bij de meeste van deze, maar waarom is er backslash dubbel aanhalingsteken, denk je? Waarom is er dit rare opeenvolging van karakters, backslash dubbel aanhalingsteken, waarom zou dat nuttig zijn? STUDENT: [onverstaanbaar]. DAVID MALAN: Precies, toch? Denk terug aan onze Hello World programma dat we wel een paar keer nu heb gezien, elke keer dat we dat hello wereld gezien programma dat we hebben dubbel aanhalingsteken binnen had van die hello komma wereld backslash n. Maar denk je bij jezelf, wat als je eigenlijk wilde het afdrukken van een aanhalingsteken? Je eerste instinct zou kunnen zijn, dat doe ik niet weten waarom ik zou willen hier doen--, kunnen we een beetje passief agressief, hello friend. Willen we misschien zoiets doen. Maar waarom is dit nu een probleem? Het negeren van de gekrulde aanhalingstekens terzijde dat keynote maakte voor ons automatisch. Waarom is dit een probleem? Precies. Want we hebben net 4 aanhalingstekens. Nou, de eerste waarschijnlijk gaat met het tweede, en misschien de vierde gaat met de derde, of, ik bedoel, ik weet niet eens zeker, noch is de computer zal zijn. Computers weer, compilers weer, zijn vrij dom. Ze zullen alleen maar doen wat je vertelt te doen. En als je niet eenduidig ​​ze zijn waarschijnlijk gaan om een ​​fout te gooien. Als je niet eenduidig ​​over hoe om te maak een pindakaas en jam sandwich rare dingen kunnen komen. Het is hetzelfde idee. Volstaan ​​nu te zeggen dat er sommige andere escape sequences, maar we zullen die komen voordat lang. Wezen deze ontsnapping sequenties iets vertegenwoordigen dat je misschien niet in staat te gemakkelijk naar het toetsenbord, zonder verwarrende de computer. Nu ondertussen hebben we placeholders in printf. Procent d, die ook kan worden geschreven in bijna alle gevallen procent i, is een tijdelijke aanduiding voor het soort gegevens? Welk type van waarde? Een decimaal getal. Dus eigenlijk we beginnen behulp procent i, want het is iets eenvoudiger, als een integer. Procent i. Een geheel getal dat gebeurt te zijn decimaal. Procent s we al gezegd was een tijdelijke aanduiding voor een string. Dat is gewoon een woord, een zin, een paragraaf, een essay, wat dan ook. Het is een reeks tekens uiteenzetten. En we zullen zien voordat lang sommige anderen. Maar procent c is voor een enkel teken. Procent f is voor een floating point getal, als een reëel getal dat moet een decimale punt in, die is natuurlijk geen geheel getal. En er is een hele bos van anderen. Ondertussen in C, en in veel talen, we hebben verschillende soorten data. Verschillende soorten glazen kommen als je wil. De kom ik de vorige keer was voor ping pong ballen, maar we kunnen ook slaan verschillende waarden als chars en strijkers en integers in een container, als een variabele, en C heeft deze. Char is de aard van de gegevens, het type variabele, waarin je kunt een karakter op te slaan. Float is een soort variabele waarin u een reëel getal kan opslaan. Int is natuurlijk voor een int. En nogal belachelijk noemde een lange lange is waar je wezen kunt opslaan een hele lange nummer, met zelfs meer cijfers dan een typische int macht winkel. Maar we komen terug om dat vóór lang. In CS50 dot h ondertussen de andere header file dat we een paar hebt gezien keer in gebruik, is er twee andere gegevenstypen die niet bestaan ​​in C meestal. Een daarvan is string en we zullen zien in een paar weken wat touwtjes echt zijn onder de motorkap. En een is bool. En bool is een variabele die kan alleen op bepaalde waarden. En net op basis van vorige week uitleg van Scratch, en meer recent C, wat zou u raden zijn de twee mogelijke waarden voor enkele container die is van het type bool? Ja en nee. Een en nul. Waar of niet waar. En inderdaad het is de laatste die de neiging conventioneel in een programmeertaal te taal, iets te zeggen als waar of onwaar. Ondertussen komt de CS50 bibliotheek met een heleboel functionaliteit dat het personeel u geschreven heeft, dan alleen het krijgen van een string. We schreven vooraf functies die kan een geheel getal te krijgen van de gebruiker, krijgen een enkel karakter, krijgen een vlotter, die is maar een getal met de decimale punt. Hier krijg je een lang lang, een echt grote waarde voor de gebruiker. Dus we hebben alleen dit gezien in actie in de vorm van GetString. Maar via deze functies zal binnenkort in staat zijn om te schrijven programma dat invoer van de gebruiker. Ondertussen overwegen deze programma, en te overwegen hoe we nu kunnen beginnen te voegen om met nieuwe constructen. Een snelle wervelwind tour en dan zullen we kijken bij sommige schrijven van sommige programma's handmatig onszelf. Voortaan als we willen implementeren van een staat, het gaat niet om te kijken als een leuke kleine mooie puzzelstukje. Het zal een beetje meer mysterieuze kijken. Maar dit is de canonieke structuur van een aandoening C. Het woord indien twee haakjes binnenste gedeelte gaat om een ​​soort te zijn van Booleaanse expressie. Nu is de slash slash in het midden, dit is op het moment een beetje als pseudocode placeholder code. Maar goed, elke regel code in C, dat begint met een slash slash is een reactie. Het is als een notitie die je misschien gezet op een essay, gedrukt op papier. Het is een briefje aan jezelf. Het heeft geen functionele effect op het programma. Het is een soort van een herinnering, het is je eigen documentatie over wat er gaande is. Dus dit momenteel is een soort van een tijdelijke aanduiding voor wat er in zit van die accolades uiteindelijk gaat om iets te doen. Ondertussen heb je twee vorken in de weg, een if else als deze. Je kunt als, elseif, anders. Nu is het vermeldenswaard, vooral als je hebt Googlen rond online bronnen van nieuwsgierigheid, of als je pick-up een van de cursus aanbevolen boeken over C, je zult zien dat mensen veel van verschillende voorkeuren voor de manier waarop om zich te uiten in de code. Sommige mensen willen op de vragen accolades zoals ik hier gedaan. Sommige mensen willen de curly zetten bretels bijvoorbeeld hier. Sommige mensen willen de elses te zetten hier en dan dit hier. Er zijn een aantal manieren om code schrijven, en geen van hen gelijk per se. Hoewel er een paar dat zijn behoorlijk mis. Maar er zijn no-- als dit uiteindelijk een zeer religieus debat. In feite is een van de meest vervelende dingen over informatica is hoe eigenwijs informatici kan zijn. En u zult zien in de tijd dat zelfs je persoonlijke voorkeuren te ontwikkelen over hoe de code eruit moet zien. Niet alleen gedragen, niet alleen creëren output, maar hoe het moet esthetisch kijken. Dus wat we zullen doen is u begeleiden langs de weg naar, voor nu althans, standaard CS50 stijl die minstens houdt het uniform en gemakkelijk te lezen. Maar meer op die onderscheidingen voor lang. Een Booleaanse expressie in C, als je wil zeggen als deze voorwaarde waar en deze andere voorwaarde is waar, je hoeft het woord niet schrijven en, zoals je zou doen in het Engels. U in plaats daarvan gebruik ampersand-teken, om redenen die we zullen terug te komen. Als je wilt zeggen of je twee gebruiken verticale balken, die op een Amerikaans toetsenbord is over het algemeen boven de Enter toets naast de backslash. En dit betekent gewoon dat als deze situatie of die andere voorwaarde waar doen. Ondertussen is er dit gekke ding, dat je zult gelegenheid hebben een keer gebruiken in een tijdje. Maar het is gewoon een alternatief manier om jezelf te uiten. Dit, voor nu, laten we bepalen, het is gewoon een andere funky manier van uiten if, elseif, elseif, elseif, elseif. Het is gewoon geformatteerd in termen van de gevallen, waar je letterlijk opsomming gegeven van de waarden die je zou willen om te controleren op. Ondertussen loops. We zagen vergelijkt Kras met een lus. En ik ga mijn hand zwaaien wat elk van deze dingen betekent. Maar merk op dat er een lus zal zeer vaak beginnen met het sleutelwoord voor. Of het zal beginnen met het trefwoord tijdje. Of het zal beginnen met het trefwoord doen, en eindigen met het trefwoord tijdje. Maar wat we op het punt om te zien is er meer als dit. Hier is, in het algemeen in C, hoe je misschien verklaren een variabele en geef het een waarde. In C is niet voldoende, zoals in Scratch, je gewoon zeggen geef me een variabele genaamd iets. Je moet C vertellen, en vertellen compiler, meer specifiek, wat voor soort waarde die u doen willen in de glazen kom te zetten. Is het een integer? Als dat zo is, moet je int en dan letterlijk zeggen de naam van de variabele, vervolgens een puntkomma. Als u in plaats daarvan wilde snaar en riep het s zoals ik deed mijn code hier vandaag, zou je touwtje s puntkomma zeggen. Zodra je het wilt geven een waarde u kunt dan gebruik maken van de gelijk-teken, oftewel de opdracht operator. En merk op hoe elk van deze regels code heeft de puntkomma aan het einde ervan. Maar eerlijk gezegd dit gewoon ziet er een beetje lelijk. Waarom kan ik niet zeggen tegen de computer, geven me een variabele en initialiseren op nul. Dat wil zeggen, geef me een lege glazen kom. Terwijl u kunt. En zo een van de uitspraak vraagt ​​je moeten stilistisch te maken over de tijd is, hoeft u uw code als dit te schrijven, of heb je soort van opruimen en imponeren mensen door het schrijven van twee lijnen als slechts een. Dit zou worden beschouwd algemeen een elegante manier van het schrijven van uw code stilistisch. Functies zijn we natuurlijk gezien. Ze gaan dit formaat te nemen. De naam van een functie, wat haakjes, en dan misschien wat spul binnen. Of u misschien gebruik van te zien meerdere functies side aan zij, als iets als dit. Nu als een tangent, doet deze grap zinvol nu? [Lachen] Het betekent niet dat het grappig is, maar het heeft misschien te maken een beetje meer zin. Dus laten we nu gaan in de CS50 apparaat voor een moment. En laat me hier openstellen een teaser. En inderdaad een van de redenen voor de invoering van IKEA catalogus en knipperen de foto van de iPhone een beetje geleden was om daadwerkelijk te binden aan elkaar de feit dat slechts een paar jaar geleden, in 2007, Dit stukje code was model, dat een van de eerste uitvoering van een stuk software dat doet wat jailbreaken genoemd. Voor wie niet vertrouwd, jailbreaken iets als een telefoon of een iPhone betekent in wezen uitzoeken hoe om dingen te doen mee dat de vennootschap die maakte het niet van plan. Net als u wilt installeren bepaalde software die niet in de app store, jailbreaking uw telefoon die je dingen doen als dat en nog veel meer. Maar wat was het leuk in 2007-- en er is al tientallen verschillende versies van deze dingen sindsdien, in allerlei languages-- dat het programma hier, genaamd iUnlock, was eigenlijk in C. En zo geschreven ik trok de broncode voor deze, alleen maar om soort te tonen u enkele van de overeenkomsten met de constructen we hebben tot nu toe te bespreken. Nu is er veel meer complexiteit hier dan hebben we al in de klas gezien. Laat me u omhoog een beetje hier. Maar let these-- goed merken we een paar dingen-- maar merken deze lijnen hier, waaronder standaard I / O dot h. En alle-- lijn 24, please-- merkt standaard I / O dot h en een hele hoop andere bestanden die blijkbaar anderen hebben geschreven. En als we naar beneden scrollen door dit, beetje willekeurig, Let op, ik weet niet hoe te schrijven dit alles nog zelf per se, maar er is zo. Dus blijkbaar is dit een tak. En als ik naar beneden scrollen een beetje verder is er nog een als. Als ik blader omhoog, denk ik rond regel 100 zag ik voor. Dus ik ben niet helemaal zeker hoe dit werkt nog niet, maar dit is een lus die gaat laat me herhalen wat aantal keren. En als ik scroll helemaal helemaal naar beneden Ik zie dat er een functioneren hier beneden geroepen main en enige aanvullende kredieten voor uw leesplezier. Dus dit is alleen te zeggen-- en we zetten deze online bij de bron van de cursus code today-- dat zelfs een aantal van deze apparaten die we voor lief nemen, aan het eind van de dag ben je nog steeds met behulp van deze eenvoudige constructies die we hebben is de invoering al tot nu toe. Dat is genoeg van die ene. Oke, dus nu laten we iets daadwerkelijk te bouwen. Laten we gaan dan iets als hello.c, en open deze, laten we schrijven het programma hier. Ik ga om te gaan en schrijf een programma genaamd adder.c, waarvan het doel in het leven gaat worden zoals mijn eerste super eenvoudige rekenmachine dat draagt ​​een paar nummers. Niet want dat is een harde probleem, maar omdat het kan ik nu binden samen een paar dingen. Dus ik ga om verder te gaan en omvatten standaard I / O dot h en CS50 dot h. Ik ga int main leegte zeggen. En in de toekomst weer we zullen terug te komen in deze context en nietig middelen. En nu ga ik iets zeggen zoals printf, geef me een integer. En nu op mijn tweede lijn, hoe kan ik mezelf uitdruk dergelijke dat wil ik een variabele verklaren dat gaat om een ​​int slaan? Letterlijk wat typ ik als ik wil maak een variabele die een int opslaat zou je dan zeggen? int een evenaart getint. Tuurlijk, dus dat werkt. En net voor de consistentie met de code die u zult zie online, laat me verandering dit naar x, alleen maar omdat x een gemeenschappelijke variabele te gebruiken, althans in algebra. Laat me nu ga je gang en doen weer printf. Geef me nog een integer. En nu ga ik naar soort van leren van dat patroon, Ik ga zeggen int y krijgt getInt. En we hebben niet gebruikt GetInt voor, maar net zoals GetString gaat en krijgt een string, zoals Javier deed uit het publiek, evenzo doet getInt knipperen de prompt. En effectief wachten op de gebruiker te geven het een geheel getal, door deze in te typen en slaan op Enter. Nu tot slot ga ik doen dit, printf de som van-- en laat me fantasie nu-- procent i en i procent aanwezig is i uitroepteken backslash n. En wat denk je dat ik ga zet zich nu in als de extra ingangen printf? Ik wil niet zeggen letterlijk citeren unquote x. Ik wil naar de klas in x en toen, en nu laten we mooie en laten we gewoon aannemen we kunnen doen wat we willen. Wat je wilt zeggen de volgende stap? x plus y. En inderdaad, dat zal werken. Het is minimaal programmeertalen begrijp elementaire rekenkundige, en dus dit moet in feite werk. Dus laat me gaan en weet te maken adder in mijn zwart-wit venster hier beneden, Enter. Cryptische lijn, maar geen fout bericht, dus dat is goed. Dot slash adder, geef mij een geheel getal, 1. Geef me nog een geheel getal, 2. De som van 1 en 2 is 3. Oke, dus een vrij triviale programma, maar wat heeft het gedaan? Het stond me toe om een ​​functie te gebruiken hier noemen, een andere functie oproepen hier, twee gesprekken te getInt, een derde oproep printf, en vervolgens met behulp van deze plaatsaanduidingen. Dus het is een beetje meer verfijnder dan de vorige keer. Maar wat als ik wil een beetje liefhebber? Laat me gaan en nu dit te doen. Laat me ga je gang en maak een nieuw bestand genaamd omstandigheden nul. En ik ga sparen enige tijd voor de klassen omwille en gewoon plakken in dat code als uitgangspunt. En nu ben ik gewoon gaan zetten iets nieuws hier in het midden. Dus printf zou ik graag een geheel getal alstublieft. En al deze code is beschikbaar op de website van de cursus, u niet hoeft te typen het allemaal uit in de klas als je liever niet. int, en nu ga ik naar , in plaats van x en y, Ik ga gebruik maken van n, dat is Waarschijnlijk de meest voorkomende naam een integer in een computerprogramma. En nu wil ik een doen weinig vonnis hier. Ik ga om te zien of n groter is dan 0, dan Ik ga printf-- whoops zeggen, printf-- je pakte een positief getal, uitroepteken backslash n. Sluiten dat. Anders ga ik uitprinten printf u een negatief getal opgehaald. Nu voordat je tegen me te schreeuwen, laten we lopen dit programma. Laat me hier beneden gaan. En hoe kan ik een programma te compileren noemde voorwaarden dash 0? Maak omstandigheden dash 0. Soort van een domme naam, maar-- dammit. OK, goed leermoment. Waarom heeft die breken? Wat heb ik per ongeluk dit bestand noemen? U kunt soort afleiden vanuit het tabblad hierboven. Dus het is niet slecht dat ik deed dit, omdat dit zal wellicht gebeuren met een aantal van jullie. Dus ik per ongeluk de naam van mijn broncode toestand 0. Maar mijn broncode volgens afspraak moeten worden in een bestand met de naam aandoening 0 dash c, of wat punt c. Dus laat me dit op te lossen. Net zoals Microsoft Word ik kan gaan Opslaan als en doe voorwaarde 0 dot c. Nu alleen te netjes ben ik zijn gaan om verder te gaan en te verwijderen toestand 0, wat mijn oude versie was. En laten we nu niet te maken toestand 0, Enter. OK, lijkt goed. Toestand 0, Enter. Ik wil graag een integer alstublieft, 50, je een positief getal opgehaald. Nu hoe zit het negatieve 50? Je pakte een negatief getal. Hoe zit het nu, 0. Vrij zeker 0 is niet negatief. Dus dit is een soort van een logische fout. Hoe kan ik dit oplossen? Anders als n kleiner is dan 0, doe dit, anders kunnen we een drieweg tak hier hebben, printf je geplukt 0. Dus nu als ik deze opnieuw uitvoeren programma, na het compileren van het opnieuw met merk, en nu opnieuw uitvoeren toestand 0, wat ik hier zie 0 is geeft mij dat de output. Dus waar gaan we heen met dit? Nou, het is heel gemakkelijk om het oog te verliezen van het bos door de bomen. En dus kunnen we concluderen met deze 2 en 1/2 minuten durende video dat uiteindelijk een beetje van een advertentie van Google, maar dat is echt een bewijs van wat zelfs het gebruik van deze fundamentele gebouw blokken kunnen we uiteindelijk een keer te doen we hebben een beetje van de programmering savvy onder onze riemen. [Muziek] SAROO BRIERLEY (VoiceOver): Het was 26 jaar geleden, en ik stond op het punt te draaien 5. We kwamen aan bij het station en We stapten onze trein samen. Mijn broer zei gewoon ik zal blijf hier, en ik kom terug. En ik dacht, nou weet je, Ik kan net zo goed gaan slapen en hij zal gewoon me wakker. En toen ik wakker werd de volgende dag, de hele wagen was leeg op een op hol geslagen trein, een spook trein met me ik weet niet waar. Ik werd aangenomen, naar Australië, een Australische familie. En moeder had versierd mijn kamer met de kaart van India, die zette ze naast mijn bed. Ik werd wakker elke ochtend aangezien map, en dus het soort hield de herinnering levend. Mensen zouden zeggen, je bent probeert een naald te in een hooiberg, Saroo je zult het nooit vinden. Ik zou hebben geflitst van de plaatsen die ik gebruikt om te gaan, het flitsen van mijn familie gezichten. Er was het beeld van mijn moeder, zitten met haar benen gekruist, alleen maar kijken naar haar huilen. Het leven is net zo hard. Dat was mijn schat. En ik keek naar Google Map en realiseerde er is Google Earth ook. In een wereld waar je kan inzoomen op, Ik begon al deze gedachten hebben en welke mogelijkheden dat dit voor mij kon doen. Ik zei tegen mezelf, je weet wel, je hebt kreeg al die fotografische herinneringen en monumenten waar je vandaan komt, en je weet wat de stad eruit ziet. Dit zou een toepassing kunnen zijn dat u kunt gebruiken om je weg terug te vinden. Ik dacht, nou ik zal een zet stip op Calcutta treinstation, en een straal lijn, weet je, dat je hierbij is echter dat in dit gebied. Ik kwam een ​​soort van over deze treinrails. En ik begon na het, en Ik kwam bij een treinstation dat weerspiegeld hetzelfde beeld dat was in mijn herinneringen. Alles op elkaar afgestemd. Ik dacht alleen maar yep, ik weet waar ik heen ga. Ik ga gewoon naar het laten kaart die ik in mijn hoofd leid mij en neem me terug naar mijn woonplaats. Ik kwam tot de drempel van het huis, waar ik ben geboren. En liep rond ongeveer 15 meter om de hoek, er drie dames staan buiten naast elkaar. En de middelste stapte naar voren, en Ik dacht, dit is je moeder. Ze kwam naar voren, ze omhelsde me, en we waren er voor ongeveer vijf minuten. Ze pakte mijn hand en Ze nam me mee naar het huis en kreeg aan de telefoon, waar ze belde mijn zus en mijn broer om te zeggen dat, je weet wel, je broer heeft net opeens verscheen als een geest. En dan is de familie werd herenigd. Alles is al goed, Ik hielp mijn moeder uit, ze hoeft niet weg te zwoegen. Ze kan de rest wonen van haar leven in vrede. Het was een naald in een hooiberg, maar de naald was. Alles is er. Alles hebben we in de wereld is aan de kraan van een knop. Maar je moet de wil hebben en de wil om het te willen. [Muziek] DAVID MALAN: Heerlijk zoete testimonial om gewoon wat je kunt nu doen met de technologie. We zullen volgende week zien.