[MUSIC JOC] ALLISON Buchholtz-AU: Hei toată lumea. Bine ați venit la primul dumneavoastră secțiune oficial CS50. După cum puteți, a se vedea acest lucru este secțiune CS50-cum ar fi, pur și simplu pentru a trage agenda noastră pentru ziua de azi. Deci, cine sunt eu, așa cum sunt sigur ești intrebi. Eu sunt TF ta. Nu sunt doar un student aleator cine pretinde TF ta. Și am de gând să merg prin fel de secțiuni va curge, așteptările pe care le avem, resurse, așa mai departe și așa mai departe. Noi o să vorbim despre tablouri, ASCII funcții, argumente în linia de comandă, și nu e pe aici, dar Eu voi fi, de asemenea, de ajutor tu crezi fel de prin următoarea PSET pentru această săptămână. Care sunt sigur că vă va aprecia toate. Așa că, question-- în primul rând cine sunt eu, în afară de TF-ul exuberant aici. Eu sunt Alison Buchholtz-Au. Acesta este al doilea meu an TFing CS50. Am, de asemenea, CS51 TF in primavara. S-ar putea vedea din nou acolo dacă vă decideți să-l ia. Sunt, de asemenea, un PAF, astfel încât orice Freshmen-- iar dacă nu ești un student în anul întâi, acest lucru este meu al treilea an ca un om de consiliere. Sunt foarte bine versat în tu consilierea pe viață și cursuri în cadrul CS și nu în CS. Eu sunt un Computer Science Concentrator. Sunt un senior în Casa Adams, cel mai bine casa. Și înainte am trecut la CS meu Al doilea de studentie de primăvară, Am fost de fapt un inginer biomedicale. Am fost de gând să meargă la școală Med. Am fost de gând să fie un chirurg trauma. Și care are complet schimbat de când am luat CS50. Am luat cursul Al doilea de studentie toamna mea. A fost prima mea introducere la CS vreodată. Am fost unul dintre 78% dintre voi care au experiență de zero vine, și-a schimbat complet viața mea. Și acum lucrez la Microsoft, și TF dragi. Și CS50 este, probabil, unul din cele mai bune experiențe care l-am avut aici, la Harvard-- atât luarea clasa și fiind capabil de a ajuta preda elevilor ca tine. Deci, eu sunt foarte incantata că ești aici. În cazul în care ai venit în târziu, există bomboane, care ar trebui sa simti liber să vină apuca, sau trimite altcineva să-l apuca pentru tine. e OK. Nu vreau să mănânc asta. Camera mea are suficient de ciocolată, așa voi toți ar trebui să încerce și să termin asta. Știu că există 100 de bucăți, dar ca, 16 pe o zi de luni, Cred ca toata lumea ar prinde bine niște zahăr. Deci, toți dintre voi care sunt oficial în secțiunea meu ar fi ajuns un e-mail de la mine cu numărul meu de telefon, e-mail address-- nu ezitați să mă adăuga pe Gchat, nu ezitați să mă adăuga pe Facebook, și, de asemenea, pentru restul de tine, puteți să-mi e-mail aici. Există două H a lui. Toată lumea face întotdeauna ca doi L'S sau doi C lui. Două H, în numele de familie. În caz contrar, va sări, și Eu nu am de gând pentru a obține adresa dvs. de email. Deci, nu ezitați să mi e-mail, să mă contactați în orice moment. Eu nu pot sa ma intorc la în termen de 24 de minute, dar promit să mă întorc în termen de 24 de ore. Dacă mă sunați o jumătate de oră înainte PSET ta se datorează, voi fi ca, Nu am nici o idee despre ceea ce fac Allison. Ajută-mă. Am de gând să te calmezi, dar la sfârșitul zilei, dacă mă cheamă o jumătate de oră înainte PSET ta se datorează cu nimic scris, Am de gând să fie ca, de bine, poate e timpul să folosească acea zi de întârziere. Așa că voi răspunde la toate dvs. cereri într-un mod foarte în timp util. Telefonul meu este, de obicei, atașat la mâinile mele. Eu de obicei răspund mult mai repede de 24 de ore, dar eu pot doar garanție un răspuns 24 de ore. Bine. Deci, de ce suntem aici? De asemenea, dacă aveți întrebări la orice moment, vă rog să-mi spuneți. Eu vorbesc foarte mult. Eu vorbesc repede, dar vă rog nu ezitați să mă întrerupe. Ea îmi dă respirație cameră la fel de bine. Deci, secțiunile sunt un timp pentru noi de a se arunca cu capul într-adevăr doar în, pentru a primi unele hands-on experiență, pentru a du-te prin subiecte care le-am menționat în clasă sau în materiale de studiu care vă recomandăm să vă băieți on-line. Și vom merge de fapt, prin unele dintre aceste resurse într-un pic. Astfel încât unele note pe suport secțiune. CS50-- unul dintre lucrurile care face ea una dintre clasele mele preferate este sentimentul că ești niciodată singur. Avem un personal de peste 100 de oameni care sunt aici pentru a vă ajuta. Avem ore de birou De luni până joi. Deci, există atât de mulți oameni care dragoste clasa la fel de mult ca și mine și cine sunt cu adevărat aici pentru că ei vor să fie aici. Cei mai mulți dintre noi sunt studenți, iar acest lucru este ca o clasa a cincea în plus pentru restul muncii noastre. Și e mult de muncă, dar o facem pentru că ne place, și noi într-adevăr place să te învețe și de a ajuta împărtășesc entuziasmul nostru pentru acest subiect și această clasă. Deci, vă rugăm să profite. Vino vorbesc pentru noi. I a lua singur atunci când elevii mei Nu vorbi cu mine, așa că dacă vrei, vin stai cu mine. Va fi grozav. Deci, sectiunea este, evident, una dintre cele mai mari lucrurile tale. Vom merge prin lucruri că ai învățat în curs, face unele exemple scurte atunci când avem timp, și, în general, un fel de face o idee despre lucruri ar trebui să fie de gândire despre pentru a seta problema ta. Shorts-- cât de mulți oameni de fapt vizionat video de la zero ta scurt? Oricine mă recunoști? Deci, cei care sunt foarte mari. Tu ar trebui să urmăriți cu siguranta cele. O mulțime de muncă a fost pus în ele. Și acestea sunt doar menite să fie musca-size piese pentru tine de a viziona doar timp de trei sau patru minute și a obține o o mai bună înțelegere a unui concept. Mers pe jos throughs-- cum mulți oameni au vizionat Plimbarea traversare pentru cele anterioare? Zamyla este uimitor, nu? Cum ar fi, aș vrea să fiu Zamyla uneori. Deci, folosi cu siguranta dumneavoastra walk-through. Ea se va rupe în jos, în piese mici, musca-size. Și când ai aceste frumos caietul de sarcini de la seturi de probleme, aceasta va fi foarte important pentru a putea găsi doar undeva pentru a începe și de a lucra încet prin ea. În regulă, avem, de asemenea Study50, care este study50.harvard.edu, cred. Poți doar Google de studiu, și o să vină. Aceasta este una dintre cele mai cele mai bune resurse avem. Este PowerPoints cu note și practica probleme pentru tine cu soluții pe care le pot merge de fapt prin. Deci, dacă vrei mai mult practică, mai mult decât o facem în secțiuni sau mai mult decât seturi de probleme, acest lucru este într-adevăr un loc I, va incurajam sa mergi. A fost construit în vara anului trecut de către unii dintre prietenii mei foarte buni. Și e uimitor. De fapt, o mulțime de diapozitive că voi folosi pentru secțiunea va veni de la Study50. Deci, o mulțime de TFS-l folosească. Și, în sfârșit, așa cum am menționat, ore de birou. Dacă aveți probleme cu temele, ești probleme cu o concept, vin la ore de birou. Du-te la începutul săptămânii, dacă poți. Ieși la quad, pentru că ea este un fel de departe. Nimeni nu îi place să meargă acolo. Dar este in avantajul tau, pentru că atunci ești Va trebui toate aceste TFS, [Inaudibil] te înconjoară. Și mai ales acum, doar un sfat, joi sunt foarte rece chiar acum în Mather pentru că psets dvs. sunt datorate în zilele de joi. Si stiind vrea să utilizați-vă arăta zile încă. Deci, dacă aveți probleme cu concepte, există o mulțime de TFS care sunt acolo pentru a vă ajuta. Deci, ieși la Mather joi. Dacă vrei să mă vezi, Am de gând să fie acolo. Fac de obicei propria ta temele, pentru că nimeni nu vrea ajutorul meu. Deci, vin să ne vadă. Întâlnește-ne la jumătatea drumului. Deci, cât de mulți oameni au participat la prelegeri sau privit-o on-line? Cât de mulți oameni a mers la Super pct săptămâna trecută? Rece. Asta e de fapt un număr echitabil. Câți dintre voi ați citit dumneavoastră spec pentru această săptămână, pentru PSET ta? Ooh, eu sunt mândru de voi! Mai multe bomboane pentru voi. Bun, deci ce înseamnă pentru noi "Ne întâlnim la jumătatea drumului", este această secțiune este de fapt doar Va fi foarte util pentru tine dacă veniți în faptul că a citit ta caietul de sarcini pentru PSET ta. Pentru că atunci când merg printr-o privire de ansamblu de lucruri pe care ar trebui să fie în căutarea afară pentru, ea nu va face la fel de mult sens dacă Nu știu ce setați problema ta va fi cer să faci. În cazul în care nu vin la secție, în mod evident, Nu poate fi atât de util pentru tine. Eu nu am de gând să-l ia personal în cazul în care tu nu vin la pct mea acum, dar cu siguranta ar trebui. În cazul în care nu se poate, urmăriți-le on-line. Ei sunt acolo pentru un motiv. A mea va fi acolo. După cum observați, ne fiind înregistrate, așa că va fi acolo pentru voi. De asemenea, merg la lectures-- asta e evident unde vei primi începe de material aici. Așa că voi încerca cu siguranță și te ajuta să îți fel de mult ca pot, dar eu vă puteți întâlni decât până acum. Trebuie să fel de ne întâlnim la jumătatea drumului acolo. Grading-- așa, voi toți care au primit un e-mail de la mine, Dacă sunteți pct meu oficial. Eu voi fi clasificare psets tale. Și vreau doar să spun, un lucru care ar trebui să acorde o atenție cu adevărat la sunt comentariile. Observațiile sunt de multe ori mult mai utile decât scorul real vă oferim. Iar comentariile sunt de fapt în cazul în care îmi petrec o mulțime de timp meu când sunt de clasificare. Deci, aș aprecia ea dacă le citiți. Și sunt de fapt cum ai de gând pentru a afla mai multe despre design si stil și lucrurile care sunt o mai putin tăiat și uscat. Deci, într-adevăr să acorde o atenție la aceste comentarii. Dacă aveți întrebări despre ei, sau întrebări despre scorul, vă rugăm să vin să vorbești cu mine fie înainte secțiune, Voi fi, probabil, agățat în hol, sau după aceea. Dacă doriți să programați unu-la-unu reuniuni cu privire la modul vă poate ajuta la îmbunătățirea mai târziu Seturi de problemă, doar să-mi spuneți. Și apoi doar un cuplu de sfaturi pentru voi. Deci, una dintre cele mai mari lucruri Intotdeauna mi-am subliniez la pct meu atunci când sunteți de învățare cum să cod este pentru a scrie lucruri pe hârtie în primul rând. Dacă aveți un plan de joc pentru în cazul în care codul trebuie să meargă și ceea ce are nevoie pentru a face și este defalcat în bucăți mici de pseudocod Codul ați scris afară, ai de gând să fie mai puțin susceptibile de a face erori de sintaxă sau pentru a crea o buclă în cazul în care nu are o altcineva. Dacă știți unde ești merge în general, ești mai putin probabil de a face aceste mici Greșeli pe care le va lua, uneori, ore pentru a repara, pentru că tu ești ca, unde sunt eu lipsesc această categorie? Pe această notă, vă rugăm să folosiți Style50. Mai ales atunci când sunteți O să orelor de program, în cazul în care codul este tot a trecut la o parte, aceasta este politica curs că putem spune, repara astfel încât se pare ca Style50 spune ar trebui, și apoi vă vom ajuta. Deci, acesta va face viața mai ușoară. Va face viața mai ușoară. Toată lumea e fericită. Toată lumea primește note mai bune. Nu este faptul că ceea ce ne dorim cu totii? Deci, scrie lucruri pe hârtie înainte atingi vreodată calculatorul dumneavoastră. Vorbeste lucrurile la un nivel ridicat, și asigurați-vă că știți unde mergi. Și dacă nu sunteți sigur, stai jos cu cineva și le plimba prin pas cu pas ceea ce codul ar trebui să facă. Și de nouă ori din 10, vei putea cum ar fi, oh, am uitat o condiție în cazul în care sau am uitat o virgulă aici sau Mă actualizarea acestui greșit variabilă. Deci, acestea sunt sfaturile mele pentru succes. Deci, din moment ce aproximativ jumătate din te uiti ca și cum ai participat la pct super, Mă duc la foarte du-te scurt prin bucle, care nu au fost pe agenda noastră originală. Dar ele sunt foarte importante. Și așa am de gând să fel de viteză prin intermediul celor înainte de a intra în secțiunea noastră actuale. Înainte de a face acest lucru, sunt acolo orice questions-- logistic, personal, este acolo orice altceva vrei sa stiti despre mine sau despre secțiune sau de clasă, în general? Toate bune? OK, rece. Lovely. Deci, loops-- voi ar trebui toate recunoaște aceste piese de la zero. Deci, buclele sunt, practic, doar o modalitate pentru noi de a face ceva unele de mai multe ori, unele repetate de acțiune bazat pe unele condiționată. Deci, avem trei tipuri diferite. Avem de buclă, în timp ce, și de a face-timp. Deci, pentru loops-- avem doar un foarte aspect general, aici de o buclă. Și acest lucru este mare pentru atunci când știi cum de multe ori ceva trebuie să se execute. Când vorbim despre alte bucle, veți a se vedea de ce este o distincție importantă. Dar pentru bucle sunt pentru ceva set. Știi că poți, fie calcula numărul sau știți de câte ori voi doresc acest lucru repetat la început. Deci, dacă vedeți aici, au doar un caracter general de cadru schelet pentru o buclă de aici. Deci, pentru-initializare, acest lucru este în cazul în care variabilele sunt inițializate. Cu Mario, eu sunt sigur că ați făcut ceva de genul int i este egal cu 0. Asta în cazul în care s-ar întâmpla în albastru. Ai starea dumneavoastră, care este ceea ce se verifică de fiecare dată. Dacă această condiție este adevărată, atunci restul codului execută. Atunci acesta va rula again-- și cere. Și apoi ne-am actualizare, în cazul în care actualizați variabila dumneavoastră. Așa că, din nou, cu ca Mario, eu sunt sigur voi a facut ceva de genul i, plus, plus. Deci, de fiecare dată bucla a fugit, am fost actualizată pentru că atunci când am fost o verificare împotriva anumite condiții, a fost schimbarea. Pentru că dacă doar au o variabilă statică, în cazul în care execută prima dată, este doar de gând să execute infinit. Deci, va trebui să asigurați-vă că actualizați variabila dumneavoastră în mod corespunzător. Și noi, de asemenea, au doar un reprezentare vizuală acolo. Toată lumea bine? Pentru bucle. În cazul în care s-au văzut aceste în PSET ta. Rece. Deci, aici e doar un exemplu simplu. Tipărește aceasta este CS50! De 10 ori. Și așa ne-am initializare nostru, așa cum vom vedea acolo, cu int i este egal cu 0, pentru i este mai puțin 10, și am, plus, plus. Și se va imprima ca de 10 ori. Deci, în timp ce loops-- în timp ce buclele sunt mare atunci când nu neapărat Trebuie să știu de câte ori este O să actualizeze la început. Trebuie doar unele condiție care este verificat. Și acest lucru ar putea fi ceva de genul while-- Să luăm un exemplu din PSET ta. În cazul în care Mario, încercați să intrare un număr negativ. Dreapta? Trebuia să re-cere dvs. de utilizator. Deci, vă pot spune, ei bine, în cazul în care intrările de utilizare ceva mai mică decât zero, re-prompte ele. Și sunt sigur că ar putea avea a fost ceva ce unii dintre voi utilizate în codul dumneavoastră. Deci, este un lucru simplu. Ai timp, unele condiționată care se verifică de fiecare dată când codul merge la executa. În cazul în care se evaluează la adevărat, l-am alerga. În caz contrar, noi nu facem. Si ce e cu adevărat ceva important-- I cred că David a vorbit despre în lecture-- sunt acolade. Oricare ar fi în cadrul acolade este ceea ce se execută. Dacă uitați pe cei bretele, e doar merge să fie direct linia după acest timp a fost executat. Deci, dacă aveți trei lucruri care se presupune să se întâmple atunci când acest lucru condiție se evaluează la true, și nu aveți aceste bretele, doar primul lucru se va întâmpla. Astfel încât să fie foarte conștienți de în cazul în care ați pus aparatul dentar. În cazul în care stick cu Style50, acest lucru te va ajuta cu siguranta. Rece. Deci, aceasta este o numărătoare inversă de la 10 la zero. Și, după cum vedeți aici, ne-am inițializa unii contra afara de ea. Un lucru care este diferit este nu suntem de inițializare variabile nostru în buclă nostru în timp ce. Este inițializat în afara ei. Suntem pur și simplu doar punerea condiționează în timp ce pentru noastră. Deci, în acest caz, este în același timp count este mai mare decât zero. Și noi imprima ceea ce conta noastră este, și apoi ne-am decrement variabila nostru. Și asta e, de asemenea, un alt lucru pentru a observa. Modificare noastră nu se întâmplă în că în primul rând parte din bucla de timp. Se va întâmpla de fapt în acolade, corpul textului. Deci, nu-loops-- în timp ce do-while sunt foarte bune pentru validare utilizator. Deci, unii dintre voi ar putea avea de asemenea, utilizat în acest PSET ta. Puteți spune, face, cum ar fi, cere utilizatorului pentru intrare. Și apoi în timp ce, cum ar fi, de intrare este mai mică de un numar. Deci, pentru un caz explicit cu Mario, ea ar fi făcut printf, introduceți un număr întreg, iar apoi unii întreg egal getint. Și atunci va de fapt executa acel cod întâi. Vei avea de fapt un fel de număr întreg. Și atunci ai putea spune, în timp ce că întreg este mai mică decât zero. Deci, ceea ce va face este că e O să execute cel puțin o dată. Se va verifica starea. În cazul în care condiția este adevărat, ea va alerga din nou. Deci, nu-în timp ce buclele sunt mare pentru validare utilizator, pentru că știi codul este de gând să execute cel puțin o dată, în timp ce cu în timp ce buclele, tu nu ești garantat că este O să execute o dată. Se va verifica starea în primul rând și apoi decide să-l execute, în timp ce un do-in timp ce va executa codul primul și apoi verificați pentru a vedea dacă trebuie să-l repete. Are această distincție face sens pentru toată lumea? OK. Rece. Deci, în acest caz, aceasta este un fel de ce vorbeam despre, această re-solicitările până când primi un număr pozitiv. Deci, noi știm că printf "Introduceți un număr pozitiv" și de fapt cere ca intrare se va întâmpla cel puțin o dată. În cazul în care utilizatorul este rău și păstrează introducerea unui număr negativ, care știe de câte ori se va executa. Dar acest cod este garantata să execute cel puțin o dată. Și de aceea e minunat pentru validarea intrare. Și vei folosi asta destul de un pic. În regulă, orice întrebări până acum? Suntem cu toții bine? Vorbesc prea repede? Suntem bine? OK. Awesome Deci, vom merge mai departe și vorbesc despre matrice. Rece. Deci, matrice sunt, practic, doar structuri de date care ne permit să stocheze lucruri de același tip. Deci, dacă aveți vreodată o matrice, este fie doar de gând să aibă int sau este doar de gând să aibă flotoare sau este doar de gând să aibă caractere. Nu vei avea o int cu un char cu un flotor cu un dublu. Un lucru. Arrays sunt doar o dimensiune, sau sunt doar un singur tip. Deci, aici avem o serie de dimensiuni trei cu trei numere întregi în ea. Ele ar putea pluteste, dar suntem O să spun că sunt int. Deci, un singur lucru pentru a realiza este că matrice sunt o dimensiune set, atunci când a inițializa ei, iar ei nu sunt easily-- din moment ce toate sunt mai puțin confortabile, trebuie sa te gandesti doar la ei ca a nu fi capabil să se extindă în dimensiune. Cu toate acestea mare de a pleca matrice dumneavoastră la început, asta e dimensiunea pe care o va să rămână, pentru că matrice sunt blocuri continue de memorie. Și când voi ajunge într-un pic mai mult de cât de memorie este de fapt pus pe discuri și în heap și stiva, se va face un pic mai mult sens. Dar ai putea gândi la fel de cum ar fi, e doar un rând de spatii de pe disc. Și nu poate garanta că nu există O să fie spațiu liber după el. Ai putea inițializa un tablou de trei și apoi poate că inițializa o altă serie de cinci mai târziu, și e chiar după aceea. Deci, dacă ar fi să mergi la fața locului dribleze trei în acea primă matrice, v-ar fi scris peste altceva. Deci, tablouri are-- pentru voi, doar cred că de ei ca o dimensiune fixă. Deci, crearea unui array-- te duci la nevoie pentru a face acest lucru destul de un pic. Deci, în același mod în care avem o Structura generală pentru noastră de bucle, avem un general frumos Structura de oferta noastră. Pentru ca sunt de un singur tip, toate elemente într-o matrice sunt de un singur tip, aveți nevoie pentru a inițializa despre ce tip este. Deci, după cum vedeți aici, avem o drăguț tip de date suport. Deci, dacă vom crea un int matrice, care va fi int. Dacă vom crea un char matrice, va fi char. Dacă vom crea un string matrice, va fi string. Și apoi numele de matrice dumneavoastră, orice ai vrea să fie. Deci, poate că e scorurile de testare sau, poate, e studenți sau poate e bomboane. Orice ai decide să numească dvs. matrice, asta e ceea ce va fi. Și apoi în paranteze, veți au dimensiunea pe care doriți. Deci, ne-am depozitarea de 10 elevi sau suntem stocarea 15 tipuri de bomboane? Ceea ce nu. Deci, în exemplul nostru aici, vom crea un tablou de mărime trei, pe care le voi a se vedea chiar aici, pe dreapta. Și când am inițializa primul ea, totul este setat la zero. Deci, e doar gândit de cum ar fi o tabula rasa. Avem toate aceste spații, avem toate aceste cutii am putea pune datele noastre în, dar acestea sunt doar martor pentru moment. Deci, dacă vrem să efectiv le atribuie aceste valori, facem în așa fel încât chiar sub aici arată. Deci, aveți oricare ar fi numele tău matrice este și apoi ce indicele vrei. Deci indicele tocmai se referă la, cum ar fi, ceea ce fantă ne uităm la. Și un lucru important de observat este ca matrice sunt zero indexate. Deci, dacă vrem primul spațiu în memorie din oferta noastră, aceasta va fi zero. Dacă vrem a doua, va fi una. Dacă vrem a treia, va fi de două. Așa mai departe și așa mai departe. Care este, de asemenea, motivul pentru care, în mod convențional, atunci când facem pentru loops-- sunt sigur voi au fost întrebați, de ce să începem de la 0 față de 1? Și asta pentru că atunci când ne tranziție în utilizând baterii, aceasta harti corect. Deci, dacă doriți să repeta într-o matrice, ea face mult mai mult sens pentru face i este egal cu 0, pentru că noi știu că va corespunde la primul loc în memorie. Toată lumea bună cu asta? Rece. Și apoi în partea de jos aici este doar un alt mod de a inițializa un tablou. Încă mai ai dumneavoastră tip de date și numele, dar în loc de fapt pune acolo o dimensiune, puteți face doar între paranteze goale. Și apoi cu aceste buclat bretele în partea de jos, puteți pur și simplu de intrare datele pe care doriți să separate prin virgula. Și care va automat spune, OK, am vedea că aveți trei lucruri în aceste bretele. Deci, eu știu că am nevoie să aloce trei blocuri de memorie și apoi a stoca cele. Deci, prima versiune s-ar putea folosi dacă ceri utilizator la intrare Valorile astfel încât să puteți repeta prin matrice și de a lua ask-- unele int la intrare le. Dacă știți valorile dinainte, face mult mai mult sens să folosească a doua cale. Dar, în cele mai multe cazuri, nu s-ar putea ști ce aceste valori vor fi. Rece. Orice alte intrebari? Bine. Deci, accesarea elements-- astfel o din cele mai mari lucruri despre tablouri este că acestea sunt aleatorii acces, ceea ce înseamnă că Nu trebuie să se uite prin fiecare bloc. Dacă știți că doresc ce e în bloc două, vă pot spune doar, da-mi bloca două. Și de aceea acestea Indicii sunt atât de importante, și așa le-am acces efectiv. Deci, în acest caz, așa cum am văzut mai înainte, atunci când am fost atribuirea de valori, în cel înainte, am avut numele și index am vrut să acces, nu? Deci, în același fel, asta e tot noi face pentru a trage de fapt asta a datelor. Avem denumirea și noi au indicele care ne-o dorim. Deci, în acest caz, FOR buclă aici în partea de jos, oricine știu ce face, ceea ce ar tipări? Mmhmm? Exact. Deci da, e doar iterarea prin intermediul. i este egal cu zero-- putem merge pe jos prin codul de doar repede. i este egal cu zero, i este mai puțin decât trei în acest moment, nu? Așa că verifică. Și noi spunem, OK, print f tot ce este în temperatură i. i este zero, chiar aici când am primul repeta, așa că du-te la acest prim punct, și spunem, OK, 65 este Numărul vrem să imprime. Deci, acesta va tipări 65 și apoi face o nouă linie. i se va actualiza, așa că imprimă 87. Se actualizează din nou, și-l va imprima 30. Toată lumea rece? Minunat. Bine. Deci, aici e un fel de una lucru spuneam cât de puteți urmări Scorul cuiva și de ce ar trebui să utilizați primul mod de inițializare în loc de asta a doua cale. Și acest lucru merge doar prin intermediul. Și observați avem o dimensiune de clasă de 30 de ani. Și suntem inițierea acestei matrice de int care este de mărimea 30. Și apoi noi suntem iterarea prin și suntem cere utilizatorului să introducă înscris pentru fiecare dintre acestea și apoi atribuirea de un loc specific în memorie undeva în această matrice. Rece? Asta face sens pentru toată lumea? Mmhmm? Deci, hashtag defini clase de mărime 30 este o directivă preprocesor, ceea ce înseamnă doar o gets-- are pentru a face ca procesul de compilare. Vă puteți gândi la ea ca o variabilă globală. Modul în care o face este typically-- permite codul să fie mai ușor schimbată. Deci, haideți să spunem că dimensiunea noastră clasă brusc se duce la 30 la 15, dacă nu l-au definit acest fel, aș face- Trebuie să treacă prin întreaga mea programului și de a schimba fiecare instanță de 30-15. Dar cu acest lucru, am ajunge să modifice una la fața locului, și totul se schimbă altceva. Dacă vrei vreodată să faci un hash defini într-un caz în cazul în care te ține evidența unele setați numărul de scoruri pentru o clasă sau utilizați un număr care vor fi utilizate, cum ar fi, de-a lungul un program foarte lung, e mai bine pentru a defini că la început astfel încât, dacă vreodată se schimbă, veți obține pentru a schimba un loc în loc de 100. Da? STUDENT: Între face asta și tocmai de declarare a [inaudibil] în partea de sus. ALLISON Buchholtz-AU: Deci, are de a face cu efficient-- e un fel de în afara domeniului de aplicare a ceea ce putem acoperi în această secțiune. Ea are de a face mai mult cu eficiență si se pare ca lucrurile de fapt de lucru în procesul de compilare. Dacă vrei să cunoști cu adevărat despre asta, eu sunt fericit să vă trimită un e-mail cu resurse despre ea. Hash defini tinde să fie preferat pentru lucruri. Și pe măsură ce cod mai mult, un fel de a învăța nuanțe de când ar trebui să utilizați un la nivel mondial față de hash defini. Dar pentru moment, nu aveți într-adevăr să vă faceți griji despre asta este că răspunsul scurt. Toată lumea bună cu asta? Și, de asemenea, dacă vrei pentru a utiliza un hash defini, este foarte important pentru a observa că numele ar trebui să fie, în toate capacele. Nu ne face doar CLASE DE MĂRIME a fi dramatic. Ar trebui să fie de fapt în toate capacele. Rece. Altceva acolo? Suntem bine? Lovely. Bine ai venit. OK, așa că vreau ca voi să aruncăm o privire la acest lucru și a vedea dacă puteți găsi bug-ul. Îți dau un indiciu. E undeva prin aceea că pentru buclă. Mmhmm? STUDENT: Ar trebui să fie mai mică egală cu 2. ALLISON: Deci, ar putea fi mai mică sau egal cu 2, sau poate fi mai mică de 3. Și ceea ce este raționamentul pentru asta? STUDENT: [inaudibil], 0, 1, 2. ALLISON: Exact. Deci, într-o matrice de dimensiune n, ne-am au doar indici de n minus 1. Rece. Și apoi putem obține cu adevărat nebun și a obține matrice multi-dimensionale. Una dintre problemele atunci când am luat în mea ani matrice multi-dimensionale necesare, și cred că unul dintre ei ar putea necesita în acest an, astfel încât să fie confortabil. Infasurati capul în jurul valorii de ea acum. Se va întoarce să bântuie voi, dar într-un mod rece. Astfel încât să puteți într-adevăr gândește-te de matrice multi-dimensionale în calitate de tablouri de tablouri. Astfel încât să puteți fel de gândi al acestui top rând ca prima bucată de memorie. Și acesta este a doua bucată de memorie, și ultimul rând este a treia bucată de memorie. Și în asta, nu e un tablou. Dar, desigur, este mai ușor pentru a descrie așa. Astfel încât să inițializați-l în același mod. Acesta este un personaj bord de trei pe trei. Deci, aveți trei rânduri și trei coloane. Suntem reprezentând în felul acesta. Și tu ar avea acces același mod, coloana de rând. Și astfel 1,1 așa cum vom vedea aici. Am atribui un zero, zero, acolo sus. 2,0 și 0,2. Deci, v-ar accesa doar dacă them-- cineva a făcut vreodată algebra liniară, în același mod în care accesați un element în o Matrice, e aceeași idee aici. Astfel încât să puteți referi înapoi la matematica. Nu trebuie să vă faceți griji prea de mult despre asta acum. E bine sa ai de expunere, să știi că o poți face. Puteți crea unele nebun number-- puteți a crea rețele nebun este tot ce voi spune. [Inaudibil] Ea devine un pic nebun, dar e foarte misto. Minunat. Și apoi, așa că avem un exemplu aici. Se calculează o lungime șir. Deci, cât de mulți oameni știau că siruri de caractere pe care îl utilizează sunt doar tablouri de caractere? OK, da. Deci, voi putea crede că nu avea tablouri second-hand înainte, dar în orice moment utilizați getstring în Bibliotecă CSView, ești de fapt, doar cere o serie de caractere. Și suntem grijă de toate că în back-end pentru tine. Dar tu ai fost utilizați rețele de când ai început. Tu pur și simplu nu-l știu încă. Și ori de câte ori aveți o situare caracter sau o matrice care este stocarea unui șir de caractere, ultimul lucru pe care este întotdeauna ceea ce este numit terminator nul, care este acest drept aici. Și anume, la sfârșitul fiecare cuvânt pe care îl depozitare. Deci, dacă vrem să dau seama Lungimea unui șir de caractere, putem spune, bine, știi, conținutul care bloc nu este egal cu terminator noastră nul. Aceasta înseamnă că există o anumită caracter acolo că suntem de fapt pasă de asta e parte a cuvântului. Vă crește lungimea ta. Și apoi când vom ajunge de fapt la la sfârșitul cuvântului, acesta va rezilia și-l vom returna lungime noastră pentru noi. Mmhmm? STUDENT: Are spațiul conta ca terminatorul nul? ALLISON: Deci, un spațiu este nu un terminator nul. Deci, dacă multiple-- avea un spatiu este de fapt o anumită valoare ASCII. STUDENT: Care este exclamație egal din nou? ALLISON: Deci, aceasta este ceea ce se referă la. Dacă mă auzi vreodată în ore de birou, Intotdeauna mi-am numi, cum ar fi, bang egal. Deci, bang, nu este. Deci, acest lucru nu este egal. Deci, dacă sunteți încercarea de a a se vedea dacă ceva e fals, stii mereu faci, bang orice variabila este, și dacă e fals, se evaluează la adevărat și te pot face chestii misto cu asta. Mai multe despre asta mai târziu. Rece. Totul bine acolo? Minunat. Deci, acum e timpul băieții tăi "a de lucru, din moment ce am vorbit. Așa că vreau să vă creați doar un array cu numerele întregi unu, doi și trei, iar apoi le-au imprimat. Tu nu trebuie să faci, cum ar fi, principal, bla, bla, bla, indiferent de. Vreau doar pentru a inițializa matrice și apoi a crea o buclă pentru a le imprima out-- sau o buclă în timp ce, până la tine. O să vă dau doar un cuplu minute pentru a lucra la asta. Am de gând să se odihnească vocea mea. Dacă aveți întrebări, eu sunt fericit pentru a veni în jurul valorii de și să vorbesc cu voi. Simțiți-vă liber pentru a vorbi unul cu celălalt. A obține mai multe bomboane. De fapt, voi doar mers pe jos în jurul valorii de cu bomboane. Cum e asta? Vrei orice? Oricine altcineva în această cameră anunt de bomboane? Puteți lua, de asemenea, mai mult de unul, băieți. Ia-o mână, dacă doriți. Mai, de asemenea. Toți ceilalți bun? OK. De asemenea, am de gând să creeze un anonim Google formular, și voi pot depune doar feedback-ul după fiecare secțiune dacă e ceva pe care doriți să îmbunătățească sau ceva ce vrei făcut. Dacă eu sunt un pic prea plin de viață pentru tine, pot să-l ton jos. Voi crea că și trimit la voi toți după aceea. Bine. Deci, sa incepem mic. Cum ne-am inițializa oferta noastră? Care este tipul de oferta noastră? O int, nu? OK, deci ce vrei pentru a apela matrice dumneavoastră? Int matrice, rece. În regulă, deci ne-am int int matrice este egal, iar ceea ce avem după aceea? STUDENT: [neauzit] paranteze. ALLISON: Bretele. Și apoi în interiorul acolade? O virgulă doi virgulă trei. Rece. Așa că e în regulă. Deci, acum avem noastre de buclă. Deci, în prima parte a noastre pentru bucla, ce avem? STUDENT: i este egal cu 0? ALLISON: Deci, int i este egal cu 0, și atunci ce este starea noastră? Ce se i va fi mai mică? Mai puțin de trei, și cum ne putem actualiza i? i, plus, plus, aceasta actualizare de unul. Și apoi vom avea unele printf cu un număr întreg, și ceea ce este că ultimul parte care este de fapt de gând să spun ceea ce ar trebui să fie de imprimare? Ar fi numele matrice, care este int matrice, nu? Și ce e în paranteze de int matrice? i. [? Așa că am] sunat? Meu exemplu, dar acolo te duci. Nu este așa de rău. Toată lumea bine? Rece. Deci, am terminat cu matrice. Felicitări. Ați reușit să itera prin toate the-- da? STUDENT: [inaudibil] ALLISON: Da. STUDENT: Am o întrebare. -Ar trebui să indenta acolade? ALLISON: Deci, bretelele ar trebui să se alinieze cu de bucla, și apoi totul în interiorul acolade ar trebui să fie indentate. STUDENT: OK, în cazul în care pentru buclă fi indentat? ALLISON: pentru bucla nu trebuie să fie aliniat, la acest moment. Dacă ați fost în principal, dacă ne-am a avut de fapt o funcție principală aici, ar fi indentate de la principal. Dar, în acest caz, e bine. Da, întrebare. STUDENT: Nu ai nevoie de paranteze după exemplul? ALLISON: Da, dacă ești inițializare în felul acesta. Deci, amintiți-vă, aceasta este a doua mod de inițializare o matrice în care avem acolade și apoi efectiv nostru Date separate prin virgula interior. STUDENT: Am crezut că s-au console pentru că de exemplu. ALLISON: Nu, sunt bretele. Sunt bretele. Dacă sunteți o inițializare această a doua cale, e bretele. Dacă ar fi să spunem, int example-- în cazul în care am vrut doar o situare cu gol pentru int, ar fi de exemplu int bridele trei. Paranteze reprezintă dimensiunea. Cand ai bretele, e datele efective te inscrie in el în acest fel. Ne putem derula foarte repede. Deci, în acest una, aceasta este doar nostru matrice inițială, initializare. Și aici, suntem în mod individual atribuindu pete acestora, astfel aceasta reprezintă indicele de nostru matrice, motiv pentru care avem paranteze. Dar aici, dacă observați, ne-am lăsat paranteze noastre fara o mărime, și l-am inițializa cu datele reale all-in-one cu bretele. STUDENT: Deci, de ce nu avem paranteze în acest exemplu? ALLISON: Deci, in care parte? STUDENT: n-am să zicem, exemplu int paranteze este egal cu bretele [inaudibil] paranteze, de exemplu. ALLISON: Oh, îmi pare rău. Ai dreptate. Noi avem paranteze. Îmi pare rău băieți, greșeala mea. Da, ar trebui să aveți paranteze după exemplu. Ai perfectă dreptate. STUDENT: [inaudibil] nu o fac. ALLISON: Nu, trebuie să aveți paranteze, pentru că altfel e nu de gând să declare un tablou. STUDENT: [inaudibil]. Îmi pare rău pentru asta. ALLISON: Ne pare rău, aveți nevoie de paranteze după exemplu. Greșeală de tipar. Bun de captură, stele de aur pentru tine. De asemenea, dacă se pune o întrebare, în cazul în care voi ar spune-mi numele voastre, Mi-ar plăcea asta. Mi-ar plăcea să fie în măsură să știu toate numele voastre. Eu nu am de gând să rece te sun, am de fapt nu vrei să afli numele voastre. Asa ca te rog spune-mi de fapt numele voastre. LEAH: Leah. ALLISON: Leah. OK, deci functions-- stiu pe scurt au vorbit despre acest lucru în timpul curs. Deci, funcțiile sunt un fel de doar ca aceste mici lucruri musca-size în cazul în care trece de la intrări, ceva magic se întâmplă, și veți obține rezultate. Rece. Deci ai folosit de fapt un mulțime deja de acestea. Ia-int, string primi, de imprimare f. Acestea sunt toate funcțiile în cazul în care doar le numim, există o mulțime de lucruri magice întâmplă în fundal că nu veți vedea în mod necesar, și veți obține ceea ce vrei. Sau cel puțin te ceea ce speri vrei. Și practic punctul de funcții, și una dintre principalele teme ale CS, este de a sparge codul în bucăți de gestionat. Când începe să scrie aceste programe într-adevăr lungi, sau în Scratch, atunci când a avut această idee mare pentru un joc, aveți nevoie pentru a putea să-l rupe până la, cum ar fi, OK, cum să încep? Care sunt bucăți mici de care am nevoie? Oh, am nevoie să întreb utilizator pentru ceva. Acum am nevoie pentru a imprima ceva. Oh, am nevoie pentru a calcula această valoare. Și de a învăța cum să te desparți ta cod și problemele mari te au în aceste bucăți mici și crearea de funcții este de fapt una dintre cele mai pietrele de temelie mari de CS. Deci, vă puteți gândi la o funcție la fel de ca o cutie neagră, o cutie neagră magic, că ai pus lucrurile în și veți obține niște ieșire. Și restul programului nu are nevoie să știe în mod necesar ce se întâmplă în acea cutie neagră. Tot ce îi pasă despre ceea ce este intră și ce iese. Rece. Deci, de ce funcții? Organization-- cum am spus, când ești care se ocupă cu baze de cod foarte mari, cum să vă organizați codul va fi mult mai ușor dacă utilizați funcții. Pentru că vei putea să fie, cum ar fi, OK, acest este ceea ce face această funcție și aici e ceea ce face altul. Și puteți vedea cu ușurință modul în care acestea toate se potrivesc impreuna. Deci, de rupere în sus, în toate aceste capitolele de gestionat. Deci, simplification-- Sunt sigur că voi toate văzut acest lucru, așa cum am spus, cu Scratch. Ai această idee mare, și esti ca, cum se toată această muncă? Dar dacă îl apropie bucată cu bucată, vă spun, OK, cum pot face un sprite plutesc pe ecran? Asta e un pic mai ușor. Utilizarea atât de bine de mărci de funcții codul mult mai ușor de citit. Se face mai ușor pentru a depana care ca intri în seturi de probleme ulterioare, ai de gând să într-adevăr doresc să fie capabil să facă. Și ei sunt, de asemenea, mai ușor pentru a proiecta și pune în aplicare. Puteți codifica un mic funcționează relativ repede și asigurați-vă că funcționează, față de încercarea pentru a crea acest program întreg lung și apoi un fel de du-te prin și a vedea ce este de lucru și ceea ce nu este. Și apoi de reutilizare. Deci, funcțiile nevoie doar care urmează să fie scrisă o singură dată, și apoi le puteți utiliza de câte ori este posibil. Deci e, cum ar fi, eco-friendly într-un sens. Dacă ați avut lucruri cum ar fi imprimare f, în cazul în care a trebuit să scrie magia trece pe spatele imprima f de fiecare dată ai vrut să imprimați ceva, ar fi destul de bolnav și obosit de ea până la sfârșitul anului. Unul dintre lucrurile pe care le veți învăța în clase mai târziu CS, sau unul dintre cele mai bune sfaturi pe care le primesc este, dacă sunteți copiere și lipire cod, ar trebui să fie, probabil, o funcție. Dacă aveți exact aceleași linii pe tot cuprinsul codul, dacă le luate afară, codul ar fi, probabil, fie, cum ar fi, de cinci ori mai scurte și să fie mult mai ușor de citit. Și în loc de a încerca pentru a depana toate aceste locuri diferite în care lucrurile s-ar putea merge prost, ai o singură funcție că veți obține pentru a depana. Și promit, o mulțime de acest s-ar putea părea un fel de abstract acum, dar cum intri în mai târziu și probleme mai târziu seturi, se va face mult mai mult sens și într-adevăr să fie condus acasă. Sunt acolo orice întrebări despre funcțiile de până acum? De ce le folosim? Știu că nu am ajuns în curajos nitty încă. Deci, definind un function-- la fel ca tablouri, avem nevoie de un fel de-- acest este doar de ieșire generală. Deci, aceasta este o funcție care este doar de gând să cub unele de intrare. Și pe pagina următoare, de fapt, ne-am toate aceste lucruri minunate mici aici. Astfel, se poate citi toată lumea că, din curiozitate? Știu purpuriu și negru ar putea fi un pic cam greu. Dar lucruri mari pentru know-- astfel primul unul chiar aici este de tip nostru întoarcere. Deci, aceasta este vorba despre producția din această funcție, atunci când, în acest caz, am pus într-un număr, ceea ce suntem asistent este faptul că numărul tocata. Deci, ar trebui să fie un int în acest caz. Poate ar fi o dublă sau altceva mai târziu, dar în acest caz, este un int. Cu c, intotdeauna ai nevoie de un tip de întoarcere. Va fi un int. Va fi un float. Va fi o dublă. Dar trebuie să specificați ceea ce această funcție este de gând să se întoarcă. În caz contrar, va țipa la tu, și nu va compila. Vei fi trist, iar eu voi fi trist. Și e doar nu e bine. OK. Și apoi ne-am numele nostru funcție. Și, după cum puteți vedea aici, cu c există această paradigmă foarte consistent. Care este tipul de, ceea ce este numele, și apoi un alt lucru la sfârșitul anului. Deci avem de tip nostru întoarcere, numele nostru funcție, și apoi avem în afara noastră cu Lista noastră de parametri. Deci, lista de parametri este, ceea ce este această funcție va lua în? O listă parametru este pur și simplu un sinonim pentru, care sunt intrări noastre? Și în același mod în care ne-am trebuie să definească funcția noastră și dau un randament tip, fiecare dintre intrari noastre trebuie să aibă un tip asociat cu ea. Deci, noi știm ce funcție noastră poate lucra de fapt cu. Deci, în acest caz, avem unele de intrare int. Deci, din nou, va fi de tipul și ceea ce se cheamă. Și apoi, după cum vedeți de aici, avem corpul nostru. Deci, avem o ieșire int, că este doar în sine ori noastre de intrare în sine ori, pe care doar cuburi. Și apoi ne întoarcem că producția. Deci, după cum vedeți aici, avem o int ori un ori int-un int, așa că returnează un int, care a fost declarată acolo. Deci, totul este coeziv. Totul e fericit. Funcția dvs. va rula. Și acesta este doar un lucru general. Deci, au întotdeauna tipul de întoarcere, nume, și lista de parametri. Fiecare lucru în ta listă de parametri, sau de intrare, trebuie să aibă un tip asociat cu ea. Si atunci trebuie tău corp aici cu orice vrei sa faci cu dvs. de intrare. Și apoi, evident, doresc să se întoarcă ceva. Uneori funcții vor reveni doar. Ei nu se întorc de fapt ceva pentru tine de a utiliza. Dar trebuie să se întoarcă într-un fel. Și când faci propriile funcții, putem intra în faptul că un pic mai profund. Personal, dacă doriți, există o mulțime de lucruri diferite pe care le-ar putea face acolo. Toată lumea bine? Nimic pe această listă pe care tu mă vrei pentru a trece peste, că nu ați înțeles? Toată lumea e bine acolo? Rece. Minunat. OK, deci vom inscrie Toate acestea împreună acum. Deci, avem unele de intrare cub int, așa acesta este un program complet aici. Până acum, n-am de natură fost oferindu-vă fragmente baieti care s-ar putea merge în cadrul unui program. Noi doar am uitat la funcții. Dar aici e un program întreg. Deci, câți dintre vă amintiți prototip cuvânt de la curs? Rece. Avem unul. Care e numele tău? STEPH: Steph. ALLISON: Steph? OK, minunat. Așa că, îți amintești ce un prototip este? STUDENT: Tu spui [inaudibil] înainte de a face de fapt cu ea. ALLISON: Îți amintești de ce? STUDENT: Nu. ALLISON: OK. Stea de aur. Deci da, un prototip avem în prealabil, pentru că în caz contrar, compilator nostru este de gând să țipe la noi. Se va spune, OK, ceea ce este această funcție cub? Cum ar fi, ai literalmente mi-a spus nimic despre asta. E ca atunci când intri într-o sală de clasă, și cineva e ca, nu e un test azi. Și tu ești ca, tine Niciodată nu mi-a spus despre asta. Eu nu sunt fericit cu noi. Prototipul este, în principiu ca Programa ta a zis: uite. Capul sus. Acolo va fi un test în această zi. Nu te speria când ajungi la ea. Vei fi bine. Deci, toate prototipul nu este spune principal, am de gând pentru a utiliza această funcție. Promit că am o definire mai târziu. Nu te speria la mine. Doar compila și de a face ceea ce îți spun să. Deci avem prototipul acolo doar pentru a face compilator nostru fericit. Și este practic o promisiune pe care ați definit această funcție mai târziu și că nu sunt doar de asteptare acest lucru aleator că nu știe ce esti gând să faci. Deci, în acest caz, avem de principal aici. Am inițializa unele număr întreg de x. Asta-i două. Mergem să imprime ce x este. Mergem la cub de x. După cum vedeți, avem noastre Declarația funcție aici că noi a vorbit despre anterior. Va cub x, si apoi, daca ne amintiți-vă, funcția de cub de fapt returnează un număr întreg de la ne, care este stocat în X din nou, astfel încât să putem imprima în opt, sau cub x chiar acum. Asta face sens pentru toată lumea? Suntem bine? Bine. Minunat. Bine. Câți dintre voi Amintiți-vă acest astfel încât acest este de fapt doar dumneavoastră stack și heap-ul, doar o vizualizare a cum este stocat aici memorie. Deci, vrem doar să facă vă că ați înțeles modul în care acestea sunt reprezentate în memorie. Dacă luați cursuri, cum ar fi CS61 și chestii mai târziu, te pentru a afla acest lucru mult mai în profunzime, și e foarte misto. Am foarte recomanda-o. Dar de acum, voi da ai o vedere de ansamblu larg astfel încât să nu trebuie să Știi curajos nitty. Deci, partea de sus doar un segment de text care conține zerouri reale și cele, binar pentru asta. Și acest lucru este utilizat pentru stocarea variabile globale dacă aveți orice. După cum vă deplasați în jos, ne-am au, după cum vedeți aici, date initializate, neinitializata date, și apoi grămadă. Deci, noi nu vorbim cu adevărat despre grămada chiar acum. Vom ajunge la asta mai târziu. Pentru moment, eu sunt doar de gând să val mâinile mele și să fie ca, nu aveți nevoie să știți despre asta acum. Dar vom vorbi un pic bit despre stiva. Deci, topul este where-- avem zoom in. Aceasta este de fapt modul în care programul ne-am uitat la loc în memorie. Deci, ceea ce se întâmplă este, fiecare timp ce numim o funcție, avem ceea ce se numește o stivă cadru, care este unul dintre acestea. Parametrii așa principalele lui. Deci, cei care sunt lucrurile care trecem în principal. Așa că au dreptate aici, la partea de jos, pentru că asta e primul lucru pe care îl numim. Și apoi ajungem la lui principale localnici, iar atunci când spunem că, ne referim variabilele locale care sunt stocate în principal. Deci, localnicii de aici ar fi, cum ar fi, x este egal cu doi, în acest caz. Pentru că este localizată la principal. Are toată lumea aminte domeniul de aplicare, trecând peste faptul că, în curs? OK. Deci, doar variabilele care sunt inițializate în principal. Deci, de aceea ne-am principal [? voce. ?] Și apoi în principal, numim cub. Dreapta? Deci, avem un alt cadru cu parametrii cub lui. Deci, în acest caz, cub lui Parametrii sunt acum x care am trecut în, cei doi care am trecut în. Și apoi localnici pentru cuburi, care este în cazul în care cubaj real se întâmplă. Și apoi se întoarce. Deci, ceea ce se intampla este ca cub de fapt nu ceea ce ar trebui să facă, ea se întoarce. Când se întoarce, acest cadru frunze, și sa întors în jos la principal. Și apoi în principal, ne-am se poate imprima de fapt. Deci, atunci când sunteți întorc ceva, atunci când funcția întoarce, e ca si cum trece pe aceste valori pentru cadrul de mai jos ea și apoi pleacă. Și lucrurile trebuie să execute în ordine. Și când ajungi la programe mai mari, putem face mai rece și mai complicat diagrame. Dar pentru moment, acest lucru este doar o imagine de ansamblu astfel încât să aibă un fel de înțelegere a ceea ce se întâmplă atunci când suni o funcție si se pare ca de fapt arată în memorie. Rece? Toată lumea bine? Minunat. Deci, aceasta este una care este Încerc doar să schimb lucrurile. După cum vedem aici, ne-am Funcția prototip nostru astfel încât compilatorul nostru nu strige la noi. Avem niște principal, și noi doriți să comutați x și y. Ei nu au făcut acest demo în curs încă, au ei? Ei nu au? OK. Deci, vom merge peste acest foarte scurt. Veți primi în acest exemplu mai mult în profunzime, cred că, în această săptămână. Și apoi săptămâna viitoare putem într-adevăr se arunca cu capul în ce acest lucru nu funcționează. Deci avem acest gol de swap funcție here--. Deci, gol înseamnă doar că nimic nu este returnat. Și avem de swap int-o și int b. Și avem ceva temporar variabilă care este un. o devine repartizat la b, și apoi b devine atribuit temp astfel încât A și B de Valorile sunt acum pornit. Dar, complot poftă de mâncare, aceasta nu funcționează. Și o parte din ea are de fapt de a face cu faptul că o și b aici, cei care se treceau în aici, sunt de fapt copii ale x și y. Deci, în cazul în care funcția de fapt întoarce, se schimba copiile, dar nu x real și y anilor. Deci, un mod de a gândi despre acesta este that-- pretinde acestea sunt de swap. OK? Deci, în principal, avem x și y inițializat. Dar când vom merge de fapt, pentru aceste cadre cu swap, ne trece valorile peste să-l, și ei inițializat. Și ei trăiesc doar vreodată aici. Deci, a și b locuiesc aici. Și ei a lua schimbat. Dar când ne vom întoarce, noi nu facem face orice cu a și b. o și concediul b cu funcția noastră. Și așa x și y rămâne la fel. Veți obține mai mult asupra modului în care să se stabilească faptul că și cum avem de a face de fapt cu asta mai târziu. Dar e doar un singur lucru pentru a păstra un fel de minte. Folositi-l pentru viitor. Nu vă faceți griji dacă nu a făcut toate sensul din lume. Ei sunt copii este cel mai important lucru. Dacă ai de gând să ia nimic departe de asta, ai trecut la copii. Deci, originalele rămâne la fel. Toată lumea bine? Rece. Deci argumente în linia de comandă. Sunt sigur că la început voi toți au avut aceste, cum ar fi, golurile mari principale int. Și tu ești ca, OK rece. Nu-mi pasă cu adevărat. Aceasta este doar ceea ce am să scrie. Dar, în noile programe, mai ales în această PSET, și de ce este acolo creta pe teren? Cu următoarea PSET, ești O să mai vedem acest lucru. Int main, int arg C, string arc v, între paranteze. Așa că, de la ceea ce tocmai am aflat astăzi, ceea ce credem că al doilea parametru sau că al doilea element este aici? E un tablou. Ce tip de matrice? String matrice, da. Rece. Deci, asta e cum ai de gând care urmează să fie declararea acestea acum. Are cineva aminte ceea ce sta astea? Nu? Hmm? STUDENT: arg c. ALLISON: Deci arg c păstrează un contor. Este un int. Este un număr, nu? Deci, ce crezi că numărul este de? Da. Deci arg c este numărul de șiruri care alcătuiesc linia de comandă. Deci, dacă ar fi să do-- de fapt, există exemple după aceasta, deci nu voi merge mai departe de mine. Este un număr de siruri de caractere care doar se completează până linia de comandă. Deci, când faci, cum ar fi, dot slash Mario, asta e un șir de caractere care se face în sus. În această piesă, veți fi de fapt hrănire lucrurile în linia de comandă, Sunt sigur că voi, cei care au citit ferăstrăul spec. Deci, în aceste cazuri, poate veți au două sau trei argumente. O să fie un lucru util pentru a utiliza. Și apoi arg v, așa cum am spus, este doar o matrice șir. Deci, care stochează de fapt ceea ce tu de intrare în linia de comandă. Deci avem astea. Ai niște punct slash copiați outfile infile. Așa că, dacă arg c este numărul de siruri de caractere că suntem trece în comanda line, ceea ce este Arg c noastră în acest caz? Trei. Exact. Deci, ce este arg v de la zero? Deci, care e primul lucru pe care l-am depozitat? Dot slash copie, exact. Și apoi a doua ar fi infile. Cea de a treia ar fi outfile. Deci, ce despre arg v trei? Ar fi nul, pentru că asta e la sfârșitul anului oferta noastră, nu? Rece. Și atunci ce despre al șaselea? E un fel de întrebare capcană. Ish. Știm ce este? E nedefinit. Nu avem nici o idee despre ce ar putea fi. E tot ce este drept după matrice în memorie, și nu avem nici o idee despre ceea ce este. Și e periculos să atingeți cele lucruri, pentru că pentru tot ce știi, este o parte din memorie pe care le nu ar trebui să fie accesarea sau nul. Și se poate face lucruri nebunești. Se numește supra-indexare dvs. legat de matrice dumneavoastră. Nu merge în afara limitelor tale matrice, sau lucruri rele se pot întâmpla. Te întorci și, cum ar fi, legile de fizica au fost distruse sau ceva. Rece. Asta face sens pentru toată lumea? Nu prea rău. Deci, acum, toată lumea e parte favorit, revizuire PSET. Yay! OK. Deci, pentru cei dintre voi care nu au citit spec PSET, faci ceva într-adevăr chestii misto cu criptografia. Vei crea un Ceasar Cifru și un Vigenere Cipher. Ar trebui să citiți cu siguranta spec pentru a vedea cum cei muncă. Și dacă întâmpinați probleme cu privire la ceea ce ar trebui să fie de fapt face, vă rugăm să vin să vorbești cu mine, mi e-mail sau textul pe mine. Sunt în jur. Deci, există trei principale lucruri aici pe care le vreau să vorbesc about-- doar un fel de o prelungire de curs. Lucruri pe care ar putea să nu cunoașteți despre, informatii de instrumente utile. Așa că am de gând să faci o revizuire rapidă a ASCII, pentru că va fi super- important pentru Cipher Vigenere lui. Mergem la conversia de intrari de linie de comandă, care va fi foarte util pentru Cezar Cipher. Și apoi modulo. Rece. Așa că, ASCII harti de caractere pentru numere. Aceasta este o mare grafic. Tu ar trebui să aibă această marcată undeva. Tu va dori pentru primul termen mediu. Sunt destul de sigur că toată lumea are această graficul pe foaie lor pe termen mediu. Deci, să învețe. Place. Păstrați-l la îndemână. Va fi util. Și tot ce este este o codificare că harti alfabetic, numeric, și alte caractere Numerele pentru calculatorul nostru. Pentru că, desigur, în sfârșit, tot ceea ce a stoca este mergi la a lua convertite până la zerouri și cele, asa ca am nevoie de un fel de a reprezenta text și caractere care suntem toți folosite pentru a vedea ca un fel de număr. Deci, după cum vedem aici, ne-am majuscule A, care este chiar acolo. E 65. Și litere mici A este de 97. Astfel încât vă puteți da seama out-- așa cum am spus mai devreme, dacă ați avut matrice de multiple siruri de caractere, ceea ce fiecare dintre ele au un terminator nul. Ar fi un spațiu. Space are propria sa special-- Am uitat unde este aici. Ah. 32 este spațiul. Deci, tot ceea ce harti pentru el. Deci avem ASCII matematica. Pro tip-- în lui Vigenere, ați putea fi tentați pentru a converti numerele la numere întregi, dar este de fapt mai bine practica a putea folosi de caractere ca aceasta atunci când sunteți de fapt manipularea lor. Deci, dacă doriți să utilizați numere, puteți. Dar o cale mai bună, sau un mod care avem tendința de a vă plac tipii a face acest lucru, este acest mod în cazul în care ești de fapt, scăderea de caractere. Așa că vrei voi să un fel de dau astea. De ce nu încerci o dată la una? Deci, nu prima, al treilea, iar al cincilea. Pentru că vreau să vă asigurați că vorbim despre tot ceea ce trebuie să vorbim despre. Mă duc să spun, una dintre cele mai lucruri importante sa-- oh, așteptați, voi nu s-au văzut asta. OK deci face primele trei. Hai să facem asta. Pentru că trebuie să vorbim despre modulo. Știu. Math este greu. Puteți utiliza un calculator. E în regulă. Sau trage un tabel ASCII, pentru că esti, probabil, o să vrea asta. Rece. Așa că va merge repede voi prin intermediul acestora. Deci, oamenii au tabele ASCII tras în sus? Ce este numeric nostru Numărul de litere mici A? STUDENT: Seven. ALLISON: Deci, litere mici A este 97 și majuscule A este de 65. Deci, 97 minus 65? Audiența: 32? ALLISON: 62, da. Deci, în acest caz, ceea ce ar imprima? Asta în primul rând o? Dacă avem la sută d, ceea ce ar indica faptul că? STUDENT: Un număr. ALLISON: Suntem imprimare pe un număr actuale. Așa că de fapt merge pentru a imprima 32 aici. Și dacă acest lucru a fost la sută c, 32 ne-ar da un spațiu. Astfel înțelegând că de caractere pot fi imprimate atât ca număr și ca personajele reale este foarte important, și de plată atenție la tipurile reale că facem aici. Rece. Deci, pentru fiecare alt unul dintre acestea, ceea ce vom fi imprimarea? STUDENT: Un personaj. ALLISON: Un personaj. Rece. Deci, dacă vreți să știți, voi pot lucra pe acestea pe cont propriu. Dacă aveți probleme, mi e-mail. Dar cea de a doua va imprima o literă mică b. Cea de a treia se va imprima o majuscule B. patrulea va imprima efectueze o majuscule C, și ultima va fi o literă mică A. Și ultimul Unu vom intampla de fapt pentru a intra în ceea ce acel nebun la sută semn înseamnă chiar și în câteva slide-uri. Deci, încercați cele pe cont propriu. Dacă aveți probleme, vă rugăm să vin să vorbești cu mine. Dacă sunteți în mod tipic în Adams sala D, probabil veți găsi pe mine pe aici. Așa că, atoi. Câți dintre voi ați văzut aceasta Funcția sau auzit de ea, la toate? Oricine? Rece. Deci, ceea ce reprezintă de fapt este ASCII la număr întreg. Deci, ce puteți face este, cu Cezar, pentru cei care au citit spec, ai de gând să faci dot slash Cezar după ce ați scrie programul, si apoi ai de gând să intrare un numar pe care le vrei sa codifica mesajul tău secret cu. Dar, dacă ne aducem aminte, toate de noastre intrări sunt stocate ca siruri de caractere. Dreapta? Avem o arg v tablou care este tot de tip string. Deci, dacă încercați doar pentru a trage să rețină, ar cred că unul sau orice număr ați utilizat este de fapt un personaj. Deci, ai de gând pentru a obține unele rezultate nebun. Deci, dacă doriți de fapt să transforma acest într-un număr întreg pe care le puteți folosi pentru a manipula cuvântul tău sau mesajul dvs., veți dori să folosiți atoi. atoi convertește doar string la un int. Deci, dacă avem un șir de 12, în cazul în care o numim atoi pe 12, sau orice altceva care de intrare este, aceasta va reveni de fapt pentru a te întreg. Nu este caracterul sau șirul de 12. Care, atunci când începeți să adaug că la numere, va fi foarte diferit, pentru că șirul 12 este un numar nebun în ASCII, dar numărul întreg 12 este de fapt 12, care este ceea ce vrei. Deci, doriți să vă asigurați că pentru a utiliza atoi. Ai de gând să doresc acest lucru în Cezar, pentru că Trebuie int furnizate de utilizator în linia de comandă. Dar când l-au pus în comanda line, este stocat ca un șir de caractere pentru a începe cu. Asta face sens? Tu nu neapărat au nevoie de acest lucru pentru Vigenere. Cu Vigenere, așa cum am spus înainte, ar trebui să încercați și de a folosi Matematica ASCII care arata mai mult ca aceasta, în cazul în care ești de fapt folosind caractere pe care suntem dat de tine. Rece. Toată lumea bine acolo? Minunat. Deci, modulo. Și ce dacă ți se dă acest număr imens de Cezar? Ai această idee că daca esti la Z și ești având în vedere un număr de două, asta înseamnă că need-- Z devine al doilea scrisoare de la sine, nu? Deci, ai nevoie să-și încheie într-un fel în jurul valorii de, și modulo este modul de a face acest lucru. Deci, tot ce face este vă oferă restul al diviziei de prim număr de două. Și avem câteva exemple de face că un pic mai concret. Dar în principiu, să utilizați modulo atunci când doresc să facă ceva inconjoara. Deci, dacă doriți doar Numerele unul prin opt, puteți utiliza modulo pe orice alt număr, și ea va fi întotdeauna întoarce un număr de la zero până la opt. Deci, unele examples-- dacă Avem 55 modulo 10, doar îți dă restul de 55 împărțit la 10, ceea ce ar fi de 5. Și apoi trei modulo cinci, cineva ghici ce, care ar fi? Trei. Deci, dacă aveți un număr mai mic înainte modulo, nu poate merge în mod egal. E zero. Așa că doar returnează numărul în sine. Deci, opt modulo opt-ar fi? STUDENT: Zero. ALLISON: Zero. Pentru că merge în mod egal. 16 modulo 15? Audiența: One. ALLISON: cool. Și apoi aceasta ultima dintre ele este doar de a arată Tu---ar putea fi mirat, OK, Care este ordinea operațiilor de aici? Ne împărțim în primul rând? Avem modulo întâi? Deci, modulo are aceeasi precedenta ca divizie sau multiplicare, și asociativ stâng. Deci, este în același mod. Te-ar face mereu paranteze, apoi multiplicare, diviziune, și modulo în ordine de la stânga la dreapta. Normele așa standard. Doar pune-l în aceeași categorie ca diviziune și multiplicare. Deci, în acest caz, ne-ar Trebuie 1 plus 2 ne dă 3. Am multiplica că de 2, așa că am obține 6. Am modulo că prin 2, care ne dă? STUDENT: 0. ALLISON: 0. Și apoi adăugăm 2, asa ca am primi 2 în acest ultim caz. Deci, modulo-- ai cu siguranta va se gândesc la modalități de a încorpora că atunci când sunteți ambalaj în jurul alfabetul. Daca esti la Z și aveți nevoie pentru a muta transmite trei spații pentru a ajunge la C, e că întregul concept de ambalaj în jurul valorii. Așa că voi pleca la voi să dau seama exact cum ai de gând să fie utilizând o. Dar cu siguranta un instrument util pentru PSET ta în această săptămână. Îmi place foarte mult acest lucru. Aceasta este una dintre psets mele favorite. Apoi, după o faci, dacă aveți prieteni, poti, cum ar fi, trimite fiecare alt secret mesaje și asigurați-vă că funcționează. Pentru că voi sau orice decripta. O mulțime de distracție. Și că este sfârșitul de secțiune. Am terminat mai devreme. Mai am 15 minute cu voi, deci dacă e ceva care le-ar dori să meargă peste în plus, aș fi fericit să fac asta. Orice alte întrebări cu privire la PSET pentru cei dintre voi care au început sau citit spec. Nimic din ce am vorbit despre în ultima oră și la 15 minute pe care le-ar place de mine la fel de reeditare, aș fi fericit să. Sau putem numi închide, și puteți toate plece și să ia mai mult bomboane cu tine ca te duci. Dar dacă există vreun persistent întrebări, vă rugăm să-mi spuneți. Puteți veni, de asemenea, și vorbești cu mine după aceea. Promit că nu musca. Altceva? Toată lumea e bine? Sentimentul tuturor ca acestea să poată gestiona acest PSET? Vei fi băieți fine. Programul de lucru este acolo pentru un motiv. Rece. Bine. Ei bine, în acest caz, mulțumesc voi toți așa de mult că ai venit. Sper să te văd săptămâna viitoare. Nu va fi mai mult bomboane. Ar putea fi alte lucruri interesante. Și aștept cu nerăbdare să obtinerea să cunoască toți în acest an.