[REPRODUCCIÓ DE MÚSICA] ALLISON Buchholtz-AU: Hola a tots. Benvingut a la seva primera secció oficial CS50. Com es pot, veure, aquesta és secció CS50-com, simplement per aixecar la nostra agenda per avui. Així que, ¿qui sóc jo, com estic segur ja està tot preguntant. Jo sóc el teu TF. Jo no sóc més que un estudiant a l'atzar que està suplantant la seva TF. 

I jo vaig a anar a través de tipus de seccions tenen fluiran, expectatives que tenim, recursos, així successivament i així successivament. Anem a parlar sobre les matrius, ASCII funcions, els arguments de línia de comandes, i no és d'aquí, però També vaig a estar ajudant vostè pensa tipus de mitjà el seu pròxim conjunt de processadors per aquesta setmana. Què estic segur de tot el que podrà apreciar. 

Així, en primer pregunta-- qui sóc jo, més de la seva exuberant TF aquí. Sóc Alison Buchholtz-Au. Aquest és el meu segon any TFing CS50. Jo també CS51 TF a la primavera. És possible que vegi de nou allà si vostè decideix prendre-ho. Jo també sóc un PAF, de manera que qualsevol Freshmen-- i si vostè no és un estudiant de primer any, aquest és el meu tercer any com un company d'assessorament. Estic molt bé versat en assessorant sobre la vida i cursos dins de CS i no dins de CS. Sóc un Concentrador de Ciència Informàtica. Sóc estudiant d'últim any a Adams House, millor casa. I abans que em vaig canviar a CS meu estudiant de segon any de Primavera, Jo era en realitat un enginyer biomèdic. Jo anava a anar a l'escola de medicina. Havia de ser un cirurgià de trauma. I això té completament canviat des que vaig assumir el CS50. Vaig prendre el curs de la meva estudiant de segon any de la caiguda. Va ser la meva primera introducció a CS mai. Jo vaig ser un dels el 78% de vostès que havia experiència zero entrant, i que va canviar per complet la meva vida. I ara estic treballant en Microsoft, i la seva encantadora TF. I CS50 és probablement un de les millors experiències que he tingut aquí a Harvard-- tant prendre la classe i ser capaç d'ajudar ensenyar als estudiants com vostè. 

Així que estic molt emocionat que ja està tot aquí. En cas que vostè va entrar tarda, hi ha caramels, que vostè ha de sentir lliure de venir agafar, o enviar algú més per prendre per vostè. està bé. Jo no vull menjar això. La meva habitació té prou xocolata, així vostès han de tractar d'acabar això. Sé que hi ha 100 peces, però com, 4:00 de un dilluns, Crec que tothom podria utilitzar una mica de sucre. 

Així que tots els que són oficialment en la meva secció hauria d'haver aconseguit un correu electrònic de mi amb el meu número de telèfon, email address-- no dubti a afegir mi en Gchat, no dubti en agregar a Facebook, i també per a la resta de vostès, vostè em pot enviar per correu electrònic aquí. Hi ha dos d'H Tothom sempre fa com dos L's o dues aC Dos en el cognom H. En cas contrari, va a rebotar, i Jo no vaig a obtenir les adreces de correu electrònic. 

Així que no dubti en enviar-me un correu electrònic, posar-se en contacte amb mi en qualsevol moment. Potser no tornar a dins de 24 minuts, però prometo tornar en un termini de 24 hores. Si em dius mitja hora abans el seu conjunt de processadors es deu, vostè ser com, No tinc idea del que estic fent Allison. Ayuadame. Vaig a calmar-se, però al final del dia, si em dius mitja hora abans el seu conjunt de processadors s'ha sense res escrit, Jo seré com, bé, potser és el moment d'utilitzar aquesta tarda els dies. Així que vaig a respondre a tots els de la seva sol·licituds de manera molt oportuna. El meu telèfon és generalment unit a les meves mans. Em solen respondre molt més ràpid que 24 hores, però només puc garantia una resposta de 24 hores. 

Bé. Així que per què som aquí? També, si vostè té preguntes en qualsevol moment, si us plau m'ho saber. Parlo molt. Parlo ràpid, però si us plau, no dubti en interrompre. Em fa espai per respirar també. Així que les seccions són un temps perquè nosaltres realment només de busseig a, obtenir algunes mans-en l'experiència, per anar a través dels temes que hem esmentat a la classe o en els materials d'estudi que recomanem a vostès en línia. I que en realitat va a anar a través de alguns d'aquests recursos en una mica. 

Pel que algunes notes sobre el suport secció. CS50-- una de les coses que fa és una de les meves classes preferides és la sensació que mai estàs sol. Comptem amb un personal de més de 100 persones que són aquí per ajudar-lo. Tenim horari d'oficina De dilluns a dijous. Així que hi ha tantes persones que estimar la classe tant com ho faig i que estan realment aquí perquè volen ser aquí. La majoria de nosaltres som estudiants, i això és com una cinquena classe, a més per a la resta de la nostra feina. 

I és molta feina, però ho fem perquè ens encanta, i realment estimem a ensenyar i ajudar a compartir el nostre entusiasme per a aquest tema i aquesta classe. Així que si us plau prengui avantatge. Vingui a parlar amb nosaltres. Em sento sol quan els meus estudiants no parlar amb mi, així que si vols, venir passar l'estona amb mi. Serà genial. 

Així secció és òbviament un dels seus més grans coses. Anem a anar a través de les coses que has après a la conferència, fer alguns breus exemples quan tenim temps, i, en general tipus de tenir una idea sobre les coses vostè ha d'estar pensant sobre d'establir el seu problema. Shorts-- quantes persones en realitat vist el vídeo de la seva rascada curt? Qualsevol persona que em reconeix? Així que aquests són molt grans. Definitivament vostè hauria de veure aquests. Molt treball s'ha posat en ells. I només estan destinats a ser mida mos peces perquè vostè acaba de veure durant tres o quatre minuts i obtenir una millor comprensió d'un concepte. Camini throughs-- com moltes persones s'han vist les passejades virtuals per les anteriors? Zamyla és increïble, oi? Igual que, m'agradaria ser Zamyla vegades. Així que sens dubte utilitzar els seus passejos virtuals. Ella va a trencar cap avall en peces petites, de la mida d'un mos. I quan vostè té aquests enormes especificacions dels seus butlletins de problemes, que serà realment important ser capaç de simplement trobar un lloc per començar a treballar i poc a poc a través d'ell. 

Molt bé, també hem Study50, que és study50.harvard.edu, crec. Vostè pot simplement Google estudiar, i que va a venir per amunt. Aquesta és una de les millors recursos que tenim. És en PowerPoint amb notes i la pràctica de problemes per a vostè amb solucions que li en realitat es pot caminar a través. Així que si alguna vegada vols més pràctica, més del que fem en seccions o més dels seus conjunts de problemes, això és realment un lloc que m'animo a anar. Va ser construïda l'estiu passat per alguns dels meus molt bons amics. I és increïble. De fet, moltes de les diapositives que vaig a estar utilitzant per a la Secció vindrà de Study50. 

Així que molts dels TF usar-lo. I, finalment, com jo esmentat, les hores d'oficina. Si tens problemes per amb la tasca, vostè és tenint problemes amb un concepte, arribat a les hores d'oficina. Anar al principi de la setmana, si pots. Surti al pati, ja que és una mica lluny. A ningú li agrada caminar per aquí. Però és al seu avantatge, perquè llavors estàs va a tenir tots aquests TFS, [Inaudible] t'envolten. I sobretot ara, Només un consell, dijous són molt fred en aquest moment en Mather perquè els seus conjunts de processadors són pagadores dijous. I sabent vol utilitzar els seus dies finals encara. 

Així que si vostè està tenint problemes amb els conceptes, hi ha un munt de TFS que hi són per ajudar-lo. Així que vingui a Mather dijous. Si vols veure, Jo vaig a ser-hi. Jo normalment estic fent la meva pròpia tasca, perquè ningú vol la meva ajuda. Així que vine a veure'ns. 

