DAVID Malan: Dit is CS50, en dit is het begin van een week. En wat we dachten dat we zouden doen, is terug te trekken het gordijn van een inrichting die veel van jullie waarschijnlijk hebben gelopen nu voorbij voor de jaren, maar misschien nooit helemaal geweten wat het is. Dus dit apparaat zal waarschijnlijk kijken bekend bij de meeste van jullie inmiddels. [VIDEO AFSPELEN] -Een triomf van wiskundige en mechanische vaardigheid is deze geweldige nieuwe automatische rekenmachine op Harvard University. Ingewikkelde problemen in de wiskunde te zetten door de machine in gecodeerde vorm op tape worden nauwkeurig opgelost in een minuut fractie van de tijd die menselijke berekening. Ontworpen voor alle vormen van bespoedigen wiskundig en wetenschappelijk onderzoek, de gigantische mechanische brein zal werken voor de Verenigde Staten Marine tot eind van de oorlog. [END VIDEO AFSPELEN] DAVID Malan: Dus dat is wat je ziet in het Science Center, dat is waar die machine nu is gehuisvest. Je eigenlijk maar een deel ervan. Slechts een deel is momenteel te zien, en dat is een apparaat met de naam de Mark I en het in wezen echt een grote rekenmachine. Het werd opgevolgd door de Mark II, en het is van de Mark II dat we eigenlijk krijg een beetje lexicon. Dit is het eerste geregistreerde geval van iets wat je op het punt om alles te worden te bekend met over de loop van het semester - namelijk een bug. Dus het bleek op een gegeven moment de Mark II apparaat functioneerde niet goed, en bij nader inzien, Er was inderdaad een bug - een mot - dat mot - binnen. En sindsdien, hebben we verwezen naar fouten in programma's als bugs. Dus meer op die te komen. Spreken van video ook, als je nog niet heeft, weet dat CS50 is uiteraard gefilmd. De lezingen meestal omhoog gaan direct na klasse in de vorm van een pre-release onuitgegeven formaat, en dan een dag of twee later, we zetten een hogere resolutie en hogere kwaliteit versie. U mag Vanessa, die had het herinneren fortuin van het spelen met Google Glass, die ik me herinnerde aan rekenen deze keer. Dus als je wilt om te komen na de les en te spelen, ze nu moeten werken. En als je wilt zien wat Vanessa zag de andere dag, wat je ziet hier - laat ik het volume te verhogen hier op mijn laptop. [VIDEO AFSPELEN] -Dus laat me wachtrij is dit omhoog. Oke. Dus raak deze. Oke. OK, Glass. Een video opnemen. Oke. Vanessa? [END VIDEO AFSPELEN] DAVID Malan: Oke, dus de reden dat het niet voor de meesten van jullie werkte bij het einde van de les was omdat ik verder om een ​​uur van die opnemen beeldmateriaal wijzend op mezelf na Ik zette de bril naar beneden. Dus vandaag, ik laat ze af, maar bedankt u Vanessa omdat ze zo'n goede sport. Ondertussen, een paar aankondigingen voordat we vooruitkomen vandaag. Dus men, CS50 heeft een traditie van het doen wat we kunnen om te proberen om een ​​zeer maken grote klasse voelen kleiner. En in de richting van dat doel, de meeste elke vrijdag, verzamelen we in een restaurant in het plein, Fire and Ice, met 30 of 40 van je klasgenoten, ikzelf, een aantal van het onderwijzend personeel, en we gewoon hebben een zeer informele lunch. Wij nodigen vaak vrienden uit de industrie, alumni van de klas, alumni van de universiteit, eigenlijk gewoon aan elkaar chatten andere up, praten over het leven na universiteit, het leven op de universiteit, en dergelijke. Dus als je wilt deelnemen aan deze eerste dergelijke lunch dit vrijdag bij 13:15, het hoofd naar die URL op een bepaald punt. De ruimte is beperkt, dus we zullen doen wie het eerst komt het eerst maalt. Maar we zullen dit opnieuw doen op een terugkerend basis, dus geen zorgen te maken als je niet maak het in deze eerste batch. Nu, in termen van de verstrekte middelen curricularly door de cursus, er is een hele hoop, en als je niet trok de website van de cursus reeds, in het bijzonder, onder lezingen, je zult zien dat alles vinden we hebben vorige week is er, zowel in video en een soort van elektronische vorm. Maar afgezien van de video's, vindt u dat er nu full text transcripten, bijvoorbeeld van elke les. Dus als we eigenlijk terug gaan naar dit scherm hier met Vanessa, en navigeer aan de onderste hoek van het scherm, je zult zien dat eigenlijk vinden, niet voor Vrijdag de lezing, maar als we terug gaan naar Woensdag, aangezien deze functie neemt een paar dagen, zult u merken dat u kunt eigenlijk pull up, ten goede of ten erger, elk woord dat ik of een vrijwilliger op het podium gezegd. En meer dan dat. Je kunt eigenlijk zoeken is, kunt u Klik op een van deze zinnen, springen op dat punt in de video, allen jegens en het einde om het materiaal alle meer bevaarbaar. Maar als je liever niet volgen in een dergelijk detail, vindt u, voor Zo, dit kleine menu hier voor 1.5x snelheid, 2x snelheid, of ik f ik al te snel voor u spreken, 0,75 x snelheid. Dus beseffen dat alles is beschikbaar zijn er voor u. Maar buiten dat, voor lezingen, realiseren dat we ook deze middelen beschikbaar. Dia's, voorbeeldcode, iets dat ik doen op het podium of op voorhand van de klas, we zullen er posten zodat je kunt spelen samen thuis of in Sanders. Maar wat we ook gedacht dat we dit zouden doen jaar voor het eerst ook u met walkthroughs deze voorbeelden. Steeds, zoals ik heb nagedacht over de waarde van CS50's lezingen, heb ik begonnen op de vraag hoe nuttig het is voor jullie om daar te zitten, voor mij om op te staan hier, en voor mij om bij je praat, vooral als het materiaal, de voorbeelden, steeds complexer. Want steevast, na enige aantal minuten, iemand zal zone uit, en vervolgens een aantal belangrijke inzichten van sommige miss you Zo, en dan ben je in wezen gegaan voor het resterende deel van de klas, dat is niet het beste gebruik van uw tijd, of, eigenlijk, onze collectief als klasse. En dus wat we dachten dat we zouden proberen te doen, met name voor een aantal van de meer complexe voorbeelden die ik niet zou kunnen doen rechtvaardigheid in de klas, dat we misschien niet tijd voor in de klas, of u kunt net zone tijdens, is We zullen produceren een reeks van deze walkthroughs voorbeelden zodat als je naar, voor Zo, afgelopen vrijdag videopagina hier onder voorbeelden, zult u zien dat voor vrijdag, is er nu dit link naar walkthroughs. En het formaat van deze zal veranderen in de tijd. Voorlopig gebruiken we een eenvoudige YouTube playlist. Maar wat ik deed met ons productieteam daarna werd door elke en elk van die voorbeelden weer, hopelijk wijzen in de veel grotere duidelijkheid precies wat de afhaalrestaurants kan of zou moeten zijn van elkaar. Dus je zult, vinden, bijvoorbeeld ten opzichte van vorig week, alle van de scratch voorbeelden we gingen door zijn lineair gebeuren op die manier. Dus voel je vrij om deel te nemen of niet gaan in dit materiaal. Echt een thema van deze bijzondere cursus is dat er waarschijnlijk meer in de weg van middelen dan u zou kunnen absorberen dan de loop van een semester. Maar dat is een bewuste keuze. Het is bedoeld om te zijn, zodat je als individuele studenten kunnen zelf-select op basis van uw leerstijl. Dus als lezingen voor u werken, geweldig. Indien secties werken voor je, geweldig. Als walkthroughs werken voor je beter, geweldig. Het echt zal zijn aan u om te kiezen welke middelen het beste werken voor jou. Tot slot, dankzij een alumnus van de Natuurlijk bieden we ook een canonieke set van schrijver notities. Dus in plaats van dat jullie hoofden in lezingen gekrabbel van dingen die komen in de klas, wij, de personeel, zal u met wat we voelen zijn een canonieke verzameling van nota's aan bevrijden je van die afleiding, zodat als je hier bent en bezig, je bent echt bezig met wat er gaande is, met je klasgenoten aan het doen zijn op podium, met wat er op het scherm, en niet gewoon opschrijven verbatim wat er met zijn gezegd. Zo realiseert al die middelen zijn voor u beschikbaar. Snijden, in antwoord op een FAQ, zal beginnen deze woensdag. We wezen wachten tot na de meeste andere klassen worden gedaan, zodat we kunnen minimaliseren van het aantal veranderingen dat we moeten doen. Maar komen dit weekend, te beginnen Zondag, zal een eenmalig exemplaar van zijn wat wij noemen super secties. Deze zullen worden gefilmd voor diegenen die niet kunnen bij te wonen, en in wezen, de hoofden Natuurlijk zullen wij wandelen door enkele van het C gedeelte van de cursus, richting van een uiteinde van een probleemstelling, waarvan gaat onze eerste C gebaseerd zijn probleem set. En deze zal gewoon optioneel secties in afwachting van wat er zal geworden terugkerende rubrieken geleid door de cursus 50 plus lesgeven fellows wekelijks. Op zondag of maandag of dinsdag, we hebben 90 minuten secties in een zeer traditionele betekenis, die zal worden mogelijkheden voor handen op en meer intieme herziening van de materiaal cursus. Zonder verdere omhaal, laat me in te voeren hoofden van de cursus, die achter de schermen met mij, waardoor alles gebeuren. Als die hier vandaag kon toetreden mij, Rob en Lauren en Jozef en Lucas, alle van wie er zijn geweest met de Natuurlijk voor bepaalde tijd. RJ is de derde dergelijke lid van ons team. Hij kon hier niet vandaag, maar hij vroeg me om een ​​foto van hem laten zien. Ik weet niet of hij dit wilde een, maar daar is hij. En laat ik alleen voor het team om te zeggen hallo en stellen zich voor, zodat u te leren kennen en uw eigen onderwijs mede deze term. LAUREN CARVALHO: Hi. Mijn naam is Lauren Carvalho. Ik ben een inwoner tutor in Leverett House. Ik ben ook super enthousiast te zijn een hoofd TV voor CS50 dit jaar. CS50 is een zeer uitdagende klas en als een zeer grote klasse, dus als je zich zorgen maakt, als je het gevoel je achter vallen, voel je vrij om reiken aan iemand van ons bij heads@cs50.het, of aan mij, als je zou speel graag met mijn gouden retriever pup. Hier is Lucas. LUCAS FREITAS: He, jongens. Mijn naam is Lucas Freitas. Ik ben een junior [onverstaanbaar] computerwetenschap en linguïstiek. Ik ben eigenlijk uit Brazilië, en ik ook realiseren Oost-Aziatische studies. Dus als je vragen hebt over informatica of taal of iets, laat het me weten. Of CS50, bijzonder. JOSEPH ONG: Hi. Ik ben Jozef. Ik ben een senior studeren computer wetenschap in Elliott House. Dus, laten we eens kijken. Je zult me ​​zien rond het uitvoeren een van deze reusachtige camera. Ik ben de bewoner personeel fotograaf voor 50 als goed, en studenten vaak Soms verwarren me voor een Aziatische toerist. Dus als je me zien met een camera, niet weglopen. Gewoon lachen en wees niet verlegen. En ik hoop dat je geniet van 50. Ik heb er erg van genoten toen ik nam het, en dat is waarom ik heb TFing voor deze drie jaar. ROB BOWDEN: Hi. Ik ben Rob. Dit is mijn vierde semester met CS50. Ik heb net afgestudeerd in mei. Ik was in Kirkland. Ik ben enthousiast voor dit semester, en ik hoop dat jullie dat ook zijn. DAVID Malan: Bedankt voor dit jaar hoofden, en RJ ook. Dus een paar laatste noten op middelen. Een, p set 0 is al omhoog. Deze bestaat alleen in standaard uitgave, die is bedoeld voor het geheel van de klasse. Ab p set 1, zal er hacker edities van de meeste probleem sets, die, nogmaals, zal het materiaal te dekken met een beetje meer van een uitdaging, terwijl nog aan te raken op een aantal van dezelfde onderwerpen. Doe een kijkje nemen op de website van de cursus voor dat de specificatie voor p set 0. Kantooruren, zal ook deze week beginnen, Vanavond, morgen, woensdag, en donderdag in verschillende eetgelegenheden zalen op de campus. Check out cs50.net/ohs voor het kantoor uur voor de cursus, en beseffen dat dit zal zeer toevallige kansen, zeker bij het begin van de semester, door te komen met uw laptop tijdens hersenen pauze. Breng wat vrienden en chat de TFs en CA's natuurlijk met elke vragen die u zou kunnen hebben. En ik kan niet genoeg benadrukken, zelfs voor kras en probleem set 0, er is echt geen domme vraag. Er is geen enkele student te ongemakkelijk om vragen te stellen. Aarzel dan niet om te profiteren van deze bron. Het zal er recurringly zijn het hele semester, zo zal CS50 bespreken. Dit is online discussie van de cursus fora op dat adres daar. Wat we ook zullen doen tijdens de colleges is dit ook controleren, dankzij de docententeam cursus. En dus als je een vraag hebt tijdens lezing, omdat ik iets gezegd slecht of helemaal niet, met alle middelen, vragen dat in real-time als u uw laptop of telefoon op de website, en we zullen ons best doen in de buurt van real-time te reageren. Zijn er nog vragen over CS 50? Dan nog een laatste noten van mij. Die kwestie van SAT unsat. Als je je studie kaarten af ​​te ronden, als u nog niet hebt, beseffen dat de overkoepelende visie op zat unsat, beschikbaar voor alle studenten, is echt om te helpen de rand af van een cursus als dit, om zo te zeggen, zodat als je merkt dat je 's avonds laat, 02:00, 03:00, echt je hoofd bonken tegen de muur waar je weet dat je 99% van de de manier waarop er aan de voltooiing, maar u hebben zo veel andere dingen te doen, Ik denk dat een beter gebruik, vaak, van time studenten 'is inderdaad overgaan tot die andere dingen, zodat u kunt optimaliseren van uw tijd rondom. En SAT unsat is een mechanisme via welke kunt u comfort in het feit dat 99% van de weg is er nog steeds pretty darn good. Op dezelfde manier, ook, als je in de kom Natuurlijk zonder voorafgaande achtergrond of niet bijna net zo veel achtergrond als u denk je klasgenoten zou kunnen hebben, ware of vals, beseffen dat dit een kans om je handen vuil met de cursus, zet je tenen in het water, om zo te zeggen, net zoals ik zelf deed jaren geleden met een pass / fail. Zoals ik al zei vorige week, had deze cursus, net als anderen, niet beschikbaar geweest pass / fail op het moment, ik zou waarschijnlijk niet ooit voet gezet in de klas, hoewel ik deed, vijf weken later, verander mijn geest, die u kunnen net zo goed, en schakel over naar of graded statuut brief. Oke. Dus keken we naar zaken als deze op Vrijdag, en we zijn zeer snel gaan overgang naar iets lijkt meer cryptische vandaag. Maar het is toch de dezelfde fundamentele idee. Wat was de algemene term die we gebruikt om een ​​puzzelstukje te beschrijven die eruit zag als dit? Dus, een verklaring. En u kunt dit elke bellen aantal dingen. Maar we noemen het een statement, en een verklaring gewoon vertelt het programma - of in het geval van Scratch, de sprite - om iets te doen. Gedag zeggen in dit geval. Zoiets als dit hebben we plaats genoemd wat? Ja, dus een Booleaanse expressie. Een Booleaanse expressie is gewoon iets dat is waar of onwaar, en dus Scratch trekt ze met deze vorm, maar ook met een vraagteken op het overbrengen idee dat het antwoord op deze vraag is waar of onwaar, ja of nee een, 1 of 0. En we gebruiken deze Booleaanse uitdrukkingen binnenkant van constructen als deze die wat genoemd wij? Dus, aandoening of bijkantoor. En de voorwaarde die u hier in te zien Kras heeft een kleine tijdelijke aanduiding voor een puzzelstukje van die vorm, het doel daarvan is, zodat u kunt sleep het en zet het op de top en dan dicteren aan het programma als dit Boolean expressie waar is, doe deze set van instructies, deze set van verklaringen, anders doet deze andere set instructies. En herinneren dat u kunt nest deze dingen. Ook al is er niet veel ruimte visueel in dat puzzelstukje, Scratch zal groeien en krimpen te passen ongeacht de puzzelstukjes u slepen en neerzetten er dus je kunt eigenlijk nest dit en hebben een drieweg splitsing in de weg. Indien, anders indien, anders. En je kunt zelfs verder gaan dan dat door nesting verder en verder indien nodig. Dus tot slot, zagen we constructies zoals Dit, ook wel bekend als een lus. En dit is gewoon iets dat doet iets opnieuw en opnieuw en opnieuw. In dit geval toevallig een eindig zijn aantal keren, maar we hebben ook zag een voorbeeld waarbij het aantal keer kwam van een variabele, zodat zou kunnen veranderen. En we zagen ook een ander blok helemaal riep een eeuwig blok dat liet ons toe om lus oneindig lang. Dus een andere constructie die Scratch 2.0 heeft - en die van u meer comfortabel met voorafgaande achtergrond zijn al goed vertrouwd zijn met deze construeren - deze dingen wat genoemd wij? Dus we belden deze functies, anders bekend als de procedures. Er is een klein semantisch verschil, maar we zullen ze gewoon functies aanroepen. En een functie bij Scratch, is een aangepaste puzzelstukje dat u zelf kunt maken, zodat u een nieuw puzzelstukje, in deze dat geval worden genoemd hoest, dat verschijnt onder alle andere beschikbaar puzzelstukjes in Scratch. Hoewel MIT niet uitgevonden dit puzzelstukje, je deed. Dus een functie kunt u nieuwe te maken gedrag, geef het een functienaam en noem het dan, om zo te zeggen. Echt gebruiken in programma's opnieuw en opnieuw en opnieuw, zonder te hoeven wachten voor iemand zoals MIT op de weg naar uitvinden nieuwe functionaliteit van Scratch. U kunt zelf deze puzzel op te bouwen stukken zelf, en ze vervolgens te hergebruiken in uw eigen programma's. En we zullen een terugkerend voorbeeld zien van die van vandaag en verder. Dus vandaag, nu we de overgang om iets meer geheimzinnige. Maar aan het eind van de dag, wat krachtiger en expressief en meer vertegenwoordiger van het pad dat we zullen op alle semester gedurende een aantal van talen - die van een code of broncode. En broncode, zo blijkt, is niet wat een computer meestal loopt eigenlijk. Broncode ziet er iets als dit. Dus dit is wederom misschien de eenvoudigste programma kunnen we schrijven in een taal genaamd C. We zullen beginnen om tease deze apart duurde niet lang, en als dit is echt niet uitziet als Grieks om je nu, geloof me. Binnen een week of twee de tijd, dit zal zijn maar al te bekend en eigenlijk vrij representatief van steeds complexe voorbeelden waarmee je krijgt ook meer comfortabel. Maar je kunt niet zomaar dit uitvoeren soort code meestal. Je hebt om te zetten in iets dat de computer zelf begrijpt. En dus voor dat we iets nodig hebben we gaan naar een compiler te bellen. Een compiler is een programma dat duurt broncode, zoals je net zag, zoals ingang, en het produceert nullen en die als output, anders bekend als objectcode. En het zijn die nullen en enen die zou heel zo uitzien dat uiteindelijk begrepen door uw Mac of pc. Als je ooit hebt gehoord van de marketing uitdrukking Intel Inside, die net betekent dat een bedrijf genaamd Intel heeft vervaardigd de hersenen van uw computer - ook wel bekend als de CPU, centrale verwerkingseenheid - en dat is gewoon het ding dat begrijpt patronen van nullen en enen. En dus door het omzetten van broncode in objectcode door dit proces hier dat zullen we doen met een paar commando's in slechts een beetje, je bent het creëren van patronen van nullen en enen dat de medewerkers van Intel hebben besloten vertegenwoordigen bepaalde uitspraken. Nu, weet ik niet precies weet welke wordt die door slechts een blik op deze nullen en enen. De meeste mensen deze dagen niet. Maar daar ergens een patroon van nullen en enen die vertegenwoordigt de statement print. Ergens zou er anders set van nullen en enen die vertegenwoordigen de notie van eeuwigheid of Herhaal 10 keer of zelfs miauw, als het eigenlijk een programma dat kan zijn sommige geluiden. Dus in het kort, hebben mensen net besloten, net zoals we deden voor ASCII - voor brieven van het alfabet vorige week - mensen hebben besloten dat zelfs meer complexe patronen van nullen en enen vertegenwoordigen meer complex gedrag zoals afdrukken of zeggen of miauwen. En dus voor vandaag, en grotendeels verder in het semester, nemen we voor vanzelfsprekend dat iemand heeft bedacht hoe dat mapping doen. Maar we een daarmee idee lagen bovenop het werk van mensen die vóór ons zijn gekomen, zal voor verleende het feit dat dit gaat over onder de motorkap. Maar we zijn veel meer geïnteresseerd in gebouw dingen die meer interessant op de top van dit alles. En dus inderdaad, het eerste programma dat we schreef in Scratch was dit super eenvoudige een, Hello World. En je kunt denken dat dit als zijnde de hoofdprogramma dat regelt Scratch's gedrag als van afgelopen vrijdag. Vandaag gaan we beginnen te vertalen Kras puzzelstukjes in broncode in deze taal genaamd C zodat leek dit op Vrijdag, vanaf vandaag verder, is nu gaat uitzien. Weliswaar meer cryptisch. Het is vrij storend en soort van geest verdovende om alle citaten te zien en de puntkomma en haakjes enzovoort. Maar als je begint iets te negeren niet begrijpen, en echt kijken in de kern van de witte tekst op de scherm, zeker zie je, zoals ik dat doe, "Hallo, wereld." Dat de lijnen met de paars verklaring tot boven, en het blijkt erop dat het zoekwoord belangrijkste gaat line-up conceptueel met als groene vlag geklikt. Dus met andere woorden, terwijl in Scratch, we deze Hello World programma uit te voeren met die twee puzzelstukjes, in C, we gaan om het uit te voeren met deze vier enigszins cryptisch lijnen. Maar als we dieper ingaan op deze, zul je zien dat elk van deze witte letters op het scherm daadwerkelijk heeft een aantal belangrijke betekenis, en de meeste van onze programma's gaan kijk structureel helemaal hetzelfde. Dus een verklaring, om duidelijk te zijn, wat leek "zeg hallo wereld" op Vrijdag gaat beginnen kijken zoals dit op maandag. printf ("hello, world"). En er is een aantal rare backslash n, er haakjes, er is puntkomma. Maar aan het eind van de dag, de toets afhaalmaaltijden vandaag is dat al zijn we het doen is het vertalen van dingen uit beeld vormen naar de vorm van tekst. Zodat een lus die leek deze vorige week gaat nu kijken zoiets als dit. En laat me wijzen, net als in Scratch, er is op verschillende manieren te bereiken van hetzelfde doel. Hetzelfde in C. Ik ben niet tonen u de enige manier om dingen te doen, maar een manier om vertalen dit voor altijd blok een lus C. Deze hier, herhaal dit 10 keer. Deze echt soort bochten de erg de eerste keer dat je het ziet. Maar dat voortaan voeren, we gaan een gebruiken lus, zo te zeggen. En duidelijk er is een aantal syntax dat is een klein areaal met I en gelijk en 0, maar zodra we duiken in dat vandaag verder, je bent gewoon gaan om te zien dat dat is allemaal gewoon te doen wat elementaire rekenkundige om ons uit 0 Op tot 9 of 10 in dit geval. Ten slotte, met variabelen, zult u herinneren dat een variabele is een stukje van de opslag. Nou, wat we hadden aan de linkerkant is er afgelopen week gaat een beetje te kijken zoiets als dit deze week. Maar nogmaals, meer daarover te komen. We hadden Booleaanse uitdrukkingen, die vorige week, leek dit. Deze week verder, ze gaan beginnen om een ​​beetje uitzien als dat. En deze is eigenlijk een beetje geruststellend. Het is eigenlijk bijna net zo eenvoudig de groene blokken. Maar hier hebben we, opnieuw, een aantal nieuwe syntax met ampersands, maar u kunt misschien denk dat het in Scratch, je Zeg A-N-D, blijkbaar in C, zijn we gaan zeggen ampersand-teken. Maar dit alles zal worden natuurlijke duurde niet lang. Voorwaarden. Vorige week, leek het Deze links. Deze week, aan de rechterkant, het is gaat zien dat. Maar nogmaals, de sleutel mee te nemen is dat als je ziet dat soort dingen op rechts, en vooral als minder comfortabel, het is een soort van over je hoofd, krijg je een beetje overdonderd dat Ik heb echt geen idee hoe ik het kon eventueel komen met dat vanuit het niets - no pun intended - gewoon beseffen dat het echt hetzelfde idee dat waarschijnlijk voelde zo veel meer natuurlijk de vorige week. En zelfs als je niet hebt gedoken in probleem set 0, ik durf u zult vinden dat de puzzelstukjes zijn vrij intuïtief, althans worden zo in de tijd. Dus laten we duiken inch Laten we onze handen vuil hier met Deze eerste eenvoudige programma. En eenvoudig is natuurlijk relatief. Om dit te doen, ga ik schermen veranderen om dat apparaat Ik belde de CS50 apparaat. De CS50 apparaat is een fluitje van een software die draait binnen een venster op mijn Mac, en je kunt ook lopen het in een venster binnenkant van je pc, dat kan ik exact dezelfde zijn computeromgeving elk TF, zoals elke CA, zoals elke student in de klas. Omdat het CS50 apparaat letterlijk een ander besturingssysteem genaamd Linux - specifiek Fedora Linux - en wij, het personeel, hebben geconfigureerd het installatieproces voor deze besturingssysteem zodanig dat, er is een klein CS50-logo in de midden, twee, is er een aangepast menu op de bodem, en drie, pedagogisch, We hebben de gebruikersinterface vereenvoudigd zoveel mogelijk, zodat wanneer u eerst opstarten dit ding op uw eigen Mac of pc, je hebt dezelfde milieu als iedereen, en u hebben alle tools die je nodig hebt voor de cursus zonder te achterhalen hoe u elke installeren en elk instrument afzonderlijk. Dus dit ziet er relatief zoals Mac OS of Windows. In de linker bovenhoek, je wezen hebben een menu Start van sorteert, of een Apple-menu. En dan heb je wat wij vermoeden zal zijn uw drie meest voorkomende pictogrammen. Een daarvan is Chrome. Er is een browser binnen van het apparaat. Twee is een programma genaamd gedit, die we zagen kort vorige week, dat is gewoon een grafische editor. En drie is een terminal programma, dat is een zwarte en witte venster van weleer die ons in staat stelt om meer te typen arcane maar krachtiger opdrachten bij onze toetsenbord. Dus ik ga om verder te gaan en klik op gedit, en er zeker van dat probleem set 1, worden vrijgegeven op vrijdag, zal loop je door al deze dezelfde stappen. Merk op dat ik heb een vrij eenvoudige gebruikersinterface met drie delen. Aan de linkerkant, ik heb een grote lege venster genaamd broncode. Dat is waar ik ga om een ​​samenvatting te zien van een code die ik schrijf. Aan de rechterkant, ik heb een groot tabblad, momenteel gered, en dat is waar mijn code gaat gaan. En onderaan, heb ik een ingesloten Terminal-venster, een zwart-wit prompt waar ik kan commando's typen om compileren en om mijn programma's te draaien - dat is, te maken en om mijn programma's te draaien. Dus laten we beginnen simpel. Laat me gaan omhoog naar Bestand, Opslaan. Ik ga om te gaan en gaan in jharvard. Dus het apparaat, ongeacht hetgeen uw naam is, behoort tot een man genaamd John Harvard, die een jharvard huis directory binnenkant waarvan al uw bestanden zal gaan. Het is uw eigen exemplaar van zijn rekening, dus we zijn niet allemaal delen dezelfde harde schijf. Je hoeft alleen de illusie van John Harvard's eigen. Van tevoren, ik eigenlijk geïnstalleerde Dropbox. Het apparaat wordt geleverd met preprepared Dropbox, zodat als er iets mis gaat tijdens het semester, als u hebt geconfigureerd apparaat met een vrije Dropbox-account, al je bestanden wil automatisch een back-up, zodat je kan heel gemakkelijk ze te herstellen. En ik ga om te gaan in mijn Dropbox directory, en er gaat al te zijn een paar andere dingen zijn er. Maar ik ga om verder te gaan en ga naar Bestand, Opslaan. Ik ga om te gaan in jharvard, Dropbox, en hier, ik ga geef mijn programma een super eenvoudige naam, hello.c, en vervolgens opslaan. Dus ik heb nu dezelfde interface. Het enige dat is veranderd is het tabblad boven. Dus ik ben heel snel gaan om te recreëren dat programma uit de schuift een moment geleden. Dus in main (void), en dan printf, "Hallo, wereld," een enigszins cryptische backslash n, dicht citaat, sluit haakjes, puntkomma, en vervolgens Ctrl S te redden. En merk als een terzijde wat er net verscheen hier in de linkerbovenhoek. En dit is niet nuttig vandaag, maar nuttig verloop van tijd zal zijn. Je ziet alleen maar, nogmaals, een samenvatting van de code die je hebt geschreven. En omdat ik iets genaamd schreef belangrijkste, dat is de reden waarom het woord hoofd geknald up daar. Maar voor het grootste deel, we niet nodig dat vandaag. Oke, dus ik beweren dat dit is mijn eerste programma geschreven in een programmeertaal taal genaamd C. We weten van vrijdag dat wat dit ding gaat doen zeer uninterestingly toen ik draaien het is gewoon geven - in andere woorden, drukken, als computer wetenschapper zou zeggen - hello wereld op het scherm. Dus om dit te doen, zult u merken dat ik heb om hier beneden te gaan naar mijn terminal raam, en nu heb ik een knipperende prompt. Dit is nu een toetsenbord versie mijn John Harvard home directory. Het is een toetsenbord manier via welke om mijn harde schijf te navigeren. Dus ik kan niet echt typen zoals ik deed vorige week te maken hallo, want het is gaat geen regel te zeggen tegen doelwit maken - er is iets mis. Ik weet niet precies wat dat bericht betekent, maar dat komt omdat standaard, wanneer dit zwart en wit venster is geopend, ben ik de binnenkant van John Harvard's home directory. Maar waar heb ik dat programma op te slaan? In mijn Dropbox-map. Nu, ieder van ons zijn opgegroeid met computers waar je gewoon dubbelklikken op het pictogram van een map, het opent, en voila. Dat is waar het bestand met de naam hello.c zou zijn. Dus in feite, laten we dat doen. Laat me ga je gang en het minimaliseren van gedit net zoals u zou doen op Windows of Mac OS. Laat me gaan in het huis map linksboven. Ik zal hier zie een heleboel mappen. Hier is mijn Dropbox-map. De vinkjes betekent dat het is al gesynchroniseerd. En er zijn een paar dingen in hier, maar merkt dat hello.c is inderdaad daar. En dus in Mac OS of Windows, normaal, Ik zou dubbel klikt dat, het opent in welk programma, en ik ben goed om te gaan. Maar nu, in ieder geval vanaf vandaag, we nodig hebt om een ​​stap terug te nemen alleen maar om geven u een aantal basis gereedschappen voor uw tool kit waarmee om meer te doen krachtige dingen duurde niet lang. Dus bij deze prompt, ik moet het doen equivalent van te dubbelklikken op het Dropbox-map. En om dat te doen, ga ik CD typen voor veranderen directory, Dropbox, in te voeren. En let nu op de haakjes bij mijn zogenaamde prompt zegt nu dat ik in tilde, de kleine kronkelende symbool in de linkerbovenhoek van de meeste toetsenborden, / Dropbox. Dit is slechts korte notatie voor zeggen mensen, je bent nu de binnenkant van de Dropbox-map, net alsof je dubbel had geklikt op. Dus als ik nu ga je gang en typ maken hello, voer, zie ik een zeer cryptische commando, maar geen foutmelding, zo lijkt het, en vervolgens andere knipperende prompt. En als je te herinneren, ooit zo snel op vrijdag, we deden dit. . / Hello. Wat je gaat zien is het resultaat van mijn lopende dit programma, of, in Mac OS en PC termen, als ik normaal zou verdubbelen Klik op een programma -. een app programma of een. exe, het opent een raam en afdalingen. Te typen. / Hello is net als dubbele klikken op een programma om het uit te voeren, maar met mijn toetsenbord. Enter, hello wereld. En dat is het. Dus laten we plagen deze uit elkaar om zo het voelt niet te veel zoals Grieks. Zo. ​​/ Betekent wat? Iedereen die ooit genavigeerd een toetsenbord omgeving als deze, wat is dot verwijzen naar? De huidige directory. Dus de huidige directory is gewoon een synoniem voor een map. Dus door te zeggen dot slash, zeg ik, op zoek naar een programma genaamd hallo in het huidige directory - in de huidige map. Met andere woorden, mijn Dropbox-map. En dat is waarom hitting Voer daarna eigenlijk loopt dat programma. Als ik nu het type LS, merken dat ik zie alles in mijn Dropbox-map. Getting Started.pdf, die Dropbox geeft u gratis, mijn foto's directory, een openbare map, Niet-opgeslagen Document 1 die ik maakte per ongeluk een daarnet, foo.c, die ik eerder gemaakt vandaag, en vervolgens twee lijnen - hello.c en hallo. Hello.c is het programma dat ik schreef met gedit, en wat is hallo in het groen? De hello in het groen is het uitvoerbaar. Met andere woorden, als ik liep deze opdracht een moment geleden - laat me roll terug in de tijd - toen ik liep te maken hallo, dat is de middelste stap hier. En het duurde hello.c als input - AKA broncode - en het produceerde een bestand met de naam hello als output, die bevat al deze nullen en enen. En dat is waarom, in het einde, ik kan daadwerkelijk uitvoeren van een commando als. / hello. Vanwege Intel Inside, mijn besturingssysteem systeem, Linux, opent die nullen en degenen, voedt ze in de hersenen van mijn computer - de CPU - en dat de CPU weet, oh, hier is een patroon van nullen en enen die zegt Druk de volgende ding op het scherm. Wat is het volgende ding? Quote unquote, "hello wereld." Oke, dus een korte samenvatting van enkele van deze commando's, zodat we kunnen beginnen nemen ze voor lief. Laat ik verder met waar we gebleven waren. En u zult zich herinneren dat we hadden CD op onze back-end een moment geleden. Deze zijn, ik durf te zeggen, voor huidige doeleinden - misschien deze week - het enige commando dat we misschien moet typen op de opdrachtregel prompt naast maken. Dus CD stond voor wat? Verander de map. Het is gewoon het equivalent van dubbele klikken op een map. En als een terzijde, als je verloor ooit binnenkant van uw apparaat, zodat Dropbox - Ik wil terug naar mijn jharvard directory - bij twijfel, CD, voer, zonder andere woorden, en het gewoon ritsen je terug naar waar je begon, welke is een leuke kleine snelkoppeling. Oke, dus nu andere opdrachten. LS. Ik dat een moment geleden getypt. Wat denk je dat LS voor staat? Dus, lijst, toch? Terug in de dag, wanneer mensen kwamen met deze opdrachten, zij probeerden om efficiënt te zijn, en in plaats uittypen L-I-S-T enter, zij besloten LS. Dat is prima. Het klinkt genoeg als lijst. Laten we gewoon het type LS voeren, en dat staan ​​de bestanden of mappen in mijn huidige map. mkdir, kunt u waarschijnlijk wel raden. Maken directory. Dus je hoeft niet naar bepaalde menu bestand en kies Nieuwe map in deze omgeving. Integendeel, het commando mkdir spatie typt u en vervolgens de naam van de map dat u wilt maken, en het zal gebeuren. rm, kunt u waarschijnlijk wel raden. Verwijderen of te wissen. Dus als je wilt een bestand verwijdert, zult u zien in het probleem set hoe je kunnen dit doen. En rmdir, verwijdert directory. Dus nogmaals, ik de neiging om te vliegen door een aantal van deze gegevens, een, want ze zijn niet allemaal zo leuk om te besteden tijd op, maar twee, zullen wij u voorzien in veel meer detail in een van de probleem cursus stelt, in het bijzonder de standaard edities, elk van de stappen die je nodig zou kunnen hebben om dit te typen dat je meer en meer comfortabel met deze dingen. Maar nu laat me plagen elkaar een ander ding. Toen we getypt maken hallo even geleden, we zagen een cryptische reeks commando. We zagen, nogmaals, maak hello. OK, laten we dit doen. Ik stond op het punt om een ​​fout te maken, maar [Onverstaanbaar] nu toegeven dat ik stond te en bewust doen. Wat heb ik verkeerd gedaan net nu? Ja, dus ik ben niet in de Dropbox directory, want een ogenblik geleden I getypte CD en gewoon druk op enter. Die me ingezoomd terug naar waar ik begon, dat is niet waar mijn dossier is, dus ik moet echt te doen CD Dropbox voeren, en nu kan ik rm hello doen voeren, verwijder regelmatig file hello. Ik weet niet waarom het zo cryptisch. Die net betekent bent u zeker u wilt hallo verwijderen? U kunt y typen voor ja, in te voeren, en nu is het weg. En als ik nu typ maken hallo nogmaals, het is ga mijn objectcode recreëren, recreëren die nullen en enen. Maar wat is de deal met deze zeer lange commando? Nou, we zullen deze plagen elkaar het duurde niet lang, maar zorg - Ik vertelde een beetje een leugentje om bestwil vóór - geen compiler. Maken is een programma dat automatisch cijfers uit hoe je een run compiler voor u. Dus de opdracht die je echt zou moeten zijn lopen om hello.c zetten in hello ziet er eigenlijk een beetje meer als dit. En God verhoede we moeten eigenlijk vergeet niet om ooit typen dat hele reeks opdrachten uit. Het doel van te maken in het leven is om vergeet niet dat de mate van complexiteit van ons en automatiseren wat anders zouden doen erg vervelend werk. Maar ik kan benaderen dat. Dus per deze kleine spiekbriefje hier, ik kunnen benaderen wat dat commando is doen door simpelweg te typen Clang, dat is de naam van de compiler zullen we het gebruik van dit semester. Als een van u ooit hebt gedaan iOS ontwikkeling voor de iPhone of iPad, Clang is het programma dat u hebt gebruikt binnen Xcode om je apps te maken. Clang, hoewel, is gewoon een ander programma waarvan we de naam kunt typen op de opdrachtregel prompt, en door de invoering van dit bedrijf, Ik kan iets dat een te introduceren weinig representatief opdrachten komen. Dus laat ik dit handmatig doen. Dus rm hallo, en nu het bericht in geval Ik heb, net als een sanity check - . / Hallo, wat denk je dat ik moeten zien als ik dit doe? Een soort van fout. Geen dergelijke dossier directory. Zodat men eigenlijk vrij direct. Dus nu laat ik het scherm te wissen. Controle S wist alleen het scherm om wat afleiding te verwijderen. En nu ga ik handmatig Type clang-o hello hello.c. Dus wat is dit over te doen? Precies hetzelfde wat te maken deed voor ons, maar ik wist weg te gooien sommige van de overbodige woorden. Clang is het programma dat gaat neem een. c-bestand als input en produceert nullen en enen als output. Maar-o voortaan zullen noemen een schakelaar of een vlag. Dit is slechts techie jargon voor het zeggen Dit is een woord dat je typt op een prompt dat een of andere manier het gedrag beïnvloedt van het programma je draait. Dus wil iemand raden wat-o overbrengt? Uitgang. Het is gewoon iemand besloten-o betekent uitgang van een bestand hallo geroepen en nemen als ingang, ongeacht het laatste woord over de prompt is, hello.c, zodat als ik hit Voer nu, niets lijkt te gebeuren. En vreemd genoeg, in deze wereld van programmering, als er niets gebeurt, dat is waarschijnlijk een goede zaak want er is geen fout bericht op het scherm. Hallo, Enter. Mijn programma is nu uitgevoerd. Maar ik kan stomme kleine dingen doen zoals deze. Clang-o, hihihi, hello.c, voeren, en nu heb ik een identieke programma genaamd hihihi. Het gedraagt ​​zich hetzelfde, maar de naam is anders. Dus dit is alleen maar om te zeggen dat als je wilt het gedrag van een invloed programma, we gaan steeds meer zie dingen geroepen command line argumenten. Dit is een lijn. U typt opdrachten. Ergo, command line. En command line argumenten zijn slechts woorden of kleine stukjes van de syntaxis die andere manier invloed op het gedrag van programma's die we lopen. Oke, dat is misschien wel de meest saai programma kunnen we schrijven en zien. Laten we nu iets doen interessanter. Laat me ga je gang en maak een nieuw bestand. Ik ga om te gaan en slaan deze in John Harvard's home directory als, laten we noemen het custom.c, te zijn een beetje aangepast programma. Ik ga in te zoomen op mijn top van de tabbladen hier en opnieuw beginnen. Zijn standaard stdio.h. Meer op dat in een moment. int main (void), meer op dat in een moment. printf ("hallo, David"). Veel interessanter, toch? Dus nu als - niet omwille van mijn naam, gewoon omdat het anders - maken gepersonaliseerde voeren. Aangepaste, hello, David. Maar zelfs dat, ook dat is een leugentje om bestwil. Dit programma kan net zo goed worden genoemd David.C, want het is niet op maat gedrag helemaal. Echt, ik wil een programma dat vraagt de gebruiker voor hun naam. Dus hoe moet ik dat doen? Nou, laat me bladert u omhoog hier. En voordat ik een verklaring in Kras, voordat ik gebruik printf, ook wel bekend als een functie, laat me eerst de gebruiker om invoer te vragen. Dus om dit te doen, moet ik doe een paar dingen. Een, ik heb een plek op te slaan van de gebruiker noemen nadat ik hem heb gevraagd of haar voor. Wat construct moet ik waarschijnlijk gebruik tot een waarde als dat slaan? Een variabele. Dus in tegenstelling tot Scratch, waar je gewoon een leuke puzzel stuk, hier, we moeten Gebruik uiteraard woorden ons uitdrukken. En voortaan, wanneer u maar wilt een woord of een zin, in de programmering, we gaan roepen dat een string. Dus een string is een woord of een zin. Het is een reeks van nul of meer personages, meer formeel. En als je wilt dat een dergelijke variabele te bestaan, je te zeggen geef me nog een. En de manier waarop je dat doet is aan zeggen touwtje s puntkomma, waar s kan worden alles wat je wilt. In feite, is een beetje underwhelming. Laat ik verder gaan en meer duidelijk noemen naam. Geef me een string genaamd naam. Maar nu, wat is de persoon naam standaard? Nou, als de mens niet iets typt in, natuurlijk, er zal tot geen waarde in naam zijn. En het blijkt in C, als je niet geven een variabele een waarde, het gaat om hebben een vuilnisbak waarde. Het zou kunnen hebben een aantal willekeurige nullen en degenen, dus je bent gewoon gaan om te zien vuilnis, echt, op het scherm als je probeert om het weer te geven. Maar ik kan bevestigen dat door te zeggen, eigenlijk, winkel binnenkant van de naam van de volgende waarde. De manier waarop je slaan waarden in variabelen is Als u een variabele naam op het hebben links, moet je een of andere manier zetten wat je wilt opslaan in het op de juiste, en de syntaxis voor die gaat zijn als volgt. We hebben dit niet eerder gezien, maar neem op geloof voor een moment dat er Er bestaat een andere verklaring in de wereld dat ga ik weer bellen functie, en deze functie riep krijgen string. En het doet letterlijk dat. Het krijgt een of andere manier een reeks tekens van de mens en vervolgens er iets mee doet. En dit betekent eruit cryptische syntax. Normaal gesproken, als je gebruik maakt gelijkheidstekens - je bent in de wereld van, zeg, algebra, en je bent eigenlijk zeggende x is gelijk aan 1. Hier zijn we niet zeggen dat naam gelijk krijgen string. We zeggen store in naam van wat is aan de rechterkant van die gelijk-teken. De gelijk-teken vertegenwoordigt de opdracht operator. Het is de syntax die zegt gezet wat er op de rechterkant binnenkant wat is links. Dus maak je string is een nieuw stuk functionaliteit die niet alleen iets - vraagt ​​de gebruiker om een ​​string - keert het ook, zo te zeggen. Dus laten we eens zien wat er gebeurt hier gebeuren. Ik ga nu verder te gaan en uit te zoomen, en ik ga een paar te krijgen fouten bij mijn prompt. Ik ga typen maken gepersonaliseerde, in te voeren. Wow. Een hele hoop fouten. Oke, dus dit is een soort van overweldigend, zeker in het begin, maar blijkt al deze zeer weliswaar cryptische foutmeldingen zijn verwijzing naar bepaalde patronen we beginnen te zien in de tijd. Dus dit zal ik plukken uit, want het is de eerste. Gebruik van niet-aangegeven id string. Dat betekent gewoon dat gedit of Clang, in dit geval, niet weet wat ik bedoel met string. En dat komt omdat in C, de programmeertaal taal, is er eigenlijk is geen variabele van het type string. C weet niet dat strings bestaan. Maar wij, CS50 personeel, doen. En dus op voorhand van de klas, we maakte een file CS50.h. En de binnenkant van dit bestand - en meer over de syntaxis te komen - binnenkant van dit bestand is een definitie van wat ik net gedefinieerd mondeling als een string. Dus gewoon door het sluiten van deze ene lijn van code in mijn programma, ik ben nu onderwijs gedit en maak en Clang allemaal op hun beurt wat een string is. Ik weet niet hoe nog niet. In een paar weken, we zullen schil terug die laag. Maar voor nu, weet dat dit leert de compiler wat een snaar eigenlijk is. Dus nu laat ik duidelijk mijn terminal hier beneden. Laat me re-run maken gepersonaliseerde, en ik opgelost al deze problemen. Dus ook dit gaat zijn een terugkerend thema. Ik schreef slechts een 9 line programma, en toch had ik 18 lijnen van fouten. Dat is een beetje intimiderend. Maar beseffen dat ze vaak cascade dergelijke dat een klein foutje triggers de verwarring voor de compiler, en het lijkt veel erger dan het is. Dus nu een scherpzinnig waarnemer zal weten dat ik krijg een string uit de gebruiker, maar ik ben niet echt doen wat met het? Ik ben niet werkelijk te doen niets mee. Dus als ik eigenlijk weer op maat draaien, het gaat er gewoon zitten. Wat is er gaande? Mijn programma lijkt te worden geplakt op welke lijn, zou je zeggen? Dus het is eigenlijk vast op lijn 7. En we hebben dit niet eerder gezien, maar op lijn 7, is er, nogmaals, dit verklaring, krijg string. En het doet wat het zegt. Het is nu wachten op de mens de tekenreeks nemen. Dit is volkomen intuïtief voor mij, de mens, want ik heb niet verteld wat te doen. Maar laat mij ga je gang op geloof en laat me doen alsof ze Rob. Enter. Dat is niet het programma dat ik beoogde. Dus hebben we onze eerste blog. Maar laten we proberen te beredeneren door waarom dit het geval is. Ten eerste wil ik deze eerste probleem op te lossen. Laat ik voeg een regel hier die zegt printf, wat is uw naam? Laten we het gewoon doen dicht citaat, sluit haakje. Laat me nu opnieuw start het programma. Probleem. Ik zie niet dat. Rechts. Ik heb niet opnieuw compileren. Dus in een taal als C, omdat u veranderen de broncode betekent niet dat u uw object code zijn veranderd om nieuw object code te genereren, nieuwe nullen en enen. Je moet hercompileren. Als ik nu opnieuw uit te voeren op maat, voer, ah, een beetje meer duidelijk. Mijn naam is Rob. Nog buggy. En ik zou beweren dat er een paar bugs nu. Dit ziet er gewoon afschuwelijk, eerlijk gezegd. Willen, minimaal, zou ik een ruimte is er, of verplaats de cursor naar de nieuwe lijn. En eigenlijk, nieuwe lijn. Dat is een soort van een sleutelzin hier die we hebben gezien, maar niet gedefinieerd. De manier waarop krijg je een tekst door te gaan naar de volgende regel, je hoeft dit niet te doen. Dit is verwarrend voor de computer. Dit ziet eruit als twee aparte lijnen code, geen van beide is volkomen juist. Je moet in plaats daarvan worden meer expliciet en zeggen, geef mij een nieuwe lijn, die we vertegenwoordigen in c met backslash n. Dus er is een paar van zulke tekens. Backslash n zal dat esthetische vast. Laat ik mijn programma opnieuw compileren. Laat me re-run mijn programma. Dit ziet er beter uit. Het is nog vrij primitief, maar het is ook nog buggy. Dus er is een - zelfs als je nog nooit hebt geprogrammeerd, kunt u waarschijnlijk nemen een gok op waarom dit programma is nog steeds gebrekkig. Wat heb ik nodig om dat te doen Ik heb nog niet gedaan? Dus ik moet eigenlijk doen iets met de naam. Net als in het niets, je zou eigenlijk toekennen van een variabele zoals n of tegen te gaan zoals wij deden vorig week - een waarde. Maar als je niets doet met het, niets gaat gebeuren. Oke, dus laten repareren. Laat ik typ mijn variabele daar, en laat me hier naar beneden gaan. Laat me opnieuw compileren, laat me re-run, Rob. Nu ben ik gewoon een idioot, nietwaar? Dus dit is niet echt om me verder. Maar dat was een volkomen natuurlijk instinct, zou ik pleiten, toch? Indien de variabele heet naam en I wil het er naartoe te gaan, waarom doe ik niet alleen Typ het daar? Nou ja, natuurlijk, hebben we tot nu onderscheiden tussen wat is een string? Merk op dat citaat unquote hier, hello naam? Dit eigenlijk zelf is een string. Het is hard gecodeerd. Het is niet van de mens. Het is van mij, de oorspronkelijke programmeur, maar het is nog steeds een string. Dus als je letterlijk schrijft N-A-M-E binnen van een string, wat er gaat krijgen gedrukt? Nou, N-A-M-E. We in plaats daarvan moeten om printf vertellen, worden niet afgedrukt out letterlijk noemen. Print de waarde van de naam. En om dat te doen, doen we het volgende. En dit is slechts een menselijke conventie. We in plaats daarvan zeggen% s, en dat staat voor string. En dan aan het eind van mijn nauwe citaten, Ik ga een komma te zetten en passeren een tweede argument in deze verklaring. Ik ga daar typt u de naam. Dus nu zien we een iets nieuwe syntax. We hebben nog twee haakjes, en voortaan wil ik zeggen dat het spul tussen haakjes staat argumenten in een functie - ingangen die een of andere manier gaan om zijn gedrag te beïnvloeden. Dus door die logica, hoeveel argumenten doet printf lijken te zijn nemen op dit moment? Dus het lijkt te nemen van twee, en dat is inderdaad geïmpliceerd door de komma hier. Dus dit is een argument in tussen aanhalingstekens. Hoewel het een komma in, alles is in aanhalingstekens, wat betekent het is een lang koord. Komma, variabele naam. Dus nu laat me uit te zoomen. Laat ik deze opnieuw starten. Rob. Verdomme, wat heb ik verkeerd gedaan? Oke, dus je moet hercompileren. Dus nogmaals, gemakkelijk fouten te maken vroeg weer op. Dus nu opnieuw uit te voeren op maat, Rob, invoeren, en voila. We hebben nu een aangepast programma. Dus ik heb nu een programma dat met behulp van een paar kenmerken die vermeldenswaard zijn. One, Ik gebruik CS50.h, anders bekend als CS50 bibliotheek. En de binnenkant van de CS50 bibliotheek zijn functies die andere mensen schreven - namelijk het personeel - voor u te gebruiken, en krijgen string een van hen. Binnenkant van lijn 2 is stdio.h, en waarom is dit er? Neem een ​​gok. Wat er bestaat binnenkant van standaard IO ouder? Printf. Dus printf, je hoeft niet overal te zien anders op het scherm. Het moet komen met de computer of andere manier. Waar komt het vandaan? Het is de binnenkant van - het is verklaard, zo te zeggen, de binnenkant van een bestand met de naam stdio.h. Nu, voor dit soort dingen, we komen terug om uiteindelijk, want het is een beetje afleidend voor nu. Dit verwijst naar onze terugkeer type. Dit verwijst naar een argument. Maar voor vandaag, we zijn gefocust gewoon hier op deze lijnen. Dus string naam, gewoon om samen te vatten, wat heeft dit voor mij doen? Dus het verklaarde een variabele van het type string. Dus het bedoeld is voor woorden, niet voor nummers. Net als een terzijde, als ik wil het om een ​​nummer te zijn, zou ik zeggen iets als int. Als ik wilde een floating point zijn waarde, iets met een decimale punt, Ik zou vlotter zeggen. Maar voor vandaag, ik heb net gezegd string. En ik heb deze variabele gegeven een naam van naam, maar ik kon hebben genoemd niets. In feite, oorspronkelijk, ik noemde het S. Dit hier is gewoon een statement. Hoeveel argumenten is dit verklaring nemen? Dus het is gewoon het nemen van een, en dat is gewoon een esthetische details van weergave van iets op het scherm voor mij. Wat is deze lijn 8 te doen in lekentaal? Het is steeds een waarde uit de gebruiker - namelijk een string - en wat doet het met het? Het is in wezen af ​​te voeren naar de man aan de linkerkant van de gelijkteken zodat in dit geval de Naam variabele kan eigenlijk slaan. En dan printf is een andere voorbeeld van een functie. En we zeggen tegen een functie aan te roepen. Om een ​​functie te gebruiken is om een ​​functie aan te roepen. Dit ding blijkbaar neemt twee argumenten. Dit een, komma, deze. Deze zelf is slechts een string dat een tijdelijke aanduiding bevat. % S betekent gezet andere string hier. En dus door de invoering naam na de komma, dat is het invoegen dat ding voor mij. Dus ik kan andere dingen nog steeds doen. Laat me nu ga je gang en doe een beetje van een dom programma, maar laat me dit te verwijderen, en laat me maak een lus. Terwijl waar. Het symbool true is natuurlijk altijd gaat om waar te zijn. Dus wat voor soort lus ik induceren door het schrijven van een regel als deze? Dus een oneindige lus, toch? Net terwijl waar. Er is geen manier waarop ik kan het woord veranderen trouw aan iets anders te zijn, dus dit is gewoon voor altijd draaien. Dus als je ooit daadwerkelijk een programma gehad in je Mac of pc die lijkt te hebben opgesloten, of het doet iets en iets, en je gewoon kan het ding te stoppen, tenzij je niet krijgen herstart uw computer of trek de Taakbeheer of dergelijke, Hier is zo'n voorbeeld. Ik kan zeggen: "Ik ben een buggy programma." Sluiten citaat, sluit haakjes, puntkomma. Dus nogmaals, let op de patronen. Hoewel sommige van onze syntax is nieuw, het zoekwoord terwijl, het zoekwoord waar, merkt dat ik hetzelfde heb soort accolades. Ik heb een puntkomma en haakjes. Dus nu laten we gaan vooruit , en slaat deze. Maak douane, douane. Dus op dit punt, heb je niet nodig om herstart uw apparaat, oke? Dus de eenvoudige les hier is met twee vingers, Controle C, we zullen dat programma stoppen. Maar je kunt precies zien waarom dit ding werd zelf steeds weer herhalen. Ik kan iets doen complexer als een teaser. Ik ga om te gaan en het volgende zeggen. Voor int, dat een geheel getal i slechts een generieke naam die we geven aan de meeste variabelen in de programmering als je gewoon tellen, gelijk aan 0. Laat ik verder gaan en zeggen terwijl ik is, laten we zeggen, minder dan 100, i plus plus. We gaan terug naar deze syntaxis, maar dit betekent gewoon increment ik opnieuw en opnieuw. En wat wil ik hier te doen? Printf, "ik kan tellen op i." Dit is een buggy programma. Wat heb ik hier eigenlijk van plan? Procent niet s, maar je zou niet raden deze. % D is een decimaal getal. Komma i. Laat mij terug te rollen. Laat ik nu opnieuw compileren met make. Laat ik nu opnieuw uit te voeren met aangepaste. Ik kan echt verdomd snel bij het tellen Ik schrijf een programma als dit. Laten we nu iets een doen weinig onbedoeld. Wat dacht laten we dit doen terwijl ik groter dan of gelijk aan 0. Wat dit gaat veroorzaken? Dus logisch, dit is niet zo verstandig, want nu als ik dit opnieuw uitvoeren, hertelling, Ik kan nu rekenen heel, heel hoog. Helaas, ongeveer zo hoog als ik kan count is 4 miljard, dus dit gaat een tijdje duren. Dus waarom doen we dit laten zoals onze cliffhanger, met de belofte dat op Woensdag zullen we zien of dit programma wordt gedaan. Twee, we introduceren hoe je jezelf schrijf uw eigen functie, zodat heel snel, tot woensdag, wij zullen, zoals we overgang van Scratch in C, start schrijven ooit steeds complexer programma's die veel doen, veel meer dan dit. Wij zullen u dan zien. [Applaus] LUIDSPREKER 1: Bij de volgende CS50, Puzzle Day was een succes.