>> [Přehrávání hudby]
>> DAVID Malan: Dobře.
Vítej zpátky.
To je CS50, a to je První týden, pokračování.
Takže jeden z důvodů, proč jsme se složit kolem technologií, jako
Google Sklo je, že přicházejí s něco známý jako API,
Application Programming Interface.
A co to znamená, že se správné soubory a se správným
dokumentaci, můžete skutečně psát software i pro zařízení, jako jsou tyto.
>> A tak to, co máme na mysli, k semestry konec je, pokud je projekt
zahrnující, řekněme, Google Sklo může odvolání, uvidíme, co můžeme udělat v
podmínky hákování vás s některými loaner hardware, jakož i
veřejně přístupné API, takže můžete skutečně začít vytváření softwaru
které běží na stejné sklo Google.
>> Další zařízení, které hrajeme s dobou, že jsme si mysleli, by mohla být
zábava na konci semestru je tato maličkost tady.
Je to tzv. Leap Motion, a to, co jste asi vidět je technicky
reklama na zařízení, ale se mluví, co to zejména
Zařízení je schopné.
A je to také přichází s API, pomocí který můžete psát software
ovládat svůj počítač takovým způsobem, Docela se mi líbí tento minutu filmu najdete ZDE.
>> [PŘEHRÁVÁNÍ]
>> [END PŘEHRÁVÁNÍ]
>> Takže teď, tento přístroj se stane být realizovány jako malý USB
konektor, který můžete připojit do vaší počítač, ale já bych se nedivil
když zanedlouho máme tyto druhy technologie v příštím šarže PC
a Mac, takže můžete skutečně s ní pracovat
způsobem, jako to.
Ve skutečnosti to, co jsem myslel, že to je také Zastavil jsem se trochu demonstraci
program, který je dodáván s tímto softwarem.
Tak jsem dal malý snímač v přední části mého notebooku.
>> A jak můžete vidět, že už si uvědomuje, že moje ruka je zde
ovládání.
A to všechno dělá, je aplikace hladce maličkosti, jako je tento.
Ale vidíte, že skutečně Mám pět prstů tam.
Pokud se nám podaří dostat to udělat vše, 10, můžete si představit elegantní piano
aplikace nebo podobně.
Takže pokud byste chtěli přijít po hodině dnes a hrát s tím, jak
dobře, jste vítáni.
Tak o tom více ke konci semestru.
>> Takže pár administrativní oznámení.
Jednou, to Výřezem tento pátek v poledne na cs60.net/section.
To URL je na kurzu je Domovská stránka stejně.
Do té doby, i když, supersections bude mít premiéru tuto neděli.
Supersections jsou jednorázová záležitost, , protože to nám zabere nějaký čas na práci
, kdo je v které části a kde.
>> Takže Tuto neděli, bude tam jeden sekce pro ty méně pohodlné,
jedna sekce pro ty, pohodlnější.
A ti z vás, někde mezi vítáni jít
jeden nebo oba nebo žádný.
Oba z nich bude natočen.
Budou ve větším sále, než část by za normálních okolností se dovnitř
Ale cílem je vybavit vás některé komfort s problémem nastavit jednu,
s C, s CS50 zařízení, tento víkend, ještě předtím, než zjistili, že vaše
formální přiřazení sekce.
Takže budete splnit vaše TF a vaše menší skupina sectionmates asi
týdenní dobu.
>> Úřední hodiny, zatím, byly děje.
Do využít z nich dnes večer nebo zítra večer, pokud byste chtěli.
Problém nastavení 0 je splatná v pátek.
Jedná se o den později, než pravidelně plánovaným čtvrtek.
Ale problém sada 1, uvidíte že zahrnuje některé warm-up
cvičení, se kterými si sami lze rozšiřovat
Čtvrtek termín do pátku.
Problém sada 1, mezitím bude mít premiéru na hřišti internetových stránkách to přichází
Pátek, pokud byste chtěli schoulit to, jak jsem kdysi dávno pozdě
V pátek večer ve svém pokoji.
>> Takže cs50.net/appliance je místo, kde můžete získat CS50 spotřebiče
že jsme začali používat v pondělí.
Budeme používat trochu více dnes.
Ale buďte ujištěni, že problém nastavit 1 Specifikace vás provede
přesně kroky, které potřebujete se dostat, že nahoru a běh.
Takže nebojte se o tom, že před Pset 1, pokud byste raději ne.
>> Dobrá.
Tak jsme se v pondělí na zdrojový kód, ale v souvislosti s novou
programovací jazyk, a to C. A a C, Na rozdíl od nuly, není grafický.
Není to skládačky.
Je to spíš anglicky jako syntax.
A je tu pár kroků zapojených ve skutečnosti písemně a běží
Program v C, protože kromě zdroje Kód takhle, budete potřebovat něco
volal kompilátor.
A Laicky řečeno, to, co nemá kompilátor udělat pro nás?
Jo.
>> STUDENT: Převádí kód že píšete na 0s a 1s.
>> DAVID Malan: Dobrý.
Tak to převede kód, který píšeme 0s a 1s.
Převádí tzv. zdrojový kód kód objektu, latter který vypadá
Trochu něco takového.
A je to váš procesor, mozek vnitřní část počítač, že z důvodu
lidi, kteří vytvořili tyto počítače, vědět, co tyto sekvence
0s a 1s průměru.
>> Možná to znamená, že tisk.
Možná to znamená, že navíc.
Možná to znamená, že odčítání.
Možná to znamená, že zobrazení grafiky.
K dispozici jsou předem definované vzory bitů že se svět rozhodl znamenat
určité věci.
Ale z větší části v tomto kurzu, budeme pracovat na vyšší úrovni, a
budeme brát za samozřejmost, že existují věci, jako kompilátory, které mohou
aby náš zdrojový kód funkce tak, jak jsme v úmyslu.
>> Takže programu jsme napsali první poslední týden a pak začal do přístavu, tak
mluvit, C letos Pondělí, to bylo.
Když zelená vlajka kliknutí pozdravit.
To bylo, samozřejmě, zapsaný Scratch.
A já jsem tvrdil, že ekvivalentní Program v C vypadal trochu
něco takového.
>> Takže to, co jsem myslel, že bych udělal je nejprve, pojďme šprýmaři odděleně, co vypadá na první
pohled sice jako docela tajemný syntax, ale začnete všímat
vzory docela rychle.
Co budeme dělat i dnes, je poskytnout ty s duševní model pro některé
kanonický některé standardní konstrukce v programování.
A pak budeme skutečně dostat své ruce špinavé s některými příklady stejně.
>> Takže pro ty z vás pohodlnější, si uvědomit, že tento týden a pak další
týden může velmi dobře být trochu přezkumu.
Ale zejména při hacker vydání problému set 1 zhasne
Samozřejmě web v pátek, já si myslím, zjistíte, že i když se budete vyplnit
některé mezery v příštím týdnu nebo dvou, Začnete se dostat stále více
napadal a setkání nové a novější věci.
>> Takže pojďme dráždit tento program sebe několik řádků najednou.
Na samém vrcholu, máme to, co je odborně nazývá
direktiva preprocesoru.
To je jen řádek kódu, který říká, zahrnout do obsahu souboru,
takzvané standardní I / N, standardní vstup - nebo, je mi líto, standardní I / O, standardní
vstup / výstup,. h, uvnitř mého vlastního programu.
>> Takže jinými slovy, když jsem to psal Program s jednoduchým textovým editorem, jako
gedit je jednodušší ekvivalent něco jako Microsoft Word, které
instrukce # include stdio.h, je jen chystá říci kompilátoru, uchopit
Obsah tohoto jiného souboru, stdio.h, a vložit je přímo tady.
>> A teď, proč mě to zajímá?
Co tvrdíme, že je uvnitř tohoto souboru tzv. stdio.h, který je uložen
někde na mém pevném disku nebo v této případ, někde v CS50 zařízení?
Někdo ji tam pro mě.
Ale to, co je v něm?
>> Jo, je to prohlášení volána funkce printf.
Takže printf připomíná, že funkce zobrazuje slova a znaky a
čísla na obrazovce v mé nabídky.
Ale já jsem to nenapsal.
CS50 to nenapsal.
Někdo lety napsal, a oni v podstatě nám recept na to
v souboru nazvaném stdio.h.
Takže první řádek jen mi dává přístup na funkce, které někdo jiný
napsal před lety, mezi které jsou printf.
>> Teď, další řádek budu mávat moji duši ruka s minimálně do příštího týdne.
Ale teď vím, že int main (void) je v podstatě ekvivalent této
žluté skládačky, kdy zelená vlajka klikli.
Svět před lety rozhodl, že pokud píšete program
jazyka C s názvem, můžete začít váš program s řadou
která vypadá takhle.
Za pouhých asi za týden, bude to dělat smysl pro to, co je int, co je neplatné.
Ale teď, jen myslet na to, jak této žluté puzzle.
>> Teď další, máme složená závorka následuje další úzké složenou závorku,
abych tak řekl.
A uvidíme to po celou dobu programy v jazyce C, jakož i
JavaScript a PHP.
A to jen zapouzdřit související řádky kódu.
Otevřená složená závorka v podstatě říká, tady je nějaký kód.
A uzavřená složená závorka, která je pod úhlem v opačném směru, jen
znamená, že je to pro odpovídající kód.
>> Takže šťavnaté řádek v této první Program je poslední, printf,
quote-konec citátu, hello world.
A já jsem volal věc mezi cituje, co minule?
Takže je to řetězec.
A řetězec je jen techie termín pro posloupnost
znaky, slovo, fráze.
Dokonce i jediný dopis by mohl být dvakrát citován.
Ale je to posloupnost nula nebo více znaků.
>> Zpětné lomítko-n, i když vypadá trochu divné.
Ale je to prostě něco znamená jednoduchý k počítači.
Co je zpětné lomítko, n?
Nová linka.
Tak to je jen zvláštní sled znaky, které se svět rozhodl
znamená, vložení zalomení řádku tam, protože kompilátor bude skutečně mít
zmatený, obvykle, pokud jste velmi pochopitelně, ale nesprávně, stačí
začít klávesy Enter, aby nové řádky v kódu.
Musíte být trochu víc explicitní zpětným lomítkem-n.
>> A uvidíme tu několik dalších, jako vzory pro speciální znaky.
Například, pokud jste chtěli, aby vaše mysl bloudit na rohový případě,
Předpokládám, že jsem chtěl vytisknout dvojité uvozovky na obrazovce
z jakéhokoli důvodu, že se zdá, že být trochu problematické, ne?
Protože když jsem dal uvozovky v uprostřed "Hello, world", z jakéhokoliv
Důvodem, proč se zdá, že potenciálně problematické?
Láme řetězec.
>> Kompilátor je jen program.
Program jako kompilátor právě děje číst své heslo shora dolů,
zleva doprava.
A když vidí tři uvozovky místo dvou, že to nebude vědět,
pokud máte na mysli, že ta věc vlevo by měl být řetězec nebo věc
právo, nebo celou věc.
Je to nejednoznačné, a tak, jak typické kompilátor by udělat, je jen šílet,
a dá vám nějaké chybové hlášení a aby se vypořádat s tímto problémem.
>> Tak vzhledem k tomu, lomítko, n znamená, že nový linka, co by váš instinkt nyní
začnou být, pokud byste chtěli zahrnout něco neobvyklého, jako double
citovat uvnitř tohoto jinak citovaná string?
Zpětné lomítko-dvojité uvozovky.
A tak budeme vidět druh vzoru také.
>> Pokud chcete udělat něco trochu divné, zjistíte, že
řešení často následuje vzor, a zpětným lomítkem
označuje sekvenci escape.
A znamená to něco speciálního že musíme zastupovat ve
odlišným způsobem.
Pokud jde o tom, jak si představují zpětné lomítko, dobře, budeme
vrátit se na to.
Ale odpověď je také ve skutečnosti trochu zřejmé.
>> Takže pojďme se představit některé další programovací konstrukty
které jste viděli v Scratch.
Pravděpodobně jste již považována za samozřejmost již pokud jste již ponořil do
Problém nastavení 0.
Ale pojďme teď představit syntaxe C pro tyto jinak poměrně intuitivní
nápady, alespoň některé z nich.
>> Takže tato představa o stavu, nebo větev, zatímco dříve jsme
to pomocí kódu, který vypadal takhle vlevo v Scratch -
pokud x je menší než y, pak se to tak říct -
místo toho se v C - dovolte mi, abych zdokonalovat v v nejjednodušším případě -
jsme prostě říkat, pokud otevřete závorka, je něco pravda -
Logický výraz je jít kde jsem řekl podmínku -
zavřít závorka, pak to, co je Uvnitř těchto složených závorek.
>> Takže i zde, složené závorky jsou něco jako Scratch je
U tvaru skládačky.
To, co je uvnitř těchto složených závorek.
V tomto případě, lomítko lomítko.
A všimněte si, to je dopředu lomítko, nikoli zpětné lomítko.
Lomítko, lomítko, pro ty, kteří si naprogramovaný
předtím, prostě znamená -
je to jen komentář.
Komentář není linka kódu, samo o sobě.
Je to řada angličtiny, který, člověk, psali pro sebe, aby
možná připomene, že máte něco udělat, aby vysvětlit sebe, vysvětlovat
někdo jiný, co váš kód dělá.
Je to jen popisný komentář.
>> Teď, samozřejmě, můžeme mít dva-cesta rozcestí, jen tím, že dělá to,
třícestný rozcestí tím to, a pokud budete pokračovat v tomto
vzor, ​​můžete mít čtyři-cesta, Pětisměrná, šest-cesta vidličky v cestě, pokud
budete muset zvládnout, opravdu, že mnoho podmínek.
A pak si všimnout podobnost zde -
if (podmínka) else if (podmínka), a jediná, která to trochu
divné je poslední, který je právě to jinde.
Ale opět, to je stejný, koncepčně, s tím, co jsme udělali
již, přestože syntaxe bude trvat trochu zvykat.
>> Nyní, v tomto příkladu, jsou jiné zvláštní syntaxe.
Vidíme printf opět otevřené závorky, a blízko závorky.
A uvnitř je řetězec v uvozovkách.
Závorky, v souvislosti printf, přejděte vlevo
a právo na to, co?
Co si popíšeme ty, které byly string jako obecně?
>> Takže je to argument.
Kdykoliv budete mít funkce, jako je printf, a pak otevřít závorka a
zavřít závorka a něco uvnitř to, zda je to řetězec nebo
celé číslo, nebo cokoliv jiného, ​​co v mezi tyto závorky se nazývá
argument.
>> A argument, jen ovlivňuje Funkce chování.
V tomto případě, je to docela jasné, jak.
x <y je to, co je schválen v roce, abych tak řekl, jako argument.
A printf bude vytisknout přesně tak.
Protože jistě, osoba lety kteří realizován printf neměl tušení
to, co lidské nástupců bude používat pro printf.
Takže to je důvod, proč argumenty existují, vliv na chování po funkce je
bylo napsáno.
>> Nyní, Boolean výraz.
Viděli jsme to ještě v začátku.
Ukazuje se, že v C můžete i "nebo" dohromady, abych tak řekl.
Dvě svislé čáry znamená, že tento blok kódu, to to bude
provést v případě, že první podmínka je pravdivá nebo druhá podmínka je pravdivá.
A i když by si to nemohl udělat To Scratch, můžete skutečně
to ve Scratch, a můžete také vyjádřit sám sebe jinak -
v případě, že první a druhá podmínka podmínka pravdivá, pak to, co je
uvnitř složených závorek.
>> A stejně jako stranou, důvodem je to dvojitý ampersand a dvojité
svislá čára, uvidíme časem že jeden svislý pruh a
jediný ampersand vlastně mají různé což znamená v C. Takže teď,
že zdvojení symbolů je úmyslné.
>> Takže pojďme představit, stručně, ten druhý trochu syntaxe.
To není úplně přenést do Scratch, ale tvrdím, že mohu
realizovat představu, pokud jiný, jestliže jinde, pokud jinde, pokud else použití
něco jako příkaz switch.
A jediný důvod, proč je to opravdu existuje je jen vám, programátor,
trochu jiné řešení některých problém, a to i přesto, že logicky
vám nedává žádné nové schopnosti.
>> Tím mám na mysli tohle.
Když říkáte, že přepínač, a pak prostor, a pak pár závorek, vnitřní
který jde výraz -
a to by mohlo být trochu non-zřejmé na první, ale to není důvod,
technicky, protože spínač není funkce.
Takže teď, jen předpokládat, že jsme pomocí Kulaté závorky v různých místech
z různých důvodů.
>> Takže zapněte výraz znamená, že mohu dát proměnnou uvnitř těch
závorky, kde se říká, že výraz.
A pak, pokud tato proměnná -
Předpokládám, že se to jmenuje x, a je to jen číslo -
Pak mohu vyjmenovat v mém snímku tady něco takového.
Je-li x proměnná je můj a já Chcete něco udělat, pokud x
se rovná 1, to můžu udělat.
>> Kdybych místo toho chcete udělat něco je-li x 2, to můžu udělat.
Jinak, pokud chci dělat něco jiného úplně, můžu mít výchozí případ
tom případě mám tu druhou věc.
Takže v tomto smyslu, je to ekvivalent pokud se x rovná se rovná 1, jinak pokud jiný,
Zmiňuji se o tom, ale teď jen proto, uvidíme to znovu.
Ale teď, jen vím, že to existuje.
>> Dobrá.
Tak to poslední pár je trochu složité na první pohled, ale dělají
něco poměrně jednoduchá.
Cyklus for v C je kus kódu, který prostě něco dělá znovu a
znovu a znovu.
A jen nepříjemné na tom je, to je, že je to trochu záhadný
se vyjadřovat v této cyklické vzor, ​​ale svět jako standard
následujícím způsobem.
>> Při použití pro smyčce, máte dvojice závorek znovu.
A všimněte si dva středníky tam.
Tyto dva středníky oddělené tři různé výrazy uvnitř
závorky.
Jedním z nich je tzv. inicializace.
Jedním z nich je tzv. stav.
A jeden je tzv. aktualizace.
>> Podíval se na abstraktně, je to kompletně non-zřejmé, tak se pojďme podívat
na konkrétním příkladu.
V Scratch jsme měli opakování bloku.
A tento blok řekl opakovat 10 krát, řekněme "Hello, world". Dovolte mi, abych nárok na
teď, a vrátíme se k tomu, a i to se blíže seznámit se
budete zanedlouho ekvivalent C Kód může být řekl, aby byl tento -
pro vyjádření a prostor, pár závorky, středníky v oznámení
tam, které oddělují tři odlišné věci, inicializace
stav, a aktualizace.
>> A hádejte, co První z nich je dělá.
Int i = 0.
V hrubých Laicky řečeno, to, co je že dělá pro nás, asi?
Tak jo.
Je to deklarování proměnné s názvem i, a to je dávat to, jakou hodnotu?
0.
Takže to vytváří proměnnou s názvem i, skladování hodnotu 0 v něm.
To je tzv. inicializace.
>> Dobře, teď jsem tvrdil před že střední věc, i
<10, je stav.
Takže to, co dělá?
No, a co dělá, když smyčka pro Program se pro smyčky je spuštěn, je
pokaždé, když počítač běží přes Tato smyčka, shora dolů, shora
dno, stejně jako vy dělal, když počítání a sami sedět,
znovu a znovu a znovu, Počítač se děje
zkontrolovat tuto podmínku.
A když jsem je menší než 10, to bude dělat to znovu.
Je-li i je menší než 10, to bude dělat to znovu.
Kdybych je menší než deset, to bude dělat to znovu.
Takže to vypadá, že navrhne, že doufám, že se mění.
Jinak bychom museli nekonečnou smyčku.
A skutečně, i se mění, protože Poslední věc, kterou za středníkem se
je poněkud záhadné syntax i + +.
Ale ti z vás, kteří udělali to předtím, že prostě znamená,
prostě to, co?
>> STUDENTI: [Přechodová Hlasy].
>> DAVID Malan: Přidat 1 až I.
Přírůstek i..
Takže jsme viděli Scratch puzzle kus pro to, že ve skutečnosti.
Nevypadalo to jako i + +, ale to jen znamená, jednoduše, zvýšit
cení i o 1 pokaždé, když to uděláte.
Takže doslova, můžete začít tím, inicializace i na 0.
Potom zkontrolovat stav.
0 je menší než 10?
Ano.
Jdeme přes smyčku.
>> Další věc, kterou jsem se tvrdí, že počítač je dělat, je, že to bude
zvýšíte i.
Tak jsem je teď jedno.
Kontroluje stav.
Je o 1 méně než 10?
Samozřejmě.
Tak se to znovu.
Pak se zvýší i + + na 2.
Je 2 méně než 10?
Ano.
A znovu a znovu a znovu.
A nakonec, protože plus-plussing, dostaneme se i rovná 10.
Je 10 méně než 10?
No, samozřejmě že ne.
A to je bod, ve kterém pro smyčku zastaví.
A pokud máte více kódu na obrazovce dole, počítač
výtěžek spustit tento kód místo.
>> Takže znovu, i když to bude vypadat a cítit trochu divně
První, určitě pro ty z vás, kteří Nikdy naprogramováno, se
doslova snižuje koncepčně na to, co je jinak velmi
jednoduché puzzle kus Scratch.
>> V pořádku, slíbil jsem, že bych být i jiné analogy ve Scratch.
Tam je to taky.
A viděli jsme to krátce minule.
Ale pamatujte věčně zablokovat v Scratch?
Je to prostě něco dělá navždy?
Já tvrdil, že byste mohli realizovat to tímto způsobem.
A můžete skutečně realizovat tento na spoustu různých způsobů.
>> Ale zatímco smyčka je jen jiný způsob, jak v C, jak vyjádřit sám sebe.
Na konci dne, můžete to udělat cokoliv s smyčky while, který
nemůže se na smyčce.
Takže jsou na konci den funkčně stejné.
Ale to vám umožní vyjádřit sám sebe trochu jinak
následujícím způsobem.
>> S while, je to, co je v závorky, které je znovu zkontrolována a
znovu a znovu.
A jakmile má výraz nepravdivý, pak smyčka přestává vykonávat,
a počítač pokračuje provozovat kterýkoliv jiný kód,
mít ve svém souboru.
>> Ale co je zajímavé je zde že jsem doslova napsal pravda.
A pravda je typ Boolean hodnotu, hodnotu true nebo false.
Mohli pravda někdy stane false pokud jsem doslova
pevně ji do svého programu?
Tak ne.
Je to trochu divné, že jsem to udělal.
Ale pravda je pravda.
Neexistuje žádný plus-plussing.
Nemá smysl proměnných v zde.
Takže, protože jsem pevně, zatímco pravda, to smyčka je vždy bude hodnotit
znovu a znovu a znovu.
>> Takže kolikrát je hello world do tisku na obrazovce?
Forever.
Nekonečný počet krát, dokud se vybití baterie nebo jiné externí
událost stane.
Takže to asi není nejlepší program psát, protože v případě, že uživatel
nikdy nemůže skončit svůj program, je to asi není to, co jste zamýšleli.
>> Ale někdy, by měly být programy mají nekonečnou smyčku.
Například, pokud váš počítač má hodiny na to, že by bylo jistě
hezké, kdyby hodiny to průběžně aktualizovat sama o sobě navždy, i když jednou
Druhá nebo jednou za minutu nebo něco takového.
Takže i nekonečné smyčky mají své místo.
>> Dobrá.
Konečně, tohle.
A tohle je trochu jiný, funkčně a vrátíme se zpět do
to pravděpodobně v Pset 1.
Ale je tu jiný typ smyčky volal do while.
A jediný rozdíl mezi dělat, zatímco smyčka a, řekněme, while,
je to, že podmínka je kontrolována není před spuštěním kódu, ale po
spuštění kódu.
Takže v horní části na dobu smyčky, zatímco dělat, když
kontroly, které v dolní části.
>> A to jen znamená, že cyklus while obvykle spustit vícekrát
nebo méně krát než smyčky while?
Potenciálně vícekrát, protože to while je jasně říká to,
teprve po kterém místě byste zkontrolovat v případě, že stav uvnitř
závorky, je pravda.
>> Tak uvidíme to ještě jednou pravděpodobně v Pset 1.
Pokud jste někdy chtěli něco udělat alespoň jednou a pak možná ještě víc
krát, to je dobrá postavit použít.
Ale zatímco smyčka, naopak, bude zkontrolovat její stav jako první.
A to je pro smyčky v C, se zatímco, když, a smyčky.
A opět, oni map docela pěkně zpátky na začátku, kromě toho, kdo nemá
zcela stejný analogové Scratch.
>> No a co teď, proměnné?
Tak to je, jak jsem deklaroval proměnnou syntakticky druhý den.
Měl jsem int, což jsem tvrdil, je celé číslo.
Pak jsem proměnnou s názvem pult, a pak středník.
Takže co je to řádek kódu děláš?
To je prostě, když prohlásil variabilní -
to je, ptá počítač, dej mi paměť, dej mi některé kousky - v
které mohu uložit co?
Int.
A středník prostě znamená, konec řádku kódu.
>> Nyní, druhý řádek je pravděpodobně docela odhalitelný.
Co je counter = 0; děláš?
Je přiřazení 0 proti.
A tak to je další věc, je to trochu nepříjemné
proti, řekněme, algebry.
Zatímco v algebře, rovnítko znamená, rovná, tady v C, rovná
znaménko znamená, že úkol.
Takže to znamená, že dát to, co je na pravé straně na to, co je na levé straně.
A uvidíme další symbol, se rovná rovná, když chceme, aby skutečně otestovat
kvality, poněkud nepříjemně.
>> Ale je to trochu neefektivní.
Je to trochu nepříjemné, že mám deklarovat proměnnou a
pak to hodnotu.
Takže vlastně C nám umožňuje zjednodušit tím, a prostě to udělat všechno najednou.
Můžete deklarovat proměnné na levé straně.
Stále můžete udělat úkol na právo tím, že rovnítko v
prostřední.
Takže na konci dne, tyto dva jsou ekvivalentní, ale tahle, upřímně řečeno,
je pravděpodobně lepší zvyk se dostat do jen proto, že je to trochu méně
kód, je to trochu čitelnější, a to jen zpřísní
váš kód, abych tak řekl.
>> Jakékoliv dotazy dosud na okruhu, na různých faktorech, na podmínkách, na
Booleovské operace, buď technicky nebo koncepčně?
Dobrá.
Takže teď to příště dostane trochu zajímavější.
A to je příklad jsem dal do poslední čas, který právě mapuje Scratch příklad
se k C.
>> Takže funkce.
Laicky řečeno, co je to funkce?
Musím být odvážnější se Vaší odpovědi.
Co je to funkce?
>> STUDENT: Má něco.
>> DAVID Malan: Co je to?
>> STUDENT: Má něco.
>> DAVID Malan: Má něco.
OK.
Začneme tam.
Takže funkce dělá něco.
Takže je to kus kódu, který je zásadě realizovány jinde, že
opravdu dělá něco.
A teď, co je na tom zajímavé funkce je, že to může trvat vstup,
a to může produkovat výstup.
A pojďme vlastně vzít Podívejte se na tohle.
>> Ten muž za oponou bylo úmyslné před chvílí.
Zde máme tabulku.
Ale předpokládám, že to ve skutečnosti představuje velkou krabici.
Tak to je tzv. černá skříňka.
A vůbec, v designu, v počítači věda, černé skříňky jen na
kousky funkčnosti, že někdo zavedla, a ty ne
nutně vědět, nebo jedno, jak je to realizován pod kapotou.
Jenom pozor, aby to černá skříňka, které budeme nyní začít volat
funkce, dělá něco.
>> Tak například, pokud je to černá skříňka na etapa zde představuje printf,
funkce, vím z předchozích příkladech printf, že se jeden nebo více
argumenty, a první z nich argumenty by měly být řetězec, jako je
"Hello, world". No, když jsem osoba psaní programu, a já chci
použít printf, já, například, může vzít kus prázdného papíru a tady
černý fix a na něj psát -
I chybně "svět" -
H-E-L-L-O.
>> Tak jsem si vezmu černou značku a budu psát, jak velký a čitelně, jak jen mohu na
tento kus papíru, "ahoj, svět," A teď prohlašují, že toto je můj argument.
Toto je řetězec reprezentován kus bílého papíru.
A teď můj vstup do funkce printf bude to.
Takže jsem volání printf, procházející tento argument jako vstup do něj.
>> A teď, já nevím, jak ten, kdo napsal printf to udělal před lety, ale
Vím z jeho dokumentace, která jeho účel v životě je vytisknout to, co jsem
poskytnout k tomu jako vstup.
A tak, i když tato implementace je bez vědomí mě
Pod kapotou se Vidím, oh, se to dělá.
Je vytištěna něco na obrazovce.
A nyní ovládají programu, je-li bylo více řádků kódu, by
se nyní vrátila ke mně.
A tak to, že Colton -
požehnat jeho srdce, se skrývá tady pod stůl před vámi všemi -
je záměrné v tom, že nevím, a je mi jedno, jak printf je
prováděna.
Vím jen, že opět z jeho dokumentace, co dělá a jak se
jsem měl použít.
>> Nyní si připomeňme, že printf mohl dostat trochu složitější.
Opět jsme si povídali o ekvivalent Say bloku Scratch je.
Ale také jsem to udělal minule.
Chtěl jsem, aby můj program, ahoj trochu více dynamický a ne jen těžké
Kód něco jako "světa" rozhodně není těžké něco kód
libovolná stejně jako D-A-V-I-D do programu.
Chtěl jsem se zeptat uživatele o jeho nebo její jméno, a pak něco dělat
že řetězec, který poskytují.
>> Takže tam je něco trochu jiného zde. printf, před chvílí,
se skutečně něco udělat, ale je to nevrátil nic pro mě.
Je to tak?
Colton neměl ruce mi nic zpět, ani kus papíru.
Tam byl jen vedlejší efekt.
Má poskytovat "Hello, world", jak argument Colton následek
vedlejší účinek slova, některá slova, se objeví na obrazovce.
>> GetString, i když je trochu různé. GetString je také
funkce, ale vrací nějakou hodnotu.
To není jen estetický vedlejší efekt.
Je to vlastně mi dává, osoba volání nebo použití funkce,
něco zpátky.
Takže v tomto případě, je GetString dorovnal s otevřeným GetString
závorka, v blízkosti závorka.
Má GetString, proto se nějaké argumenty nebo vstup?
No, zdá se, není.
Jeho cílem v životě je jen proto, aby řetězec.
To nepotřebuje více detailů než to.
Tak mě nech jít dál a předstírat, že znovu, black box není printf,
ale GetString, a dovolte mi, abych na osobu psaní tohoto programu, zavolejte nebo použijte
GetString jen o psaní G-E-T-S-T-R-I-N-G, open paren, zavřít
závorka, GetString.
>> Teď nemám ponětí, jak se CS50 zaměstnanci realizován GetString, ale vím, že
když jsem čekat dost dlouho, bude to dělat svou věc pod kapotou, možná pomocí
některé proměnné, možná pomocí některé podmínky, možná pomocí některých smyček,
Možná používání některých funkcí, Možná použití -
Jen se snažím stánku - možná pomocí některé další programovací funkce.
Ale když jsem čekat dost dlouho - ve skutečnosti, v počítači, se tak stane
super rychlý -
když jsem čekat dost dlouho, tato funkce GetString dostane řetězec
od uživatele, který je pravděpodobně píšete že se na jejich klávesnici a
pak, když GetString jste se provádí stále tyto znaky od uživatele
a jejich uložení do řetězce, který funkce, GetString, bude mít
připraven pro mě nějaký výstup, který mne bude získat prostřednictvím
operátor přiřazení.
>> A když odejdu, opravdu, na výstupu zde Obosi má velkoryse
účastnil, aniž by to věděl v předem, písemně své jméno na to
proměnná, která zastupuje řetězec.
Nyní je operátor přiřazení znamená, že i i když to může cítit trochu
redundantní, já vlastně potřebuju aby svou vlastní kopii tohoto.
Vzhledem k tomu, na levé straně strana - POZOR! -
Všimněte si, že jsem v podstatě mají řetězec jméno na levé straně.
Tak jsem také bude, aby se moje vlastní kopie tohoto.
A to je trochu bílé lži, protože uvidíme za týden, nebo dvě,
čas, řetězce nejsou ve skutečnosti jaké se zdají být.
>> Ale teď, tady je návratová hodnota.
Tady je můj vlastní kopii, kterou po pomocí operátoru přiřazení.
A teď, co chci dělat dál?
Máme nyní druhý dvou řádků kódu.
Tak jsem teď chcete zavolat printf.
Pojďme předstírat, že se černá box je zase zpátky k bytí
printf a ne GetString.
>> Printf tentokrát bude se, kolik argumenty?
Tak se podívejte, je to jako dva.
Existují dva čárky tam, ale jeden z těch čárek, je to
uvnitř uvozovek.
Takže první argument je doslova bude to.
H-E-L-L-O, čárka, procenta s, zpětné lomítko-n.
A teď jsem poskytuje ne jeden argument, ale dva argumenty printf.
>> A co printf dělat se Tyto dva vstupy po předám jim
jako argumenty?
Mělo by to trvat sekundu je, které jsem volal jméno, takže
Druhý kus papíru jsem napsal z Před chvílí se nazývá jménem.
Bude to konektor hodnoty uvnitř této proměnné do vyhrazeného místa
% S, takže znovu, jen na chvíli je čas, uvidíme vedlejší účinek
povolav printf, přičemž nyní se nevidí "Hello, world", ale "Dobrý den,
Obosi. "
>> Tak velký potlesk pro oba naši dobrovolníci, pouze jeden z nich věděl,
by to být pravda.
Dobrá.
Tak, možná, že je jednoduché, jistě, pokud jste již obeznámeni
s takovými, doufejme, že jste se nikdy zapomenout, že zejména vizuální, jak
funkce pracují.
>> Takže tam je víc než jen GetString.
Uvnitř CS50 knihovny, je tu Celý svazek funkcí, z nichž
jsou aktivovány jen aby bylo jasné, že jsme napsali tyto funkce.
Typicky, v C, téměř každý druhý funkce budete používat, je malá.
Ale my jsme záměrně používat velká písmena jen aby bylo jasné, že se jedná
jsou školicí kola druhu, že budeme používat jen na pár týdnů, které
zjednodušit proces získávání vstup od uživatele.
>> Knihovna CS50 nic nedělá že vy sami nemohli dělat ani
jen pomocí kódu z C oldschool učebnice.
Ale opět použijeme je jako trénink kola druhů jen za pár
týdnů, takže můžeme zbavit složitosti, že budete brzy pochopit,
sám dělat něco tak poměrně jednoduché, jak dostat
vstup od uživatele.
>> Takže víte, že budete mít přístup na GetChar, GetDouble -
zdvojnásobí.
What's - a pak GetFloat.
Co je to float?
Začněme tam.
>> STUDENT: [neslyšitelné].
>> DAVID Malan: Jo.
Je to číslo s desetinnou čárkou.
Tak vzhledem k tomu, int je celé číslo, které je jen číslo s 0 až 9,
někteří počet opakování této smlouvy, plovák je něco,
s desetinnou čárkou.
A dvojité, mezitím, je také číslo s desetinnou čárkou, ale
čísla za desetinnou čárkou bod, potenciálně.
>> Tak jsme se vrátím k tomu zanedlouho.
Ale obvykle, každý z těchto typů údaje, každý z těchto typů proměnných
že knihovna jako je ta naše může vrátit do můžete použít různý počet bitů na
ukládání informací.
Typicky, Char, což prostě znamená, jeden znak, používá 8 bitů.
A to je vlastně v souladu s našimi byte dobrovolníků, kteří minulý týden
přišel a představuje jednu ASCII znak najednou.
Takže Char je 8 bitů.
>> Plovák se stane, že je 32 bitů, typicky.
A dvojité, jak asi tušíte, je ve skutečnosti 64 bitů, což je prostě víc,
což znamená, že můžete mít větší čísla nebo větší přesností.
Ale na druhou stranu, o tom až jindy.
GetLongLong, zatím, ale hloupě jmenoval, je opravdu jen
Celé číslo, které je dvakrát větší, dvakrát dlouho, případně, jako běžné
celé číslo, 64 bitů místo 32.
A GetString jsme používali.
>> Ale jak se ukázalo, v CS50 knihovně který se provádí, jak uvidíme, v
formě dvou souborů, z nichž se nazývá cs50.h má další dva
datové typy v něm.
Booleovské neexistují C. Zahřívání můžete simulovat jen pomocí 0s a 1s
po celou dobu své programy.
Ale my jsme v knihovně CS50 vytvořili symboly "true" a "false"
představuje 1 a 0, takže nemusíte mají na pevný kódu něco
doslova jako 1 a 0.
Ale uvidíme ty znovu.
>> String, taky neexistuje.
A to je důvod, proč jsem se zmínil, že je to trochu bílé lži pro tuto chvíli.
Ale budeme Sloupněte tohoto vrstva zanedlouho.
Ale teď je řetězec posloupnost znaků.
>> Mezitím, v C, je ve skutečnosti mají různé datové typy.
Všimněte si, to jsou malá.
Takže funkce, které viděl před chvílí jsou funkce Napsal CS50 že
vrátí vám hodnotu, která spadá do jedné z těchto kategorií.
>> A pár listů podvádět jen zasadit semeno zde. printf není jen
se% s jako zástupné symboly.
Trvá% d pro desítkové celá čísla, nebo% i bude fungovat stejně.
% F je plovoucí bodové hodnoty. % C je pro char, pokud chcete jen připojit jeden
znak do řetězce předformátovaného jako jsme dělali, můžete použít% c.
>> A pak, poněkud nechutně,% je LLD na dlouhou desítkové celé číslo,
což jen znamená, že pokud budete potřebovat opravdu velké číslo, a používáte něco
tzv. long long, což přijdeme zpět na Pset, můžete použít% odboru LLD
printf říct, připojte opravdu velký integer zde jako své druhé nebo
nějaký jiný důvod.
>> A konečně, jsem slíbil, že je tu několik dalších útěk
sekvence, které printf podporuje.
Viděli jsme zpětné lomítko-n.
Zpětné lomítko-r můžete vidět.
Je to něco jako old-school věc.
Pokud jste někdy používali skutečný psací stroj roky Před a vytáhl na kliky
které nejen otáčet kolečka přesunout lineup, ale také se stěhoval
Celá věc celou cestu zpátky k doleva, dobře, lomítko-r jen
v podstatě se pohybuje kurzor zpět na začátku řádku
bez pohybu dolů.
Ale na druhou stranu, o tom více, možná v budoucnu.
>> Zpětné lomítko uvozovky, zpětné lomítko, uvozovky, zpětné lomítko zpětné lomítko je
řešení malinké hádanky Jsem zmiňoval dříve.
A zpětné lomítko-0 je vlastně docela zajímavé.
Ale vrátíme se že zanedlouho.
>> Tak mě nech jít do teď, CS50 spotřebič, a pojďme skutečně
rychlé zahřátí s jedním z příkladů jsme se již, a pak přejít na
něco trochu složitější.
Takže když otevřu můj program volal gedit -
toto je můj grafický editor.
A můžu to udělat -
dovol mi zavřít to okno tam -
prostřednictvím této ikony se zde, gedit, v levém dolním rohu
rohu vedle menu.
>> Chystám se jít dopředu a rozvíjet, a uložit tento příklad do, řekněme, Johne
Harvard je složka.
John Harvard je složka je jen jeho domov adresář, kde všechny jeho soubory žije
ve výchozím nastavení.
A já jdu uložit jako soubor s názvem ahoj-0.c.
A já jsem zvolil tento název jen tak, že seřadí se ukázkový kód v
Samozřejmě WWW stránky a YouTube videa online.
>> Takže teď jdu začít napsat svůj první program.
Dovolte mi přiblížit čitelnosti.
A já jdu dál a říkají, int Hlavní void, což je stejně jako, že
žlutá puzzle kus, který spustí program.
Jsem se dostal do zvyku přes let jsem otevřel složená závorka, pak
i zavření a pak jít zpět do tam, kde chci, aby můj kód jen
protože mi to pomáhá udržet vše vyvážený, zejména mé
program dostane dlouho.
>> A teď, tady, já jdu do toho a řekl, printf, citovat unquote,
hello world, lomítko-n, v blízkosti cituji, zavřít závorka, středník.
Takže jsem jen opakovat vše, co jsme bral jako samozřejmost tak daleko.
Teď jdu oddálit.
>> A to okno terminálu tady, co smím dělat v této černé
a bílá okna?
Co mohu použít pro?
Tak tohle je místo, kde jsem spouštět příkazy a kde bych mohl sestavit věci.
A budu držet to jednoduchý.
Budu používat program tzv. značka, která není
technicky kompilátor.
Kompilátor se jmenuje zvonění, ale vrátíme se k tomu v
týden nebo dva čas.
>> Pro tuto chvíli jsem jen tak psát, aby ahoj-0, ale ti z vás, kteří byli
srovnání ve vašich myslích, co jsem právě napsal, co jsem měl napsáno mohou
už víte, že jsem to udělal něco špatně.
Nyní, tam je zřejmé, že některé chyby.
Než jsem se ani podívat na to, co oni jsou, každý myšlenky na to, co jsem udělal špatně?
>> STUDENTI: [Přechodová Hlasy].
>> DAVID Malan: Jo.
Chybí mi v knihovně je hlavičkový soubor.
Každý z těchto souborů. H se nazývají záhlaví soubory, a tím, že společně
patří k věcem tzv. knihovny.
Knihovny jsou jen kusy kódu že ostatní lidé psali.
Takže standard [? i?] Knihovna je kolekce souborů, které obsahují kód
že ostatní lidé psali.
>> Takže mi chybí, že.
Tak proč jsem stále jste chybu?
No, dovolte mi, abych se posunout zpět do moje okno terminálu zde.
A bohužel, v C, stejně jako v mnoha programovací jazyky, zejména
pokud je to pro vás nové, chyba zprávy jsou přesné, ale jsou také
velmi tajemný.
A chyba tady, v červené barvě, je "Implicitně deklarovat funkce knihovny
printf s typem, "a pak to svitky na další řádek, "int const char *,
... "Jen se opravdu ohromující rychle.
>> Ale to, co byste měli začít dělat, pokud opět nová k tomu všemu, je jen
začít hledat klíčová slova.
Jasně, mohl bych nerozuměl poloviny ze slov, jsem viděl jen zatím.
Budete však za týden času.
Ale vidím, že printf.
A to by měla začít zanedlouho se osvěžit paměť v pořádku, printf.
Něco je špatně s printf.
Už jsem hláskovat špatně?
Ne, to nevypadá jako - oh.
Nemohu používat, pokud učím kompilátor, že to existuje.
A tak opět chodit se svými instinkty, i když nemáte skutečně pochopit
skutečné chybové zprávy.
>> A skutečně, řešení je zde jen je to v horní části souboru
jako to, že resaving můj soubor s Ovládání-S nebo menu Soubor.
A když jsem se teď vrátit se sem, Chystám se vyčistit to.
Control-L je jen příjemný způsob, vymazat obrazovku.
A pak budu psát "aby ahoj 0 "Enter a teď jsem ještě vidět
kryptických posloupnost symbolů, ale vrátíme k tomu.
To je to, co udělat, je dělat za vás.
Je to automatizací procesu přijímání docela nepříjemné příkaz zahrnující
Zvonění, vlastní kompilátor.
Ale je fakt, že jsem žádné chyby znamená, že tato věc by mělo fungovat.
>> Takže jsem teď dělat - dovolte mi přiblížit znovu -
./hello-0 Enter, a opravdu, vidím "Hello, world". Takže pojďme se zlepšit
to někdy tak trochu jen k replikaci Kroky, které jsme zamýšleli.
Chystám se přejmenovat to s Uložit jako hello1.c.
A teď budu deklarovat proměnnou volal jméno, takže string name,
a já jdu dát v něm hodnota citátem-unquote
D--V-I-D close-quote středníkem.
A teď jdu nahradit "svět" s tím, co zástupný řetězec?
% S.
>> A teď, jak by mnozí argumenty printf trvat tentokrát?
Tak dva.
Tak jsem se jít mimo uvozovek.
Píšu "jméno" po čárkou.
Ale já jsem udělal něco jinak špatně tentokrát.
Ale předpokládejme, že jsem to neudělal Uvědomujeme si, že ještě.
Nech mě jít sem.
>> A upozornění, taky jsem už trochu nudí psaní ", aby ahoj 0" všichni
čas, "make" a to všechno.
Tak to dopadá, v Linus můžete často narazí na šipku nahoru na vašem
klávesnice a můžete skutečně procházet přes všechny příkazy, které jsem
proveden dříve právě teď.
Takže když to udělám, nahoru, nahoru, je tu, aby ahoj 0.
Nechci to.
Jen chci změnit na ahoj 1 tentokrát Enter.
Nakonec, bude to ušetří nějaký čas.
>> Dobrá.
Bohužel, je to je chyba.
Takže dovolte mi posunout nahoru.
Vypadá to jako opravdu porážel tento program.
Myslím, že můj bože, je to dva řádky kódu, a jeho 10 řádků chyb.
Ale podívejte se na horním první.
Použití nehlášené identifikátoru řetězce.
Už jsem na mysli standardní i n?
Ne, já ne.
Myslel jsem řetězec.
>> Ale kde je řetězcové proměnné Typ prohlásil, dd říkáme?
Takže je to v CS50 knihovny.
Takže to nebude stačit, a to jako první pár týdnů, stačí použít
co C nám dává.
Jsem také jít sem, a já mohl dát nad nebo pod, ale budu
jen držet je abecední udržet věci spořádaně.
Chystám se zahrnují cs50.h, který je předinstalován na
Jste na CS50 spotřebiče.
A je to open source, takže i lidé na internetu lze ho použít na jejich
vlastní počítače.
Ale to přijde s CS50 spotřebiče.
>> Takže teď mi dovolte vrátit se a znovu zkompilujte to s make ahoj 1.
Sakra.
Ještě další chyba.
Dovolte mi, přejděte do první, ačkoli.
To je trochu složitější.
Multi-znak znaková konstanta.
To není mi pomáhá.
Ale oznámení, zvonění je alespoň trochu trochu slušný, čímž se trochu
zelená stříška symbol, je to říká Zde je místo, kde jsem to zvoral.
Proč se ukazuje, že se jen málo zelená šipka, do jednoduchých uvozovek další
na mé jméno?
>> Takže to je jedna z věcí, které jen zvyknout, zvláště pokud jste byli
programování v Pythonu, nebo JavaScript, nebo jiných jazycích, pokud to detail
nezáleží.
V C, záleží na tom.
Pokud deklarovat řetězec, který je sekvence 0 nebo více znaků,
ve skutečnosti je nutné použít uvozovky.
Takže jsem vlastně potřebujete změnit toto zpět otevřete nabídku, zavřete nabídku, s
dvojité uvozovky.
Jediné citace mají své místo, ale pouze v případě, že používáte jednotlivce
znaků, ale o tom až jindy.
Pro tuto chvíli, uvozovky jsou nezbytné.
>> Takže teď, nech mě jít zpátky do mého terminálu okna, aby ahoj 1.
A kdo věří?
Je tento program nyní bude sestavit správně?
OK.
Takže tři z nás si myslí tohle.
Dobrá.
Enter.
A to vlastně dělal.
Takže tam žádné chyby tentokrát, a to i i když tento program je dostal trochu
složitější.
Kdybych teď dělat tečka lomítko Dobrý den, 1, Enter, to bude říkat "Ahoj, Davide."
>> Ale pojďme udělat třetí iteraci z toho, kde
Program je opravdu dynamický.
Nech mě jít dál a změnit soubor jméno, jen na soulad s
soubory, které budete mít k dispozici Vám potom online.
Enter.
A teď jdu na, a ne uložit "David" pevný kódované zde.
Co jsem mohl dělat velmi jednoduše tento program zdokonalit?
>> Mohl bych zavolat GetString.
To by mohlo být trochu non-zřejmé, co je se stane, tak jdu
skutečně přidat další řádek, printf, a říkat jméno, tlustého střeva, v blízkosti nabídku, stačí
dát uživateli výzva na obrazovce.
A teď jdu sem, a já jsem bude používat svou klávesovou zkratku.
Chystám se jít nahoru, nahoru, a změnit ahoj ahoj 1 až 2, Enter.
A naštěstí, dělám pokroky.
>> A teď jdu nahoru na dot slash Dobrý den,
změnit na 2, Enter.
A teď můj program -
Budu přiblížit - je stále trochu hezčí.
Název bude, řekněme, že Rob Tentokrát, Enter, ahoj, Robe.
Můžeme to udělat znovu.
Jméno Lauren, Enter.
Jméno, Joseph, Enter.
Jméno, zkusme se těžké, Enter.
Eh.
Ve skutečnosti to není chyba.
Takže je to trochu ošklivé.
Takže možná bychom mohli vyřešit v budoucnu, teď ne.
>> Ale jak byste instinktivně jít o řešení
že konkrétní výzva?
To jen vypadá hloupě.
Jak se vyhnout věci budete vypadat hloupě?
Tak bychom mohli udělat, OK, jsem slyšel pár věcí, stav a smyčky.
Mohli bychom použít jednu, což je podmínka, pro kontrolu co je délka řetězce
Uživatel nám dal?
A jestli je to 0, je to jen citovat unquote, oni prostě zmáčknout Enter, pak
možná bych měl křičet na ně a vyzve je znovu.
Ale jak výzvu znovu?
No, slyšel jsem také smyčku, a já jsem mohl udělat to znovu a znovu a znovu
upozornění uživatele na stejnou věc.
>> Dobře, pojďme udělat jednu další příklad pomocí různých
funkce v knihovně CS50.
Dovolte mi na závěr tohoto souboru.
Dovolte mi, abych vytvořit novou.
A já říkám adder.c, jen proto, že je to snadné udělat jednoduchou aritmetiku,
i když to bude zcela neohromující s tím, co byste mohli udělat
s jakýmkoliv moderním počítačem.
>> Ale nechte mě jít dopředu a teď -
Jsem se poučil poslední době - ​​včetně cs50.h, patří stdio.h, int
Hlavní void, což teď, budu jen vzít na slepé víře, ale budeme předpokládat,
že pochopí, co to znamená, že zanedlouho.
A já jsem něco říct jako "dej mi int."
>> A teď, jak se dostanu int?
Chci konečně deklarovat proměnnou volal x typu int a
uložit do ní celé číslo od uživatele.
Takže to bylo sousto.
Ale pokud někdo chce navrhnout, jak mohu prohlásit celočíselnou názvem x?
Int x.
>> Takže je to opravdu tak jednoduché.
Dejte mi int.
Nazvěme to x.
Teď jsem použít operátoru přiřazení.
A jak mám uložit od vlevo hodnotu pro uživatele?
Nechci volat GetString, samozřejmě, ale vezmi_int.
Jakékoliv argumenty?
Ne.
Takže je to otevřené závorka, v blízkosti závorka okamžitě, a pak
středník končí linku.
>> Nyní mi dovolte to znovu.
Dej mi ještě int.
Tentokrát udělám int, pojďme říkají y, rovná vezmi_int.
A teď mi dovolte něco super-jednoduchý jako nějaký matematice.
Takže printf, součet% d je zástupný symbol pro int.
A% d, období, zpětné lomítko-n.
>> Dobrá.
Takže to není vlastně matematika.
Ale pokud chci říct, součet tohoto hodnotu a tato hodnota je rovna této
jiná hodnota, kolik argumentů do Celkem bych měl dávat printf,
nakonec?
Takže čtyři, že jo?
Tento řetězec a pak tři hodnoty.
Takže x je první chci být zapojen jako první na% d.
y bude dál.
>> A teď jsem tak trochu chtěl říci z, ale z neexistuje.
Ale to není velký problém.
Vzhledem k tomu, co byste dělali, instinktivně, zejména pokud jste měli
grafickým kalkulátorem, co píšete?
Jak se o X plus Y?
Takže to není skutečný variabilní.
Je to jen součtem dvou ostatní proměnné.
A to je naprosto legitimní.
C jistě chápe jednoduché aritmetický takhle.
>> Středník, zachránit.
Teď mě nech jít sem dolů a Zadejte aby zmije, Enter.
Žádná chyba, tak to je pokrok příliš.
Zadejte zmije.
A další klávesové zkratky, pokud začnete nudit
se všemi příkazy -
pokud začnete zadáním příkazu jako tečka lomítko reklamu, a to je, kde se vaše
nuda kopy, většinou je možné zasáhnout Karta mít počítač dokončit
Zbytek věty pro vás, pokud to není nejednoznačné, co by mělo přijít po reklamě.
>> Tak nech mě jít napřed nyní a klepněte na tlačítko Enter.
Dej mi int, 1, 2, a Naštěstí, je to 3.
Ale jako vždy, programy testování by neměly omezit na
Jen se snažím jednou.
Zkusím rohovou případ, jako negativní 1, dej mi jedno, a že je
kontroly se také.
A já chtít dělat víc důkladného testování, ale jsem si docela
komfortní tam, kde je to na.
>> No, teď pojďme zkusit jiný program že tentokrát používá
trochu jiné syntaxe.
Dovolte mi, abych vytvořit nový soubor.
Zavolám tento conditions0.c na linku s nějakým ukázkový kód on-line.
A nech mě jít dál a dělat zahrnují cs50.h, zahrnují
stdio.h, v hlavním prázdnoty -
OK.
Tam jdeme.
Máme standardní standardní text.
>> A tentokrát budu říkat printf, "Rád bych int, prosím," jen na
aby se výzva trochu přátelštější.
A teď chci, aby se int od uživatele.
Budu říkat n tentokrát, jen protože n zní jako číslo.
vezmi_int, a teď, co dělat Chci s tím dělat?
No, pokud je n - a já budu přiblížit -
jestliže n je větší než 0, chci udělat následující -
printf "Vybral sis kladné číslo." Jinak, budu psát printf "Ty
vybral negativní
číslo. "Dobře.
Takže tento program, i když jsem to udělal rychle, vypadá dobře syntakticky.
Zkusím to.
Zkontrolujte stav 0.
Zdá se, že ke spuštění.
Stav 0, zadejte.
Pojďme dát mu INT 50.
Vybral jsem si kladné číslo.
Zkusme to znovu.
Stav 0.
Negativní 50.
Vybral jsem si záporné číslo.
>> Ale teď mi dovolte, abych vybrat, co budeme držet volání rohovou případu, což je více
Zajímavý případ, že si myslíte, že Může vám nějaké potíže, 0.
Teď jsem si jistý, že je to jedna z ty rohové případy, kdy nula je
ani pozitivní, ani negativní, takže moje programu, i když v syntakticky
opravit - to kompiluje to běží - není logicky správně.
Takže to, co je jednoduché, oprava zde, pokud chci zjistit, jestli chci zvládnout n
rovná 0 samostatně?
>> Takže pokud je n rovno 0, pak chci říct, něco jako printf "Vybral sis 0".
Zkusím to teď.
Nech mě jít zpátky, zrušte moje okno a překompilovat.
Hm.
Jedna chyba generovat.
Ale já si chcete zkontrolovat li n rovno 0.
>> Takže znovu, další blbost zvyknout, znaménko rovná se
operátor přiřazení.
Takže je to vlastně chyba v tom, že technicky, i když kompilátor
mě ochránil sám před sebou, měli bychom technicky kopírování 0 do n, který
není to, co chci.
Chci pro testování rovnosti se rovná rovná.
A tak, že nyní může být moje lepší řešení.
>> Dovolte mi, abych ve skutečnosti jej uložit to jako, řekněme, podmínky1, aby nové a lepší.
Takže teď, když jsem překompilovat to, že by podmínky -
Jejda - aby podmínky1 tečka lomítko podmínky1, Enter, "Rád bych int,
prosím. "Já jdu Začněte psát 50.
Je to stále dobré.
Negativní 50, stále dobrá.
0, a to skutečně zjištěno že jsem si vybral 0.
>> Takže co víc můžu teď s tím?
No, můžeme určitě více složité věci.
Ale co bych chtěl navrhnout, je že jsme se nakonec na tuto poznámku zde.
Pokud se vytáhnout to, uvidíš, snad, Oblíbený kreslený seriál tvůj
dodnes si možná nikdy pochopit.
A to je o kvalitě smíchu měli byste si vtipy CS.
Takže to je asi pravda.
>> Ale více přesvědčivě, jsem myslel, že nám trochu upoutávku na pondělí.
Takže jsme začali používat celá čísla.
Máme jen plováky.
Dokonce jsme jen čtyřhře které opět vám čísla
Po desetinných míst.
>> Ale ukázalo se, že plave na hladině a dvoulůžkové a, opravdu, počítače,
zásadně nemůže vyjádřit některé hodnoty přesně.
Víme z matematické třídy, které můžete mít libovolný počet čísel po
desetinná čárka.
A dokonce můžete dát svislý pruh říci to trvat věčně.
>> Bohužel, nemůžete opravdu si, že v počítači.
A tak rohové případům dochází.
Předpokládejme například, že jste něco dělat finanční.
Děláš matematiku s procentech, a
s dolary a centy.
A ty centů ne nutně sestavu.
No, ukázalo se, že zlomky haléře mohou začít sčítat, pokud
modelován s počítačovým systémem takovým způsobem, že chytrý
mohou lidé využít.
>> A ti z vás, kteří neviděli, tak bych Líbí se vám 30 druhého teaser na
Překrásný film známý jako kancelářské prostory, která bude namalovat obraz
Problém budeme řešit První věc, kterou v pondělí.
Kdyby se nám podařilo zvýšit objem trochu, dám vám 30
sekund kancelářských ploch.
>> [PŘEHRÁVÁNÍ]
>> -Myslím, že jste, že jste nebyli ukazuje a dostanete, aby svou práci.
>> -Vlastně, jsem byl povýšen.
>> -Mohl bych naprogramovat virus, který by rip to místo mimo velký čas.
>> No, jak to funguje?
>> -Pokaždé, když to bankovním převodem kde je zájem počítá, a tam
jsou tisíce denně, počítač končí s těmito zlomky procenta.
>> -Ale já nehodlám dělat nic nezákonného.
>> -Nelegální?
Samir, tohle je Amerika.
>> -Musíme přísahám Bohu.
>> -Pokud nikdo neví o tom ale nám, v pořádku?
Žádné rodinní příslušníci, žádné přítelkyně, nikdo.
>> -Samozřejmě.
>> -Souhlas.
>> -Neboj se, člověče.
Já to nikomu neřeknu ani.
>> [END PŘEHRÁVÁNÍ]
>> DAVID Malan: Tak tohle je tedy CS50, to bylo Kancelářské prostory, a to bude vše
smysl v pondělí.
Uvidíme se.
>> Vypravěč: Na další CS50, Rob přizpůsobí byl pryč
Harvard stravování.