LUCAS FREITAS: OK, denk ik nu zijn we leven. Welkom bij CS50 Supersection. We zijn minder comfortabel. Mijn naam is Lucas Freitas. Ik ben een CS50 Head TFS. Dit is Lauren. LAUREN CARVALHO: Hoi, ik ben Lauren. Ik ben ook Head TF voor CS50. LUCAS FREITAS: Vandaag gaan we gewoon gaan om een ​​overzicht van wat alles wat je geven jongens hebben geleerd in een week, hopelijk om jullie een goede zin om wat u moet weten voor het probleem set een. Gewoon een paar mededelingen. Allereerst kantooruren. Kantooruren gebeuren van maandag tot en met donderdag in verschillende huizen in Annenberg elke dag. Ze zijn een zeer goede bron voor je jongens te komen en vragen te stellen, en praten TFS, en zelfs uitwisseling ideeën met andere studenten. Dus zorg ervoor dat die bron gebruiken in uw voordeel. Het tweede ding is de CS50 Appliance. Voor de laatste [onverstaanbaar] jullie niet om daadwerkelijk een apparaat. Je deed gewoon alles in uw personal computer. Maar voor dit probleem, je eigenlijk een virtuele machine, dus Zorg ervoor dat u de CS50 downloaden Apparaat en stel het in. En de derde ding is zeker start de ASAP ligt net probleem want het is veel gemakkelijker te vinden helpen wanneer je in de het begin van de week. Omdat mensen de neiging om te wachten tot de laatste seconde om het probleem set beginnen, en dan ga je naar de kantooruren, en er is een heleboel mensen. Waar als je op maandag, je gaat om te zien dat je TFs kunt praten vrij veel voor de hele nacht, en ze gaan meer dan helpen u graag. LAUREN CARVALHO: Kan ik gewoon stoppen u voor slechts een seconde? Is iedereen in staat om te downloaden geweest de CS50 Appliance? Hebben mensen geprobeerd? LUCAS FREITAS: Om te downloaden, door de Zo kunt u de instructies krijgen op cs50.net/appliance. LAUREN CARVALHO: Juist. En het duurt een tijdje voor onze sys admins om je een licentie sleutel, dus meld je aan voor de gratis proefperiode eerste. Die manier zal u het voor 30 dagen hebben, en dan wachten op uw licentiesleutel waarin zij moeten geven aan u voor een jaar. LUCAS FREITAS: Allereerst, laten we praten een beetje over de CS50 Appliance. De CS50 Appliance is eigenlijk een virtuele machine die je gaat draaien in uw eigen computer, die is principe waarop een ander computer in je eigen computer. Dat is pretty cool. En eigenlijk is het overal gebruikt. Mensen die naar tech zou weten dat dit wordt gebruikt de hele tijd. u? Kan meerdere computers in een apparaat. Laten we eigenlijk eens een kijkje nemen in het apparaat. Als je naar het apparaat na registreren, je gaat te hebben om zet je naam en log in op Harvard dan kunnen we u alle geregistreerde. Ga je eigenlijk zien enkel een behang, en dan Thuis en Prullenbak, en dan deze kleine pictogrammen. Deze drie iconen zijn eigenlijk de meest belangrijke dingen die je kunt hebben in uw apparaat. De eerste is gedit, een tekst editor, net zoals Kladblok of als elke vorm van tekst-editor. Het is gewoon iets dat we gebruiken om te schrijven code en doe dingen met het. Het tweede ding dat we hier hebben is Chrome. Dus als je nodig hebt om het internet te gebruiken in het toestel, dat is wat je kunt gebruiken. En het derde punt is de terminal, dat is eigenlijk heel lief. Mensen zijn meestal soort bang voor de terminal omdat het deze zeer ouderwetse toepassing waarin u gewoon eigenlijk typt alles met uw toetsenbord. Er is niet veel interactie met je muis. Maar eigenlijk de terminal doet zeer goede dingen. Allereerst, laten we gewoon gaan door sommige opdrachten die u kunt gebruiken in de terminal. LAUREN CARVALHO: En voel je vrij om te stoppen met ons op als u vragen hebt. LUCAS FREITAS: Yeah. Dus de eerste opdracht die we hebben de terminal ls. ls betekent in feite lijst alles, alle de bestanden en alle bestuurders, dat ik op de plaats waar ik ben op. Dus als ik ls doen hier, ik ga om te zien dat ik sommige mappen. Ik heb de desktop, de downloads, de logs, en de vhosts. Dat zijn in het blauw omdat ze zijn alle mappen. Dan heb je een aantal andere bestanden. Je hebt als hallo en hello.c, die zijn gewoon bestanden, en ze zijn in verschillende kleuren. Dus dit is een zeer belangrijke opdracht net u kunt zien wat zijn de bestanden en mappen die je hebt in de map die je op in de terminal. Als je ziet jharvard @ toestel en dan het kleine symbool daar, de tilde, dat betekent dat dat de map die u op dit moment. LAUREN CARVALHO: Het typen van ls is bijna zoals het klikken op de map die wordt vermeld daar, in het shows u alle inhoud die in die map. PUBLIEK: Is er tekst na de hello.c? LAUREN CARVALHO: Oh, dat kan niet zien dat, omdat het blauw. LUCAS FREITAS: Het zegt logs en vhosts. LAUREN CARVALHO: Dat zijn gewoon andere mappen. Het spijt me, het is echt moeilijk om te zien. Misschien als we de lichten uitgeschakeld? Colton, wil je proberen en vinden de lichtschakelaar? Sorry daarvoor. Ik heb er niet over nagedacht. LUCAS FREITAS: Maar het is eigenlijk - ja, als je zou kunnen - LAUREN CARVALHO: Zoom in uw scherm. LUCAS FREITAS: Ik niet hebben die functie. LAUREN CARVALHO: [onverstaanbaar]. OK. Nou, er is gewoon veel natuurlijk licht in deze kamer ook. LUCAS FREITAS: Laten we gewoon aannemen dat zijn er twee andere mappen daar. LAUREN CARVALHO: Gewoon geduld met ons. Dit is het enige deel dat u zult kijken naar de terminal. LUCAS FREITAS: De volgende opdracht is eigenlijk misschien wil je organiseren uw bestanden - bijvoorbeeld al uw C-bestanden in een directory-maar je hoeft niet een directory alleen voor C-bestanden nog. U kunt in principe een map gebruik van de terminal ook, die is hetzelfde als rechts te klikken en zeggen Nieuwe map. De opdracht is het maken directory, die is mkdir, dus eigenlijk "maken" en "Directory." En dan kun je de de naam van de directory. Laten we zeggen dat ik wilde worden genoemd, Ik weet het niet, laten we zeggen pset1 Doen dit heb ik zojuist een directory. Laten we maar eens kijken dat het er is. Dus als ik ls doen, nu zie ik logs, en dan pset1, en dan vhosts. Dus ik heb de nieuwe map daar. En dan nadat je hebt een nieuwe map, misschien wil je navigeren in, zodat de volgende opdracht deze cd, die net in feite betekent dat naar een specifieke directory. Dus als ik wil naar pset1, Ik kan het gewoon doen cd pset1. LAUREN CARVALHO: cd staat voor verandering directory, [onverstaanbaar] kunnen onthoud dat. LUCAS FREITAS: En nu zie je dat in plaats van gewoon met jharvard apparaat, heb ik jharvard apparaat, en dan pset1, want het toont me waar ik ben in deze computer. Nu als ik wil om terug te gaan naar de directory dat was voordat dit een, ik kan een cd dot dot, wat betekent gewoon gaan doen naar de map die ik vroeger was, als de ouder van deze directory, in principe. En nu zie ik dat ik terug naar jharvard. Het volgende ding dat ik het kan doen is rm, dat is verwijderen van een bestand. Bijvoorbeeld, laten we eerst doen ls om te zien wat ik hier heb. Ik heb hallo en hello.c. Laten we zeggen dat ik ze wil verwijderen. Ik kan rm hallo doen. Het zal zeggen "verwijderen regulier bestand hallo? 'En ik zeg "ja." En als ik nu doen ls, zie ik dat het meer is er niet. Als ik probeer om rm gebruiken voor een map, echter, gaat het niet om u te laten iets te doen. Het gaat om te zeggen, hey, u kan een map niet verwijderen. Dus hebben we dit andere komen genaamd rmdir, wat betekent gewoon eigenlijk verwijderen directory. Ik kan, bijvoorbeeld, verwijderen pset1. En als ik ls doe, doe ik niet meer hebben. Heeft u vragen over dit? Nee? Yeah? PUBLIEK: Is het belangrijk dat je weggaat een spatie na - wanneer u maar beginnen iets te typen in? LUCAS FREITAS: Yeah. Als ik dat doe zoals cd-en de directory, Ik moet een ruimte te zetten. Welke ruimte heb je het over? LAUREN CARVALHO: De ruimte tussen cd en [onverstaanbaar]. LUCAS FREITAS: Ja, je moet zet de ruimtes, omdat cd is de commando, en dan de volgende string die je type is in principe de directory. Dus het is als een argument. Yeah? PUBLIEK: Wanneer u een lijst van al die zijn verschillende mappen, toch? LUCAS FREITAS: Ja, ze zijn in de directory. Publiek: Wat is het verschil onder de directories? LUCAS FREITAS: Ze zijn gewoon verschillende mappen. Directory is een map in uw computer. PUBLIEK: Map openen. LUCAS FREITAS: Ja, het is gewoon een open map. LAUREN CARVALHO: Over hier, degenen die zijn in het blauw zijn de werkelijke mappen die u kunt krijgen in en zie je een heleboel dingen die binnen die, dat is jammer want je kunt niet echt gelezen die in blauw. En degenen die in het wit zijn gewoon bestanden die binnen de huidige directory. LUCAS FREITAS: Dus directories zijn mappen. De anderen zijn bestanden. Publiek: Wat is het commando om het te resetten of om het te wissen? LUCAS FREITAS: U wilt wissen? LAUREN CARVALHO: U wilt wissen? LUCAS FREITAS: Ik denk is het "duidelijk." Yeah. Dus je typt gewoon duidelijk of uw scherm is te rommelig. Andere vragen? En je zult een heleboel andere leren commando's gewoon van nature in de semester omdat ze zeer nuttig. Dus nu laten we praten over het compileren. We spraken over pseudocode en broncode en object code. En er is veel van codes, en misschien Jullie zijn in de war over. Laten we praten een beetje over wat er gebeurt als je het schrijven van een programma, en je het compileren, en het wordt een uitvoerbaar bestand. Dat zijn allemaal woorden die jullie waarschijnlijk gehoord, en misschien ben je niet echt zeker wat er gaande is. Laten we zeggen, bijvoorbeeld dat ik wil Schrijf een programma dat zegt "hallo." De eerste ding dat komt in je geest is je soort van probeer te denken aan hoe je bent dat gaan doen in je geest, en ben je waarschijnlijk denken in het Engels of een andere taal, zoals natuurlijke taal, waarschijnlijk. En dan denk je, nou, als ik wil, bijvoorbeeld een programma schrijven dat zegt "hallo" Ik zou een programma te starten, Ik zal drukken hallo, en dan zal ik stoppen met het programma. Dit is pseudocode. Dit is gewoon eigenlijk je probeert te komen met een reeks gebeurtenissen dat je gaat doen om zijn staat een programma te schrijven. Dan heb je de broncode, en de broncode hoeft niet specifiek in C. We praten over de broncode in C, want dat is de taal die we leren, maar natuurlijk code kan vrijwel elk zijn programmeertaal die je hebt. Later in het semester, je gaat om andere talen te leren. Dat is ook de broncode. Bijvoorbeeld, hier, dit is mijn bron code, en dan ben ik ook een bibliotheek, en dan begin ik belangrijkste, en dan print ik. En Laura gaat een beetje praten beetje over dit alles. Dus dit is de broncode. En wat is het object code? Het object is een stelletje nullen en degenen, in principe. Wat er gebeurt is dat je in eerste instantie pseudocode, dat is allemaal in het Engels. En ik bedoel, je begrijpt het. Waarschijnlijk je vrienden begrijpen het, en de meeste mensen zouden begrijpen het idee. Maar computers zijn echt dom, en ze niet begrijpen Engels, dus je hebben dat vertalen in iets, meestal vertaald in een aantal programmeertaal. En je kunt denken aan een programmering taal als als een soort van taal dat u vertellen wat uw computer hoe te spreken en te begrijpen. Je bent in principe iets schrijven in een taal die zowel van u en uw computer te begrijpen. Dat is de broncode. Dus gaan vormen pseudocode om de bron code, het is aan jou. Het is eigenlijk je doet je programma. Maar het probleem is dat de computer niet eens begrijpen programmeertaal. Die het niet begrijpt broncode helemaal. Het is eigenlijk gewoon begrijpt nullen en enen. Dus we hebben dit zeer magische ding heet een compiler, die in feite gaat krijgen de bron genoemd die u schreef in een taal die de zowel u en uw computer te spreken, en nu ben je zal transformeren dat nullen en enen. Dus eigenlijk wat de compiler doet is het wordt broncode, in dit geval C, het gaat om te zetten in nullen en degene die de computer begrijpt en kan een maken uitvoerbare bestand van te maken. Is dat logisch? Je kunt gewoon denken aan de compiler als een soort vertaler die die u helpen uit te leggen aan de computer precies wat het verondersteld wordt te doen. Maar hoe kan ik compileren. Laten we teruggaan naar de Appliance gaan, en laten we zeggen dat ik doe dat programma. Eerst ga ik een map aan te maken hier, en ik ga noemen "Praktijk." Nu ga ik om te navigeren naar de directory, dus cd praktijk. Nu ben ik in de praktijk. Nu wil ik gedit starten, dus hoe moet ik dat doen? Ik kan of klik hier, of ik kan gewoon letterlijk type "gedit", en het gaat te openen voor mij. Nu ga ik mijn programma te typen, dus precies wat ik schreef in de dia. Ik verklaar een bibliotheek. Ik doe int main, nietig. En nu ben ik bezig printf, hello. Nu ga ik deze op te slaan. Laat ik het in de praktijk, en Ik ga dit hello.c noemen. Dus nu is opgeslagen. Als ik wil om het te compileren, ik eigenlijk kan het doen op twee verschillende plaatsen. Ik kan dit doen in een terminal venster, dus dit grote, of u kunt Gebruik gedit dat eigenlijk een terminalvenster hier. Zo kun je heel gemakkelijk gewoon doen uw code, en dan kun je gewoon typen wat hier, en proberen om het te compileren. Dus hoe kan ik code te compileren? De makkelijkste manier die we hebben is met behulp van maken, hetgeen een functie is in principe gaat compileren uw code. Je hoeft alleen te zeggen te maken hallo, zodat "Make" en de naam van het programma. Oeps. Dit is lastig. LAUREN CARVALHO: Kun je [onverstaanbaar]? LUCAS FREITAS: Sorry. Ik heb niet op te slaan in de juiste directory. Komen om te oefenen, en nu sla het op als hello.c. Het spijt me. Nu is opgeslagen. Laat me gewoon doen ls en zijn zeker dat het hier is. OK, nu is het hier. Dus nu als ik maak hallo, spuugt een heleboel dingen, maar dan is het gewoon geeft me een andere lijn voor de terminal, die betekent dat het succesvol was. Dus nu als ik een ls weer, ik eigenlijk zie dit bestand in het groen, dat is de uitvoerbaar bestand. En dan als ik wil het uit te voeren, dat alles Ik moet doen is dot slash hello. Het gaat om hallo te zeggen hier, dus het is precies wat ik het vragen om. Er is nog een manier van samenstellen, die met behulp van Clang. Clang is gewoon een compiler die we hebben, en het is een beetje meer verbose om compileren. Maar het werkt net zo goed. Dus als ik kletteren, en dan-o, en dan doen de naam die ik wil geven aan het uitvoerbare bestand, dus laten we zeggen "Hello." En dan het bestand dat ik wil te compileren, hello.c. Het gaat ook om te compileren. En je hebt het bestand hier, en Ik kan het gewoon voer het ook. Dus beiden werken. Is dat logisch? Heeft u nog vragen? Publiek: Kunt u inzoomt in een klein beetje? LUCAS FREITAS: Sorry? PUBLIEK: Zoom in? LAUREN CARVALHO: Ik denk dat je kan gewoon Command Plus. LUCAS FREITAS: Command wat? LAUREN CARVALHO: Command plus. LUCAS FREITAS: Nee. LAUREN CARVALHO: Oh, dat is niet gaan werken, omdat - het is omdat we de resolutie instellen voor dit ding. LUCAS FREITAS: Ik niet denk dat we kunnen vergroten Ja, we kunnen niet inzoomen. Heeft u een vraag? Sorry. Publiek: Kunt u clang herhalen? LUCAS FREITAS: De klank? Clang is hetzelfde als merk, maar de verschil is dat ik eerst ga naar clang, dat is de opdracht te schrijven, dan ga ik doen -0, allemaal, dat is precies wat we gaan later leren als een vlag. Dus denk gewoon dat je altijd moeten de o zetten. En dan de eerste, je gaat zetten de naam van het uitvoerbare bestand, in feite het bestand dat u bent gaat maken. Dus ik kan zeggen, bijvoorbeeld, hello2 en vervolgens het bestand dat ik wil compileren, dat is de c-bestand.. Dus dat is hello.c. Is dat logisch? PUBLIEK: Hallo wat? Wat is dat? LUCAS FREITAS: hello.c. En als ik het compileren, en als Ik weet ls, ik heb ook een hello2 dat ik net samengesteld. En als ik probeer om het uit te voeren, gaat het om doen precies hetzelfde als hello, gewoon uitprinten hello. Publiek: Hoe komt voor het merk u kunt hello.c na zetten? LUCAS FREITAS: In make, je hoeft niet de. c zetten. In make, je gewoon zeggen de de naam van het programma. Je hoeft niet te. C zeggen. Maar voor Clang, je moet. PUBLIEK: Met Clang heb je ook moeten de [onverstaanbaar] toe te voegen LAUREN CARVALHO: Yeah. Dus je moet ook naar de bibliotheek. LUCAS FREITAS: Ja, dat is iets gaan we later gebruiken. Dat heet koppelen, en ik denk dat we gaan later over praten. Een andere vraag? PUBLIEK: Zet u een dot slash kletteren? LUCAS FREITAS: Nee. De dot slash is gewoon te openen het uitvoerbare bestand. Dus kletteren, je schrijft "clang," en dan is het als u wilt openen de uitvoerbare bestand dat u zojuist gecompileerd, dan heb je dot slash en de naam. Is dat logisch? PUBLIEK: Als je zou gewoon verandering [Onverstaanbaar] om hallo wereld, doe je moet het opnieuw compileren? LUCAS FREITAS: Yeah. als ik wil zeggen, bijvoorbeeld, "hello daar: "Ik kan het gewoon redden het nu, en ik gewoon het opnieuw compileren. Dus laat ik doe een make hallo. En als ik dat doe hallo, het gaat om zeggen "hello there." Zinvol? Andere vragen? PUBLIEK: Moet je ook de standaard I / O om het werk te coördineren? LUCAS FREITAS: Yeah. De standaard I / O is in principe de bibliotheek die een heeft implementatie voor printf. Dus dat ding rechts op de top omvat stdio. Dat is inclusief een bibliotheek die heeft in principe een heleboel verschillende tools die u kunt gebruiken. een? Van hen is printf die een functie dat in principe afdrukken berichten naar het scherm. Andere vragen? Nee? OK. Dus nu laten we praten over - LAUREN CARVALHO: Laten we gewoon ga naar de stijlgids. Wilt u vind het gewoon hier? LUCAS FREITAS: Dus we gaan om te praten over stijl. LAUREN CARVALHO: Oh, David niet af. OK. Waarom gaan we niet terug te komen stijl aan het einde? Het is eigenlijk bijgewerkt als we spreken. LUCAS FREITAS: Yeah. Laten we weg voor David om te voltooien dat. LAUREN CARVALHO: Kan we eigenlijk te schakelen? Dus ik hoop dat iedereen is geweest genieten van Scratch. Helaas, het is tijd om weg van deze verplaatsen - helaas is het tijd om af te stappen van deze mooie programmering blokken op naar C. Maar gelukkig, alle van de programmering construeert dat je hebt gewerkt met in Scratch zijn direct vertaalbaar naar C, en we zijn gaat om te beginnen om te leren over een aantal van hen op dit moment. Laten we eerst praten over voorwaarden in Booleaanse uitdrukkingen. Deze draait op reserve batterij. LUCAS FREITAS: Hoe is dat niet? OK. Je gaat er heen, ga ik het krijgen - LAUREN CARVALHO: Dus voorwaarden belangrijk omdat ze ons laten introduceren logica in onze programma's. Hier is een voorbeeld van een aandoening binnen een C programma. Laten we eens zien hoe dit - Dus deze voorwaarde blok hier, dit printf statement zullen niet worden uitgevoerd tenzij de toestand binnen de haakjes, n groter dan 0, de waarde true. Nu, alle omstandigheden in f verklaringen zijn Booleaanse uitdrukkingen, waardoor er zijn slechts twee opties. Ze kunnen ofwel de waarde true, of ze kunnen evalueren op false. Dus hier, dus dit is logisch, toch? n groter dan 0, betekent dat het een positief nummer, waardoor deze wordt afgedrukt out "u een positief getal geplukt." Er zijn tal van Booleaanse uitdrukkingen de aandoening kan vormen met een init statement. We hebben minder dan. Dit is minder dan of gelijk aan. Dit is gewoon een grappig [onverstaanbaar]. Als u wilt dat de printf optreden als het groter dan of gelijk aan 0, dan je zou dit kiezen. Dus de gelijke precies voegt rechts na het groter dan teken. Gelijke gelijke, die verschilt van slechts een gelijk-teken, gelijke gelijk eigenlijk betekent dat alles wat op de linkerzijde hiervan is hetzelfde als wat er aan de rechterkant van deze waar men gelijk-teken is wat? Wat is slechts een gelijk-teken? Opdracht. LUCAS FREITAS: Wie zei dat? Is dat snoep? Oh, nee. Sorry. Sorry. Jullie krijgen snoep. Oh, OK! Drie mensen krijgen snoep! LAUREN CARVALHO: Dus dit een recht hier is de knal operator voorgaande de gelijk-teken, dus dat is niet gelijk. Dus als dit in mijn toestand was, het lichaam van de aandoening zou alleen uitvoeren als wat in Links is niet hetzelfde als wat is er aan de rechterkant. Ik kan ook gewoon de uitroepteken. Eigenlijk zien we wel in een functie Schuif hoe dit zou worden gebruikt. LUCAS FREITAS: Heeft u nog vragen? Nee? LAUREN CARVALHO: We kunnen deze combineren Booleaanse uitdrukkingen om meer te bouwen ingewikkelde voorwaardelijke verklaringen. Hier, als wat op de linker kant van de dubbele verticale of wat er op de rechterkant van de dubbele verticale true, dan zullen we uit te printen ongeldig. En dan hier beneden, als wat de aan de linkerkant van de twee ampersands en wat op de juiste kant van de twee ampersands true, dan we uit te printen geldig. De dubbele verticale zijn de logische genoemd OR operator dubbele ampersand zijn riep de logische operator. Ja? Publiek: Zijn die net kleine letters l's? LAUREN CARVALHO: Nee. Ze zijn eigenlijk - je weet dat het verzet, zoals boven je Return-toets? Zie je dat? LUCAS FREITAS: Het is eigenlijk een bar. LAUREN CARVALHO: Het is eigenlijk slechts twee bars. Publiek: Kunt u gebruik maken van de gelijk gelijk voor strijkers? LUCAS FREITAS: Nee. We gaan later leren iets aan. LAUREN CARVALHO: Er is een functie die u kunt gebruiken. Maar je hoeft niet te bang dat gewoon nog niet. Wat als ik dit programma de nummer 5? Wat zal uitprinten? PUBLIEK: [onverstaanbaar] geldig. LAUREN CARVALHO: geldig? Yeah. Ik weet niet wie dat kreeg. [Lachen] LAUREN CARVALHO: Dat is een soort eng [onverstaanbaar]. PUBLIEK: Dus de twee-en, dat betekent en? LAUREN CARVALHO: Yeah. Dus nummer 5 zowel groter dan 0 en kleiner dan 100. PUBLIEK: Waarom zou het een? LAUREN CARVALHO: Een ampersand is eigenlijk iets anders, en het is een logische bewerking, waar je leren over later. Maar het is iets dat echt werkt de bits van een gegeven getal. LUCAS FREITAS: Gewoon denken dat ze niet zorgen te maken over het voor nu. LAUREN CARVALHO: Ik denk dat het waarschijnlijk komen volgende week. LUCAS FREITAS: Nog meer vragen? Nee? LAUREN CARVALHO: Dus we hebben gezien dat een blokkeren kan op zichzelf staan, maar het kan ook worden gecombineerd met en anders blok. Dus in dit geval, wanneer n groter is dan 0, we gaan om uit te printen: "Je pakte een positief getal. "anders, wat betekent indien het 0 of indien het minder dan 0, gaan we om uit te printen, "Je pakte een negatief getal." Het interessante hier is dat deze exclusief elkaar. Er gaat nooit een geval te zijn waarin deze en deze kan zowel printen. Ik weet zeker dat je samen met de if / else box in Scratch, dus dit moet worden redelijk bekend. Ja? PUBLIEK: Moeten we de ruimte tussen int n gelijk getint dan de ruimte in de if statement? Als we een lijn [onverstaanbaar] LAUREN CARVALHO: Oh, de ruimte hier? PUBLIEK: Net als dat, maar u het dubbele ruimte. Nee, ga omhoog. Omhoog gaan. LUCAS FREITAS: gewoon de lijn? PUBLIEK: Ja. LUCAS FREITAS: Gewoon de lege regel? PUBLIEK: Ja. LAUREN CARVALHO: Blank lijn? Nee. Dat is slechts een stilistische ding. LUCAS FREITAS: Het is net als soms je gewoon overslaan sommige lijnen zo dat de code er niet uitziet als een enorm blok tekst. LAUREN CARVALHO: Ik denk dat wat er gebeurd was dat we hadden hier een commentaar, maar ik nam het uit, zodat jullie zouden hebben eerder denken aan de code dan lees net mijn commentaar. In het algemeen, afstand zal niet echt van invloed op de manier waarop uw programma loopt. Het is meer een stilistische ding. En als we de stijlgids bijgewerkt en klaar om te gaan voor het einde van supersection, zullen we praten over dat meer. Er is iets mis met dit programma, toch? Omdat 0 is niet echt een negatief getal. Dus laten we eens kijken of we kunnen dat bevestigen. U kunt waarschijnlijk wel voorstellen met dit zegt, toch? Als n groter is dan 0, drukken we, "You pakte een positief getal. "Dan anders Als n kleiner is dan 0, "Je pakte een negatief getal. "anders," Je pakte 0. ' Nu het interessante is dat dit zou kunnen blijven vertellen. U kunt een als blok, een anders hebben als blok, een ander anders als blok, anders als, else if, else if, anders, in principe zo lang als je wilt. En toen gebouwd als dit, deze zijn allemaal gaat worden exclusief elkaar. Ja? PUBLIEK: Waarom kun je niet gewoon gebruiken ander als in plaats van [onverstaanbaar]? LAUREN CARVALHO: In dit geval, ja ik kunnen andere gebruiken als, en het zou absoluut prima omdat de voorwaarden zelf zijn exclusief elkaar. Maar als de omstandigheden waren niet exclusief elkaar, zou dit hen dwingen om nooit allebei te evalueren, als dat zinvol is. PUBLIEK: In dat geval, konden we nest de tweede als in de eerste als? LAUREN CARVALHO: Als - wat bedoel je? PUBLIEK: Als de twee voorwaarden elkaar niet uit? LAUREN CARVALHO: Indien aan de voorwaarden elkaar niet uit? Maar u wilt alleen een van hen om te draaien? PUBLIEK: Je wilt gewoon als in plaats van anders. LAUREN CARVALHO: Yeah. Er zullen altijd wel veel manieren waarop u dit kunt doen. U kunt zeker nesten. En je ziet in een toekomstige dia die kunt u meerdere mitsen hebben, slechts een na de andere. Dit is een manier van logisch het organiseren van de stroom van je programma. LUCAS FREITAS: En er is nog een ding, is dat je vroeg over het zetten indien en dan nog als. Dat zou perfect werken, maar het is slecht ontwerp omdat het in principe als je check de eerste als, en je merkt dat het getal groter is dan 0, dan kan het gewoon afmaken van het programma. Je hoeft niet te controleren of het is minder dan 0, toch? Maar als je als als, het gaat om te controleren beide, terwijl als ik doen als anders is, het gaat om te controleren of Het is groter dan 0. Als het is, het is niet van plan om eens op de andere lijnen van de code. Dus je bent in principe het controleren van het net tweemaal onnodig, dus dat is waarom we doen als else if. Andere vragen? PUBLIEK: Dus de functionaliteit van de anders als hetzelfde als als het alleen als? LAUREN CARVALHO: Nee. Je eigenlijk gaan zien in mijn volgende Schuif een voorbeeld waarin het kan verschillend. In dit geval, het is bijna hetzelfde. Dus hier hebben we een voorbeeld van meerdere if-statements, en de functionaliteit is niet hetzelfde alsof ik net had gezegd als anders, indien anders, indien anders. Laten we nadenken over wat zou drukken of ik het nummer 95 in dit programma. PUBLIEK: [onverstaanbaar] LAUREN CARVALHO: En dan? PUBLIEK: [onverstaanbaar] LAUREN CARVALHO: Yeah. Dus in dit geval, deze voorwaarden elkaar niet uit elkaar. En omdat er niets stoppen deze voorwaarde uit te gaan of deze men al heeft, ze zijn gewoon allemaal om uit te printen. Dus hoe kan ik dit oplossen? PUBLIEK: anders ifs? LAUREN CARVALHO: U kunt anders ifs gebruiken. Ik kon de volgorde te wijzigen van deze, toch? Als ik dit deed men eerst? Nou, eigenlijk niet. Dat zou niet 95. LUCAS FREITAS: Nee, alleen de anders ifs. LAUREN CARVALHO: The anders ifs zou hebben vastgesteld. Is dat duidelijk de verwarring tussen mitsen en anders ifs? Publiek: Ik wilde u vragen, als je hebt gebruikt anders als, zou het stoppen? LAUREN CARVALHO: Juist. Dus alleen de eerste. Als ik het nummer 95, alleen dit zou hebben uitgeprint, en het nooit zou hebben geleid tot het anders. LUCAS FREITAS: Gewoon soort van denken alsof dit gebeurt, doe dit. De andere is net zo niet, check voor deze, en dat dan doen. Dus als ze zijn allemaal onderling exclusief. Je kunt niet in twee over die. Publiek: Kunt u een logische gebruiken En voor die situatie? LAUREN CARVALHO: Yeah. Dat is een andere manier dat we konden dit probleem opgelost. We konden hebben gedefinieerd varieert, toch? Dus ik zou hebben gezegd als n groter dan 90 en minder dan - goed, ik denk dat dit een niet echt toe, maar hier kon ik heb gezegd als n groter is dan 80 en minder dan 90. Meer dan 70, minder dan 80. Die ook zou hebben gewerkt. [Lachen] LUCAS FREITAS: Ze is bang. LAUREN CARVALHO: Wees niet bang. LUCAS FREITAS: Het is niet dat het verkeerd zal zijn. Het is gewoon dat het onnodig verbose. Net als in de informatica, moet men zo eenvoudig mogelijk zolang heb je de functionaliteit. Wilt u de snoep? PUBLIEK: Niet nodig. LAUREN CARVALHO: Je schrikken iedereen, Lucas. LUCAS FREITAS: Sorry. LAUREN CARVALHO: David ook vermeld schakelen deze verklaring in de klas. Eigenlijk wat er aan de hand is de schakelaar verklaring neemt een variabele. In dit geval nemen we een integer. Als het gehele getal 1 is, gaan we uitprinten, "Je pakte een kleine nummer. "Als de gehele getal is 1," You pakte een medium nummer. "Als de integer is 3, "Je pakte een hoge nummer. 'En ik had ook een standaard-case hier beneden, maar het is niet het tonen up, wat jammer is. Kortom, dit is gewoon andere syntax. We konden dit exact hebben geïmplementeerd hetzelfde met of en else if verklaringen. Maar als er veel verschillende voorwaarden en veel verschillende variaties op wat je wilt doen voor elke ingang, is dit een optie. Dus het is gewoon een goede syntax om te weten. Ja? PUBLIEK: Waarom is er niet een backslash n in het eerste? LAUREN CARVALHO: Voor daarboven? Er is geen backslash n daar omdat de getInt - Als je dit probeert, het zal geven u deze prompt. Geef me een geheel getal tussen 1 en 3. En als ik de terugslag n, het zou Breng me naar de volgende regel, maar ik wilde dat ze de integer typen direct na de dubbele punt. Je kon het verzet n hebben gezet. Het is geen big deal. Yeah? Publiek: Voor deze code, is dit geval is, is dat, omdat het is het eerste geval? Omdat - LAUREN CARVALHO: Nee, nee, nee. Dus dit is mij een integer tussen 1 en 3. Als n 1, print ik dit. Als ik voor brieven had gevraagd, zou ik zei geef me een letter tussen A en C. Dan zou dit geval A. zijn PUBLIEK: [onverstaanbaar]. De zaak zou slechts [onverstaanbaar] LAUREN CARVALHO: Ja, natuurlijk. Yeah? Publiek: Wat als je wilde hebben meer van een relationele expressie? Dus in plaats van te zeggen n is gelijk aan 1, [onverstaanbaar] n groter is dan 1 in het eerste geval? LAUREN CARVALHO: Eigenlijk, als ik niet definiëren sommige gevallen zou te dragen naar beneden. Dus eigenlijk, misschien is dit niet wat je vraagt. LUCAS FREITAS: Ik denk dat ze met de vraag of het geval was n groter dan 0, case minder dan 0. LAUREN CARVALHO: Misschien de schakelaar verklaring is niet echt wat je wilt voor gebruik in dat geval. LUCAS FREITAS: De switch statement is alleen voor de waarde, zodat je het controleren van de waarde is als dit of dat. Zo kun je eigenlijk niet zet omstandigheden. Publiek: Wat als de persoon types met [onverstaanbaar]? LAUREN CARVALHO: Dat zou zijn geweest mijn standaard geval, die helaas je niet kunt zien. LUCAS FREITAS: [onverstaanbaar] ze zien. LAUREN CARVALHO: Eigenlijk, weet je wat? Laten we gewoon gaan studeren 50, en ik zal alleen in te zoomen op de dia's op studie 50, want dit is gewoon vervelend. Dus laat me eigenlijk naar conditie. Dit is gewoon om even duren. Oke. Dus, het spijt me. Tenminste nu zullen we kunnen zien alles zonder het af te snijden. Oke. Dus als ze in een 10, zouden we standaard hier naar mijn standaard geval, en ik zou gewoon uitprinten ongeldig omdat ik vroeg hen om een ​​geheel getal in te voeren tussen 1 en 3. Andere vragen? Yeah? PUBLIEK: Laten we zeggen voor het geval een, case drie, zeggen dat je wilde dat het alle zijn hetzelfde, zodat u een aantal geplukt dat is niet een medium nummer. In dat geval zou het overbodig? Zou je gewoon de tekst in beide veranderen van hen, of zou er een aantal redundantie? Is er een manier om te combineren [Onverstaanbaar]? LAUREN CARVALHO: Er zijn manieren om combineren, maar ik geloof dat je kunt alleen combineren naastliggende. Dus als ik heb niets te definiëren voor geval twee, zou dit gelden voor beide gevallen. O, als ik niet zet iets voor case men dit zou zowel geval een en twee. Als dat zinvol is. Publiek: Kunt u dat ene herhalen? LUCAS FREITAS: OK. Als je eigenlijk deed, zoals, je hebt hetzelfde, maar je hoeft niet te zetten iets hier, zou je ofwel voor Indien een of geval twee, dit te doen. Rechts? En deze pauze betekent dat als je in dit geval, gewoon weg. Dus dat is wat de rem betekent. Dus als ik dit deed, je kijkt, het is geval een, en je zou dit gewoon doen. Als het geval twee, zou ook kom gewoon hier en dat te doen. Publiek: Maar je kan het doen? Als er iets voor geval twee [onverstaanbaar] LAUREN CARVALHO: Ik geloof niet dat kun je dat doen. Ik denk niet dat je rond kan overslaan. Kun je dat, Rob? Ik denk het niet. PUBLIEK: Dus slechts een nummer kan gaan na een zaak, toch? Er kan geen geval een, komma zijn, twee? LUCAS FREITAS: Nee, dat kan niet. Je kan zeker niet. LAUREN CARVALHO: Ik bedoel, het punt is dit is een optie, en dit misschien niet passen bij uw use case, dus dan kun je zou gebruiken indien de voorwaarden. PUBLIEK: Dus waarom zou je dit doen? De schakelaar? LAUREN CARVALHO: Ik zou deze gebruiken als je erg hebt gedefinieerd - eigenlijk, Lucas, is dat je blokkeert. LUCAS FREITAS: Oh, sorry. LAUREN CARVALHO: Als u een zeer gedefinieerd gedrag dat u wilt gebruiken voor elke ingang, is dit wellicht een iets beknopter dan het uitschrijven van een if-statement voor elk een. Publiek: Wat doet de break bedoel weer? LAUREN CARVALHO: De breuk betekent stoppen. Vergeet niet, als ik deze pauze niet over hier, zouden we gewoon naar beneden gevallen in het volgende geval. LUCAS FREITAS: Break betekent om te krijgen uit de instructie switch. Want als het 1, ik wil om deze af te drukken en te verlaten. Ik wil niet iets anders te controleren. PUBLIEK: Je wilt niet iets anders drukken. LUCAS FREITAS: Yeah. Omdat het wederzijds uitsluiten. PUBLIEK: En betekent dit alleen doorgang het volgende geval als het eerste geval is niet waar? Of is het testen alle gevallen tegelijkertijd? LUCAS FREITAS: Nee, het controles opeenvolgend. Opeenvolgend, ja. Nog een vraag, dan hebben we te gaan dus we kunnen alles te dekken. Yeah? PUBLIEK: Dus voor het geval zou zijn iets gedaan dan alleen de een? Zou u het een reeks? LUCAS FREITAS: Nee. LAUREN CARVALHO: Ik denk niet dat je kunt het een waaier. LUCAS FREITAS: Je kunt je niet kan niet geven een bereik. Publiek: De zaak is specifiek [Onverstaanbaar]. LUCAS FREITAS: Switch is een soort van waarden. Je doet verschillende dingen, afhankelijk op een waarde een specifieke waarde. Je kunt range niet doen, dat kan niet iets anders doen. Het is gewoon een tool om te zien. LAUREN CARVALHO: De meeste mensen niet gebruiken schakelen verklaringen zeer veel in CS50, maar het is er. Oke. Dus het volgende wat we gaan praten over is de ternaire operator. Dit is gewoon een ander type van voorwaardelijk. Eigenlijk wat hier aan de hand is ik ben vraagt ​​om een ​​integer, en als n groter dan 100, ik ga om uit te printen "Hoog." Als het niet, ik ga uitprinten "low." Dus wat het doet is de toestand wordt hier in de haakjes, en u kan soort van denken van de vraag als ik vraag of dit waar is of niet. Als het waar is, ga ik dit eerst doen ding, en als het niet waar is, ben ik ga dit tweede ding doen. Heeft u vragen over de ternaire operator? LUCAS FREITAS: Wil gewoon mee uit David is dat wanneer je een staat - LAUREN CARVALHO: Ik denk dat David's kijken via de live stream. LUCAS FREITAS: Hij doet levensstroom nu. Dus wanneer u een aandoening, je bent verondersteld accolades zetten, net als wij in een schakelaar verklaring hier. We hebben accolades hier. Om wat voor omstandigheden, je bent verondersteld om ook zetten dat. LAUREN CARVALHO: Je zult zien dit in de stijlgids. We hebben niet echt de stijlgids nu. Ik denk dat David nog steeds bezig. LUCAS FREITAS: Hij zei dat het is gewoon nu. LAUREN CARVALHO: Oh, is het nu werkt? OK. Dus blijkbaar dit jaar in de stijl begeleiden, zelfs als je alleen maar een regel, je hebt om die te zetten accolades inch Je hoeft niet per se nodig om voor de functionaliteit van het programma. En misschien moeten we gewoon een pauze na de voorwaarden en rechtdoor aan de stijlgids te ontruimen een aantal van deze dingen? LUCAS FREITAS: Yeah. Heeft u een vraag? PUBLIEK: Nee, ik wacht gewoon tot de stijlgids. Publiek: Kunt u terug te gaan het ternaire operator? LAUREN CARVALHO: Ternary, ja. LUCAS FREITAS: Ternary operator is eigenlijk een if else, maar plaats van de twee lijnen van het controleren van een if en vervolgens de anders, je moet gewoon een regel. Dus eigenlijk als ik wil een string geven een waarde hoog of laag, en ik Om te hoge doen als n groter is dan 100 of laag als het minder, wat ik kan doen is dit [onverstaanbaar] de string gaat worden, en dan heb ik Vraag het programma is n groter is dan 100? Dus dat is waarom ik deze uitdrukking haakjes en het vraagteken. Ik vraag is het groter dan 100? Als het is, gaat het hoog. Als het niet, het zal laag zijn. Dus eigenlijk wat je denkt is je vragen een vraag, dus je zet tussen haakjes de aandoening. Dan zet je het vraagteken want je vraagt ​​het. En als dit waar is, het gaat om zijn in de eerste waarde [onverstaanbaar] hier. Als het niet, ga ik zet de waarde die na de dubbele punt. Heeft het zin? Het is ook iets dat lijkt op een instrument in C, maar je hoeft niet te specifiek gebruiken. Maar CS mensen meestal graag dat omdat het gewoon redt lijnen. LAUREN CARVALHO: Het is zeer elegant. Het doet veel in slechts een verklaring. PUBLIEK: Dus het procent teken is alleen wat de resultaten in de vorige regel? LAUREN CARVALHO: Oh, het spijt me. Dit procent teken is eigenlijk een tijdelijke aanduiding voor dit s. In een printf statement, heb je dit hebt snaar hier, dat is wat er gaat uitprinten, maar je kunt niet zomaar zet dit s daar. Anders zou drukken de s letterlijk. Dus hebben we een procent hier te houden deze plaats aangehouden voor welke komt na de komma. Dus voor een string, je hebt procent s. Voor een integer, percenten i. Voor een vlotter, procent f. Je zult zien dat als we Bekijk meer voorbeelden. Maar misschien moet je praten over de stijlgids voor een tijdje, nu dat het is. LUCAS FREITAS: Als je naar cs50.net/style, zul je zien de stijlgids. Voor probleem sets, je score voor de probleem set is samengesteld uit scope, die in feite betekent als je dat deed alle de delen van het probleem te stellen of als u geprobeerd iets. Het tweede ding is correctheid, die middelen wordt het programma doet wat het werd verondersteld te doen, of toch niet bugs, of is het niet wat te doen het hoort te doen. Het derde punt is het ontwerp, wat betekent bent u de uitvoering van dit goed, of zijn Gebruikt u onnodige uitspraken? Dus bijvoorbeeld, als u wilt herhalen een nummer 10 keer, schrijf je een voor loop of bent u gewoon doen 10 keer dezelfde verklaring, gewoon doen kopiëren en plakken. Dus ontwerp is voor dat. En tot slot, je stijl. Stijl is net als het beoordelen Als uw code ziet leesbaar en best mooi. Het betekent gewoon eigenlijk is je code leesbaar? Zou iemand anders die op zoek is zijn uw code te kunnen begrijpen wat het doet? Heeft het commentaar en dergelijke? Laten we praten over de stijl die je zou moeten gebruiken. Het eerste ding is commentaar. Reacties zijn erg belangrijk voor uw code want soms je doet uw programma, en weet je precies wat je wilt doen je gewoon beginnen codering, typ je gewoon een bos van C. Maar als iemand anders op zoek bent je bent code, zijn ze niet van plan om in staat te begrijpen omdat ze niet weten de dingen die in je hoofd, zoals de pesudocode, dus misschien zullen ze hebben een harde tijd om te begrijpen wat de code doet. Dus opmerkingen zijn echt nuttig om uit te leggen aan iemand die op zoek is naar uw code wat het doet, en eigenlijk nog voor u, ze zijn zeer nuttig. Als je gaat harder en hard Psets, je zult zien dat de code krijgt langer, en dan opmerkingen zijn echt belangrijk, zodat je nog wat elk een deel van je programma doet. Om een ​​reactie te zetten, kun je gewoon een doen slash slash en schrijf dan een reactie. En de hele lijn is onderdeel van een reactie, en wat je ook opschrijven, het is niet van plan om gebruikt voor uw code. Het is eigenlijk net als de compiler gaat negeren. Is dat logisch? PUBLIEK: Wat doe je nog een keer doen om een ​​commentaar te kunnen schrijven? LUCAS FREITAS: Deze? De slash slash? Wanneer je slash slash, typt wat Op deze regel is niet van plan worden beschouwd als C. zijn Yeah? PUBLIEK: Dus na de reactie, u gewoon gaan en start een nieuwe lijn? LUCAS FREITAS: Ja, precies. LAUREN CARVALHO: De slash slash is voor enkele regel commentaar. LUCAS FREITAS: Bijvoorbeeld, hier hebben we - laat me in te zoomen - bijvoorbeeld, hier ben ik waarbij een float, maar misschien als je alleen deze zet in je code, zoals je hebt geen idee wat dit doet, zoals eigenlijk iemand die op zoek is naar deze code gaat worden, zoals, wat de heck is er aan de hand? Als je een opmerking te zeggen "convert Fahrenheit naar Celsius, het veel maakt meer zin. Je bent, als, OK, je bent het doen van een conversie. Is dat logisch? Dus het is gewoon iets dat mensen helpt klaar uw code en ook u in staat om het organiseren van uw code beter. Het tweede ding is dat je kunt doen multi-line commentaar, hebben zo een commentaar voor een stel lijnen. In plaats van te slash slash zetten, de eerste regel commentaar, slash slash, de tweede lijn, en ga zo maar door, je kan de slash ster gebruiken. De manier waarop je het doet, is dat voor de eerste regel van de reactie, je bent ga een slash star star doen, dus net als dat. Net als hier hebben we het begin van een programma, je meestal zet wie je zijn, wat dit programma doet, en dat soort dingen. Het is net zoiets als een header voor het programma. Nogmaals, het is niet iets dat een compiler gaat over zorg, maar is het belangrijk voor u om te weten wat dit programma doet of voor andere mensen om te weten wat je programma doet. Dus je hoeft slash star, en vervolgens de laatste regel je gaat ster doen slash kunnen sluiten die opmerking. Dus eigenlijk voor alle andere lijnen, kun je gewoon schrijven wat, en dit is allemaal om genegeerd te worden. En ook, net als stijl, zie je dat elk van de lijnen een ster, en al de sterren zijn uitgelijnd. Dit zijn belangrijke dingen zo dat uw code ziet er mooi uit. Klinkt goed? Nu, voorwaarden. Wat David zei dat we moeten in die dia's daadwerkelijk zetten, is dat als u enige vorm van if-statements of enige vorm van voorwaarden, moet je accolades gebruiken om aan te tonen dat dit is wat er gaat gebeuren wanneer u de aandoening heeft. Technisch, wanneer u een aandoening en dan de volgende regel is slechts een lijn, hoeft u niet technisch zijn de accolades zetten. In principe de compiler zou begrijpen het toch als impliciete. Maar voor CS50, vragen wij jullie om te zetten de accolades gewoon zo dat je code is meer georganiseerd en beter leesbaar. Omdat die code wordt langer als u hebben geen accolades en dergelijke. Het wordt echt rommelig. LAUREN CARVALHO: Dit is precies wat David net gewezen in mijn vorige dia. Het werkt zeker zonder de gekrulde bretels, maar om stilistische redenen we gaan vragen dat je zet die binnen En wanneer je begint te lopen style50, dat is een soort van de cheque 50 voor stijl, het zal u eraan herinneren om dit te doen. LUCAS FREITAS: En een ander ding is Vergeet niet om de accolades langs zetten in elke lijn. Zodat je bijvoorbeeld l's. Ga naar de volgende regel, opent u het curly brace, daarna ga je naar de volgende regel. Inspringen, die vier ruimten. Dan schrijf je wat, dan een ander lijn, en sluit de accolade. Dus zorg ervoor dat zowel degenen krullend beugels zijn in verschillende lijnen. PUBLIEK: Dus als deze code had als 10 anders ifs, dit moet zijn 10 sets van de beugels? LUCAS FREITAS: Ja, voor elk van hen. Yeah. Als, anders als, enzovoort. Publiek: Kunt u niet Druk op Tab om inspringen? LUCAS FREITAS: We vragen u jongens tot vier spaties. Sommige tekstverwerkers vertalen tab als vier spaties automatisch. gedit niet, dus je moet do ruimte ruimte ruimte ruimte. Dit is iets dat sommige programmeurs alleen tabbladen, wat programmeurs alleen vier ruimten, en een aantal andere mensen zelfs doen twee of drie velden. Het is gewoon dat hier we vragen jullie om vier ruimtes doen. Publiek: Er is bijna zeker moet een manier voor gedit te zijn automatisch [onverstaanbaar]. Als geen [onverstaanbaar] doet dat. LUCAS FREITAS: Yeah. Ik denk dat je kunt gaan naar Instellingen. Publiek: Het doet al dat alles. LUCAS FREITAS: Het al doet? OK. Dus gewoon zeker van zijn dat u hebben vier ruimten. PUBLIEK: Moeten we de krullend zetten beugels voor loops ook? LUCAS FREITAS: Ja. LAUREN CARVALHO: Wanneer uw inkapselen van een blok code, net gebruik dan de accolades. En voordat je denkt dat we gewoon zijnde sticklers over dit voor geen goede reden, als jullie het gaan te krijgen tech stages bij grote bedrijven, ze geven u een stijlgids te geven, en zij zullen u vertellen dit is wat uw code moet uitzien. En zelfs al heb je geleerd om code zoals deze, misschien in je stage je moet iets doen helemaal anders. Ze verwachten wel dat je te conformeren aan hun stijl. LUCAS FREITAS: En nog een ding is dat merk je hoe ik heb zoals x, ruimte, minder, ruimte, 0? Wanneer heb je een operator - het kan zijn als plus, min, maal, minder, groter, wat ook operator - je moet een ruimte aan de linkerkant zetten en het recht van de exploitant. LAUREN CARVALHO: Dat zijn genoemd binaire operanden. Zorg ervoor dat je altijd ruimte uw binaire operanden. LUCAS FREITAS: Dit is niet een binaire operand. LAUREN CARVALHO: Dat is want het duurt twee. LUCAS FREITAS: Oh, ja. OK, de schakelaars. Ten eerste moet je om te zien dat, net als in een if of else, je hebt de accolade op zijn eigen spel te zetten en onder de accolade hier. Merk op dat er een enkele spatie na het inschakelen, net als in als en anders we hadden een ruimte tussen dat en de haakjes. Dus moet je dat zetten. En er is geen ruimte direct na elkaar de haakjes of vóór het einde de haakjes. Zo zie je dat het allemaal samen, en ook hier. Yeah? LAUREN CARVALHO: Ik denk we nodig hebben om verder te gaan. LUCAS FREITAS: Dus dit is een onderdeel van de stijlgids die je hebt voor CS50. Zorg ervoor dat u naar cs50.net/style en neem een ​​kijkje op deze. Dit zijn allemaal zeer belangrijke voor uw stijl score. Laat me terug naar het overzicht te gaan. LAUREN CARVALHO: Liever gebruik gewoon style50. We gaan gewoon om te gaan rechtstreeks naar loops. Oke. Dus laten we terug naar de inhoud, nu dat we weg over de stijlgids. Loops, heb je ze gezien in Scratch, en gaan we over hen te praten in C. In een lus, zijn er drie porties met een verklaring van deze for-lus. Je hebt je initialisatie in kreeg waarin u uw variabelen. Je hebt je conditie, die kreeg controleren om te zien of er iets is waar of niet waar is en of de lus moet worden voortgezet. En je hebt je update, die wordt het bijwerken van uw variabelen. Laten we eens een snelle blik op enkele C-code van deze for-lus in actie. Wat is er aan is hier in de initialisatie, we zetten we i op 0. In de voorwaarde dat we het controleren of ik minder dan 10. En in de update zijn we het verhogen i. Wat zal van deze lus? LUCAS FREITAS: Eigenlijk, de eerste plaats, weten jullie wat ik + + is? PUBLIEK: Verhoogd met 1. LUCAS FREITAS: Verhoogd met 1, ja. Dus dit is hetzelfde als doe ik gelijk i plus 1. En merk op dat we geen ruimte hebben tussen de i en de + +. Dus weten jullie wat dit zal doen? Kan iemand mij vertellen? En misschien nog wat snoep vanwege dat? PUBLIEK: [onverstaanbaar] LUCAS FREITAS: OK. [Onverstaanbaar] laat iedereen later [onverstaanbaar]. Ja, het gaat om "Deze tonen is CS50 "10 keer. LAUREN CARVALHO: Ik denk dat het in de titel van de dia. LUCAS FREITAS: Oh, ja. [Lachen] LUCAS FREITAS: Dat helpt. LAUREN CARVALHO: Dus die zijn voor lussen. We gaan wat meer voorbeelden zien voor lussen later. Maar laten we daadwerkelijk een kijkje nemen op de tweede soort lus die je tegenkomt in C, en het heet de while lus. In een while loop, je hebt net een voorwaarde. De aandoening wordt gecontroleerd in de begin, en als die voorwaarde true, dan is de code binnen het lichaam van de tijdens het blok zal uitvoeren. En de code zal blijven voeren zolang dat conditie blijft waar. Hier is een voorbeeld van een while lus in C. We gaan tellen ingesteld op 10 tot beginnen. Zolang de telling groter is dan 0, we gaan houden het printen van de variabele hier. We gaan tellen verlagen en controleer dan de conditie weer. Print, decrement, check opnieuw de conditie. Hier hebben we een voorbeeld dat betrekking heeft op uw vraag eerder. We hadden het percentage s toen we afdrukken van een string, en nu we afdrukken van een int, hebben we een procent i als onze placeholder plaats. De letters moeten allemaal mooi zijn intuïtief, s voor strijkkwartet, i voor int. Dus als deze code wordt uitgevoerd, dient u aftellen 10-0, afdrukken van elke integer. LUCAS FREITAS: En je kunt denken aan de procent als het voelt als een leeg ruimte, en dan ben je om deze variabele hier in die lege ruimte. Dus bijvoorbeeld, hier zal ik gewoon een leeg, en dan zet ik de tel daar, de waarde van de telling. Is dat logisch? Zou ik gewoon doen zoals printf en dan citeert, tellen? Zou dat werken? PUBLIEK: Nee LUCAS FREITAS: Nee, want het zal eigenlijk het woord "count" drukken in plaats van het afdrukken van de waarde. Dit is hoe je het afdrukken van de waarden naar de variabele in plaats van u de naam van de variabele. Heeft u nog vragen? PUBLIEK: Waarom gebruiken jullie voor als tegenstelling tot tijdje? LAUREN CARVALHO: ik zou gebruiken voor lus als ik precies weet hoeveel iteraties Ik wil mijn loop te lopen. In dit geval maakt het niet uit, want, Ik bedoel, ik was gewoon proberen om denk aan een heel eenvoudige Bijvoorbeeld voor deze dia. Maar laten we zeggen dat je iets wilt om door te gaan, terwijl - LUCAS FREITAS: Bijvoorbeeld, je bent vraagt ​​ingang tot de persoon geeft u de juiste ingang. Dus zoals terwijl de ingang niet OK, blijven vragen voor. Of zoals terwijl je ouders niet geven je geld, blijven vragen voor. [Lachen] LAUREN CARVALHO: Je weet niet hoe Vaak zul je het moeten doen. LUCAS FREITAS: omdat u niet weten hoe vaak dat is plan om te blijven. LAUREN CARVALHO: Maar in een lus, je moet weten hoe vaak. Yeah? PUBLIEK: Gewoon om te verduidelijken, het percentage zegt dit iets over te gebeuren, i voor de integer, en de backslash n - LAUREN CARVALHO: Means? Wie weet wat de backslash n betekent? Nieuwe lijn, ja. Precies. LUCAS FREITAS: Je kunt denken n als nieuwe regel. LAUREN CARVALHO: Nice. Publiek: Wat is dat aantal dash dash [onverstaanbaar]? LUCAS FREITAS: Gegeven minus minus is hetzelfde als plus plus, maar in plaats van het verhogen, het is daalden met 1. LAUREN CARVALHO: Nog meer while loop vragen? Nee? Oh, hadden we moeten hebben overgeslagen. Dit is een do while lus. Zeer vergelijkbaar met een while loop behalve in dit geval hebben we de toestand na de code in het lichaam van de lus voert een keer. Zodat we de code uit te voeren eerste wat er ook gebeurt. Dan kunnen we de conditie, uitvoeren het weer als de voorwaarde waar is. Je zult merken dat je met behulp van deze als je vraagt ​​om invoer van de gebruiker. Omdat je altijd zal moeten Vraag eens, en dan afhankelijk van wat de input van de gebruiker is, moet u mogelijk reprompt en vraag opnieuw en opnieuw als de ingang was niet wat je verwacht dat het is. Publiek: Dus het is als een vorm voor mensen in te vullen. LAUREN CARVALHO: Ja, precies. Je zult zien, denk ik, in je allereerste PSET, je gaat te hebben om Gebruik een doe goed lus te verzamelen input van de gebruiker. PUBLIEK: Afhankelijk van de situatie, uw while loops zal de neiging om meer lopen wel dan while loops, zoals door een of iets? LAUREN CARVALHO: Als het de exacte - LUCAS FREITAS: Ze moeten altijd uitgevoerd het exacte bedrag van de momenten dat je wilt uitvoeren. Zoals we gebruiken doen terwijl omdat we echt wilde de ingang ten minste een keer. In while loops, soms u niet wilt om het uit te voeren helemaal als het niet de zaak uit te voeren. Dus afhankelijk van het ontwerp. Ik bedoel, kunt u gebruik maken tijdens of terwijl zolang uw code doet dat het hoort te doen. LAUREN CARVALHO: Maar ik doe denk dat het antwoord op uw vraag is waarschijnlijk ja. Laten we zeggen dat de voorwaarde vals was. In een geval zou het een keer uitgevoerd, en een ander geval zou lopen nul keer. Dus, ja. Nog meer vragen? Ja? PUBLIEK: Kan de lus aandoening een lus in termen van een andere variabele dan [onverstaanbaar]. LAUREN CARVALHO: Ja, het kan van alles zijn. Waarschijnlijk voor de beginnende Psets, u zal niet op die zaak tegenkomen, maar zeker het kan van alles zijn. LUCAS FREITAS: Ik denk we zijn hier klaar. LAUREN CARVALHO: Zijn wij? Nee? LUCAS FREITAS: Loops? Yeah. LAUREN CARVALHO: We moeten niet. Oh, zijn we klaar met loops. OK. Eigenlijk, want we hebben gepraat zo veel, laten we eigenlijk allemaal navigeren naar study.cs50.net/conditions. En je gaat omlaag te navigeren de problemen widget. Nou ja, eigenlijk, terwijl mensen krijgen deze set-up, de CS50 Studie is gaat om een ​​tool die uw TFs zal worden zich voorbereiden op secties en die kunnen jullie gebruiken als je mist secties. Het gaat om een ​​bos van dia's bevatten, een aantal tips en trucs voor elke onderwerp, en wat oefening problemen oplossingen. Waarom niet iedereen gewoon een kijkje nemen naar dit probleem hier. Het spijt me, ik had moeten herinnerd mensen om laptops vandaag brengen. Maar als u niet beschikt over een laptop, dat is OK. Je kunt gewoon noteren dit neer op een stuk papier of kijken over schouder van je buurman. Laten we proberen en schrijf een programma dat vraagt ​​de gebruiker om een ​​gok te nemen, de gemiddeld aantal kinderen per gezin eenheid in de Verenigde Staten. Dat aantal is 2, door de manier, zoals u kunt zien uit deze voorbeelden. We willen afdrukken gemiddeld aantal kinderen per gezin in de VS, dan kunnen we wilt wat? We willen invoeren verzamelen van de gebruiker. En afhankelijk van wat de gebruiker ingang is, je gaat om uit te printen ofwel dit juist is of dit is ingevuld. En het eerste ding dat u zult zien, als u op de kleine pijl aan de onderkant van het probleem widget is een spot te noteren wat pseudocode. Dus je bent nog niet programmeren. Je bent gewoon het krijgen van uw ideeën om. Wil iemand helpen Lucas komen met de juiste pseudocode voor dit probleem? LUCAS FREITAS: Wat is het eerste wat dat we waarschijnlijk hier moeten doen? Wat doen jullie denken? PUBLIEK: [onverstaanbaar] LUCAS FREITAS: Ja, OK. Dus, printen. Zeg gewoon de print deze gemiddelde aantal mensen? OK. Print vraag, laten we zeggen. Nadat ik print deze vraag, wat moet ik doen? PUBLIEK: Get ingang. LUCAS FREITAS: Get ingang. Iets anders? PUBLIEK: Staat. LUCAS FREITAS: Staat. LAUREN CARVALHO: Wat is dat voorwaarde zal worden? Publiek: Het aantal [onverstaanbaar]. LAUREN CARVALHO: Juist. LUCAS FREITAS: Dus wat ga ik in de toestand te controleren? PUBLIEK: Als deze gelijk is aan 2. LAUREN CARVALHO: Als deze gelijk is aan 2. Precies. LUCAS FREITAS: Is er iets anders dat ik moet doen? PUBLIEK: Tel. LUCAS FREITAS: Dus als het gelijk aan 2, laten we zeggen - laat ik alleen schrijven als ingang gelijk 2, dan wat ik ga te doen is afdrukken correct. En dan anders, ik ga om af te drukken ingevuld. Iets anders? Nee? LAUREN CARVALHO: Dus u kan u op de - Heeft iedereen dit neer? LUCAS FREITAS: Heeft het zin? Dus nu laten we proberen om deze code. LAUREN CARVALHO: Als u op de kleine pijl, het eigenlijk slaat uw pseudocode, dat is echt spannend. En u kunt deze maken in reacties als je wilt gewoon om jezelf te herinneren aan wat te doen. LUCAS FREITAS: Dus bijvoorbeeld eerst Ik ga op de vraag af te drukken, zodat hoe ga ik dat doen, eigenlijk? printf. Dus printf, en de vraag is gemiddeld aantal kinderen per familie in de VS. Dan ga ik krijgen input van de gebruiker. Dus hoe kan ik dat doen? PUBLIEK: Get Int. LAUREN CARVALHO: getint. LUCAS FREITAS: OK. Dus eerst verklaren, toch? int, laten we zeggen n gelijk getint. En nu de conditie. Dus laat me zeggen dat ik ga om te controleren antwoord hier. Dus eerst, als input, dat is n, gelijk om - hoe ga ik om te schrijven dat? PUBLIEK: Equal gelijk. LUCAS FREITAS: Perfect. Zo n. En merk op dat ik een ruimte, evenaart, evenaart, ruimte, waar. En nu, wat moet ik doen? Iets heel belangrijks voor stijl. De accolades. En dan ga ik om af te drukken. Hoe druk ik? printf. Publiek: Zou het worden geactiveerd? LUCAS FREITAS: Nee. Het hoort allemaal kleine letters. Dus dat is correct. Zou dit voldoende voor de printf verklaring, of ben ik iets te missen? PUBLIEK: Nieuwe regel. LUCAS FREITAS: Nieuwe lijn, ja. En nu anders. PUBLIEK: Is er een ruimte na de printf, of nee? LAUREN CARVALHO: We moeten controleer de stijlgids. Publiek: Het moet niet. LUCAS FREITAS: Mag niet, OK. Zo anders, printf "Dat is onjuist." LAUREN CARVALHO: Oeps, uw offertes. LUCAS FREITAS: OK. Iets anders? Is het er goed uitzien? LAUREN CARVALHO: Zullen we het proberen? LUCAS FREITAS: Ja, laten we draaien. Dus het is compileren, en het lijkt erop dat het werkt. Laten we proberen twee kinderen. Dat is juist. En laten we nu weer te lopen, maar nu in plaats van het zetten van twee kinderen, laten we zeggen dat ik ga als vijf te zetten. Dat is onjuist. Dus het lijkt erop dat het werkt. LAUREN CARVALHO: Waarom ga je niet laten zien wat gebeurt er als je iets raar, zoals sommige brieven. LUCAS FREITAS: Oh, ja. Laten we ook controleren. Wat als de gebruiker probeert te knoeien met uw programma, en ze gewoon schrijf, weet ik niet twee. Het zal opnieuw proberen te zeggen. LAUREN CARVALHO: Dus getInt is hen te vragen om opnieuw te proberen. We hoefden niet te verzorgen van dat zelf. LUCAS FREITAS: Yeah. Dus tenzij ik eigenlijk zet een nummer, het is zal blijven vragen me om opnieuw te proberen. Publiek: Hoe heb je het uit te voeren? LUCAS FREITAS: Klik gewoon op deze ster knop. LAUREN CARVALHO: Je moet gaan. Daar ga je. LUCAS FREITAS: De ster knop daar. Yeah? PUBLIEK: Is het prompt [onverstaanbaar] met kommagetallen ook? LAUREN CARVALHO: Ik geloof het wel. LUCAS FREITAS: Als het doet wat? LAUREN CARVALHO: Als ze typen in een decimaal getal, denk ik het gaat om vragen. LUCAS FREITAS: Eens kijken. LAUREN CARVALHO: Omdat het is niet een int. LUCAS FREITAS: Yeah. LAUREN CARVALHO: Dus het is niet een int, Ontvang Int zal u vragen om opnieuw te proberen. PUBLIEK: Dus waar in die code zou zijn de decimaal die leidt tot de gebruikers dat zij moeten invoeren een geheel getal specifiek? LAUREN CARVALHO: getint is eigenlijk doet dat voor ons. PUBLIEK: Nee, ik bedoel als we wilden om [onverstaanbaar] LUCAS FREITAS: Je kunt zeggen als gemiddelde aantal kinderen in de VS. Ik weet het niet. We kunnen zeggen, bijvoorbeeld, "Please ingang een geheel getal. ' LAUREN CARVALHO: Een geheel getal gelijk het gemiddelde aantal. Ik bedoel, het is gewoon hoe je woord, toch? LUCAS FREITAS: Yeah. Dit is geen onderdeel van het daadwerkelijk coden. Het is meer als wat je gaat te willen schrijven in uw programma. Publiek: Hoe zouden wij het uit te voeren als het was eigenlijk in gedit [onverstaanbaar]. In plaats van op het spel? LUCAS FREITAS: We zullen eerst compileren. We kunnen het doen door het doen van make en de naam van het bestand. En dan om het uit te voeren, zullen we dot slash doen en de naam van het programma. Publiek: Ik denk dat wat ik bedoelde was als wilden we het programma om te reageren op hun onjuiste, ongeldige invoer, je moet niet in - LUCAS FREITAS: We zullen niet in staat zijn om doen dat omdat de code zegt dit retry komt van Get Int dat is een functie reeds is uitgevoerd voor ons via de CS50 bibliotheek, en aangezien het is er al geïmplementeerd, we kan niet zomaar [onverstaanbaar]. LAUREN CARVALHO: Als u geen gebruik Getint, dan kun je dat doen. LUCAS FREITAS: Yeah. Maar als je gebruik maakt getint, kun je niet. Andere vragen? Publiek: Kunt u zijn gegaan met als GetFloat en vervolgens in staat te stellen in een decimaal? LUCAS FREITAS: Yeah. Publiek: OK. Dan moet je gewoon kon invoeren drijven een gelijken - LAUREN CARVALHO: Yeah. Precies hetzelfde, behalve een zweven in plaats van een int. LUCAS FREITAS: Zet ze gewoon hier en dan GetFloat daar. PUBLIEK: Als je wil zien of gezien hebben - LAUREN CARVALHO: we hebben er nog niet gekomen. PUBLIEK: - het doen van ongelijkheid met praalwagens niet [onverstaanbaar] Publiek: Wat betekenen de puntkomma betekenen? LAUREN CARVALHO: De puntkomma net betekent dat deze verklaring volledig is, en we gaan om te gaan naar de volgende dia. Publiek: Dus het is noodzakelijk elke keer? LAUREN CARVALHO: Yeah. Nou, OK, dus niet voor deze omstandigheden, omdat ze inkapselen iets. Dus eigenlijk als er iets wordt veroorzaakt u vervolgens een accolade blok, niet een puntkomma te zetten eind. LUCAS FREITAS: Maar alles anders, ja. Wanneer u een verklaring af te maken, zet de puntkomma. En als je puntkomma vergeten, de compiler gaat boos op je, en je gaat hebben te proberen op te lossen. LAUREN CARVALHO: Als ik een puntkomma hier, dat zou dit te stoppen, en ik nooit zou krijgen om uit te voeren wat binnen, door de manier waarop. Dus het is een van die gemeenschappelijke bugs. PUBLIEK: Altijd uitvoeren. LAUREN CARVALHO: Yeah. In dit geval zouden we altijd uitvoeren wat er in zit. PUBLIEK: Uw stijl [onverstaanbaar] hechten dat voor u, dacht. LAUREN CARVALHO: Oh, dat is waar. PUBLIEK: [onverstaanbaar] enkel lijn ding [onverstaanbaar] PUBLIEK: Ja? Publiek: Kunt u meerdere hebben ingangen in een lijn? Dus als u gebruikers vragen twee dingen af ​​te drukken? LAUREN CARVALHO: Het niet gebruiken - LUCAS FREITAS: Nee. Laten we zeggen dat ik wil ook dit getal m te krijgen. Ik heb om het te doen op een andere lijn. PUBLIEK: Als je zou lopen dat, hoe [onverstaanbaar]? Het zou het prompt afdrukken er [onverstaanbaar] en dan zou je er een in te voeren en - LAUREN CARVALHO: Nou, voer het uit. Ik bedoel, er is niets houdt ons tegen gewoon het runnen van het en zien wat zou gebeuren. LUCAS FREITAS: Ik denk dat het gaat klaagt bij ons omdat we niet gebruiken - LAUREN CARVALHO: Oeps. LUCAS FREITAS: Het klaagde bij ons direct nu omdat we dit niet gebruiken variabele, maar als ik bijvoorbeeld n gelijk is gelijk aan en m gelijk gelijk aan, wat dan zal gebeuren in dit geval? Wat zou dit programma doen? Publiek: Ik vraag me alleen af hoe het zou - LAUREN CARVALHO: Ze wil gewoon om te weten hoe het eruit ziet zoals, denk ik, toch? Dus het duurde een van hen, en dan het nam de tweede. Ik denk dat we op moeten gaan, want we hebben nog een diavoorstelling te gaan voordat - wil je optrekken wiskunde? LUCAS FREITAS: Ja, math. LAUREN CARVALHO: Give mij slechts een seconde. Er zijn een aantal verschillende numerieke variabelen in C. Numerieke gegevens C kunnen worden ingedeeld in verschillende types, en deze zijn het, u zult zie het vaakst. En int is een geheel getal. Je kunt geen decimalen. In het apparaat, het duurt 32 bits om een ​​int slaan. Een vlotter kan decimalen. Het neemt ook 32 bits opslaan een vlotter in de Appliance. Een dubbele is een getal met een decimaal punt dat 64 bits op te slaan neemt, wat betekent dat je gewoon kunt hebben grotere precisie omdat je kunt meer hebben - wat noem je dat? LUCAS FREITAS: Ja, dat is meer. LAUREN CARVALHO: Meer plaatsen achter de komma. En een lange lange is een geheel getal dat duurt 64 bits zere ze in het apparaat. LUCAS FREITAS: Zo kan het zijn groter dan ints zijn. LAUREN CARVALHO: Het ding over gegevens types in C is dat ze je vertellen wat soort gegevens die u kunt opslaan in de variabele. Ze vertellen je hoe je deze kunt gebruiken variabele in uw programma. Het is heel belangrijk om gewoon bijhouden van wat voor soort data je gebruikt, en als je moet gegoten uit een gegevenstype naar de andere, zorg ervoor dat je weet precies wat er gebeurt als dat casting plaatsvindt. En je zult een voorbeeld later zien op in deze dia's van een fout die kan optreden. Laten we eens een kijkje nemen op wat wiskunde in C en Denk je echt goed, denk ik, over wat er gebeurt wanneer deze wiskunde plaatsvindt. In de eerste lijn, wat is gebeurt als ik verklaar x? PUBLIEK: Je laat x iets te zijn? LAUREN CARVALHO: Yeah. Nou, ik ben echt de operationele vragen systeem voor de 32 bits van het geheugen, toch? In welke kan ik een int slaan, en Ik ga dat int x bellen. LUCAS FREITAS: In principe gaan in het geheugen en het vinden van een plek die 32 heeft bits en zeggen, hey, ik wil deze ruimte, en het gaat x genoemd te worden. Dus je bent gewoon vrij veel bevinding een doos in je geheugen te het opslaan van waarden voor x. LAUREN CARVALHO: En dan initialiseren ik x, wat betekent dat ik net te slaan de waarde van 2 in die plaats, dat stuk van het geheugen, dat we vroegen operating voor. En hier beneden wat we doen is we eigenlijk te verklaren en initialiseren y in een lijn in plaats van in twee lijnen zoals wij deden hier omhoog, dat is ook een prima, We zijn het toevoegen van 1 tot x, en we zijn het opslaan van dat waarde in y. LUCAS FREITAS: Dus eigenlijk wat dit lijn doet, Nu vindt een doos voor y, en dan zijn waarde, het ding dat je gaat in de doos te zetten, is naar de waarde van x plus 1 zijn. Dus het heeft deze doos voor y. Het wordt de waarde van x, ziet hier, en zie dat het is 2. Zet het daar, plus 1, dus het brengt een 3 daar. Is dat logisch? Dus y zou 2 zijn in dit geval. LAUREN CARVALHO: Oke, cool. We zagen enkele toevoeging, dus laten we nu denken over verdeeldheid in C. Hier ben ik verklaren en het initialiseren van een vlotter riep antwoord en delen 1 met 10, en dan ben ik het afdrukken van het antwoord op twee decimalen. En let hier, in mijn printf statement, als ik iets wil twee afdrukken decimalen,% .2 f is wat ik wil gebruiken. Dus het punt 2 is gewoon te zeggen Ik heb twee plaatsen na de decimale uitgeprint. Nu, wat er gaat gebeuren als ik deze code uitvoert? Heeft iemand een idee? Wat zou uitprinten? LUCAS FREITAS: Wat zijn we verwachten te krijgen. LAUREN CARVALHO: Wat doen we willen in de eerste plaats? LUCAS FREITAS: [onverstaanbaar] LAUREN CARVALHO: 0.1, ja. Maar wat zal uitprinten? PUBLIEK: [onverstaanbaar] LAUREN CARVALHO: Nou, nee, eigenlijk. Dit is wat ik het over waarom je moeten heel voorzichtig zijn bij te houden uw data types. Dus, wat data type is dit? Is een int, toch? Er is geen decimaal. 10 is een int. Er is geen decimaal. Als ik verdeel een int door een int, krijg ik een int die niet 0,1, omdat integers kan geen decimalen, maar gewoon 0. Omdat een int gewoon afgekapt uit de cijfers achter de komma. LUCAS FREITAS: Dus wanneer je doen operaties met ints, zul je krijgen een int als het antwoord. Dus eigenlijk, wat de computer doet, het is verdeelt 1 door 10, en het wordt 0,1. Maar dan is het net, wacht, dit is verondersteld een geheel getal zijn, zodat je gewoon negeren de 0.1, dus het is nu slechts 0. LAUREN CARVALHO: Dus toen ik deze af te drukken uit, krijg ik 0,00 in plaats van 0,10. LUCAS FREITAS: Heeft dat zin? LAUREN CARVALHO: Dat is een soort ongelukkige, toch? LUCAS FREITAS: Dus hoe kunnen we dit oplossen? LAUREN CARVALHO: Laten we proberen vast te stellen dat. Hier is een voorbeeld van waar ik ben eigenlijk het gieten van de 1 en 10 te drijven. Dus nu, 1 is niet langer een int. 1 is een float. By the way, dit is gewoon de syntax voor als je wilt gieten van de ene type naar het andere data. Je kunt gewoon het type gegevens in haakjes en hebben dat gewoon voorafgaan de waarde die je gieten. Dus hier ben ik het opdelen van een vlotter door een vlotter aan een vlotter antwoord te krijgen. En ja, zou dit in feit afdrukken 0.10. Is dat logisch? LUCAS FREITAS: Dus typecasting is gewoon omzetten van een naar de andere. Dus vlotter 1 is eigenlijk 1,000. Niet echt, maar het is iets met decimalen dat eigenlijk 1. Is dat logisch? Yeah? Publiek: Wat als je float antwoord deed gelijk aan 1,0 gedeeld door 10? LAUREN CARVALHO: Je bent eigenlijk aan de hand om te zien dat in de volgende dia. Dat is eigenlijk onze volgende dia. Dit is eigenlijk een mooier dan typecasting, denk ik. Dus deze twee zijn praalwagens gewoon door aard van het feit dat zij hebben decimalen. Ja? Publiek: Wat als je wel [onverstaanbaar] gedeeld door 10? LAUREN CARVALHO: Eigenlijk een vlotter gedeeld door een int geeft je eigenlijk een drijven, zodat fijn zou werken. Wacht, doet iedereen dit begrijpt? Omdat dit gaat om een ​​echt big deal in Pset1, eigenlijk. Ja? PUBLIEK: Kun je snel gaan over het rode gedeelte? LAUREN CARVALHO: Het rode deel, ja. Lucas, wil je? LUCAS FREITAS: OK. Dus denk dat het percentage is een tijdelijke aanduiding. Het is als een lege ruimte. Dus laten we proberen om alles te begrijpen dat gebeurt hier. Procent betekent dat het een tijdelijke aanduiding. Dan heb je de f, wat betekent dat Deze tijdelijke aanduiding is voor een vlotter. Het laatste wat we hier hebben is een 0,2, wat betekent dat ik wil twee hebben decimalen voor de vlotter. Als ik had net% f, ze zal zetten een bos van decimalen. Dus ik kan gewoon 0,2 of 0,1 of 0,5, of wat dan ook, en het gaat om dat te zetten aantal decimalen. Het enige ding is dat als je als .100 Of .1,000, het is niet echt gaan al die decimalen zetten omdat het niet voldoende geheugen die nauwkeurigheid hebben. Andere vragen? Yeah? PUBLIEK: Dus drijven gewoon laat je verder te gaan dan gehele getallen? LUCAS FREITAS: Ja. LAUREN CARVALHO: Nou, een vlotter gewoon kunt u decimalen. LUCAS FREITAS: Het betekent gewoon dat je nu kan decimale getallen hebben. PUBLIEK: Waarom zouden we ooit gebruik gehele getallen? LUCAS FREITAS: Waarom zou je integers gebruiken? Misschien als je rekenen 0-10, u daadwerkelijk gebruik maken van een geheel getal. U hoeft niet naar een float gebruiken. In sommige situaties, u niet om daadwerkelijk - LAUREN CARVALHO: Misschien wil geen decimalen. LUCAS FREITAS: Misschien heb je niet wil een float gebruiken. LAUREN CARVALHO: Het andere ding is, herinneren, zowel zet een vlotter en een int nemen 32 bits op te slaan, en misschien u niet wilt stukjes verspillen aan de decimalen. LUCAS FREITAS: Yeah. Dus als, denk maar aan dit. Je hebt 32 bits voor zowel een int en een float. Voor een int alle 32 bits ga naar het gehele deel. Als je een float te gebruiken met 32 ​​bits, u hebben een deel van dit geheugen wordt gebruikt het aantal voor de hele getal, en het andere deel wordt gebruikt voor de decimalen. Dus dat betekent dat je niet kunt krijgen zeer grote aantallen met praalwagens, omdat de vlotter is al gebruik van veel geheugen voor de decimalen. Yeah? PUBLIEK: Dat eerste antwoord, wat doet het precies? Is het instellen van de waarde van float gelijk dat placeholder kun haal het op in de volgende regel? Het zegt zweven antwoord. LUCAS FREITAS: Yeah. Dus, float antwoord betekent dat je krijgt nu een emmertje in het geheugen dat heeft een vlotter, en dat gaat antwoord te noemen. Dus dat is wat vlotter antwoord doet. En dan zeg je dat de binnenkant van dit, je gaat zetten het resultaat. Dus je gaat doen 1.0 gedeeld door 10,0, krijg je 0.1, en dan zet je die binnenkant van antwoord. LAUREN CARVALHO: Dus in een lijn, we zijn verklaren en initialiseren deze float genoemd antwoord. LUCAS FREITAS: Interessant, hoewel dit is slechts een regel, het doet meerdere bewerkingen. Het is gewoon een manier van C verhuur u minder code te gebruiken. Het is hetzelfde als de ternaire operator, hoe je gewoon een kan doen [Onverstaanbaar] in een lijn. Het is eigenlijk hetzelfde doet als doet vlotter antwoord, puntkomma, en dan antwoord is gelijk aan deze, maar in plaats van waardoor je twee lijnen voor dat, het is als een snelkoppeling. Yeah? PUBLIEK: Dus als je dit uitvoert, 0.10 zou zijn? LUCAS FREITAS: Ja. Yeah? PUBLIEK: Is beantwoorden eigenlijk code, of is het gewoon de naam? LAUREN CARVALHO: Deze is eigenlijk code. Dit is wat we gaan om onze variabele noemen. Publiek: Dus het is gewoon een naam [onverstaanbaar]. LAUREN CARVALHO: Yeah. Ik had kunnen zeggen float x gelijk is aan 1,0. LUCAS FREITAS: Het ding is dat de naam van de variabele iets dat je gebruikt. Het is belangrijk voor u. Voor het eigenlijke programma, het enige dat telt is de waarde die u hebben binnenkant van de emmer. De reden waarom je variabelen en namen van variabelen is dus je zou weten wat je mee bezig bent, zoals wat voor gegevens je bent toegang per keer. Maar voor de code zelf, als je belt beantwoorden of vragen heeft of iets, vrij veel, het maakt niet uit. Het maakt niet uit. Zolang je consequent in elke bent optreden het en zo noem je het iets anders. Yeah? PUBLIEK: Doe de variabelen verder gaan dan de functie? Net als je om een ​​beugel te maken [Onverstaanbaar], kon je gewoon [Onverstaanbaar] nogmaals te beantwoorden? LAUREN CARVALHO: Nee. PUBLIEK: [onverstaanbaar] LAUREN CARVALHO: Nee. Dat zou buiten de scope zijn deze bepaalde variabele. En eigenlijk, dat is een soort van interessant, want als we dingen zoals lussen of deze als omstandigheden, als u een variabele declareert binnen een andere set van accolades, het bestaat eigenlijk alleen binnen die accolades. PUBLIEK: Een laatste opmerking over de [onverstaanbaar] praalwagens. Waarom zou je ooit willen ints gebruiken? Dit is meer een kanttekening dan iets, maar uw computer is significant beter in het omgaan met ints dan is het op handling praalwagens. Het is als een orde van grootte sneller. Dus als we gewoon alleen nog drijft, dingen zou een stuk langzamer. LAUREN CARVALHO: Eigenlijk, lijkt er om een ​​probleem met praalwagens zijn. LUCAS FREITAS: Kind van de reden voor dat je kunt bedenken, is hoe in binaire U kunt gehele getallen representeren door de invoering van 0 en 1's. LAUREN CARVALHO: Dat is het volgende ding. LUCAS FREITAS: OK. Geweldig. LAUREN CARVALHO: Gewoon Houd die gedachte. LUCAS FREITAS: OK, ik zal tell you later. LAUREN CARVALHO: Voordat we naar wat Lucas zei net, operator voorrang. Dit is gezond verstand. Jullie zijn dit genoeg gedaan. Dus, net als er iets is tussen haakjes, het zal eerst gebeuren. Het is vermenigvuldiging heeft voorrang dan bovendien aftrekken, dat soort dingen. Dus eigenlijk, gewoon wil iemand vertel me wat nummer een eigenlijk evalueert? Publiek: 27. LAUREN CARVALHO: 27? Yeah. LUCAS FREITAS: Ik geef snoepjes voor mensen. LAUREN CARVALHO: Oke. Hoe zit het met nummer twee? Hoe zit het met nummer twee? Publiek: 22. LAUREN CARVALHO: 22, ja. Ik weet niet wie dat kreeg. Nummer drie? Publiek: 10. LAUREN CARVALHO: 10, ja. Cool. Dus modulo. Lucas, wil je modulo uitleggen? LUCAS FREITAS: Modulo is deze operator dat is eigenlijk heel nuttig voor een bos van problemen. Als ik 55 modulo 10, wat het doet Dit laten we zeggen dat ik wil verdelen 55 10. Wat krijg ik? Het voelt net alsof ik ben eigenlijk gewoon het doen van de divisie, wat is de eerste keer dat ik de integer? PUBLIEK: 5. LUCAS FREITAS: 5. En dan de rest 5, toch? Dus het is net 5 keer 10 plus 5. Kortom, wat modulo doet, probeert het Deel dit getal door deze, en Het ziet wat de rest van de divisie. LAUREN CARVALHO: Dus het net geeft de rest. Dus nummer een is wat? 5. Nummer twee? PUBLIEK: 3. LAUREN CARVALHO: 3. Nummer drie? 0. En vier: 1. Precies. LUCAS FREITAS: Simpel, toch? LAUREN CARVALHO: Waarom doen we dit overslaan gewoon omdat we niet echt hebben tijd, en mensen lijken te begrijpen. Dus hier is wat Lucas was net over. LUCAS FREITAS: Een andere reden waarom ik zou ints in plaats van praalwagens is te gebruiken dat drijvers zijn zeer onnauwkeurig. En waarom zijn ze onnauwkeurige? David zei dat om een ​​geheel getal te vertegenwoordigen, bijvoorbeeld, gebruiken we 0 en 1, toch? En dan heb je in principe doen de vermenigvuldiging, doen al die handelingen wat decimaal getal je hebt in plaats van de binaire. Wat gebeurt er nu als ik probeer decimale punten zetten? Eigenlijk, bijvoorbeeld, als ik het getal als 3,33333? Het voelt als 10 over 3. Hoe ga ik slaan alle 3 is dat ik na dat? Het is echt moeilijk, toch? U kunt de computer niet gewoon vertellen, hey, ik heb een 3, en dan is dat altijd doe je. Eigenlijk is de computer niet slim genoeg voor. Dus in principe al uw computer doet is dat het probeert om zo veel cijfers als zetten het kan tot het geheugen dat je hebt. Dus laten we zeggen dat het gaat om zeggen 3,3333, en dat is het. Dus het is niet in staat om daadwerkelijk te uiten precies wat dat float is. LAUREN CARVALHO: We hebben een eindig aantal bits, waardoor niet elk decimaal getal gaat worden in staat nauwkeurig te laten vertegenwoordigen. Dus in dit voorbeeld, als we afdrukken van 0,1, we zijn nu druk uit 20 plaatsen. LUCAS FREITAS: Net zoals ik vertelde jullie, kun je een aantal zetten. Maar als je net deed de twee plaatsen, je zou krijgen 0,10, maar als je 20 plaatsen, het gaat om te laten zien een bos van 's want dit is wat je kunt zetten in het geheugen, toch? Maar hier, tot aan de 0, en dan is zet ze gewoon een bos van willekeurige getallen. Dit is net zoiets als een aantal - LAUREN CARVALHO: Dit is omdat we niet in staat om dit decimale vertegenwoordigen precies met het aantal bits die we hebben. LUCAS FREITAS: En dan de computer is in principe waardoor u een prullenbak nummer. Dit is niet echt het waarde van het getal. Publiek: Het is zo dicht het kan [onverstaanbaar] met de [onverstaanbaar]. LAUREN CARVALHO: Dus de implicatie van hiervoor is dat laten we zeggen dat in plaats van zijnde 0.100014, wat, wat als het was 0,0999 - goed, OK. Laten we doen alsof dat de werkelijke antwoord dit was 0,9999999. Dat is heel dicht bij 1, maar het is niet precies 1. Het is 0,99999. Dat betekent dat als ik dat 0.999, en ik wierp het naar een int, krijg ik 0. Ik snap het niet 1. LUCAS FREITAS: Want vergeet, casting van float naar int, je gewoon negeren alle decimalen. U negeert ze gewoon. Er is niet zoiets als afronding naar boven of rennen als je typeren. Eigenlijk is er deze functie dat doet afronding, wat erg belangrijk, maar je denkt gewoon dat wanneer je typecasting doen, het is gewoon ga alles verwijderen. Dus zelfs als je 0,99999, het gaat om geef 0 als je typecast [Onverstaanbaar] een geheel getal. LAUREN CARVALHO: Dus gewoon echt bewust van floating point in precisie, vooral als je begint aan drijvers in Pset1. Maar de wandeling door moet u te waarschuwen voor dat ook. LUCAS FREITAS: En eigenlijk is het echt hard, bijvoorbeeld, als ik dat deed vlotter antwoord 1 is gelijk aan 1.0 dan 10, en dan zweven antwoord 2 is gelijk aan 10,0 op 100,0. Ze zijn hetzelfde nummer, toch? 0.1, toch? 1 meer dan 10 of 10 meer dan 100. Maar nu als ik probeer om de gelijkheid te zien, als als antwoord 1 gelijk te beantwoorden 2, misschien is het niet daadwerkelijk gaat om hetzelfde te zijn. Dus praalwagens zijn soort als dat. Ze zijn als gelijkheid doen.