Reunir-se amb nosaltres a mig camí. Llavors, com moltes persones han assistit a conferència o el va veure en línia? Quantes persones van anar a súper secció de la setmana passada? Refredar. Això és en realitat un bon nombre. Quants de vosaltres heu llegit el seu spec per aquesta setmana, pel seu conjunt de processadors? Ooh, em sento orgullós de vosaltres! Més dolços per a tots vostès. 

Bé, així que el que volem dir "Trobar-nos a mig camí", és que l'article és realment només serà molt útil per a vostè si vens en després d'haver llegit el seu especificació per a la seva conjunt de processadors. Perquè quan vaig a través d'una visió general de les coses que vostè ha de mirar cap a fora per, que no farà tant sentit si no saben el que estableix el seu problema es va a demanar que facis. 

Si no ve a la secció, òbviament, No puc ser tan útil per a vostè. No vaig a prendre com una cosa personal si no véns a la meva secció en aquest moment, però sens dubte el que hauria. Si no pot, veure en línia. Ells hi són per una raó. El meu serà allà mateix. Com t'adones, que estem sent gravada, pel que serà just aquí per a vosaltres. A més, va a lectures-- això és, òbviament, on vostè està rebent el inici de la seva material aquí. Així que vaig a tractar de dubte ajudar tant com puc, però jo només puc complir fins ara. Has de tipus de la nostra trobada a mig camí. 

Grading-- així, tots vostès que va aconseguir un correu electrònic de mi, tu ets la meva secció oficial. Vaig a estar amb una llei de les seves conjunts de processadors. I jo només vull dir, una cosa que que realment ha de prestar atenció a són els comentaris. Els comentaris són sovint més útil que la puntuació real que li donem. I els comentaris són en realitat on pas gran part del meu temps quan estic de qualificacions. Així que li agrairia que si els llegeix. I són realment com va per aprendre més sobre el disseny i l'estil i les coses que són un poc menys curta i seca. 

Així que en realitat prestar atenció a aquests comentaris. Si vostè té preguntes sobre ells, o preguntes sobre la seva puntuació, si us plau, venir a parlar amb mi ja sigui abans de la secció, Probablement estaré passant l'estona al vestíbul, o després. Si voleu programar un-a-un reunions sobre com vostè pot ajudar a millorar més tard conjunts de problemes, només m'ho saber. 

I llavors només un parell de consells per a vostès. Així que una de les coses més grans Jo sempre insisteixo al meu secció quan vostè està aprenent com codificar és escriure les coses en paper primer. Si vostè té un pla de joc per a on el codi ha d'anar i el que necessita per fer i es descompon en petits trossos de pseudocodi codi que has escrit a terme, seràs menys propensos a cometre errors de sintaxi o crear un bucle que si no té una persona. Si vostè sap on ets anar global, ets menys probable que aquests diminuts errors que de vegades et porta hores per arreglar, perquè vostè és com, on m'estic perdent aquest suport? 

En aquesta nota, si us plau, utilitzeu Style50. Especialment quan estàs anar a les hores d'oficina, si el seu codi és tot canviat de banda, és política de curs que podem dir, arreglar pel que sembla que diu Style50 el que hauria, i després l'ajudarem. Així que va a fer la seva vida més fàcil. Es va a fer la vida més fàcil. Tothom està feliç. Tothom rep millors qualificacions. ¿No és això el que tots volem? 

Així que escriure coses en un paper abans de Alguna vegada es toca l'ordinador. Parlar les coses en un nivell alt, i assegureu-vos que sap on va. I si no està segur, seure amb algú i caminar a través de pas a pas el que se suposa que el codi per fer-ho. I nou de cada 10 vegades, vostè serà com, oh, em vaig oblidar d'una condició if o es va oblidar un punt i coma aquí o Estic actualitzant aquesta equivocat variable. Així que aquests són els meus consells per a l'èxit. 

Així que ja que prop de la meitat dels que es vegi com vostè va assistir súper secció, Jo només vaig a molt anar breument a través dels bucles, que no estaven en la nostra agenda original. Però són realment importants. I així em vaig a classe de velocitat a través dels abans d'entrar a la nostra secció real. Abans de fer-ho, hi ha qualsevol preguntes-- logísticament, personalment, és allà alguna cosa més que vulguis saber sobre mi o sobre secció o classe en general? Tot bé? Acceptar, fresc. Preciós. 

Així loops-- vosaltres tots hem reconèixer aquestes peces a partir de zero. Així que els bucles són bàsicament només un camí perquè nosaltres fem alguna cosa algunes vegades, alguns repetits acció sobre la base d'alguns condicional. Així que tenim tres tipus diferents. Tenim bucle for, while i do-while. 

Així que per loops-- només tenim una molt disposició general aquí d'un bucle for. I això és molt bo per quan se sap com moltes vegades alguna cosa ha d'executar. Quan parlem de la altres bucles, podràs veure per què això és una distinció important. Però per als bucles són una mica conjunt. Vostè sap que vostè pot calcular el nombre o vostè sap el nombre de vegades que vol això repeteix al començament. 

Així que si vostè veu aquí, tenir només caràcter general del marc d'esquelet per a un bucle for aquí. Així que per a la inicialització, aquí és on s'inicialitzen les variables. Amb Mario, estic segur que vostès van fer alguna cosa així com int i és igual a 0. Aquí és on que anava a succeir en blau. Vostè té la seva condició, que és el que es comprova cada vegada. Si aquesta condició és certa, llavors la resta del codi s'executa. Després es va a córrer una altra vegada-- i preguntar. I després tenim l'actualització, on està actualitzant la variable. Així que, de nou, amb com Mario, estic segur vostès van fer alguna cosa com i plus plus. Així que cada vegada que el bucle vaig córrer, em vaig actualitzar així que quan vam marxar contra alguna condició, que estava canviant. 

Perquè si només tenir una variable estàtica, si s'executa la primera vegada, és només va a executar infinitament. Així que cal assegurar-se que actualitzar la variable correctament. I també tenim només una representació visual allà. Tothom bé? Per bucles. Hi hauria d'haver vist aquests en el seu conjunt de processadors. Refredar. 

Així que aquí és només un exemple fàcil. Imprimir Aquesta és CS50! 10 vegades. I així tenim la nostra inicialització, com veiem allà, amb int i és igual a 0, per a i és menor de 10, i jo i més. I que va a imprimir que 10 vegades. 

Així, mentre que els bucles while són loops-- genial quan no ho fa necessàriament ha de saber quantes vegades és va a actualitzar en el principi. Només tens algun condició que es comprova. I això podria ser alguna cosa així com Rato-- anem a prendre un exemple del seu conjunt de processadors. Si Mario, intenta entrada d'un nombre negatiu. Dreta? Se suposava que tornar a impulsar seu usuari. Així que es pot dir, bé, si les entrades de l'usuari una mica menor que zero, re-prompt ells. I estic segur que podria tenir estat una cosa que alguns de vostès utilitzat en el codi. 

Així que és una cosa simple. Vostè té temps, alguns condicional que es comprova cada vegada que el codi va a executar. Si s'avalua com a veritable, l'executem. En cas contrari, no ho fem. I el que és realment alguna cosa em important-- Crec que David va parlar de en lecture-- són les claus. Qualsevol que sigui de dins de la claus és el que s'executa. Si s'oblida d'aquells claus, que només va per ser la línia directament després que s'executa el temps. 

Així que si vostè té tres coses que se suposen a passar quan aquest condició s'avalua com a veritable, i vostè no té aquests suports, només el primer que va a succeir. Així de ser molt conscient on poses els teus claus. Si vostè s'enganxa amb Style50, Això definitivament l'ajudarà. Refredar. 

