[Powered by Google Translate] DAVID Malan: To je CS50, a to je začiatok týždňa 1.
Čo sme si mysleli, že to dnes, je pozrieť sa späť na
niečo, čo mnohí z vás pravdepodobne chodil minulosti pre niektoré
Teraz a môže vyzerať trochu povedomý.
To, čo tu, to je samozrejme v -
Divákov: Science.
DAVID Malan: Vedecké centrum.
Takže to je vlastne jeden z prvých počítačov
Späť z roku 1940.
To bol jeden z prvých elektromechanických počítačov
že bol schopný obzvlášť dlhé,
samostatných výpočty, a to, čo sme vlastne vidieť v
veda mesta je len malý kúsok tejto veci.
Čo sme si mysleli, že to potom, je pozrieť sa späť na video
, Ktorá bola vykonaná pred časom, ktorým tento
vec na svete.
A uvidíte z hudby a hlasu, ktorý naozaj ti
boli veľmi šťastné časy.
>> [PREHRÁVANIE]
-Triumf matematické a mechanické zručnosti, je to
skvelé nové automatické kalkulačka na Harvardovej univerzite.
Zložité problémy v matematike, dal prostredníctvom
Stroj v kódovanej forme na pásku, sú presne riešené
minút zlomok času potrebného na ľudskú
Výpočet.
Navrhnuté pre urýchlenie všetkých foriem matematické a prírodovedné
výskumu, bude obrie mechanický mozog pracovať pre Spojené
Štáty Navy až do konca vojny.
>> DAVID Malan: Takže to, čo možno neviete je, že to bolo v
to isté zariadenie, ktoré obdobie sme všetci teraz sa celkom veľa
za samozrejmé bol vytvorený, to chyba.
Takže jeden z inžinierov pracuje v tomto počítači
doslova našiel malý mora v počítači, ktorý vyústil
v niektorých nesprávnych výpočtov.
A ako príbeh pokračuje, že mora bola nahrávaná do tohto protokolu
časopis tu, späť od 9. do 1940-niečo,
a tak sa narodil na svet termín "chyba".
Takže odteraz budeme považovať chyby za nejaký druh chýb v
programy, či už umelých alebo, v tomto prípade, hmyz.
>> Takže niekoľko oznámení, ako budeme postupovať.
Takže CS50 má tradíciu ponúkať balíčky z druhov na
väčšina piatok v priebehu semestra, kde sme sa vziať 30 až
40 študentov do ohňa a ľadu na námestí pre príležitostné
táranie, hovoriť o počítačovej vedy,
hovoriť o budúcnosti.
Pozývame Spolok absolventov a priateľov z priemyslu ukecať
študentov i
Naozaj smerom k ukončeniu robiť čo je pomerne veľká trieda
tým viac intímne, najmenej raz za kým
podmnožiny študentov.
Takže ak by ste sa k nám pripojiť tento piatok, 13:15, prejdite na
CS50.net/lunch na RSVP.
A urobíme to recurringly, tak nie sa báť, ak si nie ste
medzi prvých 30 alebo tak tento týždeň.
>> Tak pisár poznámky.
Slovo na zdroje, ktoré budú teraz začať byť k dispozícii
pre študentov v triede.
Tak, aby vaše hlavy nemusí byť dolu počas prednášok
klikiháky dole všetko, čo som povedal, a tak ďalej, čo robíme
namiesto toho ich poskytne z učiteľov
kánonický súbor poznámok.
Takže máme jeden z našich výukových chlapíkov, Andrew Sellergren,
kto si sadne každý týždeň, preskúmava videa, a potom
zapisuje to, čo si myslíme, že je docela
autoritatívne súbor poznámok.
A Andrew je fond, tiež uvedenie Snark poznámky pod čiarou v
spodné.
Takže budete snáď teraz títo ako referenčná príručka pre
zábavy, a tiež, príde kvíz čas, rovnako ako príležitosť k preskúmaniu
čo sa stalo v jednotlivých prednášok.
Takže tie sú spojené na prednášky stránke.
>> Problém set 0, zatiaľ, je vonku.
A pokiaľ ide o zdroje ktoré máte k dispozícii -
návod.
Milo viedol prvý na piatok.
To bolo natočené, vložte on-line v sobotu.
A tak si uvedomiť, ak si nie ste naozaj istí, kde začať,
pre tento alebo budúci p-sady, vždy sa najprv obrátiť na
návod alebo video nariadenia.
Krájanie prebieha, v cs50.net/section je miesto, kde si
by mal predložiť svoje preferencie, ak nemáte
už tým, že dnes.
Vzhľadom k tomu, sekcia začne tento rok v nedeľu, pondelok,
a utorok.
Robíme body tieto tri dni, každý týždeň z
semester z väčšej časti.
A my tiež zaviesť, opäť rôzne skladby.
Takže budete opýtaný na tomto vnútornému členenie forme, ak ste
Nevidel ju už, ak ste medzi tými menej
pohodlné, oveľa pohodlnejšie, alebo niečo medzi tým.
A ak ste trochu na plot, všeobecne niekde v
medzi je to, čo väčšina študentov končí kontrolu.
Úradné hodiny začína dnes večer.
>> Takže Scratch je pomerne nízka kľúč, aj keď je to úplne prirodzené,
bežať do rôznych chýb, alebo byť neistí ohľadom toho, ako
vykonávať niečo.
Takže si uvedomiť, že začneme ordinačné hodiny tento týždeň.
Budú na Annenberg pondelok, utorok, streda,
Štvrtok, 20:00 - 23:00 počas mozgu prestávke.
Horná classmen môže dostať dovnútra, a keď budete mať problémy dostať
vo dverách, pretože oni budú biť, len hovoriť svoju cestu
v a vysvetliť, že si s CS50.
Typicky 20 až 30 z nás na zamestnanca tam bude pomáhať
ste jeden na jedného.
>> Po príchode myšlienka je táto: budete priniesť svoj notebook,
budete mať nabíjačku, budeme mať ďalšie napájacej šnúry,
najmä pozdĺž južnej stene Annenberg, kde
je tu veľa elektrických zásuviek.
A hlavný vstupný bod do kancelárie hodín Q & A je ísť do
cs50.net/discuss a, aby ste mohli písať
Váš dotaz tu.
A označiť ho PSet 0 alebo PSet 1, bez ohľadu na týždeň
by sa mohlo stať, že je.
A potom to, čo budeme robiť, je mať tabuľku vyučovacích štipendistov
a priebeh asistenti, všeobecne 8 alebo 10 alebo tak z nás,
prechádza, pozorne sledovať na palube, a
šklbanie off otázky naozaj tak rýchlo, ako len môžeme,
odkazuje vás miest súvisiacich, ak ste našiel tie
sami, on-line odkazy, podľa potreby.
A potom, ak sa vyskytnú problémy, pretože nevyhnutne
bude, alebo to proste dáva väčší zmysel, aby sa posadili jeden na jedného,
práca cez problémy s niekým.
>> Alebo si len prísť do úradných hodinách naozaj
potrebuje, aby myslenie.
Vy nechcete ísť cez elektronickej podobe, môžete
Naozaj chcete stretnúť s niekým.
Komunikujte, že pre nás, a čo sa stane, je, keď si
otázka bola vidieť zamestnanca, a my
určiť, Jo, malo by to byť odoslané do jednej z 20 alebo
30 členov tímu tu lokálne, uvidíte v hornej tohle nechal
Trochu Zadajte frontu tlačidlo začne blikať cs50.net /
diskutovať.
A to vám hovorí, že ste teraz boli pozvaní, aby
hovoriť, vstúpiť do fronty.
A kliknutím na toto tlačidlo, bude vaše meno a potom sa objaví na
iPad, že privítanie CS50, jeden z kurzu hlavami, bude
sa drží v blízkosti vchodu Annenberg, kto bude potom
vidí ako zobrazené tu, študenti, ktorí majú otázky týkajúce sa
vľavo sa zamestnanci, ktorí sú prítomní na pravej strane.
A s kliknutím vľavo a vpravo, bude váš webový prehliadač
začnú blikať, akonáhle, napríklad, profesor McGonnagal
je pripravený Vás uvidíme na určité tabuľky v Annenberg.
>> Tak sme urobili niektoré z týchto minulého roka.
Sme reštartuje ordinačné hodiny a
re-implementovaná veľa softvéru.
Takže si uvedomiť, že to bude zahrievať tento týždeň.
Ale tiež si uvedomiť tiež, v minulých rokoch, ako ste mohli počuť
od priateľov, úradné hodiny majú skutočne 50 až
150 študentov naraz.
A to jednoducho nie je možné, aby sme sa zvládnuť, že
efektívne, jeden na jedného, ​​po celý večer.
A tak to, čo sme naozaj snažiť urobiť tento rok je
zarábať na tom, že veľa otázok sú
často kladené a môžu byť často lepšie odpovedať
asynchrónne.
Takže môžete nejako premyslieť služobného odpovede,
a my môžeme myslieť prostredníctvom kódu, bez vyhrievania
tlak nutne snaží
cez to vedľa seba.
Takže predpokladáme, že zhruba tretina alebo polovica otázok
budú odoslané osobne, a my sa pokúsime odtrhnúť preč ako
veľa ako polovica alebo viac elektronicky,
v úradných hodinách.
A budeme naďalej používať Diskutovať
po celý týždeň rovnako.
>> A konečne si uvedomiť, že tento kurz môže byť prijaté vyhovuje / nevyhovuje.
Takže ak ste na plot alebo len si myslím, že si naozaj
si istý, či je to svet pre Vás, alebo je to naozaj
celkom cudzie, si uvedomiť, že je to skvelý spôsob, ako
získanie nejakej dôveru, ktorá sa vstúpiť do
triedy, ako ja úprimne, pred rokmi.
A potom musí do piatich týždňov nejako zistiť, na
yourself, ak chcete zostať vyhovel / nevyhovel, prepnite na list
stupeň, alebo podobne.
A zvyčajne to, čo vyhovuje / nevyhovuje to, myslím, pre študentov je
, Že ak dáte v tom, že 10 hodín, 20 hodín, bez ohľadu na to
môže byť na niektoré problémy, a tie búchanie hlavou
proti múru,
a naozaj jednoducho nemôže naháňať niečo dole, a vy
majú toľko iných vecí, ktoré musíte urobiť, úprimne, čo som
že vyhovel / nevyhovel, je, že má okraj preč
situácie, ako že.
Kde ste vzal tú vec 90% cesty.
Vieš, že to nie je úplne dokonalý.
Ale máš veľa z toho, však.
Takže zvážte vyhovel / nevyhovel tak, že vám to
mentálny model, možno.
>> Dobre, tak minulý týždeň sme ponorila do nuly, a my
hovoril o programovaní na pomerne vysokej grafickej úrovni.
A dnes sme, aby prechod na iný jazyk
názvom C, nižšiu úroveň programovací jazyk na vrchole
ktoré veľa moderných jazykov sú teraz postavené, vrátane niektorých
z tých, ktoré budeme používať k termínu ku koncu.
A syntakticky, ako vyzerajú
je všetko veľmi podobné.
Tak začnime aby tento prechod tu.
Takže to bol program, minulý týždeň to bolo najjednoduchšie
hello world programy.
Je to jednoducho vytlačí na obrazovku Ahoj všetci, s
Trochu bublinu vychádzajúce z mačky.
No, ak začneme teraz to preložiť do iného
jazyk, si uvedomiť, že myšlienky dnes a v stredu
sú totožné, ale syntaxe začne meniť.
Takže vzhľadom k tomu, minulý týždeň sme mali, keď zelená vlajka kliknutí, hovoria
hello world.
Dnes budeme mať int, hlavné, prázdno, printf,
návrat, s iným syntaxe tam rovnako.
Zložené zátvorky a zátvorky, a citácie, a ktovie čo ešte.
Ale uvedomte si, že jadro myšlienky tu je tlač,
a nakoniec skutočnosť, že hlavné je teraz bude
synonymom spustenie programu.
Hlavné bude, kde zelená vlajka začína veci preč.
>> Tak teraz poďme šprýmař oddelene niektoré zo základných stavebných kameňov tu
predtým, než sme sa ponoriť do niekoľkých konkrétnych príkladoch.
Tak sme volali toto vyhlásenie minulý týždeň, kedy je to len
inštrukcie.
Urobte to - v tomto prípade, pozdraviť svet.
No v C, keď sa pozrieme na práve tejto línie, je to, ako sme
začnú vyjadrovať, že konkrétny kúsok skladačky:
printf ("hello world");.
A teraz budeme dráždiť tieto od seba viac a viac v priebehu doby,
ale uvedomiť, že tam je vzorec.
Takže jeden, máme túto vec zvanú printf, ktorý je
v podstate podobne ako slovo Say.
To je to, čo to bude robiť.
Printf, a f tu znamená "naformátovaná".
Tak to jednoducho znamená, že môžete vložiť
rôzne estetické detaily.
Takže quote koniec citátu je začiatok toho, čo budeme
začať volať reťazec.
Slovo, veta, veta.
Reťazec v programovacom jazyku je postupnosť nula
alebo viac znakov.
Takže h-e-l-l-o, čiarka, a tak ďalej, je,
quote koniec citátu, reťazec.
A teraz spätné lomítko n, trochu syntakticky divné, ale my
už definované, že minulý týždeň v tom zmysle, čo?
Je to len nový riadok.
Je to len spôsob, ako sprostredkovať k počítaču, ktorý chcete
ekvivalent klávesy Enter sa, ale vy nie
Chcete skutočne stlačíte klávesu Enter, a preto pokaziť všetky
formátovanie vášho aktuálneho programu.
Teraz zátvorky uzatvárajú túto reťazec, otvorené párenie a
zavrieť párenie, a vo vnútri to je náš reťazec.
Vzhľadom k tomu, že je to preto, že v C, a iné programovanie
jazyky, veci, ako je printf trvať argumenty, alebo sa
parametre.
>> Takže začať premýšľať hneď tejto fialovej Say bloku,
funkcie, ako je metóda, ako v postupe.
Môžete si naozaj hovoriť, čo chcete teraz, ale
je to akási miniatúrna programu, ktorý iba robí jednu
vec, v jednej línii, nie menej.
Takže printf je tiež to, čo budeme začať volať
funkcie, a funkcie niečo - v tomto prípade
vytlačí formátovaný reťazec na obrazovku -
ale funguje aj vziať argumenty alebo parametre.
A argumenty alebo parametre, ďakujem, máme na mysli
, Že ich správanie môže byť ovplyvnené tým, čo odovzdať
vnútri zátvoriek.
Takže v tomto prípade, byť printf potreby povedané, čo k tlači, a my
len prejsť v, v úvodzovkách tú, reťazec, ktorý sme
skutočne chcete vytlačiť.
A bodkočiarku na samom konci tohto riadku je len
historické obtiaž pričom na konci väčšiny riadkov kódu,
dáte bodkočiarku, aby super clear k počítaču
že tento riadok kódu tu končí.
Teraz je to dobré, pretože, ako uvidíme, ako získať viac programov
komplex, bude bodkočiarku, aby Super Clear nám ľudí,
a tiež počítač, kde riadky kódu začiatku a konca.
Uvedomte si, že niektoré jazyky nemajú niektoré
z týchto rovnakých detailov.
A v skutočnosti, v JavaScripte, nie vždy potrebujú niečo
ako bodkočiarkou.
Ale o tom prísť.
>> Tak slučky.
Mali sme niečo podobné, veľmi intuitívne, zrejmé, vykonajte
niečo znovu a znovu a znovu.
Rovnako ako uvedenie na ponožky, alebo hovoriť ahoj, v tomto prípade.
No, začína dnes v C, môžeme vyjadriť túto Scratch
zablokovať až while (true) printf ("hello world").
Takže všimnete začíname stavať na doslova puzzle
kus z doby pred.
Máme rovnakú fialovú blok, ale je to vo vnútri tohto
bracketed Forever blok, a najlepší spôsob, ako preložiť, že
na C je nasledujúce.
Nie je Forever kľúčové slovo.
Nemôžete jednoducho napísať f-o-r-e-v-e-r v C.
Takže najbližšia analógia je pri.
>> Teraz, while (true) sa zdá trochu hlúpe, pretože sa hodnota
z pravého niekedy zmení?
Pravdepodobne nie.
Je to ako hovoriť, zatiaľ čo jedna, zatiaľ čo na, zatiaľ čo pravda.
Je to všetko to isté, pravda je vždy prípad.
Tak to slučka je vlastne prinútiť aký druh slučky?
Len nekonečná slučka, vpravo.
Slučka Forever alebo ako sme hovorili minulý týždeň,
len nekonečné slučky.
Takže niekedy je to zlé.
Niekedy je to chyba, niekedy to je dôvod, prečo vám
Rotujúce plážová lopta, alebo presýpacie hodiny alebo podobne.
Avšak v tomto prípade, sme zámerne, pre čo
dôvod, chcel tlačiť rovnakú vec znovu
a znova a znova.
Alebo v prípade, že podobne ako hodinky, chcete urobiť
niečo znovu a znovu a znovu.
Takže nekonečné slučky by mohlo mať zmysel.
A to je, ako v C by sme mohli preložiť Forever kódu.
>> Takže teraz to je trochu konkrétnejší.
Sme opakovať 10 krát nasledujúce vyhlásenie.
Takže while (true) nie je úplne pracovať, pretože pravda je
vždy pravda.
Takže ak sa namiesto toho pozrieť na verziu C, teraz syntaxe dostane
trochu viac záhadný.
Ale aby som bol úprimný, akonáhle začnete vidieť, to všetko dostane
celkom povedomý rýchlo.
Tak toto je to, čo sa nazýva pre sláčiky.
Pre slučke sa ti to povedať počítač niečo robiť
znovu a znovu a znovu tak dlho, ako
tieto veci sú pravdivé.
A teraz, čo máme na mysli, že?
No, tam tri diely pre sláčiky, a budeme
vrátiť na to v kontexte skutočnej
Príklady v okamihu.
Takže sa nemusíte báť, ak to nie je úplne vstrebať naraz.
Ale int i = 0, je dlhý príbeh krátky, hovorí mi
premenná, ktorá je typu integer, tak mi číslo
volal aj, a inicializovať na 0.
To je mi dať ako algebraické premennej x a
inicializovať na 0.
Ale v tomto prípade sme hovorili, že i
Potom v strede, to hovorí, že aj je menší ako 10.
To hovorí počítač sa nasledujúce veci tak dlho,
ako som je menší ako 10.
A samozrejme to začína menej ako 10, pretože
začína na 0.
Potom konečne, môžete hádať, čo snáď i + + znamená.
Je to trochu syntax, ktorá znamená len zvyšovať i
Takže pridať 1 až I, znovu a znovu a znovu.
>> A tak, ako uvidíme túto slučku, táto syntaxe, skôr implementuje
presne to isté, čo, úprimne povedané, v Scratch bolo tak
oveľa jednoduchšie vyjadriť.
Opakujte 10, a máte hotovo.
V C, a vo väčšine programovacích jazykov, musíme byť
trochu viac poučné pre počítač a skutočne
zadať niečo také.
Ale vrátime na tieto a iné syntaxe.
>> Čo o premenných?
V Scratch sme mali niečo ako tieto oranžové bloky,
kde by som mohol deklarovať premennú.
Poďme ľubovoľne volať to kontraproduktívne.
Poďme inicializácii na 0, a potom sa
Poďme navždy niečo urobiť.
V tomto prípade sa Scratch hovorím čítače, takže
mačka bude mať trochu bublinu, ktorá sa hovorí
číslo, ktoré je v tejto premennej.
A potom máme zmenu čítač 1.
Takže toto všetko je zabalený vo vnútri zámku Forever.
Takže už teraz stavebné bloky v C s
ktoré sa to preložiť.
>> Jeden spôsob, ako by sme mohli urobiť, že je to.
Daj mi celé číslo, hovoria počítadlo.
Ju inicializovať na 0
v prvom riadku.
While (true), takže som kradnúť, že myšlienku už od okamihu
Pred, choďte do toho a urobiť nasledovné.
Vytlačiť počítadlo, a potom zvýšiť čítač,
znova, a znova, a znova.
Alebo znova, + + jednoducho znamená pridať 1 k niečomu.
Ale je tu nový kus syntaxe tu.
Čo sa skákať tak, ako to u našich predchádzajúcich príkladoch?
Áno, to% d
Takže môžete potrebné odvodiť, čo to robí, úprimne povedané, na základe
o tom, čo Scratch blok robí.
Ale zase v C, len musíme byť trochu konkrétnejší
pokiaľ ide o vyjadrovanie.
>> Takže printf ("% d \ n").
No väčšina z toho môžeme vyhodiť tak známe.
Úvodzovky jednoducho znamená, že to string, spätné lomítko n
je len nový riadok.
Takže jediná nová vec tu je% d
A všetko, čo je, je zástupný symbol.
% D bude naznačovať desatinné číslo.
A% d znamená počítač, dal desatinné číslo tu.
No, aké číslo chceš tam dať?
No, ako ste si snáď vyvodiť, po čiarke hovoríme
čítač, to je názov premennej, ktorá je deklarovaná alebo
vytvoril pár riadkov vyššie.
Takže je to len C je spôsob zapojenia do premennej do
string dynamicky.
Vzhľadom k tomu, naopak, keby som namiesto toho urobil niečo ako
Tento, printf ("počítadlo"), by čo to
Program, miesto toho, pravdepodobne?
Je to doslova tlačiť "counter".
Čo nie je efekt, ktorý chcem.
Musím nahradiť v niektorých číselnú hodnotu.
Tak uvidíme, že funkcie potom, rovnako ako printf, môže trvať nebude
iba len jednotlivé argumenty, ako
"Hello world".
Môžu mať citovať koniec citátu čiarku, a potom niektoré premenné
, Ktorý bude mať zapojený do, ako uvidíme predchádzajúci reťazec
prostredníctvom týchto zástupných znak%.
>> No čo o logických výrazoch?
Booleovské výrazy boli tieto hodnoty, true alebo false.
Áno, alebo nie.
1 alebo 0.
Zapnúť alebo vypnúť.
Takže Scratch vyzerajú takto, a všimnite si, že
Spodná blok je v podstate spojenie
z dvoch menších blokov.
Tak som trochu pretiahnuť tri puzzle kúsky
dohromady, aby sa, že dlhšie kúsok skladačky tam tak, že som
mohol vyjadriť myšlienku, že chcem byť x menší ako y a
y byť menej než z
A tak som si preložiť tieto dve samostatné linky sa mení takto.
Horná jeden môže byť veľmi triviálne preložený do C,
sa len x <y.
Možno s niektorými zátvorke správnu mieru.
A potom v C, nemusíte písať a označenie
Spojenie niečoho.
Namiesto toho napísať &&.
A ako sme si nakoniec vidieť, jeden ampersand sa stane
znamenať niečo iné.
Takže && len označuje myšlienku AND.
>> Takže znovu, aj keď to začína vyzerať trochu zložité,
jeden z účely zavedenia Scratch, okrem
len s akýmsi zábavy na-rampa, kde si môžete robiť
niečo, čo je veľmi grafické a animované, a
Shareable a podobne, je tiež vysvetliť myšlienku, že
všetky myšlienky začneme potápanie do dnes a dopredu
boli začlenené do ešte to tak jednoduché
rozhranie od prvého dňa.
Čo o tomto tu?
>> Tak podmienky.
Tak Scratch bloku vľavo tam vyzerá
trochu zložitejšie.
Ale je to len nejaký ťahanie a
zhadzovanie známych kusov.
Ak x je menšie ako y, povedzte to.
Else if x je väčšie ako y, povedzte to.
Else, môžeme logicky predpokladať, že to vyvodiť, že
musia byť rovnaké.
Tak povedať, že sú si rovné.
Teraz v C na pravej, rovnako presné vec.
A zistili, že zložené zátvorky sa bude
rysom C a ďalších jazykov, ktoré tento druh
zapuzdrenie.
Rovnako ako v prípade bloku je to žltá vec, ktorá je trochu
schmatol fialové blok vnútri nej.
Podobne sú tieto zátvorky -
Tieto zložené zátvorky -
chcel vykúzliť rovnaký nápad objímať jeden alebo viac
riadky kódu, ktoré sú odsadené vnútri nich.
Takže na pravej strane tu, ak x menší ako y, printf
("X je menší ako y").
Alebo ak x je väčšie ako y, vytlačiť rovnaký.
Else vytlačiť, že sú si rovné.
>> Takže v skratke, je to celkom priame mapovanie alebo preklad
jazyka sme videli doteraz, vrátane niektorých
z viac sofistikovaných funkcií.
Takže nemusíte používať toto pre svoj projekt, alebo možno nie
používať to pre svoj projekt v tomto týždni.
Ale my sme tieto veci nazýva pole v C. V Scratch,
sa im hovorí zoznamy.
A videli sme ich s Fruitcraft RPG minulý týždeň.
Malý modrý chlapec, ktorý šiel okolo, zdvihne
čerešne a pomaranča a podobne.
No v Scratch, bolo, že realizovaný s týmto oranžová
blok, ktorý obsahuje slová, v tomto prípade, sme doslova
dodáva "oranžová", aby
premenná tzv inventára.
Takže v C, táto syntax bude trochu viac záhadný.
A vrátime k tejto budúceho týždňa a urobiť viac
zaujímavé veci vo svete kryptografie s ním.
Ale v dolnej tu, tieto dve čiary v podstate
preložiť, čo robíme v jednom Scratch blokovať tam.
Ale o tom prísť.
>> Takže dávať to dohromady, tu je program v C. Tak poďme
rýchlo šprýmař oddelene niektoré časti syntaxe tu, ale
potom si to skutočne začať písať nejaký kód, zoznámiť
ste s niektorými z nástrojov budeme používať, a uvidíme, či budeme
môže stavať na teraz niektoré z týchto základných stavebných kameňov od
posledný týždeň, teraz syntakticky v C. Takže v hornej tu, tento
je možno jeden z najnudnejší programov by ste mohli
napísať vo väčšine ľubovoľnom programovacom jazyku.
Ale je to niečo má osobitný význam, pretože je to
kanonické program, ktorý každý počítač vedec píše, keď
výučba niekoho programovací jazyk -
hello world program.
>> Takže na samom vrchole, vidíme tento pojem # include
a potom, v šikmých zátvorkách, stdio.h.
Ideme sa vrátiť k tomu, ale naozaj to, čo že
znamená, že je súbor v tomto svete takzvanej štandardnej
I / O, štádiách dot h, a to je len textový súbor, ktorý
niekto napísal pred rokmi.
A vo vnútri tohto textového súboru je celá partia
funkcie, alebo metódy alebo postupy, ktoré niekto iný
napísal, že sme príjemcovi, pretože sme
môžu teraz používať tejto osoby kódu.
Funkcia on alebo ona písala.
V tomto prípade, printf nie je niečo, čo som napísal, že je to
nie je niečo, čo CS50 napísal.
Je to niečo, čo niekto napísal pred rokmi, a dať do
súbor s názvom stdio.h a potom, ako stranou, dať
ďalšia časť funkcie v inom súbore.
Ale my sa tam dostaneme.
>> Takže # include je len náš spôsob, ako povedať, v
C, daj mi prístup k funkciám, ktoré niekto iný napísal.
A v tomto prípade som jedno, pretože chcem printf.
Teraz sme sa dostali int main (void).
Takže sa jedná o jeden z týchto vecí, na rovinu, že v deň 0,
celkom veľa musim druhu zóny von, pretože je to len
nezaujímavé
intelektuálne, niektoré syntaxe.
Ale teraz viem, že funkcia, inak známy ako
postupy alebo metódy, všeobecne produkujú nejakú hodnotu.
Oni niečo urobiť.
Prichádzajú s odpoveďou.
Oni produkujú výstup.
Takže int vedľa hlavnej je len naša skratka spôsob, ako povedať
, Že táto funkcia, tento postup je nakoniec bude
aby vám späť číslo.
A prečo tomu tak je, budeme sa vracia.
Hlavné je len východiskový svetový štandard pre predvolené
funkcia, ktorá sa deje byť vykonaný v programe C, ak
ho spustiť.
Void znamená len tú vec, hlavné, netrvá
argumenty, v tomto prípade.
Takže som bol výborný explicitné.
Nie sú tu žiadne reťazce v tam, tam je žiadne čiarky.
Void znamená žiadne argumenty main.
>> Teraz konečne, našťastie, sa posledné dva riadky sú oboznámení.
Vnútri zložených zátvoriek máme printf
a máme návrat.
A návrat je druh nešťastné, že musíme
to tam dal, pretože v tomto prípade to nie je robí všetko, aby
veľa záujmu.
Ale v počítačovom programe, keď funkcia vracia 0,
to znamená, že je všetko v poriadku.
Nič sa pokazilo.
Naproti tomu, ak funkcia vráti 1, alebo negatívne 1, alebo
negatívny 1337, alebo niektoré náhodné čísla ako to, že
Všeobecne to znamená, že k chybe v skutočnosti došlo.
Takže ak ste na počítači Mac alebo PC, ak ste niekedy videli
niektoré nepríjemné správy, pretože váš počítač havaroval alebo
mrazené, a tam je mystický chybové hlásenie,
a potom nejaký kód, ako je systémový kód
1,2,3,4, niektoré číslo,
že všeobecne je zbytočné detail povedať
Väčšina z nás ľudí, ale to je to, čo niektoré funkcie alebo niektoré
Program skutočne vrátil, nenulovú hodnotu.
A výhodou je to, že 0 znamená všetky a, a
potom tu v podstate nekonečné množstvo vecí, ktoré
sa môže pokaziť.
Čo je dôvod, prečo si vybrali 0 pre dobré a nenulová hodnota pre
zlý, ako skoro uvidíme.
>> Tak poďme do toho a napísať.
Takže pripomenúť, že druhý deň som svoj Mac k otvoreniu
okno terminálu, a potom som otvoril texte programu, ako je
TextEdit, a začal som písať nejaký kód.
No, to je v poriadku.
Ale vaše skúsenosti bude líšiť na Mac, alebo
v Solaris počítači, počítač Linux, bez ohľadu na operačný
Systém vám stalo, že sa pomocou.
A tak v priebehu, čo sme namiesto toho použiť, je niečo, čo
volal CS50 spotrebiča.
Takže CS50 Appliance je k stiahnutiu kus softvéru
, Ktorý vám umožní spustiť operačný systém s názvom Linux,
konkrétne Fedora Linux, na vlastné Mac alebo PC.
A môžete to urobiť stiahnutím niečo ako hypervisor.
Takže toto všetko bude zdokumentované v problémovej sady 1.
A budete sa riadiť k tomu, čo je potrebné stiahnuť.
Ale konečný výsledok, či už máte Mac alebo PC, je vám
stiahnuť nejaký free software.
Potom stiahnuť CS50 Appliance, a povedať, že
free software - hypervisor -
spustiť CS50 Appliance v okne na vašom počítači.
A čo sa stane, je to.
>> Teraz som si všimnite, tu, čo sa zdá byť desktop
prostredie.
A dovoľte mi, aby som skutočne zmenšiť toto jediné okno.
Tak toto teraz je moja Mac, s malým okienkom tu, a vo vnútri
tohto okna sa stane, že je úplne
iný operačný systém.
Naozaj tam je to štart menu dole, pripomínajúce
Windows, ktorý má veľa čiastkových menu, vrátane
odkaz na CS50 manuálu, Dropbox, a podobne.
A čo toto prostredie je teraz štandardné prostredie
že každý z nás môže teraz používať, takže bez ohľadu na to, aké sú vaše
Počítač je, čo ste nainštalovali na to, aká verzia
Mac OS alebo Windows, ktorú používate, my všetci teraz
rovnakom prostredí.
A teraz, v tomto prostredí môžeme začať písať nejaký kód.
>> Takže budem pokračovať a otvoriť program s názvom gedit.
To je porovnateľné s notepad.exe, alebo
TextEdit na Mac.
A to je len super jednoduchý textový editačný program
, Ktorý vyzerá takto na prvý pohľad.
Teraz na vrchole, mám bielu paletu, v dolnej časti I
majú túto čiernu okno, ktoré hovorí, že jharvard @ spotrebiča.
A to preto, že užívateľský účet, ktorý sme už vytvorili
pre každého sa nazýva John Harvard.
Má zložku, kde sú všetky jeho súbory sa chystáte ísť, a
Tu je miesto, kde môžeme začať písať nejaký kód.
Tak nechaj ma ísť napred sem a priblížiť len trochu, a ja som
robiť # include , int main (void), a
potom budem robiť printf ("hello world")
; Vráti 0.
Teraz je to všetko celkom čierne a biele.
>> Nechaj ma ísť ďalej a urobiť jednu vec, učiť gedit čoho som
vlastne robí.
Nechajte ma ísť na príkaz Uložiť ako.
Idem si vybrať, na ľavej strane tu jharvard.
Takže znovu, aj keď ste nikdy predtým Linux, úprimne
v týchto dňoch, všetky z nich sú usmerňovaním do v podstate
Rovnaký typ rozhrania -
Mac OS, Windows a Linux.
Tak som si vybral jharvard domovskú zložku tu.
A budem sa tento súbor uložiť ako hello.c.
Takže na samom vrchole, som napísal hello.c; pomenovanie C
program s príponou. c je
to, čo je bežnou praxou.
A ja hit Uložiť.
A teraz, čo je pekné je, že som skutočne učil gedit,
že sa jedná o C program.
Všimnite si, že moja čierna a biely text je teraz farebne odlíšené, alebo
syntax zdôraznil, ktorý len upozorňuje svoju pozornosť na
rôzne sémantické časti programu.
V ľavom hornom rohu sa, pretože moje programy sa zložitejšie, ja som
bude mať prehľad o všetkých veciach, ktoré som napísala.
Tak to je to tam.
Tak nech mi teraz oddialiť a ísť dole na tento terminálovom okne.
>> Tak toto je snáď nový pre mnoho ľudí.
Ak ste nikdy nepoužívali príkazového riadku prostredie, ktoré ste nikdy
používa DOS, alebo ste nikdy Linux, alebo ste nikdy neotvoril
Mac OS okno terminálu, je tu veľa vecí, ktoré
mohol robiť s GUI, ako je polohovacie, a kliknutím na tlačidlo, a
ťahaním, a klesá, a podobne, ale všeobecne -
iste vo svete výpočtovej techniky -
pomocou príkazového riadku, kde nemáte myši
všeobecne, máte len klávesnicu, je v skutočnosti oveľa
silnejšie ako rozhranie, akonáhle sa dostanete aklimatizovať na
rôzne príkazy.
A radíte voľného seba z nutnosti bodu a kliknite na tlačidlo
na všetko.
Takže v gedit budeme nejako to najlepšie z oboch svetov.
Môžeme pretiahnuť text, môžeme vidieť
pekný a farebne odlíšené.
Ale keď príde čas na spustenie nášho programu, stretneme sa niekedy
stačí použiť túto malú okno tu.
>> Takže budem pokračovať, a to.
V spodnej čiernej a bielej okno, budem pokračovať
a písať rinčanie.
A rinčanie je názov prekladača.
Je to program, ktorý prevádza svoj zdrojový kód
do, tak, objektový kód.
0s a 1s, že sme videli krátko minulý týždeň.
Pripomeňme z minulého týždňa, sľúbili sme, že sme išli do
prejsť z niečoho takého - potrebovali sme byť
niečo také -
a to rozhodne nie je niečo, čo človek sa deje
robiť ručne.
Takže namiesto toho, budeme používať program, a že program v
V tomto prípade sa nazýva zvonenie.
A meno môjho programu je hello.c.
Tak, aby sa kompilácie hello.c od zdrojového kódu do
objektový kód, alebo 0s a 1s, malo by stačiť len urobiť
toto a stlačte Enter.
>> Dobre, nič sa zdá, aby sa stalo.
Ale teraz viem, alebo z minulého týždňa, že predvolený názov
program, keď písaný v C, je pochabo nazýva a.out.
Väčšina nezaujímavé meno, ktoré ste mohli prísť.
Je prvé písmeno abecedy, sa je to, čo bolo
výstup, ale budiž.
To je môj program, a teraz dot slash, ako uvidíme, je
vlastne len akousi bezpečnostné funkcie, pretože
a.out je program, ktorý som napísal.
To neprišiel s mojím počítačom, je to
nie je v priečinku Program Files.
Nie je to v zložke Applications Mac OS je.
Musím byť super explicitný s počítačom, a hovoria
tento program, a.out, je v aktuálnej zložke,
aktuálny adresár.
A tak, ako si predstavujú v prostredí, ako je táto
je bodka predstavuje bez ohľadu na priečinok, ktorý sa práve nachádzate
A tak. / Len znamená, že spustenie a.out
v aktuálnej zložke.
A ja som spustiť tento Enter, a voila, môj prvý program.
>> Teraz mi dovoľte urobiť krok späť.
Toto okno je trochu malý, a uvedomiť si, že spodná
vľavo spotrebiče tu je ďalšie ikonou.
Jedným z nich je Chrome, ktorý by mal byť dobre oboznámený, len web
prehliadač vnútri spotrebiča.
A to čierna a biela ikona je len
väčšie okno terminálu.
Takže ak to je trochu nepríjemné sa trochu mať len
tento malý malý plátok okná, s ktorými sa vzájomne
s programami, môžeme namiesto toho urobiť.
A teraz mi dovoľte začať písať niekoľko čoskoro
byť známe príkazy.
ls.
Takže ls je príkaz pre výpis.
Takže v Mac OS alebo Windows, by ste všeobecne poklepanie
zložku a potom, voila, uvidíte všetky rôznych súborov
a zložky.
V príkazovom riadku prostredí, kde si môžete zadať len
príkazy alebo text, ls je ekvivalentná.
Tak ukáž mi, čo je v tomto adresári.
>> Teraz je tu veľa vecí, tu je to ako malý
známe a trochu neznáme.
Ale všimnite si, že rovnako ako Windows a Mac OS, jharvard
má na ploche zložku.
Takže žiadne ikony, ktoré sú na mojom desktope sa stalo
byť v tejto zložke.
Tam je na stiahnutie zložku, veci, ktoré
Chrome by mohol dať tam.
Dropbox.
So prístroj prichádza s vstavanou-in podporu pre Dropbox
tak, že v priebehu semestra, môžete synchronizovať s Dropbox
účet tak, aby sa všetky programy zálohované.
Sú dostupné na vašom počítači.
Ak niekedy niečo pokazí s prístrojom, môžete
veľmi ľahko obnoviť z Dropbox.
Takže zložka je tam, že.
Tam sú dva súbory, ktoré som urobil - hello.c
a a.out.
A potom doprava tam niektoré iné zložky, ktoré budeme
dostať ku koncu semestra, s web
programovanie.
Takže keď som to. /, A.out, Enter, to už idú
v adresári Som, aktuálnom adresári, a spustite
program s názvom a.out tu.
>> Dobre, tak to je pekné a dobré, ale to nie je všetko, že
presvedčivé napísať program s názvom pomoc a.out.
Takže môžeme skutočne urobiť trochu inak.
Takže namiesto toho, aby len beží kovový zvuk, hello.c, dodajme
čo sa nazýva argument príkazového riadku.
Takže argument príkazového riadku, alebo spínač v tomto prípade, je len
ďalšie slovo alebo slovné spojenie, ktoré zadáte na výzvu po
program, ktorý chcete spustiť.
Takže v tomto prípade, rinčať je program chcem spustiť,-o
znamená výstupný súbor, ktorý sa už nazýva a.out.
Výstupný súbor s názvom ahoj, a to tým, že prekladá
posledné slovo na riadku, hello.c.
Takže v skratke, je to veľmi okrajový zlepšenie, pričom
namiesto toho, aby tento hlúpo názvom súboru a.out,
Teraz môžem urobiť klap-o hello, potom hello.c, a
a stlačte Enter.
Nič Zdá sa stane, ale opäť veľmi rád s 0 - pri
nič, zdá sa stať, že znamená, nič zlé sa stalo -
tak poďme urobiť ls teraz, Enter, a naozaj teraz
majú ahoj programu.
Takže ak som typ ahoj teraz, command not found.
OK,. /.
Tak presne to pravé.
Takže, pretože tento program som napísal, a to neprišiel s
počítač,. / hello, Enter, znamená
Ja som teraz beží ahoj.
>> Tak to je to tam.
Čo teraz budeme nakoniec dostať do viac a viac príkazového riadku
Tvrdenia, ktoré nám umožňujú robiť viac, ale len pre tých, pre
ktoré by to mohlo byť starý klobúk, dovoľte mi, aby som vlastne ísť do
Adresár tu a len vám teaser, ako inak by sme
môže ísť o implementácii Hello World.
Nechaj ma ísť do tu, a budem ju otvorte.
Takže vlastne, ja budem vysvetľovať, čo robím, tak
To je užitočné.
Dovoľte mi, aby som späť.
>> Takže som robil to dlho.
Tak zistíte cez vpravo existuje pár
adresáre, ktoré sú podivne pomenované source1m a source1w.
To je len hlúpa konvencie používame.
Source jednoducho znamená, zdrojový kód, 1 znamená, že tento je prvý týždeň, a
m znamená, že je pondelok, a w znamená, že je streda.
Takže nič mystický tam.
Je to len skratka notácie.
Tieto modré veci sú zložky, inak známy ako
adresára.
Chcem ísť do tejto zložky teraz, a na normálnom počítači
Mohol by som poklepanie na ikonu zložky a
tam všetky moje súbory.
Ale v prostredí príkazového riadku, nemôžem docela robiť
, Takže namiesto toho, musím zmeniť adresáre ručne.
Takže ak som typ CD a potom source1m, Enter, zistíte, že
moja výzva, tá vec v bielom vľavo, práve zmenil.
A tak skutočne, keď to jednoducho povedal, zátvorky a potom sa
málo klikiháky, symbol tilda, že práve znamenalo, že som bol
v domovskom adresári Johna z Harvardu, jeho My Documents,
jeho osobné súbory.
Ale teraz v zátvorkách hovorí, že ~ / source1m.
To len znamená, že som v priečinku s názvom source1m
že je v domovskom adresári Johna Harvarde.
Takže ak by som chcel, aby zoznam súborov v tejto zložke, ľahké
otázka, píšem len ls.
A teraz vidím všetky súbory, ktoré som už vytvorili pre dnešnú
prednáška, z ktorých všetky, alebo väčšina z nich, stane
skončiť v C.
>> Tak nechaj ma ísť napred teraz spustiť gedit o tzv programu
holloway.c, ktorý je písaný nejakým náhodným hacker
na internete, ktorá vyzerá trochu ako tento.
A my sa nebudeme prechádzať tento v akejkoľvek
Detail, ale pre tých, pohodlnejšie, najmä vtedy, keď
Ak sa chcete hádať o tom, čo tento program robí tu.
Uisťujeme vás, či už ste viac alebo menej pohodlnejšie,
nie sme ani dostať do takéto veci do konca roka
tento semester.
To je to, čo je príklad súťaže obfuscated C, čo
prostriedky písať tie mystické hľadáte program, ktorý ste možno
môže prekonať ďalšie chytré ľudí, ktorí sú podobne
snaží sa písať veci, a predviesť, že môžu napísať
viac mystické veci, než vás.
Takže to nie je príklad dobre napísaného programu od
Perspektíva štýlu, to je príklad programu, ktorý
vyhrá súťaž, pre ľudí sa snaží
byť neurčité a abstraktné.
>> Takže ak sme sa spustiť túto vec, nechaj ma ísť do môjho okna terminálu,
aby som tak povedal.
Takže to čierna a biela prostredie sa nazýva
okno terminálu všeobecne.
Nechaj ma ísť napred a skompilovať.
Nebudem používať rinčanie, pretože tento program je
trochu tajomné a potrebuje iný
kompilátor, jeden volal GCC.
Ale to robí tú istú vec.
To trvá zdrojový kód objektového kódu.
A teraz, keď spustím a.out, tento program vám
Videla to robí.
Tak toho chlapíka, ktorý rok vyhral tú súťaž.
Tak či onak, my nebudeme v tomto smere, na sebe.
>> Takže poďme sa skutočne snaží, aby sa podpichovať seba, čo môžeme urobiť
s týmito základné stavebné bloky, aby sa stále viac
zaujímavé programy.
Takže sme napísali program, sme spustiť program.
Teraz môžeme skutočne zjednodušiť a už nemusia písať
slovo zvonenie na príkazovom riadku.
Ukazuje sa, ako naše programy získať viac záhadné, môžeme, alebo
zložitejšie skôr, môžeme skutočne spustiť tento príkaz.
Tak nechaj ma ísť späť do môjho domovského adresára, aby som tak povedal, dovoľte mi, aby som
odobrať - rm je príkaz pre odobratie - Idem na odstránenie
súbor s názvom a.out a ahoj.
A teraz všimnete v prostredí príkazového riadku, podobne ako v
GUI, získate vyzvaní. Nemôžem kliknúť na tlačidlo keď, ja
musieť zadať pre Áno, y pre áno.
A teraz, keď píšem ls znovu vedomie, že tí, zelená
programy - a.out a ahoj -
sú preč.
Dajte si pozor na rm.
To môže robiť zlé veci, rovnako ako môžete pretiahnutím
veci do vášho koša.
>> Tak teraz poďme pokračovať - ​​a ja som mohol robiť to - rinčať-o
ahoj, ahoj -
Ja už nudí písania tohto príkazu.
Aj keď som napísal to trochu rýchlo.
Takže môžeme namiesto toho, aby ahoj.
Takže si nie kompilátor.
Je to len príjemný program, ktorý je dodávaný s operačným systémom Linux, v tomto
prípad - operačný systém -
, Ktorý automatizuje proces tvorby programov.
Takže namiesto toho, spomenula klap-o názov súboru a
potom tak ďalej, najmä potom, čo tieto riadky sa predlžujú a
dlhšie, môžem len napísať, aby.
A to bude vypľuť veľa vecí, ktoré sa
budeme nakoniec vidieť tento semester.
Všimnime si ale teraz, keď som typ ls, ahoj je späť vo svojom adresári.
A skutočne som ju spustiť s / Hello.
Takže si jednoducho automatizuje proces beží, čo bolo,
V tomto prípade, omnoho dlhší, zložitejšie príkaz.
Takže budeme chcete začať používať značku, len preto, že je to veľa
viac užívateľsky prívetivé.
>> Ale teraz poďme urobiť viac zaujímavý program
než len pozdraviť.
Takže v programoch písali sme doteraz tú hlavnú.
To je len východiskový vec, ktorá začína všetko preč.
Existujú však aj iné funkcie, tam tiež, a
stdio.h je vec, ktorá sme videli v hornej časti našich
súbor pred, a to je to, čo je známe ako štandardné knižnice.
Vnútri štandardnej knižnice je celá partia funkcií
že niekto iný napísal, a môžeme začať používať tieto
Funkcia písať viac
zaujímavé programy sami.
>> Tak nechaj ma ísť späť do prístroja.
Chystám sa zavrieť toto okno terminálu.
Chystám sa uzavrieť to, čo sme písali skôr, a choď
do hello.c, a všimnite si, teraz môžem urobiť nasledovné.
Ahoj svet nie je všetko tak zaujímavé, ja by som
prispôsobiť tento program pre seba.
Takže namiesto toho, aby hovoril svet, budem
choďte do toho a povedz -
Mohol by som písať David - ale to je naozaj druh
v podstate rovnaké.
Ale poďme vyskúšať tento zástupný nápad.
Pripomeňme, že v C, ale v printf, sme mali títo
symboly, a tam sú viac než len% d
Takže% d bol rýchly zdravý rozum kontrola.
Dobre, Desatinné číslo, to je ono.
Desatinné miesta, to je všetko.
Takže% C, ako sa stretávajú, bude znak.
Dajte charakter tu, list až z,
alebo interpunkcia symbol.
Znak,% f, neviete niekto z iných jazykov?
Takže hodnota s plávajúcou čiarkou.
Reálne číslo.
Takže nie je desatinné číslo - je to vlastne reálne číslo s
desatinnú čiarku, a niektoré počet číslic vľavo
a právo na to.
% S, povrázok.
Že jeden budeme vidieť docela často.
Reťazec, opäť, je to len slovo, fráza, postupnosť
Jednotlivé postavy.
A konečne, LLD?
Takže je to skôr rohového prípadu.
Dlhý, desiatkovej.
Takže ak chcete nie je len číslo, ktoré je takto veľký, môžete
Chcete väčšie číslo, budete musieť špecifikovať,
počítač, že je to z určitej veľkosti.
>> Tak poďme vyladiť to trochu.
Skôr než len tvrdé kódu v Dávidovi, dovoľte mi, aby som sa mierne
dynamicky povedať% s
Tak si% s tu, čo je zástupný reťazec.
Potom ma nechaj robiť čiarku, a potom "David" tu.
Teraz to nie je všetko, že intelektuálne zaujímavé,
pretože všetko, čo som urobil, teraz naozaj vytvoriť viac práce pre
počítač.
Skôr než povedať počítača sa to všetko naraz, ja som teraz
hovorí to a vložte reťazec tu nakoniec, čiarka,
Tu je to, že reťazec.
Takže to nie je väčšie zlepšenie, ale je to aspoň
krok smerom k väčšej zaujímavý program.
Pretože teraz, nechaj ma ísť napred a urobiť toto okno trochu
väčšie, nechaj ma ísť dopredu a spustite make ahoj.
A teraz,. / A.out nefunguje, prečo?
Dobre, teraz sa to volá hello.
Takže znovu robiť, a aj rinčať s-o, premenoval
program, ktorý bude niečo zaujímavejšie.
A ajhľa: teraz to hovorí ahoj David.
>> Dobre, ešte hlúpy program.
Tak teraz poďme skutočne ísť sem a zaviesť pojem
premenné.
Nebolo by pekné, keby som mohol deklarovať premennú
ktorého je typu string?
A hodnoty premennej skutočne pochádza od užívateľa
ho alebo sám.
Takže ľubovoľne, idem zavolať svojej variabilný s, čo je
len obyčajná konvencie, keď máte jednu premennú nazýva
string.
Ja budem robiť znamienko rovnosti, a potom budem volať
funkcia sa nazýva GetString.
Takže GetString nie je niečo, čo príde vstavaný do C. Je
funkcie, o ktorých CS50 personál napísal, naozaj len pre
Tieto prvé pár týždňov, zjednodušiť proces
ako užívateľský vstup a získanie užívateľského vstupu v podobe
reťazcov alebo čísel, a podobne.
Takže GetString je ako printf, ale samozrejme skôr než
vytlačiť to bude robiť to, čo jej názov napovedá, sa reťazec.
Ale používať GetString, budeme musieť urobiť zmenu
tu, nad tento rámec.
Takže intuitívne, tento program, dúfajme, bude nejako
dostať reťazec od užívateľa, a potom to, čo to ide urobiť
s týmto reťazcom, tzv s?
Je to len tak vytlačiť, nie?
Stále nie je stimulujúce program, pretože všetko, čo sa deje
urobiť, je zapojiť v uvedenej hodnote do kde% s
hovorí, že by malo ísť.
>> Tak nech je aspoň vidieť v akcii.
Dovoľte mi, aby som uložiť a oddialiť.
Teraz v mojom terminálovom okne sem, malý kúsok jedného,
dovoľte mi, aby som ešte raz urobiť, aby ahoj.
Dobre, a ach, sakramentsky, mám veľa chýb.
Dovoľte mi, aby som sa posunúť nahor, a my vidíme naše prvé -
takže sa poďme vlastne robiť to v ešte väčšie okná, takže môžete
môžete vidieť, ako zle som to podelal -
takže sa ahoj.
Dobre, to je katastrofa, nie?
Napísal som tri riadky kódu, a
to mi dal 12 chýb.
Tak prečo je to tak?
Takže našťastie, častokrát, keď vidíte veľa, veľa chýb
vypľul naraz, je to naozaj len preto, že ste
zmätený počítač sem.
A ostáva zmätený v čase, keď sa dostane sem.
A tak to proste začne vypínanie, a potkýnal, a
vypľutie viac desivé ako v skutočnosti platí.
Takže všeobecne, vždy začať s hornou.
>> Takže veľmi top najviac inštancie červená,
chybové hlásenie je to.
Použitie nelegálnej identifikátor reťazca, som
znamená štandard?
Ja nie.
Myslel som reťazec, ale to je preto, že aj slovo string
že som aj naďalej používať ústne skutočne
neexistuje v C oboch.
Je to niečo, čo budeme používať len počas prvého týždňa alebo dvoch
tu, ale existuje v súbore nazvanom cs50.h.
Takže teraz, viem, že tam je to iné knižnice, že
Zamestnanci písal, tak to bolo napísané neskôr ako
stdio.h.
Ale vnútri cs50.h je definícia, synonymum
druhy, ktoré tvoria tento slovo reťazec.
>> Takže teraz mi dovoľte vrátiť sa k môjmu terminálovom okne.
Chystám sa vymazať celý tento neporiadok pomocou Ctrl-L. Budeme len
utrite všetko čisté, a ja idem ďalej a robiť
ahoj znova, Enter.
Tak čo sa stalo?
Teraz všetky tieto chyby odišiel.
Takže to, čo som naozaj urobil?
Práve som učil na počítač, ktorý reťazec existuje, a to je
v tomto súbore s názvom cs50.h.
Takže prestaňte sa sťažovať, pretože teraz už viete, kde nájsť
Táto funkcia je vyhlásenie, aby som tak povedal.
Ak existuje na svete.
>> Takže teraz budem pokračovať a spustiť ahoj.
Zdá sa mi, mať nekonečnú slučku, Nič sa nedeje.
Tak som potrebné niečo písať tu, hneď.
Prvý riadok kódu v mojom programe bola GetString.
Takže to doslova čaká, aby som sa reťazec.
Takže v tomto zmysle áno, je to nekonečná slučka.
Zrejme v GetString je predvolené správanie, ktoré sme
napísal - zamestnanci -
že len hovorí čakať a čakať a čakať a čakať a čakať,
kým užívateľ vám reťazec zadaním niečo palcov
Tak nechaj ma ísť napred a zadajte D-A-V - i-d, Enter.
A je to tu, ahoj David.
>> Teraz sa to zdá, ako by to len divadlo?
Nechaj ma ísť napred a zadajte Tommy.
Zadajte, v poriadku, zdá sa byť funkčné.
Pracuje pre Roba, práca pre Zamyla, pracuje pre - v poriadku.
Takže to bude fungovať, s najväčšou pravdepodobnosťou.
Tak to by malo vytlačiť, čo sme vlastne dať,
a môžeme byť trochu ťažké tu.
Uvidíme, či sa nám niečo také ahoj.
Môže ísť sem, uvidíme, Kopírovať, Vložiť.
Nebudem mať možnosť vložiť toľkokrát, tu.
Vložiť, v poriadku, Shift + Ctrl + V. Takže to, čo by
sa stať, že je zlé tu?
>> Dobre, tak, segfault chýb.
Takže niektorí z vás s predchádzajúcimi zázemím bude vedieť, že
všeobecne, čo počítačom veľa vstupov, keď sú
pravdepodobne nemá dostávať dlhé názvy, ako je táto - zlé
veci sa stávajú.
Naozaj, vo svete internetu, aj sa to stane celkom dosť,
kedy, keď ste navrhovanie webových stránok, keď ste
projektovanie Facebook, budete musieť svojvoľné rozhodnutia up
predné, rovnako ako ako dlho bude niečí
Facebook meno je?
Alebo ako dlho bude niečí meno je?
Ako dlho bude niečí telefónne číslo, a podobne.
A ak programátori so zlými predpoklady, programy zlomiť
pretože ste sa pokúšali dať im väčší výkon, viac vstupov
skôr, než majú pamäť.
Alebo RAM pridelená pre neho, a tak ak som teraz Enter,
tento program skutočne funguje, pretože sme boli v knižnici
a my sme vlastne očakávať tento konkrétny prípad.
Ale nepochybne tento semester, budete písať aspoň jeden
program, ktorý bude hovoriť tieto slová.
Nezabudnite tento týždne odteraz, možno dva dni od teraz.
Segmentation fault je zlá vec.
To sa bude týkať vašej robí niečo, čo v počítači
nepredpokladal.
A v tomto prípade je, programátor, nepredpokladal.
Podobne ako čo to hromadu ponožiek, tam boli rôzne
rohové prípadov sme mohli stretli.
Podobne v programoch, ak nechcete predvídať, ako dlho je
niečí meno bude.
Alebo čo keď mám užívateľovi so zlými úmyslami, a jeho alebo jej meno je
vlastne dosť krátka, ale sú to len snaží
neporiadok so mnou?
Čo sa bude správanie môjho programu?
No, v tom prípade by sa niečo zlyhanie.
>> Takže ideme na to.
V priebehu 90 minút, je to hrozný dlho
robiť informatiku.
Prečo sme sa dostali do zvyku brať päť minút
rozbiť tu, a až sa vrátime, budeme ponoriť do niektorej
zložitejšie a presvedčivé programy?
Päť minút.
>> Dobrá.
Takže jedna rýchla komentár.
Bolo mi povedané, že aj keď to bolo na obrazovke pred, čo
vyšlo z mojich úst bolo cs50.net/rsvp.
To je správne. cs50.net/lunch.
Takže teraz môžete skúsiť RSVPing pre toto v / obed.
Ale poďme to urobiť teraz.
Takže to bol super rýchly, super nové pre mnoho ľudí.
Starý klobúk pre niektorých ľudí.
Takže poďme pretočiť len na chvíľu, a uvidíte, ako sme sa dostali do
Tento hello world výstup pred chvíľou.
>> Takže prvé, tam je to CS50 spotrebiča.
Opäť, kus softvéru, problém nastaviť 1 to povie
vám, ako ho stiahnuť, ak ju stiahnuť, čo kliknite na tlačidlo
a tak ďalej.
A potom raz budete riadiť týmito pokynmi, budete môcť
maximalizovať svoje okno, a váš Mac alebo PC bude vyzerať
Trochu niečo také.
Čierne pozadie, domovský adresár na vrchole, kde sú všetky
súbory idú, kôš v ľavej hornej časti,
menu v dolnej časti.
Takže znovu, dosť podobné v duchu na Mac OS alebo Windows,
aj keď sa stane, že je Linux.
Takže to, čo sme vedľa robiť?
No, sme začali písať programy.
A pamätáte z minulého týždňa, že všetko, čo má napísať
Program je jednoduchý textový editor,
ako je Poznámkový blok alebo TextEdit.
Úprimne povedané, môžete si dokonca používať aplikáciu Microsoft Word.
Ale zlé veci sa nakoniec stane, pretože to je veľmi
ťažkopádna riešenie pre písanie programu, plus to bude
uložiť v zlom formáte.
Ale je to len textový editor, textový procesor, je všetko, čo je
potreboval napísať program.
>> Takže v CS50 Appliance, môžeme to urobiť v jednom jednoduchým spôsobom.
Môžeme stačí kliknúť na túto ikonu v ľavom dolnom rohu.
A opäť, problém nastaviť 1 vám poradia o tom, a je to tu -
si stiahni čierna a biela rozhranie, kde môžeme začať
písania kódu.
Tak poďme začať písať super jednoduchý program znovu.
Chystám sa ísť do Súbor, Uložiť, a budem volať
to, povedzme, hello2.c.
A ja len hovorím, kliknutím na jharvard, vložte ju
vo svojom domovskom adresári, ja naozaj nestarám
pokiaľ ide človek.
A potom na Uložiť.
A teraz môžem začať písať môj program.
A spomínam z predchádzajúcich, že musím písať int
main (void).
Zväčšenie na v ľavom hornom rohu.
A potom chcem povedať printf, vziať dva.
A teraz nový riadok, úzkym citácie, zatvorte
zátvorky, bodkočiarkami.
A potom idem sem do môjho okna terminálu, ktorý je
zakotvené v gedit, len pre pohodlie.
A ja idem ďalej a písať, aby ahoj, ale nie
ahoj sám, hello2.
>> Takže môj súbor sa volá hello2.c. Môj súbor sa preto
by mal byť volaný hello2, v tomto prípade.
Sakra, čo som urobil zle?
Dobre, tak som jasne vynechaný riadok, ak si spomínate, čo
predchádzajúce programy vyzerať.
Ale uvidíme, či sa nám podarí Nehnevaj to od seba.
Bohužiaľ, väčšina ľudí, ktorí píšu programy, s ktorými
píšeme programy nie sú zjednodušiť veci tak dobre.
Takže musíme trochu kĺzať cez to, čo nie je úplne, aby
vnímať tu a uvidíme, či môžeme prísť na to, čo sa deje.
Úplne prvá linka tam hovorí, že implicitne vyhlásil C
knižničný funkcie printf s typom int.
OK, som pochopil, že časť.
Ale zdá sa, že naráža na skutočnosť, že som použil printf
zle, nejako.
A aký zmysel má to zle?
Len som sa učiť, že počítač je v súbore
volal stdio.h.
Teraz mám iba len pamätať, že teraz printf je
v stdio.h, a naozaj tam bude iné
funkcia v tomto rovnakom súbore, ktorý budeme zvyknúť.
>> Takže teraz ma nechaj ísť dopredu a udrel Ctrl-L len jasné, že
preč, spustite robiť hello2, a voila.
A tento príkaz znova, zložitejšie, než budeme vysvetlí
dnešnej účely.
Ale to bežať rinčanie, a rinčanie vezme zdrojový kód a
vypľuje 0s a 1s.
A tí 0s a 1s v tomto prípade sa nazýva to, čo?
Dobre, objektového kódu.
A súbor, ktorý sú v sa nazýva, tak,
hello2, v tomto prípade.
Vzhľadom k tomu, môj text bol súbor hello2.c, Enter.
A teraz som vziať dva výkričník, výkričník
bod, výkričník.
Dobre, takže máme teraz možnosť získať reťazca,
zrejme.
No, čo iné máme od užívateľov?
>> No v CS50 knižnici, je tu ďalšie funkcie, ktoré
budú zjednodušiť náš život v týchto prvých dňoch.
GetChar, GetDouble, GetFloat, GetInt,
GetLongLong, GetString.
Dobre, poďme trhať off najjednoduchšie z nich ako prvý.
GetString doslova robí, že.
Proste tam sedí a čaká, až užívateľ niečo písať v,
a akonáhle som niečo písať v a stlačte klávesu Enter, to
robí niečo s touto hodnotou.
Takže sa vráťme k tomuto príkladu vidieť presne to, čo
GetString robil.
Nechaj ma ísť napred a otvoriť v gedit, hello.c, a pripomenúť
že tesne pred prestávkou, to je miesto, kde sme skončili.
>> Takže poďme sa teraz dráždiť Tento aparthotel v trochu podrobnejšie.
Takže na linke 6, sú dve veci,
deje v súčasnej dobe.
Znamienko rovná sa oddelí prvú polovicu a druhá polovica.
Takže na ľavej strane rovná sa, sme
hovorí string s
A potom, len laicky povedané, to, čo je string s
robiť, myslíte?
Je to vytvorenie čo?
Takže to vytvára reťazec s názvom s
Teraz, čo to vlastne znamená?
No, je to rezervovať priestor pre reťazec s názvom s
To nie je úplne v poriadku.
Čo je to robíš?
No počítačov, ako viete, majú pevné disky, ktoré tam
vaše súbory sú uložené.
Počítače majú RAM, a to je miesto, kde sú nahraté programy
zatiaľ čo oni sú spustené.
Takže, keď dvakrát kliknete na ikonu a Microsoft Word otvorí
up, Microsoft Word beží, tak povediac, v pamäti RAM, ktorá je
elektronická časť vášho počítača.
Nie fyzické, mechanické časti, ktoré sa točia, kde
Dáta sú všeobecne uložené dlhodobo.
Takže string s je celkom veľa hovorí, že počítač mi dal
dostatok pamäte RAM, aby sa zmestili reťazec.
Tak to je trochu oversimplification, pretože
aký veľký je reťazec bude?
Tak sme vlastne ešte nevieme, tak v najbližších týždňoch
budeme skutočne zatiahnite vrstvu, ktorá je reťazec a
budeme ti, čo to naozaj je.
String, teraz, je len pekná zjednodušenie nášho sveta.
Ale string s deklaruje reťazec s názvom s, pre teraz.
Deklaruje reťazec.
To si vyhradzuje nejaký priestor v pamäti RAM pre reťazec je užívateľ
o typu.
>> Teraz sa poďme pozrieť na pravej strane rovná sa.
Tak to hovorí GetString ().
A trochu rozumu kontrolu.
Skutočnosť, že nie je nič, čo vo vnútri zátvoriek
znamená, čo o GetString?
To trvá žiadne argumenty.
To znamená, že nemôžete ovplyvniť jeho správanie v žiadnom prípade.
Zakaždým, keď budete používať, bude to dostať reťazec a je to.
Naopak, printf, dúfajme, že jej správanie sa
meniť pri každom.
Inak je to celkom k ničomu funkcie tlače, ak
to robí to isté.
Ak sa vždy vytlačí David, alebo tak niečo
ľubovoľná celú dobu.
Takže printf zmysel mať argument.
GetString nie je naozaj nutné argument, pretože som chcela
k získaniu reťazca od užívateľa a je to používateľ, ktorý sa deje
dodať dynamiku zadaním jednotlivých písmen
zakaždým, keď na klávesnici.
>> Tak čo GetString sa nakoniec?
Myslite na to, ako tento malý čierny box.
A to čierna skrinka má žiadny vstup, ale keď budete bang na
to, že vypľuje reťazec, ktorý užívateľ zadal palcov
A skutočnosť, že je znamienko rovná sa tam znamená prijať
čo je vypľuť na pravej strane a uložiť ho dovnútra
čo je na ľavej strane.
Tak znamienko rovná sa tu, to skutočne neznamená
rovnosti, ale skôr technicky znamená priradenie.
Vezmite hodnotu na pravej strane, a vložte ho do
premenná na ľavej strane.
Tak to je všetko, čo sa tam deje.
>> Teraz v riadku 7, voláme printf.
Takže dúfajme, že printf je stále trochu nudný teraz.
Takže vytlačiť formátovaný reťazec.
Čo string?
Vytlačiť, "h-e-l-l-o,% s
! \ N ".
Dobre, tak čo chcem plug-in pre% s?
Doslova, že bez ohľadu na uložené v §.
Takže v tomto prípade, málo rozumu kontrola, koľko argumentov sa
printf trvať?
Dobre, som počul.
Počul som, že raz zase.
Dva, počul som dva.
A ako asi tri?
Dobre, tri?
Vynikajúce.
Tri možné odpovede, iba jedna z nich je správna.
Takže argumenty opäť ovplyvňujú správanie funkcie.
V minulosti, printf sa len vziať jeden argument.
"Hello world" bol jediný argument.
Avšak, teraz si všimnite, kde to je čiarka.
Táto čiarka je mimo citácie / unquote, čo znamená, že
hey printf, tu je druhý argument.
>> Takže čiarky vo väčšine programovacích jazykov
samostatné viac argumenty.
Takže odpoveď je tu rozhodne nie je jedno, pretože
je to čiarka.
Takže minimálne, printf je zrejme až dve
argumenty tentoraz.
Ale príležitosť pre chyták tu je to, čo
o tomto čiarkou?
Znamená to neznamená, že je to vlastne tri argumenty?
Tento, táto, a to.
Takže nie, pretože to je čiarka vnútri úvodzoviek, ktoré
znamená, že je naozaj len estetickú angličtiny.
To nemá nič spoločné s počtom
Argumenty v tomto programe.
Tak toto je čiarka mimo úvodzoviek.
A potom sa vrátiť 0.
Pre teraz poďme proste tak nejako si túto na viere
dnes, a len viem, že keď sa vykonáva funkciou vykonávanie
riadkov kódu, by mali všeobecne vracia nejakú hodnotu.
V tomto prípade, práve preto, hlavné musí vracať int,
že je to len spôsob, akým jazyk C pracuje.
>> Takže preto, že nič pokazilo, sa cíti ako tento program je
v poriadku, som pevný kódované na oplátku 0.
Ale na rozdiel od, a budem písať to v pseudokódu
Teraz, rovnako ako Joseph, keď sme robili ponožku
Príkladom minulý týždeň.
Ak sa niečo pokazilo - to nie je skutočný kód - šiel
zle, potom sa vrátiť, povedzme, 1.
Else vráti 0.
Takže toto je miesto, kde budeme s tým.
To nie je skutočná C kód, rovnako pseudokód.
Ale to je, ako sa môže vrátiť
rôzne možné hodnoty.
Ale teraz som len ísť ďalej a vrátiť sa 0.
Dobre, nejaké otázky tak ďaleko na syntax, funkčnosti,
alebo je?
Jo, vzadu.
>> PUBLIKUM: [Nepočuteľné]
DAVID Malan: Môžeš hovoriť trochu hlasnejšie?
Prečo tento program sa vráti 0, a?
PUBLIKUM: [Nepočuteľné]
DAVID Malan: Oh, to preto, že som lenivý, sorry.
Nie je to dobré akademické odpoveď, vráti 0.
Môžem druh zachrániť to, tým, že hovorí technicky C, ak hlavný
nie je výslovne vrátiť hodnotu, bude vrátená 0
automaticky za vás.
Čo je pravda, ja nie som len zakrýva.
Ale, mal som urobil to takto.
No zaujímavé stánok s jedlom, než je iný ako môj omyl.
Jo?
>> PUBLIKUM: Zvyčajne, keď zadáte do prázdna, to znamená, že vám
nevracia niečo.
DAVID Malan: Správne.
Ak namiesto toho, zadáte pred meno funkcie, pre
inštancie tu, void, potom funkcia
nič nevracia.
A preto by som len povedať, návrat alebo vôbec nič,
a že by bolo v súlade.
A vrátime sa, že.
A práve FYI, jeden z úlovkov s učenia
programovanie vo svete, ktorý má stovky kníh a
stovky webových stránok tam je budete vždy
pozri odlišnú syntax v rôznych knihách
rôznymi ľuďmi.
Uvedomte si, my sa budeme snažiť v oddieloch a prednášok sa
konzistentné.
Ale niekedy uvidíte protichodné syntax.
Takže ak ste na pochybách, opýtajte sa.
A všeobecne, postaráme sa na prednáškach a profilov na
takmer vždy prezentovať správnym spôsobom.
A ja hovorím takmer vždy, pretože prípad v bode.
Ďalšie otázky?
>> PUBLIKUM: Má% s existuje mimo zariadenia?
DAVID Malan: Má% s existuje mimo zariadenia?
Áno.
Takže% s má čo do činenia s C. Skutočnosť, že sme sa používať to v
Prístroj zásadne nemá nič do činenia s
vlastnosti jazyka, ktorý používame.
Naozaj, minulý týždeň, kedy sme použili môj Mac, som napísal
C kód na mojom Macu.
Mohol som použiť% s na mojom Macu, a tie by mohli použiť na
počítače so systémom Windows, ak nainštalujete prekladač, ako je
Visual Studio od spoločnosti Microsoft.
Takže% s
Všetko robíme vo vnútri tohto okna dnes musí
čo robiť s C. A zásadne nič do činenia s
operačný systém v pochybnosť.
Naopak, čierna a biela okno terminálu - ak
Píšem veci, ako ls, a rm, a cd -
ktoré má čo do činenia s operačným systémom a
navigácia v okolí.
Jo.
PUBLIKUM: Myslel som knižnicu, CS50 knižnicu.
DAVID Malan: Dobre, takže ak máte na mysli kľúčové slovo reťazec, ktorý
existuje iba v CS50 knižnici, správne.
To neexistuje v C sám, a naozaj za pár
týždňov budeme vyhodiť CS50 knižnice a začať
robiť veci od nuly sami, aby som tak povedal.
Ďalšie otázky?
Jo.
>> PUBLIKUM: [Nepočuteľné]
DAVID Malan: Dobrá otázka.
Sú príkazy malé a veľké písmená?
A dovoľte mi, aby som rozdiel tu.
Takže príkazy sú všeobecne veci, ktoré sme si napísať na
spodnej časti okna, v terminálovom okne.
Čokoľvek tu by vyhlásenie alebo C kód.
Ale v oboch prípadoch, odpoveď je rovnaká, áno.
Oba tieto prostredie, kód C v hornej a
operačný systém príkazového riadku na
dno, veľké a malé písmená.
Takže musíte aktivovať GetString s kapitálovou G,
kapitálu S. Musíte napísať printf vo všetkých malými písmenami.
Musíte zadať ls vo všetkých malými písmenami.
Takže v takmer každej situácii tento semester, prípad bude, v
Skutočnosť, záležitosť.
Áno.
>> PUBLIKUM: [Nepočuteľné]
DAVID Malan: Aha, tak dobre, čo keby sme mali súbor
volal hello.d.
Tak to dopadá D je programovací jazyk.
A tak v niektorých prípadoch, mohli by sme vlastne napísať program v
tento súbor a mať to zostavené v tomto móde.
Môžeme a vlastne, krátka odpoveď je, neviem.
Takže budeme robiť to.
Nechaj ma ísť ďalej a vytvoriť nový súbor.
A spin tu, úprimne všeobecne, je vždy nejaká pochybnosť
tento semester, a máte prístroj alebo počítač
otvoriť, choďte do toho a vyskúšať niečo.
Takže budem uložiť súbor s názvom hello.d.
Uložiť.
A budem bežať, aby ahoj Enter.
Zdalo sa vyvodiť, že c je viac pravdepodobné,
ako d, v tomto prípade.
Ďalšie otázky.
Jo.
>> PUBLIKUM: [Nepočuteľné]
DAVID Malan: Dobre, povedzme, že ešte raz.
PUBLIKUM: [Nepočuteľné]
DAVID Malan: Ako by sa vám ísť o diagnostiku, ktorá inak
odstraňovanie že?
Takže s najväčšou pravdepodobnosťou, pretože sú rôzne jazyky,
s najväčšou pravdepodobnosťou by ste si úplne
iný program na výstupe.
Tie by sa úplne rôzne chybové správy.
A tiež len z hľadiska dizajnu, to by pravdepodobne byť
zlý tvar rozhodnutie bude písať dva rôzne
jazyky s takmer identicky pomenované súbory, v
presne rovnaký adresár, pomocou
automatické nástroje ako make.
Tak som si tiež tlačiť späť a povedať: za 15 rokov, čo robíme,
nikdy takú chybu.
By sa mohlo stať.
Ale je to len rôzne, myslím,
logistické obrana na mieste.
Plus sa zobrazujú chybové správy, ktoré by hradila, ktoré by
nakoniec odhalí, čo je problém.
Ale možno kútik prípad.
>> Dobre, tak poďme predstaviť len pár ďalších
Funkcia tu, tak môžeme začať budovať do viac
a zložitejšie program.
Takže v prvom rade, matematika.
Tak matematické príklady sú len tak ľahko v priebehu prvého týždňa.
To neznamená, že všetky programovanie je o
matematika.
Iste, pochopenie rôznych funkcií
matematiky, algebra je najmä
celkom relevantné.
Vo vyšších úrovní tried SK, lineárna algebra,
počet, a podobne.
Ale uvedomte si, väčšina z toho, čo budeme robiť tento semester znižuje nie je
do matematiky, a určite nie na aritmetike, na sebe, ale naozaj
len na logike a starostlivému myslenia.
A tak toto prepojenie, aby počítačová veda už dlho,
najmä na stredoškolskej úrovni, s matematiky, je
trochu zavádzajúce.
Pretože väčšina programov, ktoré budeme písať, naozaj, sú
druh vyššej úrovne a zamerania na riešenie problémov, ktoré
Iste, môže použiť nejaký sčítanie, odčítanie, a rôzne
matematické vzorce alebo podobné výrobky,
ale na konci dňa, je to o myslení a nie
Len realizuje to, čo si mohol urobiť na ako TI
Kalkulačka na strednej škole.
>> Takže s tým povedal, poďme sa teraz niečo urobiť s týmito
matematické operátory, ktoré existujú, takže môžeme výlet
cez niektoré základné aspekty programovania, alebo v
V tomto prípade C. Takže tam sú, ako CS50 knižnica navrhol,
a dnes sme iba pomocou GetString - a za chvíľu
možno jeden ďalšie funkcie -
ale existujú rôzne typy dát v počítači.
Na konci dňa, počítače len to 0 a 1.
Ale spomínam, že minulý týždeň sme hovorili o dvojkovej sústave
v reprezentujúce čísla, ako je číslo 0, a 1, a 2,
úplne až na 8, ako je v videa Nate.
A potom môžeme počítať oveľa vyšší, ako sme
robil na javisku tu.
Ale ak chcete reprezentovať nielen čísla, ale písmená,
my, ľudia, musí prísť s nejakým svojvoľné
konvencie, pričom ak na konci dňa po celý počítač
sa je schopnosť vyjadrovať 0s a 1s, dobre my by sme lepšie
kto štandardizácia vzory 0s a 1s, ktoré predstavujú
rôzne veci.
Vzor 0s a 1s, ktoré predstavuje písmeno je.
Vzory 0s a 1s, ktoré predstavujú písmeno Z.
Vzory 0s a 1s, ktoré predstavujú modrú farbu, alebo
červená, alebo podobne.
Musíme použiť všetky tieto 0s a 1s vyjadriť sami seba v
rôzne kontexty, v rôznych cestách, ktoré nie sú
nutne číselné.
>> Takže pokiaľ ide o zastúpenie, C má rôzne dátové typy,
a my sme videli jeden z nich tak ďaleko.
Videli sme int, a všimnite si, čo nie je na obrazovke
teraz je string.
String nie je, v skutočnosti, existujú v C. Opäť, je to
zjednodušenie sme prezentáciu pre prvý
pár týždňov.
Char je individuálny charakter.
Plavák je reálne číslo, s desatinnou čiarkou a čísla na
vľavo a vpravo z nej.
Double je to, čo, pre tých, ktorí sa späť predchádzajúce pozadie?
Takže double je dvakrát niečo.
Pridá dvakrát toľko presnosti.
Takže čo to znamená?
Takže v každom z týchto prípadov, svet má akési štandardizované
tom, koľko bitov sa používajú na reprezentáciu
každej z týchto vecí.
Takže ak ste sledovali Nate ASCII videá už časť
z PSet 0, alebo neskôr tento týždeň budete, budete pravdepodobne vedieť,
že ASCII -
znak reprezentácie -
použiť, koľko bitov?
A možno dokonca pamätáte z nášho dema minulý týždeň o tom, ako
veľa ľudí bolo na javisku.
Takže 7 alebo 8, typicky.
Takže všeobecne 8, a tam je niečo, čo nazýva, ktorá bola rozšírená
ASCII, že využíva všetkých 8 bitov, miesto 7.
Ale všeobecne, hovoríme v mocninách 2, takže v tomto prípade, 8.
Takže char v programovacom jazyku je zvyčajne 8 bitov.
Takže int je všeobecne 32 bitov.
Float je všeobecne 32 bitov.
Double je všeobecne 64 bitov.
A čo to znamená?
To znamená, že môže predstavovať väčšie čísla, alebo v prípade,
reálnych čísel, môžete mať oveľa viac čísel po
desatinné miesto.
Oveľa viac presnosti, v tomto prípade.
Teraz long long je bohužiaľ vymenoval.
Takže tam je int, ktorá je 32 bitov.
Tam je dlhá, ktorá je, nie, 32 bitov.
A long long, ktorý je 64 bitov.
Avšak niektoré z nich sú kontextové, záleží
aké počítača máte.
Takže všeobecne, budeme špecifikovať v domácich úloh alebo v teste, kedy
skutočne záleží.
Ale bod je tam všetky tieto rôzne
zastúpenie tu.
>> Takže poďme skutočne ponoriť do programu.
Skôr než písať tento od nuly, nechaj ma ísť napred
a otvoriť z dnešného zdrojového kódu - z ktorých všetky sú
online - Ak sa chcete vŕtal okolo on-line, alebo návrat na
Stredu s prístrojom na vašom počítači, návod
pre ktoré bude odkazovať na ihrisku domovskú stránku.
Tu je super jednoduchý program.
Ale má to niečo nové na vrchole, ktorý sa
sme nemali skôr.
Veľa modrých riadkov textu.
Takže tieto modrej čiary predstavujú komentáre.
Takže je to celkom užitočný v programe, aby mohli písať
niektoré pripomienky pre seba, alebo s kolegami alebo priateľmi, alebo
výučby chlapi, niečo popísať, čo sa deje v
tento súbor, ale nemajú nič spoločného s kódom C sám.
Nič spoločného s programom funkčne, je to len
estetika.
Takže ako to urobíte v C je, zvyčajne začínajú svoj
komentáre / *, a vy skončíte vaše komentáre
* /.
A ak ste naozaj análny a ako k tomu druh obrázkov,
potom by som dal veľa hviezd, by ste, aby
krabička takhle.
Ale nič z toho záležitostiach.
Jediná vec, na ktorej záleží, je prvý
a úplne posledný.
To je to, čo sa nazýva multi-line komentár.
A to je len ľudská konvencie často robiť hviezdy a box
veci v takto, ak máte veľa voľného času.
>> Takže potom, čo ste napísal v niektorých komentárov, všeobecne, príde
skutočné vnútornosti programu.
Tu je náš dobre známy # include .
A práve rýchla, je to potrebné, alebo nie je potrebné?
Divákov: Nutné.
DAVID Malan: Takže je to vlastne nie je nutné.
Tak prečo, keď je to nie je potrebné?
Takže nie je printf.
Naozaj.
Všetko, čo robíte v tomto programe je matematika.
Tak som si skutočne zmazať, že.
Takže nemusíte mať vždy obsahovať vôbec nič
horná programu.
>> Tak poďme zjednodušiť tento bit.
A teraz všimnete, čo tento program robí.
Nie moc zaujímavé.
int x = 1.
No, čo je to robíš?
No, myslím, že späť do mentálneho modelu z obdobia pred rokom.
Na ľavej strane tohto výrazu čo robí?
Vytvoriť priestor pre celé číslo.
Tak koľko priestoru?
No, my náhodou viem teraz, že je to 32 bitov.
Predtým, reťazec bol technicky 32 bitov, ale viac
na ktoré v budúcnosti.
Ale int je 32 bitov.
Takže tento výraz na ľavej strane tu, int x len hovorí, hey
operačný systém, daj mi 32 bitov pamäte RAM -
inak známy ako 4 bajty RAM -
takže môžem dať celé číslo v tomto priestore.
Čo integer si chcel dať?
No, proste číslo 1.
int y dostane 2, robí presne to isté, aj keď
číslo je väčšie, pokiaľ ide o ich veľkosti.
Číslo sám o sebe je stále len 32 bitov.
Je to len vzor bitov sa líši
predstavujú 1 oproti 2.
int z teraz hovorí, že mi ďalších 32 bitov, hovoria z, a dal
zhrnutie 1 a 2 v tam.
Takže teraz je pravdepodobne z uloženia hodnoty 3,
a potom sa vrátiť 0.
>> Teraz tento program, to robí niečo zaujímavé?
Takže to vlastne nie je nič zaujímavého, v akejkoľvek
zmysel, pretože prečo? Je to robiť nejaké matematiky.
Ale nie je to vracia odpoveď, pravdu.
Je to vracia 0.
Je to netlačí odpoveď.
Takže tento program je v podstate bezcenné, ako to
stojí teraz.
To robí nejakú prácu.
Bude to trvať nejakú dobu v sekundách, alebo mikrosekundy, na
beží, ale nie je to vlastne robí niečo
užitočné pre človeka.
>> Takže poďme vlastne teraz otvoriť math2, kde teraz som vlastne
tlač výsledok.
Takže to tiež môže byť odvodená z našich predchádzajúcich príkladov.
Ak chcem urobiť nejaké jednoduché matematiky, int x = 1, y
= 2. z je 1 plus 2 teraz.
Čo je to bude tlačiť samozrejme?
Len 3.
Tak rýchlo zdravý rozum skontrolovať.
Dovoľte mi prejsť do tohto adresára.
Tak cd source1m.
Nechaj ma ísť napred a zadajte robiť math2.
Žiadne chybové správy vyšla, tak mi dovoľte bežať -
nie a.out--dovoľte mi, aby som beh math2. Enter.
A skutočne, to vytlačiť 3.
Tak sa poďme pozrieť na variant tohto.
V math3.c, teraz máme tento príklad tu.
>> Tak toto je celkom zaujímavé.
Takže v tomto tu, odpoveď dostane 1 delené 10,
a všimnite si, som vyhlásil, že ako float.
Prečo chcem, aby to bolo float?
No, je to zlomok.
Je to bude reálne číslo.
Takže to bude 0,1, dúfajme, že - 10%, v tomto prípade.
A čo som potom chcem vytlačiť?
No, táto odpoveď.
Dobre, poďme podpichovať nich seba ako prvý.
Takže na ľavej strane, vyhlásiť
float, hovoria odpoveď.
Na pravej strane, to 1 deleno 10 a dať to
Odpoveď vnútorné premenné.
Teraz, tento riadok vyzerá trochu záhadný.
Všimnime si ale niektoré známe funkcie. % Tu znamená prichádza
zástupný symbol.
f znamená, tu je hodnota s plávajúcou čiarkou, len skutočný
číslo, niečo s desatinnou čiarkou.
0.2 znamená čo?
Každý, kto vedia z predchádzajúcich skúseností?
Dve desatinné miesta.
Takže sme nevideli to predtým, ale je to len spôsob, ako
výkonu trochu väčšiu kontrolu nad printf a
hovorí mi nedáš 30 bodov za desatinnou čiarkou,
miesto mi len 2.
>> A potom si to ísť dopredu a spustiť tento.
Tak, aby matematiku 3, a teraz mi dovoľte bežať matematiky 3, Enter.
A to nie je v poriadku.
Zdá sa, že sa stretli našu prvú skutočnú chybu.
No, možno som jednoducho hľadajú dosť blízko.
Tak ma nechaj ísť sem, a dovoľte mi, aby som 20 desatinnú čiarku
bod miestach.
A dovoľte mi skompilovať to, aby math3, spustite.
Istá, že 1 deleno 10 nie je 0.
Tak čo sa deje?
No dobre, tak vlastne to nemá čo do činenia s to.
To je dobrá myšlienka.
To je naozaj len náhoda
že to robíme.
Ale len preto, aby dokázal, že to nie je to, ja
vrátiť niečo náhodné.
Nerob to doma, pretože je to jednoducho zle.
Ale nenechajme math3, dovoľte mi, aby som ho spustiť.
Takže nemá nič spoločné s tým, čo sa vraciam, len má čo do činenia
s tým, čo som tlač.
Ale počul som ho sem.
Čo?
PUBLIKUM: Takže musíme napísať čísla v
delenie, -
>> DAVID Malan: Dobre dobre.
Takže musíme napísať čísla sa zúčastňuje
Divízia tu pohyblivou rádovou čiarkou sa.
Takže problém je tu ako predtým: C, ako u mnohých
jazyky, má rôzne dátové typy.
A tieto typy dát, napríklad, sú tieto tu.
A dátové typy v otázke tu, keď som typ 1 a potom som
typ 10, sú pravdepodobne to, čo dátové typy?
Takže je to asi int, nie?
Rozhodne to nie je float, pretože tam žiadne desatinné
bod alebo niečo podobné.
Takže naozaj, mám int deleno int.
>> Takže Zaujímavosťou matematiky a počítačom je, že
ak robíte rozdelenie pomocou celých čísel -
1 delené 10, áno, je 0,1.
Avšak, keď ste delenie celé číslo integer,
Odpoveď musí tiež byť celé číslo len preto, že pre teraz.
A čo je implikácia potom?
No, ak je odpoveď 1 delené 10 sa rovná 0,1, čo
počítač bude robiť, je nemám potuchy, ako sa
predstavujú 0,1, pretože to je hodnota s plávajúcou čiarkou, nie
integer, bude to odseknúť všetko po
desatinnú čiarku a len ukázať vám 0 na začiatku.
A to, že je to tlač ako plávajúce bodu
hodnota, je to len estetický vec.
To preto, že som vynútenie počítač tlačiť ako
hodnota s plávajúcou čiarkou.
A skutočne som deklaroval ako float, ale matematika je
deje tu.
>> Dovoľte mi teda vlastne tento problém vyriešiť v jednom celkom jednoduchým spôsobom.
Prečo nemôžem jednoducho urobiť 10,0 a 1,0, aj keď
technicky by som mohol dostať preč len s jedným z nich.
Teraz mi dovoľte pokračovať a robiť math3.
Nechaj ma ísť ďalej a teraz beží math3, Enter.
A teraz, oh boy.
Teraz máme nový problém úplne.
Takže lepšie, že jo, sme bližšie k 0,1, ale to, čo je samozrejme
zle?
Ak sme boli klame roky, nie?
1 deleno 10 je vlastne celkom 0,1, takže to, čo je
Naozaj sa tu deje?
No môžete trochu rozumu cez to logicky.
Ak počítač má iba obmedzené množstvo pamäte RAM pre začatie
s, a naozaj počítač iba používa 32 bitov pre
hodnota s plávajúcou čiarkou, to dá rozum, že sa
konečný počet bitov, 32 v tomto prípade, áno, môžete
predstavujú veľa vecí.
Je to vlastne štyri miliardy rôzne hodnoty môžu byť
zastúpená 32 bitov, 2 na 32, ale je to stále obmedzené.
Takže problém je, že je to nekonečný počet real
čísla, vpravo.
Ak mi reálne číslo, vždy môžem nájsť vám jeden
o niečo väčšie, o niečo menej, len o ladení
čísla, ktoré sú za desatinnou čiarkou.
Takže ak nemáte nekonečný počet bitov, môžete
nemôže predstavovať nekonečný
počet reálnych čísel.
>> Takže tam je to vlastná nepresnosť v počítačoch, a
to dostane zakopol celú dobu ani v najjednoduchšej
programy, ako je tento.
Ale tiež v niektorých veľmi reálnych problémov, rovnako.
V skutočnosti, poďme sa na chvíľu stačí sa pozrieť na
niečo, čo sa skutočne stalo v skutočnosti.
Budeme sledovať len prvých pár minút, a potom sa
budeme písať na odkaz on-line.
Ale to je dôkazom práve to, čo sa môže pokaziť, docela
úprimne, vo veľmi tragickým spôsobom, kedy sa tieto veci nie sú
ocenil alebo len my ľudia robia chyby, pokiaľ ide o
tieto druhy implementačných detailov moderných počítačov.
>> [VIDEO Playing]
-Teraz sa vrátime k inžinierskych katastrof na moderné zázraky.
Počítače.
Všetci sme si zvykli na to sa často frustrujúce problémy
že ísť s nimi.
Chyby, vírusy, a softvér závady sú malé ceny do
platí pre pohodlie.
Ale v high-tech a high speed armády a priestoru
programové aplikácie, môže byť problém najmenší
zväčšený do katastrofy.
4. júna 1996, vedci pripravení začať bezpilotné
Ariane 5 raketa.
To niesol vedecké satelity, ktorých cieľom je
stanoviť presne, ako sa zemskej magnetické pole
spolupracuje so solárnymi vetry.
Raketa bola postavená pre Európskou vesmírnou agentúrou a
odštartovala z jeho zariadení na pobreží Francúzskej Guyany.
>> -Asi asi 37 sekúnd do letu, sa prvýkrát
všimol niečo zle, že trysky sú
otočná v spôsobe naozaj nemal.
Asi 40 sekúnd do letu, jasne vozidla
bol v ťažkostiach, a to je, keď sa rozhodol pre
zničiť.
Rozsah bezpečnostný technik s obrovským odvahy stlačení
Tlačidlo, vyhodil raketu pred tým, než by sa mohlo stať
nebezpečenstvo pre verejnú bezpečnosť.
>> -To bol prvý plavbe z Ariane 5, a jeho
zničenie došlo v dôsledku chyby vložené do
rakety softvér.
>> -Problém na Ariane bolo, že tam bolo číslo, ktoré
vyžaduje 64 bitov vyjadriť a chceli previesť ju
na 16 bitov čísla.
Predpokladali, že číslo bolo nikdy
bude veľmi veľká,
že väčšina z týchto číslic v 64 bitovej číslo bolo 0s.
Boli zle.
>> -Neschopnosť jedného softvérového programu, aby prijal
druh čísla generovaného iný bol pri koreni
zlyhanie.
Vývoj softvéru sa stala veľmi nákladné časť
nové technológie.
Ariane 4 raketa bola veľmi úspešná.
Toľko softvéru vytvoreného pre neho bola tiež použitá
v Ariane 5.
>> -Základným problémom bolo, že Ariane 5 bol rýchlejší,
urýchľovaním.
A softvér sa neúčtuje za to.
>> -Zničenie rakety bol obrovský finančný
katastrofa, všetko v dôsledku minút chyby softvéru.
Ale to nebolo prvýkrát, konverzie dát problémy museli
trápi modernej raketovej techniky.
>> DAVID Malan: Necháme to tak.
Ale to je dokladom toho, ako použiť dokonca aj niektorí z
Tieto najnižšiu úroveň detailov, ktoré sme začali
preskúmať dnes.
Takže aj keď ste trochu roztržitý možno niektorí z
syntaxe a arcaneness tu si uvedomiť, že cez
Termín budeme zameraná len na to, ako použiť ich pre
svety ďaleko za SK.
Uvidíme sa v stredu.