[Muziek] ALLISON Buchholtz-AU: Hey iedereen. Welkom bij uw eerste officiële CS50 sectie. Zoals je kunt zien is dit sectie CS50-achtig, net te trekken van onze agenda voor vandaag. Dus, wie ben ik, want ik weet zeker je allemaal af. Ik ben je TF. Ik ben niet zomaar een willekeurige student wie imiteert uw TF. En ik ga om te gaan door soort hebben secties zal stromen, verwachtingen die we hebben, middelen, enzovoort, enzovoort. We gaan om te praten over arrays, ASCII functies, command-line argumenten, en het is niet hier, maar Ik zal ook helpen je soort van doordenken uw volgende pset voor deze week. Waarvan ik weet zeker dat u zult waarderen. Dus, eerst question-- wie ben ik, naast uw uitbundige TF hier. Ik ben Alison Buchholtz-Au. Dit is mijn tweede jaar TFing CS50. Ik ook TF CS51 in het voorjaar. Je zou er weer te zien als je besluit om het te nemen. Ik ben ook een PAF, dus elke Freshmen-- en als je niet een eerstejaars, dit is mijn derde jaar als adviserend fellow. Ik ben zeer goed thuis in adviseren u op het leven en cursussen binnen CS en niet binnen CS. Ik ben een Informatica Concentrator. Ik ben een senior in Adams House, beste house. En voordat ik overgestapt naar CS mijn Sophomore Spring, Ik was eigenlijk een biomedisch ingenieur. Ik was van plan om naar Med school. Ik was van plan om een ​​trauma chirurg worden. En dat heeft helemaal veranderd sinds ik nam CS50. Ik vond het natuurlijk mijn Sophomore Fall. Het was mijn eerste kennismaking met CS ooit. Ik was een van de 78% van jullie die had nul ervaring komen, en het volledig mijn leven veranderd. En nu ben ik werkzaam bij Microsoft, en je mooie TF. En CS50 is waarschijnlijk een van de beste ervaringen dat ik hier op heb gehad Harvard-- zowel het nemen van de klas en in staat zijn om te helpen leren studenten zoals jij. Dus ik ben echt enthousiast dat u allen hier bent. In het geval dat je binnen kwam laat, er is snoep, die je moet voelen vrij om grab komen, of stuur iemand anders om het te grijpen voor u. het is OK. Ik wil niet te eten dat. Mijn kamer heeft genoeg chocolade, dus y'all moet proberen en afwerking die. Ik weet dat er 100 stuks, maar als, 04:00 op een maandag, Ik denk dat iedereen wel wat suiker gebruiken. Dus ieder van jullie die officieel in mijn sectie dient een e-mail hebben gekregen van mij met mijn telefoonnummer, email address-- vrij om me op toe voelen Gchat, voel je vrij om me toe te voegen op Facebook, en ook voor de rest van jullie, je kunt me hier mailen. Er zijn twee H's. Iedereen doet altijd als twee L's of twee C's. Twee H's in de laatste naam. Anders gaat stuiteren, en Ik ben niet van plan om uw e-mail te krijgen. Dus voel je vrij om me te mailen, om contact met mij op elk gewenst moment. Ik kan niet terug naar u binnen 24 minuten, maar ik beloof om terug te krijgen om u binnen 24 uur. Als je me belt een half uur voor uw PSET verschuldigd is, dat u het als, Ik heb geen idee wat ik aan het doen ben Allison. Help me. Ik ga u te kalmeren, maar aan het eind van de dag, als je me belt een half uur voor uw pset is verschuldigd met niets geschreven, Ik ga zijn als, nou ja, misschien het is tijd om die late dag gebruiken. Dus ik zal reageren op al uw verzoeken in een zeer tijdig. Mijn telefoon is meestal aan mijn handen vastgemaakt. Ik veel reageren meestal sneller dan 24 uur, maar ik kan alleen garantie een 24 uur reactie. Prima. Dus waarom zijn we hier? Ook als u vragen bij hebt elk moment, laat het me weten. Ik praat veel. Ik praat snel, maar gelieve voel je vrij om me te onderbreken. Het geeft me de ademhaling kamer ook. Dus secties zijn een tijd voor ons om echt gewoon duik in, nog wat hands-on ervaring, om gaan door onderwerpen die we al in de klas of in de studie van materialen die raden wij aan jullie online. En we zullen ook daadwerkelijk te gaan door sommige van die middelen in een beetje. Dus wat aantekeningen op afdeling support. CS50-- één van de dingen die maakt het een van mijn favoriete klassen is het gevoel dat je nooit alleen bent. We hebben een staf van meer dan 100 mensen die hier zijn om u te helpen. We hebben de kantooruren Maandag tot en met donderdag. Dus er zijn zoveel mensen die hou de klasse net zo veel als ik doen en die zijn echt hier omdat ze willen om hier te zijn. De meesten van ons zijn studenten, en dit is als een vijfde klasse naast naar de rest van ons werk. En het is een hoop werk, maar we doen het omdat we love it, en we houden ervan om je te leren en helpen delen onze opwinding voor dit onderwerp en deze klasse. Dus gelieve te profiteren. Kom met ons praten. Ik krijg eenzaam toen mijn studenten praat niet met me, dus als je wilt, komen hangen met me. Het zal geweldig zijn. Dus sectie is natuurlijk een van je grootste dingen. We gaan door middel van zaken dat je hebt geleerd in collegezaal, doe wat korte voorbeelden wanneer we tijd hebben, en in het algemeen soort een idee krijgen over dingen je moet denken over voor uw probleem te stellen. Shorts-- hoeveel mensen daadwerkelijk keek naar de video van uw scratch kort? Herkent iemand mij? Dus dat zijn zeer groot. Je moet zeker kijken naar deze. Veel werk is in hen. En ze zijn gewoon bedoeld om te worden hapklare stukken voor u om gewoon kijken voor drie of vier minuten en krijg een beter begrip van een concept. Loop throughs-- hoe veel mensen hebben gekeken de walk-throughs voor vorige? Zamyla is geweldig, toch? Zoals, ik wou dat ik waren Zamyla soms. Dus zeker gebruik maken van uw walk-throughs. Ze zal het breken in kleine, hapklare stukken. En als je deze enorme specificaties van uw probleem sets, het gaat echt belangrijk te zijn in staat zijn om gewoon ergens starten en langzaam werken doorheen. Oké, we hebben ook Study50, die is study50.harvard.edu, geloof ik. Je kunt gewoon Google bestuderen, en het zal komen. Dit is één van de beste middelen hebben we. Het is PowerPoints met notities en de praktijk problemen voor u met oplossingen die u daadwerkelijk kan lopen door. Dus als je ooit wilt meer praktijk, meer dan wij in secties of meer dan uw probleem sets, dit is echt een plaats waar ik moedig u aan om te gaan. Het werd gebouwd afgelopen zomer door sommige van mijn echt goede vrienden. En het is verbazingwekkend. In feite, veel van de glijbanen die ik zal gebruiken voor sectie zal komen van Study50. Dus veel van de TF gebruiken. En tot slot, als ik vermeld, kantooruren. Als je problemen hebt met met huiswerk, je bent problemen met een concept, komen naar de kantooruren. Ga vroeg in de week als je kunt. Stap uit aan de quad, want het is een soort van ver. Niemand vindt het leuk om daar te lopen. Maar het is in uw voordeel, want dan ben je naar al deze TFS hebben, [Onverstaanbaar] omringen u. En zeker nu, gewoon een tip, donderdag zijn erg chill nu in Mather omdat uw psets zijn verschuldigd op donderdag. En weten wil Gebruik toch uw late dagen. Dus als je met moeite met concepten, zijn er tal van TF's die zijn er om u te helpen. Dus kom naar Mather op donderdag. Als je me wilt zien, Ik ga om daar te zijn. Ik ben meestal doe mijn eigen huiswerk, want niemand wil mijn hulp. Dus kom ons zien. Ontmoet ons halverwege. Dus hoeveel mensen hebben bijgewoond college geven of keek er online? Hoeveel mensen gingen naar super sectie van vorige week? Cool. Dat is eigenlijk een behoorlijk aantal. Hoeveel van jullie hebben gelezen uw spec voor deze week, voor uw pset? Ooh, ik ben trots op jullie! Meer snoep voor y'all. Goed, dus wat we bedoelen "Ontmoeten we halverwege," is die sectie is eigenlijk alleen gaat super handig voor u te zijn als je komt in het lezen van uw specificatie voor uw pset. Want toen ik door een overzicht van dingen die je moet uit op zoek naar, het is niet van plan om te maken zo veel zin als je weet niet wat je probleem stellen gaat worden waarin u wordt gevraagd om te doen. Als je niet komt om sectie, uiteraard Ik kan niet zo zijn dat nuttig voor u. Ik ben niet van plan om het te persoonlijk of te nemen je hoeft niet naar mijn sectie komen op dit moment, maar zeker je zou moeten. Als je niet kan, kijken ze online. Ze zijn er voor een reden. Mine zal er zo aan. Zoals u merkt, worden we opgenomen, dus kom er zo voor jullie. Als goed, gaat lectures-- dat is natuurlijk waar je krijgt de start van uw materiaal hier. Dus ik zal zeker proberen en u helpen zo veel als ik kan, maar ik kan je alleen aan tot nu toe. Je moet soort ons te ontmoeten halverwege. Grading-- zo, jullie allemaal die een e-mail gekregen van mij, je bent mijn officiële gedeelte. Ik zal de indeling van uw psets. En ik wil alleen maar zeggen, een ding dat je moet echt aandacht te besteden aan zijn de opmerkingen. De reacties zijn vaak bruikbaar dan de werkelijke score geven wij u. En de reacties zijn eigenlijk waar ik veel van mijn tijd als ik grading. Dus ik zou het waarderen als je ze leest. En ze zijn eigenlijk hoe je gaat voor meer informatie over het ontwerp en de stijl van leren en dingen die zijn een Iets minder knippen en droog. Dus echt aandacht aan deze opmerkingen. Als u vragen heeft over hen hebben, of vragen over uw score, kom alsjeblieft met me praten hetzij voor sectie, Ik zal waarschijnlijk worden opknoping uit in de lobby, of achteraf. Als u wilt plannen one-on-one meetings over hoe je kan helpen later verbeteren probleem sets, laat het me weten. En dan gewoon een paar tips voor jullie. Dus een van de grootste dingen Ik heb altijd de nadruk op mijn afdeling wanneer je leert hoe om te coderen is om dingen uit eerste schrijven op papier. Als je een game plan voor waar je code moet gaan en wat het nodig heeft om te te doen en het is afgebroken in kleine stukjes van pseudocode code die je hebt uitgeschreven, je gaat minder kans op syntax fouten te maken of maak een if-lus die heeft geen ander. Als je weet waar je bent algehele gaan, je bent minder kans om deze kleine maken fouten die je soms zal nemen uur op te lossen, omdat je net als, waar ga ik het missen deze beugel? Op deze nota, dan kunt u gebruik maken van Style50. Zeker als je bent gaan naar het kantoor uren, als uw code is alles overgeschakeld naar een kant, het is natuurlijk beleid dat we kunnen zeggen, fix it zodat het lijkt alsof Style50 zegt het zou moeten, en dan zullen we je helpen. Dus het zal uw leven gemakkelijker te maken. Het zal ons leven gemakkelijker te maken. Iedereen is gelukkiger. Iedereen krijgt betere cijfers. Is dat niet wat we allemaal willen? Dus schrijf dingen op papier vóór u ooit uw computer aanraakt. Praat dingen uit op een hoog niveau, en zorg ervoor dat je weet waar je naartoe gaat. En als je niet zeker weet, zitten met iemand en lopen ze door stap voor stap wat uw code verondersteld wordt te doen. En negen van de 10 keer, dan heb je de als, oh, ik vergat een if-voorwaarde of ben ik vergeten een puntkomma hier of Ik ben het updaten deze variabele verkeerd. Dus dat zijn mijn tips voor succes. Dus omdat ongeveer de helft van je kijkt zoals je hebt bezocht super sectie, Ik ga gewoon heel kort gaan door lussen, die niet waren op onze oorspronkelijke agenda. Maar ze zijn echt belangrijk. En dus ga ik soort van snelheid door deze voordat we in onze huidige sectie. Voordat ik dat doe, zijn er elke questions-- logistiek, persoonlijk, is er alles wat je wilt te weten over mij of over afdeling of klasse in het algemeen? Alle goede? OK, cool. Lovely. Dus loops-- jullie moeten allemaal herkent deze stukken vanaf nul. Dus loops zijn eigenlijk gewoon voor ons een manier om iets te doen bepaald aantal keren, wat herhaald actie op basis van een aantal voorwaardelijk. Dus hebben we drie verschillende types. We hebben voor de loop, terwijl, en do-while. Dus voor loops-- we hebben gewoon een heel algemene lay-out hier van een lus. En dit is geweldig voor als je weet hoe vaak iets moet uitvoeren. Als we spreken over de andere loops, dan heb je zien waarom dat is een belangrijk onderscheid. Maar voor loops zijn voor iets set. Je weet dat je kunt of bereken het aantal of weet je het aantal keren dat u wil dat dit herhaald bij het begin. Dus als je hier ziet, we hebben slechts een algemene soort van skelet kader voor een lus hier. Dus voor initialisatie, dit is waar uw variabelen worden geïnitialiseerd. Met Mario, ik weet zeker dat jullie deden iets als int i gelijk is aan 0. Dat is waar dat zou gebeuren in het blauw. U hebt uw aandoening, die is wat er elke keer gecontroleerd. Als deze voorwaarde waar is, dan is de rest van de code wordt uitgevoerd. Dan zal het again-- lopen en vragen. En dan hebben we updaten, waar je bent het bijwerken van uw variabele. Dus, nogmaals, met als Mario, ik ben er zeker van Jullie deden iets als ik plus plus. Dus elke keer als de lus liep, kreeg ik dus bijgewerkt dat toen we het controleren van tegen enige voorwaarde werd het veranderen. Want als je gewoon een statische variabele, indien voert de eerste keer, het gewoon naar oneindig uit te voeren. Dus je moet ervoor zorgen dat u updaten van uw variabele. En we hebben ook gewoon een visuele voorstelling daar. Iedereen goed? Voor lussen. Moet hebben gezien deze in je pset. Cool. Dus hier is gewoon een makkelijk voorbeeld. Print Dit is CS50! 10 keer. En dus hebben we onze initialisatie, zoals we zien er, met int i gelijk is aan 0, voor i kleiner dan 10, en ik plus plus. En het zal worden afgedrukt dat 10 keer. Dus terwijl loops-- while loops zijn geweldig als je per se niet hebben om te weten hoe vaak het is zal bijwerken in het begin. Je hebt slechts enkele voorwaarde dat wordt gecontroleerd. En dit zou iets als while-- zijn laten we eens een voorbeeld uit uw pset. Als Mario, je probeert te ingang een negatief getal. Right? Je moest opnieuw gevraagd uw gebruikers. Dus je kunt zeggen, nou ja, als de gebruiker ingangen iets minder dan nul, re-prompt ze. En ik weet zeker dat zou kunnen hebben iets geweest dat sommigen van jullie gebruikt in de code. Dus het is een simpel ding. Je hebt, terwijl sommige voorwaardelijke dat wordt gecontroleerd telkens als de code gaat voeren. Als het de waarde true, we draaien het. Anders doen we het niet. En wat echt important-- iets wat ik denk dat David sprak over in lecture-- zijn de bretels. Wat er binnen de braces is wat er uitgevoerd. Als u deze vergeet bretels, het is alleen maar om de lijn rechtstreeks zijn Na die tijd werd geëxecuteerd. Dus als je drie hebben dingen die worden verondersteld om bij dit gebeuren voorwaarde de waarde true, en je hoeft niet die bretels, alleen het eerste wat er gaat gebeuren. Wees dus zeer bewust van waar je je bretels. Als je de stok met Style50, Dit zal je zeker helpen. Cool. Dus dit is een aftellen 10 tot nul. En zoals je hier ziet, we initialiseren sommige teller daarbuiten. Een ding dat anders is we zijn niet initialiseren onze variabele binnen onze while lus. Het geïnitialiseerd daarbuiten. We zijn gewoon zomaar de conditioneren onze tijd. Dus in dit geval, terwijl het telling groter is dan nul. En wij drukken wat onze telling is, en dan verlagen we onze variabele. En dat is ook een ander ding om op te merken. Ons systeem is niet binnen gebeuren dat eerste deel van de tijdens lus. Het zal echt gebeuren binnen de bretels, het lichaam van uw tekst. Dus niet-terwijl loops-- do-while loops zijn zeer geschikt voor de gebruiker valideren. Dus sommigen van u zou kunnen hebben ook gebruikt dit in uw pset. Je kunt zeggen, doen, zoals, vraagt ​​de gebruiker om invoer. En dan, terwijl, als, de ingang is dan een getal. Dus voor een expliciet geval met Mario, het zou doen printf, voer een geheel getal, en dan nog wat integer is gelijk getint. En dan zal het eigenlijk eerste uitvoering die code. Je zult eigenlijk een soort van integer. En dan zou je kunnen zeggen, terwijl dat integer is dan nul. Dus wat het gaat doen, is het naar ten minste eenmaal uitvoeren. Het gaat om de conditie te controleren. Als de voorwaarde waar is, zal het opnieuw uitvoeren. So do-while loops zijn geweldig voor de gebruiker validatie, omdat je de code weet zal tenminste voeren een keer, terwijl bij while loops, je bent niet gegarandeerd dat het naar eenmaal wordt uitgevoerd. Het gaat om de conditie te controleren eerst en dan besluiten om het uit te voeren, terwijl een do-while zal eerst de code uit te voeren en controleer om te zien of je nodig hebt om het te herhalen. Is dat onderscheid zinvol zijn voor iedereen? OK. Cool. Dus in dit geval, is dit soort van wat ik het over had, deze re-wizard totdat u krijgen een positief getal. Dus we weten dat printf "Geef een positief getal" en eigenlijk vragen dat invoer ten minste eenmaal gebeuren. Als de gebruiker is het kwaad en houdt het invoeren van een negatief getal, die weet hoe vaak het zal uitvoeren. Maar deze code wordt gewaarborgd ten minste eenmaal uitvoeren. En dat is waarom het is geweldig voor de validatie van invoer. En je zal gebruiken dat nogal wat. Oké, vragen tot nu toe? We zijn allemaal goed? Praat ik te snel? We zijn goed? OK. Awesome Dus we gaan om verder te gaan en praten over arrays. Cool. Dus arrays zijn in principe gewoon datastructuren die ons in staat om op te slaan dingen van het zelfde type. Dus als je ooit een array, het is ofwel gewoon gaan ints hebben of het is gewoon te praalwagens hebben of het is gewoon te chars hebben. Je gaat niet naar een int met hebben een char met een vlotter met een double. Een ding. Arrays zijn slechts een maat, of zijn ze gewoon één type. Hier hebben we dus een array van grootte drie met drie getallen in. Ze konden drijvers, maar we zijn gaat Ze zijn ints zeggen. Dus een ding om te beseffen is dat arrays zijn een set grootte wanneer u initialiseren hen, en ze zijn niet easily-- omdat jullie allemaal zijn minder comfortabel, moet je gewoon denken aan hen als niet kunnen uitstrekken in grootte. Hoe groot je uiteengezet je array in het begin, dat is de grootte het gaat te blijven, omdat arrays continu geheugenblokken. En als je jongens krijgen in een beetje meer van hoe het geheugen is eigenlijk aangelegd op schijven en de en de stack, het zal een beetje meer zin te maken. Maar je kon gewoon denken als, het is gewoon een rij van ruimten op uw schijf. En je kan niet garanderen dat er gaat om vrije ruimte te zijn na het. Je zou een array te initialiseren van drie en dan hebt u misschien initialiseren andere array van vijf later, en het is direct na dat. Dus als je naar het verleden spot gaan drie in die eerste reeks, zou je schrijven meer dan iets anders. Dus arrays zijn-- voor jullie, net denken aan hen als een vaste grootte. Dus het creëren van een array-- je gaat nodig hebben om dit te doen nogal wat. Dus net zoals we een algemene structuur voor onze voor loops, we hebben een leuke algemene structuur onze array. Omdat ze in ene alle elementen in een array zijn van een type, je nodig hebt om te initialiseren wat dat type is. Dus, zoals je hier ziet, hebben we een leuk weinig gegevens beugel type. Dus als we het creëren van een int array, wordt die int. Als we het creëren van een char array, zal het char zijn. Als we het creëren van een string array, zal het koord. En dan de naam van uw array, wat je wilt dat het is. Dus misschien is het testscores of misschien het is studenten of misschien is het snoep. Wat je ook besluit om de naam van uw array, dat is wat het zal zijn. En dan tussen haakjes, dan heb je de grootte die je wilt. Dus, we zijn het opslaan van 10 studenten of zijn we het opslaan van 15 soorten snoep? Wat niet. Dus hier ons voorbeeld, creëren we een array van grootte van drie, die jullie zie hier aan de rechterkant. En toen we voor het eerst initialiseren Het is alles op nul. Dus het is gewoon gedacht van als een schone lei. We hebben al deze ruimtes, hebben we alle deze dozen konden we onze gegevens in kunt plaatsen, maar ze zijn gewoon leeg voor het moment. Dus als we willen eigenlijk toewijzen van deze waarden, doen we dat zo recht onder hier toont. Dus je hebt wat ook de naam van uw array is en dan wat index u wilt. Dus de index verwijst alleen maar om, als, wat sleuf waar we naar kijken. En een belangrijk ding om op te merken dat arrays zijn nul geïndexeerd. Dus als we willen dat de eerste ruimte in het geheugen van ons aanbod, het gaat naar nul. Als we willen dat de tweede, zal het zijn één. Als we willen dat de derde, zal het twee. Zo verder en zo voort. Dat is ook de reden waarom, conventioneel, als we dat doen voor loops-- ik ben er zeker van jullie vroegen ons af, waarom we beginnen bij 0 versus 1? En dat is, want als we de overgang naar het gebruik van arrays, het correct in kaart. Dus als je wilt herhalen in een array, het maakt veel meer zin om do i gelijk is aan 0, omdat we dat correspondeert de eerste plaats in het geheugen. Iedereen goed met dat? Cool. En vervolgens op de bodem hier gewoon een andere manier om een ​​array te initialiseren. Je hebt nog steeds uw soort gegevens en de naam, maar feitelijk zetten een grootte in daar, je kan het gewoon doen lege haakjes. En vervolgens deze gekrulde steunen op de bodem, Je kunt gewoon het invoeren van de gegevens die u wilt, gescheiden door komma's. En dat zal automatisch zeggen, OK, ik zie dat je drie hebben dingen in deze beugels. Dus ik weet dat ik moet drie wijzen blokken van het geheugen en vervolgens op te slaan degenen. Dus de eerste versie die je zou kunnen gebruiken als je vraagt ​​uw gebruikersnaam in te voeren waarden, zodat u kunt doorlopen van de array en ask-- nog wat int voor het invoeren van hen. Als u weet dat de waarden van tevoren, het maakt veel meer zin de tweede manier gebruiken. Maar in de meeste gevallen zult u niet weten wat die waarden zullen zijn. Cool. Een andere vragen? Alright. Dus toegang elements-- dus één van de grote dingen over arrays is dat zij willekeurige toegang, wat betekent dat je hoeven niet te kijken door elk blok. Als u weet dat u willen wat er in blok twee, kun je gewoon zeggen, geef me twee te blokkeren. En dat is waarom deze indices zijn zo belangrijk, en dat is hoe we hen daadwerkelijk toegang. Dus in dit geval, zoals we eerder zagen bij we toekennen van waarden in de ene eerder, hadden we de naam en de index wilden we toegang, toch? Dus op dezelfde manier, dat is alles wat we doen om daadwerkelijk te trekken die gegevens uit. We hebben de naam en we hebben de index die we willen. Dus in dit geval, de lus hier beneden op de bodem, iedereen weet wat het doet, wat het zou uitprinten? Mmhmm? Precies. Dus ja, het is gewoon itereren door. i is gelijk aan zero-- we kunnen lopen door middel van de code gewoon snel. i gelijk is aan nul, i kleiner dan drie op dit punt, toch? Dus dat klopt. En we zeggen, OK, printen f wat is de temperatuur i. i nul is hier toen we voor het eerst herhalen, dus gaan we naar deze eerste plek, en wij zeggen, OK, 65 is het nummer willen we om uit te printen. Dus het zal 65 uitprinten en doe dan een nieuwe lijn. Ik zal updaten, zodat deze wordt afgedrukt 87. Het werkt weer, en het zal 30 afdrukken. Iedereen cool? Awesome. Prima. Dus hier is een soort van een wat ik zei hoe u kunt bijhouden iemands score en waarom je zou gebruiken de eerste manier om te initialiseren in plaats van dat de tweede manier. En dit gaat gewoon door. En merken we hebben een groepsgrootte van 30. En we zijn het initialiseren van deze reeks van ints dat is van maat 30 t. En dan zijn we itereren door en we zijn waarin de gebruiker om invoer scores voor elk van deze en vervolgens toe te wijzen aan een bepaalde plaats in het geheugen ergens in die array. Cool? Is dat zinvol voor iedereen? Mmhmm? Dus hashtag definiëren klassengrootte 30 is een richtlijn preprocessor, die gewoon betekent dat het gets-- het heeft te doen, zoals het samenstellen proces. U kunt denken aan het als een globale variabele. De manier waarop we dat doen is typically-- het laat je code gemakkelijker wijzigen. Dus laten we zeggen dat onze klas wordt plotseling 30-15, als ik niet had gedefinieerd het op deze manier, zou ik moeten gaan door mijn hele programma en ververs elke instantie van 30-15. Maar met deze, krijg ik tot één veranderen spot, en al het andere verandert. Als je ooit wilt doen een hash definiëren geval waar u het bijhouden van sommige bepaald aantal scores voor een klasse of je gebruikt een aantal dat zal worden gebruikt, zoals, gedurende een zeer lange programma, het is beter te definiëren dat begin zodat als het ooit verandert, krijg je één vlek in plaats van 100 veranderen. Ja? STUDENT: Tussen dat te doen en gewoon verklaren [onverstaanbaar] boven aan de top. ALLISON Buchholtz-AU: Dus het heeft te maken met efficient-- het is een soort van buiten het toepassingsgebied van wat we kunnen dekken in deze sectie. Het heeft meer te doen met efficiency en hoe de dingen eigenlijk werken in het samenstellen proces. Wilt u echt weten over, ik ben blij om u te sturen een e-mail met middelen over. Hash definiëren heeft de neiging om de voorkeur voor dingen. En als je meer code, je soort leren de nuances van wanneer je een moet gebruiken globale versus de hash te definiëren. Maar voor het moment, je hoeft niet echt zorgen te maken over het dat het korte antwoord. Iedereen goed met dat? En ook, als je wilt gebruik van een hash definiëren het is echt belangrijk om op te merken dat de naam moet in hoofdletters. We hebben het niet alleen doen Groepsgrootte te zijn dramatisch. Het moet eigenlijk in alle caps. Cool. Iets anders is er? We zijn goed? Lovely. Welkom. OK, dus ik wil dat jullie een kijkje nemen op deze en kijk of je de bug kunt vinden. Ik zal je een hint geven. Het is ergens in dat lus. Mmhmm? STUDENT: Moet minder dan gelijk aan 2 zijn. Ann: Dus het minder zou kunnen zijn dan of gelijk aan 2, of het kan minder dan 3 zijn. En wat is de redenering voor dat? STUDENT: De [onverstaanbaar], 0, 1, 2. Ann: Precies. Dus in een array van grootte n, we slechts indices n minus 1. Cool. En dan kunnen we pas echt gek en krijg multidimensionale arrays. Een van de problemen toen ik het in mijn jaar vereist multidimensionale arrays, en ik denk dat een van hen zou kunnen vereisen het dit jaar, zo comfortabel zijn. Wikkel je hoofd rond het nu. Het zal terug komen om te achtervolgen u, maar op een koele manier. Dus je kunt eigenlijk alleen maar denken van multi-dimensionale arrays arrays van arrays. Dus u kunt soort denken van deze top roeien als het eerste stuk van het geheugen. En dit is de tweede stuk van het geheugen, en de laatste rij is het derde deel van het geheugen. En binnen dat er een array. Maar natuurlijk, het is makkelijker af te beelden als deze. Zodat u deze initialiseren op dezelfde manier. Dit is een teken raad van drie bij drie. Dus je hebt drie rijen en drie kolommen. We vertegenwoordigen het op deze manier. En je zou het de toegang op dezelfde manier, kolom per rij. En dus 1,1 zoals we hier zien. We kennen een zero, nul daarboven. 2,0 en 0,2. Dus zou je them-- gewoon toegang als iemand ooit heeft gedaan lineaire algebra, op dezelfde manier waarop u toegang tot een element in een matrice, het is hetzelfde idee hier. Zo kunt u het terug naar wiskunde betrekking hebben. Je hoeft niet te maken veel over dit moment. Het is goed om de blootstelling te hebben, om te weten dat je het kunt doen. U kunt een aantal maken crazy number-- je kan creëren gek arrays wordt alles wat ik ga zeggen. [Onverstaanbaar] Het wordt een beetje gek, maar het is echt cool. Awesome. En dan, dus hebben we hier een voorbeeld. Het berekent een string lengte. Dus hoeveel mensen wisten dat de snaren die je gebruikt zijn slechts arrays van karakters? OK, ja. Dus jullie kunnen denken dat je niet gebruikte arrays voor, maar elk moment je getString gebruiken in de CSView bibliotheek, je bent eigenlijk gewoon vragen om een reeks tekens. En we zijn het verzorgen van alle dat in de back-end voor je. Maar je hebt het gebruik geweest arrays sinds je begon. Je gewoon nog niet weten. En wanneer u een karakter array of een matrix die is opslaan van een koord, het laatste ding is altijd wat genoemd null terminator die is dit recht hier. En dat is eind elk woord dat u wilt opslaan. Dus als we willen achterhalen van de lengte van een tekenreeks, kunnen we zeggen, Nou, weet je, het inhoud van dat blok is niet gelijk onze null terminator. Dat betekent dat er een karakter is er dat we eigenlijk zorg over dat deel van het woord. U verhoogt uw lengte. En toen we eigenlijk naar het einde van het woord, het zal beëindigen en het zal onze lengte terug voor ons. Mmhmm? STUDENT: Heeft de ruimte tellen als de null terminator? Ann: Dus een spatie is niet een null terminator. Dus als je multiple-- een ruimte is in feite een specifieke ASCII waarde. STUDENT: Wat is het uitroepteken weer gelijk? Ann: Dus, dit is wat je verwijzen naar. Als je me ooit in kantooruren horen, Ik noem het altijd, net als, bang evenaart. Zo bang is dat niet. Dus dit is niet gelijk. Dus als je probeert te zien of er iets is vals, je weet altijd doen, bang wat de variabele, en als het onwaar, deze waarde true en je kan leuke dingen doen met die. Daarover later meer. Cool. Alles goed daar? Awesome. Dus nu is het tijd uw guys 'aan werken, want ik heb gesproken. Dus ik wil dat je gewoon een array met de getallen één, twee en drie, en dan hebben ze uitgeprint. Je hoeft niet te doen, als, belangrijkste, blah, blah, blah, wat dan ook. Ik wil gewoon dat je te initialiseren de array en maak vervolgens een lus om ze af te drukken out-- of een while loop, aan jou. Ik geef je slechts een paar minuten aan werken. Ik ga mijn stem rust. Als je vragen hebt, ik ben blij om rond te komen en te praten met jullie. Voel je vrij om met elkaar te praten. Haal meer snoep. In feite, zal ik gewoon rondlopen met snoep. Hoe is dat? Heeft u wilt? Iemand anders in deze ruimte wil snoep? U kunt ook meer dan één, jongens. Neem een ​​handvol als je wilt. Kan ook. Iedereen goed? OK. Ook ga ik maken een anonieme Google Form, en jullie kunnen gewoon indienen feedback na elke sectie als er iets is wat je wilt verbeteren of iets wat je wilt doen. Als ik een beetje te peppy voor u, kan ik het afzwakken. Ik zal dat in en stuur dat uit om jullie allemaal achteraf. Prima. Dus laten we beginnen klein. Hoe zouden we ons aanbod te initialiseren? Wat is de aard van ons aanbod? Een int, toch? OK, dus wat wil je om de array te bellen? Int array, cool. Oké, dus we hebben int int-array gelijk, en wat hebben we daarna? STUDENT: [onverstaanbaar] haakjes. Ann: Bretels. En dan in de beugel? Één komma twee komma drie. Cool. Dus dat is in orde. Dus nu hebben we onze lus. Dus in het eerste deel van onze lus, wat hebben we? STUDENT: i gelijk is aan 0? Ann: Dus int i gelijk is aan 0, en wat is dan onze toestand? Wat ik ga minder dan zijn? Minder dan drie, en Hoe we het doen we i updaten? i plus plus, het updaten van het met één. En dan gaan we hebben sommige printf van de integer, en wat is dat laatste deel dat is eigenlijk gaan zeggen wat we moeten printen? Het zou de naam van de te array, dat is int array, toch? En wat zit er in de beugels van de int-array? i. [? Dus ik?] Belde mijn voorbeeld, maar daar ga je. Niet zo slecht. Iedereen goed? Cool. Dus we zijn klaar met de arrays. Congrats. Je wist te herhalen door alle the-- ja? STUDENT: [onverstaanbaar] Ann: Ja. STUDENT: Ik heb een vraag. Bent u verondersteld om de beugels inspringen? Ann: Dus de beugels moet line-up met de lus, en dan is alles binnen in de beugels moeten worden ingesprongen. STUDENT: OK, moet de lus worden ingesprongen? Ann: De lus niet moeten worden ingesprongen op dit punt. Als je in de belangrijkste, als we had eigenlijk een hoofdfunctie hier, het zou worden ingesprongen van de belangrijkste. Maar in dit geval, is het prima. Ja, vraag. STUDENT: Heeft u behoefte aan hebt de haakjes na het voorbeeld? Ann: Ja, als je initialiseren van het op die manier. Dus vergeet niet, dit is de tweede manier van het initialiseren van een array waar wij hebben de beugels en dan is onze eigenlijke gegevens gescheiden door komma's binnen. STUDENT: Ik dacht dat er waren beugels voor dat voorbeeld. Ann: Nee, ze zijn bretels. Ze zijn bretels. Als je het initialiseren die tweede manier, het is een beugel. Als we zouden zeggen, int example-- indien we wilden gewoon een lege array voor integers, het zou zijn int bijvoorbeeld beugels drie. De haakjes geven de grootte. Wanneer u braces, het is de feitelijke gegevens je bent het in het op deze manier. We kunnen terugkijken echt snel te bladeren. Dus in deze, dit is gewoon onze eerste array, initialisatie. En hier zijn we individueel toewijzen van plekken om ze, dus dit is de index van onze array, dat is waarom we hebben beugels. Maar hier, als u opmerkt, we hebben lieten onze beugels zonder omvang, en we het met het feitelijke gegevens all-in-one met een beugel. STUDENT: Dus waarom niet we hebben haakjes in dit voorbeeld? Ann: Dus, in welk deel? STUDENT: zouden we niet zeg, int bijvoorbeeld beugels evenaart haken [onverstaanbaar] haken, bijvoorbeeld. Ann: Oh, sorry. Je hebt gelijk. We hebben beugels daar. Sorry jongens, my bad. Ja, moet je haakjes na voorbeeld. Je hebt helemaal gelijk. STUDENT: [onverstaanbaar] het niet te doen. Ann: Nee, je moet hebben haakjes, want anders is niet van plan om een ​​array te verklaren. STUDENT: [onverstaanbaar]. Mail. Ann: Sorry, je moet haakjes na voorbeeld. Typo. Goede vangst, gouden ster voor jou. Ook, als u een vraag stelt, indien jullie zouden gewoon vertellen me uw namen, Ik zou graag dat. Ik zou graag in staat zijn om weet al uw namen. Ik ga niet koud roep je, ik eigenlijk hoeft alleen maar willen om uw namen te leren kennen. Dus gelieve eigenlijk vertel me uw namen. LEAH: Leah. Ann: Leah. OK, dus functions-- weet ik in het kort Ze spraken over dit tijdens college. Dus functies zijn een soort van net zoals deze kleine hapklare dingen waar je langs in ingangen, iets magisch gebeurt, en je krijgt uitgangen. Cool. Dus u daadwerkelijk gebruik gemaakt van een Veel van deze reeds. Krijg int, krijg touwtje, printen f. Dit zijn alle functies waar je ze gewoon bellen, er is veel magische dingen gaande in de achtergrond dat je niet per se te zien, en je krijgt wat je wilt. Of in ieder geval krijg je wat je hoopt je wilt. En eigenlijk de bijzondere functies en een van de belangrijkste thema's van CS, is om je code te breken in hanteerbare stukken. Wanneer je begint te schrijven deze echt lang programma's, of in Scratch dat je moest dit grootse idee voor een spel, moet je in staat zijn om het te breken omlaag om, als, OK, hoe moet ik beginnen? Wat zijn de kleine stukjes die ik nodig heb? Oh, ik moet het vragen gebruiker voor iets. Nu moet ik iets af te drukken. Oh, ik moet deze waarde te berekenen. En leren hoe te breken uw code en de grote problemen die u hebben in deze kleine stukjes en het creëren van functies is eigenlijk een van de grote hoekstenen van CS. Zo kunt u denken aan een functie net zo als een zwarte doos, een magische zwarte doos, dat je de dingen in en je krijgt een aantal output. En de rest van het programma hoeft niet noodzakelijkerwijs weten wat er in die black box. Alles wat het geeft om is wat gaat in en wat eruit komt. Cool. Dus waarom functies? Organization-- zoals ik al zei, als je het omgaan met zeer grote code bases, Hoe organiseer je je code zal zijn veel gemakkelijker als je functies gebruiken. Want je zult in staat zijn te zijn, zoals, OK dit is wat deze functie doet en hier is wat een ander doet. En je kunt eenvoudig zien hoe ze allemaal in elkaar passen. Dus breken het op in alle deze beheersbaar subonderdelen. Dus simplification-- Ik weet zeker dat jullie Alles zag dit, zoals ik al zei, met Scratch. Je hebt dit grootse idee, en je net als, hoe doet al dit werk? Maar als je het te benaderen stukje bij beetje, zeg je, OK, hoe maak ik een sprite zweven over het scherm? Dat is een beetje makkelijker. Zo goed gebruik van de functie merken uw code veel gemakkelijker te lezen. Het maakt het makkelijker om te debuggen, die als je in je latere probleem sets, je gaat echt willen in staat zijn om te doen. En ze zijn ook makkelijker te ontwerpen en te implementeren. U kunt maximaal coderen een kleine relatief snel functioneren en zorg ervoor dat het werkt versus proberen deze hele lange programma te maken en dan soort doorlopen en zien wat werkt en wat niet. En dan herbruikbaarheid. Dus functies hoeft alleen eenmaal te worden geschreven, en dan kun je ze gebruiken zo vaak mogelijk. Dus het is, net als, milieuvriendelijke in zekere zin. Als je dingen als had prent f, waar u had de magie die uitgaat om te schrijven achter afdrukken f elke keer je wilde iets af te drukken, u zou behoorlijk ziek en moe van het zijn tegen het einde. Een van de dingen die je zult leren op latere klassen CS, of één van de beste stukken van advies dat ik krijg is, als je kopiëren en plakken code moet waarschijnlijk een functie zijn. Als je precies hetzelfde hebben lijnen al in uw code, als je meegenomen ze uit, uw code zou waarschijnlijk zijn zoals vijf keer korter en veel meer gemakkelijk te lezen. En in plaats van te proberen om problemen op te lossen al deze verschillende plaatsen waar dingen er fout kan gaan, je er een functie hebben dat je bij het oplossen van problemen. En ik beloof, veel van deze lijkt soort abstracte nu, maar als je in de latere en later probleem stelt, het zal veel meer zin en echt naar huis worden gestuurd. Zijn er nog vragen over functies tot nu toe? Waarom we ze gebruiken? Ik weet dat we niet hebben gekregen in de Nitty Gritty nog. Dus het definiëren van een function-- net als arrays, een soort van-- dit moeten we is gewoon de algemene output. Dus dit is een functie die gewoon naar wat input kubus. En op de volgende pagina, eigenlijk, we hebben al deze geweldige kleine dingen hier. Dus, iedereen kan lezen dat, uit nieuwsgierigheid? Ik weet dat het paars en zwart misschien een beetje hard. Maar grote dingen te weten-- dus de eerste één hier is onze terugkeer type. Dus dit is het over de output van deze functie als in dit geval, we zetten in een getal, wat we krijgen, is dat aantal in blokjes. Dus moet een int in dit geval. Misschien zou het een dubbele te zijn of iets later, maar in dit geval, het is een int. Met c, je moet altijd een return type. Het zal een int zijn. Het zal een float zijn. Het zal een dubbel. Maar je moet wat te specificeren deze functie zal terugkeren. Anders zal het schreeuwen tegen u, en het zal niet compileren. Je zult bedroefd zijn, en ik zal verdrietig zijn. En het is gewoon niet goed. OK. En dan hebben we onze naam van de functie. En zoals je hier kunt zien, met c er is dit zeer consistent paradigma. Wat is je type, wat is de naam, en dan nog wat andere dingen aan het eind. Dus hebben we onze return type, onze functie naam, en vervolgens we hebben onze header met onze parameterlijst. Dus de parameter lijst is, wat is deze functie te gaan nemen in? Een parameter lijst is gewoon een synoniem voor, wat zijn onze ingangen? En op dezelfde manier dat we moeten onze functie definiëren en geef het een terugkeer typen, elk van onze ingangen moet een type verbonden aan. Dus we weten wat onze functie daadwerkelijk kan werken. Dus in dit geval, we hebben een aantal int ingang. Dus nogmaals, het zal het type zijn en wat je belt het. En dan, zoals je ziet hier hebben we ons lichaam. Dus we hebben een aantal int output, dat is gewoon onze inbreng keer zelf tijd zelf, die net kubussen het. En dan keren we terug dat de output. Dus zoals je hier ziet, hebben we een int keer een int keer een int, dus het een int, keert terug die is er verklaard. Dus alles is samenhangend. Alles is gelukkig. Uw functie zal lopen. En dit is slechts de algemene zaak. Dus altijd return type, naam, en uw parameterlijst. Elk ding in je parameter lijst, of input, moet een type verbonden aan. En dan heb je lichaam hier met wat u wilt doen met uw inbreng. En dan natuurlijk je iets wilt retourneren. Soms functies zal gewoon terug. Ze eigenlijk niet terug iets voor u om te gebruiken. Maar je hebt om terug te keren op een bepaalde manier. En als je het maken van uw eigen functies, we kunnen krijgen in die een beetje dieper. Persoonlijk, als je wilt, er zijn een heleboel van de verschillende dingen die je zou kunnen doen daar. Iedereen goed? Alles wat op deze lijst dat u mij wilt over te gaan, dat je niet begreep? Iedereen is goed daar? Cool. Awesome. OK, dus we zetten dit alles bij elkaar nu. Dus hebben we een aantal int kubus input, zodat Dit is een compleet programma hier. Tot nu toe, ik heb soort is het geven van je jongens fragmenten die kunnen gaan binnen een programma. We hebben net te kijken naar functies. Maar hier is een volledig programma. Dus hoeveel van jullie herinneren de woord prototype van college? Cool. We hebben er een. Wat is je naam? STEPH: Steph. Ann: Steph? OK, geweldig. Dus, weet je nog wat een prototype is? STUDENT: Je zegt dat [onverstaanbaar] voordat u daadwerkelijk behandelen. Ann: Weet je nog waarom? STUDENT: No. Ann: OK. Gouden ster. Zo ja, een prototype we vooraf, omdat anders, onze compiler gaat schreeuwen tegen ons. Het gaat om te zeggen, OK, wat is deze kubus functie? Zoals, heb je letterlijk vertelde me niets over dit. Het is net als wanneer je lopen in een klaslokaal, en iemand is net als, er is een quiz vandaag. En u bent als u me nooit verteld over dit. Ik ben niet blij met ons. Het prototype is in principe net als uw syllabus zeggen, kijk. Heads up. Er gaat een quiz op deze dag. Niet in paniek raken als je naar het. Je gaat goed komen. Dus al het prototype doet is vertellen belangrijkste, ik ga deze functie te gebruiken. Ik beloof dat ik later te definiëren. Niet in paniek raken bij mij. Gewoon compileren en doe wat ik je zeg om. Dus we hebben het prototype er alleen maar om onze compiler gelukkig maken. En het is in feite een belofte die u deze functie later hebt gedefinieerd en dat je niet alleen maar bellen deze willekeurige ding dat het weet niet wat je bent gaan doen. Dus in dit geval, we hebben hier de belangrijkste. We initialiseren enkele integer x. Dat is twee. We gaan om uit te printen wat x is. We gaan x kubus. Zoals u ziet, hebben we onze functie declaratie hier beneden dat we gesproken over eerder. Het zal x Cube, en dan, als we vergeet niet, de kubus functie eigenlijk geeft een geheel te ons, dat wordt opgeslagen in x weer, zodat we kunnen printen uit acht, of cube x nu. Is dat zinvol voor iedereen? We zijn goed? Prima. Awesome. Prima. Hoeveel van jullie Herinner dit dus dit is eigenlijk gewoon je stack en uw hoop, slechts een visualisatie van hoe het geheugen hier opgeslagen. Dus we willen gewoon maken zorgen dat u begrijpt hoe deze worden weergegeven in het geheugen. Als je lessen zoals nemen CS61 en spullen later, je krijgt om dit veel meer te leren in de diepte, en het is echt cool. Ik beveel het. Maar voor nu, ik zal geven u het brede overzicht zodat je niet hoeft te weet de Nitty Gritty. Dus de top slechts een tekst segment dat bevat de werkelijke nullen en enen, de binaire daarvoor. En dit wordt gebruikt voor het opslaan globale variabelen als je die hebt. Als je naar beneden beweegt, we hebben, zoals je hier ziet, geïnitialiseerd data, uninitialized data, en dan hoop. Zodat we niet echt praten over de hoop op dit moment. We zullen later om het te krijgen. Voor nu ben ik gewoon gaan zwaaien mijn handen en zijn als, je hoeft niet te weten over dit nu. Maar we zullen een beetje praten beetje over de stapel. Dus de stack is where-- we inzoomen. Dit is eigenlijk hoe het programma we net keek optreedt in het geheugen. Dus wat er gebeurt is, elke tijd een functie noemen we, we krijgen wat een stack genoemd frame, dat een van deze. Dus belangrijkste's parameters. Dus dat zijn de dingen dat wij overgaan in main. Dus ze zijn hier bij de bodem, want dat is het eerste wat we noemen. En dan komen we bij de belangrijkste's locals, en als we dat zeggen, bedoelen we de lokale variabelen die zijn opgeslagen in de belangrijkste. Dus locals hier zou zijn, als, x is gelijk aan twee in dit geval. Want dat is gelokaliseerd op main. Heeft iedereen herinneren scope, gaan over dat in collegezaal? OK. Dus, de variabelen worden geïnitialiseerd binnen main. Dus dat is de reden waarom we hebben main [? zang. ?] En vervolgens binnen de belangrijkste, kubus noemen we. Right? Dus krijgen we een ander frame met parameters cube's. Dus in dit geval, cube's parameters zijn nu de x die we doorgegeven, de twee die we doorgegeven. En dan cube's lokale bevolking, dat is waar de eigenlijke Opstijgen gebeurt. En dan keert hij terug. Dus wat er gebeurt is als kubus eigenlijk doet wat het verondersteld wordt te doen, keert het terug. Wanneer het terugkeert, dit frame verlaat, en keerde terug naar beneden naar de belangrijkste. En vervolgens binnen de belangrijkste, we daadwerkelijk kan afdrukken. Dus als je terugkeert iets, wanneer uw functie geeft, het is zoals het doorgeven van die waarden te het frame eronder en dan verlaten. En dingen moeten uitvoeren in orde. En als je bij grotere programma, we koeler en ingewikkelder kan maken diagrammen. Maar voor nu, dit is slechts een algemeen overzicht dus je hebt een soort van begrip van wat gebeurt er als je een functie belt en hoe dat eigenlijk lijkt in het geheugen. Cool? Iedereen goed? Awesome. Dus is er een die gewoon proberen om dingen te ruilen. Zoals we hier zien, hebben we onze functie prototype zodat onze compiler niet schreeuwen tegen ons. We hebben een aantal grote, en we willen x en y schakelen. Ze hebben niet deze demo gedaan in nog een lezing, hebben ze? Ze hebben niet? OK. Dus we gaan om te gaan meer dan dit heel kort. Je stapt in dit voorbeeld meer in de diepte, denk ik, deze week. En dan volgende week kunnen we echt duiken in waarom dit niet werkt. Dus we hebben deze leegte functie hier-- swap. Dus leegte gewoon betekent dat niets geretourneerd. En we hebben swap int een en int b. En we hebben een aantal tijdelijke variabele dat is een. een wordt toegewezen aan B en vervolgens B wordt toegekend aan de temp zodat a en b's waarden zijn nu ingeschakeld. Maar, plot twist, dit werkt niet. En een deel van het eigenlijk te maken met het feit dat een en B hier, degenen die krijgen doorgegeven in Hier zijn eigenlijk kopieën van x en y. Dus toen de functie daadwerkelijk terugkeert, schakelt hij de kopieën, maar niet de werkelijke x en y's. Dus een manier om na te denken over het is dat-- doen alsof dit zijn swap. OK? Dus in de belangrijkste, we hebben x en y geïnitialiseerd. Maar als we daadwerkelijk omhoog gaan om deze frames met swap, we passeren de waarden over om het, en ze zijn geïnitialiseerd. En ze altijd alleen maar hier wonen. Dus a en b wonen hier. En ze worden verwisseld. Maar wanneer we terugkeren, we doen niet iets doen met a en b. een en b verlof met onze functie. Dus x en y gelijk blijven. Je zult meer te krijgen in hoe dat op te lossen en hoe we eigenlijk later wel. Maar het is gewoon een ding naar soort in het achterhoofd te houden. Gebruik het voor de toekomst. Maak je geen zorgen als dat niet maken alle zin in de wereld. Het zijn kopieën is het grootste ding. Als je van plan om iets te nemen uit de buurt van dat, je bent geslaagd in kopieën. Dus de originelen blijven hetzelfde. Iedereen goed? Cool. Dus command-line argumenten. Ik weet zeker dat in het begin jullie allemaal had die grote, zoals, int main vides. En je bent zoals, OK cool. Ik heb niet echt schelen. Dit is precies wat ik moet schrijven. Maar in je nieuwe programma's, vooral in deze PSET, en waarom is er krijt op de grond? Met uw volgende PSET, je bent gaat worden het zien van dit. Int main, int arg c, touwtje boog v, tussen haakjes. Dus, van wat we gewoon geleerd vandaag, wat denken we dat de tweede parameter of dat tweede element is hier? Het is een matrix. Welke type array? String array, ja. Cool. Dus dat is hoe je gaat te verklaren deze nu. Herinnert iemand zich wat deze voor? Nee? Hmm? STUDENT: arg c. Ann: Dus arg c houdt een teller. Het is een int. Het is een nummer, toch? Dus wat denk je dat nummer is van? Yeah. Dus arg c is het aantal strings die deel uitmaken van de opdrachtregel. Dus als we waren om daadwerkelijk doen--, er voorbeelden hierna, dus ik zal niet voor mezelf te krijgen. Het is een aantal strings dat maak gewoon je command line. Dus als je dat doet, als, dot slash Mario, dat is een string die het maakt. In dit stuk, dan heb je eigenlijk het voeden van de dingen in de command line, want ik weet zeker dat jullie die de spec zaag hebt gelezen. Dus in die gevallen, misschien kan je hebben twee of drie argumenten. Het gaat om een ​​nuttig ding om te gebruiken. En dan arg v, zoals we al zeiden, is gewoon een string array. Dus dat eigenlijk slaat wat je inbreng in de opdrachtregel. Dus hebben we deze. Je hebt een aantal dot slash kopiëren infile outfile. Dus als arg c het aantal snaren dat we passeren in de opdracht lijn, wat is onze arg c in dit geval? Drie. Precies. Dus wat is arg v van nul? Dus wat is het eerste wat we hebben opgeslagen? Dot slash exemplaar, precies. En dan de tweede infile zou zijn. De derde zou outfile zijn. Dus hoe zit het arg v drie? Het zou nul zijn, want dat is het einde van ons aanbod, toch? Cool. En wat dan met de zesde? Het is een beetje een strikvraag. Ish. Weten we wat het is? Het is undefined. We hebben geen idee wat dat zou kunnen zijn. Het is alles wat rechtvaardig is Na de array in geheugen, en we hebben geen idee wat dat is. En het is gevaarlijk om die te raken dingen, want voor alles wat je weet, het is een deel van het geheugen dat u mag niet de toegang tot of null. En het kan gekke dingen doen. Het heet over-indexering je gebonden aan uw array. Ga niet buiten de grenzen van uw array, of slechte dingen kunnen gebeuren. Je komt terug en, net als de wetten van de natuurkunde zijn vernietigd of zoiets. Cool. Is dat zinvol voor iedereen? Niet al te slecht. Dus nu is iedereen favoriete onderdeel, pset beoordeling. Yay! OK. Dus voor degenen onder u die hebben niet de PSET spec lezen, je bent wat voeten in echt cool stuff met cryptografie. Je gaat naar een Ceasar creëren Cipher en een Vigenèrecijfer. Je moet zeker lezen spec om te zien hoe die werken. En als je met enige moeite over wat het zou eigenlijk moeten doen, kom alsjeblieft met me praten, e-mail me of tekst mij. Ik ben rond. Zo zijn er drie belangrijke hier dingen die we willen about-- praten gewoon een soort van een uitbreiding van de lezing. Dingen die je misschien niet weet over, nuttige tips en hulpmiddelen. Dus we gaan naar een doen quick review van ASCII, want dat gaat super te zijn belangrijk voor Vigenere's Cipher. We gaan om de conversie van command line inputs, die zal zeer nuttig zijn voor Caesar Cipher. En dan modulo. Cool. Dus, ASCII kaarten tekens om getallen. Dit is een grote grafiek. U moet dit hebben ergens een bladwijzer. U zult het wilt voor uw eerste tussenbalans. Ik ben er vrij zeker van dat iedereen heeft dit schema op hun mid-term sheet. Dus leer het. Love it. Houd deze bij de hand. Het zal nuttig zijn. En al is het is een codering dat kaarten alfabetische, numerieke, en andere tekens te nummers voor onze computer. Want natuurlijk, in de einde, alles wat we bewaren gaat geconverteerde krijgen beneden om nullen en enen, dus moeten we een manier om het te vertegenwoordigen tekst en personages die we allemaal gebruikt om het zien als een soort nummer. Dus als we hier zien, hebben we hoofdletters A, dat is daar. Het is 65. En kleine letters A is 97. Dus je kunt achterhalen out-- zoals ik al eerder zei, als je scala aan meerdere gehad strings, wat elk van hen hebben een null terminator. Het zou een ruimte zijn. Ruimte heeft zijn eigen speciale-- Ik vergeet waar het hier is. Ah. 32 de ruimte. Dus alles in kaart aan. Dus we hebben ASCII wiskunde. Pro tip-- in Vigenere's, u misschien in de verleiding om uw nummers te converteren naar integers, maar het is eigenlijk een betere praktijk kunnen het gebruik personages als deze wanneer je ze daadwerkelijk manipuleren. Dus als je wilt om nummers te gebruiken, je kunt. Maar een betere manier of wijze dat hebben we de neiging om je jongens om het te doen, is op deze manier waar je bent eigenlijk aftrekken karakters. Dus ik wil dat jullie soort achterhalen deze uit. Waarom ga je niet elke andere proberen? Dus doe de eerste, de derde en de vijfde. Want ik wil er zeker van dat we het hebben over alles wat we nodig hebben om over te praten. Ik ga gewoon zeggen, een van de belangrijke dingen to-- oh wacht, jullie nog niet gezien deze. OK dus doe de eerste drie. Laten we dat doen. Want we moeten praten over modulo. Ik weet het. Math is hard. U kunt een rekenmachine gebruiken. Het is OK. Of trek je een ASCII-tabel, omdat ben je waarschijnlijk gaat willen dat. Cool. Dus ik zal snel lopen jullie via deze. Dus mensen hebben ASCII tabellen omhoog getrokken? Wat is onze numerieke nummer voor kleine letters A? STUDENT: Zeven. Ann: Dus kleine letters A is 97 en hoofdletter A is 65. Dus 97 min 65? Publiek: 32? Ann: 62, ja. Dus in dit geval, wat zou het uitprinten? Dat eerste? Als we procent d, wat zou dat geven? STUDENT: Een getal. Ann: We printen uit een werkelijke aantal. Dus we eigenlijk aan de hand om hier uit te printen 32. En als dit waren procent c, 32 zou ons een ruimte. Dus begrijpen dat karakters afdrukken zowel als getallen en als de eigenlijke betekenis is echt belangrijk, en het betalen van aandacht aan de werkelijke types dat we hier doen. Cool. Dus voor elk een van deze, wat gaan we om te printen? STUDENT: Een karakter. Ann: Een karakter. Cool. Dus als jullie willen weten, je kan werken deze op uw eigen. Als u problemen ondervindt, mail me. Maar de tweede zal afdrukken van een kleine letter b. De derde zal het afdrukken van een hoofdletter B. De vierde wordt afgedrukt uit een hoofdletter C, en de laatste zal een kleine letter A. zijn En de laatste een-- we eigenlijk aan de hand te krijgen in wat dat gekke procent teken betekent dat zelfs in een paar dia's. Dus probeer deze op uw eigen. Als je problemen hebt, kom alsjeblieft met me praten. Als je meestal in Adams D hal, je zult waarschijnlijk merken me rond. Dus, atoi. Hoeveel van jullie hebben dit gezien functie of van gehoord op alle? Anyone? Cool. Dus wat het eigenlijk staat voor is ASCII op integer. Dus wat je kunt doen is, met Caesar, voor degenen die de spec lezen, je gaat doen dot slash Caesar nadat u uw programma te schrijven, en dan zul je ingang een getal dat u wilt u uw geheime boodschap te coderen met. Maar, als we ons herinneren, al onze ingangen worden opgeslagen als strings. Right? We hebben een arg v serie dat is alles wat het type string. Dus als je gewoon proberen te Trek die ene, het zou denk dat dat één of wat dan ook nummer je gebruikt is eigenlijk een personage. Dus je gaat om te krijgen wat gekke resultaten. Dus als je echt wilt draai deze in een geheel getal die u kunt gebruiken om te manipuleren uw woord of uw bericht, u zult willen atoi gebruiken. atoi gewoon converteert je string naar een int. Dus als we een reeks van 12, als we bellen atoi op 12, of wat dan ook die ingang is, hij in feite zal terugkeren om u het gehele getal. Niet het karakter of de string 12. Die, wanneer je begint aan toevoegen dat om nummers, heel anders zijn, omdat de snaar 12 is wat gekke getal in ASCII, maar het geheel 12 is eigenlijk 12, dat is wat je wilt. Dus je wilt er zeker van te atoi gebruiken. Je gaat naar deze wilt in Caesar, omdat je moeten de door de meegeleverde int gebruiker in de command line. Maar toen ze het in de opdracht lijn, het is opgeslagen als een string om mee te beginnen. Heeft dat zin? Je hoeft niet per se moet dit voor Vigenere. Met Vigenere, zoals ik al zei voorheen, moet u proberen en te gebruiken ASCII wiskunde, dat lijkt meer op deze, waar je eigenlijk bent het gebruik van de tekens die we aan u gegeven. Cool. Iedereen goed daar? Awesome. Dus modulo. Dus wat als je krijgt dit enorme aantal voor Caesar? Je hebt het idee dat als je toch bezig bent Z en je bent een nummer twee, dat betekent dat je need-- Z wordt de tweede letter na zelf, toch? Dus je moet een of andere manier wikkel rond, en modulo is de manier om dat te doen. Dus alles wat het doet is het geeft je de rest van de verdeling van de eerste getal door het tweede. En we hebben een aantal voorbeelden te maken dat een beetje meer beton. Maar in principe, modulo wanneer je gebruikt je iets wilt wrap around te maken. Dus als je alleen maar wilt dat de nummers een tot acht, u kunt modulo te gebruiken op een andere Dit nummer zal altijd retourneren een getal van nul tot acht. Dus sommige examples-- als We hebben 55 modulo 10, het geeft je gewoon de rest van 55 gedeeld door 10, die zou 5. En dan drie modulo vijf, iedereen raden wat dat zou zijn? Drie. Dus als je een kleiner aantal voor de modulo, kan het niet gelijkmatig gaan. Het is nul. Zodat het net geeft het getal zelf. Dus acht modulo acht zou zijn? STUDENT: Zero. Ann: Zero. Omdat het gaat in gelijkmatig. 16 modulo 15? Publiek: One. Ann: Cool. En dan is deze laatste is alleen maar om tonen u-- u zich misschien af, OK, wat is de volgorde van de bewerkingen hier? Doen we voor het eerst te verdelen? Doen we eerst modulo? Dus modulo houdt dezelfde prioriteit als delen of vermenigvuldigen, en haar linker associatief. Dus het is op dezelfde manier. Je zou altijd haakjes te doen, dan vermenigvuldigen, delen, en modulo in volgorde van links naar rechts. Dus standaard regels. Zet ze gewoon in dezelfde categorie als delen en vermenigvuldigen. Dus in dit geval, zouden we hebben 1 plus 2 geeft ons 3. We vermenigvuldig dat met 2, dus we krijgen 6. We modulo dat door 2, die ons geeft? STUDENT: 0. Ann: 0. En dan voegen we 2, dus we krijgt 2 in dit laatste geval. Dus modulo-- je zeker gaan worden na te denken over manieren om op te nemen dat als je het verpakken rond het alfabet. Als je op Z en je moet verhuizen doorsturen drie spaties om C te krijgen, er is dat hele concept van het inpakken rond. Dus zal ik laat het aan jullie om erachter te komen hoe precies je gaat worden met behulp van het. Maar zeker een nuttig instrument voor uw pset deze week. Ik dit echt leuk. Dit is een van mijn favoriete psets. Dan na je het doet, als je vrienden hebt, kunt u, als, sturen elkaar geheim berichten en zorg ervoor dat het werkt. Omdat het dit of wat dan ook zal decoderen. Veel plezier. En dat is het einde van een hoofdstuk. Ik vroeg klaar. Ik heb nog 15 minuten met jullie, dus als er iets is dat je zou willen om over te gaan verder, zou ik gelukkig zijn om dat te doen. Een andere vragen op uw pset voor degenen onder u die begonnen zijn of lees de spec. Alles wat we hebben gesproken over het laatste uur en 15 minuten die je zou me graag naar soort slap aftreksel, zou ik graag. Of we kunnen noemen afgesloten, en je kan alle vertrekken en nemen meer snoep met je als je gaat. Maar als er sprake is van aanhoudende vragen, laat het me weten. U kunt ook komen en met me praten achteraf. Ik beloof dat ik bijt niet. Iets anders? Iedereen is goed? Gevoel ieders zoals ze kunnen dit pset behandelen? Je gaat om fijne kerels zijn. De openingstijden zijn er voor een reden. Cool. Alright. Nou, in dat geval, dank jullie allemaal zo veel voor te komen. Ik hoop je te zien volgende week. Er zal meer snoep zijn. Er kunnen andere leuke dingen. En ik kijk uit naar het krijgen van u allen weet dat dit jaar.