Així que aquesta és un compte regressiva de 10 a zero. I com es pot veure aquí, inicialitzem alguns comptador fora d'ella. Una cosa que és diferent és no estem inicialitzar la nostra variable dins del nostre bucle while. S'inicialitza fora d'ella. Estem simplement posant el condicionar per al nostre temps. Així que en aquest cas, és temps recompte és més gran que zero. I és la impressió del que és el nostre recompte, i després ens decrementamos la nostra variable. I això és també una altra cosa a notar. La nostra actualització no es produeix dins aquesta primera part del bucle while. En realitat va a succeir dins de les abraçadores, el cos del seu text. 

Així que, mentre loops-- do-while són ideals per a la validació d'usuari. Així que alguns de vostès podrien tenir També s'utilitza això en el seu conjunt de processadors. Es pot dir, fer, com, preguntar a l'usuari per a l'entrada. I llavors, mentre que, de la mateixa manera que, la d'entrada és menor que algun nombre. 

Així que per a un cas explícit amb Mario, que seria fer printf, introdueixi un sencer, i una mica més sencer és igual getInt. I llavors va a realitat executar aquest codi primer. Segur que té algun tipus de nombre enter. I llavors es podria dir que, mentre que que sencer és menor que zero. Llavors, què es va a fer és que és va a executar almenys una vegada. Es va a comprovar la condició. Si la condició és cert, que va a córrer de nou. 

El mateix passa amb-bucles while són gran per a la validació de l'usuari, perquè vostè sap el codi es va a executar, com a mínim, una vegada, mentre que amb mentre que els bucles, no estàs garanteix que és va a executar un cop. Es va a verificar l'estat primer i després decidir a executar-lo, mentre que un do-while voluntat executar el codi primer i després comprovar per veure si que necessita per repetir-la. Això distinció donar sentit a tot el món? Okay. Refredar. 

Així que en aquest cas, això és una espècie del que estava parlant, aquesta re-indicacions fins que obtenir un nombre positiu. Així que sabem que printf "Introduïu un nombre positiu" i en realitat demanant que d'entrada passarà almenys una vegada. Si l'usuari és el mal i manté introduir un nombre negatiu, que sap quantes vegades es va a executar. Però aquest codi està garantida per executar almenys una vegada. I és per això que és genial per a l'entrada de validació. I que utilitzarà que una mica. 

Molt bé, alguna pregunta fins ara? Estem tots bé? Estic parlant massa ràpid? Estem bé? Okay. Impressionant 

Així que anem a seguir endavant i parlar sobre les matrius. Refredar. Així arrays són bàsicament només estructures de dades que ens permeten emmagatzemar coses que són del mateix tipus. Així que si alguna vegada té una matriu, que és ja sigui només tindrà ints o que només tindrà flotadors o que només tindrà caràcters. No va a tenir un int amb un char amb un flotador amb un doble. Una cosa. Les matrius són només una mida, o són només un tipus. 

Així que aquí tenim una matriu de mida 3 amb tres sencers en el mateix. Podrien flotadors, però estem dirà que són sencers. Així que una cosa és adonar-se que les matrius són una mida de conjunt al inicialitzar ells, i ells no estan easily-- ja que tots vostès són menys còmodes, només ha de pensar en ells com no ser capaç d'estendre en grandària. No obstant això gran que es va proposar la seva matriu en el principi, aquest és la grandària que va per quedar-se, perquè les matrius són blocs continus de memòria. I quan vostès nois es posen en una mica més de com la memòria és realment distribuïda en discos i en el munt i la pila, que farà una mica més de sentit. 

Però vostè podria pensar en com, és només una fila d'espais en el disc. I no es pot garantir que no hi ha serà espai lliure després d'ella. Vostè podria inicialitzar una matriu de tres i després potser vostè inicialitzar una altra sèrie de cinc més tard, i està just després d'això. Així que si vostè fos a anar més enllà de punt tres en què primer array, vostè estaria escrivint sobre una altra cosa. Així matrius són-- per a vostès, només pensar en ells com una grandària fixa. 

Així que la creació d'un array-- vas a haver de fer això una mica. Així que de la mateixa manera que tenim un estructura general per a la nostra per bucles, tenim un bon general, estructura de la nostra matriu. Com que són d'un tipus, tot el elements d'un conjunt són d'un tipus, que necessita per inicialitzar el que tipus és. 

Així que, com veus aquí, tenim una petit i agradable tipus de dades suport. Així que si estem creant un int matriu, que serà int. Si estem creant un char matriu, que serà carbó. Si estem creant una cadena matriu, que serà de cadena. I a continuació, el nom de la seva matriu, el que li agradaria que fos. Així que potser és resultats de les proves o potser és estudiants o potser és el caramel. Decideixi el que decideixi el nom de la seva matriu, que és el que serà. 

I a continuació, entre parèntesis, se li tenir la mida que voleu. Així que, ¿estem emmagatzemant 10 estudiants o estem emmagatzemant 15 tipus de dolços? El que no. Així que en el nostre exemple aquí, estem creant una matriu de la mida de tres, el que vostès veure aquí a la dreta. I quan ens inicialitzem , Tot s'ajusta a zero. Així que és només pensava així com una pissarra en blanc. Tenim tots aquests espais, tenim tot aquestes caixes podríem posar els nostres dades a, però són només en blanc Sent de moment. 

Així que si volem realment assignar aquests valors, ho fem com a mostra just a sota d'aquí. Així que tens el que el nom del seu matriu és i llavors, ¿quin índex que desitja. Així que l'índex només es refereix a, com, què ranura que estem veient. I una cosa important a notar és que les matrius estan indexats a zero. Així que si volem que el primer espai a la memòria de la nostra gamma, que serà zero. Si volem que el segon, que serà un. Si volem que el tercer, que és de dos. Així successivament i així successivament. 

Que és també per què, convencionalment, quan ho fem per loops-- estic segur vostès es pregunten, ¿per què comencem a 0 enfront d'1? I això és perquè quan fem la transició en l'ús de matrius, s'assigna correctament. Així que si vostè vol iterar en una matriu, que té molt més sentit faig i és igual a 0, ja que saben que correspondrà a la primera taca a la memòria. Tothom bé amb això? Refredar. 

I després en el fons aquí és només una altra manera de inicialitzar una matriu. Vostè encara té la seva tipus de dades i el nom, però en comptes de realitat posar una mida d'allà, vostè pot fer suports buits. I després, amb aquests arrissat tirants en la part inferior, vostè pot simplement entrada de les dades que que desitja separats per comes. I que ho farà de forma automàtica dic, està bé, jo veig que té tres coses en aquests aparells. Així que sé que he de assignar 3 blocs de memòria i després els emmagatzemen. 

Així que la primera versió que podria utilitzar si vostè està demanant el seu usuari introduir valors, perquè pugui iterar a través de la matriu i ask-- aconseguir una mica de int a l'entrada d'ells. Si coneixes als valors per endavant, que té molt més sentit utilitzar el segon camí. Però en la majoria dels casos, podries no estar segur el que aquests valors seran. Refredar. Alguna altra pregunta? Molt bé. 

Així accés elements-- de manera que un de les grans coses sobre les matrius és que són a l'atzar accés, el que significa que vostè no haver de mirar a través de cada bloc. Si vostè sap que vostè voler el que està en el bloc dos, vostè pot dir, dóna'm bloc de dues. I és per això que aquests índexs són tan importants, i això és el que realment accedir-hi. Així que en aquest cas, com hem vist abans, quan estàvem assignant valors, en el qual abans, teníem el nom i la Índex volíem accés, oi? Així que de la mateixa manera, això és tot el que fer per tirar realment que fos dades. Tenim el nom i nosaltres tenir l'índex que volem. 

Així doncs, en aquest cas, el bucle for aquí baix a la part inferior, a ningú sap el que està fent, el que seria imprimir? Mmhmm? Exactament. Així que sí, és només a través de la iteració. i és igual a zero-- podem caminar a través del codi només ràpidament. i és igual a zero, i és menor de tres en aquest moment, no? Així que comprova cap a fora. I diem, OK, impressió f El que està en la temperatura i. I és zero aquí quan per primera vegada iteració, per la qual cosa anem a aquest primer punt, i diem, OK, 65 és el nombre que volem imprimir. Així que va imprimir 65 i després fer una nova línia. Vaig a actualitzar, pel que imprimeix 87. En ell s'actualitza de nou, i que va imprimir 30. Tothom fresc? Impressionant. 

