[Powered by Google Translate] [ELEKTRONIESE STATIESE SOUNDS]
ROB: Okay, so wat ons net het julle gebring is CS50 Ruimtes.
ALI: Wag, wag back-up.
Welkom artikel!
ROB: Welkom artikel!
ALI: Yay!
ROB: Supersection!
ALI: Ek is Ali en dit is Rob.
Okay, nou sal ons verduidelik Ruimtes.
ROB: So wat ons nou het julle gebring is CS50 Ruimtes.
Jy sal gebruik word om hierdie 'n baie in jou afdelings hierdie semester.
Basies, het ons reeds het jy die aflaai van die toestel.
En jy kan dink van CS50 Ruimtes as 'n web koppelvlak praat met 'n toestel
dat ons iewers op 'n paar bediener.
So jy kan jou kode hardloop in hierdie koppelvlak, en ons sal
sien hoe om dinge te doen.
Jy kan ook kyk na die kode van die ander mense in die afdeling, en -
ALI: En as sommige mense uitgevind het, jy kan klets mense op die kant.
En ons almal sien dit ook, so wat is opwindend.
Kom in, kom sit.
Neem 'n sitplek.
>> ROB: So, afdelings is -
ALI: Nee, nee, julle kan kom.
ROB: Artikels gaan wees baie meer interaktiewe hierdie semester.
ALI: O, hy is soos -
Oh.
Okay, cool.
So as julle ouens is net kom in, kan jy gaan na hierdie skakel, as ek kan kry
daar, reg daar.
Ons kan nie regtig skryf dit, want daar is nie raad ruimte, maar hierdie skakel
reg hier, gaan op jou rekenaars, en jy sal ingaan CS50
Ruimtes, wat is 'n pretty cool ding.
Okay.
Het jy 'n probleem?
ROB: So jy kan die probleme te vind -
ons nodig het om in staat wees om hierdie iewers te skryf.
So as jy gaan aan cs50.net/psets en dit is die hacker supersection -
en jy gaan in die Hacker Edition van pset een, kyk na die spesifikasie
iewers op bladsy -
>> ALI: So basies, terwyl Rob se soek, wat ons gaan doen in
artikel vandag is daar is 'n deel van die probleme -
ROB: - op bladsy agt.
ALI: - 'n afdeling van probleme genoem -
ROB: Artikel vrae.
ALI: Jammer, 'n afdeling van vrae.
En dit is wat ons gaan om te gaan oor -
dit is wat ons gaan om te gaan oor vandag in artikel.
En ons gaan om dit te kode op CS50 Ruimtes, en hopelik wat sal werk.
En ons kan net praat deur hulle.
En julle vrae kan vra wanneer jy voel -
>> ROB: So dit is om 'n algemene ding met die meeste psets.
Ek dink met hierdie een, dit sê jy nie hierdie vrae in te handig.
Maar die idee is dat hierdie vrae gestel word op die pset, en jy kan kom
te beantwoord artikel om hierdie vrae te hê.
Of as jy kom nie na artikel, kan jy hulle antwoord op jou eie of kry
help by die kantoor ure of iets.
Maar hierdie is vrae wat veronderstel is om te prep vir jou die probleem stel.
En op die hacker uitgawe, 'n baie van die vrae dalk net wees oor
die uitbreiding van jou huidige CS kennis.
ALI: Yep, pretty much.
>> Okay, so is almal op CS50 Spaces?
Hi, kom in
Spreker 1: Kan ons die URL sien een keer?
Rob: Ja, dit sal makliker wees wanneer jy eintlik in jou artikels en
jou TF kan u 'n e-pos net die URL vooraf.
ALI: Yay, neem 'n sitplek.
Daar nog sitplekke hier.
Die voorkant is nie so sleg nie.
Wat?
So, CS50 Ruimtes, ons kry daar.
Is daar iemand enige vrae voordat ons in - wat?
ROB: Daar is nie eens 'n kryt.
[Onhoorbaar]
ALI: Jammer.
Jy kan gebruik om jou naels?
Ons is in 'n baie lae-tech ruimte vir 'n baie hoë-tegnologie klas.
Okay, is almal soort van 'n goeie?
Is daar iemand nog vrae daaroor?
Soos ek gesê het, ons gaan om te gaan deur middel van die afdeling van die vrae in
die pset spesifikasies.
So daar is net 'n paar van die probleme wat ons gaan
kodeer in CS50 Ruimtes.
Is almal goeie?
Okay.
Goed kan gaan?
ROB: Het jy 'n laptop?
ALI: Jy kan uithang met Lucas.
Hy is reg langs jou sit.
Bonding tyd.
>> ROB: So, begin met die eerste probleem?
ALI: Ja.
Ons kan begin.
Wil jy my -
Ek kan gaan.
So, sal ons gaan na die pset specs.
O, waarom is dit -
ROB: Control.
ALI: Okay, so gaan ons in antwoord hierdie dinge so goed?
ROB: O, ja.
So -
ALI: Ag, het almal kyk Rob se hoofrol kortbroek?
Okay, cool.
ROB: Ja, ek dink nie ons noodwendig verwag jy te hê
gekyk het dit voor die aangesig van hierdie artikel kom nie, maar ons kan bespreek wat
probleme vooraf, want hulle is onder die afdeling van die vrae dinge.
So as jy dit nog nie gekyk het, moenie worry nie.
Diegene wat kan probeer beantwoord.
>> Dus, die eerste vraag, wat is 'n pre-verwerker, hoe # include
verband?
So nie almal antwoord vir wat?
ALI: Julle kan praat dit uit.
Sure, voort te gaan.
Spreker 2: # include is 'n paar pre-geskryf kode, en in plaas van
kopieer en plak dit in jou program, deur net te sê, sluit dit,
die pre-verwerker weet dat dit daar is en dat dit moet voeg dit in
later of voor enigiets anders gebeur.
ALI: Ja, awesome.
Cool.
ROB: So wanneer jy eintlik die opstel van 'n program, die pre-verwerker is dit
eerste stap.
Samestelling gebeur in vier groot stappe.
So het die pre-verwerker is die eerste groot een, en dit is hierdie man wat gaan
deur en kyk vir alle van hierdie hash simbole.
En enige lyn wat begin met 'n hash, die pre-verwerker kyk na dit en sien
as dit kan verwerk.
So # include vertel die pre-verwerker om te kyk vir 'n paar cs50.h
liasseer en net kopieer en plak die inhoud in hierdie lêer.
So kan jy # regtig enigiets wat jy wil, maar dit is meestal gaan wees
H lêers.
Ons is nie gekry het # nog definieer, so dit maak nie saak.
ALI: Ja, ons is goed op daardie een.
Is daar iemand enige vrae oor wat?
Is ons 'n goeie?
Volgende vraag.
>> SPREKER 3: In die kort, daar was iets omtrent c sowel.
Is dit relevant is of is dit irrelevant?
ROB: Oor c met die pre-verwerker.?
SPREKER 3: Ja, of het ek iets?
ROB: So die kort kon gewees het wat die pre-verwerking van hierdie lêer en
. printer dit na 'n ander c lêer, sodat jy kan vooraf hierdie lêer verwerk -
wanneer jy loop net soos, maak hallo of kletteren hello.c, doen jy alle
die samestelling in 'n groot stap.
Maar jy kan doen dit uitdruklik in sy afsonderlike stappe.
So jy kan eers vooraf verwerk.
Dan kan jy stel, dan kan jy versamel, en dan kan jy 'n skakel.
Ons kry aan die ander kinders.
Maar pre-verwerking, jy soort van pre-proses, en dan gaan dit in
ander c-lêer.
Omdat pre-verwerking nie regtig verander nie.
Dit is net 'n klomp van kopie en plak.
Jy kan met die hand kopieer en plak dit self.
ALI: En om duidelik te wees, die c-lêer is 'n C-lêer, so dit is
geskryf in C-kode.
So dit gaan van C-kode C-kode.
Jy voeg net meer kode met die pond.
ROB: Wanneer jy vooraf verwerk dit, dit is nog steeds 'n geldige C lêer.
SPREKER 3: Goed.
ALI: Goeie vraag.
Ek hou daarvan.
Okay, volgende vraag.
>> Wat is die vertaler?
Iemand?
Ja.
SPREKER 4: Dit verander die pre-verwerkte kode in die vergadering.
ALI: Perfect.
ROB: Ja.
ALI: Cool.
ROB: So dit is wat die samesteller spesifiek doen
wanneer ons kletteren jy gebruik.
In 'n baie algemene sin, 'n vertaler is, net soos wat in een taal kode
en draai dit in 'n ander taal.
Dus, in C -
of, goed, klang neem kode wat in C is en die transformasie van dit aan die vergadering.
En jy hoef nie in staat te wees om die gemeente te verstaan.
Maar dit is die taal wat dit draai in.
>> ALI: Goed.
En dan, wat is 'n assembler?
Iemand?
SPREKER 5: [onhoorbaar] binêre?
ALI: Jammer, wat?
SPREKER 5: [onhoorbaar] binêre?
ROB: Yep.
ALI: Ja.
ROB: So het die assembler -
vergadering kode is regtig, regtig naby aan wat jou rekenaar kan verstaan,
maar onthou dat dit nie heeltemal verstaan ​​die teks
wat gemeente-kode.
Wat jy nodig het om dit te omskep in reguit 1s en 0s.
Dit is soos 'n direkte vertaling proses.
Ons kan net gee jou 'n tabel wat die kaarte wat elke
vergadering opdrag beteken.
Maar die assembler is net hierdie vertaling te doen vir jou.
Dit is die transformasie van die vergadering kode in 1s en 0S.
>> ALI: En dan, vir die laaste een, wat is 'n koppelingshistoon?
En hoe-lcs50 verband?
Iemand?
ROB: Dit is die moeilikste en die minste verduidelik een in die samesteller video.
ALI: Is daar iemand onthou dat lcs50 in 'n opdrag?
SPREKER 6: As jy na die maak.
ALI: Dit is in die maak.
Ja, koel, okay.
Is daar enige raaiskote of vaag - ja, gaan.
SPEAKER 7: Ek is nie seker nie, want jou kort was regtig [onhoorbaar], maar was dit
iets oor die afsonderlike lêers te doen met elke biblioteek en dan om
hulle almal saam in 'n biblioteek?
ROB: Ja.
So wanneer jy 'hello.c, dit is 'n baie eenvoudige program.
Jy is eintlik net een ding doen in dit.
Maar wanneer jy in ander programme -
en ek dink selfs wanneer jy GetString in jou programme, wat jy nodig het om te begin
met inbegrip van ander lêers.
So het die CS50 biblioteek is een so 'n lêer waarin ons die implementasies
GetString en getint en al daardie dinge.
So, wat die koppelingshistoon doen, is dit gaan rond op soek deur al hierdie
lêers, sien waar funksies word gedefinieer, om seker te maak dat as ek roep
GetString iewers, dit weet dat GetString beteken dat dit die
GetString in die CS50 biblioteek.
So het die koppelingshistoon neem net al hierdie lêers, breek hulle saam, en nou
jy het 'n uitvoerbare.
So hou in gedagte, as jy gebruik die CS50 biblioteek, moet u die
# Sluit by die top, en dan ook in jou maak bevel, as jy
gesê, jy het die lcs50 te hê.
So jy kan nie net een het.
So dit is net iets om in gedagte te hou vir toekomstige verwysing.
>> SPEAKER 8: So, laat ons sê daar was 'n ander biblioteek, soos cs51.h, sou ons
ook by te voeg lcs51?
ROB: Die enigste rede waarom hierdie lcs50 werk perfek is, want ons het daardie stel
in 'n spesifieke plek in jou toestelle, sodat hulle weet wat
-Lcs50 middel.
Ons kan net gee jou 'n cs50.c lêer, en dan kan jy dit stel, sê
Kletteren hello.c cs50.c, en dan is dit jou uitvoerbaar te maak deur om
hierdie twee lêers saam.
Dit weet dat-lcs50 beteken cs50.c oor in sommige directory dat ons wat in
jou toestelle.
So as jy wou 'n cs51.c te wees deur net sê-lcs51 specifiable,
dan sou ons ook nodig het om dit te sit in daardie gids sodat dit weet waar om te
kyk vir dit.
ALI: Wat was jou vraag?
>> SPEAKER 7: Hoekom dink jy het die CS50 te koppel
indien - wasn't dit kopieer / geplak by die eerste stap wanneer jy pre-verwerk is?
ALI: Wil jy dit te neem?
ROB: Seker nie.
So is die cs50.h lêer apart van die cs50.c C lêer.
Het jy al prototipes te funksioneer in die klas?
Okay.
So basies, die cs50.h lêer is net gaan om te kopieer en plak -
ALI: Moenie julle ouens weet wat die handtekeninge is?
Okay, so pretty much, as jy kyk na -
ROB: Let's voorgee cs50.h is nie daar nie.
Nou hierdie lêer -
jy doen string s = GetString.
Maar wanneer ons gekry het tot op hierdie punt in die kode, dit het geen idee wat
GetString is.
Dit weet dit is 'n funksie, aangesien jy noem dit.
Maar dit beteken nie weet dat dit is eintlik veronderstel om 'n string om terug te keer.
En soos ek sê, string s = getint, beteken dit nie sin maak nie, aangesien
jy die ondertekening van 'n heelgetal aan 'n string.
Maar dit beteken nie weet dat GetString sin maak nie, omdat dit nie
weet dat GetString 'n string.
So, wat cs50.h sê is iets soos hierdie.
ALI: So wat Rob tik is, dit is 'n belofte in 'n manier wat dit gaan
het hierdie funksie geroep GetString.
ROB: Dit is al wat cs50.h kopieer en plak hier, asook
getint en al daardie dinge.
En dit sê net dat GetString nie 'n string terug.
Jy weet nie hoe dit is nog nie geïmplementeer nie, maar wanneer ons in hierdie lyn, nou
dit weet dat dit korrek 'n string.
>> SPEAKER 9: So as ons het nie die moeite met die # ding en in plaas daarvan
net die prototipe vir die wat geskryf het dat ons eintlik gaan om te gebruik?
ROB: Ja.
So kom ons hardloop hierdie.
SPEAKER 9: Is dit?
Dus, by verstek, sou dit die-l doen om CS50 net omdat -
ROB: - uitdrukking.
ALI: Ja, want soos jy sê, dit is in die fabrikaat lêer.
ROB: cs50.h gebeur ook typedef char * string.
Jy kan heeltemal ignoreer wat dit beteken vir nou.
Maar dit is ook iets ingesluit in cs50.h.
So nou is dinge heeltemal fyn gewerk.
Dit loop presies dieselfde as wat dit was toe ons moes net
die # sluit.
En so cs50.h gebeur met oor-sluit dinge wat jy nodig het -
hou nie, doen jy nie die getint in hierdie program gebruik, maar dit maak nie saak.
Dit sal net ignoreer dit.
ALI: En dan wanneer jy die lcs50 hier en hier, wat gaan
is dat dit met die werklike implementeerbare kode.
So dit is waar dit eintlik is, doen die
die skryf van die kode vir GetString.
So dit is nie net 'n belofte nie.
Dit is eintlik gaan en neem die tou en al daardie dinge.
Sin maak?
Vrae? Alles reg.
Cool bone.
>> ROB: Nou kan ons aanbeweeg na die werklike kode.
ALI: Goed.
So hier is die eerste probleem.
So dit sê skryf 'n program wat die gebruiker vir 'n klein gevra
brief en dan vat dit na 'n hoofletter sonder die gebruik van bis-
bedrywighede, soos per die onderstaande voorbeeld van die uitvoer.
Sodat jy kan sien, jy hardloop die program met die / a.out., En dan is jy
gaan sit in kleinletter a, en dan jou program moet uit kapitaal
A. So hoekom julle nie almal gee dit 'n skoot op CS50 Spaces?
Sodat julle kan almal hier.
En jy kan al die kode verwyder hier.
En dan kan jy gaan voort en begin kodering die ding.
ROB: Jy sal waarskynlik wil getChar te gebruik, dit is
ingesluit in die CS50 biblioteek.
ALI: Ek dink dit sou beter wees as jy die boonste gedeelte red.
Sodat jy dalk wil om net die dinge wat in die middel verander.
Gaan voort en werk.
Voel vry om te werk met mekaar.
Rob: En jy vrae kan vra as jy het -
>> SPREKER 10: Wat is 'n bis werking?
ROB: So, ignoreer dat vir hierdie probleem.
ALI: As jy dit nie weet nie, is dit goed.
ROB: Ons gaan om dit te gebruik in die volgende probleem.
Maar as jy nie weet wat 'n bis-operateur is, is dit goed.
SPREKER 10: Is dit soos om dit te ASCII-kode?
ALI: No
ROB: No
Jy kan dit doen vir hierdie probleem.
SPREKER 10: Hoe doen jy dit?
So as ek net moes iewers te skryf -
ALI: Of iets te skryf.
ROB: Ek kon net soort van die tipe in.
ALI: Tipe aan die bokant.
ROB: O, ek sit op 'n mic.
>> So, ons het in die lesing wat die ASCII waarde vir kapitaal is 65.
En kapitaal B sal wees 66, en so aan.
So kan jy letterlik gebruik 'A' die getal 65 beteken.
Hou nie, dit is die waarde 65.
Ek kan iets doen soos int x = 100 - 'A'. En nou x sal die waarde
100 - 65.
ALI: Jy kan hardloop en wys dat.
O, miskien nie.
Never mind.
ROB: Ek het om dit uit te druk.
SPREKER 10: Hoe gaan jy dit terug karakter?
ALI: So as jy moenie -
jy net dwing om dit te char A, is gelyk aan.
ROB: So daar is 'n -
die onderskeid tussen 'n kar en 'n heelgetal is net in terme van grootte.
So 'n heelgetal gebeur in staat te wees om dinge te verteenwoordig
, soos, vier miljard.
'N char is net in staat om dinge te stel tot 255.
Maar daar is geen verskil tussen hulle anders as dit.
Sodat jy kan sê char c = 65.
Dit is gelykstaande aan sê char c is gelyk aan 'A'.
ALI: O, nee.
Dit eintlik nie red dinge.
ROB: Nee, jy kan dit nie doen nie.
ALI: Dit is net -
[Kreun]
>> ROB: Okay, so wat Ali net geskryf het, was 'n program wat die eerste 100 druk -
'A' as 'n heelgetal, wat 35, as wat ons verwag, want 100 minus die ASCII
waarde van A is 65.
Toe het sy gedruk met behulp van% c, wat beteken interpreteer dit as 'n char.
So 100 - 'n 35.
Tolking dat as 'n karakter gebeur met die hash simbool.
As jy kyk by asciitable.com of wat ookal, sal jy sien dat 35 is die
hash simbool.
ALI: Okay, enige ander verduidelijk oor die probleem?
Okay, julle kan gaan voort en doen dit dan.
Voel vry om vrae te vra of met mekaar praat.
Of as jy reeds gedoen het, kan jy ontspan.
>> LUCAS: Is hulle dieselfde klas, al die klein letters in orde is en
ook die hoofletters is ook in orde, want dit is iets nuttigs vir
die probleem.
ALI: Goeie punt, Lucas.
So, julle het almal kry wat?
SPREKER 11: Ja.
Dit is hoe jy dit doen nie, reg?
ALI: Right.
ROB: Ja.
SPREKER 11: [onhoorbaar]
ALI: Alle reg.
ROB: Wat is die vraag vra?
Net om te sit -
ALI: Skakel die kleinletters aan die hoofletters.
Dit is dit.
ROB: Goed.
ALI: Moet ons dit skryf?
Ek dink ons ​​sal net kyk na iemand anders is.
ROB: So vir diegene wat kan vas te word, 'n manier -
as ek het 'n paar char c, en kom ons sê dit gebeur om die brief te wees D.
So nou hoe kan ek uitvind wat letter van die alfabet C is?
Nie D, maar ek bedoel, D gebeur na die vierde letter van die alfabet.
En as ons begin tel van 0, dan is dit die derde letter van die alfabet.
So as 'n 0, B is 1, C is 2, D is 3, hoe kan ek uitvind int posisie -
watter posisie van die alfabet C is?
Is daar iemand enige idees?
ALI: Ek dink hulle is almal kodering.
ROB: Wat oor die eerste een?
SPREKER 12: So alles wat A is, trek die eerste een?
ROB: Ja.
ALI: Ja, awesome.
So jy kan doen kapitaal D -
oh, sorry.
Jy neem die karakter en jy trek die eerste een, soos jy sê.
ROB: So as D is iets soos 68, en ons aftrek A, wat 65 is, dan kry ons
3, vertel ons dat D die derde letter van die alfabet
vanaf 0.
Sodat jy kan gebruik.
Nou weet ons wat letter van die alfabet, in terme van
hoofletters, of -
ons kan dieselfde ding doen vir kleinletters om uit te vind wat
onderkas posisie waarin ons is.
En ons kan gebruik wat dan omskep na 'n hoofletter gebruik van 'n
baie soortgelyke idee.
Vra vir voorstelle?
>> ALI: Het julle ouens - wag, ek weet nie hoe ver jy ouens is.
Is die meeste van julle gedoen, jy is nog steeds werk, is jy vas?
Julle kan uitroep -
vas.
Een persoon se vas.
Cool.
Ek is geneig om te vas, ook.
SPREKER 13: wat ek gedoen het.
ALI: U gedoen?
Okay.
Gedoen het.
SPREKER 13: [onhoorbaar]
ALI: Ja, cool.
Is jy seker te maak dat dit in kleinletters vorm?
Okay, cool.
Waar is die ander mense?
Het hierdie wenk jou help om, soos vir die un-vas jouself?
SPREKER 14: Nie regtig nie, maar net, want ek weet nie, ek is nie
vertering dit nog nie.
ALI: Okay, cool.
Doen wat jy wil om te probeer -
of wil jy om te gaan praat?
>> ROB: Wat ek gaan sê, is -
so die gebruik van hierdie.
Verstaan ​​jy hoe ons watter posisie van die alfabet
die brief is in?
SPEAKER 14: Okay, so wanneer jy dinge in 'n enkele aanhaling,
wat gee 'n nommer?
ROB: Ja.
Dit sal vertaal word na die ASCII waarde wat dit verteenwoordig.
So doen wat jy wil om te gaan na ASCII tabel of wat dit ookal is?
ALI: Slegs een van hierdie?
ROB: Yep.
So wanneer jy enige van hierdie simbole, ignoreer 'n groot deel van die -
ALI: [onhoorbaar]
ROB: Oh, met behulp van die muis.
ALI: Ja.
Dit was opwindend.
ROB: So, ignoreer hierdie kinders aan die linkerkant, wat is spesiale simbole -
as jy enige van hierdie simbole in aanhalingstekens, dan sal dit
vertaal na hierdie waarde aan die linkerkant.
ALI: Dit is die desimale getal vir dit.
Dit is soos 'n wedstryde met 65, B 66, en jy sal sien dat hulle is almal in
alfabetiese volgorde, wat 'n verskil maak.
So, as Rob sê, voor, in die kode, het ons die berekening van die afstand vanaf
die eerste brief, per se.
En dit sal dieselfde wees, of dit is hoofletters of klein letters.
ROB: So wanneer ons het D, 68 minus A, 65, ons kry 3.
Omdat D is drie posisies in die alfabet.
ALI: So hoe sou jy dit vertaal wat oor om uit te vind die klein d?
ROB: Ja.
So as ek het 3 Ek weet nou, ek wil drie letters te gaan in die -
ons gebeur te gaan kleinletters nou nie, maar kom ons sê ek wil drie te gaan
posisies in die kleinletter kant van dinge.
So, hoe kan ek dit doen?
Ek weet kleinletter a 97.
So hoe kry ek drie posisies in die kleinletters?
>> SPREKER 15: Ek het 'n vraag eintlik.
ALI: Ja, gaan voort.
SPREKER 15: Dus vir hierdie, dit maak nie regtig saak as ek weet hierdie posisie,
hou nie, ek hoef nie hierdie tabel.
ROB: Nee.
Jy sal nooit nodig om enige van hierdie getalle te gebruik.
En dit is 'n belangrike punt in jou programme wat jy nooit moet hard
kodeer enige van hierdie konstantes.
Gebruik 'A'. nooit gebruik 65 of 97.
ALI: Dit is magic nommers genoem, en hulle is regtig verwarrend.
Soos wanneer jy 'n kode is ontfouting, kan jy nie onthou wat
jy gebruik dit vir.
En vir ons die formaat van jou kode is, sal ons nie regtig weet wat
jy gebruik dit vir.
So dit is beter as jy eintlik die karakters gebruik so dit maak
meer sin vir mense.
Okay, enige ander vrae?
Meer mense gedoen het, of -
Ek dink ons ​​kan kyk.
Dit is regtig creepy dat jy kan sien mense se kode.
ROB: Ja.
Ons het nie om dit hier te doen.
Ons weet nie mense se name nie.
ALI: O ja, en wat maak dit beter, so ons sal nog meer onbevooroordeelde
in plaas van net lukraak pluk iemand.
Moenie bekommerd wees nie.
Ek sal dit nie doen nie.
As jy 'n lukrake dinge oor - never mind.
Okay.
Hoe word mense doen?
>> SPEAKER 17: En die negende reël moet 'n karakter uit te druk?
ROB: Ja.
ALI: Ja.
So as jy gaan -
ROB: O, jy kan dit nie doen nie.
ALI: Jy sal sien dat dit die hash simbool gedruk.
SPREKER 17: O, okay.
ROB: Ek dink nog 'n manier waarop jy na dinge kan kyk is ons druk 2
karakters.
Eerste een wat ons druk is die letter A.
Die volgende een wat ons druk is net 65.
Dit sal waarskynlik op my skreeu vir hierdie.
So as ons net hierdie hardloop, sal jy sien dat dit 'n twee keer druk.
Want ons is dit dieselfde ding vra.
Ons vra dit die letter A. te druk en dan is ons vra om dit te druk
nommer 65 geïnterpreteer as 'n karakter, wat is dieselfde ding.
ALI: Het jy iets om te sê?
O, just kidding, jammer.
Alle reg, hoe is mense -
ROB: Ons kan nie net loop deur dit.
>> ALI: Okay, so hoe begin jy?
Iemand?
As 'n wenk, ons het iets van die mense te kry, van die typers.
SPREKER 18: [onhoorbaar]
ALI: O ja, 'n vinnige, volmaak.
So ons sal tik -
Watter tipe doen ons?
Iemand?
Of moet ek tik dit net?
Is ons werklik tik die -
ROB: Seker nie.
ALI: So sal ons tik 'n printf dit te vinnig, sodat ons kan wees
hou nie, gee my 'n karakter.
Goed, en dan wat?
Hoekom is dit om dit te doen?
ROB: Ek weet nie.
ALI: Goed.
So nou, vertel ons hulle om ons 'n karakter te gee.
Maar dan hoe jy eintlik nie die karakter?
SPREKER 19: Gebruik GetString.
ALI: GetString?
GetChar?
Okay, so wat is die verskil tussen 'n tou en 'n char?
SPREKER 19: Strings is 'n reeks, soos 'n verskeidenheid van karakters.
>> ALI: Cool, ja.
So in hierdie probleem, ons moet net een karakter op 'n tyd om te oorweeg, so
ons net gaan om getChar te doen vir daardie geval.
ROB: Ons kan 'n funksie implementeer as ons wou dit het 'n hele string
en hy het oor die tou en alle klein letters verander na hoofletters en alle
hoofletter onderkas.
Maar hier, ons is net vra dat jy vir 'n karakter.
ALI: So nou het ons die karakter hier, maar dan het ons nodig het om dit te red.
So dan sal ons voeg char c - wat?
SPREKER 20: Definieer die veranderlike.
ALI: Ja, presies.
So ons het ons karakter.
ROB: Ek dink jy kan wees -
jy slegs drie ruimtes in, wat is die rede waarom dit skree op jou.
>> ALI: Okay, koel, nou dat ons stel het tabbing, wat gebeur volgende?
Wat is die volgende stap?
ROB: Wat ons program moet doen, is verander 'n klein letter aan 'n
hoofletter.
Wat as ek toevallig die hash simbool in te voer?
Is dat -
ALI: Dit is 'n goeie simbool.
Ons gebruik dit baie.
ROB: Is dit 'n geldige ding wat ek kan skakel na 'n hoofletter vorm?
SPREKER 21: No.
ALI: No
Ons moet kyk.
Sodat ons kan 'n IF-stelling kontrole as die c is groter as
of gelyk aan die kleinletter "A" -
so as ons kyk na die grafiek, sal jy sien dat dit hier te wees tussen
by 97, en die kleinletter a.
En dit kan enige van hierdie, en in inkremente al die pad af.
En dan is daar z 122.
En dit het tussen hierdie twee waardes om te val.
Maak dit sin?
ROB: So as c is nie tussen 97 en 122 -
of jy moet nooit nodig het om die getalle te gebruik - as c is nie tussen 'a' en
"Z," dan is dit was nie 'n geldige karakter vir ons na 'n hoofletter.
ALI: So in kodevorm is, sê ons dat indien c groter as of gelyk aan enkele
geval kleinletters -
wow, hoe het jy dit sê?
Okay, is groter as of gelyk aan met klein letters 'a', en dit moet bo
die kleinletters "z". So moet dit minder as of gelyk 'z' na onderkas.
Ons maak seker dat dit is tussen die twee.
Dan kan ons voortgaan met ons gelukkige kode.
Wat?
ROB: So ek het gedink ons ​​sou net bly vra, as ons gebeur nie 'n
kleinletter.
ALI: O, ek was nie bewus van daardie.
Jammer.
>> Okay, so as ons gaan om dit te doen as Rob sê, en maak seker dat -
ons vra hulle kan hou, dan wat moet ons doen?
SPREKER 22: [onhoorbaar]
ROB: Ja.
Ons moet gebruik maak van 'n soort van die lus.
Omdat die gebruiker kan 'iets ongeldig 'n ongekende hoeveelheid kere.
Sodat jy kan gebruik om 'n while lus.
Die doel van 'n do-while lus -
letterlik, die enigste keer in jou hele lewe wat jy ooit sal gebruik nie, doen-
terwyl lusse is wanneer jy vra vir die toevoer van die gebruiker.
So is die feit wat ons vra vir die toevoer van die gebruiker hier is 'n wenk dat ons moet
gebruik 'n do-while lus.
En hoekom is dit?
Omdat do-while lus altyd ten minste een keer gebeur.
So wanneer jy vra vir die toevoer van die gebruiker, jy wil dit ten minste een keer gebeur.
En dan as dinge suksesvol was, kan jy hou gaan.
Indien nie, gaan terug en vra weer.
>> ALI: So met ander woorde, ons 'n artikel te doen.
En so het dit vertel om iets te doen.
So printf -
druk die verklaring, die vinnige, en ook die karakter te kry, of poog om
kry 'n karakter.
En dan het ons om te kyk of dit eintlik het dit korrek.
So dan het ons die voorwaardes byvoeg, dan sê ons, terwyl, en dan het ons die
voorwaardelike verklaring.
ROB: Maar nou is ons omgekeer om die trein van denke.
Nou het ons oorspronklik het gesê as c is in hierdie reeks, is dit geldig is.
Nou wil ons dit om te keer en sê as c is nie in hierdie reeks, dan het ons
moet dinge terug om weer te doen.
ALI: "O, ja.
ROB: Dus, terwyl dit is nie waar nie, ons wil om terug te gaan en
vra vir 'n ander karakter.
Nie almal sien dat?
Vrae oor hierdie?
Okay.
>> So nou het ons 'n geldige karakter wat ons kan n hoofletter.
ALI: So dan wat die volgende stap vir uppercasing dit?
SPEAKER 23: Voeg 32.
ALI: Jy voeg -
jammer, wat?
SPREKER 23: Kan jy nie net voeg 32?
ROB: So ja, nie in terme van die magic nommers.
Jy moet slegs gebruik word om enkel-quote stuff.
SPEAKER 23: Okay, goed
Rob: Maar kan jy 32 -
ALI: Hoe het jy die getal 32, dink ek, is wat ons sê.
SPREKER 23: [onhoorbaar]
ROB: So ons kan kom met die nommer 32 saam -
SPREKER 23: [onhoorbaar]?
ROB: Ja.
Maar as ons gaan om dit te doen in die twee stappe wat ons gedoen het voor met
die posisie stuff.
So het die posisie in die alfabet wat c gebeur om te wees is c minus kleinletters
'A'. So as ons in 'n kleinletter 'd', posisie gaan wees 3.
En nou is ons wil dinge te neem na die hoofletters verskeidenheid van dinge.
So nou is ons nuwe c gaan die hoofstad "A" plus posisie wees.
Mense so sien hoe dit bring ons -
ons beweeg van die kleinletter reeks, die presiese diepte ons was in daardie
reeks, en om af te gaan in die hoofletters reeks, en gaan so ver
weer in dit, wat gaan aan die dieselfde karakter te wees, maar nou
uppercased.
ALI: En vir die mense wat deur hoe verward was hy net gesê 32,
basies combineerde hy beide van hierdie in 'n verklaring.
So 'n gelykwaardige manier van skryf om te sê jy kan net soort van
plaasvervanger posisie, die c minus 'n, "en sit dit hier.
So wat hy gedoen het, het ek moenie -
char newc = hoofletters "A" plus c minus onderkas 'a'. En as gevolg van algebra,
jy kan beweeg hulle rond.
Jy kan ook sê dat jy dit kan rondbeweeg so char newc = hoofletters "A"
minus onderkas 'n "plus c.
En dit, sal jy sien as ons gaan terug na die kaart.
Ons het 'n hoofletter A is 65 en onderkas a 97.
So 65 - 97 -32.
>> Hi.
Neem 'n sitplek.
Oh.
Jy kan hier sit.
Cool, okay, awesome.
Welkom artikel.
Jy sal sien dat die verskil is 32.
So dit is waar hy dat die getal het.
Maar dit is nie, soos Rob sê, die beste manier om dit te doen, want dit het die vreemde
magic number verwarring.
ROB: Jy moet gebruik kapitaal 'n minus onderkas 'n.
Jy moet nie net reguit 32.
SPREKER 24: Waarom is dit nou weer?
Hoekom moet jy nie gebruik 32?
ALI: As ons dit gedoen het, sou dit char newc = -32 + c.
En as jy sien nie enige van die res van dit, as dit al is weg, en jy
sien net hierdie enkele lyn, hoe weet jy wat die negatiewe 32 is?
Dis net uit plek.
ROB: So jou program sou heeltemal fyn werk.
Dit is net 'n styl ding.
Iemand gaan in en om jou kode te lees, hulle is soos wat beteken 32 beteken?
Miskien het hulle moenie -
Ek sou dit waarskynlik nie dadelik besef dat 32 gebeur om te wees
verskil tussen 'n kleinletter en 'n hoofletter, hoewel
ons gaan daardie feit te gebruik in die volgende probleem.
32 -
jy kan 'n kommentaar te verlaat bo dit sê 32 is die verskil tussen
'A' en 'n '. Maar op daardie punt, waarom nie net 'A' en 'n ', en jy gebruik
hoef nie die kommentaar.
>> ALI: Dit is net die maniere bogenoemde is dit is 'n baie skoner, styl-wyse.
En so, omdat jy net begin programmering -
of ek dink nie, want jy is hacker edi - never mind.
Dit is net 'n goeie manier om te hê -
dit is beter om beter styl te hê.
Dit is makliker om vir ander mense te lees.
ROB: Jy moet nooit die ASCII-tabel nodig om te onthou, ooit.
Jy moet net in staat wees om die enkele aanhaling karakters te gebruik.
Vrae?
ALI: Almal goeie?
ROB: Goed.
Sodat die volgende probleem is aansienlik.
So die volgende probleem vra ons -
ALI: Die volgende probleem vir ons vra om dieselfde ding te doen nie, maar om te gebruik
bis-operateurs.
ROB: En natuurlik, ons het nie gesien bis-operateurs nie.
So sal ons nou bespreek hulle.
ALI: Wees opgewonde.
Hulle is super fun.
>> ROB: So het die gereelde operateurs, soos x plus y, minus, maal, verdeel.
ALI: Tik dit in hierdie vinnige.
Rob: Daar is ook%, as jy dit nie gesien het, wat jy kan gebruik deur die
persent simbool.
Maar ons sal nie gebruik vir hierdie probleem.
Ons wil bis-operatore te gebruik.
Nou onthou, ons het dit in lesing een.
Ek is nie seker as ons binêre as dit nie bespreek het.
Maar onthou dat elke enkele getal word verteenwoordig -
wel, alles -
is verteenwoordig in 1'e en 0'e in binêre.
So dit beteken dat as ek sê die getal 8, Ek weet toevallig dat dit is
soos, 1000.
Wat bis-operateurs laat ons doen is om te werk op hierdie stukkies -
is direk op hierdie stukkies.
Nou is ek nie meer doen in terme van agt.
Ek doen in terme van 1000, en ek wil dinge om te doen met dié
individuele stukkies.
So Ali het geskryf die bis-operateurs, maar that's -
Die getal 8 sal ons gebruik as een van ons 'n voorbeeld.
En die binêre voorstelling is 1000.
Ons sal 'n ander nommer, 5 -
eintlik laat gebruik 9 en 5.
En die 5 se binêre voorstelling is 00 -
0101.
ALI: Is almal goed op?
Die binêre dinge?
Dit was van die eerste lesing?
>> ROB: So selfs al is jy nie heeltemal op die top van hoe dinge om te skakel na
binêre, dit is nie heeltemal belangrik is vir hierdie probleem.
Ons sal gebruik word, maar jy sal baie meer kanse om uit te vind hoe om
draai vinnig dinge in binêre.
So met behulp van 9 en 5, nou het ons ons bis-operateurs.
O ja, en ook, 9 en 5, as dit 'n heelgetal is, dan is dit regtig is 32 stukkies,
wat beteken dat ons soos 0, 0, 0, 0 'n baie keer, dan
101 op die bitter einde.
Dit is net omdat, maak nie saak wat jy doen, in heelgetalle, 32 stukkies.
Net omdat ons moet net vier stukkies 9 te stel beteken nie dat ons nie '
gebruik die ander 27 bisse vir net 0e.
ALI: Net om te verduidelik, een van hierdie getalle wat is 'n 0 of 'n 1 is 'n bietjie.
Hierdie een is 4 stukkies.
Soos so Rob gesê dat die masjien stoor dit in 32.
Sodat hulle wil hê dat 32 van óf 'n 0 of 'n 1.
Koel?
ROB: Die bis-operateurs.
Die eerste een wat ons sal hanteer, laat ons dit doen.
So as ons dit doen 9 & 5.
So what & doen, bietjie vir bietjie, dit vergelyk die stukkies van die twee getalle
en indien beide van die getalle 1, dan is dit sal terugkeer 'n 1.
As 'n mens is 'n 0 en die ander is 'n 1, of albei is 0e, dan is dit terug 'n 0.
Sodat jy kan dink dit as jou logiese ands.
Soos jy nodig het waar en ware ware om terug te keer, maar ware en valse vals is.
So dit is die dieselfde ding, maar nou het ons te doen het met dit met net stukkies.
>> ALI: So as jy kyk na hierdie, jy het 1 -
jy sal hulle lyn, so sal dit wees 1 en 0.
Het julle ouens dink wat sou wees - wat sal dit evalueer aan?
SPREKER 25: 1.
ALI: Cool.
Of nie.
Jammer.
Dus beteken wat sin maak?
So, wat is die gesamentlike antwoord weer?
Jammer.
So indien ons het 1 en 0, dan is wat kry jy?
ROB: So jy dink van hoe jy dit sê en hardop.
As jy het twee stukkies, X en Y, wat jy nodig het x en y 1 ten einde dit
te evalueer na waar - of, ten einde dit te evalueer 1.
As x of y is 0, dan is dit evalueer vals of 0.
LUCAS: Dit is goed om ook te onthou dat 1 is waar en 0 is vals.
So as jy 'true & vals, is dit vals.
Maar dan, true & ware, ware.
Vals en onwaar is, vals is.
ALI: Ons het true & vals.
So 1 en 0.
So dan weer, jammer, een keer?
SPREKER 25: Dit sal wees 0.
Ja, cool.
En dan het ons 0 & 1 -
SPREKER 25: [onhoorbaar]
ALI: Ja.
Sodat jy kan altyd ruil hulle in -
Dan as jy het 0 en 0?
SPREKER 4: 1?
0?
ROB: So dit is 0.
Dit is nie dat beide getalle dieselfde te wees.
Dit is dat beide getalle nodig het om te wees 1.
ALI: So het albei om waar te wees vir dit om waar te wees.
So dit is 0.
En dan moet jy 1% 1, wat is?
ROB: Dit is redelik goed getalle.
Hulle het alle moontlike -
ALI: Goeie werk, wow.
Okay, cool.
So beteken dit sin maak vir almal?
>> ROB: So nou sal ons doen |.
En dit gaan baie soortgelyk te wees, maar nou in plaas van x en y hoef te
1 ten einde dit te evalueer aan die een, nou is dit is net x of
y moet wees 1.
ALI: So 1 | 0 evalueer -
KLAS: 1.
ALI: Cool.
0 | 1 evalueer -
KLAS: 1.
ALI: Cool, en dan 0 | 0 -
KLAS: 0.
ALI: Ja, en dan 1 | 1 -
KLAS: 1.
ALI: Cool.
So dit is soos twee bis-operateurs.
Awesome.
ROB: So nou sal ons doen ^.
ALI: moet ons doen almal van hulle?
ROB: Ja, want ek dink ons ​​gaan om dit te gebruik -
met behulp van hulle almal.
ALI: Goed.
So -
ROB: Ek dink dat ons nie hoef te.
ALI: So ^ werke in wat jy het presies een ware en 'n valse.
^ Beteken eksklusiewe OF.
Dus is dit nou nie -
indien x en y is albei 1, is dit nou vals.
Dit is die verskil tussen ^ en |, is dat of jy kan hê, as x
ware of y waar is, dan het ons dit goed.
Nee, ^ sê as x is waar, y moet vals wees, of anders is dit nie waar nie.
Het jy 'n vraag?
>> SPREKER 26: [onhoorbaar]
ALI: Ja.
Dit is soort van 'n soortgelyke.
ROB: Ja, so wanneer jy aan dat die lae-vlak hardeware stuff, dit is
die aard van die bedrywighede wat jy te doen het met.
By die hardeware vlak, sal jy slegs handel met stukkies.
Jy gaan nie met getalle.
ALI: Okay, vir ^, of as jy 1 ^ 0, moet dit wat evalueer?
KLAS: 1.
ALI: Cool.
As jy '
0 ^ 1? KLAS: 1.
ALI: Cool.
0 ^ 0?
Cool.
En dan 1 ^ 1?
KLAS: 0.
ALI: Cool, awesome.
Die volgende een -
ROB: Ek dink dit is al wat ons het om te hanteer.
Ons sal net doen hierdie.
Ali: Die enigste tyd wat ons sal moet doen -
ROB: O, dit sal vir die laaste probleem.
SPREKER 27: Wag, weer?
ALI: Jammer, wat was jou vraag?
>> SPEAKER 27: Kan jy verduidelik dat weer?
Die ^?
SPREKER 27: uitsluitlike - ja.
ALI: So, wat die eksklusiewe OF beteken dat daar om eksklusief te wees
een ware en 'n valse, so een 1 en een 0, teenoor OF, kan jy -
een van hulle het om waar te wees, of albei van hulle waar kan wees nie, want dit
te evalueer waar.
SPREKER 27: So 0 en 0 sou vals wees.
ALI: Ja.
Maar as jy 1 |
1, sou dit evalueer aan ware.
Maar as jy 1 ^ 1, soos ons gedoen het, wat evalueer na vals.
Want dit is nie uitsluitlik een is waar.
ROB: En hierdie mag of mag nie nuttig wees, maar kennis dat die ^
gelyk is aan net om die |
minus die.
En jy kan eintlik dink dit op hierdie manier.
^ Is net ORing alles saam, maar die uitneem van enige van die stukkies waar
beide was waar.
So & retouren alles waar beide was waar.
| Terugkeer alles waar een of albei, was waar.
So af te trek wat uit die | gee jou die ^.
ALI: Enige vrae?
Dit was 'n baie inligting.
Almal goed?
>> ROB: Ons kan gaan oor die volgende mense vir die volgende probleem, streep
hoe laat is dit?
Hulle hoef nie tot die volgende probleem.
ALI: Ek het gedink dit was hierdie een.
ROB: Dit is nie.
ALI: Is jy seker?
ROB: Ja, ek is positief.
ALI: Hoekom het ons nie begin om die volgende probleem te doen?
Die probleem is, weer, om dit te verander van onderkas na 'n hoofletter, en dit
bis-operatore te gebruik.
ROB: So sal ons -
Kom ons begin met die binêre voorstelling van 'A', die hoofstad 'A',
wat 65.
So in binêre -
so 'A' = 65, wat = in binêre -
Ek gaan om te mors die getal van 0e.
ALI: So wat sin maak vir almal?
So, 1, geen 2s, geen 4s, geen 8s, geen -
geen 16s, geen 32s, en dan een 64.
ROB: Ja, ek dink dit is een te veel 0s.
ALI: Jammer.
>> ROB: Okay, so ons het die 64 stel, en ons het die 1 stel, en die kombinasie van dié
saam, kry ons 65.
ALI: Cool bone?
ROB: So nou, onderkas "A" -
KENNISGEWING 97 -
wat is die verskil tussen 97 en 65?
SPREKER 28: 32.
ROB: Ja.
So dit is 32, wat is sy eie bietjie, sodat gaan wees 110.001.
En dit gaan om waar te wees vir alle moontlike karakters.
So as ons dink van "D", wat gaan wees 68, wat gaan wees 1.000.011.
En dan kleinletter 'd' gaan wees 68 plus 32, wat is 100, wat
gaan dieselfde ding wat dit was, net daarby die
32 weer, so 1.100.011.
So is die verskil tussen 'n hoofletters en kleinletters brief is net daarby
dat 32-bis posisie.
SPEAKER 29: Is dit nie 1.000.100?
ROB: Wag, dit is 100 -
iets wat ek verkeerd gedoen het.
Dit was nie waar nie.
Ek het gedink dat dit 'n verskil van 3, so dan het ek net vas
die binêre 3 aan die einde.
Dit moet reg wees.
ALI: Dankie.
Goed vir die wys dit uit.
Dit was 'n skerp.
Alle reg, is dat die mense duidelik?
>> ROB: Die verskil tussen die hoofletters en kleinletters weergawe is
altyd net gaan wees 32, en so dit is altyd gaan om 'n bietjie
wat omgekeer moet word om tussen die twee te verander.
ALI: So in daardie geval, weet wat die verskil tussen die hoofstad A en
die kleinletter 'n is 'n goeie ding.
Nie in jou kode, maar konseptueel ten minste, dit is goed.
Sodat julle kan voort te gaan en die kode wat in Spaces nou.
Of moet ons bespreek dit net?
ROB: Ons kan net bespreek dit.
Ek weet nie.
Julle ouens kan probeer.
Praat onder jouself vir 'n bietjie.
Ons gee jou 'n kans om dit te kodeer.
[INTERPOSING STEMME]
ALI: - is cool
SPREKER 30: Dit is soos hacker komedie.
ALI: Ja, ons is maar net die nuus vertel, gaan deur dit.
>> Rob: En ons is terug.
ALI: Dit is soort weird.
Ek voel soos ons moet 'n CS50 nuus stasie en ons kon
eintlik sit soos hierdie.
ROB: Hacker News.
ALI: Hacker News 50.
ALI: Voel vry om enige vrae te vra as jy verward.
ROB: Is enigiemand vas?
ALI: Ja, dis 'n goeie ding.
ALI: Wag, jy is vas in jou stoel?
Oh.
Ek was 'n bietjie bekommerd.
ROB: Omdat ek net besef dat ons gaan wil
ander bis-operateur.
Vir nou, laat ons net sit hoofletters na onderkas.
ALI: Jammer, ons het almal daardie aankondiging?
Ons gaan om te gaan van hoofletters na onderkas.
ROB: Dan sal ons bespreek kleinletter reg na 'n hoofletter na.
O, nee.
Ons het 'n fout in hierdie, wat, dink ek, ons het nog nooit probeer om te hardloop.
Watter een is net dat char c buite die lus verklaar moet word, want
die omvang daarvan is beperk in die lus.
SPREKER 32: In hierdie geval, is dit verkeerd om 'n nommer te gebruik?
ROB: Eh, jy hoef nie te.
As ek gewaarborg dat kapitaal "A" - of onderkas 'n "minus kapitaal 'A'
was presies 'n bietjie, maar dat jy nie weet dit is 32 -
dinge sou net so goed werk as dit was die 16 bit wat omgekeer - of
nee, ek dink dit wouldn't -
of die 64-bit is omgekeer, moontlik.
Maar jy moet nie nodig om te gebruik 32.
Jy kan plaas onderkas "'n minus kapitaal 'A'.
>> SPEAKER 32: Goed.
Wat jy kan doen as jy voel soos jy te veel skryf is dat jy dit kan definieer
aan die bokant.
Sodat jy kan wees soos, int verskil = onderkas "'n minus kapitaal 'A'. En
dan kan jy tik verskil plaas.
Dit is geldig.
Maar net die gebruik van die getal 32 is 'n soort van -
SPREKER 33: Selfs al is dit as gevolg van die feit dat dit is die 32 bit?
ALI: Ja.
ROB: Daar kan wees -
die enigste waarborg wat ons het jou nodig om te maak, is dat die verskil tussen die
kleinletters en hoofletters is 'n bietjie.
Dit moet nie saak dat dit gebeur met die 32-bis wat omgekeer.
Vir tyd oorwegings, sal ons begin gaan oor hierdie.
Dit is goed as jy nog nie klaar.
Moenie bekommerd wees oor dit.
ROB: Veronderstel c is 'n hoofletter -
ons het nie te aanvaar c is 'n hoofletter.
Ons weet c is 'n hoofletter na hierdie while lus -
do-while lus.
Dus beteken dit dat dit lyk iets soos hierdie 'A'. So as ons wil om dit te bring
'A' tot hierdie "'n", wat ons nodig het om te doen?
So, hoe sit ons en draai die bietjie?
ALI: Hoe draai ons dit?
>> ROB: So weet ons dat ons wil die 32 bietjie om te draai.
So wat doen 'n "minus" A ", of ons kan skryf 32, maar -
darn dit, dit is die ander manier om.
ALI: Okay so Rob hier bereken dat die getal, magie nommer 32.
So hy is om uit te vind waar daardie bietjie flip gebied sou wees.
En wat dan sit ons waar die vraagtekens is?
ROB: Hoe draai ons daardie bietjie?
In terme van die hoofletter, is dit 'n 0, en ons wil 'n 1.
SPREKER 34: |.
ROB: Ja.
So dit is ons sê ons neem 'A'. Ons ORing dit met 0 -
1000 -
en dat =.
ALI: Beteken dit sin maak vir almal?
Ons kan gaan bietjie vir bietjie deur dit as jy wil.
SPREKER 35: Is jy [onhoorbaar]?
ALI: Waar is die minus teken?
ROB: O, jy bedoel hier?
ALI: "O, ja.
ROB: So ek dink dit is ons.
Ons kan sê 32, en nou is ons net die gebruik van bis-operateurs.
ALI: Ons hou nie van magie nommers.
Ons is nie van plan om dit te doen.
Ook het ek dink ons ​​moet net gebruik om 'n bis-operateur -
SPREKER 36: As jy 'n ^ A, sal jy 32?
SPREKER 37: Ja, ek dink -
ROB: Ja jy wil.
ALI: Dit is hoe jy dit sou gedoen het om uit te gaan
van kapitaal te onderkas.
>> Nou kan iemand my vertel waarom Rob en ek verander die vinnige en hoe ons gaan
van hoofletters kleinletters, in plaas van onderkas
hoofletters soos ons gedoen het voor?
Is daar iemand enige idees waarom dit dalk moeiliker wees?
ROB: So ons wil doen -
ALI: Ja, gaan voort.
SPREKER 38: Die | operateur was net regtig goed vir die toevoeging.
ALI: Ja, presies.
ROB: So wat ons wil doen in die geval kleinletters na 'n hoofletter is,
sit hierdie "A" -
Daarom wil ons in sommige getalle hier te sit en 'n paar operateur gebruik sodat dit kom
aan kapitaal A. Ons is waarskynlik nog steeds met behulp van 32 op een of ander manier, maar nou hoe ons
kry om dit te kom uit hierdie?
So c -
oh, wil ek nog steeds dit ook -
ALI: So nou as ons die omskakeling van kleinletters weer hoofletters, dan het ons
doen ^ werking, soos julle sê.
ROB: Daar is ander maniere wat jy kan dinge doen.
'N baie van die bis-operateurs uiteindelik baie maklik te definieer in terme van
ander bis-operateurs.
So ek gaan ^ of glad nie gebruik nie, maar ^ heeltemal fyn gewerk.
>> ALI: Okay, so ons gaan om te gaan op die laaste probleem, wat is aan basiese -
die laaste probleem is om iets te omskep in binêre.
So, byvoorbeeld, jy het 50, en dan moet jy skakel dit om na
binêre, wat 110.010.
En ek dink julle weet almal oor die binêre van die lesing.
En jy is ook nie veronderstel om 'n leidende 0'e te sit in dit.
ROB: Jy kan ignoreer dat 'n deel vir nou.
Die eerste pas, kan jy doen dit so dat daar is 'n toonaangewende 0s.
En dan kan ons verander dat geen voorste 0'e te hê, as ons tyd.
ALI: So moenie bekommerd wees oor dat.
Net probeer om te kry in binêre.
'N goeie plek om te begin sou wees -
ROB: Ons nodig het om te vra vir 'n heelgetal.
ALI: O ja, dit is 'n goeie een.
Ons kan begin met.
So jy kan verander die instruksielyn.
So in plaas van 'n karakter, nou het ons te doen met heelgetalle.
Koel?
>> ROB: En nou, wat is ons do-while toestand gaan wees?
Dit vra vir 'n nie-negatiewe heelgetal is.
ALI: Wanneer wil ons hou waarna die gebruiker vir iets anders?
Wanneer dit kleiner as 0.
ALI: Right.
ROB: Terwyl ek is minder as 0.
ALI: Nou wil ons dit te omskep.
Het julle enige idees van wat om te doen nie?
Enige Inklings?
Ja.
SPEAKER 39: Het ons om dit te omskep, of kan ons net print sommige 0'e en 1s
wat sou die regte getal wees?
Kan jy dit doen vir 'n lus en tel deur magte van 2?
ROB: Ja.
Jy hoef nie i om te skakel na sy binêre -
die binêre voorstelling van i sal nie pas binnekant van i.
Jy hoef net die binêre voorstelling van i te druk.
ALI: Met ander woorde, jy hoef nie te gaan deur die magte van die twee.
ROB: Omdat ek reeds gestoor as binaries, so jy hoef nie te
skakel dit om na binêre.
Net gaan oor sy binêre, en druk dit.
En jy gaan nodig bis te gebruik, want jy wil om te kyk na
die werklike stukkies.
Jy hoef nie bis-te gebruik, maar moet asseblief nie.
En dit is eintlik -
jy kan net doen magte van twee vermenigvuldig met 2.
Ons gaan oor een van die laaste twee binêre bis-operateurs,
wat is hierdie een.
So wanneer jy neem -
>> ALI: Kan jy gaan deur beide van hulle?
ROB: Ja.
So laat ons gaan met 9.
So 9 links verskuiwing 1 -
wat verskuiwing beteken verlaat is net al die stukkies beweeg na links en voeg 'n 0.
So ons beweeg al die stukkies van 9 na die linker-een
posisie, wat gee ons -
So sien ons verskuif alles verlaat, en plaas 'n 0 op die
regterkant.
As ons geskuif het gelaat deur twee, sou ons alles wat links deur twee verskuif,
en voeg twee 0'e in die gapings te vul.
Vraag?
ALI: So dan regs skuif het 'n soortgelyke ding.
As jy het 9 regte verskuiwing 1 dan is jy net besig om alles oor te
die reg, jy verloor 'n syfer, so 100 plaas.
ROB: So jy dit is goed dat jy die bietjie wat gebeur het om alles verloor
die pad na regs.
Daar is verskillende tipes van reg skofte, maar basies wat jy kan dink
regs skuif as net te verdeel deur 2.
En jy kan dink van links skuif as vermenigvuldig met 2.
So as jy bekeer hierdie -
as jy bekeer 9 verskuiwing 1, wat is gelyk aan 10.010, as jy eintlik het
deur die binêre en uitgepluis het wat dit was, sou dit wees net 18.
Ons het net vermeerder deur 2.
1001 links skuif 2 gaan wees 36.
Ons vermenigvuldig deur 4.
Okay, koel, so dit is 'n handige bis-operateur vir hierdie een.
Meer verwarring?
Het julle ouens wil om dit te probeer?
Of ons kan dit net reg in te spring en begin dit?
ROB: Ons moet seker reg in te spring
ALI: Ja, okay.
Rob: En deur dit loop saam.
>> ALI: Wel, ek sal net gaan in dit.
So as hy in die begin gesê het, gaan ons net gaan deur bietjie vir bietjie by.
So ons gaan 'n lus nodig.
Is daar iemand het 'n idee van die beste soort lus om te gaan deur middel van hierdie?
Ons het terwyl loops, do-while loops, loops.
SPREKER 40: do-while lus?
ROB: So onthou wat ek gesê het voor oor, ons is slegs met behulp van do-while
loops toevoer van die gebruiker te kry.
Jy sal mooi nooit veel ooit gebruik hulle vir enigiets anders nie.
ALI: Die probleem met die do-while loops is dit nie iets voor dit kontroleer of dit vir
die toestand.
Dus, kan dit iets sleg doen -
wil hê, seer -
iets doen wat nie moontlik is nie.
So jy wil nie eers te kontroleer.
ROB: Daar is 'n baie van die gevalle waar jy kan gebruik do-while loops, maar mense
nie van u verwag om hulle te gebruik nie, tensy dit is die toevoer van die gebruiker.
Dus het ons gebruik om ons do-while lus i te kry.
Hoeveel keer is ons lus gaan om te wil loop?
Ons wil loop oor elk van die stukkies van i.
Hoeveel stukkies in i?
SPREKER 41: 32.
ALI: Ja.
ROB: So daar is 32 bisse.
Ons wil nie om te sê 32.
Ons wil plaas sizeof om te sê -
wat het jy gesien dat in die klas nie?
ALI: Nee.
ROB: Waarom sê dat om te gebruik -
sizeof (int) keer 8 -
ALI: So, sizeof is -
>> SPREKER 42: [onhoorbaar]
ALI: Interessante.
So, sizeof is 'n ingeboude in die C-funksie, waar dit net jy die vertel
aantal bisse in -
ROB: Bytes.
ALI: Bytes, jammer -
die aantal grepe wat 'n veranderlike het 'n waarde op te slaan.
So ek dink hy het in die klas, dan 'n int 4 grepe miskien.
Koel?
ROB: Maar jy moet nie nodig om te weet dat 'n int 4 grepe.
Jy moet in staat wees om te sê -
jy moet gebruik sizeof (int) 4 bytes te kry.
En dit is eintlik belangrik is vir 'n paar dinge.
Dalk nie 'n int 4 grepe.
Op 'n ander rekenaar, kan 'n int 8 grepe.
So Jou program sal nie werk op die rekenaar omdat jy hard-gekodeerde 32
stukkies toe op die rekenaar gebeur met 64 stukkies.
ALI: So jy het die totale aantal bisse wat jy wil om dit om te keer.
Rob: En die verskil tussen 'n greep en 'n bietjie is dat daar
is 8 bisse in 'n greep.
So sizeof (int) terugkeer 4 grepe, dan het ons dit te vermenigvuldig
deur 8 32 stukkies te kry.
>> ALI: Okay, so ons weet die maksimum en ons weet wat ons wil om te gaan -
ons wil om te gaan deur almal van hulle.
So ons wil om te gaan van 0 tot numBits.
So nie almal weet hoe om die lus vir dit te skryf?
Iemand?
SPREKER 43: [onhoorbaar]
ALI: So jy wil die aantal i van die nulde bietjie te verken
eerste bietjie, die tweede bietjie, die derde bietjie, al die pad na numBits.
Die maksimum aantal van die stukkies wat jy kan kry.
ROB: Wat is die gemeenskaplike lus Ons gebruik wat ons wil iets x keer te doen?
ALI: Vir.
Perfect.
So ons het.
En dan sal ons skep 'n Iterator, wat nie gaan wees i.
ROB: j.
ALI: J = 0.
So ons sal begin by 0.
En dan moet ons gaan om die toestand te hê om seker te maak, terwyl jy
gaan deur dit elke keer -
[INTERPOSING STEMME]
ROB: j.
ALI: j is minder as numBits.
So ons wil nie die werklike gelyk aan een te doen, want hulle is numBits
totaal, en ons begin by 0.
So ons eintlik gaan hê -
SPREKER 44: O.
ALI: Die indekse eindig nie by numBits minus 1.
ROB: Ons benoem die stukkies 0 tot 31, het ons etiketteer nie van 1 tot 32.
ALI: En dan moet ons gaan elke keer te tel een vir een, want ons wil
check elke enkele een.
So ons gaan j + +.
>> SPREKER 45: Waarom doen julle dit?
SPEAKER 46: Waarom gaan jy deur elke bietjie?
ROB: So ons wil om te gaan deur elke bietjie en -
So laat ons sê ons het 'n paar nommer.
ALI: 68.
ROB: Ons kan gebruik 68.
So het die binêre gaan wees 100.100.
So, dit is binnekant van i en ons wil om te gaan oor elk van hierdie stukkies.
Is dit 'n 1?
Druk 1.
Is dit 'n 0?
Druk 0.
Dan gaan ons na die volgende bietjie.
Is dit 'n 1?
Druk 1.
Is 'n 0?
Druk 0.
ALI: Cool, okay.
Nou is ons op die regte indeks vir waar daardie bietjie.
Hoe kan ons daardie spesifieke een gaan?
Kom ons sê dat ons by j = 0, so ons wil om seker te maak die 0-indeks van die bietjie.
So, in hierdie geval, hierdie een.
>> So nou hoe ons te werk gaan check - oh, sou dit hierdie een wees.
ROB: Ja.
ALI: Jammer.
Hoe sou ons, in 'n sekere sin gaan om seker te maak dat een?
Hoe sal ons kyk of dit 'n 0 of 'n 1?
Wel let's -
KLAS: 1?
ALI: En?
Ja.
ROB: So laat ons sê ons het reeds 1.
Dan is hierdie &, sal dit terugkeer of dit was 'n 1 of 'n 0.
ALI: Sodat ons kan gaan.
En ons kan doen as julle sê, doen die funksie.
ROB: int -
hoe ek wil om dit te sê -
isone = i.
En vir die eerste bietjie ons gebeur om te kyk na, doen ons B & 1.
Nou wat gaan ons wil en vir die tweede bietjie?
SPREKER 47: 2.
ROB: Ja, die tweede dat ons op 2.
ALI: Jy sal sien dat die 1 het verskuif na die linker een.
So het ons geleer enige bis-operateurs om daardie funksie te doen?
ROB: Die volgende een -
ALI: Ja, reg, presies.
So dit is 'n links skuif.
In plaas van altyd kontroleer met 1, ons gaan om dit te skuif.
En hoeveel keer gaan ons dit te skuif?
As ons die nulde 1 kontroleer dan gaan ons dit te beweeg nul.
Ja, presies.
So jy het skuif dit deur j.
Perfect.
So nou weet ons -
ons het hierdie int as dit is 1, en dan -
so Rob se soort van bedrog hier -
en so nou is hy gaan voort en hy net sê dat as dit werklik is 1,
omdat 1 evalueer waar, so ons het nie om te sê ISF isone gelyk aan 1 -
so as isone, dan druk ons ​​1, en andersins is ons druk 0.
>> ROB: So ons program het 'n algemene fout.
Wel, vrae op die eerste.
SPREKER 48: Kan jy ooit die isone binne die vier werking deel en
dan skuif dit self as die laaste deel?
So isone gelyk aan 1 en dan -
ROB: Ja, jy kan.
Ons kan eintlik wys dat wanneer ons los die fout wat ek nou gaan
Bespreek met julle almal.
Let op die einde gaan ons oor dinge.
Gegewe hierdie binêre voorstelling, is ons begin met die nulde bietjie.
As dit 'n 0, dan is ons druk -
Wel, dit is 'n 0, so ons is druk 0.
Dan gaan ons na die tweede bietjie.
Dit is 'n 0, so ons druk 0.
Dan gaan ons na die derde bietjie.
Dit is 'n 1, sodat ons druk 1.
ALI: So dit is agteruit.
So hoe gaan jy ouens stel voor dat ons los dit en gaan na die ander kant?
SPREKER 49: [onhoorbaar]
ROB: Ja.
So in plaas van gaan van 0 tot numBits, sal ons gaan uit numBits stukkies 0.
ALI: So [onhoorbaar]
kan altyd die ander kant.
ROB: NumBits minus 1, want dit is die laaste nubmer -
ALI: Omdat dit gaan 0-31.
En dan sal ons altyd seker maak dat dit is groter as 0, sodat jy nie gaan nie
te ver na regs.
En dan sal jy altyd deur 1 aftrek om te gaan na die regterkant.
>> ROB: So nou is ons het 'n omgekeerde lus, en die nommer is terug in druk
in die regte manier.
SPREKER 50: Het jy nie die verskuiwing ding te verander?
ALI: So no.
ROB: Ons doen presies dieselfde, behalwe nou
in die omgekeerde volgorde.
So in plaas van om die verskuiwing deur numBits minus 1 ongeag om dit te kry
bietjie is, in plaas van dat dit die laaste te doen, sal ons net doen dit eers.
Deur die omkeer van hierdie hier, het ons die volgorde van alles
wat gebeur binne-in.
Maar ons wil nie om te verander wat gebeur binne at all.
ALI: Maak dit sin?
Verwerking?
Okay, iemand anders het so enige ander konseptuele vrae?
ALI: Voordat ons gaan in sy punt wat -
ALI: Alle reg, goed gaan.
Rob: In plaas van die gebruik van j te wees van ons -
in plaas van die gebruik van j altyd te skuif, soos die een links skuif j, ek dink wat
jy sê, is hou nie, j gebruik self.
So is dit vir j -
Ek dink dit is die harde - j = 1 << 31.
Is dit wat ek wil?
Ek dink dit is << 31.
j> = 1.
j >>, >> isone, i & j -
so moet julle nou in plaas van die gebruik van -
ALI: Jy voortdurend in beweging j in plaas van 'n
indeks om dit na te gaan.
Dit is nie so sleg nie.
Ons is met behulp van 'n soortgelyke soort van logika.
So as jy gaan terug -
oh, maar dit gaan om dit te verloor.
Goed, jy is net gaan om dit weer te tik.
As jy sien dat ons 'n 1 << j bedrag van die tye, en ons was
verhoog van j elke keer deur 'n inkrement, maar hierdie keer in plaas
hulle doen die inkrement van j by die top binne die lus.
So in plaas van altyd beweeg dit af -
ROB: Die heel eerste iterasie van die lus, ons het j is 10.000.
Die volgende iterasie van die lus is 01.000.
Die volgende iterasie is dat.
En die 1 is net gaan om voortplantingsmateriaal af te hou totdat ons getref die baie
einde, waar dit nou is.
Die volgende een, is die 1 gaan word gestoot af, en j is nie meer 'n groter
as of gelyk aan 1.
Ek kon ook sit groter as 0, dieselfde verskil.
En dan is dit is dit.
Vrae?
Ja.
>> SPREKER 51: [onhoorbaar]
ROB: So wat is dieselfde as -
het jy gesien j + = 3?
So, dit is dieselfde as j = j + 3?
Jy kan dit doen vir feitlik enige operateur in C. So j >> = 3 is
gelyk is aan j = j >> 3.
So dit werk ook met bis-operateurs.
En ek moet nie gestel het 31 hier.
Ek moet sit het numBits - 1.
ALI: Yay, geen magic nommers.
Okay, dis 04:00 al, so as jy ouens het om te gaan - maar doen dit maak sin?
Het julle enige ander vrae?
ROB: Ek is ook van plan om te gooi in dat as ons wou -
het hy drieledige operateur bespreek by almal?
ALI: No
Dis oukei.
ROB: So jy kan kyk na dit vir die volgende keer.
ALI: Goed, regtig?
Nou is jy net te wys af.
ROB: Nee, nou it's -
dit is wat mense belangstel kry, en nou het hulle gaan kyk na dit.
So nou, dit nie dieselfde ding, in een stap.
So eers, I & J 1?
Is dit waar?
As dit so is, druk 1, anders, druk 0.
ALI: Maar om dit te doen die ander kant is perfek boete sowel.
Dit het dieselfde logika.
So dit is nie soos die een is -
ROB: Op hierdie punt, kan ons ontslae te raak van daardie kode tussen krulhakies, want dit is net
'n een-lyn loop.
ALI: Okay, so beteken dit sin maak?
Dit was soort van 'n sprong.
Maar dit was net soort van die sintaksis, meer so.
>> Koel?
Enige ander vrae?
ROB: Alle reg.
ALI: Alle reg, cool.
Dankie vir die artikel.