[Powered by Google Translate] [ELECTRONIC statika SOUNDS] ROB: Konsentite, do kion ni ĵus alportis vin al estas CS50 Spacetoj. ALI: Atendu, atendu back up. Bonvenon sekcio! ROB: Bonvenon al sekcio! ALI: Yay! ROB: Supersection! ALI: Mi estas Ali kaj ĉi tiu estas Rob. Okay, nun ni klarigos Spacetoj. ROB: Do, kion ni ĵus alportis vin al estas CS50 Spacetoj. Vi estos uzante tiun amason en vian sekcioj ĉi semestro. Esence, ni jam havis vin elŝuti la aparaton. Kaj vi povas pensi pri CS50 Spacetoj kiel ttt interfacon parolas al aparaton ke ni havas sur iu servilo ie. Do vi povas kuri vian kodon en ĉi interfacon, kaj ni vidi kiel fari tion. Vi povas ankaŭ rigardi la kodon de aliaj homoj en la sekcio, kaj - ALI: Kaj kiel iuj homoj malkovris, vi povas babili homoj sur la flanko. Kaj ni ĉiuj vidas ĝin, tro, do tio estas ekscita. Venu en, venu kaj sidigxu. Prenu sidejon. ROB: Do, sekcioj estas - ALI: Ne, ne, vi infanoj povas veni. ROB: Sekcioj tuj estos multe pli interaga ĉi semestro. ALI: Ho, li estas kiel - Oh. Konsentite, cool. Do se vi infanoj estas nur alvenantan, vi povas iri al tiu ligilo, se mi povas akiri tie, prava. Ni ne povas vere skribos, ĉar ne ekzistas estraro spaco, sed ĉi tiu ligo ĉi tie, iru al tiu de via komputiloj, kaj vi eniros CS50 Spacoj, kiu estas bela malvarmeta afero. Okay. Ĉu vi havas problemon? ROB: Do vi povas trovi la problemojn - ni bezonas por povi skribi ĉi ie. Do se vi iras al cs50.net/psets kaj ĉi tiu estas la hacker supersection - kaj vi iros en la Hacker Eldono de pset unu, rigardu la specifo ie sur paĝo - ALI: Do esence, dum Rob la rigardante, kion ni faros en sekcio hodiaŭ estas tie estas sekcio de problemoj - ROB: - sur paĝo ok. ALI: - nomas sekcio de problemoj - ROB: Sekcio de demandoj. ALI: Pardonu, sekcio de demandoj. Kaj tiuj estas kio ni iras, por transiri - tiuj estas kio ni iras, por transiri hodiaŭ en sekcio. Kaj ni iras al kodi ĝin sur CS50 Spacoj, kaj espereble ke funkcios. Kaj ni povas nur paroli tra ili. Kaj vi infanoj povas fari demandojn kiam vi sentas - ROB: Do tiu farigxas komuna afero kun plej psets. Mi pensas kun ĉi tiu, diras vi ne devas transdoni tiujn demandojn in Sed la ideo estas, ke tiuj demandoj estas metitaj en la pset, kaj vi povas veni al sekcio havi tiujn demandojn respondis. Aŭ se vi ne venas al la sekcio, vi povas respondi ilin en via propra aŭ akiri helpi al oficejo horoj aŭ io. Sed tio estas demandoj kiuj supozas prep vi por la problemo aro. Kaj sur la hacker eldono, multon el la demandoj povus esti nur pri ekspansio viaj nunaj CS scio. ALI: Yep, preskaux. Okay, do, estas ĉiuj en CS50 Spacetoj? Saluton, eniri Parolanto 1: Ĉu ni povas vidi la URL pli tempo? Rob: Jes, tio estos pli facile iam vi estas vere en via sekcioj, kaj vian TF povas simple retposxtu al vi la URL antaŭe. ALI: Yay, prenu sidlokon. Estas sidejoj tie. La antaŭa estas ne tiu malbona. Kio? Do, CS50 Spacoj, estas duumaj tie. Ĉu iu havas demandojn antaŭ ol ni enir - kion? ROB: Jen eĉ ne ajna kreto. [Inaudible] ALI: Pardonu. Vi povus uzi vian ungoj? Ni estas en tre malalta teknologio ĉambron por tre alta teknologio klaso. Konsentite, estas cxiu speco de bona? Ĉu iu havas ankoraŭ demandojn pri tio? Kiel mi diris antaŭe, ni tuj iru tra la sekcio de demandoj en la pset especificaciones. Do tie estas nur kelkaj problemoj kiuj nin tuj kodi en CS50 Spacetoj. Estas ĉiuj bonaj? Okay. Bonan? ROB: Ĉu vi havas porteblan komputilon? ALI: Vi povas eliri kun Lucas. Li sidas tuj apud vi. Ligado tempo. ROB: Do, komencu per la unua problemo? ALI: Yeah. Ni povas komenci. Ĉu vi volas mi - Mi povas iri. Do, ni iros al la pset especificaciones. Ho, kial - ROB: Kontrolo. ALI: Konsentite, do ni iru en respondo tion tiel? ROB: Ho, jes. Do - ALI: Ho, ĉu ĉiuj horloĝo Rob la ĉefrolulo mallongaj? Konsentite, cool. ROB: Jes, mi ne kredas ke ni nepre atendis ke vi havas spektis ĝin antaŭ veni al ĉi tiu sekcio, sed ni povas diskuti tiujn problemojn antauxe, kiam ili estas sub la sekcio de demandoj aĵoj. Do se vi ne rigardis ĝin, ne maltrankviliĝu. Tiuj, kiuj havas povas provi kaj respondi. Do, la unua demando, kio estas antaŭ-procesoro, kio ne # include rilati? Do ĉu iu havas respondon por tiu? ALI: You guys povas paroli ĝin. Certe, antaŭeniri. Parolanto 2: # include estas iuj antaŭ-skriba kodo, kaj anstataŭ kopii ĝin kaj interglui ĝin en vian programon, per nur diras inkluzivas ĝin, la antaŭ-procesoro scias ke ĝi estas tie kaj ke gxi aldonu ĝin en poste aŭ antaŭe io alia okazas. ALI: Yeah, awesome. Cool. ROB: Do kiam vi vere kompili programon, la antaŭ-procesoro estas tiu unua paŝo. Kompilaĵo okazas en kvar grandaj paŝoj. Do la antaŭ-procesoro estas la unua granda, kaj ĝi estas tio ulo kiu iras tra kaj serĉas ĉiuj tiuj hash simboloj. Kaj neniu linio kiu komencas kun hash, la antaŭ-procesoro ĝin rigardas kaj vidas se ĝi povas prilabori ĝin. Do # include rakontas la antaŭ-procesoro por serĉi iujn cs50.h dosieron kaj simple kopiu kaj algluu ĝian enhavon en ĉi tiu dosiero. Do vi povas vere # include ajn vi volas, sed ĝi estas plejparte tuj estos . H dosierojn. Ni ne alvenis al # difini ankoraŭ, tiel ke ne gravas. ALI: Jes, ni estas bona sur tiu. Ĉu iu havas demandojn pri tio? Ĉu ni bonon? Sekva demando. Parolanto 3: En la mallongaj, estis io pri. C tiel? Ĉu tio estas grava aŭ ĉu pala? ROB: Pri. C kun la antaŭ-procesoro? Parolanto 3: Yeah, aŭ ĉu mi faras ion kolektis? ROB: Do la mallonga povus esti montrante antaŭ-traktadon ĉi dosieron kaj elirigi ĝin al alia. c dosiero, do vi povas antaŭ-procesi tiu dosiero - kiam vi ĵus kuras kiel, fari saluton aŭ clang hello.c, vi faras cxiujn la kompilaĵon en unu granda paŝo. Sed vi povas eksplicite faru ĝin en ĝia aparta paŝoj. Do unue vi povas antaŭ-procesi ĝin. Tiam vi povas kompili, tiam vi povas kunvenigi, kaj tiam vi povas ligi. Ni ricevos al tiuj aliaj aĵoj. Sed antaŭ-prilaborado, vi ia antaŭ-procezo, kaj poste iras al alia. c dosiero. Ĉar antaŭ-prilaborado ne vere ŝanĝas nenion. Estas nur aron da kopio kaj interglui. Vi povus mane kopii kaj alglui ĝin vi mem. ALI Kaj esti klaraj, la. C dosiero estas C-dosiero, tiel ĝi estas skribita en C-kodo. Do ĝi estas iranta de C-kodo al C-kodo. Vi nur aldonante pli kodo kun la funto. ROB: Kiam vi antaŭ-procesis ĝin, ĝi estas ankoraŭ valida C dosiero. Parolanto 3: Okay. ALI: Bona demando. Mi ŝatas tion. Konsentite, sekvanta demando. Kio estas la tradukilo? Iu? Jes. Parolanto 4: Ĝi ŝanĝas la antaŭ-procesita kodon en asembleo. ALI: Perfekta. ROB: Jes. ALI: Cool. ROB: Do, tio estas kion la tradukilo faras specife kiam ni uzas Clang. En tre ĝenerala senso, tradukilo estas ĝuste kiel preni kodo en unu lingvo kaj turnante ĝin en alian lingvon. Do en C - aŭ, bone, Clang prenas kodon kiu estas en C kaj transformi ĝin al asembleo. Kaj vi ne devas esti kapabla kompreni la asembleo ajn. Sed tio estas la lingvo kiu ĝi estas igante ĝin. ALI: Okay. Kaj poste, kio estas ensamblador? Iu? Parolanto 5: [inaudible] al duuma? ALI: Pardonu, kio? Parolanto 5: [inaudible] al duuma? ROB: Yep. ALI: Jes. ROB: Do la ensamblador - asembleo kodo estas vere, vere proksimiĝas al kio via komputilo povas kompreni, sed memoru, ke ĝi ne tute komprenas la tekston tio estas asembleo kodo. Vi devas konverti ĝin en rektan 1s kaj _0s_. Estas kiel rekta traduko procezo. Ni povus simple doni al vi tablo kiu mapoj kion ĉiu asembleo instrukcion signifas. Sed la ensamblador estas simple fari ĉi traduko por vi. Ĝi estas transformi la asembleo kodon en 1s kaj _0s_. ALI: Kaj tiam, por la lasta, kio estas enlazador? Kaj kiel-lcs50 rilati? Iu? ROB: Ĉi tiu estas la plej malfacila kaj almenaŭ klarigis en la tradukilo video. ALI: Ĉu iu memoras vidi-lcs50 en komando? Parolanto 6: Kiam vi iris al la fakto. ALI: Estas en la fakto. Yeah, cool, okay. Ĉu estas divenas aŭ pigra - jes, iru. Parolanto 7: Mi ne certas, ĉar via mallonga estis vere [inaudible], sed estis ion pri faras apartajn dosieroj kun ĉiu biblioteko kaj tiam meti ili cxiuj estis unuanime en unu bibliotekon? ROB: Jes. Do kiam vi havas hello.c, estas vere simpla programo. Vi vere nur faras unu afero en ĝi. Sed kiam vi ricevas en aliajn programojn - kaj mi supozas eĉ kiam vi GetString en via programoj, vi bezonas por komenci inkludante aliajn dosierojn. Do la CS50 biblioteko estas unu tia dosiero en kiu ni havas la realigoj de GetString kaj GetInt kaj ĉiuj tiuj aĵoj. Do kio estas la enlazador faras estas iras ĉirkaŭ rigardis tra ĉiuj ĉi tiuj dosieroj, vidante kie funkcioj estas difinitaj, certigante ke kiam mi vokas GetString ie, sciu ke GetString signifas ke ĝi estas la GetString super la CS50 biblioteko. Do la enlazador nur portas ĉiujn tiujn dosierojn, smashes ilin kune, kaj nun vi havas plenumeblan. Do memoru, se vi uzas la CS50 biblioteko, vi bezonas tiel la # Include ĉe la supro, kaj poste ankaŭ en via Faru komandon, kiel vi diris, vi devas havi la-lcs50. Do ne eblas simple havas unu. Do tio estas nur io por teni en menso por estonteco referenco. Parolanto 8: Do, diru estis alia biblioteko, kiel cs51.h, estus ni ankaŭ devas aldoni-lcs51? ROB: La sola motivo ĉi-lcs50 funkcias perfekte estas ĉar ni havas tiun aron supren en specifa loko en via aparatoj por ke ĝi sciu kion -Lcs50 rimedoj. Ni povus simple doni al vi cs50.c dosiero, kaj tiam vi povus tradukigi ĝin jene Clang hello.c cs50.c, kaj tiam farus vian ruleblan metante tiuj du dosieroj kune. Ĝi scias, ke-lcs50 signifas cs50.c super en iu dosierujo kiu ni specifita en viaj aparatoj. Do se vi volis cs51.c esti specifiable per nur diras-lcs51, tiam ni ankaŭ bezonos por meti ĝin en tiu dosierujo do scias kie serĉi ŝin. ALI: Kio estis via demando? Parolanto 7: Kial vi devas ligi la CS50 se - wasn't ĝin kopii / pasted ĉe la unua paŝo, kiam vi antaŭ-procesis ĝin? ALI: Ĉu vi volas preni ĝin? ROB: Certe. Do la cs50.h dosiero aparta de la cs50.c C dosiero. Ĉu vi alvenis al funkcii prototipoj en klaso? Okay. Do esence, la cs50.h dosiero estas ĝuste tuj kopiu kaj algluu - ALI: Ĉu vi infanoj scias kion subskriboj estas? Konsentite, tiel bela da, se vi rigardas - ROB: Estu la ŝajnigi cs50.h ne estas tie. Nun ĉi tiu dosiero - vi faras string s = GetString. Sed kiam ni alvenis al tiu punkto en la kodo, ĝi ne havas ideon kion GetString estas. Ĝi scias ĝi estas funkcio, ĉar vi nomas ĝin. Sed ne scias ke ĝi estas vere supozis reveni ĉenon. Do kiel mi diris, kordoj s = GetInt, ĉi tio ne havas sencon, ĉar vi subskribi entjero al ĉeno. Sed ne scias ke GetString ne havas sencon, ĉar ne scias, ke GetString revenas ĉenon. Do kio cs50.h diras estas io tiamaniere. ALI: Do kion Rob estas tajpado estas, ĝi estas promeso en maniero ke tuj havas ĉi tiun funkcion nomita GetString. ROB: Jen ĉio, kion cs50.h estas kopii kaj bati en ĉi tie, tiel kiel GetInt kaj ĉiuj tiuj aĵoj. Kaj jen ĝuste diras ke GetString ne revenos ĉenon. Vi ne scias, kiel ĝi estas implementado ankoraŭ, sed kiam ni atingos ĉi tiun linion, nun ĝi scias ke ĝi ĝuste redonas kordoj. Parolanto 9: Do se ni ne tedis kun la # include afero kaj anstataŭ nur skribis la prototipo por tiuj, kiuj ni estas vere tuj uzos? ROB: Yeah. Do ni kuros ĉi. Parolanto 9: Ĉu? Do, implicite, tio farus la-l al CS50 nur ĉar -. ROB: - esprimo. ALI: Jes, ĉar kiel vi diris, estas en la fakto dosiero. ROB: cs50.h ankaŭ okazas al esti typedef char * por linio. Vi povas tute ignori kion tio signifas por la momento. Sed tio estas ankaŭ iu inkluzivita en cs50.h. Do nun tio funkciis perfekte bela. Ĝi kuras ekzakte la sama kiel estis kiam ni nur havis la # include. Kaj tiel inkludante cs50.h okazas super-inkluzivi aĵoj vi bezonas - kiel, vi ne uzas la GetInt en tiu programo, sed ne gravas. Ĝi devos simple ignori ĝin. ALI: Kaj tiam, kiam vi faras la-lcs50 super tie kaj ĉi tie, kio okazas sur estas ke ĝi estas havi la realan implementable kodo. Do tie estas kie ĝi efektive estas, farante la - skribi la kodon por GetString. Do ĝi ne estas nur promeso plu. Estas vere trairis kaj prenante la kordo kaj cxio, kion aĵoj. Sencon? Demandoj? Bone. Cool faboj. ROB: Nun ni povas movi sur reala kodo. ALI: Okay. Do jen la unua problemo. Do ĝi diras skribi programon kiu pelas la uzanto por minuskla letero kaj tiam ŝanĝas ĝin al Majusklaj sen uzi bitlarĝa operacioj, kiel por la specimeno eligo pli sube. Do vi povas vidi, vi ruli la programaron kun la. / A.out, kaj tiam vi estas tuj metos en minuskla a, kaj tiam via programo devus doni ĉefurbo A. Do kial vi ne infanoj ĉiuj donos ĝin trenas sur CS50 Spacetoj? Do you guys povas ĉiuj iras tien. Kaj vi povas forigi la tutan kodon en ĉi tie. Kaj tiam vi povas antaŭeniri kaj komenci kodigo la aferon. ROB: Vi probable volas uzi GetChar, jen inkluzivita en la CS50 biblioteko. ALI: Mi supozas ke eble estus pli bone se vi savos la supro parto. Do vi eble volas nur ŝanĝi la aferojn en la mezo. Antaŭeniri kaj labori. Bonvolu kunlabori kun ĉiu alia. Rob: Kaj vi povas fari demandojn, se vi havas - Speaker 10: Kio estas bitlarĝa operacio? ROB: Do, ignori, ke por tiu problemo. ALI: Se vi ne konas ĝin, tio estas bona. ROB: Ni tuj uzos ĝin en la sekvanta problemo. Sed se vi ne scias kio estas bitlarĝa operatoro estas, ke estas bone. Speaker 10: Ĉu tio estas kiel igi ĝin al ASCII kodo? ALI: Ne ROB: Ne Vi povas fari tion por tiu problemo. Speaker 10: Kiel vi faris tion? Do, se nur mi havus ie skribi - ALI: Aŭ ion por skribi kun. ROB: mi povis nur speco de tipo en ĉi tiun. ALI: Tipo ĉe la supro. ROB: Ho, mi sidis sur mic. Do, ni vidis en prelego kiun la ASCII valoro por ĉefurbo A estas 65. Kaj ĉefurbo B estos 66, kaj tiel plu. Do vi povas laŭvorte uzi 'A' por signifi la nombro 65. Kiel, ĉi tiu estas la valoro 65. Mi povas fari ion kiel int x = 100 - 'A'. Kaj nun x havos la valoron 100 - 65. ALI: Vi povas ruli tion kaj montri ke. Ho, eble ne. Ne gravas. ROB: Mi devis presi ĝin. Speaker 10: Kiel vi turni ĝin reen al karaktero? ALI: Do se vi ne batu - vi simple devigas esti char A, egalas. ROB: Do estas - la distingo inter char kaj entjero estas nur en funkcio de grandeco. Do entjero okazas por povi reprezenti aĵojn al, ŝati, kvar miliardoj. A char nur estas kapabla por reprezenti tion ĝis 255. Sed ne ekzistas diferenco inter ili escepte ĉi tio. Do vi povas diri char c = 65. Tio estas ekvivalento al dirante char c egalas 'A'. ALI: Ho, ne. Ĝi ne reale savi aĵoj. ROB: Ne, vi ne povas fari tion. ALI: Tio estas nur - [Ĝemoj] ROB: Konsentite, do kio Ali nur skribis estis programo kiu unue presas 100 - 'A' kiel entjero, kiu estis 35, kiel ni atendus, ĉar 100 minus la ASCII valoro de A estas 65. Tiam ŝi presita ekster uzante% c, kiu signifas interpreti ĝin kiel char. Do 100 - a estas 35. Interpretante ke kiel karaktero okazas al esti la hash simbolo. Se vi rigardas asciitable.com aŭ kion ajn, vi vidos ke 35 estas la hash simbolo. ALI: Konsentite, neniu alia klarigoj pri la problemo? Konsentite, you guys povas faru do. Bonvolu demandi demandojn aŭ paroli kun ĉiu alia. Aŭ se vi jam faris, vi povas ripozi. Lucas: Ĉu ili la sama klaso, ĉiuj minuskla literoj en ordo kaj ankaŭ la majuskla estas ankaŭ en ordo, ĉar tio estas io utila por la problemo. ALI: Bona punkto, Lucas. Do, vi infanoj ĉiuj atingi tiun? Speaker 11: Jes. Tiel estas kiel vi faras ĝin, ĉu ne? ALI: Dekstra. ROB: Yeah. Speaker 11: [inaudible] ALI: Bone. ROB: Kio estas la demando demandas? Nur por konverti - ALI: Convert la minuskla al la majuskla. Estas tio. ROB: Okay. ALI: Ĉu necesas skribi ĝin? Mi supozas ke ni simple rigardu iu alia. ROB: Do por tiuj, kiuj povus esti kaptita, maniero - se mi havas iun char c, kaj diru okazas al esti la letero D. Do nun kiel mi povas eltrovi, kio litero de la alfabeto C estas? Ne D, sed mi volas diri, D hazarde estas la kvara litero de la alfabeto. Kaj se ni komencos rakonti de 0, tiam ĝi estas la tria litero de la alfabeto. Do se A estas 0, B estas 1, C estas 2, D estas 3, kiel mi povas kalkuli int pozicio - kio pozicio de la alfabeto C estas en? Ĉu iu havas ideojn? ALI: Mi pensas ke ili ĉiuj estas kodigo. ROB: Kio pri la unua? Speaker 12: Do kion ajn A estas, subtrahi la unua? ROB: Yeah. ALI: Yeah, awesome. Do vi povus fari ĉefurbo D - oh, pardonu. Vi prenu la karaktero kaj vi subtrahu la unua, kiel vi diris. ROB: Do se D estas io kiel 68, kaj ni subtrahi A, kio estas 65, tiam ni preni 3 kaj rakontis, ke D estas la tria litero de la alfabeto ekde 0. Do vi povas uzi tion. Nun ni scias kio litero de la alfabeto, en terminoj de majuskloj, aŭ - ni povus fari la samon por minuskla literoj elkompreni kiel minuskla pozicio ni in Kaj ni povas uzi kiun tiam konverti ke Majusklaj uzante tre simila ideo. Peti sugestojn? ALI: Do you guys - atendas, mi ne scias kiom for you guys are. Ĉu la plimulto de vi faris, vi ankoraŭ laboras, vi pusxis? You guys povas krii el - pusxis. Unu persono kaptita. Cool. Mi emas meti ilin, ankaŭ. Speaker 13: Mi faris. ALI: Vi faris? Okay. Faris. Speaker 13: [inaudible] ALI: Yeah, cool. Ĉu vi kontrolas ke ĝi estas en minuskla formo? Konsentite, cool. Kie estas aliaj homoj? Ĉu ĉi tiu aludo helpi vin, kiel por ne-bati vin? Speaker 14: Ne vere, sed nur ĉar mi ne scias, mi ne estas digesti ĝin ankoraŭ. ALI: Konsentite, cool. Ĉu vi volas provi - aŭ ĉu vi volas iri kaj paroli? ROB: Kion mi intencis diri estas - tiel uzas tiun ĉi. Ĉu vi komprenas kiel ni poste ricevis kio pozicio de la alfabeto la letero estas en? Speaker 14: Konsentite, do kiam vi metis aĵojn en simpla citaĵo kiu resendas numeron? ROB: Jes. Ĝi estos tradukita al la ASCII valoro ĝi reprezentas. Do vi volas iri al ASCII tablo aŭ kio ajn ĝi estas? ALI: Nur unu el tiuj? ROB: Yep. Do kiam vi metis neniun el tiuj simboloj, ignorante multon de la - ALI: [inaudible] ROB: Ho, uzante la kursoro. ALI: Yeah. Tio estis ekscita. ROB: Do, ignorante tiujn sur la maldekstra, kiu estas specialaj simboloj - se vi metas iun el tiuj simboloj en simpla citaĵoj, tiam ĝi estos tradukita al ĉi tiu valoro de la maldekstra. ALI: Ĉi tiu estas la dekuma numero por ĝi. Estas kiel A turniroj kun 65, B al 66, kaj vi rimarkos ke ili estas ĉiuj en alfabeta ordo, kiu faras la diferencon. Do, kiel Rob diras antaŭe, en tiu kodo, ni estis kalkulanta la distanco de la unua litero, per si mem. Kaj tio estos la sama, ĉu ĝi estas majuskla aŭ minuskla. ROB: Do kiam ni faris D, 68 minus A, 65, ni preni 3. Ĉar D estas tri pozicioj en la alfabeto. ALI: do kiel vi tradukos ke super trovi la iom d? ROB: Yeah. Do, se mi havas 3 nun mi scias, mi volas iri tri literoj en la - ni hazarde iros minuskla nun, sed diru mi volas iri tri poziciojn en la minuskla flanko de aĵoj. Do kiel mi povas fari? Mi scias minuskla a estas 97. Do kiel mi trovos tri pozicioj en la minuskla literoj? Speaker 15: Mi havas unu demandon en la praktiko. ALI: Jes, antaŭen. Speaker 15: Do pro tio, ĝi ne vere gravas se mi konas tiun pozicion, kiel, mi ne bezonas tiun tablon. ROB: Nope. Vi neniam devas uzi iun el tiuj numeroj. Kaj tiu estas grava punkto en via programoj kiujn vi devus neniam malmola kodi iu el tiuj konstantoj. Uzu 'A'. neniam uzu 65 aŭ 97. ALI: Tiuj estas nomataj magio nombroj, kaj ili estas vere konfuza. Kiel, kiam vi elpurigante kodon, vi eble ne memoras, kion vi uzis ilin por. Kaj por ni grading vian kodon, ni ne vere scias kion vi uzas ilin por. Do ĝi estas bone se vi vere uzas la karakterojn tiel faras pli sentita popolo. Konsentite, aliajn demandojn? Ĉu pli da homoj faris, aŭ - Mi supozas oni povas kontroli. Estas vere anime, ke vi povas vidi popola kodon. ROB: Yeah. Ni ne devas fari tion tie ĉi. Ni ne scias popola nomoj, ĉu. ALI: Ho jes, bone, ke faras ĝin pli bone, do ni estos ankoraŭ pli nedekliva anstataŭ ĝuste hazarde pluki iu. Ne maltrankviliĝu. Mi ne faros tion. Se vi havas hazarda aferojn pri - ne gravas. Okay. Kiel homoj faras? Speaker 17: Do la naŭa linio devus presi karakteron? ROB: Jes. ALI: Yeah. Do, se vi iros malsupren - ROB: Ho, ne povas fari tion. ALI: Vi vidos ke presita la hash simbolo. Speaker 17: Ho, bone. ROB: Mi supozas alia vojo vi povas rigardi tion estas ni presi du karakteroj. Unua ni presi estas la litero A. La proksima ni presi estas nur 65. Sxanco gxi krias al mi por ĉi tiuj. Do, se ni nur kuri ĉi, vi rimarkos ke ĝi presas Al ambaŭ fojoj. Ĉar ni petas al ĝi la saman aferon. Ni petas ĝin por presi la literon A. Kaj poste ni petis ĝin por presi la numero 65 interpretita kiel signo, kiu estas la sama afero. ALI: Ĉu vi havas ion por diri? Ho, estas ŝerco, sorry. Bone, kiom estas homoj - ROB: Ni povas simple marŝi tra ĝi. ALI: Konsentite, do kiel vi starti? Iu? Kiel aludo, ni devas profiti de la popolo, de la typers. Speaker 18: [inaudible] ALI: Ho jes, oni prompto, perfekta. Do ni tajpas - Kion ni tajpas? Iu? Aŭ eble mi simple tajpu ĝin? Ĉu ni efektive tajpi la - ROB: Certe. ALI: Do ni tajpi printf al instigas ĝin, do ni povas kiel, donu al mi karaktero. Okay, kaj poste kio? Kial oni faras tion? ROB: Mi ne scias. ALI: Okay. Do nun, ni diras al ili por doni al ni karaktero. Sed tiam kiel vi reale atingi tiun signon? Speaker 19: Uzo GetString. ALI: GetString? GetChar? Okay, do kio estas la diferenco inter kordoj kaj char? Speaker 19: Strings estas serio, kiel aron da karakteroj. ALI: Cool, yeah. Do en ĉi tiu problemo, ni nur devas konsideri unu signo samtempe, tiel ni nur faros GetChar por tiu petskribo. ROB: Ni povus apliki funkcio se ni volis ke prenis tutan ĉenon kaj iris trans la ŝnuro kaj sxangxis cxiujn minuskla al majuskla kaj ĉiuj Majusklaj al minuskla. Sed cxi tie, ni simple petante vin por unu signo. ALI: Do nun ni havas la karakteron tie, sed tiam ni devas savi ĝin. Tial ni aldonas char c - kio? Speaker 20: Difini la variablo. ALI: Jes, ĝuste. Do ni havas nian karakteron. ROB: Mi opinias, ke vi povus esti - vi estas nur tri spacoj en, tial ĝi estas kriante ĉe vi. ALI: Konsentite, cool, nun ke ni tabbing aro, kio okazas nun? Kio estas la sekva paŝo? ROB: Kion nia programo devus fari estas ŝanĝi minuskla letero al Majusklaj letero. Kio se mi okazi eniri la hash simbolo? Ĉu tio estas - ALI: Estas bona simbolo. Ni uzas ĝin tre. ROB: Ĉu tio estas valida afero mi povas konverti al majuskla formo? Speaker 21: No ALI: Ne Ni devus kontroli tion. Do ni povas havi se aserto kontrolanta do se la c estas pli granda ol aŭ egala al la minuskla 'a'- tial se ni rigardas la abako, vi rimarkos ke ĝi devas esti inter ĉi tie, ĉe 97, kaj la minuskla a. Kaj povas esti iu ajn el tiuj, kaj en pliigoj tuta vojo malsupren. Kaj tiam ekzistas z en 122. Kaj ĝi devas fali inter tiuj du valoroj. Ĉu tio havas sencon? ROB: Do se c estas ne inter 97 kaj 122 - aŭ vi devas neniam devas uzi tiujn numerojn - se c estas ne inter 'a' kaj 'Z, tiam ĝi ne estas valida signo por ni Majusklaj. ALI: Do en kodo formo, ni diras, ke se c estas pli granda ol aŭ egala al simpla kazo minuskla - wow, kiel vi diras tion? Konsentite, estas pli granda ol aŭ egala al la minuskla 'a', kaj tio devas esti supre la minuskla 'z'. Do ĝi devas esti malpli ol aŭ egala al minuskla 'z'. Ni certigante estas inter la du. Tiam ni povas daŭrigi en kun niaj feliĉaj kodo. Kio? ROB: Do I figured ni simple observu petante, se ni hazarde ne havas minuskla litero. ALI: Ho, mi ne estis konscia de tio. Pardonu. Konsentite, do se ni tuj faros kiel Rob diras, kaj certigi ke - ni povas subteni demandante ilin, tiam kion ni faru? Speaker 22: [inaudible] ROB: Yeah. Ni devus uzi ian buklo. Ĉar la uzanto povas eniri ion malvalida an untold kvanto de fojoj. Do vi povas uzi dum ciklo. La celo de do-dum loop - laŭvorte, la sola fojo en via tuta vivo vi neniam uzos do- dum cikloj estas kiam vi petante uzanto enigo. Do la fakto ni petas uzanto enigo tie estas aludo, ke ni devus uzi do-dum ciklo. Kaj kial estas tiel? Ĉar do-dum buklo ĉiam okazas almenaŭ unufoje. Do kiam vi petante uzanto enigo, vi volas ke tio okazas almenaŭ unufoje. Kaj tiam se tion sukcesis, vi povas plu iri. Se ne, iru tien kaj demandu denove. ALI: Do alivorte, ni devas fari sekcio. Kaj tiel ĉi diras ĝin fari ion. Do printf - presi la deklaro, la prompto, kaj ankaŭ preni la karaktero, aŭ provo akiri karaktero. Kaj poste ni devas kontroli se ĝi efektive faris tion ĝuste. Tial ni aldonos la kondiĉoj, tiam ni diros kiam, kaj tiam ni havas la kondiĉa propozicio. ROB: Sed nun ni renversis la trajno de penso. Nun ni origine dirante se c estas en ĉi tiu limigo, tio validas. Nun ni volas inversigi tion kaj diri se c estas ne en ĉi tiu limigo, tiam ni bezonas apogi fari aferojn denove. ALI: Ho, jes. ROB: Do dum ĉi tio ne estas vera, ni volas reveni kaj peti alian karakteron. Ĉu ĉiuj vidas tion? Demandojn sur tio? Okay. Do nun ni havas estas valida signo ke ni povas majuskle. ALI: do, kion la sekva paŝo por uppercasing ĝin? Speaker 23: Aldoni 32. ALI: Vi aldoni - sorry, kio? Speaker 23: Ĉu vi ne povas simple aldoni 32? ROB: Do jes, ne en terminoj de magio nombroj. Vi nur devas uzi simpla citaĵo stuff. Speaker 23: Konsentite, bone - Rob: Sed vi povas akiri 32 - ALI: Kiel vi akiris la numero 32, mi supozas, estas tio, kion ni diras. Speaker 23: [inaudible] ROB: Do ni povas veni supren kun la numero 32 kune - Speaker 23: [inaudible]? ROB: Yeah. Sed se ni tuj faros ĝin en la du paŝojn ni faris antaŭe kun la pozicio stuff. Do la pozicio en la alfabeto, ke c hazarde estas estas c minus minuskla 'A'. Do, se ni eniris minuskla 'd', pozicio tuj estos 3. Kaj nun ni volis preni aĵojn al la majuskla gamon de aferoj. Do nun nia nova c tuj estos la ĉefurbo 'A' plus pozicio. Do homoj vidi kiel kiu alportas al ni - ni movante de la minuskla gamo, la ĝusta profundo ni estis en tiun gamo, kaj irante malsupren en la majuskla limigo, kaj tuj ke for en ĝin denove, kio tuj estos la sama karaktero, sed nun uppercased. ALI: Kaj por la popolo, kiu estis konfuzita de kiel li ĵus diris 32, esence li kombinis ambaŭ de ĉi tiuj en unu frazo. Do ekvivalenta maniero skribi ĉi diri vi povas nur ia anstataŭanto pozicio, la c minus 'a', kaj metis ĝin ĉi tie. Do, kion li faris, Mi ne batu - char newc = majuskla 'A' plus c minus minuskla 'a'. Kaj pro algebro, vi povas movi ilin ĉirkaŭe. Vi povas ankaŭ diri, ke vi povas movi ĝin ĉirkaŭ tiom char newc = majuskla 'A' minus minuskla 'a' plus c. Kaj jen, vi rimarkos se ni reiru al la abako. Ni havas Majusklaj A estas 65 kaj minuskla a estas 97. Do 65 - 97 estas -32. Saluton. Prenu sidejon. Oh. Vi povas sidi ĉi tie. Cool, bone, awesome. Bonvenon sekcio. Vi rimarkos ke la diferenco estas 32. Do tie estas kie li ricevis tiun numeron. Sed ne estas, kiel Rob diras, la plej bona maniero fari ĝin, ĉar ĝi havas la strangan magia nombro konfuzo. ROB: Vi devus uzi ĉefurbo A minus minuskla a. Vi devus ne uzi nur rektaj 32. Speaker 24: Kial estas ke, denove? Kial vi ne uzas 32? ALI: Se ni faris tion, estus char newc = -32 + c. Kaj se vi ne vidas neniun de la resto de ĝi, se ĉi tiu estas ĉiuj foriris, kaj vi nur vidi ĉi solan linion, tiam vi scias, kion la negativaj 32 estas? Estas nur maloportune. ROB: Do via programo funkcius tute bone. Estas nur stilo afero. Iu tuj en kaj legante vian kodon, ili estas kiel kion signifas 32 signifas? Eble ili ne batu - Mi verŝajne ne tuj rimarkas ke 32 hazarde estas diferenco inter minuskla litero kaj majuskla litero, kvankam nin tuj uzas tiun fakton en la sekvanta problemo. 32 estas - vi povus doni komentojn super ĝi dirante 32 estas la diferenco inter 'A' kaj 'a'. Sed je tiu punkto, kial ne simple uzi 'A' kaj 'a', kaj vi ne bezonas la komento tiam. ALI: Estas nur la vojoj supre ĝi estas multe pli pura, stilo-saĝa. Kaj tial, ĉar vi ĵus komencas programado - aŭ mi supozas ke ne, ĉar vi estas hacker Edi - ne gravas. Estas nur bona maniero havi - estas pli bone havi bonan stilon. Estas pli facile por aliaj homoj legi. ROB: Vi devus neniam bezonas memori la ASCII tablo, eterne. Vi devus nur povos uzi la simpla citaĵo gravuloj. Demandoj? ALI: Ĉiu bona? ROB: Okay. Do la sekva problemo estas substanca. Do la sekva problemo petas al ni - ALI: La venonta problemo estas demandante al ni fari la samon sed uzi bitlarĝa operatoroj. ROB: Kaj kompreneble, ni ne vidis bitlarĝa operatoroj ankoraŭ. Do ni nun diskutas tiuj. ALI: Be ekscitita. Ili estas super amuzo. ROB: Do la regula operatoroj, kiel x plus y, minus, tempoj, dividi. ALI: Tipo ĝin en ĉi prompto. Rob: Ekzistas ankaux%, se vi ne vidis ĝin, kion vi povas uzi por procentoj simbolo. Sed ni ne uzos tiujn por tiu problemo. Ni volas uzi bitlarĝa operatoroj. Nun memoru, ni alportis gxin en prelego unu. Mi ne certas se ni jam diskutis duuma preter tiu. Sed memoru, ke ĉiu unuopa nombro estas reprezentita - bone, ĉio - estas reprezentita en 1s kaj _0s_ en duuma. Do tio signifas ke kiam mi diras la numero 8, mi hazarde scias ke tio estas kiel, 1000. Kio bitlarĝa operatoroj ni fari estas operacii sur tiuj bitoj - estas operacii sur tiuj bitoj rekte. Nun mi ne plu traktante en terminoj de ok. Mi pritraktas en terminoj de 1000, kaj mi volas fari aferojn kun tiuj individuaj bitoj. Do Ali skribis la bitlarĝa operatoroj tie, sed that's - La nombro 8 ni uzos kiel unu el nia ekzemplo nombroj. Kaj la duuma reprezento estas 1000. Ni uzu alian numeron, 5 - fakte ni uzu 9 kaj 5. Kaj la 5 La duuma reprezento estas 00 - 0101. ALI: Ĉu ĉiuj bone en tiu? La duuma stuff? Ĝi estis de la unua prelego? ROB: Do eĉ se vi ne estas tute sur supro de kiel konverti tion al duuma, tio ne tute gravas por tiu problemo. Ni uzos ĝin, sed vi devos multe pli da ŝancoj por kalkuli kiel rapide turni aĵoj en duuma. Do uzante 9 kaj 5, nun ni havas niajn bitlarĝa operatoroj. Ho, kaj ankaŭ, 9 kaj 5, se ĝi estas entjero, tiam vere estas 32 bitoj, kio signifas ke ni havas kiel 0, 0, 0, 0 multajn fojojn, tiam 101 en la fino. Tio estas nur ĉar, ne gravas kion vi faras per entjeroj, 32 bitoj. Nur ĉar ni nur bezonas kvar bitoj por reprezenti 9 ne signifas ke ni ne estas uzante ĝis la alia 27 bitojn por nur _0s_. ALI: Nur por klarigi, unu el tiuj numeroj kiuj estas 0 aŭ 1 estas iom. Ĉi tiu estas 4 bitoj. Kiel tia Rob diris ke maŝinoj stoki ilin en 32. Tial ili havus 32 de ĉu 0 aŭ 1. Cool? ROB: La bitlarĝa operatoroj. La unua kiu ni traktas, ni faru &. Do, se ni faru 9 & 5. Do kio & faras estas, iom post iom, ĝi komparas la bitojn de la du nombroj kaj se ambaŭ de la nombroj estas 1, tiam ĝi revenos al 1. Se oni estas 0 kaj la alia estas 1, aŭ ambaŭ estas _0s_, tiam ĝi redonas 0. Do vi povas pensi pri tio kiel via logika _ANDs_. Kiel vi bezonas veran kaj vera reveni vera, sed vera kaj falsa estas falsaj. Do ĝi estas la sama afero, sed nun ni pritraktas ĝin kun nur bitoj. ALI: Do se vi rigardas tion, vi devos 1 - vi vicigas ilin, do ĝi estos 1 kaj 0. Ĉu vi infanoj pensas ke estus - kion tiu taksi al? Speaker 25: 1. ALI: Cool. Aŭ ne. Pardonu. Do ĉu tio havas sencon? Do kio estas la kolektiva respondo denove? Pardonu. Do, se ni havas 1 kaj 0, tiam kion vi ricevis? ROB: Do vi pensas pri kiel vi diras kaj laŭte. Se vi havas du bitoj, x kaj y, vi bezonas x kaj y al esti 1 en ordo por ĝi taksi al vera - aŭ, por ke ĝi por taksi al 1. Se x aŭ y estas 0, tiam ĝi taksas al falsa aŭ 0. Lucas: Estas bone memori ankaŭ ke 1 estas vera kaj 0 estas falsaj. Do se vi havas veran & falsa, estas malvera. Sed tiam, veraj & vera, vera. Falsa & falsa, malvera. ALI: Ni havas veran & falsaj. Do 1 kaj 0. Tial denove, sorry, unu pli da tempo? Speaker 25: Estus 0. Yeah, cool. Kaj tiam ni havi 0 & 1 - Speaker 25: [inaudible] ALI: Yeah. Do vi povas ĉiam interŝanĝi ilin en - Tiam se vi havas 0 kaj 0? Parolanto 4: 1? 0? ROB: Do ĝi 0. Ne ke ambaŭ nombroj devas esti la sama. Estas ke ambaŭ nombroj devas esti 1. ALI: Do ambaŭ devas esti vera por ke ĝi estu vera. Do jen 0. Kaj tiam vi havos 1% 1, kio estas? ROB: Tio estas sufiĉe bona nombroj. Ili havas tutan eblan - ALI: Bona laboro, wow. Konsentite, cool. Do ĉu tio havas sencon por ĉiuj? ROB: Do nun ni faros |. Kaj tiu tuj estos tre similaj, sed nun anstataŭ x kaj y bezoni esti 1 en ordo por ĝin taksi al unu, nun estas nur x aŭ y bezonas esti 1. ALI: Do 1 | 0 taksas al - CLASS: 1. ALI: Cool. 0 | 1 taksas al - CLASS: 1. ALI: Cool, kaj tiam 0 | 0 - CLASS: 0. ALI: Jes, kaj poste la 1 | 1 - CLASS: 1. ALI: Cool. Do jen kiel du bitlarĝa operatoroj. Awesome. ROB: Do nun ni faros ^. ALI: Ĉu necesas fari ĉiuj ili? ROB: Jes, ĉar mi kredas ke ni tuj uzi ĝin - uzante ilin ĉiujn. ALI: Okay. Do - ROB: Laŭ mi ni ne bezonas. ALI: Do ^ verkoj en kiuj oni devas havi ekzakte unu vera kaj malvera. ^ Signifas ekskluziva AŬ. Do nun tio ne - se x kaj y estas ambaŭ 1, ĝi estas nun falsaj. Tio estas la diferenco inter ^ kaj |, estas ke AŬ, vi povas havi, se x estas vera aŭ y estas vera, tiam ni estas bonaj. Ne, ^ diras se x estas vera, y devas esti malvera, ĉar alie ĝi ne estas vera. Ĉu vi havas demandon? Speaker 26: [inaudible] ALI: Yeah. Estas speco de simila. ROB: Jes, do kiam vi atingos ke malalta nivelo aparataro stuff, tiuj estas la tipoj de operacioj vi pritraktas. Je la aparataro nivelo, vi nur pritrakti bitoj. Vi ne pritrakti numerojn. ALI: Konsentite, por ^, aux se vi havas 1 ^ 0, kio devus kiuj taksos al? CLASS: 1. ALI: Cool. Se vi havas 0 ^ 1? CLASS: 1. ALI: Cool. 0 ^ 0? Cool. Kaj tiam 1 ^ 1? CLASS: 0. ALI: Cool, awesome. La proksima - ROB: Mi pensas ĉi tiuj estas ĉiuj ni devas trakti. Ni nur faras ĉi. ALI: La sola tempo ni devos fari - ROB: Ho, tio estos por la lasta problemo. Speaker 27: Wait, denove? ALI: Pardonu, kio estis via demando? Speaker 27: Cxu vi povas klarigi, ke iam denove? La ^? Speaker 27: Exclus - yeah. ALI: Do kio la ekskluziva AŬ signifas ke devas esti ekskluzive unu vera kaj falsa, do unu 1 kaj unu 0, kontre kun AŬ, vi povas havi - unu el ili devas esti vera, aŭ ambaŭ el ili povas esti vera, ĉar ĝi taksi al vera. Speaker 27: Do 0 kaj 0 estus falsaj. ALI: Yeah. Sed se vi havas 1 | 1, kiu taksas al vera. Sed se vi havas 1 ^ 1, kiel ni faris, kiu taksas al False. Ĉar ĝi estas ne ekskluzive estas vera. ROB: Kaj ĉi tio povas aŭ ne povas esti helpema, sed rimarkas ke la ^ estas egala al nur prenante la | minus la &. Kaj vi povas reale pensi pri tio ĉi tie. ^ Estas nur ORing ĉio kune sed prenante el iu el la bitoj kie ambaŭ estis vera. Do & revenas ĉio kie ambaŭ estis veraj. | Revenas ĉio kie unu aŭ ambaŭ estis vera. Do subtrahanta ke el inter la | donas al vi la ^. ALI: Ajna demandoj? Tio estis multe da informo. Cxiu bona? ROB: Ni povas iri sur la proksimaj por la sekvanta problemo, slash kio horo estas? Ili ne bezonas tiun ĝis la sekva problemo. ALI: mi pensis ke estis ĉi tiu. ROB: Ne. ALI: Ĉu vi estas certa? ROB: Jes, mi estas pozitiva. ALI: Kial ni ne komencu fari la sekva problemo? La problemo estas, denove, por ŝanĝi ĝin de minuskla al majuskla, kaj ĉi tempo por uzi bitlarĝa operatoroj. ROB: Do ni volas - ni komencu kun la duuma prezento de 'Al', ĉefurbo 'A', kiu estas 65. Do en duuma - tiel 'A' = 65, kiu =, en duuma - Mi tuj salaton ĉe la nombro de _0s_ - tio. ALI: Do faras ke sencon al ĉiuj? Do, 1, neniu 2s, neniu 4s, neniu 8s, ne - neniu 16s, neniu 32s, kaj tiam unu 64. ROB: Jes, mi kredas ke estas unu tro multaj _0s_. ALI: Pardonu. ROB: Konsentite, do ni havas la 64 aro, kaj ni havas la 1 aro, kaj kombinante tiujn kune, ni preni 65. ALI: Cool faboj? ROB: Do nun, minuskla 'a'- rimarki 97 - kiu estas la diferenco inter 97 kaj 65? Speaker 28: 32. ROB: Yeah. Do ĝi estas 32, kiu estas lia propra iom, por ke tuj estos 110001. Kaj tiu tuj estos vera por ĉiuj eblaj signoj. Do, se ni pensas pri 'D', kiu tuj estos 68, kiuj tuj estos 1000011. Kaj tiam minuskla 'd' tuj estos 68 plus 32, kiu estas 100, kiu estas tuj estos la sama afero, ke tio, ĝuste klakanta la 32 denove, tial 1100011. Do la diferenco inter majuskla kaj minuskla litero estas nur flipping ke 32-bita pozicio. Speaker 29: Ĉu ne 1000100? ROB: Atendu, estas 100 - ion mi faris malbone. Ĉi tio ne estis vera. Mi pensis ke estis diferenco de 3, do tiam mi gluiĝis la duuma 3, je la fino. Tiu devas esti prava. ALI: Dankon. Bona por montri ke eksteren. Tio estis akra. Bone, estas ke klara al homoj? ROB: La diferenco inter la majuskla kaj minuskla versio estas ĉiam ĝuste tuj estos 32, kaj tiel ĝi estas ĉiam tuj estos sola iom ke tio devas esti spegulita ŝanĝi inter la du. ALI: Do en tiu kazo, sciante la diferenco inter la ĉefurbo A kaj la minuskla a estas bona afero. Ne en via kodo, sed koncepte almenaŭ, estas bona. Do you guys povas antaŭeniri kaj kodo, ke en Spacetoj nun. Aŭ ĉu ni simple diskuti ĝin? ROB: Ni povas simple diskuti ĝin. Mi ne scias. You guys povas provi. Diskuto inter vi mem por iom. Ni donos al vi oportunon kodi ĝi. [Intermetante voĉoj] ALI: - is cool Speaker 30: Ĉi tio estas kiel hacker komedio. ALI: Jes, ni ĵus rakontanta al la novaĵo, irante tra ĝi. Rob Kaj ni estas dorso. ALI: Tio estas speco de stranga. Mi sentas ke ni devus havi CS50 novaĵoj stacidomo kaj ni povis efektive sidi kiel ĉi tio. ROB: Hacker Novaĵoj. ALI: Hacker Novaĵoj 50. ALI: Bonvolu demandi demandojn se vi konfuzas. ROB: Ĉu iu pusxis? ALI: Jes, tio estas bona afero. ALI: Wait, vi pusxis en via seĝo? Oh. Mi estis iom interesatoj. ROB: Ĉar mi nur rimarkis ke tuj volas alia bitlarĝa operatoro. Cxar nun, ni nur konverti majuskla al minuskla. ALI: Pardonu, ĉu ĉiuj havas tiun anoncon? Ni tuj iros el majuskle por minuskla. ROB: Tiam ni diskutos minuskla al Majusklaj dekstra post tio. Ho, ne. Ni havas cimon en ĉi tiu, kiu, mi supozas, ni neniam provis kuri. Kio estas ĝuste tio char c devas esti deklarita ekstere de la ciklo, ĉar lia medio estas limigita en la ciklo. Speaker 32: En ĉi tiu kazo, ĉu malbone uzi numeron? ROB: He, vi ne bezonas. Se mi garantias al vi, ke ĉefurbo 'A'- aŭ, minuskla' a 'minus ĉefurbo' A ' estis ĝuste unu malmulto, sed ke vi ne scias ke estas 32 - aĵoj laborus same bone se estis la 16 bitoj kiu spegulita - aŭ ne, mi supozas ke ĉu ne ankaŭ - aŭ la 64 bitoj estis spegulita, eble. Sed vi ne devus bezoni uzi 32. Vi povus anstataŭ uzi minuskla 'a' minus ĉefurbo 'A'. Speaker 32: Okay. Kion vi povas fari se vi sentas kiel vi skribas tro multe estas vi povas difini ĝin ĉe la supro. Do vi povas esti kiel, int diferenco = minuskla 'a' minus ĉefurbo 'A'. Kaj tiam vi povas tajpi diferenco anstataŭe. Tio estas valida. Sed ĝuste per la nombro 32 estas speco de - Speaker 33: Kvankam ĝi estas pro la fakto ke ĝi estas la 32 bitoj? ALI: Yeah. ROB: Ne eblis - la sola garantio ni bezonas por fari al vi estas, ke la diferenco inter la Minusklaj kaj majuskla estas unu bito. Ĝi devus ne gravas ke ĝi okazas al esti la 32 bitoj ke tio spegulita. Por tempo konsideroj, ni komencu tuj super ĉi. Estas bone se vi ne finita. Ne zorgu pri tio. ROB: Supozante c estas majusklo - ni ne devas supozi c estas majusklo. Ni scias c estas majusklo post ĉi dum loop - do-dum ciklo. Do tio signifas ke aspektas io tiamaniere 'A'. Do, se ni volas porti tiun 'A' al ĉi tiu 'a', kion ni devas fari? Nu do kiel ni igi kaj klaki la bito? ALI: Kiel ni klaki ĝin? ROB: Do ni scias ke ni volas klaki la 32 bitoj. Por ke ili do 'al' minus 'A', aŭ ni povus skribi 32, sed - Darn ĝin, ĝi estas la revés. ALI: Okay tiel Rob Jen kalkuli tiun numeron, magia nombro 32. Do li eltrovi kie tiu iom flip areo estus. Kaj poste kion ni metas kie la demando markoj estas? ROB: Kiel ni klaki ke iom? En terminoj de la majuskla litero, ĝi estas 0, kaj ni volas igi 1. Speaker 34: |. ROB: Yeah. Do tiu estas ni dirante ni prenu 'A'. Ni ORing ĝin per 0 - 1000 - kaj tio = tiu. ALI: Ĉu tio havas sencon por ĉiuj? Ni povas iri tra ĝi iom post iom, se vi volas. Speaker 35: Are you [inaudible]? ALI: Kie estas la minuso? ROB: Ho, vi volas diri ĉi tien? ALI: Ho, jes. ROB: Do mi supozas ĉi estas ni. Ni povus diri 32, kaj nun ni simple uzis bitlarĝa operatoroj. ALI: ni ne ŝatas magion nombroj. Ni ne faros tion. Ankaŭ mi kredas ke ni devus nur uzi bitlarĝa operatoro - Speaker 36: Se vi uzas ^ A, vi atingos 32? Speaker 37: Jes, mi kredas - ROB: Yeah vi volas. ALI: Jen kiel vi tion faris por tuj de ĉefurbo al minuskla. Nun vi povas paroli al mi kial Rob kaj mi ŝanĝis la prompto kaj kiel ni iris de majuskla minuskla, anstataŭ minuskla al Majusklaj kiel ni faris antauxe? Ĉu iu havas ideojn kial, kiuj povus esti pli malfacilaj? ROB: Do ni volas fari - ALI: Jes, antaŭen. Speaker 38: La | operatoro nur vere bona por aldoni. ALI: Jes, ĝuste. ROB: Do, kion ni volas fari en la minuskla al Majusklaj kazo estas, konverti tiun 'a'- do ni volas meti en iuj nombroj tie kaj uzi iun operatoro por ke ĝi venas al ĉefurbo A. Ni ankoraŭ probable uzante 32 iel, sed nun kiel fari ni get this eliri al tio? Do c - ho, mi ankoraŭ volas ke tro - ALI: Do nun se ni konvertado de minuskla al Majusklaj denove, tiam ni fari la ^ operacio, kiel vi knaboj diris. ROB: Estas aliaj manieroj vi povas fari tion. Multaj de la bitlarĝa operatoroj finos esti tre facile difinebla en terminoj de aliaj bitlarĝa operatoroj. Do mi tuj ne uzas ^ aŭ tute ne, sed ^ funkciis perfekte bela. ALI: Konsentite, do ni tuj iru en la lasta problemo, kiu estas baza - la lasta problemo estas por konverti ion en duuma. Do, ekzemple, vi havas 50, kaj poste vi konverti ĝin al duuma, kiu estas 110010. Kaj mi kredas ke vi infanoj ĉiuj scias pri duuma de prelego. Kaj ankaŭ vi ne supozas ke oni iun ĉefan _0s_ en ĝin. ROB: Vi povas ignori tiun parton por nun. La unua paŝo, vi povas fari ĝin tiel ke ekzistas gravaj _0s_. Kaj tiam ni povas modifi ke ne havi ĉefan _0s_, se ni havas tempon. ALI: Do ne zorgu pri tio. Nur provas akiri en duuma. Bona loko por komenci estus - ROB: Ni bezonas peti entjero. ALI: Ho jes, tio estas bona. Ni povas komenci kun tiu. Do vi povas ŝanĝi la prompto. Do anstataŭ karakteron, nun ni pritraktas entjeroj. Cool? ROB: Kaj nun kio estas nia do-dum kondiĉo tuj estos? Oni petas nenegativa entjero. ALI: Kiam ni volas konservi instigante la uzanto por io alia? Kiam ĝi estas pli malgranda ol 0. ALI: Dekstra. ROB: Dum mi estas malpli ol 0. ALI: Nun ni volas igi ĝin. Ĉu vi infanoj havas ideojn pri tio, kion fari? Ajna Inklings? Yeah. Speaker 39: Cxu ni devas konverti ĝin, aŭ ĉu ni povas nur presi iujn _0s_ kaj _1s_ kiu estus la dekstra numeron? Ĉu vi povas fari por buklo kaj kalkulu ekster per potencoj de 2? ROB: Jes. Vi ne devas konverti mi al lia duuma - la duuma reprezento de i ne persvadis ene de i. Vi nur devas presi la duuma reprezento de i. ALI: En aliaj vortoj, vi ne bezonas iri de potencoj de du. ROB: Ĉar mi estas jam stokitaj kiel binaraj, do vi ne bezonas konverti ĝin al duuma. Nur transiru lia duuma, kaj presi ĝin. Kaj vi tuj devas uzi bitlarĝa, ĉar vi deziras rigardi la efektiva bitoj. Vi ne bezonas uzi bitlarĝa, sed bonvolu fari. Kaj tio estas efektive - vi povas simple fari potencoj de du per multiplikante per 2. Ni transiru unu el la lastaj du duumaj bitlarĝa operatoroj, kio estas ĉi tiu. Do kiam vi prenas - ALI: Ĉu vi povas iri per ambaux? ROB: Yeah. Do ni iru kun 9. Do 9 maldekstra movo 1 - kio lasis movo duona nur movi ĉiuj bitoj al la maldekstra kaj enŝovu 0. Do ni movi ĉiuj bitoj de 9 al la maldekstra pozicio, kiu donas al ni - Do rimarki ni ŝanĝis ĉiu eliris, kaj insertaron 0 sur la dekstra flanko. Se ni ŝanĝis lasita de du, ni devus ŝanĝi ĉio lasita de du, kaj enigi du _0s_ por plenigi la truojn. Demandon? ALI: Tial dekstra movo faras similan aferon. Se vi havas 9 dekstra shift 1 tiam vi simple kopii ĉio super al Dekstre, vi perdas cifero, do 100 anstataŭe. ROB: Do vi estas bela, ke vi perdas la bito kiu okazis al esti ĉiuj la vojo dekstre. Estas malsamaj tipoj de dekstra ŝanĝoj, sed esence vi povas pensi pri dekstra ŝanĝi kiel ĝuste dividi per 2. Kaj vi povas pensi pri maldekstra movo kiel multiplikante per 2. Do se vi konvertiĝis ĉi - se vi konvertiĝis 9 shift 1, kiu estas egala al 10010, se vi vere iris tra la duuma kaj supozis, kion tio estis, ĝi estus nur 18. Ni nur multipliki per 2. 1001 maldekstra movo 2 estas tuj estos 36. Ni multipliku per 4. Konsentite, cool, do tio estas oportuna bitlarĝa operatoro por ĉi tiu. Pli konfuzo? Ĉu vi infanoj volas provi gxin? Aŭ ni povas nur salti bone kaj komenci ĝin? ROB: ni devus probable salti dekstra in ALI: Jes, bone. Rob Kaj marŝi tra ĝi kune. ALI: Nu mi nur eniru ĝin. Do kiel li diris en la komenco, ni tuj ĝuste iri tra iom post iom. Do ni tuj bezonas buklo. Ĉu iu havas ideon pri la plej bona speco de buklo iri tra ĉi? Ni havas dum cikloj, do-dum maŝojn, por bukloj. Speaker 40: Do-dum buklo? ROB: Do rememori, kion mi diris antaŭe, tiam ni nur uzante do-dum maŝojn akiri uzanto enigo. Vi neniam preskaux cxiam uzi ilin por io alia. ALI: La problemo kun do-dum cikloj estas ĝi faras ion antaŭ ol ĝi kontrolas por la kondiĉo. Do, povus fari ion malbonan - kiel, vundita - fari iun kiu ne eblas. Do vi volas kontroli unua. ROB: Estas multe da kazoj kie vi povas uzi do-dum cikloj, sed homoj ne atendu, ke vi uzu ilin krom se ĝi estas uzanto enigo. Do ni uzis nian do-dum buklo akiri i. Multfoje estas nia buklo tuj volas buklo? Ni volas buklo sur ĉiu de la bitojn de i. Kiom da bitoj estas en i? Speaker 41: 32. ALI: Yeah. ROB: Do estas 32 bitoj. Ni ne volas diri 32. Ni anstataŭe volas diri sizeof - kiuj, cxu vi vidas, ke en klaso ankoraŭ? ALI: Nope. ROB: Kial ĝi diras uzi tiun - sizeof (int) fojoj 8 - ALI: Do, sizeof estas - Speaker 42: [inaudible] ALI: Interesa. Do, sizeof estas enkonstruita en C funkcio kie nur diras al vi la nombro de bitoj en - ROB: Bytes. ALI: Bajtoj, sorry - la nombro de bitokoj ke variablo devas stoki valoro. Do mi opinias, ke li transiris en klaso, ĉar, int estas 4 bitokoj eble. Cool? ROB: Sed vi ne devus bezoni scii ke int estas 4 bitokoj. Vi devus povi diri - vi devus uzi sizeof (int) akiri 4 bitokoj. Kaj tio estas efektive grava por iuj aĵoj. An int povus ne esti 4 bitokoj. En alia komputilo, int estu 8 bajtoj. Do, via programo ne funkcias en tiu komputilo ĉar vi forte-kodita 32 bitoj kiam en tiu komputilo hazarde estas 64 bitoj. ALI: Do vi havas la tutan numeron de bitoj, kiujn vi volas ĝin por inversigi. Rob: Kaj la diferenco inter bajto kaj iom estas, ke ekzistas Estas 8 bitojn en bajto. Do sizeof (int) redonas 4 bajtoj, do ni devas multipliki ke por 8 por ricevi 32 bitoj. ALI: Konsentite, do ni scias la maksimumo kaj ni scias ke ni volas iri de - ni volas iri tra ĉiuj el ili. Do ni volas iri de 0 al numBits. Do ĉu iu scias kiel skribi la buklo por tiu? Iu? Speaker 43: [inaudible] ALI: Do vi volas trairi la nombro mi el la nula iom al la unua bito, la dua iom, la tria bito, la tutan vojon al numBits. La max nombro de bitoj, ke vi povas alveni al. ROB: Kio estas la komuna buklo ni uzas tion, kion ni volas fari ion x fojoj? ALI: Por. Perfekta. Do ni havas por. Kaj tiam ni krei iterator, kiu ne tuj estos i. ROB: j. ALI: J = 0. Do ni komencu je 0. Kaj tiam ni havos la kondiĉo por certigi, dum vi estas iri tra ĝi ĉiu unuopa tempo - [Intermetante voĉoj] ROB: j. ALI: j estas malpli ol numBits. Do ni ne volas fari la efektiva egalas unu, ĉar ili estas numBits tuta, kaj ni komencos je 0. Do ni vere tuj havas - Speaker 44: Ho. ALI: La indicoj ne finas en numBits minus 1. ROB: Ni etikedi la bitoj 0 al 31, ni ne etikedi ilin 1 ĝis 32. ALI: Kaj poste ni iras al pliigo ĉiufoje per unu, ĉar ni volas kontrolu ĉiun unu. Do ni iru j + +. Speaker 45: Kial vi faras tion? Speaker 46: Kial vi iras tra ĉiu bito? ROB: Do ni volas iri tra ĉiu bito kaj - Do diru ni havas iu nombro. ALI: 68. ROB: Ni povas uzi 68. Do la duuma Iĝos 100100. Do tiu estas ene de i kaj ni volas iri super ĉiu el tiuj bitoj. Ĉu tio estas 1? Presi 1. Ĉu tio estas 0? Presi 0. Tiam ni iru al la venonta iom. Ĉu tio estas 1? Presi 1. Estas 0? Presi 0. ALI: Cool, okay. Nun ni estas ĉe la ĝusta indekso por kie tiu bito estas. Kiel ni povas kontroli, ke specifa? Diru ni ĉe j = 0, do ni volas kontroli la 0 indico de la bito. Do, en ĉi tiu kazo, ĉi tiu. Do nun kiel ni iru sur kontroli - ho, tio estus tiu ĉi. ROB: Yeah. ALI: Pardonu. Kiel ni iras sur kontrolanta tiu, en senso? Kiel ni kontrolu ĉu ĝi estas 0 aŭ de 1? Nu let's - CLASS: Kaj 1? ALI: Kaj? Yeah. ROB: Do diru ni jam havas 1. Tiam ĉi &, ĉi revenos ĉu tio estis 1 aŭ 0. ALI: Do ni povas iri malsupren. Kaj ni povas fari kiel vi infanoj diris, fari la & funkcio. ROB: int - how do I want to say this - isOne = i. Kaj por la unua bito ni okazi esti rigardante, ni faras i & 1. Nun kion ni tuj volas & per la duan iom? Speaker 47: 2. ROB: Jes, la dua, ke ni estas en 2. ALI: Vi rimarkos ke la 1 movis super la maldekstra. Do ni lernis neniun bitlarĝa operatoroj fari tiu funkcio? ROB: La proksima - ALI: Jes, bone, ĝuste. Do ĝi estas maldekstra movo. Anstataŭ ĉiam kontrolante kun 1, ni tuj ŝanĝi ĝin. Kaj kiom da fojoj ni tuj ŝanĝi tion? Se ni kontrolanta la nula oni tiam ni tuj movi ĝin super nulo. Yeah, precize. Do vi forlasis ŝanĝi ĝin per j. Perfekta. Do nun ni scias - ni havas ĉi int de se estas 1, kaj tiam - tiel Rob estas iom kaptiloj tie - kaj nun li iras antaŭen kaj li ĵus diris ke se ĝi vere estas 1, ĉar 1 taksas al vera, do ni ne devas diri ISF isOne egalas 1 - do se isOne, tiam ni presi 1, kaj alie ni presi 0. ROB: Do nia programo havas tutan cimon. Nu, demandoj pri tiu komenco. Speaker 48: Cxu vi iam metis la isOne interne de la kvar operacio parto kaj tiam ĝi ŝanĝi sin kiel la lasta parto? Do isOne egalas 1 kaj tiam - ROB: Jes, vi povas. Ni povas vere montri ke iam ni ripari la cimon, ke mi estas estonta diskuti kun vi cxiuj. Rimarku la ordo ni iras super aĵoj. Donita ĉi duuma reprezento, ni ekde la nula iom. Se ĝi estas 0, tiam ni presi - nu, tio estas 0, do ni estas videbligi 0. Tiam ni iros al la dua iom. Estas 0, do ni presi 0. Tiam ni iros al la tria bito. Estas 1, do ni presi 1. ALI: Do okazas malantaŭen. Do kiel vi infanoj proponas, ke ni riparos tion kaj iru en la alia direkto? Speaker 49: [inaudible] ROB: Yeah. Do anstataŭ iri de 0 al numBits, ni iros de numBits bitoj al 0. ALI: Do [inaudible] povas ĉiam iri la alia vojo. ROB: NumBits minus 1, ĉar tio estas la lasta nubmer - ALI: Ĉar ĝi iras de 0 al 31. Kaj poste ni ĉiam certiĝu ke ĝi estas pli granda ol 0 por ke vi ne iru tro dekstre. Kaj tiam vi ĉiam subtrahi per 1 iri al dekstre. ROB: Do nun ni havas inversan ciklo, kaj la nombro estas denove en impreso en la ĝusta maniero. Speaker 50: Ĉu vi ne devas ŝanĝi la ŝanĝo afero tro? ALI: Do ne. ROB: Ni faras la saman ĝusta operacioj, krom nun en la inversa ordo. Do anstataŭ fari la sxangxigxantaj per numBits minus 1 por atingi ajn ĉi bito estas, anstataŭ fari tion lastan, ni simple faru ĝin unue. Por dorsflankanta ĉi tien, ni retroirigi la ordo de ĉiu kio okazas interne. Sed ni ne volas ŝanĝi kio okazas interne nenio. ALI: Ĉu tio havas sencon? Procesante? Okay, do ne iu alia havas aliajn koncepta demandoj? ALI: Antaŭ ni iru en lian punkton kiu estas - ALI: Bone, bone iri. Rob: Anstataŭ uzi j por esti nia - anstataŭ uzi j por ĉiam ŝanĝi de, kiel unu maldekstra movo j, mi pensas kio vi diris kiel, por j uzi mem. Do por j - Mi supozas ĉi tiu estas la malmola - j = 1 << 31. Ĉu tio estas kion mi volas? Mi kredas ke estas << 31. j> = 1. j >>, >> isOne, i & j - tial nun anstataŭ uzi - ALI: Vi konstante movis j anstataŭ havi indekso por kontroli ĝin. Ne ke malbona. Ni uzas similan tipon de logiko. Do se vi reiros - oh, sed ĝi tuj perdos ĝin. Konsentite, vi simple tuj tajpi ĝin denove. Se vi rimarkas, ke ni havas 1 << j kvanto de fojoj, kaj ni estis pliigante j ĉiu unuopa fojo por unu pliigo, sed ĉi-foje anstataŭ ili faras la pliigo de j ĉe la supro interne de la por buklo. Do anstataŭ ĉiam movi ĝin - ROB: La unua ripeto de la por ciklo, ni havas j estas 10000. La sekva ripeto de la ciklo estas por 01000. La sekva ripeto estas tio. Kaj la 1 estas simple tuj observu propagante malsupren gxis ni alvenis al la tre fino, kie nun estas ĉi. La sekva, la 1 tuj estos puŝis for, kaj j estas jam ne pli granda ol aŭ egala al 1. Mi povus ankaŭ meti pli granda ol 0, sama diferencon. Kaj poste jen ĝi. Demandoj? Yeah. Speaker 51: [inaudible] ROB: Do tio estas la sama kiel - cxu vi vidas, j + = 3? Do ĉi tiu estas la sama kiel j = j + 3? Vi povas fari tion por preskaŭ ajna operatoro en C. Do j >> = 3 estas egala al j = j >> 3. Do kiu funkcias ankaŭ kun bitlarĝa operatoroj. Kaj mi ne enmetis 31 ĉi tie. Mi devus meti numBits - 1. ALI: Yay, neniu magio nombroj. Okay, estas 4:00 kvankam, do se vi infanoj devas iri - sed tio ĉi sencon? Ĉu vi infanoj havas aliajn demandojn? ROB: Mi ankaŭ volus ĵeti en ke se ni volis - Kaj Li diskutis triargumenta operatoro ajn? ALI: Ne Estas bone. ROB: Do vi povus rigardi en gxin por la proksima tempo. ALI: Konsentite, vere? Nun vi nur fanfaronas. ROB: Ne, nun it's - ĉi tio estas kion ricevas homoj interesataj, kaj nun ili iros rigardi en ĝin. Do nun, kiu faras la samon, en unu paŝo. Do unue kontroli, estas i & j 1? Ĉu vera? Se jes, presi 1, alie, presi 0. ALI: Sed fari ĝin la alia maniero estas perfekte bone ankaŭ. Ĝi havas la sama logiko. Do tio ne kiel unu estas - ROB: En ĉi tiu punkto, ni povas forigi tiujn frizita krampoj, ĉar ĝi estas nur unu-linio por buklo. ALI: Konsentite, tiel ĉu tio havas sencon? Tio estis ia salton. Sed estis nur speco de sintakso, pli. Cool? Aliajn demandojn? ROB: Bone. ALI: Bone, cool. Dankon pro veni sekcio.