[Powered by Google Translate] [ELEKTRONICKÉ STATICKÉ SOUNDS]
ROB: Dobre, takže to, čo sme práve vás priviedlo, je CS50 priestory.
ALI: Počkaj, počkaj zálohovať.
Vitajte v sekcii!
ROB: Vitajte v sekcii!
ALI: Yay!
ROB: Supersection!
ALI: Som Ali a to je Rob.
Dobre, teraz budeme vysvetľovať Spaces.
ROB: Takže to, čo sme práve vás priviedlo, je CS50 priestory.
Budete používať to veľa vo svojich oddieloch tejto semester.
V podstate, sme už mali by ste si stiahnuť spotrebiče.
A vy môžete myslieť CS50 priestorov ako webové rozhranie hovorí k spotrebiču
že máme na nejakú serveri niekde.
Takže si môžete spustiť kód v tomto rozhraní, a budeme
pozrite sa, ako robiť veci.
Môžete sa tiež pozrieť na kód iných ľudí v sekcii, a -
ALI: A ako niektorí ľudia zistili, môžete chatovať ľudí na strane.
A my všetci vidíme to, taky, takže je to vzrušujúce.
Poď, poď a sadni si.
Posaďte sa.
>> ROB: Takže, úseky sú -
ALI: Nie, nie, vy chlapci prídu.
ROB: Sekcia sa bude oveľa viac interaktívne tento semester.
ALI: Oh, on je ako -
Oh.
Dobre, v pohode.
Takže ak ste sa práve prichádza, môžete ísť na tento odkaz, ak sa dostanem
tam, práve tam.
Nemôžeme naozaj napísať, pretože nie je doska priestor, ale tento odkaz
tu, choďte na to na svojich počítačoch, a budete zadať CS50
Priestory, ktoré je celkom v pohode vec.
Dobre.
Máte nejaký problém?
ROB: Takže si môžete nájsť problémy -
musíme byť schopní písať to niekde.
Takže ak idete na cs50.net/psets a to je hacker supersection -
a idete do Hacker Edition PSet jeden, pozrite sa na špecifikáciu
niekde na stránke -
>> ALI: Takže v podstate, zatiaľ čo Rob pozerá, čo budeme robiť v
časť dnes je, že je časť problémov -
ROB: - na strane osem.
ALI: - tzv časť problémov -
ROB: Oddiel otázok.
ALI: Je nám ľúto, časť otázok.
A tie sú, čo budeme ísť cez -
tie sú to, čo sme ísť cez dnes v oddiele.
A budeme kódovať ho na CS50 priestorov, a dúfajme, že bude fungovať.
A môžeme si pohovoriť skrze ne.
A vy môžete klásť otázky, kedykoľvek máte pocit, -
>> ROB: Tak to je k dostaniu za bežnou záležitosťou pre väčšinu psets.
Myslím, že s týmto, to hovorí, že nemáte po ruke tieto otázky a
Ale myšlienka je, že tieto otázky sú uvedené na PSet, a môžete prísť
do sekcie majú tieto otázky odpovedal.
Alebo, ak nechcete prísť do sekcie, môžete na ne odpovedať na vlastnú päsť, alebo si
pomoc pri úradných hodín, alebo tak niečo.
Ale to sú otázky, ktoré sa pokladajú príprava vás problémového súboru.
A na hackerské vydanie, môže veľa otázok byť len o
rozšírenie aktuálne SK znalosti.
ALI: Jo, docela veľa.
>> Dobre, takže, je každý na CS50 priestoroch?
Ahoj, poď ďalej
SPEAKER 1: Môžeme vidieť URL ešte raz?
ROB: Jo, to bude jednoduchšie, akonáhle ste vlastne vo svojich oddieloch, a
Vaša TF stačí e-mailom vám URL vopred.
ALI: Yay, posaďte sa.
Existujú miest tu.
Predné nie je tak zlé.
Čo?
Takže, CS50 priestory, sme ako sa tam dostať.
Má niekto nejaké otázky, ako sa dostaneme do - čo?
ROB: Tam to nie je ani žiadna krieda.
[Nepočuteľné]
ALI: Sorry.
Dalo by sa použiť vaše nechty?
Sme vo veľmi low-tech miestnosti pre veľmi high-tech triedy.
Dobre, je každý druh dobré?
Má niekto statických otázky o tom?
Ako som už povedal skôr, budeme prechádzať sekcie otázok v
sa PSet špecifikácie.
Takže je to len pár problémov, ktoré budeme
kód v CS50 Spaces.
Sú všetci dobre?
Dobre.
Dobrý?
ROB: Máte notebook?
ALI: Môžete vyraziť s Lucasom.
Sedí hneď vedľa vás.
Lepenie čas.
>> ROB: Takže, začať s prvým problémom?
ALI: Jo.
Môžeme začať.
Chceš ma -
Môžem ísť.
Takže, pôjdeme do PSet špecifikácie.
Ach, prečo je to -
ROB: Control.
ALI: Dobre, takže ideme do odpovede tieto veci rovnako?
ROB: Oh, yeah.
Takže -
ALI: Oh, všetci ostatní strážneho Robova hlavnú úlohu šortky?
Dobre, v pohode.
ROB: Jo, ja si nemyslím, že by sme nutne predpokladá, aby ste mali
Sledoval ju pred príchodom do tejto sekcie, ale môžeme diskutovať o tých,
problémy už predtým, pretože sú v sekcii otázok vecí.
Takže ak ste na to pozeral, nebojte sa.
Tí, ktorí majú Vyskúšajte a odpovedať.
>> Takže, prvá otázka, čo je pre-procesor, ako sa # include
sa týkajú?
Takže má niekto odpoveď, že?
ALI: Vy môžete hovoriť to.
Iste, choďte do toho.
SPEAKER 2: # include je nejaký pre-napísaný kód, a namiesto toho, aby
skopírovať a vložiť ho do svojho programu, by len hovorím patrí to,
pre-procesor vie, že to tam je, a že by mala pridať ho do
neskôr alebo skôr niečo stane.
ALI: Jo, úžasné.
Cool.
ROB: Takže, keď ste vlastne zostavovaní programu, pre-procesor je to
Prvým krokom.
Kompilácia sa deje v štyroch veľkých krokoch.
Takže pre-procesor je prvý veľký, a to je to chlap, ktorý ide
až do konca a hľadá všetky tieto Kříľek.
A každý riadok, ktorý začína s hash, pre-procesor sa pozerá na to, a vidí
ak to môže spracovať.
Takže # include hovorí pre-procesor pozrieť na nejakú cs50.h
súbor a stačí skopírovať a vložiť jeho obsah do tohto súboru.
Takže si môžete naozaj # include, čo chcete, ale je to väčšinou bude
. H súbory.
Sme sa dostali do # define doteraz, takže na tom nezáleží.
ALI: Jo, sme v pohode na tom jednom.
Má niekto nejaké otázky týkajúce sa, že?
Sme dobrý?
Ďalšia otázka.
>> SPEAKER 3: V krátkej, bolo tam niečo o c i?
Je to dôležité, alebo je to irelevantné?
ROB: O C s pre-procesora.?
SPEAKER 3: Jo, alebo som niečo vymyslieť?
ROB: Takže krátka mohla byť zobrazené pre-spracovanie tohto súboru a
. Výstup do iného súboru c, takže si môžete vopred spracovať tento súbor -
keď stačí spustiť ako, aby ahoj alebo rinčať hello.c, robíte všetko
kompilácie v jednom veľkom kroku.
Ale môžete explicitne to do svojich jednotlivých krokov.
Takže prvý si môžete vopred spracovať.
Potom môžete zostaviť, potom si môžete zostaviť, a potom môžete prepojiť.
Dostaneme sa k týmto tie ostatné.
Ale pre-spracovanie, tak nejako predbežného procesu ju, a potom to ide do
ďalšie. c súboru.
Vzhľadom k tomu, pre-spracovanie naozaj nie je nič meniť.
Je to len banda kopírovanie a vkladanie.
Dalo by sa ručne skopírovať a vložiť sami.
ALI:. A aby bolo jasno, že c je súbor C, tak je to
napísaný v C kód.
Tak to ide z kódu C do C kód.
Si len pridať viac kódu s librou.
ROB: Keď vopred spracované, je to stále platný C súboru.
SPEAKER 3: Dobre.
ALI: Dobrá otázka.
Páči sa mi, že.
Dobre, ďalšia otázka.
>> Čo je kompilátor?
Každý, kto?
Áno.
SPEAKER 4: To sa mení pre-spracovaný kód do zostavy.
ALI: Perfect.
ROB: Áno.
ALI: Cool.
ROB: Tak to je to, čo kompilátor robí konkrétne
keď používate rinčať.
Vo veľmi všeobecnom zmysle, kompilátor je rovnako ako pri kódu v jednom jazyku
a previesť ju do iného jazyka.
Takže v C -
alebo, no, zvonenie trvá kód, ktorý je v jazyku C a transformovať ju do zostavy.
A nemusíte byť schopní porozumieť zostavu vôbec.
Ale to je jazyk, ktorý to previesť ju do.
>> ALI: Dobre.
A potom, čo je assembler?
Každý, kto?
SPEAKER 5: [Nepočuteľné] na binárne?
ALI: Je nám ľúto, čo?
SPEAKER 5: [Nepočuteľné] na binárne?
ROB: Jo.
ALI: Áno.
ROB: Tak assembler -
kód assembleri je naozaj, naozaj blízko na to, čo váš počítač môže pochopiť,
ale nezabudnite, že to nie je úplne rozumieť textu
že je montáž kód.
Musíte previesť do priameho 1s a 0s.
Je to ako priamy prekladateľského procesu.
Mohli by sme vám tabuľku, ktorá mapuje to, čo každý
montážny návod rozumie.
Ale assembler je len to, tento preklad pre vás.
Je to transformácia kód assembleri do 1s a 0s.
>> ALI: A potom, za posledné, čo je linker?
A ako sa-lcs50 sa týkajú?
Každý, kto?
ROB: To je najťažšie a najmenej vysvetlil jeden v kompilátora videu.
ALI: Pamätá si niekto vidieť-lcs50 v príkaze?
SPEAKER 6: Keď si išiel do robiť.
ALI: Je to v make.
Jo, v pohode, v pohode.
Je tam nejaké dohady alebo neurčité - áno, go.
SPEAKER 7: Nie som si istý, pretože váš krátky bol naozaj [nepočuteľné], ale bol to
niečo o tom, samostatné súbory s každú knižnicu a potom uvedenie
ich všetky pohromade v jednej knižnici?
ROB: Áno.
Takže keď máte hello.c, je to naozaj jednoduchý program.
Si naozaj len robí jednu vec v ňom.
Ale keď sa dostanete do iných programov -
a myslím, že aj keď ste GetString v rámci svojich programov, budete musieť začať
vrátane ostatných súborov.
Takže knižnica CS50 je jeden taký súbor, v ktorom máme implementácia
z GetString a GetInt a všetky tie veci.
Takže to, čo robí, je, že linker odíde hľadá cez všetky tieto
súbory, vidieť, kde sú definované funkcie, uistite sa, že keď volám
GetString niekde, že vie, že GetString znamená, že je to
GetString cez v CS50 knižnici.
Takže linker trvá len všetky tieto súbory, smeču dohromady, a teraz
máte spustiteľný.
Takže majte na pamäti, ak používate CS50 knižnice, budete potrebovať ako
# Include hore, a potom tiež v príkaz make, ako vy
povedal, budete mať k-lcs50.
Takže môžete nielen mať jeden.
Tak to je proste niečo, čo mať na pamäti pre neskoršie použitie.
>> SPEAKER 8: Takže povedzme, že tam bol iný knižnica, rovnako ako cs51.h, by sme
tiež pridať, lcs51?
ROB: Jediný dôvod, prečo to-lcs50 funguje perfektne, je preto, že máme túto sadu
v určitom mieste vo vašich spotrebičov tak, že vie, čo
-Lcs50 prostriedky.
Mohli by sme dať cs50.c súbor, a potom by ste mohli skompilovať, riekol:
Rinčať hello.c cs50.c, a potom by si spustiteľný tým
tieto dva súbory dohromady.
Je známe, že-lcs50 znamená cs50.c cez v nejakého adresára, ktoré sme uvedené v
Vaše spotrebiče.
Takže ak by ste chceli cs51.c byť upřesnitelný by len povedať-lcs51,
potom by sme tiež potrebné, aby ju v tomto adresári, takže vie, kde sa
pozrite sa na to.
ALI: Aká bola vaša otázka?
>> SPEAKER 7: Prečo máte odkaz na CS50
ak - wasn'ta to kopírovať / vložiť v prvom kroku, keď pre-spracovaných to?
ALI: Chcete, aby sa to?
ROB: Iste.
Takže cs50.h súbor je oddelený od cs50.c súboru C.
Už ste dostali fungovať prototypov v triede?
Dobre.
Takže v podstate, je súbor cs50.h sa len tak skopírovať a vložiť -
ALI: Myslíte si, chlapci, čo sú podpisy?
Dobre, tak celkom veľa, keď sa pozriete na -
ROB: Poďme predstierať, cs50.h tam nie je.
Teraz tento súbor -
robíte string s = GetString.
Ale keď sme sa dostali do tohto bodu v kóde, nemá potuchy, čo
GetString je.
Vie, že je to funkcia, pretože voláte ho.
Ale to nevie, že je to vlastne mal vrátiť reťazec.
Tak ako som povedal, string s = GetInt, to nedáva žiadny zmysel, pretože
sa prihlasujete celé číslo na reťazec.
Ale to nevie, že GetString nemá zmysel, pretože to nie je
vedia, že GetString vráti reťazec.
Takže to, čo hovorí, cs50.h je niečo ako toto.
ALI: Takže to, čo Rob je písanie je, že je to sľub tak, že to bude
túto funkciu s názvom GetString.
ROB: To je všetko, cs50.h je kopírovanie a vkladanie sem, rovnako
ako GetInt a všetky tie veci.
A to len hovorí, že GetString sa vráti reťazec.
Nevieš, ako sa to doposiaľ vykonaná, ale keď sme sa k tejto línii, teraz
vie, že správne vráti reťazec.
>> SPEAKER 9: Takže, ak by sme nemali obťažovať s # include veci a namiesto toho
len písali prototyp pre tie, ktoré sme sa vlastne bude používať?
ROB: Jo.
Tak poďme spustiť tento.
SPEAKER 9: Je to tak?
Takže, v predvolenom nastavení, by to urobiť-l CS50 len preto, že -.
ROB: - výraz.
ALI: Áno, pretože ako ste povedal, že je to v make súboru.
ROB: cs50.h tiež sa stane byť typedef char * na reťazec.
Môžete úplne ignorovať, čo to znamená pre túto chvíľu.
Ale to je tiež niečo zahrnutá do cs50.h.
Takže teraz veci fungujú úplne v poriadku.
To beží presne rovnaké, ako to bolo, keď sme sa jednoducho musel
# Include.
A tak sa stane, vrátane cs50.h k cez-sú veci, ktoré potrebujete -
ako, nemusíte používať GetInt v tomto programe, ale to nevadí.
Je to jednoducho ignorovať.
ALI: A potom, keď budete robiť-lcs50 sem a tu, čo sa deje
, Je, že je to s aktuálne implementovateľné kód.
Tak to je, kde to vlastne je, robí -
písanie kódu pre GetString.
Takže to nie je len sľub už.
To je vlastne prechádza a pri reťazec a všetko to okolo.
Zmysel?
Otázky? Dobrá.
Skvelé fazuľa.
>> ROB: Teraz môžeme prejsť k skutočnej kódu.
ALI: Dobre.
Takže tu je prvý problém.
Tak to hovorí, že napísať program, ktorý vyzve užívateľa k malej
list a potom prevádza je na veľké písmená bez použitia bitového súčinu
operácie, ako na ukážkovom výstupe nižšie.
Takže vidíte, môžete spustiť program s / A.out, a potom ste
dám v malej, a potom sa váš program by mal dať svoj kapitál
A. Tak prečo nie vy všetci to skúsiť na CS50 priestory?
Takže vy môžete ísť všetci tu.
A môžete ich odstrániť všetok kód tu.
A potom môžete ísť dopredu a začať písať kód vec.
ROB: Pravdepodobne budete chcieť použiť getchar, ktorá je
zahrnuté do CS50 knižnici.
ALI: Myslím, že by to mohlo byť lepšie, ak si uložíte hornú časť.
Takže možno budete chcieť len zmeniť veci v stredu.
Nehanbite sa a pracovať.
Neváhajte a vzájomne spolupracovať.
ROB: A môžete klásť otázky, ak máte -
>> SPEAKER 10: Čo je to operácia bitový?
ROB: Tak, ignorovať, že pre tento problém.
ALI: Ak neviete, to, že je to dobré.
ROB: Budeme používať v ďalší problém.
Ale ak neviete, čo operátor bitové je, že je to v poriadku.
SPEAKER 10: Je to ako keď ho do ASCII kódu?
ALI: Nie
ROB: Nie
Môžete to urobiť, aby k tomuto problému.
SPEAKER 10: Ako to robíte, že?
Takže keby som mal niekde napísať -
ALI: Alebo niečo na písanie.
ROB: Mohol by som to jednoducho typ do toho.
ALI: Typ hore.
ROB: Oh, ja sedím na mic.
>> Takže, sme videli v prednáške, že ASCII hodnota kapitálu je 65.
A hlavné B bude 66, a tak ďalej.
Takže môžete doslova použiť "A" znamená počet 65.
Rovnako ako je to hodnota 65.
Môžem urobiť niečo ako int x = 100 - "A". A teraz x bude mať hodnotu
100-65.
ALI: Môžete spustiť to a ukázať, že.
No, možno nie.
To nič.
ROB: Musel som vytlačiť.
SPEAKER 10: Ako sa vám ho otočte späť do charakteru?
ALI: Takže ak nie -
stačí donútiť, aby to bolo char, rovná.
ROB: Tak je -
rozdiel medzi char a celé je len z hľadiska veľkosti.
Takže číslo sa stane, aby mohli reprezentovať veci
na, ako, štyri miliardy korún.
Char je len schopný reprezentovať veci až 255.
Ale nie je žiadny rozdiel medzi nimi, iné ako toto.
Takže môžete povedať char c = 65.
To je ekvivalent hovorí char c sa rovná "".
ALI: Oh, nie.
To nie je v skutočnosti uložiť veci.
ROB: Nie, to nemôžeš urobiť, že.
ALI: To je len -
[Stonanie]
>> ROB: Dobre, tak čo Ali práve napísal je program, ktorý ako prvý vytlačí 100 -
'A' ako celé číslo, ktoré bolo 35, ako očakávame, pretože 100 mínus ASCII
hodnota je 65.
Potom vytlačiť pomocou% C, čo znamená, že ju vykladať ako char.
Takže 100 - je 35.
Tlmočenie, že ako znak sa stane, že hash symbol.
Ak sa pozriete na asciitable.com alebo čokoľvek iného, ​​budete vidieť, že 35 je
hash symbol.
ALI: Dobre, iné vysvetlenie o probléme?
Dobre, vy choďte do toho a to potom.
Neváhajte sa opýtať, alebo hovoriť k sebe navzájom.
Alebo, ak ste už urobili, môžete si oddýchnuť.
>> LUCAS: Sú v rovnakej triede, všetky malé písmená v poradí a
tiež veľká sú tiež v poriadku, pretože to je niečo užitočné pre
problém.
ALI: Dobrý postreh, Lucas.
Takže, ste vy všetci si to?
SPEAKER 11: Áno.
To je, ako to urobiť, nie?
ALI: Right.
ROB: Jo.
SPEAKER 11: [Nepočuteľné]
ALI: Dobre.
ROB: Čo je otázka pýta?
Len pre konverziu -
ALI: Previesť na malé písmená veľké.
To je všetko.
ROB: Dobre.
ALI: Mali by sme napísať?
Myslím, že budeme len pozerať na niekoho iného.
ROB: Takže pre tých, ktorí by mohli byť prilepené, tak -
keď mám nejaký char c, a povedzme, že sa stane, že list D.
Takže teraz, ako môžem zistiť, čo písmeno abecedy C je?
Nie D, ale myslím, D sa stane, že štvrtý písmeno abecedy.
A ak začneme počítať od 0, potom je to tretie písmeno abecedy.
Takže ak je 0, B 1, C je 2, D je 3, ako môžem zistiť, int pozícia -
čo pozície abecedy C je v?
Má niekto nejaké nápady?
ALI: Myslím, že všetci kódovanie.
ROB: Čo tá prvá?
SPEAKER 12: Tak čo je, odčítajte ten prvý?
ROB: Jo.
ALI: Jo, úžasné.
Takže by ste mohli urobiť kapitálové D -
oh, prepáč.
Budete mať charakter a odpočítať prvý z nich, ako ste povedal.
ROB: D Takže ak je niečo ako 68, a odpočítame, čo je 65, potom dostaneme
3, nám hovorí, že D je tretie písmeno abecedy
od 0.
Takže môžete použiť.
Teraz vieme, čo písmeno abecedy, pokiaľ ide o
veľké písmená, alebo -
by sme mohli urobiť to isté pre malými písmenami prísť na to, čo
malá pozíciu Sme tam
A môžeme použiť, že do tej doby previesť, že na veľké písmená pomocou
veľmi podobný nápad.
Opýtajte sa na návrhy?
>> ALI: Páči sa vám chlapci - počkaj, ja neviem, ako ďaleko ste sa.
Väčšina z vás urobil, ste stále ešte pracuje, ste uviazol?
Vy môžete kričať -
prilepené.
Jedna osoba sa zasekol.
Cool.
Mám tendenciu byť prilepené, taky.
SPEAKER 13: Ja som urobil.
ALI: Hotovo?
Dobre.
Hotovo.
SPEAKER 13: [Nepočuteľné]
ALI: Jo, v pohode.
Ste kontrolu, že je to v malých písmen forme?
Dobre, v pohode.
Kde sú ostatní ľudia?
Bolo to náznak pomoci, ako un-prilepenie sami?
SPEAKER 14: Nie tak celkom, ale len preto, že, ja neviem, ja nie som
trávením to ešte.
ALI: Dobre, v pohode.
Chcete vyskúšať -
alebo chceš ísť a pohovoriť si?
>> ROB: To, čo som chcel povedať, je -
tak pomocou tejto.
Chápete, ako máme, čo pozície abecedy
list je v?
SPEAKER 14: Dobre, takže keď dáte veci do jednoduchých úvodzoviek,
, Ktorý vracia číslo?
ROB: Áno.
To bude preložený do ASCII hodnoty, ktorú predstavuje.
Takže chceš ísť do ASCII tabuľky, alebo čo to je?
ALI: Len jeden z nich?
ROB: Jo.
Takže keď dáte niektorú z týchto symbolov, ignorovanie veľa z -
ALI: [Nepočuteľné]
ROB: Oh, pomocou kurzora myši.
ALI: Jo.
To bolo vzrušujúce.
ROB: Takže, ignorovanie týchto ty na ľavici, ktoré sú špeciálne symboly -
keď dáte niektorú z týchto symbolov v jednoduchých úvodzovkách, potom to bude
preložený do tejto hodnoty na ľavej strane.
ALI: Jedná sa o desatinné číslo na to.
Je to ako stretnutie s 65, B na 66, a všimnite si, že sú všetci v
v abecednom poradí, ktorý robí rozdiel.
Takže, ako Rob hovorí, pred, v tomto kóde, sme boli výpočtu vzdialenosti od
prvé písmeno, samo o sebe.
A že to bude rovnaké, či už je to veľká alebo malé písmená.
ROB: Takže keď sme D, 68 mínus A, 65, dostaneme 3.
Vzhľadom k tomu, D je tri polohy do abecedy.
ALI: Tak ako by ste preložiť, že viac než nájsť malý d?
ROB: Jo.
Takže ak som 3 teraz, viem, že chcem ísť tri listy do -
sme náhodou ísť malé písmená teraz, ale povedzme, že chcem ísť tri
pozície do malými stránku veci.
Tak ako to mám urobiť, že?
Viem, že malá je 97.
Tak ako to mám nájsť tri polohy do malými písmenami?
>> SPEAKER 15: Mám jednu otázku skutočne.
ALI: Jo, pokojne.
SPEAKER 15: Tak toto, to nezáleží na tom, pokiaľ viem toto stanovisko,
rád, ja nepotrebujem tejto tabuľky.
ROB: Nie.
Už nikdy sa nebudete musieť použiť niektorý z týchto čísel.
A to je dôležitý bod v rámci svojich programov, ktoré by ste mali nikdy tvrdá
kód niektorý z týchto konštánt.
Používajte 'A'. nikdy nepoužívajte 65 alebo 97.
ALI: Tí sa nazývajú magická čísla, a sú naozaj mätúce.
Rovnako ako, keď ste ladenie kódu, môžete si spomenúť, čo
ste použili je pre.
A pre nás triedenie kódu, budeme naozaj vedieť, čo
používate je pre.
Takže je lepšie, ak si skutočne používať znaky, takže to robí
väčší zmysel pre ľudí.
Dobre, nejaké ďalšie otázky?
Sú viac ľudí urobiť, alebo -
Myslím, že sme si to overiť.
Je to naozaj strašidelné, že môžete vidieť kód ľudí.
ROB: Jo.
Nemáme k tomu, že tu.
Nevieme, mená ľudí, a to buď.
ALI: Ach jo, dobre, že je to lepšie, takže budeme mať ešte viac nestranný
namiesto toho len náhodne vyberaní niekoho.
Nebojte sa.
Ja to neurobím.
Ak máte náhodné veci o - Nevadí.
Dobre.
Ako sa ľudia robia?
>> SPEAKER 17: Tak deviaty linka by mala vytlačiť znak?
ROB: Áno.
ALI: Jo.
Takže ak ste ísť dole -
ROB: Oh, nemôžem.
ALI: Uvidíte, že ju vytlačiť hash symbol.
SPEAKER 17: Oh, dobre.
ROB: Myslím, že iný spôsob, ako sa môžete pozerať na veci je, že to vytlačením dvoch
znakov.
Prvý z nich sme tlač je písmeno A.
Ten budúci sa tlačíte, je iba 65.
Je to pravdepodobne na mňa kričať pre tieto prípady.
Takže keď sme len spustiť to, zistíte, že to vytlačí oba časy.
Vzhľadom k tomu, žiadame jej samej.
Pýtame sa ho vytlačiť list A. A potom žiadame, aby vytlačiť
číslo 65 interpretovaná ako charakter, ktorý je to isté.
ALI: Máš niečo na srdci?
Oh, len si robím srandu, prepáč.
Dobre, ako sú ľudia -
ROB: Môžeme sa len prechádzať cez neho.
>> ALI: Dobre, takže ako začať?
Každý, kto?
Ako náznak, musíme niečo od ľudí, od typers.
SPEAKER 18: [Nepočuteľné]
ALI: Ach jo, výzva, perfektné.
Takže budeme písať -
čo napíšeme?
Každý, kto?
Alebo mám jednoducho zadajte ho?
Sme vlastne zadaním -
ROB: Iste.
ALI: Takže budeme písať printf výzvu, takže môžeme byť
páči, daj mi znak.
Dobre, a čo potom?
Prečo to robí, že?
ROB: Ja neviem.
ALI: Dobre.
Takže teraz, hovoríme im, aby nám charakter.
Ale ako sa vlastne dostať, že znak?
SPEAKER 19: Použitie GetString.
ALI: GetString?
GetChar?
Dobre, takže aký je rozdiel medzi reťazcami a char?
SPEAKER 19: Reťazce sú rady, ako pole znakov.
>> ALI: Cool, jo.
Takže v tomto problém, my len je potrebné zvážiť jeden znak v čase, tak
Sme len robiť getchar pre túto inštanciu.
ROB: Mohli by sme zaviesť funkciu, ak by sme chceli, aby sa celý reťazec
a šiel cez reťazec a zmenil všetky malé písmená na veľké a všetkým
veľká na malé písmená.
Ale tu, my sme len pýtam vás jeden znak.
ALI: Takže teraz máme charakter tu, ale potom musíme uložiť.
Takže pridáme char c - čo?
SPEAKER 20: Definujte premennú.
ALI: Jo, presne tak.
Takže máme náš charakter.
ROB: Myslím, že by ste mohli byť -
ste len tri priestory, v, čo je dôvod, prečo to kričí na teba.
>> ALI: Dobre, v pohode, teraz, keď sme tabulátora sadu, čo sa bude diať ďalej?
Aký je ďalší krok?
ROB: Aký je náš program by mal urobiť, je zmeniť malé písmená list
veľké písmeno.
Čo keď som náhodou vstúpiť do hash symbol?
Je to -
ALI: Je to dobrý symbol.
Používame ju veľa.
ROB: Je to platné vec, ktorú môžem previesť na veľké písmená forme?
SPEAKER 21: Nie
ALI: Nie
Mali by sme zistiť, že.
Takže sa môže mať if kontrole tak v prípade, že c je väčšia ako
alebo rovnaké, ako malé písmená premennej 'a'-
takže ak sa pozrieme na graf, zistíte, že to musí byť medzi tu,
na 97, a malým písmom.
A to môže byť jeden z nich, a v krokoch až na doraz.
A potom je tu z na 122.
A to je v rozmedzí medzi týmito dvoma hodnotami.
Dáva to zmysel?
ROB: Takže ak c nie je medzi 97 a 122 -
alebo ju nikdy nebudete musieť použiť tieto čísla - ak c nie je medzi "A" a
"Z" a potom to nebolo platný znak pre nás veľké písmená.
ALI: Takže v kódovej forme, môžeme povedať, že ak je c je väčší alebo rovné single
Prípad malé -
wow, ako ste povedal, že?
Dobre, je väčšia než alebo rovné malým písmom "a", a to musí byť vyššie
Malé písmeno "z". Tak to musí byť menšia alebo rovnaká ako malé písmená 'z'.
Sme uistite sa, že je to medzi nimi.
Potom môžeme pokračovať s naším šťastným kódom.
Čo?
ROB: Tak som si budeme len držať pýtať, či sme náhodou nemali
malé písmeno.
ALI: Oh, som si nebol vedomý, že.
Prepáčte.
>> Dobre, takže ak budeme robiť, čo Rob hovorí, a uistite sa, že -
môžeme udržať požiadal ich, potom to, čo by sme mali robiť?
SPEAKER 22: [Nepočuteľné]
ROB: Jo.
Mali by sme použiť nejaký slučky.
Vzhľadom k tomu, že užívateľ môže zadať niečo neplatný nevýslovnej množstvo krát.
Takže môžete použiť while.
Účelom do-while -
doslovne, jediný čas v celom vašom živote, kedy budete používať do-
while je, keď sa pýtate na vstup od užívateľa.
Takže skutočnosť, žiadame pre vstup užívateľa je tu náznak, že by sme mali
použiť do-while.
A prečo to je?
Vzhľadom k tomu, do-while loop vždy sa stane, aspoň raz.
Takže keď sa pýtate na vstup od užívateľa, budete chcieť, aby sa stalo aspoň raz.
A potom, keď sa veci boli úspešní, môžete pokračovať.
Ak nie, vráťte sa späť a opäť pýtať.
>> ALI: Takže inými slovami, musíme urobiť bod.
A tak je to hovorí to niečo urobiť.
Tak printf -
vytlačiť vyhlásenie k rýchlej, a tiež získať charakter, alebo sa snaží
získať charakter.
A potom musíme skontrolovať, či je skutočne to urobil správne.
Takže potom pridáme podmienky, potom hovoríme, zatiaľ čo, a potom máme
podmienený príkaz.
ROB: Ale teraz sme obrátil myšlienky.
Teraz sme si pôvodne hovorili, ak c je v tomto rozsahu, je platný.
Teraz chceme zvrátiť to a povedať, či c nie je v tomto rozsahu, potom
potrebujete zálohovať robiť veci znovu.
ALI: Oh, yeah.
ROB: Takže keď to nie je pravda, chceme sa vrátiť a
požiadať o ďalší znak.
Má každý vidieť, že?
Otázky na to?
Dobre.
>> Takže teraz máme platný znak, ktorý môžeme veľké písmená.
ALI: Tak čo ďalší krok pre uppercasing to?
SPEAKER 23: Pridať 32.
ALI: Pridáte -
ľúto, čo?
SPEAKER 23: Nemožno stačí pridať 32?
ROB: Takže áno, nie v zmysle magických čísel.
Tie by mali byť pomocou single-quote veci.
SPEAKER 23: Dobre, dobre -
ROB: Ale môžete si 32 -
ALI: Ako ste sa dostal číslo 32, myslím, že je to, čo hovoríme.
SPEAKER 23: [Nepočuteľné]
Rob: Takže môžeme prísť s číslom 32 spoločne -
SPEAKER 23: [Nepočuteľné]?
ROB: Jo.
Ale ak budeme robiť to v dvoch krokoch sme robili pred s
polohy veci.
Takže pozície v abecede, ktoré c zhodou okolností je c mínus malými písmenami
"". Takže keď sme vstúpili do malé písmená "d", pozícia bude 3.
A teraz chceme, aby sa veci na veľké písmená rad vecí.
Takže teraz náš nový c bude základnom imaní "'plus pozície.
Tak sa ľudia vidia, ako sa to nás privádza -
ideme z malým rozsahu, presnú hĺbku sme do toho
rozsah, a ísť dole do veľkým rozsahom, a ísť tak ďaleko
do nej znovu, čo bude mať rovnaký charakter, ale teraz
veľkými písmenami.
ALI: A pre ľudí, ktorí boli zmätení tým, ako práve povedal 32,
v podstate spojil obe tieto do jedného príkazu.
Takže rovnocenný spôsob písania to, že vieš to jednoducho
náhradné pozície, c mínus "," a dal to tu.
Takže to, čo urobil, ja nie -
char NewCo = veľkými písmenami "A" a c mínus malá "". A pretože algebry,
sa môžete pohybovať okolo nich.
Môžete tiež povedať, že sa môžete pohybovať okolo tak char NewCo = veľkými písmenami "A"
mínus malé písmená "a" Plus C.
A to, všimnete si, či sa vrátime do grafu.
Máme veľká je 65 a malé písmená je 97.
Tak 65 až 97 je -32.
>> Ahoj.
Posaďte sa.
Oh.
Môžete sedieť tu.
Cool, v poriadku, úžasné.
Vitajte v sekcii.
Určite ste si všimli, že rozdiel je 32.
Tak to je, kde dostal toto číslo.
Ale nie je to, ako Rob hovorí, že najlepší spôsob, ako to urobiť, pretože to má divný
magické číslo zmätok.
ROB: Mali by ste používať kapitál mínus malá.
Nemali by ste používať len rovno 32.
SPEAKER 24: Prečo je to, že raz?
Prečo by ste nemali používať 32?
ALI: Ak by sme to urobili, bolo by to char NewCo = -32 + c
A ak nechcete vidieť žiadne zo zvyšku toho, ak je to všetko preč, a tie
jednoducho vidieť tento jediný riadok, tak ako viete, čo je negatívny 32 je?
Je to len na mieste.
ROB: Takže váš program bude fungovať úplne v poriadku.
Je to len štýl vec.
Niekto bude v a čítanie kódu, sú ako čo to znamená 32?
Možno, že nie -
Asi by som to okamžite uvedomiť, že 32 sa stane, že je
Rozdiel medzi malým písmenom a veľkým písmenom, hoci
budeme používať túto skutočnosť v ďalšom probléme.
32 je -
môžete zanechať komentár vyššie to hovorí 32 je rozdiel medzi
"A" a "." Ale v tomto bode, prečo nie len používať "A" a "A", a vy
nepotrebujú komentár a potom.
>> ALI: Je to len spôsob, ako nad ním sú oveľa čistejšie, style-múdry.
A tak, pretože ste práve začínate programovanie -
alebo Myslím, že nie, pretože si hacker edi - nevadí.
Je to len dobrý spôsob, ako mať -
je lepšie mať lepší štýl.
Je to jednoduchšie pre ostatných ľudí na čítanie.
ROB: Nikdy by ste nemali mať na pamäti, ASCII tabuľku, kedy.
Tie by mali len byť schopní používať jednotlivé úvodzovkami.
Otázky?
ALI: Všetci dobre?
ROB: Dobre.
Takže ďalší problém je značný.
Takže ďalší problém sa nás pýta -
ALI: Ďalším problémom je žiada pre nás urobiť to isté, ale na použitie
Bitové operátory.
ROB: A samozrejme, že sme nevideli bitové operátory ešte.
Takže budeme teraz diskutovať o nich.
ALI: Budete nadšení.
Sú super zábava.
>> ROB: Takže pravidelné subjekty, ako sú X plus y, mínus, časy, delenie.
ALI: Zadajte ho v tomto riadku.
ROB: K dispozícii je tiež%, ak ste ho ešte nevideli, ktoré môžete použiť v
Symbol percenta.
Ale nebudeme používať tie pre tento problém.
Chceme použiť bitové operátory.
Teraz pamätajte, priniesli sme ju v prednáške jeden.
Nie som si istý, či sme diskutovali binárne za to.
Ale pamätajte si, že každý jednotlivý počet je zastúpená -
dobre, všetko -
je zastúpená v 1s a 0s v binárnom kóde.
Takže to znamená, že keď hovorím, že číslo 8, ja náhodou viem, že je to
ako, 1000.
Čo bitové operátory, dajte nám urobiť, je pracovať na týchto bitov -
je pôsobiť na týchto bitov priamo.
Teraz som už nejde, pokiaľ ide o osem.
Mám tú česť, pokiaľ ide o 1000, a chcem robiť veci s tými
Jednotlivé bity.
Takže Ali napísal na bitové operátormi tu, ale to je -
Číslo 8 budeme používať ako jeden z našich napríklad čísel.
A binárne reprezentácie je 1000.
Budeme používať iné číslo, 5 -
skutočne využijeme 9 a 5.
A 5 je binárny reprezentácia je 00 -
0101.
ALI: Je každý dobrý na to?
Binárne veci?
To bolo z prvej prednášky?
>> ROB: Takže aj keď si nie ste úplne na vrchole, ako previesť veci
binárne, to nie je úplne dôležité, aby tento problém.
Budeme ju používať, ale budete mať oveľa viac šancí zistiť, ako
rýchlo zase veci do binárne.
Takže pomocou 9 a 5, teraz máme bitové operátory.
Jo, a tiež, 9 a 5, ak je to celé číslo, potom v skutočnosti je to 32 bitov,
čo znamená, že máme ako 0, 0, 0, 0 mnohokrát, potom
101 na samom konci.
To je len preto, že, bez ohľadu na to, čo robíte, v celých, 32 bitov.
Len preto, že budeme potrebovať iba štyri bity predstavujú 9 neznamená, že nie sme
vyčerpania ostatných 27 bitov za púhych 0s.
ALI: Len pre upresnenie, jeden z týchto čísel, ktorá sa nachádza v 0 alebo 1 je bit.
Tento je 4 bity.
Ako tak Rob povedal, že stroje ukladať ich do 32.
Takže oni by mali 32 buď na 0 alebo 1.
V pohode?
ROB: Bitové operátormi.
Prvý z nich, že budeme zaoberať, ideme &.
Takže ak budeme robiť 9 & 5.
Takže to, čo a robí, je, kúsok po kúsku, porovnáva bity dvoch čísel
a ak je obe čísla sú 1, potom sa vráti na 1.
Ak jeden je 0, a druhý je 1, alebo sú obaja 0s, potom vracia 0.
Takže si môžete myslieť na to, ako vaše logické ANDS.
Rovnako ako budete potrebovať pravdivé a pravdivé a vráti hodnotu true, ale je to pravda a false false.
Takže je to to isté, ale teraz máme čo do činenia s tým sa len kúsky.
>> ALI: Takže, keď sa pozriete na to, budete mať 1 -
budete porovnajte je hore, tak to bude 1 a 0.
Myslíte si vy myslíte, že by mohol byť - čo by to hodnotiť to?
SPEAKER 25: 1.
ALI: Cool.
Alebo nie.
Prepáčte.
Takže to, že má zmysel?
Takže to, čo je kolektívne odpoveď znova?
Prepáčte.
Takže ak máme 1 a 0, potom to, čo sa vám?
ROB: Takže si myslíte, že o tom, ako hovoríte, a nahlas.
Ak máte dve bity, x a y, budete potrebovať x a y byť 1, aby pre neho
vyhodnotiť true - alebo, aby pre to, aby vyhodnotenie na 1.
Ak x alebo y je 0, potom to vyhodnotí na false alebo 0.
LUCAS: Je dobré si uvedomiť, že aj 1 je pravda, a 0 je false.
Takže ak máte pravda a false, je to falošný.
Ale potom, pravda a pravda, pravda.
False & false, false.
ALI: Máme pravda & false.
Tak 1 a 0.
Takže znova, je mi ľúto, ešte raz?
SPEAKER 25: Bolo by 0.
Jo, v pohode.
A potom máme 0 & 1 -
SPEAKER 25: [Nepočuteľné]
ALI: Jo.
Takže môžete vždy vymeniť je in -
Potom, ak máte 0 a 0?
SPEAKER 4: 1?
0?
ROB: Takže je to 0.
To neznamená, že obe čísla musia byť rovnaké.
Je to, že obe čísla musí byť 1.
ALI: Takže obaja majú byť pravdivý pre to, aby to bola pravda.
Tak to je 0.
A potom majú 1% 1, čo je?
ROB: Jedná sa o celkom dobré číslo.
Majú všetky možné -
ALI: Dobrá práca, wow.
Dobre, v pohode.
Takže to, že zmysel pre každého?
>> ROB: Takže teraz budeme robiť |.
A to bude veľmi podobné, ale teraz miesto x a y nutnosti
byť 1, aby to byť jeden, teraz je to len x alebo
y musí byť 1.
ALI: Tak 1 | 0 vyhodnotený -
TRIEDA: 1.
ALI: Cool.
0 | 1 vyhodnotený -
TRIEDA: 1.
ALI: Cool, a potom 0 | 0 -
TRIEDA: 0.
ALI: Jo, a potom 1 | 1 -
TRIEDA: 1.
ALI: Cool.
Tak to je ako dva operátormi bitové.
Awesome.
ROB: Takže teraz budeme robiť ^.
ALI: Mali by sme urobiť všetko z nich?
ROB: Jo, pretože si myslím, že budeme používať -
použitie ich všetky.
ALI: Dobre.
Takže -
ROB: Myslím, že nepotrebujeme, aby.
ALI: Tak ^ práce v tom, že musíte mať presne jeden pravdivý a jeden nepravdivý.
^ Znamená exkluzívny OR.
Takže teraz to nie je -
ak x a y sú obaja 1, je to teraz false.
To je rozdiel medzi ^ a |, je to, že OR, môže mať, ak je x
true alebo y, je to pravda, potom sme v pohode.
Nie, ^ hovorí, že ak x je pravda, musí y byť nepravdivé, alebo inde to nie je pravda.
Máte otázku?
>> SPEAKER 26: [Nepočuteľné]
ALI: Jo.
Je to trochu podobné.
ROB: Jo, takže keď sa dostanete do tejto low-level hardware veci, sú
druhy operácií, ktoré čo do činenia.
Na hardvérové ​​úrovni, budete zaoberať iba s bity.
Nemusíte riešiť s číslami.
ALI: Dobre, pre ^, alebo ak máte 1 ^ 0, ako by mala, že hodnotiť sa?
TRIEDA: 1.
ALI: Cool.
Ak máte
0 ^ 1? TRIEDA: 1.
ALI: Cool.
0 ^ 0?
Cool.
A potom 1 ^ 1?
TRIEDA: 0.
ALI: Cool, úžasné.
Ten budúci -
ROB: Myslím, že to sú všetko musíme riešiť.
Budeme robiť len to.
ALI: jediný čas, budeme musieť urobiť -
ROB: Oh, to bude pre posledný problém.
SPEAKER 27: Počkaj, ešte raz?
ALI: Je nám ľúto, aká bola vaša otázka?
>> SPEAKER 27: Môžete mi vysvetliť, že ešte raz?
Znaky ^?
SPEAKER 27: exclus - jo.
ALI: Tak čo exkluzívne OR znamená, že tam musí byť výhradne
jeden pravdivý a jeden nepravdivý, tak jeden 1 a jeden 0, proti sa OR, môžete mať -
jeden z nich musí byť pravda, alebo obaja z nich môže byť pravda, na to
vyhodnotiť na hodnotu true.
SPEAKER 27: Tak 0 a 0 by bol nepravdivý.
ALI: Jo.
Ale ak máte 1 |
1, by to vyhodnotí na true.
Ale ak máte 1 ^ 1, ako sme to urobili, že vyhodnotený ako false.
Vzhľadom k tomu, že to nie je len jeden je pravda.
ROB: A to môže alebo nemusí byť užitočné, ale upozornenie, že ^ je
rovná len brať |
mínus &.
A môžete skutočne myslieť na to takhle.
^ Je len ORing všetko dohromady, ale pri žiadnej z bitov, kde
obaja boli pravdivé.
Tak a vráti všetko, kde obaja boli pravdivé.
| Vracia všetko, kde je jeden alebo obaja boli pravdivé.
Takže odpočítaním že sa z | vám dáva ^.
ALI: na niečo spýtať?
To bolo veľa informácií.
Každý dobrý?
>> ROB: Môžeme ísť v najbližších tie pre ďalší problém, lomítko
koľko je hodín?
Nemusí to až do ďalšieho problému.
ALI: Myslel som, že to bola táto.
ROB: To nie je.
ALI: Si si istý?
ROB: Áno, som si istý.
ALI: Prečo nezačneme robiť ďalší problém?
Problém je, opäť, pre zmenu z malá na veľké, a to
čas použiť bitové operátory.
ROB: Takže budeme -
Začnime s binárne reprezentácie "A", kapitálu "A",
ktorá je 65.
Takže v binárnej -
tak 'A' = 65, ktorý =, v binárnej forme -
Idem pokaziť počtu 0s - že.
ALI: Takže to zmysel pre každého?
Takže, 1, žiadne 2s, nie 4s, nie 8s, nie -
žiadne 16s, 32s bez, a potom jeden 64.
ROB: Jo, myslím, že je to jeden príliš veľa 0s.
ALI: Sorry.
>> ROB: Dobre, takže máme 64 set, a máme 1 sadu, a kombinujúci
spoločne, dostaneme 65.
ALI: Cool fazuľa?
ROB: Takže teraz, malá premennej 'a'-
všimnete 97 -
aký je rozdiel medzi 97 a 65?
SPEAKER 28: 32.
ROB: Jo.
Takže je to 32, čo je jeho vlastná bit, takže to bude 110001.
A to bude platiť pre všetky možné znaky.
Takže ak si myslíme, že "D", ktorá sa bude 68, tak to bude 1000011.
A potom malá "d" bude 68 a 32, čo je 100, čo je
bude to isté, že to bolo, len mizerný
32 znova, tak 1100011.
Takže rozdiel medzi veľkými a malými písmenami listu je len mizerný
že 32-bit pozície.
SPEAKER 29: Nie je to 1000100?
ROB: Počkaj, to je 100 -
niečo, čo som urobil zle.
To nebola pravda.
Myslel som, že to bol rozdiel 3, tak som len prilepené
binárne 3 na konci.
To by malo byť v poriadku.
ALI: Ďakujem.
Dobré pre spárovanie to von.
To bol ostrý.
Dobre, je to jasné ľuďom?
>> ROB: Rozdiel medzi veľkými a malými písmenami verzia je
vždy len tak, že je 32, a tak, že sa vždy bude jeden bit
, Ktoré musia byť prevrátený prepínať medzi nimi.
ALI: Takže v tomto prípade, pretože vedel, rozdiel medzi hlavným mestom A a
malé písmo je dobrá vec.
Nie je v kóde, ale koncepčne aspoň je to dobré.
Takže vy môžete ísť dopredu a kód, ktorý sa v priestoroch dnes.
Alebo by sme mali jednoducho diskutovať?
ROB: Môžeme len diskutovať.
Neviem.
Vy môžete vyskúšať.
Diskusia medzi seba na chvíľu.
Dáme vám šancu kód,.
[Prechodová Hlasy]
ALI: - je v pohode
SPEAKER 30: To je ako hacker komédia.
ALI: Jo, my sme len hovorím správy, prechádzame.
>> ROB: A sme späť.
ALI: To je trochu divné.
Mám pocit, že by sme mali mať CS50 správy stanicu a mohli by sme
skutočne sedieť takhle.
ROB: Hacker News.
ALI: Hacker News 50.
ALI: Nebojte sa opýtať na nejaké otázky, ak ste zmätení.
ROB: Je niekto strčil?
ALI: Jo, to je dobrá vec.
ALI: Počkajte, ste uviazol v kresle?
Oh.
Bol som trochu obavy.
ROB: Pretože som si uvedomil, že sa budeme chcieť
iný prevádzkovateľ bitové.
Pre túto chvíľu, poďme len previesť veľké na malé písmená.
ALI: Je nám ľúto, to všetci dostať, že oznámenie?
Budeme chodiť od veľká na malé písmená.
ROB: Potom budeme diskutovať malými písmenami, aby veľká právo po tom.
Oh, nie.
Máme chybu v tomto, čo, myslím, že sme sa nikdy sa pokúsil spustiť.
Čo je práve to char c musí byť vyhlásená mimo slučky, pretože
jeho rozsah je obmedzený v slučke.
SPEAKER 32: V tomto prípade, je to zlé použiť číslo?
ROB: Eh, nemusíte sa.
Ak som zaručené, že kapitálu premenné 'a'-alebo, malé písmená "a" mínus kapitál ""
bol presne jeden bit, ale že neviete, že je to 32 -
veci by fungovať rovnako dobre, ak to bolo 16 bit, ktorý sa nakoniec - alebo
no, myslím, že to wouldn't -
alebo 64 bit bol prevrátený, možno.
Ale nemali by ste potrebovať 32.
Dalo by sa namiesto toho použiť malé písmená "a" mínus kapitálové 'A'.
>> SPEAKER 32: Dobre.
Čo môžete robiť, keď máte pocit, že píšete príliš veľa, je môžete definovať
v hornej časti.
Takže si môžete byť rád, int rozdiel = malá "a" mínus kapitálové 'A'. A
potom môžete zadať rozdiel miesto.
To je platné.
Ale len na základe počtu 32 je v istom zmysle -
SPEAKER 33: Aj keď je to kvôli tomu, že je to 32 bit?
ALI: Jo.
ROB: Tam by mohlo byť -
jedinou zárukou musíme ťa je to, že rozdiel medzi
malé a veľké písmená, je jeden bit.
To by na tom, že sa to stane, že je 32 bit, ktorý je prevrátený.
Pre časové úvahy, začneme ísť cez to.
To je v poriadku, ak ste nedokončili.
Nerobte si starosti.
ROB: Za predpokladu, že c je veľké písmeno -
nemáme predpokladať c je veľké písmeno.
Vieme, že c je veľké písmeno po tomto cykle while -
do-while.
Takže to znamená, že vyzerá nejako takto "". Takže ak chceme, aby bol tento
"" K tomuto "", čo musíme urobiť?
Tak ako sme sa previesť a flip bit?
ALI: Ako prevrátiť ju?
>> ROB: Takže vieme, že chceme, aby flip 32 bit.
Takže bude robiť "" mínus "", alebo môžeme napísať 32, ale -
zatraceně, je to naopak.
ALI: Dobre, takže tu je Rob tohto počtu, magické číslo 32.
Takže on zistil, kde to trochu fanúšik by oblasť.
A potom čo sme dali, kde otázniky sú?
ROB: Ako prevrátiť ten kúsok?
Pokiaľ ide o veľké písmeno, je to 0, a my chceme, aby sa stal 1.
SPEAKER 34: |.
ROB: Jo.
Tak to je nám hovorí berieme 'A'. Sme ORing s 0 -
1000 -
a že = že.
ALI: Má to zmysel pre každého?
Môžeme ísť cez neho kúsok po kúsku, ak chcete.
SPEAKER 35: Vy ste [nepočuteľné]?
ALI: Kde je znamienko mínus?
ROB: Oh, myslíš tu?
ALI: Oh, yeah.
ROB: Tak myslím, že toto je nám.
Dalo by sa povedať 32, a teraz sa budeme len pomocou bitovej operátormi.
ALI: Nemáme radi magické čísla.
Nebudeme robiť, že.
Tiež si myslím, že by sme mali jednoducho použiť operátor bitový -
SPEAKER 36: Ak používate ^ A, dostanete 32?
SPEAKER 37: Jo, myslím, že -
ROB: Jo, budete.
ALI: To je, ako by to urobil pre prechod
z kapitálu na malé písmená.
>> Teraz môže mi niekto povedať, prečo Rob a ja zmenil riadku a ako sme šli
od veľkými malými písmenami, namiesto malá, aby
veľká, ako sme to urobili predtým?
Má niekto nejaké nápady, prečo by to mohlo byť ťažšie?
ROB: Takže by sme robiť -
ALI: Jo, pokojne.
SPEAKER 38: | Prevádzkovateľ bolo len naozaj dobré pre pridanie.
ALI: Jo, presne tak.
ROB: Takže to, čo chceme robiť v malými písmenami na veľké písmená prípad je,
previesť tento premennej 'a'-
tak chceme aby v niektorých číslach tu a použiť niektoré operátora tak, že je
sa na kapitálové A. Sme pravdepodobne stále používate 32 nejako, ale teraz, ako my
si to, aby vyšiel na to?
Tak c -
oh, ja stále chcem taky -
ALI: Takže teraz, keď sme prevod z malých písmen na veľké písmená znovu, potom sme
robiť ^ operácii, ako vy povedal.
ROB: Existujú aj iné spôsoby, ako môžete robiť veci.
Mnoho prevádzkovateľov bitové skončiť veľmi ľahko definovateľný z hľadiska
iných subjektov bitové.
Tak som šiel, aby nepoužíval ^ alebo vôbec, ale ^ fungovalo úplne v poriadku.
>> ALI: Dobre, tak sme ísť na posledný problém, ktorý má základné -
Posledný problém je previesť niečo do binárne.
Tak napríklad, máte 50, a potom ho previesť na
binárne, čo je 110010.
A myslím, že vy všetci vieme, o binárny z prednášky.
A tiež by nemala dať nejakú vedúcu 0s do neho.
ROB: Môžete ignorovať túto časť teraz.
V prvom prechode, môžete to urobiť tak, že tam sú predné 0s.
A potom môžeme upraviť, že mať žiadnu vedúci 0s, ak budeme mať čas.
ALI: Takže sa nemusíte starať o to.
Len sa snaží dostať v binárnom formáte.
Dobré miesto pre štart by mohol byť -
ROB: Musíme požiadať o celé číslo.
ALI: Ach jo, to je dobrý.
Môžeme začať s tým.
Takže si môžete zmeniť riadku.
Takže namiesto toho, postavy, teraz máme čo do činenia s celými číslami.
V pohode?
>> ROB: A teraz, čo je u nás do-while podmienka bude?
Je žiadať o non-záporné celé číslo.
ALI: Keď chceme, aby užívateľovi zobrazil výzvu pre niečo iné?
Keď je menšia ako 0.
ALI: Right.
ROB: Kým som je menšia ako 0.
ALI: Teraz chceme previesť.
Myslíte si, chlapci majú nejaké nápady, čo robiť?
Akékoľvek Inklings?
Jo.
SPEAKER 39: Máme previesť, alebo môžeme len vytlačiť niektoré 0s a 1s
že by správne číslo?
Mohli by ste urobiť pre sláčiky a počítať z mocninou 2?
ROB: Áno.
Nemusíte previesť aj na svoje binárne -
binárne reprezentácie aj sa nezmestia dovnútra i
Stačí len vytlačiť binárne reprezentácie i
ALI: Inými slovami, nemusíte ísť sily dva.
ROB: Pretože som sa už uložená ako binárny, takže nemusíte
previesť na binárne.
Stačí ísť cez jeho binárne, a vytlačte ho.
A budete musieť použiť bitové, pretože sa chcete pozrieť na
skutočné bity.
Nemusíte používať bitové, ale prosím.
A to je vlastne -
stačí urobiť právomoci v dvoch vynásobením 2.
Pôjdeme cez jeden z posledných dvoch binárnych operátorov bitové,
ktoré je tento.
Takže keď budete mať -
>> ALI: Dokážete prejsť obaja?
ROB: Jo.
Tak poďme sa 9.
Takže 9 ľavý shift 1 -
čo zostalo radiacej prostriedky je len presunúť všetky bity doľava a vložte 0.
Takže ideme všetky kúsky 9 na ľavom
Pozícia, ktorý nám dáva -
Tak zistíte sme sa posunuli everything ľavá, a vložil 0 na strane
pravá strana.
Keby sme posunuté vľavo dva, by sme posunúť všetko zostalo po dvoch,
a vložte dve 0s vypĺňať medzery.
Otázka?
ALI: Takže pravdu posun robí podobnú vec.
Ak máte 9 správny posun 1 potom ste len všetko posunie sa k
právo, stratíte číslicu tak, 100 miesto.
ROB: Takže je to v poriadku, že ste stratili trochu, čo sa stalo, že všetky
cesta doprava.
Existujú rôzne typy pravých smien, ale v podstate si môžete myslieť
Pravý Shift ako práve delenie 2.
A môžete si z ľavého posunu ako vynásobením 2.
Takže ak ste previedli to -
Ak ste previedli 9 posun 1, ktorá je rovná 10010, ak ste vlastne išiel
cez binárne a prišiel na to, čo to bolo, bolo by to jednoducho byť 18.
Práve sme násobiť 2.
1001 ľavý shift 2 bude 36.
Sme násobiť 4.
Dobre, v pohode, takže je to šikovný bitový operátor pre tento jeden.
Viac zmätok?
Myslíte si chlapci chcú to vyskúšať?
Alebo môžeme jednoducho skočiť priamo a začať ju?
ROB: Asi by sme mali skočiť dovnútra
ALI: Jo, jo.
ROB: A prejsť spoločne.
>> ALI: No, ja pôjdem do toho.
Takže ako povedal na začiatku, budeme len prejsť kúsok po kúsku.
Takže budeme potrebovať slučku.
Má niekto predstavu o najlepšieho druhu slučky ísť cez to?
Máme while, do-while, for cykly.
SPEAKER 40: Do-while?
ROB: Takže pamätajte, čo som povedal predtým, než o tom, my sme len s použitím do-while
slučky získať vstup od užívateľa.
Už nikdy sa nebudete skoro vôbec použiť na nič iné.
ALI: Problém s do-while je to niečo urobí, ako skontroluje
stav.
Takže by to mohlo niečo zlé -
Páči, bolí -
urobiť niečo, čo nie je možné.
Takže chcete, aby si najskôr.
ROB: Je tu veľa prípadov, kedy je možné použiť do-while, ale ľudia
Nečakám, že ich použitie, ak je to vstup užívateľa.
Takže sme použili naše do-while slučky získať i
Koľkokrát sa naša slučka bude chcieť do slučky?
Chceme slučky nad každou z bitov i
, Koľko bitov sa v i?
SPEAKER 41: 32.
ALI: Jo.
ROB: Takže tam je 32 bitov.
Nechceme hovoriť 32.
My miesto toho chce povedať sizeof -
ktoré, ste vidieť, že v triede ešte?
ALI: Nie.
ROB: Prečo to hovorím, že použitie -
sizeof (int) krát 8 -
ALI: Takže, sizeof je -
>> SPEAKER 42: [Nepočuteľné]
ALI: Zaujímavé.
Takže, sizeof je vstavaný C funkcie, kde to len povie vám
počet bitov v -
ROB: Bytes.
ALI: Bytes, sorry -
počet bajtov premenná pre uloženie hodnoty.
Takže si myslím, prešiel v triede, a potom, int 4 byty možná.
V pohode?
ROB: Ale nemali by ste vedieť, že int je 4 bajty.
Mali by ste byť schopní povedať -
mali by ste použiť sizeof (int), aby si 4 bajty.
A to je vlastne dôležité pre niektoré veci.
Int nemusí byť 4 byty.
Na inom počítači, môže byť int 8 bajtov.
Takže váš program nebude pracovať na tom počítači, pretože si pevne 32
bitov keď na tomto počítači stane byť 64 bitov.
ALI: Takže máte celkový počet bitov, ktoré chcete, aby zvrátiť.
ROB: A rozdiel medzi bajtu a kúskom je, že
sú 8 bitov v bajtu.
Takže sizeof (int) vracia 4 bajty, potom musíme násobiť, že
od 8 dostať 32 bitov.
>> ALI: Dobre, takže vieme, že maximum a my vieme, že chceme ísť od -
chceme prejsť všetky z nich.
Takže chceme ísť od 0 do numBits.
Takže neviete niekto, ako napísať slučku, že?
Každý, kto?
SPEAKER 43: [Nepočuteľné]
ALI: Takže chcete prechádzať čísla aj z nultého bitu na
Prvý bit, druhý bit, tretí bit, až do numBits.
Počet max bitov, ktoré môžete dostať.
ROB: Čo je to spoločný slučky používame to, čo chceme robiť krát niečo x?
ALI: Pro.
Perfect.
Takže máme pre.
A potom budeme vytvoriť Iterator, ktorý sa nebude i
ROB: j
ALI: J = 0.
Takže začneme na 0.
A potom budeme mať podmienku, aby sa ubezpečil, kým ste
prechádzame zakaždým -
[Prechodová Hlasy]
ROB: j
ALI: j je menšia ako numBits.
Takže nechceme robiť skutočné rovný jednej, pretože sú numBits
celkom, a začneme na 0.
Takže sme vlastne bude mať -
SPEAKER 44: Oh.
ALI: Indexy nekončí na numBits mínus 1.
ROB: My označiť bity 0-31, nemáme označiť 1-32.
ALI: A potom budeme zvyšovať, zakaždým jeden, pretože chceme
zistiť všetky do jedného.
Takže pôjdeme j + +.
>> SPEAKER 45: Prečo to robíš, že?
SPEAKER 46: Prečo ideš cez každý kúsok?
ROB: Takže chceme prejsť každý kúsok a -
Takže povedzme, že máme určitý počet.
ALI: 68.
ROB: Môžeme použiť 68.
Takže binárne to bude 100100.
Takže je to vnútri aj a chceme prejsť každý z týchto bitov.
Je to 1?
Tlač 1.
Je to 0?
Tlač 0.
Potom ideme na ďalšie bit.
Je to 1?
Tlač 1.
Je 0?
Tlač 0.
ALI: Cool, v poriadku.
Teraz sme na správnej indexu, kde ten kúsok je.
Ako môžeme zistiť, že konkrétne jeden?
Povedzme, že sme na j = 0, takže chceme skontrolovať 0 index bitu.
Takže, v tomto prípade, to jeden.
>> Takže teraz ako sme sa ísť o kontrolu - oh, bolo by to byť jedno.
ROB: Jo.
ALI: Sorry.
Ako by sme ísť o kontrolu, že jeden, v istom zmysle?
Ako by sme zistiť, či je to 0 alebo 1?
No rokov 's -
TRIEDA: A 1?
ALI: A?
Jo.
ROB: Takže povedzme, že už máme 1.
Potom je táto a, bude táto vráti, či je 1 alebo 0.
ALI: Takže môžeme ísť dole.
A môžeme robiť, čo vy povedal, robiť to & funkcie.
ROB: int -
ako chcem povedať toto -
Isona = i
A pre prvý bit sa stalo, že sa pri pohľade na, robíme I & 1.
Čo teraz budeme chcieť a tým, na druhú bit?
SPEAKER 47: 2.
ROB: Jo, druhá, že sme na 2.
ALI: Určite ste si všimli, že 1 je prešiel do ľavého.
Takže sme sa dozvedeli nejaké bitové operátorov k tomu, že funkcia?
ROB: budúci -
ALI: Jo, jo, presne tak.
Takže je to posun doľava.
Namiesto toho, aby vždy poradili s 1, budeme posunúť.
A koľkokrát sa budeme posunúť?
Ak budeme kontrolovať ten 0. potom budeme pohybovať nad nulou.
Jo, presne tak.
Takže si nechal posunúť ju j
Perfect.
Takže teraz vieme -
máme tento int z, ak je to 1, a potom -
tak láskavý a Robova z podvádzanie tu -
a tak teraz išiel ďalej a on len povedal, že ak to vlastne je 1,
pretože 1 vyhodnotená ako true, takže nemáme hovoriť ISF Isona rovná 1 -
takže ak Isona, potom sme tlačiť 1, a inak tlačíme 0.
>> ROB: Takže náš program má celkovú chybu.
No, otázky týkajúce sa tejto prvej.
SPEAKER 48: Môžeš mi niekedy dal Isona vnútri štyri pracovné časti a
potom sa to posunúť sa ako poslednej časti?
Takže Isona rovná 1 a potom -
ROB: Áno, môžete.
Môžeme skutočne ukázať, že akonáhle budeme opraviť chybu, že som asi
diskutovať s vami všetkými.
Všimnite si, že poradie ideme nad vecami.
Vzhľadom k tejto binárne reprezentácie, začíname s nultého bitu.
Ak je 0, potom sme sa tlače -
dobre, to je 0, takže sme tlače 0.
Potom ideme do druhého bitu.
Je 0, takže vytlačiť 0.
Potom ideme na tretiu bit.
Je 1, takže tlače 1.
ALI: Tak to bude opačne.
Tak ako si chalani ukazujú, že sme to napraviť a ísť na druhú stranu?
SPEAKER 49: [Nepočuteľné]
ROB: Jo.
Takže namiesto toho, aby šiel od 0 do numBits, pôjdeme z numBits bitov na 0.
ALI: Tak [Nepočuteľné]
môže vždy ísť inou cestou.
ROB: NumBits mínus 1, pretože to je to posledné nubmer -
ALI: Vzhľadom k tomu, že ide 0-31.
A potom budeme vždy uistite, že je to väčšie ako 0, takže nemusíte ísť
príliš ďaleko vpravo.
A potom budete vždy odpočítať od 1 do choďte doprava.
>> ROB: Takže teraz máme opačný slučku, a číslo je späť do tlače
správnym spôsobom.
SPEAKER 50: Ak nemáte zmeniť radenie vec taky?
ALI: Takže žiadne.
ROB: Robíme rovnaké presné operácie, s výnimkou teraz
v opačnom poradí.
Takže namiesto toho, robiť presun od numBits mínus 1 sa dostať, čo to
bit je, namiesto toho, aby robil, že posledná, budeme len to prvé.
Zmenou to až tu, ak sme obrátiť poradie všetkého
že sa deje vo vnútri.
Ale my nechceme zmeniť to, čo sa deje vo vnútri vôbec.
ALI: Má to zmysel?
Spracovanie?
Dobre, takže nemá niekto nejaké ďalšie koncepčné otázky?
ALI: Než sa pustíme do jeho bodu, ktorý je -
ALI: Dobre, dobre ísť.
ROB: Namiesto použitia j byť naše -
namiesto použitia j vždy posunúť o, ako jeden posun doľava j, myslím, že to, čo
hovoríš je rád, aby sa j používať sám.
Takže pre j -
Myslím, že je to ťažké - j = 1 << 31.
Je to to, čo chcem?
Myslím, že je to << 31.
j> = 1.
j >>, >> Isona, i & j -
tak teraz namiesto použitia -
ALI: Ste neustále v pohybe j namiesto
index pozrieť sa na to.
Nie je to tak zlé.
Používame podobný druh logiky.
Takže ak pôjdete späť -
oh, ale bude to stratiť.
Dobre, že ste len tak ho zadajte znovu.
Ak si všimnete, že máme 1 << j množstvo časov, a my sme boli
zvyšovanie j zakaždým o jeden krok, ale tentoraz miesto
robia prírastok j hore vnútri slučky for.
Takže namiesto toho, aby sa vždy pohybuje dole -
ROB: Prvá iterácia cyklu for, máme j je 10000.
Ďalšie iterácie pre sláčiky je 01000.
Ďalšie iterácie je, že.
A 1 je len tak, aby rozmnožovacie dole, kým sme narazili veľmi
koniec, kde teraz je to toto.
Druhou a 1 je bude vytlačené, a j je už vyššia
alebo rovné 1.
Mohol by som tiež klásť väčší ako 0, rovnaký rozdiel.
A potom, že je to ono.
Otázky?
Jo.
>> SPEAKER 51: [Nepočuteľné]
ROB: Tak to je rovnaké ako -
ste videli j + = 3?
Takže je rovnaký ako j = j + 3?
Môžete to urobiť prakticky ľubovoľného operátora v C. Tak j >> = 3 je
rovná j = j >> 3.
Takže pracuje tiež s operátormi bitové.
A ja nemal dať 31 tu.
Mal som dať numBits - 1.
ALI: Yay, žiadne magické číslo.
Dobre, je to 04:00, takže napriek tomu, či vy máte ísť - ale to zmysel?
Myslíte si, chlapci majú nejaké ďalšie otázky?
ROB: Bol som tiež bude hodiť v tom, že ak by sme chceli -
sa on diskutoval trojica operátor vôbec?
ALI: Nie
To je v poriadku.
ROB: Takže by ste sa mohli pozrieť na to pre nabudúce.
ALI: Dobre, naozaj?
Teraz ste len predvádza.
ROB: Nie, teraz to -
To je to, čo dostane ľudia záujem, a teraz sa pôjdem pozrieť do toho.
Takže teraz, že robí to isté, v jednom kroku.
Takže najprv skontrolujte, je aj a j 1?
Je to pravda?
Ak áno, vytlačiť 1, inak, vytlačte 0.
ALI: Ale robí to na druhú stranu je úplne v poriadku rovnako.
To má rovnakú logiku.
Takže to nie je ako človek -
ROB: V tomto bode, môžeme sa zbaviť tých zložených zátvoriek, pretože je to len
jedna linka pre sláčiky.
ALI: Dobre, tak to má zmysel?
To bolo docela skok.
Ale to bolo len trochu syntaxe, viac.
>> V pohode?
Nejaké ďalšie otázky?
ROB: Dobre.
ALI: Dobre, v pohode.
Vďaka, že ste prišli do sekcie.