[Powered by Google Translate] [ELECTRONIC STATI ZVUCI] ROB: Ok, tako da ono što smo upravo vas doveo je CS50 mjesta. ALI: Čekaj, čekaj natrag gore. Dobrodošli na sekciji! ROB: Dobro došli u sekciji! ALI: Jupi! ROB: Supersection! ALI: Ja sam Ali i to je Rob. Ok, sada ćemo objasniti prostore. ROB: Dakle, ono što smo upravo vas doveo je CS50 mjesta. Vi ćete biti koristeći ovaj puno u odjeljcima ovaj semestar. Uglavnom, već smo imali ste preuzeli aparata. A možete misliti CS50 prostore kao web sučelja govori na aparatu da smo na nekom poslužitelju negdje. Dakle, možete pokrenuti svoj kôd u ovom sučelju, a mi ćemo vidjeti kako to učiniti stvari. Također možete pogledati kôd drugih ljudi u sekciji, i - ALI: I kao što su neki ljudi saznali, možete razgovarati ljude na strani. I svi ćemo ga vidjeti, previše, tako da je uzbudljivo. Hajde, dođi i sjedni. Sjesti. ROB: Dakle, dijelovi su - ALI: Ne, ne, vi možete doći. ROB: Sekcije će biti puno više interaktivni ovaj semestar. ALI: Oh, on je kao - Oh. Ok, cool. Dakle, ako vi samo dolaze u, možete otići na ovaj link, ako ja mogu dobiti tamo, upravo tamo. Mi stvarno ne mogu ga napisati, jer ne postoji prostor za glačanje, ali ovaj link ovdje, otići na koji na svojim računalima, a vi ćete ući CS50 Prostori, što je prilično cool stvar. Ok. Imate li problem? ROB: Dakle, možete pronaći probleme - moramo biti u stanju napisati ovo negdje. Dakle, ako idete na cs50.net/psets i to je haker supersection - i idete u Hacker izdanje pset jednom, pogledajte specifikaciju negdje dolje na stranici - ALI: Dakle, u osnovi, dok je Rob je u potrazi, što ćemo učiniti u dio danas je tu je dio problema - ROB: - na stranici osam. ALI: - zove dio problema - ROB: Odjel pitanja. ALI: Nažalost, dio pitanja. I oni su ono što ćemo ići preko - oni su ono što ćemo ići preko danas u sekciji. I mi ćemo ga kodirati na CS50 prostore, a nadamo se da će raditi. A mi samo možemo govoriti kroz njih. I vi možete postaviti pitanja kad god osjećate - ROB: Dakle, ovo je uzimajući biti uobičajena stvar kod većine psets. Mislim s ovom jednom, ona kaže da ne morate predati ta pitanja u. No, ideja je da se ta pitanja staviti na pset, a možete doći za poglavlje imati na ta pitanja odgovorio. Ili, ako ne dođe do dijela, možete im odgovoriti na svoju ruku, ili dobiti pomoći u uredovno vrijeme ili nešto. No, to su pitanja koja bi trebalo da vas pripremu za problematičnog setu. I na hakerske izdanju, puno pitanja može biti samo o širi svoj trenutni CS znanje. ALI: Da, prilično mnogo. Ok, tako da je svatko na CS50 prostore? Bok, došli u. ZVUČNIK 1: Možemo li vidjeti URL još jednom? Rob: Da, to će biti lakše nakon što su zapravo u svojim dijelovima, a Vaš TF samo mogu e da URL unaprijed. ALI: Jupi, sjednite. Postoje mjesta ovdje. Prednji nije tako loše. Što? Dakle, CS50 mjesta, mi smo uzimajući tamo. Se bilo tko imati bilo kakvih pitanja prije nego što smo dobili u - Što? ROB: Tu čak nije bilo krede. [Nečujan] ALI: Žao mi je. Ti bi mogao koristiti svoje nokte? Mi smo u samom low-tech sobu za vrlo high-tech klasi. Ok, svatko je vrsta dobra? Ima li netko još uvijek pitanja o tome? Kao što sam rekao prije, da ćemo proći kroz dio pitanja u su pset specifikacije. Dakle, tu je samo par problema koje ćemo kodirati u CS50 prostore. Jesu li svi dobro? Ok. Dobro? ROB: Imate li laptop? ALI: Možete družiti s Lucasom. On je sjedio tik do vas. Lijepljenje vrijeme. ROB: Dakle, početi s prvim problemom? ALI: Da. Možemo početi. Želite li mi - Ja mogu ići. Dakle, mi ćemo ići na pset naočale. Oh, zašto je to - ROB: Kontrola. ALI: Ok, tako da ćemo u odgovoru te stvari kao dobro? ROB: Oh, da. Dakle - ALI: Oh, nije svatko gledati Rob je glumi gaćice? Ok, cool. ROB: Da, ja ne mislim da nužno očekivati ​​da imate ga gledao prije dolaska u tom dijelu, ali možemo razgovarati o onima Problemi unaprijed, jer oni su pod rubrikom pitanja stvari. Dakle, ako niste ga gledali, ne brinite. Oni koji imaju mogu pokušati odgovoriti. Dakle, prvo pitanje, što je pre-procesor, koliko # ne uključuje odnose? Tako se bilo tko imati odgovor za to? Ali: Vi možete razgovarati van. Naravno, samo naprijed. ZVUČNIK 2: # include je neki unaprijed napisani kod, a umjesto ga kopirati i zalijepiti u svoj program, a samo reći to su, pre-procesor zna da je tu i da ga treba dodati u kasnije ili prije nego bilo što drugo se događa. ALI: Da, strašan. Cool. ROB: Dakle, kada ste zapravo sastavljanje programa, pre-procesor je to Prvi korak. Kompilacija se događa u četiri velika koraka. Dakle, pre-procesor je prvi veliki jedan, i to je taj tip koji ide putem i izgleda za sve ove hash simbola. I bilo linija koja počinje s mljeveno meso, pre-procesor gleda na to i vidi ako se može obraditi. Dakle # include govori pred-procesor tražiti neke cs50.h podnijeti i samo kopirati i zalijepiti svoje sadržaje u ovoj datoteci. Dakle, možete zaista # uključiti sve što želite, ali to je uglavnom će biti H. Datoteke. Nismo došli do # define još, tako da ne smeta. ALI: Da, mi smo dobro na toj jednoj. Se bilo tko imati bilo kakvih pitanja o tome? Jesmo li dobro? Sljedeća pitanje. ZVUČNIK 3: U Ukratko, bilo je nešto o c kao dobro.? Je li to relevantno ili je to nebitno? ROB: O C s pre-procesor.? ZVUČNIK 3: Da, ili sam napraviti nešto gore? ROB: Tako je kratka možda pokazuje pred-obrada ovu datoteku i . ga izlaza na drugu c datoteku, tako da možete unaprijed obraditi ovu sliku - kada samo trčanje kao, čine halo ili zveka hello.c, radite sve Kompilacija u jednom velikom koraku. No, možete i eksplicitno to učiniti u svojim odvojenim koracima. Tako je prvi možete ga unaprijed obraditi. Zatim možete sastaviti, onda možete sastaviti, a zatim možete povezati. Mi ćemo doći do onih drugih. No, predobradu, te vrsta pre-procesu, a onda ide u drugi. c datoteka. Zbog pre-obrada ne mijenja ništa. To je samo hrpa kopiranje i lijepljenje. Možete ručno mogao kopirati i zalijepiti ga sami. ALI:. I da bude jasno, c datoteka C datoteku, tako da je napisan u C koda. Tako to ide iz C koda u C koda. Vi samo dodavanjem više kod sa kilogramu. ROB: Kad ste ga već obrađena, to je još uvijek vrijedi C datoteka. ZVUČNIK 3: Ok. ALI: Dobro pitanje. Sviđa mi se to. Dobro, iduće pitanje. Što je prevodilac? Svatko? Da. ZVUČNIK 4: To mijenja prethodno obrađena kod u skupštini. ALI: Savršeno. ROB: Da. ALI: Cool. ROB: Dakle, to je ono što prevodilac radi posebno kada smo pomoću zveka. U vrlo općenitom smislu, prevodilac je baš kao i uzimanje koda u jednom jeziku i pretvarajući ga u drugom jeziku. Dakle, u C - ili, dobro, zveka je uzimanje kôd koji je u C i pretvarajući ga na skupštini. I ne morate biti u stanju razumjeti sklop uopće. Ali to je jezik koji to ga pretvara u. ALI: Ok. A onda, što je monter? Svatko? ZVUČNIK 5: [nečujno] u binarni? ALI: Žao mi je, što? ZVUČNIK 5: [nečujno] u binarni? ROB: Yep. ALI: Da. ROB: Dakle, monter - Skupština kod je stvarno, stvarno blizu onoga što je vaše računalo može razumjeti, ali sjetite se da to ne razumijem tekst da je Skupština broj. Morate ga pretvoriti u ravnoj 1s i 0s. To je kao izravan proces prevođenja. Mi samo mogu vam dati tablicu koja karata što svaki montaža upute znači. No, monter samo radi ovaj prijevod za vas. To je pretvarajući sklopa kod u 1s i 0s. ALI: I onda, za razliku od prošle, što je spojnica? A kako ne-lcs50 odnose? Svatko? ROB: Ovo je najteži, a najmanje jednom objasnio u prevodilac video. ALI: Da li itko sjetiti vidom-lcs50 u zapovijedanja? ZVUČNIK 6: Kada je otišao i napraviti. ALI: To je u napraviti. Da, super, ok. Je li bilo nagađanja ili nejasne - da, idu. ZVUČNIK 7: Nisam siguran, jer kratko je stvarno [nečujno], ali je to bilo nešto o radi zasebne datoteke sa svakim knjižnici, a zatim stavljanjem ih sve zajedno u jednoj knjižnici? ROB: Da. Dakle, kada imate hello.c, to je stvarno jednostavan program. Stvarno si samo radiš jednu stvar u tome. No, kada ste dobili u drugim programima - i mislim da čak i kada ste GetString u svoje programe, morate početi uključujući i druge datoteke. Dakle CS50 knjižnica je jedna takva datoteka u kojoj imamo implementacije od GetString i GetInt i svih tih stvari. Dakle, ono što linker ipak to ide okolo u potrazi kroz sve ove slika, vidjevši gdje su funkcije definirane, pazeći da kad ja zovem GetString negdje, ona zna da GetString znači da je GetString više u CS50 knjižnici. Dakle linker traje samo sve ove datoteke ih razbija zajedno, a sada imate izvršnu. Dakle, imajte na umu, ako ste koristeći CS50 biblioteku, morate oba # Include na vrhu, a zatim iu vašem marku zapovijedanja, kao i ti rekao je, morate imati-lcs50. Dakle, ne možete samo imati jedan. Dakle, to je samo nešto što treba imati na umu za ubuduće. ZVUČNIK 8: Dakle, recimo da je bio još jedan knjižnica, kao cs51.h, bi mi Također morate dodati-lcs51? ROB: Jedini razlog zašto to-lcs50 savršeno funkcionira jer imamo taj skup u određenom mjestu u vašim aparatima, tako da zna što -Lcs50 znači. Mi samo mogu vam dati cs50.c datoteku, a onda ste mogli prevesti ga, rekavši Jeka hello.c cs50.c, a onda bi vaš izvršnu stavljanjem one dvije datoteke zajedno. On zna da-lcs50 znači cs50.c više u nekom direktoriju koji smo naveli u Vaši aparati. Dakle, ako ste htjeli cs51.c biti specifiable za samo govore-lcs51, onda mi također bi trebao staviti ga u taj direktorij, tako da ne zna gdje se tražiti ga. ALI: Što je vaše pitanje? ZVUČNIK 7: Zašto morate povezati CS50 ako - wasn't to kopirati / lijepiti na prvom koraku kada ga prethodno obrađenog? ALI: Želite li ga uzeti? ROB: Naravno. Dakle cs50.h datoteka je odvojen od cs50.c C datoteci. Jeste li stečen funkcionirati prototipove u razredu? Ok. Dakle, u osnovi, cs50.h datoteka samo će kopirati i zalijepiti - ALI: Dali vi znate što su potpisi? Ok, tako da prilično mnogo, ako pogledate - ROB: Idemo hinjena cs50.h ne postoji. Sada ovu sliku - radite string s = GetString. Ali kad smo došli do ove točke u kodu, to nema pojma što GetString je. To ne zna da je funkcija, budući da ste ga zovete. Ali, to ne zna da je to zapravo trebalo da se vrati niz. Dakle, kao što sam rekao, niz s = GetInt, to ne bi bilo smisla, jer ti si potpisivanja integer do niza. No, to ne znam da GetString nema smisla, jer to ne znam da GetString vraća string. Dakle, ono što cs50.h kaže nešto poput ovoga. ALI: Dakle, ono što je Rob piše, to je obećanje na način da će se imati tu funkciju pod nazivom GetString. ROB: To je sve što cs50.h je kopiranje i lijepljenje ovdje, kao i kao GetInt i svih tih stvari. I to samo govori da GetString ne vraća niz. Vi ne znate kako se to provodi, no kada smo dobili na toj liniji, sada ona zna da je to ispravno vraća string. ZVUČNIK 9: Dakle, ako mi ne zamaram s # include stvar i umjesto Samo je napisao prototip za one koji se zapravo događa za korištenje? ROB: Da. Tako ćemo pokrenuti ovo. ZVUČNIK 9: Je li to? Dakle, po defaultu, to će učiniti-l do CS50 samo zato -. ROB: - izraz. ALI: Da, jer kao što je rekao, to je u marku datoteku. ROB: cs50.h također se događa da se typedef char * na žici. Možete se potpuno ignoriraju što to znači za sada. Ali to je također nešto uključeno u cs50.h. Tako sada stvari radio savršeno u redu. Ona radi točno isto kao što je bio kad smo imali # include. I tako, uključujući cs50.h događa preko-uključuje stvari koje trebate - kao, ne koristite GetInt u ovom programu, ali to ne smeta. To samo ću ga ignorirati. ALI: I onda kada to učinite-lcs50 ovamo i ovdje, ono što se događa na je da to ima stvarni implementable koda. Dakle, to je gdje je to zapravo, radi - pisanje koda za GetString. Dakle, to nije samo obećanje više. To je zapravo prolazi kroz te uzimanje string i sve te stvari. Smisla? Pitanja? U redu. Cool grah. ROB: Sada možemo prijeći na stvarni broj. ALI: Ok. Dakle, ovdje je prvi problem. Dakle, ona kaže napisati program koji traži od korisnika za mala pismo, a zatim pretvara ga u velika slova bez korištenja bitovni operacija, kao i po uzorku izlaz ispod. Dakle, što možete vidjeti, možete pokrenuti program sa. / A.out, a zatim si će staviti u mala slova, a zatim vaš program treba dati kapital A. Pa zašto ne vi svi dati ga metak na CS50 prostore? Dakle, vi svi možete ići ovdje. A možete izbrisati sve kod ovdje. I onda možete ići naprijed i početi kodiranja stvar. ROB: Vjerojatno ćete želite koristiti getchar, koji je uključena u CS50 knjižnici. ALI: Mislim da bi moglo biti bolje ako spremite gornji dio. Dakle, možda želite samo promijeniti stvari u sredini. Idi naprijed i raditi. Slobodno raditi jedni s drugima. Rob: I vi možete postaviti pitanja ako imate - ZVUČNIK 10: Što je bitovni operacije? ROB: Dakle, zanemariti činjenicu da za ovaj problem. ALI: Ako to ne znam, to je dobro. ROB: Mi ćemo ga koristiti u sljedećem problemu. Ali ako ne razumijete bitovni operator je, to je u redu. ZVUČNIK 10: Je li to kao da se pretvara u ASCII kodu? ALI: Ne ROB: Ne Možete to učiniti za ovaj problem. ZVUČNIK 10: Kako ćete to učiniti? Dakle, ako samo sam morao negdje napisati - ALI: Ili nešto pisati. ROB: Mogao bih samo vrsta tipa u ovo. ALI: Tip na vrhu. ROB: Oh, ja sjedim na mikrofonu. Dakle, vidjeli smo u predavanju koje ASCII vrijednost za kapital je 65. I kapital B će biti 66, i tako dalje. Tako da doslovno možete koristiti 'A' to znači da je broj 65. Kao, to je vrijednost 65. Ja mogu učiniti nešto poput int x = 100 - ''. I sada će imati x vrijednost 100-65. ALI: Možete pokrenuti da i pokazati da. Oh, možda i ne. Ništa za to. ROB: Morao sam ga ispisati. ZVUČNIK 10: Kako ste ga vratite karaktera? ALI: Dakle, ako ste nemojte - samo prisiliti da bude char, jednako. ROB: Dakle, tu je - Razlika između char i cijeli broj je samo u smislu veličine. Dakle, cijeli se dogoditi da bude u mogućnosti da predstavljaju stvari da, kao, četiri milijarde. Char je samo u mogućnosti da predstavljaju stvari do 255. No, ne postoji razlika između njih osim toga. Dakle, može se reći char c = 65. To je ekvivalent govoreći char c iznosi ''. ALI: Oh, ne. To zapravo ne spasi stvari. ROB: Ne, ne mogu to učiniti. ALI: To je samo - [Uzdiše] ROB: Ok, pa ono Ali samo napisala je program koji ispisuje prvi 100 - '' Kao cijeli broj, koji je bio 35, kao što smo očekivali, jer je 100 minus ASCII vrijednost je 65. Zatim je ispisati pomoću% C, što znači da ga tumače kao znak. Dakle, 100 - 35. Tumačenje da je kao lik se događa da se rasprsne simbol. Ako pogledate asciitable.com ili bilo što drugo, vidjet ćete da je 35 hash simbol. ALI: Ok, sve ostale pojašnjenja o problemu? Ok, vi možete ići naprijed i učiniti ga onda. Slobodno pitajte pitanja ili međusobno razgovarati. Ili, ako ste već učinili, možete se opustiti. LUCAS: Jesu li isti razred, sve mala slova u redu i Također veliko su također u redu, jer to je nešto korisno za problem. ALI: Dobro pitanje, Lucas. Dakle, nije vi sve to? ZVUČNIK 11: Da. To je kako to učiniti, zar ne? ALI: Točno. ROB: Da. ZVUČNIK 11: [nečujan] ALI: U redu. ROB: Što je pitanje molba? Samo za pretvaranje - ALI: Pretvaranje malih slova na velikim slovima. To je to. ROB: Ok. ALI: Ako smo ga pisati? Valjda ćemo samo gledati na tuđe. ROB: Dakle, za one koji bi mogli biti zaglavi, način - ako imam neki char c, a recimo da se dogodi da se slovo D. Dakle, kako sada mogu shvatiti što slovo abecede C je? Ne D, ali mislim, D se dogoditi da bude četvrti slovo abecede. A ako ćemo početi računajući od 0, onda je treći slovo abecede. Dakle, ako je 0, b je 1, C 2, D je 3, kako mogu shvatiti int položaj - ono položaj abeceda C u? Se bilo tko imati bilo koji ideja? ALI: Mislim da ste svi kodiranja. ROB: Što o prvoj? ZVUČNIK 12: Dakle, ono što je, oduzimanje prvo? ROB: Da. ALI: Da, strašan. Tako ste mogli učiniti kapitala D - oh, oprostite. Uzmete karakter i oduzimati prvi jedan, kao što je rekao. ROB: D Dakle, ako je nešto poput 68, i oduzmemo, što je 65, onda smo dobili 3, govore nam da je D treći slovo abecede počevši od 0. Dakle, možete koristiti. Sada znamo što slovo abecede, u smislu slovima, ili - smo mogli učiniti istu stvar za malim slovima shvatiti što kurent poziciju da smo u. I možemo koristiti da onda pretvoriti u velika slova da koristite vrlo slična ideja. Pitajte za prijedloge? ALI: Da li vam dečki - čekati, ne znam koliko ti dečki su. Jeste većina ste učinili, to još uvijek radi, ste zapeli? Vi možete kriknuti - zaglavi. Jedna osoba je zapeo. Cool. I imaju tendenciju da se zaglavi, previše. ZVUČNIK 13: Ja sam učinio. ALI: Ti si učinio? Ok. Gotovo. ZVUČNIK 13: [nečujan] ALI: Da, super. Jeste li provjeri da je u malim slovom obliku? Ok, cool. Gdje su drugi ljudi? Je li to nagovještaj vam pomoći, kao i za sebe UN-zabada? ZVUČNIK 14: Ne baš, ali baš zbog toga, ne znam, nisam to probavljanje još. ALI: Ok, cool. Želite li probati - ili ne želite ići i razgovarati? ROB: Ono što sam htio reći je - pa koristeći ovaj. Razumijete li kako smo dobili ono položaj abecede Pismo je u? ZVUČNIK 14: Ok, tako da kada se stavi stvari u jednu kotaciju, koja vraća broj? ROB: Da. To će biti preveden na ASCII vrijednost predstavlja. Dakle, ne želite ići u ASCII tablici ili što god je to? ALI: Samo jedan od njih? ROB: Yep. Dakle, kada ste stavili bilo koji od ovih simbola, ignorirajući puno - ALI: [nečujan] ROB: Oh, pomoću pokazivača. ALI: Da. To je bilo uzbudljivo. ROB: Dakle, ignorirajući ove i one na lijevoj strani, koji su posebni simboli - ako ste stavili bilo koji od tih simbola u jednostruke navodnike, onda će to biti prevedena na tu vrijednost na lijevoj strani. ALI: Ovo je decimalni broj za njega. To je kao utakmica s 65, B do 66, a vi ćete primijetiti da su oni sve u abecednim redom, koji čini razliku. Dakle, kao što je Rob kaže, prije, u tom kodu, bili smo računanja udaljenosti od prvo slovo po sebi. I to će biti isti, bilo da je to veliko ili malo slovo. ROB: Dakle, kada smo radili D, 68 minus, 65, dobili smo tri. Budući da je D tri pozicije u abecedi. ALI: Pa onda kako bi ti prevesti više naći malo d? ROB: Da. Dakle, ako imam tri sada, znam da želim otići tri slova u - mi se dogoditi da se ide malim slovima sada, ali recimo ja želim ići tri pozicije u malim slovom strane stvari. Pa kako to mogu učiniti? Znam mala slova je 97. Pa kako ću pronaći tri pozicije u malim slovima? ZVUČNIK 15: Imam jedno pitanje zapravo. ALI: Da, ići naprijed. ZVUČNIK 15: Pa za to, to zapravo ne smeta ako znam ovu poziciju, sviđa, ne trebam ovu tablicu. ROB: Nope. Vi nikada nećete morati koristiti bilo koji od tih brojeva. I to je važna točka u svoje programe koje nikada ne bi trebali naporno kodirati bilo koji od tih konstanti. Koristite 'A'. Nikada ne koristite 65 ili 97. ALI: Oni su pozvani Brojevi, i oni stvarno zbunjujuće. Kao, kad si ispravljanje pogrešaka kod, možda nećete sjetiti što ih koristiti za. I za nas gradiranje svoj kôd, mi stvarno ne će znati što ti si ih koriste za. Dakle, to je bolje ako zapravo koristiti znakove tako čini više osjećaj za ljude. Ok, sva ostala pitanja? Jesu više ljudi radi, ili - Pretpostavljam da možemo provjeriti. To je stvarno jezivo da možete vidjeti ljudi kod. ROB: Da. Mi ne moramo to učiniti ovdje. Mi ne znamo imena ljudi, bilo. ALI: Oh yeah, dobro da čini bolje, tako da ćemo biti još nepristran umjesto da samo slučajno branje nekoga. Ne brinite. Neću to učiniti. Ako imate slučajnih stvari o - Nema veze. Ok. Kako su ljudi rade? ZVUČNIK 17: Dakle, deveti redak treba ispisati znak? ROB: Da. ALI: Da. Dakle, ako idete dolje - ROB: Oh, ne mogu to učiniti. ALI: Vidjet ćete da je tiskana ljestve simbol. ZVUČNIK 17: Oh, u redu. ROB: Valjda drugi način možete gledati na stvari je da smo tiskanje dva likovi. Prvi smo ispisa je pismo A. Sljedeći smo ispisa je samo 65 godina. Vjerojatno će vikati na mene za to. Dakle, ako smo samo pokrenuti ovu, primijetit ćete da se ispisuje oba puta. Zato tražimo to ista stvar. Mi smo ga pita za ispis slovo A. I onda tražimo da ispis broj 65 tumačiti kao lik, koji je ista stvar. ALI: Imate li nešto za reći? Oh, samo šalio, žao mi je. U redu, kako su ljudi - ROB: Možemo samo prošetati kroz nju. ALI: Dobro, pa kako ste počeli? Svatko? Kao savjet, moramo dobiti nešto od ljudi, od typers. ZVUČNIK 18: [nečujan] ALI: Oh yeah, brz, savršena. Tako ćemo upisati - Što ćemo upisati? Svatko? Ili bi trebao sam ga upisati? Jesmo li zapravo piše - ROB: Naravno. ALI: Dakle, mi ćemo upišite printf to zatraži, tako da možemo biti sviđa, daj mi znak. Dobro, a što onda? Zašto se to radi? ROB: Ne znam. ALI: Ok. Tako sada, mi smo ih reći da nam daju karakter. Ali kako onda ste zapravo dobili taj lik? ZVUČNIK 19: Koristite GetString. ALI: GetString? Getchar? Ok, tako što je razlika između niza i char? ZVUČNIK 19: Znakovni nizovi su nizovi, kao niz znakova. ALI: Cool, da. Dakle, u ovom problemu, mi samo treba uzeti u obzir jedan lik u isto vrijeme, tako da mi samo ćeš učiniti getchar za taj primjer. ROB: Mogli smo provesti funkciju ako smo htjeli da je cijeli niz i otišao preko niza i promijenio sve su mala slova u velika slova i sve velika slova u mala slova. Ali ovdje, samo smo vas pitati za jedan lik. ALI: Dakle, sada imamo karakter ovdje, ali onda moramo ga spasiti. Pa onda ćemo dodati char c - što? ZVUČNIK 20: Definirajte varijablu. ALI: Da, točno. Dakle, imamo karakter. ROB: Mislim da bi moglo biti - ti si samo tri mjesta u, što je razlog zašto je vikao na tebe. ALI: Ok, super, sad kad smo tabbing skup, što će se dogoditi sljedeće? Što je sljedeći korak? ROB: Što naš program treba učiniti je promijeniti malo slovo na veliko slovo. Što ako se dogodi da unesete ljestve simbol? Je li to - ALI: To je dobar znak. Mi koristimo ga puno. ROB: Je li to vrijedi što mogu pretvoriti u obliku velikih slova? ZVUČNIK 21: Ne ALI: Ne Trebamo provjeriti da. Dakle, možemo imati ako izjava provjeru pa ako je c veći od ili jednak malih slova 'a'- pa ako gledamo grafikon, primijetit ćete da to mora biti između ovdje, na 97, a malim slovima. I to može biti bilo koji od ovih, au koracima dokraja. A onda je tu z na 122. I to mora pasti između tih dviju vrijednosti. Ima li to smisla? ROB: Dakle, ako je c nije između 97 i 122 - ili nikad ne treba da koriste te brojeve - ako je c ne između 'A' i 'Z', onda to nije bio važeći znak za nas veliko. ALI: Dakle, u obliku koda, možemo reći da ako je c veći ili jednak jedan Slučaj mala - wow, kako ste rekli da? Ok, veći ili jednak malih slova 'A', i ona mora biti gore malih slova 'z'. Dakle, to mora biti manji ili jednak mala slova 'Z'. Mi smo sigurni da je između dva. Tada možemo nastaviti s našim sretan koda. Što? ROB: Tako sam shvatio da bi samo držati molba, ako mi se dogoditi da ne moram malo slovo. ALI: Oh, nisam bio svjestan toga. Oprostite. Ok, pa ako ćemo učiniti kao Rob kaže, i pobrinite se da - možemo držati ih pita, onda što bismo trebali učiniti? ZVUČNIK 22: [nečujan] ROB: Da. Mi bi trebali koristiti nekakvu petlju. Budući da korisnik može unijeti nešto nevažeći neispričana iznos puta. Dakle, možete koristiti petlju dok. Svrha učiniti-while petlje - doslovno, jedini put u svom cijeli život ćete ikada koristiti ne- dok petlje je kada pitate za unos korisnika. Dakle, činjenica tražimo za unos korisnika ovdje je nagovještaja da bismo trebali koristiti do-while petlja. A zašto je to? Jer to-while petlja se uvijek dogodi barem jednom. Dakle, kada ste molba za unos korisnika, želite da se to dogodi barem jednom. A onda, ako se stvari bili uspješni, možete zadržati ide. Ako ne, vratite se i ponovno pitati. ALI: Dakle, drugim riječima, moramo napraviti rez. I tako je to to govori nešto učiniti. Dakle printf - ispis priopćenju, brz, i dobiti karakter ili pokušaj dobiti karakter. I onda moramo provjeriti je li to zapravo to učinio ispravno. Dakle, tada dodamo uvjete, onda ćemo reći, a, a onda moramo uvjetna naredba. ROB: Ali sada smo preinačio misao. Sada smo prvotno su govorili, ako je c u tom rasponu, to vrijedi. Sada želimo da preokrenu da i reći ako je c nije u tom rasponu, tada smo morati vratiti raditi stvari opet. ALI: Oh, da. ROB: Dakle, dok to nije istina, želimo se vratiti i pitati za drugog lika. Da li su svi vidjeli da? Pitanja o tome? Ok. Tako sada imamo valjanu karakter da možemo velika slova. ALI: Pa što onda sljedeći korak za to uppercasing? ZVUČNIK 23: Dodaj 32. ALI: Možete dodati - Oprosti, što? ZVUČNIK 23: Ne može se samo dodati 32? ROB: Pa da, ne u smislu magičnih brojeva. Vi samo treba koristiti jednom citat stvari. ZVUČNIK 23: Dobro, dobro - Rob: Ali možete dobiti 32 - ALI: Kako ste dobili broj 32, pretpostavljam, je ono što mi govoriš. ZVUČNIK 23: [nečujan] Rob: Dakle, možemo doći do broja 32 zajedno - ZVUČNIK 23: [nečujan]? ROB: Da. Ali ako ćemo to učiniti u dva koraka smo učinili prije nego što s položaj stvari. Dakle, položaj u pismu da je c dogoditi da se je c minus mala "'. Dakle, ako smo unijeli malo slovo 'd', stav će biti tri. A sada želimo da se stvari do velikih slova raspon stvari. Dakle, sada naš novi c će biti glavni grad '' plus položaj. Dakle, ljudi vide kako to nas dovodi - krećemo od malih slova raspona, točno dubina smo bili u to Raspon, i ide dolje u rasponu velikih slova, i ide tako daleko u nju opet, što će biti isti lik, ali sada uppercased. ALI: I za ljude koji su bili zbunjeni kako je on samo rekao 32, osnovi on u kombinaciji obje ove u jednom izvještaju. Dakle, ekvivalent način pisanja to reći možete samo vrsta zamjena pozicija, c minus ',' i staviti ga ovdje. Dakle, ono što je učinio, sam nemojte - char newc = velikih '' plus c minus mala slova 'a'. I zbog algebre, možete ih kretati. Također se može reći da ga možete kretati tako char newc = velikih '' minus mala slova 'A' plus c. I to, primijetit ćete da se vratimo na grafikonu. Imamo velika slova je 65, a mala slova je 97. Dakle 65-97 je -32. Bok. Sjesti. Oh. Možete sjediti ovdje. Cool, ok, super. Dobrodošli na dijelu. Primijetit ćete da je razlika 32. Dakle, to je mjesto gdje je dobio taj broj. No, to nije, kao što je Rob kaže, najbolji način da to učinite, jer ima čudno magični broj zbunjenost. ROB: Trebali biste koristiti kapital minus mala slova. Vi ne bi trebali koristiti samo ravno 32. ZVUČNIK 24: Zašto je to tako, opet? Zašto ne bi trebao koristiti 32? ALI: Ako smo to učinili, to će biti char newc = -32 + c. A ako ne vidjeti bilo koji od ostatka tome, ako je to sve je nestalo, a vi samo vidjeti ovu jednu liniju, kako onda znaš što negativno 32? To je samo izvan mjesta. ROB: Dakle, vaš program će raditi sasvim u redu. To je samo stil stvar. Netko ide i čitanje koda, oni su kao što to znači 32? Možda nemojte - Ja vjerojatno ne bi odmah shvatili da 32 se dogodi da se Razlika između malo slovo i veliko slovo, iako idemo koristiti tu činjenicu u sljedećem problemu. 32 - mogli ostaviti komentar iznad je rekao 32 je razlika između "A" i "." No, u tom trenutku, zašto ne samo koristiti 'A' i 'A', a vi ne treba komentar tada. ALI: To je samo načini iznad njega su puno čistije, stil-mudar. I tako, budući da ste tek počinje programiranje - ili valjda ne, jer ti si haker edi - nije bitno. To je samo dobar način da se - to je bolje imati bolji stil. To je lakše za druge ljude da čitaju. ROB: Vi nikada ne treba da zapamtite ASCII tablicu, ikad. Vi samo treba biti u mogućnosti koristiti jednu citat znakove. Pitanja? ALI: Svatko dobro? ROB: Ok. Dakle, sljedeći problem je bitan. Dakle, sljedeći problem nas pita - ALI: Sljedeći problem je molba za nas učiniti istu stvar, ali za korištenje bitovni operatori. ROB: I naravno, nismo vidjeli bitovni operatori ipak. Tako smo sada ćemo raspravljati o onima. ALI: Budite uzbuđeni. Oni su super zabavno. ROB: Dakle, redovni operateri, poput x plus y, minus, puta, podijelite. ALI: upišite ga u ovaj redak. Rob: Tu je i%, ako niste vidjeli, koje možete koristiti po posto simbol. No, nećemo koristiti onima za ovaj problem. Želimo iskoristiti bitovni operatori. Sada zapamtite, mi ga doveo u predavanju jednog. Nisam siguran da li smo razgovarali binarni izvan toga. No, sjetite se da svaki broj predstavlja - dobro, sve - je zastupljen u 1s i 0s u binarnom. Dakle, to znači da kad kažem broj 8, ja znam da je to kao, 1000. Što bitovni operatori činimo je raditi na tim bita - je raditi na tim bita izravno. Sada sam više ne bave u smislu osam. Bavim u smislu 1.000, a ja želim raditi stvari s onima pojedinačnih bitova. Dakle, Alija je napisao bitovni operatori ovdje, ali that's - Broj 8 ćemo koristiti kao jedan od naših npr. brojeva. I binarni prikaz je 1000. Mi ćemo koristiti neki drugi broj, 5 - zapravo ajmo koristiti devet i pet. I u pet je binarni prikaz je 00 - 0101. ALI: Jesu li svi dobro na to? Binarni stvari? To je bio od prvog predavanja? ROB: Dakle, čak i ako nisu u potpunosti na vrhu kako pretvoriti stvari binarni, to nije sasvim važno za ovaj problem. Mi ćemo biti koristeći ga, ali ćete imati mnogo više šanse da shvatiti kako brzo okrenuti stvari u binarnom. Dakle, pomoću devet i pet, a sada imamo bitovni operatori. Oh, i također, 9 i 5, ako je cijeli broj, a zatim stvarno je 32 bita, što znači da smo kao 0, 0, 0, 0 puno puta, a zatim 101 na samom kraju. To je samo zato, bez obzira na to što radite, u integers, 32 bita. Samo zato trebamo samo četiri bita predstavljaju devet ne znači da nismo koristeći se druge 27 bita za samo 0s. ALI: Samo da pojasnimo, jedan od tih brojeva koji je 0 ili 1 je malo. Ovo je jedna 4 bita. Kao tako Rob je rekao da strojevi pohraniti ih u 32. Pa onda oni će morati 32 od bilo 0 ili 1. Cool? ROB: bitovni operatori. Prvi je da ćemo se baviti, ajmo raditi &. Dakle, ako mi 9 i 5. Dakle, ono što i čini se, malo po malo, to uspoređuje bitova dvaju brojeva a ako obje brojevima 1, onda će se vratiti jednom. Ako je a 0, a drugi je 1, ili oba su 0s, onda vraća 0. Dakle, možete misliti o njemu kao svoje logičke ands. Kao što trebate istina i istina da se vrate istina, ali istinito i lažno lažno. Dakle, to je ista stvar, ali sada imamo posla s njim sa samo bita. ALI: Dakle, ako pogledate ovo, imat ćete jedan - ćete ih redati, tako da će biti 1 i 0. Da li vi mislite da će biti - što bi to vrednovati na? ZVUČNIK 25: 1. ALI: Cool. Ili ne. Oprostite. Dakle, to ima smisla? Dakle, ono što je kolektivni odgovor opet? Oprostite. Dakle, ako imamo jednog i 0, onda ono što ste dobili? ROB: Dakle, mislite kako ste rekli i glasno. Ako imate dva bita, x i y, morate x i y biti jedan kako bi za njega ocijeniti do istinito - ili, kako bi za to da se ocijeniti do jedne. Ako x ili y 0, onda se procjenjuje na lažne ili 0. LUCAS: Lijepo je sjetiti se i da je jedan je istina i 0 je lažna. Dakle, ako imate pravi i lažni, to je laž. Ali onda, istina i istina, istina. Lažna & lažna, lažna. ALI: Imamo istina i laž. Dakle, 1 i 0. Pa onda opet, žao mi je, još jednom? ZVUČNIK 25: To će biti 0. Da, super. I onda imamo 0 & 1 - ZVUČNIK 25: [nečujan] ALI: Da. Dakle, uvijek možete ih zamijeniti u - Onda, ako imate 0 i 0? ZVUČNIK 4: 1? 0? ROB: Dakle, to je 0. To ne znači da su oba brojevi moraju biti isti. To je da su oba brojevi trebaju biti jedna. ALI: Dakle, oboje moraju biti istinita za to da bi bilo istinito. Tako da je 0. I onda imate 1% 1, što je? ROB: To su prilično dobri brojevi. Oni imaju sve moguće - ALI: Dobar posao, vau. Ok, cool. Dakle, nema smisla da svima? ROB: Dakle, sada ćemo napraviti |. I to će biti vrlo slična, ali sada umjesto x i y trebaju biti jedan kako bi za to ocijeniti do jednog, sada je samo x ili y treba biti 1. ALI: Dakle 1 | 0 ocjenjuje da - Klasa: 1. ALI: Cool. 0 | 1 ocjenjuje da - Klasa: 1. ALI: Cool, a zatim 0 | 0 - KLASA: 0. ALI: Da, a zatim 1 | 1 - Klasa: 1. ALI: Cool. Dakle, to je kao dva bitovni operatera. Strašan. ROB: Dakle, sada ćemo napraviti ^. ALI: Trebamo učiniti sve od njih? ROB: Da, jer mislim da ćemo ga koristiti - koristite ih sve. ALI: Ok. Dakle - ROB: Pretpostavljam da mi ne trebaju. ALI: Pa ^ djela u koje morate imati točno jedan pravi i jedna lažna. ^ Znači isključivo ILI. Dakle, sada to nije - ako su xiy oboje jednom, to je sada lažna. To je razlika između ^ a |, je da ILI, možete imati, ako je x Istina ili y je istina, onda smo dobri. Ne, ^ kaže da ako je x istinit, y mora biti lažna, inače to nije istina. Imate li pitanje? ZVUČNIK 26: [nečujan] ALI: Da. To je vrsta slična. ROB: Da, pa kad dođete do tog low-level hardvera stvari, to su vrste operacija ste se bave. Na razini sklopovlja, samo će se baviti bita. Vi ne bave brojkama. ALI: Ok, za ^, ili ako imate jedan ^ 0, što to treba procijeniti da? Klasa: 1. ALI: Cool. Ako imate 0 ^ 1? Klasa: 1. ALI: Cool. 0 ^ 0? Cool. A onda jednog ^ 1? KLASA: 0. ALI: Cool, strašan. Sljedeći - ROB: Mislim da su to svi moramo baviti. Samo ćemo učiniti to. ALI: Jedini put ćemo morati učiniti - ROB: Oh, to će biti za zadnji problema. ZVUČNIK 27: Čekaj, opet? ALI: Nažalost, ono što je vaše pitanje? ZVUČNIK 27: Možete li objasniti da opet? ^? ZVUČNIK 27: Exclus - da. ALI: Pa što isključivo ILI znači da mora postojati isključivo jedan pravi i jedan lažni, pa se jedan i jedan 0, nasuprot s ILI, možete imati - jedan od njih mora biti istina, ili oboje može biti istina, za njega ocijeniti do istinito. ZVUČNIK 27: Dakle 0 i 0 će biti lažni. ALI: Da. No, ako imate jedan | 1, da bi se ocijeniti da istina. No, ako imate jedan ^ 1, kao što smo učinili, koji se procjenjuje na false. Budući da to nije isključivo jedna je istina. ROB: I to se može ili ne može biti od pomoći, ali primijetiti da ^ je jednaka samo uzimanje | minus &. A zapravo možete misliti o tome na ovaj način. ^ Samo ORing sve zajedno, ali iznošenje bilo bitova gdje oboje su bili pravi. Tako i vraća sve gdje su i bile istinite. | Vraća sve gdje jedan ili oba bili pravi. Dakle oduzimanjem da iz | vam daje ^. ALI: Ima li pitanja? To je puno informacija. Svatko dobro? ROB: Možemo ići preko sljedećih one za sljedeću problema, slash koliko je sati? Oni ne trebaju to do sljedećeg problema. ALI: Mislio sam da je ovo jedan. ROB: Nije. ALI: Jeste li sigurni? ROB: Da, ja sam pozitivna. ALI: Zašto ne bismo početi raditi sljedeći problem? Problem je, opet, kako bi ga promijeniti iz kurent u velika slova, a to Vrijeme je da iskoristimo bitovni operatori. ROB: Dakle, hoćemo - počnimo s binarnom reprezentacije '', kapital '', što je 65. Tako je u binarno - tako 'A' = 65, koji =, u binarnom - Idem nered gore broju 0s - da. ALI: Znači li to smisla svima? Dakle, jedan, nema 2s, ne 4s, ne 8s, ne - Nema 16s, ne 32S, a zatim je jedan 64. ROB: Da, mislim da je to jedan previše 0s. ALI: Žao mi je. ROB: Ok, tako da imamo 64 set, a imamo jedan set, a kombiniranjem onih zajedno, dobili smo 65. ALI: Cool grah? ROB: Pa sad, mala slova 'a'- Primijetit 97 - Koja je razlika između 97 i 65? ZVUČNIK 28: 32. ROB: Da. Dakle, to je 32, koji je vlastiti malo, tako da će biti 110.001. I to će biti istina za sve moguće likove. Dakle, ako mislimo 'D', što će biti 68, koji će biti 1.000.011. A zatim mala "d" će biti 68 plus 32, što je 100, što je će biti ista stvar da je to bio, samo flipping 32 opet, tako 1100011. Dakle, razlika između malih i velikih slova samo flipping da 32-bitni položaj. ZVUČNIK 29: Nije li to 1.000.100? ROB: Čekaj, to je 100 - nešto što sam učinio krivo. To nije bila istina. Razmišljao sam da je razlika od tri, pa onda sam zapeo binarni 3 na kraju. Ovo bi trebao biti u pravu. ALI: Hvala. Dobro za ukazujući da je van. To je bio oštar. U redu, da je jasno da ljudi? ROB: Razlika između velikih i malih verzije uvijek samo će biti 32, i tako će uvijek biti jedna bitna koji treba biti zrcaljeno promijeniti između dva. ALI: Dakle, u tom slučaju, znajući razliku između kapitala i A mala je dobra stvar. Ne u kodu, ali konceptualno najmanje, to je dobro. Dakle, vi možete ići naprijed i kod koje se u Spaces sada. Ili treba mi samo o tome razgovarati? ROB: Mi samo možemo o tome razgovarati. Ne znam. Vi možete pokušati. Razgovarajte među sobom za malo. Mi ćemo vam dati priliku da ga koda. [Pridodati glasovima] ALI: - je cool ZVUČNIK 30: To je poput hakerskog komedije. ALI: Da, mi smo samo govori vijest, prolazi kroz nju. Rob: I vratili smo se. ALI: To je vrsta čudno. Osjećam se kao da smo trebali imati CS50 vijesti stanicu, a mi bi zapravo sjediti ovako. ROB: Hacker News. ALI: Hacker News 50. ALI: Slobodno pitajte bilo kakvih pitanja, ako ste zbunjeni. ROB: Je li itko zapeo? ALI: Da, to je dobra stvar. ALI: Čekaj, ste zapeli u stolici? Oh. Bio sam malo brine. ROB: Zbog Upravo sam shvatio da ćemo htjeti drugi bitovni operator. Za sada, hajdemo samo pretvoriti u mala slova velika slova. ALI: Žao mi je, nisam svatko dobiti tu najavu? Mi ćemo ići s velikim slovima u mala slova. ROB: Onda ćemo razgovarati malih u velika slova pravo nakon toga. Oh, ne. Imamo bug u to, što, pretpostavljam, nikada nismo pokušali pokrenuti. Koji je samo da char c treba biti proglašen izvan petlje, jer njegov opseg je ograničen u petlji. ZVUČNIK 32: U ovom slučaju, to je u redu koristiti broj? ROB: Eh, vi ne trebate. Ako sam vam jamči da kapital 'A'- ili, mala slova' 'minus kapital' ' bio je točno jedan bit, ali da ne znaju da je 32 - stvari će raditi jednako dobro, ako je to bilo 16-bitna da je poludio - ili ne, mislim da wouldn't - ili 64 bitni su zrcaljeno, eventualno. Ali ne treba koristiti 32. Umjesto toga mogli koristiti mala slova 'a' minus 'prijestolnicom'. ZVUČNIK 32: Ok. Što možete učiniti ako se osjećate kao da ste pisanje previše je možete definirati na vrhu. Dakle, možete biti poput int razlika = mala slova 'a' minus 'prijestolnicom'. I onda možete upisati razliku umjesto. To je valjan. Ali samo pomoću broj 32 je vrsta - ZVUČNIK 33: Iako je zbog činjenice da ga je 32-bitni? ALI: Da. ROB: Tu bi moglo biti - jedino jamstvo moramo vas učiniti je da razlika između malih i velikih je jedna bitna. To ne bi trebalo biti važno da se dogodi da se 32-bitni da je poludio. Za vrijeme razmatranja, počet ćemo ide preko toga. To je u redu ako nisu završili. Ne brinite za to. ROB: Pod pretpostavkom da je c slovo - mi nemamo pretpostaviti je c slovo. Znamo c slovo nakon ovog while petlje - do-while petlja. Dakle, to znači da izgleda ovako ''. Dakle, ako želimo dovesti ova '' Da je ovo '', ono što trebamo napraviti? Pa kako ćemo pretvoriti i okrenite malo? ALI: Kako ćemo ga okrenuti? ROB: Dakle, mi znamo što želimo okrenuti 32 bita. Tako da će učiniti '' minus '', ili možemo napisati 32, ali - to prokleto, to je obrnuto. ALI: Ok, tako Rob ovdje je izračuna taj broj, magični broj 32. Dakle, on je saznati gdje da malo Flip područje će biti. A onda ono što mi staviti gdje upitnika su? ROB: Kako ćemo okrenuti taj zalogaj? U smislu veliko slovo, to je 0, a mi želimo da postane jedan. ZVUČNIK 34: |. ROB: Da. Dakle, ovo je nas govoreći uzmemo ''. Mi smo ga ORing s 0 - 1000 - i da = da. ALI: Ima li to smisla svima? Možemo proći kroz to malo po malo, ako želite. ZVUČNIK 35: Jeste li [nečujan]? ALI: Gdje je minus? ROB: Oh, misliš ovdje? ALI: Oh, da. ROB: Pa mislim da je ovo nas. Mogli bismo reći 32, a sada smo samo pomoću bitovni operatori. ALI: Mi se ne sviđa čarobne brojeve. Nećemo to učiniti. Također mislim da smo samo trebali koristiti bitovni operator - ZVUČNIK 36: Ako koristite ^ A, da ćete dobiti 32? ZVUČNIK 37: Da, mislim - ROB: Da li će se. ALI: Ovo je način kako bi to učinio za odlazak od kapitala u mala slova. Sada možete li mi itko reći zašto Rob i ja sam promijenio brz i kako smo krenuli od velikih slova malim slovima, umjesto da mala slova velika slova kao što smo radili prije? Se bilo tko imati bilo koji ideja zašto to može biti teže? ROB: Tako ćemo učiniti - ALI: Da, ići naprijed. ZVUČNIK 38: | operater je bio samo jako dobar za dodavanje. ALI: Da, točno. ROB: Dakle, ono što želite učiniti u malim slovima u velika slova slučaj je, pretvoriti ovaj 'a'- tako želimo staviti u nekim brojevima i ovdje koristite neki operator, tako da je u pitanju van grada A. Mi još uvijek vjerojatno pomoću 32 nekako, ali kako sada to mi dobiti ovu izaći na ovo? Dakle c - oh, ja još uvijek želim da previše - ALI: Pa sad, ako smo pretvaranja iz malih slova u velika slova opet, onda mi obaviti operaciju ^, kao vi, rekao je. ROB: Postoje i drugi načini koje možete učiniti stvari. Puno bitovni operatori završiti vrlo lako definirati u smislu drugih bitovni operatori. Tako sam bio idući da ne koristite ^ ili na sve, ali ^ radio savršeno u redu. ALI: Ok, pa ćemo ići na posljednjem problema, a to je osnovno - Posljednji problem je pretvoriti u nešto binarni. Tako, na primjer, imate 50, a zatim ga pretvoriti u binarna, što je 110.010. I mislim da vi svi znamo o binarnom iz predavanja. A također ne bi trebao staviti bilo vodeću 0S u njega. ROB: Možete ignorirati taj dio za sada. Prvi prolaz, možete to učiniti tako da postoje vodeći 0s. A onda možemo mijenjati da bi nemaju vodeću 0S, ako imamo vremena. ALI: Dakle, ne brinite o tome. Samo pokušati dobiti u binarnom. Dobro mjesto za početak će biti - ROB: Moramo tražiti cijeli broj. ALI: Oh yeah, to je dobar. Možemo početi s tim. Tako možete promijeniti brz. Dakle, umjesto lika, sada smo se bave brojeva. Cool? ROB: A sada ono što je naše ne-a uvjet će biti? To je molba za ne-negativni cijeli broj. ALI: Kad ne želimo zadržati pitajući korisnika za nešto drugo? Kada je manji od 0. ALI: Točno. ROB: Dok sam je manje od 0. ALI: Sada želimo pretvoriti ga. Nemojte vi imate ideje o tome što učiniti? Bilo inklings? Da. ZVUČNIK 39: Ne moramo ga pretvoriti, ili možemo jednostavno ispisati neki 0s i 1s da će biti pravo broj? Možete li to učiniti za petlje i računati od strane sila 2? ROB: Da. Ne trebate se ja pretvoriti u svojoj binarni - binarni prikaz neću stati unutar ja. Vi samo trebate ispisati binarni zastupljenost ja. ALI: Drugim riječima, ne morate ići po silama dva. ROB: Jer sam se već pohranjeni kao izvršne datoteke, tako da ne morate ga pretvoriti u binarni. Dovoljno je otići preko svog binarnog, i ispisati ga. I ti si idući u morati koristiti bitovni, jer želite pogledati stvarni bita. Ne morate koristiti bitovni, ali molim vas. I to je zapravo - možete jednostavno napraviti ovlasti dvije pomnoži dva. Mi ćemo ići preko jednog od posljednja dva binarnih bitovni operatori, što je to jedan. Dakle, kada se uzme - ALI: Možete li proći kroz oboje? ROB: Da. Dakle, idemo s devet. Dakle, devet lijevo pomak 1 - ono lijevo pomak znači samo premjestiti sve bitova na lijevoj i umetnite 0. Dakle, idemo sve komadiće 9 na lijevoj jedan položaj, što nam daje - Dakle, primijetite smo pomaknuo sve lijevo jedan, a umetnuta 0 na desna strana. Ako mi je pomaknuo lijevo prema dva, mi bi prebaciti sve lijevo od dva, i umetnite dvije 0S kako bi popunili praznine. Pitanje? ALI: Pa onda desno pomak ne sličnu stvar. Ako imate devet pravi zaokret 1 onda ste upravo kreće sve preko Dobro, izgubit ćete brojku, tako sto umjesto. ROB: Dakle, to je u redu da se gubi malo da se dogodilo da se svi način na desno. Postoje različite vrste pravim smjene, ali u osnovi se možete sjetiti Pravo pomak samo kao dijeljenjem dva. A možete misliti lijevoj smjene kao pomnoži sa dva. Dakle, ako vam pretvoriti ovo - ako pretvaraju 9 pomak 1, koji je jednak 10010, ako je zapravo otišao kroz binarnog i shvatio što je to bilo, to bi samo biti 18. Mi samo pomnožiti dva. 1001 lijevi shift 2 će biti 36. Mi pomnožiti 4. Ok, super, tako da je zgodan bitovni operator za ovaj jedan. Više zbunjenost? Da li vi želite isprobati? Ili možemo samo skok u desno i to početi? ROB: Vjerojatno smo trebali skočiti pravo rezervirati ALI: Da, Ok. Rob: I prošetati kroz nju zajedno. ALI: Pa ja ću samo ići u nju. Dakle, kao što je rekao na početku, idemo samo proći kroz malo po malo. Tako da ćemo morati petlju. Se bilo tko imati ideju o najbolje vrste petlje proći kroz to? Imamo dok petlje, učiniti-a petlje, za petlje. ZVUČNIK 40: Do-while petlja? ROB: Pa sjetite se što sam rekao prije o tome, mi samo koristimo učiniti-a petlje dobiti korisničkog unosa. Vi nikada prilično će puno ikada koristiti ih za bilo što drugo. ALI: Problem s ne-dok petlje je to ipak nešto prije nego što provjerava stanje. Dakle, to bi mogao učiniti nešto loše - sviđa, povrijediti - učiniti nešto što nije moguće. Dakle, želite da provjerite prvi. ROB: Ima puno slučajeva gdje možete koristiti učiniti-a petlje, ali ljudi Ne očekujem da ćete ih koristiti osim ako je korisnik ulaz. Dakle, koristili smo naše do-while petlja se mogu dobiti. Koliko puta je naš petlja će htjeti petlje? Želimo petlji preko svake od bitova ja. Koliko bita u ja? ZVUČNIK 41: 32. ALI: Da. ROB: Dakle, tu su i 32 bita. Mi ne želimo reći 32. Mi umjesto želim reći sizeof - koji ste vidjeli da je u razredu još? ALI: Nope. ROB: Zašto se reći da koristi taj - sizeof (int) puta 8 - ALI: Dakle, sizeof je - ZVUČNIK 42: [nečujan] ALI: Zanimljivo. Dakle, sizeof je izgrađen-in C funkcija gdje to samo govori da broj bitova u - ROB: Byte. ALI: Bytes, žao mi je - broj bajtova da je varijabla ima za pohranu vrijednosti. Dakle, mislim da je on otišao preko u razredu, zatim, int je 4 bajta možda. Cool? ROB: Ali ti ne bi trebao znati da je int je 4 bajta. Trebali biste biti u mogućnosti reći - trebali koristiti sizeof (int) dobiti 4 bajta. I to je zapravo važno za neke stvari. Int možda neće biti četiri bajta. Na drugom računalu, int može biti 8 bajtova. Dakle, vaš program neće raditi na tom računalu jer ćete teško kodirana 32 bitova kada je na tom računalu se događa da se 64 bita. ALI: Znači imate ukupan broj bitova koji želite da preokrenu. Rob: A razlika između bajtu i malo je da postoji su osam bitova u bajtu. Dakle, sizeof (int) vraća 4 bajta, onda moramo pomnožiti da od 8 do 32 bita dobiti. ALI: Ok, tako da znamo maksimum i znamo što želimo otići iz - želimo proći kroz sve njih. Dakle, želimo ići od 0 do numBits. Dakle, zna li netko kako napisati petlju za to? Svatko? ZVUČNIK 43: [nečujan] ALI: Dakle, želite prijeći broj ja od 0. bita za prvi bitni, drugi bitni, treći malo, sve do numBits. Maksimalan broj bitova koje možete dobiti na. ROB: Što je zajedničko petlja ćemo koristiti ono što želimo učiniti puta nešto x? ALI: Za. Savršeno. Dakle, imamo za. A onda ćemo stvoriti iteratora, što nije idući u biti ja. ROB: j. ALI: J = 0. Tako ćemo početi na 0. A onda ćemo imati uvjet da bi bili sigurni, dok ste prolazi kroz njega svaki put - [Pridodati glasovima] ROB: j. ALI: j je manje od numBits. Dakle, mi ne želimo učiniti stvarni iznosi jedan, jer oni numBits ukupno, i mi početi na 0. Tako smo zapravo ćeš imati - ZVUČNIK 44: Oh. ALI: Indeksi ne završavaju na numBits minus jedan. ROB: Mi označiti komadići 0-31, mi ih ne označite 1 do 32. ALI: I onda ćemo povećavati svaki put po jedan, jer želimo da provjeriti svaki pojedini jedan. Dakle, mi ćemo ići j + +. ZVUČNIK 45: Zašto to radiš? ZVUČNIK 46: Zašto ideš kroz svaki zalogaj? ROB: Dakle, želimo ići kroz svaki zalogaj i - Tako recimo imamo neki broj. ALI: 68. ROB: Mi možemo koristiti 68. Dakle, binarni će biti 100.100. Dakle, ovo je unutar ja i želimo ići preko svake od tih bitova. Je li to jedan? Ispis jedne. Je li to 0? Ispis 0. Onda idemo na sljedeći zalogaj. Je li to jedan? Ispis jedne. Je 0? Ispis 0. ALI: Cool, ok. Sada smo na ispravnom indeksa za gdje da malo je. Kako možemo provjeriti tu određenu jedan? Recimo da smo na j = 0, tako da želimo provjeriti 0 indeks malo. Dakle, u ovom slučaju, ovaj jedan. Tako sada kako ćemo ići o prijavi - Oh, to bi bilo to jednom. ROB: Da. ALI: Žao mi je. Kako će mi ići oko provjere da jednom, u određenom smislu? Kako bismo provjerili je li to 0 ili 1? Pa let's - KLASA: A 1? ALI: I? Da. ROB: Pa recimo da smo već jednom. Onda to i to će se vratiti da li je 1 ili 0. ALI: Dakle, možemo ići dolje. I što možemo učiniti kako vi rekao, da radiš i funkciju. ROB: int - kako želim reći ovo - isOne = ja. I po prvi malo mi se dogoditi da se gleda, radimo I & 1. Sada ono što ćemo htjeti i po za drugi malo? ZVUČNIK 47: 2. ROB: Da, drugi da smo na dva. ALI: Vi ćete primijetiti da jedan je preselio na lijevu jednom. Tako smo naučili nikakve bitovni operatori učiniti tu funkciju? ROB: sljedeći - ALI: Da, točno, točno. Dakle, to je lijevo pomak. Umjesto uvijek provjere s jedne, idemo ga pomaknuti. A koliko puta ćemo ga prebaciti? Ako smo provjeru 0. jedan onda ćemo ga premjestiti na nulu. Da, točno. Tako ste ostavili ga prebaciti j. Savršeno. Dakle, sada znamo - imamo ovu int o ako je jedan, a onda - pa Rob je vrsta varanja ovdje - pa sada ide naprijed, a on je samo rekao da ako to je zapravo jedna, jer jedan true, tako da ne moramo reći ISF isOne jednaka 1 - pa ako isOne, onda ćemo ispisati jedan, a inače smo ispisali 0. ROB: Pa naš program ima ukupnu bug. Pa, pitanja na ovo prvo. ZVUČNIK 48: Može li se ikada stavio isOne unutar četiri operacije dijelu i onda su ga se smjeni kao zadnji dio? Dakle isOne jednak 1, a zatim - ROB: Da, možete. Mi zapravo može pokazati da kad smo riješili bug koji sam o razgovarati sa svima vama. Obavijest redoslijed idemo preko stvari. S obzirom na to binarni prikaz, mi smo počevši s 0. bita. Ako je 0, onda smo ispisa - dobro, to je 0, pa smo se ispisuje 0. Onda idemo na drugi zalogaj. To je 0, pa smo ispisali 0. Onda smo ići na treći zalogaj. To je jedan, tako da smo ispisali jedan. ALI: Tako to ide unatrag. Pa kako ti dečki ukazuju na to da smo riješili da i otići u drugom smjeru? ZVUČNIK 49: [nečujan] ROB: Da. Dakle, umjesto da ide od 0 do numBits, ići ćemo s numBits bitova na 0.. ALI: Pa [nečujan] Uvijek možete otići u drugom smjeru. ROB: NumBits minus 1, jer to je zadnja nubmer - ALI: Jer to ide 0-31. A onda ćemo uvijek biti sigurni da je veći od 0, tako da ne ide previše desno. A onda ćete uvijek oduzimati po jedan ići desno. ROB: Dakle, sada imamo obrnuti petlju, a broj je natrag u tisak na ispravan način. ZVUČNIK 50: Ne morate promijeniti shift stvar previše? ALI: Dakle, br. ROB: Radimo iste točne operacije, osim sada u obrnutom redoslijedu. Dakle, umjesto da radi pomicanja po numBits minus 1 kako bi dobili ono što ovu Malo je, umjesto da radi zadnja, samo ćemo to učiniti prvi. Do unazad ove ovdje, mi obrnuti redoslijed svega što se događa unutra. No, mi ne želimo promijeniti ono što se događa unutar uopće. ALI: Ima li to smisla? Prerada? Ok, tako da se bilo tko drugi imaju neke druge konceptualne pitanja? ALI: Prije nego idemo u njegovu točku koja je - ALI: U redu, dobro ide. Rob: Umjesto korištenja j biti naš - umjesto j uvijek pomak prema, kao jedan lijevi shift j, mislim ono ti govoriš je vole, da j se koristiti. Dakle, za j - Mislim da je to teško - j = 1 << 31. Je li to ono što želim? Mislim da je to << 31. j> = 1. j >>, >> isOne, ja & j - tako da sada umjesto korištenja - ALI: Vi stalno kreće j umjesto Indeks to provjeriti. To nije tako loše. Mi koristimo sličnu vrstu logike. Dakle, ako idete natrag - oh, ali to će ga izgubiti. Ok, samo ćeš ga upisati ponovno. Ako primijetite da imamo jednog << j količinu vremena, i bili smo povećavanjem j svaki put po jedan prirasta, ali ovaj put umjesto oni rade prirast j na vrhu unutar za petlju. Dakle, umjesto da ga uvijek kreće prema dolje - ROB: Prva iteracija for petlja, imamo j je 10.000. Sljedeća iteracija od for petlje je 01.000. Sljedeća iteracija je da. I jedna samo će se držati propagiranju dolje dok smo pogodak vrlo kraju, gdje sada je to. Sljedeći jedan, jedan će se odgurnuo, i j više nije veća od ili jednak 1. Također sam mogao staviti veći od 0, istu razliku. I onda to je to. Pitanja? Da. ZVUČNIK 51: [nečujan] ROB: Dakle, to je isto kao i - ste vidjeli J + = 3? Dakle, ovo je isto kao j = j + 3? Možete to učiniti za gotovo bilo operatora u C. Dakle j >> = 3 jednaka j = j >> 3. Tako da radi i sa bitovni operatori. A ja ne bi stavio 31 ovdje. Trebao sam staviti numBits - 1. ALI: Jupi, nema čarobne brojke. Ok, to je 04:00, iako, pa ako vi morate ići - ali to smisla? Nemojte vi imate drugih pitanja? ROB: Također sam bio idući u baciti u da, ako smo htjeli - je on razgovarao ternarni operator uopće? ALI: Ne To je u redu. ROB: Tako ste mogli gledati u njega za sljedeći put. ALI: Ok, stvarno? Sada ste samo prikazuje off. ROB: Ne, sad it's - to je ono što dobiva ljudi zainteresirani, a sada će ići pogledati u nju. Pa sada, da čini istu stvar, u jednom koraku. Dakle, prvo provjerite je ja & j 1? Je li to istina? Ako je tako, ispisati jedan, drugi, ispišite 0. ALI: Ali, to radi drugi put je savršeno u redu, kao dobro. Ona ima istu logiku. Dakle, to nije kao jedan je - ROB: U ovom trenutku, možemo se riješiti tih vitičastim zagradama, jer je to jedini jedna linija za petlju. ALI: Ok, tako da to ima smisla? To je bila neka vrsta skoka. Ali to je bio samo vrsta sintakse, tako da više. Cool? Bilo koja druga pitanja? ROB: U redu. ALI: U redu, super. Hvala što ste došli na dijelu.