Bé. Així que aquí és una espècie de El que estava dient com vostè pot fer un seguiment de puntuació d'algú i per què que faria servir el primer manera de inicialitzar en lloc que el segon camí. I això només va a través. I noti que tenim una mida de classe de 30. I estem inicialitzar aquest matriu d'enters que és de mida 30. I llavors estem iterant a través i estem demanar a l'usuari que introdueixi qualificacions de cadascuna d'elles i després assignar a un lloc específic en la memòria en algun lloc d'aquesta matriu. Fresc? Això té sentit per a tothom? Mmhmm? 

Així hashtag definir la mida de classe 30 és una directiva de preprocessador, que només vol dir que té gets-- a veure com el procés de compilació. Vostè pot pensar-hi com una variable global. La forma en què ho fem és typically-- permet el seu codi de canviar més fàcilment. Així que diguem que la nostra mida de la classe de sobte va del 30 al 15, si no hagués definit d'aquesta manera, ho faria haver d'anar a través de tot el meu programa i canviar tots els casos, de 30 a 15. Però amb això, tinc l'oportunitat de canviar un lloc, i tota la resta canvia. 

Si alguna vegada vols fer un hash definir en un cas on hi ha el seguiment d'alguns establir el nombre de puntuacions per a una classe o està utilitzant un nombre que s'utilitzarà, com, al llarg d'un programa molt llarg, és millor per definir que a l'inici de manera que si alguna vegada canvia, s'obté per canviar un punt en lloc de 100. Sí? 

ESTUDIANT: entre fer això i només declarant [inaudible] més a la part superior. 

ALLISON Buchholtz-AU: Per tant, té a veure amb efficient-- que és una mica fora de l'abast el que podem cobrir en aquesta secció. Té a veure més amb l'eficiència i les coses en realitat treballar en el procés de compilació. Si vostè vol realment saber sobre això, estic encantat d'enviar un correu electrònic amb els recursos al respecte. Hash definir tendeix a ser preferit per les coses. I a mesura que el codi sigui més, vostè tipus d'aprendre els matisos de quan s'ha d'utilitzar un mundial contra el hash defineixen. Però de moment, vostè realment no té de preocupar per això és que la resposta curta. Tothom bé amb això? I també, si vols utilitzar un hash definir, que és molt important tenir en compte que el nom ha d'estar en majúscules. No només estem fent AULA sigui dramàtic. En realitat, hauria de ser en totes les tapes. Refredar. Qualsevol altra cosa hi ha? Estem bé? Preciós. Benvingut. 

OK, així que vull que vostès per fer una ullada en això i veure si vostè pot trobar l'error. Et vaig a donar una pista. És un lloc on for-loop. Mmhmm? 

ESTUDIANT: En cas de ser inferior a igual a 2. 

ALLISON: Per tant, podria ser menor o igual a 2, o podria ser inferior a 3. ¿I quin és el raonament per això? 

ESTUDIANT: El [inaudible], 0, 1, 2. 

ALLISON: Exactament. Així, en una matriu de grandària n, ens només tenen índexs de n almenys 1. Refredar. I llavors podem aconseguir realment boig i obtenir matrius multidimensionals. Un dels problemes quan em vaig prendre al meu matrius multidimensionals requerides anys, i crec que un d'ells podria requerir que aquest any, de manera que se senti còmode. Emboliqui el seu cap al voltant d'ella ara. Es tornarà a rondar vostè, però d'una manera fresca. Així que vostè pot realment pensar de matrius multidimensionals com a matrius de matrius. Així que vostè pot tipus de pensar en aquest top fila com el primer tros de la memòria. I aquest és el segona part de la memòria, i l'última fila és la tercera part de la memòria. I dins d'això, hi ha una gran varietat. Però, és clar, és més fàcil per representar d'aquesta manera. 

Així que inicialitzar de la mateixa manera. Aquest és un personatge tauler de tres en tres. Així que hi ha tres files i tres columnes. Estem representant d'aquesta manera. I vostè accedir-hi el mateixa manera, columna per fila. I així 1,1 com veiem aquí. Assignem un zero, zero fins allà. 2,0 i 0,2. Així que vostè acaba d'accedir a ells-- si ningú mai ha fet àlgebra lineal, De la mateixa manera s'accedeix a un element en 1 matrius, és la mateixa idea aquí. Així que vostè pot relacionar-se de nou a matemàtiques. Vostè no ha de preocupar massa molt d'això ara. És bo tenir l'exposició, saber que pots fer-ho. Vostè pot crear una mica de boig number-- puguis crear matrius bojos es tot el que vaig a dir. [Inaudible] Es posa una mica boig, però és realment genial. Impressionant. 

I llavors, per la qual cosa tenim un exemple aquí. Es calcula una longitud de la cadena. Llavors, com moltes persones sabien que les cadenes que vostè està utilitzant són només conjunts de caràcters? Bé, sí. Així que nois pot pensar que vostè no té matrius usades abans, però en qualsevol moment utilitza getString al Biblioteca CSView, ets en realitat només demanant una gran varietat de personatges. I estem cuidant de tot que en el back-end per a vostè. Però vostè ha estat utilitzant matrius des que van començar. Vostè simplement no ho sabia encara. 

I cada vegada que tingui una matriu de caràcters o una matriu que està emmagatzemant una cadena, l'últim que és sempre el que és cridat un terminador nul, que és això d'aquí. I és que al final de cada paraula que vostè està emmagatzemant. Així que si volem esbrinar el longitud d'una cadena, podem dir, bé, ja saps, la contingut d'aquest bloc no és igual a la nostra terminador nul. Això vol dir que hi ha una certa caràcter no que en realitat es preocupen per això és part de la paraula. Vostè augmenta la seva longitud. I després, quan en realitat arribar a el final de la paraula, que acabarà i que tornarà a la nostra longitud per a nosaltres. Mmhmm? 

ESTUDIANT: L'espai comptarà com el terminador nul? ALLISON: Així que un espai és no un terminador nul. Així que si vostè té un espai multiple-- és en realitat un valor ASCII específica. ESTUDIANT: Quina és la exclamació de nou igual? ALLISON: Així que, això és el que vostè es refereix. Si alguna vegada em sents en hores d'oficina, Jo sempre ho dic, igual que, l'explosió és igual. Així que l'explosió no és. Així que això no és igual. Així que si vostè està tractant de veure si alguna cosa és fals, vostè sap que sempre ho fas, explosió ho la variable és, i si és fals, s'avalua com a veritable i que pot fer coses interessants amb això. Més sobre això més endavant. Refredar. Tot el bo que hi ha? Impressionant. 

Així que ara és el moment dels seus nois a treballar, ja que he estat parlant. Així que vull que vostè acaba de crear una matriu amb els nombres enters un, dos, i tres, i després confiar la seva impressió a terme. Vostè no ha de fer, com, principal, bla, bla, bla, el que sigui. Només vull que inicialitzar la matriu i després crear un bucle for per imprimir fora-- o un bucle while, depèn de vostè. 

Jo només et donaré un parell minuts per a treballar en això. Vaig a descansar la meva veu. Si vostè té alguna pregunta, estic feliç a entrar en raó i parlar amb vostès. Siéntase lliure de parlar entre ells. Més dolços. De fet, només vaig a caminar amb el caramel. Com és això? 

Vols alguna? Qualsevol altra persona en aquesta sala vol dolços? També pot prendre més d'una, nois. Tome un grapat si ho desitja. El maig també. Tothom bé? Okay. 

A més, vaig a crear un anònim Google Formulari, i vostès només poden presentar retroalimentació després de cada secció si hi ha alguna cosa que vulguis millorar o alguna cosa que vol fer. Si jo sóc una mica massa plena de vida per a vostè, puc baixar el to. Vaig a crear això i enviament que a tots vostès després. 

