[MUZIKO Ludante] Allison BUCHHOLTZ-AU: Hey ĉiuj. Bonvenon al via unua oficiala CS50 sekcio. Kiel vi povas, vidu ĉi estas sekcio CS50-kiel, ĝuste tiri supren nian agendon por hodiaŭ. Do, kiu estas mi, kiel mi certas Vi ĉiuj demandis. Mi estas via TF. Mi ne estas nur hazarda studento Kiu estas personigante via TF. Kaj mi tuj iros per ia havas sekciojn fluos, atendoj ni havas, rimedoj, ktp, ks. Ni iras paroli pri arrays, ASCII funkcioj, komandlinion argumentoj, kaj ne estas ĉi tie, sed Mi ankaŭ povas helpi Vi ia pensas per via venonta pset por ĉi tiu semajno. Kiu mi estas certa, ke vi cxiuj dankas. Do, unue question-- kiu estas mi, krom viaj abunda TF tie. Mi Alison Buchholtz Odense. Tiu estas mia dua jaro TFing CS50. Mi ankaŭ TF CS51 en la printempo. Vi povus vidi pli tie Se vi decidas preni ĝin. Mi ankaŭ PAF, do ajna Freshmen-- kaj se vi ne estas freshman, tiu estas mia tria jaro kiel konsilante ulo. Mi tre bone sperta en konsili vin pri vivo kaj kursoj ene CS kaj ne ene CS. Mi estas komputika Concentrador. Mi estas altranga en Adams House, bona domo. Kaj antaŭ ol mi ŝanĝis al CS mia sophomore Printempo, Mi estis fakte biomédicas inĝeniero. Mi tuj iros al Med lernejo. Mi tuj estos traŭmato kirurgo. Kaj kiu havas tute ŝanĝiĝis ekde mi prenis CS50. Mi prenis la direkton de mia sophomore Falo. Ĝi estis mia unua enkonduko al CS eterne. Mi estis unu el la 78% el vi estis nulo sperto enirantan kaj tute ŝanĝis mian vivon. Nun mi laboras en Microsoft kaj vian belan TF. Kaj CS50 estas probable unu de la plej bonaj spertoj ke mi havis tie en Harvard-- ambaŭ prenas la klaso kaj povante helpi instruos studentojn kiel vi. Do mi estas vere ekscitita ke vi ĉiuj estas ĉi tie. En kazo vi envenis Fine, estas dolĉa, kion vi devas senti libera veni grab, aŭ sendu iu alia ekpreni ĝin por vi. ĝi estas en ordo. Mi ne volas manĝi tion. Mia ĉambro estas sufiĉe ĉokolado, do Kaj'All devus provi fini tion. Estu kiu estas 100 pecoj, sed kiel, 4 horoj en lundo, Mi kredas ke ĉiuj povus uzi iun sukero. Do vi ĉiuj kiu estas oficiale en mia sekcio devus esti alveninta email de mi kun miaj telefonnumero, retpoŝto address-- bonvolu aldoni min Gchat, bonvolu aldoni min en Facebook: kaj ankaŭ por la resto de vi, Vi povas retmesaĝi min ĉi tie. Ekzistas du H aj jaroj. Ĉiuj ĉiam faras kiel du L's aŭ du C aj jaroj. Du H La en la familinomo. Alie gxi tuj eksalti, kaj Mi ne tuj ricevos vian retpoŝton. Do bonvolu retmesaĝi al mi, kontakti min ĉe ajna tempo. Mi ne povas reiri al vi ene 24 minutoj, sed mi promesas reiri al vi ene 24 horoj. Se vi nomas min duonhoron antaŭ vian pset estas pro vi esti kiel: Mi havas neniun ideon kion mi faras Allison. Helpu min. Mi tuj trankviligas vin malsupren, sed ĉe la fino de la tago, Se vi nomante min duonhoron antaŭ vian pset estas devita kun nenio skribita, Mi tuj estos kiel, nu, eble estas tempo por uzi tiun malfrua tago. Do mi respondos al ĉiuj viaj petoj en tre oportuna maniero. Mia telefono estas kutime alfiksis al miaj manoj. Mi kutime respondas multe rapida ol 24 horoj, sed mi povas nur garantio 24 horo respondo. Bone. Do kial ni cxi tie? Ankaŭ, se vi havas demandojn je ajna momento, bonvolu sciigi min. Mi multe parolas. Mi parolas rapida, sed bonvolu bonvolu interrompu min. Ĝi donas min spirante ĉambron tiel. Do sekcioj estas tempo por ni vere nur dive en, akiri iuj manoj-sur sperto, iri tra temoj kiujn ni menciis en klaso aŭ en studo materialoj kiuj ni konsilas al vi uloj rete. Kaj ni efektive trairu kelkaj el tiuj rimedoj en iom. Do kelkaj notoj pri sekcio subteno. CS50-- unu de aĵoj kiuj faras unu el miaj preferataj klasoj Estas la sento ke vi neniam sola. Ni havas kana super 100 homoj kiuj estas tie por helpi vin. Ni havas oficejon horoj Lundo ĵaŭdon. Do estas multaj homoj, kiuj ami la klaso tiom kiel mi kaj kiu estas vere tie ĉar ili volas esti tie. La plejmulto el ni estas lernantoj, kaj ĉi Estas kiel kvina klaso krom por la resto de niaj laboroj. Kaj estas multe da laboro, sed ni faros cxar ni amas ĝin, kaj ni vere amas instrui vin kaj helpi dividi nian ekscitiĝo por tiu subjekto kaj tiu klaso. Do bonvolu utiligi. Venu talk al ni. Mi sentas min soleca, kiam miaj studentoj Ne parolu al mi, do se vi volas, venu eliri kun mi. Ĝi estos granda. Do sekcio estas evidente unu el viaj grandaj aĵoj. Ni iru tra aferoj ke vi lernis en prelego, fari kelkajn mallongajn ekzemploj Kiam ni havas tempon, kaj ĝenerale klaso de doni ideon pri aferoj Vi devus pensi proksimume por via problemo starigis. Shorts-- kiom da homoj reale rigardis la video de via nulo mallonga? Iu rekonos min? Do tiuj estas tre granda. Vi devus definitive spekti tiujn. Multa laboro metis en ilin. Kaj ili estas nur signifita esti bite grandeco pecoj por vi simple rigardi dum tri aŭ kvar minutoj kaj akiri bona kompreno de koncepto. Iradu throughs-- kiom multaj homoj rigardis La promeno-throughs por antaŭaj? Zamyla estas mirinda, ĉu ne? Kiel, se mi estus Zamyla kelkfoje. Do certe uzos viajn promeno-throughs. Ŝi rompos lin malsupren en malgranda, piku grandeco pecoj. Kaj kiam vi havos tiujn enormajn especificaciones de via problemo aroj, ĝi tuj estos vere grava por povi ĝuste trovi ie komenci kaj labori malrapide tra ĝi. Bone, ni havas ankaŭ Study50, kiu Estas study50.harvard.edu, mi kredas. Vi povas simple Google studi, kaj gxi venos supren. Jen unu el la bonaj rimedoj ni havas. Estas PowerPoints kun notoj kaj praktiki problemojn por vi kun solvoj kiujn vi povas fakte trairu. Do se vi iam volis pli oportuna, pli ol ni faras en sekcioj aŭ pli ol via problemo aroj, tiu estas vere loko Mi instigas vin iri. Ĝi estis konstruita lasta somero por iuj de miaj vere bonajn amikojn. Kaj tio estas nekredebla. Fakte, multaj de la diapozitivoj ke mi uzos por Sekcio venos de Study50. Do multe da TFS uzi ĝin. Kaj fine, kiel mi menciis, oficejo horoj. Se vi havas problemojn kun hejmtasko, vi estas havas problemojn kun koncepto, venu al oficejo horoj. Iri frue semajno se vi povas. Eliru al la quad, ĉar ĝi estas speco de malproksime. Neniu ŝatas promeni por tie. Sed estas al via avantaĝo, ĉar tiam vi tuj havi ĉiuj tiuj TFS, [Inaudible] ĉirkaŭas vin. Kaj precipe nun, nur trinkmonon, ĵaŭdo estas tre frisko nun en Mather ĉar via psets venkas en ĵaŭdo. Kaj sciante volas uzu vian malfrua tempo ankoraŭ. Do se vi havas problemoj kun konceptoj, estas multaj TFS kiuj estas tie por helpi vin. Do eliru al Mather ĵaŭde. Se vi volas vidi min, Mi tuj estos tie. Mi kutime faras miajn proprajn devojn, ĉar neniu volas helpi min. Do venu kun ni. Renkontu nin duonvoje. Do kiom da homoj ĉeestis prelegi aŭ rigardis online? Kiom da personoj eliris al súper sekcio pasintsemajne? Malvarmeta. Tio estas vere sufiĉe multajn. Kiel multaj el vi legis vian Spec por tiu semajno, pro via pset? Ooh, mi estas fiera pri vi uloj! Pli dolĉa por Kaj'All. Bona, do kion ni celas "Ni renkonte duonvoje," estas tiu sekcio estas vere nur tuj estos súper utila por vi se vi envenos leginte vian specifo vian pset. Ĉar kiam mi iros tra superrigardon de aĵoj kiujn vi devus rigardi ekstere por, tio ne tuj faros tiel sentita se vi ne scias kion via problemo starigis tuj demandos vin fari. Se vi ne venos al la sekcio, evidente Mi ne povas esti tiom utila al vi. Mi ne iras preni persone se vi ne venis al mia sekcio nun, sed definitive vi devus. Se vi ne povas, spekti ilin rete. Ili estas tie por kialo. Miaj estos prava. Kiel vi rimarkas, ni estas registrita, do ĝi estos ĝuste tie por vi uloj. Siavice, tuj lectures-- tio evidente kie vi ricevis la komenci de via materialo tie. Do mi definitive provi helpos vin kiom mi povos, sed mi nur povas renkonti vin ĝis nun. Vi devas ia ni renkonte duonvoje tie. Grading-- tial vi ĉiuj kiuj ricevis retmesaĝon de mi, Vi estas mia oficiala sekcio. Mi estos grading vian psets. Mi nur volas diri, unu afero Vi devas vere atenti estas la komentoj. La komentoj estas ofte pli utila ol la reala partituro ni donas al vi. Kaj la komentoj estas reale kie mi pasigas multan mian tempon kiam mi grading. Do mi ŝatus se vi legas ilin. Kaj ili estas vere kiel vi tuj lerni pli pri dezajno kaj stilo kaj aĵoj kiuj estas iom malpli tranĉo kaj seka. Do vere atentu al tiuj komentoj. Se vi havas demandojn pri ili, aŭ demandojn pri viaj partituro, bonvolu veni alparolas min jam antaŭ sekcio, Mi verŝajne estos pendanta ekster en la vestiblo, aŭ poste. Se vi volas plani unu-sur-unu kunvenoj pri kiel Vi povas helpi plibonigi poste problemo aroj, simple lasu min scii. Kaj tiam nur paro de konsiletoj por vi uloj. Do unu el la plej grandaj aferoj Mi ĉiam emfazi mian sekcio kiam vi lernas kiel kodigi estas skribi tion sur papero unue. Se vi havas ludon planon kie via kodo bezonas iri kaj kion bezonas fari kaj ĝi estas rompita malsupren en iom bitoj de _pseudocode_ kodo vi elskribita, vi tuj estos malpli verŝajna fari sintaksaj eraroj aŭ krei se buklo ke ne havas alian. Se vi scias kie vi estas irante entuta, vi estas malpli verŝajna fari tiujn etajn eraroj kiuj foje konduki vin horoj fiksi, ĉar vi ŝatas, Kie mi mankas tiu krampo? En tiu noto, bonvolu uzi Style50. Speciale kiam vi estas iri al oficejo horoj, Se via kodo estas ĉio ŝanĝis super flanken, estas kompreneble politiko ke ni povas diri, ripari ĝin tiel ke ĝi aspektas kiel Style50 diras ĝi devus, kaj tiam ni helpos vin. Do ĝi faros vian vivon pli facila. Ĝi faros niaj vivoj facila. Ĉies feliĉaj. Ĉiuj ricevas bonan gradoj. Ne estas tio kio ni ĉiuj volas? Do skribu tion sur papero antaŭ vi iam tuŝi via komputilo. Diskuto el meze je alta nivelo, kaj certigi vi scias kie vi iras. Kaj se vi ne estas certa, sidigxu kun iu kaj promeni ilin tra paŝo post paŝo kion via kodo estas supozita fari. Kaj naŭ fojojn el 10, estos kiel, ho, mi forgesis la se kondiĉo aŭ mi forgesis punktokomo tie aŭ Mi ĝisdatigas tiun variablon erara. Do tiuj estas miaj konsiloj por sukceso. Do ekde proksimume duono el vi rigardu kiel vi ĉeestis súper sekcio, Mi nur tuj tre mallonge trairu masxojn, kiu ne estis en nia originala tagordo. Sed ili estas vere grava. Kaj tial mi tuj speco de rapido tra tiuj antaŭ ni eniras nian realan sekcio. Antaŭ mi faras tion, estas tie ajna questions-- logísticamente, persone, estas tie io ajn, kion vi volas scii pri mi aŭ pri sekcio aŭ klaso ĝenerale? Ĉio bone? OK, malvarmeta. Amindaj. Do loops-- vi uloj devus ĉiuj rekoni tiujn pecojn de nulo. Do maŝojn estas esence nur vojon por ni, por fari ion iom da fojoj, iuj ripetita ago bazita sur kelkaj kondiĉa. Do ni havas tri malsamajn tipojn. Ni havas por buklo, dum, kaj do-tempon. Do por loops-- ni nur havas tre ĝenerala aranĝo tie de a por buklo. Kaj tiu estas granda por kiam vi scias multfoje ion bezonas ekzekuti. Kiam ni parolas pri la aliaj masxojn, vi vidu kial tio grava distingo. Sed por maŝojn trovas iun aron. Vi ja povas aŭ kalkuli la nombron aŭ sciu la nombron da fojoj kiujn ci deziras ĉi ripetis komence. Do, se vi vidas ĉi tie, ni havas nur ĝeneralaj speco de skeleto kadro dum por buklo tie. Do por-inicialización, tiu estas kie via variabloj inicializado. Kun Mario, mi certas vi uloj faris ion kiel int i egalas 0. Jen kie kiu okazus en blua. Vi havas vian kondiĉon, kiu Estas kio kontrolis ĉiufoje. Se ĉi tiu kondiĉo estas vera, tiam la resto de la kodo ekzekutas. Tiam ĝi kuros again-- kaj demandi. Kaj tiam ni havos ĝisdatigon, kie vi ĝisdatigi vian variablon. Do, denove, kun kiel Mario, mi certas vi uloj faris ion kiel i plus plus. Do ĉiam kiam la buklo Ran, i got ĝisdatigita tiel Kiam ni estis kontrolanta ĝin kontraŭ iu kondiĉo, ĝi ŝanĝas. Ĉar se vi nur havas statikan variablon, se ĝi ekzekutas la unua fojo, ĝi estas nur tuj ekzekuti senfine. Do vi devos certigi vin ĝisdatigi vian variablon konvene. Kaj ni havas ankaŭ nur vida reprezento tie. CXiu bona? Por maŝojn. Devus vidi tiujn en vian pset. Malvarmeta. Do tie estas nur facilan ekzemplon. Printi Jen CS50! 10 fojojn. Kaj do ni havos niajn inicialización, kiel ni vidas tie, kun int i egalas 0, cxar mi estas malpli ol 10, kaj i plus plus. Kaj tion presi ke 10 fojojn. Do dum loops-- dum maŝojn estas granda kiam vi ne bezone devas scii kiom da fojoj ĝi estas tuj ĝisdatigi la komenco. Vi nur havas iom kondiĉe ke estas kontrolita. Kaj tio povus esti io kiel while-- ni prenu ekzemplon de via pset. Se Mario, oni provas input negativa nombro. Rajto? Vi supozeble re-instigas vian uzanto. Do vi povas diri, nu, se la uzanto enigas io malpli ol nulo, re-prompt ilin. Kaj mi certas ke havu estis iu kiu iuj de vi uzata en via kodo. Do ĝi estas simpla afero. Vi havas tempon, iuj kondiĉa kiu kontrolis ĉiufoje la kodo iras ekzekuti. Se ĝi taksas al vera, ni ruli ĝin. Alie ni ne faras. Kaj kio estas vere important-- iu opinias ke Davido parolis en lecture-- estas la krampoj. Sendepende de ene de la krampoj estas kio ekzekutita. Se vi forgesas tiujn krampoj, ĝi estas nur tuj esti la linio rekte post kiam estis ekzekutita. Do se vi havas tri kio estas supozitaj okazos kiam tiu kondiĉo taksas al vera, kaj vi ne havas tiujn krampoj, nur La unua afero okazos. Do tre consciente kie vi metos vian krampoj. Se vi batos kun Style50, tio estos definitive helpi vin. Malvarmeta. Do tiu estas oni rakontas regresiga de 10 ĝis nulo. Kaj kiel vi vidas tie, ni pravalorizi iuj nombrilo ekster ĝi. Unu afero, kiun estas malsama estas ni ne inicialización nia variablo en niajn dum buklo. Ĝi estas inicializado ekster ĝi. Ni simple nur metante la kondiĉi en nian tempon. Do en ĉi tiu kazo, ĝi estas samtempe grafo estas pli granda ol nulo. Kaj ni presi kion nia grafo estas, kaj tiam ni dekremento nia variablo. Kaj tio estas ankaŭ alia afero rimarki. Niaj ĝisdatigo ne okazas ene tiu unua parto de la dum buklo. Ĝi fakte okazas ene la krampoj, la korpo de via teksto. Do-dum loops-- do-dum cikloj estas grandaj por uzanto validación. Iuj do el vi havu uzata ankaŭ ĉi tion en vian pset. Vi povas diri, do, kiel, demandu la uzanton por enigo. Kaj tiam kiam, kiel, la enigo estas malpli ol iu nombro. Do por eksplicita kazo kun Mario, ĝi estus fari printf, eniru entjero, kaj tiam iu entjero egalas getint. Kaj tiam ĝi malebligos reale ekzekuti tiu kodo unue. Vi vere havas ia entjera. Kaj tiam vi povus diri, dum ke entjero estas malpli ol nulo. Do kio tuj faros estas ĝi estas tuj ekzekuti almenaŭ unufoje. Ĝi tuj kontroli la kondiĉo. Se la kondiĉo estas vera, ĝi devos kuri denove. Tiel do-dum cikloj estas granda por uzanto validación, ĉar vi scias la kodo tuj ekzekuti almenaŭ fojon, dum kiu kun dum maŝojn, vi ne garantiis ke ĝi estas tuj ekzekuti fojon. Ĝi tuj kontroli la kondiĉo unua kaj tiam decidi ekzekuti ŝin, dum do-dum volo ekzekuti kodon unua kaj tiam kontrolu ĉu necesas ripeti ĝin. Ĉu tiu distingo sencon por ĉiuj? OK. Malvarmeta. Do en ĉi tiu kazo, ĉi tiu estas speco el kio mi parolis, tiu re-stimulanta ĝis vi preni pozitiva nombro. Do ni scias ke printf "Eniri pozitiva nombro" kaj fakte petante ke input okazos almenaŭ unufoje. Se la uzanto estas malbona kaj observas enirante negativa nombro, kiuj scias kiom da fojoj ĝi devos ekzekuti. Sed tiu kodo estas garantiita ekzekuti almenaŭ unufoje. Kaj tio estas kial ĝi estas granda por validigi enigo. Kaj vi uzos ke sufiĉe. Bone, demandojn ĝis nun? Ni ĉiuj estas bonaj? Ĉu mi parolas tro rapide? Ni estas bonaj? OK. Awesome Do ni tuj iru antaŭen kaj paroli pri arrays. Malvarmeta. Do arrays estas esence nur datumstrukturoj kiuj nin permesas stoki aĵoj de la sama tipo. Do se vi iam havos tabelo, estas ĉu simple tuj havos ints aŭ ĝi estas nur tuj havos flosoj aŭ ĝi estas nur tuj havi signojn. Vi ne tuj havas int kun oni char kun kaleŝego kun duobla. Unu aferon. Arrays estas nur unu grando, aŭ ili estas nur unu tipon. Do jen ni havas aron de grandeco tri kun tri entjeroj en ĝi. Ili povus flosas, sed ni estas dironta Ili estas ints. Do unu afero realigi estas ke arrays Estas aro grandeco kiam vi pravalorizi ili, kaj ili ne easily-- ĉar vi ĉiuj estas malpli komfortaj, Vi devas nur pensi pri ili, kiel Ne povante etendi en grandeco. Tamen granda vi ekiris via tabelo en la komenco, tio estas la grandeco ĝi okazas resti, ĉar arrays estas kontinua blokoj de memoro. Kaj kiam vi uloj akiras en iom pli de kiel memoro estas efektive metis sur diskoj kaj en la havaĵo kaj la pilo, ŝi faros iom pli sentita. Sed vi povus nur pensi kiel, ĝi estas nur vico da spacoj sur via disko. Kaj vi ne povas garantii, ke ekzistas tuj estos libera spaco post tio. Vi povus pravalorizi tabelo de tri kaj tiam eble vin pravalorizi alia tabelo de kvin poste, kaj ĝi pravas post tio. Do se vi estus iri pasinteco lokon tri en tiu unua tabelo, vi skribus super io alia. Do arrays are-- por vi uloj, nur pensi pri ili kiel fiksa grandeco. Tiel kreante array-- vi iras bezoni fari tion sufiĉe. Do, en la sama maniero kiun ni havas ĝenerala strukturo por nia por bukloj, ni havos belan ĝenerala strukturo de nia tabelo. Ĉar ili estas el unu tipo, ĉiuj elementoj en tabelo estas el unu tipo, Vi devas pravalorizi kio tipo estas. Do, kiel vi vidas tie, ni havas belan krampo datumtipo. Do se ni krei int tabelo, kiu estos int. Se ni kreante char tabelo, ĝi estos Char. Se ni kreante kordo tabelo, ĝi estos ŝnuro. Kaj tiam la nomo de via tabelo, kion vi volus ĝin esti. Do eble estas testo partituroj aŭ eble estas studentoj aŭ eble estas dolĉa. Kion ajn vi decidas nomi vian tabelo, tio kio estos. Kaj tiam en krampoj, vi havi la grandecon kiun vi volas. Do, ĉu ni stokante 10 studentoj aŭ ni stokante 15 tipoj de bombono? Kio ne. Do en nia ekzemplo tie, ni kreas tabelo de grandeco tri, kiun vi uloj vidu ĉi tie dekstre. Kiam ni unue pravalorizi tio, ĉio estas fiksita al nulo. Do ĝi estas nur pensis de kiel malplenan skribtabulo. Ni havas ĉiujn tiujn spacojn, ni havas ĉiujn tiuj skatoloj ni povis meti niajn datumojn en: sed ili estas nur malplena provizore. Do se ni volas reale atribui al ili tiujn valorojn, Ni faras kiel dekstra sub tie montras. Do vi havas ajn la nomo de via tabelo estas kaj tiam kio indico vi volas. Do la indekson simple raportas, kiel, kio fendo ni rigardas. Kaj gravan aferon rimarki estas ke arrays estas nulo-indeksita. Do se ni volas ke la unua spaca memoro de nia tabelo, ĝi tuj estos nulo. Se ni volas ke la dua, ĝi estos unu. Se ni volas ke la tria, ĝi estos du. Tiel plu kaj tiel plu. Kiu estas ankaŭ kial, konvencie, kiam oni faru loops-- mi certas vi uloj miris, kial ni komencos je 0 vs 1? Kaj tio estas ĉar kiam ni transiron en uzanta sensilo, ĝi mapas korekte. Do se vi volas persisti en tabelo, ĝi faras multe pli sentita Ĉu mi egalas 0, ĉar ni scii kiuj respondos al la unua loko en la memoro. CXiu bona kun tio? Malvarmeta. Kaj poste sur la fundo tie estas nur alia vojo al pravalorizi tabelo. Vi ankoraŭ havas vian datumtipo kaj la nomo, sed anstataŭ reale metante grandecon tie, Vi povas simple fari malplenajn krampojn. Kaj tiam kun tiuj buklaj krampoj malsupre, Vi povas simple indiku ĝustajn datumojn kiuj Vi volas apartigitaj per komoj. Kaj tio aŭtomate diri, nu bone, mi vidas ke vi havas tri aferojn en tiuj krampoj. Do mi scias ke mi devas atribui tri blokoj de memoro kaj tiam stoki tiuj. Do la unua versio vi povus uzi se vi demandas vian uzanto enigo valoroj tiel ke vi povas persisti tra la tabelo kaj ask-- akiri iom int enigi ilin. Se vi konas la valorojn de antemano, ĝi faras multe pli sentita uzi la duan manieron. Sed en plej kazoj, vi eble ne konas kio tiuj valoroj estas tuj estos. Malvarmeta. Aliajn demandojn? Alright. Do alirante elements-- tiel oni el la grandaj aferoj pri arrays estas ke ili estas hazardo aliro, signifante ke vi ne devas trarigardi ĉiu bloko. Se vi scias, ke vi voli kio estas blokaj du, Vi povas simple diri al mi blokas du. Kaj tial tiuj indeksoj estas tiel grava, kaj tiel ni vere aliri ilin. Do en ĉi tiu kazo, kiel ni vidis antaŭe, kiam ni atribui valorojn, en la antaŭ, ni havis la nomon kaj la indekso ni volis konsenti, dekstra? Do, en la sama maniero, tio estas ĉio ni faru al reale tiri ke datumoj eksteren. Ni havas la nomon kaj ni havas la indicon kiun ni volas. Do en ĉi tiu kazo, la por buklo cxi tie malsupre, iu scias kio ĝi estas faranta, kio estus elprinti? Mmhmm? Ĝuste. Do jes, ĝi estos nur ripetanta tra. i estas egala al zero-- ni povas marŝi tra la kodo nur rapide. i estas egala al nulo, i estas malpli ol tri ĉe tiu punkto, dekstra? Do kiu kontrolas eksteren. Kaj ni diras, OK, print f kiom estas en temperaturo i. i estas nulo dekstre tie kiam ni unue persisti, tiel ni iros al tiu unua loko, kaj ni diru, OK, 65 estas la numeron ni volas presi. Do ĝi devos presi 65 kaj tiam fari novan linion. Mi ĝisdatigos, do presu 87. Ĝi ĝisdatigas denove, kaj ĝi devos presi 30. Ĉiuj malvarmaj? Awesome. Bone. Do jen speco de unu kion mi estis diranta kiel vi povas sekvigi ies partituro kaj kial vi uzus la unuan vojo de la inicialización ĝi anstataŭ ke duan vojon. Kaj tio nur iras tra. Kaj rimarki ni havas klaso grandeco de 30. Kaj ni inicialización ĉi tabelo de ints ke estas de grandeco 30. Kaj tiam ni ripetanta tra kaj ni demandante la uzanton enigo partituroj por ĉiu el tiuj kaj poste atribui ĝin al specifa loko en la memoro ie en tiu tabelo. Cool? Ĉu tio havas sencon por ĉiuj? Mmhmm? Do hashtag difini klaso grandeco 30 Estas antaŭtraktilo direktivo kiu signifas nur ŝin gets-- havas fari kiel la kompilita procezo. Vi povas pensi pri tio kiel tutmonda variablo. La vojo ni do ĝi estas typically-- permesas via kodo esti pli facile ŝanĝita. Do diru ke nia klaso grandeco subite iras de 30 ĝis 15, se mi ne difinis tiu rimedo, mi estus devas iri tra mia tuta programo kaj ŝanĝi ĉiu okazo de 30 al 15. Sed kun cxi tiu, mi alvenas al ŝanĝi unu makulo, kaj ĉio alia ŝanĝoj. Se vi iam volas fari kradon difini en ujo kie vi konservanta trako de iu starigis nombro de partituroj por klaso aŭ vi uzas plurajn kiu uzos, kiel, tra tre longa programo, ĝi estas Pli bone difini ke komence por ke, se iam ĝi ŝanĝas, vi ricevos ŝanĝi unu loko anstataŭ 100. Jes? Student: Inter faranta tion kaj nur deklarante [inaudible] super ĉe la supro. Allison BUCHHOLTZ-AU: Do devas vidi kun efficient-- Estas speco de ekster la medio de kion ni povas kovri en tiu sekcio. Ĝi devas vidi pli kun eficiencia kaj kiel tio efektive labori en la kompilita procezo. Se vi volas vere scii pri tio, mi estas feliĉa por sendi vin email kun rimedoj pri ĝi. Hash difini inklinas esti preferitaj por aĵoj. Kaj kiel vi kodi, Vin speco de lerni la nuancojn de kiam oni devus uzi tutmonda kontre la hash difini. Sed por la momento, vi ne vere havas maltrankviligi estas ke la mallonga respondo. CXiu bona kun tio? Kaj ankaŭ, se vi volas uzi hash difini, ĝi estas vere grava rimarki ke la nomo devas esti en ĉiuj kaskedoj. Ni ne nur faranta CLASS SIZE esti drama. Ĝi devus reale esti en ĉiuj kaskedoj. Malvarmeta. Io alia estas tie? Ni estas bonaj? Amindaj. Bonvena. OK, mi volas ke vi infanoj preni rigardon tion kaj vidu se vi povas trovi la cimon. Mi donos al vi aludo. Estas ie en tiu por-buklo. Mmhmm? Student: Devus esti malpli ol egala al 2. Allison: Do ĝi povus esti malpli ol aŭ egala al 2, aŭ ĝi povus esti malpli ol 3. Kaj kio estas la rezonado por ke? Student: La [inaudible], 0, 1, 2. Allison: Ekzakte. Do en tabelo de amplekso n, ni nur indeksoj de n minus 1. Malvarmeta. Kaj tiel ni povos atingi vere freneza kaj akiri multi-dimensia arrays. Unu el la problemoj kiam mi prenis ĝin en mian jaro bezonata _multi_-dimensia arrays, Mi kredas ke unu el ili povus postuli tio ĉi jaro, Sekve esti komfortaj. Envolver vian kapon ĉirkaŭe ĝin nun. Ĝi revenos por turmenti vi, sed en malvarma vojo. Do vi povas vere nur pensu de multi-dimensia arrays kiel arrays de arrays. Do vi povas ia pensi ĉi supron remi kiel la unuan eron de memoro. Kaj ĉi tiu estas la duan eron de memoro, kaj la lasta linio estas la tria bloko de memoro. Kaj ene de tiu, estas tabelo. Sed kompreneble, pli facilas priskribi kiel ĉi. Do vi pravalorizi ĝin la sama vojo. Tiu estas gravulo estraro de tri por tri. Do vi havas tri vicojn kaj tri kolumnoj. Ni reprezentante ĝin tiamaniere. Kaj vi konsentas ke la sammaniere, kolumnon post linio. Do 1,1 kiel oni vidas ĉi tie. Ni asigni nulo, nulo tie supre. 2.0 kaj 0.2. Do vi simple aliri them-- se Iu iam faris lineara algebro same al vi aliron ero en oni matrice, ĝi estas la sama ideo tie. Do vi povas rilati ĝin al matematiko. Vi ne devas maltrankviligi tro multe pri ĉi tiu momento. Bonas havi ekspozicio, scii ke vi povas fari ĝin. Vi povas krei kelkajn freneza number-- vi povas Krei freneza arrays estas ĉiuj mi intencis diri. [Inaudible] Ĝi alvenas iom freneza, sed estas vere genia. Awesome. Kaj tiam, do ni havas ekzemplon tie. Ĝi kalkulas ĉenon longo. Do kiom da homoj sciis ke la kordojn kiujn vi uzas estas nur arrays de karakteroj? OK, jes. Do vi uloj povas pensi ke vi ne uzita arrays antaŭe, sed neniu horo vi uzas getstring en la CSView biblioteko, vi estas fakte simple petante tabelo de signoj. Kaj ni flegante ĉiu ke en la dorso-fino por vi. Sed vi estis uzante arrays ekde vi komencis. Vi simple ne scias ankoraŭ. Kaj kiam vi havos karakteron tabelo aŭ tabelo, ke la provizon ĉeno, La lasta aĵo estas ĉiam kio estas nomita nula Terminator, kiu Estas ĉi tie ĉi. Kaj tio estas ĉe la fino de ĉiu vorto kiun vi stoki. Do se ni volas eltrovi la longo de kordo, ni povas diri, bone, vi scias, la enhavo de tiu bloko ne estas egalaj al niaj nula Terminator. Tio signifas, ke ekzistas iuj karaktero tie ke ni reale zorgas pri tio parto de la vorto. Vi pliigas via longeco. Kaj tiam kiam ni efektive atingi la fino de la vorto, ĝi devos ĉesigi kaj ĝi revenos nia longo por ni. Mmhmm? Lernanto: Ĉu la spaco kalkuli kiel la nula terminator? Allison: Do spaco estas ne nula Terminator. Do se vi havas multiple-- spaco fakte specifa ASCII valoro. Student: Kio estas ekkrion egala denove? Allison: Do, tio estas kio vi raportas. Se vi iam aŭdas min en oficejo horoj, Mi ĉiam nomas, kiel, bang egalas. Do bang ne. Do tio ne egalas. Do se vi provas rigardu, cxu io estas falsa, vi scias ĉiam faros, bang ajn la variablo estas, kaj se ĝi estas malvera, ĝi taksas al vera kaj vi povu fari malvarmeta stuff kun tio. Pli sur tiu poste. Malvarmeta. Ĉio bona estas tie? Awesome. Do nun estas via infanoj 'tempo labori, ĉar mi parolis. Do mi volas ke vi simple krei tabelo kun la entjeroj unu, du, tri, kaj do ilin presita eksteren. Vi ne devas fari, kiel, ĉefa, bla, bla, bla, ajn. Mi nur volas ke vi pravalorizi la tabelo kaj tiam krei a por buklo presi ilin out-- aux dum buklo, ĝis vi. Mi simple donis al vi paro minutojn por labori sur tio. Mi iras ripozi mia voĉo. Se vi havas demandojn, mi estas feliĉa veni ĉirkaŭe kaj paroli kun vi uloj. Bonvolu paroli unu kun la alia. Get pli dolĉa. Fakte, mi ĵus iradas ĉirkaŭe kun dolĉaĵoj. Kiel estas tiu? Ĉu vi volas iom? Ajnulo en cxi tiu cxambro volas bombono? Vi povas ankaŭ preni pli ol unu, knaboj. Preni manplenon se vi volas. Majo ankaŭ. Ĉiuj aliaj bonaj? OK. Ankaŭ, mi tuj kreos anonima Google Formo, kaj vi uloj povas simple submit sugestoj post ĉiu sekcio se estas iu kiun vi volas plibonigi aŭ iu vi volas farite. Se mi estas iom tro Peppy por vi, mi povas moderigi gxin. Mi kreas ke sendu ke al vi cxiuj poste. Bone. Do ni komencu malgranda. Kiel ni pravalorizi nia tabelo? Kio estas la tipo de nia tabelo? An int, dekstra? OK, do kion vi volas voki vian tabelo? Int tabelo, malvarmeta. Bone, do ni havas int int tabelo egaluloj, kaj kion ni devas post tio? Student: [inaudible] krampoj. Allison: krampoj. Kaj poste ene de la krampoj? Unu komo du komo tri. Malvarmeta. Do tio estas tute bona. Do nun ni havas por buklo. Do en la unua parto de nia por buklo, kion ni havas? Student: i egalas 0? Allison: Do int i egalas 0, kaj tiam kia estas nia kondiĉo? Kio i tuj estos malpli ol? Malpli ol tri, kaj kiel ni ni ĝisdatigas i? i plus plus, ĝisdatigante ĝin unu. Kaj poste ni tuj havos iuj printf de la entjero, kaj kia estas tiu lasta parto kiu estas reale tuj diros kion ni devus presi? Estus la nomo de la tabelo, kiu estas int tabelo, dekstra? Kaj kio estas en la krampoj de int tabelo? i. [? Do mi?] Vokis Mian ekzemple, sed vi iru. Ne malbona. CXiu bona? Malvarmeta. Do ni faris kun la arrays. Feliĉoj. Vi sukcesis persisti tra ĉiuj the-- jes? Student: [inaudible] Allison: Jes. Lernanto: Mi havas demandon. Ĉu vi supozas Krommarĝenon la krampoj? Allison: Do la krampoj devus laŭliniigi kun la por buklo kaj tiam ĉio ene la krampoj estu marĝeno. Student: OK, ĉu la por buklo esti dentado? Allison: La por buklo ne bezonas esti dentado ĉe tiu punkto. Se vi estis en la ĉefa, se ni efektive havis ĉefan funkcion tie, tio estus marĝeno de ĉefa. Sed en ĉi tiu kazo, ĝi estas bone. Jes, demando. Lernanto: Ĉu vi bezonas havi la krampoj post ekzemple? Allison: Jes, se vi estas inicialización ĝin tiel. Do memoru, tio estas la dua vojo de la inicialización tabelo kie ni havas la streĉaj kaj tiam nia reala datumoj apartigitaj per komoj ene. Lernanto: Mi pensis, ke estis krampoj por tiu ekzemplo. Allison: Ne, ili estas krampoj. Ili estas krampoj. Se vi inicialización ĝi tiu dua formo, estas krampoj. Se ni dirus, int example-- se Ni volis nur malplenan tabelon por ints, estus int ekzemple krampoj tri. La krampoj reprezentas la grandeco. Kiam vi havas krampoj, ĝi estas la realaj datumoj vi metas en ĝin tiamaniere. Ni povas rulumi reen vere rapida. Do en ĉi tiu, ĉi tiu estas nur nia komenca tabelo, inicialización. Kaj tie ni estas individue asignanta makuloj por ili, tial ĉi reprezentas la indico de nia tabelo, kiu estas kial ni havas krampoj. Sed ĉi tie, se vi rimarkas, ni forlasis nian krampoj sen grandeco, kaj ni pravalorizi ĝin per la realaj datumoj ĉiu-en-oni kun krampoj. Student: Do kial ni ne havas krampoj en ĉi tiu ekzemplo? Allison: Do, en kiu parto? Lernanto: Ĉu ne ni diru int ekzemple krampoj egalas krampoj [inaudible] krampoj ekzemple. Allison: Ho, pardonon. Vi pravas. Ni havas krampoj tie. Pardonu infanoj, mia malbona. Jes, vi devus havi krampoj post ekzemplo. Vi tute pravas. Student: [inaudible] ne fari ĝin. Allison: Ne, vi devas havi krampoj, ĉar alie ĝi estas Ne tuj deklari tabelo. Student: [inaudible]. Pardonu pri tio. Allison: Pardonu, vi devas krampoj post ekzemplo. Tajperaro. Bonan catch, oro stelo por vi. Ankaŭ, se vi demandas demandon, se vi uloj simple diri al mi viajn nomojn, Mi ravus ke. Mi ravus povi scias ĉiujn viajn nomojn. Mi ne tuj malvarma nomas vin, mi reale Ne nur volas scii vian nomojn. Do bonvolu fakte al mi viajn nomojn. Lea Lea. Allison: Lea. OK, do functions-- mi konas mallonga Ili parolis pri tio dum prelego. Do funkcioj estas speco de simple kiel tiuj iom mordo-grandeco aferoj kie pasas en enigoj, iu magia okazas, kaj vi ricevas eliroj. Malvarmeta. Do vi vere uzis Multaj tiuj jam. Get int, akiru kordoj, print f. Tiuj estas ĉiuj funkcioj kie vi simple nomas ilin, ekzistas multaj magiaj aferoj okazas en la fono ke vi ne nepre vidi, kaj vi ricevas kion vi deziras. Aŭ almenaŭ vi ricevas kion vi esperas vi volas. Kaj esence la punkto de funkcioj, kaj unu el la ĉefaj temoj de CS, estas rompi vian kodo en regebla pecoj. Kiam vi komencas skribi tiuj vere longaj programoj, aŭ en Scratch kiam vi havis tiu grandioza ideo por ludo, vi bezonas por povi rompi ĝin malsupren al, kiel, nu bone, kiel mi komencu? Kio estas la eta pecoj kiuj mi bezonas? Ho, mi devas demandi la uzanto por io. Nun mi bezonas presi ion. Ho, mi bezonas por kalkuli tiun valoron. Kaj lerni kiel rompi vian kodo kaj la grandaj problemoj vin havas en ĉi tiuj malgrandaj pecoj kaj kreante funkcioj estas fakte unu el la grandaj kolonoj de CS. Do vi povas pensi de funkcio kiel kiel nigra skatolo, magia nigra skatolo, ke vi metis tion en kaj vi ricevos kelkajn eligo. Kaj la resto de la programo ne bezonas nepre scii kio okazas ene de tiu nigra skatolo. Ĉio tio zorgas pri kion iras en kaj kio eliras. Malvarmeta. Do kial funkcioj? Organization-- kiel mi diris, kiam vi estas kontraktanta kun tre grandaj kodo bazajxojn kiel vi organizas via kodo estos multe pli facile se vi uzas funkcioj. Ĉar vi povos esti, same kiel, nu bone, ĉi estas kio ĉi tiu funkcio faras kaj jen kio alia restas. Kaj vi povas facile vidi kiel ĉiuj persvadis kune. Tiel rompante ĝin en ĉiujn tiuj regebla subparts. Do simplification-- mi certas vi uloj ĉiuj vidis tion, kiel mi diris, kun Scratch. Vi havas ĉi grandioza ideo, kaj vi ŝatas, kiel faras ĉiuj ĉi laboro? Sed se vi alproksimigi ĝin piecemeal, vi diras, OK, Kiel do mi faros unu sprite flosi trans la ekrano? Tio estas iomete pli facila. Tiel bona uzo de la funkcio fabrikas via kodo estas multe pli facila por legi. Ĝi faciligas elpurigi kiu kiel vi enir via posta problemo aroj, vi iras por vere deziras povi fari. Kaj ili estas ankaŭ facile desegni kaj efektivigi. Vi povas programi malgrandan funkcias relative rapide kaj certigi funkcias kontre provas krei ĉi tiu tuta longa programo kaj tiam ia trairu kaj kio estas laboranta kaj kio estas ne. Kaj tiam reutilización. Tiel funkcias nur bezonas estu skribataj unufoje kaj tiam vi povas uzi ilin tantas fojoj kiel ebla. Do ĝi estas, kiel, eko-amika en senso. Se vi havus tion kiel print f, kie vi devis skribi la magio kiu iras malantaŭ presi f ĉiu ununura tempo vi volis presi iun, estus sufiĉe malsana kaj laca de ĝi per la fino. Unu el la aĵoj kiujn vi lerni en postaj CS klasoj aŭ unu el la plej bonaj pecoj de konsilo mi ricevas estas, se vi kopias kaj interglui kodo, ĝi probable devus esti funkcio. Se vi havas la ĝustan saman linioj ĉiuj viaj kodo, se vi faktorita ilin, via kodo versxajne esti, same kiel, kvinfoje pli mallonga kaj esti multe pli facila por legi. Kaj anstataŭ provi solvi ĉiuj tiuj malsamaj lokoj kie aferoj povus iri malbone, vi havas unu funkcio ke vi ricevas solvi. Kaj mi promesas, multe de tiu povus ŝajni ia abstrakta nun, sed kiel vi eniri poste kaj poste problemo aroj, ŝi faros multe pli sentita kaj vere funkciigi hejmen. Ĉu ekzistas iu ajn demandoj pri funkcioj ĝis nun? Kial ni uzas ilin? Mi scias ke ni ne alvenis en la nitty aspra ankoraŭ. Do difinanta function-- simple ŝatas arrays, ni bezonas ian of-- ĉi estas nur la ĝenerala eliro. Do tio estas funkcio kiu estas nur tuj kubo iun enigo. Kaj en la sekvanta paĝo, fakte, ni havas ĉiuj tiuj awesome etulojn tie. Do, ĝi povas ĉiuj legas ke, pro scivolemo? Mi konas la purpuran kaj nigran povus esti iom malfacile. Sed grandaj aferoj know-- tiel la unua oni rajtas tie estas nia reveno tipo. Do ĉi tiu parolante pri la eligo de tiu funkcio kiam, en tiu kazo, ni metu en iu nombro, kio ni estas ricevas estas ke nombro cubed. Do ĝi devus esti int en tiu kazo. Eble estus duobla aŭ ion alian poste, sed en ĉi tiu kazo, ĝi estas int. Kun c, vi ĉiam bezonas reveno tipo. Ĝi devos esti int. Estos kaleŝego. Ĝi estos duobla. Sed vi devas specifi kion tiu funkcio tuj revenos. Alie gxi krias al vi, kaj gxi ne kompili. Vi estos malĝojaj, kaj mi estos malgaja. Kaj estas simple malbona. OK. Kaj tiam ni havos niajn funkcio nomo. Kaj kiel vi povas vidi ĉi tie, kun c tie estas tio tre kohera paradigmo. Kio estas via tipo, kio estas la nomo, kaj tiam alian aferon fine. Do ni havos niajn reveno tipo, nia funkcio nomo, kaj poste ni havos niajn kaplinio per nia parametro listo. Do la parametro listo estas, kio estas tiu funkcio tuj prenos en? Parametro listo estas simple sinonimo, kio estas nia enigoj? Kaj en la sama maniero kiun ni devos difini niajn funkcio kaj donu reveno tajpi, ĉiu de niaj eniroj bezonas havi tipon asociita kun ĝi. Do ni scias kion niaj funkcio povas fakte labori kun. Do en ĉi tiu kazo, ni havas kelkaj int enigo. Do denove, tio estos la tipo kaj kion vi nomas ĝin. Kaj tiam, kiel vi vidas tie, ni havas nian korpon. Do ni havas kelkajn int eligo, ke estas nur nia enigo fojoj mem fojoj mem, kiu nur kuboj ĝin. Kaj poste ni revenos ke eligo. Do kiel vi vidas tie, ni havas int tempoj int tempoj int, do ĝi redonas int, kiu estis deklarita tie. Do ĉio estas kohera. Ĉio estas feliĉa. Via funkcio kuros. Kaj ĉi tio estas nur la ĝenerala afero. Do ĉiam reveno tipo, nomo, kaj via parametro listo. Ĉiun aĵon en via parametro listo, aŭ eniro, bezonas havi tipon asociita kun ĝi. Kaj tiam vi havos vian korpo tie kun kiom vi volas fari kun via enigo. Kaj do evidente vi volas redoni ion. Kelkfoje funkciojn simple reveni. Usonanoj ne revenos io por vi uzi. Sed vi devos reveni iel. Kaj kiam vi faras viajn proprajn funkciojn, ni povas eniri en tiu iom pli profunda. Persone, se vi volas, estas multa de malsamaj aferoj vi povus fari tie. CXiu bona? Ion sur tiu listo, ke vi volas, ke mi transiri, ke vi ne komprenis? Ĉies bono tie? Malvarmeta. Awesome. OK, do ni metante ĉio ĉi kune nun. Do ni havas kelkajn int kubo enigo, do tio estas kompletan programon tie. Ĝis nun, mi havas ia donante vin infanoj fragmentojn kiuj povus iros ene de programo. Ni ĵus rigardis funkcioj. Sed jen tutan programon. Do kiom vi memoras la vorto prototipo de prelego? Malvarmeta. Ni havas unu. Kio estas via nomo? Steph: Steph. Allison: Steph? OK, awesome. Do, ĉu vi memoras, kion prototipo estas? Student: Vi diras [inaudible] antaŭ vi reale alfronti ĝin. Allison: Ĉu vi memoras kial? Student: No. Allison: OK. Oro stelo. Do jes, prototipo ni havas antemano, ĉar alie, nia tradukilo tuj krias al ni. Ĝi tuj diri, nu bone, Kio estas ĉi tiu kubo funkcio? Kiel vi laŭvorte havas rakontis al mi nenion pri tiu. Estas kiel kiam vi iradu en klasĉambro, kaj iu estas kiel, ekzistas kvizon hodiaŭ. Kaj vi estas kiel vi neniam informis min pri tio. Mi ne estas feliĉa kun ni. La prototipo estas esence kiel via Syllabus dirante, rigardu. Kapoj supre. Tie tuj estos kvizon en tiu tago. Ne Freak Out kiam vi atingos ĝin. Vi tuj estos bone. Do ĉiuj prototipo ne estas diri ĉefa, mi tuj uzos tiun funkcion. Mi promesas Mi difinante ĝin poste. Ne Freak Out ĉe mi. Nur kompili kaj faru kion mi diras al vi. Do ni havas la prototipo tie ĝuste por fari nian kompililo feliĉaj. Kaj estas esence promeso ke Vi difinis tiun funkcion poste kaj ke vi ne simple nomi tiu hazarda afero ke Ne scias kion vi estas tuj faros. Do en ĉi tiu kazo, ni havas ĉefan tie. Ni pravalorizi iu entjero x. Tio estas du. Ni tuj presi kio x estas. Ni tuj kubon x. Kiel vi vidas, ni havas niajn funkcio deklaro malsupren tie ke ni parolis antaŭe. Ĝi devos kubo x, kaj se ni memoru la kubo funkcio reale redonas entjeron al ni, kiuj estas stokitaj en x denove tiel ke ni povas presi el ok aux kubon x nun. Ĉu tio havas sencon por ĉiuj? Ni estas bonaj? Bone. Awesome. Bone. Kiel multaj de vi uloj Memoru tion tiel ĉi estas esence nur via pilo kaj vian monteton; nur videbligo de kiom memoro stokas tie. Do ni nur volas fari certas, ke vi komprenas kiel tiuj estas reprezentitaj en la memoro. Se vi prenos klasoj kiel CS61 kaj stuff poste, vi akiras lerni ĉi multe pli en profundo, kaj ĝi estas vere genia. Mi forte rekomendas ĝin. Sed nuntempe, mi donos vi la larĝan superrigardon tial vi ne devas konas la nitty aspra. Do la supron nur teksto segmento kiu Enhavas la reala nuloj kaj, la duuma por tio. Kaj tiu estas uzita por stoki tutmondaj variabloj se vi havas neniun. Kiel vi iru malsupren, ni havi, kiel vi vidas tie, inicializado datumoj, uninitialized datumoj, kaj tiam amaso. Do ni ne vere paroli pri la amaso nun. Ni atingos ĝin poste. Nuntempe, mi simple tuj skuos mian manon kaj estu kiel, Vi ne bezonas scii pri tio nun. Sed ni parolos iom iom pri la stako. Do la stako estas where-- ni havas zoom in. Tiu estas vere kiel la programo ni nur rigardis okazas en memoro. Do kio okazas estas, ĉiu tempo ni nomas funkcio, ni preni kion nomas pilo kadro, kiu estas unu el tiuj. Do ĉefaj parametroj. Do tiuj estas la aferoj ke ni pasas en ĉefaj. Do ili estas ĝuste ĉi tie sur la fundo, ĉar tio estas la unua aĵo kiun ni nomas. Kaj tiam ni atingos ĉefaj La lokuloj, kaj kiam ni diras ke, Ni parolas pri la lokaj variabloj kiuj estas stokitaj ene ĉefa. Do lokanoj tie estus, kiel, x estas egala al du en ĉi tiu kazo. Ĉar tiu estas lokiĝas ĉefa. Ĉu ĉiuj memoras medion, irante sur tiu en prelego? OK. Do, nur la variabloj kiuj estas inicializado ene ĉefa. Do tio estas kial ni havas ĉefan [? voĉo. ?] Kaj tiam ene ĉefa ni nomas kubo. Rajto? Do ni preni alia kadro kun kubaj parametroj. Do en ĉi tiu kazo, kubaj parametroj nun estas x ke ni pasis en, la du kiun ni trapasis en. Kaj tiam kubaj lokanoj, kio estas kie la fakta cubing okazas. Kaj poste revenas. Do kio okazas estas kiel kubo efektive faras kio supozas fari, ĝi revenas. Kiam li revenas, tiu kadro iras, kaj lia revenis malsupren por ĉefa. Kaj tiam ene ĉefa, ni efektive povas presi ĝin. Do kiam vi revenas ion, kiam via funkcio redonas, estas kiel preterpasis tiujn valorojn al la kadro sube kaj poste eliri. Kaj aĵoj devas ekzekuti en ordo. Kaj kiam vi atingos grandan programoj, ni povas fari pli malvarmeta kaj pli komplika diagramoj. Sed nun, ĉi tiu estas nur ĝeneralan superrigardon tial vi havas specon de kompreno de kio okazas kiam vi nomante funkcio kaj kiel tio efektive aspektas en memoro. Cool? CXiu bona? Awesome. Do ĉi tiu estas unu kiu estas nur provas interŝanĝi aferojn. Kiel ni vidas ĉi tie, ni havas nia funkcio prototipo por ke nia tradukilo ne krias al ni. Ni havas kelkajn ĉefajn, kaj ni volas ŝanĝi x kaj y. Ili ne faris tion demo en prelego tamen, ili havas? Ili ne havas? OK. Do ni tuj iru super tiu tre mallonge. Vi ricevos en ĉi tiu ekzemplo pli en profundo, mi pensas, ĉi tiu semajno. Kaj tiam venontan semajnon ni povas vere plonĝi en kial tio ne funkcios. Do ni havas ĉi void funkcio here-- swap. Do void simple signifas ke nenio estas liverita. Kaj ni havas interŝanĝan int a kaj int b. Kaj ni havas kelkajn temporal variablo kiu estas. oni prenas atribuitaj al b, kaj poste b prenas atribuitaj al la temp tiel ke a kaj b estas valoroj nun ŝanĝis. Sed, intrigo turno, tio ne funkcios. Kaj parto de ĝi reale havas rilatas al la fakto ke kaj b tie, la aĵoj kiuj get pasis en tie ĉi, estas vere kopioj de x kaj y. Do kiam la funkcio fakte revenas, Ĝi ŝanĝas la kopiojn sed ne la reala x kaj y estas. Do unu maniero pensi estas that-- ŝajnigi tiuj estas swap. OK? Do en ĉefa, ni havas x kaj y inicializado. Sed kiam ni efektive iros al tiuj kadroj kun swap, ni pasante la valorojn super al tio, kaj ili estas inicializado. Kaj ili nur ĉiam vivas ĉi tie. Do a kaj b vivi tie. Ili interŝanĝiĝis. Sed kiam ni revenos, ni ne fari ion kun a kaj b. oni kaj b permeso kun nia funkcio. Kaj tial x kaj y restas la sama. Vi ricevos pli pri kiel ripari tion kaj kiel ni vere trakti ke poste. Sed estas nur unu afero al speco de subteni en menso. Uzu ĝin por la estonteco. Ne maltrankvilu se tio ne faris ĉiuj senco en la mondo. Ili estas kopioj estas la plej granda afero. Se vi iras por preni ion for de tio vi pasis en kopioj. Do la originaloj resti la sama. CXiu bona? Malvarmeta. Do komandlinion argumentoj. Mi certas ke en la komenco vi uloj ĉiuj havis tiujn grandajn, kiel, int ĉefa malplenaj. Kaj vi estas kiel, OK malvarmeta. Mi ne vere gravas. Tiu estas ĝuste kion mi devas skribi. Sed en viaj novaj programoj, speciale en ĉi pset, kaj kial ekzistas kreto sur la teron? Kun via venonta pset, vi estas tuj vidos ĉi. Int main, int arg c, kordo arko v, krampoj. Do, kion ni ĵus lernis hodiaŭ, kion ni pensas ke dua parametro aŭ kiu dua elemento estas ĉi tie? Estas tabelo. Kio tipo de tabelo? Kordoj tabelo, jes. Malvarmeta. Do jen kiel vi tuj esti deklarante tiuj nun. Ĉu iu memoras kio tio signifas? Neniu? Hmm? Student: arg c. Allison: Do arg c subtenas vendotablo. Temas pri int. Estas nombro, ĉu ne? Do kion vi opinias ke nombro estas de? Yeah. Do arg c estas la nombro de kordoj kiuj konsistigas la komandlinio. Do se ni do-- reale, estas ekzemploj de nun, do mi ne volas eliri antaŭeniras memvole. Estas nombro de kordoj kiuj nur konsistigas vian komandlinio. Do kiam vi faras, kiel, ĝi pentras slash Mario, tio estas unu ĉeno kiu igas ĝin. En tiu peco, vi vere estas nutrante aferojn en la komandlinio, kiel mi certas vi uloj kiuj legis la spec segilo. Do en tiuj kazoj, eble vi havas du aŭ tri argumentojn. Ĝi tuj estos utila afero uzi. Kaj tiam arg v, kiel ni diris, estas nur kordoj tabelo. Tiel ke fakte stokas kion vi enigo en la komandlinio. Do ni havas tiujn. Vi havas kelkajn dot oblikvo kopiu infile outfile. Do, se arg c estas la nombro de kordoj ke ni pasas al la komando linio, kio estas nia arg c en tiu kazo? Tri. Ĝuste. Do kio estas arg v de nulo? Do kio estas la unua afero ni stokas? Dot slash kopion, ekzakte. Kaj tiam la dua estus infile. La tria estus outfile. Do kio pri arg v tri? Estus nula, ĉar tio Fine de nia tabelo, dekstra? Malvarmeta. Kaj tiam kio pri la sesa? Estas speco de ruzo demando. Isx. Ĉu ni scias kio ĝi estas? Ĝi estas nedifinita. Ni havas neniun ideon kio tiu eblus. Estas kiom estas justa post la tabelo en la memoro, kaj ni ne havas indikon kion tio estas. Kaj estas danĝere tuŝi tiujn tion, ĉar por ĉiu vi scias, estas iu parto de memoro kiun vi ne devus esti alirante aŭ nula. Kaj ĝi povas fari frenezaj aĵoj. Ĝi nomiĝas trans-indeksado via ligis al via tabelo. Ne eliru ekster la limoj de via tabelo, aŭ malbonaj aferoj povas okazi. Vi revenis kaj, kiel, la leĝoj de fiziko estis detruitaj aŭ ion. Malvarmeta. Ĉu tio havas sencon por ĉiuj? Ne tro malbona. Do nun, chiuj parto favorita, pset recenzo. Yay! OK. Do por tiuj el vi, kiuj ne legis la pset spec, vi faras iujn vere malvarmeta stuff kun ĉifriko. Vi iras krei Ceasar Ĉifra kaj Vigenère. Vi devus definitive legi la Spec vidi kiel tiuj laboroj. Kaj se vi havas iun problemon pri kio devus reale esti farante, bonvolu veni alparolas min, retpoŝti min aŭ teksto mi. Mi estas ĉirkaŭ. Do estas tri ĉefaj aferojn tie ke ni volas paroli about-- ĝuste speco de etendo de prelego. Aĵoj kiuj vi eble ne konas pri, helpema aludoj kaj iloj. Do ni tuj faros rapida revizio de ASCII, ĉar tio tuj estos súper grava por Vigenère la Cipher. Ni iras al konvertiĝo de komandlinio enigoj, kiuj estos tre utila por Cezaro Cipher. Kaj tiam module. Malvarmeta. Do, ASCII mapas karakteroj al nombroj. Tiu estas granda abako. Vi devus havi ĉi legosigniĝos ie. Vi tion bezonas via unua meza termino. Mi estas sufiĉe certa ke ĉiuj havas ĉi abako sur ilia meza termino folio. Tiel lernas ĝin. Amas ŝin. Konservu gxin oportuna. Ĝi estos utila. Kaj cxiuj estas estas kodoprezento kiuj mapas alfabeta, nombra, kaj aliaj karakteroj nombroj por nia komputilo. Ĉar kompreneble, en la fino, ĉiu ni stoki tuj alvenos konvertiĝis malsupren al nuloj kaj aĵoj, do ni bezonas iel reprezenti la teksto kaj karakteroj kiujn ni ĉiuj kutimitaj vidi kiel ia nombro. Do kiel ni vidas ĉi tie, ni havas majuskla A, kiu estas prava. Ĝi estas 65. Kaj minuskla A estas 97. Do vi povas imagi out-- kiel mi diris antaŭe, se vi havis vicojn de multnombraj kordoj, kion cxiu el ili havas nula Terminator. Estus spaco. Spaco havas sian propran special-- Mi forgesis kie estas cxi tie. Ah. 32 estas la spaco. Do ĉio mapas al ĝi. Do ni havas ASCII math. Avantaĝo tip-- en Vigenère'S, vi eble estas tentebla konverti viajn nombroj por entjeroj, sed estas vere bona praktiko por povi uzi la karakteroj kiel tiu kiam vi reale manipulanta ilin. Do se vi volas uzi numerojn, vi povas. Sed pli bona vojo, aŭ maniero ke ni kutimas ŝati vi uloj fari ĝin, Estas tiel kie vi estas efektive forprenante gravuloj. Do mi volas ke vi infanoj al speco de figuro tiuj eksteren. Kial ne provi ĉiu alia? Tiel do la unua, la tria, kaj la kvina. Ĉar mi volas certigi ke ni parolas Pri ĉio ni bezonas paroli. Mi nur volis diri, unu el la gravaj aferoj to-- ho atendi, vi uloj ne vidis ĉi tiun. OK tial faru la unuajn tri. Ni faru tion. Ĉar ni devas paroli pri module. Mi scias. Math estas malmola. Vi povas uzi kalkulilon. Estas bone. Aŭ tiri kontrauxulon ASCII tablo, ĉar vi probable tuj volas tiun. Malvarmeta. Do mi rapide marŝi vi uloj tra tiuj. Do homoj ASCII tabloj elsxirataj? Kio estas nia nombra nombro por minuskla A? Student: Sep. Allison: Do minuskla A 97 kaj majuskla A estas 65. Do 97 minus 65? Publiko: 32? Allison: 62, yeah. Do en ĉi tiu kazo, kion ĉu elprinti? Tiu unua unu? Se ni havas procento d, kio kiuj indikas? Student: Serio. Allison: Ni presanta el reala nombro. Do ni vere irante presi 32 tie. Kaj se ĉi tiu estis procento c, 32 donus al ni spaco. Tiel komprenante ke karakteroj povas esti presita tiel kiel nombroj kaj kiel la reala karakteroj estas vere grava, kaj paganta atenton al la efektiva tipoj ke ni faras cxi tie. Malvarmeta. Do por ĉiu alia unu el tiuj, Kion ni devas presi? Student: A karaktero. Allison: A karaktero. Malvarmeta. Do se vi uloj volas scii, oni povas labori tiujn sur via propra. Se vi havas problemojn, retpoŝtu min. Sed la dua volo elprinti minusklan b. La tria presos la majusklajn B. La kvara oni presos el la majuskla C, kaj la lasta estos minusklan A. Kaj la lasta one-- ni reale iras eniri en kio tiu freneza procento signo eĉ signifas en paro diapozitivoj. Do provu tiujn sur via propra. Se vi havas problemojn, bonvolu veni alparolas min. Se vi estas tipe en Adams D halo, vi probable trovos min ĉirkaŭe. Do, atoi. Kiel multaj el vi jam vidis ĉi funkcio aŭ aŭdis pri tio? Iu? Malvarmeta. Do kion fakte signifas cxar estas ASCII al entjero. Do, kion vi povas fari, estas, kun Cezaro, por tiuj, kiuj legas la specifo, vi faros dot oblikvo Cezaro kiam vi skribas vian programon, kaj tiam vi tuj input iun numeron kiun vi volas kodi viajn sekreta mesaĝo kun. Sed, se ni memoras, ĉiuj niaj enigoj estas stokitaj kiel kordoj. Rajto? Ni havas arg v tabelo ke estas ĉiu tipo kordoj. Do se vi nur provas tiri tiu, estus pensas ke tiu aŭ ajna nombro vi uzis estas reale karaktero. Do vi iras demandi iuj frenezaj rezultoj. Do se vi vere volas defali en entjero kiun vi povas uzi por manipuli vian vorton aŭ vian mesaĝon, vi volas uzi atoi. atoi nur konvertas vian ŝnuron al int. Do se ni havas ĉenon de 12, se ni nomas atoi 12, aŭ kio ajn ke enigo estas, gxi vere reveni al vi la entjero. Ne la karaktero aŭ ĉeno 12. Kiu, kiam oni komencas aldoni ke al nombroj, estos tre malsamaj, ĉar la ŝnuro 12 estas iom freneza nombro en ASCII, sed la entjero 12 estas fakte 12, kiu estas kion vi volas. Do vi volas certigi uzi atoi. Vi tuj volas tiun en Cezaro, ĉar vi bezonas la int provizita de la uzanto en la komandlinio. Sed kiam oni metis ĝin en la komando linio, ĝi estas stokita kiel ĉeno komenci kun. Ĉu tio havas sencon? Vi ne nepre bezonas tion por Vigenère. Kun Vigenère, kiel mi diris antaŭe, vi devus provi kaj uzi ASCII math ke similas pli tiu, kie vi estas reale uzanta la signojn ke ni donis al Vi. Malvarmeta. CXiu bona tie? Awesome. Do module. Do kio se vi donita tiu grandega nombro por Cezaro? Vi havas tiun ideon, ke se vi estas ĉe Z kaj vi donita numero du, tio celas vin need-- Z igas la dua leteron post sin, ĉu ne? Do necesas iel envolver ĉirkaŭe, kaj module estas la maniero por fari tion. Do ĉiuj faras estas ĝi donas al vi la reston de la divido de la unua numero de la dua. Kaj ni havas kelkajn ekzemplojn por faru, ke iom pli konkretaj. Sed esence, oni uzas module kiam voli fari ion wrap ĉirkaŭ. Do, se vi volas nur la nombroj unu tra ok, vi povas uzi module sur ajna alia nombro, kaj estos ĉiam reveni nombro de nulo al ok. Do iuj examples-- se Ni havas 55 module 10, Ĝi nur donas al vi la reston de 55 dividita per 10, kio estus 5. Kaj tiam tri module kvin, Iu diveni kion tio estus? Tri. Do se vi havas pli malgrandan nombron antaŭe la module, ne povas iri en pare. Ĝi estas nulo. Do ĝuste redonas la nombron mem. Do ok module ok estus? Student: Nulo. Allison: Nulo. Ĉar ĝi iras glate. 16 module 15? Publiko: Unu. Allison: Cool. Kaj tiam tiu lasta estas nur montri you-- vi povus mirantaj, OK, kio estas la ordo de operacioj tie? Ĉu ni dividu la unua? Ĉu ni module unuan? Do module tenas la saman prioritaton kiel divido aŭ multipliko, kaj lia maldekstra asocieca. Do estas en la sama maniero. Vi ĉiam faras krampoj, tiam multipliko, divido, kaj module celo de maldekstro al dekstro. Do normo reguloj. Nur metis ĝin en la sama kategorio kiel divido kaj multipliko. Do en ĉi tiu kazo, ni havus havas 1 plus 2 donas al ni 3. Ni multigu ke per 2, do ni preni 6. Ni module ke per 2, kiu donas al ni? Student: 0. Allison: 0. Kaj poste ni aldonu 2, do ni ricevas 2 en tiu lasta kazo. Do modulo-- vi definitive tuj pensi pri manieroj por korpigi ke kiam vi ĉirkaŭvolvinte ĉirkaŭ la alfabeto. Se vi estas ĉe Z kaj vi bezonas por movi plusendu tri spacoj akiri al C, tie estas tiu tuta koncepto de ĉirkaŭvolvinte ĉirkaŭe. Do mi devos lasi gxin al vi uloj elkompreni kiom precize vi tuj uzos ĝin. Sed certe utila ilo por via pset tiu semajno. Mi vere ŝatas tion. Jen unu el miaj preferataj psets. Poste vi faros, se vi havas amikojn Vi povas, kiel, sendu reciproke sekreta mesaĝoj kaj certigi funkcias. Ĉar tion malĉifri ĝin aŭ kion ajn. Multa amuza. Kaj tiu estas la fino de la sekcio. Mi finis frue. Mi ankoraŭ havas 15 minutojn per vi uloj, do se estas io ke vi ŝatus iri trans plu, mi ŝatus fari tion. Ajna alia demandojn pri vian pset por vi kiuj komencis aŭ legi la spec. Anything ke ni parolis proksimume en la lasta horo kaj 15 minutoj kiujn vi volus min al ia rehash, mi estus feliĉa. Aŭ ni povas nomi ĝin fermas, kaj vi povas ĉiuj eliras kaj preni pli dolĉa kun vi kiel vi iras. Sed se estas iu konstanta demandojn, bonvolu sciigi min. Vi povas ankaŭ veni supren kaj alparolas min poste. Mi promesas ne mordas. Ion alian? Ĉies bono? Ĉies sento ŝatas ili povas manipuli ĉi pset? Vi tuj estos bone infanoj. Oficejo horoj estas tie por kialo. Malvarmeta. Alright. Nu, en tiu kazo, dankon vi ĉiuj tiom multe por veni. Mi esperas vidi vin venontan semajnon. Estos pli dolĉa. Tie povus esti aliaj malvarmeta aĵoj. Mi rigardas antaŭen al atingi scii vin ĉiujn ĉi jaro.