[Speel van musiek] ALLISON Buchholtz-AU: Hey almal. Welkom by jou eerste amptelike CS50 afdeling. Soos jy kan sien is dit artikel CS50-agtige, net te trek ons ​​agenda vir vandag. So, wie is ek, want ek is seker jy al gewonder. Ek is jou TF. Ek is nie net 'n ewekansige student wie hom voordoen as jou TF. En ek gaan om te gaan deur soort het afdelings sal vloei, verwagtinge wat ons het, hulpbronne, so aan en so voort. Ons gaan om te praat oor skikkings, ASCII funksies, opdrag-lyn argumente, en dit is nie hier nie, maar Ek sal ook help om jy soort van dink deur middel van jou volgende pset vir hierdie week. Wat ek is seker jy sal waardeer. So, in die eerste question-- wie is ek, behalwe jou uitbundige TF hier. Ek is Alison Buchholtz-Au. Dit is my tweede jaar TFing CS50. Ek het ook TF CS51 in die lente. Jy kan daar weer te sien As jy besluit om dit te neem. Ek is ook 'n PAF, so enige Freshmen-- en as jy nie 'n groentjie, dit is my derde jaar as 'n mede-adviseer. Ek is baie goed vertroud met adviseer jy op die lewe en kursusse binne CS en nie binne CS. Ek is 'n Rekenaarwetenskap Concentrator. Ek is 'n senior in Adams House, die beste huis. En voor ek oorgeskakel na CS my stage Spring, Ek was eintlik 'n biomediese ingenieur. Ek gaan om te gaan na Med skool. Ek gaan 'n trauma chirurg te wees. En dit het heeltemal verander sedert ek het CS50. Ek het die kursus my stage herfs. Dit was my eerste kennismaking met CS ooit. Ek was een van die 78% van julle wat het zero ervaring kom, en dit heeltemal my lewe verander. En nou is ek besig om te Microsoft, en jou pragtige TF. En CS50 is waarskynlik een van die beste ervarings dat ek hier gehad het op Harvard-- beide die neem van die klas en in staat is om te help studente soos jy leer. So ek is baie opgewonde dat jy almal hier. In die geval dat jy het gekom in laat, is daar lekkergoed, wat jy moet voel gratis gryp om te kom, of stuur iemand anders dit aan te gryp vir jou. dit is OK. Ek wil nie dat om te eet. My kamer het genoeg sjokolade, so y'all moet probeer en voltooi dit. Ek weet daar is 100 stukke, maar soos, 04:00 op 'n Maandag, Ek dink almal kon suiker gebruik. So almal van julle wat amptelik in my artikel moet 'n e-pos gekry het van my met my selfoon nommer, e-pos address-- voel vry om my te voeg op Gchat, voel vry om my te voeg op Facebook, en ook vir die res van julle, jy kan my e-pos hier. Daar is twee H's. Almal altyd doen soos twee L's of twee C's. Twee H se in die laaste naam. Anders gaan dit te weiering, en Ek gaan nie jou e-pos te kry. So voel vry om my te e-pos, om my te kontak op enige tyd. Ek kan nie terug te keer na jy binne 24 minute, maar ek belowe om terug te kry aan jou binne 24 uur. As jy my bel 'n halfuur voor jou pset verskuldig is, jy word soos, Ek het geen idee wat ek doen Allison. Help my. Ek gaan om jou te kalmeer, maar aan die einde van die dag, As jy my roep 'n halfuur voor jou pset is as gevolg met niks geskryf, Ek gaan om te wees soos, wel, miskien dit is tyd om wat laat dag gebruik. So ek sal reageer op al jou versoeke in 'n baie tydige wyse. My selfoon is gewoonlik verbonde aan my hande. Ek het gewoonlik reageer veel vinniger as 24 uur, Maar ek kan net waarborg 'n 24 uur antwoord. Alle regte. So hoekom is ons hier? Ook, as jy enige vrae te enige tyd, laat weet my asseblief. Ek praat baie. Ek praat vinnig, maar asseblief voel vry om my te onderbreek. Dit gee my asemhaling kamer as well. So afdelings is 'n tyd vir ons om regtig net duik in, kry 'n paar praktiese ervaring, te gaan deur onderwerpe wat ons genoem in die klas of in studie materiaal wat Ons beveel aan dat julle ouens online. En ons sal eintlik gaan deur sommige van hierdie hulpbronne in 'n bietjie. So 'n paar notas oor artikel ondersteuning. CS50-- een van die dinge wat maak dit een van my gunsteling-klasse is die gevoel dat jy nooit alleen nie. Ons het 'n personeel van meer as 100 mense wat hier om jou te help. Ons het kantoorure Maandag tot Donderdag. So daar is so baie mense wat lief vir die klas net soveel as wat ek doen en wat werklik hier want hulle wil om hier te wees. Die meeste van ons is studente, en dit is soos 'n vyfde klas benewens na die res van ons werk. En dit is 'n baie werk, maar Ons doen dit omdat ons lief is, en ons is regtig baie lief om jou te leer en help om deel ons opgewondenheid vir hierdie onderwerp en hierdie klas. So asseblief neem voordeel. Kom praat met ons. Ek kry eensaam wanneer my studente praat nie met my, so as jy wil, kom saam met my uithang. Dit sal wonderlik wees. So artikel is natuurlik een van jou grootste dinge. Ons gaan deur dinge dat jy in lesing geleer het, doen 'n paar kort voorbeelde wanneer ons tyd, en in die algemeen soort 'n idee kry oor dinge jy moet dink oor vir jou probleem stel. Shorts-- hoe baie mense eintlik kyk na die video van jou krap kort? Enigiemand my herken? So dit is baie groot. Jy moet beslis kyk hulle. Baie van die werk is in hulle. En hulle is net bedoel om te wees byt-grootte stukke vir jou om net te kyk vir drie of vier minute en kry 'n beter begrip van 'n konsep. Loop throughs-- hoe baie mense het gekyk die loop-throughs vir voriges? Zamyla is amazing, reg? Soos, ek wens ek was Zamyla soms. So beslis gebruik om jou loop-throughs. Sy sal breek dit af in klein, byt-grootte stukke. En wanneer jy hierdie groot spesifikasies van jou probleem stelle, dit gaan regtig belangrik in staat te wees om net iewers vind om te begin en werk stadig deur. Alle reg, ons het ook Study50, wat is study50.harvard.edu, ek glo nie. Jy kan net Google bestudeer, en dit sal kom. Dit is een van die beste hulpbronne wat ons het. Dit is kragpunte met notas en oefen probleme vir jou met oplossings wat jy kan eintlik loop deur. So as jy ooit wil meer oefening, meer as wat ons doen in afdelings of meer as jou probleem stelle, dit is regtig 'n plek waar ek u aanmoedig om te gaan. Dit is gebou verlede somer deur sommige van my baie goeie vriende. En dit is ongelooflik. In werklikheid, 'n baie van die skyfies wat ek sal gebruik word vir Afdeling sal kom van Study50. So 'n groot deel van die TFS dit gebruik. En uiteindelik, as ek genoem kantoorure. As jy sukkel met huiswerk, is jy sukkel met 'n konsep, kom na kantoorure. Gaan vroeg in die week as jy kan. Kry uit die quad, want dit is 'n soort van ver. Niemand hou daarvan om daar uit te loop. Maar dit is tot jou voordeel, want dan is jy gaan al hierdie TFS te hê, [Onhoorbaar] omsingel. En veral nou, net 'n wenk, Donderdae is baie chill nou in Mather omdat jou psets is as gevolg op Donderdae. En die wete wil gebruik jou laat dae nog. So as jy met probleme met konsepte, daar is baie van TFS wat is daar om jou te help. So kom om uit te Mather op Donderdag. As jy wil om my te sien, Ek gaan om daar te wees. Ek is tipies doen my eie huiswerk, want niemand wil my help. So kom ons sien. Ontmoet ons halfpad. So hoeveel mense bygewoon lesing of gekyk het dit aanlyn? Hoeveel mense het na super artikel verlede week? Cool. Dit is eintlik 'n redelike aantal. Hoeveel van julle het gelees van jou spec vir hierdie week vir jou pset? Ooh, ek is trots op julle! Meer lekkergoed vir y'all. Goed, so wat ons bedoel "Ontmoet ons halfpad," is daardie artikel is eintlik net gaan super nuttig vir jou wees As jy kom in nadat lees jou spesifikasie vir jou pset. Want as ek gaan deur 'n oorsig van die dinge wat jy moet soek vir, dit is nie van plan om soveel sin as jy Ek weet nie wat jou probleem stel gaan gevra word om te doen. As jy kom nie aan artikel, natuurlik Ek kan nie so nuttig vir jou. Ek is nie van plan om dit te persoonlik as neem jy kom nie na my artikel op die oomblik, maar beslis moet jy. As jy nie kan nie, kyk hoe hulle aanlyn. Hulle is daar vir 'n rede. Myne sal net daar wees. As jy sien, ons word aangeteken, so dit sal net daar wees vir julle. Sowel, gaan lectures-- dit is duidelik waar kry jy die begin van jou materiaal hier. So ek sal beslis probeer help om so veel as wat ek kan, Maar ek kan net ontmoet jy so ver. Jy moet soort ontmoet ons halfpad daar. Grading-- so, almal van julle wat 'n e-pos gekry van my, jy is my amptelike afdeling. Ek sal die gradering word om jou psets. En ek wil net sê, een ding wat jy moet regtig aandag te gee aan is die kommentaar. Die kommentaar is dikwels meer nuttig as die werklike telling gee ons jou. En die kommentaar is eintlik waar ek spandeer baie van my tyd wanneer ek gradering. So ek sal dit waardeer as jy dit lees. En hulle is eintlik hoe jy gaan meer oor die ontwerp en styl te leer en die dinge wat 'n bietjie minder sny en droog. So regtig aandag op die kommentaar. As jy vrae het oor hulle, of vrae oor jou telling, kom gesels gerus met my hetsy voor afdeling Ek sal waarskynlik hang uit in die voorportaal, of daarna. As jy wil om te skeduleer een-tot-een-vergaderings oor hoe jy kan help later verbeter probleem stelle, laat my net weet. En dan net 'n paar wenke vir julle. So een van die grootste dinge Ek het altyd beklemtoon om my artikel wanneer jy leer hoe om te kode is dinge om eerste te skryf op papier. As jy 'n wedstryd plan vir waar jou kode moet gaan en wat dit nodig het om te doen en dit is afgebreek in klein stukkies van pseudokode kode wat jy geskryf het, jy gaan minder wees waarskynlik sintaksfoute te maak of skep 'n lus wat as nie 'n ander nie. As jy weet waar jy is algehele gaan, is jy minder geneig om hierdie klein te maak foute wat soms sal jy uur op te los, omdat jy wil, waar ek ontbreek hierdie bracket? Op daardie noot, gebruik asseblief Style50. Veral wanneer jy gaan kantoorure, As jou kode is al oorgeskakel na die een kant, Dit is natuurlik beleid dat ons kan sê, los dit sodat dit lyk soos Style50 sê dit moet, en dan sal ons jou help. So dit sal jou lewe makliker te maak. Dit sal ons lewens makliker te maak. Almal is gelukkiger. Almal kry 'n beter grade. Is dit nie wat ons almal wil hê? So skryf dinge op papier voor jy al ooit raak jou rekenaar. Praat dinge uit op 'n hoë vlak, en maak seker dat jy weet waar jy gaan. En as jy onseker is, sit met iemand en loop hulle deur stap vir stap wat jou kode is veronderstel om te doen. En nege keer uit 10, sal jy soos, ag, ek het vergeet 'n as voorwaarde of ek 'n kommapunt vergeet hier of Ek is die opdatering van hierdie veranderlike verkeerd. So dit is my wenke vir sukses. So sedert ongeveer die helfte van julle kyk soos jy super artikel bygewoon het, Ek gaan net baie gaan kortliks deur loops, wat nie was op die oorspronklike agenda. Maar hulle is baie belangrik. En so gaan ek soort spoed deur diegene Voordat ons in ons werklike artikel. Voordat ek dit doen, is daar enige questions-- logistieke, persoonlik, is daar enigiets anders wat jy wil hê om te weet oor my of oor artikel of klas in die algemeen? Alle goeie? OK, cool. Pragtige. So loops-- Julle moet almal hierdie stukke herken van nuuts af. So loops is basies net 'n manier vir ons om iets te doen sommige paar keer, sommige herhaal aksie, gebaseer op sommige voorwaardelik. So het ons drie verskillende tipes. Ons het lus, terwyl, en doen-tyd. So vir loops-- ons moet net 'n baie algemene uitleg hier van 'n lus. En dit is 'n groot vir wanneer jy weet hoe baie keer iets nodig om uit te voer. Wanneer ons praat oor die ander lusse, sal jy sien waarom dit is 'n belangrike onderskeid. Maar vir sirkelroetes is vir iets stel. Jy weet jy kan óf bereken die aantal of jy weet wat die aantal kere wat jy wil hierdie herhaal aan die begin. So as jy hier sien, is ons het net 'n algemene soort geraamte raamwerk vir 'n lus vir hier. So vir-inisialisering, dit is waar jou veranderlikes geïnisialiseer. Met Mario, ek is seker julle het iets soos int i gelyk aan 0. Dit is waar dat sou gebeur in blou. Jy het jou toestand, wat is wat nagegaan elke keer. Indien hierdie toestand is waar, dan die res van die kode voer. Dan sal dit loop again-- en vra. En dan moet ons werk, waar jy opdatering van jou veranderlike. So, weer, met soos Mario, ek is seker julle ouens het iets soos ek plus plus. So elke keer as die lus hardloop, het ek so opgedateer dat wanneer ons die nagaan dit teen sommige toestand is, is dit te verander. Want as jy net het 'n statiese veranderlike, As dit voer die eerste keer, is dit net gaan oneindig voer. So jy het om seker te maak jy maak jou veranderlike behoorlik werk. En ons het ook net 'n visuele voorstelling is daar. Almal goeie? Vir loops. Moet gesien het dit in jou pset. Cool. So hier is net 'n maklike voorbeeld. Druk Dit is CS50! 10 keer. En so het ons ons inisialisering, as ons sien dat daar, met int i gelyk 0, want ek is minder as 10, en ek plus plus. En dit sal druk wat 10 keer. Dus, terwyl loops-- terwyl loops is groot wanneer jy dit nie doen nie noodwendig het om te weet hoeveel keer is dit gaan om te werk in die begin. Jy hoef net 'n paar voorwaarde dat is nagegaan. En dit kan iets soos while-- wees Kom ons neem 'n voorbeeld van jou pset. As Mario, probeer om jou te insette 'n negatiewe getal. Reg? Jy is veronderstel om te weer gevra die gebruiker. Sodat jy kan sê, goed, as die gebruiker insette iets minder as nul, re-vinnige hulle. En ek is seker dat mag hê was iets wat sommige van julle gebruik in jou kode. So dit is 'n eenvoudige ding. Jy het terwyl sommige voorwaardelike wat nagegaan elke keer die kode gaan om uit te voer. As dit evalueer waar, ons voer dit uit. Anders wat ons doen nie. En wat is regtig important-- iets wat ek dink dat Dawid gepraat oor in lecture-- is die draadjies. Wat ook al se binne die draadjies is wat uitgevoer word. As jy vergeet diegene draadjies, dit gaan slegs die lyn direk wees ná die tyd is uitgevoer. So as jy drie dinge wat veronderstel is om wanneer dit gebeur toestand evalueer tot ware, en jy nie die draadjies, net Die eerste ding wat gaan gebeur. So baie bewus van waar jy jou draadjies. As jy vashou aan Style50, Dit sal beslis help. Cool. So, dit is 'n aftelling van 10 tot nul. En as jy hier sien, het ons inisialiseer sommige counter buite dit. Een ding wat anders is ons is nie initializing ons veranderlike binne ons, terwyl loop. Dit is geïnisialiseer buite dit. Ons is eenvoudig net om die kondisioneer in vir ons tyd. So in hierdie geval, dit is, terwyl telling groter as nul is. En ons druk wat ons telling is, en dan het ons decrement ons veranderlike. En dit is ook 'n ander ding om op te let. Ons werk nie binne gebeur dat die eerste deel van die while lus. Dit sal eintlik binne gebeur die draadjies, die liggaam van jou teks. So moenie-terwyl loops-- doen-terwyl loops is 'n groot vir die gebruiker bevestiging. So 'n paar van wat jy mag hê ook gebruik dit in jou pset. Jy kan sê, doen, soos, vra die gebruiker om insette te lewer. En dan, terwyl, soos die insette is minder as 'n paar nommer. So vir 'n eksplisiete geval met Mario, is dit sou wees nie printf, gaan 'n heelgetal, en dan 'n paar heelgetal gelyk getint. En dan sal dit eintlik voer wat die kode eerste. Jy sal eintlik 'n soort van heelgetal. En dan kan jy sê, terwyl dat heelgetal is minder as nul. So, wat dit gaan doen, is dit gaan ten minste een keer uit te voer. Dit gaan om die toestand te monitor. As die toestand waar, sal dit weer hardloop. Doen-terwyl loops is groot vir die gebruiker bevestiging, want jy weet die kode gaan ten minste uit te voer keer, terwyl met terwyl loops, jy is nie gewaarborg dat dit gaan weer uit te voer. Dit gaan die toestand te monitor eerste en dan besluit om dit uit te voer, terwyl 'n do-while sal die kode uit te voer eerste en dan kyk om te sien of wat jy nodig het om dit te herhaal. Is dit onderskeid sin maak vir almal? OK. Cool. So in hierdie geval, dit is 'n soort van wat ek praat, hierdie re-aanwysings totdat jy kry 'n positiewe getal. So ons weet dat printf "Gee 'n positiewe getal" en eintlik vra vir daardie insette sal ten minste een keer gebeur. As die gebruiker is kwaad en hou begin van 'n negatiewe getal wat weet hoeveel keer sal dit uit te voer. Maar hierdie kode is gewaarborg ten minste een keer uit te voer. En dit is die rede waarom dit is 'n groot vir die validering van insette. En jy sal gebruik om dit nogal 'n bietjie. Alle reg, enige vrae so ver? Ons is almal goed? Ek praat te vinnig? Ons is goed? OK. Awesome So ons gaan om voort te gaan en praat oor skikkings. Cool. So skikkings is basies net data strukture wat ons toelaat om te stoor dinge van dieselfde soort. So as jy ooit 'n skikking, dit is óf net gaan SY te hê of is dit net gaan dryf te hê of is dit net gaan karakters te hê. Jy gaan nie 'n int te hê 'n kar met 'n float met 'n dubbel. Een ding. Skikkings is net een grootte, of hulle is net een soort. So hier het ons 'n verskeidenheid van grootte drie met drie heelgetalle in dit. Hulle kon dryf, maar ons is gaan hulle is SY te sê. So een ding om te besef is dat skikkings is 'n stel grootte wanneer jy inisialiseer hulle, en hulle nie easily-- word aangesien julle almal is minder gemaklik, jy moet net aan hulle dink as nie in staat is om uit te brei in grootte. Maar groot jy uiteengesit jou skikking in die begin, dit is die grootte dit gaan om te bly, want skikkings is deurlopende blokke van die geheue. En wanneer jy ouens kry in 'n bietjie meer hoe geheue is eintlik uitgelê op skywe en in die hoop en die stapel, dit sal 'n bietjie meer sin maak nie. Maar jy kan net dink soos dit is net 'n ry van ruimtes op jou hardeskyf. En jy kan nie waarborg dat daar gaan vrye ruimte te wees nadat dit. Jy kan 'n verskeidenheid inisialiseer drie en dan is jy dalk inisialiseer 'n skikking van vyf later, en dit is reg nadat dit. So as jy verby plek om te gaan drie in die eerste reeks, jy sou skryf oor iets anders. So skikkings are-- vir julle, net dink aan hulle as 'n vaste grootte. So skep van 'n array-- jy gaan nodig om dit te doen nogal 'n bietjie. So in die dieselfde manier dat ons 'n algemene struktuur vir ons vir loops, Ons het 'n mooi algemene struktuur vir ons skikking. Want hulle is van een soort, al die elemente in 'n skikking is van een soort, wat jy nodig het om te inisialiseer wat daardie tipe is. So, as jy hier sien, het ons 'n mooi klein bracket data tipe. So as ons 'n int is die skep skikking, sal dit int wees. As ons die skep van 'n kar skikking, sal dit kar wees. As ons die skep van 'n string skikking, sal dit string wees. En dan is die naam van jou skikking, alles wat jy wil hê dit moet wees. So miskien is dit toets tellings of miskien dit is studente of miskien is dit lekkergoed. Wat jy besluit om die naam van jou skikking, dit is wat dit sal wees. En dan in hakies, sal jy die grootte wat jy wil. So, is ons stoor 10 studente of ons stoor 15 soorte lekkergoed? Wat nie. So in ons voorbeeld hier, ons 'n skikking is die skep grootte van drie, wat julle sien reg hier aan die regterkant. En wanneer ons die eerste inisialiseer dit is alles ingestel op nul. So dit is net gedink soos 'n skoon lei. Ons het al hierdie ruimtes, ons het al hierdie bokse ons data kan sit in, maar hulle is net leeg vir die oomblik. So as ons wil eintlik ken hulle hierdie waardes, doen ons dit as reg hier onder toon. So jy het ook al die naam van jou skikking is en wat dan indeks wat jy wil. So het die indeks net verwys na, Soos wat slot ons is op soek na. En 'n belangrike ding om op te let is dat skikkings nul-kruip. So as ons wil hê dat die eerste plek in die geheue van ons reeks, is dit gaan wees nul. As ons wil hê dat die tweede, sal dit een wees. As ons wil hê die derde, sal dit twee. So aan en so voort. Dit is ook die rede waarom, konvensioneel, wanneer ons dit doen vir loops-- Ek is seker julle wonder hoekom ons begin by 0 versus 1? En dit is omdat wanneer ons oorgang in die gebruik van skikkings, dit kaarte korrek. So as jy wil Itereer in 'n skikking, is dit maak 'n baie meer sin doen ek aan 0, want ons weet wat ooreenstem om die eerste plek in die geheue. Almal goed met dit? Cool. En dan op die bodem hier is net 'n ander manier om 'n skikking te inisialiseer. Jy nog jou data tipe en die naam, maar in plaas van werklik om 'n grootte in daar, jy kan net nie met leë hakies. En dan met hierdie krullerige draadjies aan die onderkant, jy kan net die invoer van die data wat jy wil deur kommas geskei. En dit sal outomaties sê, OK, ek sien dat jy drie dinge in hierdie draadjies. So ek weet wat ek nodig het drie toe te ken blokke van die geheue en dan slaan hulle. Dus is die eerste weergawe wat jy kan gebruik As jy jou gebruikers om insette te vra waardes, sodat jy kan Itereer deur die skikking en ask-- kry 'n paar int hulle insette. As jy vooraf weet wat die waardes, dit maak 'n baie meer sin Die tweede manier om te gebruik. Maar in die meeste gevalle, kan jy nie weet wat die waardes gaan wees. Cool. Enige ander vrae? Goed. So toegang elements-- so een van die groot dinge oor skikkings is dat hulle lukraak toegang, wat beteken dat jy hoef nie te kyk deur elke blok. As jy weet dat jy wil wat in blok twee, jy kan net sê, gee my blok twee. En dit is die rede waarom hierdie indekse is so belangrik, en dit is hoe ons eintlik toegang tot hulle. So in hierdie geval, soos ons gesien het voor wanneer ons toeken waardes, in die een voor, het ons die naam en die indeks ons wou toegang, reg? So in die dieselfde manier, dit is al wat ons doen om werklik te trek dat die data nie. Ons het die naam en ons het die indeks wat ons wil hê. So in hierdie geval, die lus hier aan die onderkant, iemand weet wat dit doen, wat dit sou druk? Mmhmm? Presies. So ja, dit is net iterating deur. Ek is gelyk aan zero-- ons kan loop deur die kode net vinnig. Ek is gelyk aan nul, ek is minder as drie op hierdie punt, reg? Sodat tjeks uit. En ons sê, OK, druk f alles wat in temperatuur i. Ek is nul reg hier toe ons die eerste Itereer, so ons gaan na die eerste plek, en ons sê, OK, 65 is die getal wat ons wil uit te druk. So dit sal druk 65 en dan doen 'n nuwe reël. Ek sal werk, so dit druk 87. Dit updates weer en dit sal druk 30. Almal koel? Awesome. Alle regte. So hier is soort van 'n ding wat ek kon sê hoe jy kan tred hou iemand se telling en waarom jy sal gebruik om die eerste manier initializing dit in plaas van die tweede manier. En dit gaan net deur. En kennis van ons het 'n klas grootte van 30. En ons is initializing hierdie verskeidenheid van SY wat van grootte 30. En dan is ons iterating deur en ons is vra die gebruiker om insette tellings vir elk van hierdie en dan toeken om dit te 'n spesifieke plek in die geheue iewers in die skikking. Cool? Maak dit sin maak vir almal? Mmhmm? So hashtag definieer klasgrootte 30 is 'n voorverwerker richtlijn wat beteken dit net gets-- dit om te doen, soos die samestelling proses. Jy kan dink dit as 'n globale veranderlike. Die manier waarop ons dit doen, is typically-- dit laat jou kode te word om meer maklik verander. So laat ons sê dat ons klas grootte skielik gaan 30-15, as ek nie gedefinieer dit op hierdie manier, sou ek het om te gaan deur my hele program en verander elke geval van 30-15. Maar met hierdie, ek kry een te verander plek, en alles anders verander. As jy ooit wil doen 'n gemors te definieer in 'n geval waar jy die dop van 'n paar stel aantal tellings vir 'n klas of jy met behulp van 'n aantal wat gebruik sal word, soos, regdeur 'n baie lang program, is dit beter om dit te definieer aan die begin sodat as ooit dit verander, jy een plek in plaas van 100 te verander. Ja? STUDENT: Tussen doen en net verklaar [onhoorbaar] oor die top. ALLISON Buchholtz-AU: So is dit het te doen met efficient-- dit is soort van buite die bestek van wat ons kan dek in hierdie afdeling. Dit het meer te doen met doeltreffendheid en hoe dinge eintlik werk in die opstel proses. As jy wil regtig weet oor dit, ek is bly om jou te stuur 'n e-pos met hulpbronne daaroor. Hash definieer geneig is om te wees verkies vir dinge. En as jy meer Code, jy soort leer die nuanses wanneer jy moet gebruik om 'n globale teenoor die hash te definieer. Maar vir die oomblik, jy het nie regtig bekommerd te wees oor dit dat die kort antwoord. Almal goed met dit? En ook, as jy wil gebruik om 'n gemors te definieer, dit is baie belangrik om op te let dat die naam moet in hoofletters wees. Ons is nie net te doen Klasgrootte om dramaties te wees. Dit moet eintlik in hoofletters. Cool. Enigiets anders is daar? Ons is goed? Pragtige. Welkom. OK, so ek wil julle 'n blik te neem aan hierdie en kyk of jy kan die fout vind. Ek gee jou 'n wenk. Dit is iewers in die for-lus. Mmhmm? STUDENT: Indien minder as gelykstaande aan 2 wees. ALLISON: So is dit minder kan wees as of gelyk is aan 2, of dit kan minder as 3 wees. En wat is die redenasie vir wat? STUDENT: Die [onhoorbaar], 0, 1, 2. ALLISON: Presies. So in 'n verskeidenheid van grootte n, ons net indekse van N minus 1. Cool. En dan kan ons regtig gek en kry 'n multi-dimensionele skikkings. Een van die probleme wanneer ek het dit in my jaar vereis 'n multi-dimensionele skikkings, en ek dink een van hulle dalk nodig dit hierdie jaar, so gemaklik wees. Draai jou kop rondom dit nou. Dit sal terug kom spook nie, maar in 'n koel manier. So jy kan nie regtig dink net van 'n multi-dimensionele skikkings as skikkings van skikkings. Sodat jy kan soort van dink van hierdie top ry as die eerste deel van die geheue. En hierdie een is die tweede deel van die geheue, en die laaste ry is die derde deel van die geheue. En binne daardie, is daar 'n skikking. Maar natuurlik, is dit makliker uit te beeld soos hierdie. So jy inisialiseer dit op dieselfde manier. Dit is 'n karakter raad van drie deur drie. So jy het drie rye en drie kolomme. Ons verteenwoordig dit op hierdie manier. En jy sal dit die toegang tot dieselfde manier, kolom deur ry. En so 1,1 soos ons hier sien. Ons ken 'n nul, nul tot daar. 2,0 en 0,2. So sal jy net toegang them-- indien enigiemand ooit gedoen lineêre algebra, dieselfde manier wat jy toegang tot 'n element in 'n matrice, dit is dieselfde idee hier. So jy kan dit in verband terug na wiskunde. Jy hoef nie te veel bekommerd wees veel oor hierdie reg nou. Dit is goeie blootstelling te hê, om te weet dat jy dit kan doen. Jy kan 'n paar gek number-- jy kan skep gek skikkings word al wat ek gaan sê. [Onhoorbaar] Dit raak 'n bietjie mal, maar dit is regtig cool. Awesome. En dan, so ons het 'n voorbeeld hier. Dit bereken 'n string lengte. So, hoe baie mense het geweet dat die snare wat jy gebruik is net skikkings van die karakters? OK, ja. So julle ouens dalk dink dat jy nie gebruik skikkings voor, maar enige tyd jy gebruik getstring in die CSView biblioteek, jy eintlik net te vra vir 'n verskeidenheid van die karakters. En ons is die sorg van alle wat in die back-end vir jou. Maar jy het al met behulp van skikkings sedert jy begin het. Jy het net nie weet dit nog nie. En wanneer jy 'n karakter skikking of 'n skikking wat is die stoor van 'n string, die laaste ding is altyd wat is bekend as 'n nul terminator, wat is dit hier. En dit is aan die einde van elke woord wat jy stoor. So as ons wil om uit te vind die lengte van 'n string, kan ons sê, Wel, jy weet, die inhoud van die blok is nie gelyk aan ons nul Terminator. Dit beteken dat daar 'n karakter is daar dat ons eintlik omgee wat deel is van die woord. Jy verhoog jou lengte. En dan wanneer ons eintlik kry om te die einde van die woord, sal dit beëindig en dit sal ons lank terug vir ons. Mmhmm? STUDENT: Is die ruimte tel as die nul terminator? ALLISON: So 'n ruimte is nie 'n nul Terminator. So as jy 'multiple-- 'n ruimte is eintlik 'n spesifieke ASCII waarde. STUDENT: Wat is die uitroep gelyke weer? ALLISON: So, dit is wat jy verwys. As jy al ooit gehoor my in kantoorure, Ek het altyd noem dit, soos, bang gelyk. So bang is nie. Dit is dus nie gelyk. So as jy probeer om te kyk of daar iets is vals, U weet altyd doen, bang wat die veranderlike is, en as dit vals is, dit evalueer waar en jy kan koel dinge doen nie. Meer oor dit later. Cool. Alles goed daar? Awesome. So nou is dit jou ouens se tyd werk, want ek het gepraat. So ek wil hê jy moet net 'n skikking met die heelgetalle een, twee, en drie, en dan het hulle gedruk. Jy hoef nie te doen nie, soos, hoof, blah, blah, blah, wat ook al. Ek wil net vir julle inisialiseer die skikking en dan skep 'n lus vir hulle te druk out-- of 'n while lus, aan jou. Ek sal net gee jou 'n paar minute om te werk aan dit. Ek gaan my stem te rus. As jy enige vrae, ek is gelukkig om rond te kom en te praat met julle. Voel vry om te praat met mekaar. Kry meer lekkergoed. Trouens, ek sal net loop rond met lekkergoed. Hoe is dit? Jy enige hê? Iemand anders in hierdie kamer wil lekkergoed? Jy kan ook meer as een, ouens. Neem 'n handvol as jy wil. Kan so goed. Almal goed? OK. Ook, ek gaan om te skep 'n anonieme Google vorm, en julle kan net dien terugvoer na elke afdeling As daar is iets wat jy wil verbeter op of iets wat jy gedoen wil hê. As ek 'n bietjie te vurig vir jou, kan ek toon dit neer. Ek sal skep wat en stuur dit uit na julle al die tyd. Alle regte. So laat ons begin klein. Hoe sal ons inisialiseer ons reeks? Wat is die tipe van ons reeks? 'N int, reg? OK, so wat doen jy wil hê jou skikking te noem? Int skikking, cool. Alle reg, sodat ons 'n int int skikking gelyk, en wat het ons daarna? STUDENT: [onhoorbaar] hakies. ALLISON: draadjies. En dan in die draadjies? Een komma twee komma drie. Cool. So dit is alles reg. So nou het ons ons lus. So in die eerste deel van ons lus, wat het ons? STUDENT: i gelyk aan 0? ALLISON: So int i gelyk aan 0, en dan wat is ons toestand? Wat ek gaan minder wees as? Minder as drie, en hoe ons werk wat ons doen ek? i plus plus, opdatering een. En dan gaan ons te hê sommige printf van die heelgetal, en wat is die laaste deel dit is eintlik gaan om te sê wat ons moet druk word? Dit sou die naam van die wees skikking, wat is int skikking, reg? En wat is in die hakies van int skikking? i. [? So ek?] Het my voorbeeld, maar daar gaan jy. Nie so sleg nie. Almal goeie? Cool. So het ons klaar is met die skikkings. Geluk. Jy het dit reggekry om Itereer deur al the-- ja? STUDENT: [onhoorbaar] ALLISON: Ja. STUDENT: Ek het 'n vraag. Is jy veronderstel om die draadjies ingekeep? ALLISON: So het die draadjies moet line-up met die lus, en dan is alles binne-in die draadjies moet ingekeep word. STUDENT: OK, moet die lus ingekeep word? ALLISON: Die lus nie moet ingekeep word op hierdie punt. As jy in die belangrikste, as ons eintlik 'n hoof funksie hier, dit sou ingekeep word uit die hoof. Maar in hierdie geval, dit is goed. Ja, die vraag. STUDENT: het jy nodig om 'n die hakies na voorbeeld? ALLISON: Ja, as jy initializing dit so. So onthou, is dit die tweede manier initializing 'n skikking waar ons het die draadjies en dan ons werklike data deur kommas geskei binne. STUDENT: Ek het gedink daar was hakies vir daardie voorbeeld. ALLISON: Nee, hulle is draadjies. Hulle is draadjies. As jy initializing dit dat die tweede geval, dit is draadjies. As ons om te sê, int example-- indien Ons wou net 'n leë skikking vir SY, dit sou wees int byvoorbeeld inperk drie. Die hakies verteenwoordig die grootte. Wanneer jy draadjies, dit is die werklike data jy sit in dit op hierdie manier. Ons kan blaai terug baie vinnig. So in hierdie een, dit is net ons aanvanklike skikking, inisialisering. En hier is ons individueel toeken kolle aan hulle, sodat hierdie verteenwoordig die indeks van ons skikking, wat is die rede waarom ons het hakies. Maar hier, as jy sien, ons het verlaat ons hakies sonder 'n grote, en ons inisialiseer met die werklike data alles-in-een met draadjies. STUDENT: So hoekom het ons nie 'n tussen hakies in hierdie voorbeeld? ALLISON: So, in watter deel? STUDENT: sou ons nie sê, int byvoorbeeld tussen hakies gelyk hakkies [onhoorbaar] hakies byvoorbeeld. ALLISON: Ag, jammer. Jy is reg. Ons het hakies daar. Jammer ouens, my sleg. Ja, moet jy hakies na voorbeeld. Jy is absoluut reg. STUDENT: [onhoorbaar] doen dit nie. ALLISON: Nee, jy moet hê hakies, want anders is dit gaan nie 'n skikking te verklaar. STUDENT: [onhoorbaar]. Jammer oor dit. ALLISON: Jammer, jy moet hakies na voorbeeld. Typo. Goeie vangs, goue ster vir jou. Ook, as jy vra 'n vraag, as julle wil net vertel my jou naam, Ek sou graag dat. Ek wil graag in staat wees om ken al jou name. Ek is nie van plan om die koue bel jou, het ek eintlik wil net jou naam te leer ken. So asseblief eintlik vir my sê julle name. Lea: Lea. ALLISON: Lea. OK, so functions-- Ek weet in die kort hulle gepraat oor dit tydens lesing. So funksies is soort van net soos hierdie bietjie byt-grootte dinge waar jy in insette slaag, iets magiese gebeur, en jy uitgange. Cool. So wat jy eintlik gebruik om 'n Baie van hierdie reeds. Kry int, kry string, druk f. Dit is al die funksies waar jy net noem, daar is baie van die magiese dinge gaan aan in die agtergrond dat jy nie noodwendig sien nie, en jy kry wat jy wil. Of ten minste jy wat jy hoop jy wil. En basies die punt van funksies, en een van die belangrikste temas van CS, is om jou kode te breek in hanteerbare stukke. Wanneer jy begin skryf hierdie baie lang programme, of in Scratch toe jy moes hierdie groot idee vir 'n wedstryd, jy moet in staat wees om dit te breek af te, soos, OK, hoe begin ek? Wat is die klein stukkies wat ek nodig het? O, ek moet die vra gebruiker vir iets. Nou moet ek iets te druk. O ja, ek moet hierdie waarde te bereken. En om te leer hoe om te breek jou kode en die groot probleme wat jy het in hierdie klein stukkies en die skep van funksies is eintlik een van die groot hoeksteen van CS. So jy kan dink van 'n funksie, net soos soos 'n swart boks, 'n magiese swart boks, dat jy dinge in en jy kry 'n uitset. En die res van die program hoef nie noodwendig weet wat gaan aan in daardie swart boks. Al wat dit omgee is wat gaan in en wat kom uit. Cool. So hoekom funksies? Organization-- soos ek gesê het, wanneer jy hantering van baie groot kode basisse, hoe jy organiseer jou kode sal wees baie makliker as jy funksies te gebruik. Want jy sal in staat wees om te wees, soos, OK, dit is wat hierdie funksie verrig en hier is wat 'n ander een nie. En jy kan maklik sien hoe hulle almal in mekaar pas. So breek dit in alle hierdie hanteerbare onderdele. So simplification-- Ek is seker dat jy ouens al gesien het, soos ek gesê het, met krap. Jy het hierdie groot idee, en jy soos, hoe dit alles werk? Maar as jy dit nader sporadies, sê jy, OK, Hoe maak ek 'n sprite dryf oor die skerm? Dit is 'n bietjie makliker te maak. So 'n goeie gebruik van funksie maak jou kode veel makliker om te lees. Dit maak dit makliker om te ontfout wat as jy in jou later probleem stelle, jy gaan regtig wil in staat wees om te doen. En dit is ook makliker te ontwerp en te implementeer. Jy kan kode 'n klein funksioneer relatief vinnig en maak seker dit werk versus probeer hierdie hele lange program te skep en dan soort van gaan deur en sien wat werk en wat nie. En dan herbruikbaarheid. So funksies net nodig word sodra geskryf, en dan kan jy dit gebruik soveel keer as moontlik te maak. So is dit, soos, eko-vriendelike in 'n sin. As jy het dinge soos Druk f, waar jy het die magic wat gaan uit om te skryf agter druk f elke keer jy wou iets te druk, het jy sou mooi siek en sat van dit teen die einde. Een van die dinge wat jy sal leer in later CS klasse, of een van die beste stukke van die raad wat ek kry is, as jy kopieer en plak kode, is dit waarskynlik 'n funksie. As jy het presies dieselfde lyne dwarsdeur jou kode, As jy faktor hulle uit, jou kode sal waarskynlik wees, soos, vyf keer korter en nog baie meer maklik om te lees. En in plaas van om op te los al die verskillende plekke waar dinge verkeerd kan gaan, moet jy een funksie wat jy op te los. En ek belowe, 'n baie van hierdie lyk soort van abstrakte nou, maar as jy in later en later die probleem stel, dit sal 'n baie meer sin maak en regtig huis toe gery. Is daar enige vrae oor funksies so ver? Hoekom ons gebruik hulle? Ek weet ons het nie gekry in die fyner kunsies nie. So definisie van 'n function-- net soos skikkings, moet ons 'n soort of-- hierdie is net die algemene uitset. So, dit is 'n funksie wat net gaan 'n paar insette te kubus. En op die volgende bladsy, eintlik, ons het al hierdie wonderlike klein dingetjies hier. So, almal kan lees dat uit nuuskierigheid? Ek weet dat die pers en swart dalk 'n bietjie hard. Maar groot dinge so die eerste know-- een hier is ons terugkeer tipe. So dit is 'n gesprek oor die uitset van hierdie funksie wanneer, in hierdie geval, Ons sit in 'n nommer, wat ons is kry is dat die getal blokkies. So dit moet 'n int in hierdie geval wees. Miskien sal dit 'n dubbele of iets anders later, maar in hierdie geval, dit is 'n int. Met c, moet jy altyd 'n terugkeer tipe. Dit sal 'n int wees. Dit sal 'n float wees. Dit sal 'n dubbel. Maar jy het om te spesifiseer watter hierdie funksie gaan om terug te keer. Anders sal dit skree jy, en dit sal nie stel. Jy sal hartseer wees, en Ek sal hartseer wees. En dit is net nie goed nie. OK. En dan moet ons ons funksie naam. En as jy hier kan sien, met c is daar hierdie baie konsekwent paradigma. Wat is jou tipe, wat is die naam, en dan 'n paar ander ding aan die einde. So het ons ons terugkeer tipe, ons funksie naam, en dan ons het ons kop met ons parameter lys. So het die parameter lys is, wat hierdie funksie gaan neem in? 'N parameter lys is bloot 'n sinoniem vir wat is ons insette? En in dieselfde manier waarop ons het ons funksie te definieer en gee dit 'n terugkeer tik, elkeen van ons insette moet 'n tipe wat verband hou met dit te hê. So ons weet wat ons funksie eintlik kan werk. So in hierdie geval, ons het 'n paar int insette. So weer, sal dit die tipe wees en wat jy noem dit. En dan, as jy sien hier, ons het ons liggaam. So ons het 'n paar int uitset, wat is net ons insette keer self keer self, wat net blokkies nie. En dan moet ons terugkeer wat uitloop. So as jy hier sien, het ons 'n int keer 'n int keer 'n int, so dit gee 'n int, wat is daar verklaar. So alles is hangende. Alles is gelukkig. Jou funksie sal loop. En dit is net die algemene ding. So het altyd terugkeer tipe, naam, en jou parameter lys. Elke ding in jou parameter lys, of insette, moet 'n tipe wat verband hou met dit te hê. En dan moet jy jou liggaam hier met alles wat wat jy wil doen met jou insette. En dan natuurlik jy wil iets om terug te keer. Soms funksies sal net terug te keer. Hulle het nie werklik terug nie iets vir jou om te gebruik. Maar jy het om terug te keer in een of ander manier. En wanneer jy maak jou eie funksies, ons kan kry in 'n bietjie dieper. Persoonlik, as jy wil, daar is 'n baie van verskillende dinge wat jy daar kan doen. Almal goeie? Enigiets op hierdie lys wat jy wil hê om oor te gaan, dat jy nie verstaan ​​nie? Almal is goed daar? Cool. Awesome. OK, so ons is om dit alles saam nou. So ons het 'n paar int kubus insette, so Dit is 'n volledige program hier. Tot nou toe, ek het soort is wat jou ouens brokkies wat dalk word gaan binne 'n program. Ons het nou net op soek na funksies. Maar hier is 'n hele program. So hoeveel van julle onthou die woord prototipe van lesing? Cool. Ons het een. Wat is jou naam? Steph: Steph. ALLISON: Steph? OK, awesome. So, onthou jy wat 'n prototipe is? STUDENT: Jy sê [onhoorbaar] voordat jy dit hanteer. ALLISON: Onthou jy hoekom? STUDENT: No. ALLISON: OK. Goue ster. So ja, 'n prototipe ons het vooraf, want anders, ons samesteller gaan gil op ons. Dit gaan om te sê, OK, Wat is hierdie kubus funksie? Soos jy letterlik het vir my gesê niks. Dit is soos wanneer jy loop in 'n klaskamer, en iemand is soos, daar is 'n quiz vandag. En jy is soos jy nooit het my vertel oor hierdie. Ek is nie gelukkig met ons. Die prototipe is basies soos jou leerplan sê, kyk. Koppe. Daar gaan 'n quiz op hierdie dag te wees. Moenie freak nie uit wanneer jy om dit te. Jy gaan goed wees. So al die prototipe doen is vertel belangrikste, ek gaan hierdie funksie te gebruik. Ek belowe ek definieer dit later. Moenie freak nie uit na my. Net stel en te doen wat ek jou sê om te. So ons het die prototipe daar net om ons samesteller gelukkig. En dit is basies 'n belofte dat jy het hierdie funksie later omskryf en dat jy nie net 'n beroep hierdie ewekansige ding dat dit weet nie wat jy gaan doen. So in hierdie geval, ons het hier belangrikste. Ons inisialiseer 'n heelgetal x. Dit is twee. Ons gaan om uit te druk wat x is. Ons gaan x kubus. Soos jy sien, ons het ons funksie verklaring hier dat ons gepraat oor vroeër. Dit sal kubus x, en dan, as ons Onthou, die kubus funksie eintlik gee 'n heelgetal te ons, wat gestoor word in x weer sodat ons kan druk uit agt of kubus x nou. Maak dit sin maak vir almal? Ons is goed? Alle regte. Awesome. Alle regte. Hoeveel van julle ouens Onthou Dit so dit is basies net jou stapel en jou hoop, net 'n visualisering van hoe geheue word hier gestoor word. So ons wil net te maak seker dat jy verstaan hoe dit in die geheue verteenwoordig. As jy klasse soos neem CS61 en dinge later, jy so ver om meer te leer in diepte, en dit is regtig cool. Ek raai dit. Maar vir nou, sal ek gee jy die breë oorsig sodat jy nie hoef te weet wat die fyner kunsies. So het die top net 'n teks segment wat bevat die werklike nulle en ene, die binêre vir daardie. En dit is wat gebruik word vir die stoor globale veranderlikes as jy enige. As jy beweeg af, ons het, soos wat jy hier sien, geïnisialiseer data, geïnitialiseerd data, en dan hoop. Sodat ons nie regtig praat nie oor die hoop op die oomblik. Ons sal later kry om dit te. Vir nou, is ek net gaan waai my hande en wees soos, jy hoef nie te weet nou hieroor. Maar ons sal 'n bietjie praat bietjie oor die stapel. So die stapel where-- ons het zoom in. Dit is eintlik hoe die program Ons het net gekyk na kom in die geheue. So, wat gebeur is, elke tyd wat ons noem 'n funksie, ons kry wat genoem 'n stapel raam, wat een van hulle nie. So hoof se parameters. So dit is die dinge dat ons slaag in Hoofstraat. So hulle is reg hier op die bodem, want dit is die eerste ding wat ons noem. En dan kry ons na die hoof se inwoners, en wanneer ons sê dat, beteken dat ons die plaaslike veranderlikes wat binne belangrikste gestoor word. So locals hier sou wees, soos, x is gelyk aan twee in hierdie geval. Want dit is gelokaliseerde na. Nie almal onthou omvang, gaan oor wat in lesing? OK. Dus, net die veranderlikes wat is geïnisialiseer binne belangrikste. So dit is waarom ons 'n hoof [? koor. ?] En dan binne belangrikste, ons noem kubus. Reg? So kry ons 'n ander raam kubus se parameters. So in hierdie geval, kubus se parameters is nou die x dat ons oorgegaan in, die twee wat ons geslaag in. En dan kubus se inwoners, wat waar die werklike cubing gebeur. En dan is dit terug. So, wat gebeur is as kubus eintlik nie wat dit veronderstel is om te doen, is dit terug. Wanneer dit terugkeer, dit raam laat, en sy teruggekeer af na die hoof. En dan binne belangrikste, ons eintlik kan druk. So wanneer jy iets terug, wanneer jou funksie gee terug, dit is soos om op die waardes die raampie en dan verlaat. En dinge uit te voer ten einde. En wanneer jy na groter programme, ons koeler en meer ingewikkeld kan maak diagramme. Maar vir nou, is dit net 'n algemene oorsig sodat jy het soort van 'n begrip van wat gebeur wanneer jy bel 'n funksie en hoe dit lyk eintlik in die geheue. Cool? Almal goeie? Awesome. So, dit is die een wat net probeer om dinge te ruil. Soos ons hier sien, het ons ' ons funksie prototipe sodat ons samesteller nie skreeu nie by ons. Ons het 'n paar groot, en ons wil x en y te skakel. Hulle het nie gedoen demo in lesing nie, het hulle? Hulle het nie? OK. So ons gaan om te gaan oor hierdie baie kortliks. Jy kry in hierdie voorbeeld meer in diepte, dink ek, is hierdie week. En dan kan ons regtig volgende week duik in waarom dit nie werk nie. So ons het hierdie leemte funksie here-- ruil. So nietig beteken net dat niks terug nie. En ons het 'n ruil int en int b. En ons het 'n paar tydelike veranderlike wat 'n. 'n kry wat aan B, en dan b kry om die tydelike opgedra sodat A en B se waardes is nou aangeskakel. Maar, plot draai, dit nie werk nie. En 'n deel van dit eintlik ' te doen met die feit dat 'n en B hier, die een wat kry geslaag in Hier is eintlik afskrifte van x en y. So wanneer die funksie eintlik terugkeer, dit skakel die afskrifte maar nie die werklike x en y se. So 'n manier om te dink oor dit that-- voorgee dit is ruil. OK? So in die belangrikste, ons het x en y geïnisialiseer. Maar wanneer ons eintlik gaan hierdie rame met omruil, ons verby die waardes oor om dit, en hulle is geïnisialiseer. En hulle het net ooit reg hier woon. So A en B hier woon. En hulle kry verruil. Maar wanneer ons terugkeer, het ons dit nie doen nie enigiets doen met 'n en b. 'n en b verlof met ons funksie. En so x en y bly dieselfde. Jy kry meer in hoe om dit te los en hoe ons eintlik gaan met dit later. Maar dit is net een ding soort in gedagte hou. Gebruik dit vir die toekoms. Moenie bekommerd wees as dit het nie al die gevoel in die wêreld. Hulle is afskrifte is die grootste ding. As jy gaan om iets te neem weg van wat jy geslaag het in die kopie. So het die oorspronklike bly dieselfde. Almal goeie? Cool. So opdrag-lyn argumente. Ek is seker dat in die begin julle almal het die groot, soos, int main ruimtes. En jy soos, OK cool. Ek het nie regtig omgee. Dit is net wat ek het om te skryf. Maar in jou nuwe programme, veral in hierdie pset, en waarom is daar kryt op die grond? Met jou volgende pset, is jy gaan word aangesien dit. Int hoof, int arg c, string boog v, hakies. So, uit wat ons net geleer vandag, wat dink ons ​​dat die tweede parameter of dat die tweede element is hier? Dit is 'n skikking. Watter tipe skikking? String skikking, ja. Cool. So dit is hoe jy gaan te word om hierdie nou verklaar. Is daar iemand onthou wat hierdie staan ​​vir? Geen? Hmm? STUDENT: arg c. ALLISON: So arg c hou 'n toonbank. Dit is 'n int. Dit is 'n nommer, reg? So, wat dink jy dat die getal is? Ja. So arg c is die getal van die snare wat die opdrag lyn. So as ons eintlik do--, Daar is voorbeelde na hierdie, so ek sal nie voor my kry. Dit is 'n aantal van die snare wat maak net jou opdrag lyn. So wanneer jy dit doen, soos, dot streep Mario, dit is een string wat maak dit op. In hierdie stuk, sal jy eintlik dinge te voed in die command line, want ek is seker dat jy ouens wat het die spec saag lees. So in sulke gevalle, sal jy dalk twee of drie argumente. Dit gaan 'n nuttige ding om te gebruik. En dan arg v, soos ons sê, is net 'n string skikking. So wat eintlik winkels wat jy insette in die command line. So ons het hierdie. Jy het 'n paar dot streep kopieer infile outfile. Dus, as arg c is die getal van die snare dat ons verby in die opdrag lyn, wat is ons arg c in hierdie geval? Drie. Presies. So, wat is arg v van nul? So, wat is die eerste ding wat ons het gestoor? Dot streep kopie, presies. En dan sal die tweede infile wees. Die derde sou outfile wees. So, wat oor arg v drie? Dit sal nul wees nie, want dit is die einde van ons reeks, reg? Cool. En wat dan van die sesde een? Dit is soort van 'n truuk vraag. Ish. Weet ons wat dit is? Dit is ongedefinieerd. Ons het geen idee wat dit kan wees. Dit is alles wat reg is nadat die skikking in die geheue, en ons het geen idee wat dit is. En dit is gevaarlik diegene aan te raak dinge nie, want vir al wat jy weet, dit is 'n deel van die geheue wat jy moet nie toegang tot of nul. En dit kan gek dinge doen. Dit is bekend oor-kruip jou gebind aan jou skikking. Moenie buite die grense van gaan nie jou skikking, of slegte dinge kan gebeur. Jy kom terug en soos die wette van fisika is vernietig of iets. Cool. Maak dit sin maak vir almal? Nie te sleg nie. So nou, almal is gunsteling deel, pset oorsig. Yay! OK. So vir die van julle wat lees nie die pset spec, jy doen 'n paar baie koel dinge met kriptografie. Jy gaan 'n Ceasar te skep Cipher en 'n Vigenere Cipher. Jy moet beslis lees die spec om te sien hoe dié werk. En as jy met enige probleme oor wat dit eintlik moet doen, kom gesels gerus met my, E-pos my of die teks vir my. Ek is rond. So is daar drie hoof dinge hier dat ons wil praat about-- net soort van 'n uitbreiding van lesing. Dinge wat jy dalk nie weet oor, wenke en gereedskap. So ons gaan 'n om te doen vinnige oorsig van ASCII, want dit gaan super wees belangrik vir Vigenere se Cipher. Ons gaan omskakeling van command line insette, wat sal baie nuttig wees vir die keiser Cipher. En dan modulo. Cool. So, ASCII kaarte karakters getalle. Dit is 'n groot grafiek. Jy moet dit hê geboekmerk iewers. Jy sal dit wil hê vir jou eerste mid-term. Ek is redelik seker almal het hierdie grafiek op hul mid-term neer. So leer. Mal daaroor. Hou dit byderhand. Dit sal nuttig wees. En al is dit is 'n enkodering wat kaarte alfabetiese, numeriese, en ander karakters te nommers vir ons rekenaar. As gevolg van die kursus, in die einde, alles wat ons stoor gaan bekeerde te kry af te nulle en ene, so ons moet 'n manier om die te verteenwoordig teks en karakters wat ons almal gebruik om te sien as 'n soort van getal. So as ons hier sien, het ons ' hoofletters A, wat is reg daar. Dit is 65. En klein A is 97. Sodat jy kan uitvind out-- soos ek vroeër gesê het, as jy het n verskeidenheid van veelvuldige snare, wat elkeen van hulle 'n nul Terminator. Dit sou 'n ruimte wees. Ruimte het sy eie special-- Ek het vergeet waar dit is hier. Ag. 32 is die ruimte. So alles kaarte om dit te. So het ons 'n ASCII wiskunde. Pro tip-- in Vigenere se, jy kan versoek word jou nommers om te skakel na heelgetalle, maar dit is eintlik 'n beter praktyk in staat wees om die te gebruik karakters soos hierdie wanneer jy hulle eintlik manipuleer. So as jy wil om getalle te gebruik, kan jy. Maar 'n beter manier, of 'n manier wat Ons is geneig om jou te hou ouens om dit te doen, is op hierdie manier waar jy eintlik trek karakters. So ek wil julle ouens soort van figuur dit uit. Hoekom het jy nie probeer elke ander een? So doen die eerste een, die derde en die vyfde een. Want ek wil om seker te maak dat ons praat maak oor alles wat ons nodig het om te praat. Ek is net gaan om te sê, het een van die belangrike dinge aan- O wag, julle nie gesien het nie hierdie een. OK so doen die eerste drie. Kom ons doen dit. Want ons het om te praat oor modulo. Ek weet nie. Wiskunde is hard. Jy kan 'n sakrekenaar gebruik. Dit is OK. Of trek 'n ASCII tafel, want jy waarskynlik gaan om te wil. Cool. So ek sal vinnig loop julle deur hierdie. So mense het ASCII tafels opgetrek? Wat is ons numeriese nommer vir klein A? STUDENT: Sewe. ALLISON: So klein A 97 en hoofletters A is 65. So 97 minus 65? Publiek: 32? ALLISON: 62, ja. So in hierdie geval, wat sou dit uit te druk? Dat die eerste een? As ons persent d, wat sou dit dui? STUDENT: 'n nommer. ALLISON: Ons is druk uit 'n werklike nommer. So ons is eintlik gaan uit te druk 32 hier. En as dit was persent c, 32 gee ons 'n ruimte. So verstaan ​​dat karakters gedruk kan word sowel as getalle en as die werklike karakters is baie belangrik, en die betaling aandag aan die werklike tipes wat ons hier doen. Cool. So vir elke ander een van hierdie, wat gaan ons te word druk? Student: a karakter. ALLISON: 'n karakter. Cool. So as julle wil hê, jy moet weet kan dit uit te werk op jou eie. As jy probleme het, e-pos my. Maar die tweede een druk 'n klein b. Die derde een sal druk 'n hoofletters B. Die vierde een sal druk uit 'n hoofletter C en die laaste een sal 'n klein A. En die laaste one-- ons eintlik gaan te kry in wat dit gek persent teken beteken dat selfs in 'n paar skyfies. So probeer om diegene op jou eie. As jy probleme het, kom asseblief met my praat. As jy tipies in Adams D saal, jy sal waarskynlik vind my rond. So, atoi. Hoeveel van julle het dit gesien funksie of dit hoor nie? Iemand? Cool. So wat dit eintlik staan vir is ASCII te heelgetal. So, wat jy kan doen, is om met die keiser vir diegene wat die spec te lees, jy gaan dot streep op die keiser te doen nadat jy jou program te skryf, en dan gaan jy insette sommige nommer wat jy wil jou geheime boodskap te enkodeer met. Maar, as ons onthou, almal van ons insette gestoor word as stringe. Reg? Ons het 'n arg v skikking dit is al die tipe string. So as jy net probeer om te trek dat die een, sou dit dink dat dit een of wat ook al nommer jy gebruik is eintlik 'n karakter. So jy gaan kry 'n paar mal resultate. So as jy eintlik wil draai dit in 'n heelgetal wat jy kan gebruik om te manipuleer jou woord of jou boodskap, jy wil atoi te gebruik. atoi net vat jou string na 'n int. So as ons 'n string van 12, as ons 'n beroep atoi op 12, of wat ook al wat insette is, dit sal eintlik terug aan julle die heelgetal. Nie die karakter of die string 12. Wat, wanneer jy begin dat toe te voeg tot getalle, sal baie anders wees, omdat die string 12 is 'n paar mal nommer in ASCII, maar die heelgetal 12 is eintlik 12, en dit is wat jy wil. So jy wil om seker te maak atoi gebruik maak. Jy gaan om dit te wil in Caesar, omdat jy nodig het om die int verskaf deur die gebruiker in die opdrag lyn. Maar toe hulle dit in die opdrag lyn, is dit gestoor as 'n string om mee te begin. Maak dit sin maak? Jy doen nie noodwendig moet dit vir Vigenere. Met Vigenere, soos ek gesê het voor, moet jy probeer en gebruik ASCII wiskunde wat lyk meer soos hierdie, waar jy eintlik gebruik van die karakters wat ons aan jou gegee. Cool. Almal goeie daar? Awesome. So modulo. So, wat as jy gegee hierdie groot aantal vir die keiser? Jy het hierdie idee dat As jy op Z en jy 'n nommer twee, Dit beteken dat jy need-- Z word die tweede brief na homself, reg? So moet jy een of ander manier draai om, en modulo is die manier om dit te doen nie. So al wat dit doen is dit gee jou die res van die afdeling van die eerste getal in die tweede. En ons het 'n paar voorbeelde te maak dat 'n bietjie meer beton. Maar basies, jy modulo wanneer jy gebruik wil iets wrap om rond te maak. So as jy wil net die getalle van een tot agt, jy kan gebruik om modulo op enige ander nommer, en dit sal altyd terugkeer 'n aantal van nul tot agt. So 'n paar examples-- indien Ons het 55 modulo 10, is dit net gee jou die res van 55 gedeel deur 10, wat sou wees 5. En dan drie modulo vyf, iemand raai wat dit sou wees? Drie. So as jy 'n kleiner aantal voor die modulo, kan dit nie gaan nie in eweredig. Dit is nul. So dit gee net die getal self. So agt modulo agt sou wees? STUDENT: Zero. ALLISON: Zero. Want dit gaan in egalig. 16 modulo 15? Publiek: Een. ALLISON: Cool. En dan is dit die laaste een is net te wys you-- jy dalk wonder, OK, Wat is aan die orde van bedrywighede hier? Het ons eerste deel? Het ons modulo eerste? So modulo hou dieselfde voorrang as afdeling of vermenigvuldiging, en sy linker assosiatiewe. So is dit in die dieselfde manier. Jy sal altyd hakies doen, dan vermenigvuldiging, afdeling, en modulo in volgorde van links na regs. So standaard reëls. Net sit dit in dieselfde kategorie as verdeling en vermenigvuldiging. So in hierdie geval, sou ons het 1 plus 2 gee ons 3. Ons vermenigvuldig met 2, so ons kry 6. Ons modulo wat deur 2, wat vir ons gee? STUDENT: 0. ALLISON: 0. En dan voeg ons 2, so ons kry 2 in hierdie laaste geval. So modulo-- jy beslis gaan dink oor maniere om te inkorporeer dat wanneer jy wikkel rondom die alfabet. As jy by Z en jy nodig het om te beweeg stuur drie ruimtes te kry om C, daar is dat die hele konsep wikkel rond. So ek sal dit laat julle om uit te vind presies hoe jy gaan word om dit te gebruik. Maar beslis 'n nuttige instrument vir jou pset hierdie week. Ek hou dit regtig. Dit is een van my gunsteling psets. Dan na jy dit doen, As jy vriende, jy kan, soos, stuur mekaar geheime boodskappe en maak seker dat dit werk. Want dit sal dit of wat ook al dekripteer. Baie van die pret. En dit is die einde van afdeling. Ek is vroeg klaar. Ek het nog 15 minute met julle ouens, so as daar enigiets wat jy graag oor te gaan verder, sou ek gelukkig om dit te doen. Enige ander vrae oor jou pset Vir dié van julle wat begin of lees die spec. Enigiets wat ons het gepraat oor in die laaste uur en 15 minute wat jy wil my soort rehash, sou ek gelukkig wees. Of ons kan noem dit gesluit, en jy kan al verlaat en meer lekkergoed met jou as jy gaan. Maar as daar enige voortslepende vrae, laat weet my asseblief. Jy kan ook kom en praat met my agterna. Ek belowe ek byt nie. Enigiets anders? Almal is goed? Almal se gevoel soos hulle kan hierdie pset hanteer? Jy gaan goed wees ouens. Kantoor ure is daar vir 'n rede. Cool. Goed. Wel, in daardie geval, dankie julle almal so baie vir die komende. Ek hoop dat jy die volgende week te sien. Daar sal meer lekkergoed. Daar is dalk ander cool dinge. En ek sien uit daarna om al wat jy hierdie jaar te leer ken.