Bé. Així que anem a començar a poc a poc. Com ens inicialitzar la nostra gamma? Quin és el tipus de la nostra gamma? Un int, oi? OK, així que què vols per trucar a la matriu? Array int, fresc. Molt bé, així que tenim int int array iguals, i què tenim després d'això? ESTUDIANT: [inaudible] claudàtors. ALLISON: Parèntesi. I després dins de les claus? Una coma dos coma tres. Refredar. Així que això està bé. Així que ara tenim el nostre bucle for. Així que en la primera part de la nostra de bucle, ¿què tenim? 

ESTUDIANT: i és igual a 0? 

ALLISON: Així int i és igual a 0, i llavors quina és la nostra condició? Què és i havia de ser inferior? Menys de tres, i com nosaltres actualitzem i? i plus plus, actualitzar-lo per un. I després tindrem alguns printf del nombre enter, i el que és l'última part que és en realitat va a dir el que hauríem d'estar imprimint? Seria el nom de la matriu, que és de tipus int matriu, no? I el que és en els suports de int matriu? jo. [? Així que?] Vaig trucar al meu exemple, però cal anar. No està tan malament. Tothom bé? Refredar. 

Així que hem acabat amb les matrius. Enhorabona. Ho va fer per iterar a través de tot ell-- si? 

ESTUDIANT: [inaudible] 

ALLISON: Sí. 

ESTUDIANT: Tinc una pregunta. ¿Se suposa que sagnar els frens? 

ALLISON: Així que els tirants han d'estar alineats amb el bucle for, i llavors tot dins de les claus han de tenir una sagnia. 

ESTUDIANT: OK, si el bucle for sagnar? 

ALLISON: El bucle for no ho fa necessitar ser sagnia en aquest punt. Si vostè estigués en principal, si en realitat tenia una funció principal aquí, seria una sagnia de principal. Però en aquest cas, està bé. Sí, pregunta. 

ESTUDIANT: Vostè necessita tenir els parèntesis després d'exemple? 

ALLISON: Sí, si vostè és inicialització d'aquesta manera. Així que recorda, aquesta és la segona manera d'inicialització d'una matriu on tenim les claus i després la nostra real dades separades per comes dins. 

ESTUDIANT: Vaig pensar que havia suports per a aquest exemple. 

ALLISON: No, són els suports. Són aparells d'ortodòncia. Si vostè està inicialitzar que la segona manera, és frens. Si haguéssim de dir, int exemple-- si només volíem una matriu en blanc per a enters, seria int exemple entre parèntesis 03:00. Els parèntesis representen la mida. Quan vostè té tirants, que és les dades reals que està posant en ell d'aquesta manera. Podem retrocedir molt ràpid. 

Així que en aquest, això és només la nostra matriu inicial, la inicialització. I aquí, som individualment l'assignació de punts a ells, de manera que aquest representa l'índex de la nostra matriu, que és per això que tenim entre parèntesis. Però aquí, si et fixes, hem deixat els nostres suports sense una mida, i inicialitzem amb el dades reals tots-en-un amb els suports. ESTUDIANT: Llavors, ¿per què no tenim parèntesi en aquest exemple? ALLISON: Llavors, en quina part? ESTUDIANT: No seria que diguem, int exemple suports és igual als suports [inaudible] claudàtors, per exemple. 

ALLISON: Oh, ho sento. Tens raó. Tenim suports allà. Ho sento nois, el meu mal. Sí, vostè ha de tenir entre parèntesis després d'exemple. Tens tota la raó. 

ESTUDIANT: [inaudible] no fer-ho. 

ALLISON: No, vostè ha de tenir suports, perquè en cas contrari és no va a declarar una matriu. ESTUDIANT: [inaudible]. Ho sento. 

ALLISON: Ho sentim, vostè necessita entre parèntesis després d'exemple. Typos. Bona captura, estrella d'or per a tu. A més, si vostè està fent una pregunta, si vostès acaba de dir-me els seus noms, M'encantaria això. M'encantaria ser capaç de conèixer tots els seus noms. Jo no vaig al fred et dic, jo en realitat no només volen saber els seus noms. Així que si us plau, en realitat em diuen els seus noms. 

Llegiu: Llegeixi. 

ALLISON: Leah. OK, així que functions-- sé en breu es va parlar d'això durant la conferència. Així que les funcions són una espècie de just com aquestes petites coses mida d'un mos on es passa en les entrades, una mica succeeix màgic, i s'obté sortides. Refredar. Així que en realitat es va utilitzar un molts d'ells ja. Aconsegueix int, aconseguir cadena, impressió f. Aquestes són totes les funcions on s'acaba de cridar a ells, hi ha un munt de coses màgiques passant en el fons que no veu necessàriament, i s'obté el que vol. O almenys vostè aconsegueix el que vostè espera que desitges. 

I bàsicament el punt de funcions, i un dels principals temes de la CS, és trencar el codi en trossos manejables. Quan comenci a escriure aquests programes realment llargs, o en les ratllades quan vas tenir aquesta gran idea per a un joc, ha de ser capaç de trencar- fins, com, OK, com començo? ¿Quines són les petites peces que necessito? Oh, he de demanar a la usuari per a alguna cosa. Ara he de imprimir alguna cosa. Oh, he de calcular aquest valor. 

I aprendre a trencar el seu codi i els grans problemes que tenir en aquestes petites peces i la creació de funcions és en realitat una de les grans pedres angulars de la CS. Així que vostè pot pensar en una funció tan com un quadre negre, un quadre negre màgic, que posi les coses en i s'obté una sortida. I la resta del programa no té per què saber necessàriament el que està passant dins d'aquest quadre negre. Tot el que li importa és el que que entra i el que surt. Refredar. 

Llavors per què funcions? Organization-- com vaig dir, quan estàs es tracta de bases de codi molt grans, com organitzar el seu codi serà molt més fàcil si utilitza funcions. Perquè podràs a ser, com, OK, aquest és el que fa aquesta funció i això és el que fa un altre. I vostè pot veure fàcilment com encaixen junts. Així que dividir-lo en tot aquestes subparts manejables. 

Així simplification-- Estic segur que els nois tots van veure això, com ja he dit, amb esgarrapades. Vostè té aquesta gran idea, i vostè és com, com ho fa tota aquesta feina? Però si t'acostes a ella a poc a poc, et diuen, OK, Com puc fer un sprite de surar a través de la pantalla? Això és una mica més fàcil. Així que un bon ús de la funció fa el seu codi molt més fàcil de llegir. Això fa que sigui més fàcil de depurar que com et fiques en els seus butlletins de problemes posteriors, vostè va a realment vull ser capaç de fer. I són també més fàcils per dissenyar i posar en pràctica. Pot codificar fins a un petit funcionar amb relativa rapidesa i assegureu-vos que funciona front tractant per crear aquest programa a llarg sencer i després de passar per tipus i veure el que funciona i el que no ho és. 

I després reutilització. Així que només necessiten funcions a escriure una vegada, i llavors vostè pot utilitzar tantes vegades com sigui possible. Pel que és, com, respectuós del medi ambient en un sentit. Si vostè tenia coses com impressió f, on havia d'escriure la màgia que va darrere d'imprimir f cada vegada que volia imprimir alguna cosa, seria bastant malalt i cansat d'ell pel final. 

Una de les coses que vostè va a aprendre en classes posteriors CS, o un dels millors consells que rebo És a dir, si va a copiar i enganxar codi, probablement hauria de ser una funció. Si vostè té la mateixa exacta Al llarg de les línies del seu codi, si els eliminat gairebé, el seu codi faria probablement ser, com, cinc vegades més curts i ser molt més fàcil de llegir. I en comptes de tractar de solucionar problemes tots aquests diferents llocs on les coses que podria sortir malament, té una funció que s'arriba a solucionar problemes. I et prometo, molt d'això podria semblar una mica abstracte ara, però com et fiques en endavant i problema més endavant estableix, que farà molt més sentit i realment ser portat a casa. Hi ha alguna pregunta sobre les funcions fins ara? Per què estem usar-los? Sé que no hem aconseguit en el quid de la qüestió encara. Així que la definició d'un function-- igual matrius, que necessiten algun tipus de-- aquest és només la sortida general. Així que aquesta és una funció que és només va a cubicar alguna entrada. I en la següent pàgina, en realitat, tenim totes aquestes petites coses increïbles aquí. Per tant, tothom pot llegir que, per curiositat? Sé que el morat i negre pot resultar una mica difícil. 

