ALLISON BUCHHOLTZ-AU: Ahoj, všichni.
Vítejte na stránkách oddílu.
Dnes má jen bude vše kvíz přezkoumání pro kvíz ve středu.
Doufám, že všichni si pamatuje, že mají kvíz na středu.
A pokud ne, dobře, Nyní jste připomněl.
Takže středa ujistěte se, že se objevíš pro třídu nebo jiné ubytování jako
nutné.
Vy se bude úžasné.
Bude to skvělé.
A já udělám vše pro to, pomoci připravit vás dnes pro kvíz
teď.
A také v případě, že nevíte, je samozřejmě široký přezkum zasedání
dnes v 7 hodin Severozápad laboratoře pokoj B103.
Můžete mě znovu vidět na přídavek jako Povedu část tohoto přezkumu zasedání
také.
Takže pokud nemůžete se nabažit mě? Nyní si můžete přijít znovu dnes večer.
>> Dobře, tak první, co první.
Jen několik tipů kvíz než jsme skutečně ponořit do hodnocení.
Tak jako u každé zkoušky, praxe určitě vám pomohl ven.
K dispozici jsou zkoušky z minulosti šest nebo sedm let tam,
tak to je hodně praxe Materiál pro vás mít.
A ve skutečnosti, dnes je opravdu jen bude jít přes jakékoli téma
že vy máte dotazy týkající se i jako práci přes problémy praxe
z testu nulové.
Takže budu zvracet kvíz nulu od loňského roku na tu,
a my můžeme pracovat přes problémů že vy jste chtěli.
>> Takže cvičit.
Budeš začít dělat, že dnes.
Kód na papíře.
Tak jo, když každý mohl skutečně dostat ven
papír, že to bude skvělé, protože nejste
bude mít počítač na zkouška a napíše kód ručně
je často mnohem obtížnější než by se dalo očekávat.
Jste zvyklí jen vidět to a napsáním,
a máte kompilátor na pomůže vám, když máte chyby,
ale nechápu, že na zkoušku.
Takže je to skutečně velmi důležité, být schopen vypsat kód,
a že svalová paměť dělá to rukou vám opravdu pomůže.
>> Takže se dostáváme trochu blízko.
Je pondělí.
Vaše zkouška je ve středu.
Ale pokud budete mít čas, rozhodně vzít jednu
ze zkoušky z minulého roku, nebo před rokem v časovém omezení
na hodinu a půl.
Jen knock out hodinu a polovina času,
a posaďte se dolů, a jen práce přes problémy
jako byste byli skutečně brát, protože jeden
z největších věcí, které jsme slyšeli o Kvízy je, že jsou velmi dlouhé.
Je to hodně materiálu.
Existuje mnoho otázek, a většina lidí nemusí skončit.
Vím, že jsem úplně nedokončil moje kvízy, když jsem vzal třídu.
>> V takovém případě, jako méně pohodlný úsek,
pochopit, že je tento kurz určen obstarávat pro lidi na všech úrovních.
Celý důvod, proč máme rozdělit méně pohodlné, někde mezi,
a pohodlnější je druh dělat to více fér.
A pokud jste méně pohodlné, je to Není nutné sobě, aby si všechno.
Jako když jste byli stále vše, byste pravděpodobně
být v pohodlnější části.
Je tedy jasné, že nemůžete porazit sami nahoru příliš těžké, pokud nemůžete dokončit zkoušku.
Vezmi si to ode mne, já to neudělal.
Jsem stále koncentrátor.
Jsem stále pomáhá naučit kurzu.
Budeš v pořádku.
Dobrá.
A konečně, trochu se prospat.
Samozřejmě s jakoukoli zkouškou vždycky říkám.
Šprtání noc před a nedostávají žádné spánek
dělá ne-- možná, pokud to pracuje pro vás, jděte do toho.
Ale pro drtivou většinu lidé, jak se vyspat,
nechat váš mozek odpočinout a zotavit se před vstupem v na zkoušku
vám opravdu pomůže.
Také tam bude téměř jistě cukroví na zkoušku,
takže máte na co těšit.
Vy se chystáte udělat skvělé.
Bude to v pořádku.
A teď v následující hodině a půl I se bude snažit a přípravka vám, jak nejlépe umím.
>> Takže mám snímky z v podstatě všechny sekce dodnes.
Nebudu projít všechny z nich, protože to není
proveditelné za hodinu a půl, jakož jako práci přes problémy praxe.
Takže místo toho mám seznam témat.
To jsou všechny ty věci, že vám můžeme Quiz.
Pokud existuje něco, co že opravdu vyskočí
které chcete jít, abyste si Chcete, abych šel přes koncepčně,
Můžu to zkusit a dát tam přehled.
Nebo chcete-li přeskočit přímo do dělá problémy praxe dohromady,
to můžeme udělat.
Je to na vás kluci.
Není, že mnozí z vás.
Takže to, co vy chcete dělat.
Chci být nejvíce užitečné k vámi.
Takže já vás nechám jen dívat.
>> Diváků: Jedna věc je graf, který držíme
říká o zásobníku a haldy.
Jen celá myšlenka to a co to znamená.
ALLISON BUCHHOLTZ-AU: Jo, OK.
To je zcela v konec, tak ať mi procházet.
>> Diváků: Nemáme na to teď, ale co.
>> ALLISON BUCHHOLTZ-AU: Byla tam anything-- tenhle.
Je to druh fuzzy pro lidi?
Publikum: Jo, s tím naprosto souhlasím.
A můžeme se přetečení vyrovnávací paměti?
ALLISON BUCHHOLTZ-AU: Přetečení vyrovnávací paměti?
OK.
Takže buffer overflow je docela snadno jen mluvit.
Je to v podstatě vyrovnávacích si myslíte o některé pole paměti, že máte pravdu?
My obvykle mluví o přetečení bufferu, pokud
nejste kontrolu, kolik uživatel zavádí, že jo?
A představa, že s buffer overflow je
jsou uvedení v daleko příliš mnoho dat pro prostor
že jste přidělen na ně, ne?
>> Takže pokud jste řekl, dát mi nějaké zprávy, že jsme
za předpokladu, že se chystáte dát nám rozumné délky zprávy.
Možná, že pár řádků, co já vím.
Tak jsme se nekontrolují.
Místo toho nás krmí v Celá kniha je to zpráva,
a přetéká množství prostor, který jsme přidělené na to.
A co se stane, je, že to může přepsat místa, která to neměla.
>> Takže vím, profesor Malan řekl něco, co buffer overflow útoky.
Tak to je místo, kde bude vstup od uživatele některé obrovské množství dat v naději,
že přepíše minulost konec vaší paměti
a nahrazuje something-- Zajímalo by mě, I máme ty snímky zde.
Nemyslím si, že máme tyto snímky zde.
Ale v podstatě se přepisuje určitá část paměti
který mu umožňuje přístup k na části vašeho počítače
že byste neměl mají obvykle přístup.
>> Největší věc, kterou se buffer overflow je jen
pochopit, že to se stane, když nejste
kontroly, jak moc jsou vaše uživatel uvedení v.
Když nejste typ ochrany proti tomu.
A na jeho nejjednodušší věc, je to jen vaše uživatelské
zadání obrovské množství dat ve snaze
přepsat nějaké zabezpečení část paměti.
To je vše, co je.
>> Tak tohle tady, zásobník a heap.
V podstatě to vše je jen reprezentace paměti
a tam, kde věci jsou uloženy.
To je opravdu druh vše, co potřebujete vědět.
Největší věci, které co potřebujete vědět je
that-- dovolte mi, abych zjistil, jestli je tu better-- zde.
Tak tohle je zásobník zde.
>> Takže stack má co do činění s všechny své funkce
že voláte v daném okamžiku.
A co je důležité si uvědomit, jít pryč z minulého týdne s malloc
je, že ve skutečnosti nemají třeba nad ním kontrolu.
To vše záleží na tom, kdy určitá funkce provádění.
A když se provádění, ale to, co se říká zásobníku rámy
že jít sem.
>> Takže to všechno trochu děje bez skutečného vstupu od vás.
Můžete napsat program, a nechte ho běžet,
a zásobník druh se péče o sebe sama, jak to potřebuje.
Takže pokud v main voláte krychle, které budou předány tady.
Bude-li vytvořit snímek.
Ale nic explicitně dělat pro vytvoření tohoto zásobníku rám jiný než
napište funkci začít s, OK?
>> Co je tak trochu pod vaší ovládání je halda s malloc.
Takže pokaždé, když malloc něco, užíváte paměti z haldy.
A to je paměť, která vám mají, pro nedostatek lepšího slova,
explicitní kontrola, protože pamatovat s malloc
je to v podstatě neexistuje dokud neřeknete jinak.
Pro ty z vás, kteří sledoval část minulý týden,
je to tam, dokud ji říct, jít pryč.
Bude to tam, pokud jinak řečeno, ne.
Takže haldy je prostě něco si můžete myslet, jak paměť
že máte kontrolu nad.
A to jsou jen dvě různé velké věci.
>> Jiné, než to, neměli byste mít na starosti příliš mnoho o zásobníku a haldy
otázky nebo typicky jen Pokud máte lokální parametry
nebo funkce by bylo na zásobníku nebo haldy.
Zřejmě v tomto případě že by bylo stack.
Pokud mallocing něco, kde je to přichází?
Haldy.
Podíváte-li se na praxi kvízy, ty jsou obecně typ otázek
že mají.
>> Nemusíte mít strach, moc o tom.
Se dostanete do větší výslovně o zásobníku a haldy
později nebo v jiných třídách CS.
Tak přesně s takovou obecnou představu o tom, co to je
bude dobré, což se mi tak nějak přešel.
Jakékoli další témata?
Ano?
>> Diváků: Můžeš jít přes na ukazatele opět velmi rychle?
ALLISON BUCHHOLTZ-AU: Ukazatele?
Chcete koncepční Přehled ukazatelů
nebo si procvičit s ukazateli?
Diváků: Něco jako syntaxe.
ALLISON BUCHHOLTZ-AU: syntax?
Jo.
OK, jsme se tam dostat.
Jo, tak to je jen trochu něco když máte rekurzivní funkci,
pokaždé, že rekurzivní funkce je volal, to jen přidává další stack frame.
Docela hodně příklad o tom, jak nemáte opravdu
mít kontrolu nad rámy na stacku.
>> OK, ukazatele.
Dobře, takže vytváří ukazatele.
Pamatujte si, že je to jen typ hvězdu.
Takže bez ohledu na typ dat, které budete se ukazuje.
Takže by to mohl být ukazatel na int.
Jednalo by se o ukazatel na char.
Jednalo by se o ukazatel na float.
Takže je to v podstatě cokoliv Chcete, aby se ukázal na,
hvězda je, jak deklarovat ukazatel, OK?
>> Ale pak samozřejmě je trochu ošidné, když máte ukazatel
nebo máte hrát cokoliv.
Tak velký rozdíl je, když jste declaring--
takže máme some-- tak to trvá nějakou int hvězdu.
Takže to je nějaký ukazatel žádá x int, ne?
Takže pamatujte, co to dělá Je to volání X systém.
A to bude nějakou adresu, ne?
Takže řekněme, že to je naše adresa.
Ukazatele držet adresy.
Takže to, co to říká, je to, že se na to umístění, jsme skladování int.
>> Tak další způsob, jak se můžeme myslet je to, že to je nějaký int.
Jsme opravdu přiřazeny do Zatím nic, ale je to jen int.
Takže můžeme udělat, je když to hvězda x rovná 5, to bude 5, OK?
To říká, že jít na cokoliv x je ukázal na, tak jděte na tuto adresu
a aby bylo rovna 5.
Tak jsme přiřadit 5 na tuto adresu, je to tak?
>> A pak pokud to budete dělat, to nám dává adresu.
Jedná se o adresu provozovatele.
Takže to, co je adresa x?
Nevíme.
Ještě jsme přiřadili mu adresu.
Dalo by se říci, že je to some-- teď jsme dali to adresu, takže adresa je 4.
A skutečně, pokud jsme se projít něčím takhle, druh, co jsme udělali.
Takže práci přes here-- najdu to pomůže, pokud budete čerpat z ukazatelů.
Pokud jste na zkoušku, jsem Vřele doporučuji kreslení boxů.
>> Takže to první, int x se rovná 5.
To jen znamená, že máme některé místo v paměti, které je 5, ne?
A naše tabulka zde nám říká, že je to na adrese 0x04.
A pak jsme se vytvořit nějaký ukazatel.
Takže pojďme rozčlenit tento jeden po druhém.
Takže to vytváří některé box na int, ne?
Bude to držet některé adresy z něj.
Takže to je nějaký ukazatel.
A to křída je opravdu malý.
Takže máme nějaký ukazatel zde.
A naše tabulka nám říká, že je adresa je 0x08.
V pohodě.
A my jsme přiřazení to na adresu x.
>> Pamatujte si, že ukazatele držet adresy, OK?
Takže pokud chceme držet x, máme použít operátor adresy, které
je ampersand, získat adresu x, která je v tomto případě, 0x04.
A pak, máme-li některé int kopie, to prostě
vytváří nějaké jiné okno, které držitelem int s názvem kopie.
A pokud bychom přiřadit ji tohle-- tak toto je odkazování to.
Tak to říká, že jít na cokoliv Adresa ukazatel drží.
Pointer má tuto adresu, tak bychom jít sem,
a říkáme, OK, co je v něm?
Je to 5.
Takže kopie bude 5.
Smysl?
>> Co když jsem se snažil přiřadit to jen ukazatel.
Co ukazatel skutečně rovná?
Bylo by to, co ukazatel obsahuje, ne?
A pak to, co kdybych to udělal?
Co by kopie bude teď?
>> Diváků: 0x08.
ALLISON BUCHHOLTZ-AU: Jo, Adresa naší ukazatele.
Každá část, že Je třeba znovu vysvětlit?
V pohodě.
Tam je určitě velmi zábava problém na kvíz jednom
že můžeme nad tím vám dává více praxe.
Kluci z minulého týdne může řekne vám, že to nebylo tak špatné.
Dostali jsme přes celou graf, a všichni si skvěle.
>> OK, tak to je přehled syntaxe ukazatelů.
Největší věc je pochopit, jak k jejich vytvoření, dělat odkazování,
a adresa, OK?
V pohodě.
Jakékoli další témata před ponoříme do praxe.
Také pokud jedeme přes problémy praxe
a je tu něco, co chcete osvěžovač na, můžeme to udělat taky.
Máte něco?
>> Diváků: Struktury a spojové seznamy.
ALLISON BUCHHOLTZ-AU: Struktury a spojové seznamy, OK.
Tak structs.
Vlastně jsme se děje přes tento večer taky.
OK, tak structs.
Struktury jsou v podstatě jen způsob, jak držet
více hodnot různých typů.
Tak s řadou jsme zúžená do jednoho datového typu.
Naše pole musí být jen čísla jeden, nebo jen se znaky, nebo jen být plováky.
>> Ale možná budete muset obsahovat více než jen to.
Možná budete muset hold-- pokud mluvíte o studentovi,
budete mít svůj dům, své Číslo, jejich věk, kde žijí,
že jo?
A všechny z nich jsou různé druhy typů.
Takže nemůžete uložit ty, které všechny v matici.
>> Takže to, co můžete udělat, je si může vytvořit struct, který
si můžete myslet, jak vaše osobní datový typ.
Takže místo toho jen mít celých čísel a ne jen s plováky,
můžete mít typ studenta, který má všech těchto oblastech v něm.
Tak, jak jsme inicializace naše structs je-- vlastně
protože moje psaní je hrozné, jsme se chystáte přejít na psaní.
Woo.
>> OK, takže chceme-li vytvořit struct-- Já jsem prostě jít na to tady.
Nepřihlíží se v hlavním cokoliv které budeme používat později.
Tak, jak chcete dělat je to s typedef struct.
A ať to jen nazvat tento studenta protože to je to, co jsem používal.
OK, takže typedef znamená, že jste definování nového typu, OK?
Tam jsou nuance v když děláte jen struct versus typedef struct.
Pro všechny záměry a účely, vy jste jen
bude předpokládat, že jsou přibližně stejný a jen
použití typedef struct nyní.
To bude stát mnohem více patrné ve vašem další P nastavit, co tyto rozdíly,
ale nemyslím si, že je třeba obávat, že právě teď.
Byl bych mnohem raději, kdybys vědět, jak vytvořit,
přístupu k nim, a přiřadit [? hodnotu. ?]
>> Nový typ struct, a nazýváme ji studentka.
Takže poté, co jsme hotovi vytváření tohoto, pro všechny záměry a účely,
budete mít typ nazvaný studenta.
A můžete si ji stejně jako typ jako int nebo float, nebo char.
Je to jen jiný typ, OK?
>> Takže v tomto jednom, co máme?
Máme možná jméno.
Takže možná chceme název řetězce.
A máme možná int, který je ID.
A máme další v to je telefonní číslo.
A my jsme some-- podívejme.
Co jiného bychom mohli mít?
Budeme mít nějaký řetězec v jeho domě.
Všechny věci, které student má.
>> Takže to vytváří struct teď.
Tak jak můžeme vytvořit studenta?
Pokud máme nějaké proměnné, která je mluvit o Walker zde
tak jsme have-- jsme jen bude volat tuto chodítko.
Potřebuje typ.
Jaký je váš typ?
Diváků: Student.
ALLISON BUCHHOLTZ-AU: Student.
Takže to jen vytvoří objekt, který lze myslet, že má všechny tyto věci.
Právě jste vytvořili studenta chodítko.
Takže teď musíme být schopni přiřadit všechny tyto, že jo?
Takže má někdo vzpomenout, jak máme přístup do struct?
Diváků: Období.
ALLISON BUCHHOLTZ-AU: Období Přesně tak.
Takže pokud bychom chtěli přiřadit mu jméno, co bychom mohli udělat, že.
Zřejmě to by be-- tuto část by zde
být v hlavní, tak vlastně dovolte mi, abych to udělat.
Prohlásit to nad hlavní, aby že ji můžeme použít v rámci hlavní.
Takže teď chci, aby to dělat ID, a my se prostě některé tam,
a pak budeme přiřadit dům.
BAM.
V pohodě.
>> Takže teď bychom někdy potřebovali přístup něco později on-- možná we--
kdybychom někdy potřebovali přístup nic, pojďme jen to int kopírování ID.
A já chci kopírovat Walker ID do toho.
Jak bych mohl udělat?
Co potřebujete pro přístup do chodítka struct na [? jít na to?] [? E?].
A stejným způsobem, že my přidělen to tady, jak
můžeme přistupovat, když chceme, aby dát tuto hodnotu na něco jiného?
Diváků: Walker.id.
ALLISON BUCHHOLTZ-AU: Jo, přesně tak.
Tak to je skoro všechno co potřebujete vědět o structs.
Stačí myslet na je jako další proměnné.
V podstatě si vytvořte vlastní typ proměnné, OK?
Můžete ji použít k deklarovat proměnné v žádném případě.
Zde chodítko je ještě proměnná.
Je to jen má typ studenta, nyní místo z typu int, nebo typu string,
nebo typu char.
Kdyby tam byl snadný způsob, jak mluvit o structs, je to doslova jen
vytvořit svůj vlastní datový typ , který umožňuje skupině
Všechny tyto různé druh dat dohromady.
Má to smysl?
OK.
To a přístup s tečkami.
Skoro vše, co potřebujete.
>> OK, kde se má PowerPoint jít?
Tady to je.
No to je divný.
Aha.
OK, v pohodě.
Všechny ostatní věci, nebo my chtějí zamířit do praxe?
Praxi?
OK.
Úžasné.
Chystám se ukončit to.
Pokud kdykoli během praxe otázky,
Jsem rád, že předělat a projít věci.
Takže mám kvíz nulu tady.
Pokud vy chcete vytáhnout je na vašem počítači,
stejně jako mít pět minut procházet.
Možná si vybrat nějaký vrchol otázky, chcete jít znovu.
Pokud vy se nemůžete rozhodnout, budeme jen pomalu začít pracovat skrze ně,
ale jsem si jistý, že se bude nějaký otázky, které vám jsou obzvláště
touží mluvit a mají me pracovat až s vámi se všemi.
Takže prostě jít dopředu a pět minut.
Procházejte.
A to je kvíz od roku 2013.
>> Diváků: Zero?
>> ALLISON BUCHHOLTZ-AU: Jo, kvíz nula.
Neděláme kvíz jednu věci.
Budeme dělat, že za pár týdnů.
I pro ty z vás, kteří přišel pozdě, máme cukroví,
tak to vy chcete cukroví?
>> Diváků: Jistě.
>> ALLISON BUCHHOLTZ-AU: Jsem jen projet kolem.
Hele, jestli vy se sem dostal brzy, můžete získat další sladkosti.
To je v pořádku.
Ben, chceš cukroví?
Chcete některé z nich?
K dispozici je také Snickers pokud někdo chce Snickers.
Budu nechat zde a zde.
Neváhejte.
Chceš už?
Diváků: Všechny nastavení.
Děkuju.
>> ALLISON BUCHHOLTZ-AU: A já jsem měl pěkný malá hromádka tam na začátku.
Vy si vzít kvíz a Mám mít kvíz třídění party.
Je to chaos.
900 zkoušky.
Bude to tak mnohem zábavnější.
Bude skvělé.
Jsem si jistý, že je to jedno z největších zaměstnanců lepení
nocí v roce.
Má někdo udělal kvíz nula od v loňském roce, ale ze zvědavosti?
>> Diváků: Části.
>> ALLISON BUCHHOLTZ-AU: Části ní OK.
Už máte dotazy týkající se některé z nich?
Diváků: Už jsem šel do pracovní doby.
Děkuji ačkoli.
ALLISON BUCHHOLTZ-AU: No, doufejme, že je to pořád trochu užitečné.
Kdy jste se jít do úřední hodiny, že?
Diváků: Můj TF měl jim dnes odpoledne.
ALLISON BUCHHOLTZ-AU: Oh.
Kdo je váš TF?
Diváků: Fred [? Wujaya?].
ALLISON BUCHHOLTZ-AU: Existuje mnoho TFS.
Tak mnoho.
Dobrá.
Každý, kdo má jakýkoliv začít, že mohu zapisovat, že chceme pracovat?
Předpokládám, že ukazatele jeden s tabulkou.
Jít na to.
>> Diváků: Možná, že přepínač jeden.
ALLISON BUCHHOLTZ-AU: Takže číslo 12?
Předpokládám, že číslo 8 a 9 jsou pravděpodobně Ones lidé chtějí projít.
>> Diváků: A 10 a 11.
>> ZAMYLA Chan: A vy víte dostanete jednu stránku poznámek, ne?
>> Publikum: Jo, tak to, co je Smíme dát na to.
>> ALLISON BUCHHOLTZ-AU: Jste dovoleno dát, co chcete.
A to může být zadán.
Pokud si dobře vzpomínám, naše byly zadány.
>> Diváků: Můžete to udělat zpět a obě strany?
>> ALLISON BUCHHOLTZ-AU: Jo, obě strany.
Takže něco jako haldy a [? back end?] haldy Vaše běh
časy.
Užitečné.
Možná, že jen málo věcí, o rad, které vám připomene.
Syntaxe pro věci.
S stejně jako kostra Program může být super užitečné.
Vím, že jsem vždycky zapomněl, co přesně Měl jsem psát pro int main,
protože jsem vždycky jen kopie vložit z mé předchozí P sady
nebo už je tam, tak Nikdy jsem to napsal,
tak s, které mohou být super užitečné.
>> OK, tak proč ne my začít s číslem 8, pak?
Dobrá.
OK.
Takže zvažte níže programu.
Tak samozřejmě, když vidíme, ukazatele, je to asi
dobrý nápad začít kreslit, ne?
Chci vědět, kde jsou všechny moje velké kousky křídy šel.
To je trochu nepříjemné.
>> Takže máme tu nějaká funkce odkládací že to bude trvat dva ukazatele.
Takže v tomto případě se by měl být ve skutečnosti přepínání
věci, oproti naší původní swapu funkce, která se pouze v kopiích.
Tak co to bude dělat je-- začněme s hlavní,
protože to je místo, kde 1 je.
>> Takže máme nějaké int x 1.
Máme nějaké y, který je roven 2.
A pak máme nějaké odkládací že to bude trvat ty.
A podívejme se, co to tady máme.
A v naší table-- ach jo.
Jak to mám udělat?
Budu čerpat můj stůl sem.
Stěží dělat to tam.
Stěží dělat to.
1, 2, 3, 4, 5, 6, 7.
A nám dávají, že 1 je 1, a 1 2.
V pohodě.
Úžasné.
Tak 3.
A je tu [? 1.?]
>> Dobrá.
A pak adresa x je 0x123.
A y je Ox127.
V pohodě.
Dobrá.
Chci, vy na tom pracovat jen za like-- na něm budou pracovat
s lidmi kolem vás.
Škoda, že jsem řekl, že když jsem nastavení.
Práce na něm.
Zkuste a pracovat na něm sami za pár minut,
a pak budu na tom pracovat s vámi.
Protože jediný způsob, jak opravdu bude učit, je tím, že dělá to sami.
Žádné starosti.
Hodně štěstí.
>> OK, proč ne my pomalu začít pracovat přes to.
Takže každý dostane po prvním řádku, x je 1.
Po druhé lince, x a y jsou 1 a 2, že jo?
V pohodě.
Tak linka tři je místo, kde se věci získat zajímavé samozřejmě.
>> Takže to, co jsme tady udělali je nyní jsme vyměnili.
My říkáme, že x a y mají ty body, nebo mají adresu x a y,
že jo?
Takže v tomto případě tři, jaká je hodnota?
byl přijat v, byla dána Hodnota adresy x, ne?
>> Publikum: 1?
>> ALLISON BUCHHOLTZ-AU: Tak jsme do něj přidat x?
Jaká je adresa x je?
>> Diváků: 0x123.
>> ALLISON BUCHHOLTZ-AU: Přesně tak.
Ale co je vlastně ukazuje to?
Pokud bychom měli dereference, jakou hodnotu by nám dá.
Publikum: 1.
ALLISON BUCHHOLTZ-AU: Bylo by nám jedno, protože to, co
říkáme, je jít na to adresa, řekněte nám, co je hodnota.
Takže to, co by se b?
>> Diváků: 0x127.
ALLISON BUCHHOLTZ-AU: Přesně tak.
Takže je to adresa y.
A co [pak? dereference? ?]
Diváků: 2.
ALLISON BUCHHOLTZ-AU: OK, tak teď čtyři.
Řekli jsme, že je equal-- i nyní máme provádí int temp je rovna hvězdy.
Takže to, co se změní?
Je tu jen jedna věc, že zde mění.
Co je to?
>> Diváků: Temp.
ALLISON BUCHHOLTZ-AU: temp.
Takže můžeme přepsat všechny tyto.
Dobrá strategie pro tyto Je jen přijít na to,
jaké změny, protože nejčastěji je tu jen jedna věc, která je
se změní v daném místě, OK?
Proto jsme přiřazen tepl.
>> Nyní naše další bod, pět, jsme dělali hvězda rovná hrát b.
Takže to, co se mění teď?
>> Diváků: Hvězda.
>> ALLISON BUCHHOLTZ-AU: Hvězda, tak vše ostatní zůstává stejné.
A co hrát rovné?
>> Diváků: 2.
ALLISON BUCHHOLTZ-AU: 2.
Lovely.
Úžasné.
OK, a pak už jsme jazyce b se rovná teplotě.
Takže jediné, co změna je hvězda b.
Vše ostatní zůstává stejné.
A co je hvězda b rovná se podívat teď?
A vy jste dokončili tabulku.
Protože teď na konci, pokud řekneme x a y, víme, že v tomto point--
víme, že když jsme změnil hvězda 2,
co to udělal, je to řekl v pořádku, na řešit 0x123 tady změnit.
Teď to bylo 2.
A pak se v tomto bodě, my jsme řekli OK, přejděte na hvězdy b.
Tak jděte na adresu uvedenou na 0x127 a učinit z něj 1.
Takže teď na samém konci, kdy jsme vlastně návrat na hlavní,
ve skutečnosti máme, že x je rovno 2 a y je roven 1.
Všichni dobře s tím?
OK, v pohodě.
Číslo 9.
Vy jste na tom pracovat.
Chystám se vytvořit desku takže můžeme čerpat přes něj.
Bude to bomba.
Velké tabulky mohou být opravdu děsivé, já vím.
Ale když vezmete jim jeden řádek na čas, dostanou mnohem méně děsivé.
Dobrá.
>> Takže víte, že to bude mít prošli hlavní první, že jo?
Inicializuje x a y a pak se je snaží vyměnit.
Takže i swap je uvedeno výše, skutečný způsob, jak ji chodí se, že jedeme přes hlavní,
a pak je to volání až vyměnit, v pořádku?
Takže každý ví, že.
>> Tak který z vás dělat kluci chtějí začít?
Je někdo opravdu jisti, o jedné z nich?
Nebo dokonce částečně jistý?
Proč začneme s x?
Co si myslíme, že x je?
>> Publikum: 1.
ALLISON BUCHHOLTZ-AU: 1.
Tak proč je 2.
A to proto, že velký rozdíl zde
je, že jsou jen předávání kopií, ne?
Nejsme předávání odkazem.
Takže i na konci Tento program X a Y
zůstaly stejné, protože jsou jen kopie ve funkci paměti.
Nemají vlastně změnit, ne?
>> Tak co, b, a teplota?
>> Diváků: je b.
>> ZAMYLA Chan: b je.
Takže v tomto případě, se x, což je 1, ne?
Tak tady, pojďme se projít to.
Takže na začátek, a b jsou 1 a 2 a definován.
Takže původně temp dostane přiřazen, takže teplota je 1.
se rovná b, tak dostaneme 2, a b je rovno teplotu.
Nyní se dostaneme 1.
>> Diváků: V předchozím jedné ní vyměnili ampersand x a y ampersand.
Co to přesně znamená?
ALLISON BUCHHOLTZ-AU: Takže to znamená, že jste kolem odkazem.
Takže to znamená, že jste ve skutečnosti předáním adresy, kde
X a Y jsou uloženy.
Diváků: Ale ty nejsi vyměňovat adresu.
ALLISON BUCHHOLTZ-AU: Nejsi vymění adresy.
Jste vyměňovat, co je v nich.
Stejně jako to, co je na této adrese, a to je důvod, proč to funguje.
Versus v tomto programu zde to, co děláte je budete vytvářet kopie.
Takže budete muset x a y, které existují jako své vlastní proměnné zde.
Ale pak, když minete je do swapu, je to
jako když vytváříte Celý ten druhý set.
Takže jste vlastně nikdy dojemné x a y.
>> Diváků: Pokud ampersand x je to, co je na adresa x, co by hvězda x být?
>> ALLISON BUCHHOLTZ-AU: Ampersand x je to, co je na adresa x, pak star-- dobře,
V tomto případě, x není ukazatel.
Publikum: Oh, OK.
Takže si jen udělat protože to není ukazatel.
ALLISON BUCHHOLTZ-AU: Správně.
Můžete to udělat jen hvězda něco, co je ukazatel.
Možná, že byste mohli udělat to, aby věci, které nejsou, ale kompilace, které vám
dělat bláznivé věci se stane.
A já jsem zrovna ne jistý, co by se stalo.
Můžete si vždy adresa něčeho,
ale nemůžete dereference něco, co není ukazatel.
Pokud to dává smysl, že je to dobré rozlišovat mít.
>> Takže není tak špatné, ne?
Stoly jsou snad stále o něco méně děsivé.
Dobrá.
Ach, ty zábavné.
Takže teď, psaní vlastního kódu.
Takže budu vám kluci pracovat na to asi čtyři minuty
a pak můžeme mluvit o způsobech, jak k němu přistupují.
Neváhejte a mluvit s lidmi kolem vás.
Také je to zajímavé.
Je to jako všechny dívky část právě teď.
Docela vzrušující.
Kromě Chang.
Ale Chang opravdu není součástí oddílu.
Úžasné.
Perfect.
Tak já vám dám pár tipů.
V případě, že máte více než jeden znak, kde
máte něco jiného jako je 123 nebo 1000 něco,
musíte být schopni smyčky skrz a převést každý z nich.
Takže je tu pár způsobů, jak jsi to mohl udělat,
ale vy jste určitě bude mít smyčky for někde tam na smyčce
skrze ně, což je něco jako prozradí
, i když se zavoláte strlen, který je něco jako oh
Možná budete chtít použít délku řetězce nějakým způsobem.
>> Dobrá.
Tak co vy na to by mohl být jedna z prvních věcí, kterou chtějí dělat?
Je tu pár případů zde musíme vysvětlit, že jo?
Buď budeme mít něco, co je null.
Co máme?
Případů.
Null.
Máme případ, že má něco jiného než 09, ne?
Takže řekněme, že má dopisy.
Nebo máme případ, který je platný.
Tři případy myslet.
Takže, který z nich si myslíte, že by mohl být nejjednodušší postarat se o první?
Diváků: Null.
ALLISON BUCHHOLTZ-AU: Případ je null.
Takže to, co bychom si tam?
Diváků: [neslyšitelné].
ALLISON BUCHHOLTZ-AU: Jo.
A co mám dělat?
>> Diváků: return 0.
>> ALLISON BUCHHOLTZ-AU: Přesně tak.
Úžasné.
OK.
Takže teď případě, že má dopisy a v případě, že je platný.
Můžeme skutečně postarat z toho v rámci jedné smyčky, OK?
Takže jeden způsob, jak to udělat to-- co by mohlo být jednoduchý způsob, jak zjistit, jestli je to platný.
Budeme muset projít každý dopis a dělat to, co?
>> Diváků: Zkontrolujte, zda je to in--
>> ALLISON BUCHHOLTZ-AU: Dobře, můžete zkontrolovat pokud je mezi 0 a 9, ne?
A pak v případě že je to platné, že jsme
skončí iterace náš řetězec kdekoli, ne?
Tak proč se snažíme spojit je do jednoho.
Budeme opakovat přes vnější řetězce, a jako my
tomu, že budeme první provést kontrolu, zda tento dopis
nebo, pokud to povaha je platný.
Pokud ano, budeme provádět operace, která musíme ji převést.
V opačném případě se vrátím 0, ne?
>> Takže než to uděláme, budeme pravděpodobně chtít nějakou proměnnou
že se může vrátit na konci že to bude naše skutečná hodnota.
Takže budeme inicializovat některé hodnoty se 0.
A to je jen, jak začít.
Takže já jdu, jak se zbavit toho.
Tak jak budeme iterovat tohoto řetězce.
Obecenstvo: pro smyčce.
ALLISON BUCHHOLTZ-AU: pro smyčce.
Takže to, co je naše pro?
>> Diváků: i je 0.
ALLISON BUCHHOLTZ-AU: Mm-hm.
A to, co jsme iterací až do?
>> Diváků: délka str S.
>> ALLISON BUCHHOLTZ-AU: OK, teď vzpomenout existuje lepší způsob. [Neslyšitelné].
>> Publikum: Ano, můžeme to udělat n se rovná.
ALLISON BUCHHOLTZ-AU: Přesně tak.
>> Diváků: i je menší než n.
ALLISON BUCHHOLTZ-AU: A proč bychom chtěli dělat, že?
Vzpomínáte si na důvod?
Diváků: Musíme ji přepočítat.
ALLISON BUCHHOLTZ-AU: becasue Tímto způsobem se pouze pro výpočet strlen jednou.
Pokud tak učiníte i je menší než strlen s, to znamená, že se přepočítá
délka pokaždé spuštění smyčky for,
což není obrovské náklady energie, ale je to
lepší praxe, aby se pokusila dělat věci, jako že jednou.
Není-li možná máte šílený řetězec že se mění v každé iteraci.
Ale pokud je to zůstat stejný, uložte jej.
Dobrá.
A pak i a a.
Úžasné.
Jsme na cestě.
Diváků: Opravdu rychle.
Za prvé, takže řekněme, že jsme právě Udělal jsem menší než strlen S,
se, že třídění nás na design vůbec nebo jen korektnosti?
Oni nejsou.
Jsme třídění na správnost pro kvízy pokud vím.
Nemohu se nabízí na celé záruka, ale pro nejvíce se rozdělit,
Drtivá většina je korektnost, protože jste pod velkým časového omezení.
Design obvykle znamená Máte čas na rozmyšlenou
o eleganci vaší situaci.
>> OK, takže jsme iterace.
Takže potřebujeme buď ověřit, zda tento znak je platný
nebo jestli můžeme provádět naše normální [? na i?] funkce.
Můžeme starat o to, co že je v druhém.
Tak proč ne my take-- jestli někdo může myslet
o způsob, jak kontrolovat, aby zjistit, jestli je to platný.
Víme, že to bude někteří pokud podmínka, že jo?
A pamatujte si toto je v ASCII, jak by to
uvidíme, jestli to není 0,1, 2, 3, 4, 5, 6, 7, 8, nebo 9.
Diváků: Pokud je alfa.
>> ALLISON BUCHHOLTZ-AU: Takže pokud by alpha jen dejte nám vědět, jestli je to písmeno.
A pokud se nám symbol, je to ještě ne zcela jít zkontrolovat.
Takže pokud budete tahat svůj ASCII stůl, víme, že 0 až 9
jsou v jednom segmentu.
Řekni mi čísla, že odpovídají-li to možné.
Diváků: 40.
>> ALLISON BUCHHOLTZ-AU: Takže rozsah je jako 40--
Diváků: Možná.
48 až 57,.
Nejsem si jistý.
>> ALLISON BUCHHOLTZ-AU: 40-57?
>> Diváků: 48, myslím.
ALLISON BUCHHOLTZ-AU: 48 až 57,.
Takže víme, že ti, ASCII symbols-- pokud ASCII hodnota není
mezi 48 a 57, to neplatí, je to tak?
Tak bychom mohli využít, že pro Naší výhodou je možná?
Jak se dostaneme tento dopis, první off?
Jak jsme přístup to tato postava?
>> Diváků: s držák i.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Vzhledem k tomu, abychom mohli myslet řetězce jako pole, pamatovat.
Takže to, co chceme říct?
Chceme říct, jestli to je-- Dám vám nápovědu.
Je to méně než.
Co si myslíte, že to musí být menší než?
Diváků: 57?
>> ALLISON BUCHHOLTZ-AU: 47, ne?
Ale to také znamená, že pokud jste 0 v jednom [? paprsky?], protože to je
znak 0.
Dalo by se také dát 47.
S tabulku ASCII, as vidíte, je jen něco
měli byste mít na svém kvízu listu.
>> Takže pokud se jedná o tento případ, je-li to méně než 0-- nutně a.
Je to jen jeden bude menší než nebo větší než 9.
Takže můžete vyplnit tento poslední pro mě?
Tak nebo s oblastí I je to, co, Rhea?
>> Diváků: Větší než 9.
>> ALLISON BUCHHOLTZ-AU: tam.
Znamená to, že smysl všichni, jak jsme se tam dostali?
Tyto problémy jsou jako kdysi vy viz řešení, je to jako oh, OK.
A to je důvod, proč cvičení vám pomůže.
OK, takže se vracíme 0.
Lovely.
Dobrá.
Jinak to, co chceme dělat?
To je zajímavá část kde je to trochu víc
jako matematika oproti CS podle mého názoru.
Má někdo nějaký nápad o tom, jak bychom mohli udělat?
Takže důležitá věc si uvědomit, první znak
bereme bude nejvyššího řádu číslice, ne?
Pokud tedy hledáte na konverzi 123, poprvé jsme se opakovat
bude 1, ale musíme že je to 100 na konci, ne?
Takže jedna věc, kterou můžete udělat, je, že s každou další číslicí
budete mít, můžete znásobit svůj hodnotu 10, tak, že v době, kdy se dostanete na konec,
Vše bylo směrem nahoru, ne?
>> Takže prvním spuštění to máte 1 jako hodnota.
Podruhé jej spustíte, můžete násobit hodnotu 10.
To bude aktualizovat, takže je nyní 10, a přidáte na další hodnotu.
A pak násobit, že 10 a přidat na další hodnotu.
A to je důvod, proč říkají, že to je mnohem více jako testování
matematický algoritmus proti CS, ale to jsem odbočil.
Nechci psát kvízy.
>> Takže jedna věc, kterou můžeme udělat, je, že jsme říkají časy hodnota je rovna 10.
Takže to bude posun Váš číslice jednou za čas.
A pak jsme se jen chcete přidat.
Chceme přidat, co právě jsme dostali, že jo?
Tak jak jsme se vlastně převést naše ASCII znak do počtu
že to představuje?
>> Takže víme, že 0 je rovna 47, ne?
Takže pokud 0 je 47, co bychom museli udělat, aby to
ve skutečnosti, aby bylo int 0?
>> Diváků: Je to 48.
ALLISON BUCHHOLTZ-AU: 48?
Promiňte.
Rádi bychom odečíst 48, ne?
Nezapomeňte ASCII matematiku?
Můžeme je považovat jen jako normální čísla.
Pokud s nimi zacházet jako čísla, se stanou čísla efektivně.
Takže pokud máme sz I, která pojďme říci, je v tomto případě roven 0.
Takže s oblastí I v tomto případě by ASCII--
ASCII int pro něj bude 47.
Takže jsme mohli subtract-- nebo 48.
Dalo by se to udělat, je jeden způsob.
Ví někdo lepší způsob, jak bychom mohli udělat 48?
Jen jsme si řekli 0 je-- jít do ASCII byste mohli udělat cenovou 0.
Tak se to trochu dělat pocit, jak to funguje?
>> Publikum: V tomto okamžiku, je hodnota 0 protože i když si to vynásobit 10,
začínáte se s nulou, proto by mělo být zapnutý?
>> ALLISON BUCHHOLTZ-AU: Takže v tomto případě je Chcete vynásobte ji před přidáním,
proto, že v tomto případě, ano, by to stále be-- můj ukazatel chybí.
Hodnota v tomto případě, první Tentokrát jsme ho spustit bude nula.
Takže jste právě přidáním na té první číslici.
Co je důležité, je příště iteraci, chcete posunout nahoru
než přidáte další číslice na.
Znamená to, že objasnit pro vás?
OK.
>> Někdy budete podivně více Mathy věci.
Pokud jste měl to, že jste stále pokračuje
na get-- budete dělat docela dobře.
Částečné úvěr je velmi velká věc na CS50 kvízy.
Tak napište, co víte.
Pokud máš všechno kromě tady, že jste
ještě dělat opravdu dobře problém.
Vzhledem k tomu, že jste ukazuje, OK, já skoro nevím.
Vím, že je třeba iterovat.
Vím, co je třeba zkontrolovat.
Jen jsem ne zcela dostat, jak ji převést.
Budeš v pořádku.
Ano, budete ztratíte pár bodů,
ale vy jste ještě dostane dobrý počet bodů za něco
jako, že pokud jste chybí tyto dva řádky.
Chtěl bych být jako OK, této osobě ví, co dělají.
Matematika je těžké.
Takže bych řekl, že budeš v pořádku.
>> OK, takže vy připraven zkuste strlen s ukazateli nyní
že vy jste ukazatel pány?
Takže nechám vy pracovat o, že pro trochu.
Pokud někdo potřebuje osvěžit.
Takže chcete použít ukazatel aritmetika, a pak, pokud je null,
Vaše implementace by se měl vrátit 0.
Věci, jako je to, které vám dělají opravdu rád, že stačí zavolat strlen
Na konci dne.
Myslím, že tohle by mohlo být trochu jednodušší, než ten poslední, který
je dobrá.
Dám ti kluci ještě minutu, a pak budeme pracovat přes to.
A pak jsme si jít na přepínači.
>> OK, připravené lidi?
Možná trochu.
Tak jsem dal vaší dvě možnosti, že jo?
Buď zkontrolujte hodnotu null a vrátí 0, pokud to je, nebo je přímo vypočítat délku.
Takže, kdo chce psát zkontrolovat null?
Jít na to.
>> Diváků: Pokud závorky s rovná se rovná nulové návratnosti 0.
ALLISON BUCHHOLTZ-AU: Lovely.
Miluju, když půl váš problém právě kontrola null.
Vím, že se kluci poslední týden Byl jsem jako šek na null
doslova pokaždé.
OK, tak--
>> Diváků: Pokud return 0 je pouze jeden řádek, my stále potřebujeme složená závorka?
>> ALLISON BUCHHOLTZ-AU: Vy není technicky Potřebujeme je, jak dlouho jste v souladu.
Je to dobré praxe jen dostat ve zvyku
použití složené závorky, ale technicky ne.
Nemusíte je na jednom řádku.
Právě jsme se jí spíše doporučit pro lidi začínají programu.
>> Takže teď to, co bychom mohli chtít dělat?
Takže teď víme, že naše řetězec je platný.
Chceme udržovat vypočítat délku.
Co je to pravděpodobně první věc, kterou chcete dělat?
>> Diváků: Vytvoření int, že je to dlouhé.
ALLISON BUCHHOLTZ-AU: Přesně tak.
Diváků: A chceme nastavit tak, aby?
ALLISON BUCHHOLTZ-AU: 0.
Perfect.
Dobrá.
A teď, co chci dělat?
To je ve skutečnosti většina z nich.
Jít na to.
>> Diváků: Takže jste asi dělat pro smyčce.
A pak, protože při volání S, že jste dostat adresu první věc,
byste začít s i = 0.
A pak, pokud x Navíc jsem se nevrátil lomítko 0.
ALLISON BUCHHOLTZ-AU: null zakončení.
Diváků: null zakončení.
Pak můžete přidat jeden na délku.
>> ALLISON BUCHHOLTZ-AU: Jo.
OK, takže umožňuje otočit, aby do velmi konkrétního kódu.
Ale to je perfektní nápad.
To je přesně to, co děláme.
Budeme mít Iterace až s ukazatelem.
Takže to, co chceme dělat je místo int
tady, protože jsme ne odkazovat se na to.
Mluvíme na začátek řetězec, který začne být některé adresy,
že jo?
>> Takže chceme ukazatel.
Takže budeme mít nějaký char hvězdu, protože odpovídá našim s, ne?
Tak to je nějaký bod jsme inicializace na začátku řetězce, OK?
Takže pojďme stačí zavolat: Zdali já jsem.
Pokud je to začátek řetězce, co se to bude přidělen?
Ne 0.
Chceme, aby to bylo spuštění našeho řetězce.
To, co představuje začátek náš řetězec, který nám byl dán?
>> Diváků: Jen s.
>> ALLISON BUCHHOLTZ-AU: s.
Takže to vytvoří nějaký nový ukazatel, který představuje začátek našeho řetězce, OK?
Další způsob, jak myslet na to, je jako tady je naše pole.
To je náš řetězec, s.
Takže řekněme, že je to první místo, a to je 0x4.
04.
To je náš s, který si myslí, že adresu.
A my jsme právě vytvořili ještě jeden s názvem i to jen odkazuje na stejnou věc.
Takže oni jsou oba jen ukazuje na počátku našeho řetězce.
Toto je pouze grafické znázornění.
>> Takže teď to, co chceme udělat, je chceme iterovat
naše podmínkou iterace prostřednictvím naší řetězec.
Nyní nakupování.
Musím nakupovat, kluci.
Se chceme udržet aktualizaci do se dostaneme na hodnotu null zakončení, ne?
Takže to, co by to mohlo vypadat?
Chceme i, nebo chceme hvězda i je otázka?
Je null zakončení adresa nebo něco, co se nachází na adrese?
Nachází se na adresu, ne?
>> Takže potřebujeme dereference, co je zde, protože je to jen nějaký adresa.
Chcete-li skutečně dostat na začátek musíme dereference to
takže jsme vlastně dostat to, co je v tomto prvním místě.
Takže pokud budeme dělat hrát i to, co ne chceme, aby se vyrovnal?
Diváků: zpětné lomítko?
>> ALLISON BUCHHOLTZ-AU: tam.
Znamená to, že smysl pro každého?
Musíme jít do našeho řetězce a ujistěte se, že to není konec.
A pak můžeme jen aktualizovat takhle.
Normální aktualizace.
Tak pokud se jedná o met, co musíme udělat?
>> Diváků: Délka a a.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
A pak se po smyčce for, ukončí, co chceme vrátit?
Diváků: délka?
ALLISON BUCHHOLTZ-AU: Délka.
Tady to je.
Je zřejmé, že maso je tento je pochopení tohoto cyklu for.
Má každý si, jak to funguje?
Jsem rád, že projít to znovu.
>> Diváků: Druhá část, takže hvězdou i tam,
to je adresa first--
ALLISON BUCHHOLTZ-AU: To není adresa.
To je to, co je na.
Diváků: To je opravdu tam.
ALLISON BUCHHOLTZ-AU: To je to, co je ve skutečnosti tam.
Tak tohle je saying-- nechat mi, abych to lépe.
Tak tohle je 0x04 a já jsem prostě jít říkat budu, aby se tento mé jméno.
OK.
Ano, vím, že mám kvíz recenze večer.
Spousta kvíz recenzi.
Takže řekněme, že tento řetězec je mé jméno, Allison.
Trochu chaotický, ale je to tam.
A S představuje umístění kde začíná řetězec,
takže budu dělat to real-- to je adresa,
kde řetězec začíná, ne?
>> Takže to, co tu děláme, je, že chceme, aby pomocí ukazatele iterovat.
Tak jsme se vytvořit nějaký ukazatel, i, které také se rovná začátku řetězce.
A v každém bodě, chceme dále prochází polem
zde, dokud hit zakončen nulovým znakem.
Tak jsme se vždy chtějí zjistit, co je v každé z těchto adres.
>> Tak jsme dereference i tak, že Poprvé jsme to my
říkají, OK, co je na adrese 0x04?
Je to.
OK, jsme dobří.
Přírůstek délky.
Přesunout na další.
Takže Já-- pamatovat umístění ukazatelů nárůst o velikost, co se jim už ukazuje.
Takže v tomto případě, protože je to char, bude to aktualizovat jeden.
Takže teď budeme dívat na 5, což znamená, že se to děje tady.
Tak to říká OK, přejděte na 0x05.
Co je tam?
Je to l.
A to bude pokračovat v tom, že dokud nenarazí tenhle.
A říká, že OK, co je v ať adresa je tohle?
Null zakončení, OK.
Exit.
A právě návrat délku.
Vzhledem k tomu, co potřebujete, co je vlastně na že adresa, není sama o sobě adresy.
>> Existuje jen velmi málo míst, kde skutečně potřebujete adresu.
Většinu času, kdy používáte, a to
když jste poprvé přiřazení ukazatele nebo při
jste předáním do jiné funkce.
OK, všichni tam dobře?
Druh?
OK.
>> Tak vypadá to, že máme zbývá asi 12 minut,
tak půjdeme na možná naše poslední problém,
a pak je tu jakýkoli pojmy, které mají přijít
do té doby můžeme rychle přejít přes to.
>> Takže Switching Gears je poslední Problém, switch.
Takže vaším úkolem je přepsat tak, že se chová stejně
ale nepoužívá spínače.
Křídových ruce.
Takže nějaké dotazy týkající se tohoto off bat?
Žádná?
OK.
Má každý pochopit, že pokud případ nemá nic po tom,
to znamená, že by měl následovat další krok?
Tak případě 1 a 2 v tomto případě dělat přesně to samé.
Někdy bod zmatku.
>> Dobrá.
Každý, kdo má nějaké nápady?
Jo?
>> Diváků: takže si můžete prostě if.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Takže to, co je naše první?
>> Diváků:-li n rovno rovná 1, a 2 linky pro nebo n se rovná
se rovná 2, vytiskněte malý.
A pak můžete dělat else if?
Nebo můžete prostě udělat, pokud?
>> ALLISON BUCHHOLTZ-AU: Můžete dělat else if?
>> Diváků: Bylo jedno, jestli jste udělali, kdyby?
ALLISON BUCHHOLTZ-AU: Tak to dělá.
Má anyone-- ano, bude mít stejný výkon
Pokud používáte jen IFS versus Pokud používáte jinde IFS.
Může vy myslíte, že z důvodů, proč byste mohli chtít použít else
pokud proti mnoha investičních fondů?
Má s účinností.
Jo?
>> Diváků: To by zkontrolovat všechny kdyby pokaždé.
>> ALLISON BUCHHOLTZ-AU: Takže i když to hit této první,
bylo by to na kontrolu každý druhý.
Takže chcete použít, pokud IFS jinde v případech, kde pouze jeden z nich bude vždy platit.
Takže vzájemné vyloučení je to, co se snažíme říct.
Pokud máte spoustu investičních fondů, to znamená, že možná víc než jeden z nich
záležitosti, a možná víc než jeden z nich může být pravda.
A chcete oba provést v případě, že jsou pravdivé.
Pokud chcete pouze jeden z nich do práce v těchto vzájemně se vylučujících případů,
Chcete-li použít else if, protože to všechno má co do činění s účinností.
Váš kód je prostě lepší určen pokud se dodržuje tuto praxi.
Takže v tomto případě budeme mít else if.
A to by bylo?
>> Diváků: n se rovná rovná 3.
ALLISON BUCHHOLTZ-AU: Perfect.
Tiskové médium.
A pak naše poslední případ, co máme?
Else nebo else if?
Diváků: Else.
>> ALLISON BUCHHOLTZ-AU: Do my want-- chcete else if, protože máme konkrétní případy.
Není to tak trochu chytit všechny.
Pokud byste měli výchozí v switch-- pamatovat v přepínači můžete mít případ,
a pak máte výchozí.
Pokud byste měli výchozí, to je druh vašeho else tam.
Ale pokud to má jen případy, to znamená, že budete potřebovat
zkontrolovat, jestli je to každý z nich.
Takže v tomto případě by to 4 nebo 5.
Chceme vytisknout.
Je to velký.
A je to.
A to by váš program.
>> Takže v tomto případě, pokud bychom měl výchozí něco,
budeme mít jinde v bez ohledu na to chtěl, abychom udělali.
Tak to je dobrá rozdíl poznat, pochopit.
Znamená to, že pomůže s ovládáním pro vás?
Perfect.
Dobrá.
>> Máme asi osm minut před.
Myslíte si, kluci nějaké další pojmy na vysoké úrovni?
Dotazy obecně?
Ano?
>> Diváků: Měl jsem otázka o jeden z nich
že se o náhodný číslo generátor na kvíz nula.
ALLISON BUCHHOLTZ-AU: Oh, že jeden.
Ten je další, kde to je matematika than-- ano.
Řešení that-- i já, když Vidím to tak, že jsem jako to, co to je.
>> Diváků: Bylo to číslo 7.
>> ALLISON BUCHHOLTZ-AU: Je to divné, podle mého názoru.
Takže v podstatě chcete použít drand48, který
bude vám některé číslo mezi 0 a 1.
A chcete jej použít, aby že jste nějak dostat je--
a je to mnohem větší problém matematiky mi, než si myslím problém CS.
>> Způsob, jakým budete dělat to-- a Někdy to bude jen takhle.
Opět se jedná o případy, kdy je to druh
jako se napsat, co vás může a částečné úvěru.
Chceme-li tedy o návratu víme, že jsme
bude používat drand48 nějakým způsobem, ne?
Tak proč ne my jen poznamenat, že dolů.
Používáme ji nějakým způsobem.
Způsob, jakým mají vy používáte to je
takhle, což se pokusím vysvětlit.
>> Takže v podstatě, co se tady děje Je tomu tak proto, že je mezi 0 a 1,
to, co děláte, je jste vynásobením by-- to je velmi matematický otázka.
Jen plné disclaimer, to je zcela matematika otázka.
Co děláte, je vzhledem k 0 a 1 a
chcete, aby to bylo v rámci tento rozsah, ve skutečnosti
přijít na to, jak velký rozsah, a pak
jste v podstatě měřítko to, což je to, co to dělá.
>> b minus vám tento rozsah, Rozdíl mezi těmito čísly.
Můžete násobit mezi 0 a 1, a pak se přidá jen
Znamená to, že vaše měřítka to tak, že je mezi a a b,
které jsem neměl opravdu rád tento problém.
Jak jsem již řekl, tento kvíz znamená, že zahrnuje
lidé, kteří jsou méně pohodlné, někde mezi,
a pohodlnější.
Takže když oni udělali to tak, že to bylo něco
že všichni u méně pohodlné místo dostane,
budeme mít příliš mnoho lidé bodování zdokonaluje,
a pohodlnější bude nudit.
>> Takže se vždy jedná druh hlavolam otázek
které mají být o něco těžší že nějakou kreativní myšlení.
Když je vidět, ne příliš pařezy.
Rozhodně bych řekl salto prostřednictvím testu jako první.
Řešení problémů že víte, že můžete,
proto, že to k ničemu zaseknete na problém, když tam jsou tři
nebo čtyři nebo pět na straně poté, co si můžete snadno udělat.
>> Diváků: Proč přesně se vám vynásobte to o rozsahu?
>> ALLISON BUCHHOLTZ-AU: Můžete násobit rozsah, který jste víš-- je to jako, jak moc po
chceš?
Takže si můžete myslet, protože to vrací číslo mezi 0 a 1,
můžete si ji v procentech.
Takže je to v podstatě říká, máme-li Naše číslo řádku tady, je tady,
a b je tady.
Jsi jako kolik za to je?
Je vše, co děláte.
Takže jste se ptal na procento tohoto rozsahu, který
je to, co to dává vám.
A pak jste v podstatě jen měřítko to přidáním.
Je to matematický hlavolam.
>> Pokud tam byl nějaký last minute poradenství, I bych listovat otázky,
zjistit, které z nich si vím, že rád, oh Mám to.
Téměř jistě se chystají být otázky, že nebudete vědět,
nebo že budete mít čas pro, takže hit své silné stránky, OK?
Vy se chystáte na velký.
Existuje spousta Otázky z nějakého důvodu,
tak, že budete mít čas na druh mít příležitost
ukázat, co jste opravdu dobří.
Takže je to v pořádku, pokud jste není dobrý ve všem.
Zahrajte si na své silné stránky.
Ano?
>> Diváků: Takže je to bude vrátit něco, co je zkrácený?
Ano, bude to, protože drand vrátí mezi 0 a 1.
Bude to vrátit int, protože to bude zkrátit
když přidáme nebo násobit to.
V pohodě.
Na poslední chvíli otázky?
>> Vy se chystáte udělat skvělé.
Budeš mít báječný.
A i kdyby ne, bude tam být candy tady příští týden.
A já tě miluju.
I budete milovat lidi bez ohledu na to.
Dobře, všichni, hodně štěstí.
Mají velký čas.
Budeš v pořádku.
A víte co?
Za dva dny to bude být u konce, zatímco já
dvě midterms ve čtvrtek, takže alespoň vy bude hotovo.
Tak jo, uvidíme se kluci příští týden.