>> David J. MALAN: Deci asta este CS50.
Și acest lucru a fost CS50 propriu Colton Ogden, pentru mai multe de care muzica se poate
descărca de la soundcloud.com/cs50.
>> Așa că astăzi ne vom concentra tot mai mult pe arta de programare.
Și luăm de unde am plecat săptămâna trecută, concentrându-se
pe Scratch, care a fost aceasta limbaj de programare grafic.
Și să ia lucrurile la un nivel inferior, folosind o programare mai tradițional
Limba cunoscut sub numele de C. Dar de-a lungul drum, realizând
că aceleași idei noi a vorbit despre vinerea trecută
se va repeta, nu numai în acest limbajul C, dar în cele mai multe o dată la două
că ne uităm la acest semestru.
>> Așa că am numit acest lucru aici ce ultimul timp?
Aceasta este reprezentativ pentru o declarație.
Așa că am numit acest o declarație.
Și face ceva.
Este o instrucțiune care o calculator sau Scratch-ar putea executa.
Și de acum înainte, să înceapă, de asemenea, de asteptare ceva de genul asta o funcție,
pentru motive pe care le vom vedea în curând.
>> Între timp, am văzut lucruri de genul asta.
Și acestea sunt, în general, cunoscut ca ceea ce construim?
>> Audiența: Buclă.
>> David J. MALAN: Deci, o buclă.
Deci, destul de simplu.
Este pur și simplu face ceea ce spune.
Și în Scratch, dacă doriți să ghiftui mai multe piese de puzzle în acolo,
piesa va crește pentru a se potrivi.
Și vom vedea în C, care putem face același lucru.
>> Un alt tip de buclă, deși, în Scratch ar putea fi pentru totdeauna,
sau e vreo număr de alte abordari.
Dar să aruncăm o mai uite generalist, cu o fata
asta e probabil destul de familiar, la bucle mai general.
Mark Zuckerberg: O lucru pe care computerele
sunt foarte bun la este repetarea comenzi.
Ca o persoană, te-ar lua într-adevăr plictisit dacă
a trebuit să facă același lucru de multe ori într-un rând.
Dar un calculator poate face același lucru milioane sau chiar miliarde de ori,
și nu se plictisesc, și să fie capabil să efectueze asta foarte bine.
>> Deci, de exemplu, dacă am a vrut să-și dorească toată lumea
pe Facebook o zi de naștere fericită de a le trimite un e-mail,
s-ar putea-mi ia mai mult de o secol pentru a scrie efectiv
toate aceste e-mailuri la toată lumea.
Dar, cu doar câteva linii de cod, pot au un sistem de a trimite un e-mail la toată lumea
pe Facebook care doresc le-o zi de naștere fericită.
Deci, asta e ceea ce buclele sunt și de ce ele sunt valoroase și ceva
care computerele pot face foarte bine.
>> David J. MALAN: Deci, dacă ai fost destinatarul
a unora dintre lui CS50 și Spațiu Dropbox de întârziere,
asta e de fapt exact ceea ce ne-am face, folosind cod destul de genul asta.
În esență, avem o mare foaie de calcul în care
oamenii au fost introducerea lor nume și adrese de e-mail.
Și am scris un pic de cod care poate repeta peste acele adrese
și scuipa adrese unice în cazul în care cineva a prezentat de mai multe ori.
Și după aceea, vom trimite o e-mail automat de la bot CS50 lui,
inclusiv codul de cupon.
>> Acum, ne-am uitat, de asemenea, la acest construi ultima dată.
Și aceasta este o anumită exemplu de ce?
Deci, da, o expresie booleană.
Și forma se înțelege pentru a surprinde la fel de bine.
Toate aceste întrebări din formează adevărate sau false în Scratch
va arata ceva de genul asta.
Și noi numim aceasta o expresie booleană.
Asta e adevărat sau fals, da sau nu.
Este un mod de a răspunde la o întrebare.
>> Și Între timp, puteți utiliza aceste Boolean expresii în interiorul de construcții
ca acestea, care de Desigur sunt condiții
sau sucursale, proverbial furci din drum.
Și ei pot privi nu numai în acest fel, dar ele pot, de asemenea,
au elses asociate cu acestea.
Și tu poți avea de fapt un fel de trei furculiță în drum sau o cale de patru furculiță
în drum, pur și simplu prin cuiburi aceste lucruri,
după cum veți vedea în Scratch dacă nu ați făcut deja.
Și, după cum puteți face în C, de asemenea.
>> Să luăm un alt generalist uita-te la un alumnist, de asemenea, care
s-ar putea prezenta o abordare diferită la aceste lucruri numite condiții.
>> Bill Gates: Oamenii fac decizii în fiecare zi.
De exemplu, înainte de a pleca afară te un fel de au un if care spune,
daca ploua, atunci eu Trebuie să iau haina.
Și calculatoarele sunt uimitoare odată ce decidă acestor tipuri de declarații,
încât să poată executa în mod fiabil aceste lucruri la viteza de necrezut.
Și astfel un program de calculator într-adevăr este un pic de matematică și unele
dacă declarațiile în cazul în care decizia devine făcut.
>> David J. MALAN: Deci, ca cum probabil știți, a fost
oameni buni, cum ar fi Bill Gates, Paul Allen, și alții
că într-adevăr a dat startul așa-numitul calculator personal
revoluție în urmă cu câțiva ani.
M-am gândit, înainte de a se arunca cu capul în unele Administrivia,
ne-ar referi o poveste din Albuquerque, New Mexico Muzeul de Istorie Naturala
și știința cazul în care unele dintre Bill Gates " și primele povestiri Paul Allen
sunt povestit cum avem acum PC-urile de astăzi și Mac-uri și mai mult.
Pentru aceasta, însă, avem nevoie de doi voluntari care au voci foarte bune narațiune
pentru a citi un scenariu cu voce tare.
>> Bine, ce zici de acolo.
Hai sus.
Și cum despre în față aici.
Vino pe jos.
Ocupați-vă locurile de aici.
Ca voi veni, un cuplu de anunțuri administrative.
secționare, procesul de a alege o secțiune,
va începe în acest Miercuri până vineri.
Mai multe despre faptul că această venire Miercuri în curs.
>> Super secțiuni, între timp, sunt ceva pe care le oferim săptămâna viitoare
prin care întreaga clasă este invitat pentru a participa la scară destul de mare
secțiuni, una mai confortabil, unul mai puțin confortabil.
Și vom anunța detaliile de care, de asemenea, mai târziu în această săptămână.
>> Secțiuni Între timp, se, va începe
în săptămâna a treia a cursului, indicele de la zero, ceea ce înseamnă că acestea sunt un cuplu de săptămâni
afară.
Deci, nu vă faceți griji.
Tu încă nu s-au pierdut nimic de-a lungul acestor linii.
Între timp, în același timp, dacă Pentru orice întrebări administrativ,
eu și Devon și Gabe e-mail și Rob la această adresă aici.
>> În cele din urmă, problema stabilit 0 este, desigur, afară.
Este posibil să fi observat pe site-ul cursului.
Ar trebui să vă ofere toate răspunsurile la întrebări
s-ar putea avea de-a lungul drum pentru Noțiuni de bază cu setul de probleme.
Dar, dacă vă aflați care are nevoie de o mână de ajutor,
prin toate mijloacele participe la orele de birou, Luni, Marți, Miercuri, Joi
din această săptămână, în seara în patru săli de mese.
A se vedea că URL-ul acolo pentru informațiile de unde orelor de program trebuie să fie.
>> Acum, să ne întâlnim nostru două persoane astăzi aici.
Care e numele tău?
>> JAY PAUL: Jay Paul.
>> David J. MALAN: Jay Paul, mă bucur să te cunosc.
>> HIKARI: Hikari.
>> David J. MALAN: Hikari?
>> HIKARI: Hikari.
>> David J. MALAN: Hikari.
Mă bucur să te cunosc, de asemenea.
Jay Paul și Hikari au în fața lor pe aceste muzică
se află două scripturi pe care le imprimate în această dimineață, de la New Mexico
Muzeul de Istorie Naturală și Științei.
Și ce m-am gândit Mi-ar face pe tavan
se însoțească recitarea ta a scenariului și această istorie
cu unele imagini vizuale, fără surprize.
>> Și ce-am făcut în avans este prehighlight pe script-ul dvs.
ceea ce ar trebui să citiți, și ceea ce ar trebui să citiți.
Și vom esență, punctele doar alternative.
Deci, este mai mult ca s-ar putea s-au făcut în clasa limba engleză.
Asta e într-adevăr obliga publicul să creadă în povestea ta aici.
Se poate?
Deci, povestea este aici, avem un BASIC, și începe în Cambridge.
>> JAY PAUL: A fost iarnă, 1974, în Cambridge, Massachusetts
unde iernile pot fi rece.
Un bărbos, cu părul lung colegiu dropout nume
Paul Allen a fost drudging peste Harvard Square, absorbit în gândurile sale.
Preocuparea sa principală în acele zile a fost cum să obțineți prietenul său, Bill Gates,
să renunțe la școală și du-te în afaceri cu el.
HIKARI: Cei doi au plecat deja printr-o serie de asociații de afaceri
împreună, începând de la Lakeside școală în Seattle, unde
care au fost plătite la timp calculator liber la testa un calculator PDP-10 la o ora locală
Compania de partajare.
Planul cel mai recent a fost să renunțe la școală și să formeze o companie de software.
Allen a plecat de la Washington Universitatea de Stat.
Dar, în ultimul moment, Gates a decis să rămânem cu Harvard.
>> JAY PAUL: În acea zi, de trecere de la Harvard Square, Allen reperat ianuarie,
1975 problema de Popular Electronics cu titlul de oprire pământ,
Kit lume primul minicomputere pentru a rivaliza cu modele comerciale.
Sub titlul a fost o imagine de o cutie mica
împodobit cu lumini și switch-uri.
Acesta a fost numit MITS Altair 8800.
Și Allen știut că aceasta a fost ceea ce el a fost în căutarea pentru.
>> HIKARI: zile de discuții au urmat.
Allen și Gates au înțeles semnificație de Altair.
Ei au vorbit de multe ori despre microprocesoare
și așteptau să vadă ce se va face cu ei.
Era un kit minicomputer pe capacul de populare Electronics.
Se pare că a avut încă nici un software.
Ei au imaginat o națiune de programatori descendent pe MITS.
Și așa au numit Ed Roberts, șeful companiei,
care pretind a avea o versiune a Limbaj de programare BASIC aproape gata
pentru Altair.
Ei nu au.
Și Roberts trebuie să fi știut că nu a făcut.
El a fost obtinerea de 10 apeluri pe zi de la oameni care au avut o BASIC aproape gata.
Și răspunsul său stoc a fost, "prima persoana
care apare cu un lucru BASIC devine contractul. "
>> JAY PAUL: Gates și Allen văzusem niciodată un Altair.
Ei nu au văzut chiar Intel 8080 microprocesor
în centrul de Altair.
Dar câțiva ani mai devreme Allen a scris un program de
pe un calculator mainframe care emulat funcționarea unui Intel anterioare
microprocesor.
Și de această dată în jurul ei ar face același lucru.
>> HIKARI: Cu un procesor Intel 8080 manual de partea lui,
Allen așezat la o Calculator Harvard PDP-10
și a scris emulator și software-ul instrumentele necesare pentru a face programarea.
Între timp, Gates mai dus la cursuri și sa dedicat
la proiectarea de bază, folosind fiecare truc
știa pentru a obține mărimea jos de 4 kilobytes.
>> JAY PAUL: Out in Albuquerque, Ed Roberts a primit un telefon de la Gates
cere detalii cu privire la modul în care Altair manipulate rutine specifice.
Nimeni nu a cerut vreodată că înainte.
Și Roberts a început să se intereseze.
>> HIKARI: Odată cu dezvoltarea instrumente și design gata,
Gates și Allen a scris codul de pe PDP-10,
nominalizeze un alt student de la Harvard, Monte Davidoff, pentru a scrie rutine de matematica.
După o noapte de finală programare, Allen luat pe un avion
pentru a oferi BASIC lor la MITS.
El a petrecut avionul plimbare îngrijorătoare.
Și înapoi în Cambridge Gates a fost îngrijorătoare.
Ei au testat BASIC lor și ea a lucrat pe emulator.
Dar ce se întâmplă dacă emulator a fost greșit?
JAY PAUL: Așa cum avionul abordat Albuquerque,
Allen a dat seama că lor BASIC, acum îngrijit conținut
pe o mică rolă de perforate bandă de hârtie, s-ar
fi inutil fără o separat Programul, numit un încărcător, care
ar spune Altair cum pentru a citi bandă de hârtie fiind
introduse în mașină telex.
El a scos carnețelul și rapid mâzgălite pe un program de încărcător
în limbaj de asamblare, apoi manual tradus ca in 1 si 0
Altair-ar înțelege.
>> HIKARI: Allen se aștepta la o mic, companie curat, de înaltă tehnologie
conduse de bărbați în costume de afaceri.
Deci, el a fost surprins când Roberts sa întâlnit el la aeroport sa arate ca un ranch
mână.
Roberts a fost, de asemenea, surprins.
Când el a renuntat la Harvard programator la un hotel scump,
Allen a trebuit să mărturisesc că el nu a putut permite camerei.
>> JAY PAUL: MITS, în sine, a fost situat într-un mall plin de praf.
În interior pe un aglomerat banc de lucru a fost un Altair
încărcat cu 5 kilobytes de memorie și conectate printr-un cablu
la o mașină telex.
Roberts si inginer sef, Bill Yates, a așteptat așteptând
ca Allen toggled încărcător lui Programul în Altair.
Terminalul la început lucrând ca tras banda de hârtie prin intermediul cititorului de bandă.
A fost nevoie, probabil, 15 minute pentru a încărca programul.
Apoi, terminalul la tipărită brusc o promptă memorie, apoi un prompt gata,
și Allen a început să tastați Comenzile un test de câteva.
Spre uimirea tuturor, software-ul a lucrat.
Au fost bug-uri, desigur.
Dar lucrul cel mai important a fost lucrat.
>> HIKARI: Mai târziu, în drumul lor spre o 3.00 dolari masa la Pancho, o viespe a zburat
în fereastra de pick-up camion și înțepat Allen pe braț.
Dar la acel moment nimic ar putea strica starea de spirit.
Altair avea acum BASIC sale, primul software-ul comercial pentru o casă
calculator, realizat de Paul Allen și Bill Gates, a face afaceri ca Microsoft.
>> David J. MALAN: Multe datorită cei doi cititori.
>> [Aplauze]
>> David J. MALAN: Acum aveți alegerea ta,
înainte de a pleca, de o stralucitoare sau o strălucire în dark-- oh,
aștepta o secundă, Asteapta-- stralucitoare și o strălucire în elefant întuneric
din CS50 propriu Cheng Gong.
HIKARI: Ah, mulțumesc.
David J. MALAN: Toate Bine, vă mulțumesc foarte mult.
[Aplauze]
David J. MALAN: poveste Atât de adevărat.
Acest lucru este de a spune că toate acestea mașini și ușurința cu care ne-am
le folosesc acum și să ia de la sine, într-adevăr
a început aici, la doar câțiva pași din acest teatru real.
Și acum azi, daca nu ai fost, acest lucru este Maxwell Dworkin, computerul
științe clădire, De asemenea, în jurul valorii de colț.
Și la etajul al doilea al acestui clădire nu atârnă de trei pagini
din codul sursă original, care Bill Gates și Paul Allen a scris.
De fapt, dacă utilizarea măriți în puteti vedea nu numai
numele lor în tip original, dar, de asemenea,
semnăturile lor, care au împodobit-o câțiva ani în urmă, atunci când a vizitat ultima.
>> Dar ceea ce a fost deosebit de convingatoare despre acest lucru este ceea ce ei stabilite de a face
a fost de a scrie un program care ar fi permite altor persoane să scrie
propriile programe.
La momentul tot ce era cu această mașină Altair făcut de MITS.
Și tot ce a fost nevoie de un fel de făcându-l ușor pentru pasionati si oameni
ca noi în această cameră de fapt programul de că fără a fi necesar a înțelege
Cod de asamblare, sau mașină cod, sau Doamne ferește, 0 si 1.
Noi programatori, cum ar fi cei din această sală, ne-am
doresc să fie în măsură să-și exprime noi mult mai mult ca cod pseudo
chiar dacă este un pic mai mult nit pretentios decat am vorbit săptămâna trecută.
Noi nu vrem să scrie cod ca aceasta, care Paul Allen și Bill Gates a făcut.
Noi, în schimb, vrea să scrie cod care arata un pic mai ușor de utilizat.
>> Acum, aceasta este o limbă cunoscută sub numele de bază.
Și numerele de linie sunt ceea ce folosi pentru a număra pur și simplu liniile de cod
care scrii.
Noi nu trebuie nici măcar să face ca aceste zile.
Dar puteți vedea aici cum PRINT "Bună ziua, lume"
ar într-adevăr probabil imprima doar asta.
Și astfel ceea ce Bill si Paul au fost permite oamenilor să scrie cod ca aceasta
în schimb de-- dacă aruncăm o privire la informatică wall-- cod de genul asta.
>> De fapt, CS50 recent avut posibilitatea
să se așeze cu profesorul Harry Lewis în Science departamentul de Informatică, care
de fapt, a învățat Bill Gates în urmă cu câțiva ani,
și stă aici în fața cele trei pagini de fragmente.
Să aruncăm o privire.
>> HARRY LEWIS: Ceea ce avem aici este o lista cu o bucată devreme de software
scris de Bill Gates și Paul Allen, fondatorii Microsoft.
Deci, codul este interesant din două motive.
Mai întâi de toate, a devenit Primul produs Microsoft,
care a fost un interpret de limbajul de programare BASIC.
Și în al doilea rând, aceasta a fost una dintre primele încercări
pentru a crea un interpret așa obișnuit oamenii ar putea folosi calculatoarele personale.
>> Deci, Bill Gates a fost un student la Harvard.
Am început să predea la Harvard în 1974.
Acest lucru a fost făcut în 1975.
Așa a fost la inceputul carierei sale și la începutul carierei mele.
De fapt am învățat Bill în un curs in aceasta perioada.
Paul Allen nu a fost un Harvard elev, dar el
a fost un liceu coleg de clasă de Bill Gates.
Dacă vii si uita-te la listare, veți
de fapt găsi un al treilea nume, Monte Davidoff,
care a fost coleg de clasa lui Gates aici la Harvard.
>> OK, deci aici este o comentariu interesant aici.
Ea spune: "În 4K poate șterge rădăcină pătrată dar pentru bucle ar trebui să funcționeze în continuare. "
OK, deci ceea ce înseamnă că este faptul că există au fost două moduri de a compila acest program.
Unul a fost pentru a rula pe o versiune din acest computer Altair
care a avut numai cuvinte de 4K memorie, 4096 de cuvinte de memorie.
Dar versiunea mare a avut 8K.
Și ce acesta spune că este că în versiunea 4K
trebuia să ștergeți unele cod pentru a se potrivi.
Iar unul dintre lucrurile care ar trebui eliminată
ar fi rădăcină pătrată din rutina.
Dar se pare că pentru bucle ar trebui încă
funcționează chiar și atunci când compilarea jos pentru doar versiunea 4K a calculatorului.
David J. MALAN: Deci, una dintre temele, cum vom vedea în informatică,
este această noțiune de stratificare și abstractizare,
și într-adevăr în picioare pe umeri de oameni care au venit înaintea noastră, nu
spre deosebire de unele dintre Bill Gates și Paul Allen narativ aici.
Și ce înseamnă acest lucru este că astăzi putem lua pentru
acordată că lucrurile sunt de fapt mai ușor pentru noi să scrie cod.
Într-adevăr cod, așa cum am spus, vineri, este cunoscut mai multe punct de vedere tehnic sub formă de cod sursă.
Și este acest engleza ca sintaxă care este mai buna si mai bine definit
decât ceva de genul cod pseudo, pentru care nu există o definiție oficială.
>> Și astăzi, ce vom să se concentreze asupra este codul sursă
care arata ca acesta, care desigur, la prima vedere
Pare complet criptic.
Și sincer, e mult mai estetic complex decât programul de bază este.
Toate acest program face, amintesc, este ceea ce am spus?
Pur si simplu afiseaza "Hello World".
Și totuși, uita-te la toate lucrurile care avem nevoie să-și încheie în jurul că fraza foarte simplu.
Dar, înainte de mult timp toate aceste linii și mai multe
va face sens mult mai bine pentru tine.
>> Și în care debitul este după cum urmează.
Ceea ce avem nevoie la dispoziție este de a lua de cod, ca sursă
cod pe care tocmai am văzut.
Și avem nevoie de un nou program de pentru a rula prin intermediul.
Avem nevoie de algoritmi care pot converti codul sursă, cum ar fi aceasta,
în cod, obiect 0 si 1.
Cu alte cuvinte, ce vom învăța astăzi
este modul de a face acest lucru, scrie Codul sursă până sus,
trece-l ca intrare pentru un special Programul cunoscut ca un compilator,
și vom produce cod obiect.
Care este doar un mod fantezist de spunând că va lua ceva
care arata ca aceasta, se trece într-un program numit compilator,
producătoare de cod obiect care arata ca aceasta.
>> Deci, acestea sunt literalmente modelele de 0 si 1
care sunt înțelese de Calculator Intel aceste zile,
că în cazul în care a fost interpretat de CPU, creierul în interiorul unui calculator,
va imprima literalmente afară, pur și simplu, "Hello World".
Acum există cale mai multe 0s și 1s decât tine ar spera ar putea fi necesar pentru asta.
Dar asta pentru că noi construim pe o afacere bună de complexitate
pe care le putem lua de acum înainte de la sine.
Cu alte cuvinte, o mulțime de oameni deștepți ne-au dat o mulțime de instrumente reci
și software-ul puternic, cu care ne-am pot face acum proiecte ale noastre.
>> Deci, să începem.
Întrucât vinerea trecută, și Problema pentru Set 0 în această săptămână,
vei juca într-un lume care arata ca aceasta.
Incepand de astazi si pentru problema Set 1 saptamana viitoare, codul
este de gând să arate un pic mai mult criptic, dar funcțional este
Va fi la fel.
Deci preaviz, de sus este Scratch, Concluzia este C. Sincer Scratch
este mult mai ușor de utilizat prietenos și accesibil.
Dar dacă acum voi compara top vizual pentru a de jos, acolo e un fel de unu la unu
Corespondența dintre piese de puzzle și limba
suntem pe cale să se joace cu.
În special, să zicem, albastru puzzle bucată până sus,
este aparent echivalent cu ceea ce cuvinte cheie sau fraza special în această limbă
numit C?
Audiența: printf.
David J. MALAN: printf.
Asta înseamnă că de imprimare formatat.
Și asta e doar o fantezie fel de a spune printf în C
va fi o declarație sau o funcție care imprimă ceva de pe ecran.
Ce se imprima pe ecran?
Indiferent ce se spune la interior de citate, în interiorul paranteze.
Deci, din nou, desigur, există o mulțime de lucruri
care va trebui să păstreze în minte, paranteze, citate, punct și virgulă,
și toate astea.
Dar toate că este un fel de pe lângă subiect.
Takeaway interesant de acum este că blocul cuvânt de spus în Scratch
este destul de mult echivalent cu declarația printf în C.
>> Între timp, piesa de puzzle galben până sus, atunci când steagul verde clic,
este probabil echivalent la ce cuvinte cheie aici?
Audiența: Main.
David J. MALAN: Deci principal.
Poate int, poate nule.
Dar principalul fel de sunete, cum ar fi este important, și într-adevăr este.
Deci, atunci când steagul verde clic este, din nou, piesa de puzzle
care începe o întregul program de Scratch.
Dar vom începe acum de asteptare că principal, această funcție cunoscut ca principal.
>> Acum, între timp, vom generaliza aceasta astfel.
Am putea numi spune o funcție.
Și s-ar putea uita în mod specific ca aceasta.
Ei bine, ce zici de bucle?
Dacă vrem să pornim de conversie sau traducerea mai mult în Scratch la C,
acest lucru aici aparent doar spune "Hello World" pentru totdeauna.
Deci, dacă vă asociați acestea script-uri, cu o pisică în Scratch,
este doar de gând să tot spun într-un fel de balon de desene animate,
"Hello World, salut lume, salut lume, "ad nauseum, pentru totdeauna.
Dacă vrem să facem ceva asemănător în C, o să se uite un pic criptic.
Dar putem realiza la fel rezultate, așa cum vom în cele din urmă
afla, cu sintaxa de genul asta.
Am de gând să folosească din nou printf, deoarece la sfârșitul zilei
Vreau să imprime "hello world".
Și eu sunt aparent, folosind un cuvinte cheie care nu este pentru totdeauna.
Este în schimb cuvântul în timp ce.
Dar semantic în Engleză, în timp ce fel de
sugerează un fel de buclă sau cu bicicleta.
>> Așa că se întâmplă să fie cuvântul cheie care C foloseste.
Și, în timp ce adevărat, de ce nu în timp ce adevărat înseamnă în mod eficient pentru totdeauna?
Ei bine, în timp ce, așa cum vom curând aprecia cu atât mai mult,
are această paranteză lângă ea unde puteți pune o expresie booleană.
Și, atâta timp cât asta expresie este adevărat, acest cod,
ca notate între aceste două acolade ca o sa-i numim,
va păstra doar să ruleze din nou și din nou.
>> Atât de adevărat este adevărat.
Deci, în timp ce mijloace reale doar a face acest lucru pentru totdeauna.
Este aproape un prost construi pentru a te exprima.
Dar nu exista pentru totdeauna cuvinte cheie în C. Nu a fost timp.
Și acolo a fost un foarte simplu Expresie booleană ca adevărat.
Și astfel aceasta, vom vedea, atinge același rezultat.
>> Cum altfel ar putea să vă pună în aplicare o buclă?
Ei bine, în Scratch-ar putea Codul greu un anumit număr
de iterații în bucla aici.
Si pentru ca este exact ceea ce ne-am s-ar putea face în această versiune de C,
prin care avem o așa-numită de buclă.
Iar pentru buclă de aici se va a repeta, oarecum criptic,
de la valoarea 0 până la a dar mai puțin de 10.
>> Acum variabile în zero.
S-ar putea să nu fi avut prilej de a folosi aceste.
Dar ce rost are, în general, a unei variabile am spus săptămâna trecută?
Ce-i asta?
>> Audiența: puncte.
>> David J. MALAN: La punctul?
Oh, punctele.
OK, urmărirea de puncte, de exemplu, într-un joc.
Sau, mai general face ce cu variabila?
Care este utilitatea lor?
>> Audiența: memorie.
>> David J. MALAN: Da, așa memorie.
Este pentru stocarea ceva.
Și ce fel de prostie am vizual folosit Ultima dată a fost ca acest bol de sticlă.
Și dacă ne-am dorit pentru a stoca ceva în interiorul unei variabile,
de exemplu, chiar acum Valoarea este de sase, deoarece acolo
sunt șase mingi de ping pong în aici.
E doar un fel de depozitare container că sub capota
este implementat cu biți, 0 si 1, cu toate acestea un calculator se întâmplă pentru a face asta.
>> Deci, în Scratch, dacă ne-am doresc să aibă o variabilă,
putem folosi un bloc portocaliu de genul asta.
Vom numi asta contra în acest caz particular.
L-am initializat cu 0.
Și ce să fac atunci?
Pentru totdeauna, spune contra, care în cazul în care te joci cu asta în Scratch,
veți vedea doar Scratch.
Pisica sau orice altceva costum te pun pe el va vorbi numărul în cauză.
>> Schimbare contor de 1 este cum ar fi incrementarea cu 1.
Și astfel, acest lucru se întâmplă pentru conta din ce atât de ce?
De la 0 pana la infinit, sau până pauze de reîncărcare,
sau până când un fel de pierde interesul pentru vizionarea
cât de mare poate conta de fapt.
>> Deci, cum am putea transforma acest lucru C?
O să se uite un pic criptic.
Dar, din nou, dacă te uiți la fiecare din aceste linii individual
ei un fel de linie în general.
Deci, aparent int se va au o semnificație specială în C.
Vom vedea că din nou.
Ca o paranteza înseamnă întreg.
Deci, asta înseamnă doar numărul.
Deci, asta e tipul de sticlă castron vreau, o
care poate stoca numere, Nu ping pong mingi.
Și am de gând să utilizeze semnul egal acolo pentru a atribui o valoare de 0.
Așa că e destul ca set contra la 0, dar în C.
>> Între timp, în timp ce adevărat, că a fost echivalent, desigur, să totdeauna,
chiar dacă este un pic criptic, și apoi în interiorul acolade.
Și vă puteți gândi la aceste acolade, care aveți posibilitatea să tastați pe tastatură,
ca într-adevăr ca fiind curbura în aceste blocuri bucla galbene în zero.
Acesta cuprinde mai multe linii de cod.
>> Printf devine o pic înfricoșător acum pentru că am
vezi citate nu numai în paranteze.
Dar ce mai e nou sintactic în acest exemplu?
Există o suta d.
Și apoi backslash n este acolo.
Noi am văzut că înainte, chiar deși nu l-am mai vorbim.
Apoi, există o virgulă.
Și apoi există un contor.
>> Dar vom vedea în doar un clipă că acest lucru este doar
o modalitate standard de a spune print-un "Număr zecimal," citat, citatul,
un numar zecimal.
Dar am de gând să-ți spun mai târziu ce acest număr zecimal este.
Deci, faptul că există o virgulă în această linie spune printf,
înseamnă mergeți mai departe și de imprimare un numar zecimal.
Oh, și apropo, numărul este indiferent de valoarea acestei variabile este.
Și astfel pentru a face acest lucru mai mult clar, vom vedea un exemplu
înainte de lung implică exact printf în cadrul unor programe reale C.
>> Acum, doar pentru a încheia unele de aceste construcții.
Expresii booleene, nu s-ar putea avea prilej de a utiliza aceste în program
dar s-ar putea foarte bine, mai ales dacă folosind condiții.
Și astfel aceste două exemple din Scratch Adică, dacă x este mai mic decât y,
sau în cazul în care x este mai mic decât y și y este mai mic decât z, cum am putea traduce asta?
>> Ei bine, în C e doar O să arate așa.
Un pic criptic, mai multe paranteze, unele ampersand ciudate, dar fundamental
ideile sunt la fel de simplu ca acestea sunt în lume, piesa de puzzle.
Suntem pur și simplu verifica dacă ceva este mai mică decât altceva.
>> Ce zici de condiții?
Într-un cuvânt în limba engleză, ceea ce face acest lucru bucată de cod Scratch-mi-ai spune?
>> Audiența: Compară două numere.
>> David J. MALAN: compara doua numere, iar dacă x este mai mic decât y
se spune la fel de mult.
Dacă x este mai mare decât y se spune la fel de mult, altfel
dacă x este egal cu y se spune la fel de mult.
Acum, în cazul în care au x și y provin de la?
Cine știe.
Această bucată de Scratch Codul este în afara contextului.
Dar ceea ce vrem să facem acum este traduce aceasta pentru doar un moment pentru a vedea.
>> Deci, cum te confortabil în această săptămână în Problema Set
0 joc în această lume pe partea stângă, realiza
că ideile nu se schimbă în această săptămână sau viitoare sau peste.
Pur și simplu o să începe să scrie lucruri
într-un mod diferit, cu nostru tastatura în loc de mouse-ului nostru.
>> Deci, dacă x este mai mic decât y, și există unele paranteze acolo,
atunci există unele acolade din nou la fel de ea ingloba
la fel ca piesele de puzzle galben face.
Și am de gând să printf x este mai mic decât y și așa mai departe.
>> Ce este frumos despre C, după cum puteți vedea aici,
este că nu ai acest cuiburi, cuiburi, cuibărindu că este neapărat
O să împinge codul de dreapta.
Puteți avea loc tot gama place frumos acest lucru.
Dar asta e doar o estetică detaliu vom vedea din nou, înainte de mult timp.
>> În regulă.
Așa că ne aduce înapoi la acest program caută criptic.
Să scrie de fapt un cod.
Acum, cum te duci despre scrierea de cod?
În toți acești ani pe care le-ați deținut un Mac sau PC, desktop sau laptop,
care le-ați avut de fapt capacitatea de pentru a începe scrierea de cod de programare.
Dar tu, probabil, lipsește un tip special de programe.
Puteți scrie cu siguranță cod.
Dar nu poți neapărat, din cutie,
converti codul sursă în cod obiect, 0 si 1
fără ceea ce pe computer?
Audiența: Compiler.
David J. MALAN: Deci, un compilator, drept.
Acum, cele mai multe dintre voi, probabil, nu detin un compilator,
nu s-au descărcat un compilator.
Dar veți vedea o puteți descărca ca cele mai multe orice altă piesă de software.
În lumea de Mac OS, s-ar putea descărca sau au descărcat deja
ceva numit Xcode sau GCC sau răsune.
În cazul în care provin de la Windows vă mondial s-ar putea
au descarcat Visual Studio, Visual Basic, medii de genul asta.
Există zeci de compilatoare aceste zile pe care le-ar putea folosi.
Dar pe termen scurt, de aici este că ar fi o durere
și, sincer, un tehnologic coșmar pentru sute
din persoanele cu diferite configurații de calculatoare pentru toți
configura mașinile lor în exact același mod
astfel încât să putem fi toți pe aceeași pagină.
>> Deci, ceea ce noi, în schimb, nu în CS50 este ne-am da
un mediu standard de, o Mediu Linux, care este
o sa arate un pic ceva de genul asta.
Veți vedea mai mult de acest lucru în Problema Set 1 caietul de sarcini care
va merge online, in aceasta seara de vineri.
>> Și ce înseamnă acest lucru este că de acum înainte
vor fi în măsură să descărca și instala un program de
numit CS50 Appliance.
Și ai de gând să descărcați și să instala un alt program numit
un hypervisor, care este doar un mod elegant de a realiza acest lucru.
Indiferent daca aveti un Mac sau PC sau un Linux calculator sau un calculator Solaris,
sau orice nebun de operare sistem rulați,
ai de gând să descarce un program de numit hypervisor care este
va rula CS50 Aparat pe calculator
indiferent de ceea ce sistemul de operare este.
Un hypervisor cu alte cuvinte convertește lucrurile noastre pentru orice limbă,
indiferent de instrucțiunile dumneavoastră calculator propriu înțelege.
>> Deci, aceasta este o stratificare.
Și din nou, acest lucru este un fel de tematice în calculator
știință, clădirea de pe partea de sus a lucrurilor.
S-ar putea avea pentru Windows.
S-ar putea avea Mac OS.
Dar, începând de săptămâna viitoare ești Va fi descărcate
o bucată de software liber numit hypervisor.
Vei fi descărcat o bucată de software-ul numit CS50 Appliance.
>> Asta se întâmplă pentru a rula în hypervisor, care va rula pe computerul dumneavoastră.
Iar rezultatul final este că fiecare dintre noi va fi
au o fereastră de simplu ca acest pe Mac sau PC-ul dvs.
care ne dă iluzia de toate rulează același sistem de operare,
fără nici o altă Impactul pe computer.
Și tu poți ecran complet ea și să se comporte în esență,
ca și cum se execută un sistem de operare numit Linux,
care este ceea ce CS50 Aparatul se bazează pe.
>> Deci, hai să folosim de fapt acest acum să scrie un program.
Puteți scrie un program folosind Microsoft Word.
Puteți scrie un program folosind TextEdit, sau Notepad,
sau WordPad, sau destul de mult orice cuvânt program de procesare ați folosit vreodată.
Dar realitatea este că nu ar trebui să folosi într-adevăr oricare dintre aceste programe.
Tu cu siguranță nu ar trebui să utilizeze ceva de genul Microsoft Word, care
are cu care se confruntă și cu caractere cursive aldine, și fonturi mai mari și fonturi mai mici,
deoarece computerul nu pasă de asta.
Tot ce computerul este O să pese este
Engleză ca instrucțiuni scrise în C.
>> Deci, ce vom face în interiorul aparatului CS50
se folosesc un program de liber disponibil, și este
pre-instalate în această aparat, numit Gedit.
Și Gedit este doar un super-simplu editor de text ca TextEdit Mac OS lui,
cum ar fi Windows Notepad care va uita-te un pic de ceva de genul asta.
>> Deci, nu lasa, de fapt uita-te la slide-uri de acest lucru.
Dar să mergem de fapt în mediul în sine.
Am de gând să merg mai departe și conectați, în acest alt fereastră,
a mea CS50 Appliance, care am pre-instalat pe laptop-ul meu aici.
>> Observați că, cum ar fi Windows și Mac OS, acesta are unele meniuri.
Cum ar fi Windows se pune l acolo în loc
de Mac OS, care îl pune acolo.
Dar realitatea este că e toate tipurile de aceeași.
Și aici este un întreg grămadă de software.
Nu este Dropbox.
Există o grămadă de accesorii, programe grafice pe care le vom
folosi mai târziu în termen de seturi de probleme.
Există un browser web construit în așa că acesta este un calculator cu drepturi depline
în interiorul unui calculator.
>> Dar am de gând să faceți clic pe această stânga pictogramă alb aici,
care este icoana pentru Gedit.
Și se va deschide o fereastră care are trei panouri de ea,
unul stâng, unul superior și unul inferior o.
>> Acum e în asta de top care Am de gând să scrie de fapt un cod.
Deci, hai sa facem acest lucru ,.
Am de gând să mergeți la File, Save.
Și nu s-ar fi văzut vreodată această fereastră special înainte.
Dar acest lucru este ca Mac OS sau Windows.
E doar o fereastră cu toate folderele
că am în interiorul acestui calculator.
>> Și am de gând pentru a salva fișierul ca hello.c.
Și am de gând să merg înainte și faceți clic pe Salvare.
Și acum am observat o filă din stanga sus numit hello.c.
Deci, probabil, destul de familiar, chiar dacă tu nu ai
folosit acest program special înainte.
>> Și acum am de gând să tastați în cele secvență destul de criptic de comenzi
că am văzut în urmă cu o clipă.
Include, am standardul / O.h.
Mai multe despre asta în curând.
Void main Int, buclat deschis bretele, închis acoladă.
Și apoi în interiorul de acolo cred că este unde am avut "Hello World", punct și virgulă.
Și acum salva.
>> Deci, acesta este un program scris în C, scris, prin urmare, în codul sursă.
Dar eu nu pot rula doar acest program.
Am facut un fel de doresc să se dubleze click pe o pictogramă undeva,
dar nu există nici o pictogramă alt decât fișierul de cod sursă.
Ce, din nou, este procesul care acum Am nevoie pentru a rula acest fișier prin intermediul?
Audiența: Compiler.
David J. MALAN: Deci, un compilator.
Deci, în diferite calculatoare tine face acest lucru în moduri diferite.
Dar ceea ce am făcut aici, în Appliance CS50 care este
reprezentant de modul în care s-ar putea face acest lucru pe mai multe sisteme diferite,
este pur și simplu am de gând să executați o comandă numită face.
Și de a face este pur și simplu de gând să faci asta.
Fă-mi un program de.
>> Deci, asigurați-va rula un compilator pentru mine.
Și numele programului Vreau să fac este salut.
Acum face este un program.
Și face este suficient pentru a inteligent dau seama că dacă eu spun să salut,
se va arăta în mod automat pentru un fișier numit hello.c
doar pentru că e mod este configurat.
>> Asa ca atunci cand acum am lovit Introduceți aici, această linie criptic nebun tocmai a fost executat.
Și crede-mă, înainte lung, în termen de doar câteva zile,
veți înțelege ce tot a unor mijloace prostii.
Dar pentru acum, știu doar că fac execuția declanșată de un compilator.
Cu alte cuvinte, găsit un compilator pe computerul meu
care este pre-instalat pe aparat CS50
că ne vom preda la tine în Problema Set 1.
Și apoi a luat hello.c ca intrare, și a produs aparent
0 si 1 ca ieșire.
>> Și, implicit, ceea ce face este o salvează aceste 0s și 1s într-un fișier numit salut.
Și, deși această sintaxă prea s-ar putea fi noi pentru tine, pur și simplu prin a spune dot
slash salut va fi înseamnă prin care am rulat acest program.
>> Pentru acum și pentru cel puțin un cuplu de săptămâni, aproape toate programele
scriem vor fi în ferestre de text alb-negru.
Nu soareci, nu click, nici ferestre, nici icoane.
Vom să-l păstrați simplu și să se concentreze asupra ideilor care stau la baza
inițial, înainte de a ajunge la ceva nivel mai ridicat, de exemplu,
ca izbucni joc despre care am vorbit despre în prima lectură săptămâna trecută.
>> Așa că atunci când am lovit Introduceți aici, e echivalent într-un text numai mediu
să-și dubleze clic pe pictograma numită salut.
Ce te astepti vointa întâmpla atunci când am lovit Enter atunci?
>> Audiența: Va imprima "Hello World".
>> David J. MALAN: Să sperăm că se va imprima "Hello World".
Și într-adevăr a făcut-o.
Acum, acolo a fost ceva sintaxă criptic aici.
Să înapoi pentru doar o clipă și să vedem dacă ne-am
nu poate începe deducere doar prin bricolaj, încercat și a eșuat,
ca la ceea ce se întâmplă aici.
Ce dacă am scăpa de backslash n?
Acum, unii dintre voi care au programat înainte, probabil,
știu imediat ce înseamnă asta.
Dar, pentru cei dintre voi care au nu programat înainte,
cel puțin cred că a te ceea ce se întâmplă pentru a schimba atunci când am rulat acest program?
Așa că am de gând să mă întorc în jos pentru a-mi puțin fereastră alb-negru, care
este fereastra în care Eu pot compila acest lucru.
Am de gând să recompilați salut.
Vom vedea la fel secvență criptic de comenzi.
Și am de gând să fac slash punct salut.
Și acum, cineva, dacă vrei, care nu a mai programat înainte,
ceea ce ar putea fi diferit de data asta?
Da.
>> Audiența: Nu se va opri imprimare "hello world".
>> David J. MALAN: Va sa-- rău?
>> Audiența: Nu se va opri imprimarea ea?
>> David J. MALAN: nu va opri imprimarea "Hello World".
Deci, nu este o idee rea.
Alte idei?
Da.
>> Audiența: Mesaj de eroare?
>> David J. MALAN: Eroare mesaj, OK, ar putea fi.
Ce altceva?
Audiența: S-ar putea imprima Suport cu punct și virgulă, de asemenea?
David J. MALAN: S-ar putea imprima Suport cu punct și virgulă, de asemenea.
Deci, poate că backslash atunci este ceva fel de terminous care e important.
Orice alte gânduri?
>> Idei Deci, toate bune.
Și, de fapt, ea se va să fie un mesaj de eroare.
Asta e, probabil, cel mai probabil, să fie răspunsul, în general,
pentru următoarele câteva săptămâni cum ne-am afla la cod aici.
>> Dar pentru acum amintiți-vă că de calculatoare doar fac ceea ce le spune să facă.
La fel ca aluna ridicol unt și exemplu jeleu.
Computerele noastre umane trebuia doar să facă ceea ce le-ai spus să facă.
Deci, în acest caz, dacă nu spun calculator
pentru a muta cursorul că clipește la linia următoare, el nu o va face.
Așa că atunci când am rula acest program acum, observa diferența.
>> Se pare ca un bug.
Este un bug estetic, poate.
Dar ceea ce este diferit despre acest ieșire versus ultima evident?
Da.
>> Audiența: Aceasta nu a făcut o nouă linie.
>> David J. MALAN: Nu a făcut o nouă linie.
Acum, cei care au pagini web poate realizate
înainte, s-ar putea cunoaște Tag-ul BR sau tag-ul paragraf,
foarte asemănătoare în spirit.
Un browser web va ignora până l-ai spune exact ce să facă.
În mod similar, este un limbaj ca C numai O să faci ceea ce-l spun sa faci.
>> Deci motivul pentru care toate aceste exemple,
până acum, au cam a avut ocazional această backslash
acolo, asta-i mijloacele prin care să vă exprimați
ca un nou personaj linie, ca să spunem așa.
Și puteți fel de aprecia, probabil, că acest lucru ar privi fel de stupid
dacă nimic altceva.
Dacă aș fi vrut o nouă linie, doar apăsarea Enter și apoi un fel
de macelarie codului de genul asta nu ar trebui să vă frecați într-adevăr calea cea dreaptă.
Și chiar dacă nu pasă cu adevărat de la acest punct,
vă veți da seama că acesta nu este un deosebit
bucată arata bine din cod.
>> Și așa cum lumea cu ani în urmă a decis este
că atunci când doriți să puneți cursor explicit pe o linie nouă,
trebuie să spun în mod explicit Noua linie, backslash n.
Și există o altă simboluri de genul asta.
Dar pentru moment, vom doar se concentreze pe backslash n.
>> Acum, hai să facem programul un pic mai interesant.
Am de gând să merg mai departe și de data aceasta deschide un nou fișier.
Am de gând să salveze acest drept salut-1.c.
Și doar pentru lovituri, am de gând să du-te pune-l în folderul Dropbox.
>> După cum veți vedea în CS50 documentație pentru aparatul,
mai târziu în această săptămână pentru problema Set 1, vom încuraja
să utilizați Dropbox sau unii serviciu echivalent,
pentru că atunci toți din codul de O să fie susținute în mod automat.
Și de aceea am intrat în acest dosar aici.
>> Și acum am de gând să scrie o ușor diferită de program.
Include, am standardul / O.h, void main Int.
Și apoi aici printf, salut lume, care este exact la fel ca înainte.
>> Dar acum vreau să imprimați ceva că e un pic diferit.
Vreau să imprime, spune, "Bună, David."
Bine, deci în mod evident, ar trebui sperăm
fi cazul ca, daca am recompilați acest program, acesta rulați din nou,
se va spune "Bună ziua, David."
>> Dar dacă vreau să introducă acest tip de variabile,
noțiunea de un recipient care se întâmplă pentru a stoca D-o-v-i-d și cod nu greu
în programul meu.
Ei bine, ce dacă am începe a face ceva de genul asta?
>> String s, astfel încât aceasta este o variabilă.
Dacă doriți un șir de caractere, a.k.a. un cuvânt sau o frază.
O secvență de caractere este ceea ce noi in programare numim un șir.
Mergem la generic apel e, pentru că e un nume frumos simplu.
Dar am putea spune nimic.
>> Am de gând să spun egali string s , citez, "David," punct și virgulă.
Și acum vreau să inserați D-o-v-am-d în ceea ce am de imprimare.
Și înainte am văzut un teaser pe ecranul de unele sintaxă specială
care ne-a permis să Intră pe o valoare.
Care a fost speciale simbol câteva slide-uri acum?
>> Deci la sută.
La acea vreme, a fost de procente d pentru număr zecimal.
Asta nu prea pare relevant aici.
Se pare că nu există un alt simbol la sută,
care este s la sută, care se afla pentru un substituent pentru un șir.
>> Deci, acum, foarte simplu, eu sunt O să merg să-salut 1,
deoarece acest fișier numit salut-1.c, și apăsați Enter.
Și am dat-on bară.
Ce se întâmplă?
Ei bine, aici e unde trebuie să începem să apreciem că suntem în această comandă
mediu linie, aceasta Numai text mediu.
Nu e nici un click pe icoane cum ar fi dosarele chiar acum.
Și cred că înapoi acum o clipă.
În ceea ce folder-am spus Am fost de economisire codul meu?
Deci, dosarul Dropbox.
Ar fi putut fi numit nimic.
Dar se întâmplă să fie numit Dropbox.
Așa că am nevoie într-un fel să faceți dublu clic pe că dosarul Dropbox, în scopul de a obține
în ea și de a lua de la meu Codul numit salut-1.c.
De fapt, lasă-mă să mergeți mai departe și pentru a minimiza această fereastră pentru doar o clipă.
La fel cum ar fi Windows și Mac OS, există dosare în Linux.
Există dosarele din CS50 Appliance.
E doar acum ne limităm ne la acest mediu de text.
>> Dar dacă faceți dublu clic pe pe Dropbox, observa acolo
este fișierul pe care vreau să compileze.
Dar am nevoie de acest alb-negru fereastră terminal, ca să spunem așa.
Dar am nevoie, prin urmare, să se mute în acel folder sau director.
Deci ușor arcane, dar O să te obișnuiești cu asta prea.
>> În lumea de Linux, care din nou este de operare
Sistemul nu mai avem în interiorul CS50 Appliance, există o comanda numita CD.
Ceea ce înseamnă că pot face CD, spațiu, Dropbox.
CD, directorul schimbare.
Corect.
Înapoi în a doua zi, când oamenii au fost inventarea computerelor și de operare
Sistemele de acest gen, au vrut să introduceți mai puține taste posibil.
Deci, cel mai simplu mod de a spune Directorul schimbare a fost CD.
>> Deci, dacă am lovit CD, spațiu Dropbox, observa ce sa schimbat aici.
In interiorul parantezelor aparatul este un fel
a-mi pe plac și amintindu-mi unde sunt.
Deci, dosarul deschis este Dropbox.
Dacă am tip acum ls pentru Lista, din nou succint,
pentru că oamenii nu au vrut să introduceți înapoi în zi l-i-s-t.
Așa că au făcut loc să-l ls.
>> Enter.
Observați văd două lucruri, salut-1.c, iar apoi acest lucru criptic, sursa de 1m.
Asta e doar felul meu de a spune Codul sursă pentru saptamana 1 luni.
Asta-i un dosar am descărcat de la Site-ul CS50 că am făcut mai devreme
și pune-l în aparat în avans.
>> Dar pentru acum singurul lucru pe care îl pasă este de a face acest program.
Așa că atunci când am tip face-Bună ziua 1, Enter.
La naiba.
Ceva a mers prost.
Așa că haideți să tachineze acest afară.
Și, din păcate, acest lucru este în cazul în care lucrurile obține un pic stresant la început,
cel puțin dacă ai nu programat înainte.
>> Doamne.
I-am scris un program de două linii și Am patru linii de erori.
Deci, ce se întâmplă aici.
În primul rând derula mereu înapoi în sus și pentru a găsi primul mesaj de eroare,
pentru că de multe ori compilatoarelor doar obține confuz de ceea ce și fac.
Compilatoare sunt destul de prost.
Ei vor face doar ceea ce spune-le să facă.
Și dacă le confunda, sunt doar Va fel de a arunca în sus mâinile lor
și poate arunca mai multe mesaje de eroare decât sunt de fapt relevante.
>> Deci, să ne uităm la prima.
Super criptic la prima.
Dar notificare, aici e numele fișier în care am dat-o, aparent.
Colon 5, colon 5 înseamnă doar pe linia 5 la al cincilea caracter.
Deci, coloana a cincea de caractere, dacă vreți, eroare.
Utilizarea șir identificator nedeclarate.
Ați vrut să spuneți n standard?
>> Nu, am vrut să spun șir.
Și apoi e un fel de copiere și lipire
ceea ce am scris pentru a trage într-adevăr mea atenție la unde am greșit.
Deci, pentru un motiv oarecare C, sau cel puțin compilatorul
nu înțelege șirul de cuvânt.
Și asta pentru că l-am făcut în sus.
Deci șir nu există în C. Ce CS50 face,
pentru primele câteva săptămâni doar a clasei,
Este oferim unele de formare roți, ca să spunem așa.
Și am pus aceste roți de formare în interiorul unui fișier special numit CS50.h.
>> Deci, aceasta este a doua de două fișier nume care aparent se termină în dot h.
Să înapoi.
Printf este o declarație sau o funcție care se pare că imprimă ceva
pe ecran.
Dar tu nu m-ai văzut punerea în aplicare printf, chiar.
Cineva de ani în urmă în aplicare printf.
În ceea ce dosar ar fi să pariați el sau a pus în aplicare
pentru printf, codul de printf?
>> Într-un fișier numit standard de I / O.h.
De fapt, este, probabil, în două fișiere, eu standardul / O.h,
care vine de la antet dosar, și eu standardul / O.c,
care vine de la codul sursă C.
Deci, el sau ea cu câțiva ani în urmă plopped codul care au scris în acest fișier
astfel încât oameni ca noi ani mai târziu, poate cuprinde,
ca să spunem așa, în propriile noastre programe.
>> Și într-adevăr, asta e ceea ce semnul lire urmat de cuvântul includ o face.
Se pare pe hard disc, găsește fișierul numit I standardul / O.h,
și apoi în mod eficient și copii lipește-l în interiorul propriului meu dosar.
Deci, acum, programul meu nu știe cum să imprimați de pe ecran.
>> Deci, conform acestei logici, în cazul în care este definit șir?
>> Audiența: CS50.h.
>> David J. MALAN: CS50.h.
Și într-adevăr, asta e ceea ce am, personalul de bază, s-au făcut.
Am inventat câteva tipuri de date, ca să spunem așa, ca un șir de caractere,
în plus față de cele pe care le obține gratuit, ca un întreg.
Și vom vedea pe alții ca pe un char pentru un personaj și mai puține.
In interiorul CS50.h aparent este cel puțin o parte mențiune de șir.
>> Deci, acum lasă-mă să merg mai departe și face reluare salut-1.
Voi mări din nou și trece degetele mele.
Acum, prin care a făcut o schimba-am reparat cele mai multe lucruri.
Dar, la naiba.
Mai multe procente decât argumentele date.
Ce am gresit de data asta?
>> Deci, este încă destul de criptic.
Dar această eroare este pe linia 7 și 21 de caractere.
Așa că hai să căutăm aici.
Este un pic mai subtil.
Dar dacă te gândești la ceea ce ideile fundamentale de aici sunt,
poate putem tachineze această separat.
>> Deci, printf este numele funcției.
Parantezele, până în prezent, este la fel ca ceea ce ne-am pus în jurul
chestiile pe care le trece ca date de intrare pentru o funcție.
Bine, doar o convenție umană arbitrar.
Utilizați paranteze.
În interiorul acestor paranteze am fost punerea ghilimele,
și apoi un șir de genul "hello world".
>> Dar, în acest exemplu mai devreme foarte pe scurt a facut privim cu zero.
Și am avut la sută d, ce altceva a fost în interiorul acestor paranteze
că am strigat verbal?
Da.
>> Audiența: Deci, este ceea ce sunteți luați [Inaudibil] din cadrul [inaudibil]
ce acestea [inaudibil]?
David J. MALAN: Exact.
Așa că am avut la sută d.
Dar apoi am avut aproape Citat, virgulă, contra.
Corect.
Am specificat ce vrem pentru a face ca substituent.
Deci, ce am de gând să fac aici este virgulă, ce vrei să pui?
Audiența: S.
David J. MALAN: S, deoarece în acest caz
este numele recipientului de depozitare.
Este numele pe care bol de sticlă.
Întrucât înainte de a fi contra în care simplu exemplu Scratch ne-am uitat la.
Deci, acum, după ce a făcut două modificări, lasă-mă să măriți
și să încerce încă o dată să compila acest program.
>> Acum văd că linia de criptic.
Dar asta e, de fapt, Numele compilatorului.
Zăngănit este numele compilatorului.
A face este doar m-ai salvat dureri de cap de tot
tastând comanda de mult nebunie.
Deci, acum, dacă eu dot reduce salut-1, Eu ar trebui să vedeți "Salut, David."
>> Destul de underwhelming, totuși, nu?
Am fi putut face aceasta mult mai simplu
fără a vorbi despre variabile și CS50.h și tot de ce.
Deci, haideți să fac din el un ceva mai interesant.
>> In plus fata de CS50.h, având lucruri cum ar fi string
a declarat, biblioteca CS50 are, de asemenea, câteva funcții.
Deci, la fel ca în urmă cu ani, cineva a scris printf și pune-l în standard de I / O.h
și un alt fișier.
>> Noi, personalul CS50, a scris o funcție numit getchar, GetDouble, GetFloat,
Getint, GetLongLong, getString, și ne-am pus pe cei într-un fișier
numit CS50.h și CS50.c.
Și le-am pus în interiorul de CS50 aparatului.
Și oamenii pot, de asemenea, le descărcați on-line în cazul în care
doresc să le pună pe lor calculatoarele proprii, de asemenea.
Care este de a spune că ne-am creat Funcțiile care primesc input de la utilizator.
Nu știu ce tot de aceste tipuri de date sunt.
Getint este un fel de simplu, cum ar fi obține un număr întreg într-un fel din partea utilizatorului.
Și getString este probabil ca get un cuvânt sau o propoziție din partea utilizatorului.
>> Așa că haideți să ne concentrăm pe asta.
Și am de gând să mă întorc în aparat și am de gând să merg mai departe
și salvați acest fișier ca, sa-i spunem o salut-2.c ca a doua versiune meu.
Și să facă o pereche de modificări.
>> De data aceasta în loc de greu David codificare, care
face un incredibil de consistent dar programul underwhelming,
Ce se întâmplă dacă am loc fac getString?
Acum observa getString are o paranteză deschisă,
paranteză închisă, deoarece ea nu are nevoie de nici o introducere.
Este doar de gând să-mi iau un șir de la utilizator.
>> Și acum un cuvânt pe altă sintaxă.
Punct și virgulă încheia doar o linie de cod.
Nu ai nevoie de ele peste tot.
Dar asta înseamnă doar că sunt făcut cu această linie de cod.
Permiteți-mi să se mute pe un alt declarație sau funcție.
String declară o variabilă.
String este cum ai spune da-mi un castron, vă rog.
Și lasă-mă să pun un șir în ea.
>> Și acum semnul egal.
Care este semnul egal în esență echivalent cu?
>> Audiența: Atribuirea.
>> David J. MALAN: Da, atribuirea unei valori.
Deci, dacă eu, de exemplu, apel această funcție getString,
și vom vedea într-un moment care este va solicita utilizatorului pentru un șir.
Acest lucru este ca lasa-ma atunci scrie D-o-v-i-d pe o bucată de hârtie.
Și când spun string s este egal cu getString,
egal nu înseamnă într-adevăr egal în programare C.
Aceasta înseamnă aloca din dreapta în partea stângă pe partea stângă.
>> Așa că am ajuns un șir.
Iar semnul egal înseamnă a pus în depozitarea recipient numit uri.
Si apoi trec asta la printf pentru a face de fapt treaba.
>> Deci, rezultatul final, atunci se va să arate un pic diferit.
Să fac-Bună ziua 2.
Fie ar putea lucra.
Ești în urma de-a lungul.
Asigurați-salut 2 a lucrat.
Dot slash salut-2, Enter.
>> Se pare că am un infinit buclă sau ceva.
Nu se întâmplă nimic.
De ce?
>> Audiența: Se face o buclă infinită.
David J. MALAN: Este o buclă infinită.
Este un fel de așteptare pentru mine să de fapt, să-i furnizeze unele de intrare.
Așa că lasă-mă să mergeți mai departe și de tip în David, și apăsați Enter.
Și acum se spune "Bună ziua, David."
Dacă am alerga din nou.
Să tastați Rob, "salut, Rob."
>> Acum, acest lucru este cel mai rău interfață cu utilizatorul vreodată.
Utilizatorul este aparent ar trebui să știe ce să facă.
Dar nu contează.
Folosind aceste aceeași clădire blocuri la fel ca în Scratch,
putem rezolva această problemă și spun ceva de genul numele dvs., vă rugăm, de colon,
spațiu, închis citat, aproape paranteze, punct și virgulă.
Deci, o mulțime de nou imbecilitate cu sintaxa.
>> Dar observați Tocmai am adăugat o piesă de puzzle de mai sus acesta
și mai presus de aceasta.
Deci, acum, dacă am rulat acest lucru, salut-2, Enter.
Așteaptă un minut.
Ce sa întâmplat?
Nu e nici o comportă diferit.
Da.
>> Audiența: Nu ai fugit face din nou.
>> David J. MALAN: Nu am executați face din nou, dreptate.
Așa că m-am schimbat codul sursă.
Dar, din nou, nu e asta flux.
Codul sursă prin intermediul compilatorului dă Ești nou cod obiect, sau 0 si 1.
Așa că am nevoie de fapt, make reluare salut-2 Enter.
OK, ceva pare să se fi întâmplat.
Dot slash salut-2.
Numele tău te rog.
Și să fie clar acum, de ce este cursorul pe aceeași linie?
Exact.
Nu am pus backslash n aici, în codul meu.
Așa că acum pot scrie ceva de genul Daven, Enter.
Eu pot rula din nou și tastați ceva de genul Gabe, Enter,
și vom obține un alt program din nou și din nou și din nou.
>> Acum în cele din urmă vom avea nevoie de pentru a utiliza câteva capacități diferite.
Avem nevoie de a introduce în cele din urmă unele condițiile de a face lucruri condiționat.
Poate cele mai rapide astfel încât să putem face lucruri din nou și din nou.
>> Poate că ar fi frumos dacă am ar putea pune în aplicare propriile noastre functii,
ca și cum am putea să pună în aplicare propria noastră printf sau propria noastră versiune a getString
și GetFlow, pentru că în cele din urmă chiar folosind acest mediu de linie de comandă
putem face chiar mai mult vizual interesant de lucruri.
>> Într-adevăr, în concluzie lasă-mă să fac asta.
Am de gând să merg mai departe și închide aceste ferestre
și deschide această pictogramă aici, care este doar o mai mare
versiune a încorporat fereastră de terminal.
Deci Gedit nu numai locul de codul meu,
dar, de asemenea, o construit în fereastră terminal, fereastră în alb și negru, unde pot rula
comenzi.
>> Sa intamplat sa deschid o versiune mai mare de acest lucru.
Și acum am de gând să merg în dosarul pe care am deja
pune în avans pe site-ul cursului.
Și am de gând să merg mai departe și deschide un fișier numit thadgavin.c,
care a fost scris de altcineva.
>> Și dacă ne uităm la acest lucru, acest lucru nu este genul de cod
vom fi scris de la Scopul acestui cod
a fost de a scrie cea mai frumoasa Căutați cod care el sau ea ar putea,
indiferent dacă sunt sau nu o altă ființă umană ar putea vreodată
înțelege acest cod.
>> Într-adevăr, în fiecare an, nu e ceea ce-i numit un concurs C mascată, care
este pentru geeks reale care scriu cod care nimeni altcineva nu poate citi,
dar care face ceva, fie foarte simplu sau într-adevăr uimitor.
Și ne-am gândit să încheia cu acest aspect
la ceva care este destul de uimitor este posibil să fi văzut o dată înainte.
Dar vom ajunge la această notă, slash punct, thadgavin.
Acest lucru atunci este ceea ce așteaptă.
>> Asta e pentru CS50.
Ne vedem miercuri.
>> [MUSIC JOC]