Però les coses grans a sabes-- el que la primera un aquí és el nostre tipus de retorn. Així que això està parlant de la sortida d'aquesta funció quan, en aquest cas, posem en algun nombre, del que som aconseguir és que el nombre al cub. Per tant, ha de ser un int en aquest cas. Potser seria una doble o una mica més tard, però en aquest cas, que és un int. 

Amb c, sempre es necessita un tipus de retorn. Serà un int. Serà un flotador. Serà un doble. Però vostè ha d'especificar què aquesta funció va a tornar. En cas contrari, cridar a vostè, i no va a construir. Estaràs trist, i jo estaré trist. I simplement no és bo. Okay. 

I després tenim el nostre nom de la funció. I com es pot veure aquí, amb c hi ha aquest paradigma molt consistent. Quin és el teu tipus, quin és el nom, i després alguna altra cosa al final. Així que tenim el nostre tipus de retorn, el nostre nom de la funció, i després tenim la nostra capçalera amb llistat de paràmetres. 

Així que la llista de paràmetres és, el que és aquesta funció va a prendre en? Una llista de paràmetres és simplement un sinònim de, ¿quines són les nostres entrades? I de la mateixa manera que nosaltres de definir la nostra funció i donar-li una volta escriure, cadascuna de les nostres entrades necessita tenir un tipus associat amb ell. Així que sabem el que la nostra funció en realitat pot treballar. 

Així que en aquest cas, tenim una certa entrada int. Així que de nou, serà el tipus i el que estàs trucant. I després, com vostè veu aquí, tenim el nostre cos. Així que tenim una mica de sortida int, que és només la nostra multiplicat per si mateix d'entrada sí vegades, que acaba de cubs ell. I llavors tornem aquesta sortida. 

Així que com veus aquí, tenim una int vegades una int de vegades un int, per la qual cosa retorna un int, que ha estat declarat allà. Així que tot és coherent. Tot és feliç. La seva funció s'executarà. I això és just en general. Així que sempre tenen tipus de retorn, nom, i la seva llista de paràmetres. Cada cosa al seu llista de paràmetres, o d'entrada, necessita tenir un tipus associat amb ell. I llavors vostè té el seu cos aquí amb el que sigui que vols fer amb la teva entrada. 

I llavors, evidentment, vol tornar alguna cosa. A vegades, les funcions seran només tornar. Ells en realitat no tornen alguna cosa perquè utilitzeu. Però vostè ha de tornar d'alguna manera. I quan vostè està fent les seves pròpies funcions, podem entrar en això una mica més profund. Personalment, si vols, hi ha una gran quantitat de les diferents coses que vostè podria fer. Tothom bé? Qualsevol cosa en aquesta llista que em vols per repassar, que no entén? Tothom és bo no? Refredar. Impressionant. 

OK, així que ens estem posant tot això junts ara. Així que tenim una certa entrada int cub, per la qual cosa aquest és un programa complet aquí. Fins ara, no tinc amable del seu estat donant fragments de nois que podrien anar dins d'un programa. Nosaltres només hem estat buscant en funcions. Però aquí és tot un programa. Llavors, ¿quants de vostès recorden la prototip Paraules conferència? Refredar. Tenim un. Quin és el teu nom? 

Steph: Steph. 

ALLISON: Steph? Acceptar, impressionant. Així que, ¿te'n recordes del que és un prototip? 

ESTUDIANT: Vostè diu que [inaudible] abans que realment s'ocupa d'ella. 

ALLISON: Te'n recordes de per què? 

ESTUDIANT: No. 

ALLISON: OK. Estrella d'or. Així que sí, un prototip que tenim per endavant, perquè en cas contrari, nostre compilador va a cridar a nosaltres. Es dirà, OK, ¿Quina és la funció del cub? Igual, que, literalment, té em va dir res sobre això. És com quan vostè entrar en un saló de classes, i algú com, hi ha un concurs d'avui. I vostè és com, vostè Mai em va parlar d'això. No estic content amb nosaltres. El prototip és bàsicament com el seu programa dient, mira. Heads up. Serà un concurs en el dia d'avui. No s'espanti quan arribi a ella. Vas a estar bé. 

Així que tot el prototip no és dir-li principal, vaig a utilitzar aquesta funció. Et prometo que vaig a definir més endavant. No espanti mi. Només compilar i fer el que jo et digui. Així que tenim el prototip no només per fer el nostre compilador feliç. I és bàsicament una promesa que ha definit aquesta funció més endavant i que vostè no està sol trucant aquesta cosa a l'atzar que no saps el que ets va a estar fent. 

Així que en aquest cas, tenim principal aquí. Inicialitzem algun sencer x. Això és dues. Anem a imprimir el que x és. Anem a cubicar x. Com veus, tenim la nostra declaració de la funció aquí baix que ens parlat anteriorment. Va Cube x, i després, si ens recordi, la funció de cub en realitat retorna un enter a nosaltres, que s'emmagatzema en x de nou perquè puguem imprimir a vuit, o cub de x en aquest moment. Això té sentit per a tothom? Estem bé? Bé. Impressionant. 

Bé. Quants de vostès Recorda això pel que aquest és bàsicament només la seva pila i el seu munt, només una visualització de com s'emmagatzema la memòria aquí. Així que només volem fer Assegureu-vos d'entendre com aquests estan representats en la memòria. Si vostè pren classes com CS61 i aquestes coses més endavant, s'arriba a aprendre aquesta molt més en profunditat, i és realment genial. El recomano encaridament. Però per ara, vaig a donar que la visió general pel que no ha de conèixer el quid de la qüestió. 

Així que la part superior només un segment de text que conté els zeros reals i uns, el binari per això. I això s'utilitza per emmagatzemar variables globals, si tenen alguna. A mesura que avança cap avall, ens tenen, com vostè veu aquí, dades inicialitzats, sense inicialitzar dades, i després munt. 

Així que realment no parlem sobre el munt en aquest moment. Anem a arribar-hi més tard. Per ara, només vaig a agitar les mans i ser com, vostè no necessita saber sobre això ara. Però anem a parlar una mica poc sobre la pila. Així que la pila és where-- tenim apropar. Això és en realitat com el programa que acabem de veure que passa a la memòria. 

Així que el que passa és, cada temps que cridem a una funció, tenim el que s'anomena una pila marc, que és un d'aquests. Així de paràmetres principals. Així que aquestes són les coses que passem a principal. Així que són aquí a la part inferior, perquè aquesta és la primera cosa que anomenem. I després tenim els principals de locals, i quan diem que, ens referim a les variables locals que s'emmagatzemen dins de principal. Així que els vilatans aquí seria, igual que, x és igual a dues en aquest cas. Perquè això és localitzada a principal. Tothom recorda l'abast, va més que en la conferència? Okay. Així que, les variables que s'inicialitzen dins de principal. Així que és per això que tenim principal [? veus. ?] 

I després dins de principal, que anomenem cub. Dreta? Així que tenim un altre marc amb els paràmetres de cub. Així que en aquest cas, la galleda de paràmetres són ara la x que passem a, els dos que vam passar a. I llavors la gent del cub, que és on la cubicació real succeeix. I després torna. 

Així que el que passa és com cub fa realitat el que se suposa que ha de fer, retorna. Quan torna, aquest marc es va, i la seva tornat cap avall per principal. I després dins de principal, en realitat pot imprimir-lo. Així que quan vostè està tornant alguna cosa, quan la seva funció retorna, és com la transmissió d'aquests valors per a el marc per sota d'ella i després de sortir. I les coses s'han d'executar en ordre. 

