ROB BOWDEN: Dit is die meer gemaklik artikel, maar dit beteken nie dat as jy voel soos jy nie meer gemaklik jy sal nie hier leer om dinge. So laat ons begin. Het jy skyfies gaan regs in dinge. Ek is op die punt om net neem dit nou? Skakel skootrekenaars.
ALLISON: Jy wil nie stel jouself, Rob?
ROB BOWDEN: O, ek is Rob. Dit is my vyfde jaar TF-ing CS50.
GABRIEL: Ek is Gabriël. Ek is hoof TF van CS50. Ek was TF verlede jaar en vanjaar. ALLISON: En ek is Alison, en dit is my tweede jaar TF-ing CS50.
ROB BOWDEN: Alle reg, sodat hierdie ding aan die linkerkant, Hopelik sal jy nog nooit gesien nie. Indien nie, want jy laai dit vir jouself, jy moet gesien het dit in lesing. So dit is die CS50 toestel, en hy het 'n bietjie van 'n beskrywing van dit in lesing. Maar basies is dit net jy loop 'n bedryfstelsel stelsel in jou bedryfstelsel stelsel, sodat ons kan gee programme sonder bekommerd te wees, o is dit gaan werk op beide Windows en Mac, of indien sommige van julle is reeds met behulp van Linux, Linux. Dit is net veronderstel om te 'n gemeenskaplike speel veld sodat almal die presies dieselfde omgewing.
So as jy nie het nie reeds afgelaai het, jy moet dit laai, omdat jy gaan dit nodig vir die probleem stel. En dit is 'n twee GB laai, so dit 'n rukkie kan neem. Op die Harvard sal dit vinnig gaan. So CS50 toestel.
En in die begin, gaan ons praat oor net 'n klomp van die opdrag lyn dinge, en so deur daardie, ek beteken werk in hierdie klein omgewing hier. En kennis van al die dinge Ek sê hier nou gaan om te werk as jy die binnekant van 'n terminale binnekant van die toestel, of as jy binne die gedit terminale venster binnekant van die toestel. So daardie omgewings is identies.
Maar ek gaan 'n derde roete om te gaan. En let down hier bietjie IP-adres hier. So jy hoef nie te doen dit, maar dit IP address-- nou as I-- behalwe dit is geblokkeer deur hierdie ding. OK, sodat IP adres oor in 'n terminale here-- so hierdie terminaal oor hier is 'n terminale in my Mac. So is dit in geen manier wat tans wat verband hou met die toestel nie. En as jy op Windows, dan is jy gaan iets nodig het om af te laai spesifiek vir hierdie, in die besonder mense is geneig om te gebruik Putty, P-U-T-T-Y.
So wat ek gaan doen is om tipe SSH en dan IP adres. Wel, jharvard op daardie IP-adres. So 192.168.24.220. Hierdie scary boodskap ignoreer. Tik net ja. Dit is CS50 in 'n boks. Dit vra vir jou wagwoord.
En so 'n groot deel van hierdie konteks waar dit vra vir die wagwoord, [onhoorbaar]. Ons het 'n baie vrae waar dit sê dit is nie eintlik tik. Dit maak nie jou wys die karakters van die wagwoord as jy tik, indien enigiets, vir 'n sekuriteit funksie, want as iemand wat oor jou skouer en hulle sien star star, dan sal hulle weet dat jou wagwoord is vier karakters. Dus is die idee is dit sal vra vir jou wagwoord tipe. Dit gaan nie om te wys jy die karakters, maar dit is eintlik die aanvaarding van hulle. In hierdie geval, enige tyd wat jy ooit sien 'n wagwoord gevra die hantering van die toestel, die wagwoord gaan bloedrooi te wees. So bloedrooi.
En nou hier binnekant van hierdie venster wat in my Mac, Ek is basies met presies dieselfde siening as binne-in 'n terminale in die toestel. So jy hoef nie om dit te doen. Jy kan alles doen wat jy wil binnekant van die toestel. Ek het amper nooit werklik doen enigiets in die toestel. Ek het amper altyd beperk wat nou Ek werk SSH in die toestel.
As daar iets is, as jy 'n stadiger rekenaar, jy kan 'n verskil. Ek doen dit omdat ek verkies hierdie terminale venster. Dit het 'n paar funksies soos Ek kan die venster verdeel, en nou kan ek ssh in deur die toestel. Ek het twee SSH gaan op 'n keer. As jou rekenaar is veral stadig en jy werk in die toestel, en jy besef dit is regtig laggy, wat ook al. Geneig is om te wees baie vinniger as jy SSH-Ed in. Maar anders kan jy óf weg te werk.
Publiek: Wat beteken SSH beteken?
ROB BOWDEN: Veilige skulpe, iets soos dit? Wat beteken SSH beteken? GABRIEL: Veilige dop. ALLISON: Dis net veilige dop. ROB BOWDEN: Veilige dop. Dit is 'n protokol wat you-- dit 'n veilige protokol, so geïnkripteer. Mense kan nie snoop die netwerk en sien wat jy aan enigiets sê nie jy SSH-ed te. En in werklikheid, in die ou dae van CS50, so in 2009 toe ek 'n groentjie, die manier waarop jy gewerk het op CS50 probleem stelle, was jy SSH-ed sommige bediener dat ons het toegang tot, en jy het op daar. So jy het nie hierdie grafiese toestel. Jy het nie gedit. Jy het nie al hierdie dinge het wat jy kan visueel punt en klik. Jy het om te werk in hierdie koppelvlak. Ek verkies om te werk in hierdie koppelvlak. So deel van wat ons gaan word gaan oor nou is 'n klomp van die beveel dat jy moet begin vertroud is met as te kry jy gaan saam in die kursus. En eerlik, wanneer jy gewoond raak aan hulle, dit is soveel vinniger te werk in hierdie omgewing as wat dit is om te werk met Well, sleep en te klik dinge.
So hier is ons. Nou het ek net SSH-Ed in, en so die verstek location-- jy het 'n paar van hierdie opdragte in die klas, maar ons sal gaan oor almal van hulle weer. Die standaard plek is ons in die huis gids. En gids, net 'n ander woord vir die gids. So is ons in die huis gids. Tik LS, lys die lêers in hierdie gids. Klaarblyklik het ek 'n blah.c geskep vroeër. So het ons 'n lessenaar gids. Jy sien die accentuering? Die ligblou beklemtoon dui 'n gids en die reguit wit dui net 'n plain lêer. So is daar gaan wees 'n ander kleur wat jy sien. 'N uitvoerbare lêer is waarskynlik gaan groen of iets soos dit. OK, so ons is in die huis gids.
Nou as ek wil om te gaan in 'n ander gids, CD is die opdrag wat Ek wil hê. So verander gids, en dan moet jy slaag die naam van die gids wat jy wil gaan in. So hier het ons vier opsies. Ek kan gaan in afgelaai, en nou sien ons hier is dit hierdie hakies opgedateer om te sê ek is in ~ / afgelaai.
So, wat is tilde? Dit is 'n snelskrif vir jou huis gids. So byna alles wat jy doen gaan wees met betrekking tot jou huis gids, en PWD is net 'n opdrag Ek gebruik een keer in 'n jaar wat net druk die huidige gids. En sodat jy hier dat sien ~ / Downloads regtig besluit na / huis / jharvard / afgelaai. So / home / jharvard is my huis gids.
Sodat ons kan CD dot dot. Nou dot dot is 'n spesiale gids wat verwys altyd na die een gids tot. So as ek in ~ / downloads, dan cd dot dot gaan my te bring tilde. Wat dink ons ​​cd dot dot gaan my te bring nou? Dit sal my bring na / huis. So tilde deur druk werk gids, Ek is nou in / home / jharvard. een gids uit dat, nou is dit hier sê / huis.
Nou cd dot dot. Nou is ek in die hoofdmap, en jy kan dit nie weer doen. Jy sal net bly in die hoofdmap vir ewig. Die wortel gids het 'n hele klomp van die dinge wat, as jy wil om te kyk na, wat jy kan. Byvoorbeeld, as ek gaan in bin, wat bevat al hierdie binaries, soos LS, en CD, en al daardie dinge. So hierdie opdragte moet in die stelsel bestaan ​​iewers, en dit is in die / bin gids. Maar byna alles wat jy doen, is gaan wees van jou huis gids. En cd sonder enige argumente ookal, jy kan sê CD ~, nie nodig het om te. cd gaan om jou te bring terug na jou huis gids.
Een laaste een. CD - gaan jy terug te bring na die laaste gids wat jy in. So het ek net twee keer cd'd in 'n ry, so my laaste gids was die huis gids. As ek gaan bin te sny, en nou laat ons gaan en in die gebruiker. Gebruiker aandeel. Kom ons gaan na die gebruiker aandeel. Nou is ek nou in die gebruiker aandeel. CD -, terug in bin. So dit kry veral nuttig wanneer jy have-- en dit sal wissel. So gebruiker aandeel terug bin, deel bin.
So dit kry nuttig. Jy mag vind dat jy baie, baie, baie sub dopgehou. En jy wil om iets te doen ware vinnig in 'n boonste gids. Jy gaan na die gids, maak veranderinge en dinge soos wat, en nou wil jy om te gaan terug na waar jy was. CD -. Ek is altyd gefrustreerd toe ek gebeur om te gaan na die directory ek wou werk in te doen. Ek kry altyd gefrustreerd toe ek dit gedoen dit in twee stappe plaas van een stap, want dit beteken dat CD - gaan te bring in daardie intermediêre plek in plaas van waar ek wil gaan.
So sien ons almal die lys lêers. Ons weet hoe om te kry om so ver. So nou kom ons praat oor die wysiging van lêers. So in hierdie kursus, jy is amper altyd verwag gedit te gebruik. As jy wil, kan jy die volgende stap neem en begin leer om 'n command line teks editor. So verskeie opsies bestaan.
En die kinders wat waarskynlik gaan betrokke te wees, ons het Nano, Vim, en Emacs. So Nano is die beginners command line teks editor. So Nano laat gaan blah.c ek gemaak het vroeër. Dis net die standaard C-lêer. En jy sien 'n hele klomp van die dinge gaan op die onderkant van die skerm, en blykbaar blah.c bevat hierdie C-kode.
So in hierdie spesifieke redakteur, wat dit sê op die bottom-- nou hierdie kappie simbool, ons sien dit ^ G ^ X ^ O. Sodat in feitlik alle konteks wat jy sien, jy kan sien dat kappie simbool in ander plekke aanlyn, op stapel oorloop, iets soos dit. Dit verwys byna altyd te beheer. So om af te sluit wat ek wil doen Beheer X Control X, verlaat. En ek kan my pyl gebruik sleutels om rond te beweeg. Let Ek kan nie punt en klik geredelik. Jy moet gebruik om jou pyl sleutels om rond te beweeg. Daar is dalk 'n instelling wees te wys en klik.
Maar laat ons maak 'n paar veranderinge. Nou Control X te gaan uitgang. Dit gaan red veranderde buffer te sê. Nou is die vinnige, y vir ja, N vir. Beheer C vir kanselleer. Ek sal net sê ja. Lêer naam te skryf. Die standaard is die lêer wat dit reeds is. Druk Enter. OK. Nou het ek net geredigeer lêer, gered, en dit is verander.
So Nano is die maklikste teks editor gewoond te raak. Die alternatiewe is Vim en Emacs. Dit is 'n hoër vlak teks editors wat 'n baie steil leerkurwe. So my persoonlike voorkeur is Vim. En dit het 'n wye verskeidenheid van opsies. En as jy gewoond raak om dit te, sal jy nooit wil om te gaan na 'n ander teks editor, omdat jy net het so baie dinge beskikbaar vir jou in hierdie, maar dit neem 'n baie lang tyd om te leer. So miskien het jy wil net te dwing jouself nou te kry om dit te gebruik, maar ek sou sê dit is die moeite werd. Maar dit is moeilik.
En dan Emacs. Ek het altyd sukkel om in Emacs omdat Ek weet hoe absoluut niks te doen nie. Blykbaar Emacs is nie by verstek geïnstalleer op die toestel. Ons sal waarskynlik byvoeg dat as 'n standaard installasie. Sodra jy leer een van Vim of Emacs, is daar geen dwingende rede om te ooit leer om die ander, maar dit is 'n heeltemal ander styl. OK so dit is die wysiging van teks lêers.
Publiek: As jy vas in Vim nou, hoe we--
ROB BOWDEN: Daar is verskeie maniere in Vim, en daar is die hele tutoriale op die leer Vim. So as jy gebeur om te wees in insetsel af in orde om te tik die teks, wat jy kan ingaan wat op verskeie maniere, maar ek is hoe jy in insetsel af. In of uit enige spesiale af wat jy is nie, net ontsnap. En jy moet net bash Escape te kry uit enige geneste modes jou in. Net OK, nou is ek terug in die normale modus.
En so in normale modus, 'n kolon. Jy sien dit aan die onderkant. En dan q. So Q sal ophou as jy veranderinge gemaak het, wat I-- Ek maak veranderinge? Ek het veranderinge blykbaar gemaak. So as jy veranderinge gemaak het, sal dit sê jy kan 'n uitroepteken sit. Ek gaan om dit te noem 'n knal. So kan jy 'n verbod te plaas net afsluit sonder om iets te doen, of kolon WQ sal red en stop. So w in die algemeen is skryf. So skryf die lêer. Ek kan skryf en op te hou. Of jy kan net qx Slam, Q bang net uit te kry daar, ongeag van enige veranderinge wat jy gemaak het.
Alle reg, so laat ons nou go-- ons kan skep lêers. Kom ons begin die verwydering van lêers. En ek sal net gooi in een vinnige nuwe opdrag, touch. So raak cat. Touch bar. Raak Baz. As ek LS, nou sien ons dat die lêers bestaan ​​nie. Hulle is heeltemal leeg. So touch is net 'n maklike wyse van een, [onhoorbaar]. Twee tegnies net aan die staat dit, dit werk die tyd tempel. So 'n lêer wat jy skep het 'n tyd stempel wat verband hou met dit. So Baz is geskep op September 14 by 16:21. Dit is nou 16:22, so as Ek raak Baz weer ons sien dat Baz was die meeste onlangs gewysig by 16:22. Maar anders het ek byna nooit kyk na die tyd tempel op lêers. So raak, hier is ek net die gebruik van dit 'n paar vinnige lêers te skep.
Alle reg, so nou RM die opdrag dat ons omgee hier. En ons kan RM boo. Sê verwyder gereelde leë lêer boo. En ons kan tik y, en nou is dit Verwyder. rm Baz. Verwyder gereeld leë lêer Baz en tipe N vir. Nou is dit nie verwyder nie. So kroeg en Baz nog bestaan. Cat is weg. GABRIEL: Hou praat. ROB BOWDEN: Groot. So het die irriterende boodskap hier verwyder gereelde empty-- wat doen jy daar? Verwyder gereeld leë lêer. So, as ons nie wil wees gepla deur die boodskap, ons kan gooi in hierdie f vlag, en so dit is van krag. En as ek nou RM-f, dit gaan nie sê wil jy hierdie lêer te verwyder. Dit sal net dit doen. En LS, ek sien nie bar daar nie meer nie.
Nou is dit 'n potensieel gevaarlike opdrag. Dit is geneig om nie te sleg nie. Ons sal terug te kom in 'n tweede hoe dit kan kry regtig gevaarlik. En laat ons 'n paar tydelike gids. mkdir, 'n ander opdrag. So mkdir is 'n opdrag wat 'n gids. En nou deur LS sien ons hierdie mooi lig blou uitgelig tydelike gids. Ek kan CD in temperatuur. En ek kan mkdir cat. CD in cat. mkdir bar. CD in bar.
So ons sien ons kan maklik in 'n paar mooi diep nes. Nou hoe verwyder ek 'n gids? rmdir. So as ek net reguit probeer RM, soos ons gedoen het met 'n gewone lêer, rm bar gaan sê kan nie bar verwyder. Dit is 'n gids. Daar is 'n spesiale opdrag vir verwydering van dopgehou, soort van. So rmdir bar. Nou bar is weg.
OK, so rmdir Ek pretty much nooit gebruik nie. Die rede being-- nou laat maak 'n gewone lêer bar hier. So rmdir boo. rmdir. Misluk cat te verwyder. Gids nie leeg. So kan jy nie gebruik nie verwyder rig op 'n gids wat dinge in dit.
So jy het 'n paar opsies. Jy kan gaan in daardie gids, verwyder alles met die hand, en dan kom en rmdir die gids. Dit klink natuurlik irriterende. Wat as daar duisende lêers in daar? Wel, jy kan RM *. Ons sal praat oor * in 'n tweede. Dit beteken basies al die dinge. Maar nog beter, so k-r. So rm -r-- in 'n baie konteks, r beteken rekursiewe, wat ons sal praat oor wat rekursiewe middel in 'n paar weke. Maar dit beteken basies deurkruis die geheel van hierdie gids en verwyder alles.
So rm-r cat gaan om te sê aftrek in die gids cat? Ja. Verwyder gereeld leë lêer cat / bar? Ja. Verwyder gids cat? Ja. So nou foo en alles binne dit verwyder is.
Nou dat kan kry veral irriterende when-- laat raak 1, 2 raak, raak 3. Kan 'n hele klomp van lêers. As ek wou, kon ek skep duisende lêers in hier. En k-r cat gaan te wees redelik irriterende. Ja, ja, ja, ja, ja, ja. Met 'n baie meer lêers wat jy vinnig sien hoeveel keer Ek sal moet ja tik. Wel, ons het net gesien voor hoe ons kan ontslae te raak van die behoefte om te tik ja, f. So mkdir cat cd cat touch 1 2 3. OK, so rm-rf cat gaan blindelings verwyder cat geheel. Geen vinnige. Geen enigiets. Cat is weg.
So ek is geneig om dit te gebruik beveel al die tyd. Dit gesê, is dit 'n baie gevaarlik opdrag, want as ek iets doen , sal dit nie gevra nie. Dit sal weg wees. En dit gebeur redelik gereeld, en selfs in 'n hoër vlak CS kursusse. Soms sal ons sien iets waar iemand sê ek per ongeluk ons ​​rm rf-ed my huis gids en al my P stel is weg. En dit is vernietigend, maar daar is geen asblik. Daar is geen daar is niks vir jou te haal. Dit is net weg. Nog erger sou wees iets soos rm-rf /. Sodat ons net bespreek dat die wortel gids. Dit hou al van die lêers op jou stelsel. Dinge is geneig om redelik morsig te kry wanneer jy dinge verwyder soos LS, en cd, en almal van hulle.
Publiek: Wat is die verskil tussen RM, rf, en k * ROB BOWDEN: So rm * -
ALLISON: Vraag is wat is die verskil tussen RM, rf, en k *.
ROB BOWDEN: So rm *. Star in die algemeen beteken al die inhoud van hierdie gids. Probeer om te dink aan ander maniere wys ster. Wel, Star eintlik oor die algemeen beteken 'n patroon ooreenstem. So as ek 'n lêer genaamd dog1, raak dog2, raak cat1, raak cat2. So LS * 1 gaan cat1 te druk en dog1, omdat ster gevul kan word in with-- die mens nodig het om daar te wees, maar sterre kan óf kat of hond. Dit is 'n wild card. Dit is die woord wat ek soek. Wild kaart. Of ek kon hond * LS, en Ek het dog1 te sien, dog2. So dit is die lys van die lêers wat ooreenstem met die spesifieke patroon. Jy kan LS gebruik in hierdie manier.
LS * ster wedstryde nie. So dit gaan al te druk die inhoud van hierdie gids aangesien almal van hulle pas. Dit is nie van plan om iets te druk in die boonste vlak dopgehou. As ek 'n sub gids, cat, en raak 1 2 3-- so nou as rm * ster, verwyder cat1, cat2, dog1, dog2. Kan nie cat verwyder. Dit is 'n gids.
So ster brei na al die lêers in die gids. So tegnies rm * is soos om te sê rm cat1, cat2, dog1, dog2, cat. Terwyl rm-rf, tegnies ster sou doen wat ons wil, maar rm -rf-- as ek gaan uit hierdie gids, rm-rf tydelike, wat gaan om te gaan in tydelike en rekursief alles verwyder.
So ster is apart in dat verstaan ​​deur- so hierdie ding dat Ek hardloop in, hierdie ding wat waarna my opdragte en dan die uitvoering en doen hulle, ek noem dit my dop. En so gaan dit dop is self 'n program. En as ek wou, ek kon loop in / bin / bash. Die dop is bash genoem. En nou sien ons iets het effens verander, en dit is omdat my instellings vir die dop is ietwat anders.
Maar nou is ek tegnies hardloop 'n dop in my oorspronklike dop, en ek kan verlaat dat die dop, en nou Ek is terug na my top vlak dop. Die doel van sê dat is-- die sterre. So het die ster is iets verstaan ​​bash. So rm-rf, rf vlag is verstaan ​​word deur net k. Dit weet dat wanneer jy verby 'n rf dat jy dit wil rekursief verwyder alle lêers sonder om te vra. Die ster is iets verstaan deur bash dat wanneer jy sê rm *, bash is nie van plan om te sê hey rm *, verwyder ster. Bash gaan rm te sê * verwyder cat1, cat2, dog1, dog2. Dit is outomaties gaan uit te brei al die lêers in die gids.
En insgelyks tilde is 'n ander simbool wat bash verstaan. Wanneer jy sê cd ~, bash brei wat aan jou huis gids. Ander vrae so ver? OK so ons gaan begin gaan vinnig.
Blad voltooiing. Net om dit uit te gooi daar. Baie mense doen nie besef dit bestaan. So as ek tik cd Dow, het ek wil gaan in afgelaai. Ek het nie nodig nloads tik. Ek kan net getref blad. So dit erken dat Dow is 'n voorvoegsel wat nie ooreenstem met enigiets anders in hierdie gids, so dit sal voltooi wat vir jou. Nou kan ek gaan.
Ek doen ook wat herhaaldelik. So mkdir cat. Kom ons gaan in cat. mkdir bar. So gaan terug na my huis gids, kan ek sien afgelaai. Nou slaan blad weer outomaties gaan in cat te vul. Dit is die enigste gids. Slaan blad weer outomaties gaan in bar te vul. So nou is ek in (~ Downloads / cat / bar).
So hierdie blad voltooiing, wanneer ek het om te kantoorure, en ek staan ​​oor iemand se skouer, en hulle gaan rm D-O-W-N-L-O-A-D-S, ek sterf. Net blad, blad, blad, blad. So beslis gebruik blad. En net so op en af, 'n baie van die mense net wat gebeur het te nooit getref het op en af. Dit gaan deur die vorige bevele, so as jy net gehardloop iets, en jy wil om dit weer te hardloop, net hou totdat jy dit. OK.
So vinnig, n paar ander dinge. Kom ons gaan terug in temperatuur. Kom ons skep 'n paar lêers. So hier, ek is net gaan 'n paar woorde te lys. hond, kat, miaau. Kom ons doen hond, vis. So nou rep is 'n baie nuttige opdragte wat jy gebruik om die hele soek lêers vir 'n bepaalde teks, en tegnies kan jy regtig komplekse uitdrukkings vir dit aan te pas.
So hier, as ek grep, en wat wil ek soek? Kom ons sê ek soek vir katte, en Ek wil al hierdie lêers te soek. So, hoe doen ek al hierdie lêers? Star. So in die lêer een, ek het die kat. Ek kon seker 'n noem dit iets beter, want dit lyk soos lyn nommers of iets. Maar in die lêer een wat ek het 'n lyn met die kat. In lêer twee Ek het 'n lyn met die kat. So nou kan ek kyk binne lêer een en sien O ja, die lêer gedoen het kat. Kennis lêer drie is nie gekoppel want die kat is nie daar. Ek kan grep vir miaau. Dien slegs twee het miaau.
So dit wat jy kan kombineer, weer, met r, wat soos ek gesê het dikwels beteken rekursiewe. En so kan ek hier kom, grep r vir enige instansie of-- laat wysig hierdie een net 'n kat te gooi in daar. So grep r vir enige instansie van kat in hierdie gids. En dit sal rekursief soek enige subdirectories. So in Baz, daar is die kat. In temp / 2, daar is die kat. En in temp / 1 daar is kat. So dit is op soek in lêers.
Nou kan jy ook gebruik maak van 'n vonds. En so vind spesifiek oor soek vir lêers met 'n gegewe naam. So kom ons maak 'n paar meer. Kom ons gaan in afgelaai. Raak dog1. Raak cat2. Raak cat_dog. Raak catcat.
So ek wil almal om te vind lêers met die hond in die naam. So vind, en vir die langste tyd wat ek nooit gedink Hoe kry gewerk het, totdat ek uiteindelik lees iets wat dit so duidelik gemaak. So vind, outomaties rekursiewe. Jy hoef nie 'n r te slaag. So vind dot. Ons het nie gepraat oor dot nog. Terwyl dot dot altyd beteken een gids tot. Dot beteken altyd die huidige gids. So ek kon r dot in die RM dieselfde manier wat ek kan RM rf *. Uiteindelik het hulle bereik dieselfde ding. rm-rf dot gaan verwyder die hele huidige gids.
OK, wat ek wil nie om daar te doen. Maar vind dot. So rekursief soek die huidige gids, en nou is alles Hierna is 'n klomp van die vlae wat jy gebruik om dinge uit die opbrengs te sluit. So vind dot terug alles wat dit kan vind uit die huidige gids. Dit is al die lêers rekursief soek. Ons sal sien 'n paar van diegene wat in 'n tweede.
Maar in die geval jy wonder hoe ek dit doen dat so Command K, op die heel minste in my terminale in die Mac goedkeuring nie. Beheer L algemeen goedkeuring dit vir enige soort terminale. Jy kan ook tik duidelik. En as jy ooit in 'n vreemde scenario-- dit met my gebeur het 'n paar time-- waar die kleure van jou aanwysings is almal deurmekaar, of jy nie in staat is om enigiets te sien getik word wanneer jy tik, want soms soos agtergrond is ingestel dieselfde as die voorgrond kleur en nou kan jy nie sien die skrif. Herstel is iets wat net bring jy jy na die standaard swart agtergrond, wit voor, of wat ook al jy het hulle te.
So waar was ons? Vind dot. So nou is alles verby hierdie punt beperk die resultate na iets wat pas die gegewe patroon. So hier is ek wil soek alles met die naam kat. Ek het niks. Hoekom is dit die geval? Wel, ek is net op soek na iets met presies die naam kat. As ek iets wil soek wat 'n patroon, en cat-- die aanhalings tegnies is nie nodig nie, maar ek gooi dit daar. So nou is dit bevind catcat omdat dit is die enigste ding wat het 'n paar arbitrêre patroon gevolg deur kat. Ek kan die kat * sit, en nou vind catcat, cat_dog, cat2, want dit is al die dinge wat met die kat aan die begin gevolg deur enigiets. Jy kan kombineer. As jy wil om te soek vir al C lêers wat jy het, kan jy dit doen * .c. Ons het hier blah.c. So dit is 'n vonds werke. Jy kan soek. Dit het 'n hele klomp van die vlae vir verdere beperkings. En een op hulle, kom ons sê d. So afgekeur. O ja, dit is nie wat ek wil hê. Nie-d. Tipe d. So vind dot - tipe d. So wat dit net gedoen het, is ek soek vir al die lêers in die huidige gids met a-- d staan ​​vir directory-- gids tipe. Dit gee alle dopgehou in die huidige gids. En die tipe F is al gereeld lêers, alle nie dopgehou. So dit is net 'n voorbeeld van ander maniere waarop jy kan die search ander beperk as net die naam van die lêer.
Dit was 30 minute. Nog aan die gang.
ALLISON: Ek sal briesie deur. Dit sal goed wees.
ROB BOWDEN: So 'n paar ander dinge. Nou bang, uitroepteken. Sodat die algemeen means-- Wel, laat ons sien 'n voorbeeld. So! F, wat is dit gaan doen? Wel, dit blyk te hê herhaal vonds dot type f. Wat oor! G? Dit is net grep r kat *. So bang jy kan gebruik om te herhaal 'n onlangs gedoen opdrag. So as ek tik! Gre, gaan dit weer uit te voer die bevele wat begin met gre mees onlangs.
En jy kan al hierdie te sien instruksies met die geskiedenis. So geskiedenis. Dit is al die instruksies Ek het vandag hardloop. En goed, dit is nie letterlik beperk tot vandag, maar ek het net gebruik om hierdie toestel as van vandag. Dit is jou geheel van die geskiedenis van jou bash dop, behalwe dit sny op 'n sekere punt. Publiek: Wat gebeur as jy doen geskiedenis [onhoorbaar] bevel en 'n fout in die resultaat sal steeds druk the--
ROB BOWDEN: Ja, indien daar 'n fout in een van hierdie commands-- so kom ons sê, dit is 'n fout bevel nie gevind nie. Verskyn steeds in die geskiedenis. Alle regte. Ander vrae oor enigiets? So dit is bang.
Nou, baie handig opdrag, man. So wat gee jou die handleiding vir 'n gegewe opdrag. So kom ons sê man LS, so dit wys vir my LS. Dit lys gids inhoud. En dit is waar ek sien dat daar is hierdie verskillende vlae wat bestaan. So sien ons dat ls-l bestaan as ons dit te lees. ls-l gee my volledige lys van die gids met wat die lêer besit, die grootte van die lêer, die die gewysigde tyd stempel. So LS-'n is 'n ander een wat jy dalk eintlik gebruik ietwat gereeld. -al is my mees algemene vlag die afgelope LS.
So a, sien daar is 'n baie meer lêers as net LS. LS-'n. Wat is in gemeen met al hierdie lêers? Hulle begin met 'n dot. So, dit is 'n konvensie in Linux dat lêers wat begin met 'n dot is versteek. So dit beteken net dat wanneer ons net reguit LS, of ons soek hierdie gids gebruik te maak die Well ekwivalent, of die Windows Explorer ekwivalent, dat ons wil nie hierdie dot lêers te sien. Hulle besoedel net die siening van dinge. Sodat hulle weggesteek tensy jy spesifiek versoek om hulle met iets soos'n. So kan ek cd in local, en ek sien dat dit op sigself 'n gids met 'n gedeelde gids, en programme, en blah blah blah. So dot, lêers hulle is net weggesteek.
OK, so ander belangrike mense. Ek het 'n paar wat ek kan slaan. Laat ons net ware vinnig praat oor die lêer herleiding dinge. So is daar 'n hele komplekse reeks van die dinge wat jy kan doen met hierdie, maar net om hulle te sien, kom ons sê, eggo. Nog 'n opdrag. Regtig stom opdrag. Al wat dit doen is om druk wat ek vertel dit aan. So eggo hallo. Dit is net eggo hallo vir die skerm. Hello world. Eggo hello world.
So 'n opdrag of 'n simbool wat bash verstaan is dit groter as simbool, en dit is die uitset na 'n lêer simbool. So as ek uitset dit te cat, daar is nou 'n lêer genoem cat, binne wat hello world. So sien dat wanneer ek eggo hello world pyp in cat, dit het nie hello world eggo. Dit plaas in die lêer cat sit. En 'n ander opdrag net om dit te gooi op jou kat. Dit is 'n maklike manier om net heeltemal n lys van die inhoud van die lêer sodat ek nie hoef te open 'n teks editor dit te kan sien. So het die inhoud van die cat lêer is hello world. En ek kon kat blah.c, die inhoud van hierdie.
Weereens, hierdie is opdragte wat, dit nie doen nie verwag dat jy hulle almal gememoriseer. Die idee is jy hulle gesien het. Miskien is jy besig om op iets, en jy soos ek is siek en sat van die opening van hierdie lêer. Ek wens ek kon net kyk by die inhoud ware vinnig. Jy kan dit doen, dan terugkyk en sê oh Ek onthou iets soos wat bestaan, en dit is die kat.
So wat gaan na 'n lêer. Nou is daar nie regtig 'n goeie voorbeeld van die lees van 'n lêer nie. Wat is iets wat neem iets van standaard in? Enige eenvoudige Linux opdrag? Wanneer ons kry om dit in 'n paar weke al die piece-- goed, hierdie week het jy 'n stuk waar jy begin om insette van die gebruiker. En so gewoonlik jy tik wat insette by die klawerbord. In plaas van tik dat insette op die klawerbord, jy kan plaas pyp van 'n lêer sodat wanneer jy Mario, ./mario, pyp van enige gegewe lêer en wat gaan die Mario program uit te voer. Nie verwag insette by die klawerbord, plaas dit net gaan die te lees lyne van die cat lêer.
So groter as cat sit dit in die cat lêer, en minder as cat neem dinge van die cat lêer en gebruike wat as insette tot hierdie program. En net om dit te sien, kan ons ook eggo cat bar Baz, en dan in plaas van een groter as, kom ons doen twee in cat. Wat beteken dat jy doen? Dit voeg daar net na die lêer. So in plaas agterkom as ek eggo blah in cat en dan kat cat, dit is net blah. So wanneer jy uitset na 'n lêer is, is dit heeltemal oor skryf die lêer. As jy wil net om by te voeg, dubbel [? padskraper. ?]
En die laaste is pyp. Pyp kry baie meer ingewikkeld, waar dit neem om die uitset van een opdrag en voer dit in die volgende opdrag. So 'n paar algemene ding, geskiedenis. So, ugh, ek wil nie om te kyk na hierdie. Wys my alles opdragte in my geskiedenis waar ek grep-ed vir iets. Nee, dit is verwarrend. Wys my alles opdragte waar ek vind. Alle vind gebooie wat ek ooit gehardloop.
So geskiedenis. Nou geskiedenis uitgange aan die sif hierdie lys van bevele, maar ek wil nie uitset dit na die skerm. In plaas daarvan gaan ek pyp dit in grep. So laat grep vir alle gevalle van vonds. So nou in plaas van die grep neem die insette, in plaas of-- grep is in staat om as input-- ons hanteer gebruik van grep effens anders hier. So in plaas van tik die lys van dinge wat ons wil om te soek na en gesê grep neem as invoer. So as ek nie net grep vind, is dit wag vir my om dinge te tik. So kat hallo vind. Hello. Vind nie. Let elke keer as ek tik vind dit erken dat ek getik vind. So in plaas van hierdie, sal soek lêers vir vonds.
So geskiedenis gaan nou uitset van 'n lys van al die gebooie. Ons plaas dit uitvoer, en ons voed dit grep, en so is dit spoeg alle gevalle van vonds. Die rede waarom ek sê dit sou verwarrend wees is as I-- dit is nog steeds verwarrend. As ek grep vir grep. Let daarop dat dit is pretty much altyd wat die opdrag het ek net gehardloop omdat opdrag self het grep binnekant van dit.
OK, so enige vrae oor enigiets? En ek sal dit oordra oor op hierdie punt. Hopelik is dit 'n lekker oorsig van alle opdragte dat jy nie nodig het om te hê gememoriseer, maar hierdie maak 'n stewige 95% van wat ek doen op die opdrag lyn. Hou ook in gedagte dat die opdrag lyn self, bash is 'n programmeertaal, en so wanneer jy dit af, jy dalk wil regtig komplekse dinge te doen. En so het dit dinge soos loops, en as, en al daardie dat jy gaan om gewoond te raak aan met jou programmeertale. Maar dit is buite die omvang van hierdie artikel. OK, so geen vrae? ALLISON: Geen? GABRIEL: Is jy gaan aan- ALLISON: Ek kan dit doen op my as jy wil. Ons kan sien wat gebeur. ROB BOWDEN: Off te Allison. ALLISON: Woo. Jy is 'n harde besluit om te volg, Rob. Wil jy my te skakel met jou? Of jy het, OK. Ek gaan om te probeer en nie heel wees as lang daar. Kom ons kyk of dit sal werk om die manier wat ek wil om dit te. Miskien? Haha! Ja.
So ek gaan net baie vinnig gaan deur veranderlikes, loops, conditionals, en 'n bietjie op die samesteller. As jy vrae het by enige tyd, stop asseblief my. Hierdie ouens sal my herinner te herhaal jou vraag in geval ek vergeet, maar moet nie te sleg nie.
So veranderlikes, ja. Ons het geen een van jou Kras stukke hier. Ek is seker die meeste van julle, as jy het 'n soort van wild wat jy geskep het met nuuts af, jy het tred te hou van iets soos telling, of tyd, of iets soos dit. So diegene helder oranje stukke wat ons sien daar is net die Scratch vorm van veranderlikes, en jy sal beslis wees die gebruik van veranderlikes in jou programme. As jy nie, ek is nie regtig seker wat jy doen.
Maar in elk geval, 'n groot ding, definieer veranderlikes. Met C elke veranderlike om 'n tipe verklaar, so ek het vir jou 'n baie algemene een aan die bokant. So jy sal jou tik en dan ook al jy besluit om jou veranderlike te bel. So in hierdie geval, tipe in jou veranderlike lys.
Ons het drie voorbeelde. Char van sommige graad, 'n A, en dit is wat Ek is seker dat jy almal wil te kry in hierdie klas. Jy kan verskeie definieer veranderlikes op een lyn so lank as wat hulle is almal dieselfde soort, wat is ons tweede voorbeeld is daar waar jy drie veranderlikes, x, y, en z. Hulle is almal dryf. En dan kan jy ook in hierdie laaste byvoorbeeld met int telling en nommer spanne, kan jy inisialiseer hulle reg daar.
So in die middel voorbeeld waar ons net float van x, y, en z, dit is nie geïnisialiseer nie. Hulle het geen waarde nie. Of hulle vullis waardes. En as jy probeer en hulle gebruik, samesteller sal gil op jou. Jy moet beide verklaar en inisialiseer jou veranderlikes. So in hierdie laaste een, ons doen albei. Ons verklaar veranderlikes van die telling en die aantal spanne, en ons is initializing hulle gee hulle hul aanvanklike waardes van 7 en 4 onderskeidelik. Cool. Almal goeie? Awesome.
OK, so 'n paar konvensies. As jy ouens gelees deur styl 50, is hierdie is net dinge wat ons wil vir om jou te implementeer in jou styl. So betekenisvolle name. As jy begin roep dinge net x, y, en z, veral as jy in die lang programme, is jy waarskynlik gaan om te verwar jouself en wees soos wat hierdie veranderlike verwys. Ek het geen idee wat dit beteken nie.
So as dit bedoel is om vas te hou 'n telling, noem dit die telling. As dit bedoel is sommige antwoord te hou of lei, gee dit 'n naam soos dit. Vir sirkelroetes, wat ons sal kry in die volgende skuif, enkele brief veranderlikes is fyn. ROB BOWDEN: I, J en K net konvensies vir vir sirkelroetes dat almal van hulle verwag om i genoem te word, j en k. Jy kan bel them-- Ek sien ry kolom of ry oproep soms twee sub-loops, en dit is ook soort van standaard. Maar ek en j is heeltemal verstaan ​​nie.
ALLISON: Ja, ek en j jy heeltemal fyn. Ter wille van duidelikheid soos in sommige van jou P stelle, dit dalk sin maak om meer te hê beskrywende dinge daar net spoor te hou van dit. Maar ek dink ek, j en k ek dink die oorgrote meerderheid van ons almal gebruik.
ROB BOWDEN: Met hierdie konvensies, so styl is belangrik. Dit is een van die vier asse waarop jy gegradeer, en dit is so maklik om net te gaan oor jou P stel aan die einde en maak seker dat daar nie stilistiese foute. So maak seker dat jy korrek tabbing. Maak seker dat jou veranderlikes genoem. Laat 'n paar opmerkings. Dit is baie maklik die punte te kry. Jy hoef nie na te dink oor enigiets om die punte te kry. Jy hoef nie iets om uit te vind. Dit is net wat dit lyk mooi.
ALLISON: Trouens, ons Style 50, wat sal jou vertel waar jy geknoei up as jy geknoei op styl en sal jou vertel presies wat jy nodig om vas te stel en hoe jy dit op te los. Dit is ook net goed om op te noem dat dit natuurlik beleid dat as jy by die kantoor ure en jou kode is 'n gemors, ons kan daal om te help jy totdat dit lyk mooier. So begin reg, hou konsekwent styl, jy is ook net gaan om te maak jou lewe 'n hele klomp makliker as jy probeer om te gaan deur debug. As jy probeer om uit te vind waar jy mis 'n krullerige stut en hulle is almal oor die plek, is jy net om jou eie lewe moeiliker. So wees in ooreenstemming met styl. Ek belowe dit sal jou lewe makliker te maak. Dit sal ons lewens makliker te maak. Almal sal baie gelukkiger wees. En dit is wat jy wil. GABRIEL: Jou graad sal hoër wees. ALLISON: Ja, en jou graad. As jou TF is soos jy, geneig om gunstige wees. Alle reg, en dan net die tweede punt hier. Konsekwent initializations. So as ons sien, kan jy verklaar en inisialiseer dinge. Veelvuldige veranderlikes op dieselfde lyn. Een ding wat ons wil u nie te doen, is om 'n paar veranderlikes te verklaar en nie inisialiseer hulle op dieselfde lyn wat jy initializing ander.
So in die geval wat gemaak geen sin hoegenaamd Ons het die voorbeeld hier waar ons verklaar SY in veranderlikes kwartale dimes en sente, maar kwartale en sente geen aanvanklike waarde. Ons het nie geïnisialiseer nie, maar reg in die middel is daar ons reeds geïnisialiseer dimes tot 0. So óf doen kwartiere, dimes, pennies. Of doen kwartale gelyk 0. Dimes gelyk 0. Pennies gelyk 0, of wat ook al diegene aanvanklike waardes is.
Groot ding met styl, konsekwent wees. Wanneer jy twyfel, wees konsekwent. Maar volg ons styl gids ook. Cool. Almal goeie daar?
Publiek: Waar is die styl gids? ALLISON: Die styl gids is on-- wat is die webwerf?
GABRIEL: Ek dink dit is manual.cs50.net/-- ALLISON: Style?
GABRIEL: Styl. Yep.
ALLISON: Ja. So die vraag is, waar is styl 50. manual.cs50.net/style. Ja?
Publiek: As ons definieer veranderlikes, is dit OK as ons soos [onhoorbaar] soos int telling en dan int doel. So sou jy sê dat ons nou het hulle saam te definieer?
ALLISON: So bevraagteken, moet jy het oorbodig kode wanneer jy definieer veranderlikes soos int telling en op die volgende reël int spel? ROB BOWDEN: Daar is beslis gevalle waar oortollige kode is sleg. Ek sou nie oorweeg dat onnodige kode. Ek het amper nooit verklaar veelvuldige veranderlikes op dieselfde lyn ooit. En as daar iets is, is dit omdat gewoonlik laat ek 'n soort van kommentaar verduidelik wat die veranderlike is vir. So ek sal sê int telling streep streep. Hou van wat ook al. In totaal streep streep. So dit is baie Grosser op dié manier hulle almal om te sit op dieselfde lyn. Ek het net nog nooit het hulle op dieselfde lyn.
ALLISON: Ek voel dit is persoonlike voorkeur op hierdie punt.
Publiek: Is dit gaan vir vir loops en dinge te doen? ROB BOWDEN: Soos binnekant? Soos int i gelyk aan 0 komma lengte gelyk aan iets? Dat jy nie 'n keuse nie. Met vir sirkelroetes die inisialisering part-- sodat jy kan net gesien het int i gelyk aan 0 kommapunt i minder as wat kommapunt i plus plus. Dit int i gelyk aan 0, tegnies kan jy ook doen wat ons gesien het voordat met die komma sintaksis. int i gelyk aan 0 komma j gelyk aan 3 komma k gelyk aan 5. Jy het nie 'n keuse te verdeel dat tot in verskeie lyne, en dit is standaard. Aangesien dit daar is 'n boete. ALLISON: awesome. Wel, gerieflik segue in sirkelroetes. So ja, hier het ons 'n paar voorbeelde van sirkelroetes julle sien in krap. En natuurlik al hierdie kan net in C. herskep En hulle het basies toelaat dat jy sommige artikel van die kode te herhaal totdat 'n sekere toestand voldoen, wat ons sal kry in reg nadat praat oor lusse met conditionals.
So het ons drie hooftipes. Want terwyl, en doen terwyl, wat ons almal gaan nou deur. So die eerste een is vir sirkelroetes. So vir 'n paar toestand, voer hierdie blok van die kode. Ons het hierdie koel bietjie diagram hier aan die onderkant. Maar basies wat jy in jou vir wat eerste reël, jy gaan inisialiseer jou veranderlikes.
So as ons gepraat oor, ek is gelyk aan 0 of ek is gelyk aan 10. Wat jy nodig het dat veranderlike te wees is dit gaan om daar te wees geïnisialiseer, verklaar en geïnisialiseer te waarde. So dan het ons het 'n paar toestand wat gaan wees kontrole ons veranderlike teen iets. So in die geval van die tipiese geval waar Miskien het jy hierdie gedeelte van die kode wil vyf keer uit te voer. So ons wil hê int i gelyk aan 0, en ons dit wil wees wanneer ek is minder as 5. Sodat toestand is net gaan om seker te maak dat elke keer. As die toestand evalueer waar, dit is gaan die kode, dit is presies uit te voer wat hierdie klein diagram toon.
En so is dit voer nie. Dit opdatering van 'n veranderlike, en dit is wat ons sien in die laaste deel van ons vir lus inisialisering daar. So dit sal net hou om dit te doen tot op daardie voorwaarde nie nagekom word nie, en dan sal dit verlaat die lus en gaan voort beweeg met die res van jou program. Almal goeie daar? Cool.
So hier is 'n voorbeeld, baie soortgelyk om iets wat ek net gepraat oor. So ons wil net te druk dit is CS50 10 keer. So jy sien ons het hier ons vir, en dan moet ons inisialiseer die veranderlike i gelyk aan 0 te wees. Ons toestand is kontrole dat dit minder as 10. So evalueer waar wanneer ons die eerste keer begin, en dan hou ons veranderlike elke keer dat dit eintlik voer en afdrukke uit dit is CS50. En sal beëindig nadat 10 keer. Cool.
Dus, terwyl loops is volgende. En as jy hier sien, ons moet net sommige terwyl hierdie condition-- vraag?
Publiek: Hoe kan ek spring eintlik net nie 'n nommer, maar twee getalle [onhoorbaar] i plus plus plus?
ALLISON: So die vraag is hoe kan jy werk jou veranderlike deur meer as een op 'n tyd. So ek plus Plus werk deur elke keer een. As jy wil om dit te verander deur twee, kan jy dit doen ek plus gelyk aan 2.
ROB BOWDEN: Het jy gesien plus gelyk in lesing nog?
ALLISON: Dis effektief die dieselfde ding as ek gelyk i plus 2. So dit gaan om dit te neem en werk dit elke keer met twee. Plus gelyk is net iets ons noem sintaktiese suiker. ROB BOWDEN: Ja, diegene bestaan ​​vir pretty much al rekenkundige operateurs. So ek keer gelyk aan sou die aantal verdubbel. j kloof gelyk aan 3 is dieselfde as j gelyk j gedeel deur 3.
ALLISON: Of minus gelyk aan 2 sou Trek ek elke keer met twee. ROB BOWDEN: Selfs mod gelykes. Jy het dit nie gesien bis-operateurs, maar kappie gelyk en ampersand gelyk, al daardie bestaan.
ALLISON: So baie keer, veral met jou eerste paar P-stelle, jy sal waarskynlik die verhoog word deur een, so ek plus plus, j plus plus alle dinge is wat jy gaan om tipies gebruik nie. Maar dit werk toestand ten volle binne jou beheer. Jy kan dit verander deur watter stappe of op enige manier wat jy besluit om te. Miskien is jy selfs dit wil hê 'n ewekansige getal soms. Maar ja, daar is baie van die dinge wat jy kan doen met dit. Jy is nie beperk tot i plus plus.
ROB BOWDEN: Net sodat jy weet dit bestaan, is dit ook bestaan ​​in 'n ander vorm, plus plus i. So as jy ooit soek aanlyn en gebeur om te sien plus plus i, pretty much beteken dieselfde ding. ALLISON: Cool. Goed? Awesome. Dus, terwyl loops. Baie soortgelyk. Jy het 'n paar toestand. Die belangrikste ding om op te let hier is in plaas van om drie verskillende dele op te rig, het ons een. Ons het net 'n paar toestand dit is nagegaan. En op dieselfde manier, so lank as wat daardie toestand evalueer tot ware, jou kode gaan loop. En as dit is vals, is dit sal skuif beëindig na die volgende deel van jou program. So dit is soort van like-- wat is 'n goeie voorbeeld van kontrole vir 'n paar normale toestand? GABRIEL: Terwyl waar. ALLISON: Jy kan dit doen terwyl ware. Wel, 1 is gelyk aan 1.
ROB BOWDEN: Jy kan dit doen while-- net in plaas van die gebruik van 'n lus, jy kan altyd kode om 'n lus in 'n while lus, sodat ek groter as 0 of terwyl ek minder as 10.
ALLISON: awesome. En dan het ons te doen terwyl loops, wat is 'n groot vir die gebruiker bevestiging, waar wil jy iets uit te kry jou gebruikers, sien of dit geldig is, en dan gaan voort van daar. So een van die dinge te weet, is met 'n doen terwyl is dat dit gaan om uit te voer, en dan sal dit-weer uit te voer Indien hierdie toestand ontmoet.
So waarskynlik die beste manier om dit te doen is net 'n voorbeeld hier te sien. So as ek nou net genoem, gebruikers bevestiging is regtig useful-- of doen genot is regtig nuttig met die gebruiker bevestiging. So dit is net gaan weer gevra sommige gebruikers totdat hulle in 'n positiewe getal, wat nuttig vir jou P stel kan wees hierdie week. En so in hierdie geval, toe ons aanvanklik hierdie program, dit gaan druk Voer 'n positiewe getal. Dit gaan 'n paar te kry toevoer van die gebruiker, en dan gaan dit na te gaan dat toevoer teen die toestand dat jy gesit het vir dit.
So in hierdie geval gaan dit na te gaan. Dit gaan om te sê, OK, is ons insette negatiewe, of is dit 0 of negatief, wat ongeldig sou wees. So dan is dit weer vinnig. Vraag?
Publiek: Is dit dieselfde dan as 'n while lus as jy net kopieer wat die kode en sit dit [onhoorbaar] terwyl loop?
ALLISON: So vraag was sou dit dieselfde as net 'n rukkie lus as ons net kopieer die while lus hierbo. So in hierdie geval, jou while lus is gaan die toestand na die eerste toets. So in hierdie geval, as ons probeer as net 'n while lus om te skryf, dit sou sê, terwyl insette is minder as een. Maar ons het nie 'n bydrae vir dit.
Publiek: As jy [onhoorbaar] while lus insluitend hierdie kode maar dan moet jy coped die kode bo die while lus ook. Jy moes net hierdie kode [Onhoorbaar] terwyl loop. ALLISON: Dit sal wees dieselfde ding, ja. So jy kan net write-- in plaas van om 'n do-- ja. GABRIEL: Maar dit is meer elegant. ALLISON: Ja, dit is meer elegant. Jy kan kry in die ontwerp en noem maar op, maar ja, kan jy heeltemal doen. Enige ander vrae? OK, cool.
So het ons 'n baie gepraat oor die voorwaardes met al hierdie sirkelroetes wat ons het, so ons is eintlik om in toestande in Boolse uitdrukkings. Weereens, jy gebruik dit in C, so net soort van die oordrag uit meer grafiese koppelvlak eintlik kodering.
Cool, so groot een, indien. Basies net toelaat om ons te voer sommige logika in ons program en tjek sys voorwaardes. So in hierdie geval, OK, is N groter as 0? Ja, dit is, sodat jy kan voer nie. Dit is net 'n paar te keur voorwaarde dat jy het stel, wat ek dink ons ​​is almal gemaklik met die nagaan van voorwaardes. Cool. So as die ander is jou ander een, jy kan sê OK, as dit waar is, doen dit eerste ding. Anders wil ek jou standaard en doen iets anders. Soos in hierdie geval, jy kies 'n positiewe getal of 'n negatiewe getal. Jy hoef net twee opsies. Jy moet dit ongeag voer van wat jou gebruiker insette. So kan jy ook sê, is dit groter as 0? Cool. Druk 'n positiewe getal. As dit is nie, druk 'n negatiewe. Almal goeie?
En dan een ding om te besef is dat indien die indien toestand voldoen word, die ander sal nooit ook voer. Slegs een van hierdie sal voer op 'n slag. So dit is 'n kompromis. Jy kry nie beide te hê. Jy het die eerste toestand. Jy het die as of die ander, nie albei nie. Wat dan kan dinge selfs meer ingewikkeld, want jy kan doen as, anders, en dan anders. So in hierdie geval, ons het drie voorwaardes. En weer, slegs een van hierdie is gaan aan die einde uitgevoer word. So jy mag dalk wonder Wel, wat as jy iets wat kan ontmoet twee van hierdie. Miskien alles wat jy skryf voldoen aan beide die toestand Want as en die ander as. Enigste ding wat gaan om te hardloop
ALLISON: Sodra dit vind iets dat dit voldoen aan die voorwaarde vir daardie evalueer waar, dit is wat dit gaan om te hardloop en niks anders nie. So as jy het is hierdie getal tussen 0 en 5 vir jou eerste een, of is dit getal tussen 3 en 5 vir die anders as 'n deel, en jy die invoer van die number-- Ek het gesê 0 en 5 and-- 4. Dit gaan die eerste een om te tref. Dit gaan OK, om dit te sê getal tussen 0 en 5. Voer en verlaat. Dit sal nooit getref dat die tweede opsie. Cool? Awesome.
OK ons het ook 'n skakelaar state indien jy nog more-- of jammer te kry, skakelaar is volgende. Ek is voor my kry hier. Weer, verskeie indien blokke waar as Ek het net gesê is so gou as wat jy kry 'n toestand dit is voldoen en 'n as anders as die ander, dit laat. As jy nodig het om te kyk verskeie dinge, is jy gaan wil dit omdat te gebruik dit sal elke keer hier gaan. So dit sal loop deur en as dit is groter as of gelyk aan 90, dit gaan om dit te druk. En dit sal loop deur en check elke enkele een van hulle nie.
Publiek: So dit sou wees meer karretjie as [onhoorbaar]. Sou dit wees soos [onhoorbaar]?
ALLISON: Die vraag is sal dit wees karretjie of het dit te doen wat jy wil. Dit hang af van wat jy wil van jou program.
Publiek: Ek bedoel soos as jy 90 in. ALLISON: As jy 90-- Publiek: [onhoorbaar]. GABRIEL: Jy gaan twee dinge te kry. ALLISON: Jy gaan twee dinge te kry. Ja, twee.
ROB BOWDEN: Twee?
ROB BOWDEN: Vier. As jy 90, gaan dit vir jou te sê het 'n A, jy het 'n B, jy het 'n C, jy het 'n D.
Publiek: [onhoorbaar]. ALLISON: Right. So ek hang af van wat jy wil graag van jou program. Soms is dit nodig om te check verskeie dinge. Jy sal baie dieper in te kry wat goeie ontwerp is as jy gaan vorentoe. Die belangrikste ding om te besef is dat hierdie sal hier seker al vier voorwaardes. Terwyl as dit was 'n as anders as ander As anders nie, sou dit getref dat die eerste geval, dit sou druk jy het 'n A-en gedoen moet word.
ROB BOWDEN: Selfs as ons besluit om dit te verander as en groter as of gelyk aan 90, indien en groter as of gelyk aan 80, en minder as of gelyk aan 89 as N groter as of gelyk aan 70, en N minder as of gelyk aan 79, so wat sal korrek wees. Dit sal doen wat ons wil nie, maar dit nog steeds tjeks elke enkele dit.
So terwyl dit in die eerste scenario, as ons tree 90 met net as anders as anders as, en ons gaan 90, dan dit gaan regstel. Dit sal seker die eerste een, druk jy 'n A, slaan alles, omdat dit reeds gevind een wat werk. Alle gevalle is onderling uitsluitend gebaseer op as anders as anders as. So dit sal voer die eerste as, dan is dit gedoen. Dit sal gaan aan die einde.
Terwyl as ons verander om dit te wees wat ek was sê met minder as of gelyk aan 89. Dit gaan die eerste een om te kyk. Dit sal druk. Dit sal seker die tweede een. Dit gaan nie om te druk. Gaan die derde een. Gaan nie te druk. Gaan die vierde een. Nou gaan druk. So in daardie geval, die anders as weergawe, aangesien hierdie gevalle onderling eksklusiewe, dit is beter gebruik as anders as anders as, want dit gaan hê minder tjeks van die voorwaardes as hierdie weergawe. ALLISON: awesome. So 'n ding wat ons kan doen, is skakelaar state. Basies 'n skakelaar verklaring neem in sommige veranderlike, In hierdie geval is dit n, en bepaal watter geval uit te voer. So is dit ook een waar jou gevalle moet soort van wedersyds uitsluitend nie. So in hierdie geval, indien Ons kry ons 'n een, dit is ' gaan alles wat te pas variable-- ongeag die waarde van N is aan een van hierdie gevalle, so 1, 2, of 3, en die druk van die ooreenstemmende lyn.
En dan as jy hier sien, ons het ook 'n standaard, wat jy kan van dink as jou anders. So as jy enige ander getal tel Behalwe 1, 2, en 3 in hierdie geval dit is net gaan om te druk ongeldig. Besluit wanneer ifs te gebruik versus As elses versus skakelaars gaan om iets te wees wat jy ouens sien ontwerp wys soos jy begin skryf meer ingewikkeld programme en daar is geen vaste reëls wanneer om dit te gebruik. Dit hang af van jou konteks.
ROB BOWDEN: En net dit uit te gooi daar want dit is meer gemaklik afdeling. Skakelaars, hulle is geneig om be-- sodat jy beperk in die getal van die maniere waarop jy kan gebruik, want as, die toestand kan mooi wees much enigiets wat jy wil. Met skakel die gevalle nommers te wees, of tegnies hulle kan wees karakters, maar karakters, soos ons sal sien, is net nommers. So het hulle getalle nie, maar skakel te wees regtig meer doeltreffend as wanneer anders as anders as, want selfs neem die voorbeeld before-- goed, die graad voorbeeld lyk goed.
Wel, laat ons hier sê, ons plaas doen dit as 'n as anders as anders as scenario. So as n gelyk gelyk aan 1, druk jy opgetel 'n lae nommer. As anders as n gelyk gelyk aan 2, jy pluk 'n medium-nommer. Anders as gelykes gelyk aan 3, hoog. Anders ongeldig.
So kom ons sê dit was ons scenario. So kom ons sê ons gaan 4, so ons verwag ongeldig. Die manier dat indien anders as anders As benadering is om te gaan werk is gaan die eerste toestand. Dit is nie tevrede nie. So gaan ons die tweede toestand. Dit is nie tevrede nie. Gaan die derde toestand. Nie tevrede nie. So gaan ons na die ander en druk ongeldig.
Die manier waarop die skakelaar werke is dit stel af in wat ons gaan 'n sprong tafel te noem. Die belangrikste idee is dat wanneer jy 4, dit kan onmiddellik na die verstek. Dit hoef nie am Ek geval 1 om te kyk? Nee dit is dit nie. Geval 2? Nee. Geval 3? Nee. Verstek. OK, dit moet ek wees waar wil, en dan voer nie. Nee, dit dadelik spring na die standaard. Of is dit ek gaan 2, is dit onmiddellik gaan om te gaan na die 2 sonder om te gaan deur geval 1.
So in die pad, realisties deesdae is dit nie veel van 'n doeltreffendheid gewin. Gewoonlik rekenaars is redelik vinnig, en dit is nie so groot. Maar dit is die saak wat skakelaars is vinniger. As jy regtig probeer te optimaliseer, gebruik 'n skakelaar.
ALLISON: Cool. En dan het ons drieledige operateur. So ek weet ek vroeër genoem die woord sintaktiese suiker. So dit is net dinge wat jou kode veel meer bondige. So, dit is een van daardie gevalle.
So drieledige operateur vraagteken kolon, soos ons sien in die lyn string s is gelyk aan n groter as 100 vraagteken hoë kolon laag. So basies hoe dit werk is dit die N groter as 100 is 'n toestand. So ek dink dit kan sin maak. Dit is soos 'n vraag vra. Dit is te sê o, is N groter as 100. Wie weet? En as dit evalueer aan ware, dit gaan jou te gee die eerste ding wat wat daar gelys, wat hoog is. Anders dit gaan jou lae te gee. So dit is net 'n baie eenvoudige en doeltreffende manier om te doen soos 'n as anders. Dit is al wat dit is.
En as ons dit te skryf as 'n as anders voorwaardelike, dit sou wees as n groter as 100, terugkeer hoog. Anders, terugkeer laag. Dit is net 'n baie meer bondige manier om dit te skryf.
ROB BOWDEN: So hierdie spesifieke voorbeeld is wanneer jy iets doen soos hierdie, is dit die patroon waar ek gebruik drieledige baie gereeld. So ons het nie gepraat oor die omvang nie, maar ek haat sien string s kommapunt. Indien n groter as 100, s gelyk hoog. Anders, s gelyk laag. Sodat patroon, die vyf lyne van die kode letterlik 100% van die tyd kan in wat oorgedra word was daar met 'n drieledige. So het die drieledige, een lyn van kode. Die as anders, vyf. Dit is 'n voorbeeld wys ek uit elke keer. Dit sou 'n groot plek vir 'n drieledige operateur. Dit is so skoon. Maar mense is geneig om nooit gebruik nie.
ALLISON: Neem dit weg Gabe.
GABRIEL: So nou julle almal in lesing hierdie week geleer dat alles in 'n rekenaar is tweeledig, reg? Net soos die lampe hier. Jy kan óf draai op en af. En alles, ek bedoel letterlik alles. Sommige getalle en karakters, en snare, en selfs die kode wat jy skryf wanneer dit word saamgestel om die masjien kode en dinge soos wat, sodat dit alles neer op 0 en 1.
En so wanneer ons te doen met heelgetalle, wat is iets wat tegnies baie eenvoudige, moet ons in staat wees om goed te doen soos dit toe te voeg, wat waarskynlik een van die eenvoudigste dinge wat jy kan doen om twee heelgetalle, reg? So optel en aftrek werk net soos dit werk in desimale notasie behalwe hier is dit binêre, reg? So is dit in die basis twee. So voeg 1 plus 1. Dit gee 0 en 1 dra oor. En net aanhou om dit te doen, so nou kom die meer interessante vraag.
Ons weet hoe om al te verteenwoordig positiewe heelgetalle in die rekenaar, maar laat ons maak dit 'n oefening. Verbeel jou jy ouens is al in 1960 of iets probeer om 'n rekenaar te skep, en jy het om te kom uit 'n manier van die stoor van minus 1, byvoorbeeld, of minus enige heelgetal vir die saak. Hoe sal jy dit doen? Enige idees? Gooi net iets vir my. Ja?
Publiek: [onhoorbaar] aanwys 'n spesiale of jou [onhoorbaar].
GABRIEL: Jy kan aanwys om 'n spesiale bietjie, wat sal wees 0 of 1. Kom ons sê een as dit positief en 0 as dit negatief. En dan is die res van die bietjie is net om die nommer te stoor. Cool. So dit is 'n baie goeie idee. Ons het, weet ek nie, 200. En as die eerste stukkie is aangeskakel, dan is dit plus 200. As dit afgeskakel is, is dit minus 200. Cool.
Daar is net een klein probleem met hierdie, wat as ons probeer om dinge op te som. So dink ons ​​het 11.111 hier, en ons optel dit met 00.100 wat ook al. As die twee positief is, is dit goed. Maar dan as een van hulle negatief is, soos Kom ons sê dat hierdie stukkie hier is die een wat verantwoordelik is for-- ek gaan 'n separate-- te maak so hierdie een beteken dat hierdie getal hier positief is. Hierdie een beteken dat hierdie aantal hier negatief is, reg?
Maar dan wanneer jy gaan hulle op te som, moet jy nodig om 'n as verklaring sê Ag, as dit is 0, dan is my som sal wees iets anders, reg? So is daar 'n effens meer slim manier te doen dat, wat twee se aanvulling genoem. So basies wat ons doen, is ons definieer minus 1 die ding wees dat indien Ons voeg tot 1 gee ons 0. Laat ek dit herhaal. So kom ons sê dat dit hier is 1. Wat is die ding wat natuurlik in positiewe heelgetalle bygevoeg wat gee ons 0? Wat gebeur as ons probeer om dit toe te voeg tot hierdie getal? Ons gaan have-- OK, so laat voeg. Ons gaan 1 plus 1 te hê is 0, en dan dra dit oor. En dan gaan ons 0 weer te kry. Ek kry verward. En jy gaan 0 te kry en 0 en 0 en 0 en 0 en 0. Baie van 0's.
Op die heel laaste een, ons is nie staat sal wees om dit uit te voer oor, want kom ons sê ons is net die hantering met een greep, so net 8 stukkies. So, wat die rekenaar nie deur die standaard is net vergeet dat [onhoorbaar] OK? So dit is wat genoem word Die twee se komplement. Ons het eenvoudig definieer minus 1 aan die wees ding hier dat as jy dit byvoeg 1 sal gee jy 0. En dit is pretty cool omdat ons nie regtig moet laat om te implementeer 'n ander soort som afhangende van of dit is 'n negatiewe of 'n positiewe getal. Maak dit sin maak?
So een ding wat ons doen hier in orde te omskep tussen 'n positiewe en 'n negatiewe heelgetal is dan flip alles, en dan voeg ons 1 tot dat die getal. As jy probeer om dit self te doen op 'n stuk papier, jy gaan om te sien wat sin maak. Maar as ek hierdie getal hier, dit is vyf. So as ek draai alles hier, so 1, 1, 1, 1, 1. Flip, draai, flip. En dan het ek voeg 1 om dit te. Ek gaan presies minus 5 het. OK?
Dit maak soort van sin, want as jy probeer om dit te vat met die getal wat ons gehad het voor, wat was-- laat draai dit weer. Dit was 101 en baie van 0's. As jy probeer om hierdie by te voeg twee getalle bymekaar, jy gaan presies 0 het. OK. Enige vrae?
GABRIEL: Wat bedoel jy?
Publiek: negatief positiewe [onhoorbaar].
GABRIEL: Nee, jy draai en jy 1 voeg altyd. Ja. OK, so karakters ook geïnkripteer program. Ons het ASCII tabel, soos jy het ook in lesing, reg? So dit is basies 'n afbeelding van die dinge. En hier kan ek nie genoeg beklemtoon wat vir 'n rekenaar, 'n en 65 is letterlik die dieselfde ding. So as ek iets soos char c skryf gelyk aan 'n, kon ek op dieselfde tyd net skryf 65 hier, en dit presies dieselfde sou wees, OK? Daar is geen verskil hoegenaamd nie.
Ons het gewoonlik geneig om te sit karakters in veranderlikes tipe. Kar, nie, want hulle is in wese gemaak vir wat, maar omdat van menslike konvensie. Maar jy kan net met heelgetalle in plaas van veranderlikes van tipe char, en jy sal goed wees. Die enigste werklike verskil tussen 'n kar c en 'n int i is dat 'n int vier grepe in die meeste stelsels, terwyl 'n kar het een byte. Hulle is in wese die dieselfde ding in terme van data. So, wat sal hier druk? Hier is ons druk van 'n syfer met behulp van printf met 'n plus 1, en net soos heelgetalle, karakters kan opgesom word, so karakters kan ook opgesom word. Dus is dit presies 65. So daar gaan wees 66, en hier het ons 65 plus min om 'n minus 'n groot, wat sal wees, ek weet nie regtig. Maar dit sal presies die gaping wees tussen die hoofletters en die kleiner letters, so ons gaan klein om 'n te kry, reg? Ja. So dit gaan 'n te druk karakter en dit is presies hierdie een. Goed? Enige vrae?
Hier het ons het 'n klomp van die verskillende tipes vir numeriese veranderlikes. Ons het reeds gesels oor int. Float is net 'n manier aan- dit is regtig snaaks, want toe ek die eerste keer geleer Terug na die program in die dag saam met Python, die eerste program wat ek ooit probeer om te skryf, het ek gesien dat daar 'n tipe ingeroep en 'n tipe genoem float. En die float was vir alle reële getalle. So dan het ek gevra hoekom moet Ek ooit 'n int gebruik dan? Want as ek almal kan gebruik reële getalle met 'n float, Ek wil net ophou met behulp van SY, reg? Omdat reële getalle is baie soos meer generiese.
Dit blyk dat dit nie die geval in rekenaars want hulle is in wese verskillende dinge. So heelgetalle en dryf, die operasies wat jy doen om hulle is in wese anders, want van die wyse waarop hulle gestoor word, OK? Ons gaan 'n bietjie om te praat bietjie meer oor wat in 'n tweede.
So dubbel is net 'n groter float. Gewoonlik in die meeste stelsels, 'n float vier grepe, net soos 'n int. En 'n dubbel is agt grepe. 'N lang lang is eintlik net 'n simbool dat jy voeg tot 'n tipe soos int. Jy sê lang lang int soos hierdie. Lang lang int x dit langer te maak. So in die meeste stelsels, wat gee agt grepe in plaas van die gebruiklike vier. En jy kan eintlik daal die in, so dit kan net sê lang lang, en wat werk ook, OK? Jy kan ook ander dinge soos unsigned int, of net weer unsigned sou ook werk. En wat sal maak dat x 'n veranderlike soos alles positief is, sodat jy kan nie regtig 'n negatiewe getalle in die manier waarop ons sien hier. So volgende wonderlike drywende punt en presisie. Dit is een van die redes waarom jy wil SY plaas van dryf om te gebruik, want SY is 100% akkuraat, reg? Dit is presies wat nommer. Vir swaai punte, as jy sê antwoord gelyk aan 1 oor 10-- Ek gebeur om dit te presiese het program hier, float.c. Dit druk tot 20 desimale plekke. 1 gedeel deur 10, en dat gewoonlik is 0,1, reg? Maar hier indien ons dryf en dan loop ons, sien ons dat dit is nie presies 0,1. Dit is 0,149 iets.
En hoekom is dit? Want jy kan nie regtig elke verteenwoordig enkele moontlike reële getal in die geheue want daar is uncountably baie van hulle. So ons is tegnies net in staat om verteenwoordig 'n beperkte hoeveelheid van hulle met 'n beperkte hoeveelheid van die data. Maar dit is baie interessant. En dit lei tot die kwessie van hoe jy gaan verteenwoordig dit met stukkies, reg? So hoe gaan dryf gestoor? Met heelgetalle was dit maklik. Maar met dryf jy wil hê die reeks te vergroot, en jy wil in staat wees om te verteenwoordig groot getalle en baie klein getalle soos 0.000001 op dieselfde tyd. So weer, dieselfde spel. Is daar iemand enige idee hoe ons kon gaan verteenwoordig float in die geheue? Gooi net iets. Ja, asseblief.
Publiek: [onhoorbaar] as As dit was twee SY en een synde die [onhoorbaar] en een wese alles na die desimale punt. GABRIEL: OK, cool. So twee verskillende heelgetalle. Jy kan 12.45, so dit is 12 en 45. Nice. Wat onbekwaam jy gaan om te sê? Dieselfde ding? Ja?
Publiek: [onhoorbaar] notasie waar jy skei die basis.
GABRIEL: Wetenskaplike notasie, ja, dit is gewoonlik wat gebeur. So dit is wat die MANTISSA genoem. Dit is wat eintlik die nommer, en dan die eksponent is net waar die komma is, reg? So dit gaan om iets te wees van die vorm 1, 2, 3, 4, 5 keer 10 na die minus 4. Ek het net besef that-- ja, presies. En dan is dit 10 tot die minus 4 is gaan definieer waar die komma is, OK? In Brasilië gebruik ons ​​skei. Hier jy ouens gebruik 'n punt. So 'n punt.
En dit is cool, want dan kan jy fokus baie van jou stukkies oor hierdie man hier, op die MANTISSA, en dan is dit gaan jou werklike presisie te wees. En jy kan dit doen in desimale of in die binêre stelsel. Daar is verskillende maniere om dit te implementeer. Vrae? Ja? Publiek: Hoe baie plekke na die desimale [onhoorbaar]?
GABRIEL: Dit is 'n ingewikkelde vraag, want dit is nooit werklik 100% akkurate, want as jy hier nie, want sien sommige getalle dit is 100% akkuraat. Ek glo as ons 0,5 hier dit gaan wees 100% akkuraat. Dit gaan wees 0,500000. So in daardie geval, dit is volmaak. Maar in ander gevalle dit is baie minder volmaak. In my ervaring, soos tot vier, vyf desimale plekke is redelik akkuraat. As jy 'n dubbel, gaan dit wees manier om meer akkuraat is as wat, OK?
ROB BOWDEN: So net om te gooi 'n paar meer konteks op dryf, Ek onthou nog nooit 100% hoe die spec van dryf werk eintlik, maar ek dink jy altyd onthou wat dryf begin kry slordig. Dus is die idee is dat wanneer jy regtig nie, baie groot getalle of regtig, regtig klein getalle, ons begin erger en erger op die onderskeid tussen twee naby dryf.
So, hoe ek wil om te dink oor is met drywende punt onakkuraatheid, Daar is twee dryf wat As ek probeer om dit te spesifiseer in C, ten spyte van die feit dat hulle is verskillende getalle, hulle gaan wees geïnterpreteer as die dieselfde getal, want ons kan nie anders slaan hulle. Ons moet dieselfde stukkies te gebruik. En so wanneer ons by regtig, regtig groot getalle, praat soos 10 tot die 300 of iets is, is dit op daardie stadium wat 10 tot 300 of 5 keer 10 tot 300 kan nie onderskei word uit 7 keer 10 tot 300. So dit is 'n mooi groot verskil tussen die twee getalle.
Maar dan wanneer jy af aan die normale omvang dinge, jy is geneig om mooi te wees goed op die onderskeid. En dan wanneer jy down baie klein, jy is ook weer kry baie sleg. Dus, net soos 'n hele klomp van die 0,0000, raak dit baie sleg. GABRIEL: Ja, so 'n vinnige nota. Nooit doen nie. Moet nooit probeer om te vergelyk dryf met behulp van gelykes gelyk, want selfs al is hulle byna dieselfde, amper dieselfde is nie dieselfde nie. So, wat jy gewoonlik doen, is jy trek hulle neem die absolute waarde van daardie, en kyk of dit is kleiner as 0,0001 of iets soos dit, OK? En laat afkoel. Ek weet 'n baie van die mense het 'n agtergrond in Java, veral diegene wat wel AP rekenaarwetenskap, reg? En Java is 'n taal wat meestal gebaseer op C, dit het 'n paar baie groot verskille. Maar vir loops, en as, en dinge soos dat hulle is almal dieselfde sintaksis. Ek het 'n paar programme hier aan te toon.
So byvoorbeeld, 'n eenvoudige hallo wêreld. Dit is hello world in C, wat jy ouens is beslis vertroud is met, en dit en hierdie een is in Java. So in Java ons hierdie openbare klas, hello world, en openbare statiese nietig hoof, en string argumente. Die string argumente gaan verskyn in C baie kort. Maar laat ons nie daar gaan nie. Nou het ons 'n leemte hier, wat beteken wat hoof is geen argumente neem. En dan het ons system.out.println, die en dit is soort van die ekwivalent vir printf. Hier het ons nie regtig die backslash nodig nie N omdat druk ln doen dit vir jou. Dit voeg daar agteroorskuisstreep N aan die einde van die lyn.
Maar as jy gaan in iets soos 'n vir jy kan sien dat hulle pretty much dieselfde ding. So inisialisering, en die toestand, en die werk is-- ek gemis het 'n ruimte here-- hulle pretty much dieselfde ding, behalwe Java het as 'n paar hoë vlak dinge. Hier kan ons doen plus ek en Java outomaties maak dit Ek hier, wat 'n heelgetal is, in 'n string, en dan voeg die twee stringe saam. Hier in C wat ons moet doen om die &% d. Die lyn hier, die vir lyk presies dieselfde.
En as ons kyk na as die ifs kyk ook presies dieselfde, reg? Dus is die werklike groot verskille in die dinge wat jy hier sien. Openbare statiese, nietig en dan openbare klas as. So Java het wat bekend as 'n virtuele masjien. En dit is baie swaar op grond van wat genoem objekgeoriënteerde programmering, Dit is 'n baie, baie algemeen paradigma vir ontwikkeling deesdae. En hierdie klas ding is wat jy sien, iets van objekgeoriënteerde, is jy 'n klas en dan moet jy kan lei voorwerpe van die klas. Ons is nie van plan om te praat veel oor wat in CS50, maar dit is beslis iets regtig cool, veral as jy wil om te gaan in meer gesofistikeerd web ontwikkeling aan die einde van die kursus, soos stuur jou finale projek en 'n paar mooi raamwerke en dinge.
So basies die idee is dat jy wil nie iets weer te implementeer, sodat jy iets wat ons skep baie generiese, soos die vorm, en dan moet jy skep verskillende vorms van dit, en dan van elke hierdie vorms, skep jy 'n paar meer spesifieke vorms in drie dimensies of iets soos dit. En hulle het hierdie hiërargie hulle erf van die ander kinders, so alle funksies en alle veranderlikes wat die groot vorm hier het al hierdie gaan hê, en almal van hulle is gaan, en so aan en so meer. So wat is die basiese idee.
C het nie dit nie, maar C ++ beteken het dat die soort van funksie. En Java is swaar beïnvloed deur voorwerp geaardheid, so dit is waarom jy sien klas hier al die tyd. En die ander ding is hierdie Java virtuele masjien. So dit, dink ek, is 'n baie slim idee. So, wat die mense wat uitgevind Java gedoen is hulle wou nie hulle kode stel twee keer As hulle het dit uit te voer in 'n Windows, of 'n Mac of Linux, so wat hulle doen word hulle letterlik hardloop iets soos die toestel, maar jy het nie regtig sien dit gebeur. Sodat hulle loop 'n virtuele masjien binnekant van jou rekenaar, wat is basies soos 'n mini-bedryfstelsel. En dat bedryfswins stelsel se doel in die lewe is net om te hardloop wat byte kode genoem.
So in plaas van in C, die manier waarop ons wil stel dit maak indien, en dan loop ./if. Ek het vergeet om die backslash in. In Java, sou jy eerste doen Java C om dit te stel, if.c. Dit is nie C. Dit se dot Java. En dan moet jy moet hardloop nie ./. Jy kry hierdie nuwe lêer if.class, maar jy kan nie regtig hardloop if.class nou net soos ons gedoen het voor. Dit is nie 'n uitvoerbare. Jy het om te hardloop. Jy het dit in te voer 'n program genaamd Java, en die program is die virtuele masjien, en dan doen jy if.class, of indien. Ja. En dan is dit werk. OK so dit is 'n soort van die virtuele masjien gebeur. C nie daardie, so as ek sit hierdie program in 'n Windows-masjien, dit sal nie werk in C. In Java dit doen nie. Vrae? Cool. Dit is as vir super artikel vir vandag.