ROB Bowden: CXi tio estas la pli komforta sekcio, sed tio ne signifas ke se vi sentas kiel vi estas ne pli komforta vi ne lernas tion ĉi tie. Do ni komencu. Ĉu vi havas diapozitivoj iri rekte en aferoj. Ĉu mi volis nur prenu gxin nun? Ŝanĝi tekkomputiloj. Allison: Vi ne volas prezenti vin, Rob? ROB Bowden: Ho, mi Rob. Tiu estas mia kvina jaro TF-Ing CS50. GABRIEL: Mi estas Gabriel. Mi kapo TF de CS50. Mi estis TF lasta jaro kaj ĉi tiu jaro. Allison: Kaj mi estas Alison kaj ĉi Estas mia dua jaro TF-Ing CS50. ROB Bowden: Bone, do tion maldekstre espereble vi vidis lin antaŭe. Se ne pro vi elŝuti ĝin por vi mem, Vi devus esti vidinta lin en prelego. Do tio estas la CS50 aparaton, kaj li faris iom de priskribo de ĝi en prelego. Sed esence estas nur vi kuras mastruman sistemo en via mastruma sistemo tiel ke ni povas doni al vi programoj sen bezoni maltrankviligi, aj estas ĉi tuj laboros en ambaŭ Vindozo kaj Mac, aŭ se iu el vi Estas jam uzas Linukson, Linukso. Ĝi simple supozis esti komuna ludado kampo tiel ke ĉiuj havas la sama ĝusta medio. Do se vi havas ne elŝutita ĉi jam, Vi devas elŝuti ĝin, ĉar vi estas tuj bezonas ĝin por la problemo aro. Kaj estas du gigabajto elŝuti, do ĝi povus preni momenton. Sur la Harvard ĝi iros rapide. Tiel CS50 aparaton. Nun en la komenco, ni tuj paroli nur bando de komanda linio stuff, kaj tiel per tio, mi volas diri laboras en ĉi tiu malgranda medio super tie. Kaj rimarki ĉiuj aferoj Mi diras ĉi tie nun tuj laboros, se vi estas ene de terminalo ene de la aparato, aŭ se vi estas en la interno de la gedit terminala fenestro ene de la aparato. Do tiuj medioj estas identaj. Sed mi estas ironta tria vojo. Kaj rimarki malsupren tie ĉi iom IP adreso ĉi tie. Do vi ne devas fari tion, sed ĉi tiu IP address-- nun se I-- krom ĝi estas blokita de tiu afero. OK, do tiu IP-adreso super en terminalo here-- tiel ĉi stacion super tie estas stacio en mia Mac. Do tio estas neniel aktuale asociita kun la aparato ajn. Kaj se vi estas en Vindozo, tiam vi estas tuj bezonos elŝuti ion specife por ĉi tiu, en aparta homoj emas uzi mastiko, P-U-T-T-Kaj. Do kion mi tuj faros estas tipo SSH kaj tiam tiu IP-adreso. Nu, jharvard en tiu IP-adreso. Do 192.168.24.220. Ĉi timigas mesaĝo, ignoru ĝin. Simple tajpu jes. Tio estas CS50 en skatolo. Petu vian pasvorton. Kaj tiel en multaj el tiuj kuntekstoj kie ĝi petas la pasvorton, [inaudible]. Ni havas multajn demandojn kie ĝi diras ke estas ne reale tajpi. Ĝi ne montras al vi la karakteroj de la pasvorton dum vi tajpas, se ion, por sekureco karakterizaĵo, ĉar se iu rigardas super via ŝultro kaj ili vidos stelo stelo star stelo, tiam ili scias ke via pasvorto Estas kvar karakteroj. Do la ideo estas ĝi petos pro via pasvorto, tipo. Oni ne tuj montras vi la karakterojn, sed ĝi estas fakte akcepti ilin. En tiu kazo, ajna tempo vi iam vidi pasvorton prompt kontraktanta kun la aparato, la Pasvorto tuj estos karmezina. Do Crimson. Kaj nun tie ene de ĉi fenestro, kio estas en mia Mac, Mi esence havi la sama ĝusta opinio kiel ene de terminalo en la aparato. Do vi ne devas fari tion. Vi povas fari ĉion, kion vi volas ene de la aparato. Mi preskaŭ neniam vere fari nenio en la aparato. Mi preskaŭ ĉiam minimumigi tion kaj nun Mi laboras SSH en la aparato. Se io, se vi havas pli malrapidan komputilon, vi eble rimarkos diferencon. Mi faros tion, ĉar mi preferas tiu fina fenestro. Ĝi havas kelkajn trajtojn kiel Mi povas fendi la fenestro, kaj nun mi povas SSH en tra la aparato. Mi akiris du SSH okazas samtempe. Se via komputilo estas aparte malrapida kaj vi laboras en la aparato, kaj vi rimarkos ĉi estas vere laggy ajn. Inklinas esti multe pli rapida se vi SSH-ed en. Sed alie vi povas labori de ajna maniero. Publiko: Kion SSH signifas? ROB Bowden: Secure obusoj, io simila? Kion SSH signifas? GABRIEL: Sekurŝela. Allison: Estas nur sekura konko. ROB Bowden: Sekurŝela. Ĝi estas protokolo kiu you-- estas sekuran protokolon, tiel ĉifrita. Homoj ne povas Snoop la reto kaj vidi kion vi diras nenion vi SSH-ed por. Kaj fakte, en la antikva tagoj de CS50, do en 2009 Kiam mi estis novulo, la maniero kiu Vi laboris en CS50 problemo aroj, Estis vi SSH-ed al iu servilo ke ni donis al vi aliron al, kaj vi prilaboris tie. Do vi ne havas tiun grafika aparato. Vi ne havas gedit. Vi ne havas ĉiujn tiujn aferojn Vi povus vide punkto kaj klaki. Vi devis labori en ĉi tiu interfaco. Mi preferas labori en ĉi tiu interfaco. Tiel parto de kion ni iras esti tuj super nun estas aro da la ordonas ke vi devus komencu akiri familiara kun la plej Vi iru kune en la kurso. Kaj honeste, fojo vin alkutimiĝi al ili, Estas tiel multe pli rapide labori en tiu medio ol ĝi estas labori kun buscador, trenante kaj klakante aĵoj. Do jen ni estas. Nun mi ĵus SSH-ed en, ktp la defaŭlta location-- vin vidis kelkajn el tiuj komandoj en klaso, sed ni transiru ĉiuj ili denove. La defaŭlta situo ni en estas la hejmo dosierujo. Kaj dosierujo, nur alia vorto por dosierujo. Do ni estas en la hejman dosierujon. Tajpu ls, listigas dosierojn en tiu ĉi dosierujo. Evidente mi kreis blah.c antaŭe. Do ni havos labortabla dosierujo. Vi rimarkos ke sintaksa kolorigo? Luma blua kolorigo indikas dosierujon kaj iradon blanka indikas nur ebenajxo dosiero. Do tuj estos kelkaj aliaj koloroj vi vidos. Plenumebla dosiero estas probable iri esti verda aŭ io simila. OK, tial ni estas en la hejman dosierujon. Sed se mi volas iri al malsama dosierujo, kd estas la komando mi volas. Do ŝanĝas dosierujon, kaj tiam vi pasas la nomo de la dosierujo ke vi deziras iri en. Do jen ni havas kvar ebloj. Mi povos iri al la malŝarĝoj, kaj nun ni vidas jen ĝi ĝisdatigis ĉi parenthetical diri ke mi estas en ~ / malŝarĝoj. Do kio estas supersigno? Ĝi estas stenografio por via hejmdosierujo. Do preskaŭ ĉio vi faru tuj kun respekto al via hejma dosierujo, kaj PWD estas nur komando Mi uzas unufoje en jaro ke simple presas la aktuala dosierujo. Do vi vidas tie ~ / Malŝarĝoj vere solvas por / home / jharvard / malŝarĝoj. Do / home / jharvard estas mia hejmo dosierujo. Do ni povas kd ŝprucas punkto. Nun dot dot estas speciala dosierujo ke ĉiam referencas al la dosierujo supren. Do se mi estas en ~ / malŝarĝoj, tiam kd dot dot tuj kondukos min al supersigno. Kion ni pensu kd dot dot tuj alportos al mi nun? Ĝi alportos min / home. Do supersigno per print laborista dosierujo, Mi estas nun / home / jharvard. unu dosierujon el tio, nun diras tie / home. Nun kd dot dot. Nun mi estas en la radika dosierujo, kaj vi ne povas fari ĝin denove. Vi nur resti en la radika dosierujo ĉiam. La radika dosierujo havas tutan faskon da aferojn, se vi volas enrigardi, vi povas. Ekzemple, se mi iros en Bin, kiu enhavas ĉiuj tiuj binaraj, kiel ls, kaj KD, kaj ĉiuj tiuj aĵoj. Do tiuj komandoj devas ekzistas ie en la sistemo, kaj ĝi estas en la dosierujo / bin dosierujon. Sed preskaŭ ĉio vi estas tuj estos de via hejmdosierujo. Kaj cd sen argumentoj ajn, Vi povus diri cd ~, ne bezonas. kd tuj venigu vin reen al via hejma dosierujo. Unu lasta. cd - tuj revenigos vin la lasta dosierujo ke vi estis en. Do mi simple cd'd dufoje en vico, do mia lasta dosierujo estis la hejmo dosierujo. Se mi iras al slash bin, kaj nun ni iru kaj al uzanto. Uzanto porcion. Ni iru al uzanto kotizo. Nun mi estas nun en uzanto kotizo. cd -, reen en bin. Do tiu akiras aparte utila kiam vi have-- kaj ĝi devos mastrumi. Tiel uzanto dividas, reen bin, share bin. Do tiu akiras utila. Vi eble trovos vin havi multajn, multaj, multaj ingita dosierujoj. Kaj vi volas fari ion reala rapida en supran dosierujo. Vi iros al tiu dosierujo, fari ŝanĝoj kaj da tio, kaj nun vi volas iri reen al kie vi estis. cd -. Mi ĉiam frustrita kiam mi hazarde iros al tiu dosierujo mi volis fari laboron en. Mi ĉiam ricevas frustrita kiam mi faris en du ŝtupoj anstataŭ unu paŝon, ĉar tio signifas ke cd - tuj venigi en tiu meza situo anstataŭ kie mi volas iri. Do ni vidas ĉiujn listo dosierojn. Ni scias kiel akiri ĉirkaŭ ĝis nun. Do nun ni parolu pri redaktado dosierojn. Do en ĉi tiu kurso, vi estas preskaŭ ĉiam atendis uzi gedit. Se vi volas, vi povas preni la sekva paŝo kaj komencu lerni komandlinio teksto redaktoro. Tiel diversaj ebloj ekzistas. Kaj tiuj, kiuj estas probable tuj estos taŭga por vi, ni havos Nano, Vim, kaj Emakso. Do Nano estas la komencantoj komandlinio tekstoredaktilo. Do Nano ni iru blah.c mi kreis pli frue. Estas nur tiu normo C dosiero. Kaj vi vidos tutan faskon da taskoj okazas ĉe la malsupro de la ekrano, kaj ŝajne blah.c enhavas ĉi C kodon. Do en tiu aparta redaktilo, kio ĝi estas diras la bottom-- nun ĉi caret simbolo, vidas ĉi ^ G, ^ X, ^ ho. Tiel ke en preskaŭ ĉiuj kunteksto ke vi vidas, vi eble vidos ke caret simbolo aliaj lokoj en linio, sur Stack Overflow, io simila. Ĝi preskaŭ ĉiam aludas kontroli. Do por eliri mi volas fari Kontrolo X. Kontrolo X, eliroj. Kaj mi povas uzi mian sagon ŝlosilojn movi ĉirkaŭe. Rimarku ke mi ne povas noti kaj klaku senhezite. Vi devas uzi vian sagon ŝlosilojn movi ĉirkaŭe. Tie povus esti opcio atentigi kaj alklaki. Sed ni faru kelkajn ŝanĝojn. Nun Kontrolo X iri eliron. Ĝi tuj diri krom modifita bufro. Nun la prompto, y por jes, n por neniu. Kontrolo C por nuligi. Mi nur diru jes. Dosiera nomo skribi. La defaŭlta estas la dosieron ke ŝi jam estas. Hit eniri. OK. Nun mi ĵus redaktis tiun dosieron: savis ŝin, kaj ĝi ŝanĝis. Do Nano estas la plej facila tekstoredaktilo kutimiĝos. La alternativoj estas Vim kaj Emakso. Tiuj estas pli alta nivelo de teksto redaktiloj kiu havas tre kruta lernado kurbo. Do mia persona prefero estas Vim. Kaj ĝi havas ampleksan varion de ebloj. Kaj kiam vi kutimiĝos por tio, ke vi neniam volas iri al iu ajn alia tekstoredaktilo ĉar vi simple havi tantas aĵoj disponeblaj al vi en tiuj, sed prenas vere longan tempon por lerni. Do eble vi simple volas devigi mem nun alkutimiĝi al ĝi, sed mi dirus ke valoras ĝin. Sed estas malfacile. Kaj tiam Emakso. Mi ĉiam luktas en Emacs ĉar Mi scias kiel fari absolute nenion. Ŝajne Emakso ne defaŭlte instalita sur la aparato. Ni probable aldonu ke kiel defaŭltan instalaĵoj. Unufoje vi lernas unu de Vim aŭ Emacs, ekzistas neniu konvinka kialo iam lernos la aliajn, sed estas tute malsama stilo. OK do tio redaktado tekstajn dosierojn. Publiko: Se vi estas ŝtopita en Vim nun, kiel fari we-- ROB Bowden: Estas multnombraj manieroj en Vim, kaj ekzistas tuta tutoriales sur lernanta Vim. Do se vi hazarde estos en insert mode por tajpi tekston, kiun vi povas eniru kiuj diversmaniere, sed mi estas kiel vi eniri insert mode. Aŭ eliri de ajna speciala mode ke vi estas en, simple Escape. Kaj vi nur Bash Escape akiri el ajna ingita modaloj vian in. Nur OK, nun mi estas denove en normala reĝimo. Kaj tiel en normala reĝimo, dupunkto. Vi vidas aperi ĉe la malsupro. Kaj tiam q. Do q estos liberaj se vi faris ŝanĝojn, kio I-- Mi faris ŝanĝojn? Mi faris ŝanĝojn ŝajne. Do se vi faris ŝanĝojn, ĝi estos diru vi povas meti Krisigno. Mi iras al nomi tion bang. Do vi povas meti malpermeson je justaj forlasi sen fari ion, aŭ dupunkto wq savos kaj senkulpa. Do w ĝenerale estas skribi. Do skribi la dosieron. Mi povas skribi kaj senkulpa. Aŭ vi povus havi nur qx slam q bang simple eliri de tie sendistinge de ĉiuj ŝanĝoj kiujn vi faris. Bone, do nun ni go-- povas krei dosierojn. Komencu forigo dosierojn. Kaj mi simple ĵeti en unu rapida nova komando, tuŝo. Do tuŝi foo. Touch stangon. Tuŝi Rabado. Se mi ls, nun ni vidas ke tiuj dosieroj ekzistas. Ili estas tute malplena. Do takto estas nur facila vojo de unu, [inaudible]. Du, teknike nur stato tio, ĝi ĝisdatigas la timestamps. Do neniu dosiero kiun vi kreas havas kun tempstampo asociita kun ĝi. Do Baz estis kreita Septembro 14, je 16:21. Estas nun 16:22, do se Tuŝas Baz denove, ni vidu, Baz estis plej ĵus redaktita je 16:22. Sed alie mi preskaŭ neniam rigardi la timestamps en dosieroj. Do tuŝu, tie mi simple uzante ĝin krei iujn rapidajn dosierojn. Bone, do nun rm estas komando kiu ni zorgas proksimume tie. Kaj ni povas RM boo. Diru forigu regulaj malplena dosiero boo. Kaj ni povas tajpi y, kaj nun ĝi estas eltiru. rm Rabado. Forigi regulaj malplena dosiero Rabado kaj tipon n por neniu. Nun ĝi ne estas forigita. Do trinkejo kaj Baz ankoraŭ ekzistas. Foo malaperis. GABRIEL: Konservu parolante. ROB Bowden: Granda. Do la ĝena mesaĝon tie, forigu regulaj empty-- kion vi faras tie? Forigi regulaj malplena dosiero. Do, se ni ne volas esti tedita de tiu mesaĝo, ni povas ĵeti en ĉi -f flago, do tio estas forto. Kaj nun se mi RM -f, ĝi ne tuj diru ĉu vi volas forigi tiun bildon. Ĝi havos nur faru ĝin. Kaj ls, mi ne vidas bari tie plu. Nun ke estas potenciale danĝera komando. Ĝi emas ne tro malbona. Ni revenos en dua kiom ĝi povas akiri vere danĝeraj. Kaj ni kredas iujn labor-dosierujon. mkdir, alia ordono. Do mkdir estas komando kiu faras dosierujo. Kaj nun por ls vidas ĉi bela lumo blua reliefigis labor-dosierujon. Mi povas kd en temp. Kaj mi povas mkdir foo. kd en foo. mkdir stangon. kd en trinkejo. Do ni vidas ni povas facile akiri en iu bela profunda nestumado. Nun kiel vi mi forpelus dosierujo? RMDIR. Do se mi simple rekte provi rm, kiel ni faris kun regula dosiero: rm trinkejo tuj diri ne povas forigi stangon. Estas dosierujo. Ekzistas speciala komando por forigo dosierujoj, ia. Do RMDIR stangon. Nun trinkejo malaperis. OK, do RMDIR mi preskaux neniam uzas. La kialo being-- nun ni fari regulajn dosiero riglilo tie. Do RMDIR boo. RMDIR. Malsukcesis forigi foo. Dosierujo ne malplenaj. Do vi ne povas uzi forigu dir sur dosierujo kiu havas aferojn en ĝi. Do vi havas iujn eblojn. Vi povas iri al tiu dosierujo, forigi ĉiu manualmente, kaj tiam eliru kaj RMDIR la dosierujo. Tio evidente sonas ĝena. Kio se estas miloj de dosieroj tien? Nu, vi povus RM *. Ni parolos pri * en dua. Ĝi esence signifas cxio. Sed eĉ pli bone, do rm -r. Do rm -r-- en multaj kuntekstoj, -r signifas rekursie, kiun ni parolos pri kio rekursie per en pluraj semajnoj. Sed esence signifas través La tuteco de tiu dosierujo kaj forpreni ĉion. Do rm -r foo tuj diru malsuprenirus en dosierujo foo? Jes. Forigi regulaj malplena dosiero foo / trinkejo? Jes. Elpreni dosierujon foo? Jes. Do nun Foo kaj ĉiu en ĝi estis forigita. Nun ke ili povas akiri aparte ĝena when-- ni tusxu 1 tuŝi 2, tuŝi 3. Povus havi tuta aro da dosieroj. Se mi volus, mi povus krei miloj de dosieroj tien. Kaj rm -r foo tuj esti bela ĝena. Jes, jes, jes, jes, jes, jes. Kun multe pli dosieroj rapide vidi kiom da fojoj Mi devus tajpi jes. Nu, ni nur vidis antaŭ ni kiel povas forigi bezonante tajpi jes, -f. Do mkdir foo kd foo takto 1 2 3. OK, do rm -rf foo tuj blinde forigu foo tute. Neniu prompto. Neniu ion. Foo malaperis. Do mi emas uzi tiun ordoni tutan tempon. Dirita, estas tre danĝeraj komando, ĉar se mi faras ion kiel tiu, ĝi ne instigas vin. Ĝi estos irinta. Kaj okazas belan ofte, kaj eĉ en pli alta nivelo CS kursoj. Foje ni vidos io kie iu Diras mi hazarde niaj rm RF-ed mia hejmo dosierujon kaj ĉiuj miaj P aro estas for. Kaj estas devastador, sed ne estas rubo povas. Mankas nenio estas vin por rekuperi. Ĝi simple malaperis. Eĉ pli malbone estus iu kiel rm -rf /. Do ni nur diskutis ke radika dosierujo. Ĝi tenas ĉiujn dosierojn en via sistemo. Aĵoj emas akiri bela senorda kiam vi forigas aferojn kiel ls, kaj KD, kaj ĉiuj el tiuj. Publiko: Kio estas la diferenco inter rm, RF kaj rm * ROB Bowden: Do rm * - Allison: Demando estis kio estas la diferenco inter rm, RF kaj rm *. ROB Bowden: Do rm *. Stelo ĝenerale per ĉiuj la enhavo de tiu ĉi dosierujo. Provante elpensi aliajn manieroj montri stelo. Nu, star fakte ĝenerale signifas konvenas iun skemon. Do se mi havas dosieron nomatan dog1, tuŝi dog2, tuŝi cat1, tuŝi cat2. Do ls * 1 tuj presi cat1 kaj dog1, ĉar tiu stelo povas esti plenigita en with-- unu devas esti tie, sed stelo povas esti aux kato aŭ hundo. Ĝi estas sovaĝa karto. Tio estas la vorto mi serĉas. Ĵokero. Aŭ mi povus ls hundo * kaj Mi alvenis al vidi dog1, dog2. Do tiuj estas printi la dosierojn kiuj kongruas tiu aparta modelo. Vi povas uzi ls tiamaniere. Ls * stelo egalas nenion. Do tuj presi ĉiujn La enhavo de ĉi tiu dosierujo ĉar ĉiuj el ili egalas. Oni ne tuj presi ion en supra nivelo dosierujoj. Se mi havas sub dosierujo, foo kaj tuŝi 1 2 3-- do nun se rm * stelo, forigu cat1, cat2, dog1, dog2. Ne povas forigi foo. Estas dosierujo. Do stelo ekspansiiĝas al ĉiuj dosierojn en la dosierujo. Do teknike rm * estas kiel diri rm cat1, cat2, dog1, dog2, foo. Dum rm -rf, teknike stelo plenumi kion ni volas, sed rm -rf-- se mi eliros el ĉi dosierujo, rm -rf temp, kiuj tuj iras en temp kaj rekursie forigu ĉio. Do stelo estas separata en tiu tiu komprenas by-- tiom tion ke mi enkuris, tion kiu instigante min pro komandoj kaj poste ekzekuti kaj farante ili, mi nomas mia konko. Kaj tiel ĉi konko estas sin programo. Se mi volus, mi povis kuri en / bin / bash. La ŝelo estas nomita bash. Kaj nun ni rimarkos ion estas iomete ŝanĝita, kaj tio estas pro miaj agordoj por la ŝelo estas iom malsama. Sed nun mi teknike kurante konko en mia originala konko, kaj mi povas eliri tiu konko, kaj nun Mi revenis al mia supera nivelo konko. La celo de diri ke is-- la stelo. Do la stelo estas io komprenita de bash. Do rm -rf, -rf flago estas komprenita por ĝuste rm. Ĝi scias ke kiam vi pasi -rf ke vi volas ĝin rekursie forigu ĉiuj dosieroj sen instigante. La stelo estas io komprenata per bash ke kiam vi diras rm *, bash ne tuj diri hey rm *, forigu stelo. Bash estas dironta rm * forigu cat1, cat2, dog1, dog2. Ĝi estas aŭtomate tuj pligrandigi ĉiujn dosierojn en la dosierujo. Kaj simile supersigno estas alia simbolo ke bash komprenas. Kiam vi diras cd ~, bash ekspansiiĝas ke via hejmdosierujo. Aliaj demandoj ĝis nun? OK tial ni tuj komencos iri rapida. Langeto finaĵo. Simple ĵeti ĝin tie. Multaj homoj ne realigi ĉi ekzistas. Do se mi tajpas kd Dow, mi volas iri en malŝarĝoj. Mi ne bezonas tajpi nloads. Mi povas nur batis Tab. Do ĝi rekonas ke Dow estas prefikso, kiu ne kongruas ion alie en tiu dosierujo, do ĝi kompletigos ke por vi. Nun mi povas eniri. Mi ankaŭ faras tion rekursie. Do mkdir foo. Ni iru en foo. mkdir stangon. Do reiri al mia hejmo dosierujo, mi povas vidi malŝarĝoj. Nun batante langeto denove, aŭtomate tuj plenigi foo. Ĝi estas la sola dosierujo. Batante langeto denove, aŭtomate tuj plenigi stangon. Do nun mi estas en (~ Elŝutoj / foo / trinkejo). Do ĉi langeto finaĵo, kiam mi alvenis al oficejo horoj, kaj mi staras super ies ŝultron, kaj ili iras rm D-O-W-N-L-O-A-D-S, mi mortas. Nur langeto, langeto, langeto, langeto. Do sendube uzis langeto. Kaj simile, kaj malsupren, multaj homoj nur ke okazis neniam batis supren kaj malsupren. Ĝi iros tra la antaŭa ordonojn, do se vi simple kuris ion, kaj vi volas kuri denove, nur teni gxis vi atingos ĝin. OK. Tiel rapida, iuj aliaj aĵoj. Ni iru returne en temp. Ni kredas iujn dosierojn. Do en ĉi tie, mi estas nur tuj listo kelkaj vortoj. hundo, kato, meow. Ni faru hundo, fiŝoj. Do nun rep estas tre utilaj komandoj kiujn vi sercxi tra dosierojn por aparta teksto, kaj teknike povas fari vere kompleksan esprimojn por ĝi egalas. Do jen, se mi grep, kaj kion mi volas serĉi? Diru mi serĉado por katoj, kaj Mi volas serĉi ĉiujn tiujn dosierojn. Do kiel mi faras ĉiujn tiujn dosierojn? Stelo. Do en dosiero unu, mi havas katon. Mi verŝajne povus havi nomis ĝin io bona, ĉar tio similas linio nombroj aŭ iu. Sed en dosiero kiun mi havas linion kun kato. En dosiero du mi havas linion kun kato. Do nun mi povas rigardi en dosiero kaj vidu Oh Yeah, ke la dosiero ja havis katon. Notice dosiero tri ne estis egalita ĉar kato ne estas tie. Mi povas grep por meow. Nur file du havas meow. Do ĉi vi povas kombini, denove, kun -r, kiu kiel mi diris antaŭe ofte signifas rekursie. Kaj tial mi povas veni tien, grep -r por ajna petskribon of-- ni redaktanton ĉi tiu nur ĵeti kato tien. Do grep -r por ajna petskribo de katon tra tiu ĉi dosierujo. Kaj tio rekursie serĉu ajnan subdosierujoj. Do en Rabado, ne estas kato. En temp / 2, estas kato. Kaj en temp / 1 ekzistas kato. Do tio estas serĉanta ene dosierojn. Nun vi povas ankaŭ uzi trovaĵo. Kaj tiel trovi estas specife pri serĉi dosierojn kun donita nomo. Do ni faru kelkajn pli. Ni iru en malŝarĝoj. Tuŝi dog1. Tuŝi cat2. Tuŝi cat_dog. Tuŝi catcat. Do mi volas trovi ciujn dosierojn kun hundo en la nomo. Do trovu kaj por la plej longa fojon mi neniam memoris kiel trovi laboris, ĝis mi fine legi iun kiu faris tiel klara. Do trovu, aŭtomate rekursie. Vi ne bezonas pasi -r. Do trovu punkto. Ni ne parolis pri skalara ankoraŭ. Dum dot dot ĉiam signifas unu dosierujon supren. Dot ĉiam signifas la aktuala dosierujo. Do mi povus rm -r pentras en la same mi povas rm -rf *. Finfine ili plenumonta la samon. rm -rf dot tuj forigu la tuta aktuala dosierujo. OK, kiun mi ne volas fari tie. Sed trovi punkto. Do rekursie serĉo la nuna dosierujo, kaj nun ĉiu post ĉi estas faskon de flagoj kiu vi uzi ekskludi tion for de reveno. Do trovu dot revenas ĉiun ke povas trovi de la aktuala dosierujo. Tiuj estas ĉiuj dosieroj rekursie serĉanta. Ni vidos en kelkaj el la dua. Sed en kazo vi scivolas kiel mi statas ke tia Ordonu K, almenaŭ en mia stacio en la Mac demetu ĝin. Kontrolo L ĝenerale demetu por ia ajn fina. Vi povas ankaŭ tajpi klara. Kaj se vi neniam en bizara scenario-- Ĝi okazis al mi paron time-- kie la koloroj de via stimulanta ĉiuj paneas, aŭ vi ne povas vidi ion ajn esti tajpita kiam vi tajpas, ĉar kelkfoje kiel fona koloro estas metata la sama kiel la malfona koloro kaj nun vi ne povas vidi la tiparojn. Reset estas iu kiu nur restarigas vin al la defaŭlta nigra fono blanka fronto, aŭ kio ajn Vi aranĝis ilin. Do kie estis ni? Trovu punkto. Do nun ĉiu pasinta ĉi punkto limigas la rezultojn al iu kiu kongruas la donita ŝablono. Do ĉi tie mi volas serĉi ĉiu kun la nomo kato. Mi ja nenion. Kial estas ke la kazo? Nu, mi simple serĉis iu kun precize la nomon kato. Se mi volas serĉi ion kiu havas iun modelon, kaj cat-- la citaĵoj teknike ne estas necesaj, sed mi ĵetis ilin tien. Do nun trovas catcat ĉar tio estas la sola afero, kiun havas iom arbitra mastro sekvita kato. Mi povas meti katon *, kaj nun trovi catcat, cat_dog, cat2, ĉar tiuj estas ĉiuj aĵoj kun kato komence sekvis nenion. Vi povas kombini ĉi. Se vi volas serĉi tutan C dosierojn kiun vi havas, vi plenumadu * .c. Ni blah.c tie. Do tio estas trovaĵo verkoj. Vi povas serĉi. Ĝi havas tutan faskon de flagoj por pliaj restriktoj. Kaj oni ilin, diru -d. Do evitinda. Ho, tio ne estas kion mi volas. Ne -d. Tajpu d. Do trovu skalara - tipo d. Do kio ĝuste faris estas mi serĉanta ĉiuj dosierojn en la nuna dosierujo kun a-- d staras por directory-- dosierujo tipo. Ĉi revenas ĉiuj subdosierujoj en la nuna dosierujo. Kaj tipo F estas ĉiuj regulaj dosieroj, ĉiuj ne dosierujoj. Do tio estas nur Ekzemplo de aliaj manieroj povas limigi la serĉon aliaj ol la nomo de la dosiero. Jam pasis 30 minutoj. Ankoraŭ iras. Allison: Mi brizo tra. Glatos. ROB Bowden: Do iuj aliaj aĵoj. Nun bang, Krisigno. Tial ĝenerale means-- Nu, ni vidos ekzemplon. Tiel! F, kio estas ke tuj faros? Nu ŝajnas havi ripetita trovaĵo dot -type f. Kio pri! G? Ke nur grep -r kato *. Do bang vi povas uzi ripeti ĵus faris ordonon. Do se mi tajpas! GRE, ĝi tuj re-run la komandojn kiuj komencis kun GRE plej ĵus. Kaj vi povas vidi ĉiujn tiujn komandas kun historio. Do historio. Tiuj estas ĉiuj ordonojn mi kuri hodiaŭ. Kaj bone, tio ne laŭvorte restriktitaj al hodiaŭ, sed nun, mi nur uzis ĉi aparato de hodiaŭ. Ĝi estas via tuteco de la historio de via bash ŝelo, krom mallonga ĉe iu punkto. Publiko: Kio okazas se vi faras Historio [inaudible] komando kaj eraro en la rezulto daŭre presi the-- ROB Bowden: Yeah, se ekzistas Eraro en unu el tiuj commands-- do ni diros, ke estas Eraro komando ne trovita. Ankoraŭ aperas en la historio. Bone. Aliaj demandoj pri io? Do tio estas bang. Nun, vere utila komando, viro. Do kiu donas al vi la manlibro por donita komando. Tiel diru viro ls, do tio montras min ls. Ĝi listigas dosierujon enhavon. Kaj ĉi tiu estas kie mi vidas ke tie estas tiuj diversaj flagoj kiuj ekzistas. Do ni vidas ke ls -l ekzistas se ni devis legi tion. ls -l donas al mi ĉi plenan liston de la dosierujo kun kiu posedas la dosieron, La grandeco de la arkivo, la modifitan tempstampo. Do ls -a estas alia ke vi povus vere uzas iom ofte. -al estas mia plej komuna flago pasinta ls. Do -a, rimarki tie estas multa pli dosierojn ol ls. ls -a. Kio estas en komuna kun ĉiuj tiuj dosieroj? Ili komencas per punkto. Do tiu estas konvencio en Linukso kiu dosierojn kiuj komenciĝas per punkto estas kaŝita. Do ĝi nur signifas ke kiam ni simple rektaj ls, aŭ ni serĉas ĉi dosierujo uzante la buscador ekvivalenta, aŭ Vindozo Esploristo ekvivalento, kiun ni ne volas vidi tiujn dot dosierojn. Ili simple ne malsanktigos la vido de la aferoj. Tiel ili restas kaŝitaj Se vi specife peti ilin kun iu kiel -a. Do mi povas kd en .local, kaj mi vidos ke tio estas sin dosierujo kun dividita dosierujo, kaj aplikoj kaj bla bla bla. Do streketo dosierojn Ili estas nur kaŝita. OK, do aliaj gravaj. Mi havas paron Mi povas salti. Ni simple reala rapida diskuto pri La dosiero redirección aĵoj. Do tie estas tuta kompleksa serio de aĵoj kiujn vi povas fari kun ĉi tiuj, sed nur por vidi ilin, ni diru, eĥo. Alia ordono. Vere muta komando. Ĉiuj faras estas presita kion mi diros al. Do eĥon saluton. Ĝi nur eĥis saluton al la ekrano. Saluton mondo. Eĥoj saluton mondo. Do unu komando aŭ simbolo ke bash komprenas Estas tiu granda ol simbolo, kaj tio estas la eliro al dosiero simbolo. Do se mi eligo tion foo, ekzistas nun dosiero nomita foo, interne de kio saluton mondo. Do rimarkas ke kiam mi eĥon saluton mondo fluto farigxis foo, ne eĥon saluton mondo. Anstataŭe ĝi estis metita en dosiero foo. Kaj alian komandon ĝuste ĵeti ĝin ĉe vi, kato. Tio estas facila maniero por ĝuste tute listo de la enhavo de la dosiero por ke mi ne devos malfermi tekstoredaktilo por ĝin vidi. Do la enhavon de la foo dosiero estas saluton mondo. Kaj mi povis kato blah.c, La enhavo estas tiu. Denove, tio estas ordonoj ke ne atendi vi havas ilin ĉiujn parkerigis. La ideo estas ke vi vidis ilin. Eble vi laboras en io, kaj vi kiel mi estas malsana de malfermi tiu dosiero. Mi deziras ke mi povus nur rigardi ĉe la enhavo reala rapida. Vi povus fari tion, do rerigardi kaj diru ho mi memori iun kiel kiu ekzistas, kaj ĝi estas kato. Tiel ke tuj dosiero. Nun ne ekzistas vere neniu bone Ekzemplo de legado de dosiero ankoraŭ. Kio estas iu kiu prenas ion de normo? Ajna simpla Linukso komando? Kiam ni atingos ĝin, en paro semajnoj ĉiuj piece-- bone, tiu semajno vi havas pecon kie komenci prenante enigon el la uzanto. Do kutime oni tajpas ke enigo en la klavaro. Anstataŭ tajpante ke enigo en la klavaro, Vi povas anstataŭ pipon el dosiero tiel ke kiam vi faros Mario, ./mario, pipon el ajna donita dosiero, kaj kiuj tuj kuras la mario programo. Ne atendante enigo je la klavaro, anstataŭe estas nur legos la linioj de la foo dosiero. Tiel granda ol foo metas ĝin en la foo-dosiero, kaj malpli ol foo prenas ŝtofo el la foo dosieron kaj Uzas ke kiel enigo al tiu programo. Kaj nur por vidi ĝin, ni povus ankaŭ eĥo foo trinkejo Rabado kaj tiam anstataux unu granda ol, ni faru du en foo. Kion tio do? Ĝi simple appends al la dosiero. Do anstataŭ rimarkos se mi eĥon bla en foo kaj tiam kato foo, nur bla. Do kiam vi eliro al dosiero, ĝi tute overwrites tiu dosiero. Se vi nur volas alfiksus, duobla [? grader. ?] Kaj lasta estas pipo. Pipe Gets multe pli komplika, kie Ĝi prenas la eligo de unu komando kaj nutras ĝin en la sekva komando. Do iu komuna, historio. Do, uf, mi ne volas rigardi tion. Montru al mi cxiujn ordonojn de mia historio kie mi grep-ed por io. Ne, tio estas konfuza. Montru al mi cxiujn ordonojn, kie mi trovu. Ĉiuj trovos ordonojn mi iam kuris. Do historio. Nun historio eliroj al la screen ĉi liston de komandoj, sed mi ne volas eligo ĝin al la ekrano. Anstataŭe mi tuj pipon ĝin grep. Do ni grep por ĉiuj okazoj de trovaĵo. Do nun anstataŭ grep preno la enigo, anstataŭ of-- grep povas manipuli kiel input-- ni uzante grep iomete malsame tie. Do anstataŭ tajpi la listo de tion ni volis serĉi kaj diris grep prenas kiel enigo. Do, se mi ĝuste grep trovas lin atendu min tajpi tion. Do kato saluton trovi. Saluton. Trovi. Rimarki ĉiufoje mi tajpas trovi ĝi rekonas ke mi tajpis trovaĵo. Tiel anstataŭ ĉi, volo serĉo dosierojn por trovaĵo. Do historio nun tuj eligo liston de ĉiuj komandoj. Ni metas ke elirita, kaj ni nutrante ĝin grep, kaj tial ĝi estas kraĉi el ĉiuj petskriboj de trovaĵo. La kaŭzo mi diris lin estus konfuzanta Estas kvazaŭ I-- estas ankoraŭ konfuza. Se mi grep por grep. Rimarki estas sufiĉe multe ĉiam montrante la komando Mi simple kuris ĉar tiu komando mem grep interne. OK, do demandojn pri io? Kaj mi trapasi ĝin super ĉe tiu punkto. Espereble tiu estas bela ĉefrigardo de ĉiuj komandoj ke vi ne bezonas havi parkerigis, sed tiuj konsistigas solida 95% de kion mi fari en la komandlinio. Ankaŭ teni en menso ke la komandlinio mem, bash estas programlingvo, kaj tiel, kiam vi ricevas gxin, vi volus fari vere kompleksaj aferoj. Kaj tial ĝi havas aĵojn kiel masxojn, oj, kaj ĉiuj el tiuj ke vi tuj kutimi kun via programlingvoj. Sed tio estas preter la medio de tiu sekcio. OK, do neniu demandoj? Allison: None? GABRIEL: Cxu vi intencas to-- Allison: Mi povas fari tion sur mia se vi volas. Ni povas vidi kio okazas. ROB Bowden: Off Allison. Allison: Woo. Vi estas malmola ago sekvi, Rob. Ĉu vi volas ke mi ŝanĝi kun vi? Aŭ vi havas, OK. Mi provos ne tute esti tiel longa tie. Vidu se tiu volo prilabori la vojon mi deziras ĝin. Eble? Haha! Jes. Do mi simple tuj tre rapide iri tra variabloj, loops, conditionals, kaj iom pri la tradukilo. Se vi havas demandojn je ajna momento, bonvolu haltigi min. Tiuj infanoj estos memorigi min ripeti via demando se mi forgesos, sed ne estu tro malbonaj. Do variabloj, jes. Ni ne havas unu el viaj Scratch pecoj tie. Mi certas ke la plimulto de vi, se vi havis ian ludon ke vi kreis per Scratch, vi havis spuri iun kiel partituro, aŭ tempo, aŭ io simila. Do tiuj brilaj oranĝkoloraj pecoj kiujn ni vidas tie Estas ĝuste la Scratch formo de variabloj, kaj vi certe esti uzante variabloj en viaj programoj. Se vi ne estas, mi ne vere certe kion vi faras. Sed ĉiuokaze, granda afero, difinanta variabloj. Kun C ĉiu variablo havas havi tipon deklarita, tial mi donis al vi tre Ĝenerale oni ĉe la supro. Do vi havas vian tajpi kaj tiam ajn vi decidos voki vian variablon. Do en ĉi tiu kazo, tajpu en via variablo listo. Ni havas tri ekzemplojn. Char iu grado, de A, kiu estas kiu Mi certas ke vi ĉiuj volas akiri en ĉi tiu klaso. Vi povas difini plurajn variabloj sur unu linio Tiel longe, kiel ili ĉiuj havas la saman tipon, kio estas nia dua ekzemplo tie kie vi havas tri variabloj x, y, kaj z. Ili ĉiuj flosoj. Kaj tiam vi ankaŭ povas, en tiu lasta Ekzemple kun int partituro kaj nombro de teamoj, vi povas pravalorizi ili pravas. Do, en la mezo ekzemplo kie ni Nur oni kaleŝego de x, y, kaj z, Tiuj ne estas inicializado ankoraŭ. Ili havas neniun valoron. Aŭ ili rubo valoroj. Kaj se vi provas uzi ilin, La tradukilo krias al vi. Vi devas ambaŭ deklaras kaj pravalorizi viaj variabloj. Do en ĉi tiu lasta, ni faras ambaŭ. Ni deklari variablojn de noti kaj nombro de teamoj, kaj ni inicialización ili, donante ili iliajn komencajn valorojn de 7 kaj 4 respektive. Malvarmeta. CXiu bona? Awesome. OK, do iuj konvencioj. Se vi uloj legis tra stilon 50, tiuj Estas ĝuste tio, ke oni volus por vi implementar en via stilo. Do signfa nomojn. Se vi komencas nomante tion nur x, y, kaj z, speciale kiel vi eniri lengthier programoj, vi estas probable tuj konfuzi vin mem kaj esti kiel tio estas tiu variablo raportante al. Mi havas neniun ideon kio tiu signifas. Do se estas intencis teni partituron, nomas ĝin noti. Se ĝi estas intencis teni iun respondon aŭ rezulti, donu al li nomon tiel. Por masxojn, kiun ni volas eniri en la sekvantan diapozitivoj, sola litero variabloj estas fajna. ROB Bowden: mi, j, kaj k estas nur konvenciojn por por maŝojn ke ĉiu atendas ilin esti nomata i, j, kaj k. Vi povas nomi them-- mi vidas vicon kolumno aŭ vico alvoko foje por du ingita masxojn, tio estas ankaŭ speco de normo. Sed i kaj j estas tute komprenata. Allison: Yeah, i kaj j vi tute bone. Ĉar pro klareco kiel en iu el viaj P aroj, eble sencon havi pli priskriba tion en tie nur spuri ĝin. Sed mi kredas mi, j, kaj k furaĝo La vasta plimulto de ni ĉiuj uzas. ROB Bowden: Kun tiuj konvencioj, do stilo estas grava. Ĝi estas unu el la kvar aksojn sur kiu vi gradita, kaj farigxis tiel facile simple transiru via P metita ĉe la fino kaj certiĝu ke ne estas stila erarojn. Tiel certigi vi tabbing korekte. Certiĝu vian variabloj estas nomita. Forlasi iujn komentojn. Ĝi estas tre facila por akiri tiujn punktojn. Vi ne devas pensi ion por akiri tiujn punktojn. Vi ne devas kompreni ion ajn el. Estas nur farante ĝin aspektas bela. Allison: Fakte, ni havi stilon 50, kiu diros al vi kie vi rompado supren se vi rompado en stilo kaj mi diros al vi precize kion vi bezonas ripari kaj kiel vi bezonos por ripari ĝin. Estas ankaŭ nur bonon mencii ke estas supozita politiko ke se vi estas ĉe oficejo horoj kaj via kodo estas katastrofo, ni povas declinar helpi vi ĝis ĝi aspektas bela. Do komencu marsxi pravas, subteni kohera stilo, vi ankaŭ nur tuj faros viajn vivojn tuta loto facile kiam vi provas iri tra elpurigi. Se vi provas elŝeligi kie vi mankas frizita krampoj kaj ili estas ĉiuj super la loko, vi estas simple fari vian propran vivon pli malfacila. Do estu kohera kun stilo. Mi promesas tion fari vian vivon pli facila. Ĝi faros niaj vivoj facila. Ĉiuj estos multe pli feliĉa. Kaj tio estas kion vi volas. GABRIEL: Via lernojaro estos pli alta. Allison: Jes, kaj via lernojaro. Se via TF Estas kiel vi, inklinas esti favora. Bone, kaj tiam simple La dua punkto tie. Konsekvenca initializations. Do, kiel ni vidis, vi povas deklari kaj pravalorizi tion. Multoblaj variabloj sur la sama linio. Unu afero ni ŝatus vin ne fari estas deklari iuj variabloj kaj ne pravalorizi ilin sur la sama linio kiu vi inicialización aliaj. Do en kazo kiu faris neniel ajn, ni havas la ekzemplon tie kie ni deklarante ints en variabloj de kvaraj dimes kaj moneroj, sed kazernoj kaj moneroj havas komencan valoron. Ni ne inicializado ilin, sed ĝuste en la mezo tie ni jam inicializado dimes al 0. Do ĉu fari kvaraj, dimes, moneroj. Aŭ ĉu kvaraj egalas 0. Dimes egalas 0. Pennies egalas 0, aŭ kio ajn tiuj komencaj valoroj. Granda afero kun stilo, kohera. Kiam en dubo, kohera. Sed sekvi nian stilon gvidas ankaŭ. Malvarmeta. CXiu bona tie? Publiko: Kie estas la stilo gvidas? Allison: La stilo gvidas Estas on-- kio estas la retpaĝaro? GABRIEL: mi kredas ke estas manual.cs50.net/-- Allison: Stilo? GABRIEL: Style. Yep. Allison: Jes. Do demando, kie estas stilo 50. manual.cs50.net/style. Jes? Publiko: Se ni difinas variabloj, estas OK se ni metas kiel [inaudible] kiel int partituro kaj tiam int celon. Do vi dirus ke nun ni alvenis al difini ilin kune? Allison: Do demando, deziro vi havas redunda kodo kiam vi difinas variabloj kiel int partituro kaj la sekvantan linion int ludo? ROB Bowden: Estas definitive kazoj kie redunda kodo estas malbona. Mi ne konsideras ke superfluaj kodon. Mi preskaŭ neniam deklaras multnombraj variabloj sur la sama linio eterne. Kaj se io, tio estas ĉar kutime mi lasu ian komentoj klarigante kion la variablo estas por. Do mi diros int partituro oblikvo oblikvo. Sekvadon sendistinge. Entute oblikvo oblikvo. Do estas multe Großer tiamaniere meti ilin ĉiujn en la sama linio. Mi simple neniam surmetis ilin sur la sama linio. Allison: Mi sentas ŝatas ĝin estas persona prefero ĉe tiu punkto. Publiko: Ĉu tio anstatauxos por maŝojn kaj aĵoj tro? ROB Bowden: Kiel ene? Kiel int i egalas 0 komo longeco egalas ion? Ke vi ne havas elekton. Kun por maŝojn la inicialización part-- do eble vi nur vidis int i egalas 0 punktokomo i malpli ol ajn punktokomo i plus plus. Ke int i egalas 0, teknike vi povas ankaŭ faru kion ni vidis antaŭ per komo sintakso. int i egalas 0 komo j egalas 3 komo k egalas 5. Vi ne havas elekton dividi ke supren en pluraj linioj, kaj tio estas normo. Vidante ĝin tie estas fajna. Allison: Awesome. Nu, konvena segue en bukloj. Do jes, ĉi tie ni havas iun ekzemploj de cikloj ke vi uloj vidis en Scratch. Kaj kompreneble ĉiuj tiuj povas simple esti amuzita en C. Ili esence permesas ripeti iujn sekcio de kodo ĝis iu kondiĉo plenumas, kion ni eniri dekstra post paroli pri masxojn kun conditionals. Do ni havas tri ĉefajn tipojn. Ĉar, dum, kaj plenumu dum kiu ni ĉiuj trairu nun. Do unue oni estas por bukloj. Do por iu kondiĉo, ekzekuti ĉi tiu bloko de kodo. Ni havas ĉi malvarmeta iom Diagramo tie malsupre. Sed esence vi havas en via cxar tiu unua linio, vi tuj pravalorizi viaj variabloj. Do kiel ni raportis, i estas egala al 0 aŭ i estas egala al 10. Kion ajn vi bezonas tiun variablo esti estas tuj estos inicializado tie, deklaritaj kaj inicializado al iu valoro. Do ni havos iom kondiĉe ke okazas esti kontrolanta nian variablo kontraŭ io. Do, en la kazo de la tipa kazo kie eble vi volas ĉi sekcio de kodo ekzekuti kvin fojojn. Do ni devus int i egalas 0, kaj ni deziras ĝin esti kiam i estas malpli ol 5. Do tiu kondiĉo estas nur tuj kontrolu ke ĉiufoje. Se tiu kondiĉo taksas al vera, ĝi estas tuj kuras la kodo, kiu estas ĝuste kion tio iom diagramo montras. Kaj tial ĝi ekzekutas ŝin. Ĝi ĝisdatigas variablo, kiu estas kion ni vidas en la lasta parto de nia por buklo inicialización tie. Do tion ĝuste teni faranta ĉi ĝis tiu kondiĉo ne renkontiĝis, kaj tiam eliri La maŝo kaj daŭrigi movi antaŭen kun la resto de via programo. CXiu bona tie? Malvarmeta. Do jen ekzemplo, tre simila al iu kiu ĵus raportis. Do ni nur volas presi tiu estas CS50 10 fojojn. Do vi vidas ĉi tie ni havas niaj por, kaj poste ni pravalorizi variablo i esti egala al 0. Nia kondiĉo estas kontrolanta ke ĝi estas malpli ol 10. Tiel taksi al veraj kiam ni unue komenci kaj tiam ĝisdatigu nian variablo ĉiu tempo ke ĝi efektive ekzekutas kaj gravuraĵoj el tiu estas CS50. Kaj finos post 10 fojojn. Malvarmeta. Do dum maŝojn estas ĝis nun. Kaj kiel vi vidas tie, ni nur havas iuj dum ĉi condition-- demandon? Publiko: Kiel mi povas salti fakte simple ne unu numeron, sed du numerojn [inaudible] i plus plus plus? Allison: Do la demando estis kiel vi povas ĝisdatigi vian variablon per pli ol unu samtempe. Do i plus plus volo ĝisdatigo de unu ĉiufoje. Se vi volas ĝisdatigi ĝin du, vi povus fari i pli egalas 2. ROB Bowden: Ĉu vi vidis plus egalas en prelego ankoraŭ? Publiko: [inaudible]. Allison: Estas efektive la samo kiel i egalas i plus 2. Do tuj prenos ĝin kaj ĝisdatigi ĝin de du ĉiufoje. Plus egalas estas ĝuste io ni nomas sintaksa sukero. ROB Bowden: Yeah, tiuj ekzistas por preskaŭ ĉiuj aritmetikaj operatoroj. Do i fojojn egala al devus duobligi la numeron. j dividi egalas 3 estas la sama kiel j egalas j dividita per 3. Allison: Aŭ minus egalas 2 farus dekremento i du ĉiufoje. ROB Bowden: Eĉ mod egalaj. Vi ne vidis bitlarĝa operatoroj, sed caret egalas kaj ampersand egalas, ĉiuj tiuj ekzistas. Allison: Do multajn fojojn, precipe kun via unua paro de P aroj, vi estos probable pliigante per unu, do i plus plus, j plus plus estas ĉio vi iras al tipe esti uzanta. Sed tiu ĝisdatigo kondiĉo estas tute ene via kontrolo. Vi povas ĝisdatigi ĝin per nenial pliigoj aŭ en ajna vojo vi decidas. Eble vi eĉ volas ke ĝi estu hazarda nombro foje. Sed jes, estas multe da tion vi povas fari per tio. Vi ne limigita al i plus plus. ROB Bowden: Nur por ke vi scias ke ekzistas, ĝi ankaŭ ekzistas en alia formo, plus plus i. Do se vi iam serĉado online kaj ili pasas al vidi plus plus i, preskaux signifas la samon. Allison: Cool. Bona? Awesome. Do dum maŝojn. Tre similaj. Vi havas iun kondiĉon. La ĉefa afero rimarki jen anstataŭ devi tri malsamaj partoj starigi, ni havas unu. Ni nur havas iu kondiĉo ke estas esti kontrolita. Kaj en la sama maniero, tiel longe kiel ke kondiĉo taksas al vera, vian kodon tuj kuros. Kaj se ĝi estas malvera, ĝi finos, movado sur la sekva parto de via programo. Do tiu estas speco de like-- kio estas bona ekzemplo de kontrolanta por iu normala stato? GABRIEL: Dum veras. Allison: vi povus fari dum vera. Nu, 1 estas egala al 1. ROB Bowden: Vi povas fari while-- nur anstataŭ uzante por buklo, Vi povas ĉiam Kodo por buklo en kiam buklo, tial mi estas pli granda ol 0 aŭ dum mi malpli ol 10. Allison: Awesome. Kaj tiam ni faros dum maŝojn, kiuj estas granda por uzanto validación, kie Vi volas akiri ion de via uzanto, rigardu, cxu gxi estas valida, kaj tiam daŭrigas de tie. Do unu el la aĵoj scii estas kun faras tempon estas ke tuj faros, kaj tiam re-ekzekuti se tiu kondiĉo estas konita. Do verŝajne la plej bona maniero por fari tion Estas nur por vidi ekzemplon tie. Do kiel mi ĵus menciis, uzanto validación vere useful-- aŭ fari Momentoj estas vere utila kun uzanto validación. Do tio estas nur tuj re-suflori iu uzanto ĝis ili eniros pozitiva nombro, kiu povus esti utila por via P aro ĉi tiu semajno. Do en ĉi tiu kazo, kiam ni komence kuras tiu programo, ĝi tuj presi eniri pozitiva nombro. Ĝi tuj akiri iom enigon el la uzanto, kaj tiam tuj kontrolu ke enigo kontraŭ la kondiĉo ke vi starigis por gxi. Do en ĉi tiu kazo tuj kontrolu. Ĝi tuj diri, nu bone, Estas niaj input negativa, aŭ estas 0 aŭ negativa, kio estus nevalidaj. Tial do tio estus re-prompto. Demando? Publiko: CXu tio estas la sama tiam, kiel dum buklo se vi ĵus kopiis tiu kodo kaj metis gxin [inaudible] dum buklo? Allison: Do demando estis volus tio estos la sama kiel nur momenton buklo se ni simple kopiu la dum buklo supre. Do en ĉi tiu kazo, vian dum loop tuj kontroli la kondiĉo unue. Do en tiu kazo, se ni provis skribi kiel nur momenton buklo, ŝi dirus dum enigo estas malpli ol unu. Sed ni ne havas enigaĵoj por ĝi. Publiko: Se [inaudible] dum buklo inkluzive tiun kodon, sed poste vi coped kodo super la dum buklo ankaŭ. Vi nur havis ĉi kodo [Inaudible] dum buklo. Allison: Estus la sama afero, jes. Tiel vi povus simple write-- anstataŭ havi do-- jes. GABRIEL: Sed tio estas pli eleganta. Allison: Yeah, tio pli eleganta. Vi povas akiri en dezajno kaj whatnot, sed jes, vi povas tute fari tion. Aliajn demandojn? OK, malvarmeta. Do ni multe parolis kondiĉoj kun ĉiuj ĉi tiuj cikloj, kiun ni havas, do ni efektive akiranta en kondiĉoj en Bulea esprimoj. Denove, vi uzos tiujn en C, tiom simple speco de transiro el pli grafika interfaco efektive kodigo. Cool, tiel granda unu, se. Esence nur permesas nin enkonduki iu logiko en nian programon kaj ĉeko sys kondiĉoj. Do en ĉi tiu kazo, OK, estas n pli granda ol 0? Jes estas, do vi povas ekzekuti ĉi. Ĝi simple kontrolanta iun kondiĉe ke vi havas enkadrigeblajn kiun mi kredas ke ni ĉiuj estas komforta kun kontrolanta kondiĉoj. Malvarmeta. Do se alie estas via alia, Vi povas diri OK, se tio estas vera, faru tion unue. Alie mi volas ke vi defaŭltan kaj fari ion alian. Kiel en ĉi tiu kazo, vi ĉu pluki pozitiva nombro aŭ negativa nombro. Vi nur havas du eblecojn. Vi bezonas ekzekuti sendistinge kion via uzanto enigas. Do vi povas diri ankaŭ, estas pli granda ol 0? Malvarmeta. Printi pozitiva nombro. Se ĝi ne estas, presi negativa. CXiu bona? Kaj poste ion rekoni estas ke se la se kondiĉo renkontiĝis, la alia neniam ankaŭ ekzekuti. Nur unu el tiuj volo ekzekuti samtempe. Do ĝi estas komerca ekstere. Vi ne alvenas al havi ambaŭ. Oni devas aŭ la unuan kondiĉon. Oni devas aŭ la se aŭ la alian, ne ambaŭ. Kion do povas fari tion eĉ pli komplika, ĉar vi povas fari se, alie ĝi kaj poste alia. Do en ĉi tiu kazo, ni havas tri kondiĉojn. Kaj cetere, nur unu el ili estas tuj finos esti ekzekutita. Tiel vi povus mirantaj Nu, kio se vi havi iun kiu povas renkonti du el tiuj. Eble ajn vi inputting renkontas ambaŭ kondiĉe cxar se kaj la alia se. Lin sola kiu tuj kuros Allison: Tuj kiam ĝi trovas iun ke ĝi verigas la kondiĉon por ke taksas al vera, tion ĝi tuj kuri kaj nenio alia. Do se vi havis estas ĉi nombro inter 0 kaj 5 por via unua, aŭ estas tiu nombro inter 3 kaj 5 por la alia, se parto, kaj vi indiku ĝustajn number-- Mi diris 0 kaj 5 kaj- 4. Ĝi tuj frapis la unua unu. Ĝi estas dironta OK, ĉi nombro estas inter 0 kaj 5. Ekzekuti kaj eliri. Ĝi neniam trafis tiun duan opcion. Cool? Awesome. OK ni ankaŭ havas ŝaltilon deklaroj se vi volas ricevi eĉ more-- aŭ pardono, ŝaltilo estas proksima. Mi ricevas antaŭ min ĉi tie. Denove, multnombraj se blokoj kie kiel mi ĵus diris Estas tuj kiam vi trovos kondiĉo ke'S renkontis kaj se alie se alie, forlasas. Se vi bezonas kontroli multnombraj aĵoj, vi estas tuj volas uzi tiun ĉar ĝi kontrolos ĉiufoje tie. Do ĉi kuros tra kaj se estas pli granda ol aŭ egala al 90, ĝi tuj presi tiun. Kaj ĝi kuros tra kaj kontrolu ĉiu ununura unu el tiuj. Publiko: Do ​​tiu estus pli kalesxo ol [inaudible]. Ĉu tio estu kiel [inaudible]? Allison: La demando estas cxi estu kalesxo aŭ tio ĉi fari kion vi volas. Vere dependas de kio vi volas de via programo. Publiko: Mi volas diri kiel se vi metos 90 in. Allison: Se vi metas 90-- Publiko: [inaudible]. GABRIEL: vi tuj ricevas du aferoj. Allison: vi tuj ricevas du aferoj. Jes, du. ROB Bowden: Du? Allison: No. ROB Bowden: Kvar. Se vi metos 90, ĝi tuj diros al vi ricevis A, kie vi akiris B, vi havas C: vi akiris D. Publiko: [inaudible]. Allison: Ĝuste. Do mi dependas sur kio vi volas de vi programo. Kelkfoje necesas kontroli multnombraj aĵoj. Vi ricevos multe pli profunden en kio bona dezajno estas kiel vi ekiru. La grava afero rimarkas estas kiu ĉi kontrolos kvar kondiĉoj tie. Dum se tiu estis unu se alie se alie se alie, estus batis tiu unua kazo, estus presi vi ricevis A kaj farenda. ROB Bowden: Eĉ se ni decidis ŝanĝi tion por se kaj pli granda ol aŭ egala al 90, se kaj pli granda ol aŭ egala al 80, kaj malpli ol aŭ egala al 89, se n pli granda ol aŭ egala al 70, kaj n malpli ol aŭ egala al 79 tiel, ke estos ĝentile. Kiu faros kion ni volas, sed ĝi ankoraŭ kontrolas ĉiu unuopa ĝin. Do dum la unua scenaro, se ni eniri 90 kun nur se alie se alie se, kaj ni eniros 90, tiam ĝi tuj korektos. Ĝi kontrolos la unuan unu, presita vi ricevis A skip ĉio, ĉar tio jam trovis unu kiu funkcias. Ĉiuj kazoj estas reciproke ekskluzivaj bazita sur se alie se alie se. Do ĝi devos plenumi la unua se, vere jam estas farita. Ĝi iros ĝis la fino. Dum kiu se ni ŝanĝos tio estos kion mi trovis dirante per malpli ol aŭ egala al 89. Ĝi tuj marku la unua unu. Ĝi devos presi. Ĝi devos kontroli la dua. Oni ne tuj presi. Kontrolu la trian. Ne tuj presi. Kontrolu la kvara. Nun tuj presi. Do en tiu kazo, la alia se versio, ekde tiuj kazoj estas reciproke ekskluzivaj, estas bona uzo se alie se alie se, ĉar kiu tuj havos malpli ĉekojn de la kondiĉoj ol tiu versio. Allison: Awesome. Do alia afero ni povas fari estas ŝaltilo deklaroj. Esence ŝaltilo deklaro prenas en iu variablo, en tiu kazo ĝi estas n, kaj determinas kiu kazo ekzekuti. Do ĉi tiu estas ankaŭ unu kie viaj kazoj devus esti speco de reciproke ekskluzivaj. Do en tiu kazo, se ni ni preni unu, ĝi estas tuj kongruas ajn ke variable-- ajn la valoro de n estas unu el tiuj kazoj, do 1, 2, aŭ 3 kaj presi la responda linio. Kaj tiam, se vi rimarkos tie, Ni ankaŭ havas defaŭlte, kiun vi povas pensi pri kiel via alia. Do se vi elektu alia nombro krom 1, 2, kaj 3 en tiu kazo Estas nur tuj presi nevalida. Decidi kiam uzi oj kontre se elses kontre ŝaltiloj tuj esti io ke vi uloj volas vidu desegni saĝa kiel vi komencas skribi pli komplikaj programoj, kaj ne estas malmolaj kaj rapidaj reguloj de kiam uzi ilin. Vere dependas de via kuntekston. ROB Bowden: Kaj ĝuste ĵeti ĝin tie ĉar ĝi estas pli komforta sekcio. Ŝaltiloj, ili inklinas be-- tiel vi limigita en la nombro de manieroj povas uzi ilin, ĉar oj, la kondiĉo povas esti bela multa ajn vi volas. Kun ŝaltiloj kazoj esti nombroj, aŭ teknike povas esti signojn, sed signojn, kiel ni vidos, estas nur ciferoj. Do ili devas esti nombroj, sed ŝaltiloj estas vere pli efika ol se alie se alie se, ĉar eĉ prenante la ekzemplo before-- bone, la grado ekzemplo ŝajnas bona. Nu diru tie, ni anstataŭ fari tion kiel se alie se alie se scenaro. Do se n egalas egalas 1, presi vi plukis malaltan nombron. Se alie se n egalas egalas 2 vi plukis meza nombro. Else se egaluloj egalas 3, altaj. Else nevalida. Do diru ke nia scenejo. Tiel diru ni eniru 4, do ni atendas nevalida. La maniero ke se alie se alie se alproksimiĝo tuj laboros estas kontrolas la unua kondiĉo. Ĝi ne estas kontentigita. Do ni marku la dua kondiĉo. Ĝi ne estas kontentigita. Kontrolu la tria kondiĉo. Ne satigxas. Do ni iru al la alia kaj presi nevalida. La maniero la ŝaltilo verkoj Estas kompilas malsupren en kio ni iras nomi salto tablo. La ĉefa ideo estaĵo Kiam vi eniros 4 ĝi povas tuj iri al la defaŭlta. Ĝi ne bezonas kontroli cxu mi kazo 1? Nope tio ne. Case 2? Nope. Case 3? Nope. Implicite. OK, tiu devas esti kie mi volas, kaj poste ekzekuti tio. Ne, ĝi tuj saltas al la defaŭlta. Aux eble mi eniru 2, estas tuj iros al la 2 sen neceso por iri tra kazo 1. Do en tiu maniero, realisme nuntempe tio ne ke multe de eficiencia gajno. Kutime komputiloj estas bela rapida, kaj tio ne estas tiu granda. Sed ĝi estas la kazo, ke ŝaltiloj estas rapida. Se vi vere provas optimizar uzu ŝaltilon. Allison: Cool. Kaj tiam ni havas triargumenta operatoro. Do mi scias ke mi menciis antaŭe vorto sintaksa sukero. Do estas nur aĵoj kiuj faras via kodo multe pli konciza. Do ĉi tiu estas unu el tiuj kazoj. Do triargumenta operatoro estas demandosigno dupunkto kiel ni vidas en la linio kordo s egalas n pli granda ol 100 demandosigno alta dupunkto malalta. Do esence kiel tio funkcias estas ĝi estas la n pli granda ol 100 estas kondiĉo. Do mi kredas ke ĝi povas doni senson. Estas kiel peti demandon. Ĝi estas jene ho, estas n pli granda ol 100. Kiu scias? Kaj se ĝi taksas al vera, ĝi tuj donu vin La unua aĵo kiu estas listigitaj tie, kiu estas tre alta. Alie gxi tuj donos al vi la malalta. Do tio estas nur vere simpla kaj efika maniero fari kiel se alie. Tio estas ĉio ĉi estas. Kaj se ni skribas ĉi kiel se alie condicional, estus se n estas granda ol 100, revenu altaj. Alie, revenu malalta. Tiu estas nur multe pli konciza formo de skribi ŝin. ROB Bowden: Do tiu aparta ekzemplo Estas kiam vi faras ion kiel tio ĉi estas la mastro kie mi uzas triargumenta tre ofte. Do ni ne parolis pri atingo ankoraŭ, sed mi malamas vidante kordoj s punktokomo. Se n estas pli granda ol 100, s egalas altaj. Alie, s egalas malalta. Por ke mastro, tiuj kvin linioj de kodo laŭvorte 100% de la tempo povas esti kopiitaj en kio iris tien kun triargumenta. Do la triargumenta, unu linio de kodo. La se alie, kvin. Tio estas ekzemplo mi atentigi ĉiun solan fojon. Ĉi tiu estus bonega loko por triargumenta operatoro. Ĝi estas tiel pura. Sed homoj inklinas neniam uzas ĝin. Allison: forportu Gabe. GABRIEL: Do nun vi uloj ĉiuj lernis en prelego cxi tiu semajno ke ĉiu en komputilo estas binara, dekstra? Ĝuste kiel la lampoj tie. Vi povas esti ĉu turnis kaj ekstere. Kaj por ĉiu, mi volas diri laŭvorte ĉio. Kelkaj nombroj kaj signojn, kaj kordoj, kaj eĉ la kodo kiun vi skribas kiam Ĝi alvenas kompilita por maŝino kodo kaj da tio, do cxiuj bolas malsupren al 0-aj kaj 1 '. Kaj tiel, kiam ni pritraktas kun entjeroj, kio Estas iu kiu estas teknike tre simpla, ni devas povi fari aferojn kiel aldoni ilin, kio estas probable unu el la plej simplaj aferoj Vi povas fari du entjeroj, ĉu ne? Do adicio kaj subtraho funkcias ĝuste kiel ĝi funkcias en decimala notacio, krom tie estas binara, dekstra? Do estas en bazo du. Do aldoni 1 plus 1. Tio donas al 0 kaj 1 portas super. Kaj ĝuste teni fari tion, do venas la pli interesa demando. Ni scias kiel reprezenti ĉiujn pozitivaj entjeroj en la komputilon, sed ni faros ĉi ekzercon. Pretend vi uloj estas ĉiuj en 1960 aŭ ion klopodas krei komputilon, kaj vi devos veni supren de maniero stoki minus 1 ekzemple, aŭ minus ajnan entjero por tiu afero. Kiel vi faru tion? Ajna ideoj? Nur ĵetu ion al mi. Jes? Publiko: [inaudible] designar speciala se via [inaudible]. GABRIEL: Vi povas designar speciala bitoj, kiu estos 0 aŭ 1. Diru oni se ĝi estas pozitiva kaj 0 se ĝi estas negativa. Kaj tiam la resto de la bitoj Estas nur por stoki la nombro. Malvarmeta. Do tio estas tre bona ideo. Ni havas, mi ne scias, 200. Kaj se la unua bito estas ŝaltita, tiam estas pli 200. Se ĝi estas malŝaltita, estas minus 200. Malvarmeta. Ekzistas nur unu malgranda problemo kun ĉi tio, kio se ni provos resumi tion supre. Do imagu ni havas 11111 tie, kaj ni sumante tiun kun 00100 ajn. Se tiuj du estas pozitiva, tio estas bone. Sed tiam, se unu el ili estas negativaj, kiel Diru ke ĉi iom tie Estas kiu estas respondeca for-- Mi iras fari separate-- tial ĉi tiu signifas ke tiu numero ĉi tie estas pozitiva. Ĉi tiu signifas ke ĉi numeron tie estas negativa, dekstra? Sed tiam kiam vi estas tuj elprenu ilin, vi bezonas se komunikaĵo dirante ho se estas 0, tiam mia sumo estos io malsama, ĉu ne? Do tie estas iomete pli ruza maniero fari tio, kion oni nomas du komplemento. Do esence kion ni fari estas ni difini minus 1 esti la afero, ke se ni aldonas ĝis 1 donas ni 0. Lasu min ripeti tion. Do diru ke ĉi tie estas 1. Kio estas tio, ke nature en pozitivaj entjeroj adiciita ke donas al ni 0? Kio se ni provos aldoni al tiu nombro? Ni tuj have-- OK, do ni aldonos. Ni tuj havos 1 plus 1 estas 0, kaj tiam portas super. Kaj poste ni tuj akiri 0 denove. Mi ricevas konfuzita. Kaj vi tuj akiri 0 kaj 0 kaj 0 kaj 0 kaj 0 kaj 0. Multa 0 aj jaroj. Ĉe la lasta, ni ne tuj povos porti ĝin super, ĉar diru ni nur kontraktanta per unu bajto, tiel nur 8 bitoj. Do kio estas la komputilo faras defaŭlte Estas simple forgesas pri tio [inaudible] OK? Do jen kion oni nomas la du komplemento. Ni simple difini minus 1 esti la afero tie, ke se vi aldonas ke al 1 donus vin 0. Kaj tio estas sufiĉe malvarmeta ĉar ni ne vere bezonas malfrue implementar malsama tipo de sum dependanta sur ĉu tio estas negativa aŭ pozitiva nombro. Ĉu tio havas sencon? Do unu afero kiun ni faras tie por konverti inter pozitiva kaj negativa entjero estas tiam ni klaki ĉio, kaj tiam ni aldonas 1 al tiu nombro. Se vi provos fari ĝin vi mem sur peco de papero, vi tuj vidos, ke havas sencon. Sed se mi prenas ĉi nombro tie ĉi estas kvin. Do se mi klaki ĉio tie, do 1, 1, 1, 1, 1. Flip, klaki, klaki. Kaj tiam Mi aldonos 1 al ĝi. Mi tuj havos ekzakte minus 5. OK? Tiu speco de sencoplena ĉar se provas resumi tion kun la nombro ke ni havis antaŭe, kiu was-- ni klaki ĉi denove. Estis 101 kaj multan 0 aj jaroj. Se vi provas aldoni tiujn du numerojn kune, vi tuj havos ekzakte 0. OK. Demandojn? Publiko: [inaudible] GABRIEL: Kion vi celas diri? Publiko: Negativa al pozitiva [inaudible]. GABRIEL: Ne, vi klaki kaj vi aldonas 1 ĉiam. Yeah. OK, do karakteroj ankaŭ koditaj binaraj. Ni havas ASCII tablo, kiel vi ankaŭ vidis en prelego, dekstra? Do ĝi estas esence surĵeto de aĵoj. Kaj tie mi povas ne elstaras sufiĉe ke por komputilo, kaj 65 Estas laŭvorte la sama afero. Do se mi skribos ion kiel char c egalas al, mi povis samtempe simple skribi 65 ĉi tie kaj ĝi estus ekzakte la sama, OK? Ne estas diferenco ajn. Ni kutime emas meti karakteroj en variabloj de tipo. Char, ne ĉar ili estas esence faris por tio, sed ĉar de homa konvencio. Sed vi povas simple trakti entjeroj anstataŭ variabloj de tipo char, kaj vi estos pura. La sola reala diferenco inter char c kaj int i estas ke int havas kvar bajtoj en plej sistemoj, dum char havas unu bajto. Ili estas esence la samon en terminoj de datumoj. Do kio presos tie? Tie ni presi cifera uzante printf kun plus 1, kaj simple kiel entjeroj, signojn povas resumi, do karakteroj povas esti sumita. Do tio estas ekzakte 65. Do tuj estos 66 kaj tie ni havas 65 plus iom minus granda A kiu estos, mi ne vere scias. Sed estos precize la breĉo inter la majuskloj kaj la malgrandaj literoj, do Ni tuj akiri malgrandan, dekstra? Yeah. Do tiu tuj presi karaktero kiu estas ĝuste ĉi tiu. Bona? Demandojn? Ĉi tie ni havas multajn malsamajn tipoj por nombra variabloj. Ni jam parolis pri int. Float estas simple maniero to-- tio vere amuzaj, ĉar kiam mi unue lernis plani reen en la tago kun Python, la unua programo kiun mi iam provis skribi, mi vidis, ke ne estis tipo nomita en kaj tipo nomita kaleŝego. Kaj la kaleŝego estis por ĉiuj reelaj nombroj. Tial mi demandis kial Mi iam uzos int do? Ĉar se mi povas uzi ĉiujn reelaj nombroj kun kaleŝego, Mi simple ĉesi uzi ints, dekstra? Ĉar reelaj nombroj estas multe kiel pli ĝenerala. Ĝi rezultas ke tiu estas ne estas la kazo en komputiloj ĉar ili estas esence malsamaj aferoj. Do entjeroj kaj flosoj, La operacioj kiujn vi faros al ili estas esence malsama ĉar de la vojo, kiun ili stokas, OK? Ni tuj parolos iom iom pli pri tio en dua. Do duoblan estas nur granda kaleŝego. Kutime en plej multaj sistemoj, kaleŝego Estas kvar bajtoj, ĝuste kiel int. Kaj duobla ok bajtoj. Longa tempo estas fakte nur simbolo ke vi postglui al tipo kiel int. Vi diras long long int kiel ĉi. Long long int x fari gxin plu. Tiel en la plej multaj sistemoj, kiu donos ok bajtoj anstataux la kutimaj kvar. Kaj vi povas reale haltigu en, do ĝi povas simple diri longa longa, kaj kiu laboras tro, OK? Vi povas ankaŭ fari aliajn aferojn kiel unsigned int, aŭ denove nur sensigna ankaŭ funkcii. Kaj kiu farus x esti variablo kiel ĉiu estas pozitiva, do vi povas ne vere havas negativan nombroj en la vojo, kiun ni vidis ĝis tie. Do jena mirindan glitpunktaj kaj precizeco. Tio estas unu el la kialoj kial vi deziras uzi ints anstataŭ kaleŝegoj, ĉar ints estas 100% ĝusta, dekstra? Estas ĝuste tio nombro. Por flosante punktoj, se vi diru respondo estas 1 super 10-- Mi hazarde havas precize tiu programo tie ĉi, float.c. Kiu presas 20 dekumaj lokoj. 1 dividita per 10, kaj ke kutime estas 0.1, dekstra? Sed ĉi tie, se ni faras flosi kaj tiam ni ruli ĝin, Ni vidas, ke ĝi ne estas 0.1. Estas 0,149 ion. Kaj kial do? Ĉar vi ne povas vere reprezentas ĉiun sola ebla reala nombro en memoro ĉar estas nekalkuleblaj multaj el ili. Do ni estas teknike nur povis reprezenti finia kvanto de ili per finia kvanto de datumoj. Sed estas vere interesa. Nun ĉi almozulino la demando de kiel vi volas cxirkauxiru reprezenti tiu kun bitoj, dekstra? Do kiel ili flosas stokitaj? Kun entjeroj estis facile. Sed kun kaleŝegoj vi volas maksimumigi la gamon, kaj vi volas povi reprezenti grandegaj nombroj kaj tre etaj nombroj kiel 0.000001 samtempe. Do denove, sama ludo. Ĉu iu havas ideon kiel ni povus cxirkauxiru reprezenti float en memoro? Nur ĵetu ion. Jes, bonvolu. Publiko: [inaudible] kiel se ĝi estis du ints kaj unu esti la [inaudible] kaj unu estaĵo ĉio post la dekuma punkto. GABRIEL: OK, malvarmeta. Do du malsamaj entjeroj. Vi povas havi 12,45, do tio estas 12 kaj 45. Agrabla. Kio ere vi intencis diri? La sama afero? Yeah? Publiko: [inaudible] skribmaniero kie apartigos la bazo. GABRIEL: Scienca skribmaniero, yeah tio kutime kio okazas. Do jen kion oni nomas la mantiso. Tio kio estas vere la nombro, kaj tiam la eksponento estas ĝuste kie la komo estas, ĉu ne? Do ĉi tiu tuj estos io de la formo 1, 2, 3, 4, 5 fojoj 10 la minus 4. Mi ĵus rimarkis that-- yeah, ekzakte. Kaj tiam tiu 10 al la minus 4 estas tuj difini kie la komo estas, OK? En Brazilo oni uzas komon. Jen vi uloj uzi punkto. Do punkto. Kaj tio estas cool, ĉar tiam vi povas enfokusigi multajn viajn bitoj sur ĉi ulo tie, en la mantiso, kaj tiam tio tuj estos via fakta precizeco. Kaj vi povas tion fari ĉu en dekuma aŭ en la duuma sistemo bazita. Estas malsamaj manieroj de implementar ĉi. Demandojn? Jes? Publiko: Kiom da lokoj post la dekuma [inaudible]? GABRIEL: Tio estas komplika demando, ĉar ĝi estas neniam vere 100% preciza, ĉar kiel vi vidas tie, kelkaj nombroj estas 100% ĝusta. Mi kredas, se ni metas 0.5 tien, ĝi tuj estos 100% preciza. Ĝi tuj estos 0,500000. Do en tiu kazo, ĝi estas perfekta. Sed en aliaj kazoj, ĝi estas multe malpli perfekta. En mia sperto, kiel ĝis kvar, kvin dekumaj lokoj estas sufiĉe preciza. Se vi uzas duobla, ĝi tuj esti vojo pli preciza ol tiu, OK? ROB Bowden: Do simple ĵeti iuj pli kunteksto ĉe kaleŝegoj, Mi neniam memoras 100% kiel la specifon de kaleŝegoj reale funkcias, sed mi vin ĉiam memoros kiuj flosas komencas akiri senorda. Do la ideo estas ke kiam vi ricevas vere, vere grandaj nombroj aŭ vere, vere malgrandaj nombroj, ni komencas plimalboniĝis kaj malbona ĉe diferencante inter du proksimaj flosoj. Do kiel mi ŝatas pensi estas kun flosanta punkto imprecision, estas du ŝoveliloj ke se mi provas entajpi ilin en C, malgraŭ la fakto ke ili estas malsamaj numeroj ili tuj estos interpretita kiel la sama nombro, ĉar ni ne povas stoki ilin malsame. Ni bezonas uzi la saman bitoj. Kaj tiel, kiam ni atingos vere, vere grandajn nombrojn, parolante kiel 10 al la 300 aŭ io, estas en tiu punkto ke 10 al la 300 aŭ 5 fojoj 10 al la 300 ne povas esti diferencita el 7 fojoj 10 al la 300. Do tio estas iom granda diferenco inter la du nombroj. Sed tiam kiam vi akiras malsupren al la normala gamo aferojn, Vi inklinas esti bela bona diferenci. Kaj kiam vi akiras malsupren vere malgranda, vi ankaŭ ricevas sufiĉe malbone denove. Tiel kiel tuta aro da 0,0000, ĝi ricevas sufiĉe malbone. GABRIEL: Yeah, do rapida noto. Neniam faros. Neniam provu kompari flosas uzante egaluloj Egalas, ĉar eĉ se ili estas preskaŭ la sama, preskaŭ la samaj ne estas la sama. Do, kion vi kutime faras estas vi subtrahi ili prenos la absoluta valoro de tio, kaj vidi se tiu malgranda ol 0,0001 aŭ iel simile, OK? Kaj malvarmeta. Mi scias ke multaj personoj havas iuj fono en Java, precipe tiuj kiuj faris AP komputiko, dekstra? Kaj Java estas lingvo ke plejparte bazita sur C, Ĝi havas paron tre grandaj diferencoj. Sed por masxojn, oj, kaj aĵoj kiel ke ili ĉiuj havas la saman sintakson. Mi havas kelkajn programojn tie por montri tion. Tiel ekzemple, simpla saluton mondo. Tio estas saluton mondo en C, kiun vi infanoj estas definitive familiara kun, kaj tiu kaj ĉi tiu estas en Java. Do en Java havas ĉi publika klaso, saluton mondo, kaj publika statika void ĉefa, kaj kordoj args. La kordoj args iras aperi en C tre baldaŭ. Sed ni ne iru tien ankoraŭ. Ĝuste nun ni havas nula tie, kiu signifas ke ĉefa ne prenas neniun argumentoj. Kaj tiam ni havas System.out.println, La kaj tio speco de ekvivalento por printf. Ĉi tie ni ne vere bezonas la backslash n ĉar print ln faras tion por vi. Ĝi appends la backslash n ĉe la fino de la linio. Sed se vi iras en iu kiel por vi povas vidi ke ili estas preskaux la samo. Do inicialización kaj la kondiĉo, kaj la ĝisdatigo is-- mi eraris spaco here-- ili estas preskaux la samo, krom Java havas kiel kelkaj pli alta nivelo ajxoj. Tie ni povas fari pli mi kaj Java aŭtomate fari ĉi i tie, kiu estas entjera, en ŝnuro, kaj poste aldoni la du ŝnuroj kune. Tie en C ni bezonas fari la &% d. La linio tie, la por aspektas ekzakte la sama. Kaj se ni rigardas se, la oj ankaŭ aspektas ekzakte la sama, ĉu ne? Do la vera granda diferencoj estas en tiuj aĵoj kiujn vi vidas ĉi tie. Publika senmova, dezerta, kaj tiam publikan klaso se. Do Java havas kio estas nomita virtuala maŝino. Kaj estas tre peze bazita sur kio nomas objektema programado, kiu estas tre, tre komuna paradigmo por programado nuntempe. Kaj tiu klaso estas kio vi vidas, ion de objekto orientiĝo, Estas vi kreas klason kaj tiam vi povas derivi celoj de tiu klaso. Ni ne iras paroli tro multe pri tio en CS50, sed tio estas definitive io vere malvarmeta, speciale se vi volas iri en pli kompleksa retejo disvolviĝo ĉe la fino de la kurso, kiel submetiĝi via fina projekto kaj iuj belaj kadroj kaj vazojn. Do esence la ideo estas ke vi ne volas re-apliki ion, tiel oni kreas iun kiu estas tre genérica, kiel la formo, kaj tiam vi kreas diversaj formoj de gxi, kaj poste unuj el tiujn formojn, oni kreas iuj pli specifaj formoj en tri dimensiojn aŭ io simila. Kaj ili havas ĉi hierarkio ili heredi de la aliaj, do ĉiuj funkcioj kaj ĉiuj variabloj kiuj la grandan formon tie havas, ĉiuj tiuj tuj havos, kaj ĉiuj el tiuj estas tuj havos, kaj tiel plu kaj tiel plu. Do tio estas la baza ideo. C ne havas tiun, sed C ++ ne havas tian funkcion. Kaj Java estas forte influitaj per objekto orientiĝo, tial estas kial vi vidas klaso tie la tutan tempon. Kaj la alia afero estas ĉi Ĝava virtuala maŝino. Do, mi pensas, estas tre inteligenta ideo. Do kio estas la ulojn kiuj elpensis java faris estas ili ne volis kompili sian kodon dufoje se ili devis kuri ĝin en Windows, aŭ Mac aŭ Linukso, do kion fari Estas ili laŭvorte kuri io kiel la aparato, sed vi ne vere vidas okazas. Ili kuras virtuala maŝino ene de la komputilo, kiu estas esence kiel mini mastruma sistemo. Kaj tiu mastruma sistema celo en la vivo Estas simple kuri kio nomiĝas bajto kodon. Do anstataŭ en C, la vojo ni havus kompili ĉi estas fari se, kaj poste ekzekuti ./if. Mi forgesis la backslash en. En Java, oni farus unue Java C kompili ĝin, if.c. Ne estas C. La skalara java. Kaj tiam vi devos ne kuras ./. Vi ricevas tiun novan dosieron if.class, sed vi ne povas vere kuri if.class nun nur kiel ni faris antaŭe. Tiu ne estas plenumebla. Vi devas kuri. Vi devas nutri ĝin programo nomita Java, kaj tiu programo estas la virtuala maŝino, kaj tiam vi faras if.class, aŭ se. Jes. Kaj tiam ĝi funkcias. OK tia ĉi estas afabla de la virtuala maŝino okazas. C ne havas tiun, do se mi metis tiun programon en Vindoza komputilo, ĝi ne funkcius en C. En Javo faras. Demandojn? Malvarmeta. Tio se por súper sekcio por hodiaŭ.