PROFESORO: Do la tagordo por tiu semajno, ne ke multe aferojn. Sed espereble tre, tre helpema kaj adekvataj por vi uloj tiu semajno. Sed ni tuj elspezi eble 15, 20 minutoj nur rapide parolas pri karmo listo. Link listoj tuj esti kovrita sur la kvizo. Do eble estus tre helpema lerni iom pri kio tio estas. Ni tuj elspezos la vasta plimulto de la hodiaŭa sekcio trapasado kvizo nulo praktiko problemoj. Kaj tiam ni ŝparos eble 20, 30 minutoj fine por ajna longedaŭraj demandoj iu havas. Kaj tiam, la lastan kvin minutoj, mi tuj doni pumpilo supren parolado por la kvizo. Vi infanoj ĉiuj volas esti tie por tio. Ĉar ĝi estas tuj estos bona momento. Bone, do iuj materialo sur ligilon listo. Kiel ili estas tipe strukturita estas vi havas kio nomiĝas nodo, ĉu ne? Vi havas tion nomis nodoj, kiuj estas structs. Mi iros super kiel krei nodo en la proksima glito. Sed esence ligitaj listoj estas estas datumoj kiuj estis laĉis kune tra punteros. Kaj tial la avantaĝon ni havas uzi ligillisto super, eble, kiel tabelo, estas la fakto ke en tabelo vi bezonas apuda bloko de memoro ĉiuj en la sama loko, unu post alia, por povi havi tiun. Dum ligillisto, vi povis havi hazarda iom bitoj de memoro ĉie via komputilo laĉis kune por punteros. Kaj tiamaniere vi povas aliri informojn kiu venas post la aliaj, post la aliaj sen bezoni nur grandegan eron de memoro en via komputilo ie. Kaj tiel tio estas unu el la gravaj kialojn kial ni uzas ligilon listo. Due, ĝi estas tre facila por dinamike Regrandigi la ligilon listo ĉar en tabelo, kiam vi deklari tabelo, vi havas certan aron valoro. Diru mi volis krei tabelo de 10 entjeroj. Mi kreas tabelo de 10 entjeroj, kaj jen ĝi. Ĝi estas 10. Mi ne scias kion fari poste. Se mi volis profiti 11, ne povas fari ĝin. Se mi volas igi ĝin 9, ne povas fari ĝin. Dum kiu en ligo listo, vi povas aldoni kaj forigi kaj inserti wherever vi deziras. Vi povas dinamike regrandigi via strukturi tie, via datumstrukturo. Kaj tio donas al ni multon pli aldonita fleksebleco ke ni ne tipe havi kun tabeloj. Iu konfuzita sur la bazaj strukturon de kiel ligilon listo estas aŭ kial ni devas uzi unu super tabelo? Jes, ni transiru detale kiel reale krei unu. Sed tiu estas nur speco de la ĝenerala senco nun. Malvarmeta. Kaj tiel arrays estas laĉis kune de tiuj belaj etuloj nomitaj nodoj. Ĉiuj nodo estas estas tipo de struct. Memoru, struct estas se vi volis krei iun tipon de variablo en C kiu ne jam ekzistas, vi, kiel programisto, povas fakte krei tiun mem. Do tiu tipo de datumoj strukturo estas nomita nodo, efektive estis kreitaj de ni, ke ne ekzistas ene C sur ĝia propra. Kaj la vojon ke vi krei estas vi la kaplinio de typedef struct, kiu rakontas la tradukilo mi estas pri krei struct. Ni iras nomo "nodo". Kaj ene ni iras deklari variablon en, kiu iras al stoki valoron. Kaj tiam ni ankaŭ tuj esti puntero nomis "apud" kiu notas al la sekvanta nodo en la ligilo listo. Kaj tiam vi finos tion for per simple ripetante nodo denove tiel la tradukilo scias, OK jen la fino de mia struct. Kaj tiel en tiu maniero, ni estas speco krei plaĉan tabelo speco de afero kun valoro kaj kun puntero. Kaj vi povas ligi ilin ĉiuj kune kun tiuj punteros. Por ke ili povas esti ĉiaj laĉis kune en ĉeno. Malvarmeta. Ĉu vi aŭdas tion iom pli bona? Publiko: Yeah. PROFESORO: Bone. Do la maniero ke kiel vi uloj povas vidi, tipa ligilon listo estas strukturita Estas vi havas kapon. Vi havas la kapon valoro kiu ne esti notitaj de ajna alia puntero. Sed ĝi tuj atentigi ĉe, aŭ referenco, alia nodo. La nodo post tuj referenci nodo post tio, kaj tiel plu kaj tiel plu ĝis vi finfine atingis la fino de via ligilo listo. Kaj vi simple ne havas puntero tie. Do, pensu kiel, sur ĉeno, aŭ eĉ se iu el vi infanoj faris, mi ne scias, kiel kun Fruit Loops kiam vi estis malgranda. Vi farus string ilin kune kaj surhavi ilin sur vian kolon. Kredas ke la ĝusta sama afero. Vi havas tiujn etulojn ke vi povas kordoj kune ke punkto al unu post ĝi, la unu post ĝin, kaj tiel plu kaj tiel plu ĝis vi havas ĉenon de datumstrukturo ke vi povas uzi tamen vi ŝatas. Do la vojo ke ĉi ni farus tipe enmeti aŭ forigi ajna nodo de ligo listo estas tre malsamaj Dependanta sur kie tiu nodo estas. Do, ekzemple, ĉar montriloj ĉiam montrante specifan valoron, kiam vi forigas aŭ enmeti nodon, Vi volas certigi ke la montrilon estas ĉiuj celantaj la gxustajxon. Do se vi volis potenciale enmeti nova nodo kun la valoro de unu interne ordo ligilo listo, ni ĉiuj scias tie de la bildo kiu tuj Eniru inter kapo kaj du, dekstra? Ĉar unu persvadas ĝuste tie. Sed la maniero en kiu ni farus ke estas per unua dereferencing la montrilon de kapo kaj sendante ke al unu. Sed ni venis en de problemo tie. Ĉu iu povas vidi kion la problemo estas se ni estis unua dereference la montrilon de kapo al unu? Kio problemo povus ni trafos se ni provas aldoni tiun al la fronto de nia tabelo? Spektantaro: [inaudible] PROFESORO: Ekzakte. Do jen ni havas puntero kiu estis iam indikanta el la kapo al du. Sed se vi forigi ke montrilo, vi punkto al unu, ni nun havas nenian ideon kien iri por trovi du. Ĉar kiel mi diris antaŭe, vi hvas giganta bloko de memoro en via komputilo. Ĉiuj tiuj nodoj povis hazarde intermetita en ajna loko en via komputilo. Kaj vi ne scias kiel iri pri trovanta ke. Kaj tiel vi devas havi punteros indikante ĉiuj nodoj fine. Alie, se vi hazarde dereference unu sen unuan manieron doni valoro unua, vi estas simple tuj perdas ĉio poste. Do kion ni tuj faras estas, vi unue deziras krei montrilo sur la nodo vi volas enigi. Punkto al kie vi volas enmeti ĝin, kaj tiam poste vi povus atentigi kapo reen al unu. Ĉu tio havas sencon por ĉiuj ĉi tie? Granda. Pensu pri ĝi kiel ĵus kiel ĉeno. Se vi aldonas ĉeno, ĝi estas speco de intuicia kiamaniere vi irus pri enmeto tio. Bone, do ke estas vere multe pli mallonga ol mi pensis ĝin estus, kvin-minuta Spiel sur ligilon listoj. Ĝuste tiel vi infanoj havas la baza ideo pri kio tio estas. Ĉi tie ni havas la agendon por kvizo nulo. Ne lasu tiun timigi vin. Mi scias ke estas multe da informo. Ĝi aspektas tre timiga. Estas ankaŭ multe de mi pensas, CSC speco de terminoj. Aĵoj kiel deksesuma kordoj, punteros, dinamika memoro atribuoj estas tre timiga sondado terminojn. Sed ni tuj rompos ilin malsupren, fari iuj praktiko problemoj por ke vi infanoj ĉiuj estas preta por tiu testo. Kiel multaj el vi infanoj havas jam ekstudis? OK, vi infanoj probable volas komenci ekuzi sur tio, ĉar la kvizo estas morgaŭ. Aŭ ĵaŭdo por kelkaj el vi. Yeah, do ni tuj iru super iu praktiko problemoj. Se vi infanoj ĉiuj volas preni el paperfolio, krajono. Ni tuj simple pasigi la vasta plimulto de la hodiaŭa sekcio trapasado iom de tiu tiel vi infanoj havas ideo de kio atendi sur la kvizo. BONE. Paro de loĝistikaj detaligas tiel, por neniu kiu ne estis al ligantaj tie, se vi iras al cs50.yale.edu, sur la fronto ĉi paĝo estas ligo kiu diras "Pri Kvizo Nulo." Link portas vin tie. Se vi ne legis ĝin, bonvolu legi ĝin. Ĉar ĝi diras vi vere gravaj informojn pri la kvizo. Mi tuj tiri tiun el ke nur ĉar, fizike, se vi uloj ne scias kie iri, ni havos problemojn. Kaj do se via lasta en terminoj kun A al N, iru al la jurstudo aŭditorio. Kaj se via lasta komenciĝas per P al Z, iru al Davies Aŭditorio. Kaj tio validas nur por homoj en la merkredo sekcio. Se vi prenas la kvizon en Ĵaŭdo, vi iras al SSS 114 kie via prelego tipe estas. Spektantaro: [inaudible] PROFESORO: O al Z, vi tuj iri al la Davies aŭditorio. Mi tuj ŝanĝi tion, ĉu ne? Oh, jes, vi nur malsukcesos aŭtomate. Oh yeah, jen vi Christa. Jes, mia malbona. Yep, ho al Z, vi tuj iri al Davies Auditorim. Mi tuj riparos tiun fojon Mi alŝuti. Yeah. Kaj tiam ankaŭ iom Gravas menso estas ke merkredo, se vi estas oficiale enskribiĝis en la merkredo sekcio, vi devas preni vian kvizon en merkredo. Kaj se vi enskribiĝis en ĵaŭdo, vi devas preni vian kvizon ĵaŭdo. Kaj estas dum klaso tempo. Kie, mi kredas ke estas kiel 1:00 ĝis 2:15 merkrede kaj 2:30 al 3:45 la ĵaŭdo. Se vi havas irreconciliables konfliktoj, Dean ekskuzoj estas la sola afero, bedaŭrinde, ni povas preni. Ĉar ni havis vasta plimulto de petoj ŝanĝi de merkredo al ĵaŭdo. Kiun ni ne povas honori se ni havas Dekano peto. BONE. Do antaŭ ni akiras komencita sur paro de la praktiko problemoj, Mi simple tuj transiri Andy helpema konsiloj por sukceso. Vi uloj, kiam vi studas, vi vere volas praktiki skribi kodon permane. La unuan fojon mi iam prenis CS kvizo, mi ne praktiko skribo kodon mane antaŭe kaj estis ekstreme ŝoka ĉe kiel malfacile estis. Kiam vi infanoj ne akiras en la kutimon de tajpado el ĉio, ĝi venas tre nature esti povis esti autocompleted krampoj kaj punktokomojn tie. Kiam vi skribas ĝin mane, foje ĝi estas tre tre facile forgesi punktokomo, aŭ forgesu fermi harpinglo, aŭ forgesu fermi dupunkto, aŭ io simila. Do kiam vi skribas kodon mane, ĝi estas tre malsama sento. Do vi infanoj, kiam vi laboras tra iuj de la praktiko problemoj, estus bona por vere praktiki hodiaŭ. Aŭ morgaŭ, mi supozas, se vi estas prenante la kvizo ĵaŭde. Due, ni havas la lastan, kiel, ok-jara valoro de praktiko kvizojn rete. Ĉijara kvizo verŝajne estos tre tre simila al ĉiuj ili. Ili ĉiuj estas tre similaj. Vi ia enir la stilo de la tipo de demandoj ke ni petas, la tipo de funkcioj kiuj ni skribu ĝin en, kaj tiel plu, kaj tiel plu. Do prenu la praktiko kvizoj, Precipe sub tempolimoj. 75 minutoj fari la kvizo estas ne multa kvanto de tempo. Estas tre, tre longe. Do vi infanoj vere volas certigi ke vi uloj estas en la kutimon de skribo kodon permane rapide. Ĉar vi ne volas la unuan tempo vidi kvizon de tiu longo esti sur via kvizo. Vi infanoj vere volas certigi ke vi praktikas anticipe. Kvara, vi volas revizii la prelego kaj sekcio diapozitivoj. Vi ne devas enmemorigi aferojn. Fakte, ĉiu estas permesita unu folio de blanka papero notoj, fronto kaj dorso. Vi uloj povas tajpi aŭ skribi. Se vi trovas vin mem devanta parkerigi io, metu ĝin sur tiu folio. Mi garantias al vi, vi ne volas esti senmoviĝita en la mezo de tiu kvizo esti kiel, oh yeah, Kio estas la runtime de tiu speco kontre tian. Nur metu ĝin malsupren kaj kopiu ĝin rekte el via noto folio. Tiam vi povas fakte nur uzas vian cerbo pensi pri la problemoj anstataŭ devi memori faktojn. Kaj tiel vere utiligi de ajna niĉo detaloj ke vi pensas vin devas parkerigi, Plop ĝin malsupren sur la revizio folio. OK, demandojn logísticamente koncerne la kvizo antaŭ ni starti iun kvizo problemoj praktiki? Yeah? Publiko: mi ne havis oportunon rigardi la kvizo [inaudible] sed ĝi tuj estos Aplikaĵo kutime, aŭ ĉu estas ankaŭ tuj estos, kiel, scion demandoj? PROFESORO: Estas multe. Do, iu kiu mi estus priskribita la kvizo is-- mi kunmetis kelkaj praktiko problemoj ke mi tiris el ĉiuj kvizojn. Sed vi vidos ke ekzistas du ĉefaj tipoj de demandoj ni petos vin. Ĝi klopodas tre malalta nivelo detalo de aĵoj. Ni donos al vi malgrandan eron de kodo kaj diri, ĉu estas eraro ĉi tie? Kio estus presi el tie? Kion ĉi kodo produkti, kaj tiel plu. Do tre malalta nivelo informo detaloj. Kaj sur la turnon flanko, ni havas tre altnivela scio-bazita demandoj. Ĉu vi povas klarigi kion la diferenco inter duuma serĉo kaj lineara serĉo? Kial ni volas uzi unu super la alia? Eble, kio estas GDB? Kial ni volas uzi GDB? Pli alta nivelo, pli fundamentan kompreno demandoj. Do vi vidos miksaĵo de ambaux sur via kvizo. Ion alian antaŭ ni gvidi rekte en ĝi? BONE. Publiko: Unu pli. PROFESORO: Ho, unu plia. Pardonon. Publiko: Jes, ĝi estas en ordo. Do, 75 minutoj estas tro mallonga, kiel ĝi estas neverŝajna ke ni finos? Aŭ, kiel, 75 minutoj Estas ĝuste tiel tempo kiel ni bezonus, se ni estis taŭge preparita? PROFESORO: Bone, do la kvizo estas defianta. Estas definitive defia. Vi trovos vin mem mallonga ĝustatempe. Vi probable tuj frapi, kiel 10, 15 minutoj por iri, kaj estante kiel, merdo. Mi tiom multe por fari. Kaj tio estas tute bone. Ĉiu tuj sentas la sama maniero. Nur esti tre konscia pri kiom da tempo vi havas. Kaj tiel tio estas kial mi diras al vi uloj ja la praktiko kvizojn. Ĉar ĝi vere donas grandan senson de kio la kvizo tuj estos kiel. Do se vi trovas vin esti povos finis la praktikon kvizojn en bona kvanto de tempo, vi povas paŝadi mem bone, tiam vi ne havas problemon merkredon aŭ ĵaŭdon. Malvarmeta. Do se ĉiuj wants-- mi pensas plej multaj homoj havas paperfoliojn eksteren jam. Mi tuj esence nur al vi specimenon demandoj, donu vin uloj, kiel, kelkaj minutoj, por plenumi ilin. Kaj ni transiru kiel klaso kion la respondoj al ili estas. Do temas pri tre tipa frua demando ni demandi vin, simple konvertanta numeroj inter malsamaj bazoj. Duuma, kiel vi uloj povas revokon, estas duuma. Decimala estas bazo 10, aŭ kion ni kiel homoj tipe interpretas. Deksesuma estas bazo 16, kiu estas nulo tra naŭ same kiel A tra F. Do ekzistas kvar numeroj Mi estas demandante vin uloj konverti tie. Mi donos al vi plaĉas, tri al kvar minutoj pensi tra kiel ni irus pri solvi tion. Spektantaro: Ĉu ni permesis kalkuliloj? PROFESORO: Vi ne bezonas kalkuliloj, yeah. Mi pensas baza Krome, mi pensas, estas ĉiuj vi infanoj estos petitaj fari. Kaj ĝuste tial mi specon de havi senton de kiam ĉiu estas farita, rigardu supren ondo, Mi ne scias, rideti, aspektas feliĉa se vi faris. Yeah. Eble kelkaj pli minutoj. OK, ni enportu ilin. Mi intence tuj donu vin infanoj malpli tempo ol vi probable bezonas fari kelkajn el tiuj problemoj, simple ĉar mi volas certigi ke ni trapasas faskon da problemoj. Do neniu maltrankviligas se vi ne havas ŝancon fini. Plene OK dum vi havas ideon de kiel iri pri tio. Do ni iru antaŭen kaj fari la unua unu. Do unue, ĉu iu volas diri al mi en duuma, kio faras ĉiu el tiuj ciferoj reprezentas en terminoj de iliaj valoroj? Yeah? Publiko: Du al la potenco nulo, du al oni. PROFESORO: Ekzakte. So. Bone, do tipe kiam ni estas en bazo 10 ĉiuj tiuj reprezentas estas, kiel, 10 al la bazo de nulo, ĉu ne? Tio estas via onia loko. Ĉiuj viaj 10 La loko estas estas 10 al la potenco de unu. Vi 100 la loko estas 10 al la potenco de du. Kion ajn bazo vi estas en tuj fari kun la ĝusta sama afero, nur kun malsama bazo. Do duuma, cxio estas duuma. Vi tuj konverti ĉiujn ciferoj en du al kiom povon de tiu cifero. Kaj tiel en tiu senco, ni povas havi facila vojo de povi adicii aŭ Resume ĉiuj nombroj en ordo konverti en bazo 10. Do ĉu iu volas diri al mi kion la respondo al la unua estas en bazo dek? Publiko: Du, [inaudible] PROFESORO: Yeah. Publiko: 42. PROFESORO: 42, tie vi iras. Do la vojo ni akiris ĉi respondo estis apud farante du la unua, kiu estas du. Plus du la tria, kiu estas ok. Plus du al la kvina, kiu estas kio ajn estas lasita super. Vi resumi ilin kaj estas 42. Ĉiu iu konfuzita sur kiel ni tion aŭdas? Do baza Krome, kiel Mi diris, vi devus esti bone. Se ne, nu, ni povas praktiki tion ankaŭ. Sed tio estas tute certe. Malvarmeta. Ĉu iu volas doni min la respondi al la dua unu tiel? 50? Bona. Iu konfuzita sur kiel ni akiris ke aŭ? Cool, mi volas la respondojn sur la sekva glito. Do neniu maltrankviligas se vi bezonas kopii ĝin. Bone, do deksesuma estas iom delikata. sed mi tuj montros vin infanoj ŝparvojo por kiel fari ĝin. Do deksesuma, kiel vi memoru, ĉiuj estas esti 16. Kaj ĉar ni kiel homoj ne vere havas 16 numerojn por reprezenti tion, Ni iras de nulo ĝis naŭ, kiun niaj unuaj 10 valoroj, kaj tiam ni fari A tra F, kio estas la sekva ses valoroj. Do la plej facila maniero iri de ajna duuma nombro al deksesuma estas rompi ilin en duonoj. Kaj do ajna duuma nombro ni donos vi probable havos ok ciferoj. Vi povas simple rompi ilin en la mezo. Do la unua one-- unu unu, unu unu, unu, unu, unu unu. Speco de pensi ĝin, sciu, desegni oblikvo aŭ punkto en inter ili. Kaj vi povas simple konverti rekte ajn tiu estas la unua nombro de deksesumaj, kaj kion ajn tie estas la dua de deksesumaj. Do memoru el komuna skribmaniero, Kion deksesumaj valoroj komenci? Publiko: Nulo. PROFESORO: 0x. Do ni scias, ke iam ni petas vin konverti ajnan numeron al deksesuma, aŭ ajna tempo vi vidas ian numeron kiu komencas kun 0x, vi scias ke ĝi estas deksesuma valoro. Kaj tiam vi tuj estos petita determini kio tiuj du ciferoj estas. Kaj la vojo vi faros tion, kalkulado ĝis ke duono kaj kalkulado ĝis ke duono. Do en tiu ekzemplo, kion estus unu, unu, unu, unu esti? Kio valoro de tiu? Tio estus F, dekstra? Tio estus 15. Do tiu estus F. Unu, unu, unu, unu jen ankaŭ F. Do unu, unu, unu, unu, unu, unu, unu, en deksesuma, ĉiu estas estas 0XFF. Pro tiu duono reprezentis F, la valoro de 15, kaj tiu duono reprezentis F, la valoro 15. Ĉar rememoru, ni estas rakonti de nulo ĝis naŭ. A estas kiel 10, B estas kiel 11, F estas 15. Ĉu tio havas sencon por ĉiuj, kiel Ni akiris de duuma al Deksesuma? Publiko: Kaj do kiamaniere ni preni 15 el la unu, unu, unu, unu? PROFESORO: Jes, tio estas binara, dekstra? Imagu ĉi estas nur duuma nombro. Do vi havas du por la nula, kiu estas unu. Publiko: Oh, OK. Do vi simple nombri ĝin. PROFESORO: Yeah, kaj tiam vi simple nombri ke ekstere. Jen ĉio estas. Publiko: OK. PROFESORO: OK. Publiko: Do ​​vi iras de duuma al dekuma al deksesuma? PROFESORO: Jen la plej facila maniero fari tion, jes. Vi ne tuj al dekuma ĉar dekuma nur havas nulo al naŭ. Ni estas nur speco de fendanta ĉi supre en du. Spektantaro: [inaudible] uzante dekuman trovi kio egalas ĝis en deksesuma. PROFESORO: Mi volas diri, ke vi estas kalkulado uzante bazajn math. Publiko: Yeah. PROFESORO: Jes, sufiĉe multe. Ĝi estas iom konfuza. Sed ĝuste scias ke vi povas dividi supren ajn tiu valoro estas en nur duonoj. Rigardu, kian en duuma? Kiu nombro estas tiu? Ĝi tuj estos ion de nulo al F. Ĉi tie estas ankaŭ tuj estos ion de nulo al F. Kaj tiam vi povas simple meti tiuj du prava. Publiko: OK. PROFESORO: Yep. BONE. Do vi infanoj volas provu la sekva tiam? Nulo, unu, nulo unu, unu, nul, unu nulo. Mi donos al vi infanoj kiel 30 sekundoj, ĉar vi probable ne konas la ruzon kiel fari tion antaŭe. OK, iu volas ricevi ĉi unu pafon? 0X5A. PROFESORO: 0X5A. 5a. Bona. Do ĉi tie estus be-- vi volas informi nin kiel vi tion aŭdas? Unue, kiel vi akiris la kvin? Publiko: Ĉar nulo, unu, nul, unu estas kvin. PROFESORO: Ĉu ĉiuj komprenis kial nulo, unu, nulo, unu estas kvin? Vi havas unu tie. Vi havas nenion en du al la unua. En du al la dua, vi havi unu, kiu estas kvar. Do vi aldonas la kvar plus la unu, Vi havas kvin. Ĉiu bona? BONE. Kaj tiam kion ĉi esti kaj kial? Kio numeron does A respondas al? Publiko: 10. PROFESORO: Kaj kion tio en bazo du? Spektantaro: [inaudible] PROFESORO: Ekzakte. Do tiu dua valoro tie estus 0X5A. Ĉiu bona pri kiel konverti? Ĝi estas multe pli simpla ol vi opinias ke estas. Mi nur volas certigi vi scias helpemaj konsiletoj kaj lertaĵoj por kiel fari tion. Publiko: Kial povas vi ĵus fendis ĝin meze tiel? Nur esti kiel, OK, Mi nur tuj zorgi pri tiuj unuaj [inaudible]? PROFESORO: Pro tio estas vere la maniero deksesumaj valoroj estas reprezentitaj. 0x, kiu efektive signifas nenio alia ol diranta vin ke ĝi estas deksesuma nombro. Kaj tiu ĉiam reprezentas la unuaj kvar ciferoj. Kaj tiu ĉiam reprezentas la lastaj kvar ciferoj. Do, tiuj du ciferoj nur respondas al malsamaj bitoj. Publiko: Do ​​ni always-- PROFESORO: Vi ĉiam ricevos ok valoro bitoj. Spektantaro: Ĉu nur kiel aĵo tie aŭ ke afero ĉie? PROFESORO: Tio estas nur afero en komputiloj, Yep. Publiko: OK. Imponega. PROFESORO: Ankaŭ, tial en ĉi tiu ekzemplo ni konvertita de duuma al decimala, kaj de duuma al deksesuma. Vi infanoj deziras fari certe vin ankaŭ praktiki iras al la revés. Do, se mi donis al vi 0XFF, vi povis tiri ke ekstere en duuma, dekstra? Vi konverti F en duuma, kiu estas unu, unu, unu, unu, konverti F al duuma, kiu estas unu, unu, unu, unu. Do ni petos al vi fari la revés. Do dekuma al duuma, aŭ deksesuma al duuma. Do vi deziras fari certe vin scias ambaŭ manieroj. Ni probable demandos vin kombino de la du. Jes, vi havas demandon? Mi povas Konsideru vi estas bone? Publiko: Yeah. PROFESORO: OK. Ĉu mi bone viŝi ĉi? Granda. Bone, do respondoj estas ĉi tie se iu Estas scivola poste sur kaj akiri konfuzita. BONE. Spektantaro: Ĉu gravas se ni metis niaj literoj en kapitolon aŭ minuskle? PROFESORO: Jes, ĉar en deksesuma, per konvencio, ĉiuj gravuloj estas majuskle. Do A tra F estas tuj esti majuskle. Se vi metis minuskla a, mi ne scias se ni estus nepre marki ĝin malĝusta. Sed teorie, tio ne teknike kiel vi laŭsupoze havas ĝin. Do ili ĉiuj devas esti majuskle. Jes, bona demando. BONE. Dua demando. Konsideri ĉi amindaj programo tie. Mi petos la demando, Mi revenos ĉi. Do, unue, kio estas ene de norma io.h tio interesas al la programo? Due, kion signifas void signifikar en linio tri? Kaj tria, kion signifas reveni nulo de ĉefa, kiel linion ses, ĝenerale signifi? Se vi infanoj volas skribi tiujn malsupren, ĉar mi devos ŝanĝi reen al la diapozitivo nur do vi povas vidi kodon. Tiu estas ekzemplo de, kiel, eble alta nivelo demandon kie ni petas vin kion tio signifas en programo. Ĉiu bona por mi reiru al la tobogano? Bone, mojose. Do mi donos al vi infanoj kiel eble tri Minutoj rigardi ĉi tiu reala rapida. Bone, do ĉi onia kiel sufiĉe facila, koncepte. Ĉu iu volas diri al mi kio estas unua ene de hash inkluzive nia norma io.h biblioteko dosieron? Kial ni bezonas ke biblioteko inkludita por tiu programo? Kion ĉi tie ni bezonas ĝin? Yeah? Publiko: Estas ke kiam vi metas ke printf? PROFESORO: Ekzakte. Do printf, ajna tempo vi preni enigaĵon de la uzanto kaj presaĵo ion al la ekrano, tio estas la norma enigo, eligo biblioteko. Pensu nur ke bare enigo, eligo. Ĉu mi devas eliro? Jes mi faras. Do mi scias ke mi ĉiam tuj bezonas la normigi i.o biblioteko. Do printf estas la funkcio per kiu ni devas aliri kaj hashtag inkluzivi la norma i.o biblioteko. BONE. Dua, kion void signifas? Ni havas la int main (void), kio faras neniigas tie signifas tie sur linio tri? Jes, en la dorso. Spektantaro: [inaudible] PROFESORO: Ekzakte. Do memoru, ni lernis ekde nia pset ke vi povas reale specifi komandlinio argumentoj ke via programo, ke vi ĉefa funkcio, prenas kiel vi, la uzanto, nomas. Se ni havas nula, tio signifas ke vi povis nur kuri la programon rekte sen ajna komandlinio argumentoj. Ĉiu klara sur tio? BONE. Kaj laste kial ni tedas faras tiu reveno nulo afero ĉi tie? Kial ni eĉ havas int ĉefa? Kial povas ne ni nur devas malplenon ĉefa malplenon? Yeah? Spektantaro: Nur por ke ni povas certi ke la programo estas eliranta sukcese, kiel kontraste al se ĝi estis numerita. Kaj ni scius ke tio malsama speco de eraro. PROFESORO: Jes, ĝuste. Tiu estas nur tre konvencia afero, ke ni faru, estas ke nur fine de via programo, nur por certigi ke via ĉefa funkcio kuras ĝuste, ni ĉiam volas fari revenon nulo. Eĉ kvankam ni nepre ne vidas, ke presitaj ie. Ĉar kiel programistoj, sciu, se vi havas multajn malsamajn liniojn de kodo kaj vi ne scias kie tiuj iras malĝustan, kaj se eraro okazas vi volas certigi ke vi ricevas tiun eraron. Kaj tiel tipe se iu eliras malĝusta ni havos revenon de unu nur certigi ni scias ke ĝi estas. Do se vi vidas reveno nulo, kiu tipe signifas via programo estas ekzekutita sukcese. Bona? Malvarmeta. OK, dua programo tie. Konsideru tion. Kaj se vi infanoj vidos flosi, vi uloj povas verŝajne havi bonan ideon pri kion Mi volis demandi vin. Kaj post tiu programo ekzekutas, kiel vi povas vidi, Mi deklarante kaleŝego ene mia ĉefa funkcio. Mi enoficigante ĝin "respondis," kaj mi fiksanta ke egala al unu dividite per 10. Mi presi el, al unu dekuma loko, kiu flosas. Kaj poste mi reveni nula. Do al la ekzekuti la programo, pensas reen al avidaj nun, tiu programo presas 0.0. Kiel ĉiuj scias, espereble ni ĉiuj scias, oni dividita per 10 estas ne 0.00, ĝi estas 0.1. Sed klarigi kial ĉi programo pensas ke 1 dividita per 10 presaĵojn al 0,1 aliaj ol 0.1? Mi donos al vi infanoj eble kiel 30 sekundoj nur rapide pripensi tion kaj mi reiros al la programo. BONE. Ĉiu volas doni ĝin pafo? En tri frazoj aŭ malpli, ĉar tipe ni estas tuj restriktos ĉiuj respondoj tri frazoj aŭ malpli tiel vi ne simple ripetadi hazarda aferojn sur via kvizo. Yeah, preni pafon. Publiko: Do ​​mi kredas, ke estas tiu afero nomata, kiel, [inaudible] Do povus esti, ekzemple, povus esti, kiel, 0.09, ke kie vi presi la unuan cifera, estus al 0.0? PROFESORO: Close, ne tute. Christabell? Spektantaro: Vi divisoria kaj 10 kaj ili estas entjeroj. Kaj tiel la maniero ke ĝi estas tuj por stoki ĝin kiel entjero. Kaj tial la plej proksima entjero estus 0,0. Kaj tiel tio estas 0.1. PROFESORO: Jes, tio estas vere bona. Tio estas la ĝusta respondo. Do tiu estas tre konfuza koncepto por multaj infanoj. Kaj mi vere volas certigi ke ĉi estas plifortigita en ĉies kapo. Do kion ni nomas flosanta punkto imprecision, kie la kialo kial multe de viaj programoj en avidaj ne funkciis komence estis ĉar vi forgesis jxetos viajn variablo. Do kio Christabell diris estis tute korekta. Al kaleŝego estas imanente malpreciza. Ĉar en komputilo, dekstra, ni havas finia kvanto de bitoj de memoro ni povas uzi por reprezenti nombrojn. Do, ekzemple, ĉi CS50 ID is-- Mi kredas ke estas 64-bita komputilo. Kaleŝego povas nur esti prezentita per finia kvanto de tiuj bitoj. Kaj tial 0.1 kun senfina nuloj, Tio estis 0.1 estas, ĉu ne? Sed ni ne povas reale stoki tiun numeron en nia komputilo. Ni simple ne havas sufiĉa memoro fari tion. Kaj tial la plej proksima proksimumado de kio stokitaj en memoro estas fakte io kiel 0,000 ion, ion, ion, ion. Kiu, fojo oni senpintigas ĝi, preterpasas malsupren al 0.0. Do tiu ekzemplo estas nur unu kiu pruvas multaj aferoj ni havos kiam ajn ni estas provas malĝuste fari math sen jxetantajn kiel alia entjero. Do simple estu singarda de ĉi tiu okazante. Sur kvizoj, se ni al vi bloko de kodo kaj ĝi estas kiel, kio presas fine? Kaj se ĝi estas iu hazarda valoro vi uloj devus scii kial tio okazas. Yeah? Publiko: malpligrandigi estas forigi ĉio post certa punkto? [Inaudible] PROFESORO: Jes, do reale ĉi estas vere malbona ekzemplo, ĉar 0,100 ajn reale estus malpligrandigi malsupren al 0.1. Sed se vi estus kuri it-- mi ne memori, ĉar pasintjare ili kuris sur malsama programo. Ili kuris ĝin en iu nomita la CS50 Appliance, kiu estas malsama de la ID. Tio estis 32-bita sistemo, mi pensas. Kaj tiel estis malsamaj nombroj. Sed esence, nur scias, ke la tuta koncepto de tranĉo kaj kiel ĝi ĵus tranĉas aferojn ekstere. Kaj do se rounds-- Publiko: Sen rondigo. PROFESORO: Ekzakte. Yeah. Malvarmeta. Saluton, en la dorso. Ni ĵus tuj super iuj kvizo revizio demandoj. Bone. Do konsideru alian programon tie. Mi tuj donos al vi infanoj paro minutojn por legi tiujn ĉi. Tiu estas iu kiu estis por tre ĵus ke mi pensas blovis multajn vin uloj mensojn. Sed ni tuj paroli tra ĉi denove nur certigi vin kompreni ĝin tute. BONE. BONE. Ĉiu bezonas pli tempo por legi tra tiu kodo? BONE. Do ŝajnas al mi ke en tiu programo mi estas kreante du kordoj uzante GetString. Unu nomis s kaj alvokis t. Kaj se ili estas egalaj egalas al ĉiu alia, ĝi devus presi "Vi tajpas la saman aferon. " Sed elsewise, estus presi, "Vi tajpita malsamaj aferoj, "ĉu ne? Ŝajnas tre, tre simpla. Sed, tamen, se mi efektive provu skribi ĉi programo, ĝi similas ke eĉ kiam mi input la ĝusta sama kordoj, ĝi ankoraŭ presas el "Vi tajpita malsamaj aferoj! " Ĉu iu volas preni pafis kial tiu programo ĉiam respondas ke la enigoj estas malsamaj, eĉ kiam la vortoj mem estas samaj? Do se mi input-- Davido amo uzi ekzemplon kiel panjo, ĉu ne? Minuskla M-Aŭ-M por S, T egalas minuskla M-Aŭ-M. Se mi kuris tra tiu ke kodo, kial ĝi presi "vi tajpis malsamajn aferojn?" Ĉu iu bezonas pli tempon por pensi pri tio? OK, mi opinias ke ni estas bonaj. Yeah? Publiko: Bone, do ĝi estas io pri kie ĝi estas stokita en la memoro, ĉu ne? PROFESORO: Yep. Spektantaro: Kie estas kvazaŭ, se tiu string s estas stokita ĉe memoro spot-- Mi elpensi this-- estas nulo. PROFESORO: Sure. Publiko: Kaj kordo t estas stokita ĉe memoro lokon, kiel, 167, kaj tiam nulo ne egala 167. PROFESORO: Ekzakte. Bone, do memoras tiun nekredeblan revelacio ni klarigis al vi infanoj tiu pasinta semajno, ke kordoj ne vere ekzistas? Kiam ni kreas ion nomatan string ni estas, fakte, krei ion nomatan char stelo. Kiuj ĉiu estas estas puntero al ŝnureto aŭ tabelo de signoj. Kaj tial en ĉi tiu ekzemplo, se mi estis enigi M-Aŭ-M la vojon ke mia komputilo estus stoki ĝin estas ene memoro backslash nulo, ĉu ne? Tiuj kvar karakteroj, signoj, estus stokita ie. Kaj tiam tiuj kvar karakteroj, backslash nulo, estas stokitaj aliloke, ĉu ne? Mi havas neniun ideon kie la adresoj estas, ili estas ie en mia komputilo. Sed mi ne precize scias, kie ili estas. Kiam mi kreas kordo s, ĉiuj kiuj vere estas estas puntero al la komenci de tiu ĉeno. Kaj kiam mi krei ĉi t valoro, ĉiuj ke estas puntero al tie. Kaj do kiam vi provas egaligi kaj kontroli vidi se s estas egaluloj egalas al t, la komputilo Estas vere nur reveni al vi la adreson de tiu m kaj la adreso de tiu m. Kaj ĉar ili estas du apartaj pecoj de datumoj kiu estas stokitaj en du malsamaj adresoj en via komputilo, via komputilo estas neniam iranta rekoni ilin kiel esti la sama. Ĉu iu volas doni ŝancon al kio ni devus fari se ni volis korekti tion kaj havas ĝentilan kurado programo anstataŭe? Pensu pri tio dum kelkaj sekundoj. Kion ni bezonas ŝanĝi ricevas tiun programon funkciado la vojo ni volas ke ĝi funkciu? Yeah, volas preni ponardopiko ĉe ĝi? Spektantaro: Ĉu ni povas provi dereference la montrilo kaj kontroli tra la tabelo? PROFESORO: Tio estas unu maniero por fari. Do, kio estas via nomo denove? Mi bedaŭras, memorigi min. Zii: Zee. PROFESORO: Yeah, do kion Zee sugestis absolute labori. Dekstra? Ni povis dereference la montrilon kaj efektive iru kaj aliro la fizikaj datumoj ene de ĉi tie. Kaj ni povas nur kompari la tutan ekranon. Ni povas diri, OK, puntero, donu al mi kio estas ene tie. Ĝi revenus m. Kaj mi dirus, puntero, donu al mi kio estas ene tie. Reiri m. Ĉu tiuj matĉo? Jes. Tiam ni pluiru. Ni tenas kontrolanta la tutan du kordoj tutan vojon supren ĝis la fino kaj vidi se tiuj estas egalaj, se ĉiuj valoroj estas egalaj. Kaj se ĉiuj valoroj estas egalaj, tiam oni scias la kordoj estas vera. Absolute, jen kiel ni farus? Ĉu iu konfuzita sur neniu el tio? La tuta koncepto de kiel kordoj Estas vere nur punteros, kaj kiel ili surmetas't vere ekzistas? Kaj kial ni preni eraroj kiel la maniero kiel ni akiros gxin? Ĉar mi garantias vin uloj, punteros kaj ŝnuro atribuo kaj memoro tuj supreniru. Yeah? Spektantaro: [inaudible] dereference ĝin, vi simple metas stelon [inaudible] PROFESORO: Dekstra. Do al derererence montrilo rimedoj iri al tiu adreso de la montrilo kaj akiri la datumojn, la valoro ne. Kaj la maniero por fari tion estas stelo puntero. Ne konfuzi tio. Spektantaro: [inaudible]. PROFESORO: Yeah. Publiko: Do ​​vi povas simple skribi se stelo s egalaj egaluloj stelo t. PROFESORO: Nu, ne. No. Publiko: Tio ne sufiĉe bonas, ĉu ne? PROFESORO: Ne, ĉar vi estas nur kontrolanta la unua litero. Vi probable tuj bezonas ian buklo ke ripetas tra ĉiu ununura karaktero en ambaŭ kordoj. Yeah. Do se vi volis simple kontrolu se ili komencis per la samon, vi povas fari se, stelo s estas egala al stelo t. Tiam vi scias ke almenaŭ komenciĝis kun la sama karaktero. Yeah? Publiko: Do ​​la vojon vi ke estus kiel enigita por buklo aŭ puntero? PROFESORO: Yeah. Preskaux nur por buklo. Memoru, David en klaso menciita la libera sintaksa sukero? Li havis tiun tre konfuza afero de stelo t plus unu, kie ĝi integrus tra kaj ĝi movas la puntero? La facila maniero fari tio decas t de i. Do estas nur tabelo. La vojo ke vi havus por buklo kiu kuris de nulo al mi, kie i estas la longo de la kordo, vi povus simple skribi ke anstataŭ fari la tutaj montrilo, referenco afero. Kaj tio estas ĝuste ekvivalenta en via komputilo. Vi infanoj verŝajne ne bezonas scii ke, sed estas bona al nur speco de havas en la dorso vian menson. Nur scii ke la komputilo rekonas malsamajn blokojn de kodo kiel la sama afero. Ĉar tio estas nur multe pli uzanto amika por ni prezenti ĝin kiel ĝi estas tabelo. Estas nur facila. Publiko: Do ​​uzi strlen ŝati, get-- PROFESORO: Yeah. Publiko: OK. PROFESORO: Vi povis uzi strlen aŭ, se vi ne havas strlen vi povas nur fari supren ĝis vi batis backslash nula por ambaŭ. Ĉu laborus. Yeah. Publiko: Do ​​estas dereference ĉiun sola karaktero se ni reale skribi ĉi tiun kodon, ni povus nur fari t krampoj i ŝatas kun la stelo antaŭ ĝi? PROFESORO: Yeah, egalas egalas s krampo i, kaj tiam gardu movanta i malsupren ĝis vi batis la fino. Jes, tion vi farus. Kaj mi fakte havas apud ekzemplo pri kiam ni efektive skribi strlen tiom vi infanoj volas speco de alveni al ludi kun ĝi iom. Do estas cxiu klara sur nur memoro, kordoj, punteros, kvalito adresoj? Kelkaj alta nivelo konceptoj ke vi volo por certe bezonas scii sur la kvizo morgaŭ. Bone. Bona. Yep. Bone, do unu afero ke ni ankaŭ demandas vi, kiel ni faras ĉiun jaron sur kvizon, estas, supozu ke vi forgesis (kiu ni ŝajne forgesas fari ĉiujare) en kiu kaplinio dosiero strlen estas deklarita. Kaj tial ni devas reverki ĝin mem. Jen listo de gvidlinioj ke ni povas prezenti al vi uloj kie vi akiras supozi ke S La ŝnuro ne estos nula. Vi povas supozi ke s estos finita kun backslash nula. Do vi scias tion ĝi tuj finos kun. Kaj, ekzemple, ke la longo de saluton estus kvin. Do vi povas supozi ke saluton Estos kvin, H-E-L-L-O. Vi ne devas supozi ke la Backside nulo kontoj por la longo. Tiu lasta afero ĉi tie, do ne maltrankviligi entjero superflui. Ĉu iu memoras kio entjero superflui estas? Publiko: Goes trans longo de la [inaudible]. PROFESORO: Jes, vi povas klarigi iom, kion tio signifas? Publiko: Do, mi supozas ke superas al la detranĉante ekzemplo antaŭe. Sed se vi havas nur tiom da nombroj ke malobei la nombro de bitoj ke vi efektive povas atribui ĝin ke ĝi nur speco de ekstermita. PROFESORO: Jes, do sur tipa komputilo, kiom da bitoj ni havas? Publiko: 32? PROFESORO: Yeah, 32, dekstre. Kaj tiel tio, kion, kvar Miliardo, du miliardoj? Kvar miliardoj, ĝis kvar miliardoj pozitivaj entjeroj, ĉu ne? Du miliardoj negativa, du miliardoj pozitiva, dependas de kiel vi deziras fari ĝin. Do esence ni povas havi sufiĉe entjeroj kiuj povas iri supren du al la 31a minus 1, ĉu ne? Ĉar iam ni batis du al la 32-a, ni ne havas ke multe memoro en nia komputilo. Kaj do, teorie, mi povus veni supre kun nombro tio estas, kiel, du al la 46-a. Ĝi estas grandega-ass nombro, sed teorie vi povus. Kaj tiel entjero superflui estas se vi provas krei entjero kiu iras pli tie de kio via komputilo estas kapabla de stoki. Kaj tial vi uloj por tiu ekzemplo ne havas zorgi pri ni donanta vin gigante ŝnuro kiu estas du al la 32a signoj longaj. Tio estus vere signifas. Bone, do mi simple tuj donos you guys la bazo strukturo de tiu. Vi tuj kreos funkcio nomita int strlen kie enirpermesilon en, char stelo, aŭ ŝnuro, sagon al la kordo nomita s. Bone, ĉiuj kopiu ke malsupren. Malvarmeta. Oops-- alimaniere. Do jen estas ia kiel malfacila peco de problemo, Do mi donos al vi infanoj eble kvin al ses minutoj al speco de Brainstorm kaj skribu tiun funkcion el. Publiko: Ni ne konto por [inaudible], ni ne devas uzi entjero? PROFESORO: Ne, vi ne. Mi donos al vi infanoj aludo. Dum buklo povus esti tre utilaj ĉi tie. Yeah. Jen dolĉaĵoj. Candy ankaŭ estos disponeblaj por la kvizo, mi pensas. Do vi infanoj estos ĉiuj suker ĝis morgaŭ. Ne I-- vi akiris ĝin. Publiko: OK. PROFESORO: Yeah. Eble 30 sekundoj aŭ tiel. Bone, se vi estas ne faris, sen ĉagrenoj. Ni moviĝas tra ĉi kune. BONE. Do mi tuj nur la aranĝo la baza strukturo por tiu funkcio ĉi tie. Mez strlen. Unue, ĉu iu volas diri mi kion ke int signifas? Ni bezonas havi en tiu funkcio. Publiko: Strlen [inaudible]. PROFESORO: Ekzakte. Do negrave kion okazas en ĉi tie, Ni devas reveni entjero. Kaj kiel specifis en la spec, ni volas return-- Iri por ĝi, knaboj, nur observu tuj. Ĝi estas tute bona. Manĝu ĉion do mi ne havas preni ĝin reen, fakte. La int simple signifas ke vi estas tuj revenos entjero. Kio estas ĉi char stelo s? Kion tio signifas? Publiko: Kiel, kio esti enigo en. PROFESORO: Ekzakte. Kaj kio estas preskaŭ la samon kiel char steloj? Publiko: String? PROFESORO: Ekzakte. Do ĉiuj ni faras estas doni tiun puntero al ĉeno. BONE. Malvarmeta. Ankaŭ, ne forgesu, se ni forgesas doni al vi tiujn krampojn, ne forgesu skribi ilin mem. Ĉar teorie, via kodo estas malĝusta se vi forgesas skribi ilin. Nur ĉiam prunti atenton. Kiel, etulojn ke vi ne rimarkas kiam vi programado sur via tekkomputilo, ĉar via tekkomputilo faras ĝin por vi? Ne forgesu, kiam vi skribas mane. Yeah? Publiko: Sed kiel malĝusta? Kiel, do ni preni la tutan problemon erara? PROFESORO: Ne, ne. Ne maltrankviliĝu. Ĝi estas fakte teorie ebla por vin akiri plenan punktoj sur demando eĉ se via kodo neniam kuri en reala vivo. Mi sugestas ke vi ne provas fari ke okazas. Ekzemple, kiel se ĉio jen tie pravas, sed vi forgesos dupunkto aŭ harpinglo, via kodo ne efektive kuri. Sed ni estu kompatema. Yeah? Spektantaro: Ĉu vi devas komenti nian manskribo? PROFESORO: Ne, ne, ne maltrankviligas ke. Neniu dirante. Stilo devus esti bona. Kiel, ne smush ĉio sur unu linio. Ni ne ĝojigas kun vi, se vi faros tion. Ĉu iu volas donu al mi la unua linio? Aludo, ĝi estas tre facila. Yeah? Publiko: Int, n egalas nulo. Nur starigis vendotablo. PROFESORO: Do ni volas iun speco de vendotablo, dekstra? Mi simple tuj enoficigi ĝin "kalkuli" pro legeblecon. Kion ni volas agordi ĝin egala al? Publiko: Nulo. PROFESORO: Yep. Punktokomo. Ĝi estas ankaŭ tre stranga desegno punktokomojn. Nur praktiki fari tion. Do ni volas unue havi kontraŭordono de tipo int. Ĉar ni volas kalkuli kiom multaj karakteroj aŭ leteroj estas en tiu kordo, dekstra? Tre facila unua paŝo. Okej, eble iom pli kompleksa nun, kiel ni faru tion? Ĉu iu volas donu al mi la linion de kodo ke povu helpi maŝo tra kio ajn tio estas? Yeah, kuraĝa animo en la dorson? Publiko: Bone, do dum punkto asteriskoj, la yeah, stelo de s, estas ne egala al nulo, tiam faru ion? PROFESORO: Tio estas vere, vere proksima. Vere apude. Do mi tuj alparoli du aĵoj kun tio. Unue, ĝi ne estas ekzakte nul. Kio estas tio? Ĝi estas la nula Terminator, kio estas backslash nula. Do ili estas malsamaj en terminoj de kiel ili estas stokitaj. Do vi estas vere apude. Kaj due, ni ne volas simple movi la montrilon. Ni volas reale aliri la valorojn, dekstra? Kaj do kiel ni faros tion? Tre facila. Ne pensu pri punteros, ne pensas pri memoroj. Reiru al semajno du el ĉi kurso. Spektantaro: [inaudible]. PROFESORO: Segun, memoras? Kio estas ŝnuroj? Kiel ili stokis en memoro? Publiko: Ili levis. PROFESORO: Ili levigxas. Nu do kiel ni aliras ĉiu karaktero ene? Spektantaro: [inaudible]. PROFESORO: Ekzakte. Do while-- kio iras ene tie? S de - Publiko: I. PROFESORO: Ho, i ne ekzistas, ĉu? Publiko: Ho, grafo? PROFESORO: Ni povas nur uzi grafo, ĉu ne? Publiko: Pardonu, mi nomis i. PROFESORO: Jes, ĝi estas tute bona. Ni havas variablo supren tie jen jam estis deklaritaj kiel nia vendotablo. Do kial ni ne simple uzas tiun movi tra la tempo buklo? Ĉu tio havas sencon? Do dum s de count-- Ĉu iu volas doni al mi kio okazas post tie? Spektantaro: Ĝi ne egala. PROFESORO: ne egalas, ĉu ne? Ĝi estas la bang egalas, ekkrion punkto egalas, ajn vi uloj volas nomas ĝin ne equal-- Spektantaro: [inaudible]. PROFESORO: Yeah. Memoru ununura citaĵo estas por char, citiloj estas por linio. Estu zorgema kiam uzas ilin. Do kiam ni serĉas per la tabelo, la lasta karaktero, ni scias ni ne volas ĝin esti backslash nula. Do dum. Ni ne estas ĉe la fino de la kordo. Kion ni volas fari ene? Publiko: Ni volas aldoni al la vendotablo tiel havas pli alpago? PROFESORO: Ekzakte. Do jen ni tuj faros nombri, kalkuli plus alpago. Missing pli linion. Ni estas preskaŭ tie. Kion ni forgesas fari? Publiko: Revenante nulo? PROFESORO: Vi volas reveni nulo? Spektantaro: Ne, reveninte al strlen. Atendu. PROFESORO: Kiu estas stokita en? Publiko: Grafo. Grafo. PROFESORO: Ekzakte. Do jen ni tuj revenos grafo. Pro kio ni estas faras tie ultimately-- ni havas vendotablo variablo tio tuj pliigo tra nia kordoj. Ni tuj plu iri, teni irante, ĉirkaŭe kaj ĉirkaŭe en tiu ciklo. Kaj dum ni estas ne sur la fino de ĉi kordo, kiu estas la nula Terminator. Kaj ĉiufoje ni iru tra ĝin, ni aldonis al nia vendotablo. Kaj ni tuj plua kune en tiu tabelo. Kaj fine, iam ni batis la nula Terminator, Ni scias, ho, ni ne povas rompi, revenos la grafo. Ni havas niajn strlen. Ĉu ĉiuj akiri kiom tiu estis implementado? Dum loops-- Mi scias ke ni havas ne faris tro da kun ili, sed ili estas kutime tre tre utila se vi ne scias kion vi haltante kondiĉo nepre devas esti. Demando? Spektantaro: Ĉu ni povas skribi nula sur la dum kondiĉo? PROFESORO: Dum? Jes, do en ĉi tiu problemo mi havis vin uloj supozi ke s ne estos nula. Ĉar rememoru, teorie, se mi donis al vi puntero kiu estis tro granda de memoro, ĝi donus vin la nula, dekstra? Tion la mastruma sistemo farus. Do, se mi ne diris al vi por supozi s estus nula, vi bezonos por kontroli. Do tie, vi farus, se s egalas egalas nula, revenu unu. Io simila. Spektantaro: [inaudible] nulo. PROFESORO: OK, mi rakontos kial ni ne povas fari tion. Ĉar memori memore, dekstra, tie. Ni iros tien. Vi havas giganto blokoj de memoro ĉiuj kun kradoj ke vendejo malsamaj valoroj, dekstra? Kaj tiamaniere la tuta ŝnuro is-- por Ekzemple, se ni estas enigo saluton, estus H-E-L-L-O backslash nulo, ĉu ne? Kaj tiam, kiu scias, kiel hazarda kio estas en ĉi tie post tio. Ni ne vere scias kio estas tie. Kaj do se vi devas fari anstataŭ backslash nulo, nula, ĝi povas ne esti nulaj. Ĉar ĝi nur povas signifi iu hazarda aliaj aĵoj kiuj ne apartenas en via ŝnuro. Kaj tial la maniero kiun ni ĉiam scias ke ŝnuro finiĝas estas kun backslash nula. Kaj tiel tio ĉiam kiel ni kontroli por vidi la finon de kordo. Nula, cxiuj rimedoj estas se vi havas neekzistanta montrilo, unue, aŭ se via memoro estas nur tiel granda, ke vi ne povas reveni al ĝi, tiam ĝi estus nula. Do estu tre zorgema kiam diferencante la diferenco inter null kaj la backslash nula. Yeah. Ĉiu OK kun tio? BONE. Do mi havis vin infanoj skribas el strlen. Feasibly ni povus ankaŭ demandi vin skribi el A al mi, memoras ke "Atwoa" aŭ kion ajn vi uloj volas nomi ĝin? Domadministranto en Vigenère kaj Cezaro, ke Konvertas Ascii valoro al entjero? Kiu ankaŭ elpaŝis sur pasintaj kvizojn de funkcioj ni petis vin skribi. Preskaux ajna funkcio ke vi uzis kaj estas tre facile skribi mem, sensores ŝatas estas malalta, estas supra, malaltigi, al supra. Funkcioj kiuj konverti kordo de minuskla al majuskloj. Ni ĉiuj scias kiel fari tion, ĉu ne? Ĝi estas sufiĉe facila. Nur volas certigi ke vi can-- ĝi estas la sama penso procezo. Vi nur persisti tra kaj vi turni aferojn. Vi ĉu rakonti aŭ kiam vi turni aferojn malsame. Mi suggest-- mi ne scias se ni iras demandi vin parkerigi kion ĉefurbo A aŭ ĉefurbo Z, aŭ minuskla A aŭ minuskla z estas en ASCII, sed mi sugestus eble skribante ke malsupren en kazo ni faras. Ĝuste tiel vi infanoj havas referencon. Kiel majuskla A estas, kio, 197? Kaj tiam minuskla estas kiel 50 io. 65, jes, tie vi iras. Do simple preskaux konas la diferenco inter ili estas 32. Tio estas sufiĉe grava. Yeah. Ĉu mi bone sur tio? BONE. Publiko: Ni povus teorie skribi iun el tiuj malsupren tiel sur nia little-- PROFESORO: Vi teorie povus simple kopii la funkcio suben. Tio estas vera. Spektantaro: Ne [inaudible]. PROFESORO: Vi ĉiuj havas folion. Vi ĉiuj havas noton folio. Vi povas entajpi ĝin. Vi povas skribi ĝin. Vi povas fari kion vi volas kun ĝi. Yeah. Do teorie, se vi volas, iru por. Spektantaro: [inaudible] sed ni ne vere nepre bezonas memori la valoro, ni povas nur uzi la al supra aŭ malsupra funkcio, ĉu ne? PROFESORO: Yeah. Sed se ni donis al vi demandon kiu diras skribi al supra, tiam vi bezonus por skribi ĝin. Do vi infanoj povas supozi ke vi infanoj havas aliron al ĉiuj funkcioj, sed se vi volas uzi por supra aŭ malsupra, kion vi ankaŭ devas fari? Spektantaro: [inaudible] uzi CS50 [inaudible] PROFESORO: Ĉu CS50.h? Estu zorgema tie. Do al supra, malaltigi, estas supra, estas malalta, funkcioj kiuj implikas string manipulado estas ĉiuj ene ĉu la Ascii aŭ ene de la matematika biblioteko aŭ ene la kordo biblioteko. Do se vi infanoj uzi tiujn funkcioj, penu memori inkludi ke kaplinio. Do eble ankaŭ ion vi volas inkludi en vian folion, kio estas la surskribo? Kio estas la bibliotekojn vi estis uzante? Kio funkcioj estas interne tiuj bibliotekoj? Ĝi estas grava. Yeah? Publiko: ni povus simple cop kaj agu hashtag tra la absolute ĉiun literon ni iam vidita kiel sur ĉiuj de la demandoj? PROFESORO: Vi povis. Mi ne scias kiom feliĉa ni tuj estos al lernojaro ke kvizo kiam ĉiu peco de kodo estas dufoje tiel longe kiel ĝi devas esti. Mi ne scias, ni eble forlevu punkton por stilo. Sed teorie via kodo estus ĝusta. Vi infanoj povis cop eksteren kaj nur inkludas ĉion. Tio estas bone tro, jes. Spektantaro: [inaudible]. PROFESORO: Yeah. Mi proponus ne faras tion tamen. Yeah. Publiko: Cool. PROFESORO: Bona demando. Publiko: Do, la plej malbona kazo scenaron. PROFESORO: La plej malbona kazo. Se vi tute forgesos, vi povus fari tion. Yeah. Yep, kodo estas prava. Mi uzis n anstataŭ grafo sed, vi scias, kio ajn flosas via boato. Publiko: Atendu, ĝis ni ne devus hashtag inkluzivi ĉar ni estas komencante ĉe la int? PROFESORO: Yeah, Mi nur supozis ke ni estis petitaj skribi la funkcio. Se vi volis esti sekura, vi povus verŝajne metis ĝin tien. Sed mi simple ne tedis, yeah. Mi eĉ ne scias, ĉu vi bezonas bibliotekon por tiu. Ĉar vi ne vere presi ion aŭ ion, ĉu ne? Jes, mi ne scias ĉu vi bezonas biblioteko. BONE. Tiu estas ankaŭ iom pli kune la linioj de memoro manipulado. Tiu speco de iom malfacila. Pensu pri tion. Vi havas funkcion nomita func. Mi povus esti nomita ĝi ajn, sed mi elektas ajn func. Jen ĝi supre mia ĉefa. Memoru, vi volas havi funkcio post via ĉefa, Vi volas certigi vin inkluzivas la prototipo de la supro. Sed en ĉi tiu kazo estis tiel mallonga ke mi sentis ke mi povis nur inkluzivi ĝin atop la ĉefa. Mi ne bezonas havi la prototipo, ĉar ĝi estas jam skribita supre. Do ĉiuj mi faras en mia ĉefa funkcio kreas entjero x egalas 10. Mi vokas mian func funkcio, kaj tiam presi ion. Kaj tiam tio estas vere kio func faras. Vi infanoj deziras pensi tra tiu. Ĉar ĝi estas iom malfacila. Estas tre, tre malfacila, vere. Pensu tra kion ĉi programo estus Elira. Mi donos al vi infanoj du minutoj. Bonan diskutoj? Publiko: Yeah. PROFESORO: Yeah. Bone, do ĉi estas malfacila por kialo. Kaj tio estas kial mi volis alporti tiu al ĉies atenton. Ĉu iu volas doni min sugesto, provo? Kion cxi elprinti? Tute bone se vi eraras. Yeah? Publiko: Mi kredas ke estas 100 kaj tiam 10 sur du apartaj linioj. PROFESORO: Kaj 10? Ĉu iu havas aliajn divenoj? Yeah? Publiko: Eble nur 10 ĉar func ne revenado ion? PROFESORO: Bone, do ni havi divenon nombro unu estas ke diveno numero du estas nur tuj presi 10. Ĉu iu havas aliajn divenoj? BONE. Do ni trairu ĉi, ĉu ne? Kiam ajn vi akiri pecon de kodo, ne nur rigardi ĝin kaj esti kiel, ah, jen tiel stuff! Mi tiom konfuzita! Kiel, trankviligi vin malsupren. Nur scias ke vi povus nur trarigardi kodo linio por linio. Jen ĉio estas. Estas kiel legi libron. Do kun ajna funkcio, Ni ĉiam komencas ĉe ĉefa. Do ni tuj komenci ĉe int main malplenon, eĉ la programo jam kuras malsupren, ĉu ne? Komenci ĉe en ĉefa malplenon. Int x egalas 10. Do mi tuj viŝi ĉi. Mi tuj tiros la memoro nur tiel vi uloj povas ia vidi kio okazas. Memoru cxi tie ni havas nian pilo? Ĝis tie ni havas niajn amasigos ie supren tie. Pilo kreskas supren, dekstra? Kaj ene de la stako, vi havas la elektra reto funkcii tiel kiel ĉiuj mains lokaj variabloj. Do jen, int x egalas 10. Ene nia ĉefa funkcio ni estas kreante variablo nomata x. Ni opcio ke egala al 10. Ĉi tie vi havas iu x, kaj vi estas fiksante ke egala al 10, dekstra, ene ĉefa. Ĉiu bona? Funkcio. Do nun, ene de nia ĉefa funkcio, ni vokas la funkcio ni skribis supre. Do ni nun eniri la duan funkcion. Ni tuj kreos alian variablo int x egalas 100. Kio okazas tie ĉe la pilo? Kio okazas kiam vi nomas funkcio kiu kreas novajn variabloj? Kio okazas tie ĉe la pilo? Spektantaro: [inaudible] aretoj sur supro? PROFESORO: Yeah. Do fakte kreas kopion. Kaj speco de aretoj sur supro. Pensu pri la stack-- pilo de libroj, stako de io. Terreros aldone, unue en lasta eksteren, daŭri en, unua el. Do ĝi estas tuj krei x tie. Tio tuj havi ĉiuj funcs variabloj. Granda. Do nun ni havas du malsamajn x-oj kiuj reprezentas du tre malsamajn aferojn. Tiam ni iras por presi el la entjero x. Do ni presi 100, dekstra? Ĉar tie ĝi estas 100. Do jen la unua afero ke ĝi tuj presi. Kiel tiu funkcio redonas nenion, nun ke funkcio, tiu linio en ĉefa estas farita. Ĉiu bona kun mi ĝis nun? Do ni estas nun tra du el la tri linioj de nia ĉefa funkcio. Nun ni iras al la tria linio. Ni tuj printf. Kio estas ĉi x ene ĉefa? Kion tio reprezentas? Kio valoro estas x nun? Publiko: 100. PROFESORO: Estas 100? Publiko: Still 10. PROFESORO: Still 10. Yeah. Ĉar rememoru, ene nia func, x egalas 100. Sed se ni revenu al nia ĉefa funkcio, ke variablo estas stokita en malsama loko sur nia stako. Do nun ni bezonas reiri al la ĉefa pilo, mains lokaj variabloj. Kaj tie x estas egala al 10. Kaj do ni tuj presi 10. Do sxi estis absolute prava. Ni tuj havos la eligo de 100 kaj 10. Yeah? Spektantaro: Kiam vi malloc, ĉu la amaso aŭ la stako kiu estas [inaudible]? PROFESORO: Kiam vi malloc, vi prenas memoro de la amaso kaj asignante ĝin. Por ke vi ne havas salaton al iu el ĉi. Do mi supozas ke la pli granda takeaway tie estas iu nomita medio. Por tiuj de vi kiu estis ĉe la revizio kunsido hieraux, ni parolis mallonge pri tiu. Amplekso difinas kiel kaj kiam via variabloj ekzistas. Aŭ ene kion kadroj faru vian variabloj ekzistas. Pli malpli la regulo de thumb ĝenerale estas, via variables-- se vi krei ilin interne krispa braces-- ekzistas nur interne tiuj buklaj krampoj. Do ekzemple en nia funkcio de func, vi vidos tiujn du krampoj. Se vi kreas io en ĝi, Ŝancoj estas ĉiuj vi faras estas kreante stako kaj stokante ke. Samon en ĉefa. Tio simple stokitaj ene de ĉefa. Ankaŭ vi volas esti tre tre zorgema tie. Ĉar amplekso ankaŭ pruntedonas al malsamaj ekzemploj. Do ekzemple por buklo, por int i egalas 0. Mi estas malpli ol, mi ne scias, 10. Mi plie kaj plie. Kaj vi havas kodon ene de ĝi, ĉu ne? Kie faras ĉi variablo, Mi, fakte nur ekzistas? Nur ene de via por buklo. Do mi vetus multaj el vi infanoj havas verŝajne renkontis tiun eraron kiam vi faras programojn en via psets. Kiel multaj de vi uloj provis uzi I eksteren de a por buklo kaj havis eraron? Kiel unreferenced entjeroj aŭ io simila? La kialo kial tio okazas estas ĉar tie vi krei iun kiu nur Ekzistas ene de via por buklo. Se vi provas uzi ĝin, mi ne reale ekzistas ekster ĝi. Do esence komputilo dirante, mi ne scias pri kio vi parolas. Mi scias nur ke i estis tie, sed nun ne plu. Do se mi estus krei por buklo ene, dekstra? Kaj mi tuj kreos alian, kiel int j kaj ilin fari kion ajn. Kaj vi havas kodon ene de ke buklo, j nur ekzistas tie. Sed ke ankaŭ ekzistas ene i. Kaj tial j nur ekzistas ene ĉi por ciklo, dum mi ekzistas en la tuta afero. Ĉiu klara? Sama afero kun kondiĉaj deklaroj se vi volas krei ion. Sama afero kun dum maŝojn se vi volas krei ion. Tio estas io esti tre, tre zorgema pri. Do tio estis vere bona problemo en la senti ke ĝi pruvis du aĵojn. Ĝi pruvis unue medio. Kaj ĝi pruvis ankaŭ memoro atribuo. Ĉar vi uloj devus scii ke funkcioj kreski supren en la stako. Kaj ke kiam vi nomas funkcioj, vi kreas esence nova pilo de memoro. Tio estas tre malsama de kion via elektra reto memoro. Yeah. Whew! Ĉiu OK sur tio? Tio estis konfuza. Tre bonaj temoj kiuj iras pli, ĉar vi probable tuj akiri iom malfacila tiaĵojn sur la kvizo. Yeah. Malvarmeta. Mi metos vin akiri 100 sur unu linion kaj tiam 10 en la alia. Jes, tre bona. OK, Nun vi uloj ricevos la ŝancon esti la TAS. Vi ricevos respondon ĉiuj amindaj retpoŝtoj ke mi foje ricevas. Do, Kara Andi, mi vidas, mi pensas ion estas iri malbone kun mia tradukilo. Mi estas certa, ke mia kodo estas ĝentila, sed mi daŭre ricevas segmentación kulpo ĉiufoje mi kuros. Kio okazas? Bonvolu helpi, multan amon. Se vi uloj havas ion kiel ke kiel vi respondus? Tiuj estas fakte tre komuna demandojn ni petos vin. Estas se, ni donos al vi scenaro, ni donos nin via plej bona diveno ĉe kio daŭriĝas. Ĉiu havas ponardopiko ĉe kio okazas? Yeah? Publiko: Eble dereferenced la nula, ion kiel la montrilo Estas indikis ion nula. PROFESORO: Jes, tio estus la ekzemplo pri kiam tio okazos. Sed kio estas la pli granda bildo kio okazas ĉi tie? Spektantaro: Ĉu vi provas aliri memoro ke vi ne estas supozis havi aliron al? PROFESORO: Ekzakte. Do elpensi seg kulpo, ekstere limoj, zonon restriktita en memoro ke vi ne devus esti kortuŝa. Do preskaux kiam vi provas al index-- kiel ekzemple, vi jam deklaris tabelo de nulo al naŭ. Sed vi provas tuŝi ke 10th valoro, vi ne havas aliron al tiu. CXar vi ne deklaris ĝin. Kaj tiel via komputilo tuj rigardi ke estu simila, Uh oh, vi provas iri ekster la saltegoj de indekso. Mi tuj donos al vi segmentación kulpo. Pensu kiel segmento, dekstra? Ekstran segmenton, la kulpo estas kiam oni provas rompi ion kaj vi ne devus esti tie. Segmentación kulpo aùton vi provas tuŝi aferojn ke vi ne devus esti kortuŝa. Do komunaj ekzemploj estas indekso. Kompreneble, se vi provas tuŝi ke estis nulaj, kiu ankaŭ laboras tiel. Se via puntero penis tuŝi aĵojn kiuj ne devus tuŝi, kiu povus ankaŭ funkcii tiel. Plej tipe vi instruos vin vidu ĉi en tabelo. Ĉiu bona? Publiko: Do ​​se vi volas aliri la 10a punkto kaj tie estas nur limo naŭ aŭ io. PROFESORO: Jes, ĝuste. Pli malpli. Malvarmeta. Kara Andi. Do ni havas tiujn mirindajn aĵoj nomata varojn. Se Kunfandi sort-- kiel ni segilon en ekzemple kiam David faris la tutan afero en class-- kial, se ĝi estas tiel multe pli rapide ol iu el la aliaj specoj, kial ni eĉ tedas sciante iu el la aliaj varoj? Kio estas tiu demando vere demandanta vin? Kio estas la tri word-- Publiko: Kio estas la komerco-off? PROFESORO: Ekzakte. Tion la demando estas demandanta. Kio estas la komerco-off inter Kunfandi speco versoj ajna alia tipo? Publiko: Takes memoro, ĉu ne? PROFESORO: Ĉu vi klarigi ke iom pli? Unue ni klarigu Merge vendejo. Kiel merge varo labori? Publiko: Do ​​ĝi funkcias dividadon ĉion en duono kaj tiam metante gxin kune kaj reallocating ĝin en ordo, kiel ĉiufoje vi kunfandi la aroj. PROFESORO: Pli malpli. Do mi povas tiri tiun eksteren, sed estus prenu mi kvin minutojn por eltiri gxin. Retrorigardas sur la sekcion diapozitivoj kie ni kovris merge varo. Ekzakte. Do la maniero kunfandi speco verkoj estas dividas aferoj en duono, kaj tiam ĝi nur rigardas la unuaj valoroj de ĉiuj ili kaj varoj nur tio. Senĉese kreas novajn arrays kaj metas aferojn pli kaj pli en ordo. Kaj tial dum tio estas vere, vere rapida ĉar it's-- vi scias, duuma serĉo estas n logo n. Vi kreas tiom da malsamaj arrays ke vi estas uzante grandegan kvanton da memoro. Kaj tiel dum ĝi estas pli rapida, la komerco ekstere tie estas ke vi uzas pli da memoro. Kaj do, aludo, varoj kaj serĉoj kovrigxis multe pli ĉi tiu jaro ol ili estis en antaŭaj jaroj. Vi uloj devus vidi ke reflektita laŭe sur la kvizo. Mi certe elspezi tempon irante super kio ĉiu de la malsamaj varoj estas, kiel duuma serĉo, kiom lineara serĉo laboro. Kiel eble _pseudocode_ kodigi tiujn eksteren. Kio estas la rula tempo? Io kiel kuri tempoj estas tre facile kopii malsupren sur noto folion, dekstra? Estas vere malfacile kiam vi estas en la mezo de la testo kaj vi devas diveni ke eksteren. Kopiu ĝin malsupren. Mi garantias vin ke vi estas tuj bezonas scii tion. Kio estas la komerco-offs? Plej malbona kazo, bona kazo scenaroj por ĉiuj el ili, tre ekkoni. Yeah? Spektantaro: Ĉu ni bezonas scipovas programi merge varo? Kiel, do ni bezonas memori la rekursia? PROFESORO: Mi forte dubas, nur ĉar ĝi estas kiel sufiĉe komplika. Sed ĝi ne povas esti nerealigebla se ni demandos vin uzi _pseudocode_ ĝin. Yeah. Yep, okej, unu pli. Tio eble supreniru vi lastan pecon en iom. Yeah? Ĉu ĉiuj aŭdas tion? Bone, do sufiĉe tre unue ĉiuj, kion tipo de programo estus donanta vin eligo tiel? Memoru ni petis vin lerni pri tiu nova tipo de debugging ilo? Kio estis la nomo de ĝi? Valgrind, dekstra Ĝi estis programo kie vi povus voki ke povis sekvigi tuta memoro vi estas uzante en via programo kaj okazas. Do se vi havas ion, kiel: definitive perdis 40 bitokoj en unu bloko. Probable vi ne memorante liberigi ĝin. Ĉar se vi uzas bajtoj de memoro, ke signifas vi Montrita ke memoro, sed vi ne povis liberigi. Do vi deziras fari certas ke vi estas ankaŭ uzante free-- tio estas function-- liberigi ĉiuj de la memoro reallocated de malloc. Malvarmeta. Do tiu diapozitivo, mi havas ĝin. Ĝi estas ĉie en multe de prelegojn, en multa sekcio diapozitivoj. Vi vere volas certigi Vi nur scias ĉion ĉi. Ĉu en via noto folio aŭ se vi volas enmemorigi ĝin, bonvolu. Tio estas vere, vere, vere grava. Ankaŭ tre bona demando kaj ni demandas. Kial Selektado sort-- rigardu Selektado sort-- ĉiuj runtimes estas n kvadratoj. Sendepende de kiel la listo temas vi kiel, do kial estas Selektado sort-- Mi donos al vi infanoj 30 dua pensi pri tiu. Ĉar ĝi estas speco de konfuzi. Ĝi engaĝas kelkaj koncepta pensado. Kial la run tempoj esti la sama en ambaŭ la plej malbona kaj plej bona kazo scenejoj? Yeah? Publiko: Ĉar Selektado speco ĉiu pozicio aŭ spaco en tiu malgranda tabelo aĵon aŭ kion ajn. Do eĉ en la plej bona kazo scenaro, eĉ se ĝi estas perfekte ordigataj ĝi ankoraŭ havas esti kiel, okej, tiu. En mia unua loko mi havas unu. Kaj iri tra ĉiuj de ilin. OK, unu estas la plej malgranda. Kaj tiam ĝi iras denove kaj estas kiel, okej, du Estas la plej malgranda de ĉiuj la aferoj. Sed ankoraŭ devas kontroli ĉiun kaj ĉiujn. PROFESORO: Yeah. Do ekzemple, ni simple diri Ni havas lerta, jam ordigataj tabelo oni al kvin. La vojo kiu Selektado specoj estas ke iras tra, ĝi kontrolas tiujn du. Tiam ĝi kontrolas tiujn du. Kaj tiam ĝi kontrolas kaj ĝi kontrolas. Ĝi tenas kontrolanta ĉiujn de ili, nekonsiderante ĉu aŭ ne ĝi estas fakte ordo. Ĉar tio estas simple la vojo tia funkcias. Kaj do ĉi demando estas ia kiel conceptual demando ni petos. Kie unua, vi scias kion Selektado speco estas, ĝuste, por povi respondi la demandon. Vi devas povi kompreni koncepte kio okazas. Kaj tiam vi povas peti ĝin kaj pensas, OK ni nur imagi plej malbona kazo scenaro. Ili ĉiuj estas en malkreskanta ordo. Kiel volus kiuj tuŝas ŝin? Kio se ĝi estas supreniranta ordon? Se ĝi estas jam ordo? Kiel volus kiuj tuŝas la runtimes? Kaj tiam Selektado varon, vi rimarkos ke ĝi ne vere gravas. Ĉar vi estas kontrolanta ĉiujn valoroj nekonsiderante kio okazas. Kaj bonan aferojn memori. Kial iuj varoj diferencas de aliaj kaj kiel bona kaj plej malbona kazo scenejoj tuŝus ĉiujn. Mi tuj vere frapita en varoj ĉar tio estos sur la kvizo. Yeah. BONE. Ekzistas ses minutoj maldekstre. Mi povas preni tri minutoj de demandoj. Mi ankaŭ povas pendi ĉirkaŭe por kiel 20 minutoj post sekcio se vi volas demandi tiel. Ĉu iu havas vere mallongan nur demandoj aŭ koncepta demandoj ili estas neklara pri nun? Yeah? Spektantaro: Ĉu vi povas paroli iom bita pri bitlarĝa operatoroj? PROFESORO: Yeah. Do bitlarĝa operatoroj estas iu kiu vi probable povus nur volas meti sur via folio. Do quickly-- Mi ne volas iri tro multe ĝisfunde ĉar Harvard, en ilia revizio kunsido, kovris ĝin sufiĉe bone. Bitlarĝa operatoro, estas kvin el ili, ĝuste? Tie estas tio, kio estas x aŭ funkcio, ekzistas ampersand, kiu estas la Kaj. Pipon, kiu estas la aŭ. Kaj tiam vi havas la du malsamaj tipoj de movoj. Se mi donos al vi du valorojn, se Mi donas al vi, kiel, unu kaj unu. Kio estus ke taksi al? Se mi vin vera kaj vera, vera? Kio pri vera aŭ falsa? Ankoraŭ vera, ĉu ne? Ĉar tie estas aŭ. Ni plej verŝajne donos vin nombroj. Do memoru, unu egalas vera, nulo egalas malvera. Kaj ni povus doni al vi tion kaj peti vin diri nin kio okazas. Harvard kovras gxin ene de la unua 10 minutoj de lia studo sesio vere, vere bone. Do vi infanoj volas fari certe vin rerigardi sur tio. Spektantaro: Ĉu pisa5 tuj estos sur la kvizo? PROFESORO: No. Nepre ne rigardu pisa5 nun. Malfacilas. Nur ne eĉ tedas rigardi pisa5. Tamen, kiel iuj aludoj kaj sugestojn, mi sugestus vin komenci pisa5 Kiam la kvizo estas super. Tio estos la plej malfacila semajnon, sed tiam vi infanoj estos pasis ĝin sur la montetoj ruli verda kaj hundidoj, kaj tio estas bone. Tiu klaso akiras signifajn pli facile post la kvina pset. Publiko: Oficejo horoj Estas dimanĉo, lundo? PROFESORO: Jes, do oficejo horoj la dimanĉo al lundo por la pset. Oficejo horoj ĉinokte esence estos nur esti revizio por la kvizo. Se iu volas enveni kaj petu la TAS demandon, ni estos tie. Mi prenos eble unu demandon se iu havas demandon? Yeah? Spektantaro: Kiam vi estas difinanta nodoj, [inaudible] se vi diras nodo stelo kaj tiam proksima, faras la komputilo aŭtomate kompreni ke vi estas raportante al alia puntero? PROFESORO: No. Spektantaro: Vi devas relink ĝi [inaudible]? PROFESORO: Do esence la struct de nodo estas, memoru, ĝi estas kiel oni kreas la nodo kaj tiam vi havas puntero nomis sekva. Ĉiuj vi faras estas havi la strukturo tie. Vi devas asigni ke puntero ie. Do la komputiloj ne scias kio ĝi estas faranta ankoraŭ. Vi devas reale atribui ĝin kiam vi kreas vian ligillisto. Kaj tion ĉefe pset 5 estos plu. Do ne maltrankviligas iu el kiuj ĝuste nun. Publiko: Do ​​ni ne bezonas enfokusigi tro da en ligilo listo, nur la ĝenerala koncepto? PROFESORO: Nur preskaux stakoj, atendovicoj, ligilo listoj, arboj, hash tabloj. Nur povos scii kio ili estas. Ni ne demandi vi deziras ion specifan ĉar ni ne vere faris pset ke la kovras ajnan de tiu ankoraŭ. Do en la lastaj du minutoj antaŭ Mi liberigi vin mortigi ĉi kvizo. Pli malpli, kiel, pripensi kiel malproksime vi infanoj veni en tiu klaso. Mi memoras kiam semajno du de tiu klaso, iuj el vi pasigi tri horojn skribante akvon. Kiom longa estus ĝi prenos vin uloj skribi akvo nun? 30 sekundoj, eble? Pensu pri kiom you guys lernis. CS estas vere, vere malmola temo. Ne estas dubo pri tio. Estas malfacile, tial neniu studas gxin. Estas nur malfacile. Kaj ĝi estas tute bone. Kaj mi estas vere fiera ke ĉiuj faris ĝin ĉi tien. Psets ne estas facilaj. Ili prenas multan tempon. Vi uloj, mi neniam demandas vin skribi la ludo de 15 aŭ Vigenère sur la pset. Ne necesas ĝuste Freak Out pri tio. Ĉiuj ni elprovanta tie estas taksi via koncipa scio, tiel kiel iuj el viaj bazaj kapabloj de kodigo. La testo estas desegnita vere defia. Kiel, estas desegnita por vi ne ricevos 100. Ĝi estas ankaŭ desegnita por vi probable ne povi fini en 75 minutoj. Kaj tio estas tute bone. Mi estas studento mem. Mi scias, mi malamas ĝin kiam mi promenas el kvizon simili, merdo. Tio estis vere malfacila. Probable kio okazas al happen-- kaj tio estas tute bone, Mi diras al vi uloj aktuale. La rimedoj tion ne alta ajn. Kaj por tiuj el vi kiuj estis akiranta, kiel, triope sur via problemo aroj, tio ne signifas ke vi estas iranta akiri 60 procentoj en tiu klaso. Se vi ricevas 60% sur la kvizo, kiu ne signifus vi tuj ricevas D en tiu klaso. Ni vidas, speciale mi, por tiuj el vi en mia sekcio, Mi vidas kiom malfacile vi infanoj estas ĉiuj laboranta. Kaj mi sekvigi ke. Vi infanoj estos bone. Mankas institucia memoro de feliĉon ĉe la fino de la semestro. Ĉar ĉiuj Harvard infanoj estas rakontanta iliaj amikoj, ho, vi estos bone. Neniu estas diranta vin uloj kiuj tie. Do mi devas rakonti vin infanoj kiuj tie. Vi infanoj estos bone. Mi estas tiel fiera de vi ĉiuj uloj. La testo estos malfacile. Studi ĝin, kaj poste nur ĵetu ĝin for. Pretiĝu por lerni novajn aferojn. Kaj manĝi frandaĵon. Ni jam havas multajn dolĉaĵoj. Akiri bonan nokto dormon. Ne dormi, ĉar tio estus vere malbona. CS estas multa logiko. Se vi ne dormos, vi ne povas funkcii, kaj via cerbo ne povas funkcii. Kaj mi estos tie por la venontaj 20 minutoj se iu volas pendigi ĉirkaŭ. Vi infanoj tuj mortigi ĝin. Bonŝancon.