>> SPEAKER: OK, deci, tu nu-l va crede, dar saptamana trecuta, luni, în Pierce, I
a fost în jos la subsol.
Nu merg la Pierce.
Și eu nu mă întorc din nou, pentru că Am lăsat lucrurile singur,
cum ar fi, cinci minute și cineva mi-a furat calculatorul meu și meu
telefon din rucsacul meu.
Ceea ce înseamnă că am luat înapoi, și apoi mai puțin de o săptămână mai târziu
l-au furat din nou.
>> Și apoi l-am pornit -
Find My iPhone continuă pentru a fi nefolositoare.
Așa că am continua să încurajeze nu să-l folosească.
Sa dovedit pe o dată, și a fost în MIT, ca 15 minute mai târziu, iar persoana
numit acest număr de telefon care a arătat în AT & T jurnalul meu apel.
>> Așa că m-am dus on-line, numit ca telefon număr, și sa dus direct la acest
robot telefonic în limba spaniolă.
Și nu am auzit de ea de atunci.
Așa că am avut de a obține un nou computer și telefon.
Știu.
Da.
Dar dacă vreți să cip în a mea fond de calculator după aceasta, de aceea
Te-am chemat aici.
Glumeam.
Dar care a fost foarte trist și traumatic.
>> Dar totul e înapoi acum, și care a fost motivul -p set 8 durat atât de mult, deoarece
Nu am avut un calculator.
Și cineva a furat-o.
Și eu prin e-mail, cere, dacă acestea ar fi clasa a 8-set-p dumneavoastră.
Dar au spus nu.
Și am fost ca, pot avea computerul meu înapoi?
Și ei sunt ca, nu.
Glumeam.
>> OK.
Aceasta este secțiunea finală, și am un cuplu de - avem doar trei
lucrurile de pe ordinea de zi.
Vom vorbi un pic despre ghidul Q.
Apoi ne-am de gând să-și petreacă 15 de minute pe un demo rece.
Apoi, vom spune tot la revedere unul de altul.
Nu aveți cu adevărat nevoie de computere sau un stilou sau hârtie pentru a lua notițe, sau
urmați de-a lungul.
Deci, eu presupun, dacă aveți computerul în sus, atunci esti pe Facebook.
Doar spune.
Daca nu esti completarea Ghid Q, care este primul.
>> Ghidul Q este deschis.
Ai avut un e-mail cu privire la aceasta.
După ce toate lucrurile Q se depune la sfârșitul anului, am obține toate
Comentarii Q în scorurile din toată lumea care alege să-mi dea un feedback.
Așa că atunci când te duci în Q -
Nu știu dacă pot face asta, Jeff, pentru că ești și student de extensie.
Dar când te duci în Q, dacă nu aveți făcut-o înainte, alegeți dvs.
profesor, care este David Malan.
Trebuie să-l facă.
>> Și apoi puteți alege TFS.
Și tu poți alege cât mai multe TFS, după cum doriți.
Dar există 60 de noi.
Nu trebuie să alegeți toată lumea.
Puteți alege doar pe mine, sau pur și simplu alege un alte persoane cuplu, dacă doriți, să
să le dea feedback-ul la fel de bine.
Și atunci veți obține scoruri la toate acestea axe diferite, și apoi puteți pleca
le feedback.
>> Și apoi, ca o lună mai târziu, Voi lua tot ce feedback-ul.
Și la fel ca feedback-ul le-ați fost să-mi dea de-a lungul semestrului, am
citeste tot de asta.
Și este într-adevăr util, și-l ajută mi cresc ca profesor și ca un
individuală.
Deci, vă rog, să ia ceva timp să o facă.
Suntem doar de gând să fie aici pentru, cum ar fi, 30 de minute.
Deci, dacă doriți, la sfârșitul acestui, la ia cinci minute, și doar să completați
Q, deoarece nu ia orice mai mult timp decât asta.
Asta ar fi minunat, și tu, de asemenea, obține note înapoi mai repede în cazul în care
vă completați Q.
>> Deci, cele mai multe dintre voi ați făcut asta înainte -
sau nu, aproximativ jumatate din tine au făcut asta înainte.
Dar daca esti un student în anul întâi, asta e ceea ce este.
Va fi la fel pentru toate clasele.
Fă-o.
Este nevoie de cinci minute.
Dar, de asemenea, dacă o faci un pic serios, că nu e cel mai rău lucru
în lume, pentru că eu cu siguranță ia-o în serios.
>> Deci, dacă mă lași o fata zambitoare, Eu va aprecia asta.
Dar mi-ar aprecia, de asemenea, dacă mi-a lăsat mai mult de o fata zambitoare.
Dar este de până la tine.
Eu nu pot să vă spun - sau ca un smiley mare se confruntă, cu un capital D. Asta ar
fi chiar mai bine.
>> OK, asta e tot ce am pentru Q. Dacă Pentru orice întrebări, puteți cere
mine, dar destul de auto-explicative.
Doar, te rog, o completați.
Mi-ar aprecia cu adevărat, și aceasta înseamnă foarte mult pentru mine.
>> OK, asta este ceea ce am de gând să-și petreacă 15 minute trece prin.
Am de gând să-ți arăt ceva cod.
Cred că acest lucru este foarte cool, și acest lucru mi-a luat mai mult
entuziasmat în informatică.
Deci, eu sper că va face aceeași pentru voi toți.
>> Vom deschide - și toate acestea Codul voi trimite la tine mai târziu.
Dar suntem doar de gând să se deschidă -
Sunt în terminalul meu -
vom deschide acest program numit [? MySum. ?]
>> Poate toata lumea citit, sau ar trebui să facă mai mare?
Poate cineva să-mi spui ce acest cod va fac atunci când am alerga, sau ceea ce acest
Programul se va face atunci când am rula?
>> [? Avi,?] Ce crezi este de gând să faci?
Finisaj de mestecat.
Nu ar trebui să vorbim cu gura deschisa.
>> Audiența: Are ia o grămadă de argumente, găsi suma de ei se întorc
sumă, și apoi imprimați-l?
Sau este nevoie de două argumente, și apoi se face [neauzit].
Și apoi se imprimă din orice rezultatele sunt.
>> SPEAKER: Close, foarte aproape.
Vrea cineva să adauge la [? ce Avi?] spus?
Ai nevoie pentru a da acest program orice argumente în linia de comandă?
>> Audiența: Nu.
>> SPEAKER: Nu.
Ce se întâmplă dacă nu-l dau orice argumente în linia de comandă?
Doar scriu punct MySum slash.
>> Audiența: 1 plus 2 egal cu 3.
>> Difuzor: 1 plus 2 egal cu 3.
Și se va tipări asta.
Asta-i exact corect.
Veți vedea că de imprimare f linie în partea de jos.
Se va imprima o, b, și atunci suma dintre a și b.
Și cred că voi presupune că Suma funcționează corect.
Bună presupunere.
>> OK, și ce se întâmplă dacă am da ce argument?
[? Manu? ?]
>> Audiența: Se va adăuga orice primul argument este de b.
Sau la 2, îmi pare rău.
>> SPEAKER: Dreptul, la 2.
Stie cineva ce strtol face?
Este practic atoi.
Atoi este de fapt o versiune de lux a -
sau o versiune mai simplă a strtol.
Dar se foloseste de fapt strtol.
Și am aflat asta pentru că am vrut ceva de genul atoi, iar apoi, când am
a atoi, am citit pe aici.
Și am găsit "acest comportament este la fel ca "strtol.
Deci, este practic atoi pentru toate punctele de vedere.
Și veți vedea chiar am folosi nul și 10.
>> Acest fapt vă permite să ia un șir de caractere, și-l transforma într-un număr, și alege
ce baza vrei să o faci inch
Deci, aceasta este baza 10 chiar aici.
Am fi putut face de bază pentru două zecimale, de bază 16 pentru hexazecimal.
Este destul de cool.
Dar pe scurt, această nevoie de doi numere și le adaugă împreună.
>> Deci, haideți să-l rulați.
Și veți observa, de asemenea, acolo sunt unele lucruri -
așa că am un Makefile chiar aici, și Dacă deschideți asta, unele lucruri
veți observa sunt diferite.
În special, acest argument chiar aici, tu, probabil,
nu s-au văzut că, înainte.
În general, ne-am compila lucrurile cu liniuță de zero, zero.
Dash de zero, zero înseamnă să nu faci orice optimizări, compilator.
Nu încercați și de a face orice fantezie, sau face ceva alerga mai repede, sau de a lua
scăpa de variabile care sunt necesare.
Nu a optimiza acest cod, la toate,
>> Eu cer pentru al treilea nivel, optimizare.
Deci, eu cer compilator pentru a face o mulțime de optimizări.
Aveți posibilitatea să modificați că, în Makefile atunci când aveți acest cod, dacă vrei
pentru a vedea lucrurile diferit.
Pe care le vom arăta într-o secundă.
Deci, vom rula sumă mea 1 plus 2, plus 3.
Cineva dă-mi două argumente.
>> Audiența: 4 și 5.
>> SPEAKER: 4 și 5.
Mulțumesc.
Mare, funcționează.
Care sunt alte argumente bune pentru a încerca, pentru a vă asigura funcționează?
Oricine?
>> Audiența: 0.
>> SPEAKER: 0 și?
>> Audiența: Negativ 3.
>> SPEAKER: Se lucrează.
Dar acestea au fost alegeri bune.
OK, așa că hai să ne întoarcem aici.
Acest lucru este mysum.c.
Veți observa, există, de asemenea, ceva numit sumfunction.c.
Și aceasta spune, oh, e ceva definite în sumfunction.c.
Eu nu includ acest fișier aici pentru că nu am nevoie să.
Dar l-am link-ul din când am compila, pe care ai observat.
>> Să derulați în sus.
Am văzut când am compilat mysum, chiar acolo, ne-am legat în binar de la
sumfunction.o.
Și nu am nevoie de fișierul header pentru că, desigur, nu e
declarație a funcției.
Atât de clare includ în mod normal, doar pune într-o declarație funcție.
Aici l-am pune-l drept în codul.
Și așa că am nevoie să faceți este să link în binar, pe care eu fac.
>> Orice presupuneri pentru ceea ce este în sumfunction.c?
Ce cod am scris în sumfunction.c?
>> Audiența: [inaudibil].
>> SPEAKER: Orice presupuneri?
Da?
>> Audiența: Cred că, definește unele [neauzit].
>> SPEAKER: Da.
Deci, eu scriu suma int int a.
Scriu această linie, și apoi am deschis acoladă, închis acoladă.
Ce crezi că scriu în interiorul celor acolade, în interiorul această funcție?
Da?
>> Audiența: Înapoi egal cu o.
>> Procesor: Asta este o presupunere foarte bun.
Cine crede [? Manu?] Este corect?
Se spune reveni un plus b.
OK, nu toată lumea.
[? Akshar,?]
face, de asemenea?
Ești sigur?
OK.
Ce?
>> Audiența: Ai scris greșit.
>> SPEAKER: Nu, nu am făcut-o.
Da, doar glumesc.
Ai dreptate.
Asta este exact ceea ce spune.
Este reveni un plus b.
Care face o mulțime de sens.
>> OK, hai să ne întoarcem aici.
Vedem cum antetul -
asta e tipul de întoarcere.
Amintiți-vă, am văzut în acea zi una, reveni tip de funcție, dar se
înainte de numele funcției Int.
Aici, am scris int.
Ce crezi că se va întâmpla în cazul în care, în acest funcție, eu nu scriu int, dar
Scriu nesemnate?
Diferența, desigur, fiind că nesemnate reprezintă doar pozitiv
numere întregi, și int pot fi pozitiv sau negativ.
>> Așa că m-am schimbat revenirea tip de această funcție.
Acest cod nu corespunde această întoarcere tip de aici.
Ce crezi că se va întâmpla când am compila?
Ar trebui să țipi la mine.
Fara strigate.
>> Ce zici de când am rula programul?
Să facem înainte de 0 negativ 3, sau negativă 1.
Încă mai funcționează, chiar dacă spun se întoarce un întreg fără semn.
În mod clar nu e întoarce un întreg fără semn.
Se întoarce un întreg semnat.
Se întoarce negativ 1.
OK, asta e ciudat.
>> Ce zici dacă mă duc în aici și de a face asta?
Așa că m-am schimbat totul de la int la nesemnate.
Se poate lua numai numere întregi fără semn.
Dar nu am încă mai cred că va fugi?
>> Publicul: Da.
>> SPEAKER: Acesta va.
Asta-i nebunie.
Și vom trece într-un mod clar atribuit întreg, putem trece două semnat
întreg, încă mai funcționează.
>> OK, orice idei de ce-l mai lucrări, sau ce se întâmplă?
Da, Jeff.
>> Audiența: Ea are ceva de-a face cu dvs. de optimizare pe care le
evidențiat.
>> SPEAKER: Nu.
Am putea schimba optimizarea, ar funcționa în continuare.
Pot face asta pentru tine, dar -
>> Audiența: Voi lua cuvântul tău pentru ea.
>> SPEAKER: Da.
Dacă deschideți Makefile chiar aici, Am schimbat de optimizare.
Astfel încât să puteți face strop de zero, zero.
Acesta va funcționa în continuare.
Alte gânduri?
>> Voi aștepta tot la locul de muncă, așa ce te-ai aștepta să funcționeze?
Nu?
Tăcere.
OK.
Trebuie să așteptați șapte secunde, pentru că am pus o întrebare.
>> Deci, cool thing despre C, și le-ați probabil experimentat înainte - te
nu ar putea avea, aceasta s-ar putea fi prima dată.
Dar, după cum știți cu toții, când scriu ceva în C, nu salvează ca
acest lucru pe computer.
Este salvat ca cele si zerouri.
Se merge de la codul C la codul de asamblare.
>> A văzut cineva codul de asamblare înainte, codul de asamblare mașină?
Ne vom uita la într-o secundă.
Se merge de la codul C la codul de asamblare.
Și voi cunoaște etapele de compilare.
Trebuia să memoreze că pentru un test, și apoi scrie-l pe test de zero.
Cei mai mulți oameni înțeles greșit.
Cred că voi l prins.
>> Dar, voi sunteti cel mai bun sectiunea pentru teste, apropo.
Ceea ce este minunat.
Nu te va răni.
Nu fi îngrijorat.
Dar e foarte misto.
Bună treabă.
>> Deci, se duce la limbaj de asamblare, și apoi se duce la unu și zerouri.
Iar cele si zerouri sunt salvate pe calculator, și asta e ceea ce a salvat în
a.out, sau în acest caz, fișierul executabil.
Și computerul rulează unu și zerouri.
Corect?
Ne-am învățat asta.
>> Deci, ceea ce este rece, acest nesemnat idee, ideea de tipuri de int nesemnate,
etc, etc, asta e aici, în limbajul C.
Cei care exista.
Dar tipuri nu există la cele si zerouri.
Tipuri nici nu există cu adevărat la nivelul de limbaj de asamblare.
Deci, asta e ceva care există în C lume, dar nu există în calculator
lume sau procesor lume.
E o abstracție că C limba a inclus, pentru a face noastre
viața mai ușoară.
>> Deci, la sfârșitul zilei, eu pot scrie multe lucruri diferite aici, și-l
nu face o diferență.
Pentru că există doar în lume C.
Ea nu există în cele si zerouri lume.
Și programul nostru de executare în cele si zerouri lume.
Deci, mintea ta e în mod clar, nu cu sufletul la gură încă.
Dar cred că e cool.
Da, Jeff.
>> Audiența: Deci, dacă în loc de face Int, faci char.
Și tu ai fost -
>> SPEAKER: Hai so facem într-o secundă.
>> Audiența: Pentru că atunci veți primi o nesemnate merge de la negativ la 128
127 sau 0 la 255.
>> SPEAKER: Deci, char este problematică.
Stie cineva de ce ar fi char problematic, și că ar fi de fapt
schimba lucrurile în cele și zerouri lume?
>> Audiența: Din cauza dimensiunii de char.
>> SPEAKER: Mărimea char este 1.
Deci fără semn este, de asemenea, 4 octeți.
Deci, char ar șurub lucrurile.
Dar ceea ce este de 4 bytes că e în legătură cu un char?
Sau la care se adaugă o suplimentare -
puteți pune un caracter mai mult după char.
>> Audiența: Char stele.
>> SPEAKER: Char stele are 4 bytes.
Deci, hai sa facem ceva care este o stea char.
>> Deci, acest lucru ar fi, probabil, locul de muncă, dar suntem de gând să faci ceva chiar
mai nebun decât aceasta.
În opinia mea, mai nebun.
>> Am scris acum o funcție care returnează un pointer, și este nevoie de o
pointer și o valoare nesemnate - vom schimba această înapoi la int asa ca nu suntem
face prea multe schimbari la o dată.
Și are o gamă largă sunat, indici în matrice, și returnează
adresa.
Ne-am văzut acești operatori înainte.
Acest lucru, ce crezi că se întâmplă de a face, în schimb, atunci când am rula?
Ce crezi că va face?
Orice presupuneri?
>> Audiența: Segfault.
>> SPEAKER: Ce?
Segfault?
Asta-i o presupunere bun.
Tom spune același lucru.
Orice alte presupuneri?
>> Cine crede că se va face acelasi lucru?
Cine crede că o să segfault?
Acesta face același lucru.
Scuze.
>> Dar, desigur, am pus în 1 și 2.
Iar cei care sunt atât de valabil, corect?
Să vedem, putem merge la loc de un tablou de-al doilea.
Dar ce dacă am făcut b un număr negativ?
Că este, probabil, o presupunere bună pentru ceva segfaulting.
Încă mai funcționează.
>> OK, aceasta este acum o nebunie.
Acest lucru este din funcție sume la fel de valabile.
Acest lucru face exact același lucru ca întoarcere a și b.
Poate cineva explica de ce acest lucru este un bun Funcția Sum, sau de ce funcționează?
Ce se întâmplă aici?
De ce face acest lucru face exact la fel lucru ca funcția noastră sumă vechi?
[? Akshar,?]
ce se întâmplă?
>> Audiența: Pentru că atunci când aveți o o care este o adresă de
memoria locație -
și atunci când faci ampersand, ea se duce la adresa de memorie.
Și atunci când te duci la b, esti un fel de pași de la adresa de memorie în mișcare,
te întoarce asta.
Deci tu esti de fapt, de fapt, adăugarea a și b [inaudible].
În cazul în care sunt operațiuni standard, pe care întoarcere?
Ca, în cazul în care nu parantezele cad?
Este revenirea adresa de pe o înainte sau după [inaudibil]?
>> SPEAKER: O să indice în b -
sau index într-o - și apoi returna adresa.
OK, deci am înțeles toată lumea ce [? Akshar?]
a spus, și explicat, de ce funcționează?
Eu nu, pentru prima dată cineva a explicat acest lucru pentru mine.
Oricine ar dori o imagine pentru a explica acest lucru?
Vom desena o imagine, cu nu există markeri, asta e minunat.
S-au găsit unii.
>> Deci avem o matrice care este o serie de cutii.
Prima dintre ele este un index 0, indicele 1, 2, 3, 4, punct, punct, punct.
O matrice tipic.
Și, în plus față de indici, toate au adrese de memorie.
Așa că haideți să dau această adresă de memorie 13, 14, 15, 16, 17, etc.
Toată lumea e aici până acum.
>> Deci, o este o adresă.
Numele de o matrice, un indicator este salvat acolo.
Este un pointer, este o locație de memorie, la începutul șirului.
Deci, dacă acesta ar fi matrice, o ar fi o valoare de 13.
Și, desigur, ne putem da o orice valoare ne-o dorim.
Char stea o, putem da un orice adresă de memorie ne-o dorim.
Ne putem da 0, putem da negativă 1 - negativă 1 nu există,
astfel încât este probabil problematic, dar ai văzut că încă mai lucrat.
Astfel încât să putem oferi un număr orice ne dorim, orice adresă de memorie ne-o dorim.
>> Apoi, int b spune, OK, du-te acest număr de pași în matrice.
Deci, dacă b este egal cu 2, iar un egal cu 13, suntem la adresa de memorie 13.
Și vom merge doi pași în, și așa suntem aici.
Și ampersand înseamnă retur adresa acestor fișiere.
Și adresa este, desigur, 15.
Așa că am obține 13 plus 2, sau un plus b, care este 15.
>> Întrebarea este, deși -
Îmi pare rău.
Asta clarifica lucrurile de ce funcționează?
>> Audiența: De ce ar funcționa merge -
astfel încât să puteți avea o matrice și du-te la un indice negativ?
>> SPEAKER: Corect.
Așa că am făcut numere negative, Deci, asta e -
are acest sens, deși, Primul, [? Avi,?]
pentru tine?
>> Audiența: Da, sunt doar [Inaudibil], dar -
>> Difuzor: Da, acest lucru se va întoarce 15.
Dacă o a fost de 13, iar b este 2, acest lucru se va întoarce 15.
>> Audiența: Deci, indexarea de zero nu devenit o problemă, nu?
Pentru că te muți de la 0.
>> SPEAKER: Corect.
Deci tu în mișcare - așa că, dacă b este 0, nu s-ar muta oriunde.
Și te-ai întors doar adresa -
dacă b este 0, care este, în esență, revenind că adresa de o.
Trecând într-un char stele și returnarea adresa unei este doar întoarce o,
în esență.
>> OK, întrebarea este de ce numere negative de lucru?
Și asta e un lucru foarte misto despre acest lucru, pentru că acest lucru ar trebui segfault.
Și ar segfault dacă am a facut ceva de genul asta.
Să spunem, int.
Deci, acest cod arata identic și ar trebui să se comporte identic.
În esență, x este o variabilă de gunoi, și astfel aceasta ar trebui să se comporte identic.
>> Să facem acest lucru -
oops -
în stele.
OK, ne apropiem deja de erori aici, deoarece este deja o să fie supărat
la mine, pentru că deja știe ce vine.
În special, al doilea.
Adresa de memorie suprapuse asociate cu o variabilă locală.
>> În esență, eu nu am de gând să compileze acest lucru, iar apoi am de gând să anulați face
ceea ce am făcut.
Dar, pentru că noi nu suntem de fapt accesarea ce e în memoria
locație, ea nu va segfault.
Ne niciodată de fapt uita la ceea ce este în a doua casetă sau ceea ce este în orice cutie
din această matrice.
Suntem doar spun, aici e adresa de lucru pe care îl căutați și
reveni acea adresă.
Vom niciodată de fapt, de a intra în matrice să se uite la acea locație.
Și pentru că nu ne-am atinge de memorie, nu vom avea probleme.
Noi nu obține o segfault.
>> Dacă am încercat să, din nou, atinge memorie, atingeți de ce a fost la un sau b -
sau un suport b, și presupunând un fost 0 și -
în cazul în care o a fost de 0, chiar, că ar fi destul de rău, pentru că nu putem merge
pe tot drumul acolo.
În cazul în care a și b au fost atât 0, și am încercat să atingeți de ce a fost acolo, atunci ne-ar
avea probleme.
Dar dacă nu vă atingeți de ce este acolo, ne întoarcem doar adresa, este
de fapt, nu o să segfault deoarece aceasta vă permite să efectuați aceste operațiuni.
Este doar devine suparat pe tine, și devine super- supărat, atunci când încercați și atinge
memoria reală și a reveni ceea ce este la acea locație de memorie.
>> Asta face sens?
Asta e doar o parte nebun de C. Deci, avem una din astea.
>> Cine crede că acest lucru este cool?
Mai multe persoane.
Asta e bine.
OK, aceasta este ultima noastră unul.
Și aș dori să-mi spui dacă sau nu crezi ca acest lucru se întâmplă
pentru a face exact același lucru.
>> Am scris aceste jos undeva.
Eu nu-i memorare.
>> Să vedem, 8, 4 b, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4.
Deci, aceasta este o matrice, acum, nu o funcție.
Și este un tablou pentru că avem pătrat paranteze, acolade nu buclat.
Și este o serie de ce tip?
Oricine, hmm?
>> Audiența: Numărul lor hexazecimale?
>> SPEAKER: Dar ce e tipul C?
Ei au toate numere hexazecimale.
Care este tipul de C?
Aceasta vă spune.
>> Audiența: E caractere nesemnate.
>> SPEAKER: dreapta, caractere nesemnate.
Și două numere hexazecimale este un octet.
Deci acestea sunt 1, 2, 3, 4, 5, 6, 7, 8, 9 octeți.
Este o serie de 9 bytes.
>> OK, probabil știți deja răspunsul la această întrebare.
Dar, ce credeți că va întâmpla atunci când am rula acest?
Eu spun, din nou, în mysum.c, Mă aștept la o funcție
care are două numere întregi.
Și eu spun în schimb că suma este o serie de caractere.
Ce se va întâmpla atunci când I a alerga. / Mysum și face?
>> Ei bine, în primul rând, cele mai multe dintre voi va fi, probabil, sunt de acord ca make - oh, nu, doar glumesc.
Ce-am greșit?
Uh oh.
Că ar trebui să fie acolade.
Asta e modul în care inițializa un tablou.
Greșeala mea.
>> Așa că am văzut deja, înainte de faptul că tipurile sunt un nivel de abstractizare-C, nu o
la nivel de calculator abstractizare.
Deci, cele mai multe dintre voi, probabil, că se așteaptă la face, sau presupunând că s-ar face.
Dar ceea ce atunci când am rulat. / Mysum?
Ce se va întâmpla?
Orice presupuneri?
>> Audiența: Va imprima un cuvânt.
>> SPEAKER: Va imprima un cuvânt.
Ce cuvânt?
>> Audiența: [inaudibil].
>> SPEAKER: Orice alte presupuneri?
OK, imprima o frază.
Puteți avea orice fraza.
, Care va fi de partea ta.
Oricine care are o presupunere diferit?
Anna, care e presupunerea ta?
>> Audiența: Se va imprima -
două litere, sau [inaudibil] o literă.
>> SPEAKER: O scrisoare.
>> Audiența: Pot conta cât de multe [inaudibil]?
>> SPEAKER: Nouă.
Ei bine, am de gând să-l rulați.
Ea face exact același lucru.
Se adaugă două numere împreună.
Ei bine, hai să treacă cele două argumente.
Aceasta nu ia argumente.
Deci, eu nu știu unde ar putea eventual obține aceste argumente.
Dar haideți să treacă la 100 și 0.
Și se adaugă 100 și 0.
Asta-i nebunie.
Așa cred.
>> Negativ 4, care funcționează de asemenea.
Poti sa faci orice vrei.
Aceasta este o funcție de sumă la fel de valabile.
Aceasta este o funcție de sumă.
Dar, nu, tu spui că e o serie de bytes.
Deci, ce se întâmplă aici?
>> Deci, din nou, să ne întoarcem la această idee că am spus de la început.
Tu du-te la codul de nivel C, de asamblare limbă, la unu și zerouri.
Acest lucru este hexazecimal.
Dar acest lucru este de fapt doar un mulțime de unu și zerouri.
Acest lucru este de 72 unu și zerouri, corect?
72 unu și zerouri.
9 octeți.
Fiecare byte are 8 biți.
Fiecare bit este unu sau zero.
Deci, cele 72 sau zerouri.
Am doar le scris ca aceasta - mai degrabă decât scris-o ca o mulțime de
unu și zerouri.
>> Dar acest lucru va merge de la nivelul-C limbaj, de asamblare
limbă, de cod.
Iar acest lucru se va imprima în cod, undeva, aceste 72 de unu și zerouri
pe care le-am scris aici.
Deci, undeva în care -
Să mergem de aici -
undeva în mysum, programul, acolo sunt aceste 72 de zerouri și cele pe care le-am
scris și l-a spus să scrie.
>> Acum, orice presupuneri de ce cei care 72 unu și zerouri înseamnă?
>> Audiența: Probabil la fel lucru a reveni ca un plus b.
>> SPEAKER: Probabil la fel lucru a reveni ca un plus b.
Să verifice dacă.
Să dau seama cum am făcut asta.
>> Deci, dacă te întorci aici, am să vă spun pentru a rula această comandă, objdump-S
sumfunction.o.
Să mergem să rulați-l. objdump -
obiect, basculante.
Practic se poate da-mi tot ce vreau să văd.
Se poate da-mi limbajul de asamblare.
Se poate-mi dea cele si zerouri.
Ea are o tona de steaguri.
Acest lucru este cel pe care îl vom de a utiliza pentru acum.
Dot -
așa cum veți vedea în slide-urile -
capital de bord S spune, amesteca, codul sursă -
această linie este de la C - cu ansamblul cod și cu cele si zerouri.
Și vom rula l pe sumfunction.o.
Pentru că va fi mai ușor pentru a vedea.
Din nou - hmm?
>> Audiența: Ai scris greșit.
>> SPEAKER: Dar eu de fapt de gând să-l clar pentru o secundă.
Am în primul rând de gând să deschidă doar sumfuntion.o.
>> Audiența: Ai scris greșit prima dată.
>> SPEAKER: Classic.
Suma -
care este un cuvânt greu, totuși.
Ai fi surprins.
OK, deci aceasta este sumfunction.o.
Nu am putut să vă spun.
Există o mulțime de zerouri, în mod clar o mulțime de zerouri, și nu există o altă
lucruri care nu-i zerouri.
Dar cea mai mare parte zerouri.
Se pare ca exista unele.
Deci, în mod clar, acest lucru este greu de citit.
Acesta este limbajul binar.
>> Hai acum deschideți-l -
ce?
Ce fac greșit?
V-am scris corect?
OK, asta e ciudat.
Am nevoie de o secundă pentru a figura ce fac eu greșit.
Asta este o eroare.
Asta-i ciudat.
Oh, de aceea.
>> Am de gând să se întoarcă la inițială noastră o, astfel încât să putem uita la
cod obiect de acest lucru.
Pentru că nu se întâmplă cu adevărat la fi nimic atunci când ne-am pus
unu și zerouri inch
Acolo mergem.
OK, astfel încât toată lumea poate vedea acest lucru.
Această funcție, așa cum am spus, pune liniile C -
linii de cod sursă -
cu unele instrucțiuni de asamblare.
>> Aici este linia noastra de cod sursă.
Aici e unul, aici e un alt.
Aici este de instrucțiuni de asamblare.
Asta e ceea ce arata ca.
Instrucțiuni de asamblare -
puteți afla mai multe dintre acestea, dacă luați alte clase CS, dar sunt
în general, o instrucțiune.
Și apoi o sursă și o destinație.
>> Și apoi aici este codul binar care corespunde celei de asamblare
instrucțiuni.
Deci, după cum puteți vedea, această funcție sumă, la sfârșitul zilei, este de trei
instrucțiuni de montare.
Doar trei.
Un mov -
aceasta m-o-v reprezintă o mutare.
Adauga standuri pentru Adauga.
Și r-e-t standuri pentru retur.
Deci, un mov, un program de completare, o revenire.
Și acestea, aici, sunt zerourile și cele care corespund la acest cod.
>> Deci, aceste zerouri și cele, dacă te știu cei, doar puteți pune
cei drept inch
Și apoi se va face de același lucru exact.
Pentru că, la sfârșitul zilei, toți te de executare este o lungă serie de
zerouri și cele.
Și asta e ceea ce este într-adevăr codul.
>> Și motivul -
să ne uităm la un singur lucru.
Am avut Makefile deschis?
Deci, dacă ne-am întors la bord de zero, zero, aici -
îmi pare rău, o capital, capital o de zero, nu este zero, zero.
Și ne-a făcut, ar fi lucra în continuare la fel.
Dar acum ai observat că există o mult mai multe instrucțiuni de asamblare.
Asta pentru ca, din nou, l-am întrebat compilatorul nu a făcut nici o optimizare.
>> Așa că am putea avea încă toate acestea zerouri și cele, și le arunca în,
și că ar funcționa.
Am făcut doar optimizările, deoarece este un pic mai ușor, apoi,
să scrie că matrice.
Dar acest lucru ar funcționa la fel de bine.
>> OK, vom face un ultim lucru, pentru că eu cred că este cea mai tare parte.
Chiar dacă toată lumea este în mod clar deja cu sufletul la gură și mut.
Mințile noastre sunt cu sufletul la gură.
[Inaudibil]
>> Deci, acestea sunt de la o altă clasă CS, care este foarte interesant,
pe care le-am luat -
CS61.
Am foarte vă încurajez să-l ia.
Dar partea rece despre acest fapt, că lucrurile sunt doar zerouri și cele,
sunt că totul este zerouri și cele.
>> Astfel încât să puteți lua un fișier care are zerouri corecte și cele dorite
undeva în ea, și de a folosi acea secțiune a zerouri și cele ca o funcție de sumă.
>> Ce vreau să spun cu asta?
Vreau sa spun ca pot lua o imagine care are seria corectă de zerouri și
cele, care imprima ceva de la o imagine.
Și un program s-ar putea interpreta este un imagine, dar puteți să-l interpreta, în cazul în care
vrei, ca o funcție de sumă.
>> Deci, dacă am vrut să deschidă, pentru exemplu, această imagine.
Să mergem, Hello Kitty.
Imagine putin minunat.
Aici este că șir de zerouri și cele.
Aceste 72 de zerouri și cele există în această imagine.
>> Deci, ce pot face, apoi, se scrie -
Trebuie să vă amintiți unde sunt.
Voi găsi că într-o secundă.
Dar ce facem -
lasă-mă să aflu unde sunt.
Unul sec.
Să facem -
>> Audiența: [inaudibil].
>> SPEAKER: Mulțumesc.
Deci, dacă vom executa acest program, care în schimb se arată într-un fișier, apoi merge
la acest index în fișierul.
Și apoi, din nou, la fel ca mysum, are două numere.
Putem adăuga numere exact la fel ca făceam înainte, care duce la
vă arată cum faptul că, la sfârșitul anului a zilei, toate aceste lucruri sunt
zerouri și cele.
Și e doar modul în care alegeți să le interpreteze.
>> Și dacă te uiți de fapt la această imagine -
Să mărim un pic.
Poate toata lumea sa-l vezi?
Veți observa aici, nu e unele pete ciudat.
Să mergem - aceasta este imaginea originală.
Veți observa aici nu e nici o pată.
Care este codul pentru funcția suma, este că mica pata de acolo.
>> Și, de fapt, din nou, în cazul în care vă aflați mai multe despre acest lucru, iti vei da seama că acest
Hello Kitty, care are chiar o mai mare pete, are cod care poate prelua o
calculator dacă nu este protejat corespunzător.
Astfel încât să puteți rula de fapt acest lucru.
Eu nu am de gând să-l ruleze chiar acum.
Dar puteți rula acest Hello Kitty imagine, și se poate
prelua computer.
>> Deci, asta e tot pentru demo.
Are cineva întrebări, comentarii, preocupări?
Cred că aceste lucruri este fascinant.
Mi-a inspirat pentru a afla mai multe.
Am foarte recomanda, în cazul în care sunteți interesat la toate pe CS, vorbeste cu mine.
Chiar dacă eu sunt o Studii Sociale Concentrator, eu sunt un CS, secundar, așa
Eu încă mai știu un pic.
Dar știu cu siguranță ce cursuri trebuie să luați.
Cred că totul e foarte interesant, și am să vă încurajez, cu siguranță, la
afla mai multe daca esti interesat.
>> OK, am un ultim lucru.
Scuze.
Orice întrebări?
Nu am pauză să aștepte dacă cineva a avut întrebări despre asta.
>> Este cineva de gând să fie un CS Concentrator?
Sau de gândire despre el?
Unu, doi, trei, patru.
Unul - doar unul.
Anna este mâna numai că este ridicat autoritar.
OK, asta e bine.
Assam, ce ai de gând să faci?
>> Audiența: [inaudibil].
>> SPEAKER: Constantin?
>> Audiența: Fizica.
>> SPEAKER: Uau, asta a fost rapid.
Ai avut o experiență neplăcută în CS50?
[Inaudibil], ceea ce ai de gând să faci?
>> Audiența: Nu am nici o idee.
>> SPEAKER: Curt?
>> Audiența: Econ sau CS.
>> SPEAKER: Econ sau CS.
Tom?
>> Audiența: Fac Stat.
>> SPEAKER: Stat?
OK.
Ce ești tu?
>> Audiența: Me?
>> SPEAKER: Da.
>> Audiența: Stat.
>> SPEAKER: Stat.
Oh, acolo te duci.
Tom, vorbesc cu Alden.
Emily, ce ești tu?
>> Audiența: Biomedical -
>> SPEAKER: Ești în această secțiune?
>> Audiența: Nu.
>> SPEAKER: OK, asta e Emily.
E prietena mea.
În mod clar nu atat de buna de un prieten, pentru că ea îmi dă un timp de greu.
Ai putea fi mai frumos pentru mine, în fața de toată lumea, studentul meu -
>> Audiența: Fac ghidul tau Q.
>> SPEAKER: Serios?
Uh oh.
OK, ești uimitoare.
Te iubesc atât de mult.
Oh boy.
>> Oricum, eu, noaptea trecută, ca tot ceea ce -
Sunt sigur că toată lumea pare într-adevăr a subliniat chiar acum.
Nu știu, sunt student în anul întâi - sunt voi simți stresat?
Mă simt stresat.
A fost ca și cum, te duci acasă pentru Ziua Recunostintei.
Ești ca, am de gând să face toate aceste lucruri.
>> Audiența: E atat de diferit.
>> Difuzor: Da, și te întorci.
Jeff, nu vă simțiți în acest fel?
>> Audiența: M-am gândit Mi-ar face un pic.
>> SPEAKER: OK, mare.
Așa că am venit înapoi, și nu am făcut nimic.
Și totul e foarte stresant.
Și eu sunt îngrijorat, cu adevărat în cauză, cu privire la posibilitatea sau nu sunt
O să termin tot ce am sa.
Dar noaptea trecută, nu am fost stresat, Am fost doar un pic trist.
Așa că am scris în jurnalul meu despre ceea ce am fost trist despre.
Și am fost trist despre această secțiune în această clasă se apropie de sfârșit.
>> Așa că am fost doar de gând să citesc pentru voi un mic fragment din jurnalul meu,
din noaptea trecută.
Pot primi niste servetele, unele tesuturi de la Tom?
Nu, am de gând să plâng.
Eu nu plâng.
Nu că nu poți să plângi, Eu pur și simplu nu plâng.
Nici măcar nu știu dacă lacrima mea Glandele lucrat - canale lacrimale.
Nu am plâns într-o lungă perioadă de timp.
>> Audiența: [inaudibil].
>> SPEAKER: OK, mulțumesc.
OK, există un pic de prefață -
există alte părți ale jurnalul meu intrare, pentru că eu încerc să jurnal fiecare
noapte înainte am ajuns la culcare.
Am foarte recomanda jurnalizare.
Aceasta vă ajută să proceseze lucruri, și, de asemenea, fi foarte apreciativ de ziua ta.
Și-l face mult mai ușor să se uite înapoi în ziua ta și să realizeze că
au existat o mulțime de bun lucruri care s-au întâmplat.
Chiar dacă vă simțiți foarte stresat pe timp de noapte sau într-adevăr supărat, sau
într-adevăr trist sau obosit.
>> Oh, Doamne.
Nici măcar nu știu dacă este scris că bine că nu l-am corecta.
Dar vom citi.
De obicei nu citesc meu jurnal, evident.
>> "Mâine, voi învăța finală mea Secțiune CS50 a anului.
E o nebunie cum zboară timpul de repede.
Cu toate acestea, eu sunt uimit de cât de diferite experiența mea de predare în acest an a fost
decât atunci când am fost un al doilea de studentie.
Pentru inceput, eu cu siguranta cunosc mai bine materialul.
Dar nu-i spui prima cohorta de studenți care.
Mai important, cu toate acestea, am realizat că bucuria care vine de la picioare
în fața unei camere de ceea ce începe ca străini, dar se termină ca, la
cel puțin, prieteni pe Facebook, este nu o întâmplare primul an.
Mai degrabă, este de la știind că, în un fel de mici, te ajuta
talentat, grijuliu, agreabil, și oameni pasionati afla un pic mai mult
cu privire la informatică.
>> Te deplasare care bec doar o bit în soclu, astfel că este capabil
să strălucească mai luminos decât tine, sau ei, ar fi putut imagina la începutul semestru.
Ai ajuta pe cei care se încruntă întoarce cu susul jos și să pună întrebări care
oferi sprijin, dar încă permite elevii să se ridice pe cont propriu.
>> Cu siguranță, nu este o exagerare să spune că această secțiune este favoritul meu
parte a săptămânii.
Sau chiar că am ezitat să spun, asta e toate, la 05:30 în fiecare săptămână, știind
că va fi prea lung până când ne vom întâlni din nou.
>> Cu toate acestea, eu sunt incredibil de recunoscător pentru toți cei care mi-a dat acest
posibilitatea de a da înapoi altora.
Pentru David, pentru răbdarea și încrederea.
Pentru echipa de filmare și de producție, pentru luare a-mi arate ceva respectabil.
Și, cel mai important, pentru elevii mei, fără de care aș avea nici un motiv să
petrece 10 oră imaginind cel mai bun modalitate de a atrage indicii, sau pune un
masă de delfini, prin intermediul JavaScript.
Ca întotdeauna, a fost o binecuvântare. "
>> Deci, cu asta, va multumesc.
Ne vedem toate la târg CS50, și hackathon, dacă ești acolo.
Și dacă aveți întrebări, voi lipi în jurul până când nu mai sunt.
Dar vă mulțumesc baieti pentru un an minunat.
>> [Aplauze]
>> SPEAKER: S-ar putea plânge.