I quan arribes als programes més grans, podem fer més fred i més complicat diagrames. Però per ara, això és només una visió general pel que té una mena de comprensió del que que succeeix quan vostè està cridant a una funció i la forma en què realment es veu a la memòria. Fresc? Tothom bé? Impressionant. 

Així que aquest és un que és tractant de canviar les coses. Com veiem aquí, tenim el nostre prototipus de funció perquè el nostre compilador no cridar-li a nosaltres. Tenim una mica de principal, i ens voler canviar xi y. No ho han fet aquesta demo en conferència encara, oi? Ells no tenen? Okay. Així que anirem en aquest molt breument. Vostè obtindrà en aquest exemple més en profunditat, crec que, aquesta setmana. I llavors la setmana que puguem realment submergir-se en per què això no funciona. 

Així que tenim aquest buit canvi funció aquí--. Així buit només significa que no retorna res. I tenim un intercanvi int i int b. I tenim alguns temporal variable que és a. 1 s'assigna a b, i després b s'assigna a la temperatura Així que això és a i b valors es commuten ara. 

Però, gir de la trama, això no funciona. I part d'ella té en realitat a veure amb el fet que una i b d'aquí, els que van passant a aquí, en realitat són còpies de x i y. Així que quan la funció retorna en realitat, canvia les còpies però no l'actual x i y del. Així que una manera de pensar-hi és que-- pretenen aquests són d'intercanvi. D'acord? Així doncs, en principal, tenim x i i s'inicialitzen. Però quan en realitat ens pugem a aquests marcs amb intercanvi, estem passant els valors més a la mateixa, i que estan inicialitzats. 

I només mai viuen aquí. Així que a i b viuen aquí. I aconsegueixen canviats. Però quan tornem, no ho fem fer qualsevol cosa amb a i b. 1 ib llicència amb la nostra funció. I el que x i i no canvien. Obtindrà més en la forma d'arreglar això i la forma en què realment ocupem d'això més tard. 

Però és només una cosa per mantenir una mica en la ment. Fes-lo servir per al futur. No us preocupeu si això no tenia tot el sentit al món. Són còpies és la cosa més gran. Si vostè va a prendre res lluny d'això, vostè va passar a les còpies. Així que els originals romanen igual. Tothom bé? Refredar. 

Així que els arguments de línia de comandes. Estic segur que en el principi vostès tot tenia aquestes grans, com, buits principals int. I vostè és com, ben fresc. Realment no m'importa. Això és just el que he d'escriure. Però en els seus nous programes, especialment en aquest conjunt de processadors, i per què hi ha guix a terra? 

Amb el seu pròxim conjunt de processadors, ets estarà veient això. Int principal, int arg c, cadena d'arc v, claudàtors. Així, a partir del que acabem de après avui, el que què pensem que el segon paràmetre o que el segon element és aquí? És una matriu. Quin tipus de matriu? Matriu de cadenes, sí. Refredar. Així que aquesta és la forma en què vas a declarar aquests ara. 

Algú recorda el que aquests signifiquen? No? Hmm? 

ESTUDIANT: arg c. 

ALLISON: Així arg c manté un comptador. És un int. És un nombre, no? Llavors, ¿què creu vostè que aquest nombre és de? Sí. Així arg c és el nombre de cadenes que constitueixen la línia d'ordres. Així que si haguéssim de fer-- realitat, hi ha exemples després d'això, així que no vaig a tirar endavant de mi mateix. És un nombre de cadenes que simplement prendre una línia d'ordres. 

Així que quan ho fa, com, dot retallar Mario, aquesta és una cadena que fa que cap amunt. En aquesta peça, que realment serà l'alimentació de les coses en la línia d'ordres, com estic segur que els nois que han llegit la serra d'especificacions. Així que en aquests casos, potser vostè tenir dos o tres arguments. Serà una cosa útil per al seu ús. 

I llavors arg v, com hem dit, és només una matriu de cadenes. Així que emmagatzema realment ho que ha ingressat a la línia d'ordres. Així que tenim aquests. Vostè té una mica de barra de punts copiar archivosalida INFILE. Així doncs, si arg c és el nombre de cadenes que estem passant en la comanda línia, quina és la nostra arg c en aquest cas? Tres. Exactament. 

Llavors, què és arg v de zero? Llavors, què és el primer que hem emmagatzemat? Dot slash còpia, exactament. I a continuació, el segon seria INFILE. La tercera seria archivosalida. Així que què passa amb arg v 3? Seria nul, perquè això és Al final de la nostra sèrie, no? Refredar. 

I llavors què passa amb la sisena? És una espècie d'una pregunta amb trampa. Ish. Sabem el que és? És indefinit. No tenim idea del que podria ser. És tot el just després de la matriu en la memòria, i no tenim ni idea del que és. I és perillós tocar els coses, perquè per a tot el que saps, que és una part de la memòria que vostè no ha de ser l'accés o nul. I pot fer coses boges. Es diu excés d'indexació l'obligat a la matriu. No vagi fora dels límits de la seva matriu, o les coses dolentes poden passar. Vostè es torna i, de la mateixa manera que, les lleis de la física han estat destruïts o alguna cosa així. Refredar. Això té sentit per a tothom? No està malament. 

Així que ara, tothom és part favorita, revisar conjunt de processadors. Hurra! Okay. Així que per a aquells de vostès que no han llegit l'especificació de conjunt de processadors, que està fent alguna cosa realment coses interessants amb la criptografia. Vas a crear un Ceasar Xifrat i una xifra de Vigenère. Definitivament, vostè ha de llegir la spec per veure com funcionen. I si vostè està tenint cap problema sobre el que realment hauria d'estar fent, si us plau, venir a parlar amb mi, envieu-me un correu electrònic o text mi. Jo estic a prop. 

Així que hi ha tres principals coses aquí que ens voler parlar sobre-- només tipus d'una extensió de la conferència. Les coses que vostè pot no saber aproximadament, consells útils i eines. Així que anem a fer un revisió ràpida d'ASCII, perquè això serà súper important per al xifrat de Vigenère. Anem a la conversió de de la línia d'ordres, el que serà molt útil per al xifrat de Cèsar. I llavors mòdul. Refredar. 

Així, els mapes de caràcters ASCII a nombres. Aquest és un gran gràfic. Vostè ha de tenir present marcada en algun lloc. Vostè va a voler per la seva primera meitat de període. Estic bastant segur que tothom té aquesta taula en el seu full de meitat de període. Així que aprendre. Vullga-ho. Mantingui a la mà. Serà útil. 

I tot el que és és una codificació que els mapes alfabètics, numèrics, i altres personatges a números per al nostre ordinador. Perquè, per descomptat, en el final, tot el que emmagatzemem es va a aconseguir convertida a zeros i uns, per la qual cosa necessitem alguna manera de representar la text i els caràcters que estem tots acostumats a veure com una mena de nombre. 

Així que com veiem aquí, tenim A majúscula, que està just allà. És 65. I minúscula A és 97. Així que vostè pot imaginar fora-- com he dit abans, si tinguessis gamma de múltiples cordes, el que cadascun d'ells tenir un terminador nul. Seria un espai. L'espai té la seva pròpia especial-- M'oblido d'on és aquí. Ah. 32 és l'espai. Així que tot el que s'assigna a la mateixa. 

Així que tenim matemàtiques ASCII. Pro tip-- en Vigenère de, vostè pot tenir la temptació per convertir els números als nombres enters, però en realitat és una millor pràctica per ser capaç d'utilitzar el personatges com aquest quan en realitat estàs manipular-los. Així que si vol utilitzar números, es pot. Però una millor manera, o d'una manera que tendim a com vostès per fer-ho, és d'aquesta manera on ets en realitat restant caràcters. 

