>> [Prehrávanie hudby]
>> DAVID Malan: Dobre.
Vitaj späť.
To je CS50, a to je Prvý týždeň, pokračovanie.
Takže jeden z dôvodov, prečo sme sa zložiť okolo technológií, ako
Google Sklo je, že prichádzajú s niečo známy ako API,
Application Programming Interface.
A čo to znamená, že sa správne súbory a so správnym
dokumentáciu, môžete skutočne písať softvér aj pre zariadenia, ako sú tieto.
>> A tak to, čo máme na mysli, k semestre koniec je, ak je projekt
zahŕňajúce, povedzme, Google Sklo môže odvolanie, uvidíme, čo môžeme urobiť v
podmienky hákovanie vás s niektorými loaner hardware, ako aj
verejne prístupné API, takže môžete skutočne začať vytváraní softvéru
ktoré beží na rovnakej sklo Google.
>> Ďalšie zariadenia, ktoré hráme s dobou, že sme si mysleli, by mohla byť
zábava na konci semestra je táto maličkosť tu.
Je to tzv Leap Motion, a to, čo ste asi vidieť je technicky
reklama na zariadenie, ale sa hovorí, čo to najmä
Zariadenie je schopné.
A je to tiež prichádza s API, pomocou ktorý môžete písať softvér
ovládať svoj počítač takým spôsobom, Celkom sa mi páči tento minútu filmu nájdete TU.
>> [PLAYBACK]
>> [END PLAYBACK]
>> Takže teraz, tento prístroj sa stane byť realizované ako malý USB
konektor, ktorý môžete pripojiť do vašej počítač, ale ja by som sa nečudoval
keď onedlho máme tieto druhy technológie v budúcom šarže PC
a Mac, takže môžete skutočne s ňou pracovať
spôsobom, ako to.
V skutočnosti to, čo som myslel, že to je tiež Zastavil som sa trochu demonštrácii
program, ktorý je dodávaný s týmto softvérom.
Tak som dal malý snímač v prednej časti môjho notebooku.
>> A ako môžete vidieť, že už si uvedomuje, že moja ruka je tu
ovládanie.
A to všetko robí, je aplikácia hladko maličkosti, ako je tento.
Ale vidíte, že skutočne Mám päť prstov tam.
Ak sa nám podarí dostať to urobiť všetko, 10, môžete si predstaviť elegantné piano
aplikácie alebo podobne.
Takže ak by ste chceli prísť po hodine dnes a hrať s tým, ako
dobre, ste vítaní.
Tak o tom viac ku koncu semestra.
>> Takže pár administratívne oznámenia.
Raz, to vyrezať tento piatok napoludnie na cs60.net/section.
To URL je na kurze je Domovská stránka rovnako.
Do tej doby, aj keď, supersections bude mať premiéru túto nedeľu.
Supersections sú jednorazová záležitosť, , Pretože to nám zaberie nejaký čas na prácu
, Kto je v ktorej časti a kde.
>> Takže Túto nedeľu, bude tam jeden sekcia pre tých menej pohodlné,
jedna sekcia pre tých, pohodlnejšie.
A tí z vás, niekde medzi vítaní ísť
jeden alebo oba alebo žiadny.
Obaja z nich bude natočený.
Budú vo väčšom sále, než časť by za normálnych okolností sa dovnútra
Ale cieľom je vybaviť vás niektoré komfort s problémom nastaviť jednu,
s C, s CS50 zariadení, tento víkend, ešte predtým, než zistili, že vaša
formálne priradenie sekcie.
Takže budete splniť vaše TF a vaše menšie skupina sectionmates asi
týždennú dobu.
>> Úradné hodiny, zatiaľ, boli deje.
Do využiť z nich dnes večer alebo zajtra večer, ak by ste chceli.
Problém nastavenie 0 je splatná v piatok.
Jedná sa o deň neskôr, než pravidelne plánovaným štvrtok.
Ale problém sada 1, uvidíte že zahŕňa niektoré warm-up
cvičenia, s ktorými si sami možné rozširovať
Štvrtok termín do piatka.
Problém sada 1, medzitým bude mať premiéru na ihrisku internetových stránkach to prichádza
Piatok, ak by ste chceli schúliť to, ako som kedysi dávno neskoro
V piatok večer vo svojej izbe.
>> Takže cs50.net/appliance je miesto, kde môžete získať CS50 spotrebiče
že sme začali používať v pondelok.
Budeme používať trochu viac dnes.
Ale buďte si istý, že problém nastaviť 1 Špecifikácie vás prevedie
presne kroky, ktoré potrebujete sa dostať, že hore a beh.
Takže nebojte sa o tom, že pred Pset 1, ak by ste radšej nie.
>> Dobrá.
Tak sme sa v pondelok na zdrojový kód, ale v súvislosti s novou
programovací jazyk, a to C. A a C, Na rozdiel od nuly, nie je grafický.
Nie je to skladačky.
Je to skôr anglicky ako syntax.
A je tu pár krokov zapojených v skutočnosti písomne ​​a beží
Program v C, pretože okrem zdroja Kód takto, budete potrebovať niečo
volal kompilátor.
A Laicky povedané, to, čo nemá kompilátor urobiť pre nás?
Jo.
>> STUDENT: Prevádza kód že píšete na 0s a 1s.
>> DAVID Malan: Dobrý.
Tak to prevedie kód, ktorý píšeme 0s a 1s.
Prevádza tzv zdrojový kód kód objektu, latter ktorý vyzerá
Trochu niečo také.
A je to váš procesor, mozog vnútorná časť počítač, že z dôvodu
ľudí, ktorí vytvorili tieto počítače, vedieť, čo tieto sekvencie
0s a 1s priemeru.
>> Možno to znamená, že tlač.
Možno to znamená, že naviac.
Možno to znamená, že odčítanie.
Možno to znamená, že zobrazenie grafiky.
K dispozícii sú preddefinované vzory bitov že sa svet rozhodol znamenať
určité veci.
Ale z väčšej časti v tomto kurze, budeme pracovať na vyššej úrovni, a
budeme brať za samozrejmosť, že existujú veci, ako kompilátory, ktoré môžu
aby náš zdrojový kód funkcie tak, ako sme v úmysle.
>> Takže programu sme napísali prvý posledný týždeň a potom začal do prístavu, tak
hovoriť, C tento rok Pondelok, to bolo.
Keď zelená vlajka kliknutí pozdraviť.
To bolo, samozrejme, zapísaný Scratch.
A ja som tvrdil, že ekvivalentné Program v C vyzeral trochu
niečo také.
>> Takže to, čo som myslel, že by som urobil je najprv, poďme srandista oddelene, čo vyzerá na prvý
pohľad síce ako celkom tajomný syntax, ale začnete všímať
vzory celkom rýchlo.
Čo budeme robiť aj dnes, je poskytnúť tie s duševnou model pre niektoré
kánonický niektoré štandardné konštrukcie v programovaní.
A potom budeme skutočne dostať svoje ruky špinavé s niektorými príkladmi rovnako.
>> Takže pre tých z vás pohodlnejšie, si uvedomiť, že tento týždeň a potom ďalšie
týždeň môže veľmi dobre byť trochu preskúmania.
Ale najmä pri hacker vydania problému set 1 zhasne
Samozrejme web v piatok, ja si myslím, zistíte, že aj keď sa budete vyplniť
niektoré medzery v budúcom týždni alebo dvoch, Začnete sa dostať stále viac
napádal a stretnutia nové a novšie veci.
>> Takže poďme dráždiť tento program seba niekoľko riadkov naraz.
Na samom vrchole, máme to, čo je odborne nazýva
direktíva preprocesoru.
To je len riadok kódu, ktorý hovorí, zahrnúť do obsahu súboru,
takzvané štandardné I / N, štandardný vstup - alebo, je mi ľúto, štandardné I / O, štandardné
vstup / výstup,. h, vo vnútri môjho vlastného programu.
>> Takže inými slovami, keď som to písal Program s jednoduchým textovým editorom, ako
gedit je jednoduchší ekvivalent niečo ako Microsoft Word, ktoré
inštrukcia # include stdio.h, je len chystá povedať kompilátora, uchopiť
Obsah tohto iného súboru, stdio.h, a vložiť ich priamo tu.
>> A teraz, prečo ma to zaujíma?
Čo tvrdíme, že je vo vnútri tohto súboru tzv stdio.h, ktorý je uložený
niekde na mojom pevnom disku alebo v tejto prípad, niekde v CS50 zariadení?
Niekto ju tam pre mňa.
Ale to, čo je v ňom?
>> Jo, je to vyhlásenie volaná funkcia printf.
Takže printf pripomína, že funkcia zobrazuje slová a znaky a
čísla na obrazovke v mojej ponuky.
Ale ja som to nenapísal.
CS50 to nenapísal.
Niekto rokmi napísal, a oni v podstate nám recept na to
v súbore nazvanom stdio.h.
Takže prvý riadok len mi dáva prístup na funkcie, ktoré niekto iný
napísal pred rokmi, medzi ktoré sú printf.
>> Teraz, ďalší riadok budem mávať moju dušu ruka s minimálne do budúceho týždňa.
Ale teraz viem, že int main (void) je v podstate ekvivalent tejto
žlté skladačky, kedy zelená vlajka klikli.
Svet pred rokmi rozhodol, že ak píšete program
jazyka C s názvom, môžete začať váš program s radom
ktorá vyzerá takto.
Za púhych asi za týždeň, bude to robiť zmysel pre to, čo je int, čo je neplatné.
Ale teraz, len myslieť na to, ako tejto žltej puzzle.
>> Teraz ďalšie, máme zložená zátvorka nasleduje ďalšie úzke zloženú zátvorku,
aby som tak povedal.
A uvidíme to po celú dobu programy v jazyku C, ako aj
JavaScript a PHP.
A to len zapouzdřit súvisiace riadky kódu.
Otvorená zložená zátvorka v podstate hovorí, tu je nejaký kód.
A uzavretá zložená zátvorka, ktorá je pod uhlom v opačnom smere, len
znamená, že je to pre zodpovedajúci kód.
>> Takže šťavnaté riadok v tejto prvej Program je posledná, printf,
quote-koniec citátu, hello world.
A ja som volal vec medzi cituje, čo minule?
Takže je to reťazec.
A reťazec je len techie termín pre postupnosť
znaky, slovo, frázy.
Dokonca aj jediný list by mohol byť dvakrát citovaný.
Ale je to postupnosť nula alebo viac znakov.
>> Spätné lomítko-n, aj keď vyzerá trochu divné.
Ale je to proste niečo znamená jednoduchý k počítaču.
Čo je spätné lomítko, n?
Nová linka.
Tak to je len zvláštne sled znaky, ktoré sa svet rozhodol
znamená, vloženie zalomenie riadku tam, pretože kompilátor bude skutočne mať
zmätený, zvyčajne, ak ste veľmi pochopiteľne, ale nesprávne, stačí
spustiť stlačením klávesu Enter, aby nové riadky v kóde.
Musíte byť trochu viac explicitné spätným lomítkom-n.
>> A uvidíme tú niekoľko ďalších, ako vzory pre špeciálne znaky.
Napríklad, ak ste chceli, aby vaše myseľ blúdiť na rohový prípade,
Predpokladám, že som chcel vytlačiť dvojité úvodzovky na obrazovke
z akéhokoľvek dôvodu, že sa zdá, že byť trochu problematické, nie?
Pretože keď som dal úvodzovky v uprostred "Hello, world", z akéhokoľvek
Dôvodom, prečo sa zdá, že potenciálne problematické?
Láme reťazec.
>> Kompilátor je len program.
Program ako kompilátor práve deje čítať svoje heslo zhora nadol,
zľava doprava.
A keď vidí tri úvodzovky miesto dvoch, že to nebude vedieť,
ak máte na mysli, že tá vec vľavo by mal byť reťazec alebo vec
právo, alebo celú vec.
Je to nejednoznačné, a tak, ako typické kompilátor by urobiť, je len šalieť,
a dá vám nejaké chybové hlásenie a aby sa vysporiadať s týmto problémom.
>> Tak vzhľadom k tomu, lomítko, n znamená, že nový linka, čo by váš inštinkt teraz
začnú byť, ak by ste chceli zahrnúť niečo neobvyklé, ako double
citovať vnútri tohto inak citovaná string?
Spätné lomítko-dvojité úvodzovky.
A tak budeme vidieť druh vzoru tiež.
>> Ak chcete urobiť niečo trochu divné, zistíte, že
riešenie často nasleduje vzor, a spätným lomítkom
označuje sekvenciu escape.
A znamená to niečo špeciálne že musíme zastupovať vo
odlišným spôsobom.
Pokiaľ ide o tom, ako si predstavujú spätné lomítko, dobre, budeme
vrátiť sa na to.
Ale odpoveď je tiež v skutočnosti trochu zrejmé.
>> Takže poďme sa predstaviť niektoré ďalšie programovací konštrukty
ktoré ste videli v Scratch.
Pravdepodobne ste už považovaná za samozrejmosť už pokiaľ ste už ponoril do
Problém nastavenie 0.
Ale poďme teraz predstaviť syntaxe C pre tieto inak pomerne intuitívne
nápady, aspoň niektoré z nich.
>> Takže táto predstava o stave, alebo vetva, zatiaľ čo predtým sme
to pomocou kódu, ktorý vyzeral takhle vľavo v Scratch -
ak x je menšie ako y, potom sa to tak povedať -
namiesto toho sa v C - dovoľte mi, aby som zdokonaľovať v v najjednoduchšom prípade -
sme proste hovoriť, ak otvoríte zátvorka, je niečo pravda -
Logický výraz je ísť kde som povedal podmienku -
zatvoriť zátvorka, potom to, čo je Vnútri týchto zložených zátvoriek.
>> Takže aj tu, zložené zátvorky sú niečo ako Scratch je
U tvaru skladačky.
To, čo je vo vnútri týchto zložených zátvoriek.
V tomto prípade, lomítko lomítko.
A všimnite si, to je dopredu lomítko, nie spätné lomítko.
Lomítko, lomítko, pre tých, ktorí si naprogramovaný
predtým, jednoducho znamená -
je to len komentár.
Komentár nie je linka kódu, samo o sebe.
Je to rad angličtiny, ktorý, človek, písali pre seba, aby
možno pripomenie, že máte niečo urobiť, aby vysvetliť seba, vysvetľovať
niekto iný, čo váš kód robí.
Je to len opisný komentár.
>> Teraz, samozrejme, môžeme mať dva-cesta rázcestí, len tým, že robí to,
trojcestný rázcestí tým to, a ak budete pokračovať v tomto
vzor, ​​môžete mať štyri-cesta, Päťsmerová, šesť-cesta vidličky v ceste, ak
budete musieť zvládnuť, naozaj, že mnoho podmienok.
A potom si všimnúť podobnosť tu -
if (podmienka) else if (podmienka), a jediná, ktorá to trochu
divné je posledný, ktorý je práve to inde.
Ale opäť, to je rovnaký, koncepčne, s tým, čo sme urobili
už, hoci syntaxe bude trvať trochu zvykať.
>> Teraz, v tomto príklade, sú iné zvláštne syntaxe.
Vidíme printf opäť otvorené zátvorky, a blízko zátvorky.
A vo vnútri je reťazec v úvodzovkách.
Zátvorky, v súvislosti printf, prejdite vľavo
a právo na to, čo?
Čo si popíšeme tie, ktoré boli string ako všeobecne?
>> Takže je to argument.
Kedykoľvek budete mať funkcie, ako je printf, a potom otvoriť zátvorka a
zatvoriť zátvorka a niečo vo vnútri to, či je to reťazec alebo
celé číslo, alebo čokoľvek iného, ​​čo v medzi tieto zátvorky sa nazýva
argument.
>> A argument, len ovplyvňuje Funkcie správanie.
V tomto prípade, je to celkom jasné, ako.
x <y je to, čo je schválený v roku, aby som tak povedal, ako argument.
A printf bude vytlačiť presne tak.
Pretože iste, osoba rokmi ktorí realizovaný printf nemal tušenie
to, čo ľudské nástupcov bude používať pre printf.
Takže to je dôvod, prečo argumenty existujú, vplyv na správanie po funkcia je
bolo napísané.
>> Teraz, Boolean výraz.
Videli sme to ešte v začiatku.
Ukazuje sa, že v C môžete i "alebo" dohromady, aby som tak povedal.
Dve zvislé čiary znamená, že tento blok kódu, to to bude
vykonať v prípade, že prvá podmienka je pravdivá alebo druhá podmienka je pravdivá.
A aj keď by si to nemohol urobiť To Scratch, môžete skutočne
to vo Scratch, a môžete tiež vyjadriť sám seba inak -
v prípade, že prvá a druhá podmienka podmienka pravdivá, potom to, čo je
vnútri zložených zátvoriek.
>> A rovnako ako stranou, dôvodom je to dvojitý ampersand a dvojité
zvislá čiara, uvidíme časom že jeden zvislý pruh a
jediný ampersand vlastne majú rôzne čo znamená v C. Takže teraz,
že zdvojenie symbolov je úmyselné.
>> Takže poďme predstaviť, stručne, ten druhý trochu syntaxe.
To nie je úplne preniesť do Scratch, ale tvrdím, že môžem
realizovať predstavu, ak iný, ak inde, ak inde, ak else použitie
niečo ako príkaz switch.
A jediný dôvod, prečo je to naozaj existuje je len vám, programátor,
trochu iné riešenie niektorých problém, a to aj napriek tomu, že logicky
vám nedáva žiadne nové schopnosti.
>> Tým mám na mysli toto.
Keď hovoríte, že prepínač, a potom priestor, a potom pár zátvoriek, vnútorné
ktorý ide výraz -
a to by mohlo byť trochu non-zrejmé na prvý, ale to nie je dôvod,
technicky, pretože spínač nie je funkcia.
Takže teraz, len predpokladať, že sme pomocou Okrúhle zátvorky v rôznych miestach
z rôznych dôvodov.
>> Takže zapnite výraz znamená, že môžem dať premennú vnútri tých
zátvorky, kde sa hovorí, že výraz.
A potom, ak táto premenná -
Predpokladám, že sa to volá x, a je to len číslo -
Potom môžem vymenovat v mojom snímke tu niečo také.
Je-li x premenná je môj a ja Chcete niečo urobiť, ak x
sa rovná 1, to môžem urobiť.
>> Keby som namiesto toho chcete urobiť niečo ak je x 2, to môžem urobiť.
Inak, ak chcem robiť niečo iné úplne, môžem mať predvolený prípad
tom prípade mám tú druhú vec.
Takže v tomto zmysle, je to ekvivalent ak sa x rovná sa rovná 1, inak ak iný,
Spomínam to, ale teraz len preto, uvidíme to znova.
Ale teraz, len viem, že to existuje.
>> Dobrá.
Tak to posledný pár je trochu zložité na prvý pohľad, ale robia
niečo pomerne jednoduchá.
Cyklus for v C je kus kódu, ktorý proste niečo robí znova a
znova a znova.
A len nepríjemné na tom je, to je, že je to trochu záhadný
sa vyjadrovať v tejto cyklickej vzor, ​​ale svet ako štandard
nasledujúcim spôsobom.
>> Pri použití pre sláčiky, máte dvojica zátvoriek znova.
A všimnite si dva bodkočiarkami tam.
Tieto dva bodkočiarky oddelené tri rôzne výrazy vnútri
zátvorky.
Jedným z nich je tzv inicializácia.
Jedným z nich je tzv stav.
A jeden je tzv aktualizácie.
>> Pozrel sa na abstraktne, je to kompletne non-zrejmé, tak sa poďme pozrieť
na konkrétnom príklade.
V Scratch sme mali opakovanie bloku.
A tento blok povedal opakovať 10 krát, povedzme "Hello, world". Dovoľte mi, aby som nárok na
teraz, a vrátime sa k tomu, a aj to sa bližšie zoznámiť so
budete onedlho ekvivalent C Kód môže byť povedal, aby bol tento -
pre vyjadrenie a priestor, pár zátvorky, bodkočiarky v oznámení
tam, ktoré oddeľujú tri odlišné veci, inicializácia
stav, a aktualizácie.
>> A hádajte, čo Prvý z nich je robí.
Int i = 0.
V hrubých Laicky povedané, to, čo je že robí pre nás, asi?
Tak jo.
Je to deklarovaní premennej s názvom i, a to je dávať to, akú hodnotu?
0.
Takže to vytvára premennú s názvom i, skladovanie hodnotu 0 v ňom.
To je tzv inicializácia.
>> Dobre, teraz som tvrdil pred že stredná vec, aj
<10, je stav.
Takže to, čo robí?
No, a čo robí, keď slučka pre Program sa pre slučky je spustený, je
zakaždým, keď počítač beží cez Táto slučka, zhora nadol, zhora
dno, rovnako ako vy robil, keď počítanie a sami sedieť,
znova a znova a znova, Počítač sa deje
skontrolovať túto podmienku.
A keď som je menšia ako 10, to bude robiť to znova.
Je-li i je menšia ako 10, to bude robiť to znova.
Keby som je menšia ako desať, to bude robiť to znova.
Takže to vyzerá, že navrhne, že dúfam, že sa mení.
Inak by sme museli nekonečnú slučku.
A skutočne, aj sa mení, pretože Posledná vec, ktorú za bodkočiarkou sa
je trochu záhadné syntax i + +.
Ale tí z vás, ktorí urobili to predtým, že jednoducho znamená,
proste to, čo?
>> ŠTUDENTI: [Prechodová Hlasy].
>> DAVID Malan: Pridať 1 až I.
Prírastok i.
Takže sme videli Scratch puzzle kus pre to, že v skutočnosti.
Nevyzeralo to ako aj + +, ale to len znamená, jednoducho, zvýšiť
cenia aj o 1 zakaždým, keď to urobíte.
Takže doslova, môžete začať tým, inicializácia aj na 0.
Potom skontrolovať stav.
0 je menšia ako 10?
Áno.
Ideme cez slučku.
>> Ďalšia vec, ktorú som sa tvrdí, že počítač je robiť, je, že to bude
zvýšite i
Tak som ich teraz jedno.
Kontroluje stav.
Je o 1 menej ako 10?
Samozrejme.
Tak sa to znova.
Potom sa zvýši aj + + na 2.
Je 2 menej ako 10?
Áno.
A znovu a znovu a znovu.
A nakoniec, pretože plus-plussing, dostaneme sa aj rovná 10.
Je 10 menej než 10?
No, samozrejme že nie.
A to je bod, v ktorom pre slučku zastaví.
A ak máte viac kódu na obrazovke dole, počítač
výťažok spustiť tento kód miesto.
>> Takže znovu, aj keď to bude vyzerať a cítiť trochu divne
Prvý, určite pre tých z vás, ktorí Nikdy naprogramované, sa
doslova znižuje koncepčne na to, čo je inak veľmi
jednoduché puzzle kus Scratch.
>> V poriadku, sľúbil som, že by som byť aj iné analógy vo Scratch.
Tam je to taky.
A videli sme to krátko minule.
Ale pamätajte večne zablokovať v Scratch?
Je to proste niečo robí navždy?
Ja tvrdil, že by ste mohli realizovať to týmto spôsobom.
A môžete skutočne realizovať tento na veľa rôznych spôsobov.
>> Ale zatiaľ čo slučka je len iný spôsob, ako v C, ako vyjadriť sám seba.
Na konci dňa, môžete to urobiť čokoľvek s slučky while, ktorý
nemôže sa na slučke.
Takže sú na konci deň funkčne rovnaké.
Ale to vám umožní vyjadriť sám seba trochu inak
nasledujúcim spôsobom.
>> S while, je to, čo je v zátvorky, ktoré je znovu skontrolovaná a
znova a znova.
A akonáhle má výraz nepravdivý, potom slučka prestáva vykonávať,
a počítač pokračuje prevádzkovať ktorýkoľvek iný kód,
mať vo svojom súbore.
>> Ale čo je zaujímavé je tu že som doslova napísal pravda.
A pravda je typ Boolean hodnotu, hodnotu true alebo false.
Mohli pravda niekedy stane false ak som doslova
pevne ju do svojho programu?
Tak nie.
Je to trochu divné, že som to urobil.
Ale pravda je pravda.
Neexistuje žiadny plus-plussing.
Nemá zmysel premenných v tu.
Takže, pretože som pevne, zatiaľ čo pravda, to slučka je vždy bude hodnotiť
znova a znova a znova.
>> Takže koľkokrát je hello world do tlače na obrazovke?
Forever.
Nekonečný počet krát, kým sa vybitia batérie alebo iné externé
udalosť stane.
Takže to asi nie je najlepší program písať, pretože v prípade, že používateľ
nikdy nemôže skončiť svoj program, je to asi nie je to, čo ste zamýšľali.
>> Ale niekedy, by mali byť programy majú nekonečnú slučku.
Napríklad, ak váš počítač má hodiny na to, že by bolo určite
pekné, keby hodiny to priebežne aktualizovať sama o sebe navždy, aj keď raz
Druhá alebo raz za minútu alebo niečo také.
Takže aj nekonečnej slučky majú svoje miesto.
>> Dobrá.
Konečne, toto.
A toto je trochu iný, funkčne a vrátime sa späť do
to pravdepodobne v pset 1.
Ale je tu iný typ slučky volal do while.
A jediný rozdiel medzi robiť, kým slučka a, povedzme, while,
je to, že podmienka je kontrolovaná nie pred spustením kódu, ale po
spustenie kódu.
Takže v hornej časti na dobu slučky, zatiaľ čo robiť, keď
kontroly, ktoré v dolnej časti.
>> A to len znamená, že cyklus while obvykle spustiť viackrát
alebo menej krát ako slučky while?
Potenciálne viackrát, pretože to while je jasne hovorí to,
až po ktorom mieste by ste skontrolovať v prípade, že stav vo vnútri
zátvorky, je pravda.
>> Tak uvidíme to ešte raz pravdepodobne v pset 1.
Ak ste niekedy chceli niečo urobiť aspoň raz a potom možno ešte viac
krát, to je dobrá postaviť použiť.
Ale zatiaľ čo slučka, naopak, bude skontrolovať jej stav ako prvý.
A to je pre slučky v C, sa zatiaľ čo, keď, a slučky.
A opäť, oni máp celkom pekne staré na začiatku, okrem toho, kto nemá
úplne rovnaký analógové Scratch.
>> No a čo teraz, premenné?
Tak to je, ako som deklaroval premennú syntakticky druhý deň.
Mal som int, čo som tvrdil, je celé číslo.
Potom som premennú s názvom pult, a potom bodkočiarka.
Takže čo je to riadok kódu robíš?
To je proste, keď vyhlásil variabilné -
to je, pýta počítač, daj mi pamäť, daj mi niektoré kúsky - v
ktoré môžem uložiť čo?
Int.
A bodkočiarka jednoducho znamená, koniec riadku kódu.
>> Teraz, druhý riadok je pravdepodobne docela odhalitelný.
Čo je counter = 0; robíš?
Je priradenie 0 proti.
A tak to je ďalšia vec, je to trochu nepríjemné
proti, povedzme, algebry.
Kým v algebre, znamienko rovnosti znamená, rovná, tu v C, rovná
znamienko znamená, že úloha.
Takže to znamená, že dať to, čo je na pravej strane na to, čo je na ľavej strane.
A uvidíme ďalší symbol, sa rovná rovná, keď chceme, aby skutočne otestovať
kvality, trochu nepríjemne.
>> Ale je to trochu neefektívne.
Je to trochu nepríjemné, že mám deklarovať premennú a
potom to hodnotu.
Takže vlastne C nám umožňuje zjednodušiť tým, a jednoducho to urobiť všetko naraz.
Môžete deklarovať premenné na ľavej strane.
Stále môžete urobiť úlohu na právo tým, že znamienko rovnosti v
prostredný.
Takže na konci dňa, tieto dva sú ekvivalentné, ale táto, úprimne povedané,
je pravdepodobne lepšia zvyk sa dostať do len preto, že je to trochu menej
kód, je to trochu čitateľnejší, a to len sprísni
váš kód, aby som tak povedal.
>> Akékoľvek otázky doteraz na okruhu, na rôznych faktoroch, na podmienkach, na
Booleovské operácie, buď technicky alebo koncepčne?
Dobrá.
Takže teraz to nabudúce dostane trochu zaujímavejšie.
A to je príklad som dal do poslednej čas, ktorý práve mapuje Scratch príklad
sa k C.
>> Takže funkcie.
Laicky povedané, čo je to funkcia?
Musím byť odvážnejší sa Vašej odpovede.
Čo je to funkcia?
>> STUDENT: Má niečo.
>> DAVID Malan: Čo je to?
>> STUDENT: Má niečo.
>> DAVID Malan: Má niečo.
OK.
Začneme tam.
Takže funkcia robí niečo.
Takže je to kus kódu, ktorý je zásade realizované inde, že
naozaj robí niečo.
A teraz, čo je na tom zaujímavé funkcie je, že to môže trvať vstup,
a to môže produkovať výstup.
A poďme vlastne vziať Pozrite sa na toto.
>> Ten muž za oponou bolo úmyselné pred chvíľou.
Tu máme tabuľku.
Ale predpokladám, že to v skutočnosti predstavuje veľkú krabicu.
Tak to je tzv čierna skrinka.
A vôbec, v dizajne, v počítači veda, čierne skrinky len na
kúsky funkčnosti, že niekto zaviedla, a ty nie
nutne vedieť, alebo jedno, ako je to realizovaný pod kapotou.
Len pozor, aby to čierna skrinka, ktoré budeme teraz začať volať
funkcie, robí niečo.
>> Tak napríklad, ak je to čierna skrinka na etapa tu predstavuje printf,
funkcie, viem z predchádzajúcich príkladoch printf, že sa jeden alebo viac
argumenty, a prvý z nich argumenty by mali byť reťazec, ako je
"Hello, world". No, keď som osoba písanie programu, a ja chcem
použiť printf, ja, napríklad, môže vziať kus prázdneho papiera a tu
čierny fix a na neho písať -
Aj chybne "svet" -
H-E-L-L-O.
>> Tak som si vezmem čiernu značku a budem písať, aký veľký a čitateľne, ako len môžem na
tento kus papiera, "ahoj, svet," A teraz vyhlasujú, že toto je môj argument.
Toto je reťazec reprezentovaný kus bieleho papiera.
A teraz môj vstup do funkcie printf bude to.
Takže som volanie printf, prechádzajúcej tento argument ako vstup do neho.
>> A teraz, ja neviem, ako ten, kto napísal printf to urobil pred rokmi, ale
Viem z jeho dokumentácie, ktorá jeho účel v živote je vytlačiť to, čo som
poskytnúť k tomu ako vstup.
A tak, aj keď táto implementácia je bez vedomia ma
Pod kapotou sa Vidím, oh, sa to robí.
Je vytlačená niečo na obrazovke.
A teraz ovládajú programu, ak je bolo viac riadkov kódu, by
sa teraz vrátila ku mne.
A tak to, že Colton -
požehnať jeho srdce, sa skrýva tu pod stôl pred vami všetkými -
je zámerné v tom, že neviem, a je mi jedno, ako printf je
vykonávaná.
Viem len, že opäť z jeho dokumentácie, čo robí a ako sa
som mal použiť.
>> Teraz si pripomeňme, že printf mohol dostať trochu zložitejšie.
Opäť sme sa rozprávali o ekvivalent Say bloku Scratch je.
Ale tiež som to urobil minule.
Chcel som, aby môj program, ahoj trochu viac dynamický a nie len ťažké
Kód niečo ako "sveta" rozhodne nie je ťažké niečo kód
ľubovoľná rovnako ako D-A-V-I-D do programu.
Chcel som sa opýtať používateľa o jeho alebo jej meno, a potom niečo robiť
že reťazec, ktorý poskytujú.
>> Takže tam je niečo trochu iné tu. printf, pred chvíľou,
sa skutočne niečo urobiť, ale je to nevrátil nič pre mňa.
Je to tak?
Colton nemal ruky mi nič späť, ani kus papiera.
Tam bol len vedľajší efekt.
Má poskytovať "Hello, world", ako argument Colton následok
vedľajší účinok slová, niektoré slová, sa objaví na obrazovke.
>> GetString, aj keď je trochu rôzne. GetString je tiež
funkcie, ale vracia nejakú hodnotu.
To nie je len estetický vedľajší efekt.
Je to vlastne mi dáva, osoba volanie alebo použitie funkcie,
niečo staré.
Takže v tomto prípade, je GetString dorovnal s otvoreným GetString
zátvorka, v blízkosti zátvorka.
Má GetString, preto sa nejaké argumenty alebo vstup?
No, zdá sa, nie je.
Jeho cieľom v živote je len preto, aby reťazec.
To nepotrebuje viac detailov než to.
Tak ma nechaj ísť ďalej a predstierať, že znova, black box nie je printf,
ale GetString, a dovoľte mi, aby som na osobu písania tohto programu, zavolajte alebo použite
GetString len o písaní G-E-T-S-T-R-I-N-G, open paren, zavrieť
zátvorka, GetString.
>> Teraz nemám potuchy, ako sa CS50 zamestnancami realizovaný GetString, ale viem, že
keď som čakať dosť dlho, bude to robiť svoju vec pod kapotou, možno pomocou
niektoré premenné, možno pomocou niektorej podmienky, možno pomocou niektorých slučiek,
Možno používanie niektorých funkcií, Možno použitie -
Len sa snažím stánku - možná pomocou niektoré ďalšie programovacie funkcie.
Ale keď som čakať dosť dlho - v skutočnosti, v počítači, sa tak stane
super rýchly -
keď som čakať dosť dlho, táto funkcia GetString dostane reťazec
od používateľa, ktorý je pravdepodobne píšete že sa na ich klávesnici a
potom, keď GetString ste sa vykonáva stále tieto znaky od užívateľa
a ich uloženie do reťazca, ktorý funkcie, GetString, bude mať
pripravený pre mňa nejaký výstup, ktorý ma bude získať prostredníctvom
operátor priradenia.
>> A keď odídem, naozaj, na výstupe tu Obosi má veľkoryso
zúčastnil, bez toho aby to vedel v vopred, písomne ​​svoje meno na to
premenná, ktorá zastupuje reťazec.
Teraz je operátor priradenia znamená, že aj aj keď to môže cítiť trochu
redundantné, ja vlastne potrebujem aby svoju vlastnú kópiu tohto.
Vzhľadom k tomu, na ľavej strane strana - POZOR! -
Všimnite si, že som v podstate majú reťazec meno na ľavej strane.
Tak som tiež bude, aby sa moje vlastné kópie tohto.
A to je trochu biele lži, pretože uvidíme za týždeň, alebo dve,
čas, reťazce nie sú v skutočnosti aké sa zdajú byť.
>> Ale teraz, tu je návratová hodnota.
Tu je môj vlastný kópiu, ktorú po pomocou operátora priradenia.
A teraz, čo chcem robiť ďalej?
Máme teraz druhý dvoch riadkov kódu.
Tak som teraz chcete zavolať printf.
Poďme predstierať, že sa čierna box je zase späť k bytiu
printf a nie GetString.
>> Printf tentoraz bude sa, koľko argumenty?
Tak sa pozrite, je to ako dva.
Existujú dva čiarky tam, ale jeden z tých čiarok, je to
vnútri úvodzoviek.
Takže prvý argument je doslova bude to.
H-E-L-L-O, čiarka, percenta s, spätné lomítko-n.
A teraz som poskytuje nie jeden argument, ale dva argumenty printf.
>> A čo printf robiť sa Tieto dva vstupy po odovzdám im
ako argumenty?
Malo by to trvať sekundu je, ktoré som volal meno, takže
Druhý kus papiera som napísal z Pred chvíľou sa nazýva menom.
Bude to konektor hodnoty vnútri tejto premennej do vyhradeného miesta
% S, takže znovu, len na chvíľu je čas, uvidíme vedľajší účinok
zavolal printf, pričom teraz sa nevidí "Hello, world", ale "Dobrý deň,
Obosi. "
>> Tak veľký potlesk pre oba naši dobrovoľníci, iba jeden z nich vedel,
by to byť pravda.
Dobrá.
Tak, možno, že je jednoduché, iste, ak ste už oboznámení
s takými, dúfajme, že ste sa nikdy zabudnúť, že najmä vizuálne, ako
funkcie pracujú.
>> Takže tam je viac než len GetString.
Vnútri CS50 knižnice, je tu Celý zväzok funkcií, z ktorých
sú aktivované len aby bolo jasné, že sme napísali tieto funkcie.
Typicky, v C, takmer každý druhý funkcie budete používať, je malá.
Ale my sme zámerne používať veľké písmená len aby bolo jasné, že sa jedná
budú školiace kolesá druhu, že budeme používať len na pár týždňov, ktoré
zjednodušiť proces získavania vstup od užívateľa.
>> Knižnica CS50 nič nerobí že vy sami nemohli robiť ani
len pomocou kódu z C oldschool učebnice.
Ale opäť použijeme ich ako tréning kolesá druhov len za pár
týždňov, takže môžeme zbaviť zložitosti, že budete čoskoro pochopiť,
sám robiť niečo tak pomerne jednoduché, ako dostať
vstup od užívateľa.
>> Takže viete, že budete mať prístup na getchar, GetDouble -
zdvojnásobí.
Whats - a potom GetFloat.
Čo je to float?
Začnime tam.
>> STUDENT: [nepočuteľné].
>> DAVID Malan: Jo.
Je to číslo s desatinnou čiarkou.
Tak vzhľadom k tomu, int je celé číslo, ktoré je len číslo s 0 až 9,
niektorí počet opakovaní tejto zmluvy, plavák je niečo,
s desatinnou čiarkou.
A dvojité, medzitým, je tiež číslo s desatinnou čiarkou, ale
čísla za desatinnou čiarkou bod, potenciálne.
>> Tak sme sa vrátim k tomu onedlho.
Ale zvyčajne, každý z týchto typov údaje, každý z týchto typov premenných
že knižnica ako je tá naša môže vrátiť do môžete použiť rôzny počet bitov na
ukladanie informácií.
Typicky, Char, čo jednoducho znamená, jeden znak, používa 8 bitov.
A to je vlastne v súlade s našimi byte dobrovoľníkov, ktorí minulý týždeň
prišiel a predstavuje jednu ASCII znak naraz.
Takže Char je 8 bitov.
>> Plavák sa stane, že je 32 bitov, typicky.
A dvojité, ako asi tušíte, je v skutočnosti 64 bitov, čo je jednoducho viac,
čo znamená, že môžete mať väčšiu čísla alebo väčšou presnosťou.
Ale na druhú stranu, o tom až inokedy.
GetLongLong, zatiaľ, ale hlúpo menoval, je naozaj len
Celé číslo, ktoré je dvakrát väčšie, dvakrát dlho, prípadne, ako bežné
celé číslo, 64 bitov namiesto 32.
A GetString sme používali.
>> Ale ako sa ukázalo, v CS50 knižnici ktorý sa vykonáva, ako uvidíme, v
forme dvoch súborov, z ktorých sa nazýva cs50.h má ďalšie dva
dátové typy v ňom.
Booleovské neexistujú C. Zahrievanie môžete simulovať len pomocou 0s a 1s
po celú dobu svojej programy.
Ale my sme v knižnici CS50 vytvorili symboly "true" a "false"
predstavuje 1 a 0, takže nemusíte majú na pevný kódu niečo
doslova ako 1 a 0.
Ale uvidíme ty znova.
>> String, taky neexistuje.
A to je dôvod, prečo som sa zmienil, že je to trochu biele lži pre túto chvíľu.
Ale budeme Zlúpnite tohto vrstva onedlho.
Ale teraz je reťazec postupnosť znakov.
>> Medzitým, v C, je v skutočnosti majú rôzne dátové typy.
Všimnite si, to sú malé.
Takže funkcie, ktoré videl pred chvíľou sú funkcie Napísal CS50 že
vráti vám hodnotu, ktorá spadá do jednej z týchto kategórií.
>> A pár listov podvádzať len zasadiť semeno tu. printf nie je len
sa% s ako zástupné symboly.
Trvá% d pre desiatkovej celé čísla, alebo% i bude fungovať rovnako.
% F je plávajúca bodovej hodnoty. % C je pre char, ak chcete len pripojiť jeden
znak do reťazca predformátovaného ako sme robili, môžete použiť% c
>> A potom, trochu nechutne,% je LLD na dlhú desiatkové celé číslo,
čo len znamená, že ak budete potrebovať naozaj veľké číslo, a používate niečo
tzv long long, čo prídeme späť na pset, môžete použiť% LLD
printf povedať, pripojte naozaj veľký integer tu ako svoje druhé alebo
nejaký iný dôvod.
>> A konečne, som sľúbil, že je tu niekoľko ďalších útek
sekvencie, ktoré printf podporuje.
Videli sme spätné lomítko-n.
Spätné lomítko-r môžete vidieť.
Je to niečo ako old-school vec.
Ak ste niekedy používali skutočný písací stroj roky Pred a vytiahol na kľučky
ktoré nielen otáčať kolieska presunúť lineup, ale tiež sa sťahoval
Celá vec celú cestu späť k doľava, dobre, lomítko-r len
v podstate sa pohybuje kurzor späť na začiatku riadku
bez pohybu nadol.
Ale na druhú stranu, o tom viac, možno v budúcnosti.
>> Spätné lomítko úvodzovky, spätné lomítko, úvodzovky, spätné lomítko spätné lomítko je
riešenie malinké hádanky Som spomínal predtým.
A spätné lomítko-0 je vlastne celkom zaujímavé.
Ale vrátime sa že onedlho.
>> Tak ma nechaj ísť do teraz, CS50 spotrebič, a poďme skutočne
rýchle zahriatie s jedným z príkladov sme sa už, a potom prejsť na
niečo trochu zložitejšie.
Takže keď otvorím môj program volal gedit -
toto je môj grafický editor.
A môžem to urobiť -
dovoľ mi zavrieť to okno tam -
prostredníctvom tejto ikony sa tu, gedit, v ľavom dolnom rohu
rohu vedľa menu.
>> Chystám sa ísť dopredu a rozvíjať, a uložiť tento príklad do, povedzme, John
Harvard je zložka.
John Harvard je zložka je len jeho domov adresár, kde všetky jeho súbory žije
v predvolenom nastavení.
A ja idem uložiť ako súbor s názvom ahoj-0.c.
A ja som zvolil tento názov len tak, že zoradia sa ukážkový kód v
Samozrejme WWW stránky a YouTube videá online.
>> Takže teraz idem začať napísať svoj prvý program.
Dovoľte mi priblížiť čitateľnosti.
A ja idem ďalej a hovoria, int Hlavné void, čo je rovnako ako, že
žltá puzzle kus, ktorý spustí program.
Som sa dostal do zvyku cez rokov som otvoril zložená zátvorka, potom
i zatvorenie a potom ísť späť do tam, kde chcem, aby môj kód len
pretože mi to pomáha udržať všetko vyvážený, najmä moje
program dostane dlho.
>> A teraz, tu, ja idem do toho a povedal, printf, citovať Unquote,
hello world, lomítko-n, v blízkosti citujem, zatvoriť zátvorka, bodkočiarku.
Takže som len opakovať všetko, čo sme bral ako samozrejmosť tak ďaleko.
Teraz idem oddialiť.
>> A to okno terminálu tu, čo smiem robiť v tejto čiernej
a biela okná?
Čo môžem použiť pre?
Tak toto je miesto, kde som spúšťať príkazy a kde by som mohol zostaviť veci.
A budem držať to jednoduchý.
Budem používať program tzv značka, ktorá nie je
technicky kompilátor.
Kompilátor sa volá zvonenie, ale vrátime sa k tomu v
týždeň alebo dva čas.
>> Pre túto chvíľu som len tak písať, aby ahoj-0, ale tí z vás, ktorí boli
porovnanie vo vašich mysliach, čo som práve napísal, čo som mal napísané môžu
už viete, že som to urobil niečo zle.
Teraz, tam je zrejmé, že niektoré chyby.
Než som sa ani pozrieť na to, čo oni sú, každý myšlienky na to, čo som urobil zle?
>> ŠTUDENTI: [Prechodová Hlasy].
>> DAVID Malan: Jo.
Chýba mi v knižnici je hlavičkový súbor.
Každý z týchto súborov. H sa nazývajú záhlavie súbory, a tým, že spoločne
patrí k veciam tzv knižnice.
Knižnice sú len kusy kódu že ostatní ľudia písali.
Takže štandard [? i?] Knižnica je kolekcia súborov, ktoré obsahujú kód
že ostatní ľudia písali.
>> Takže mi chýba, že.
Tak prečo som stále ste chybu?
No, dovoľte mi, aby som sa posunúť späť do moje okno terminálu tu.
A bohužiaľ, v C, rovnako ako v mnohých programovacie jazyky, najmä
ak je to pre vás nové, chyba správy sú presné, ale sú tiež
veľmi tajomný.
A chyba tu, v červenej farbe, je "Implicitne deklarovať funkcie knižnice
printf s typom, "a potom to zvitky na ďalší riadok, "int const char *,
... "Len sa naozaj ohromujúci rýchlo.
>> Ale to, čo by ste mali začať robiť, ak opäť nová k tomu všetkému, je len
začať hľadať kľúčové slová.
Jasne, mohol by som nerozumel polovice zo slov, som videl len zatiaľ.
Budete však za týždeň času.
Ale vidím, že printf.
A to by mala začať onedlho sa osviežiť pamäť v poriadku, printf.
Niečo je zle s printf.
Už som hláskovať zle?
Nie, to nevyzerá ako - oh.
Nemôžem používať, ak učím kompilátor, že to existuje.
A tak opäť chodiť so svojimi inštinktami, aj keď nemáte skutočne pochopiť
skutočné chybové správy.
>> A skutočne, riešenie je tu len je to v hornej časti súboru
ako to, že resaving môj súbor s Ovládanie-S alebo menu Súbor.
A keď som sa teraz vrátiť sa sem, Chystám sa vyčistiť to.
Control-L je len príjemný spôsob, vymazať obrazovku.
A potom budem písať "aby ahoj 0 "Enter a teraz som ešte vidieť
kryptických postupnosť symbolov, ale vrátime k tomu.
To je to, čo urobiť, je robiť za vás.
Je to automatizáciou procesu prijímania docela nepríjemné príkaz zahŕňajúce
Zvonenia, vlastné kompilátor.
Ale je fakt, že som žiadne chyby znamená, že táto vec by malo fungovať.
>> Takže som teraz robiť - dovoľte mi priblížiť znova -
./hello-0 Enter, a naozaj, vidím "Hello, world". Takže poďme sa zlepšiť
to niekedy tak trochu len na replikáciu Kroky, ktoré sme zamýšľali.
Chystám sa premenovať to s Uložiť ako hello1.c.
A teraz budem deklarovať premennú volal meno, takže string name,
a ja idem dať v ňom hodnota citátom-Unquote
D - V-I-D close-quote bodkočiarkou.
A teraz idem nahradiť "svet" s tým, čo zástupný reťazec?
% S.
>> A teraz, ako by mnohí argumenty printf trvať tentoraz?
Tak dva.
Tak som sa ísť mimo úvodzoviek.
Píšem "meno" po čiarkou.
Ale ja som urobil niečo inak zle tentoraz.
Ale predpokladajme, že som to neurobil Uvedomujeme si, že ešte.
Nechaj ma ísť sem.
>> A upozornenie, taky som už trochu nudí písanie ", aby ahoj 0" všetci
čas, "make" a to všetko.
Tak to dopadá, v Linus môžete často narazí na šípku nahor na vašom
klávesnice a môžete skutočne prechádzať cez všetky príkazy, ktoré som
vykonaný skôr práve teraz.
Takže keď to urobím, hore, hore, je tu, aby ahoj 0.
Nechcem to.
Len chcem zmeniť na ahoj 1 tentoraz Enter.
Nakoniec, bude to ušetrí nejaký čas.
>> Dobrá.
Bohužiaľ, je to ich chyba.
Takže dovoľte mi posunúť nahor.
Vyzerá to ako naozaj porážal tento program.
Myslím, že môj bože, je to dva riadky kódu, a jeho 10 riadkov chýb.
Ale pozrite sa na hornom prvý.
Použitie nelegálnej identifikátora reťazca.
Už som na mysli štandardné i n?
Nie, ja nie.
Myslel som reťazec.
>> Ale kde je reťazcové premenné Typ vyhlásil, dd hovoríme?
Takže je to v CS50 knižnice.
Takže to nebude stačiť, a to ako prvý pár týždňov, stačí použiť
čo C nám dáva.
Som tiež ísť sem, a ja mohol dať nad alebo pod, ale budem
len držať je abecedný udržať veci usporiadane.
Chystám sa zahŕňajú cs50.h, ktorý je predinštalovaný na
Ste na CS50 spotrebiča.
A je to open source, takže aj ľudia na internete je možné ho použiť na ich
vlastné počítače.
Ale to príde s CS50 spotrebiča.
>> Takže teraz mi dovoľte vrátiť sa a znova kompilujte to s make ahoj 1.
Sakra.
Ešte ďalšie chyba.
Dovoľte mi, prejdite do prvej, hoci.
To je trochu zložitejšie.
Multi-znak znaková konštanta.
To nie je mi pomáha.
Ale oznámenia, zvonenie je aspoň trochu trochu slušný, čím sa trochu
zelená strieška symbol, je to hovorí Tu je miesto, kde som to posral.
Prečo sa ukazuje, že sa len málo zelená šípka, do jednoduchých úvodzoviek ďalšie
na moje meno?
>> Takže to je jedna z vecí, ktoré len zvyknúť, najmä ak ste boli
programovania v Pythone, alebo JavaScript, alebo iných jazykoch, pokiaľ to detail
nezáleží.
V C, záleží na tom.
Ak deklarovať reťazec, ktorý je sekvencie 0 alebo viac znakov,
v skutočnosti je nutné použiť úvodzovky.
Takže som vlastne potrebujete zmeniť toto späť otvorte ponuku, zatvorte ponuku, s
dvojité úvodzovky.
Jediné citácie majú svoje miesto, ale iba v prípade, že používate jednotlivca
znakov, ale o tom až inokedy.
Pre túto chvíľu, úvodzovky sú nevyhnutné.
>> Takže teraz, nechaj ma ísť späť do môjho terminálu okná, aby ahoj 1.
A kto verí?
Je tento program teraz bude zostaviť správne?
OK.
Takže tri z nás si myslia toto.
Dobrá.
Enter.
A to vlastne robil.
Takže tam žiadne chyby tentoraz, a to aj aj keď tento program je dostal trochu
zložitejšie.
Keby som teraz robiť bodka lomka Dobrý deň, 1, Enter, to bude hovoriť "Ahoj, David."
>> Ale poďme urobiť tretej iterácii z toho, kde
Program je naozaj dynamický.
Nechaj ma ísť ďalej a zmeniť súbor meno, len na súlad s
súbory, ktoré budete mať k dispozícii Vám potom online.
Enter.
A teraz idem na, a nie uložiť "David" pevný kódované tu.
Čo som mohol robiť veľmi jednoducho tento program zdokonaliť?
>> Mohol by som zavolať GetString.
To by mohlo byť trochu non-zrejmé, čo je sa stane, tak idem
skutočne pridať ďalší riadok, printf, a hovoriť meno, hrubého čreva, v blízkosti ponuku, stačí
dať užívateľovi výzva na obrazovke.
A teraz idem sem, a ja som bude používať svoju klávesovú skratku.
Chystám sa ísť hore, hore, a zmeniť ahoj ahoj 1 až 2, Enter.
A našťastie, robím pokroky.
>> A teraz idem hore na dot slash Dobrý deň,
zmeniť na 2, Enter.
A teraz môj program -
Budem priblížiť - je stále trochu krajší.
Názov bude, povedzme, že Rob Tentoraz, Enter, ahoj, Robe.
Môžeme to urobiť znovu.
Meno Lauren, Enter.
Meno, Joseph, Enter.
Meno, skúsme sa ťažké, Enter.
Eh.
V skutočnosti to nie je chyba.
Takže je to trochu škaredé.
Takže možno by sme mohli vyriešiť v budúcnosti, teraz nie.
>> Ale ako by ste inštinktívne ísť o riešenie
že konkrétna výzva?
To len vyzerá hlúpo.
Ako sa vyhnúť veci budete vyzerať hlúpo?
Tak by sme mohli urobiť, OK, som počul pár vecí, stav a slučky.
Mohli by sme použiť jednu, čo je podmienka, pre kontrolu čo je dĺžka reťazca
Užívateľ nám dal?
A či je to 0, je to len citovať Unquote, oni jednoducho stlačiť Enter, potom
možno by som mal kričať na ne a vyzve ich znova.
Ale ako výzvu znova?
No, počul som tiež slučku, a ja som mohol urobiť to znova a znova a znova
upozornenie užívateľa na rovnakú vec.
>> Dobre, poďme urobiť jednu ďalšiu príklad pomocou rôznych
funkcie v knižnici CS50.
Dovoľte mi na záver tohto súboru.
Dovoľte mi, aby som vytvoriť novú.
A ja hovorím adder.c, len preto, že je to ľahké urobiť jednoduchú aritmetiku,
aj keď to bude úplne neohromující s tým, čo by ste mohli urobiť
s akýmkoľvek moderným počítačom.
>> Ale nechajte ma ísť dopredu a teraz -
Som sa poučil poslednej dobe - vrátane cs50.h, patrí stdio.h, int
Hlavné void, čo teraz, budem len vziať na slepej viere, ale budeme predpokladať,
že pochopí, čo to znamená, že onedlho.
A ja som niečo povedať ako "daj mi int."
>> A teraz, ako sa dostanem int?
Chcem konečne deklarovať premennú volal x typu int a
uložiť do nej celé číslo od užívateľa.
Takže to bolo sústo.
Ale ak niekto chce navrhnúť, ako môžem vyhlásiť celočíselnú názvom x?
Int x.
>> Takže je to naozaj tak jednoduché.
Dajte mi int.
Nazvime to x.
Teraz som použiť operátoru priradenie.
A ako mám uložiť od vľavo hodnotu pre užívateľa?
Nechcem volať GetString, samozrejme, ale vezmi_int.
Akékoľvek argumenty?
Nie.
Takže je to otvorené zátvorka, v blízkosti zátvorka okamžite, a potom
bodkočiarka končí linku.
>> Teraz mi dovoľte to znova.
Daj mi ešte int.
Tentoraz urobím int, poďme hovoria y, rovná vezmi_int.
A teraz mi dovoľte niečo super-jednoduchý ako nejaký matematike.
Takže printf, súčet% d je zástupný symbol pre int.
A% d, obdobie, spätné lomítko-n.
>> Dobrá.
Takže to nie je vlastne matematika.
Ale ak chcem povedať, súčet tohto hodnotu a táto hodnota je rovná tejto
iná hodnota, koľko argumentov do Celkom by som mal dávať printf,
nakoniec?
Takže štyri, že jo?
Tento reťazec a potom tri hodnoty.
Takže x je prvá chcem byť zapojený ako prvý na% d
y bude ďalej.
>> A teraz som tak trochu chcel povedať z, ale z neexistuje.
Ale to nie je veľký problém.
Vzhľadom k tomu, čo by ste robili, inštinktívne, najmä ak ste mali
grafickým kalkulátorom, čo píšete?
Ako sa o X plus Y?
Takže to nie je skutočný variabilné.
Je to len súčtom dvoch ostatné premenné.
A to je úplne legitímne.
C iste chápe jednoduché aritmetický takhle.
>> Bodkočiarka, zachrániť.
Teraz ma nechaj ísť sem dole a Zadajte aby zmija, Enter.
Žiadna chyba, tak to je pokrok príliš.
Zadajte zmija.
A ďalšie klávesové skratky, ak začnete nudiť
so všetkými príkazy -
ak začnete zadaním príkazu ako bodka lomítko reklamu, a to je, kde sa vaše
nuda kopy, väčšinou je možné zasiahnuť Karta mať počítač dokončiť
Zvyšok vety pre vás, ak to nie je nejednoznačné, čo by malo prísť po reklame.
>> Tak nechaj ma ísť napred teraz a kliknite na tlačidlo Enter.
Daj mi int, 1, 2, a Našťastie, je to 3.
Ale ako vždy, programy testovania by nemali obmedziť na
Len sa snažím raz.
Skúsim rohovú prípad, ako negatívne 1, daj mi jedno, a že je
kontroly sa tiež.
A ja chcieť robiť viac dôkladného testovania, ale som si celkom
komfortné tam, kde je to na.
>> No, teraz poďme skúsiť iný program že tentoraz používa
trochu iné syntaxe.
Dovoľte mi, aby som vytvoriť nový súbor.
Zavolám tento conditions0.c na linku s nejakým ukážkový kód on-line.
A nechaj ma ísť ďalej a robiť zahŕňajú cs50.h, zahŕňajú
stdio.h, v hlavnom prázdnoty -
OK.
Tam ideme.
Máme štandardný štandardný text.
>> A tentokrát budem hovoriť printf, "Rád by som int, prosím," len na
aby sa výzva trochu priateľskejší.
A teraz chcem, aby sa int od užívateľa.
Budem hovoriť n tentoraz, len pretože n znie ako číslo.
vezmi_int, a teraz, čo robiť Chcem s tým robiť?
No, pokiaľ je n - a ja budem priblížiť -
ak n je väčšie ako 0, chcem urobiť nasledovné -
printf "Vybral si si kladné číslo." Inak, budem písať printf "Ty
vybral negatívny
číslo. "Dobre.
Takže tento program, aj keď som to urobil rýchlo, vyzerá dobre syntakticky.
Skúsim to.
Skontrolujte stav 0.
Zdá sa, že na spustenie.
Stav 0, zadajte.
Poďme dať mu INT 50.
Vybral som si kladné číslo.
Skúsme to znova.
Stav 0.
Negatívne 50.
Vybral som si záporné číslo.
>> Ale teraz mi dovoľte, aby som vybrať, čo budeme držať volanie rohovú prípadu, čo je viac
Zaujímavý prípad, že si myslíte, že Môže vám nejaké ťažkosti, 0.
Teraz som si istý, že je to jedna z tie rohové prípady, keď nula je
ani pozitívne, ani negatívne, takže moja programu, aj keď v syntakticky
opraviť - to kompiluje to beží - nie je logicky správne.
Takže to, čo je jednoduché, oprava tu, ak chcem zistiť, či chcem zvládnuť n
rovná 0 samostatne?
>> Takže ak je n rovné 0, potom chcem povedať, niečo ako printf "Vybral si si 0".
Skúsim to teraz.
Nechaj ma ísť späť, zrušte moje okno a prekompilovať.
Hm.
Jedna chyba generovať.
Ale ja si chcete skontrolovať Ak n rovné 0.
>> Takže znova, ďalšie blbosť zvyknúť, znamienko rovná sa
operátor priradenia.
Takže je to vlastne chyba v tom, že technicky, aj keď kompilátor
ma ochránil sám pred sebou, mali by sme technicky kopírovanie 0 do n, ktorý
nie je to, čo chcem.
Chcem pre testovanie rovnosti sa rovná rovná.
A tak, že teraz môže byť moja lepšie riešenie.
>> Dovoľte mi, aby som v skutočnosti ho uložiť to ako, povedzme, podmínky1, aby nové a lepšie.
Takže teraz, keď som překompilovat to, že by podmienky -
Jejda - aby podmínky1 bodka lomka podmínky1, Enter, "Rád by som int,
prosím. "Ja idem Začnite písať 50.
Je to stále dobré.
Negatívne 50, stále dobrá.
0, a to skutočne zistené že som si vybral 0.
>> Takže čo viac môžem teraz s tým?
No, môžeme určite viac zložité veci.
Ale čo by som chcel navrhnúť, je že sme sa nakoniec na túto poznámku tu.
Ak sa vytiahnuť to, uvidíš, snáď, Obľúbený kreslený seriál tvoj
dodnes si možno nikdy pochopiť.
A to je o kvalite smiechu mali by ste si vtipy SK.
Takže to je asi pravda.
>> Ale viac presvedčivo, som myslel, že nám trochu upútavku na pondelok.
Takže sme začali používať celé čísla.
Máme len plaváky.
Dokonca sme len štvorhre ktoré opäť vám čísla
Po desatinných miest.
>> Ale ukázalo sa, že pláva na hladine a dvojlôžkové a, naozaj, počítače,
zásadne nemôže vyjadriť niektoré hodnoty presne.
Vieme z matematickej triedy, ktoré môžete mať ľubovoľný počet čísel po
desatinná čiarka.
A dokonca môžete dať zvislý pruh povedať to trvať večne.
>> Bohužiaľ, nemôžete naozaj si, že v počítači.
A tak rohové prípadom dochádza.
Predpokladajme napríklad, že ste niečo robiť finančné.
Robíš matematiku s percentách, a
s dolármi a centy.
A ty centov nie nutne zostavu.
No, ukázalo sa, že zlomky haliere môžu začať sčítavať, ak
modelovaný s počítačovým systémom takým spôsobom, že šikovný
môžu ľudia využiť.
>> A tí z vás, ktorí nevideli, tak by som Páči sa vám 30 druhého teaser na
Prekrásny film známy ako kancelárske priestory, ktorá bude namaľovať obraz
Problém budeme riešiť Prvá vec, ktorú v pondelok.
Keby sa nám podarilo zvýšiť objem trochu, dám vám 30
sekúnd kancelárskych plôch.
>> [PLAYBACK]
>> -Myslím, že ste, že ste neboli ukazuje a dostanete, aby svoju prácu.
>> -Vlastne, som bol povýšený.
>> -Mohol by som naprogramovať vírus, ktorý by rip to miesto mimo veľký čas.
>> No, ako to funguje?
>> -Zakaždým, keď to bankovým prevodom kde je záujem počíta, a tam
sú tisíce denne, počítač končí s týmito zlomky percenta.
>> -Ale ja nemienim robiť nič nezákonného.
>> -Nelegálne?
Samir, toto je Amerika.
>> -Musíme prisahám Bohu.
>> -Pokiaľ nikto nevie o tom ale nám, v poriadku?
Žiadne rodinní príslušníci, žiadne priateľka, nikto.
>> -Samozrejme.
>> -Súhlas.
>> -Neboj sa, človeče.
Ja to nikomu nepoviem ani.
>> [END PLAYBACK]
>> DAVID Malan: Tak toto je teda CS50, to bolo Kancelárske priestory, a to bude všetko
zmysel v pondelok.
Uvidíme sa.
>> Rozprávač: Na ďalší CS50, Rob prispôsobí bol preč
Harvard stravovanie.