DAVID J. MALAN: Dus dit is CS50. En dit was CS50 eigen Colton Ogden, voor meer van wie is de muziek die u kunt downloaden op soundcloud.com/cs50. Dus vandaag richten we ons des te meer over de kunst van het programmeren. En we nemen waar we gebleven waren off van vorige week, met de nadruk op Scratch, dat dit was grafische programmeertaal. En neem dingen naar een lager niveau, met een meer traditionele programmering taal bekend als C. Maar langs de weg, het realiseren van dat dezelfde ideeën die we sprak over afgelopen vrijdag zal niet alleen in deze herhaling taal C, maar in vrijwel elke andere dat we dit semester. Dus we belden dit ding hier wat de vorige keer? Dit is representatief voor een verklaring. Dus we belden dit een verklaring. En het doet iets. Het is een instructie die een computer of Scratch kunnen uitvoeren. En voortaan, laten we ook beginnen zoiets als dit een functie roepen, om redenen die we zullen snel te zien. Ondertussen zagen we dit soort dingen. En deze zijn over het algemeen wel wat construct? PUBLIEK: Loop. DAVID J. MALAN: Dus een lus. Dus vrij eenvoudig. Het doet letterlijk wat het zegt. En in Scratch, als je wilt proppen meer puzzelstukjes in daar, het stuk zal groeien om het te passen. En we zullen zien in C dat We kunnen hetzelfde doen. Ander type lus, hoewel, in Scratch misschien voor altijd, of er is een willekeurig aantal andere benaderingen. Maar laten we eens een meer generalistische blik, met een gezicht dat is waarschijnlijk heel vertrouwd, bij lussen meer in het algemeen. Mark Zuckerberg: Een ding dat computers echt goed in is herhalen opdrachten. Als een persoon, zou je krijgen echt vervelen als je moest hetzelfde doen veel keer op een rij. Maar een computer kan hetzelfde doen miljoenen of zelfs miljarden malen, en niet te vervelen, en in staat zijn die uit te voeren heel goed. Dus bijvoorbeeld, als ik wilde iedereen wensen op Facebook een gelukkige verjaardag door ze een e-mail, het zou me meer dan een nemen eeuw om daadwerkelijk uit te schrijven al die e-mails naar iedereen. Maar met slechts een paar regels code, kan ik hebben een systeem stuurt u een e-mail naar iedereen op Facebook wensen hen een gelukkige verjaardag. Dus dat is wat loops zijn en waarom ze zijn waardevol en iets dat computers erg goed kan doen. DAVID J. MALAN: Dus als u de ontvanger bent geweest sommige van CS50 en Dropbox ruimte laat, dat is eigenlijk precies wat we doen, met behulp van code heel graag dat. We hebben in wezen een groot spreadsheet waarin mensen zijn het invoeren van hun namen en e-mailadressen. En schreven we een klein stukje code dat kunnen itereren over die adressen en spuwde unieke adressen in geval iemand meerdere keren voorgelegd. En daarna, een sturen we geautomatiseerde e-mail van CS50's bot, inclusief de coupon code. Nu ook hebben we gekeken naar Dit construct laatste keer. En dit is een bijzondere voorbeeld van wat? Dus, ja, een Booleaanse expressie. En de vorm bedoeld vastleggen dat ook. Al dit soort vragen van de vormen waar of onwaar in Scratch zal een beetje iets als dit. En we noemen dit een Booleaanse expressie. Dat is inderdaad waar of onwaar, ja of nee. Het is een manier van het beantwoorden van een vraag. En ondertussen kunt u deze Booleaanse gebruiken Uitdrukkingen tussen constructen soort, welke Natuurlijk zijn aandoeningen of takken, spreekwoordelijke vorken in de weg. Ze kunnen niet alleen als dit, maar ze kunnen ook hebben elses met hen verbonden. En je kunt eigenlijk een drieweg vork in de weg of een vier manier vork in de weg, gewoon door nestelen deze dingen, zoals u zult zien in Scratch als je nog niet hebt. En zoals je kunt doen in C ook. Laten we eens een andere generalistische kijken naar een alumnist, evenals die misschien een andere aanpak te presenteren om deze dingen genoemd voorwaarden. BILL GATES: Mensen maken elke dag beslissingen. Bijvoorbeeld, voordat je gaat buiten je soort hebben een if-statement dat zegt, als het regent dan heb ik nodig om mijn jas te krijgen. En computers zijn geweldig als je eenmaal beslissen dat soort uitspraken, dat ze betrouwbaar kunnen uitvoeren die dingen op ongelooflijke snelheid. En dus een computerprogramma echt is een beetje wiskunde en een aantal if-statements waar de beslissing wordt gemaakt. DAVID J. MALAN: Dus als u wellicht weet, het was mensen zoals Bill Gates, Paul Allen, en anderen die echt de aftrap voor de zogenaamde personal computer revolutie enkele jaren geleden. Ik dacht, voordat we duiken in sommige Administratieve zaken, we een verhaal zou betreffen van de Albuquerque, New Mexico Museum of Natural History en wetenschap, waar een aantal van Bill Gates ' en vroegste verhalen van Paul Allen worden verhaald hoe we nu hebben de hedendaagse pc's en Macs en meer. Hiervoor echter moeten we twee vrijwilligers die hebben zeer goede vertelling stemmen een script voorlezen. Oke, wat dacht je daar terug. Kom maar naar boven. En hoe zit het aan de voorkant hier. Kom naar beneden. Neem hier uw plaatsen. Als jullie komen, een paar van de administratieve mededelingen. snijden, het proces het kiezen van een gedeelte, zal deze beginnen Woensdag tot en met vrijdag. Meer op dat deze komende Woensdag in collegezalen. Super secties, ondertussen, zijn iets dat wij bieden volgende week waarbij de hele klas wordt uitgenodigd deelnemen aan vrij grote schaal delen, een meer comfortabele, een minder comfortabel. En we zullen de gegevens aan te kondigen van dat, evenals, later deze week. Ondertussen secties, zelf begint in week drie van de cursus, nul-index, wat betekent dat zijn een paar weken uit. Dus geen zorgen te maken. Je hebt nog niet gemist iets in die richting. Ondertussen in de tussentijd, als je Voor vragen administratief, e-mail mij en Devon en Gabe en Rob op dit adres hier. Tenslotte probleem vastgesteld 0 is natuurlijk uit. Je mag het hebben gemerkt op de website van de cursus. Het moet u voorzien van Alle antwoorden op vragen je zou langs de weg te hebben aan de slag met het probleem set. Maar als je merkt dat je behoefte aan een helpende hand, met alle middelen te wonen kantooruren, Maandag, Dinsdag, Woensdag, Donderdag van deze week in de avond in vier eetzalen. Zie je die URL er voor de gegevens van waar de kantooruren zijn. Nu laten we voldoen aan onze twee gasten hier vandaag. Wat is je naam? JAY PAUL: Jay Paul. DAVID J. MALAN: Jay Paul, leuk je te ontmoeten. HIKARI: Hikari. DAVID J. MALAN: Hikari? HIKARI: Hikari. DAVID J. MALAN: Hikari. Leuk om je te ontmoeten. Jay Paul en Hikari hebben in voor hen op deze muziek staat twee scripts die ik gedrukt vanmorgen uit de New Mexico Museum of Natural History and Science. En wat ik dacht Ik zou doen op de overhead wordt begeleiden uw recitatie van het script en deze geschiedenis met een aantal visuele beelden, geen verrassingen. En wat ik heb gedaan op voorhand wordt prehighlight op je script wat je moet lezen, en wat je zou moeten lezen. En we zullen in wezen gewoon alternatieve paragrafen. Dus het is net zoals je misschien hebben gedaan in het Engels les. Dat is echt te dwingen het publiek om te geloven in je verhaal hier. Zullen we? Dus het verhaal hier is, hebben we een BASIC, en het begint in Cambridge. JAY PAUL: Het was de winter van 1974, in Cambridge, Massachusetts waar de winters koud kan zijn. Een bebaarde, langharige college dropout vernoemd Paul Allen is drudging over Harvard Vierkant, verdiept in zijn gedachten. Zijn voornaamste zorg in die dagen was hoe hij zijn vriend, Bill Gates krijgen, stoppen met school en gaan in zaken met hem. HIKARI: De twee waren al weg door middel van een aantal business ventures elkaar, te beginnen bij Lakeside school in Seattle waar zij werden betaald in gratis computer de tijd om test een PDP-10 computer een lokale tijd sharing bedrijf. Het meest recente plan was om te stoppen school en vormen een software bedrijf. Allen had Washington vertrokken State University. Maar op het laatste moment, Gates besloten aan de stok met Harvard. JAY PAUL: Die dag, het oversteken van de Harvard Vierkant, Allen zag de januari 1975 nummer van Popular Electronics met de aarde stoppen kop, 'S Werelds eerste minicomputer Kit om commerciële modellen rivaal. Onder de kop was een foto van een klein doosje versierd met lampjes en schakelaars. Het werd de MITS Altair 8800 genoemd. En Allen wisten dat dit was wat Hij was op zoek naar. HIKARI: Days of discussie volgde. Allen en Gates begrepen de betekenis van de Altair. Ze hadden vaak gesproken over microprocessors en zaten te wachten om te zien wat zou gedaan wordt. Nu was er een minicomputer kit op de cover van Popular Electronics. Het had nog blijkbaar geen software. Ze stelde zich een natie van programmeurs aflopend op MITS. En dus belden ze Ed Roberts, het hoofd van het bedrijf, beweert een versie van het hebben BASIC programmeertaal bijna klaar voor de Altair. Dat deden ze niet. En Roberts moet hebben geweten dat deden ze niet. Hij kreeg 10 oproepen per dag van mensen die een BASIC bijna klaar had. En zijn voorraad reactie was: "De eerste persoon die toont met een werkende BASIC krijgt het contract. " JAY PAUL: Gates en Allen had nog nooit een Altair. Ze had nog nooit de Intel 8080 microprocessor in het hart van de Altair. Maar een paar jaar eerder Allen hadden een programma geschreven op een mainframe computer die geëmuleerd de werking van een eerdere Intel microprocessor. En deze keer ze zou hetzelfde doen. HIKARI: Met een Intel 8080 handleiding aan zijn zijde, Allen zitten op een Harvard PDP-10 computer en schreef de emulator en software instrumenten die nodig zijn om de programmering te doen. Ondertussen Gates ging niet meer klassen en wijdde zich het ontwerpen van de BASIC, met behulp van elke truc Hij wist op de maat te krijgen beneden 4 kilobytes. JAY PAUL: Out in Albuquerque, Ed Roberts kreeg een telefoontje van Gates vragen voor meer informatie over hoe de Altair behandeld specifieke routines. Niemand had ooit gevraagd dat vóór. En Roberts begon interesse te krijgen. HIKARI: Met de ontwikkeling hulpmiddelen en het ontwerp klaar is, Gates en Allen schreef de code op de PDP-10, enlisting andere Harvard student, Monte Davidoff, om wiskunde routines te schrijven. Na een laatste nacht programmering, Allen kreeg op een vliegtuig te leveren in hun basisbehoeften te MITS. Hij bracht het vliegtuig rijden uit zorgwekkend. En terug in Cambridge Gates is zorgwekkend. Ze had getest hun BASIC en hij had gewerkt op de emulator. Maar wat als de emulator was verkeerd? JAY PAUL: Toen het vliegtuig benaderd Albuquerque, Allen realiseerden dat hun BASIC, nu netjes bevatte op een klein rolletje geperforeerd papier tape, zou zijn nutteloos zonder een aparte programma, genaamd een loader, dat zou de Altair hoe vertellen aan de papieren rompslomp wordt gelezen toegevoerd aan de teletype machine. Hij haalde zijn notitieboekje en snel krabbelde een loader programma in assembler, vervolgens handmatig vertaalde dat in de 1s en 0s de Altair zouden begrijpen. HIKARI: Allen verwachtte een schone, kleine, high tech bedrijf gerund door mannen in pakken. Dus hij was verbaasd toen Roberts ontmoette hem op de luchthaven op zoek als een ranch de hand. Roberts was ook verbaasd. Toen liet hij de Harvard programmeur bij een duur hotel, Allen moest bekennen dat hij zich niet kon veroorloven de kamer. JAY PAUL: MITS, zelf, was gelegen in een stoffige strip mall. Binnen op een rommelige werkbank was een Altair geladen met 5 kilobyte geheugen en verbonden door een kabel een telex machine. Roberts en Chief Engineer, Bill Yates, wachtte vol verwachting als Allen geschakeld zijn loader programma in de Altair. De telex begonnen puffend als het getrokken het papier tape door de tape reader. Het duurde misschien 15 minuten het programma te laden. Dan is de telex abrupt drukte een geheugen prompt, dan een kant en klaar prompt, en Allen begon te typen een paar testen commando. Tot ieders verbazing, de software werkt. Er waren insecten, natuurlijk. Maar het belangrijkste was het werkte. HIKARI: Later, op weg naar een $ 3,00 lunch bij Pancho's, een wesp vloog in het raam van de pick-up vrachtwagen en gestoken Allen op de arm. Maar op dat punt niets kon de stemming bederven. De Altair nu had zijn BASIC, de eerste commerciële software voor een huis computer, gemaakt door Paul Allen en Bill Gates, zaken doen als Microsoft. DAVID J. MALAN: Veel dankzij onze twee lezers. [Applaus] DAVID J. MALAN: Nu U hebt uw keuze, voordat u vertrekt, of een sprankelende of een gloed in de dark-- oh, wacht een seconde, wait-- sparkly en een glow in the dark olifant van CS50 eigen Cheng Gong. HIKARI: Aw, dank je wel. DAVID J. MALAN: Alle rechts, dank je wel. [Applaus] DAVID J. MALAN: So true story. Dit wil zeggen dat al deze machines en het gemak waarmee we gebruik ze nu en neem voor lief, echt begon hier, op slechts een paar passen van deze eigenlijke theater. En nu vandaag de dag, als je niet bent geweest, Dit is Maxwell Dworkin, de computer wetenschappen gebouw, ook om de hoek. En op de tweede verdieping van dit gebouw doet hangen drie pagina's van de oorspronkelijke broncode die Bill Gates en Paul Allen schreef. In feite, als je gebruik te zoomen in u niet alleen kunt zien hun namen in de oorspronkelijke type, maar ook hun handtekeningen die ze versierd een paar jaar terug toen ze laatst bezocht. Maar wat was bijzonder overtuigend over dit is wat ze uiteengezet te doen was om een ​​programma dat zou schrijven in staat andere mensen te schrijven hun eigen programma's. Op het moment dat alles was er met deze Altair machine gemaakt door MITS. En alles wat ze nodig had was een manier van waardoor het gemakkelijk is voor hobbyisten en mensen dat wij in deze kamer om daadwerkelijk programma dat zonder noodzakelijkerwijs begrijpen Montage-code, of machine code, of God verhoede, 0 en 1. We programmeurs, zoals die in deze kamer, we willen kunnen uitdrukken onszelf veel meer als pseudo-code zelfs als het een beetje meer nit kieskeurig dan spraken we vorige week. We willen niet om code te schrijven als dit, die Paul Allen en Bill Gates deed. Wij, in plaats daarvan, wil om code te schrijven die ziet er een beetje meer gebruikersvriendelijk. Nu is dit een taal die bekend staat als BASIC. En de lijnnummers zijn er wat je Gebruik eenvoudig nummeren coderegels dat je aan het schrijven bent. We hoeven niet eens te dat doen deze dagen. Maar je kunt hier zien hoe PRINT "hello, world" zou inderdaad vermoedelijk printen alleen dat. En wat Bill en Paul deed was mensen in staat stellen om code te schrijven als dit plaats van-- als je een kijkje nemen op de te nemen informatica wall-- code als deze. In feite, CS50 onlangs had een kans te gaan zitten met Professor Harry Lewis in de Informatica-afdeling, die eigenlijk leerde Bill Gates enkele jaren geleden, en staat hier voor die drie pagina's van fragmenten. Laten we eens een kijkje nemen. HARRY LEWIS: Wat je hier hebt is een vermelding van een vroege stuk software geschreven door Bill Gates en Paul Allen, de oprichters van Microsoft. Dus de code is interessant om twee redenen. Allereerst werd Het eerste product van Microsoft, die een tolk was de programmeertaal BASIC. En ten tweede, dat was een van de eerste pogingen een tolk zo gewoon maken mensen konden personal computers gebruiken. Dus Bill Gates was een undergraduate op Harvard. Ik begonnen met lesgeven aan Harvard in 1974. Dit werd gedaan in 1975. Zo was het in het begin van zijn carrière en in het begin van mijn carrière. Ik heb eigenlijk geleerd Bill in een cursus rond deze tijd. Paul Allen was geen Harvard student, maar hij had een middelbare school geweest klasgenoot van Bill Gates. Als je komen kijken op de lijst, zult u eigenlijk vinden een derde naam, Monte Davidoff, die Gates klasgenoot was hier op Harvard. OK, dus hier is een interessant commentaar hier boven. Het zegt "In 4K kan vierkantswortel verwijderen maar voor loops moet nog steeds werken. " OK, dus wat dat betekent is dat er waren twee manieren om dit programma te compileren. Een daarvan was om te draaien op een versie van deze Altair computer dat alleen had 4K woorden geheugen, 4096 woorden geheugen. Maar de grote versie had 8K. En dus wat dit zegt is dat de 4K versie je moest een aantal verwijderen code om het passend te maken. En een van de dingen dat zou worden geschrapt zou de vierkantswortel routine. Maar blijkbaar de lussen moeten nog werken, zelfs als je het compileren naar beneden voor alleen de 4K-versie van de computer. DAVID J. MALAN: Dus een van de thema's, zoals we zullen zien in de informatica, Hierdoor begrip gelaagdheid en abstractie, en echt op de schouders van mensen die ons voorgingen, niet in tegenstelling tot sommige van de Bill Gates en Paul Allen verhaal hier. En wat dit betekent is dat we vandaag kunnen nemen voor vanzelfsprekend dat de dingen zijn eigenlijk makkelijker voor ons om code te schrijven. Inderdaad code, zoals gezegd op vrijdag, is meer technisch bekend als broncode. En het is dit Engels achtige syntax dat is meer een goede en meer goed gedefinieerd dan iets als pseudo-code, voor waarvoor er geen formele definitie. En vandaag wat we gaan scherpstellen zich broncode dat ziet er zo uit, dat weliswaar op het eerste gezicht ziet er heel cryptisch. En eerlijk gezegd, het is veel meer esthetisch complex dan de onderliggende programma. Al deze programma doet, recall, is wat hebben wij dan zeggen? Hij drukt gewoon "hallo wereld". En toch kijken naar alle van de dingen die we nodig hebben te wikkelen rond die zeer eenvoudige zin. Maar het duurde niet lang allemaal deze lijnen en meer zal veel beter gevoel te maken voor jou. En de stroom is als volgt. Wat we nodig hebben tot onze beschikking is code nemen als bron code die we net zagen. En we een nieuw programma nodig om het uit te voeren door. We moeten algoritmen die kunnen zet broncode, zoals deze, in object code, 0 en 1. Met andere woorden, wat we gaan vandaag leren is hoe dit te doen, schrijven broncode up top, doorgeven als invoer voor een speciale programma bekend als een compiler, en we gaan naar object code te produceren. Dat is gewoon een mooie manier om zeggen dat we iets nemen dat ziet er zo uit, geef het een programma genaamd een compiler, producerende objectcode dat ziet er zo uit. Dit zijn dus letterlijk de patronen van 0s en 1s die worden begrepen door een Intel computer deze dagen, dat, als geïnterpreteerd door de CPU, de hersenen binnenkant van een computer, wordt letterlijk afgedrukt, heel eenvoudig, "hallo wereld". Nu is er veel meer 0s en 1s dan u zou hopen wellicht nodig is om dat te zijn. Maar dat komt omdat we bouwen op een groot deel van de complexiteit dat we voortaan kunnen voor lief nemen. Met andere woorden, veel slimme mensen hebben ons een heleboel coole gereedschappen gegeven en krachtige software waarmee we kan nu projecten van onze eigen te maken. Dus laten we beginnen. Overwegende dat afgelopen vrijdag, en voor Probleemverzameling 0 deze week, je zult spelen in een wereld die er zo uitziet. Vanaf vandaag en voor Problem Set 1 volgende week, de code gaat een beetje meer kijken cryptisch, maar functioneel is zal hetzelfde zijn. Dus kennisgeving, top is Scratch, bodem is C. Eerlijk gezegd Scratch is een stuk gebruiksvriendelijker vriendelijk en toegankelijk. Maar als je nu vergelijkt visueel boven naar bodem, er is een soort van een 1-1 correspondentie tussen de puzzelstukjes en de taal we staan ​​op het punt om mee te spelen. Met name zeggen de blauwe puzzel stuk tot boven, is blijkbaar evenveel als trefwoord of speciale zin in deze taal genaamd C? PUBLIEK: Printf. DAVID J. MALAN: Printf. Dat betekent geformatteerde afdrukken. En dat is gewoon een fancy manier om te zeggen printf in C gaat om een ​​verklaring of een functie te zijn dat drukt iets naar het scherm. Wat betekent het afdrukken op het scherm? Hoe je het ook zeggen naar binnen citaten, de binnenkant van haakjes. Dus nogmaals, toegegeven, er is een heleboel dingen dat je moet in gedachten te houden, haakjes, aanhalingstekens, puntkomma's, en dit alles. Maar dat is een soort van naast de kwestie. Het interessant om mee te nemen voor nu is dat de inspraak blok in Scratch is vrijwel gelijk aan de printf statement in C. Intussen is de gele puzzelstukje tot boven, als groene vlag klikt, waarschijnlijk gelijk wat keyword hier? PUBLIEK: Main. DAVID J. MALAN: Dus belangrijkste. Misschien int, misschien leegte. Maar de belangrijkste soort klinkt als het is belangrijk, en het is inderdaad. Dus als groene vlag geklikt is, nogmaals, het puzzelstukje dat begint een hele Scratch programma. Maar we gaan nu beginnen bellen dat de belangrijkste, deze functie bekend als de belangrijkste. Nu ondertussen zullen we generaliseren dit als volgt. We kunnen noemen zeggen een functie. En het ziet er misschien dit specifiek als. Nou, hoe zit het met lussen? Als we willen beginnen met het omzetten of meer in Scratch vertalen naar C, dit ding hier blijkbaar net zegt "hello world" voor altijd. Dus als je deze associëren scripts met een kat in de Scratch, het is gewoon te blijven zeggen in een soort van cartoon zeepbel, "Hallo wereld, hallo wereld, hello wereld ", tot vervelens toe, voor altijd. Willen we iets dergelijks in te doen C, het gaat om een ​​beetje cryptisch kijken. Maar we kunnen hetzelfde bereiken leidt, zoals we zullen uiteindelijk erachter te komen, met syntax als deze. Ik ga printf opnieuw te gebruiken, want aan het eind van de dag Ik wil afdrukken "hallo wereld". En ik ben blijkbaar met behulp van een trefwoord dat is niet voor altijd. Het is in plaats daarvan het woord tijd. Maar net semantisch in Engels, terwijl soort suggereert een soort van lus of fietsen. Dus dat gebeurt te zijn het zoekwoord dat C gebruikt. En terwijl het waar is, waarom doet terwijl waar effectief voor altijd betekenen? Nou, terwijl, zoals we zullen binnenkort waardeer des te meer, heeft deze haakjes ernaast waar je een Booleaanse uitdrukking kan brengen. En zolang dat expressie waar is, deze code, zoals aangegeven tussen deze twee accolades zoals we ze zullen noemen, zal gewoon blijven opnieuw en weer te lopen. Zo waar is waar. Dus terwijl de echte middelen gewoon dit te doen voor altijd. Het is bijna een domme bouwen om jezelf te uiten. Maar er was geen eeuwig trefwoord in C. Er was tijdje. En er was een zeer eenvoudige Booleaanse uitdrukking als waar. En dus dit, we zullen zien, bereikt hetzelfde resultaat. Hoe anders zou je een lus uit te voeren? Nou, in Scratch je misschien harde code een bepaald aantal iteraties in de loop hier. En dat is dus precies wat we zou kunnen doen in deze versie van C, waarbij we een zogenaamde lus. En de lus hier gaat te herhalen, enigszins cryptisch, van de waarde 0 op maximaal aan maar minder dan 10. Nu variabelen in Scratch. Je zou niet hebben gehad gelegenheid om deze te gebruiken. Maar wat is het punt, in het algemeen, van een variabele hebben we vorige week zeggen? Wat is dat? PUBLIEK: Points. DAVID J. MALAN: Naar punt? Oh, punten. OK, het bijhouden van de punten, bijvoorbeeld in een spel. Of meer in het algemeen te doen wat de variabele? Wat is het nut ervan? PUBLIEK: Memory. DAVID J. MALAN: Ja, dus het geheugen. Het is voor iets op te slaan. En het soort domme visuele Ik gebruikte laatste keer was als deze glazen kom. En als we wilden slaan iets in een variabele, bijvoorbeeld op dit moment de waarde zes omdat zijn zes pingpongballen in hier. Het is gewoon een soort van opslag container die onder de motorkap wordt uitgevoerd met stukjes, 0 en 1, echter een computer gebeurt dat doen. Dus in Scratch, als we een variabele wilt hebben, kunnen we een oranje blok, zoals deze te gebruiken. We zullen dat teller noemen in dit geval. Ik geïnitialiseerd op 0. En wat ik dan doen? Altijd, zeggen teller, die als je speelt met die in Scratch, je zult net zien Scratch. De kat of wat kostuum je op dien zal het aantal spreken betrokken. Verandering teller door 1 is zoals verhogen met 1. En dus dit gaat tellen van wat so what? Van 0 til oneindig, of totdat Scratch pauzes, of totdat je een soort van verliezen interesse in het kijken naar hoe hoog hij eigenlijk kan tellen. Dus hoe kunnen we dit omzetten naar C? Het zal een beetje cryptisch kijken. Maar nogmaals, als je kijkt naar elkaar van deze lijnen individueel ze soort van line-up over het algemeen. Dus blijkbaar int gaat hebben een aantal speciale betekenis in C. We zullen zien dat het opnieuw. Even terzijde: het betekent integer. Dus het betekent gewoon nummer. Dus dat is de aard van de glazen kom ik wil, een die nummers op te slaan, niet pingpongballen. En ik ga het gelijk-teken te gebruiken daar om het toewijzen van een waarde van 0. Dus dat is vrij als set tegen 0, maar in C. Ondertussen, terwijl waar dat was gelijk, natuurlijk, voor altijd, ook al is het een beetje cryptisch, en dan de binnenkant van de accolades. En u kunt denken van deze accolades, waar u kunt typen op je toetsenbord, zo echt zijn als de kromming in deze gele lus blokken in Scratch. Het omvat meerdere regels code. Printf is het krijgen van een beetje eng nu, omdat ik zie niet alleen citeert haakjes. Maar wat nieuw is syntactisch in dit voorbeeld? Er is een procent d. En dan backslash n is er. We zagen dat eerder, zelfs hoewel ik niet vermelden. Dan is er een komma. En dan is er nog een teller. Maar we zullen zien in slechts een ogenblik dat dit slechts een standaard manier om te zeggen druk een "Decimaal getal," quote, unquote, een decimaal getal. Maar ik ga je later vertellen wat dat decimaal getal is. Dus het feit dat er een komma in deze lijn gezegde printf, betekent ga je gang en afdrukken een decimaal getal. Oh, en door de manier, het nummer is ongeacht de waarde van deze variabele. En dus om dit meer te maken duidelijk, zullen we een voorbeeld zien het duurde niet lang met precies printf in de context van echte C programma. Nu alleen in te pakken wat Deze constructen. Booleaanse uitdrukkingen, hebt u wellicht niet gelegenheid om deze te gebruiken in uw programma maar je misschien heel goed, vooral als gebruiksomstandigheden. En dus deze twee voorbeelden uit Scratch bedoel als x kleiner dan y, of als x kleiner is dan y en y minder dan z, hoe kunnen we dat vertalen? Nou, in C is het gewoon gaan uitzien. Iets cryptisch, meer haakjes wat rare ampersands, maar fundamenteel de ideeën zijn zo simpel als ze zijn in het puzzelstukje wereld. We zijn gewoon te controleren of er iets lager is dan iets anders. Hoe zit het met de voorwaarden? In een notendop in het Engels, wat dit doet brok van Scratch code weet zou je dan zeggen? PUBLIEK: Vergelijkt twee getallen. DAVID J. MALAN: Vergelijkt twee getallen en als x kleiner is dan y het zegt zoveel. Als x is groter dan y het zo veel, anders zegt als x gelijk is aan y het zegt zoveel. Nu waar heb x en y vandaan? Wie weet. Deze brok van Scratch code is uit de context. Maar wat wij willen doen is nu te vertalen dit voor slechts een moment om te zien. Dus als je je comfortabel krijgen deze week in Probleemverzameling 0 spelen in deze wereld aan de linkerkant, te realiseren dat de ideeën niet veranderen deze week of volgende of daarbuiten. We gaan gewoon naar beginnen met het schrijven dingen op een andere manier met onze toetsenbord in plaats van onze muis. Als x minder is dan y, en er is wat tussen haakjes er, dan is er een aantal accolades nogmaals soort te kapselen net als de gele puzzelstukjes te doen. En ik ga printf x minder dan y enzovoort. Wat leuk is aan C, zoals je hier kunt zien, is dat je niet deze nesten krijgen, nesten, nesten, dat is noodzakelijk gaat om uw code te duwen naar rechts. U kunt in plaats daarvan hebben alles lineup dit netjes wilt. Maar dat is slechts een esthetische detail zullen we weer zien voordat lang. Oke. Dus dat brengt ons terug naar Deze cryptische kijken programma. Laten we eigenlijk wat code schrijven. Nu hoe ga je over het schrijven van code? Al die jaren dat u in handen een Mac of pc, desktop of laptop, je daadwerkelijk hebt gehad de mogelijkheid om te beginnen met het schrijven van programmacode. Maar je bent waarschijnlijk missen een speciaal soort programma. U kunt zeker code schrijven. Maar je kunt niet per se, uit de doos, zetten dat de broncode in object code, 0 en 1 zonder wat op je computer? PUBLIEK: Compiler. DAVID J. MALAN: Dus een compiler, rechts. Nu de meeste van jullie waarschijnlijk heb een compiler niet de eigenaar, heb nog nooit een compiler gedownload. Maar je zult zien je kunt het downloaden zoals de meeste andere stuk software. In de wereld van Mac OS, zou je downloaden of reeds gedownload iets genaamd Xcode of GCC of Clang. Als je uit de Windows wereld die je misschien Visual Studio hebt gedownload, Visual Basic, omgevingen, zoals dat. Er is tientallen compilers deze dagen dat je zou kunnen gebruiken. Maar de korte van het hier is dat het lastig zou zijn en, eerlijk gezegd, een technologisch nachtmerrie voor de honderden personen met verschillende computer configuraties om alle hun machines te configureren op dezelfde manier zodat we kunnen allemaal op dezelfde pagina. Dus wat we in plaats daarvan doen in CS50 is geven wij u een standaard omgeving, een Linux omgeving die ga een beetje kijken iets als dit. Je zult meer van dit in het zien Probleem Set 1 specificatie die zal online gaan deze vrijdagavond. En wat dit betekent is dat u voortaan zullen in staat zijn om downloaden en installeren van een programma riep de CS50 Appliance. En je gaat downloaden en een ander programma genaamd installeren een hypervisor, dat is gewoon een mooie manier om dit te bereiken. Of u nu eigenaar bent van een Mac of pc of een Linux-computer of een Solaris-computer, of wat gekke operating waarop je draait, je gaat naar een programma te downloaden heet de hypervisor dat is ga naar de CS50 run Toestel op uw computer maakt niet uit wat uw besturingssysteem is. Een hypervisor met andere woorden zet onze spullen naar welke taal dan ook, wat instructies van uw eigen computer begrijpt. Dus dit is een gelaagdheid. En nogmaals, dit is een soort thematische in computer wetenschap, het gebouw op de top van de dingen. Je zou kunnen hebben Windows. Misschien heb je Mac OS. Maar vanaf volgende week ben je gaan te hebben gedownload een vrij stuk software heet de hypervisor. Je gaat een stuk te hebben gedownload van software genaamd de CS50 Appliance. Dat gaat draaien in de hypervisor, die zal draaien op uw computer. En het eindresultaat dat ieder van ons zal hebben een eenvoudig venster zoals deze op uw Mac of pc dat geeft ons de illusie van alle draait hetzelfde besturingssysteem, zonder andere impact op uw computer. En je kan het volledige scherm en het wezen gedragen alsof u werkt met een besturingssysteem genaamd Linux, dat is wat de CS50 Apparaat is gebaseerd op. Dus laten we eigenlijk dit gebruiken nu om een ​​programma te schrijven. U kunt een programma schrijven met behulp van Microsoft Word. U kunt een programma schrijven TextEdit, of Notepad, of WordPad, of vrijwel elk woord verwerking programma die je ooit hebt gebruikt. Maar de realiteit is dat je niet moet Gebruik echt een van deze programma's. Je moet zeker niet gebruiken iets als Microsoft Word, die heeft gewaagde facing en cursief, en groter lettertypen en kleinere lettertypen, omdat de computer niet zorg over een van die. Alle computer gaat de zorg over is Engels als instructies geschreven in C. Dus wat we zullen doen binnen van de CS50 Appliance wordt vrijelijk gebruik maken van een programma beschikbaar zijn, en het is voorgemonteerde deze apparaat, genaamd Gedit. En Gedit is gewoon een super eenvoudige teksteditor, zoals Mac OS's TextEdit zoals Windows Notepad dat gaat kijk een beetje zoiets als dit. Dus laten we eigenlijk niet kijken naar dia's van deze. Maar laten we ook daadwerkelijk in de omgeving zelf. Ik ga om te gaan en aanmelden, in deze andere venster, mijn CS50 Appliance, die ik heb vooraf geïnstalleerd op mijn laptop hier. Merk op dat, zoals Windows en Mac OS, het heeft een aantal menu's. Net zoals Windows het brengt neer er in plaats van Mac OS, dat het daar neerzet. Maar de realiteit is dat het allerlei hetzelfde. En hier is een geheel bos van software. Er is Dropbox. Er is een hele hoop accessoires, grafische programma's die we zullen later te gebruiken in de term voor probleem sets. Er is een web-browser ingebouwd, zodat dat dit een volwaardige computer binnenkant van een computer. Maar ik ga dit klik meest linkse witte pictogram hier, dat is het icoon voor Gedit. En het gaat om een ​​venster te openen dat drie panelen te, een linker, een bovenste en een onderste. Nu is het in deze top juiste is dat Ik ga eigenlijk wat code schrijven. Dus laten we dit doen ,. Ik ga naar Bestand, Opslaan. En je zou niet ooit heb gezien dit venster heen. Maar dit is als Mac OS of Windows. Het is gewoon een raam met alle folders dat ik de binnenkant van deze computer. En ik ga sparen het bestand als hello.c. En ik ga om te gaan vooruit en klik op Opslaan. En nu merk ik heb een tab linksboven genaamd hello.c. Dus waarschijnlijk vrij vertrouwd, zelfs als u hebt niet eerder gebruikt dit bijzondere programma. En nu ga ik te typen in de vrij cryptische reeks van commando's dat zagen we een moment geleden. Omvatten, standaard I / O.h. Meer daarover binnenkort. Int main leegte, geopend krullend brace, gesloten accolade. En dan de binnenkant van daar denk ik waar we hadden "hallo wereld", puntkomma. En nu slaan. Dus dit is een programma geschreven in C, geschreven, dus in de broncode. Maar ik kan niet alleen draaien dit programma. Ik wil dat soort verdubbelen Klik op een icoon ergens, maar andere geen pictogram bestaat dan het broncodebestand. Wat, nogmaals, het proces nu Ik moet dit bestand uit te voeren door middel van? PUBLIEK: Compiler. DAVID J. MALAN: Dus een compiler. Dus op verschillende computers kunt doen dit op verschillende manieren. Maar wat we hier hebben gedaan in de CS50 Appliance dat is representatief voor hoe je zou doen op vele verschillende systemen, wordt ik gewoon naar voert een commando genaamd make. En make gaat letterlijk om dat te doen. Maak me een programma. Dus zorg gaat uitvoeren van een compiler voor mij. En de naam van het programma Ik wil maken is hello. Nu maken is een programma. En zorg is slim genoeg om beseffen dat als ik zeg maken hello, het zal automatisch zoeken naar een bestand genaamd hello.c gewoon omdat dat is de manier waarop het is geconfigureerd. Dus als ik nu druk op Enter hier, dit crazy cryptische lijn ben net uitgevoerd. En geloof me, voordat lang, binnen enkele dagen, u zult begrijpen wat er allemaal van die nonsense middelen. Maar voor nu, weet alleen dat te maken getriggerde uitvoering van een compiler. Met andere woorden, vastgesteld een compiler op mijn computer dat vooraf geïnstalleerde op de CS50 Appliance dat we overhandigen aan u in Probleem Set 1. En toen nam hello.c als input, en blijkbaar geproduceerd 0 en 1 als output. En standaard wat het doet is het bespaart die 0 en 1 in een bestand met de naam hello. En hoewel deze syntaxis ook zou nieuw voor u zijn, simpelweg door te zeggen dot slash hallo gaat het worden middelen waarmee ik dit programma uit te voeren. Voor nu en voor ten minste een paar weken, bijna alle van de programma's We schrijven zullen zijn in zwarte en witte tekst ramen. Geen muizen, geen klikken, geen ramen, geen pictogrammen. We gaan om het simpel te houden en zich richten op de achterliggende ideeën aanvankelijk voordat we iets hoger niveau, bijvoorbeeld zoals de break out spel dat we gesproken over in de eerste les van vorige week. Dus toen ik op Enter hier, het is equivalent in een text-only omgeving te dubbelklikken op een icoon genaamd hello. Wat wil je verwachten gebeuren als ik druk op Enter dan? PUBLIEK: Het zal "hallo wereld". Afdrukken DAVID J. MALAN: Hopelijk het zal "hallo wereld". afdrukken En inderdaad het deed. Nu er is al een aantal cryptische syntax hier. Laten we terugspoelen voor slechts een moment en kijken of we kan niet starten inferring gewoon door knutselen, proberen en falen, over wat er aan de hand hier. Wat als ik te ontdoen van de backslash n? Nu sommigen van jullie die hebben geprogrammeerd voor waarschijnlijk weet meteen wat dat betekent. Maar voor degenen onder u die hebben nooit geprogrammeerd tenminste denk je bij jezelf wat er gaande te veranderen toen ik opnieuw uitvoeren van dit programma? Dus ik ga terug naar beneden te gaan naar mijn kleine zwarte en witte venster, waarin is het venster waarin Ik kan dit compileren. Ik ga hello opnieuw te compileren. We gaan om hetzelfde te zien cryptische reeks opdrachten. En ik ga dot slash doen hello. En nu iemand, als je dat zou doen, die nog nooit eerder heeft geprogrammeerd, wat zou deze keer anders zijn? Yeah. Publiek: Het zal niet stoppen printing "hallo wereld". DAVID J. MALAN: Het gaat om-- spijt? Publiek: Het zal niet stoppen met printen? DAVID J. MALAN: Het zal niet stoppen met afdrukken "hallo wereld". Dus geen slecht idee. Andere ideeën? Yeah. PUBLIEK: Foutmelding? DAVID J. MALAN: Fout bericht, OK, zijn. Wat anders? Publiek: Het kan afdrukken van de beugel met de puntkomma ook? DAVID J. MALAN: Mogelijk drukt de beugel met de puntkomma ook. Dus misschien is dat backslash dan is enige soort terminous dat is belangrijk. Elke andere gedachten? Dus alle goede ideeën. En in feite gaat het tot een foutmelding. Dat is waarschijnlijk het meest waarschijnlijk het antwoord in het algemeen voor de komende weken als we leren om hier te coderen. Maar voor nu vergeet niet dat computers alleen doen wat je ze vertelt te doen. Net als de belachelijke pinda boter en jam bijvoorbeeld. Onze menselijke computers werden pas verondersteld om te doen wat je ze verteld om te doen. Dus in dit geval, als u hoeft de computer niet te vertellen dat knipperende cursor naar de volgende regel, het is niet van plan om het te doen. Dus toen ik dit programma uit te voeren nu, het verschil merken. Ziet eruit als een bug. Het is een esthetische bug, misschien. Maar wat anders is aan dit als functie van de laatste natuurlijk? Yeah. Publiek: Het duurde een nieuwe regel niet. DAVID J. MALAN: Het heeft niet een nieuwe regel te maken. Nu degenen onder u die hebben misschien maakte webpagina's was, kan jij het BR-tag of de paragraaf tag, zeer vergelijkbaar in de geest. Een web browser zal je negeren totdat u precies vertellen wat te doen. Evenzo is een taal zoals C Alleen gaan doen wat je hem vertelt wat te doen. Dus de reden dat al deze voorbeelden, dusver hebben dergelijke terloops had dit backslash daar, dat is het middel waardoor je jezelf te uiten als een nieuwe regel karakter, zo te zeggen. En je kunt soort waarderen, misschien, dat dit soort dom zou kijken als niets anders. Als ik een nieuwe lijn, net raken van Enter en vervolgens soort van het afslachten van de code zoals die moet niet je echt wrijf de juiste manier. En zelfs als je dat niet doet echt zorg op dit punt, zul je je realiseren dat Dit is niet een bijzonder knap stukje code. En dus wat de wereld besloot jaren geleden is dat als je wilt op de vragen cursor op een nieuwe regel expliciet, je moet expliciet zeggen nieuwe lijn, backslash n. En er is een andere symbolen zoals dat. Maar voor nu zullen we gewoon richten op backslash n. Laten we nu te maken van het programma een beetje meer interessant. Ik ga om te gaan en dit keer openen van een nieuw bestand. Ik ga dit zo hello-1.c redden. En gewoon voor de kick, ik ga gaan zet het in mijn Dropbox-map. Zoals u zult zien in de CS50 documentatie voor het apparaat, later deze week voor Problem Set 1, we moedigen je Dropbox te gebruiken of sommige vergelijkbare dienst, omdat dan al je code's gaat worden automatisch een backup gemaakt. En dat is dus de reden waarom ik heb gegaan in deze map hier. En nu ga ik naar een schrijven enigszins ander programma. Omvatten, standaard I / O.h, int main leegte. En dan hier printf, hallo wereld, dat is precies hetzelfde als voorheen. Maar nu wil ik iets af te drukken dat is een beetje anders. Ik wil om uit te printen, zeggen: "Hallo, David." Oke, zo duidelijk, het moet hopelijk het geval dat als ik opnieuw compileren Dit programma, start het opnieuw, het gaat om te zeggen "hallo, David." Maar wat als ik wil introduceren Dit soort variabele de notie van een container dat gaat op te slaan D-een-v-i-d en niet moeilijk code het in mijn programma. Tja, wat als ik start iets als dit te doen? String s, dus dit is een variabele. Als u wilt dat een string, alias een woord of een zin. Een opeenvolging van karakters is wat we in de programmering noemen een string. We gaan gewoon generiek oproep het s, want het is een mooie eenvoudige naam. Maar ik kon het even noemen. Ik ga naar een string s gelijken zeggen citaat unquote "David," puntkomma. En nu wil ik invoegen D-een-v-i-d in wat ik ben druk. En voordat we zagen een teaser op het scherm van een aantal speciale syntax dat liet ons toe om substituut in een waarde. Wat was de speciale symbool een paar slides geleden? Zo procent. Op dat moment was het percentage d voor decimaal nummer. Dat niet echt relevant lijken hier. Blijkt er's een ander percentage symbool, die percent s, wat staat voor een tijdelijke aanduiding voor een string. Dus nu, heel eenvoudig, ik ben ga maken hello-1, omdat dit bestand heet hello-1.c, en druk op Enter. En Ik heb het verknald. Wat is er aan de hand? Nou, hier is waar we moeten beginnen met het waarderen dat we in deze opdracht line omgeving, dit tekst alleen milieu. Er is geen op te klikken zoals mappen nu. En denk terug een moment geleden. In welke map heb ik gezegd Ik spaarde mijn code? Dus de Dropbox-map. Kon zijn iets geroepen. Maar het gebeurt te noemen Dropbox. Dus heb ik een of andere manier moet dubbelklikken op dat Dropbox-map om te krijgen erin en krijgen op mijn code genaamd hello-1.c. In feite, laat me gaan en zoveel mogelijk te beperken dit venster voor slechts een moment. Net zoals Windows en Mac OS, Er zijn mappen in Linux. Er zijn folders in de CS50 Appliance. Het is precies goed nu zijn we beperken ons tot deze tekst omgeving. Maar als ik dubbelklik op Dropbox, ziet er is het bestand dat ik wil compileren. Maar ik heb dit zwart-wit terminal venster, bij wijze van spreken. Maar ik moet dan ook te bewegen in die map of directory. Dus niet alledaagse, maar je zult ook gebruikte om dit te krijgen. In de wereld van Linux, die weer is het bedrijfsresultaat systeem we lopen binnenkant van de CS50 Apparaat, is er een commando genaamd CD. Wat betekent dat ik kan CD, ruimte, Dropbox doen. CD, change directory. Rechts. Terug in de dag wanneer mensen waren uitvinden van computers en exploitatie systemen als dit, wilden ze typt u de minste toetsaanslagen mogelijk. Dus de gemakkelijkste manier om te zeggen change directory was CD. Dus als ik hit CD, ruimte Dropbox, let op wat er hier veranderd. Binnenkant van haakjes Het apparaat is een soort van humoring mij en herinneren me waar ik ben. Dus de geopende map is Dropbox. Als ik nu typ ls voor lijst, nogmaals beknopt, omdat mensen niet willen typt u terug in de dag l-i-s-t. Zodat ze in plaats daarvan maakte het ls. Enter. Let op, ik zie twee dingen, hello-1.c, en dan deze cryptische ding, bron 1m. Dat is gewoon mijn manier om te zeggen broncode voor week 1 maandag. Dat is een map die ik heb gedownload van CS50's website die ik eerder vandaag gemaakt en zet ze gewoon in de apparaat vooraf. Maar voor nu het enige wat we zorg over is het maken van dit programma. Dus toen ik typ maken hello-1, Enter. Damn it. Er ging iets mis. Dus laten we deze plagen elkaar. En helaas is dit waar de dingen een beetje stressvol op het eerste, tenminste als je hebt nooit geprogrammeerd. Mijn god. Ik schreef een twee line programma en Ik heb vier lijnen van fouten. Dus wat is hier aan de hand. Eerst en vooral altijd terug te bladeren up en vind de eerste foutmelding, want vaak compilers gewoon raken in de war door wat jij en ik doen. Compilers zijn behoorlijk dom. Ze zullen alleen maar doen wat je vertelt te doen. En als je ze verwarren, ze zijn gewoon gaat soort gooien hun handen en misschien gooi meer foutmeldingen dan eigenlijk relevant. Dus laten we eens kijken naar de eerste. Super cryptisch op het eerste. Maar let op, hier is de naam van de bestand waarin ik verpest blijkbaar. Colon 5, colon 5 betekent gewoon op lijn 5 in het vijfde teken. Dus vijfde kolom van tekens, als je wil, fout. Het gebruik van niet-aangegeven identifier string. Bedoelde u standaard n? Nee, ik bedoelde string. En dan is het soort kopiëren en plakken wat ik typte echt trek ik mijn aandacht naar de plaats waar ik het verpest. Dus andere reden C, althans de compiler begrijpt niet het woord string. En dat komt omdat we het verzonnen. Dus reeks bestaat niet in C. Wat CS50 doet, de eerste paar weken alleen van de klasse, is bieden wij een aantal trainingen wielen, bij wijze van spreken. En we deze zijwieltjes binnenkant van een speciaal bestand genaamd CS50.h. Dus dit is de tweede van twee bestand namen die blijkbaar eindigen in punt h. Laten we terug te spoelen. Printf is een verklaring of functie dat blijkbaar drukt iets het scherm. Maar je zag me niet implementeren printf, rechts. Iemand jaar geleden geïmplementeerd printf. In welk bestand zou je dat hij inzet of zij zet de implementatie voor printf, de code voor printf? In een bestand met de naam standaard I / O.h. In feite, is het waarschijnlijk in twee bestanden, standaard I / O.h, wat staat voor header bestand, en standaard I / O.c, wat staat voor C-broncode. Zodat hij of zij een aantal jaren geleden plofte de code die ze schreef in dat bestand zodat mensen zoals wij jaar later kunnen opnemen, zogezegd in de eigen programma. En inderdaad, dat is wat het hekje gevolgd door het woord omvatten doet. Het ziet er op de lokale harde schijf, vindt het bestand met de naam standaard I / O.h, en dan effectief kopieën en plakt het binnen mijn eigen bestand. Dus nu mijn programma kent hoe u kunt afdrukken op het scherm. Dus tegen die logica, waar wordt tekenreeks die is gedefinieerd? PUBLIEK: CS50.h. DAVID J. MALAN: CS50.h. En inderdaad, dat is wat wij, de kern personeel, hebben gedaan. We hebben een paar soorten data uitgevonden, zogezegd als een snoer, in aanvulling op degene die je gratis te krijgen, zoals een int. En we zullen anderen zien als een char voor een karakter en een paar meer. Binnenkant van CS50.h blijkbaar is ten minste enkele vermelding van string. Dus nu laat ik doorgaan en herhaling make hello-1. Ik zal weer zoomen en steek mijn vingers. Nu door te hebben gemaakt een veranderen ik vast de meeste dingen. Maar damn it. Meer procenten dan data argumenten. Wat heb ik fout gedaan deze keer? Dus het is nog steeds behoorlijk cryptisch. Maar deze fout is lijn 7 en karakter 21. Dus laten we eens gaan kijken hier. Het is een beetje subtiel. Maar als je nadenkt over wat de fundamentele ideeën hier zijn, misschien kunnen we deze plagen elkaar. Dus printf is de naam van de functie. Haakjes tot dusver is net als wat we zetten rond de spullen die we passeren als input voor een functie. Oke, gewoon een arbitraire menselijke conventie. Gebruik haakjes. Binnenkant van de haakjes we zijn zetten dubbele aanhalingstekens, en dan een string zoals "hallo wereld". Maar in dat eerdere voorbeeld zeer kort deden we kijken met Scratch. En we hadden het percentage d, wat anders was binnenkant van de haakjes dat riep ik verbaal? Yeah. Publiek: Dus het is wat je neemt [Onverstaanbaar] vanuit [onverstaanbaar] wat deze [onverstaanbaar]? DAVID J. MALAN: Precies. Dus hadden we het percentage d. Maar toen hadden we dicht citaat, komma, toonbank. Rechts. We gespecificeerd wat we willen te doen als de tijdelijke aanduiding. Dus wat ik ga doen hier is komma, wat wil je dat ik te zetten? PUBLIEK: S. DAVID J. MALAN: S, omdat in deze zaak is de naam van de opslaghouder. Het is de naam van die glazen kom. Terwijl voor het teller in dat eenvoudige Scratch voorbeeld hebben we gekeken. Dus nu hebben twee gemaakt veranderingen, laat me in te zoomen en probeer het nog een keer te dit programma te compileren. Nu zie ik dat cryptische lijn. Maar dat is eigenlijk de naam van de compiler. Clang is de naam van de compiler. Zorg wordt alleen bespaart me de hoofdpijn van het ooit het typen van die lange gek commando uit. Dus nu als ik dot slash hello-1, Ik moet zien "hello, David." Pretty underwhelming, toch? We hadden kunnen doen dit een stuk eenvoudiger zonder te praten over variabelen en CS50.h en dat alles. Dus laten we het een iets interessanter. Naast CS50.h, met dingen als touwtje verklaard, de CS50 bibliotheek heeft een aantal functies. Dus net als jaren geleden, schreef iemand printf en zet het in de standaard I / O.h en een ander bestand. Wij, de CS50 personeel, schreef een functie riep getchar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, en we zet die in een bestand riep CS50.h en CS50.c. En we zetten ze in van de CS50 Appliance. En mensen kunnen ook download ze online als ze wil om ze op hun eigen computers ook. Dat wil zeggen dat we hebben gecreëerd functies invoer van de gebruiker. Ik weet niet wat er allemaal van deze gegevens types zijn. GetInt is een soort van eenvoudig, zoals krijgt een geheel getal of andere manier van de gebruiker. En GetString is waarschijnlijk net als get een woord of een zin van de gebruiker. Dus laten we focussen op dat. En ik ga om terug te gaan naar de apparaat en ik ga om verder te gaan en sla dit bestand op als, laten we noemen het hello-2.c als mijn tweede versie. En laten we een paar veranderingen. Deze tijd in plaats van harde codering David, die maakt een ongelooflijk consistente maar underwhelming programma, wat als ik in plaats daarvan doen GetString? Let nu op GetString heeft een open haakje, gesloten haakjes, omdat het heeft geen inbreng nodig. Het zal alleen maar gaan halen een string van de gebruiker. En nu een woord op andere syntax. Puntkomma eindigen slechts een regel code. Je ze niet overal nodig. Maar dat betekent dat ik ben gedaan met deze regel code. Laat me verplaatsen naar een andere verklaring of functie. String verklaart een variabele. String is hetzelfde als zeggen geef me een kom, alstublieft. En laat ik een string in. En nu is de gelijk-teken. Wat is de gelijk-teken hoofdzaak gelijk aan? PUBLIEK: Wijs. DAVID J. MALAN: Ja, het toewijzen van een waarde. Als ik bijvoorbeeld call deze functie GetString, en we zullen zien in een moment dat is gaat naar de gebruiker voor een string prompt. Dit is als het laten schrijf me dan D-a-v-i-d op een stuk papier. En als ik touwtje zeggen s gelijk aan GetString, gelijk niet echt zeggen gelijk in C programmeren. Het betekent toewijzen van de juiste kant aan de linkerkant. Dus ik heb een string gekregen. En de gelijk-teken betekent zet het in de opbergruimte genaamd s. En dan gaan deze uit te printf om daadwerkelijk zijn ding doen. Dus het eindresultaat dan gaat een beetje anders uitzien. Laten we niet te maken hello-2. Ofwel zou kunnen werken. Je volgt samen. Maak hello-2 werkte. Dot slash hello-2, Enter. Ik schijn een oneindige hebben lus of iets. Er gebeurt niets. Waarom? Publiek: Het maken van een oneindige lus. DAVID J. MALAN: Het is een oneindige lus. Het is een soort van te wachten tot ik daadwerkelijk te voorzien van wat input. Dus laat me gaan en typt in David, en druk op Enter. En nu zegt "hello, David." Als ik zonder het opnieuw. Laten we eens in Rob, "hallo, Rob." Nu is dit de slechtste gebruikersinterface ooit. De gebruiker is blijkbaar verondersteld te weten wat te doen. Maar maakt niet uit. Met deze zelfde gebouw blokken, net als in Scratch, kunnen we dat probleem op te lossen en te zeggen iets zoals uw naam aub, dikke darm, ruimte, gesloten citaat, dicht haakjes, puntkomma. Dus veel weer onnozelheid met de syntaxis. Maar let op ik heb net een puzzelstukje boven deze en boven deze. Dus nu als ik dit opnieuw uit te voeren, hello-2, Enter. Wacht eens even. Wat is er mis? Het is niet gedraagt ​​elk verschillend. Yeah. PUBLIEK: Je liep niet opnieuw te maken. DAVID J. MALAN: ik deed het niet lopen maken weer, rechts. Dus ik heb mijn broncode veranderd. Maar nogmaals, er is die stroom. Broncode door de compiler geeft je nieuw object code, of 0 en 1. Dus ik moet eigenlijk herneming make hello-2 Enter. OK, iets wat lijkt te zijn gebeurd. Dot slash hello-2. Uw naam aub. En om nu duidelijk zijn, waarom is de cursor op dezelfde lijn? Precies. Ik heb niet zet de backslash n hier in mijn code. Dus nu kan ik schrijven iets als Daven, Enter. Ik kan het opnieuw uitvoeren en typ iets als Gabe, Enter, en krijgen we een ander programma opnieuw en opnieuw en opnieuw. Nu uiteindelijk gaan we nodig hebben een paar verschillende vermogens te gebruiken. We hoeven in te voeren uiteindelijk enkele voorwaarden om dingen voorwaardelijk doen. Misschien loops dus we kunnen doen dingen opnieuw en opnieuw. Misschien zou het leuk zijn als we zijn onze eigen functies kan uitvoeren, alsof we konden onze eigen implementeren printf of onze eigen versie van GetString en GetFlow, want uiteindelijk zelfs het gebruik van deze command line omgeving kunnen we doen zelfs de meest visueel interessante dingen. Inderdaad tot slot wil ik dit doen. Ik ga om te gaan en sluit deze vensters en open dit icoon hier, dat is gewoon een groter versie van dat ingebed terminal-venster. Dus Gedit heeft niet alleen de plek voor mijn code, maar ook een ingebouwde terminal venster, de zwart en wit venster waar ik kan lopen commando. Ik was toevallig openen een grotere versie van deze. En nu ga ik in te gaan de map die ik heb al zet vooraf via de website van de cursus. En ik ga om verder te gaan en opent u een bestand met de naam thadgavin.c, dat werd geschreven door iemand anders. En als we kijken naar dit, Dit is niet het soort code we zullen schrijven sinds het doel van deze code was om de mooiste te schrijven zoek code dat hij of zij kon, ongeacht of niet een ander mens ooit zou kunnen begrijpen deze code. Inderdaad, elk jaar is er wat riep een versluierd C wedstrijd, die is voor de echte geeks die schrijven code die niemand anders kan lezen, maar dat doet iets ofwel echt eenvoudig of echt geweldig. En we dachten dat we zouden sluiten met deze look naar iets dat is nogal verbazingwekkend u misschien al eens eerder hebben gezien. Maar we zullen eindigen op deze nota, dot slash, thadgavin. Dit is dan wat te wachten staat. Dat is het voor CS50. Wij zullen u op woensdag. [Muziek]