Així que et vull nois a tipus de figura a terme. Per què no ho intentes cada altre? El mateix passa amb la primera, la tercer, i el cinquè. Perquè jo vull assegurar-me que parlem sobre tot el que necessitem parlar. Jo només vaig a dir, un dels coses importants A-- Oh, espera, vostès no han vist això. Acceptar ho fan els tres primers. Anem a fer això. Perquè hem de parlar de mòdul. Ho sé. Matemàtiques és difícil. Podeu utilitzar una calculadora. Està bé. O tirar d'una taula ASCII, perquè vostè està probablement va a voler això. 

Refredar. Així que vaig a caminar ràpidament vostès a través d'aquestes. Així que la gent ha taules ASCII aixecat? Quina és la nostra numèric nombre de minúscules A? ESTUDIANT: Set. 

ALLISON: Així minúscules A és 97 i A majúscula és 65. Així que 97 menys 65? 

AUDIÈNCIA: 32? 

ALLISON: 62, sí. Així que en aquest cas, el que hauria d'imprimir? Aquesta primera? Si tenim per cent d, el que indicaria que? ESTUDIANT: Diversos. ALLISON: Estem impressió a terme un nombre real. Així que en realitat estem anant per imprimir 32 aquí. I si això fos per cent c, 32 ens donaria un espai. Així la comprensió que caràcters poden imprimir tant com nombres i com els caràcters reals que és realment important, i el pagament de atenció als tipus reals que estem fent aquí. Refredar. Així, per cada un d'aquests altres, ¿Què anem a imprimir? 

ESTUDIANT: Un personatge. 

ALLISON: Un personatge. Refredar. Així que si vostès volen saber, que poden treballar aquests pel seu compte. Si vostè està tenint problemes, envieu-me un correu electrònic. Però el segon ho farà imprimir una minúscula b. El tercer s'ha d'imprimir un majúscules B. El quart s'imprimirà a terme una majúscula C, i el última serà una minúscula A. I l'últim un-- realitat estem anant per entrar en el que cent boja signe significa fins i tot en un parell de diapositives. Així que tracti dels de la pròpia. Si té problemes, si us plau, venir a parlar amb mi. Si vostè és típicament en Adams sala D, probablement em podran trobar. 

Així, atoi. Quants de vosaltres heu vist aquest funció o sentit parlar d'ell en absolut? Qualsevol persona? Refredar. Així que el que realment es destaca per és ASCII a un enter. Així que el que podem fer és, amb César, per als que van llegir l'especificació, que vas a fer barra de punts César després d'escriure el seu programa, i després et vas a entrada d'un nombre que vostè vol codificar el missatge secret amb. 

Però, si recordem, tot el nostre entrades s'emmagatzemen com cadenes. Dreta? Tenim una gamma v arg això és tot tipus string. Així que si vostè acaba de tractar de tirar que un, que seria pensar que el que un o diversos que s'utilitza és en realitat un personatge. Així que vas a obtenir alguns resultats bojos. Així que si vostè realment vol convertir això en un nombre enter que pot utilitzar per manipular la seva paraula o el seu missatge, vostè voldrà utilitzar atoi. atoi només converteix la seva cadena a un int. 

Així que si tenim una cadena de 12, si anomenem atoi el 12, o el que sigui que d'entrada és, que en realitat tornar a que el nombre sencer. No és el caràcter o la cadena 12. La qual cosa, quan s'inicia per afegir que als números, serà molt diferent, perquè la cadena 12 és un nombre boig a ASCII, però el nombre enter 12 en realitat és 12, que és el que vols. Així que vostè vol assegurar-se d'utilitzar atoi. 

Vostè va a voler aquest en César, perquè necessitarà el int subministrada pel usuari en la línia d'ordres. Però quan se la van posar en la comanda línia, s'emmagatzema com una cadena per començar. Això té sentit? No necessàriament necessitarà aquesta per Vigenère. Amb Vigenère, com ja he dit abans, vostè ha de tractar d'usar Matemàtiques ASCII que s'assembla més a això, d'on ets en realitat utilitzant els caràcters que estem donats a vostè. Refredar. Tothom bé allà? Impressionant. 

Així mòdul. I què si et donen aquest enorme nombre de César? Vostè té la idea que si vostè està en Z i ja està donat un nombre de dos, això vol dir que need-- Z es converteix en el segon carta de si mateix, no? Pel que necessita per embolicar al voltant d'alguna manera, i mòdul és la manera de fer-ho. Així que tot el que fa és que li dóna la resta de la divisió de la primer nombre pel segon. I tenim alguns exemples a fer que una mica més concret. Però, bàsicament, utilitza mòdul quan voler fer alguna cosa embolcall al voltant. 

Així que si vostè només vol que el nombres de l'u al vuit, es pot utilitzar en qualsevol altre mòdul nombre, i ho farà sempre retornar un nombre de zero a vuit. Així que alguns examples-- si tenim 55 mòdul 10, que només et dóna la resta de 55 dividit per 10, el que seria 5. I després tres mòdul 5, ningú suposo que el que seria? Tres. 

Així que si vostè té un nombre menor abans el mòdul, no es pot anar en forma parella. És zero. Per tant, només retorna el número en si. Així que vuit mòdul de vuit seria? 

ESTUDIANT: Zero. 

ALLISON: Zero. A causa de que va en forma parella. 16 mòdul 15? 

AUDIÈNCIA: Un. 

ALLISON: Cool. I després aquesta darrera és només per mostrar usted-- pot ser que es pregunti, OK, ¿Quin és l'ordre de les operacions aquí? Ens dividim en primer lloc? Ens MÒDUL primer? Així mòdul té la mateixa precedència com la divisió o multiplicació, i la seva associatiu esquerra. Així que és de la mateixa manera. Es podria fer sempre entre parèntesis, a continuació, multiplicació, divisió, i mòdul en ordre d'esquerra a dreta. Així regles estàndard. Només cal posar a la mateixa categoria com la divisió i la multiplicació. 

Així que en aquest cas, ho faríem tenen 1 més 2 ens dóna 3. Multipliquem que per 2, per la qual cosa tenim 6. Ens mòdul que per 2, el que ens dóna? 

ESTUDIANT: 0. 

ALLISON: 0. I després afegim 2, per la qual cosa aconseguir 2 en aquest últim cas. Així modulo-- estàs definitivament va a estar pensant en maneres d'incorporar que quan s'està embolicant tot l'alfabet. Si vostè està en Z i ha de moure remetre tres espais per arribar a C, hi ha tot aquest concepte d'embolicar al voltant. Així que vaig a deixar en mans de vostès per esbrinar com és exactament el que vas a usar-lo. Però sens dubte una eina útil per a la seva conjunt de processadors aquesta setmana. M'agrada molt això. Aquest és un dels meus favorits de conjunts de processadors. Després, després que ho facis, si vostè té amics, vostè pot, com, enviar un a l'altre secret missatges i assegurar-se que funciona. Com que va a desxifrar o el que sigui. Molta diversió. 

I aquest és el final de la secció. Vaig acabar d'hora. Encara tinc 15 minuts amb vostès, així que si hi ha alguna cosa que li agradaria anar encara més, jo estaria feliç de fer això. Alguna altra pregunta sobre el seu conjunt de processadors per a aquells de vostès que han començat o llegir l'especificació. Tot el que hem parlat aproximadament en l'última hora i 15 minuts que havien m'agrada al tipus de refregit, jo estaria encantat de. O podem deixar-ho tot, i vostè pot tot sortir i prendre més dolços amb vostè a mesura que avança. Però si hi ha qualsevol persistent pregunta, si us plau m'ho saber. També pot venir i parlar amb mi després. Et prometo que no mossego. Una mica més? Tothom és bo? Sentiment de tot el món com que poden manejar aquest conjunt de processadors? Seràs nois bons. Les hores d'oficina hi són per una raó. Refredar. Molt bé. 

Bé, en aquest cas, gràcies tot gràcies per venir. Espero veure't la setmana que ve. Hi haurà més dolços. És possible que hi hagi altres coses interessants. I miro endavant a aconseguir saber a tots vostès aquest any.