>> [VIDEO PLAYBACK]
>> Triumf -A de matematică și calificare mecanic
este acest mare nou automat Calculator de la Universitatea Harvard.
Probleme complicate în matematică pune prin mașina în formă codificată
pe bandă sunt rezolvate cu precizie într-un minute fracțiune din timpul necesar
pentru calculul umane.
Conceput pentru a accelera toate formele de cercetare matematică și științifică,
creierul mecanic gigant va lucra pentru Statele Unite Marinei până la sfârșitul războiului.
>> [END PLAYBACK]
>> David J. MALAN: Acest lucru, este CS50.
Trecut a fost o magic loc, dar dacă ai vreodată
întrebat ce acel dispozitiv este în Harvard Science Center,
este într-adevăr parte a prezentului Harvard Mark I, și este
pe ecran acolo acum pentru ultimii ani mulți.
Și ce veți vedea încorporate în set problemă
unul este un aspect în spatele scenei la ceea ce a făcut acel dispozitiv, și nu,
de la profesorul Harry Lewis, care este în departamentul de informatica aici.
Cu atât mai mult pe faptul că, în doar un pic.
>> Dar astăzi vom începe să tranziție de la saptamana trecuta la acest lucru,
și vom aduce mențiune de o fotografie aici
Asta este de fapt destul de celebru.
Stie cineva ce acest aici este pe ecran?
Cel puțin în funcție de mit.
Da.
Audiența: Primul virus.
David J. MALAN: Deci a fost presupune prima bug real într-un computer.
Acum, în realitate, bug-ul cuvânt, pentru o greșeală într-un program,
a fost cu noi pentru unele timp în lumea fizică,
și acest lucru a fost unul dintre primii ori documentate în care cineva de fapt
smuls o molie mare din Mark Calculator II-lea, a pus in liant,
și apoi a înregistrat ca primul bug cunoscut
a au fost efectiv găsit fizic.
Deci, prin urmare, a fost introdus că în lore astăzi.
Totul, de la ultima săptămână este disponibil online.
În special, resurse care v-ar nu observa neapărat, în special
dacă vin aici în persoană.
Deci, unul dintre semenii didactice fiecare Anul face un set canonic de note,
așa că nu trebuie să țină capul jos, încercând
să transcrie mai nimic care ar putea întâmpla aici, în clasa.
Deci dau seama că cei așa-numitele [? Scribd?] Note
sunt on-line, cu siguranță diapozitivele și codul sursă pe care le folosim în clasă.
Facem transcrieri full text disponibil, de asemenea.
Deci, dacă vă aduceți aminte vag unele termen, și doriți să-l uite un pic
mai ușor, că toate dau seama de care este căutat on-line.
Precum și walkthroughs, de asemenea.
Într-adevăr, astăzi vom începe să se uite la un nivel mai scăzut de programare limbaj,
în curând să fie cunoscut la noi ca C, și este foarte ușor
să se fel de pierdut după doar câteva timp momente, și apoi un fel de mirare
cum de fapt am ajuns la ceva mai mult exemplu complex la cele mai simple.
Și așa ne-am dat seama vom cires alege în timpul clasa unele
dintre exemplele reprezentative, dar dau seama că atât de mult mai mult, de asemenea,
disponibil on-line, astfel încât să puteți lucra prin ea la propriul ritm,
Cu toate acestea ești cel mai confortabil.
>> Dar am rămas cu programe care au fost doar acest.
Asa ca am faceți clic pe steagul verde, și ce acest program face?
Spune, salut, lume.
Aceasta face ca pisica spune salut în mica sa lume
pe partea stanga sus de interfață cu utilizatorul Scratch lui.
Dar am început să introducă unele terminologie săptămâna trecută.
Și astfel, lucruri de genul asta am numit ce?
Care ar putea fi termenul generic pentru asta?
Da.
O metodă sau o declarație.
Sigur, e o acțiune.
Fa asta.
Și totuși, s-au alte forme de zero,
în afară de aceste așa-numite declarație, ei au fost, de asemenea,
lucruri de genul asta, pe care am numit ce?
Da.
Deci, o buclă.
Și în acest caz, acest lucru repetări, evident, de 10 ori.
Există o pentru totdeauna bloc.
Există o serie de alte persoane.
Și astăzi vom vedea cum să traduce aceasta la o lume mai modernă,
dacă vreți, chiar dacă este O să apară la prima vedere
să fie mult mai arcane.
Dar cei erau într-adevăr bucle.
Și apoi ne-am lucruri de genul acest lucru, care a avut această formă,
și, în esență întrebări.
Și ne-am referit la cum ar fi ce?
>> Audiența: expresie booleană.
>> David J. MALAN: Da.
Expresie booleană.
Ceva care este fie adevărat sau false, da sau nu, una sau zero
Cu toate acestea doriți să vizualizați în lume.
Dar am sunat pe cei Boolean expresii, și le-am conectați
în condițiile, sau sucursale.
Și în lumea Zero, totul frumos
blocare în ceea ce privește forma, în cazul în care are sens logic să facă acest lucru,
dar nu trebuie să se oprească la doar face un lucru condiționat,
puteți avea o proverbiala furculiță în drum
și de a face acest lucru, fie sau că, dacă condiția este adevărată sau nu.
Și apoi, după cum veți vedea, dacă nu ați făcut deja,
Puteți chiar cuib aceste blocuri.
Deci, Scratch creste pentru a umple formele că ați putea dori să introduceți în ea,
astfel încât să puteți exprima de fapt cel mai orice logică pe care ați putea dori să facă.
>> Acum câteva cuvinte de anunț pentru atât aici, cât și New Haven.
Deci secționare începe astăzi.
URL-ul pentru acest lucru este pe cursul anilor site-ul, pentru cei nefamiliarizați.
Secțiuni va fi un posibilitatea de a obține împreună
într-un mediu mult mai intim decât [? Sanders?] Permite,
cu 10 la 20 de colegii, cu un predare coleg de la diferite piese,
și ritmuri diferite, daca asa ca alege.
Într-adevăr, ofertele de curs diferite sectiuni
pentru cei mai putin confortabil, mai confortabil, și undeva la mijloc,
și rolul de degetul mare aici, este nu exista nici o definiție formală,
dar daca esti mai putin confortabil, ai un fel de-l cunosc.
Ești un pic Intrepid About Ideea de intensificarea picior, probabil, înapoi
în sala de clasă, sau care prezintă până la o între secțiune.
Dacă ați fost de programare când ați au fost de sase ani, mai confortabil,
Poate pentru tine.
Și dacă e un fel de aruncare-up, asta e exact ceea ce în între
este menit să fie.
>> Acum, în același timp, pentru o clasă această dimensiune,
aceasta ne duce destul de ceva timp pentru a secțiunii toată lumea, așa că am așa-numitele,
Super secțiuni, venind acest week-end și la începutul săptămânii viitoare,
astfel încât să ia o privire la site-ul cursului pentru cei care sunt desigur larg,
și, de asemenea, filmat pentru cei care nu le pot face.
Și secțiuni se vor începe în săptămâna trei CS50 index zero.
Problema set 0 este deja pe site-ul cursului.
Și dau seama că tu ai nouă zile la sfârșitul acestui semestru.
Astfel încât acesta este un upgrade de la ultima an, când am avut cinci zile întârziere.
>> Deci, dacă vă întrebați, avem nouă seturi de probleme.
Aveți nouă zile întârziere, fiecare dintre care puteți petrece doar o pe săptămână.
Asta face în mod eficient toate problema seturi din cauza vineri,
dar scopul este de a pune un pic bit de presiune psihologică
pe tine pentru a încerca să obțineți lucrurile în joi
pentru că așa cum veți descoperi în curând, pentru bine și la rău, cele mai multe
totul în lumea software sfârșește luând mult mai mult decât tine anticipa.
Deci, ia în considerare un fel de oportunitate pentru a ajuta la
te pentru a viza Joi, dar ia confort în faptul că, da,
totul se datorează vineri.
Și dacă le prezintă pe Joi, asta e minunat.
Nu există puncte bonus sau extra credit pentru îndeplinirea acestui termen.
Este menit să fie doar o cârjă.
>> Și ore de birou, atât aici și în New Haven,
în persoană, în cazul în care doriți să întâlni cu oricare dintre cursurile noastre
predare colegii și AC de asistență.
>> In regula.
Deci, acum, hai să facem acest lucru mai adevărat.
Și pentru un moment se va incepe pentru a obține un pic mai mult Arcane, dar foarte
rapid vineri și saptamana viitoare vom fi
capabil să facă mult mai mult decât am putut până acum în Scratch.
Deci, am introdus cod ultima săptămâni, deși pictural.
A fost piese de puzzle.
Și am oficializat că este ceva numit codul sursă,
dar s-ar părea ca?
Ei bine, părea un pic ceva de genul.
Și, de fapt, doar un fel de a șicana unde putem merge cu acest lucru.
Am de gând să merg mai departe și deschide o fereastră aici,
și eu sunt doar de gând să aleagă New File.
Și am de gând pentru a salva acest fișier ca ceva de genul salut punct c.
Mai multe despre această alegere de cuvinte în doar o clipă.
Și acest lucru este modul în care cineva ar putea du-te despre scrierea unui program.
Include I Standard / O puncte h, int main nule, iar apoi deschis bretele buclat, aproape
bretele buclat, printf Salut virgulă lume, backslash n, punct și virgulă, Salvare, făcut.
BINE.
Am scris prima mea Programul, dar o
pentru a fi incredibil de impresioneaza pentru că atunci când am de fapt
rula acest program, desigur, de primul scris face salut,
și apoi dot slash Buna ziua, iar noi vom du-te prin acest lucru în mai multe detalii
într-un moment, asta e tot ce face.
Nu pop deschis orice ferestre.
Ea nu face nimic în special fantezie.
Tot ce face este ceea ce am spus la face, dar cum ajungem la asta?
Și cum putem construi pe asta?
Ei bine, hai să introducă câteva concepte diferite aici.
>> Deci unul, suntem pe cale de a începe folosind un program numit un compilator.
Există un compilator pentru Mac OS, Windows, Linux, orice număr de sisteme de operare,
iar noi vă vom introduce în curând la mediu care va fi folosit,
dar un compilator este doar un general termen de o bucată de software
care ia codul sursă și produce cod obiect din ea.
Cu alte cuvinte, dacă au ca sursa de intrare
cod, ceva de genul ceea ce tocmai am scris, se produce în cele din urmă cod obiect.
Și cod obiect este de fapt doar un mod fantezist de a spune care va fi afișat
lui zero și cuiva.
Cu alte cuvinte, sursa cod, chiar dacă este
O să se uite un pic Arcane, și un pic mai puțin prietenos
decât Scratch la prima vedere, este cel puțin ceva
că noi, oamenii, pot înțelege.
Intr-un fel de arată și sună ca Engleză chiar dacă este foarte succint.
Întrucât programarea în zero, și cuiva, ca predecesorii nostri au avut de a face,
acum câțiva ani, nu a fost o în special distracție provocare.
Și totuși, aceasta este ceea ce calculator încă înțelege.
Deci, compilator ne devine din codul sursă pentru codul obiect.
E ca deschiderea unui fișier cu compilator, și atunci când îl salvați,
te acele zerouri și cele.
Deci, vom vedea cum se face că într-o clipă.
>> Dar să încercați acum să ofere un punte de legătură între săptămâna trecută și acest lucru,
astfel încât chiar ca suntem închis pe lucruri cum ar fi acolade,
și punct și virgulă, și paranteze, și toate acestea interesant intelectual
aspecte ale programării, care foarte înțeles excursie pe oameni de timpuriu,
dau seama că toate ideile astăzi, sunt la fel ca ultima.
Deci trecut, am văzut acest exemplu aici, programul Hello World.
Ei bine, incepand de astazi, daca vrem să pună în aplicare aceeași programul,
se va arata o ceva de genul asta.
Si vom explica înainte de mult timp ceea ce Int, și principala, și gol, și toate astea
este, dar cel puțin eu văd aici deja familiar Hello World.
>> Între timp, lucruri cum ar fi funcție, salut,
este foarte simplu va fi un declarație foarte simplu ca asta.
Printf salut lume, cu unele citează, cu un backslash,
cu un punct și virgulă, dar mai mult pe faptul că de vină.
Loops, între timp, aceasta este o buclă care, Desigur, spune hello world pentru totdeauna,
și aceasta se va arata o puțin ciudat decât în ​​ultima,
dar dacă spun ceva cum ar fi, în timp ce adevărat,
posibilitatea de a imprima apoi pe Bună ziua lume din nou și din nou și din nou și din nou.
Și apoi, după cum puteți fel de a începe pentru a deduce de aici,
această convenție de a folosi acolade este un fel
de ca îmbrățișând alin de cod acolo.
Linia de cod printf mult ca piesa de puzzle galben deasupra.
Deci nu vom să spun pentru totdeauna, vom spune în timp ce adevărat,
dar vom vedea de ce, care este în doar un pic.
>> În același timp, dacă avem o buclă de genul asta, în cazul în care se repetă ceva o finit
ori numărul, aceasta de asemenea este de gând să ia un pic de Noțiuni de bază utilizate
, dar este de gând să spun pentru Int i devine zero i mai puțin de 10, am ++,
și apoi din nou printf.
Dar nu va fi modele.
Iar pentru cei dintre voi familiarizati cu AP Informatică, sau Java,
sau orice număr de alte limbi, aproape toate aceste constructe
până acum ar trebui să arate cea mai mare parte familiar.
>> Deci variabilă.
Deci, aici este un simplu fragment Scratch că stabilește o variabilă numită contra la zero,
și apoi spune totdeauna contra, și atunci se schimbă contra câte unul.
Deci, începe de la zero, și apoi unul, doi, trei.
Ei bine, cum s-ar putea ca, in vom introduce acest nou limbaj puțin la fel de?
Int contra este egal zero,, în timp ce este adevărat, care
este aceeași idee de la înainte de a face ceva pentru totdeauna,
și eu sunt doar de gând să printf.
Și acum e cam ciudat, la sută i, ci mai mult pe faptul că pentru a veni,
dar aceste idei sunt exact la fel.
Doar acum avem de a adera la sintaxa că computerul este
O să ceară de la noi.
>> Expresie booleană, ceva de genul sx mai mic decât y, sau x mai mic decât y,
și y mai mică z.
Se va arata ceva ca aceasta, cu paranteze doar
ca în matematica pentru o bună măsură la doar asigură că ordinea operațiilor
este la fel de ne-am propus.
Și acum, condiții.
Deci, dacă X mai puțin de y, spune x este mai mic decât y, altfel dacă x este mai mare decât y,
spune x este mai mare decât y, în caz contrar logic, X trebuie să fie egal cu y.
Deci s-ar putea să pună în aplicare tu ceva de genul asta in Scratch,
sau s-ar putea să pună în aplicare te o în această sintaxă.
Și din nou, acolade sunt un fel de oferindu-ne aceeași formă ca și puzzle-ului
piese, dar sintaxa, acum, este, probabil, Încep să urmeze unele modele.
>> Deci, ce face acest lucru ne da aici?
Deci ne-am întors apoi la programul nostru principal.
Să fapt, acum, face ceva cu el.
Deci, în acest prima line vedem includ ascuțite,
I Standard / O, punct h, și apoi unele unghi ciudat
paranteze de mai jos care. int main nule, iar apoi printf Salut lume.
Deci, să ia doar un pas.
Cineva care nu a mai programat inainte, cel puțin explica unul dintre aceste linii.
Folosind Poate că unii dintre jargonul săptămâna trecută.
Ce este printf, de exemplu?
Da.
>> Audiența: [inaudibil]
>> David J. MALAN: Da.
Este o funcție, sau o declarație, de la terminologia de săptămâna trecută.
Și este o acțiune care face ceva.
Acum această funcție, sau această declarație, nu
se pare să ia un fel de intrare?
Și în ce sens se face par să ia de intrare, în cazul în care așa?
De intrare, ceea ce vreau să spun cu asta?
Da.
>> Audiența: [inaudibil]
David J. MALAN: Da.
Deci, Scratch de câteva piese de puzzle în cazul în care îl puteți parametrize.
Ai putea spune repeta bloca câte ori să se repete,
astfel că a fost o intrare de soiuri, și la fel ca Scratch
a avut un pic de substituent alb pentru numărul pe care tastați,
tot așa vom folosi în acest paranteze lumea textului
pentru a ne da ca formă circulară în care ne putem conecta de intrare nostru.
La urma urmei, zeci de ani în urmă atunci când această limbă, numit C,
a fost inventat nimeni anticipat este unul dintre noi,
acești câțiva ani mai târziu, ne-ar doresc o functie care spune salut.
Corect?
Ar fi frumos dacă ar exista o piesa de puzzle, sau un Cuvinte cheie,
care se numește salut, că literalmente doar spune salut.
Dar nu avem nevoie de asta.
Putem avea ceva mult mai mic nivel, ca un print generic
comandă, care ia de intrare, și imprimă orice vrem.
Deci observați acum modelul care va începe să apară.
Paren deschide, închide paren is aparent îmbrățișând de intrare,
și apoi văd dublu citate la ambele capete.
Există încă backslash ciudat n, dar sperăm acum te
poate începe pentru a vizualiza cel puțin că printf este de a lua într-o formă de intrare.
Nu la fel de ușor de utilizat ca Zero, dar e doar
ca au conectat într-o valoare acolo.
>> Bine, acum hai fapt face ceva cu asta.
Deci unii dintre voi s-ar putea ști de la având cumpărăturile clasa înainte,
stat de vorbă cu prietenii, care de mai mulți ani
am folosit ceva numit aparatul CS50.
Acest lucru a fost un termen care descrie o tehnologie numit mașina virtuală, care
este o bucată de software care dvs. predecesorii ar descărca de pe
site-ul cursului gratuit.
Ei ar descărca o bucată gratuit de software numit hypervisor,
ceva numit ca VMware, sau VirtualBox, sau orice număr
de alte instrumente, precum și pe Mac sau PC lor sau orice calculator au avut anul trecut
și în ultimii ani, au ar dubla clic pe o pictogramă
pentru a rula acest software numit hypervisor.
Și apoi în interiorul acestui program ei ar deschide aparatul CS50.
Iar efectul a fost că dacă un predecesor de-al tău
a fost care rulează Mac OS sau Ferestre, el sau ea, apoi
a avut ulterior o fereastră nouă pe teritoriul lor ecran rulează mediul CS50 lui.
Deci, o mașină virtuală vă permite să rulați un Sistemul operează în interiorul altuia,
și că este exact ceea ce am făcut.
De-a lungul cea mai mare parte WE curs utilizați un sistem de operare numit
Linux, în mod specific Ubuntu Linux, și acest
este un mod foarte frumos în ultimii ani de asigurându-vă că toată lumea în curs
doar a avut același mediu.
Și vă puteți folosi orice fel de calculator pe care doriți de fapt.
Printre dezavantaje, deși, au fost a fost ca doi gigabytes
pentru a descărca acest lucru.
Ea nu a funcționat în mod necesar super-bine pe oameni ale căror calculatoare care poate doar
a avut un concert sau cam asa ceva de RAM, sau nu prea multe GHz de viteza procesorului,
și așa mai departe în acest an, pentru precum și alte motive,
am fost tranziția la acest mediu.
Așa-numita CS50 IDE, care este bazat pe software open source,
și o platformă de așezare că o companie numita Cloud9
sprijină, în Europa, care ne permite să avem, în esență,
același mediu exact ca în ultimii ani, dar în așa-numitul nor.
>> Deci, ce este norul?
Ați făcut clic, probabil, pictograma pe Mac sau PC.
Ce este norul?
Da?
Un pic mai tare.
Da.
E doar o grămadă de calculatoare altă parte că a stoca date și a alerga
software și altele asemenea.
Deci, este într-adevăr doar la cuvântul DE jure de a descrie [? inchiriabila?]
computere care traiesc in alta parte.
Că tu, le nu dețin neapărat.
Așa că atunci când datele tale, sau dvs. Programele sunt în nor,
doar înseamnă că este pe cineva computere altceva lui în altă parte,
și nu, cel mai probabil, pe dumneavoastră laptop fizic sau desktop.
Și așa mai departe asta CS50 IDE acum este.
>> De acum înainte veți merge la o anumită URL pe care le va introduce
la, în problema set 1, mai târziu în acest săptămâni, care va apoi, la logare,
vă dau acest mediu.
Si mult Scratch ca a avut o câteva panouri diferite implicate,
la fel IDE CS50 au exact acest lucru.
Pe partea de sus partea stanga aici, ești merge pentru a vedea un browser de fișiere familiar.
Deci, oricare dintre fișierele pe care le pus în acest mediu
sunt doar de gând să fie listate acolo.
Fișiere și foldere.
Pe partea de sus chiar aici, ai de gând pentru a vedea un loc
în cazul în care vă puteți scrie de fapt codul.
Inițial în C, mai târziu, în termen în PHP și JavaScript,
și, probabil, pentru finală proiecte, Ruby sau Java sau Python
sau orice număr de limbi sunt sprijinit în acest mediu.
Nu este deloc legat la CS50 specific.
>> Și apoi în colțul de jos aici, mai ales pentru cei mai confortabil,
ai ceva numit-o fereastră terminal.
Și această fereastră terminal permite sa execute orice comanda pe care le
doresc în acest mediu cloud.
Acesta vă permite să instalați nici un software suplimentar
pe care doriți pentru că ai așa-numitele rădăcină, sau de administrator privilegii.
Deci, cu alte cuvinte, chiar dacă această este în cele din urmă a găzduit în nor,
și chiar dacă ne-am simplificat-o anumită măsură
în mod implicit, la propriu introducerea, Datorită Dan Armendariz, și Dino,
și Dan Bradley din echipa CS50 lui peste trecut mai multe luni, un mod mai puțin confortabil
mod care ascunde o mulțime de distrageri inițial confuz.
Totul există la reprezintă un sistem tipic de calculator
pe care le-ar putea utiliza în lumea reală.
>> Deci, ce inseamna toate acestea, și ceea ce putem face de fapt cu ea?
Să aruncăm o privire la de fapt un program de.
Deci, am de gând să deschidă mediu real aici,
care este doar Chrome nostru browser-ul, care ar putea fi Firefox,
ar putea fi Internet Explorer, sau un alt browser, de asemenea.
E plin testati aici pentru moment.
Și vreau să tachineze de fapt în afară ceea ce acest program a fost.
Deci, haideți să aruncăm o privire, prin mărirea până top, la ceea ce am făcut, și cum am ajuns aici.
Deci, aici e exact cei aceleași linii de cod.
Deci aceasta este declarația, așa cum ați menționat mai devreme.
Funcția care spune salut.
Acolade, pe linie cu patru și șase linie,
probabil un fel de plic că linia de asocia
cu esența programul meu.
Deci, într-adevăr, acest cuvânt cheie principal, că e acolo sus pe linia trei,
vă puteți gândi că ca echivalent de că, atunci când pavilion verde apasat,
bloca în Scratch.
Deci, asta e tot ce avem aici, este atunci când pavilion verde apasat, imprimare, sau spun,
Buna, lume.
>> Dar să luăm o presupunere, acum, la ceea ce aceasta prima linie, mai Arcane, este.
Sharp includ, în unghi deschis Suport, I Standard / O dot h,
închide suport unghi.
Ce se poate face ca, mai ales dacă ați programat
înainte într-o altă limbă.
Da?
>> Audiența: [inaudibil]
David J. MALAN: Da.
Exact.
Deci, aceasta este oferindu-vă acces la o bibliotecă, ca să spunem așa, de funcții.
Și o bibliotecă de funcții este funcții care altcineva
a scris, fie recent sau mult timp în urmă, astfel încât să
nu trebuie să reinventeze roata.
De exemplu, noi nu Trebuie să știi, în 2015,
cum să scrie cod care pune un personaj pe ecranul meu.
Altcineva a dat seama că cu funcția printf
astfel încât să pot sorta de abstract departe de asta, sau un strat
pe partea de sus a lui sau a ei cod, iar acum ia doar
de la sine că orice program scriu poate imprima ceva pe ecran.
Deci, această primă linie acolo, în prima etapă include așa-numitul dosar antet
pentru biblioteca standard.
Deci vezi, limba care ne acum de lucru
a avut o biblioteca standard cu o mulțime de funcții.
Printf este unul dintre ele, și că prima linie de cod
înseamnă-mi dea acces la aceste funcții, astfel încât să
Nu trebuie să reinventeze roata.
>> Acum să mergem la fereastra de jos și de a face exact ceea ce am făcut înainte.
Acum o clipă, atunci când am fost vâjâit prin codul,
tastați-l pentru prima dată, Am scris foarte repede, să salut.
Ce-a fost asta vorba ați ghicit?
Ce făceam?
Da?
Nu conteaza.
E bine.
Da.
Audiența: Compilarea ea.
David J. MALAN: Da.
Acesta a fost doar compilarea.
Corect?
Chiar dacă acest lucru este complet necunoscut pentru tine, e destul de limba engleză cum ar fi.
Cu siguranță că nu e zero și cele, așa că încă
trebuie să-l rulați prin care așa-numita Programul, un compilator, care va
să-l ia ca intrare și de ieșire a produce.
Și cel puțin, pentru moment, în acest mediu Linux,
dar acest lucru nu este condiție prealabilă, acest lucru este doar în cazul în care vom începe,
interacționați cu general sisteme informatice, cum ar fi acest
printr-o linie de comandă așa-numitele.
Deci, cu un Clipește prompte și tastatura,
și nu atât de mult mouse-ul, și nu atât de mult ferestre și pictograme și meniuri,
mai degrabă totul este textual.
Și chiar dacă acest lucru se simte, la prima vedere, probabil, ca un pas înapoi,
este de fapt o mult mai mod puternic și expresiv
de a controla un calculator mai ales ca si tine,
le să devină mai confortabil la mai puțin.
O să vă permite să facă o mulțime mai multe lucruri decât doar ce Microsoft
sau Apple vă permite de a face cu sistemul lor de operare grafic.
>> Așa că atunci când am lovit Enter, acum, nu se întâmplă nimic de data asta
deoarece se pare că Programul salut este de până la data de.
Și ceea ce a fost comanda Am fugit după aceea?
Dot slash salut, și salut lume.
Acum, haideți să facem un pas spate pentru o clipă.
Se pare că face salut este doar o mod simplificat de a elabora un program.
Hai să introducă o bucată de jargon,
dar apoi se îndepărtează din ea, deoarece nu este
tot ce interesant în scopuri de astăzi.
Compilatorul vom începe să utilizați este numit zăngănit, pentru limbajul C.
Și aceasta este un program care este a alerga doar cum am făcut la linia de comandă acolo.
Și așa, dacă vreau să compila un program pe care am
au scris într-un fișier numit salut dot C, am literalmente tip doar zăngănit salut C
intra.
>> Lucru amuzant este, din motive istorice,
dacă nu se specifică Numele programului
că vreau să ieșire, dacă nu-mi place specificați un nume de fișier pentru acele zerouri
și cele, un foarte ciudat cu ani în urmă Convenția a fost adoptată
în cazul în care m-am simtit un fel de răspuns bun la momentul respectiv,
bine hai să numesc în mod arbitrar prim program am compila un punct afară.
O este pe primul loc în alfabetul.
Out, e de ieșire.
Deci, vom numi programul în mod implicit un punct afară.
Și asta e bine pentru că dacă vreau să rula programul în acest text pe bază de
mediu, am tip dot slash un punct în a intra.
Și aceasta ar fi exact ca înainte.
Deci, haideți să vedem că foarte repede.
>> Deci, dacă mă întorc pentru a-mi codul sursă în CS50 IDE,
și eu în schimb face acest lucru, zăngănit salut pat c Introduceți, aviz nimic nu pare să se întâmple,
dar aproape întotdeauna în acest mediu Linux,
când nimic nu pare să se întâmple rău, că înseamnă ceva bun sa întâmplat de fapt.
Dacă nu vedeți o eroare mesaj, totul este, probabil, bine.
Și într-adevăr, dacă acum fac dot slash un punct out intra, am alerga aceeași programul meu.
Încă mai am programul salut de la mai devreme pentru că, într-adevăr, e
Va fi atât de mult mai frumos doar tip face în loc de amintindu-
aceste incantații de comenzi, dar să vedem cum putem
s-ar putea îmbunătăți pe asta, cu toate acestea.
>> Deci, aceasta este comanda pentru a compila codul.
Aceasta este comanda pentru a rula codul compilat ulterior.
Cum pot specifica un nume de fișier?
Ei bine, hai sa introducă inca o jargon.
Când ești în această mediu bazat pe text,
ai de gând să doriți să specificați lucruri numite argumente în linia de comandă.
Care este doar un mod de fantezist de a spune, Cu alte cuvinte, la solicitarea care
tweak comportamentul, indiferent de program rulați.
Deci în mod specific programul eu sunt funcționare, prin tastarea zăngănitul numele,
este programul numit zăngănit.
Astfel încât acesta este sau scoala veche echivalent de dublu-click
pe Microsoft Word sau icon unele program.
Eu în schimb doar tastați numele, dar în această versiune a comenzii,
Atunci am cratimă O spațiu salut spațiu salut punct c.
Deci, chiar dacă nu ați mai a jucat în această lume, înainte de,
să ia doar o presupunere ce nu cratimă o salut fac?
Sau ce nu-l spune zăngăni să facă?
Da.
>> Audiența: [inaudibil]
David J. MALAN: Da.
Aceasta stabilește doar ieșire fișierului de a fi salut în loc de sillier un punct afară.
Și, într-adevăr, să încercăm asta.
Deci, dacă acum fac, în primul rând să facem acest lucru, R m salut.
Asta e elimina.
Și se va spune elimina fișier regulat salut, care
este inutil arcane, dar pur si simplu mijloace vrei să ștergeți fișierul,
și I y tip de da.
Și observați, dacă ați fost în partea de sus uite stanga, a disparut de acolo.
Lasă-mă să fac acum zăngănit bord o, și Am de gând să merg mai departe și de a face salut,
în toate capacele, salut punct c.
Acum, dacă fac slash dot Bună ziua, ce v-ați aștepta?
>> Poate e cazul sensibil.
Poate că nu e.
Sa vedem.
Nu există un astfel de fișier sau director.
Și putem fel de ieftin de sa ne uitam la stânga sus.
Ce am făcut, evident, a salva programul ca?
Toate capacele salut.
Deci, într-adevăr, asta se întâmplă pentru a face o diferenta.
Deci, acum Bună ziua lume este din nou.
Acum, acest lucru este tot fin și bun, și foarte mintea-amorteala,
la fel de get împotmolit în aceste detalii, dar a le înțelege
este bun.
>> Tastarea out aceste din ce în ce incantații lungi
nu va fi deosebit de distracție, astfel încât oamenii din lume
a inventat un alt program, acum câțiva ani, numit
face, că pur și simplu vă permite să tastați make,
numele programului doriți să faceți, și să facă
este inteligent în care va arăta în dosarul curent, alias director,
și, dacă aveți un fișier numit salut punct C,
că este fisierului, va compila pentru tine într-un program numit salut.
Deci, este un mod mult mai simplu de a face comenzi mai criptice
că am făcut mai devreme.
Si ne-am pre-configurate CS50 IDE să știe
că ar trebui să facă o liniuță și un număr de alte steaguri, sau argumente în linia de comandă,
că vom vedea în scurt timp.
>> Dar să acum de fapt, nu ceva mai interesant.
Doar tastarea în lume Bună ziua tuturor timpul nu este tot ceea ce convingătoare.
Așa că lasă-mă să merg mai departe și schimbare acest program și spune, salut David.
Acum am de gând să meargă în jos aici.
Am de gând să merg mai departe și de a face să salut.
Și din nou acum ce vezi face este care vă arată mai mult
secvență de comenzi care este face pentru că ne-am pre-configurate
în felul acesta, dar am nevoie nu vă faceți griji pentru acum
cum îi ce faci alte decât este dot compilarea slash salut, salut lume.
Ce s-a întâmplat?
Da.
>> Audiența: [inaudibil]
>> David J. MALAN: Da.
Deci, greșeală Noobie.
Am observat acest lucru este super subtil, dar asterisc aici, în fila,
doar înseamnă că nu l-au salvat, și browsere și alte programe
face acest lucru, uneori.
Deci, de control sau de comandă s s ar trebui să-l salvați.
Acum lasă-mă să merg mai departe și re-rula programul.
Recompilat.
Corect, așa că este un proces cu mai multe etape.
Niciunul dintre care este deosebit de complexă, dar orice moment vom schimba dosar,
avem nevoie pentru a schimba materialului rezultat zero și cele, și slash punct salut.
Wow.
Deci acest lucru este foarte underwhelming că ne-am imprimat acest lucru.
Să facem lucrurile un puțin mai dinamic, acum.
>> Ei bine, se pare, că place Scratch, C suportă variabile.
Și se pare că, dacă vrei pentru a avea o variabilă care stochează,
nu un număr ca și cum am de obicei facut cu Scratch,
dar, ca un cuvânt, sau un fraza, sau un nume, te
poate specifica o variabilă să fie de tip string.
Deci, vom vedea mai mult de acestea într-o clipă,
dar se pare că C, și o mulțime de limbi, cum ar fi ea,
au tipuri foarte specifice de variabile.
Nu e la fel ca algebra, în cazul în care veți obține o X, Y, Z și
și acestea sunt doar întotdeauna numere, într-un limbaj de programare
puteți stoca numere, puteți stoca caractere individuale,
ai putea stoca cuvinte întregi, ai putea stoca imagini întregi, fișiere de sunet întregi,
și altele asemenea.
Deci, avem nevoie pentru a specifica ce tipul variabilei noastre este.
Și prin convenție am de gând să-mi sun s variabile doar pentru că este succintă,
și s reprezintă șir.
>> Și apoi am de gând pentru a stoca în interiorul acestei variabile,
la fel ca cu Scratch atunci când folosesc bloc set,
Am de gând să utilizați operator de atribuire în C,
care destul de frumos este egal semneze, dar semnul egal face acest lucru.
Se mișcă ceva din dreapta în în partea stângă a expresiei.
Deci, ceea ce am făcut, să fie clar în linia cinci, este am declarat o variabilă.
Am spus la calculator, da-mi memorie pentru o variabilă, o numesc s,
și să știe dinainte că am de gând să fi punerea un șir în ea.
Și un șir este doar o secvență de caractere.
E un cuvânt, sau o frază, sau punctul, dar este o secvență de caractere.
Nu e de numere.
Ce string Am de gând să fie punerea în variabila?
Ei bine, se pare că citez încheiat citatul, "Hannah".
Acum observați modelul care este în curs de dezvoltare.
Există o expresie stanga.
Există o expresie dreapta, separate de semnul egal.
Și să ia doar o presupunere, în cazul în care nefamiliare cu toate acestea,
cu ceea ce punct și virgulă face.
Ce o face, probabil, pentru noi?
Da?
>> Audiența: [inaudibil]
>> David J. MALAN: Da.
E doar de încheiere a liniei.
Corect?
Computerele vor să fie fără menajamente a spus, literalmente, ce să fac.
Ca și unt de arahide și jeleu exemplu sandwich,
dacă nu se specifică exact ceea ce intenționați,
aceasta ar putea fi lăsat să judecata sau erori.
Punct și virgulă înseamnă, asta este pentru această comandă.
Este fiind foarte precise, și este un lucru foarte ușor să plece de pe.
Deci, acum acest program nu pare să fi comportă în mod diferit, până când am
face mai dinamic.
Deci, mai degrabă decât de greu ar putea propria mea nume, lasă-mă să pun o valoare substituent.
Și se pare că, și știu că acest lucru de a fi citit documentatia,
și folosit funcția pentru ani, care printf a fost proiectat pentru a fi dinamic.
Nu trebuie să știe în avans ce cuvinte vrei să în ea.
Puteți avea loc o substituent, cum ar fi la suta s, care
este de gând să-i spuneți calculator, a pus un șir de aici.
>> Care string vrem să pus acolo?
Will pare că între aceste paranteze, care amintesc, delimita
de intrare la o funcție, dacă aveți virgulă lista de lucruri separate aici,
am de fapt, trece în mai multe intrări la o funcție.
Deci, la fel ca unele Scratch blocuri, nu s-ar putea
au jucat cu ei pentru proiectele dumneavoastra dar sau la toate,
unele blocuri Scratch au două intrări.
Două cutii albe vă puteți tip numere sau cuvinte în.
Deci, pentru a nu C au funcții cum ar fi printf care poate dura două intrări.
Și din nou, acest virgulă este separându-le.
Deci, în limba engleză, din nou, chiar dacă nu ați programat înainte,
de care printf logica este o funcție, se efectuează în două intrări, dintre care unul
este un substituent, ce s-ar speri printf este de gând să facă cu această intrare?
O să salut Hannah, sperăm.
Deci, pentru a face acest lucru avem nevoie pentru ao salva.
Am de gând pentru a micșora.
Am de gând să mă întorc aici și spune, să salut intra.
Oh.
Ceva nu e în regulă, și de fapt, acest lucru este destul copleșitoare.
Am șase linii de cod și ca 12 linii de erori.
Deci, aștept cu nerăbdare acest lucru.
Deci, ce se întâmplă aici?
Deci cel mai bun Regula aici, mai ales atunci când sunteți la început,
nu te distras de lucrurile în partea de jos.
De fapt, foarte în mod deliberat am doar derulate până
deoarece deseori, un calculator este nu tot ce strălucitoare a unui dispozitiv.
O să obține confuz.
În cazul în care vede un lucru care nu înțelege,
s-ar putea confunda alte linii de cod ca incorecte,
chiar dacă ele sunt foarte bine.
Deci, vrei mereu să lucreze de sus în jos, prin erorile.
Și, desigur, aceasta este super-arcane în acest moment.
>> Eroare, utilizarea nedeclarată șir de identificare.
Ti-am să spun standard?
Nu, am vrut să spun șir.
Și e îndreptat la, poate e un typo.
Un fel de, spell-check-in-o mod foarte geeky, dar motivul aici,
și veți ști acest doar prin practica, este
că se dovedește că șir nu există în C. De fapt, C
este un limbaj deosebit de vechi, și este nivel foarte scăzut,
și nu o mulțime de caracteristici care s-ar putea au crescut
cu dacă aveți, de fapt, programat în Java, cum unii dintre voi au,
dar se poate învăța lucruri noi.
Și într-adevăr, am făcut acest CS50, chiar dacă până la sfârșitul semestrului,
toate aceste roți de formare vor fi fost scoase,
ceea ce facem în aceste primul câteva săptămâni
inițial este, de asemenea, ne-am să includeți CS50 punct h.
Care este un fișier header.
Mai mult pe faptul că, în viitor.
>> Este un fișier care conține funcții care le-am scris pentru tine.
Și printre aceste funcții este funcții pentru a obține de intrare
de la utilizator, cum ar fi siruri de caractere, și numere și numere reale, și mai mult.
Dar ea are, de asemenea, câteva comenzi rapide.
Acesta definește un Boolean ca un tip de date.
C nu are adevărate sau false.
Dar putem da noțiunea de adevărat sau fals, prin această bibliotecă.
Și, de asemenea, nu are un șir construit până când includem această linie.
Deci, această linie de cod spune compilator, hei, zăngănit, uita-te
în acest dosar pentru un întreg grămadă de cod care CS50
a scris astfel încât cineva folosind acest fișier
poate lua pentru au acordat Caracteristici au adăugat.
>> Deci, acum lasă-mă să merg mai departe și a goli ecranul,
și dacă curios Spun doar de control l de fiecare dată pentru a goli ecranul,
sau aveți posibilitatea să tastați clar.
Mă duc să meargă mai departe și acum Tipul face Bună ziua, și totul este bine.
Încă o ieșire arcane, dar nu este un mesaj eronat.
Acum, dacă fac dot slash salut, și ca o deoparte, slash punct este familiar pentru majoritatea.
Aceasta înseamnă doar, mijloace dot directorul curent.
Deci, dacă ați folosit vreodată DOS, sau Linux, Unix sau
s-ar putea să fi făcut ceva cum ar fi CD dot dot, în cazul în care
dot dot înseamnă merge înapoi în timp, du-te înapoi sau, sau mai sus
în directorul.
Dot înseamnă doar uita-te la directorul curent.
Vreau salut, care este chiar aici.
Și într-adevăr, acum se spune salut Hannah.
Și dacă l-am schimba din nou Maria, recompilați
s-ar face salut, slash dot salut, programul continuă schimbare.
>> Dar acest lucru este încă o Programul destul de stupid.
Dacă vreau să navă acest program, sau da la un prieten,
sau da Maria sau Hannah pentru care contează, e în regulă.
Pot să-l personaliza pentru amândoi, dar niciodată nu va fi dinamic.
Ei nu se poate schimba după ce a fost compilat în jos, în aceste zerouri și cele.
Deci, ceea ce am făcut ceva mai inteligent?
Ce se întâmplă dacă, în loc de hard-codare în programul de numele acestei persoane,
Ce se întâmplă dacă ne-am lua șirul la cerere?
>> Deci, cu alte cuvinte, lasă-mă să fac asta.
Am de gând să recompilați acest program.
Și lasă-mă să măriți în partea de jos acum.
Face salut punct slash salut.
Acum nimic nu se întâmplă.
Putem obține un voluntar rapid pentru a face ceva se întâmple?
Haide sus.
Care e numele tău?
>> PANCHO: Pancho.
>> David J. MALAN: Pacho?
Haide sus.
Odată ce ai ajuns aici, aceasta este O să fie foarte underwhelming,
dar este mult mai interesant decât mine tastarea.
Dacă doriți să mergeți mai departe și tastați dvs. numele, am făcut acest program doar pentru tine.
Doar tastați numele tău.
Enter.
Minunat.
Bine, vă mulțumesc foarte mult.
>> PANCHO: Vă mulțumesc foarte mult.
>> David J. MALAN: OK.
>> [Aplauze]
>> Asta a fost foarte drăguț.
Poftim.
Ce am făcut?
Așa că am în cele din urmă, cel puțin, a făcut acest program dinamic.
Acum este încă sigur prin design underwhelming,
dar avem în cele din urmă capacitatea de acum pentru a scrie cod în avans, cu mult
ca autorii printf, și apoi dinamic
adapta bazează pe intrările suntem predat, fie de către programator,
sau de om care de fapt interacționează cu programul.
Deci, haideți să încercați de fapt acum pentru a face alte câteva constructe
și să vedem dacă nu putem face programele se mai sofisticate.
Așa că hai să mergem mai departe și în loc de scris acest lucru o de la zero,
Am de gând să meargă în de astăzi codul sursă, și toate acestea
este disponibil pe cursului site-ul, și aveți posibilitatea să glisați și fixați-l
în propria dvs. mediu vin vineri dată problemă
set 1 vă oferă instrucțiuni, sau ai putea
fac la linia de comandă ca bine, dar mai mult pentru a veni în p set 1.
>> Să vedem ce e în acest program numit aici, vipera punct c.
Acum am comentat deja , dar ce mai e nou?
La prima vedere, ceea ce linie de cod este absolut nou?
Probabil că nu fundamental necunoscut acum.
>> Audiența: [inaudibil]
David J. MALAN: Da, astfel int x este egal cu a lua n.
N-am mai văzut nimic din toate astea înainte, dar este, probabil, int
simbolul pentru ce fel de variabilă, [? din?] un număr întreg.
Deci, int pentru întreg.
E doar a fi mai succint. x este doar arbitrar.
x și y și z sunt încă destul de rezonabil pentru numere,
dar, în general, vom folosi cuvinte o dată Programele noastre de a obține mai complexe.
Obțineți Int, desigur, la fel ca șir get,
este, probabil, mergi la a lua un întreg de la utilizator,
și apoi vom face acelasi lucru cu y.
Și se pare că, chiar dacă acest lucru Ultima linie, 24, pare mai complex,
se va spune suma acestei și că este aceasta altceva.
>> Și Notă sută i Probabil se referă la ceea ce?
Ce rol are la sută Am aparent servi?
E doar substituenți.
Corect?
La sută s fost de coarde, la sută i este pentru întreg.
Nu va fi la sută f pentru plutitoare valoare punct, care
este doar un număr, cu un punct zecimal.
Cu alte cuvinte, un număr real.
Așa că haideți să de fapt, compila acest program real rapid si fac vipera.
Hopa.
Ocazie.
Deci observați aici, în tot acest timp de utilizare meu nume pentru acest cont este jharvard.
Eu sunt în IDE CS50, aka IDE50.
Și acum, în albastru de aici, este o mențiune, dar din mediul înconjurător, de unde sunt.
Și, de fapt, dacă aș zoom până la partea de sus aici, observați că am un IDE50
și văd acest cuvânt, dacă un fel de rândul său, capul într-o parte, spațiul de lucru.
Pe scurt, faptul că Văd spațiu de lucru slash tilda
înseamnă că în acest text mediu de comandă pe bază de,
Eu sunt în echivalentul text al acest grafic dosar aici.
Așa că, atunci când fac slash dot vipera, se spune nici o regula
pentru a face țintă oprire vipera.
Nu știu ce înseamnă asta, dar e rău pentru un motiv oarecare.
Nu există un astfel de fișier sau director este chiar mai clar.
În cazul în care este atunci?
Bazat pe unde am apasat pentru a deschide fișierul anterior.
În cazul în care s-ar putea fi?
>> Este, probabil, în sursă un w, pentru miercuri,
si eu pot vedea, într-adevăr, dacă am deschis asta.
Nu este vipera punct c, dar în acest mediu bazate pe text,
din nou, trebuie să fie foarte explicit.
Dacă vreau să se schimbe în directoare sursa o miercuri, am nevoie să tastați,
cd spațiu sursă unul Miercuri intra și acum
schimbă prompte la da-mi un sfat vizual care
Sunt, într-adevăr, în altă parte în mediul meu,
dar acum pot face vipera, se pare să funcționeze,
dot slash vipera, da-mi un număr întreg.
Unul.
Două.
Suma de una și două este de trei.
Dar dacă nu cooperează, să vedem ce obține Int face.
Dă-mi un număr întreg.
Nu.
Reîncercați.
BINE.
Bine.
50.
In regula.
Deci, în cele din urmă cooperează.
Și asta e o parte din funcționalitatea pe care aceste funcții
poate s-au construit în pentru tine.
>> Deci în interiorul punerea în aplicare de a lua Int, ceea ce de programare
construi din săptămâna trecută este, probabil, în acolo pentru a obliga acest comportament de Retry,
încercați din nou, încercați din nou?
Da, probabil un fel de buclă.
O să se uite sintactic diferit de blocuri Scratch lui,
dar asta e, într-adevăr ceea ce este în interiorul fișierului.
Și într-un timp câteva săptămâni am să de fapt, uita-te la biblioteca CS50
cu privire la ceea ce este în interior, dar nu e o buclă de impunere exact asta.
>> Hai să jucăm un pic prostesc joc aici cu acest fișier.
Condition Zero punct c.
Vom merge la general doar începe numărarea de la zero.
Și am să păstreze defilare trecut unele din lucrurile de la partea de sus.
În albastru aici, delimitată cu toate de aceste stele și slash-uri,
cei dintre voi care programul înainte, ce e asta?
De ce ținem sar peste ea?
Ce?
>> Audiența: E un comentariu.
>> David J. MALAN: Da.
E doar un comentariu.
Acesta este un comentariu pentru oameni pentru a citi, că, în cazul nostru,
ne spune ce numele fișierului este, cine a scris, și ceea ce face,
astfel încât să nu aveți pentru a citi prin codul
să știu ce acest fișier este despre toate.
E doar o prezentare, dar funcțional e irelevant.
Și pot chiar șterge din dosarul meu și nu are nici un impact.
Liniile suculent sunt acestea primele două aici, acum.
void main Int este echivalentul de când nostru steag verde apasat,
așa că o să plece ca să fie pentru ziua de azi, și vom veni înapoi,
în cele din urmă, cu privire la ce Int și gol sunt, dar acum,
observați ce am făcut aici, puteți, de asemenea,
dacă aveți o în conformitate comment, dacă aveți
Un gând doriți să partajați despre un anumit linie de cod,
convenție în C este de a face slash slash, și apoi câteva cuvinte succinte,
nu o propoziție completă, în general, nu un paragraf,
care explică doar pentru tine, sau dvs. TF, sau alți cititori sau colegi,
ceea ce codul este de a face.
Deci, mai degrabă decât trebuie să te uiți la acest lucru și deduce de la liniile
nouă și 10, ceea ce este acest sens, în conformitate opt
Doar dau un comentariu la cere utilizatorului pentru un întreg,
atunci nu trebuie să ne gândim prea mult despre ceea ce linii nouă și 10 sunt.
Știu doar că asta e ceea ce colectiv ce fac.
>> Cum?
Ei bine, aici e prompt.
Aici e obtinerea de Int.
Și pe baza anterioară comportament, se pare ca get Int
este suficient de inteligent pentru a vă asigura că cooperează uman și dă
un număr întreg.
Dar acum vedem aceasta.
Și aceasta este o reminiscență a Scratch.
Sunt susținând că eu sunt analiza de intrare utilizatorului,
dar oarecum inexact.
Și acest lucru se pare că în C este modul ne exprimăm o în cazul în care altcineva, o sucursală,
o furculiță în drum, dar am spune oarecum inexact.
Ce este bug-ul în acest program?
Despre mai în spate?
Da.
>> Audiența: [neauzit] zero.
>> David J. MALAN: Da.
Deci, dacă am de tip în zero să considerăm exact acest caz caz, sau de colț,
dacă vrei.
Deci, dacă am de tip în zero care dintre blocuri este de gând să se pare că a apuca?
IF sau altcineva?
Else, și va spune, ai ales un număr negativ.
Și într-adevăr, zero, nu ar trebui să fie pozitive sau negative,
și astfel încât să fie eronat.
Asta ar fi un bug.
Deci, cum putem rezolva această problemă?
Cineva care nu a programat înainte?
Vrei--
>> Audiența: [inaudibil]
>> David J. MALAN: Retragerea?
>> Audiența: [inaudibil]
>> David J. MALAN: Oh, ai?
Cineva care nu a programat înainte.
Doriți să încercați să vă parte la Acest lucru, în tricoul roșu?
Haide sus.
Oh, da, haide sus, dacă nu te superi.
Astfel încât să nu au programat înainte, care e numele tău?
LAUREN: Lauren.
David J. MALAN: Lauren, bine.
Deci rezolva această problemă pentru noi.
Nu am mai văzut C, probabil, și, probabil, nici o altă limbă.
Deci, rezolva acest program pentru noi.
Mă bucur să te cunosc.
Nici o presiune.
LAUREN: Da.
>> David J. MALAN: Dar, din nou, în cazul în care acest lucru jocuri de noroc merge conform planului,
MENIUL aici va fi, doar, din nou, pentru a începe
pentru a observa modele și deduce din sintaxa existent
Cum altfel s-ar putea exprima te le nu joc de cuvinte destinate, în scopul de
pentru a captura unele scenariu suplimentare.
Așa că am să spui altceva, dacă.
printf, bine.
Și observați cu CS50 IDE, și IDE frankly--
standuri pentru integrat Mediu de dezvoltare.
Este doar un mod fantezist de a spune un program care vă ajută să programul.
Face user friendly lucruri cum ar fi atunci când tastați o paranteză,
vă oferă în mod automat de altă parte.
Prezumția fiind că ești în cele din urmă de gând să doriți să tastați că,
și, de asemenea o face cu citate.
>> Deci, îmi place linia 23.
99% din drum acolo.
Cineva vrea să interveni în discuție cu un sfat?
Am auzit virgulă din partea publicului.
Bine.
Astfel încât plasat.
Și acum, am doar un pic consternare cu linia 21.
Cum vrem să-și exprime acest lucru?
Ce întrebare vrem pentru a cere, nu crezi?
Deci, anterior am pus întrebarea, dacă n este mai mare decât zero, a face acest lucru.
Altfel, face asta.
Deci, avem nevoie pentru a alege o întrebare de a cere aici.
Audiența: [inaudibil]
David J. MALAN: Bine.
Deci, dacă n este egal cu zero.
Excelent.
Așa că haideți să ne oprim aici.
Vă mulțumesc foarte mult pentru acest înfruntând.
Permiteți-mi să vă dau un pic de bine-meritata minge de stres, poate acolo.
Deci suntem aproape acolo.
De fapt, Lauren, dacă nu minte, permiteți-mi să fac o tweak aici,
doar pentru a fi în concordanță cu mai ceea ce am văzut în Scratch, ce
nu vreau să fac cu linii 21 și 24, doar pe din nou
de modul în care a făcut acest lucru în Scratch, poate?
>> Audiența: Mutare-l.
>> David J. MALAN: Da, se deplasa în sus.
Deci starea altceva, a treia, sau al patrulea, al cincilea sau, sau sucursale finală,
ar trebui să vină într-adevăr după aceea, Si acesta este doar prin convenție,
doar pentru că dacă vrei.
Deci, am nevoie pentru a face acest tweak.
Și am nevoie pentru a pune meu bretele cret aici.
Și acum, acest program va compila.
Suntem atât de aproape, dar nu e un bug foarte, foarte subtil.
Să vedem ce se întâmplă.
>> În primul rând, permiteți-mi să mergeți mai departe și micșorare.
Am de gând să merg mai departe și tip face Condition Zero.
Oh, am mințit.
Acum compilator este de fapt destul de inteligent.
Și eu nu înțeleg cu adevărat e mesaj de eroare.
Folosind rezultatul unei misiuni ca o condiție fără paranteze,
este aparent rău.
Dar ce înseamnă asta?
>> Ei bine, din nou, în căutarea pentru modele în cod pe care le-am văzut înainte,
ceea ce este de fapt linia 17 face, chiar dacă Lauren destinat ușor
altfel?
Da.
>> Audiența: [inaudibil]
David J. MALAN: Da.
Deci amintesc semnul egal, aparent cum l-am folosit înainte, nu este egal.
A atribuirii, de la dreapta la stânga.
Deci linia 17 în acest moment este o condiție, și este
executarea de cod în interiorul paranteze, dar în momentul în care codul execută,
ceea ce se întâmplă cu valoarea zero?
Ce se întâmplă cu valoarea n?
Devenind zero.
Deci, dacă n devine zero și din nou, ca pe săptămâna trecută,
spunem că, în general, la zero este falsă și una este adevărat,
sau da este una și nu este zero.
Deci, adevărat și fals, una și 0.
Dacă n ca liniei 17 a fost având în vedere valoarea 0, este zero adevărat?
Nu.
Prin definiție, zero, este falsă.
Asta e convenția suntem O să se agațe de mișcare înainte.
Deci, va linii 18, 19, și 20 se aplică vreodată acum, în mod logic?
Ele nu pot.
Așa că am pus întrebarea dar nu destul de precis,
și nu ar ști acest lucru, cu excepția cazului l-ați văzut, soluția în C
este atunci când doriți să-și exprime egalitate, spui egali egal.
Deci, semnul egal a fost deja folosit prin cesiune, de la dreapta la stânga.
Egal egal mijloace egal.
Și dacă vrei cu adevărat mintea ta care urmează să fie îndoit, în JavaScript și PHP,
nu e egal cu egal egali, care Adică totul altceva,
dar vom ajunge la asta, înainte de mult timp.
>> Deci, acest lucru este un fix simplu, dar dau seama super usor de a face această greșeală,
și apoi de mirare și lupta pentru minute, dacă nu o oră,
de ce este codul meu nu de executare, ca am de gând?
Este pentru că nu i-ai spus ea exact ceea ce ai vrut să spui.
Astfel că a fost aproape perfectă, și a fost grozav
că dat peste aceste două mici lucruri pentru că acum, dacă le repara,
și fac să Condition Zero dot slash Condition Zero,
Aș dori un număr întreg, vă rugăm.
Sa vedem.
Nu.
Va să mă forțeze să o fac.
Deci 42.
Am luat un număr pozitiv.
Deci, acum cum am dovedesc acest program corect?
Dacă ești un matematician, nu poți într-adevăr demonstra acest lucru prin încercare și eroare,
corect?
Puteți nu doar o dovadă de exemplu, dar cel puțin
ca un programator nu suntem O să încerc să dovedească acum
că aceasta este de fapt corect, dar eu ar fi trebuit probabil
testa unele cazuri reprezentative.
>> Am testat 42.
Am putut testa 43.
Am putut testa 44.
Încercare 45.
Corect?
Dar am putea face acest lucru mult timp.
Ceea ce ar fi ceva mai mult cazuri interesante pentru a încerca?
Audiența: [neauzit] zero.
David J. MALAN: Deci zero.
Cu siguranță.
Si bine, avem de data asta, Vă mulțumim pentru cod nou lui Lauren.
Ce este un alt caz bine pentru a încerca?
Audiența: unul negativ.
>> David J. MALAN: negativ, și Poate ceva un pic mai mare,
Deci, poate negativ 42, dar, în general, atunci când
testarea programelor dumneavoastră merge mai departe, esti
O să vreau să mă gândesc pentru tine, ca ceea ce
sunt cazurile fundamentale diferite.
Și îndrăznesc să spun un caz negativ, un caz pozitiv, și un caz de zero
destul de mult runde astea.
Să ne uităm la o variantă de acest lucru, deși.
Condiții unul.
Aceasta este o soluție corectă aici, astfel încât veți vedea două și on-line,
dacă te plimbi prin walkthroughs, va în general
incrementa acestea trepte până când vom obține exact abordarea corectă.
Ce dacă am vrut să întreb două întrebări în același timp?
>> Lasă-mă să deschid acest loc.
Non-comutator, din motive vom vedea un alt timp.
Ce este nou punct de vedere sintactic aici?
Mă joc în prezent, un joc în cazul în care computerul este de a spune
mi, da-mi un număr întreg între unul și 10,
și apoi eu judec intrare utilizatorului.
În limba engleză, pe baza codul pe care îl vedeți aici
în albastru, ceea ce este acest program faci?
Audiența: [inaudibil] ales un număr mare sau mic.
David J. MALAN: Da.
Este doar pronunța dacă Am luat o mare, sau mediu,
sau număr mic bazat pe o foarte Definiția arbitrară de mici, mijlocii,
și mare aici, dar o notificare sintaxa care este nou este aceasta.
Nu e nici mai puțin de int sau egală cu semna, sau mai mare sau egală de a semna,
în cazul în care unul este de peste alta, pe care le poate exprima în ca Microsoft Word.
Deci, într-un limbaj de programare te de obicei, face doar două personaje,
unul după altul.
Și ce face acest probabil reprezintă, ampersand ampersand.
Audiența: [inaudibil]
David J. MALAN: Da.
Aceasta înseamnă doar și pentru că dovedește că autorii C
a folosit un singur ampersand, care s-ar putea gândi
ar fi perfect pentru a noțiunii de și, este deja folosit,
ampersand ampersand astfel de fapt surprinde cazul ne doresc de fapt.
>> Deci, haideți să acum da peste două lucruri.
Lasă-mă să mergeți mai departe și să se deschidă unul.
Ceva care este un pic îngrijorător.
Imprecizie punct c.
Permiteți-mi să introducă două lucruri aici.
Unul, observați că putem face matematica, precum la fel ca înainte, atunci când
am făcut plus de două numere, x și y.
Ce este acest program aparent faci?
Nu am o comentat încă, și am introdus la sută f,
dar i-am spus mai devreme repede sută f înseamnă punctul plutitoare
valoare, care este numărul real de.
Ceva cu un zecimal Punct, care nu este un număr întreg.
Ce crezi că acest program este încercând să-mi arate pe ecran?
Da?
Audiența: Rezultatul unul peste 10.
David J. MALAN: Da.
Care este rezultatul unuia împărțit la 10.
Corect, pentru că voi toți aveți, probabil, crescut știind că unul peste 10
este ce?
Da, e doar 1/10 sau 0.1.
Corect?
Deci, haideți să vedem ce este de fapt acest lucru.
Așa că lasă-mă să merg mai departe și de a salva acest lucru.
Lasă-mă să merg aici.
Face imprecizie dot slash imprecizie, și preaviz, de asemenea,
intr-un mediu Linux, nu trebuie trebuie să tastați în imprecizie și să ia
toată ziua.
În general, dacă te-a lovit Tab, aceasta va termina gândul tău pentru tine,
bazate pe cuvintele care sunt disponibil în directorul curent.
BINE.
Deci ai avut dreptate.
Unul împărțit la 10 este, de fapt, 0.1.
Dar eu sunt un pic curios.
Și se pare printf sprijină unele caracteristici
prin care puteți specifica mai mult de numărul implicit de zecimale.
Deci, dacă vreau să văd 10 zecimal puncte pot face la sută,
pentru simbolul substituent, dot 10 pentru, da-mi 10 puncte zecimale,
și apoi încă în virgulă mobilă valoare, și, ca o parte,
ceea ce este acest backslash n Se pare ca tot ajutorul?
Se pare că e un Simbol pentru o nouă linie.
Este modul foarte explicit de a spune la computer,
muta cursorul la următoarea line după ce ați terminat.
Și vom vedea ce se întâmplă atunci când nu facem asta.
>> Lasă-mă să recompilați fac imprecizie.
Acum dot slash imprecizie.
BINE.
Încă drept.
Unul împărțit la 10.
Acum Primesc o pic curios, totuși.
Ce se întâmplă dacă mă uit 20 zecimal subliniază, recompilați, reluare,
și, ca o paranteza pentru viteză, puteți utiliza, de asemenea
sus și jos pentru a parcurge istoricul,
astfel încât să nu trebuie să țină dactilografiate aceste comenzi, introduceți.
Huh.
Nu am învățat că, în școala primară.
Bine, așa că lasă-mă să vezi ca 29 locuri afară.
Poate e doar o întâmplare.
Poate calculatorul meu acționează ciudat.
Asta nu e un lucru, nu?
Este face ceva determinist.
Deci, asigurați-imprecizie.
OK, care este dat peste cap.
Deci, ce se întâmplă?
>> Deci, se pare că dumneavoastră profesor a fost culcat
să vă tot acest timp pentru motive pe care vom vedea în scurt timp.
Dar să se termine cu un alt program de.
Aceasta este un pic de programe cineva a scris acum câțiva ani,
și este de fapt parte a unui concurs.
Nimeni nu scrie de fapt cod așa, și dacă faci,
aceasta este o problemă stilistic.
Dar oamenii fac asta pentru lauda drepturi.
Pentru a scrie cele mai confuze Programul cauta că
face totuși ceva interesant.
Și nota m-am gândit că vom lăsa pe astăzi, înainte de a ne Colton joaca aici,
este de a rula acest program, care, chiar și în doar folosind
C în acest bazate pe text- mediu, ne dă acest.
La naiba.
>> [Râsete]
>> Așteptare.
[Inaudibil] c bord l m.
Vei vedea magice incantație care vom vedea în scurt timp.
[Inaudibil] regulă.
Iar acum puteți chiar face lucruri de genul asta.
Asta e.
Pentru CS50 noi, veți vedea vineri.
>> [MUSIC JOC]
>> [Aplauze]