>> [Prehrávanie hudby]
>> Reproduktor 1: Toto je CS50 a to je začiatok dvoch týždňov.
Takže, poďme sa ponoriť sa priamo do niečoho že je buggy, aby som tak povedal.
Takže, tu je CS50 IDE a ja som zastavil v predstihu to screen-- zatracený
za to.
Spojler alert.
Dobre.
Ja som vytiahol túto obrazovku tu, ktorý má veľmi jednoduchý program.
Ak sa budeme posunúť dole, najviac to je len komentáre,
ale tu v riadkoch 13 až 17 máme program.
>> To je syntakticky platné, čo znamená, že ak Aj skompilovať, bude to skompilovať a spustiť,
ale je to kočík.
Tento program tvrdí v komentári up vrchole, že by sa mala vytlačiť 10 hviezd,
ale to nie je.
A na základe vašich skúseností, alebo čoskoro bude skúsenosť s C,
môžete logicky rozoznať prečo to je v skutočnosti, kočík?
Jo?
Divákov: Ide to od nuly do 10 rokov.
To je 11 iterácií.
Reproduktor 1: Jo.
Takže, bude to od nuly nahor a sa rovná 10,
čo je samozrejme 11 iterácií.
Tak, to bude tlač, naozaj, 11 hviezdy.
Takže, počítačové vedy konvencie vo väčšine programovacích jazykov
je naozaj len preto, aby začne počítať od nuly,
ale počítať až po, ale nie cez hodnota, ktorú ste skutočne záleží.
>> Teraz, to je jedna vec, ktorá trvá trochu zvyknúť
a dokonca aj Scratch, navrhnutý ako je pre non programátorov alebo non počítači
vedci a pre deti z veľkej časti, je navrhnutý tak, aby
začnete počítať zvyčajne v jednom.
A to je v poriadku.
Môžete úplne začať počítať v jednom prípade, že je to oveľa pohodlnejšie.
A počítať až do a cez 10, ale si uvedomíte, zvlášť tento týždeň
a za ňou len tak veľa vecí v programovaní
Predpokladáme, že 0 je prvá číslice, s ktorým budete počítať,
že budete ľahšie len sa dostať do tohto zvyku spúšťanie
od nuly a počíta do hodnoty vám záleží práve teraz od
dostať ísť.
>> Tak, že má pevné, že.
Zmenili sme menej než alebo sa rovná len menej ako.
Poďme sa pozrieť na druhý príklad tu.
>> Tak, tento program tiež uvádza, vo svojom komentuje up top, že by mala vytlačiť
desať hviezdy, ale to nie je.
Čo je to chyba tu?
>> Tak, what-- a prepáč, poďme byť jasné.
10 hviezdy.
Jedno na riadok, ale to nie je.
Takže v skutočnosti, nechajte ma ísť dopredu a skompilovať tento, pretože je to o niečo menej
jasné na základe tohto opisu.
Nechaj ma ísť do nášho zdrojového adresára.
Urobiť Buggy jednu bodku lomítko, buggy jeden.
OK, vidím, 11 hviezdy, ktoré je stále problematické,
ale sú tiež všetky v jednom riadku.
Čo je problém tu?
Jo.
Divákov: [Nepočuteľné].
Reproduktor 1: Jo.
Takže to je jemnosť, že môžete pripomínajú mi robiť krátku zmienku o.
Aj keď všetko vyzerá pekná, a to je pekne členité,
a to trochu vyzerá ako Scratch- V tomto riadku 16 a 17 sú,
vskutku, odsadené pod že pre sláčiky.
To je nepodstatné.
Počítač nie je vedia alebo vidieť prázdne miesto.
Biely priestor je len pre nás ľudí, štylisticky.
Počítač má vedieť, kedy máte zložené zátvorky, ktoré by, naozaj,
tento problém vyriešiť.
>> Takže, keď sme vlastne išiel dovnútra a výslovne dať v týchto zložených zátvoriek
že by sa tento problém vyriešiť tým, Vďaka jasné, kompilátor
že som vlastne chcú spustiť opäť dva riadky kódu,
a znova a znova.
Ale to, čo je základný vysvetlenie?
Je to tak?
Nemáme striktne potrebovať zložené zátvorky po celú dobu,
aj keď je to asi najlepšie Prax sa dostať do tohto zvyku rovnako
keď dodáva dva znaky na váš kód. prečo?
>> Divákov: [Nepočuteľné]?
Reproduktor 1: Jo, tak to je iné riešenie úplne.
Je to tak?
Zvlášť keď na prvý pohľad, že nie Naozaj si to vážim, čo sa deje.
No, určite sme mohli proste robiť dve veci naraz
a len sa problému vyhnúť úplne.
A to je v poriadku, ale teraz, pre dnešné účely, čo
je vysvetlenie pre chybu?
Prečo boli všetky tie hviezdy na jednej linke?
Jo?
>> Divákov: Zdá sa, že v prípade, máte jeden riadok kódu,
môžete to urobiť bez nich.
Reproduktor 1: Presne tak.
To je len ľudská konvencie.
Ľudia si uvedomiť, že je to Trochu nepríjemné alebo nudné
musieť dať zložené zátvorky všetky času, ak všetko, čo chcete robiť
je spustiť jeden riadok kódu.
Takže, ľudia sa rozhodol niektoré pred časom, že to je v poriadku.
Ak chcete, aby všetky vaše slučky len na tom jednom riadku, ako je táto,
to je v poriadku so singlom bodkočiarka na konci.
Ale môžete urobiť len jeden taký linka bez zložených zátvoriek.
>> Takže, keď sprievodca CS50 štýl ako bude bod, ktorý,
uvidíte, že vo všeobecnosti je to dobrý zvyk
sa dostať do toho, kým ste celkom pohodlné zblúdení
z týchto druhov konvencií a robí svoju vlastnú vec.
Tak dlho, ako ste vlastné konzistentné.
A budeme hovoriť o štýl trochu neskôr dnes.
>> Takže mi dovoľte, aby som otvoriť jeden iný program.
Samozrejme, mali by sme opraviť, že 10 rovnako.
Nechaj ma ísť napred a napísať skutočný rýchly program, ktorý budem hovoriť,
povedzme, slučka bodka C. Takže, slučka dot C. A v slučke dot C budem mať,
zahŕňajú štandardný I / O dot H int main neplatné.
A teraz poďme jednoducho robiť, naozaj, slučka.
Takže, 4 int som dostane nula.
Aj je menšia ako, povedzme, 50.
Aj plus, plus.
A potom tu poďme choďte do toho a do tlače F.
A potom chcem vytlačiť I a nový riadok, bodkočiarka.
>> A to by malo tlačiť všetky Čísla od nuly do 50?
Niekoľko hlava prikyvuje.
Niekoľko nos.
Čo je to chyba už?
Čo je ľahké chybu som urobil?
Jo.
>> Divákov: [Nepočuteľné].
Reproduktor 1: Jo.
Takže aj keď to vyzerá, takto je to, čo mám v úmysle,
pripomenúť, že som ich tiež len ASCII znak.
>> Takže, keď poviem, print "I."
Je to doslova deje do I. tlač Takže, keď som
chcú plug-in zástupný Hodnota som skutočne potrebujú to urobiť
a potom pripojte-in hodnota I, dynamicky.
Inak ja som jednoducho ísť dostanete 50 rokov som na obrazovke.
>> Takže, nechaj ma ísť dopredu a túto slučku, spustite ho,
a, samozrejme, sme všetci cesta hore cez 49.
A keď som sa posúvať späť v čase vidím číslo na začiatku nula.
>> No, čo keby som druh Zpacká?
Čo keď to urobím?
Len preto, že som nepremýšľal.
Čo je tento program.
Akonáhle znovu zostavený a spustenie, robiť logicky?
>> Divákov: Nič.
>> Reproduktor 1: Nič.
Prečo tomu tak je?
>> Divákov: Aj je určený pre nulu.
Takže, je podmienka nepravdivá.
Reproduktor 1: Jo, presne tak.
Všetok kód je správny, syntakticky.
To bude zostavovať, to Kód bude spustený, ale nie je to
robiť niečo užitočného pretože som inicializovať som na nulu.
Potom sme zistiť, je, že som väčší ako 50?
Je zrejmé, že nie, že to nie je.
Takže sa slučka nebude nikdy vykonaný vôbec.
>> Čo keď niečo robíme trochu viac ľahkomyseľný?
Takže, čo keď budeme robiť, ako int aj dostane nula.
A teraz mi dovoľte použiť chvíľu slučky, čo bol ďalší podmienkou.
A keď hovorím, keď som je väčšia než alebo sa rovná nule, a potom sa v tú I
choďte do toho a uložte súbor, aby slučku.
A ja som asi ho spustiť.
Čo mám to vidieť tentoraz s slučky while?
Jo.
>> Divákov: nekonečnú slučku?
>> Reproduktor 1: nekonečnej slučke?
Áno, a prečo?
Divákov: Pretože je to vždy nula.
Reproduktor 1: Jo.
Takže, je inicializovaný ako nula.
Samozrejme, že je vždy väčšia než alebo rovný 0 ako výsledok.
Takže, ja som jednoducho ísť vidieť nekonečne.
A teraz, to má prísť raz alebo dvakrát do hlavy kurzu je.
Čo sa stane, keď vás majú nekonečnú slučku?
>> Publikum: Control C.
Reproduktor 1: Jo.
Takže Control C bude nakoniec reagovať.
Bohužiaľ, sme vytlačiť milióny a milióny nuly už
a tak má počítač druh dostal pred sebou.
Takže to bude ignorovať ma na trochu.
Ale ak ste práve hit ovládač C málo Časy na počítači Mac alebo PC klávesnica,
nakoniec to by skutočne ukončiť.
A ak nie, budeme vám ukázať niektoré techniky, kde na vás pred dlhým
môže skutočne zabíjať násilne programy, podobne ako v systémoch Windows a Mac OS,
v prípade potreby.
Ale poďme skúsiť niečo iné.
Poďme skutočne zvýšiť I. to stále bude nekonečný?
Dovoľte mi, aby som to bežať.
A teraz môžete druh zistiť, čo sa deje.
To, tiež, je nekonečné slučke.
Ale to je tak trochu chyták.
Je to bude tlačiť čísla navždy?
>> Publikum: Nie.
Reproduktor 1: Nie.
Prečo?
Počul som nejaké nos sem.
Someone-- Jo.
Divákov: Nemáte dosť bity naozaj ísť ďalej.
Reproduktor 1: Dobre.
Takže nemám dosť bity ísť ďalej.
Takže, čo sa stane?
Je to len tak prestať?
>> Divákov: Na nejakom mieste to bude zavrel the--
Reproduktor 1: Bude zavrieť slučky dole, ale prečo?
Čo sa bude diať u Veľmi koniec jeho hraníc?
Jo?
Divákov: Bude cyklus späť do záporných čísel.
Reproduktor 1: Ak chcete záporných čísel, alebo Ak by sme boli práve liečbu pozitívne,
nula minimálne.
Takže áno, absolútne.
Pripomeňme, že sme videli naposledy, že ak zvýšiť vaše bity jeden príliš mnohokrát,
a vy tam Fore pretečeniu kapacita vášho int
alebo bez ohľadu na typ dát je, že ste bude zalomiť okolo, pravdepodobne,
dve záporné čísla.
Alebo ak ste sa určiť, že rozsah by mal byť iba pozitívne,
ktoré môžete urobiť, ale sme nevideli, že doteraz,
môžete skončiť aspoň späť na nulu.
Aj keď, vlastne áno.
V tomto prípade, negatívne čísla, pričom v tomto prípade
slučka bude k ukončeniu preto, že som sa ani, v skutočnosti,
väčší alebo rovné nula, ak je to negatívne.
>> Takže, bohužiaľ, ako dlho budeme musieť čakať?
Práve teraz sme až do čo, 2000000-ish?
Sme ako 2 miliardy, budeme musieť počkať
kým sa skutočne môžeme vidieť tento príznak.
Ale my to vidieť o niečo rýchlejšie, maybe-- uvidíme, či môžeme prerušiť.
No ták.
Dokonca aj menu sa objavujú pomaly.
Dobre.
Takže, budeme vracať k tomu onedlho.
Je to dobrá time-- sakra, šteňatá.
>> Je to dobrý čas na nejaké oznámenia.
Takže, ak vám bude páčiť aby sa zapojili do YHack,
ktorý je udalosť, že podporovaný našimi priateľmi na Yale.
A skutočne, niektorí kurz je TFS na Yale sú spojené s týmto.
YHack je medzinárodná hack-a-thon hostil a držal
na Yale, združuje 1500 rovnako zmýšľajúcimi hackermi a reklamy všetkých
na celom svete.
Ak sa jedná o záujme, pozrite sa sem.
Ak je to príliš krátko na obrazovky, sa pozrieť na dnešné šmýkačky
pre URL pre yhack.org.
Takže, aj niekoľko rýchlych oznámenia.
Takže, oficiálne sekcia začne Budúci týždeň ako tu, New Haven.
Majte na pamäti, budete získanie e-mail neskôr tento víkend najpravdepodobnejší.
To trvá dlhú dobu pre CS50 k bodu,
Vzhľadom ku všetkým ľuďom v trieda a každý pohybujúce sa okolo.
A všetky výučby Fellows " rozvrhy sú tiež stále spevňovať,
ale zostaňte naladení pre e-mail a v prípade potreby sa môžete re-oddiel tam po.
>> Study.cs50.net.
Takže, aj keď ste konštantný účastníka na úsekoch, uvedomiť si, že takmer všetky
zdrojov používame v oddieloch sú verejne dostupné na CS50
Štúdium na tejto adrese URL tu.
Takže, ak by ste niekedy chceli obnoviť recenziu materiál z časti, alebo čítanie dopredu,
alebo nemôžete robiť to nejaký týždeň, uvedomiť, že ukážkové snímky,
a problémy, a definície, a ďalšie sú tam tiež.
>> Úradné hodiny pokračovať dnes, a zajtra, a v stredu,
a vo štvrtok skontrolovať kurz je webové stránky pre časový rozvrh.
>> A tiež, teraz začína dnes je CS50 Diskutovať.
Takže, ak a keď máte otázky pre navzájom alebo pre zamestnancov Course,
a sú všeobecne pracujú na nejaký problém set,
Uvedomujem si, že nemusíte nutne musieť obrátiť na človeka Ďalší.
Ak sa to nikto tam, môžete natiahnuť nás a spolužiakmi
on-line prostredníctvom CS50 Diskutovať.
Takže, to je diskusia doska pre kurzu,
a uvedomiť si, že toto je možno najlepší
miestom, kde začať, keď máte otázky, kedy mimo úradných hodín
zvlášť.
>> Obedy začne tento týždeň taky.
U ohňa a ľadu [Nepočuteľné] v New Haven.
Pozrite sa na kurz je webové stránky, aby sa RSVP.
Kto skôr príde, ten skôr melie za to.
Ak sa nechcete dostať v tomto týždni urobíme to najviac každý piatok
počas semestra.
>> OK, a teraz slovo o triedení.
Najmä ako sme sa vstúpiť problém set človek, ktorý je tento týždeň,
a problém nastaviť dva a potom.
Ako môžeme ísť o hodnotení P sety a hodnotenie ich kvality?
Takže, je to štyri osi, ktoré používame v CS50, a sú to tieto štyri tu.
>> Rozsah pôsobnosti, ktorý zachytáva na numerickej Základom, koľko zo súboru P
si riešiť.
Je to zhruba zodpovedá úsilie, a to je náš spôsob, ako zachytiť
Skúsili ste polovicu P set, všetky sady P.
Jedná sa o jednoduchý, kto dostať perfektné skóre na ak áno, naozaj,
vyskúšať každý aspekt sady P.
Takže majte na pamäti.
>> Korektnosť je presne to.
Má váš kód fungovať ako špecifikácia a ako vzorky roztoku štábov '
naznačujú, že váš kód by v skutočnosti fungovať.
Skontrolujte, 50, ak ste ju stretol napriek tomu je v P nastaviť jednu špecifikáciu
a všeobecne vám áno / nie odpovede
o tom, či je váš kód je správny.
Aspoň tak ďaleko, že budeme zhodnotiť ho na základe skúšok
že sme sa spustiť v rámci tohto programu.
>> Dizajn je oveľa viac subjektívne.
To je, ako dobre napísaný je váš kód.
A to je niečo, budete mať lepší na čase,
a je to niečo, že budeme poskytujú viac kvalitatívnu spätnú väzbu.
A zámerné by som mohol znamenať, onedlho budete
by mohol byť v pokušení nejakým P nastavený na niečo loopingly,
, Ale nebude mať možno tri, alebo štyri, alebo päť vnorené Predné slučky alebo vnorené zatiaľ čo
slučky.
To by vo všeobecnosti začnú vás krčiť
a by všeobecne považované za zlé konštrukcie.
A začnete vidieť v triede a z triedy dobrých spôsobov, ako robiť veci,
zlé spôsoby, ako robiť veci, ktoré by mohli byť všetky správne, ale nie
nutne dobre navrhnutý.
Rovnako ako písanie eseje.
Tie by mohli byť schopní dať slová na Stránka, ktorá sú gramaticky správne,
ale esej alebo Práce sú v je jednoducho
úplne nesúvislá či nepresvedčivé.
A tak, že môže byť analóg v písomná svet zlého alebo dobrého dizajnu.
>> A štýl, taky, je pomerne subjektívna.
Ale aspoň očakávame konzistenciu.
To je, ako krásna je váš kód.
Sú veci pekne členité?
Sú vaše premenné dobre menuje / sú všetky vaše zátvoriek a zložených zátvorkách
zladená, ako by mali?
Máme sprievodca CS50 štýl ako Problém sada bude ukazovať vás na adrese.
Tí, ktorí sú pohodlnejšie vitajte blúdiť z toho
tak dlho, ako ste vlastné konzistentné.
A aj to je lekcia budeme posilňovať v oddiele.
Takže, ak to všetko bolo trochu rýchla, si uvedomiť, P množina a profilov
pôjde do väčšej hĺbky, ako dlhý.
>> Ale všeobecne máme veľmi málo vedierka na CS50.
Výsledky sú všeobecne na stupnici obsahujúci jeden až tri, alebo jednej do piatich.
Sme literally-- a nemôžem povedať, to dosť v prvom týždni.
Tri je dobrá.
Takže, aj keď, áno, tri zo z piatich normálne, matematicky,
môže byť 60 percent, alebo ako D mínus.
Tri je v skutočnosti, dobre.
A v skutočnosti, očakávame, že väčšina študentov v triede
odštartovať termín okolo dvojky, trojky a štvorky a.
Pravdepodobne nie toľko päťky.
Nie príliš veľa z nich.
Ale všeobecne začať v že sweet spot v krivke
tak, že postupom času, je to vlastne priestor pre,
a príležitosti pre vyššiu progresie.
Takže, prosím, sa nerovnajú tri s 60%.
Je to oveľa viac než to abstraktné.
Vzorec, s ktorou počítame stupňa sa vážia takto.
Správnosť stojí najviac.
Dizajn je stojí za trochu menej.
Štýl je stojí za trochu menej.
A toto všeobecne zachytáva množstvo času
že ide do dostať každý z týchto osí tak akurát.
Štýl je super ľahko, by mala byť super rýchly,
ale je to jednoduchý zvyk dostať lenivý okolo.
Správnosť môže trvať budete väčšinu času.
Naháňa nejaký bug silu prijať, že ďalšiu hodinu či viac,
a tak, bodovanie nakoniec zachytí to.
A tak teraz vážnejšie slovo.
Vzhľadom k tomu, CS50 má rozlíšenie, pre lepšiu
alebo horšie, že sú možná lepšie zoznámili
s problematikou akademickej poctivosť než väčšina akýchkoľvek iných programov.
A skutočne, to je mi známe, že vyšleme viac študentov, bohužiaľ,
na disciplinárne účely každý rok ako výsledok. Tak,
v záujme plnej zverejňovanie, poďme sa krátko prehovoriť
o tom, čo sa deje v CS50, a to, čo vás môže robiť, a čo môžete mať na pamäti.
>> Takže, tu od roku 2007, kedy Zdedil som kurz,
je počet prípadov Ad rady.
Ad rada je Harvarde disciplinárny telo, alebo teraz Honor Counsel,
, Na ktoré sa odvoláva, keď prípady Študenti niečo urobiť, že kurz je
Osnova považuje za neprimerané.
Nie je tam žiadny skutočný vzor tú, povedal by som.
To kolíše cez rokov, ale všeobecne
to je počet prípady, ktoré sú uvedené.
Počet študentov ktoré sú zapojené?
Je to príliš líši.
Typicky, v minulom roku pre Napríklad, 29 študenti na Harvarde
boli Ad Boarded, aby som tak povedal.
29 z nich sa študentmi prúdu, Dva z nich minulých študentov,
ktorí boli spolupráca nejakým nepríjemným spôsobom.
A potom, pokiaľ ide o percento, je to zvyčajne asi 3%
triedy, ktorá, bohužiaľ, robí tieto druhy rozhodnutí.
>> Takže, v minulom roku to bolo 3,5% z CS50 študentský zbor
to bolo Ad Boarded, aby som tak povedal.
>> Takže, čo to všetko znamená?
A čo vlastne robiť?
>> Takže, pre úplné zverejnenie, my absolútne, as počítačových vedcov,
majú softvérové ​​nástroje máme k dispozícii a to je pre nás veľmi jednoduché, v spravodlivosť,
že ostatné je spolužiaci, ktorí nie sú kríženie tieto riadky prekročiť porovnať
každý podanie tento rok proti každý Podanie žiadosti o posledných osem rokov.
Softvér robí toto.
A nakoniec je to ľudské oči, ktoré sa rozhodnú
či sa má odkazovať nejaký jedno pre ďalšie rozhodovanie,
ale softvér určite pomáha.
A to, úprimne povedané, je dôvod, prečo si myslím, máme tak veľké čísla v CS50.
Nie je to preto, CS50 študenti alebo CS študenti viac
sú všeobecne nič menej úprimný než akékoľvek iné študentmi,
je to len máme nástroje a techniky
, S ktorou sa tento prvý priechod.
>> Ale my strážiť Na všetky tieto veci
rovnako opäť v záujme uznávajúc prácu, ktorá je ich uvedením
v o super väčšinou triedy.
A politika kurzu je na akademickej poctivosti,
aj keď je to banda odsekov dlhý s partiou guliek
že sú snáď dosť čitateľné, to naozaj redukuje byť rozumný.
A to najlepšie pravidlo, ktoré ponúkame vybudovaná v rámci osnov
je to, esencia všetky práce, ktorá vás
predloží kurzu, musí byť váš vlastný.
A skutočne, v takmer všetkých tých, Prípady uvedené pre disciplinárne konanie
bolo to preto, že niektoré študentské raz neskoro noc typicky obrátil svoj kód
cez priamo na spolužiaka, kto potom ho prijala
v celom rozsahu alebo výrazne nich.
>> Ale naozaj, to je v poriadku.
A skutočne, v kancelárii hodiny, papieriky
ste bol odovzdaný, ak ste prišli úradom hodín minulý týždeň povzbudzuje toľko.
Máte úplnú privítal a povzbudil
prerokovať problémové sady so spolužiakmi.
Ak chcete si navzájom pomáhajú pri zakopnutia.
Ale všeobecne pravidlo by malo byť takto, "keď sa žiadosťou o pomoc,
môžete ukázať svoj kód s ostatnými, ale nemusí zobraziť ich. "
Takže, inými slovami, keď som zápasí s niektorými P sadou
a ja sedím tam v jedáleň, alebo v knižnici,
alebo v triede sa snaží nájsť nejakú chybu,
Ja určite ukázať môj kód na mojej obrazovke
sa osoba sediaca vedľa pre mňa, určite personál,
ale aj spolužiak.
Ale v prípade, že riešenie, ktoré môj spolužiak ponúka, je, oh,
Tu stačí sa pozrieť na to, čo Urobil som, že prekročí hranicu.
>> A ja by som si tvrdiť, že je to všeobecne rozumná vec pre väčšinu ľudí
veľmi ľahko rozpoznať líniu.
A tak, pozri osnova pre ďalšie podrobnosti.
A teraz jedným z viac sporné aspekty
z CS50 osnov, že som si myslel, by hovoril v závere tu
je takzvaná klauzula ľútosť.
Tak, tu je všetko drobným písmom.
Ale všeobecne sme videli, počas posledných 8 rokov pluse
že skutočne takmer všetky CS50 je prípady akademickej nepoctivosti
boli dôsledkom práve chudobní rozhodovanie neskoro v noci.
Výsledkom stresu, výsledok nedostatku jedlo, nedostatok spánku,
príliš veľa súpravy P, príliš veľa termíny, príliš veľa záväzkov.
Stres buduje v 2:00 ráno, 03:00 AM, 04:00, s termín rysuje.
Väčšina študentov v týchto prípadoch práve urobil zlých rozhodnutí
že oni by mohli veľmi dobre ľutovať Druhý deň ráno, ak nie minút neskôr,
ale až do minulého roku nedošlo uvoľňovanie ventil, ktorý títo študenti mohli
skutočne otvoriť až skutočne riešiť problém Problém s hlavou bez strachu z bytia
zavedený z vysokej školy vôbec.
>> A naozaj, sme zaviedli táto ľútosť klauzula v minulom roku,
ktorý hovorí, že ak v rámci 72 hodín, tri dni,
kríženie nejaké linky predpísaný v učebných osnovách
prídete tešiť na jednu z kurzu je hlavy a budeme porozprávať sa o tom.
Tam sú ešte niektoré výsledok, na rozdiel od toho, čo je
Bolo hlásené, že naopak.
Tam je ešte nejaká výsledkom, že je žalovateľné priebehom,
všeobecne nulovania a P set alebo prijímanie inú akciu,
ale budeme, samozrejme, zvládnuť to sami, a nie
nájdete je vyššia boli výsledkom môže byť oveľa prísnejšie.
A, samozrejme, zdieľať to, čo sa stalo v minulom roku, v ôsmich rokoch, a teraz
deväť rokov, výučby tohto kurzu a potom, čo hrať sa s rôznymi gombíkmi,
sústruženie rôzne číselníky nad minulosťou niekoľko rokov na akademickej poctivosti,
a keď videl podľa údajov bez zjavného dopad, a to aj prejavy, ako je tento,
to vynesie najlepšie vec sme zaviedli pedagogicky
Za osem rokov spolu tieto linky CS50.
>> 19 študentov pristúpil na základe tohto ustanovenia v minulom roku.
Zobrali sme žiadnu akciu pre sedem z týchto študentov,
určenie, že sú zbytočne starosti.
Nemali, v skutočnosti, prekročili čiaru ,, ale je
Bol to dobrý rozhovor mať však.
My vynulované 11 o skóre ktoré boli predložené.
A v jednom prípade sme sa spýtal sa Študent robiť problém nastaviť.
Ale ešte presvedčivejšie, úprimne, s týmito 19 chatov,
čo bolo oveľa viac ako ja Očakáva sa, že majú, každý z nich
10 minút na možná hodinový, tiež priniesla
na svetlo rad problémov, pokiaľ ide o familiárny otázky, otázky priateľ,
duševné zdravotné problémy že sme sa potom zaoberá,
s študenta požehnanie, bydlisko dekan, alebo priatelia, ani žiadne iné číslo
podporných prostriedkov.
Takže to bol zďaleka jeden najlepších využitie našej doby
a jeden z najlepších intervencií.
>> Vďaka, že povedal, že nemal vstup na rýchlosti detekcie
akademickej nepoctivosti všeobecnejšie.
A trúfam si povedať, túto podmnožinu študentov v minulom roku
bolo demografickú skupinu, ktoré sme predtým nikdy zistená predo
a nikdy spojení s predtým.
A tak, jednalo nádherné príbehy o úspechu
aj keď boli prinesené na svetlo za menej ako optimálnych podmienok.
Takže majte na pamäti ako si urobiť, snáď,
Niektoré chudobné rozhodnutie si neskoro v noci,
že sa pristúpi tak dlho ako študent v tejto situácii
vlastniť a prísť dopredu tak, aby môžeme mať tento druh chatu a vysporiadať sa s ňou
spôsobom, ktorý je vzdelávací, a potom môžeme dať to za nami ďalší deň.
>> Takže bez ďalších okolkov, vezmite hrany z tohto rozhovoru,
dôvod, prečo šteniatka sú hore znamená len preto, aby prelomiť ľady na chvíľu.
A bohužiaľ, oni sú všetci spať, ale to, čo sa malo stať tu
bol každý mal k úctu a trochu relaxovať
po tomto veľmi ťažkom konverzácie.
Ale zrejme som dal šteniatka spať.
Ale keď idete do CS50 je Webové stránky lomítko šteňatá,
môžete dlho pozerať sa na ne celý deň.
Zvlášť možno 2:00, alebo 03:00, alebo 04:00 v noci
vidieť trochu pnutia tam.
Takže to je lomítko šteňatá.
Dobre.
Nebolo to sranda?
OK.
Takže, späť do istej počítača veda, ak môžem.
>> Takže, pripomenúť, že naposledy sme začali pri pohľade nielen na hlavné, čo
bol predvolený funkcie sa pri zelenou vlajkou klikli ekvivalent,
ale sme tiež začali krátko písanie niektoré z našich vlastných funkcií.
A zatiaľ žiaden z týchto funkcií boli osobitne veľký alebo výstižné.
Dostanete do tých väčších funkcia pravdepodobne P set 2, P set 3,
Rozhodne P set 4 a ďalej.
Práve teraz väčšina vašich programov, ak nie všetky z nich, určite pre P
set 1 môže byť vykonané úplne v hlavnej.
Ak je váš program je jediný päť riadkov, 10 riadkov,
dokonca 20 riadkov dlhá, dokonale rozumné písať to
to všetko v hlavnej, a nie na viac než komplikovať váš kód, ale to, čo robíme dnes
a ďalej sa snaží tiež zaviesť nejaké dobré techniky dizajnu
tak, že keď váš kód dostane viac komplikované a ako problémy
Ak chcete vyriešiť dostať ťažšie a zaujímavejšie máte, tak nejako,
nástroje v paneli nástrojov, s ktorými navrhnúť dobré riešenie pre tých.
>> Takže, poďme sa rýchlo pozrieť sa na tento program z môjho minulého týždňa, ktorý
bola funkcia nulový dot C. A Všimnite si, že úplne jednoducho,
vyzerá to, že to s dvoma funkcie, hlavný a názov tlače.
A spomínal alebo možno reverzné inžinierstvo dnes,
čo bolo motiváciou pre zavedenie funkcie v súlade s názvom 28,
názov tlačového?
Alebo čo sa tento príklad v podmienky zásady alebo stánok s jedlom,
ak by ste.
Niektoré hundre.
Čo?
>> Jo, tak Funkčné rozkladu je druh efektný spôsob, ako hovoriť,
rozložiť svoj program do jeho súčasťou
a potom použiť tie časti zostaviť celok.
Tak, to taky je len tak z sústo už,
ale je možná aj lepší príklad niečoho
Práve volal abstrakcie.
Je to tak?
Abstrakcie bude jeden z opakujúcich sa tém v CS50
a tiež počítačové vedy všeobecnejšie, pretože je to
technika, s ktorou môžete vyriešiť Problémy efektívnejšie, pretože vás
môže písať riešenie viac intuitívne a tak, aby váhy
a je pochopiteľné inými ľuďmi.
Čo tým chcem povedať, že?
>> Takže, pravdepodobne to je oveľa čitateľnejší sa pozrieť na program, ako je táto,
extra krátke hoci to je.
Keď vidíte na linke 22, ktorá je tu funkcia nazvaná, názov tlače.
Sám názov hovorí, že to, čo robí.
Táto funkcia zrejme berie Vstup medzi jeho zátvorkách,
a zrejme niečo robí, pravdepodobne vytlačí meno.
A tak, aj keď sme absolútne by mohlo mať
urobil, čo sme robili pred týždňom, ktorý bol Len tento skutočné riadok kódu,
sa zbaviť tohto, a získať zbaviť to všetko dohromady,
sme sa nejako abstrahovať preč pojem tlače meno.
Je mi jedno, či používate tlačové def.
Je mi jedno, či máte S percent a spätné lomítko N. Tieto
sú neuveriteľne tajomné detaily.
Čo mi záleží ako programátor práve tlačí meno.
A tak to, čo lepší spôsob, ako to urobiť, než tým, že volá funkcia, názov tlačového?
A tak, aby bol jeden z motiváciou robiť niečo také.
Sprístupnenie kód čitateľnejší, viac opakovane použiteľné, a tiež vlastné opisný.
A teraz, poďme sa pozrieť na ďalší príklad,
čo bola jedna funkcia, ktoré sme mali tu.
>> Tak, toto je snáď ešte viac presvedčivá, pretože v tomto prípade,
Nechcem len dostať int.
Chcem sa dostať pozitívny int.
A ukázalo sa, aby sa pozitívne int, čo musíte urobiť veľa terénny výskum.
Je to tak?
Nie je to jednoduché jeden riadok zavolajte ako názov tlačového bolo,
čo je síce menej presvedčivé.
>> Ak chcete získať pozitívny int, logically-- dovoľte mi, aby som prejdite späť dole skryť toto.
Čo musíte urobiť?
Rovnako ako všetky nástroje, ktoré majú v okamihu, kedy sú
veci, ako tlačový def od spoločnosti Standard Knižnica a tiež z CS50 knižnice
máme Get Int, a dostať Float, Get Long Long, get String,
ale len jeden, German, práve teraz, je dostať Int.
Takže, ak je jediný nástroj, ktorý má v krabici náradie, je dostať Int,
ako sme sa ísť o vykonávaní to sa dostať pozitívny int?
>> Divákov: Vytvorte protokol a skontrolovať na tom, či je vstup, ktorý dali
bolo pozitívne, alebo nie.
>> Reproduktor 1: Perfect.
Presne tak.
Ďalším nástrojom máme v našej Panel nástrojov z jedného alebo dvoch týždňov pred
je len je slučka konštrukt.
A tak, jo, ak budeme používať chvíľu slučka, alebo robiť, kým slučka, alebo predné
slučka by sme pravdepodobne mohli dostať preč s niektorým z v určitej forme.
Môžeme realizovať predstavu get Pozitívne int len ​​pomocou Get Int,
a potom už len držať volať to Znovu a držať otravovať užívateľa
kým nie on alebo ona vlastne dáva nám, čo chceme.
>> A tak teraz, to abstrakcie procesu
ako sa dostať pozitívny int do funkcie s názvom
Získať Pozitívne Int je trochu viac presvedčivé, pretože sa na to pozrieť.
Sú ako 10 Plus riadkov kódu, ktorý
sú zapojení do získavania pozitívny int, a je mi to naozaj jedno, ako to urobiť.
Všetko, čo záleží, je, že vás Môžete to urobiť, a tak som
skryté všetky tieto údaje za Funkcie s názvom Get Pozitívne int to,
vskutku, má tento robiť, zatiaľ čo slučky.
>> A pozri minulý týždeň pre syntax tam, ale to len deklaruje N,
a to tlačí inštrukcie pre používateľa.
Vyzýva Získajte Int a potom skontroluje opäť tento stav, a znovu,
a znova, až kým sa používateľ spolupracuje.
>> Takže teraz, niekoľko rýchlej kontroly.
Pre tých, ktorí možno oboznámení s niektorými programovania
prečo N deklarovaný, prečo som sa vytvoriť N mimo robiť, zatiaľ čo slučky?
Prečo je to na linke 29 a nie o, ako je 33, napríklad.
>> Divákov: Pretože keď vás deklarovať to vonku, to láskavý
viac, tým väčšia scope--
>> Reproduktor 1: Dobre.
>> Divákov: --and ak deklarovať to vnútri slučky, [nepočuteľných]
pretože sa nevie o tom.
Reproduktor 1: Presne tak.
Keď sa mi podarí simplify-- to je otázka rozsahu pôsobnosti.
A rozsah odkazuje na kontextu v čo je premenná existuje, alebo je použiteľný.
A pekné pravidlom je, že obvykle pri deklarovať alebo vytvorenie
premenné môžete ho použiť iba vo vnútri z najbližších všeobjímajúca zložené zátvorky.
Takže čo to znamená?
Ak by som, namiesto toho, vrátiť späť to a ísť s niečo, čo sa cíti trochu jednoduchšie.
Je to tak?
>> Linka 32 len vyzerá čistejšie pre mňa teraz.
Robím oboje na raz a potom priradením
pravá ruka na ľavej ruke.
Problém teraz založený na že vymedzenie rozsahu pôsobnosti
sa, že N môže byť použitý v riadkoch 31 a 32 vnútri tejto slučky,
ale tam, kde touto definíciou to nemôže byť použitý?
V súlade čo?
Jo.
>> Divákov: 35.
>> Reproduktor 1: 35.
Rozhodne nie 35.
A taky kde inde?
Divákov: 34.
Reproduktor 1: I 34 problematické, pretože je to
mimo zložených zátvoriek.
A tak v skutočnosti, uvidíme, čo sa stane.
Je to tak?
To sa môže zdať trochu intuitívne, alebo možno nie,
ale poďme sa pozrieť, čo kompilátor musí povedať, kedy
ideme do dnešnej zdrojového adresára.
Vykonajte funkciu jeden.
Ach, môj bože.
No, nakoniec som skončil ktorá, mimochodom.
Dobre.
A čo je problém tu?
Veľmi Arcane na pohľad.
Ale tu je to, čo som typed-- aby funkcia jedného.
Tu je to, čo robiť vyvolané, čo je vlastne
pomocou kompilátora rinčanie s niektorými z týchto príznakov
že uvidíme zase onedlho.
A opäť, vždy sa na prvej chybe,
pretože by to mohlo mať len reťazenie bezvýznamný vplyv na iných tratiach.
>> Takže to, čo to znamená, je to, že Problém je vo funkcii 1.c.
To je na potrubie 32.
A to je v stĺpci, alebo znak, 13.
Takže keď váš textový editor, ktorý môže pomôžu určiť, kde je problém.
Takže keď som sa posunúť nahor, čo je linka 32?
To je naozaj tahle že už je zvýraznený
právo here-- nepoužitý premenná n.
Ale nie je to nevyužité.
Ja používam ho.
Ale kompilátora zmätený, pretože že existuje iba vo vnútri tohto rozsahu.
A tak nemôžem použiť tu.
Nemôžem použiť tu.
A kompilátor, a preto, ani jedno, že sa snažím.
Zdá sa, že nevyužité v jeho skutočný rozsah.
>> Takže môžeme rozšíriť rozsah tým, že robí presne to, čo sme začali with-- int n.
A aj keď to nie je vyzerať ako elegantný, snáď,
a berieme ďalší riadok tu, teraz je to čo do rozsahu všade.
Tak poďme skúsiť znova.
Tak, aby funkcia jedného.
Nice.
A teraz, keď ja, keď som bežať funkcie človek, poďme dať to negatívne 10,
negatívny 1, 0, 1, a to naozaj funguje.
>> Takže tam je ďalšie riešenia, sem.
Vieš čo?
Čo ak naozaj som zápasil s tým?
Neviem, kde je n to má ísť.
Vieš čo?
Ja som jednoducho ísť, aby to všetko cesta na vrchole môjho súboru tu.
Čo by to to, čo myslíte?
Jo?
>> Divákov: [Nepočuteľné].
Reproduktor 1: Jo.
Takže som robil to globálny, aby som tak povedal.
Ak máte premennú, ktorá je vonku všetky svoje funkcie, ktoré je povolené,
a kód by mal zostaviť a n budú teraz prístupné nielen v get
kladný int, ale aj v ktorom main-- je trochu znepokojujúce, pretože tam je
už n v hlavnej, tak viac o že za púhy moment--
ale to by bolo považované za zlé konštrukciu.
Dobre.
Ak máte sa uchýliť k niečo ako, oh, ja
len dať to tu, pretože Zdá sa, že kód kompilovať
vo všeobecnosti nie je najlepší praxou.
Skôr chcete zvoliť najužšia možný rozsah
pre premenné, čo by znamenalo, deje s našou počiatočného návrhu, ktorý
je tu.
>> Teraz ako stranou, keď ste máte identicky pomenované variabilný tu,
cesta c by zvládnuť tohle-- aj keď sa to nestane príliš often--
je to, že je to stále úplne v poriadku tu.
Avšak táto definícia n v súlade 22 bude tieň globálneho jeden.
Tak toto bude fungovať v rámci hlavné, a celosvetový
bude skutočne platiť, keď ste v získať pozitívne int Ale o tom viac
inokedy, ale len pre tých, zvedavý.
>> Takže v skratke, sme opraviť tu.
Teraz poďme srandista oddelene dva iné kusy Než sa pozrieme na poslednom riadku kódu
v tomto programe.
Získať pozitívne int.
Na ľavej strane jeho slovo je slovo int.
Čo to má znamenať si o tom myslíš?
Doteraz sme videli hlavne neplatné.
Jo?
>> Divákov: Je to typ premenná, ktorá sa pýtate.
>> Reproduktor 1: Jo, je to ten typ, dovoľte mi, aby som Nepovedal variabilné, ale typ hodnoty
že sa pýtam späť.
A naozaj, to je tu intuitívne, snáď.
Je to tak?
Ak chcete získať kladný int, čo je to vás
chcú function-- Rovnako ako naše dobrovoľníci z minulého týždňa
Tá vám odovzdá späť kus papiera s int na to?
A tak sme sa spresniť, že takzvaný návrat typ tejto funkcie
je získať pozitívne int.
Ak by sme nechceli, aby to vrátiť niečo, hovoríte neplatné.
Ak chcete, aby sa vrátiť reťazec, hovoríte reťazec.
Ak chcete, aby sa vrátiť float, hovoríte plávať.
Ale jediný, kto to platí tu logicky, pretože som pomocou get int,
aj keď som ho obmedzovali na pozitívne hodnoty, je vrátiť int.
>> Tak naopak, čo to znamená že je tu prázdno v zátvorke?
Čo zátvorky všeobecne definovať?
Jo?
>> Divákov: To znamená, že funkcia je nie je vlastne márne.
>> Reproduktor 1: To znamená, že funkcia je nie je vlastne dostať to, čo?
>> Divákov: Vstup.
>> Reproduktor 1: Vstup, vôbec.
Takže naozaj, pokiaľ zátvorka Tu zadáte neplatné,
to len znamená, že nechcem žiadny vstup.
Budem jednať s problémom sám.
A naozaj, vy nemusíte povedz si pozitívny int nič.
Stačí povedať, dostať pozitívne int, a že funkcie zhasne a robiť svoju vec.
>> Ale tam bol malý trik som Hrali tu celú túto dobu
aby sa ubezpečil, tento kód je zostavený.
Všimnite si, že int-- dostať pozitívne int void-- je vedením 27.
Ale z nejakého podivného dôvodu zdanlivo to je tiež tu na linke 16.
A len pre istotu budem opakovať to tak je to úplne identické.
A ja som povedal prototyp s trochu jednoriadkový komentár.
Čo sa stane, keď odstránim, že, a Teraz spustite, aby funkcia 1, zadajte.
Jejda.
Počkaj minútu.
Kde je moja karta?
Huh?
Standby.
Vykonajte funkcie 1.
Tam sme ísť.
OK.
Vari chytá správne.
Takže si myslím, že je to trochu bug tu, kde si nie som
videnie na názov záložky v tejto chvíli.
Takže to, čo sa tu deje?
Implicitné deklarácie funkcie získať pozitívne int je C99 neplatný.
Takže znovu mätúce.
Takže to, čo je to svedčí o?
No, to ukáže, že C je celkom hlúpe.
No, je to programovanie jazyk, alebo skôr kompilátor je.
To vie len to, čo máte učil ju, a je to len
bude niečo vedieť pokiaľ ju učil predtým.
Inými slovami, v hlavné v tejto chvíli, ja som
pokusu o volanie funkcie volal získať pozitívne int.
Ale kompilátor nebude si uvedomiť, že dostať pozitívne int
existuje do potrubia 26.
A tak to, čo robí, je len kompilátor Chyby, akonáhle sa dostane do riadku 17,
hovorí implicitné vyhlásenie o získanie pozitívneho int, ktorý
je len fantázia spôsob, ako hovoriť, nemám viete, čo dostanete pozitívnu int je doteraz.
>> Iné jazyky, ako je Java a Python a Ruby môže vyzerať dopredu.
C nie je.
A tak, ako sme opraviť toto je jeden z dvoch spôsobov.
Buď jeden, v prípade, že problém je, že sa Pozitívne int nebol videný predtým,
No, dovoľte mi, aby som ho len presunúť až na vrchol.
To by tento problém vyriešiť.
Ale všeobecne, to je považovaná za lepšiu techniku
aby váš hlavný funkcie u veľmi top tak, že človek čítanie vášho kódu
vie, čo program robí, preto, že hlavné nie je pochovaný všetky
ako v spodnej časti, alebo v stredu.
Je to na samom vrchole.
Tak, že necíti ideálne.
A môžete skutočne dostať do situácie, kde
ak volanie funkcií ďalšie, ktoré si vyžaduje ďalšie,
sa môžete dostať do problému, kedy ani jeden môžu ísť nad druhým, logicky.
Je to jednoducho nie je možné.
>> A tak sa spôsob práce okolo je to len vziať
Podpis funkciu, takže sa speak-- prvý riadok, kde je declared--
a len kopírovať, vložiť ho u top, ale nie s kučeravými braces--
Len sa bodkočiarkou.
Je to ako malý náznak z toho, čo má prísť.
A v skutočnosti, všetky tieto čase, keď Videl veci, ako štandardné IO.H
a cs50.h, podobne, v tých dot h súbory sú tam ďalšie prototypy.
A my budeme vidieť, že onedlho.
>> Takže v skratke, keď máte program v súbore s viacerými funkciami
Okrem hlavnej, skoro vždy chcú, aby ich deklarovať
len tým, že spôsob ich najprv linka, nasleduje bodkočiarka,
na samom vrchole časti súboru.
To bolo veľa naraz.
Nejaké otázky?
Dobre.
>> Takže poďme ďalej potom na niečo ako kašeľ.
Aha.
Ako priliehajúce.
Dobre.
Kašeľ.
Takže tu je c realizácie programu
sme sa na druhý deň v Scratch, že len veľmi jednoducho len
hovorí kašeľ, kašeľ, kašeľ.
Dobre.
A niekto povedal pár dni, že je tu
spôsob čistenia tento kód do už.
Dobre?
Akonáhle ste kopírovanie a vkladanie pravdepodobne zlý dizajn.
Najmenej raz sa dostaneme na štyri alebo päť alebo 20 kašľa, to je zlá prax.
Práve sme sa držať kópiu, vkladanie.
Čo je samozrejmé riešenie na čistenie tohto programu up?
>> Divákov: Loop.
>> Reproduktor 1: Jo.
Takže pomocou opakovania.
A môžeme použiť pre-slučky, chvíľu slučka, ľubovoľný počet prístupov.
A naozaj, to je to, čo robíme v jednom verzii tu.
Ja som namiesto toho prepísať ju vo verzii jedného z cough.c
že je len kašeľ v rámci pre-slučky.
Dobre, ale je tu príležitosť teraz druhu štartu
navrhovať to trochu viac ako ponaučenie sme učili pred chvíľou,
čo je tohle-- predpokladám, že som chcel na vytvorenie funkcie nazýva kašeľ,
uvažujme len na chvíľu čo to bude vyzerať.
Takže ak chcem niečo ku kašľu, ja len potrebujem
použiť tlačové f vnútri funkcie.
A skutočne som.
A v skutočnosti, to všetko čas, kedykoľvek budete
tlač niečo obrazovky, programátor
by volal, že vedľajší efekt.
To nie som ja podával späť niekto hodnota.
To som ja, pričom niektoré akcie to by mohlo byť vizuálne zrejmé.
Ale táto funkcia kašeľ, to vrátiť čokoľvek založený na jeho prvom riadku?
Nie, pretože jeho návratový typ je neplatné, čo znamená len
to nie je mi podával nič späť.
To by mohlo byť niečo robiť vizuálne, ale to mi podával
späť kus papiera, ako minulý týždeň.
>> Má to potrebovať žiadny vstup?
Nie.
A tak to je neplatný aj tu.
Takže aj toto je druh over-engineering tento problém.
Je to tak?
Som urobil program viac komplexné, viac riadkov kódu,
Nemám robil to niektorý viac funkčné, ale toto
by bola odrazovým mostíkom, Možno, pre širšie
kontext s zložitejšie kódom.
Ale čo to?
Čo som done-- práve pozrel na to bez pohľadu na komentár
na samom vrchole file--, čo majú Zásadne som tu urobil s mojím kašeľ
implementácia, ktorá je niečo iné?
Jo, v chrbte?
>> Divákov: Nech je to, takže môžete majú charakter vypnúť.
Reproduktor 1: Jo.
Takže to cíti celkom pekné.
Je to tak?
Je to ako pridanie funkcie do svojho Program alebo vaše funkcie, v tomto prípade.
Je to stále vráti nič.
To by mohlo mať vizuálne vedľajšie účinky, pretože je to volá tlačový f.
Ale teraz som parametrized funkcia, ktorá
znamená, že ste zadali vziať vstup typu int a nazývať to n,
ale to by som mohol hovoriť, čo chcem.
V skutočnosti je to môže byť len časy byť dokonca viac explicitné.
A potom som mohol len zmeniť tu.
Ale ide o to, že to je, ako som vytvoriť funkciu, ktorá zoberie vstup.
A ak si spomínate mizerný cez snáď online v jednom
z Walk-prienikov sa Štvrtý a posledný príklad kašeľ,
si všimnete, tu som zovšeobecniť môj kód further-- trochu roztržitý
ďalej.
Rovnako ako kašeľ a kýchnutie, obaja sú asi ako povedať, niečo, alebo robiť
nejaký druh zvuku.
Uložte by zodpovedajúce Scratch blok.
A tak to, čo som robil v tejto verzii, ktorý môžeme práve pohľad na,
je kašeľ je ako hovoriť, [kašeľ], kašeľ, a medzitým, kýchanie je
ako hovoriť, [Achom].
A tak som zovšeobecniť vykonávanie týchto
Od tejto chvíle sa vykonáva Táto kmeňová funkcie,
hovoriť, čo je zaujímavé pre dnešné účely
len preto, že stále nemá návratový typ.
Ale koľko vstupy to má?
Divákov: Two.
Reproduktor 1: Two.
A tak ak chcete trvať dva argumenty,
Len oddeľte ich čiarkou.
A ak chcete, aby potom volanie tejto funkcie,
Všimnite si, že ste práve volajte povedzme, citujem, koniec citátu,
Ako prvý argument, časté n, pre druhý argument.
Takže znovu, len musíme teraz stavebné kamene tak, že môžeme vlastne
realizovať niektoré z našich vlastných funkcií.
Dobre.
Akékoľvek otázky týkajúce sa týchto?
>> Takže teraz poďme zlúpnite vrstvu, ak tak.
A cieľ, nakoniec, je budúci týždeň problém set
bude na cryptogrophy-- umenie kódovanie informácie.
A zvlášť, informácie ťa bude kódovanie alebo dekódovanie
bude textu.
A tak ten druh pozýva Otázkou dnes podobne dobre,
čo sa deje pod kapotou s textom mimo ASCII z týždňa nula,
a ako môžeme vlastne začne manipulovať s ním?
Takže tu je Zamyla meno.
A v texte, ktoré by mohli byť zadané do ako funkcia GET reťazca.
A od tejto chvíle, keď vidíte string ako tohle-- Z-A-M-Y-L-je--
začať premýšľať o tom, ako by každý z týchto znakov je v krabici jej
vlastné.
A naozaj, za týždeň alebo tak to čas, pričom každá z týchto krabíc
bude reprezentovať veľmi špecificky blok memory-- sústo pamäte.
Takže každý z týchto písmen, nakoniec, bude reprezentovať 8 bitov.
A my budeme skutočne vidieť, čo sa deje Na pod pokrievku v mojom počítači.
>> Ale za to, že postačí stačí sa pozrieť na Zamyla
touto optikou, pričom každý z tieto písmená je v jeho vlastnom poli.
A dosť pekne v C môžeme prístup každej z týchto krabíc priamo.
Takže ak chcete získať prvý List jej mena, super ľahké v C.
Ak chcete získať posledný List, super jednoduché, ako dobre
s kusom novou syntaxou.
>> Takže budem pokračovať do CS50 IDE a otvoriť reťazec nulový bod C.
A v tomto prípade, je tu pár nových vecí deje.
Takže najprv v rade 19, máme videli túto before-- get reťazec.
Takže rovnako ako rýchlu kontrolu sanitačného, keby niekto mohol ponúknuť až slovne
vysvetlenie laik z čo sa deje v rade 19.
Rovnako ako práve to preložiť do Angličtina, že spolubývajúci nie je CS50
by mohol rozumieť.
Jo.
>> Divákov: Mať užívateľského vstupu A reťazec a uložiť ho do variabilný s.
Reproduktor 1: Dobre.
Majú vstup používateľa reťazec a uložiť ich v premennej s.
To je skvelé.
A tak na pravom side, hovoríme get reťazec.
To vracia hodnotu že nedostal pridelené
z pravej strany na ľavú ruku strana do premennej s názvom S, ktorá je
určený na ukladanie reťazec.
Presne tak.
>> Takže teraz potrubím 22, per komentár na riadku 21,
samozrejme vytlačí tento reťazec jeden znak za riadok.
Ale ako?
Takže v prvom rade, sme inicializovať som sa 0.
A potom ako sa dostaneme do koniec Zamyla mená?
No, na konci roka Zamyla meno, mohol by som
ručne zadať v poslednej znak jej meno nejako, alebo počet na to.
Je to tak?
Ak by sme sa vrátiť here-- Z-A-M-L-- Y-L-je--, takže som mohol písať.
Čo je index Posledné písmeno Zamyla je?
Ak je to 0-- hovorí sa ako programmer-- 0, 1, 2, 3, 4, 5,
Aj heard-- tak naozaj, posledné písmeno V Zamyla mene je šiesty,
ale ak budeme počítať od 0, že to bude číslo 5.
Takže majte na pamäti, že tu.
>> Ukazuje sa, že je funkcia v C zavolal strlen, a späť v deň
a k tomuto dňu ešte, veľa programátorov
rozhodnete synchronizovať mená pre ich funkcie, ktoré znejú ako slová
že sa snaží povedať.
Takže strlen je dĺžka reťazca.
A tak to, čo by sa dĺžka reťazca S vráti, až Zamyla je vstup?
>> Divákov: Five.
>> Reproduktor 1: Z-A-M-Y-L. Six.
Je to tak?
Aká je dĺžka Zamyla mená?
Je to tak?
A práve v skutočnosti, šesť písmen.
Je to tak?
A tak čo to znamená pre našu slučky?
Chystáme sa ísť od 0 až šesť, ktorý
sa chystá dať nám päť iterácií.
Čo budeme robiť na každej iterácii?
No, percento C, niekto odhadoval, že druhý deň,
znamená zástupným symbolom pre čo?
>> Divákov: Char.
Reproduktor 1: Len char.
Takže jediný character-- nie viac znakov, ako reťazec.
A potom tu je nová rada že máme vytlačiť.
A potom tu je nová syntax.
Ak chcete vytlačiť i-teho znak v reťazci S, aby som tak povedal,
môžete jednoducho povedať, Názov reťazca S,
a potom otvorte hranatú zátvorku, a zavrel zátvorka, s i
stred.
A je to celkom pekné, že to trochu vyzerá ako štvorec
rovnako ako na námestiach, v ktorých je Zamyla znaky existujú na tamtej obrázok.
>> Takže keď som sa vlastne spustiť tento Teraz sa pozrime, čo sa stane.
Urobiť reťazec 0 dot lomítko Reťazec 0, a potom som
chystá zadať Zamyla mene.
Neexistuje žiadna výzva, pretože som nemal používajte tlačové f, ale to je v poriadku.
Ja len viem, čo mám robiť.
A skutočne, to vytlačí Zamyla meno, na každý riadok jednu.
>> Teraz buďme trochu ľahkomyseľný.
Predpokladajme, že som nevedel, o strlen a ja som prišiel,
v poriadku, nikto to bude mať meno väčší než ako 50 znakov.
Poďme ďalej a překompilovat to a spustite ho, a potom zadajte Zamyla
znova.
Logicky, čo je Program bude snažiť k tlači?
Z-A-M-Y-L-A potom, ako 45 neznáme bajtov pamäte.
A skutočne, budeme vracať k tejto myšlienke pamäti.
Ale len logicky, ak Zamyla meno je tak dlho,
podľa obrázku tu, čo hovoríme
je pokračovať v tlači, pokračovať v tlači, majte tlač, pokračovať v tlači, pokračovať v tlači,
celú cestu až do 50. charakter, čo kto vie, čo sa bude diať.
Takže poďme vlastne sa pozrieť.
Poďme zadajte Zamyla.
Zaujímavé.
Mali sme šťastie.
Len celá partia biele miesto.
Aha.
Je tu ešte jedna funky znak.
Vyzerá to trochu ako podivný otázka označiť tam, ale tam je Zamyla meno.
Poďme naozaj nezodpovedné.
Čo keby sme vytlačiť 500 blokuje do neznáma?
Poďme ďalej a robiť to ako dobre a potom znova spustiť.
A poďme na celú obrazovku, pretože musíme vidieť viac priestoru.
Zamyla.
Mám opäť šťastie.
>> Dare dostaneme viac ľahkomyseľný?
Poďme viac ľahkomyseľný.
50,000 znaky.
To je najviac rozhodne nie je dobrý nápad.
Dobre.
Vykonajte reťazec 0.
To bude naša posledná demo.
Zamyla.
Uff.
OK.
Takže moja pamäť je naozaj prázdna práve teraz, čo je vlastne trochu pohodlnejšie.
Snažím sa dostať to-- v poriadku.
A teraz som jednoducho ísť dostať bezohľadný.
500000.
Make-- poďme plnú-obrazovku to.
Enter.
Zamyla.
Tam sme ísť.
Nemám potuchy, čo to Je, ale znie to zle.
Dobre.
A v skutočnosti, skoro, ak ste medzi Šťastné nemnoho v úradných hodinách
a v probléme nastaviť jednu, vás môže veľmi dobre stretnúť toto.
Porucha Segmentácia vlastne robí majú dobre definovaný význam.
Znamená to nejaký omyl vzťahujúce sa k segmentu pamäti.
A v Laicky povedané, to znamená, že sme sa dotkli
memory-- sme použili RAM v mojom počítači že by som nemal prístup.
A to je to, čo ich oboch výkonné a tiež nebezpečné
o C, je, že ste skutočne majú neobmedzený prístup
na celý rozsah pamäte programu alebo bajtov alebo RAM, konkrétnejšie.
>> Takže aj keď Zamyla mená je dlhá iba šesť znakov,
Stále môžem ísť kamkoľvek v pamäti chcem.
A ako stranou, ak ste niekedy čítal nejaký článok
v priebehu rokov o niektorých servera alebo nejaký program
prasknuté alebo dostať nabúral to je využili niečo
volal buffer overflow exploit, že budeme v skutočnosti
hovoriť o tom, za pár týždňov, to je všeobecne odkazuje na nejako podvádzať
počítač do poriadku za hranice pamäte
že by mal mať, a nájsť niečo šťavnaté
v tom, že memory-- heslo, možno cesta
obchádzanie nejaké sériové číslo skontrolovať, alebo len všeobecne schopní
prinútiť počítač vykonávajúci kód, ktorý nebol určený.
Ale poďme sa vrátiť do reality na chvíľku
kde tento program bol implementovaný s strlen,
a zaviesť jednu vec tu.
Čo je nové u týchto špičkových troch riadkov?
>> Takže reťazec bodka h.
Ukázalo sa, že je to knižnica s názvom String Dot H, alebo reťazec Knižnica,
ktorej súbor hlavičky, aby som tak povedal, je reťazec bodka h, ktorý mi dáva
Prístup k tejto funkcii strlen.
Ak pominiem to, že kompilátor je bude kričať na mňa v nejakej forme.
Ale viete čo?
A teraz poďme naozaj nuáns.
V súlade 22, je tu niečo, čo druh z inefficient-- zle navrhnutý,
arguably-- o tomto riadku kódu.
Spomeňte si na to, ako pre-slučky sú implementované
a aké kroky sa to stalo znova a Znovu a again-- inicializácia,
stav, kód, ktorý dostane vykonaný, potom prírastok
alebo zmena, potom sa podmienka, potom kód, potom je zmena, potom
stav, potom je kód, potom je zmena, a tak ďalej.
Takže to, čo by mohlo byť trochu znepokojujúce alebo tu zle urobil?
Jo, v modrej farbe.
Publikum: strlen je volal mnohokrát.
Reproduktor 1: Jo.
Tak strlen sa nazýva mnohokrát, ale to, čo je
dĺžka Zamyla mená na Prvýkrát slučky vykoná?
>> Divákov: Six.
>> Reproduktor 1: Six.
No, a čo je dĺžka jej mena druhýkrát kód spustí?
>> Divákov: Six.
>> Reproduktor 1: Dobre.
Stále je to šesť.
Je to tak?
Žiarli meno nemá zmenili, aj keď sa pozerám
len na časť listov v jej mene.
A tak skutočnosť, že som skutočne nie som dotazom na túto otázku, čo je
dĺžka Zamyla, čo je dĺžka z Zamyla, čo je dĺžka Zamyla,
šesť samostatných časy, alebo seven dokonca, je jednoducho hlúpe,
pretože to je nemenná, že odpoveď.
A tak to, čo som mohol vlastne urobiť, je tohle-- v reťazci jednom
Mám tu okrajovo lepšiu verziu.
There-- whoops-- reťazec dvoch mám okrajovo lepšia verzia, kde
Ja tohle-- miesto len inicializácii aj na 0, aj ja s čiarkou
deklarovať druhú premennú s názvom n- Ja nemusím hovoriť int znova.
By som nemal, v skutočnosti.
Ale ja hovorím n.
A potom som sa inicializovať n strlen n, tak, že teraz
koľkokrát to strlen vykonaný celkom?
Len raz.
A tak to je to, čo máme na mysli skôr o lepšom prevedení.
V skutočnosti, akonáhle je váš kód je správny, vracať a premýšľaní,
mám používať tak málo, pamäť alebo ako pár sekúnd
alebo milisekúnd počítačového času as možné realizovať nejaký problém?
A budem posúvať up a len spomenúť
že tam je táto zmienka null v tejto verzii,
ale vrátime sa, že onedlho.
Pretože teraz, poďme sa pozrieť na to, kde to bude, aby nás viedol.
Takže človek, sa ukazuje, že Teraz, keď máme možnosť
sa pozrieť na jednotlivé znaky, môžeme využiť niečo
od týždňa 0, ktorá bola veľmi tajomný a nejako nezaujímavé v tej dobe.
Ale teraz, a to najmä, keď sme dostať sa do kryptografia v týždni,
že to bude dosť silný.
Ukazuje sa, že niektoré údajmi types-- ints a pláva
a znaky a reťazca a iné things-- niektoré z nich
môže byť veľmi ľahko previesť na inú.
>> Napríklad, keď sme spolu hovorili o ASCII nejaký čas ago-- tady
Veľké písmená cez M, bodka, bodka,
dot-- sme hovorili, že tam je mapovanie medzi týmito písmenami a číslami.
A v skutočnosti, je pravdou, pre malé písmená, rovnako.
Malé písmo a je 97, hlavné mesto a je 65.
A je tu číslo v ASCII, čo je práve táto mapovanie
systém pre všetky tie ostatné listy.
Takže čo to znamená?
No, ja idem ďalej a otvorená Real rýchlo niečo, čo nazýva
ASCII 0, z ktorých väčšina je komentár.
A opäť on-line môžete vždy pohľad cez komentáre.
>> A pozrite sa, čo to bude robiť.
Tak je to tu hlavnú funkciu.
Ja som pevne čísla len pre teraz, pretože viem, čo robím.
Viem, čo chcem vidieť tu.
A ja som inicializuje Aj 65 rokov.
A ja som počítal hore cez 26 písmen celkom.
A čo mám vytlačiť jeden riadok naraz
ak môžete interpretovať Táto skúsenosť zvýraznila linku?
Čo sa vytlačí?
Jo.
>> Divákov: Chystáš vytlačiť list, ktorý
odpovedá na mapu z List hodnoty a celočíselná hodnota?
Reproduktor 1: Presne tak.
Chystám sa vytlačiť list zodpovedajúce celé číslo,
a naopak, a to nasledovne.
No to, niekto povedal predtým, je len zástupným symbolom pre char.
Je to ešte je.
To, samozrejme, je zástupný Aby bola int-- nie je nový riadok.
A teraz si všimnúť, môj prvý hodnotu, ktorá Som zasunutie pre tento zástupný symbol
nie je len ja hovorím, v zátvorke, char I,
ktorý v zátvorkách je char hovorí kompilátora, liečiť I
nie ako to, čo je to, ktoré je číslo.
Považujte to za skutočné postavy.
Vzhľadom k tomu, druhá hodnota som upchávanie in-- Já-- by mal byť len číslo.
>> Takže keď som skompilovať program-- tak toto je urobiť ASCII 0,
dot lomítko ASCII 0-- som len získať Tento šikovný malý graf, ktorý
Ukazuje mi všetky možné mapovanie, bez toho aby si to
skrz alebo na to prísť sám.
A ja som tiež vytlačenie, Všimnite si malé písmená,
preto, že pár riadkov neskôr som tiež vytlačiť toto mapovanie
rovnako, čo je len hovoria, že akonáhle pochopíte,
čo sa deje pod kapota, môžete
automaticky konvertovať tam a späť.
A v skutočnosti, ak niekto z vás kedy urobil to na základnej škole
alebo počul o niekom mýtický prijatie poznámku
a jej odovzdanie k jeho alebo jej priateľ v triede,
ale miešaná listy od podobné ako vo stane B,
a B sa stáva C, alebo tak niečo zložitejšie než to, dobre,
ako by ste ísť o ktorým sa vykonáva, že ako dieťa?
No, to jednoducho viem, Â B, B sa stane C,
ale matematicky, čo sa ten chlapec robí?
Čo ste pridanie do každého listu?
Účinne, 1.
>> Takže keď zmeníte A do miesta B, to je niečo ako meniace sa 65 až 66,
čo znamená, že matematicky len pridať 1.
A tak ak ste boli realizovať ten malý klamný technika
pre učiteľov v kóde, budete mohli robiť presne to, že práve
pridaním jedno písmeno spoločne.
Takže ako dlhý, my sme uvidí, ako
môžu využiť, ktoré skutočne skutočne ťahanice a dešifrovať
informácie.
Do tej doby, viem, že sme začali predstaviť pár iných knižníc
here-- Reťazec jeden dnes.
A veľmi užitočné stránky dúfajme, že zistíte,
sa nazýva reference.cs50.net, ktorý pedagogickí pracovníci dali dohromady,
takže ak chcete vyhľadať ako strlen práce,
môžete začať písať Meno Funkcia je,
kliknite na tlačidlo strlen tam, a potom menej komfortné vysvetlenie
sa chystá objaviť.
Alebo ak chcete úradník Linux-založené vysvetlenie,
môžete kliknutím na tlačidlo viac pohodlný v pravom hornom rohu, a to
bude prezentovať rovnaké informácie, ale v zložitejších podmienok.
To je užitočným zdrojom pre skutočne vedieť, čo všetko robí.
>> Nabudúce budeme sa pozrieť na Ovaltine
a ďalšie, a predstaviť sami seba do sveta kryptografie.
Do tej doby, uvidíme neskôr tento týždeň.
A teraz, Colton Ogden.
Uvidíme sa v stredu.
>> [Prehrávanie hudby]
>> Reproduktor 1: Čo [Pípanie] robíš?
>> Reproduktor 1: Ja som jesť svoj dezert?
Ako sa vám to jesť?
S rukami?
>> [Prehrávanie hudby]