ROB: Bone. Bonvenon al la unua sekcio. Mi Rob. Jozef: Mi estas Jozef. ROB: Do ni plonĝi dekstra in Unua afero paroli pri Estas la aparaton. Do espereble plimulto el vi havos elŝutis ĝin jam. Sed vi povas vidi la instrukciojn ĉe cs50.net/appliance. Ho dio, nun mi estas mem-konscia. Mi ankoraŭ aŭdi ĝin. JOSEPH: Wow, ĝi sonas ĝi estas desorientada. ROB: Do iuj homoj estis havanta demandojn per ĝi, do ne atendu la lasta minuto de la problemo starigis al klopodi solvi la aparaton kaj ekscii, ke ĝi ne funkcias. JOSEPH: Kaj se io ne funkcias kaj vi bezonas helpon, vi povos iri al cs50.net/discussion kie ni havi forumon, kie vi povas sendi viajn demandojn. Kaj ni ricevos por ili iam. ROB: Bone. Do tio estas kion la Aparato aspektas. Denove, tio estas nur tute apartaj mastruma sistemo kuri ene kion ajn mastruman sistemon vi kuras sur via tekkomputilo. Kaj la ĉefaj aĵoj vi esti uzanta estas gedit. Do espereble ĉi havas jam fariĝi konata retejo. La fina. Kaj vi povas ankaŭ funkcii Chrome ene de la aparaton. Oni vidis paron da homoj kiuj raportis interreto ne funkcias en la aparaton. Kaj iuj el ili jxus alprenita ke tie ne estas supozataj esti Interreto en la aparaton. Sed jes, estas supozita esti interreto. Mi tion diri ĝuste nun, sed tio ne vere nenion signifas. Se la interreto ne funkcias, tio estas, kion vi emas bezoni kuri ripari ĝin. Se vi havas interreton aferoj, ne faru memori ĝin, simple sendi ĝin sur Diskuti, kaj ni diru, kuri tio. Sed la interreto devus funkcii. Do la sola alia afero - yeah, nenio alia estas vere grava. Sed mi nur volis atentigi, ke - vidi en ĉi tiu fundo-dekstra angulo. Do ĉiu el viaj aparatoj devus havi IP-adreso. Kaj poste en la semestro, tiu ĉi IP adreso fariĝos pli grava, kiam vi laboras por la retejo p-aro, ĉar vi povos aliri la retejo vi laboras en el via lokaj Chrome uzante ĉi IP adreso. Sed kion mi ŝatas uzi la IP-adreso por - kaj vi ne devas fari tion, mi volas nur atentigi lin ekstere - Estas ĉi tie. Do tiu estas fina stacio fenestro mia Mac, tiu ne estas en la Aparato ajn. Kaj vi povas rigardi tion, kion ĉi komando faras. Sed mi tuj SSH rekte al mia aparaton. Mi ne scias kio estas la IP estas. JOSEPH: 168 - 168.224.1.0. ROB: Do iam mi done kun tiu, ensaluti Nu, baze, ĉi tio estas identa al fina fenestro ene mian aparaton. Do mi sufiĉe tre neniam vere funkciis de interne la aparaton mem. Mi simple ĉiam ĝi kuras en la fono minimumigita kaj SSHed en gxin. La temo kun ĉi tio vi ne iras por povi uzi gedit facile rekte de ĉi. Sed se vi volas esti reala malvarmeta hacker, tiam vi devus alkutimiĝi al komandlinia tekstoredaktilo ĉiukaze. Do Vim kaj Emakso kaj Nano, ĉiuj ĉi tiuj estas malsamaj alternativoj. Nano emas esti la plej facila. Kaj mi pensas ke ĝi havas neniun sintaksa kolorigo. Ho, ne, tio tute does. Do vi povas uzi nano, ĉar ke oni estas sufiĉe facila. Vi vidas ĉiujn tiujn ordonojn ĉe la malsupro. Tiu iom karoto simbolo. Se vi ne vidis ĝin antaŭe, vi probable vidos amason nun. Ĝi ĝenerale signifas la kontrolon karoto, kiel la malsupro-maldekstro de via klavaro kontrolo karaktero. Do jen ĝi estas telling me down here - Ho, estas ne ekstermigxos se mi zomi in Do Kontrolo, X estas kiom Mi iras al eliri. Kaj tio diras mi kapablas trafi Y por Jes, por ŝparado, N por No Do jen Nano. Vim kaj Emakso emas esti iomete pli komplika kaj blindiga. Sed vi povas kutimiĝi al ĝi, kaj tiam vi amos ĝin. Do jen tio. JOSEPH: Neniu bezono por fari tion. ROB: Jes. Vi rajtas uzi gedit por la restaĵon de la semestro. Do ajna aparato-rilataj demandoj? Aux cxu vi havas pensojn pri kio alia tio devas esti parolata pri proksimume la aparato? Jes. SPEAKER 1: Kiam vi SSHed en viajn aferon, estis la pasvorton Crimson? ROB: Jes. La pasvorto por preskaux cxio en la Aparato tuj esti Crimson. SPEAKER 2: Instalu kiel reala IDE sur la aparaton, ĉu ĝi funkcias? ROB: mi imagas Eklipso ja havas Fedora versio, en kiu kazo, jes, Vi povas fari tion. Estas probable ne vere valoras. SPEAKER 2: okej. Do estas verŝajne pli facile, se mi volis uzi eklipson, simple uzu la denaskan kaj tiam alŝutu al - ROB: Ho, tio estas ankaux probable pli facile. Sed vi povas akiri ĝin laborante ene de la aparaton. JOSEPH: Kaj por la ĉambro, la demando estis, vi povas instali alian Ide ene de la aparaton? ROB: Eklipso esti Ekzemplo de IDE. Ajna alia Aparato demandojn? Ĉiuj pravas. Do ni nun pluiru al komandlinia Interfaco-rilataj aferoj, do CLI. Kaj cetere, mi nur iras por labori en ĉi tie, ĉar tio estas identa al laboras ene terminalo fenestro ene de la aparaton. Kiel vi, ke tiparo rigardas? Ĉu tio estas suficxe granda? Ĉiuj pravas. Do tie estas multe da komandoj kiuj vi devas akiri belan uzata por tra la semestro. La granda du por la navigado estas ls, lerta la dosieroj en ĉi dosierujo, kaj cd, do ŝanĝi dosierujon. Do mi povas ŝanĝi al labortablo kaj poste tre komuna aranĝo estas cd al dosierujon kaj tuj ls Kio estas en la dosierujo. Homoj ankaŭ kelkfoje ne rimarkas ke Tab finaĵo estas aĵo. Do kiel KD, VH, kaj tiam mi batis Tab. Mi preskaŭ neniam tajpas el la tutan aferon. Kaj tiam se mi gardas bati Tab denove, gxi timige aŭtomate komenci listing por mi. Do mi povos: cd vhosts, loka gastiganto. Kaj tio estas ĝuste tuj - en la okazo vi ne auxdis la terminon antaŭe, dosierujo estas nur alia vorto por dosierujo. Do nun, se vi vidas - ni alportos ke al la supro. Do nun, se vi vidas en krampoj, vi vidi la malgrandan supersigno, oblikvo, vhost, oblikvo, loka gastiganto. Do la supersigno, kiuj referencas al mia hejmo dosierujo. Estas dosierujo vi estas en kiam vi ssh in Ĝi estas la dosierujo vi estas en Kiam vi malfermas terminalo. Ĝi estas kie vi komencas. Kaj do mi estas interne de mia hejma dosierujo, kaj mi estas ene de la vhost dosierujon interne de mia hejma dosierujo. Kaj tiam mi estas ene de la loka gastigi dosierujon interne de tiu. Do kelkaj aliaj utilaj aferoj kun cd - aŭ bone, en ĝenerala, do dot ĉiam referencas al la aktuala dosierujo. Cd: dot estas bela senvaloraj komando. Sed tio ŝanĝas la kuranta dosierujo. Pli utila en terminoj de cd estas streketo dot, kiu estas nur iru supren unu dosierujo. Kaj notu, ke tiuj - Mi volas diri alias, sed tiuj simboloj, streketo kaj punkto, streketo tiuj laboro cxar preskaux neniu komando vi estas tuj estos pensas kurante. Do kiel KD estas probable, kie vi estos uzante la plej, sed cxi tiuj ne estas aferojn ĝuste cd komprenas. Estas sufiĉe da io vian tutan komandlinia komprenas. Multaj programoj komprenu dot kaj streketo dot. Do la aliaj utilaj - cd, haltostreko. Do kiu tuj kondukos min al la lasta dosierujo kiujn mi trovis in Do iam mi faros ion kiel, ho, mi laboras en ĉi tie. Kaj mi vidas iun eraron kun io, kaj Mi iros enketi ĝin tuj iu hazarda dosierujo ie. Kaj mi ne scias se ĝi malebligos lasu min en tie. Ĝi volas. Tial do mi faras kion mi volas en tiu ĉi dosierujo. Bla, bla, bla, bla, bla. Kaj mi, kiel, bone, mi volas reiru al kie mi estis. KD, haltostreko, kaj tio alportas al mi rajtas dorso. Do mi volus ĵeti amason de tiuj ĉe vi hodiaŭ. Mi ne atendas ke vi enmemorigas ĉiuj ili. Ĝi estas speco de simple scias ke ili ekzistas. Kaj tiam poste, kiam vi estas kiel, hmm Mi volas reiri al la dosierujo, ke mi estis nur je, ho, atendu, io simila ekzistas. Vi ne devas simple entajpu en la tuta katalogo denove. Jozef; kaj eventuale vi volas nur uzi ilin denove kaj denove, kaj gxi devos fariĝi muskolan memoron. ROB: Jes. Do kiel mi diris antaŭe, ke supersigno estas via hejma dosierujo. Do mi povos: cd: supersigno. Sed mi eĉ ne devos faru, ke se mi ĝuste - Mi reiros al la dosierujo por ĝi ne estas sencela ekzemplo. Sed se mi ĝuste fari kd, tio estas ankaŭ la sama kiel, iru al mia hejmo dosierujo. Mi faros Ordonu, K. JOSEPH: Vi ankaux povas entajpi klara, la vorton, kaj ĝi devus demeti ĝin. ROB: Kaj mi pensas ankaŭ Kontrolo, L ankaŭ ĝin faras. Do multaj malsamaj manieroj. Mi pensas ke estas iuj diferencoj kie klara kaj Kontrolo, L volas nur vere puŝi ĝin al la supro kaj Mi povas ankoraŭ rulumu dorso. Ordonu, K laŭvorte detruas ĉio, kaj vin ne povas rulumi reen supren. Almenaŭ, tio estas kiel ĝi funkcias en iTerm2. Mi ne scias kiel aliaj aĵoj - io. Kun SSHing, do se vi estas en Windows, vi tuj devas elŝuti PuTTY por SSH ekde Vindozo ne havi kiel enkonstruita SSH ilo. El la Mac, vi povas simple SSH rekte el terminalo fenestro. OK. Demandojn? Kun ls, do io kutimi plejmulto el tiuj komandoj estas - bone, mi nur faras unu. Ls, haltostreko, l. Do haltostreko, l estas kion ni iras voki flagon al LS. Kaj multajn el tiuj komandoj havas flagojn ke vi povas pasi al ili. Do, en tiu kazo, haltostreko, l estas flago kiuj diras al ĝi doni al mi kompletan liston de ĉiuj informoj de tiuj dosieroj. Kaj ni vidas tie ke labortablo estis redaktita je julio 30, je 12:54. Elŝutoj estis modifita ĉe Septembro 6. Tio estas la aktuala grandeco kaj bajtoj el tiuj dosierujoj. Vi ne devas kompreni ĉion ĉi. Ĉi necesajxojn sur la maldekstra, tiuj drwx'S, kiu igos multe pli gravaj poste, kiam vi devos pritrakti - kiu devas vidi kun kiuj havas permesojn rigardi tiujn dosierojn. Kaj do, se vi ne estis la nura uzanto de tiu komputilo, vi povos diru, okej, mi estus la sola permesis rigardi al ĉi tiu dosiero aŭ mi estas tuj permesos ke ĉiuj rigardi ĉi tiun dosieron. Do iu alia en mia komputilo povas rigardi ĉi tiun dosieron. Mi eĉ ne scias kio estas tiu - kion signifas tion faru? Jozef: Mi ne estas tute certa, fakte. ROB: Neniu ideo. JOSEPH: Sed se vi ne scias, ekzistas helpema komandon kiun vi povas uzi por diri al vi kio estas la eligo signifas. Kaj se vi tajpas en iu antaŭ la komando - tiel M-A-N. ROB: Viro. Tiel homo estas alia kiu estas tre utila. Kaj viro, LS. Do la viro paĝoj, oni havas ambaŭ ordonas, ke vi tuj povas uzi ĉe la komandlinio, kaj ili ankaŭ havas funkcioj kiu estos grava kun C. Do vi povas homo - kaj mi ignoris 3. Sed homo 3 printf tuj venigu ĝis la C versio de printf. Sed se mi ĝuste fari viro printf, tio estas tuj elvoku la ordonon printf kiu okazas ĉe la komandlinio. Do homo, LS. La viro paĝoj povas esti bela blindiga. Cxi tie, vi vidos ĉi liston de ĉiu el tiuj flagoj kiujn LS komprenas. Do, se ni iros al interfrapigos, l, kaj - Mi simple volus ĵeti ĉi ĉe vi. Sed nur por esplori, vi volas unue trafis la demando markon aŭ oblikvo butonon. Do slash. Kaj tiam mi povas serĉi cxar kion ajn mi volas. Do mi tuj oblikvo por haltostreko, l. Kaj tie estis. Do uzu longan liston formato. Tio ne helpas min kompreni pri kio ke aparta kolumno signifis, sed mi supozi ie en ĉi tien tio klarigus tion. Do uzu la viro paĝoj por iu komando ke vi ne tuj komprenis. Mi sufiĉe certas ke vi povas eĉ homo, viro. Interfacon al la reta aludo manlibroj. Ho, tiu lasta kiu estas eble iomete adekvataj estas ls, haltostreko, al. Do rimarkos se mi simple fari ls, Mi ricevas tiujn kvin dosierojn. Se mi faras ls, interfrapigos, a, mi akiri multe pli da dosieroj. Do la afero en komuna inter cxiuj tiuj novaj dosieroj estas la skalara antauxe. Do la konvencio estas ke dosieron kiu komencas per punkto estas kaŝita. Do vi ne volas vidi, ke la dosiero, vi ne volas havi ĝin salaton kun via dosierujo liston. Ĝi estas nur kiam vi eksplicite demandas, Enorde, ls, haltostreko, a, montri al mi. La a staras por ĉiuj dosieroj, inkludante gardatoj. Do iuj aliaj komandoj. Ho, demandoj, je tiu punkto? Jes. SPEAKER 3: Kiam vi faras ls, a, kio estas la punkto, skalara? ROB: Ho. Do ĉi tiu estas kion mi parolas. Ĝi estas la sama afero, kie Mi povas ŝati cd: dot, punkto. Do teknike, punkto kaj punkto, punkto estas dosierojn kiuj ekzistas en ĉiu unuopa dosierujo, kie la skalara dosieron referencas al la aktuala dosierujo. Do se mi cd: dot, mi simple irante resti en la adresaro. Kaj streketo dot ĉiam rilatas al la antaŭa dosierujo unu nivelo supren. Do, se mi iros en la protokolojn kaj ls, haltostreko, Al, Mi vidos streketo punkto. cd al dot, punkto mi alportas al la antaŭa dosierujo. Jes. OK. Do alia bela grava komando estas rm. Do, tio estas kion ni iras uzi forigi. Kaj lasu min reale faras alian komando unue. Do mkdir. Mkdir estas kiel vi povas krei dosierujojn. Kaj mi kreos provizoran dosierujon kaj iru en tiun provizora adresaro. Kaj kiel atendita, ĝi estas malplena. Sed se mi ls, haltostreko, a, mi ankoraŭ havas dot kaj punkto, streketo ĉar dot rilatas al la aktuala dosierujo. Kaj streketo dot referencas al la antaŭa dosierujo. Kaj tiuj, ĉiam ekzistos negrave la dosierujo estas in Kaj tio estas tute nenecesa komando, sed tuŝo. Mi simple uzante ĝin, ĉar ĝi estas facila maniero por krei dosierojn. Do tusxi, tuŝi b, tuŝi c estas simple tuj kreos tri dosierojn nomata, b, kaj c kiu estas tute malplena. Do la punkto de mi krei tiujn en la unua loko estas ĝuste tiom ke rm estas kiel ni povas forigi ilin. Do rm, al. Oni tuj demandas min, forigi regula malplena dosiero estas? Kaj poste mi diros Jes. Do, se mi scias kun certeco, ke mi volas viŝi tiu dosiero sen devi esti instigis, forpreni regula malplena dosiero?, do rm, haltostreko, f tuj estos la flago kiu diras, devigi la Elpreni sen eĉ instigante min, ho, estas vi certas ke vi volas forviŝi la dosieron? Jes, mi certas. Do rm, haltostreko, fb volas nur fari tion sen demandi. Do ni faru kelkajn pli dosierujoj. mkdir, tmp2, cd, tmp2, tusxi, takto b. OK. Do nun mi volas forigi tmp2 kiel dosierujo. Do rm tmp2. Vi ne povas forigi tmp2, ĝi estas dosierujo. Do la demando estas, ke rm ne tuj funkcii en dosierujoj. Ĝi estas nur signifis por dosierojn kiel ne-katalogo dosierojn. Kaj do, kion ni povas fari ĉi tie estas rm, haltostreko, r. Tio signifas rekursie, kiu povus ne signifas ion ajn al vi ankoraŭ. Sed kiam vi atingos rekursio, ĝi malebligos signifas pli. Do rm, haltostreko, r, tmp2 tuj rekursie iru en tiun dosierujon. Do malsuprenirus en dosierujo tmp2? Jes, ni iros al tiu. Ĉu ni volas forigi tmp2 / a? Jes. Ĉu ni volas forigi tmp2 / b? Jes. Nun ni volas forigi la dosierujo tmp2? Jes. Kaj tial nun la katalogo kaj ĉion interne de ĝi estis forigita. Tie estas teĥnike komando RMDIR ke vi povas uzi por forigi dosierujojn, sed ĝi nur verkoj sur malplenan dosierujon ĉiukaze. Kaj vidi, ke ni nur fari mkdir, tmp2 denove. Tmp2, tusxi. OK. Do, se mi provas forigi dirtmp2, ĝi malebligos diri, dosierujo ne malplenas. Do mi sufiĉe tre neniam uzu la Elpreni dir komando ĉiuokaze, ĉar rm, haltostreko, r laboros sur malplenan dosierujon kaj ne-malplenan dosierujon. Kaj ankaŭ, se mi ne volas devi iri tra tiu tuta procezo de malsuprenirantaj sur la katalogo kaj al forigo de ĉiu individua dosiero, rm, haltostreko, RF, tmp2. Kaj nun ŝi estas for. Io esti zorgema pri estas rm, haltostreko, rf. Kaj tio timigas min al eĉ tajpi ĝin, ĉar se mi hazarde batis Enigu aux io. Do rm, haltostreko, RF, supersigno volis, sen instigante min, la f ne suflori mi, ĝi estos aŭtomate forigi Mian tutan hejman dosierujon kaj ĉio en ĝi. Do vi eble opinias, ke estas stulta afero por fari. Kaj nu, tio estas. Sed tio povas okazi tre facile per akcidento, se, ekzemple, mi volis forigi mia oblikvo, vhost dosierujo. Kaj ĝuste en rapidan tajpadon, Mi hazarde fari ĉi tion. Tio forigos rekursie ambaŭ miaj hejmen katalogo kaj al la vhost dosierujon en tiu aparta dosierujo ke ĝuste okazas ne ekzistas aktuale. Sed tio estus ankoraŭ forigi Mian tutan hejman dosierujon. Almenaŭ por ne havi f, ĝi instigas min unue. Kaj mi estus kiel, oh, ne, mi ne volas fari tion. Sed homoj, oblikvo, inkludante mi kutime ricevas en la kutimon ĉiam rf-Ing. Eĉ regula dosierojn kiujn mi povas simple RM, c, mi emas simple rm, haltostreko, RF, c. Nur estu zorgema kiam vi estas rf-Ing. SPEAKER 4: Kion signifas C fari? ROB: C estas mi parolas pri tiu C dosieron en tiu ĉi dosierujo, ke rm, c. Jozef; kaj pli danĝere, se vi uzas stelo, ĝi rilatas al ĉio en la adresaro. Do kion mi kutime emas fari estas, mi ja iru en dosierujo kaj mi volas forigi ĉiujn dosierojn en tie. Do rm, haltostreko, RF, stelo. ROB: Jes. Rm, haltostreko, RF, stelo. JOSEPH: Sed se vi ne estas zorgema kio dosierujo vi estas en - Mi ne estis en temp, sed mi estis hazarde en mia hejma dosierujo, tiam mi devos forigi ĉiun en mia hejma dosierujo. Kaj mi vere faris tion antaŭe, kaj Mi kredas ke vi jam faris tion antaŭ aŭ Jay faris tion antaŭe. ROB: Mi hazarde forigita - tiel ignori ke komandon por iom. JOSEPH: Ne amuza. ROB: Do, en la oblikvo bin dosierujon estas beraro de duumaj dosieroj kie timige esti familiara ones kiel tin. Nu, tin kaj esence ĉiuj el tiuj aferojn ke mi kuras al la komando linio estas en ĉi tiu oblikvo bin dosierujon. JOSEPH: Kiel ls estas en ĉi tie. ROB: Do dot, oblikvo, LS estus listo ĉi dosierujo. JOSEPH: Rm estas ankaŭ en tiu ĉi dosierujo. ROB: Mi hazarde RM, rf-ed bin, kiuj forigis neniun ordonon mi povis eble iam volas. Kiun do mi simple reinstali a nova Aparato ĉe tiu punkto. JOSEPH: Do estu tre singarda, kiam vi uzas ĉi tiun ordonon. Spektantaro: [inaudibles]? ROB: Jes. Tio estas same malbona kutimo enir. Se vi rimarkos, mi estas nun - bone, vi povas ne rimarki, sed mia zoom-en eble povas. Do mi nun radikon @ aparato. Do jharvard estas la uzanto ni volas vin ĉiam esti uzanta. Radiko estas la uzanto kiu havas permeson fari absolute nenion. Do rimarkas kiam mi jharvard, se mi provas cd - kio estas dosierujo ke? Ho, radiko estas bona ekzemplo. Do cd: radiko. Permeso rifuzita. Ĉar se ni rigardas tiun liston - kaj denove, vi ne devas tute komprenas. Sed tiuj tri strekoj diradas ke vi ne lasu iun alian uzanton en tiu ĉi dosierujo. Kaj la dosierujo okazas al esti posedata de uzanto radiko. Do la fakto, ke mi estas jharvard kaj neniu unu, kiu ne estas radiko estas permesita en ĉi dosierujon, kiu volas diri ke mi estas tuj ekhavas permeson rifuzata, kiam mi provu cd en gxin. Do kiam mi estas radiko, mi havas permeson por fari absolute ion ajn, inkluzive delete esencaj dosieroj al la aparaton kaj detrui la tutan aferon. Do estas malbona kutimo enir nur vagadis ĉirkaŭ via mastruma sistemo kiel radiko. Mi faros ĉiukaze. Demandojn? Kaj mi eliros radikon, restu kiel jharvard. OK. Pli gravaj komandoj. Do reiri al niaj temp, la mv komando staras por movado. Vi povas movi. Nun ni volas nomi ĝin b, tial nun ĝi nomiĝas b. Aŭ eble ni volas movi b supren unu dosierujo. Do nun tiu ĉi dosierujo estas malplena. Mi reiros al mia hejmo dosierujo, kaj Ni vidas, ke b estas en ĉi tie, ĉar la hejmen dosierujo estis unu dosierujo el La dosierujo kiu b estis in Ekzistas ankaux cp. Do cp estas kopii la super sekcio, streketo tekston. Mi povas voki lin s, streketo tekston. Nun ni havas ambaŭ la super sekcio, streketo teksto; kaj s, streketo tekston. Tio funkcias ankaŭ en subdosierujoj. Mi RF-ed sola dosiero. Do cp - Nu, unue ni provu cp, tmp, tmp2. Do preterlasante dosierujo tmp. Tiel simila al RM, La defaŭlta konduto estas ne funkcias en dosierujoj. Kaj cetere, simila al RM, la defaŭlta konduto - nu, ricevas ĝin por labori kun subdosierujoj estas, haltostreko-r for. Do kopii rekursie la temp dosierujon en tmp2. Kaj tial nun ni havas ambaŭ tmp kaj tmp2, kaj kiu ne estas tiu helpema ekde tmp estis malplena en la unua loko. Tmp2. Nun ni kopii tmp en tmp2. Kaj ni vidas, ke tmp2 ankaŭ havas la dosiero a, ĉar la katalogo kaj al ĉio ene de tiu dosierujo estis kopiitaj. Kaj tio povas esti iomete utila se, diru vi laboras sur problemo starigis unu - aŭ reale, poste problemo aroj estas eĉ pli grava, ĉar tie Estos tuta fasko de dosieroj kaj aĵoj. Sed vi nur volas, por fendi dua, vi estas kiel, bone, mi estas tuj provos ion malsaman. Lasu min nur kopii mian tutan pset1 dosierujo en pset1 sekurkopioj tiel ke se Mi finos screwing aĵojn, mi povas reiru en mian sekurkopioj dosierujo. Tie estas pli taŭgaj vojoj de de versioj asist via kodo, sed tio estas ĉiam rapidan vojon al nur fari certa, ke vi havas kopion de io ke vi estas pri modifi. Do eĥo estas ankaŭ unu-off komando kiu speco de sillily estos ĝuste presi la komandlinia precize kion vi volis eĥon. Do echo hi. Ni simple printi saluton. Eĥo saluton mondo. Ni devos printi saluton mondo. Tio venas al uzo, kiam vi komenci kombinante komandoj. Kaj denove, ne tenu vin tute kompreni tio ankoraux, sed estas io por vidi. Kaj tiam se vi Googling por ekzemploj aŭ vi rimarkas ke vi volas fari io, ĝi povas esti utila. Do ni, kiel ekzemplo, tiel ls, haltostreko, l. Do jen mi vidas la eligo de LS, haltostreko, l. Kaj mi diras, OK, mi deziras stoki ke en dosiero. Ĉio ĉi eligo tie, mi volas meti en aparta dosiero. Do tio iom pli granda ol simbolo estas kio ni iras, por voki. Ni redireccionando la eligo en dosiero. Ni nomas la dosiero bla, ĉar tio kion mi inklinas ĉiam nomas ĝin. Do nun ni vidas ni havas dosiero bla dekstra tie. Kaj se mi malfermos gxin, mi vidos estas ĝuste la eligo de la komando ke mi nur forkuris. Kaj simile, vi povas - ĉu tio estas eliro al dosiero, tiu estas akiri enigo de dosiero. Kio estas komando, ke mi - Jozef: Mi opinias ke vi povas uzi malpli aux pli, verŝajne. ROB: Sed kiel pri nur malpli bla? Mi ne scias. Se vi venas en ĉi tiun scenaron, kiel ekzistas psets ke ĝi estas utila por. JOSEPH: You can pipon ĝin en eĥo. Pipo de la dosiero en eĥo vidi ĝin. ROB: Ĝi estas pipo. JOSEPH: Pardonu. ROB: Bone. Do tiu estas eliro al dosiero. Ĉi tio estas ricevi la tekston de la dosiero kaj transdoni ilin al la programo. Kaj vi ankaux vidos ĉi ulo. Do tiu estas speco de fari ambaŭ samtempe. Kaj vere, mi prezentos du novaj komandas nur por fari uzon de ĝi. Historio estas oportuna komando kiu estas nur tuj presi liston de ion mi iam kuri komandlinio. Kaj ni vidas tie ĉio, kion mi havas estis kuranta ĉi tiu tuta tempo. Amasoj de LS-aj jaroj. Kaj alia utila komando estas grep ke lia celo estas esplori super teksto serĉas ŝablonoj, bone, serĉi kion ajn vi volas serĉi. Kaj tiel oportuna uzo ĉi tie estas, diru Ni deziras kapti la historio. Kaj mi volas serĉi la komandoj kie mi - kio estas utila por serĉi? JOSEPH: [inaudibles]? ROB: Aŭ ni nur serĉi ĉiujn tuŝu, ial ajn. Do tiu estas kio aspektos. Kaj vi ne havas tute komprenas. Sed la ideo estas tie, historio donas la sama eligo ĝi faris ĉi tie kie ĝi estas la impreso el la tuta historion de ĉiu kiun mi kuras. Ni tiam pasante, ke - tial anstataŭ presi ĝin al la ekrano, ni volas preterpasonta al la komando grep kiuj serĉas ĉiuj okazoj de la vorto takto. Kaj tiel uzas tiun kombinon de la iloj historio kaj grep, mi povas vidi, OK, jen ĉiuj el la ordonojn mi iam kuras, kaj tie estas iom komuna. Ni estas ĉe la malsupro. Kaj ĝi estas ankaŭ donas al mi la komandon Mi nur kuris kiu havis la vorto takto en ĝi. Sed la pipo estas bela utila afero por kombini plurajn programojn. Kaj efektive, ĝi estas mallongigo por liberigite Min eligo historion al dosiero bla, kaj lasu min grep uzanta la dosiero bla kiel tio, kion mi volas rigardi super. Do la pipo estas nur simbola ligilo por tiuj du ordonoj. Jes. SPEAKER 4: [inaudibles]? ROB: Jes. Kio estas - Oh. Ni testi. Do kato, hundo, fiŝo. Do mi volas grep. Haltostreko, r, denove, tuj estos rekursie, do mi volas malsupren suben ĉiuj dosierujoj. Mi volas rekursie grep por ĉiuj - kaj lasu min portempe akiri tiu de la vojo. Ignoru min. OK. Do mi volas provizore grep por ĉiuj okazoj de la vorto fiŝo. Kaj do jen kion mi faras estas grepping rekursie por la vorto fiŝo. Kaj stelo signifas super ĉiuj el tiuj dosieroj en ĉi dosierujo. Kaj kion donis al mi Permeso Denied, ĉar ĝin oni ne rajtas legi ke aparta dosiero. Sed gxi trovigxis fiŝoj en la dosiero, testo. Mi povus ankaŭ diri, intence, mi nur deziras rigardi la dosieron bla, en tiaokaze tio ne trovos ion. Mi nur volas rigardi en la dosiero, testo. Ĝi trovos fiŝo. Tio estas belan utila ordono scii gxenerale. Tie estas kelkaj alternativoj al grep kiuj estas supozitaj esti pli programisto amika, sed mi emas ankoraŭ refalis sur grep. Demandojn? OK. Ĉu ekzistas aliaj komandoj? Oh. Nur unu-off kiu mi ĉiam trovi esti amuza estas Cal. Do rimarkas kiam mi estas en tiu bela full-screen mode: Mi ne havas kiel supre ilobreto aŭ nenion. Do kalko nur donas al mi belan kalendaron kiu pravas nun ekstermitaj, mi supozas. Sed agrablaj iom komando. JOSEPH: Estas [inaudibles]. Aliaj komandojn kiujn vi eble havas vidis inkluzivas tin kaj fari. Ni transiru ilin en pli detale poste. Sed se vi laboras en la PSET, vi devas esti familiara kun tiuj. ROB: Bone. Demandojn pri komandlinio aferojn? Ĉiuj pravas. Do ni pluiru al iu C-rilatajn aĵojn. Variabloj math. OK. Do ĝuste kiel ni havis math en Scratch, vi povas uzi ankaŭ matematikon en C. Antaŭ ni atingos ke tute, tiel variabloj. Memoru ke kiam ajn vi deklari variablon kiel int x aŭ float y, vi devas doni ĝin tajpi antaŭe la nomo de la variablo. Do tipojn kiujn ni vidis ĝis nun estas int, kaleŝego, duobla, longaj, kiun mi ne vere scias se ni vidis ke ĝis nun. Ekzistas kelkaj aliaj aĵoj. Ni vidos char. Tie estas mallonga, tio estas kiel ĝi estas la malo de long long kie ĝi estas malgranda ol entjera. Ni vidis ankaŭ kordo. Do kio estas speciala pri kordo? Kial mi diras estas ne tute ŝatas int? SPEAKER 4: Ĝi ne vere ekzistas. ROB: Jes. Do la sola kialo ni havas ĉenon Estas pro tio ke kiam vi faros Baldaux, inkluzivi cs50.h. Kaj ni vidos ekzemplojn de tiu poste - ho, tio ne manipuli ke bone - kie cs50.h faras ion laŭ la linioj de tipo def, char stelo, kordoj. Kaj tiel tio estas diri ke ni ne eĉ scias kio estas char stelo ankoraux. Sed tio estas diranta ni volas kordo. Ie ajn vi estis uzanta kordo, vi oni povus uzi char stelo, kiu fakte estas tipo ke ekzistas en la lingvo C. Sed ni ricevos por tio. Ho, kaj gxi iras dekstre malantaŭe. Neta. Do samon kun bool kie vera kaj malvera. Tio vere ne estas enkonstruita en tipo en C. Anstataŭe ĝi estas simple, tio ĉi havas la valoron nulo? Tiam ni simple konsideri tio al esti malvera. Ĉu ĉi tio havas la valoron - bone, tio ĉi havas iun valoro kiu estas ne nulo? Tiam ni konsideras ĝin esti vera. Do oni estas vera, du estas vera, io nenula estas vera. Do tiuj estas tiuj. Demandojn pri deklari variablojn kaj variablo tipoj kaj cxion, kio? Jes. SPEAKER 4: Ĉar longe longa, en la libro, ĝi diris, ke ĝi devis esti longa long int. Sed simple longa longa laboro? ROB: Do tiuj tipo modificadores. Do int x. Do ni povas diri ankaŭ sensigna _int_ x. Ni povas diri mallongaj int x. Ni povas diri long long int x. Sed preskaux neniu el tiuj aferoj mi nur diris, sensigna _int_, mallongaj int, long long int, vi povas liveri de la int kaj estos nur supozi ke vi volis diri int. Do sensigna x, kiu simple signifas - vi scias, kiel kutime kun int, vi povas diri x egalas negativa 3? Kun sensigna _int_, vi ne povas. JOSEPH: Kaj denove, por la ĉambro, la demando estis, kio estas la diferenco inter long long int kaj nur longe da tempo? ROB: Jes. Do mi volas preskaŭ neniam skribi long long int. Mi skribos longe longe. JOSEPH: Any questions? ROB: okej. Do stulta iom rememorigilo de tio kiom ni deklaras variablon kaj pravalorizi la variablo kaj deklaras la alian ŝanĝiĝema kaj pravalorizi ĉion en unu paŝo. Do la deklaro de la variablo kaj la inicialización variablo ne havas i sed povas esti sur la sama linio. Do ni havas la norma matematiko operatoroj ke vi uzas al - plus, minus, breĉo, foje. Ekzistas ankaux module, kion ni vidos. Tie ne estas, almenaŭ en C, enkonstruita en potenco potencigo caret operatoro. Nu, estas caret operatoro, sed ĝi ne estas povo. JOSEPH: Sed ĝi ne estas potencigo, jes. ROB: Ne uzu la caret supozi, ke ĝi signifas kiel kvadrato aŭ kio ajn. Do iuj aferoj por gardi en mind pri divido. Mi staras. Do deklaris pravalorizi respondo. Do ni jene float respondon egalas 1 dividita per 10. Presi respondon al du dekumaj lokoj. Kaj jen estas la speco de afero kiun mi estus homo printf elkompreni ke kia la heck faras%, streketo 2f signifi? Kaj tio nur signifas, bone, ignorante la 0.2. Kaj%, f estas kion ni uzas presi flosi. La 0.2 estas diranta, presi, ke flosi al du dekumaj lokoj. Do tiu programo havas cimon, kaj eble vi vidis ĉi tion antaŭe en iun antaŭaj CS kurso. Sed kio estas tiu besteto? SPEAKER 5: Nulo. ROB: Jes. Do kiam ni diras, respondon egalas 1 dividita per 10, oni volas ke la respondi al esti 0,1. Sed 1 dividita per 10, 1 estas entjera, 10 estas entjero. Kaj do, kiam ni faras entjero dividita per entjera, ni tuj reiri entjero. Do 1 dividita per 10 estas 0.1. Pro tio necesas doni al ni entjero, Estas nur volus ĵeti for, dekuma loko kaj diri ke la respondo estas 0. Kaj do, kiam ni presas respondi ĉi tie, gxi tuj presas 0.00. JOSEPH: Kaj ĝuste kiel noton, gxi reale ĵetas for kio estas post la dekuma punkto. Do se vi anstataŭe havis 6 dividita per 10, vi eble opinias, ke tio donos al vi 0.6 kaj tiam vi estus cxirkauxtondu ĝis 1. Sed reale, kio okazas kiam tajpi taskoj estas ke gxi falas kio estas post la dekuma punkto. Do 0.6 tio fariĝis 0. ROB: Jes. Kaj ni diros senpintigas por tio. Do kiam ajn vi jxetis al int, la dekuma estas detranĉita. Do la solvon por tio - estas fakte du. Kaj mi tuj faros tion duan, ĉar ĉi tiu estas multe pli facile ripari. Do oni riparas estas uzi flosoj en la divido. Kaj vere, vi nur devus Faru unu el ili float. Sed estas iom pli klara nur fari ambaux flosas. Do 1.0 dividita per 10,0 trovas dividanta du flosoj. Do la respondo finos esti kaleŝego, kaj tiel vi volas, ĝuste presi 0,10 tie. Iu kiu ne funkcias tiel bone pri ĉi tio estas, nu, certe, estis facile sufiĉas por konverti 1 ĝis oni flosi per fari lin 1.0. Sed kion se anstataŭe ni havis du entjeroj kiel int x estas 1 kaj int y egalas 10, kaj do ni volis por ne x dividita per y? Do ĝi estas ne facila por ĝuste fari x.0 aŭ io. Do la solvon al kiu enjxetantan. Do enjxetantan estas vojo en C por konverti de unu variablo tipo al alia. Do jen, 1 estas entjero. Kaj metante ĉi flosas antaux tio, ni estas enjxetantan 1 ĝis float. Kaj tiel tio konverti la 1 al 1.0. Kaj tio estos konverti la 10 al 10.0. Kaj tiam tion, kondutas simile al la antaŭa versio, ni nur montris kie, kiel atendis, ni preni 0.10 kaj gxi devos presi tiun. Kaj ni povas fari tion kun variabloj, tro. Do ni povas diri, float x dividita per float y. JOSEPH: Any questions? ROB: Do ĝuste kiel en regula matematikon, ni havos operatora prioritato. Do en math klaso vi estas multe pli verŝajna nomi ĝin ordo de operacioj. Tie, la oficiala termino estas operatora prioritato. Sed la operatora prioritato, aŭ plej operatoroj, estas kiel vi devus atendi. Do ĝuste kiel en matematiko, 2 fojojn 10 estas tuj estos kolektitaj pli proksime ol ĉi 10 dividite per 2 kaj tiam 2. La ordo de operacioj, ĝi faros la 2 fojojn 10, 10 dividite per 2, kaj poste ĝi tion faros 20 plus 5 plus 2. Do ĝi estas tiel atendis, kaj oni povas uzi Parentezoj kolekti esprimoj. Vi ne povas uzi rektaj krampoj kolekti esprimoj. Jes? SPEAKER 5: Ĉu vi efektive reiri dua? Ĉu vi jxetis int al ĉeno? ROB: Do en C, oni povas jxeti ion vi volas ion vi deziras. Tio ne signifas, ke estas bona afero por fari. Do kiam vi jxetis int por ĉenon, tio signifas - kaj ni eniros en ĉi multe pli funde - JOSEPH: Multe poste. ROB: Mi ne volas diri multe poste, do mi provis ŝanĝi mian frazon. Ni ricevos en ĝin multe pli profunde poste kie vere kiam vi havos kordo variablo - tiel kordo povas esti arbitre longa, ĉu ne? Kaj ni estis dirante ke int estas kvar bajtojn kaj longaj ok bajtoj kaj float estas kvar bajtojn. Do ĉenon, ĝuste kiel int, nur havas iu numero de bitokoj al ĝi. Kaj tio estos kvar bajtojn. Sed kordo povas esti bela arbitre longa, ĉu ne? Do saluton mondo jam, se tio estas 10 karakteroj aŭ kio ajn, tio estas jam tuj estos super la 4 bitokoj Mi povas adapti enen kordo. Kaj do kiel kordoj vere laboros estas ke ili estas kie en memoro ke kordo estas plenumenda. Kaj do ĉi tie, kiam mi diras kordo x egalas saluton mondo, ene de x estas nur dirante: Ho, saluton mondo estas stokita pri tiu preciza loko en memoro. Do, se ni provos jxeti entjero al kordo, tiam ni provas interpreti iu hazarda parto de memoro kiel linio. Kaj tio preskaŭ ĉiam rompas aferojn. JOSEPH: Sed se tio konfuzas vi, ni povas kovri ŝin pli profunde poste. ROB: Jes. Tie estas kie vi iras enir montriloj. Kaj tio estas signifa chunk de du semajnoj de ĉi kurso. SPEAKER 6: Ĉu ĝi funkcias kiel objektoj en aliaj lingvoj aux ne vere? ROB: Do en aliaj lingvoj, celoj estus reprezentita per montriloj. Ĝi ne estas la sama afero, kvankam. Ajna pensojn? JOSEPH: N-ro Neniu pensoj. ROB: okej. JOSEPH: Sekva. ROB: Simple iru kun tio. Ĉiuj pravas. Do module. Same kiel ni havas plus, minus, dividi, kaj multigxos. Do module estas unu vi rajtas ne vidis antaŭe. Kaj tio nur diras, donu mi la reston de. Do 55% 10. La restaĵo de la fari 55 dividita per 10 estus 5. Do 55% 10 estas 5. Kaj 3% 5 estus 3. 8% 8 estos 0. 16% 15 estos 1. JOSEPH: Unu afero noti kun ĉi, tro, estas eble ne funkcios kiel atendis se vi uzas negativa nombro. Do negativa 5% 4, iuj homoj povus pensi ke estas - Kion vi opinias negativa 5% 4 estus? SPEAKER 5: Unu. JOSEPH: Do iuj homoj diras unu, iuj homoj diras negativa. Sed kio - ROB: Mi havas eĉ ne diris unu el tiuj. JOSEPH: Du, pardonon. Kelkaj diras - ROB: Tri. JOSEPH: Tri? ROB: Negativa - kio estis la - negativa kvin - JOSEPH: Tri, tri, tri. Pardonon. Ĉar module, ĝenerale, kiam vi havas vidis ĝin aliloke, ĝi kutime signifas redoni pozitiva nombro, ĉu ne? ROB: Do kiam ni diras en matematiko,% 10'S, Ili emas volas doni al vi - se ni mod per 10, tiam ni atendas ricevi nombron inter 0 kaj 9. En ĉi tie, ke ne estas la kazo, ke vi ricevos negativaj nombroj revenis. JOSEPH: Do negativa 5% 4 estus negativa 1. ROB: Sed ĝi estas rara, ke vi estas mod-ing negativajn numerojn por komenci. Rekte ĉi. JOSEPH: Jes. ROB: Meh. OK. Do unu lastan aferon atentigi pri flosoj Estas ĝi estas danĝera konduto, sed flosas estas ne akurata reprezento. Do reiri al bitokoj denove, memoru ke int estas ĉiam kvar bajtojn kaj float estas ĉiam kvar bajtojn. Do Lucas ekzemplo estas sufiĉe bonaj. Do pensu el 1 dividita per 3. Do 0,3333333. Se mi nur havas 32 bitojn, kiel vi povas Mi stoki 0,33333 ekzakte? Kaj eble, ial ajn, vi diras, Tute bone, bone, ni nur diru ke ĉi tiu aparta 1011001, ni nur diru, ke devus esti 0,333333. Nu, vi havas nur finian nombron de tiuj bitoj, do estas neeble reprezenti ĉiun solan glitpunktaj valoro donita nur 32 bitoj. Nu, estas neeble prezenti ajnan glitpunktaj valoro donita senfina - bone, donita ajna finia nombro de bitoj. Do la demando cxi tie estas, nu, kiam ni uzas presi du dekumaj lokoj, ni ne korekte ricevi la respondon 0.10. Sed sub la kapuĉo, ĝi estas vere esti stokitaj kiel fermi kiel eblas 0.10 kiel tiuj bitoj povas reprezenti. Ĉu ĉi tiu estas en la sekvanta slide? Aŭ ĉu ne? JOSEPH: Jes, estas tio. ROB: Blegh, blegh. JOSEPH: Jes, vi povas simple tiri la notoj supre iom. ROB: mi simple tuj zomi en la lasta sur tio. Ho mia ho, tio estas [inaudibles]. Do tiu nombro. Tio estas kio estos presita se ni kuras tiu programo. Kaj rimarkos ke tio ne vere big deal se ni nur zorgi pri kiel du al tri dekumaj lokoj. Kiel ni nur originale presita 0.10, kaj tial ni vidis nenion malbonan. Sed iam ni komencu akiri en la akurata, preciza nombro kiu estas reprezentas, oni vidas ke ĝi ne povas ekzakte reprezenti 0.1. Kaj parto de la problemo ĉi tie estas kiel, ĉiuj pravas, ke estas bone, sed, nu, unue, kio se ni provis fari, respondon egalas egalas 0.1? Estas ke tuj revenos vera aŭ falsa? Kaj tial ĝi estas malfacile diri. Mi kredas ke vere povus redoni vera. Will ĝin unue - Mi ne scias. La respondo estas iam vi komencos kontraktanta per glitpunktaj valoroj, vi bela multe ne devus esti uzanta egaleco pro ĉi imprecision. Kaj cxar vi cxiuj scias, estas la centa dekuma loko kiun la flosanta punkto, ne povis ĝuste manipuli. Kaj do egaleco estos nur malsukcesos eĉ kvankam la nombro - se vi estus uzanta ĝusta nombroj, la nombro devus estis precize la sama. Ĝi estas en la kurso de kiel 50 kalkuloj uzante tiujn flosanta punkto valoroj, la eraro povas konstrui supren kaj supren kaj supren kaj aferojn simple akiri erara. JOSEPH: Kaj tie estis efektive famaj ekzemploj de tiu okazaĵo. Kiel NASA inĝenieroj alveninta ĉi erara, kaŭzante raketoj eksplodos en la aero post ili jam estis ĵetita. Kaj multajn aferojn tiel. Do jes. SPEAKER 6: Kiam vi diras 0,3 f, ghi detranĉi la ceteraj? Aŭ ghi cxirkauxtondu supren aŭ malsupren? ROB: Will printf ronda ĝi? Jozef: Mi pensas printf detranĉas. ROB: okej. Do ni povas simile iru en la alian direkto de tiu kie, en ĉi tiu kazo, la plej proksima povus reprezenti 0.1 estis kun ĉi tiu numero. La plej proksimaj eble povos reprezenti 0.2 estas en la kontraŭa direkto, 0,199999996356 aŭ io. Do, se ni iradis en tiu direkto aĵojn, tiam printf 0,3 f revenus 1.99 anstataŭ 2.00. JOSEPH: Kaj mi ne estas tute certa pri tio. Vi eble volas skribi malgrandan, iom programo por nur kontroli tion. ROB: Kvankam, kio ni certas de estas, ke se vi provis jxeti ke al int, kaj elpelante al int tuj kaŭzi ĝi detranĉi la dekuma, se vi provos jxeti 1.9999999 al int, vi ricevos 1. Kaj do vi devus ĝenerale uzos la ronda funkcio en la matematika biblioteko. Demandojn? OK. JOSEPH: Do movanta sur kondiĉoj kaj Buleaj esprimoj. Do vi jam vidis tiujn antaŭe. Kaj fakte, lasu min certigi mian komputilo estas en la ĝusta formato ĉi tie. Spaco. Pardonu, ni tuj devas trakti kiel iomete kun kortego ĉe la randoj. Sed jes, vi infanoj vidis ĉi antaŭe en Scratch. Do tiu ĝuste ĉi tie estas esprimo kiu estas uzata en kondiĉa komunikaĵo. Do respondu al pli granda ol nulo volo rakontos al vi veran aŭ malveran. Kaj jen estas vere grava, ĉar Ili permesas al ni enkonduki logiko en nian kodon. Do, ekzemple, tiu estas programo skribita en Scratch kiu petas la uzanto por entjero kaj rakontas ilin ĉu la entjeraj kiuj oni donis al vi estis pozitiva aŭ negativa nombro. Kaj la konvertiĝo super tie vidi estas vi unue presi la deklaro, donu al mi entjero. Kaj tiam vi demandos ilin por entjero. Kaj tiam vi uzu kondiĉa logiko super tien por kontroli ĉu tiu numero Estis vere granda ol nulo aux ne. Do ĉi tie ni havas Bulea esprimo interne de kondiĉa Se komunikaĵo. Ĉu estas ia demandoj? Ĉu ekzistas ia demandojn pri tio? OK. Do tie estas pli ol nur pli granda ol, kompreneble. Vi povas konstrui Buleaj esprimoj uzante la plejparto de la specoj de aferoj kiujn vi devus pensi en matematiko. Do granda ol. Tio devus esti malpli ol. Pardonon. Kaj la interspaco. ROB: Dio malpermesu vi lasos ĝin. JOSEPH: Bone. Do granda ol, malpli ol, plej granda ol, aŭ egalaj al, malpli ol, aŭ egala al. Ni uzas duoblan egalaj por kontroli egaleco, ĉar sola egalas rimedoj asigno, right? Jes. Kaj tiam ni povas ankaŭ ne egalas per uzante ekkrion markon, egalaj. Kaj tiu ekkrio markon simbolo povas ankaŭ esti etenditaj por ke, se vi volas al inversigi omnaspeca Bulea esprimon, kiun vi povas fari tion. Do tiu taksos al vera nur se la respondo estas malpli ol aŭ egala al nulo. Demandojn pri tio? OK. Do vi povas same kombini tiujn esprimojn uzante logikan Kaj kaj logika Aŭ. Do tiu estas nur la Kaj simbolo, kiuj devus esti Shift, 7. Kaj jen estas la pipon simbolo, kiu estas ne minuskloj L. Tio estas la tio estas rekte super via Entajpu ŝlosilo. Do vi uzas du de tiuj por simboli logika kaj la logika Aŭ. Do tio estos nur redoni vera se respondo estas unu, du, tri, aŭ kvar. Kaj tio nur redoni vera se respondo estas preter kiuj ambaŭflanke. Do ĝi ne estas unu, du, tri, aŭ kvar. Kaj la vojon vi uzus ke en esprimo - ROB: Or nula aŭ kvin. JOSEPH: Nulo aux kvin. Pardonon. Jes, jes, jes. OK. Kaj super tien nun, la sama maniero vi estus uzi tiun esprimon, malgranda esprimo flanko de Se kondiĉa deklaro, vi devus ankaŭ uzu ĝin la sama vojo, per nur metante gxin interne de la parentezoj de la Se komunikaĵo. Do tiu printf nur ekbruliĝis se respondo estas unu, du, tri, aŭ kvar. Demandojn je kombinante esprimoj? Do tie estas alia kondiĉa konstruu ni nomas Se / Else. Do esence, tiu nun signifas, OK: Se io, kion mi volis kontroli ne estis vera, tiam iru al la Else kaj plenumos la aliajn agado. Do en tiu aparta kazo, mi demandis la uzanto por entjero. Estas la entjero pli granda ol nulo? Jes? Bone, do ili plukis pozitiva nombro. Se ne, tiam ĝi devas havi estis negativaj aŭ nulo. Do vi plukis negativa nombro aŭ nulo en ĉi tiu kazo. Jes. Aŭ nulo. Kaj tiam ni havas ankaŭ Se / Alie, Se kaj Else. Do tio ebligas al ni plenumi vico de aferojn nur se la unuaj malsukcesos. Do, en tiu kazo, nun ni estas farante la lasta vi elektu nulon. Do se oni nek plukis pozitiva nek negativa nombro, tiam ili devas reprenis nulo. Do ĝuste iras malsupren la ĉeno kiel ĉi tio. Do estas ekzemplo de kiel oni Se estas malsama - an Se / Else estas malsama de nur vico de IFS. Kaj tio estas komuna demando kiu homoj demandas estas, nu, se vi ricevas kiel 95 en CS50, kion volas ĉi programo diris al vi? SPEAKER 5: You got A. JOSEPH: Jes. You got ĉiu sola unu el tiuj pravas. You got an A, you got B, vi akiris C kaj D, ĉu ne? Do ĉiu el tiuj get taksita en ordo. Do dum 95 estas pli granda ol 90, estas ankaŭ granda ol 80, estas ankaŭ pli granda ol 70, kaj ĝi estas ankaŭ granda ol 60. Do vi havas ĉiujn tiujn kvalifikojn. Kaj mi supozas, ke vi farus nur deziras ke la A. La maniero por fiksi ke estas anstataŭi tiujn kun Else / Se-ejon. Do en tiu scenejo, vidas ke 95 estas pli granda ol 90, kaj poste ĝi faras ne taksi la reston el la deklaroj. Demandojn pri tio? Do tie estas alia kondiĉa ian strukturo kiu ni havas ĉi tie, kiujn ni voki ŝaltilo komunikaĵo. Do tiu ebligas al vi esence kontrolu kio estas la valoro de nombro vin meti en la ŝaltilo aserto estas. Do en tiu scenaro, ni switching en n, kaj ni diris: Ho, se n estas unu, tiam presi tiun deklaron. Kaj tiam krevos, kio signifas eliro el la ŝaltilo komunikaĵo. Se ĝi ne estis unu, do, bone, nur eventuale kontrolu ĉiuj tiuj kazoj. Kaj tial ĝi kontrolas, se ĝi estas unu aŭ du aŭ tri, kaj presas laŭe. Kaj kion tio defaŭlta ŝlosilvorto suben ĉi tien rimedoj estas se ili ne eniris ajnan de tiuj, tiam diru Nevalida. Do diru min peti n kaj La uzanto donas al mi kvar. Nu, tio kongruas kun neniu el tiuj kazoj, do ĝi havos presi kio estas en la defaŭlta sekcio. Jes, pridubas? SPEAKER 5: Ĉu vi uzas Bulea esprimoj anstataŭ unu, du, aŭ tri? JOSEPH: Do la demando estas ĉu vi povas uzi Bulea esprimoj anstataŭ unu, du kaj tri? Kaj en C, mi kredas vin ne povas fari tion. Sed en aliaj lingvoj, kiujn vi eble renkontas ĉe la fino de la semestro kiel JavaScript, vi povas. Nu, vi devus kalkuli unue tiun valoron, kaj poste uzi ĝin en la ŝanĝi komunikaĵo. Jes? ROB: Tiel parto de la profito de ŝaltilo deklaroj estas pensi se vi faris tion kiel Se / Alie, tiel same kiel se n egalas egalas unu aŭ kio ajn. Else / Se n egalas egalas du, kio ajn. Else / Se n egalas egalas tri. Do la formo kiun la programo devus kuri estas ĝi estus sinsekve penetras tiu listo kaj kontrolu, estas N unu? Nope. Estas n du? Nope. Estas n tri? Jes. Ĉu ĉi tio. Dum kun ŝaltilo asertoj, ĝi estas efektive povis kompili ĝin esti vere rapide. Kaj tuj kiam gxi diras ŝaltilo, ĝi diras, ĉiuj dekstren, n estas du mi estas tuj tuj salti al kie Mi supozis, por komenci la ekzekuti. Mi ne tuj unue kontrolu, estas n unu, estas N du? Ĝi povas tuj komenci fari kio ĝi estas supozis fari. Kaj pro tio, ĝi ne povas preni Bulea kondiĉoj. Alie devus fari la sinsekva, kiel, gravas, estas n pli granda ol nulo? Alie estas n pli granda ol 10 aŭ kio ajn. JOSEPH: En ĉi tiu kazo, se vi uzas Se / Alie, se la, tiam la ŝaltilo farus kuri proksimume tri fojojn rapida ol la Se / Alie, Se. Ni povas organizi la ŝaltilon en tiaj maniero, ke ni ne rompu post ĉiu de la kazoj. Do, en tiu kazo, mi dispartiganta la nombroj kiuj ni elektos en unu kaj du ne estante alta nombroj kaj tri estante alta nombro. Do, en tiu kazo, se n estas unu aŭ du, ŝi alvenos la kazo kaj tiam estos falas tra, ĉar neniu paŭzo. Kaj ĝi finos cxi tie. Do, se oni prenas unu, ĝi faros la printf kaj tiam rompu por ke neniu el tio estas ekzekutitaj. Kaj kompreneble, se ili eniros en tri aŭ io alia, tiam saltos tiuj kaj ne iri tien, kaj gxi faros anstataŭ la responda linio. Ĉu ekzistas ia demandojn pri tio? Jes? SPEAKER 4: Ĉu vi ricevas erarmesagxon, se vi havis ripozon post kazo unu sed ne havas iun por gxin fari? JOSEPH: Do la demando estas ĉu vi akiri eraro se vi havas ripozon post kazo unu sed tie estas nenio fari? Kaj la respondo estas ne. Vi ne reale ricevas erarmesagxon. Yeah, mm hmm. Do kiel speco de iom ŝanĝon tie ĉi, Mi tuj metos printf tie. Whoops. Do kion devus ĉi presi se Mi metis unu en kiel eniro? Jes. Ĝi dirus al vi ke ĝi ne alta numero dufoje, ĉu ne? Ĉar tio trafis tiu unua kazo, ĝi ne rompos, kaj falus tra la dua kazo. Demandojn pri tio? ROB: Ĉu vi havas alian demandon? JOSEPH: OK, malvarmigi. Ĉiuj pravas. Do estas iom alie ni nomas triargumenta operatoro kiu estas esence alterna sintakson por fari Se kaj tiam Else. Kaj tio permesas fari ĉion sur unu linio. Do en tiu aparta programo, Mi petas al la uzanto por n. Kaj se n estas pli granda ol 100, mi diras ili plukis alta nombro. Alie, mi diras al ili ke ili plukis malalta nombro. Do ni povas uzi tiun vere longa sintakso, kordo, S, kaj tiam kontrolu, se n estas pli granda ol 100 kaj asigni ĝi laŭe. Sed ni povas fari ĉi multe pli konciza uzante ĉi triargumenta operatoro sintakso kiu engaĝas demando markon kaj dupunkto. Do la demando marko estas esence demandi demandon, ĉu ne? ROB: Eble zomi sur tio. JOSEPH: Jes. Bona punkto. Do tiu estas la triargumenta operatoro. Mi unue demandi la demandon, estas n pli granda ol 100? Se jes, tiam Mi faros la unuan parto antaŭ la dupunkto. Se ĝi ne estas, tiam mi faros al la dua parto post la dupunkto. Do se n estas pli granda ol 100, tiam ĝi reprenas alta kaj metu ke sur ŝnuro s. Se n estas malpli ol 100, li reprenas malalta kaj tiam metas ke en kordo s. Por ke estos condensar tiu granda chunk malsupren en nur tiu unu linio. SPEAKER 5: Ĉu tio estas populara? JOSEPH: Jes, tio estas sufiĉe populara por aferoj kie esence vi volas cxu asigno bazita sur ia kondiĉo. Kaj en ĉi tiu kazo, ni provis atribui valoron al kordo s. Ĝi ne estas tiel - Mi supozas ke mi ne vere preferas en aliaj kazoj. Sed estas speciale utila por tiu ĉi tasko. ROB: Tio estas belan komunan skemon kie vi havas iujn variablo kiu vi tuj dirus, se iu, turnu ĉi variablon al unu valoro; alie, turnu ĉi variablo al alia valoro. Kaj tio estas la scenaro kie uzi triargumenta. JOSEPH: Kaj vi ŝparas multaj linioj, ĉu ne? Kaj tio nur faras via kodo disputeble iomete pli legebla. Jes, pridubas? SPEAKER 6: Por triargumenta, vi povus iri, kordo s egaluloj s, demandosigno? Kaj tiam vi povus havi, ekzemple, kvin diversaj ebloj. Kaj depende de tio, kion la nombro de n estis, ĉu vi elektu unu el tiuj? JOSEPH: Do la demando estas, estas tie ia sintakso, kie vi povas fari kordo s egalas n, kaj do havi pli ol du ebloj post tiu demandosigno? Kaj simpla respondo estas ne, ne vere bonan manieron por fari tion krom se vi volas nesto multnombraj triargumenta operatoroj ene de ĉiu alia. Vi povus fari kiel n pli granda ol 100, demandosigno, kaj poste la alian triargumenta operatoro, n pli granda ol 50, demandosigno, kaj nesto de tiu maniero. Sed en tiu scenaro, via kodo estas akiri ia nelegebla kaj senorda, kaj ĝi povus esti pli bone simple iru al an Se / Else deklaron je tiu punkto. ROB: Kaj ankaŭ, kiel flanka noto, PHP malĝuste enplantas la triargumenta operatoro tia ke ingita ternaries eĉ ne funkcios kiel ili devus. JOSEPH: Jes. Do ĝi akiras iomete malklara, speciale kiam vi iros al diversaj lingvoj. ROB: Ĝi estas konfuzante sufiĉas ke lingvoj estas erara pri tio. JOSEPH: Do fakte, nur por klarigi, Ĉu ĉiuj scias kion tio % S faras ĉi tie? Demandojn pri tio? Mi supozas ke nur por la ĉambro, la% s esence ebligas al ni meti lokokupilo sinsekvojn. Kaj poste, je la fino, ni specifas, ke la variablo ni volas meti en tiun loko-posedanto estas s. Por ke baze prenas s kaj metas ĝin en ĉi tie. Kaj tiam ĝi estos presi, vi plukis alta aŭ vi plukis malalta nombro. OK. Do masxojn permesi al vi plenumi tion, en cirkla moviĝoj, right? Vi eble renkontis ĉi en Nulo en la formo de Forever loops aŭ Ripeti Ĝis aŭ Ripeti apartan nombro da fojoj. Do kial estas tiu bona por ni? Nu, en C, ni diras, ke ni havas ĉi kanto implementado en Scratch ke kantas, ĉi tiu estas la kanto ke neniam finas. Ĝi simple iras pluen kaj pluen kaj sur cxiam kaj eterne. Nu, vi ne povas vere fari programon kiu havas senfinan nombron de printf asertoj en ĝin, ĉu ne? Do en tiu aparta scenario, unu vojo ke vi povis fari tiun laboron kaj por fari ĝin presi ĉiam estas anstataŭe uzu Dum buklo. Do oni Dum buklo faros kio estas en la korpo de la du krampoj ke apartenas al ĝi bazitaj sur kio la kondiĉo estas. Do, en tiu konkreta ekzemplo antaŭe, se Ni volas presi ĉi por ĉiam, kion eble ni faru? Nu, certe, ĉu ne? Do ĉi tiu speco de kombinas la ideon de iu bulea esprimo kune kun buklo. Kaj ni lernis pri Bulea esprimoj antaŭe. Do kiam ajn la kondiĉo ene de ke Dum restas vera, tiu buklo Mi faros plu kaj plu kaj plu. Kaj en ĉi tiu kazo, se ni nur provizi ĝin kun vera, tio kaŭzas senfinan buklo kiun presas la kanto en kaj sur kaj pri kiel ni deziris, antaŭe sen havi programon kiu havas senfinan numeron de printf deklaroj, kiuj estas Ne eblas. Do pli compellingly, though, vi povas uzi tiun kun ŝanĝiĝema kaj kondiĉo. Do ni diras, ke ni deziras ripeti la frazo, tute Loopy, 10-foje. Do, kion vi povas fari kun Dum buklo estas vi povas unue pravalorizi nombrilo variablo ekster la Dum buklo al 10. Kaj tiam esence, ĉiufoje vi iru tra la Dum buklo, vi presi la deklaron kaj tiam vi malpliigos la nombrilo variablo ĝis fine, en iu punkto, iam ni subtrahi Mi suficxe tempoj, 1 el mi sufiĉas fojoj - kaj simple klarigi, mi minus minus signifas ke mi egalas mi minus 1. Tio estos esence alporti mi malsupren al la punkto kie fojo mi trafis nulo, tiu kondiĉo ne plu estas vera kaj do ĝi eliras el la iteracio. Do tute Loopy nur presas 10 fojojn. Demandojn pri Dum buklo? OK. Do tie estas maniero ni povas fari kion ni ĵus faris en pli konciza formo kun kion ni nomas Por buklo. Do oni Por buklo konsistas el inicialización, kondiĉo, kaj ĝisdatigo, ĝuste kiel ni havis antaŭe en ĉi Dum buklo. Do ni rigardu. En ĉi Dum buklo, ni havis inicialización, tiam ni havis kondiĉi, ke ni kontrolis. Kaj tiam ni havis ĝisdatigo step ĉe la supro. Kun Por buklo, tiu esence prenas tiuj tri aĵoj kaj condensa ĝi malsupren, en unu linio. Do la unua afero, kiun gxi faras en la Por buklo estas la inicialización. Kaj tiam vi faros punktokomo, kaj tiam vi faru la kondiĉo, kiu estas mi pli granda ol nulo iras tien, kaj tiam la ĝisdatigo paŝo. Do tiu gets agis en la tre fino de la iteracio korpo. Do tiuj du programoj estas esence ekvivalento. Demandojn? Do kio estas diferenco inter tiuj du? Ĉu iu povas noti ĝin? Ĝi povus esti iom subtila. Estas nur tre malgrandan diferencon. Jes? SPEAKER 5: Vi ne povos uzi la I variablo ekster la buklo [Inaudibles]? JOSEPH: Ekzakte. Do tiu estas io ni atingos poste vokis variablo medion. Sed fundamente, tiu int Mi vivoj eksteren de ĉi Dum buklo. Do iam tio Dum buklo estas farita ekzekuti, mi povos uzi Mi poste sur la programo. Dum kun ĉi Por buklo, tiu int mi Estas scoped ene de ĉi Por buklo. Kaj ĉar ĝi estas ene de cxi tiu kampo de la For loop, kiu komenciĝas ĉe la krampoj kaj randoj kun la krispa streĉa tie. Io ajn tio estas deklarita interne de tie ne povas esti uzata ekstere. Do, se mi provas uzi Mi ekstere, ĝi malebligos diru al mi, nedeklarita simbolo. Kaj esence, mi ne volas povos uzi ĝin. ROB: Kaj bone, la 10 jarojn, en laŭvorte ĉiuj kazoj, krispa krampoj estas kion vi uzis por determini la medio de variablo. Do en tie, int mi egalas 10 estas deklarita ene de ĉi aro de krispa krampoj. Kaj tiel do tiel longe kiel oni provas uzi I antaŭ ĉi tiu krispa streĉa, tio estas bone. Vi eble vidos, kiam vi tajpas faros, vi vidi haltostreko, haltostreko, std, egalaj, C99. Do tio estas posta versio de C kiu GCC estas implementado kiu ankaŭ donas tiu fulmoklavo. Do tiu uzata por ne permesi en C. Kaj vi povas vidi kial, ĉar ĉi int Mi estas ekster tiu krispa streĉa sed ĝi estas ankoraŭ konsiderata en la atingo de tiuj buklaj krampoj. Sed tio estas tre oportuna afero, kaj do ĝi estas bona kromprogramo. JOSEPH: Any questions? OK. Do kio estas pli utila estas ke kelkfoje vi volas ian dinamismon en via buklo, ĉu ne? Vi ne volas simple nepre printi tute Loopy tuta tempo, vi deziras kalkuli suben el 10 aŭ io. Kaj tiel vi povas uzi la vendotablo variablo ene de tiu buklo tiel. Kaj en ĉi tiu kazo, ĉi programo apenaŭ Havas malsupren de 10 la tutan vojon malsupren. Kaj kion ĝi ne presi? Ĝi ne presi nulo, rajton, ĉar kiam - Jes, ĝi ankaŭ ne presi 11. Do ĝi ne presi nulo, ĉar kiam Mi estas nulo, memoru, taksas kondiĉe antaux gxi iras sur ekzekuti la buklo korpo. Kaj kiam mi estas nulo, ĉi tiu estas falsa, do ĝi ne presi rakonti malsupren nulo, gxi simple presas el kalkula malsupren 10 la tutan vojon malsupren al 1. Se ni efektive volis ĝin presi nulo, tiam ni devus meti egalsigno post tiu granda ol signo. OK. Do unu maniero fari enigo validigon, kiuj Estas kiam vi demandos la uzanton fari io, vi volas certigi ke sekvu viajn instrukciojn, estas uzi la Dum buklo, right? Do en tiu aparta kazo, mi petas por pozitiva nombro kaj tiam mi estas atendante enigo. Kaj poste mi kontrolis Dum la enigo estas malpli ol nulo, gardu petante ilin. Do tiel longe kiel ili donas al mi nombro kiuj estas ne pozitiva, Petu, Petu, gardu petas. Sed kio estas speco de stranga pri tio? Aŭ kio ne ŝajnas optimuma pri ĉi tiu strukturo ĝuste ĉi tie? Iu? Jes? SPEAKER 6: Vi ripetante la instrukcio dufoje. JOSEPH: Ĝuste. Do ni havas du printf deklaroj ĉi tie, ĉu ne? Do tie estas maniero ni povus atingi ĉi ĝuste malsupren al unu kiu farus nia kodo facile legi kaj iom pli pura. Kaj tiam ni ne devus esti Get in duoble bone. Kaj unu vojo vi povas fari ĉi tion estas uzante Do-Dum-cirklon. Kaj Do-Dum buklo estas esence malsaman formon de Dum buklo kie kio estas ene de la krispa krampoj gets ekzekutis almenaŭ unufoje. Do ĉi tie, mi deklaras, int enigo, ekstere unue. Kaj tiam mi simple diru, faru tion instrukcion dum eniro estas malpli ol nulo. Do ĝi batas la Do unue. Ĝi ĉiam ekzekuti ĉi almenaŭ fojon, do ĝi estos ĉiam petas la uzanto por enigo almenaŭ unufoje. Kaj tiam ĝi taksas ke enigo, kaj gxi iras en cirklo. Jes, pridubas? SPEAKER 6: Ĉu ekzistas maniero fari ĝin [Inaudibles] tipoj, kiel se oni diras, GetString, kaj iu [inaudibles] Estas tie manieron [inaudibles] JOSEPH: Do la demando estas, estas tie maniero fari enigo validigon se la uzanto ne metas en la dekstra tipo de variablo? Do, se ni peti int kaj ili donu al ni kordo anstataŭe. Kaj en la funkcioj ke ni apliki por vi, GetInt, GetString en ĉiuj tiuj funkcioj, ili efektive jam faru, ke ia baza tipo enigo validigo sub la kapuĉo. Do, se vi uzas la funkciojn kiujn ni Mi donis al vi, vi ne devas vere. Sed se vi volas rigardi pli pri kiel vi povas efektive fari tion, vi povas rigardi sub la kapuĉo en la dosiero I/O-- Ne dosieron, la norma I / O funkcioj kiel legi el norma enigo kaj norma eligo. Kaj vi povas atingi pli bonan senson de kiel vi povus fari tion. ROB: Unu afero, tamen, estas specife kun la ekzemplon vi diris, vi atendas ŝnureto kaj mi eniru an int. Kiel vi diros al la diferenco inter intenca voli la kordo 123 kontre voli la int 123? Do kordoj, ĝi estas bela multe mankas validigon, estas nur kion ili eniris vi interpretos kiel linio. Int estas pli facila, ĉar negrave la enigo vi prenos de la uzanto, vi estas ĉiam portante ĉenon. Kaj tial ke kordo vi povas tiam kontrolu, estas ĉiuj el ĉi tiuj reale nombraj ciferoj? JOSEPH: okej. Demandojn pri Do-Dum buklo? ROB: Ho, kaj tiu estas ankaŭ - reironta al atingo, iom komuna eraron provas uzi iun lokan variablo de interne ĉi Do-Dum buklo ene de ĉi kondiĉon. Kaj efektive, se ni simple malfaris de tion kaj diris, int enigo egalas GetInt, tiam la tradukilo krias al ni, ĉar enigo ne ekzistas eksteren de la medio de tiuj buklaj krampoj. JOSEPH: Kaj tio estas kial ni bezonas tiun formado tie. OK. Do vi povas same rompi el buklo frua, se vi volas. Do ĉi tiu estas malsama maniero de efektivigo, kion ni ĵus implementado. Kaj anstataŭ uzi la kondiĉo ene de la krampoj, ni uzas la Se aserto ene de la korpo de la Do-Dum-cirklon. Kaj esence, kiam la enigaĵo finfine pli granda ol nulo, ni volas rompi la buklo. Kaj tiel ni iros ĉiuj la vojo suben ĉi tien. Kaj vi povas vidi, ke tiu volis Probable, oni preferas en tiu scenaro, ĉar ĝi estas iom iom pli pura kaj iom mordis pli facile legi. Dum tio, vi ian havi ekstran linioj en ĝi. Estas nur iom pli malbelaj, Mi supozas, iusence. Jes, pridubas? SPEAKER 4: rompos nur akiri vin el unu aro de krampoj? JOSEPH: Ĝuste. Do la demando estas rompos nur eliru el unu buklo? Kaj la respondo estas jes. Do se vi nestitaj Por masxojn, por Ekzemple, se mi havas Por int mi egalas 0 ĝis 10 kaj tiam Por int J egalas 0 ĝis 10, se mi rompi el la interna buklo, mi ankoraŭ iri al la ekstera iteracio. Do ĝi malebligos ke plenumante la operaciojn sur la ekstera. Demandojn pri tio? Jes? SPEAKER 5: Sed rompi nur funkciojn por krispa krampoj, ne por aliaj deklarojn? [Inaudibles] JOSEPH: Do la demando estas rompos nur funkcio por masxojn kontraste al aliaj deklaroj kiel Se? Kaj jes, tio estas la kazo, ĉar vi rompi el banto, dekstra, en senso. ROB: En la vasta plimulto de kazoj, estas tio estas la speco de Se io, tiam rompu. Do vi ne devos rompi apliki al la Se tio estas fluigi ĉirkaŭ ĝi. Kaj ankaŭ, ĉi tio ne estas multe de banto, sed memoru ke ŝaltiloj estas ankaŭ ekfloris per paŭzoj. Ni vidis paŭzoj uzita kun ŝaltiloj antaŭe. JOSEPH: Kaj vi povas ankaux uzi ilin en Dum maŝojn kaj Por maŝojn. Demandojn? OK. Do sekvanta supren estas funkcioj. Do eble vi jam uzis unu el tiuj BYOB blokoj en via Scratch projekto. Kaj ĉi esence permesas vin difini aron de instrukciojn por esti sekvata. Kaj kion mi celas per tio estas pensu reen al matematiko, dekstra, algebro. Vi havas, kion ni nomas funkcio de x, iu variablo, kaj diru ĉi funkcio estas f de x egalas x plus 5. Do vi povas pensi pri f de x kiel tiu nigra skatolo kiu prenas 15 en kaj tiam Produktas 20. Do pli ĝenerale, funkcio estas iu kiu prenas iujn enigoj kaj tiam produktas kelkajn elirojn. Kaj kial estas funkcioj bona? Ili estas bona pro kelkaj kialoj. Do tio iu volas preni ponardopiko je kio organizo signifas? En terminoj de kial funkcioj estas utila? Jes? SPEAKER 4: ĝi faras vian kodon pli legebla. JOSEPH: Ĝuste. Do unu el la aferoj estas tio faras vian kodon pli legebla, ĉu ne? Anstataŭ havi kiel int x egalas x fojoj x fojoj x, mi povas havi kubo de x, kio estas pli legebla kaj pli komprenebla por leganto. Organizo estas ankaŭ en terminoj de dividi vian kodon en regeblaj porciojn, tiel ke anstataŭ klopodi apliki ĉi ĉiujn en unu longa sekcio en ĉefa, vi povos ia fendi ĝin en kiel, OK, ni skribos funkcio al Cube ion, ni skribi funkcii akordi ion. Tiel vi povas fendi ĝin en tre etajn, iom partoj kiujn vi povas pritrakti kontraste al klopodi pritrakti granda problemo cxiujn samtempe. ROB: Aŭ eĉ eta, iom partoj kiuj vi kaj partnero povas pritrakti. JOSEPH: Jes. ROB: Do anstataŭ ambaŭ vi provas enplanti unu funkcii samtempe. JOSEPH: simpligo. Iu volas preni diveno? Jes? SPEAKER 5: Pli ripetadon. JOSEPH: Ĝuste. Do unu afero, kiun vi povas fari kun plisimpligo estas ke ĝi estas speco de sur la samaj linioj kiel re-uzebleco estas ke fojon mi skribos kubon funkcio, mi povas nur uzos ke super kaj super kaj super denove en mia programo anstataux tajpadon x fojoj x fojoj x superfluaj denove kaj denove. Kaj simpligo tie ankaŭ nur signifas ke ĝi faras vian kodo ian facile elpurigi unufoje vi fendi ĉi supren en funkcioj. Ĉar tiam vi povas localize kie viaj problemoj ia estas. Demandojn? Do alia ideo estas abstraktaĵo, ĉu ne? Tiu nigra skatolo. Kiel vi scias kion GetInt faras ricevi enigo de la uzanto? Ni ne vere parolis al vi, ĉu ne? Ĉiuj ni rakontis al vi GetInt faras precize kion diras gxin faras. Do eĉ se ni ne diras al vi kiom ĝi funkcias, vi ankoraŭ scias. Do en tiu aparta kazo, tio estas kvarobla funkcio kiu faras malsamajn aferojn por enigo produkti eligo. Kaj vi povas kvarobligas nombro per multiplikante ĝi per kvar. Aŭ vi povas kion ni nomas iom ŝanĝi ĝin por du. Kaj ni vidos kovri ĉi iom poste. Kaj ne necesas scii kiel tiu funkcio efektive funkcias tiel longe kiel laboras kiel komencita. Do sub la kapuĉo, mi povus esti kiel, revenu enigo fojoj ok dividite per du. Kaj vi ne scias, ĉu ne? Vi bezonas scii estas ĝi faras kion ĝi diras. Do jen la utilan aĵon pri abstraktaĵo. Kaj alia afero estas speco de tiu ideo de localizing vian kodon por unu aparta sekcio. Do se vi ja havas problemon, vi ne devos iri tra via kodo klopodi ripari kie la problemo estis. Do, en tiu kazo, mi implementado kubo erara. Mi pensis kubon multigxis per tri. Do, en tiu kazo, tio estas unu programo ke ĝuste tio multiplikante per tri ĉie. Kaj tie estas alia programo kiu havas faktorita kubon elaperas funkcio. Kaj tial nun, se mi volas ripari mian eraron ĉi tie, mi devas korekti ĉiun solan linion de kodo en tiu programo. Dum aliflanke, se mi uzas la funkcio, mi nur bezonas ŝanĝi kio estas malĝusta en unu loko. Do, en komputiko, ni voki enigoj kaj eligoj. Enigoj estas nomataj parametroj aŭ argumentoj, kaj eliroj nomiĝas revenu valoroj. Kaj ni vidos kiel ĉi helpas nin speco de difini funkcio en sekundo. Do tiu estas funkcio difino por cubing. Do necesas enigo, kaj poste li revenas al tiu numero fojoj sin trifoje. Do ni rompi ĉi malsupren. Do ni havas funkcion kaplinio, kiuj esence konsistas el tri aferoj. Do ni havas la parametrojn, kiujn estas, kiel mi diris antaŭe, la enigas en tiun funkcion. Kaj tiam ni donos al la funkcio nomon. En ĉi tiu kazo, ĝi nomiĝas kubo. Kaj tiam ni difini, kion la tipo de la reveno valoro estas. Do, en tiu kazo, mia kubon funkcio preno en entjera kaj ĝi ankaŭ redonas entjeron. Do, se mi iam en du, du estas entjero, li revenas ok al mi, kiu estas entjero. Do revenu tipo nomo parametroj. Demandojn pri tio? Kaj tiam la reveno valoro estas reale specifita fine dirante reveno kaj poste reveni ajn Enhavas la reveno valoro. Do, en tiu kazo, se ni metas ĉion kune, funkcio prenas en parametroj, ĝi nomiĝas io, kaj li revenas iun kiu estas la tipo ke ni diru tuj estos. Demandojn? Do kiel ni uzas funkcio? Nu, ni skribos funkcio kaj tiam Ni uzas ĝin en nia programo, ĉu ne? Do mi nomis ĝin kubo, kaj tiam mi povos uzi kubo. Sed kio gravas noti, Estas tiu ordo aferoj. Se mi havas kubon sube ĉefa, estas tuj kuru en kubo. Kaj je tiu punkto, estas nenio vokis kubo en la programo, kaj ĝi estas nur tuj estos kiel, mi ne havas nenian ideon kion kubo estas. Do ĝi rakontos al vi, implica deklaro de funkcio. Tio estas la eraro, kiu montras supren. Kaj tiel en tiu kazo, kubo estas sube ĉefa, do ĝi ne tuj scii pri tio. SPEAKER 5: Do ĉefa estas kutime la lasta funkcio difinita? JOSEPH: Do la demando estas, Estas ĉefa kutime la lastan afero, kiun vi ŝatus difini? Kaj ne. Estas ĉar ni kutime ŝatas ĉefa esti ĉe la supro, ĉu ne? Ĉar tio estas la unua aĵo kiun vi ĉu la programisto malfermante la programon por vidi. Kaj tiel kiel ni solvos tiun temon el ni ĉu ĉefa esti ĉe la supro, sed la funkcioj, ke ni volas, ni volas ilin esti sub la ĉefa ankoraŭ povos uzi ilin ene de ĉefaj? Nu, ni uzas, kion ni nomas funkcio prototipo. Do kio funkcio prototipo esence Estas Estas ĝi unue prenas kion la subskribon aŭ la funkcio kaplinio kion ni volas apliki malsupren ĉi tie, kaj ni metu ĝin en la supro de programo. Do, en tiu kazo, ni diru ke, bone, poste en nia programo, ni iras fari promeson apliki ĉi funkcio nomita int kubo, kiu prenas entjero enigo. Do nun, ĉar tio estas super la ĉefa, ĉefa, ĝi tuj diri, oh, bone, poste en la programo, kiu tuj estos tie do mi povas referi al ĝi, do mi nur lasu ĝin iri tra ĝis nun. Kaj poste ĉe la malsupro, Ni apliki kubo. Kaj tiam ĉefa simple diru, bone, tio estos ia ligilo tiuj du simboloj kune. Kaj ni vidos kovri kion tio signifas poste. Kaj tial ĝi scios, ke tiu estas la kubo funkcion, kiun ĝi devus uzi. ROB: La [inaudibles] pri voli ĉefa malsupre aŭ supro, mi vidis ambaŭ. Estas aĵoj kiuj nur ŝatis meti ĉefa ĉe la malsupro. Sed unufoje projekto akiras aparte granda, kutime ĉefa estas en dosiero ĉiuj liaj propraj. Kaj je tiu punkto, kiel la int kubon linio - interne de stdio.h estas faskon de linioj ĝuste kiel ke int kubo int enmeta linio. Kaj tial tiujn prototipojn estas aferoj kiujn vi emas meti enen kaplinio dosierojn, je kiu punkto, tio ne gravas. Nu, ne gravas. Tiuj ĉiam iru ĉe la supro. Kaj se ĉefa ne estas dosiero cxiujn liajn proprajn, vi ne devas zorgi pri metante individuaj funkcio prototipoj en la dosiero. JOSEPH: Kaj ni ricevos por ke iom iom poste, kiam Rob komencas paroli pri kompili. Kaj do tie estas ankaŭ la diferencon inter parametro kaj argumento. Kaj parametro estas precize kion ni nomas tiujn enigoj kiam ni difini la funkcio. Kaj ni nomas gxin argumento, kiam ni efektive pasas ĝin en la funkcio. Do, en tiu kazo, ĉi tiu estas parametro, kiel ni diris antaŭe. Kaj kiam ni efektive uzi gxin tie, kubo de x, tiam x sin trovas kion ni nomas argumento al la funkcio kubo. ROB: Do parametro argumentoj estas - ekzistas tiu distingo, tre konfuzita interŝanĝeble. Je tiu punkto, por mi, estas kiel unu el tiujn vortojn, ke kiam mi vidas ĝin en la sovaĝaj, mi ne povas helpi sed tuj demando ĉu ili uzas ĝin en la ĝusta kunteksto, ĉar la diferenco estas subtila sufiĉas ke nur ĉiuj inklinas - Mi preskaŭ ĉiam diras argumento sendepende de tio, kion mi volas diri. Jozef; kaj funkcioj estas ankaŭ utila por kio ni nomas kromefikoj. Do funkcio povas preni neniun enigoj, kaj Ĝi povas ankaŭ produkti ne eligoj. Do en tiu aparta kazo, mi estas difinanta subrutina kiu havas nenian redoni valoro. Kaj por specifi ke oni uzas kion ni nomas malplenon trans cxi tie. Kaj tial la kromefikon de ĉi tiu funkcio estas ke ĝi simple presas stuff eliru al la paĝo. Ĝi ne reale preni ajnan enigoj, kaj ĝi ne efektive produkti ajnan eligoj. Sed ĉi tiu povus esti utila en la senco se vi volas, ekzemple, erarserĉilo ion en via programo, se vi volas skribi iom subrutina ke presas ekstere, ni diru, la enhavo de memoro aux io. Kaj tial tiuj flankaj efektoj estas kelkfoje utila ekster la kunteksto de ĵus like enigoj kaj eligoj. Demandojn? Kaj por fini tiun apartan segmento, kion signifas tiu programo faras? Mi donos al vi uloj kelkaj sekundoj por tralegi ĝin. Je tre baza nivelo, kion ni volas diras estas ke ĝi interŝanĝas x kaj y, ĉu ne? Do kiel multaj el vi efektive opinias tio estos interŝanĝu x kaj y? Levi vian manon. Neniu. OK. Kiu pensas ke ĝi volas ne interŝanĝas x kaj y? Kaj la sumo de kiu estis Ne la tuta ĉambro. Do iuj homoj ne estas certa. OK. Tio estas racia. Do ni iru tra kio okazas kiam vi fakte voki funkciojn unua en Por respondi tiun demandon. Do tio estas kion la memoro ia aspektas. Tio estas speco de kiel oni simpligita modelo de kia memoro aspektas kiel kiam vi kuros programon. Do estas io nomata la stako malsupren tie kaj io nomata la havaĵo. Kaj tiuj kreski al meze de la memoro. Do en tiu aparta kazo, kiam vi nomas funkcio, ĝi gets surmetis la stako. Kaj tiam tiu, kiu estas enhavata en tiu funkcio restas en tio, kion ni nomas tion funkcia stack frame. Kaj tiel akiri belan videbligo de tiu, let's - ekzemple, ni havis la programo ĉefa antaŭe. Kaj ene de ĉefa, ni nomas kubo. Do ĉefa devus unue iri sur la stako kadro, ĉar ĝi estas la unua funkcio kiuj nomiĝas. Kaj poste, kiam kubon nomiĝas interne de ĉefa, ĝi gets meti supre sur ĉefa ene de la memoro. Do, kion vi rimarkos ĉi tie estas ke kubo havas sian propran parametroj kaj lia propraj lokanoj. Do kiam vi vere okazis io al funkcio, la parametroj ke gets estas kopioj de kio pasis en el ĉefaj. Kaj al ia klarigi ĉi tion, ni marŝi tra programo. Do ni havas la pilo; ĉi estas nur la stakon porcion. Kaj kion ni faros estas ni unue pravalorizi x kaj y al unu kaj du. Do ni havas tiujn iom skatoloj. Ili sidas en ĉefaj la stako kadro sur la stako. Ili enhavas unu kaj du. Nun ni nomas swap. Kio okazas estas ni pasas x kaj y en interŝanĝa kaj interŝanĝan kreas sian proprajn kopiojn el tiuj variabloj uzi interne el lia stack frame. Do nun tie, ni havas, kion Enhavas la valoro kiu x havis; kaj b, kiu enhavas la valoron ke y havis. Do unu, du. Kaj vi rimarkos ke tio estas separata de x kaj y ene de main. Do ni nun krei portempan variablo enhavi. Ni aperigos egala al b, do ŝanĝoj de unu al du. Kaj tiam ni aro b egalas al temp, kiu estas unu. Kaj tiam nun ni eliras el de ĉi tiu funkcio. Kiam vi eliras el la funkcio, la stack frame gets elsaltis super la stako. Ni nomas ĝin puŝi. Vi pelas stako kadro sur la stako kaj vi pop se ekstere de la stako. Kaj do kio okazas estas ĉio, kio Estis en tiu stako framo speco de simple levigxas en flamoj. Kaj tial ke ne plu ekzistas. Sed kion fari ni rimarkas? Ni neniam vere ŝanĝiĝis la valoroj de x kaj y, right? Do tiuj restis lokaj al ĉefa. Kaj per pasante aferoj en swap, ni fakte neniam ŝanĝis tiujn valorojn. Kaj kion ni nomas tio? Ni nomas tiun forpaso de valoro. Do en C, kiam vi transiros aferoj en funkcioj, ĝi pasas ilin per valoro kaj faras kopion de ili por la funkcio por uzi. Kaj ni lernos pri io nomata preterpasanton referenco poste, sed tio estas maniero vi povas solvi ĉi tiun problemon. Sed ni ne zorgu pri ke ĝis poste. ROB: Kaj vere, ke termino, forpaso per aludo, do C ne eĉ havas preterpasanton referenco. C ekskluzive estas preterpasanton valoro. Ne gravas kion vi faras, vi estas ĉiam pasante kopion de io. Estas nur ke, kiel mi ia menciita ke antaŭ kun montriloj kaj ke kordoj estas vere nur kvar bajtoj indikante someplace en memoro. Nu, se mi havas tiun ĉenon kaj ĝi estas dirante al mi ke estas tie kie la kordo - bone, se mi havas tiun montrilon al tiu meti en memoron, tiam mi povos pasi Kopio de tiu montrilon al funkcio, kaj tiu funkcio ankoraŭ scias kie en memoro estas. Do ambaŭ el ĉi tiuj indikoj notas al la sama loko en la memoro, kaj jen kiel ni tuj povos modifi aferojn preter la Nuna stack frame. JOSEPH: Cxu vi deziras fari la kompili? ROB: Ne, estas 5:30. JOSEPH: okej. Ĝi estas 5:30. OK. Do ni kovros kompilante mi divenu en la sekva sekcio, aŭ via sekcio ĉefo volas, je tiu punkto. Kaj - ROB: Any questions? JOSEPH: Any questions? Jes? SPEAKER 5: Uzante kordojn el CS50, ia funkcioj, ke ni volas uzi por tiuj, kiuj estos kiel C funkcioj. CS50 ne envenis kaj faris neniun plian. ROB: Korekte. Ĉiuj el la C kiel [inaudibles], vi devus uzi tiujn en nia kordoj. JOSEPH: Kaj unu lasta afero, kiun mi volas mencio estas ke ni havas stilo gvidas por ĉi tiu klaso. ROB: Ho, jes. JOSEPH: Do se vi venas el programado fono antaŭe, vi havu certaj konvencioj kiam vi skribas kodo kiel meti krampoj sur la sama linio aŭ aparta manieroj de deŝovante aŭ enoficigante via variabloj. En ĉi tiu kategorio, ni volas sekvi specifa stilo gvidas nur ĉar, bone, se vi eliros kaj laboras en industrio, vi tuj atendus sekvi la stilon, gvidinto de la kompanio en kiu vi iras. Kiel ekzemple, Facebook Mi opinias havas apartan specon de nomado konvencion. Kaj tie estas la diferencoj inter kamelo envolvaĵo variabloj kaj ĝuste kiel apartigante ilin per substrekoj. Kaj ankaŭ, mi pensas estas pli grava, kiel ekzemple, deŝovon, right? Ni krispa krampoj komenci kie la kondiĉo estas, kaj ili troviĝas en la sekva linio. Kaj ni ankaŭ metis krispa krampoj en eĉ se estas nur unu linion. Kaj multe da fojoj, estas manieroj fari ĝin kie vi povas lasi tiujn krampoj ekstere se estas nur unu linio sub la Se komunikaĵo. Sed en ĉi tiu kategorio, ni volas sekvi specifa stilo gvidas ĝuste tiel vi ricevas uzata por tiaj aferoj. ROB: Jes, kaj Stilo 50 tuj efikigi ĉi stilo gvidas, kaj ni estas tuj uzi Stilo 50 al grado vian kodon. Do ĝi faras tion pli facile por ni kaj espereble ne devus fari tion, kion multe pli malbone por vi donis la normigita stilo ne devus esti tiu nerealisma. JOSEPH: Kaj fine, por trovi la stilon Gvidilo, iru al manual.cs50.net/style. Kaj jes. SPEAKER 4: Cxu vi intencas plenumi ajn karakterojn por linio? ROB: Jes. JOSEPH: Pardonu, knaboj. ROB: Tio estas kiel unu el la solaj. Je tiu punkto, mi estas OK kun 120. Mi fartas sufiĉe bone kun dirante 120 signoj por linio. Mi komprenas, ke estas iu limo. Mi pensas 80 estas tiel malgranda, sed ni plenumi gxin. JOSEPH: Persone, mi pensas kun C, 80 karakteroj estas pli bone. Iam vi komencas alveni al aliaj lingvoj kiel JavaScript kaj PHP, ne tiom racie nur limigi tio al 80 signojn. OK. Nu, tiu estis la super sekcio. Ĉu iu volas dolĉaĵoj? SPEAKER 4: Jes.