[Přehrávání hudby] JASON Hirschhorn: OK, všichni. Vítejte v sekci. To je CS50, naše velmi První část výborný. Jak jistě všichni víte, příští týden Pravidelné rubriky začne, ale tento týden jsme všichni spolu. Není sám. Mé jméno je Jason. Jsem lektor v informatice. Máme Andi, kdo je hlava TA na CS50. A Scaz, profesor Brian Scassellati, on je profesorem v informatice. Jsme CS50 hlavy na Yale. Vždy se můžete e-mailem us heads@cs50.yale.edu. Budeme na přednáškách. Budeme v úředních hodinách. Jestli je vůbec něco, co můžeme udělat pro vás, něco, co potřebujete, neváhejte oslovit nás. Tak co budeme dělat dnes? Nebo do té doby, co je přichází tento týden? Takže úřední hodiny jsou pondělí, úterý, Středa, a ve čtvrtek, od 8:00 do 11:00. Je tu plán na internetových stránkách. Sekce, stejně jako jsem se zmínil, začínají příští týden. A zjistíte, co tento týden doby se váš oddíl je, co je za den, a kdo je váš TA je. Problém Set 1 je splatná ve čtvrtek ve poledne, v pátek v poledne se pozdním den. Ano, máte devět pozdní dnů. A existuje devět problémové sady. A lze použít pouze jeden pozdě den na problémové sady. Ano, ve skutečnosti, všechny problém Sady jsou splatné v pátek v poledne. To je vše. Vše, co údaje najdete na osnovy. Každý pátek, máme obědy. Rádi bychom, aby se tento velký Samozřejmě cítit trochu menší. Takže jste vítáni k RSVP. Volný oběd s kolegy spolužáci a zaměstnanci. cs50.yale.edu/rsvp. Všechny tyto věci, které Mám na obrazovce, a další, můžete najít cs50.yale.edu nebo cs50.harvard.edu, pokud jdete na Harvard a sledování tohoto on-line. Také na těchto webových stránkách, tam jsou tuny zdrojů pro vás. Každá přednáška má nejen video přednášky, ale také poznamenává. Někdo bude sledovat přednáška a dělat si poznámky za vás. Takže můžete jen platit pozornost během přednášek, nebo můžete použít své poznámky / dotazy bere na vědomí, pro doplnění své vlastní poznámky. Tam jsou skluzavky online. Zdroj code-- vše David jde přes v přednášce, nebo Scaz jde přes přednášky, že Zdrojový kód je k dispozici on-line stejně, jako stejně jako já, zmínil videa. Sekce, podobně, vše bude natočen. Všechny tyto diapozitivů bude k dispozici. Všechny tohoto kodexu bude bude k dispozici pro vás. Tam jsou šortky na webové stránky, kde Zaměstnanci CS50 strávit pět až 10 minut procházejí tématy pro vás. Někteří z těch, které jste již setkal v problémových sadách. Úřední hodiny, jak jsem již zmínil, pondělí přes čtvrtky, 8:00 do 11:00. CS50 Studie je fantastický zdroj. Tam jsou problémy praxe, vzorků skluzavky, známé chyby že studenti chtěli narazit, k podstatě každé téma my se bude týkat v tomto kurzu. A konečně, na tomto snímku alespoň, Reference50 který poskytuje informace Na všechny funkce C byste mohl někdy doufat k použití a mnoho, mnoho dalších. Opět platí, že dot dot dot na ve spodní části obrazovky je ukázat, že tam je i více prostředků na těchto dvou webových stránkách: cs50.yale.edu, cs50.harvard.edu. Takže, co budeme dělat dnes? No, v první jdu dát se podíváte na zdroje. Už se stalo, že jeden. Podívej se na nás. Nyní budeme jít přes datové typy a operátory v C Pak Andi přijde sem a projít knihoven v C, printf (), funkce, se kterou jsou již zná nebo se rychle stane velmi povědomý. A budete také jít přes podmiňovací způsob a smyčky. A nakonec, Scaz půjde přes CS50 ID. Pokud jste se potopil v Již v problémových Set 1, a jak používat Příkazy terminál a užitečné a pak dát nějaké dema a praxe kódování v CS50 ID. Předtím, než jsem se skočit do toho Obsah na této straně, Má někdo nějaké dotazy tak daleko? Skvělý. DOBŘE. Přeřazování. [Přeřazování] To jsem byl já posouvání rychlostních stupňů v manuálním autě. Takže datové typy v C, můžete nejen mít proměnné x a musí to být na řádku 10, celé číslo, možná číslo 1, na lince 20, desetinné číslo 10,5, a pak pár řádků později řetězec, miluji CS50. V jazyce C, proměnné mohou být pouze jedna věc, a jen jedna věc. A tak budete muset dát jim typy. A na tomto fóru, my mít seznam typů. Tam jsou znaky, které stojan pro znaky. Tak to je jedno písmeno A, B, C, D. To může být také místo, nebo že může být také znak nového řádku. K dispozici jsou celá čísla, která jsou právě čísla, celá numbers-- nebo celá čísla rather-- ale žádné desetinná místa. Pro desetinná místa, máme plovoucí desetinnou čárkou. Plovoucí desetinnou čárkou jsou čísla s desetinnými místy. Pak jsou tu touží, které jsou v podstatě delší celá čísla. Všimněte si, že dlouhá je 8 vzhledem k tomu, int je 4. Budu se k tomu v druhém. To proto, že touží lze uložit i více celá čísla než int může ukládat. Double je dlouhá float. A konečně, máme řetězec, což je typ že jste pravděpodobně použity dříve. Pokud zahrnete hashtag # includeCS50.h ve zdrojovém souboru, pak můžete použít typ řetězce. Není to vlastně integrována do C. Existuje několik dalších typů stejně. Ale to jsou hlavní ty s které budete používat a setkat. C as, znovu jsem se zmínil, každý proměnná-- to může být pouze jeden typ a jen jeden druh. To proto, že C je staticky zadaný jazyk, na rozdíl od dynamicky zadávané jazyky kde pokud si vytvoříte proměnnou můžete změnit to, co je uloženo v to, jak jdete ve vašem programu. Tady na pravé ruce side, mám různé velikosti z těchto typů dat v bytech. Takže je znak 1 bajt. To je 8 bitů. A to znamená, že proto, že 8 bitů je tu osm 0 a 1. Viděli jsme ty ukázky v prvním týden s tím, že binární žárovky. S 8 bitů nebo 1 bajt, můžeme představovat čísla od 0 do 255. Správně. Pokud jsou všechny 8 bity 0, to je 0. Pokud je první bit je 1, to je číslo jedním, a tak dále, celou cestu až do 255. A to je důvod, proč pro znaky můžete mají v podstatě až do 255 z nich, ale to je dost na pokrytí všech znaky musíme použít. Pro celá čísla, můžete mít 0 a pak máte 2 k 32 minus 1. Ti, kteří jsou jak mnoho možností Máte na celá čísla. Pro dlouhá, máte 0 na 2 až 64 minus 1. Máte tedy mnoho, mnoho, více možností touží. Řetězce, to je otazník protože to je cliffhanger na později. To jo. Mohl bych říct, všichni to na okraji svého sedadla, jako to, co to je otazník? Je to cliffhanger. Budeme se případně zahrnovat také velikost smyčce a mluvit víc o řetězcích. Vzhledem k tomu, řetězec je vlastně jeden z tréninkových kol dáme na v tomto Samozřejmě na začátku a pak vzlétnout později o, protože řetězce v C jsou vlastně na ukazatele charakteru polí. Ale na druhou stranu, to je cliffhanger na později. Předtím, než jsem se přesunout na jakékoli dotazy, Připomínky, obavy o tomto snímku? DOBŘE. Musím být fantastický Explainer. Také, když jste programování, budete používat tyto operátory. Opravdu jednoduché znaky, které můžete udělat jednoduchý operace, s nimiž budete pravděpodobně již velmi dobře obeznámeni. Například, na pravé straně straně, vidíme přidat. Chcete-li přidat, stačí udělat znaménko plus. A tak můžete mít dvě proměnné x a y. Můžete to udělat x + y v kódu. Možná chcete to-- říkáte mají číslo 7 a 3, Chcete-li uložit, že v proměnné s názvem částku. Můžete to udělat int pro typ prostoru součet, jméno proměnné, = 7 + 3; Co by to obchod v součtu? Každý, kdo? Kdybych měl v součtu = 7 + 3. Co by být uloženy v součtu? Stačí si jen zakřičet to. Diváků: 10. JASON Hirschhorn: 10! To je přesně to pravé. A co v součtu = 7-3, Jen jsem používat tento pomlčka. Co se děje být uložen? Diváků: 4. JASON Hirschhorn: 4. Součet je pravděpodobně nesprávný název pro že variabilní, ale 4 by byly uloženy. Násobit v C, použijte malý Hvězda znak, nemusíte používat x. Chcete-li rozdělit, použijte vpřed Slash není symbol divize. A modulo lze použít znak procent. Takže řekněme, že chci vidět int z = 7% 3, co by být uloženy v Z? Tak, to je v podstatě ptát, co dělá modulo dělat? Ví někdo, co modulo dělá? To jo. y 4. Reproduktor 1: Je to zbytek. JASON Hirschhorn: Jedná se o zbytek při dělení. Takže 7 děleno 3 je 2 zbytek 1. So 1 by byly uloženy. Udělal jsi odčítání, ale to je, jak to funguje. To je to, co operátor modulo dělá. Trvá několik rozdělí ji jiné číslo a vrátí se k vám zbývající část. Takže znovu, 7% 3 vám dává 1, protože 7 děleno 3 je 2 zbytek 1, a vrátí zbytek. Co vraťme se nahoru jeden krok k tomu znak dělení. Kdybych to udělal 7 / děleno 3 dělá někdo vědět, co to by se vrátil? SPEAKER 2: 2. JASON Hirschhorn: Proč 2, a ne 2,333? SPEAKER 2: Myslím, že to řeže off po celé číslo. JASON Hirschhorn: So to je přesně to pravé. V jazyce C, pokud si rozdělení dvě celá čísla 7 děleno 3, dostane odpověď, která v tomto případě 2.3333 navždy a zjistí, že se desetinnou čárku a kotlety všechno pryč za desetinnou čárkou a to jen vrátí vám 2. Takže když jsem udělal 8 děleno 3. Že ve skutečnosti víme, že k návratu 2.666, ale je to všechno pryč na kotlety desítková, zkrátí to všechno, a jen se vrací k vám 2. Takže 6 děleno 3, 7 rozdělena o 3, 8 děleno 3, všichni budeme vracet k vám 2. Ví někdo, nebo máte hádat, jak jsem mohl skutečně dostat plná odpověď, pokud chci, aby desetinné místo? To jo. Pokračuj. SPEAKER 3: Použití plovák? JASON Hirschhorn: Co tím myslíš? SPEAKER 3: Protože jste řekl, že plovák je pro čísla [neslyšitelných] JASON Hirschhorn: Správně. Tak, to je přesně to pravé. 7 je celé číslo. Ale když jsem se chtěl otočit, že do desetinné číslo, Já bych si, že uložení jako 7.0 protože počítač je opravdu stupid-- jsme viděli, že s PB a J example-- to bude jen dělat přesně to, to, co jste to říct. Takže pokud píšete 7, si myslí, že je to celé číslo. Máte-li psát 7.0, i když jsme vím, tyhle věci jsou rovnocenné, zachází, že se jako číslo s plovoucí čárkou. Takže pokud jste 7.0 rozdělena o 3, nebo se může rozdělit o 3,0, to by řekl, OK, teď máme co do činění s plováky. Vrátím se k vám 2.333333 navždy. Ale ne opravdu navždy, protože jak jsme viděli také v přednášce, Tato čísla pohyblivé čárky nejsou zrovna přesné. Takže pokud si chcete tuto desetinné místo, nebo část tohoto desetinné čárky, pak budete muset use-- jeden z nich Musí to být číslo s plovoucí čárkou a počítač má rozumět že se jedná o plovoucí desetinnou čárkou, že jste zabývá, není celé číslo. Jakékoli otázky týkající se této tabulce na pravá strana, tak daleko? Nebo levé straně, vaše doleva, po levé straně. To jo. SPEAKER 4: Správně. Pro stejně jako pravidelný celá čísla, byste write-- byste museli psát plavat? JASON Hirschhorn: Jo tak. No, pokud chcete vytvořit proměnná, která je plovák, je třeba říci, float z rovná něco. SPEAKER 4: OK. JASON Hirschhorn: Ale kdybych chtěl činit 7 děleno 3 a dostat, že desetinné místo, Já bych to float z = 7,0 / 3,0; a že by mi dát plovoucí řádovou čárkou číslo. SPEAKER 4: OK. JASON Hirschhorn: Kdybych to udělal něco jako int z = 7 / o 3, že by mi celé číslo, protože to vše jsou celá čísla. Dává to smysl? SPEAKER 4: Ano. JASON Hirschhorn: OK. Skvělý. Jakékoliv další otázky týkající se této tabulky? Opravdu? Jsem tak nadšený. DOBŘE. Takže některé další věci, které budete používat, častokrát v podmínkách nebo smyček, jsou tyto typy operators-- Tyto typy booleovských výrazů. A jak jsme se dozvěděli, == je to, co použít ke kontrole, zda dvě věci jsou si rovny. Tak tady jsem kontrolu, zda x == y, pojďme opět předpokládá, že x je 7 a y je 3. Takže když jsem napsal 7 == 3, co by to vrátit se ke mně? Je to pravda, nebo lež? Diváků: False. JASON Hirschhorn: OK. Mám pocit, že každý může získat tento jeden. Takže všichni, co by to vrátit? Diváků: False. JASON Hirschhorn: False. Skvělý. 7 není rovno 3. Takže 7 == 3 vrátí false. Vy máte není rovnítko, takže když jsem zkontrolovaných 7! = 3, co by to vrátit? Diváků: To je pravda. JASON Hirschhorn: To je pravda. Výborně. Někdo byl velice důrazná v zadní a ocenit. Pak máte méně než provozovatele, méně než nebo rovno subjektu, větší než operátor, větší než nebo rovno operátora. Takže ještě jedna kontrola příčetnosti. Kdybych měl 7 je větší než nebo rovno 3. Co by to vrátit? Diváků: To je pravda. JASON Hirschhorn: To je pravda. Ano. To zadní místnosti, zadní strana z místnosti, fantastický. Můžete kombinovat tyto výrazy, pokud se vám líbí, a také, s logickým AND, který je && Nebo logický OR, který je || ||. A tak teď si můžete vyzkoušet dva věci, together-- Je to legrační? Proč je to legrační? Takže kdybych chtěl, mohu říci, je 7 větší než 3 a 2 je méně než 4? No, pokud je větší 7 než 3, to je pravda. 2 je méně než 4, to je pravda. Takže celá ta věc vrátí true. Pokud jsem testoval 7 je větší než 3 a-- Já jsem jen výběrem náhodných čísel here-- 4 je menší než 2, no, to je falešná. Tak true a false false make. A můžete jít dál a budete kombinovat jako mnoho podmínek spolu, jak byste chtěli. Má někdo nějaké otázky, Připomínky, obavy, tak daleko? A vidím, že někteří z vás fotografování o mně na obrazovce, který jsem ocenit. Doufejme, že to není snapchat. Doufejme, že je to pro Vaše poznámky. Ale všichni z nich jdou k dispozici on-line. Takže se nemusíte vyfotit to. Jak už jsem zmínil, všechno bude k dispozici on-line pro vás. DOBŘE. Chystám se dostat v zákulisí, tak se nikomu chci říct nic Než se to stane? Otázky? [Vložením hlasy] JASON Hirschhorn: Oh, přestaň. Vy jste taky pěkné. DOBŘE. Chystám se označit ven. Pojďme. ANDI PENG: Budeme dělat trapná mic teď změnit. JASON Hirschhorn: Jsem bude to vzít volno. ANDI PENG: vážíme podpory, kluci. Slyšíš mě? Je to dobře? Perfektní. Krásné. Dovolte mi jen zastrčit, že. DOBŘE. Takže, já jsem asi dělat jako obr Informace o výpis o vás kluci právě teď. A bez obav vůbec, pokud jste ne po každé malé řádek o tom, co Chystám se ukázat. Jak řekl Jason, všechno je zcela online. Jen budeme se snažit, aby zavedly všichni na pojmy pokrytý V některých z těchto snímků. Takže jen sledovat spolu. Žádné starosti, pokud nechcete pochopit všechno; nicméně, je-li v každém bodě máte pocit, ztracený, zvedněte ruka, budeme zastavit, žádné starosti. Bezva. Takže si myslím, něco, co David Již druh zmíněno v přednášce a Jason druh se zmiňoval do dnes je to, co je knihovna. Takže v programování, máme tyto věci s názvem knihovny. Tam, kde v podstatě všechny oni jsou je jen soubor funkcí, která je v podstatě jen kód, který je již byly napsány někdo jiný, že můžeme všichni spotřebujte do našich programech. Tak jak se normální Práce knihovna, je to tak? Zadáte dveře knihovny. Máte všechny tyto Knihy si můžete vytáhnout a můžete přístup k informacím v těchto knihách. Totéž v programování. Máte knihovnu, která má již byly napsány jinými lidmi. A to tak, že je to možné, jako programátor nebo student, mohou získat přístup k této knihovně je přes hashtag #include. Například, v C my mají tři C- nejvíce běžně používají tři Standard C libraries-- vstupu / výstupu knihovny, řetězec knihovna, a matematická knihovna. Takže v rámci vaše první pár problém soupravy, ty budou tři že jste primárně používat. Tak jako David již vysvětleno v přednášce, standardní I / O knihovny, nebo standardní vstup / výstup library dělá přesně to. To vám umožní, v kódu, zadat cokoliv od uživatele a výstupu, který na obrazovku, v podstatě tisk na obrazovku. A tak kdykoli budete používat žádné funkce, například funkci printf (), která budeme jít přes další snímek, ujistěte se, že obsahuje standardní I / O knihovna jinak vám nebudeme moci použít funkci printf (). Protože vy, jako programátor Nikdy vlastně napsal, že funkce, jste jen pomocí někoho Kód nic není v rámci vlastní kód. Dává to smysl všichni? Bezva. A pak jsme v podstatě dostat se na string.h knihovna a math.h knihovna, .h prostě znamená knihovnu, další knihovny, které budete nakonec používat přímo ve Vašem kódu. Avšak pro účely této knihovny jsme také have-- tohoto class-- máme také to, co se nazývá knihovnu CS50, cs50.h, kde jsme pro Vaše pročtení vytvořili mnoho důležitých a užitečných funkcí. Takže vy jako programátor může zádech off to, co jsme již napsali tak, že Tato funkce je k dispozici pro vás pro vaše použití. Budu pokrývající pár funkce běžně používané, ale vím, že se jedná o všechny googleable online. Neváhejte, vytáhnout knihovnu CS50 a pak máte všechny funkce tam. To jo. SPEAKER 5: Takže pokud jste nebyli pomocí softwaru zajišťuje nám třída, dělá, že znamenat, budeme muset stáhnout a najít Toto záhlaví soubor sami a říct počítač, kde to je? ANDI PENG: Velká otázka. Přesně tak. Takže je to jako když si nejste fyzicky přítomný v knihovně, neexistuje žádný způsob, jak pro vás skutečně jít a přístupu k němu. Takže totéž s programování v C, vás musí se ujistit, že jste pomocí našeho zařízení, protože knihovna je již byly začleněny do něj. A pak, když hashtag #include, knihovna je tam. To jo. Dobrá otázka. Všichni dobře? Bezva. Dobře. Takže budeme zasáhnout, v podstatě, to, co je První funkce, která My jako programátoři jsou bude používat v rámci našeho kódu. To se nazývá funkce printf (). Takže, funkce printf (), jak jsem již uvedl v posledním snímku, je zahrnuta ve standardním I / O, standardní vstup / výstup, knihovna. Takže ujistěte se, že cokoliv, co using-- oh, dovolte mi chytit laser pointer-- vždy, když používáte funkce printf (), musíte zahrnout standard I / O knihovna nebo jinak, při kompilaci, budete mít chybu protože počítač bude vypadat, oh já nevím, kde printf () je, ty mi neřekl, kde printf () je. Well printf (), je zahrnuta v Standardní I / O, takže při použití printf (), ujistěte, že máte, že čára nad kódu. Tak například, printf () Zde je funkce. Vše, co to udělá, je vytisknout něco v závorkách pro uživatele. Zajímá se někdo chtěl, aby se stab v jakém tento řádek kódu práva Zde se bude tisknout? Proto, že odpověď je na obrazovce. Každý, kdo? Verdi: Spodní. ANDI PENG: Verdi, proč nejdeš vpřed a říci celý prohlášení? Verdi: Dobrý den, jmenuji se Andi, a jsem 20 let. ANDI PENG: Ach, půvabný. Takže v této linii budeme vytisknout, Dobrý den, jmenuji se Andi, a jsem 20 let, které je ve skutečnosti pravdivé sdělení. Syntaxe. Takže pár otázek, které syntaktických vy chcete, aby se ujistil, víte. Citáty. Dvojité uvozovky říct, Počítač, který všechno uvnitř se bude tisknout. Vše uvnitř plechovky prostě být přesně, jak jste to typ, s výjimkou obvykle na konci, budeme chtít, aby zahrnovala hash-- oh sorry-- pomlčka n. Takže pomlčka n. Má někdo chtěl, aby se hádat na to, co dělá, že k našemu kódu? To jo. SPEAKER 6: Klade to na nový řádek. ANDI PENG: Přesně tak. Tak tohle všechno dělá, je umožňují ať se stane cokoli po tomto, po tomto prohlášení, mají být vytištěny na nový řádek. Takže když jste psaní Kód nemáte náhodně mít věci připíchnutý na konec že nechcete. To všechno dostane úhledně vytištěn jeden řádek a pak začneme na následující řádek. Pamatuje si někdo, co to středník dělá, když jsme kódování? To jo. SPEAKER 7: Prohlášení. ANDI PENG: Sorry? SPEAKER 7: Má to skončí příkaz? ANDI PENG: Jo. Tak v C, nebo jakéhokoli programování jazyka, středník označuje konec programové linky. Tak například, v angličtině používáme dobu říci, oh to je konec věty. V programování, stejnou věc, máme středník naznačovat konec řádku. Častokrát, když jste začíná na program, vy si uvědomíte, nezapomeňte přidat středník a pak pokusu o spuštění vašeho kód a to nefunguje. A ty jsi jako: Ach, vůbec se mi nelíbí vím, proč je třeba pracovat. Je pravděpodobné, že jste pravděpodobně zapomněli středník nebo držák nebo něco někde jinde. Tak, to je důležité mít na paměti. Bezva. Dobře, zvednutím ruky, jak Mnoho lidí zde mají stále zaujatý AP Computer Science nebo naprogramovaný v Javě předtím, vůbec? DOBŘE. Lovely. To nebude vztahovat Pak, ale v Javě, budete mají něco, co nazývá System.out.println které neexistuje v C. Tak v C, kdykoli vás Chcete-li přidat do proměnných do ničeho chcete vytisknout, je tu specifická syntax budeme používat. Tomu se říká placeholding-- v podstatě přidáme zástupné symboly na místě z celého čísla nebo proměnné že chceme vytisknout. Tak jako vy můžete vidět že jsme zahrnuty nová záhlaví knihovny soubor zde. Knihovna CS50. A obsažené v tomto CS50 knihovny je běžná funkce budeme používat v naší kurz s názvem GetInt (). Chce někdo, aby se píchnout do Co GetInt (), mohou být případně dělat. Diváků: [Neslyšitelné] ANDI PENG: Sorry. Nelze slyšet. Maddie, někdo. Maddie: Oh, vyzve jste na celé číslo. ANDI PENG: Přesně tak. Takže tato funkce, další funkce, která je již napsal někdo jiný že můžeme vyzýváme nyní. Vše, co to je, je vyzvat vás, uživatele, zadat co chcete jako kód běží a ukládá whatever-- V tomto případě jsme GetInt () - Ing, tak to znamená, že jsme získání celé číslo. A budeme uchovávat že v jiné celé číslo že jsme právě udělal s názvem věku. Že smysl pro každého? Bezva. Takže teď, že jsme tuto uloženy celé číslo, že jsme vyzváni od uživatele, V této proměnné, máme vytvořil typu int nazývá věk, můžeme jít dopředu a místo které fungují v naší printf (). Takže syntaxe obvykle pro printf () je že tam, kde ve vašem aktuálním fyzickém linku, kterou chcete zahrnout toto číslo, Udělej to symbol tam, symbol procent s tím, že typ proměnné, které chcete. Takže v tomto případě věk je celé číslo. Takže se chystáte zahrnout % i proto, že je to celé číslo. A pak po vaší prohlášení, budete dělat čárkou a Název proměnné. Tak tady, jdeme do tisku out, Dobrý den, jmenuji se Andi, a jsem prázdné let. Hashta-- nebo, sorry--, věk se co jsem vstupem. Takže pokud bych měl vstup 20 pro mou GetInt () zde, to by vytisknout přesně to samé. Ale kdybych chtěl něco vstup jinde, stejně jako možná 40 nebo 45, pak byste vidět, že odráží odpovídajícím způsobem v kódu. Takže toto je příklad něčeho, v němž to vytiskne a vypadá vy, jako jestli je to totéž, ale pod kapotu Počítač je to vlastně velmi odlišné věci děje. Bezva. Dobře. Takže to, co chceme-li více proměnných? Docela snadné. Stejná věc. Máme také novou funkci zde tzv getString (), také zahrnuty v rámci knihovny CS50, že vše, co dělá, je vyzve uživatele pro řetězec, který je jen soubor znaků, tak jako věta, nebo jako jméno. Takže v tomto případě bychom mít dvě zástupné znaky% s řetězci a% i na celé číslo. A budeme následovat že ze dvou proměnných chceme, součástí, v objednávce že se objeví ve větě. Tak například, my name is prázdný, chci jméno tam, takže budu mít jméno jako první. A pak poté, chci věk, chtějí mít věku sekundu. A tak, když jsem chtěl na vstup, Dobrý den, jmenuji se Andi, a jsem 20 let. Mám-li zadaná Andi a 20, přesně to samé by se vytisknout; Nicméně, teď máme dvě uložené Proměnné jména, stejně jako int. To jo. SPEAKER 8: Bylo by schopni spustit, pokud jste přepnuli jméno a věk, na konci, který? ANDI PENG: Jo. To je opravdu dobrá otázka. Tak dlouhý příběh krátký, no. Vzhledem k tomu, jméno a co age-- typ proměnné je jméno? SPEAKER 8: String. ANDI PENG: A co typ proměnné je věk? SPEAKER 8: Integer. ANDI PENG: Tak tady máme zástupný symbol pro řetězec a celé číslo, ne? Takže pokud jste byli přejít nich, počítač to nebude vědět. Bude to pro kontrolu řetězec, a pokud se pokusíte dát int, že to bude jako počkejte, jsem zmatená, vás Řekl mi, že by měl být přidělením paměti pro int. A právě zde, když očekává, že celé číslo A vy jste to pojmenovat a řetězec namísto toho, je to také bude velmi matoucí, jej nepoběží přesně tak, jak potřebujete. Tak tady, jmenovat a syntax je velmi důležité pro spuštění kódu. Všichni dobře? To jo. Maddie. Maddie: Zde Vím, že jsme se podíval na příklady ve třídě, kde se ptají Jaký je váš věk, jaké je vaše jméno. Zde bych, že ať už je to doesn't-- pokud bychom měli spustit tento kód, to by se ptát na to? Ale byste stačí zadat dvě čísla a pak by běžet takhle? ANDI PENG: Jo, přesně tak. Takže pokud byste chtěli na to, aby display, prosím, zadejte váš věk, stačí přidat funkci printf () , který říká, Prosím, zadejte svůj věk, nad ní. To je dobrá otázka. To jo. SPEAKER 9: Tak, už bude zahrnuto v GetInt () [neslyšitelný]. ANDI PENG: Ne, to vlastně není. Tak tohle všechno dělá, je jen vyzve prázdnou obrazovku pro daného uživatele na vstupní něčemu. Pokud budete chtít, pokud chcete vytisknout out něco, co vypráví uživatele, jako, prosím, dej mi váš věk, pak vám bude muset printf (), které sami. Vzhledem k tomu, každý používá tento funkce pro různé věci, mohli byste být ukládání věku, mohli byste být ukládání adresu, mohli byste být ukládání telefonních čísel. A tak je to opravdu jen na jednotlivé použití u vašich obchůdky za to, co chcete, aby to říct. To jo. SPEAKER 10: Takže, jen aby objasnila, kde dělat vám zadat jméno a věk tak, aby se objeví na místě% s? ANDI PENG: na uživatele? SPEAKER 10: Ano, stejně jako Jak to mám udělat aby to-- kam jsem dal Andi, a kde jsem dal 20? ANDI PENG: Jo. Takže pokud jste se ve skutečnosti spustit tento kód, Nejsem vlastně běží kód, to je jen tady právě teď. Pokud bych měl spustit kód, udělal bych to kompilovat kód, aby se soubor, spustit kód, a pak by být jen dvě mezery pro mě VSTUP. To jo. Vy uvidíte, když budete hrát kolem s kódem sami. Dobře budeme pohybovat do další části, co budeme pokrývat dnes. Chystáme se jít nad tím, co podmíněné příkazy jsou. Takže pokud vy pamatovat a odvolávat je z přednášky, podmíněné příkazy, všichni jsou jsou souborem pokynů k počítači které v případě, že určitá podmínka je pravda, spustit kód Uvnitř této podmínky. Takže v podstatě Scratch-- velký téma ode dneška je to, že vy již vše Viděl logiku vše že jsme krytina. A všechno, co děláte, je překlady něco, že je velmi intuitivní Scratch, a tvrdě ho kódování do syntaxe budeme používat pro třídu, která je C. Takže logicky, to vše bylo blok je to, že kus kódu přímo tam. To jo. DOBŘE. Také jsme se dostat do if ... jinak Prohlášení, které je jen přidaná vrstva složitosti na if kde počítač se podívat na to a vidí, pokud je tato podmínka pravdivá, proveďte co je uvnitř těchto dvou konzol, else-- takže něco jako výchozí, pokud to nesplňuje condition-- to. Je to jako rozcestí. Pokud prší venku, jsem dal na pláštěnka, něco jiného jinak Nechci dát na pláštěnka. Znamená to, že logika smysl pro každého? Bezva. Dobře. Takže jako pevný příklad to, že bychom vidět v C je, když jsem chtěl vytvořit proměnnou s názvem domácí úkoly hodin. A pokud domácí úkoly hodiny méně než pět, říkám Život je skvělý. To je nádherné. Nicméně, říkají, že boj je real-- což je to, co všichni na tomto pondělí odpolední up Science Hill jsou pravděpodobně dělá právě now-- Diváků: [směje se] ANDI PENG: Mají způsob, jak by, děkuji vám za to. Způsob, jakým bychom napevno to v C je if-- předpokládejme již máme proměnnou typu int volal domácí úkoly hodin tady. Pokud domácí úkoly hodin je menší než Pět printf (), Život je skvělý. Nezapomeňte držet / n, protože Chcete nový řádek po. Else tisk, boj je skutečný. Má každý pochopit, jak I přešli z tohoto bloku do tohoto bloku kódu? Bezva. Dobře. Takže teď budeme se podívat na více příkazů, pokud vůbec. Takže pojďme předpokládat Účelem tohoto programu bylo, že jsme výzvu pro platové třídy. My prompt pomocí GetInt () pro stupeň, a vstupní hodnotu, a chcete zobrazit jaký typ třídy dostali. Takže pokud bych měl navrhnout program, já znamenat, typicky ve všech našich očí, 90-100 je A, 80 až 90 je B, a tak dále a tak dále. Co je špatného kus kódu, který to není dělat to, co chci, aby to dělat. To jo. SPEAKER 11: Mají nižší limity, ale nemají horní hranici. ANDI PENG: Přesně tak. Copak všichni slyšet, co řekla? Tam to bude horní limity, ale není nižší limity. Omlouváme se, ale naopak, spodní limity, žádné horní meze. Takže byste chtěli se píchnout do říká co by být vytištěny na toto Obrazovka kdybych spuštěním tohoto kódu. SPEAKER 11: chyba? ANDI PENG: chyba? Skvělé hádat, není úplně v pořádku. Má někdo jiný stab? Jo, Aaron. AARON: Máte-li dát do něco vyšší než 90, to by ukázat všechny stupně, co máš. Ukázalo by jste se dostali k A, máš B, máš C. ANDI PENG: Jo. To je přesně to pravé. Tak, to by bylo skvělé. Nicméně, jsou navzájem exkluzivní, myslím. Pokud bych měl spustit tento kus kódu. A pak ať to jen říct, že jsem zadaná jakostní třídy 95. Takže 95 je nyní uložen v Int volal stupeň. A tak C je jazyk že vyběhne shora dolů, tak to bude vždy běžet až na dno. Takže to přijde sem, číst, pokud stupeň je větší než nebo rovna 90, printf (), jste se dostali k A. Skvělé, jsem mají 95, která je větší než 90. Bude to k tisku, Mám A. To se děje aby se na to podívat, pokud to jde říkají, no 95 je také větší než 80, to bude tisknout také dostal GOT B vykřičník, a tak dále a tak dále. Takže jak můžeme všichni vidět, to je obyčejná chyba které mohou nastat, když jsme psaní kódu dávat pozor. Kdokoliv, jakékoli otázky týkající Proč, co se děje? Skvělý. DOBŘE. Tak jak jsme se opravit, je samozřejmě logickým další otázka. No, máme tyto krásné věci zvané pokud else if jiný pokud else. Takže můžete vidět, pokud jste chtěli změnit tento problém, jste chtěli, aby se každý z Podmínky vzájemně se vylučující, byste přidat else ... if. A to z course-- uvažovat o nich jako žebříky, nebo jako příčky na straně ladder-- můžete přidat tolik, kolik z nich jako vy Chcete pro tolik podmínek, jak budete chtít. Tak tady, když jsem zadaná třídy být 95. Je-li stupeň je větší než 95, printf (), mám A. Skvělé. Bude to vidět else ... pokud a bude to vědět, Ach ne, Už jsem popraven první jinde. I víš-- nebo první if-- vím, že Nechci se podívat na některý z nich proto, že jeden z nich je již true. Takže to bude běžet od shora dolů. Jakmile se první z nich je pravda, pak to bude přeskočit všechny ostatní z jiného ... IFS. Dává to smysl? Takže tímto způsobem máte různé úrovně kontroly a jakmile se jednou z nich je false, Zbytek jsou také, nebudou ani kontrolovat. Bezva. Dobře. Tak to je příklad jiný druh podmíněného příkazu vidíme méně často, ale my je uvidíme a jejich použití. A oni jsou často více efektivní pro určitých případech. Takže máme to, co se nazývá prohlášení switch. Takže než jsme probrali, co to jinak prohlášení, if ... else. Zde máme to, co jsou volal příkazy switch. Takže když máme používat přepínač Prohlášení je klíč? Takže switch, vy obvykle, typicky, ve skutečnosti vám slouží pouze pro vstup celá čísla s vaším proměnná, která máte kontrolu. Takže když jsem chtěl zkontrolovat, pokud určitá number-- například stupeň, když jsem dostal 90. Chci, aby zjistil, jestli to je A, B, nebo C, mohl bych mít případ tady. Nicméně, případ má jako další konstantní. Takže v tomto smyslu, switch může pouze zkontrolujte rovnosti dvou čísel. To nekontroluje pro nic jiného. Takže to je něco, co se velmi opatrní, když jste pomocí tohoto. Tak tady, když jsem chtěl zkontrolovat, pokud má stupeň 90 se rovná 90 nebo 80 nebo 70 nebo 60, a pak tisk odpovídající stupeň, Já bych byl schopen napsat, že v příkazu switch. Takže to přijde sem, kontrola je to celé číslo rovnající se této konstanty? Pokud ne, bude to přeskočit. Je roven konstantní dva, a tak dále a tak dále, dokud nenarazíte výchozí, pokud žádný z nich jsou stejné. Jakmile jeden z nich je nastaven na stejné, že to bude, jak to udělat řádek kódu a přestávky. Což znamená, že to bude hit, že run, break, a jen zcela přeskočit do spodní části kódu. Takže v tomto smyslu druh funkcí jako if else if else if prohlášení. Takže tady je betonová Příkladem pro vás. Takže předpokládejme, že jsem chtěl vytvořit proměnnou s názvem Rok založení. A chci, aby výzvu k vstupu rok, že jejich škola byla založena. Takže můžu vytvořit příkaz switch zde. A řekněme, jsem se vstup 1636. Tento kód je zde uvidí přepínač Rok založení což se rovná 1636. Bude to vidět věci 1.636, ach ty jsou stejné, printf () Neměli byste být V té škole na severu? Protože předpokládáme, že ne jít sem, pokud jdou na Harvard, zlomit a přeskočit na konec. Kdybych byl na vstup 1701, který Předpokládám, že všichni z nás by vstup, to by přeskočit tento případ, pojď dolů případě dva, což je 1.701, a tisk Vítejte na Yale! Přestávka, přeskočit na konec. Else pravděpodobně užíváte tento kurz on-line, ve kterém case-- úžasné přivítání na Yale-- to bude jít do default tisk, Hello Internet! A zlomit. To jo. SPEAKER 12: Můžete použít jiný místo ve výchozím nastavení tam? ANDI PENG: Ne, protože tak, že celá tato funkce switch je postaven, syntaxe vám je třeba použít, je případ případ výchozí. Je to jako v případě jiného, ​​pokud to jednou je to případ případ výchozí. To jo. SPEAKER 13: Ty možná již řekl, ale můžete mít více než dvou případech? ANDI PENG: Jo, mohl bys mít tolik případů, jak chcete. Ber to jako stejně jako nekonečně přidávání dál. SPEAKER 14: Pokud se vám přešel 1701 s 1636, to není opravdu rozdíl v pořádku? Je to jen bude možné kontrolovat za to. ANDI PENG: To je opravdu dobrá otázka. A budeme dotýkat později, ale jen víme, že to je přepínač tvrzení je, že je to infinitely-- účinnější než to, a pokud else if, protože to funguje použít jiný typ funkce, které vám umožní, aby v podstatě, jen přeskočit přímo na případ, musíte být na adrese. To jo. SPEAKER 14: cool. Díky. ANDI PENG: Jo SPEAKER 14: A vy jste nemohl dělat věci jako a větší než. ANDI PENG: Ne. Tak, to je to, co se o omezení Příkaz switch je, že máte mít pouze konstanty, pouze celá čísla. To jo. DOBŘE. Tak to je něco, co vás Chlapi se setkávají méně často, ale já jsem jen chtěl zavést ji do pouzdra. Máme tady co je volal ternární operátor. Tam, kde v podstatě, je to jen jako if sestaveny do jednoho řádku. Tady, půjdu na další linky, další stránka, protože je lépe vidět. Takže jsme všichni viděli, toto právo? To je docela snadné sledovat. Kdybych chtěl, aby proměnnou s názvem řetězce s názvem s, v případě, že určitý počet I dát, že je nižší než 100, I chcete přiřadit nízko na řetězec, co bych chcete přiřadit vysoké. Tady dělá přesně to samé těch osm řádky kódu dělají. Takže tady chci vytvořit proměnná řetězec. A to je podmínka, že jsem kontrolu, je-li číslo nižší než 100, pak přiřadit hodnotu nízká, jinak přiřaďte hodnotu vysoko. Tyto snímky budou on-line, žádné starosti jestli vy nechcete dostat to dolů. To je jen jednodušší způsob, více efektivní způsob psaní kódu. DOBŘE. Takže teď budeme zadejte co, pro většinu lidí jsou jako velmi, velmi matoucí věc, přemýšlet o tom, na prvním místě. Sekce smyčky. Takže dnes, budeme mluvit asi tři typy smyček. Chystáme se začít s nějakou chvíli smyčka, pak mluvit o dělat, zatímco smyčky, a pak se mluví o pro smyčky. Takže v podstatě, pro více vizuální studující tam, Máme v podstatě grafické zobrazení, co while dělá. A tak v programování, měli byste začít a vstupem do smyčky v určitém okamžiku. Můžete zkontrolovat stav. A v případě, že je splněna podmínka spustit kód uvnitř. A vy jste se vrátil kolem sebe a zkontrolovat. Pokud je to pravda, že jste stále udržují v provozu Tento kód kolem dokola ve smyčce. Nicméně, druhý, že podmínka false, budete zlomit a ukončit smyčku. A to je v podstatě syntaxe budete používat. Zatímco určité podmínky pravda to, pokud to není pravda, budete přeskočit na konec a pokročit s programem. DOBŘE. Má někdo příklad o tom, co se může stát, potenciálně pokud se pokusíte spustit tento kus kódu? Mimochodem, to je Scaz SAJ--, Andi, Jason-- budeme podepisovat naše e-maily, Láska, Saj. To jsme my. DOBŘE. Každý, kdo má příklad, nebo máte představu o tom, co by to tisknout? Druh chyták. Takže tady, pamatuješ podmínku jsme kontrola je přitom pravda. Takže když je to pravda, je to do tisku, miluji Saj! Existuje nějaký bod, ve kterém bychom si změnit na něco jiného? Ne, ne? Takže tady máme setkali, co je pravděpodobně bude odposlouchávání hodně vaše programy, nekonečné smyčky. Zjistíte, že pokud vás spustit tento kus kódu, je to jen bude mít tisk, miluju Saj! I když oceňujeme podporu, nechceme počítačů narazit, protože vás pokračovat v tisku Miluji Saj! Takže, prosím, prosím, vyhnout nekonečné smyčky protože to nikdy vyhodnotit na hodnotu false a vy nikdy opustit smyčku. A vy budete nasát navždy. Bezva. DOBŘE. Druhý typ smyčky budeme mluvit o dnes je dělat, zatímco smyčka, dělat, zatímco smyčky. A to se říká dělat, zatímco smyčka protože máte dělat a chvíli. Tak to je docela podobný chvíli smyčka, ale trochu jinak. Zde budete dělat co je uvnitř tohoto zatímco určitá podmínka je pravda. Takže když jsem byl C a počítač Jsem stékaly tento kus kódu, Jsem se podívat na vrcholu. Chodím do C, říkám to učiniti. A pak jsem zkontrolovat, zatímco tento Je pravda, musím opakovat. Ale když je tato falešná, pak jsem se pohnout kupředu a nikdy jsem se vrátit k tomu smyčce znovu. Může někdo vzít stab na jaký je rozdíl mezi této smyčky a ta, kterou jsme jen se na to prakticky. To jo. SPEAKER 15: Podmínka přichází poté, co místo toho předtím? ANDI PENG: Přesně tak. Takže řekla stav přichází po, ne dříve. Nakonec, je rozdíl mezi tímto a while je to, že jste jen dělat co je uvnitř to bez ohledu na zda je či není váš stav je pravda, a pak zkontrolujte stav. Takže v tomto případě, že jste always-- tímto způsobem, jste vždy ujistit, co je uvnitř běží alespoň jednou před kontroluje, pokud chcete, aby znovu spustit. A zde je příklad kdy bychom ji použít. Tak například, pokud jsem chtěl mít proměnná typu int pojmenované věk, a já chci vyzvat uživatel na jejich věk, Budu dělat printf () Jaký je váš věk? věk = GetInt (), která je upozornění uživatele. A někteří lidé budou opravdu otravné. A nechcete chyby ve vašem Program někoho zadání, jako, oh Já jsem negativní 4 let nebo cokoliv jiného. V takovém případě, pokud to udělat, to hodnotí na hodnotu true, což znamená, že budu musí jít dál zpět a dělá to. Takže to bude mít re-vyzvání uživatele dát vám skutečnou číslo věk a je to bude neustále vracet a předělání to, dokud se vám skutečný věk větší než jedna, nebo není nulová. Takže nápověda, nápověda. To bude velmi, velmi užitečné pro jednu z vašich problémů pset. To jo. SPEAKER 16: Jejda, promiň. ANDI PENG: Jo. SPEAKER 16: Existují, ne být kretén, ale-- ANDI PENG: Žádné obavy. SPEAKER 16: --are tam různá pravidla tady, nebo jste prostě zapomněl dát nabídku? ANDI PENG: Oh ano. Je nám líto, že je naprosto moje špatná. To byl určitě měl být citát. Dobrý úlovek. To by nelze spustit. DOBŘE. Takže poslední typem smyčky promluvíme o a, v konečném důsledku, druh nejvíce Komplex je pro smyčce. Nebojte se, pokud nemáte Víte, co to znamená. Je to docela matoucí na prvním místě. Půjdeme přes příklad. Vše, co se děje v pro smyčce je, že máte tři prohlášení že budete zahrnout. Takže pro určitou věc, že ​​jste chystá inicializovat proměnné. Budeš-li přidat podmínku které tato smyčka bude udržovat v chodu. A pak, na konci smyčka, budete jej aktualizovat. Můžete aktualizovat proměnnou že chcete sledovat. Tak jsme se obvykle používají pro smyčky, když jsme my chcete spustit smyčku pro určité množství časů a už víme, Oh chci tato smyčka provést jako 10 krát, pak do-- půjdu přes příklad na další straně. Tak tady například v Scratch, pokud jste chtěl něco opakovat 10 krát, vše, co musel říct: opakovat 10 krát Miluju Saj! který je přijatelnější přehlídka podpory pro nás spíše než nekonečné smyčky. Zde, jak byste Přechod na C a psát že je pro int-- budu vytvořit nebo deklarovat proměnnou typu int jsem pojmenoval. Chystám se inicializovat je na 0, takže i = 0; a to bude můj stav. Tak jsem je menší než 10. A pak u end-- Poslední tvrzení, že jste bude mít, je aktualizace co se stane s variabilní i na konci svého cyklu for. Takže je to trochu matoucí, protože Různé části této linie se dějí při různých druhy smyčky. Ale já půjdu více než pseudokód příklad, který a možná to vysvětlit jen o něco lepší. Tak tady. To je smyčka jsme právě viděli. V podstatě v pseudokódu, co se děje v tomto programu, je poprvé jsem vytvořit i, inicializaci na 0. Jsem kontroluje, jestli jsem je méně než 10, a v takovém případě poprvé, že je proto, že 0 je menší než 10. Tak smyčky bude běžet. A pak budu vytisknout tento řádek. A pak se na konci tohoto řádku, vpravo tady, budu dělat přírůstek i, i ++, vše, co znamená, postupně ji po druhém. Tak jsem je nyní 1. Protože to bylo kdysi 0, když jsem přírůstek je to, že je to teď 1. A pak budu zpátky na začátek smyčky a já zkontrolujte stav. Je stav stále platí? Ano, 1 je stále méně než 10. Takže to bude tisknout znovu, jít a pak i přírůstek, a zkontrolujte podmínka kontinuálně, kontinuálně, až se nakonec dostal do okamžiku, kdy je i 10. Budeš vytisknout tento 10 krát a pak jsem se bude rovnat 10. Budeš kontrolovat stav. Je o 10 méně než 10? Ne, že je nepravdivé. Proto je tato smyčka nebude spustit, bude to zlomit, a vy budete Pokračovat na kódu. Tak jako vy můžete vidět, toto Je to opravdu skvělý příklad ze smyčky můžete program v tom, že běží na zadanou dobu. Každý jeden jasný? To jo. SPEAKER 17: Jak se o přírůstek exponenciálně, je to rozdílné kódování? ANDI PENG: Vy can-- půjdeme přes toto v další snímek. Dobrá otázka. Je anyone-- než jsem se pohnout on-- vůbec někdo zmatený, protože se jedná o opravdu těžké koncept. Žádné starosti, pokud you're-- OK. Bezva. Dobře. Jen obecný skluzavka. Tento cyklus while se dělá přesně to samé cyklu for bylo. Je to právě napsal jinak. Vy můžete prostudovat snímky na vaše pohodlí později. Ale vím, že tam je mnohonásobný způsoby psaní stejnou věc se stane s různými smyčkami. DOBŘE. Tak, teď jsme se dostat na otázku, co máme-li smyčku uvnitř smyčky. Jsme stále v reálném Inception typ věci tady. Když chcete dělat věci násobek Časy uvnitř dalších věcí že dělat věci vícekrát, vám chtějí to, co se nazývá vnořené pro smyčku. Pro ty z vás, kteří jako první vidět a si velmi zmatený, všechno tu děláme má cyklus for kde máme proměnnou řádku. Ale uvnitř ní, máme také další na smyčku proměnlivé zvané kolony. A já jsem velmi naznačují, všechny z vás, kteří jsou zmateni nejprve udržet track-- kreslit na to, čerpat na to. Nesnažte se spravedlivého důvodu přes to, vytáhněte ji. Ve vaší hlavě, na tento kus papír, nebo cokoliv, psát řádek, sledovat, co řádek je roven. Napište sloupec, sledovat z toho, co sloupec je rovná. A sledovat, co je vytisknout s každou iteraci. Každá iterace této smyčky, každá iterace tohoto větší smyčky, jen držet Podle logiky. A já vám zaručit, budete milovat to, co vidíte, protože to je také velmi použitelný pro vaše problémové sady. Bezva. Dobře. Takže nejdůležitější věc že vy jste asi všichni přemýšlet o právě teď, jsou váš problém nastavit 1s, které jsou splatné čtvrtek / pátek. Ve vašem water.c programu, nápověda budete mít na výzvu pro vstup. Ve vašem programu mario.c budete mít používat vnořené pro smyčce, což je A pro smyčku uvnitř smyčky for, vytisknout blok pyramidy, v podstatě stejně jako to, co Mario musí proskočit. A pak uvnitř greedy-- nebo možná Tvorba změny, pokud někdo z vás kluci jste někdy slyšeli o that-- budete muset být velmi pozor na prvních desetinná čísla. Pamatujte si, plovoucí desetinná místa a celá čísla nejsou totéž. Sledujte z nichž jeden je který. A vy budete používat podmíněné příkazy, stejně. Dobře, poslední věc. Mám pár minut odešel. Style. Tak to je něco, co není ve skutečnosti vliv na účinnost, nebo skutečný běh vašeho kódu. Nicméně, to nás ovlivňuje as Vaše srovnávače, jak vaše čtenáře. To způsobí sami, pokud jste se snaží najít problém. To ovlivňuje čitelnost kódu. Takže styl, jako když se snažíte styl esej pro angličtinu, pokud neměl odstavce, máte vše druh z neuspořádané společně na jednom řádku, ji je pro každého, je to opravdu těžké si přečíst esej, i když vaše body jsou logicky zvuk. Totéž v programování. Můžete mít strašně temný kód, který Scaz se budou týkat, a to může ještě běžet a funkce. Ale pro nás, vaše krásné TA, kteří budou být čtení a vyhodnocování své PSets, to není moc hezké. Takže, prosím, v zájmu z nás a sebe, když se snažíte opravit problém v kódu, a snažíte se číst vlastní kód, aby jisti, že se budete držet několika konvence že budeme jít přes. Tak jako první. Dejte své proměnné smysluplné názvy. Pokud chcete uložit číslo volal věk, prosím jmenovat to věk. Nepoužívejte jméno jí výšku. Když se snažíte uložit věku na výšku, to dělá všechno velmi matoucí pro nás. Neradi se zmatený. Nemáš rád být zmatený. Nikdo nemá rád být zmatený. Pokud se chystáte vytvořit něco, pojmenovat to něco smysluplného. Nicméně, v pro smyčce, single charakter proměnné jsou obvykle v pořádku. A v pro smyčce, chcete-li jsem, a j, k, neváhejte prostě udělat. Konzistentní inicializace. Takže co to znamená? To znamená, že technicky, teoreticky, můžete iniciovat a vytvářet více proměnných na stejném řádku. Tak například lze vytvořit celé číslo s názvem scaz_age, a celé číslo zavolal andi_age = 20, a představuje celé číslo s názvem jason_age na stejném řádku. A mohu také přiřadit pouze jednu oni a ne ostatní na hodnoty. Žádáme vás, prosím, nedělej to. Protože tady jste v podstatě vytvořil tři proměnné, ale pouze jeden z nich ve skutečnosti má hodnotu. A pak, když jsme se snaží číst váš kód, nebo pokud se snažíte opravit problém v kódu, je to velmi matoucí následovat. Tak právě pro Vaši čitelnost, pro náš čitelnost, nedělej to. Konzistentní složené závorky. Někteří lidé chtěli, aby jejich složené závorky na různých místech. Je to opravdu nezáleží. Jen se ujistěte, že jste konzistentní ve vašem vlastní kód na tom, kde budete chtít dát jim. Konzistentní prostor. Pokud dáte mezeru po pro smyčce, vždycky udělat. Nepoužívejte jen rád trochu to na některá místa, nedělejte to v jiných. Jen být konzistentní. Za druhé, pokud by se někdo chtěl nahlížet Styl Průvodce CS50, máme oficiálně mít průvodce, který styl vám řekne, všechny z těchto úmluv, a další. Je to on-line. Je to jako cs50.net/style~~pobj nebo něco takového. Můžete Google ji. Konzistence je klíčové. Takže nebojte se, co ostatní lidé dělají, jen se ujistěte, že jste konzistentní v rámci vlastní kód. Každý, kdo má nějaké otázky o tom? To jo. SPEAKER 18: Takže sluší co do činění s inicializace je prostě je všechny v samostatném linka, je to, že to, co říkáte? ANDI PENG: Tak jsem si málokdy se to stalo. Ale pokud jste chtěli, pokud jste chtěli být jako úspory místa v kódu, nebo cokoliv, můžete to udělat. Žádáme vás, abyste prostě nemají inicializovat jedna věc, a ne ostatní. Takže pokud chcete udělat int scaz_age, int andi_age, int jason_age, to je v pořádku. Jen to ne jeden inicializovat a ne ostatní je všechno. Otázky? Dobře. Chystám se projít off mikrofon, a laserové ukazovátko, a obušek na Scaz v tomto bodě. To je trapné. Tady to je. BRIAN SCASSELLATI: Děkuji. Jak to, že pro zvuk? Zvuk je dobrý? , Výborně. DOBŘE. Takže, ahoj všichni. Budu se snažit pracovat prostřednictvím praktický příklad s vámi. A budeme používat CS50 je vývojové prostředí, co se nazývá integrované vývojové prostředí. A viděli jste to prokázána v přednášce. A v problémových Set 1, ty jsi bude mít příležitost ji používat, a pohrajte si s to, a zvyknout na to, protože budeme používat po zbytek semestru. Takže v tomto IDE, máte to, co vypadá jako velmi tradiční prohlížeče souborů více než na jedné straně. Máš část nahoru top, kam jdete vidět zdrojového kódu, vaše CFile, kód, který píšete. A dolů dno, budete mají okno terminálu které budete používat na jak sestavit svůj program a spustit, nebo spustit program. DOBŘE. Takže jen, aby nám trochu nadace, v tomto okně terminálu, budete mít pomocí sady příkazů že jsou standardní příkazy v celé většina unixových nebo Linux. A tak pokud jste někdy používali jakákoli forma Unix, Ubuntu, nebo některý z dalších příchutí, tyto jsou bude vypadat povědomě. Pokud nemáte, nezoufejte. Na tom není nic složité o nich. Jsou to jen pomocí jiný syntax, jiné pojmenování konvence, než jste ještě neviděli. Tak, aby se seznam souborů v určitém adresáři, že jdou použít Příkaz ls volal, nebo Seznam. Pokud chcete vidět vše se všemi detaily, budete používat příkaz linie argumentace s ls -l. A to vám ukážu všechno podrobněji, včetně oprávnění pro soubor. Chcete-li změnit adresář, budete pomocí příkazu cd. A budete mít možnost změnit adresář jak jít do svého domovského adresáře. To je jen cd úplně sám, CD se dvěma tečky se vrátíte do jednoho level do svého předchozího adresáře. A můžete také CD-ROM na podadresář zadáním cd a název tohoto podadresáře. Můžete také vytvářet nové adresáře. A jdeme na procházku přes to v chvilku. Ale jen dát vše, co na obrazovce. Tak, že je můžete vidět. Budete mít také možnost manipulovat soubory přímo z příkazového řádku. Budete mít možnost zkopírovat, aby přesunout, nebo je odstranit, to znamená, že účinně, je odstranit. CS50 IDE vám dává plný Síla argumentů příkazového řádku. A to znamená, že můžete také dělat velmi nebezpečné věci. DOBŘE. Například, můžete odstranit, nebo že je odstranění, soubor bez ptaní pro potvrzení. A můžete dokonce odstranit recursively-- to je čárka r flag-- celý podadresář a veškerý její obsah. DOBŘE. Jsou uvedeny v červené barvě, protože tobě by měl přemýšlet "nebezpečí" pokaždé, vidíš ty věci. DOBŘE. Dobře. Nyní konečně, věci, které jsou bude opravdu cenné pro vás, jsou tam několik dobrých triků vědět, jak jste navigaci přes toto okno terminálu. Za prvé, můžete vymazat obrazovku kdykoli pouhým zadáním v jasné. A vy budete vidět mě to udělat poměrně často. Můžete také jen zobrazovat text souboru zadáním více a poté název souboru. Poté budete mít možnost posunout zpět a tam se to jen s mezerníkem a šipky. Pokud máte, jako jsme to udělali dnes v přednášce, program, který běží nepřetržitě v nekonečné smyčce, vy může zastavit tento program z provádění zadáním pod kontrolou, že je přidržením Control-C. A možná budete muset udělat, tento vícekrát. Počítač dostane daleko před vámi. A musíte někdy dát mu pár pokusech před tím, než bude skutečně projít. Budete mít také možnost roztřídit příkazů které jste právě zadali pomocí nahoru klíč, šipka klíč, a pak tlačítko šipka dolů. A co je nejužitečnější je místo psaní se dlouhé názvy souborů, budete moci pro použití na kartě Automatické dokončování několik instrukcí. Teď budeme demonstrovat všechny ty, v jen sekundy. Takže pokud si nepamatujete je, nebojte se. To jsou věci, které budete vyzvednout a použít jako jdeme dál. DOBŘE. Takže na rozdíl od C- v Scratch-- C je zkompilovaný jazyk. To znamená, že budeme mít zdroje file-- to je text, který píšete, příkazy, které píšete se printf () prohlášení, smyčky, vše else-- a jedeme aby se tento soubor a předat ji na program s názvem kompilátor. Kompilátor pak převezmou že text, který jste napsali a přeložit jej do binární instrukce že váš počítač je vlastně bude využití. Tomu se říká objekt nebo spustitelný soubor. Podíváte-li se na tento soubor, budete vidět kód, který jste napsali. Podíváte-li se na tento soubor, budete vidět náhodnou posloupnost znaků že nemá smysl vůbec. To proto, že se jedná o binární. To není určen pro vás bude číst. Nicméně, kdykoli budete chtít spustit něco, co budete být spuštěn, je tento objekt soubor. Takže když jsme se pracovat s těmito soubory, budeme psát soubor v C. Budeme pak ho kompilovat, pomocí Příkaz, jako je make, který se bude dovolávat kompilátor zvonění pro jazyk C. A to bude produkovat objekt soubor, jako ven, nebo v tomto případě, jméno, můj soubor, který jsem dal dovnitř. Dobře. Takže pojďme se skutečně snaží toto. Takže jsem přišel s příkladem z toho, co jsem chtěl zkusit. A jedna z věcí, které Fascinuje mě je animace. Takže budeme snažit dělat trochu animace s použitím pouze ASCII znaky. Postavy lze snadno vytisknout teď. Tak tady je můj nejlepší pokus vytvořit pro vás animace zajíček běh přes vysokou trávou. Tady je. DOBŘE. Takže on není spuštěna ještě, ale je to stál ve vysoké trávě. Nyní, když bych byl animátor, ve staré škole verze animace, co jsem bych udělat, je bych vyrábět obraz tohoto zajíček v trávě. A pak bych vyrábět další picture-- Dalším, co oni volali, že cell-- měl králíček jen nepatrně pohnul. A pak třetí jeden, který měl zajíček se posunuli o kousek dál. A já bych vyrábět celý Sekvence těchto buněk. Někteří kde králíček je u konce na levé straně. A pak se pohybuje pomalu, jeden jedním směrem ke středu. A pak od poloviny nad doprava. A kdybych byl tehdy opravdu štěstí, mohl bych dát dohromady a já jsem je mohl oživit. A tady je moje bunny běh přes trávu. To je můj velký PowerPoint trik na den. DOBŘE. Tak tohle je tak dobrý, jak to dostane. DOBŘE. Takže, tady ještě jednou, tady je naše zajíček běží trávou. SPEAKER 19: Opět. BRIAN SCASSELLATI: One více času, v pořádku. Tam je váš králíček. DOBŘE. Takže dnes to, co budeme udělat, je jedeme pokusit se automatizovat proces výroby těchto buněk. Nebudeme úplně dostat do bodu je schopen je všechny dohromady. Ale budeme se snažit pro automatizaci proces generování této sekvence. A to je hodně z čeho Animace je dnes podobně. To znamená, že nemusíte dělat věci nutně kreslení všechno po ruce. Používáme počítače k ​​automatizaci částmi tohoto procesu. DOBŘE. Dovolte mi tedy přepínání Nyní k naší CS50 IDE. A já jsem vytvořil pro us-- a nechat me přiblížit tu trochu bit-- jsem vytvořil pro nás výchozím bodem. Pokaždé, když vás žádáme sedět dolů a napsat kus kódu, to, co jsme vás opravdu žádáš je žádáme, aby vyřešit problém. A tak, že jste měl přemýšlet o tom, že se tím, že začíná s některými jednoduchý součástí tohoto řešení. A pak vytvořit z této části. A to je to, co budeme dělat dnes. Takže spíše než se snažit vše najednou napsat celou spoustu kódu, který je bude vyrábět ty, 10 animace buňky, budeme místo toho začít s jedním kusem, který funguje. A pak budeme stavět Trochu kolem toho a trochu víc a trochu víc. Nyní je dobrá věc, o Řešení problémů tímto způsobem je to, že vám umožní začít vždy s něčím, co znáte práce a zavést jeden postupnou změnu. A to je skvělý způsob, se dozvíte, jak se kód, proto, že pokaždé, když uděláte změna, vidíte, jaký vliv to má. DOBŘE. Tak tady je náš výchozí bod. DOBŘE. Takže na začátku mého souboru, Mám hash #included stdio.h. To je tak, že mohu získat printf () funkce k práci. Pak jsem mám hlavní funkci. A to stále vypadá trochu Arcane nebo obskurní pro některé z vás. To je v pohodě. Vše, co to říká, je to, že Hlavní funkce trvá no arguments-- void prostředky nic v C., a to vrací podle konvencí celé číslo. Hlavní vždy vrátí celé číslo, obvykle kódu říkají věci šlo dobře, nebo nešel dobře. DOBŘE. Ale hlavní je, aby toto Formulář pro nás právě teď. Já jsem pak dal ve třech řádcích kódu. A spolu s každým řádkem kód, Já jsem dal komentář. A teď jedna z věcí, které budeme trvat na tom, co děláte, a je to tak důležitý programovací praxe, je vždy vyjádřit váš kód. Vždy zapsat An Anglický komentář něco že si myslíte, že Kód má dělat. Tak, později, když se vrátíte do to, můžete se podívat na to, a vy můžete říct, oh, Vzpomínám si, co jsem byl se snaží dělat s tím. Nebo když TA sedne s vámi snažit, aby vám pomohl v úředních hodinách, oni se podívat na to a jít, já vidět, co se snaží dělat, ale místo toho je to co se skutečně děje. DOBŘE. Tak jsem dostal tři části mém kódu, Chystám se především tisku out některých tečky na začátku. Budu pak vytisknout my extrémně fantazie zajíček. A ještě něco trochu teček na konci. A tyto tři tiskové prohlášení by mělo být povědomá pro vás v tomto okamžiku. Vše, co dělám v každý z nich je, že jsem vytisknout posloupnost znaků. Tam je zapojené žádné proměnné. Vše je jen plochá. DOBŘE. Takže když jsem se jít dolů teď k mému terminal-- uvidíme, jestli můžu dostat to zpět out-- a budu psát opět volná. SPEAKER 20: Musíme použít dvojité lomítko vyjádřit? BRIAN SCASSELLATI: Může použijte double-- ano. K dispozici je několik způsobů, zanechat komentář v C. One způsob, jak je použít dvojité lomítko. Na druhé straně je použít lomítko a hvězda a zavřete s hvězdou a lomítkem. Dobře. Za prvé, budu spustit navigaci tady. Takže když jsem se jít do mého domovského adresáře, Změnil jsem adresářů tam, Jdu se podívat a vidět, co je v tomto adresáři, ls, seznam ven. Jdu vidět, že jsem má dva podadresáře. Udělejme to trochu větší tady, takže se všichni můžeme vidět. Vidím, že jsem má dva podadresáře. Budu-li změnit adresář jít do pracovního prostoru. A já jen psát ven jeho součástí, a pak stačí kliknout na Tab. A to bude dokončit zbytek pro mě. Fancy. Podívám se a vidět v pracovním prostoru. A právě teď, já pracuji na SuperSection že jsme vyučování právě teď. Takže já půjdu do tohoto adresáře. A konečně, dívat se a vidět. A já mám ten soubor bunny.c. Dobře tak ať mi jasné, ještě jednou. A já zase, že jsem now-- ještě zůstat v tomto adresáři a to mi říká, že jsem v že SuperSection adresář. Chystám se jít dopředu a aby můj program zajíček. A tento příkaz, aby zajíček, zatímco znít trochu divné, dovolává rovněž řinčení kompilátor. A je to vyrobeno pro me výstup, který je spustitelný funny-- spustitelný soubor s názvem zajíček. DOBŘE. I pak mohou, a to zní ještě horší, spusťte zajíček. DOBŘE. A uvidíme, co to udělá. DOBŘE. To je trochu to, co jsem očekával. Mám svou zajíček obrázek tam, ale nějak jsem to chtěl všechno sama. To, co jsem zmeškal? SPEAKER 21: Slash l nebo lomítko n. BRIAN SCASSELLATI: Slash n. DOBŘE. Tak pojďme zpátky sem. A já budu mít z toho. A já se vrátím do tohoto jednoho. A pojďme se podívat teď z mé hlavní funkce zde. Tak co mám dělat? Chci ukončit linku. Tak jsem si dal v komentáři. Dám do printf (). A to, co musím dát? / n. DOBŘE. Co musím skončit s? Středník. Dobře. Nyní, jeden z opravdu důležité věci, je ujistit pokaždé, když provedete změnu v kódu, který ji uložit. Pokud jste neuložili váš kód, jste bude všímat malá hvězda nahoru. A to vám říká, že hvězda neuložili tento kód. Kdybych zkompilovat právě teď, to není bude odrážet některé z těchto změn, protože kompilátor dívá na soubor to je na disku, nikoliv na soubor, který je otevře v editoru. Dobře. Tak pojďme ji uložit a pak půjdeme tady vpravo dolů, pojď zpátky. Pojď dolů do mého terminálu. A pojďme znovu vyčistit prostor. A můžeme pokračovat a ještě jeden čas, aby naše zajíček program. A spustit zajíčka. To nepomohlo. Špatné lomítko. Takže, když se podíváte na to, co mám, jsem dal / n tam, ale já jsem měl špatnou lomítko. Vše, co váš počítač dělá, je velmi explicitní. DOBŘE? Jedna malá chyba interpunkce, a Najednou se nechcete dostat to, co chcete. Dobře. Takže pojďme přiblížit zpátky ven. Půjdeme zpátky. No aby to velmi rychlou opravu. Budeme klást správné lomítko. Budeme ho šetřit. Budeme přiblížit zpět. Z nějakého důvodu, že to není být šťastný, ale pojďme vpřed a půjdeme zpátky k terminálu zde. Zrušte to. Budeme přiblížit. A ještě jednou, uděláme zajíček. A teď opravdu, to funguje. Hurá. DOBŘE. Takže pojďme se snažit, aby to trochu obecnější. Uvidíme, jestli místo toho jen tisk jeden konkrétní snímek, uvidíme, jestli bychom mohli udělat tuto tak, že se můžeme dostat všech 10 z těchto rámů animovaných že jsme chtěli mít. Takže znovu, pojďme tento krok v době. Pojďme si nejprve zobecnit to, ne takže dělám všechny snímky, ale tak jsem dělat jednu rám, který bych mohl chtít. Tak v čem je rozdíl mezi rámy? Je králíček totéž? Diváků: Ano. BRIAN SCASSELLATI: Jo. Jaký je v tom rozdíl? Diváků: Position. BRIAN SCASSELLATI: Jeho pozice, že jo? A jak mohu kontrolovat svou pozici? Kolik bodů, že jsem uvedení na začátku a kolik bodů jsem si uvedení na konci. Takže jsem měl pět u začínající a pět na konci. Pojďme nahradit, že pět se cyklu for. DOBŘE. A já se vytvořit pro smyčky teď, to bude říkat, Chystám se vytisknout nějaké číslo teček na začátku. Chystám se použít proměnnou. Řekněme, co kdybych as čítač v mé smyčce. A budu deklarovat to vrchol. A pak v smyčce for Musím udělat tři věci. První věc, kterou musíte udělat, je musím inicializovat i. Co bych měl inicializovat to začne být? 0. DOBŘE. Pak jsem je třeba říct, co je stav ukončení? Kdy bych měl přestat? No, kolik bodů se ti Chcete-li tisknout na tohle? Diváků: Five. BRIAN SCASSELLATI: Pět znovu? Jak se o pojďme něco udělat odlišné, jsme udělali pět. Ukažme, že je to jinak. SPEAKER 22: Two. BRIAN SCASSELLATI: Two. DOBŘE. Takže pokud chci dvě tečky, to, co bych měl tady? Hlediště: Tři. BRIAN SCASSELLATI: Tři. DOBŘE. Kolikrát je to, že jít projít? To bude projít třikrát, 0, 1, a 2, pravý? Dobře, vraťme se na dva. Teď budeme mít dvě tečky. A co dělat, chci dělat každý Tentokrát jsem projít smyčky? Co se musí změnit Pokaždé, když jsem se projít? SPEAKER 23: Přidat tečku. BRIAN SCASSELLATI: musím jít dál. Chystám se přidat tečku. Chystám se vytisknout tečku, Pokaždé, když přes smyčku. Ale jak mám sledování toho, jak Mnohokrát jsem přes smyčku? Já používám i, že variabilní, že čítač. Takže pokaždé, když díky, jdu pro zvýšení čítače o jedničku. Nyní, to je stejné pro mě, jak říká i = i + 1. To je v pohodě. Mohl bych to udělat that-- Líbí se mi těsnopis, tak jsem chtěl říct i ++. DOBŘE. Pojďme udělat totéž se zde v dolní části. Jen jsem trochu udělal, že jeden. Budu vám kluci nechat udělat jeden úplně. Dobře. Takže to, co bych měl psát tady? Tady je moje pro smyčce. Chystám se udělat printf (), a jdu aby to tak, že jsem tisknout pouze jednu tečku na tomto dně. Co mám napsat Uvnitř to pro smyčky teď? No, v první řadě to, co Proměnné bych měl použít? SPEAKER 24: j. BRIAN SCASSELLATI: Mohl bych použít j. Mohu použít stejnou jízdenku? Mohu použít i znovu? To jo. To je v pořádku, protože Is že jsem pomocí tady, Nechci je potřebujeme znovu, když Jsem se pustit do tohoto bodu. Takže to, co bych měl inicializovat jsem? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Co mám zkontrolovat? Kolik bodů musím teď u konce pokud mám dvě tečky na začátku? Potřebuji osm na konci, takže to, co Měla jsem zkontrolovat, i méně than-- Publikum: Sedm, osm, devět. BRIAN SCASSELLATI: Slyšel jsem, že sedm. Slyšel jsem, osm. A já jsem slyšel devět. DOBŘE. Takže jsme všichni v právu ball-- Jason říká, že 10. DOBŘE. Kdybych potřeboval dvě tečky na První z nich, jak mnoho dělat Já-- a já potřebuju osm bodů pro Poslední one-- jsem dal dvě nahoře, to, co bych měl dole? Diváků: Osm. BRIAN SCASSELLATI: Eight. Vzhledem k tomu, že to bude počítat od nuly do sedmi. A to je osmkrát přes smyčku. DOBŘE. A co mám dělat na konci? Diváků: i ++. BRIAN SCASSELLATI: i ++. Dobře. Tak, že se dívá dost dobře tam. Zkusme to a uvidíme, co to udělá. DOBŘE. Takže jdeme uložit. Pěkné a zachránil. Budeme zoom zpět. Zkusíme to tady v terminálu. Budeme přiblížit. Chybička se vloudila. Budeme, ještě jednou, aby náš bunny program. A do toho pusťte a provádět zajíčka. A je to tak. Takže tam je náš zajíček. V případě, že má dvě tečky na začátku a osm tečky na konci. Všichni pořád se mnou? DOBŘE. Tak jsme vybudovali. Postavili jsme jednu zajíček, jeden konkrétní frame. Nyní jsme byli schopni zobecnit, že pro sestavení více, různé druhy rámů. Teď pojďme do toho, a mají generovat ne jen jeden snímek, ale pojďme tvořit 10 rámy, kde jsme se pomalu aby se králíček přesuňte všechny cesta přes pole. Dobře. Pojďme zpátky. A my se pokusíme nyní. Takže to, co mám opravdu potřeba tady změnit? Co potřebuji, abych mohl změnit? SPEAKER 26: Nejprve musíte změnit počet bodů maxima na začátku. Protože jestli děláme 10 bodů, to bude muset až do měřítka. BRIAN SCASSELLATI: Jo. Takže teď jsem to nějak hardwired se vždycky dvě tečky na začátku a vždycky osm tečky na konci. Chci stavět další smyčku, že jo? Protože nechci, aby stavět jen jeden zajíček obrázek, Chci se postavit 10 zajíček obrázky. Tak jsem třeba stavět další smyčku, a jak jsem jít přes tuto smyčku, Chci změnit, kolik tečky tisknout na začátku a kolik teček tisknout na konci, na základě které procházet smyčkou Jdu do toho. Dobře. Takže pojďme získat další žeton. Někdo před tím, než j, takže uděláme další j. A teď, budeme stavět další pro smyčce. Co se děje uvnitř, že smyčky? Tento materiál musí jít uvnitř smyčky, že jo? Má zajíček má jít dovnitř smyčky? Musím zajíček v každý z těchto 10 snímků? Diváků: Hm. BRIAN SCASSELLATI: Jo. Chci zajíček v každé z 10 snímků, je to tak? Jak se o body v konec, potřebuji, že? DOBŘE. Takže budu odsadit všechny z nich. Budu vyzdvihnout všechny to, a budu zasáhnout Tab. A že to bude tlačit na celém trochu, takže je to pro mě lehké vidět, co je ve smyčce. A pak budu ukončit. Řekněme. DOBŘE? Nyní, v této smyčky, která Jsem building-- Jejda, aby to, takže si můžete see-- Mám svou proti j. Já začal ji na 0 ° C. Kolikrát nechci projít této smyčky? Diváků: 10 krát. BRIAN SCASSELLATI: 10 krát. Takže to, co jsem dal číslo by mělo tu? Publikum: 9, 10. BRIAN SCASSELLATI: 9, 10, Někdo musí říct, 11, ne? Chtěl jsem dvě tečky před a dal jsem menší než 2. Chtěl jsem osm bodů, Dal jsem i menší než 8. Teď chci jít až 10 časy, tak jsem dal J méně than-- Diváků: 10. BRIAN SCASSELLATI: 10. Tam jedeme. A co mám dělat na konci k j? ++, Zvýšit ji. DOBŘE. A teď, tady je choulostivé části, co je bude dít právě teď, když to udělám? Budu tisku 10 snímků? SPEAKER 27: Myslím si, budou všichni být stejné. BRIAN SCASSELLATI: Budou být všechny stejné, ne? Vzhledem k tomu, všechny z nich jsou stále pokračují aby dvě tečky na začátku. Ale já nechci je všechny mají dvě tečky na začátku. Kolik bodů dělat já chtějí na začátku? Diváků: Změna. BRIAN SCASSELLATI: I Chcete to změnit, je to tak? Takže to, co mám tady, že to mění Pokaždé, když je smyčka prochází? Diváků: Počet bodů, j. BRIAN SCASSELLATI: j, počet bodů. Tak jsem se to může změnit, že j. Při prvním prostřednictvím smyčky, co je to bude? Co mám nastavit j se na první? Diváků: 0. BRIAN SCASSELLATI: Tak kolik Časy mám dělat? 0. Podruhé přes smyčku, j je bude 1, protože jsem ji zvyšovat. Kolik bodů mám vytisknout? 1. Potřetí přes smyčku, kolik bodů mám tisknout? Hlediště: Tři. BRIAN SCASSELLATI: j bude 3. Kolik bodů mám vytisknout? Oh, promiň, j to bude 2. Kolik bodů mám vytisknout? Publikum: 2. BRIAN SCASSELLATI: 2. OK, takže budu držet zvyšování, že jak jsme jít spolu. Jak se o dole? Co se děje tady dole? Nechci 8 vždy na konci už? SPEAKER 28: 10. BRIAN SCASSELLATI: Chci 10 tečky? Chci, aby to změnit, taky. Tak jak to chci, aby to změnit? Diváků: [Neslyšitelné]. BRIAN SCASSELLATI: No, pokud já mají pět tečky na začátku, Kolik bodů je získám na konci? Diváků: Five. BRIAN SCASSELLATI: Mám-li Šest tečky na začátku, kolik se dostanu na konec? Publikum: Čtyři. BRIAN SCASSELLATI: Když jsem se dostal Sedm tečky na začátku, kolik se dostanu na konec? Hlediště: Tři. BRIAN SCASSELLATI: Když jsem dostal j tečky na začátku, kolik se dostanu na konec? 10-j. DOBŘE. Tak pojďme zkusit ven. Takže jdu zachránit náš zajíček program. Opět budeme oddálit. Půjdeme dolů do našeho terminálu. Budeme je vymazat. A přiblížit. Uděláme náš zajíček program znovu. A my ji provést. Uh-oh. Vydrž, pojďme oddálit. Řekl jsem si 10 snímků? No, kolik zajíčci nevidím tam nahoře? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Dostal jsem 10 snímků. Jsou všechny stejné? Diváků: Jo. Ne. BRIAN SCASSELLATI: Ne. Že první, kdo je zajíček je daleko na levé straně. A tady, králíček je daleko na SPEAKER 29: Správně. BRIAN SCASSELLATI: Takže, co jsem zapomněl udělat? SPEAKER 30: Spuštění nového řádku. BRIAN SCASSELLATI: Zapomněl jsem začít nový řádek, znovu. Stejná chyba, kterou udělal předtím. Dobře, pojďme napravit. Teď jsem pořád kód tam, aby se nový řádek. Jak to, že to funguje? SPEAKER 31: Není to uvnitř smyčky. BRIAN SCASSELLATI: Oh, není to uvnitř smyčky. To je pravda. Je to tu sedí venku. A pro smyčky je všechno že je uvnitř tohoto textu. Takže budu pohybovat to uvnitř smyčky for. A já budu kartu před ním na ukazují, že je na správném místě. A teď, budeme jej uložit znovu. Budeme oddálit. Budeme přejít na naší terminálu. Přiblížit. Budeme předělat náš zajíček program. A teď, teď máme naše 10 snímků. [Tleskání] BRIAN SCASSELLATI: OK. Tak. Tady je náš vnořené smyčky. Byli jsme schopni generovat v vnitřní smyčky, kolik bodů jsem chtěl pro tisk na začátku, na konci. A vnější smyčka řízené kolik snímků jsem stavěl. Začali jsme s jedním malým jádro problému, a postavili jsme se od tohoto bodu. Dobře. Pojďme udělat ještě jeden krok. Jste připraveni? Je tu ještě jedna věc, tady, kde jsme vlastně trochu dostal více složitosti, než potřebujeme. Pojďme se podívat. Takže náš zajíček programu, kdybych oddálit tady, Já vlastně dělat některé totéž věc znovu a znovu. Co mám dělat, že je to druh to samé opakuje dvakrát? SPEAKER 32: Tisk tečky. BRIAN SCASSELLATI: Jo Tisknout ty tečky dvakrát. Opravdu, měl bych mít Tento komentář tady dole. Tisknout nějaké tečky u začátek, a to až sem. A pak jsem vytisknout nějaké tečky na konci. A já trochu přesně totéž. Co budeme začít pracuje na v příštích několika týdnech je schopen, aby tyto bloky kód, který budeme používat znovu a znovu, a prostřednictvím procesu volal abstrakce, budeme tahat ven a napište je jednou tak, že se pak můžeme znovu použít znovu a znovu. Takže pojďme to zkusit. Připraveni? Chystáme se tento blok kódu. A já vezmu ji odtamtud. A já jdu na define-- se na dně, Chystám se napsat novou funkci. Nebude to k návratu nic. A já budu říkat printDots. Bude to trvat jeden Argument, celé číslo, které říká, že bych měl howManyDots tisku. A teď místo tisku j tečky, budu tisknout říct howManyDots mám tisku. A je tu jeden malý problém. Ví někdo, co to je? Co mám, že je uvedena tady, že to není definováno? Diváků: [Neslyšitelné] BRIAN SCASSELLATI: No, jak počet bodů je definována až tady, ale já jsem s použitím této proměnné i. Takže já vezmu ten proměnnou i a budu definovat ji zde místo toho. Tak teď to bude stay-- oops, dostal Caps Lock na somehow-- Jsem bude držet jsem se tady. Takže teď tady je můj malý funkce nebo podprogramu, a říká, kolik bodů mám tisknout? A bude to jít přes tuto smyčku a vytisknout znovu a znovu. Pak jsem si pozměnit svůj program až sem. A co já říkám, že funkce? printDots. Takže já zavolám printDots. Kolik bodů dělat Chci vytisknout poprvé před zajíček? Diváků: j. BRIAN SCASSELLATI: j. Kolik bodů dělat Chci vytisknout Na konci, po zajíček? 10-j. A je tu ještě jedna věc, kterou mi chybí. Jak jste dnes viděli v přednášce, budeme deklarovat printDots nahoře dát prototyp. DOBŘE. Takže to, co jsem udělal je, že jsem se snažil izolovat, aby znovu použít část kódu že jsem udělal znovu a znovu. A já jsem se snažil vytáhnout ho ven tak, že to vše je obsaženo v jednom místě. Tak, když mám někde chybu, Musím opravit na jednom místě pouze. Dobře. Takže pojďme zachránit. A pojďme se ujistili, že funguje. Tak pojďme ven. Půjdeme opět na naši terminálu. Budeme přiblížit. Budeme dělat, že zajíček proces. Aha. A to mi dal varování. Co je to mi říkal? No v některé z těchto časy, chcete vždy přejděte do úplně první error-- Nyní na tento jeden, já jsem dostal jen jeden. To mi říká, že v bunny.c, on line 8, sloupec 9, je tu problém. To říká, že jste prohlásil, toto proměnná i, a vy jej nevyužili. Teď normálně, to je není to nejhorší chyba. To je snadný opravit. A ve skutečnosti, můžeme jít zpátky. Můžeme se vrátit k bunny. A v tomto případě, vše, co musíte udělat, je zbavit se i, proto, že jsme nepoužíváte i uvnitř hlavní ještě. Jsme prostě používat v rámci našeho sub-rutiny. Takže pojďme zachránit to. Půjdeme zpátky. A přiblížit. Budeme ještě jednou, aby zajíček. A opět jsou naši 10 snímků. DOBŘE. Kdykoliv jste dal procedure-- Jo. SPEAKER 33: Mám je-- jsem zmatená. Můžete se vrátit zpět ke kódu? BRIAN SCASSELLATI: Jo. SPEAKER 33: Takže, když jsi psal Váš prototyp, argument vám kdyby se jmenoval bylo voláno howMany? Ale below-- BRIAN SCASSELLATI: Ach jo. SPEAKER 33: --called jim něco jiný, já to nechápu. BRIAN SCASSELLATI: Proč oni jsou různé. Tak to je velká otázka. Takže otázka byla, a to až tady, jsem napsal howMany, a dole, jsem napsal howManyDots. Důvodem je, že ve vašem prototypu, je to vlastně nedává pozor na názvy, které jste uvedení v. Vše, co to opravdu záleží je to, že je to celé číslo. Chce znát formulář z toho, co jste uvedení v. Nyní stylistically-- oops--, co bych měl to, je rád, aby se tyto zápas. DOBŘE. Vzhledem k tomu, že budu držet to pro mě snazší pamatovat. Ale to byla moje chyba Jo. SPEAKER 34: A tak pro prototyp do práce, jen psaní, že linka, psaní prototyp, umožňuje tuto funkci, která přichází přímo pod něj se dostanete na konec a získat co to znamená? BRIAN SCASSELLATI: Co to znamená je, když kompilátor prochází, to jde od vrcholu kód ke dnu. A co to je prototyp, Je to v podstatě slib. Říká, že to bude funkce definovaná někde. Bude to být nazýván printDots. A to bude trvat jeden parametr že to bude celé číslo a bude to vrátit nic, void typu. DOBŘE. Slibuji vám, že to bude někde definována dolů na silnici. Ale kdykoliv vidíte že, jak jdete dolů přes zbytek mého Hlavní funkce, chci si k léčbě, že v závislosti že trvá jednu celočíselnou vstup. A tak, když kompilátor jde dolů Tím, že vidí ten slib. A když se dostane dolů, udržuje v chodu, běží dál, nalezne poprvé printDots je zmíněn. A říká, Oh, dáváte mi to j. j je celé číslo. Dobře jste mi slíbil, že by být celé číslo, a to je pravda. To je v pohodě. A nakonec, dolů na samém dně, než se dostanu do konce mého soubor, dělám dobře na můj slib a já to definovat. DOBŘE? SPEAKER 35: Takže, to saves-- Program vám ušetří mezery že se vrátí a vyplní na konci? BRIAN SCASSELLATI: To není o přidělení paměti. Je to vlastně jen o tom, co typ jste čekala, že uvidí. Pokud by tato věc mít jeden Argument, nebo pět argumenty? Pokud by si to celá čísla být vzhledem k tomu, nebo řetězce? To je vše, co hledá udělat, je zkontrolovat, se mi dávání správný druh argumentace. DOBŘE? Dobře. Dovolte mi, abych vám odejít s jeden další bit na pohled. ASCII art není velkým vzorem animace jako je tomu dnes. Ale někteří lidé samozřejmě brát věci a tlačí ji svým extrémů. Toto je, jak David prokázáno V přednášce, kus kódu že byste měli za žádných okolností pokusit duplikovat sami. Vzhledem k tomu, že je hrozné stylisticky. Ve skutečnosti, že je navržen tak, aby jako těžké, jak je to možné číst. DOBŘE. Tak, aby udělat znovu, pojďme přiblížit zde. Chystám se jít, změňte adresář. Chystám se jít nahoru jeden level, zpátky do svého pracovního prostoru. Budu změňte adresář, do této další adresář, který jsem vytvořil. A to je Mezinárodní Zatemnil C Programming Contest. Zatemnil prostředky tak těžké jak je možné pochopit. Takže prosím, nemusíte se bát, když se podíváte na to a jít, nemůžu číst, že. To je smysl toho. DOBŘE? Ale máme to úžasný program, že jsem jít se podívat na pouhým zadáním více. A uvidíme, jestli můžu oddálit jen trochu, takže můžete vidět A to je program. To je pojmenované endo.c. A vypadá to, že tento kbelík s druh písmeny F-L-U-I-D v něm. Jedná se vlastně o program. Je napsán v nejtemnější tak, že autoři by případně mohlo být napiš to. Ale je to nádherný kousek, který generuje model dynamiky kapalin. A tak jdeme dát tento model vstup, který vypadá to, ze staired set kontejnerů s nějakou tekutinou, některé kapalina, a to až v horní části. A budeme si to simulovat co se děje s ním. Takže budu volat tuto funkci, endo. A já ti dám to, že vstupní soubor, který jsem měl. A tam je náš ztělesněním ASCII art. Kompletní tekutina dynamický simulátor běží v několika málo řádků kódu. Teď, co je vlastně opravdu úžasné o tomto malém programu je, že chci, aby to teď zastavit, takže budu používat Jaký příkaz? Diváků: Control-C. BRIAN SCASSELLATI: Control-C. DOBŘE. Takže budu používat Control-C. C To je to zastavit. Budu vyčistit znovu. A teď budu vyvolat Program, spustit program, použití se jako vstup. A uvidíme tekutiny dynamiku simulace to tavení. DOBŘE. Prosím, nenechte tento program být věc, která vás plete. Je to tak, že můžeme skončit na něco cool a zajímavé. DOBŘE. Hodně štěstí se svými problémovými sad. Budeme rádi zodpovíme Otázky po třídě. Díky moc, kluci.