1 00:00:00,000 --> 00:00:03,353 >> [Přehrávání hudby] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Ahoj, všichni. 4 00:00:06,050 --> 00:00:07,777 To je CS50 je supersection. 5 00:00:07,777 --> 00:00:09,860 Přidělené Sekce nebude spustit další týden. 6 00:00:09,860 --> 00:00:11,580 A tak dnes, jsem tady with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to vlastně se podívat na problém 9 00:00:14,163 --> 00:00:16,110 nastavit jednu, kurz je První týdny materiálu, 10 00:00:16,110 --> 00:00:19,780 si budete orientovány CS50 IDE, trochu Linux, operační systém, který je 11 00:00:19,780 --> 00:00:22,290 běží na IDE, jakož i se podívat na některé z přechodu 12 00:00:22,290 --> 00:00:25,730 od nuly do C vedení až do problému nastavit jednu. 13 00:00:25,730 --> 00:00:28,340 >> Takže bez dalších okolků, v problému nastavit jednu, 14 00:00:28,340 --> 00:00:30,520 budete mít představil CS50 IDE, který 15 00:00:30,520 --> 00:00:33,230 je tento web-based programování prostředí, které používáme, aby 16 00:00:33,230 --> 00:00:34,280 psát programy. 17 00:00:34,280 --> 00:00:37,280 Je navržen tak, aby vypadat velmi připomínající typického počítače 18 00:00:37,280 --> 00:00:39,430 systém používáte operační systém s názvem Linux. 19 00:00:39,430 --> 00:00:42,440 Ale je to v tzv mrak, což znamená, že všechny v třídě 20 00:00:42,440 --> 00:00:45,100 může skutečně mít jeho nebo její na vlastní účet a použít ji, stejně. 21 00:00:45,100 --> 00:00:48,950 >> Takže většina z vás asi nikdy použity v prostředí systému Linux před nebo možná 22 00:00:48,950 --> 00:00:50,447 i příkazový řádek prostředí. 23 00:00:50,447 --> 00:00:52,280 A příkazový řádek Prostředí je jiný. 24 00:00:52,280 --> 00:00:53,200 Je to všechno textová. 25 00:00:53,200 --> 00:00:54,730 Je to všechno klávesové zkratky. 26 00:00:54,730 --> 00:00:59,480 A není to Mousing, žádné ikony, bez oken dialog, žádné menu. 27 00:00:59,480 --> 00:01:00,212 Je to čistě textový. 28 00:01:00,212 --> 00:01:01,920 Takže na první pohled, je to druh ze se cítí jako krok 29 00:01:01,920 --> 00:01:04,434 zpět, pokud jde o propracovanosti. 30 00:01:04,434 --> 00:01:06,600 Ale nakonec je to hodně silnější, určitě, 31 00:01:06,600 --> 00:01:08,510 pro počítačové vědce, nakonec. 32 00:01:08,510 --> 00:01:09,540 >> Takže pojďme se podívat. 33 00:01:09,540 --> 00:01:13,850 Tady jsem v CS50.io, přes který můžete se přihlásit do CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 A podobně jako v Scratch, je tu tři hlavní oblasti na této obrazovce. 35 00:01:17,414 --> 00:01:20,080 Takže na levé straně, máme co bude prohlížeč souborů. 36 00:01:20,080 --> 00:01:22,413 A tam je tato složka na top, který je teď prázdný 37 00:01:22,413 --> 00:01:24,690 od té doby jsem se zbavil všech mých Soubory před supersection. 38 00:01:24,690 --> 00:01:27,599 A to je, kde budeme uložit C soubory, které píšeme. 39 00:01:27,599 --> 00:01:30,890 V pravém horním rohu, máme místo, kde všechny naše kódu se dostane v písemné formě. 40 00:01:30,890 --> 00:01:34,610 A skutečně, když jsem klikněte na toto Plus, to se chystá dovolte mi, abych si vybrat nový soubor. 41 00:01:34,610 --> 00:01:38,310 A tady můžu začít psát kód v C nebo, Opravdu, libovolný počet dalších jazyků. 42 00:01:38,310 --> 00:01:42,670 >> A pak se ve spodní části, kde je říká jharvard @ ide50-- a vaše vůle 43 00:01:42,670 --> 00:01:45,080 řekni něco trochu different-- co se to jmenuje? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Okno terminálu. 46 00:01:49,310 --> 00:01:49,570 To jo. 47 00:01:49,570 --> 00:01:51,810 Takže okno terminálu tzv příkazového řádku 48 00:01:51,810 --> 00:01:55,540 rozhraní, přes které můžete komunikovat se základním operačním systémem. 49 00:01:55,540 --> 00:01:58,220 A teď, budeme aby velmi malé použití tohle-- 50 00:01:58,220 --> 00:02:01,170 jen kompilace, podívat se na chybové zprávy, které vidíme, 51 00:02:01,170 --> 00:02:02,347 a spouštět naše programy. 52 00:02:02,347 --> 00:02:04,680 Ale nakonec, jedeme dělat mnohem více, stejně. 53 00:02:04,680 --> 00:02:07,490 A dokonce můžete nainstalovat software a spravovat svůj pracovní prostor 54 00:02:07,490 --> 00:02:09,066 v rámci CS50 IDE, stejně. 55 00:02:09,066 --> 00:02:10,440 Ale o tom až někdy jindy. 56 00:02:10,440 --> 00:02:12,689 >> Tak pojďme do toho pusťte a psát velmi jednoduchý program, jen 57 00:02:12,689 --> 00:02:15,064 projít warm-up hello.c, který je možná 58 00:02:15,064 --> 00:02:16,480 nejjednodušší programu můžeme psát. 59 00:02:16,480 --> 00:02:18,330 Už jsem otevřel novou kartu. 60 00:02:18,330 --> 00:02:24,310 Chystám se jít dopředu a říkají, zahrnují standardní io.h. 61 00:02:24,310 --> 00:02:25,325 Pak int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 A pak printf ("Hello, world" zpětné lomítko n, blízko citace, 64 00:02:35,200 --> 00:02:39,480 zavřít závorek, a středník. 65 00:02:39,480 --> 00:02:39,990 >> Dobře. 66 00:02:39,990 --> 00:02:41,700 Takže teď si všimnout moje okno je untitled. 67 00:02:41,700 --> 00:02:44,840 Takže jsem velmi rychle se jít do souboru, uložte. 68 00:02:44,840 --> 00:02:46,910 A to je důležité, aby Říkám to není "ahoj." 69 00:02:46,910 --> 00:02:49,243 Takže velmi častý omyl, a to zejména v problém nastavit jednu, 70 00:02:49,243 --> 00:02:52,530 je náhodou jen zavolat své Program "voda" nebo "chamtivý" nebo "Mario" 71 00:02:52,530 --> 00:02:53,890 nebo "úvěr", nebo podobně. 72 00:02:53,890 --> 00:02:55,970 Ale ve skutečnosti chcete, aby se jisti, že budete mít příponu souboru 73 00:02:55,970 --> 00:02:58,928 protože to je jediný způsob, kompilátor a také editor kódu 74 00:02:58,928 --> 00:03:00,710 ví, že jste vlastně psaní C kód. 75 00:03:00,710 --> 00:03:02,280 Tak nech mě jít dál a klepněte na tlačítko Uložit. 76 00:03:02,280 --> 00:03:05,710 >> A teď taky, co CS50 IDE udělal pro nás je, že je to také 77 00:03:05,710 --> 00:03:07,120 syntax zvýrazněný všechno. 78 00:03:07,120 --> 00:03:08,822 Tak se to dělá všechno velmi pestrá. 79 00:03:08,822 --> 00:03:10,780 A celý účel že není funkční. 80 00:03:10,780 --> 00:03:14,290 Je to jen nakreslit oči na koncepčně různé kousky 81 00:03:14,290 --> 00:03:15,310 tohoto programu. 82 00:03:15,310 --> 00:03:17,570 Tak pojďme do toho a přeložil. 83 00:03:17,570 --> 00:03:19,490 A mohu sestavit to v několika způsoby. 84 00:03:19,490 --> 00:03:22,010 A v týdnu jedna, old-school způsob, jak jsme to udělali 85 00:03:22,010 --> 00:03:26,250 to byl doslova u Command line-- "řinčení hello.c." 86 00:03:26,250 --> 00:03:27,596 A pak jsem stiskněte klávesu Enter. 87 00:03:27,596 --> 00:03:29,720 A zdánlivě nic neděje V okně terminálu. 88 00:03:29,720 --> 00:03:32,654 Ale to, co se změnilo v IDE? 89 00:03:32,654 --> 00:03:35,320 Tam, kde se opět IDE prostě znamená, Integrované vývojové prostředí. 90 00:03:35,320 --> 00:03:38,360 Je to fantazie způsob, jak říkat toto integrované vývojové 91 00:03:38,360 --> 00:03:40,620 prostředí pro vývoj softwaru. 92 00:03:40,620 --> 00:03:42,477 Co tedy změnit v uživatelském rozhraní? 93 00:03:42,477 --> 00:03:44,310 Co jste si to je něco jiného, ​​Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Všiml jsem si něčeho pod IDE50 složce tady. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Jo. 96 00:03:47,850 --> 00:03:50,230 Tak tady nahoře, a to nejen máme "hello.c." 97 00:03:50,230 --> 00:03:53,120 Máme také "a.out", což je je to za hloupé jméno pro program. 98 00:03:53,120 --> 00:03:56,430 Ale ve skutečnosti, to je výchozí název pro Program, když jste právě kompilace kódu 99 00:03:56,430 --> 00:03:59,110 a neříkejte kompilátor co soubor na výstup. 100 00:03:59,110 --> 00:04:01,790 Takže pokud chci spustit to, myslím, je třeba sdělit compiler-- 101 00:04:01,790 --> 00:04:05,340 nebo spíše, musím řekněte pracovní prostor, který jsem 102 00:04:05,340 --> 00:04:09,780 chcete spustit program s názvem "a.out." 103 00:04:09,780 --> 00:04:10,550 Enter. 104 00:04:10,550 --> 00:04:12,474 A je tu "ahoj, svět, "teď" ./ ". 105 00:04:12,474 --> 00:04:13,390 je ve skutečnosti důležité. 106 00:04:13,390 --> 00:04:16,050 I když normálně my jen napsat názvy příkazů, 107 00:04:16,050 --> 00:04:19,060 když je to program, který jsem písemná, vy chcete říct, "./" 108 00:04:19,060 --> 00:04:22,460 protože to výslovně říká, Linux že chcete spustit program s názvem 109 00:04:22,460 --> 00:04:26,930 "a.out", které je v tomto, kde tečka znamená tento adresář, že jsem v současné době 110 00:04:26,930 --> 00:04:31,600 in, což se stává, že je volal pracovní prostor, "a.out. 111 00:04:31,600 --> 00:04:35,410 Protože když jsem právě řekl "a.out," Enter, Jdu se dostat "velení a.out ne 112 00:04:35,410 --> 00:04:38,035 nalezeno ", protože computer-- proto, že jsem vynalezl "a.out;" 113 00:04:38,035 --> 00:04:40,910 nepřišel s computer-- neví, kde ji hledat, 114 00:04:40,910 --> 00:04:43,590 i když je to správné pod nosem, abych tak řekl. 115 00:04:43,590 --> 00:04:44,090 DOBŘE. 116 00:04:44,090 --> 00:04:49,910 Tak jsme mohli to změnit být "řinčet -o ahoj hello.c." 117 00:04:49,910 --> 00:04:53,030 A když jsem stiskněte klávesu Enter, jaký program to bude na výstup pro mě? 118 00:04:53,030 --> 00:04:55,710 Jaký je název souboru? 119 00:04:55,710 --> 00:04:57,500 Jo, v zádech. 120 00:04:57,500 --> 00:04:58,479 To je pravda. "Ahoj." 121 00:04:58,479 --> 00:05:00,520 Takže "ahoj" bude název programu 122 00:05:00,520 --> 00:05:04,610 proto, že jsme použili takzvané linka argument, příkaz, což je jen 123 00:05:04,610 --> 00:05:08,120 způsob, jak změnit chování kompilátor skutečně výstup 124 00:05:08,120 --> 00:05:09,450 specifický název souboru. 125 00:05:09,450 --> 00:05:12,400 A skutečně, když jsem zoom ven a podívat se tady, 126 00:05:12,400 --> 00:05:17,430 teď mám nejen "a.out" a "hello.c", ale také "Ahoj," stejně. 127 00:05:17,430 --> 00:05:22,410 Takže teď můžu dělat "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 A je tu "Hello, World". 129 00:05:23,640 --> 00:05:25,640 Ale lastly-- a to bude nyní konvence 130 00:05:25,640 --> 00:05:27,590 používáme v celém semestr, typically-- 131 00:05:27,590 --> 00:05:30,070 je můžete také jen říci "dělat ahoj." 132 00:05:30,070 --> 00:05:33,370 A skutečně, je to říká, je to do dnešního dne, protože již existuje. 133 00:05:33,370 --> 00:05:37,860 Nech mě jít dopředu a odstranit, s Příkaz rm, a to jak "a.out" - 134 00:05:37,860 --> 00:05:39,644 a říct: "odstranit pravidelný soubor a.out?" 135 00:05:39,644 --> 00:05:41,810 To prostě znamená, že ne jisti, že ji chcete smazat? 136 00:05:41,810 --> 00:05:42,880 Jdu říct, že ano. 137 00:05:42,880 --> 00:05:46,690 A pak budu odstranit "ahoj", ale ne "hello.c." 138 00:05:46,690 --> 00:05:49,920 Budu říkat "ano" výslovně, ale "y" je dostatečná, stejně. 139 00:05:49,920 --> 00:05:52,140 >> A teď si všimnout, jestli jsem typ ls-- Což, vzpomínat, 140 00:05:52,140 --> 00:05:55,540 znamená list-- vyjmenovává vše ze souborů v mé složce. 141 00:05:55,540 --> 00:05:57,850 A skutečně, když jsem zoom ven a podívat se na levém horním rohu, 142 00:05:57,850 --> 00:05:59,730 potvrzuje, že to, co je v této složce, a to i 143 00:05:59,730 --> 00:06:04,990 i když je to označeno jako IDE50 tady a nikoliv pracovní prostor, je to jen "hello.c." 144 00:06:04,990 --> 00:06:09,152 Takže teď tady dole, pokud I to "dělat ahoj," Enter, 145 00:06:09,152 --> 00:06:12,360 teď vidím mnohem delší příkaz, ale propracovanější příkaz, který se děje 146 00:06:12,360 --> 00:06:13,940 být užitečný v následujících týdnech přijít. 147 00:06:13,940 --> 00:06:16,720 A teď můžu říct, "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Takže pojďme se rychlou prohlídku Příkazy nějaký jiný Linux. 149 00:06:19,257 --> 00:06:21,840 Tak proč ne my krok zpět a dokonce podívat se na C více 150 00:06:21,840 --> 00:06:25,020 Obecně platí, že přechod od nuly na ° C, a pak uzavřít s pohledem 151 00:06:25,020 --> 00:06:27,305 na první problém nastavte v C. V pořádku. 152 00:06:27,305 --> 00:06:30,430 Takže budu pokračovat a právě čisté up mé pracovní plochy s Control-L jen 153 00:06:30,430 --> 00:06:31,429 udržet obrazovku upraveně. 154 00:06:31,429 --> 00:06:33,520 Ale to nemá funkční ovlivnit jinak. 155 00:06:33,520 --> 00:06:35,820 >> Připomeňme si, že jsme viděli Nyní několik příkazů. 156 00:06:35,820 --> 00:06:39,900 Takže jsme viděli řinčení, které obecně vy nebudete muset spustit ručně ještě. 157 00:06:39,900 --> 00:06:41,650 Budeme místo toho používat make. 158 00:06:41,650 --> 00:06:45,290 Ale my jsme také viděli ls, což ukazuje výpis souborů v mém adresáři. 159 00:06:45,290 --> 00:06:48,750 A teď, proč je there-- Jsou dva soubory nyní, "ahoj" a "hello.c." 160 00:06:48,750 --> 00:06:52,240 Proč je tam hvězda nebo hvězdička po "ahoj"? 161 00:06:52,240 --> 00:06:54,900 Co to znamenat, založený o tom, co jsme viděli v jednom týdnu? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Co myslíš? 164 00:07:00,400 --> 00:07:02,742 Co hvězda znamenat? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- programu "ahoj"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Ahoj *". 167 00:07:05,530 --> 00:07:06,330 To jo. 168 00:07:06,330 --> 00:07:07,760 Jo, jo? 169 00:07:07,760 --> 00:07:08,639 Oh, spustitelný. 170 00:07:08,639 --> 00:07:09,180 To je pravda. 171 00:07:09,180 --> 00:07:10,890 Tak, že znamená, že "ahoj" je spustitelný. 172 00:07:10,890 --> 00:07:13,430 Takže ve skutečnosti, to je důvod, proč Můžu dělat "./hello." 173 00:07:13,430 --> 00:07:13,930 Dobře. 174 00:07:13,930 --> 00:07:15,179 Takže co jiného můžu dělat tady? 175 00:07:15,179 --> 00:07:17,290 No, to dopadá mohu také vytvářet adresáře. 176 00:07:17,290 --> 00:07:20,924 Tak nech mě jít dopředu a vytvořit, například, "pset1" adresář. 177 00:07:20,924 --> 00:07:23,590 A problém nastavit specifikace bude mít budete dělat přesně to, 178 00:07:23,590 --> 00:07:25,260 takže si nemusíte pamatovat dnes. 179 00:07:25,260 --> 00:07:27,340 Ale "mkdir pset1" Zdá se, mít žádný dopad. 180 00:07:27,340 --> 00:07:30,540 Ale opět, žádná chybová zpráva je obecně dobrá věc. 181 00:07:30,540 --> 00:07:34,060 Takže když jsem typ "ls" now-- ah, nyní Mám spustitelný soubor s názvem 182 00:07:34,060 --> 00:07:36,570 "Dobrý den," soubor C s názvem "hello.c." 183 00:07:36,570 --> 00:07:40,860 A pak koncové lomítko, tak aby mluvit, znamená, že se jedná o adresář. 184 00:07:40,860 --> 00:07:42,510 >> Takže opravdu, teď chci otevřít. 185 00:07:42,510 --> 00:07:45,730 A nemyslím si, dvojitým kliknutím na něj, jako v GUI, grafickém prostředí. 186 00:07:45,730 --> 00:07:48,550 Místo toho jsem řekl "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Enter. 188 00:07:49,640 --> 00:07:53,100 Nic zajímavého se zdá, že se stalo s výjimkou mého malého řádku 189 00:07:53,100 --> 00:07:57,300 here-- to je Linux je připomenutí mě, kde jsem, tak co složka je otevřená. 190 00:07:57,300 --> 00:08:00,080 Je to jen mi říct výslovně na rozdíl od graficky. 191 00:08:00,080 --> 00:08:05,100 A když jsem typ "ls," Proč vidím další neprodleně vyzve, myslíte, 192 00:08:05,100 --> 00:08:07,269 když jsem se seznam obsahu pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Pravděpodobně ne mít nic tam. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Jo. 195 00:08:09,630 --> 00:08:11,510 Takže nemáme evidentně vytvořil něco tam 196 00:08:11,510 --> 00:08:13,150 Jen proto, že jsem vytvořil adresář. 197 00:08:13,150 --> 00:08:17,690 A teď, když jsem chtěl vytvořit file-- pro instance, mohl bych vytvořit nový soubor. 198 00:08:17,690 --> 00:08:20,190 A pak bych mohl jít do Uložit a uložte jej jako, 199 00:08:20,190 --> 00:08:23,090 jako: "mario.c" pokud děláte Standard Edition pset jedna. 200 00:08:23,090 --> 00:08:27,610 A pak, jako každý Mac nebo PC, jen vyberte složku "pset1, Uložit. 201 00:08:27,610 --> 00:08:28,740 A nyní soubor je prázdný. 202 00:08:28,740 --> 00:08:31,160 Ale pojďme přiblížit znovu na sekundu. 203 00:08:31,160 --> 00:08:32,470 Pojďme tady dělat ls. 204 00:08:32,470 --> 00:08:34,470 Teď vidíme, "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Takže je tu pár dalších příkazů, které jsou dobré mít na paměti, než time-- 206 00:08:37,850 --> 00:08:41,200 čirý, nebo Control-L je to, co jsem Byl bít; mkdir jsme viděli; 207 00:08:41,200 --> 00:08:45,240 rm jsme viděli, také, což je Pro odstranění nebo odstranění souboru. 208 00:08:45,240 --> 00:08:49,310 Dejte si pozor můžete also--, a když se podíváte v on-line výukových programů, budete rm -rf 209 00:08:49,310 --> 00:08:52,630 je velmi běžný způsob, jak říkat odstraníte složku, která má věci v něm. 210 00:08:52,630 --> 00:08:54,280 Stačí být super, super opatrný. 211 00:08:54,280 --> 00:08:58,780 -rf znamená rekurzivně smazat, co to je 212 00:08:58,780 --> 00:09:01,150 se snažíte smazat a násilně odstranit. 213 00:09:01,150 --> 00:09:04,630 Takže rekurzivní znamená, že pokud je to složka s složka se složkou se složkou, 214 00:09:04,630 --> 00:09:05,690 odstranit všechny z nich. 215 00:09:05,690 --> 00:09:08,680 A násilně znamená, nemají ani ask me ano nebo ne, jsem si jistý? 216 00:09:08,680 --> 00:09:11,960 Takže je to super nebezpečný způsob Rychle mazání spoustu věcí. 217 00:09:11,960 --> 00:09:17,210 Ale beware-- příliš často dělá neohrožený studentka omylem smazat, řekněme, pset 218 00:09:17,210 --> 00:09:18,000 jedním, například. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: A v případě, že právě dělat -r, jdou 220 00:09:19,833 --> 00:09:21,870 požádat je o každém jednom souboru. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Což je mírně nepříjemné. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Jo. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Takže to je důvod, proč tak mnoho z nás, já v ceně, 224 00:09:25,813 --> 00:09:27,070 jsem ve zvyku používat -rf. 225 00:09:27,070 --> 00:09:27,861 Ale je to nebezpečné. 226 00:09:27,861 --> 00:09:29,010 Takže kupující na pozoru. 227 00:09:29,010 --> 00:09:31,050 A pak mv je druh zajímavě jmenován. 228 00:09:31,050 --> 00:09:33,600 Tak to je příkaz tah, který se cítí trochu divný 229 00:09:33,600 --> 00:09:37,260 protože můžete skutečně použít k přesouvat soubory z jednoho místa na druhé. 230 00:09:37,260 --> 00:09:39,970 Předpokládejme například, že jsem zpackal. 231 00:09:39,970 --> 00:09:43,660 Předpokládejme, že jsem vytvořil nový soubor pro pset. 232 00:09:43,660 --> 00:09:46,320 A zachránil jsem to jako "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Předpokládejme však, že jsem omylem uložit v IDE50-- takže v mém pracovním prostoru samotném 234 00:09:49,970 --> 00:09:51,580 a ne v pset1. 235 00:09:51,580 --> 00:09:53,960 >> Můžete vidět, jak mnoho je v levém horním rohu. 236 00:09:53,960 --> 00:09:55,284 Tam je "greedy.c." 237 00:09:55,284 --> 00:09:56,450 A je tu několik řešení. 238 00:09:56,450 --> 00:09:58,324 Takže člověk, mohu použít výborný uživatelsky příjemný způsob, 239 00:09:58,324 --> 00:09:59,740 pouhého přetažením. 240 00:09:59,740 --> 00:10:01,910 A že by ve skutečnosti tento problém vyřešit. 241 00:10:01,910 --> 00:10:04,967 Ale dnes, snažíme se dívat na čím více tajemné, ale účinných způsobů, 242 00:10:04,967 --> 00:10:05,550 jak toho dosáhnout. 243 00:10:05,550 --> 00:10:07,880 Takže dovolte mi, abych "LS" v pset1. 244 00:10:07,880 --> 00:10:09,690 A vidím jen "mario.c." 245 00:10:09,690 --> 00:10:13,450 Nech mě jít dál a dělat "cd ..". 246 00:10:13,450 --> 00:10:15,320 Takže CD je opět změna adresář. 247 00:10:15,320 --> 00:10:18,130 ".." Znamená to, co, i když? 248 00:10:18,130 --> 00:10:21,100 Minule jsem řekl, "CD pset1 "jít do pset1. 249 00:10:21,100 --> 00:10:24,360 Takže když říkám "cd ..", co mám dělat? 250 00:10:24,360 --> 00:10:24,910 Zpět. 251 00:10:24,910 --> 00:10:25,150 To jo. 252 00:10:25,150 --> 00:10:26,750 >> Takže to bude tzv rodiče. 253 00:10:26,750 --> 00:10:29,730 Přechod o úroveň výš, stejně jako opuštění ze složky. 254 00:10:29,730 --> 00:10:30,500 Tak Enter. 255 00:10:30,500 --> 00:10:31,900 A skutečně, podívej se, co to udělal. 256 00:10:31,900 --> 00:10:37,070 Namísto toho se přestěhoval mě prostě do pracovního prostoru of do pset1, který je v pracovním prostoru. 257 00:10:37,070 --> 00:10:39,710 A teď, když jsem typ "LS", je tu celá řada věcí. 258 00:10:39,710 --> 00:10:41,650 Tam je "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Takže teď dovolte mi použít mV do doslovně přesunout "greedy.c" do pset1. 260 00:10:48,720 --> 00:10:51,120 A tak mnoho Linux příkazů fungují přesně takhle. 261 00:10:51,120 --> 00:10:54,470 Berou žádné argumenty, nebo se mít jednu Argument nebo berou dva příkazový řádek 262 00:10:54,470 --> 00:10:55,449 argumenty a tak dále. 263 00:10:55,449 --> 00:10:57,240 A v tomto případě, je to doslovně to, co 264 00:10:57,240 --> 00:11:01,670 to říká, když succinctly-- přesunout greedy.c do pset1. 265 00:11:01,670 --> 00:11:02,310 Enter. 266 00:11:02,310 --> 00:11:03,310 Se zdánlivě nic neděje. 267 00:11:03,310 --> 00:11:06,180 Ale když dělám ls znovu, chamtivý je pryč. 268 00:11:06,180 --> 00:11:12,437 A když to udělám "cd pset1", Enter, a potom ls znovu, teď je to na správném místě. 269 00:11:12,437 --> 00:11:14,270 Jako stranou, je-li pro někteří reason-- zvláště 270 00:11:14,270 --> 00:11:16,194 Máte-li přerušované připojení k síti 271 00:11:16,194 --> 00:11:18,360 nebo jste chodí kampus s víkem notebooku 272 00:11:18,360 --> 00:11:20,180 zavřel a pak ji otevřít Znovu a váš pracovní prostor 273 00:11:20,180 --> 00:11:21,730 Zdá se, poněkud mimo synchronizaci, žádný velký problém. 274 00:11:21,730 --> 00:11:23,646 Stačí načíst prohlížeč okna, a to by mělo 275 00:11:23,646 --> 00:11:26,339 synchronizace tak, že levý prohlížeč souborů vypadá přesně 276 00:11:26,339 --> 00:11:27,380 jako okno terminálu. 277 00:11:27,380 --> 00:11:27,921 Není se čeho bát. 278 00:11:27,921 --> 00:11:31,460 Pokud máte pochybnosti, znovu načíst stránku, tak Dokud jste uložili již soubory. 279 00:11:31,460 --> 00:11:31,960 DOBŘE. 280 00:11:31,960 --> 00:11:34,710 Takže mv může být také použit k přejmenování souborů. 281 00:11:34,710 --> 00:11:36,760 A pojďme se podívat na Tento konečný příkaz zde. 282 00:11:36,760 --> 00:11:39,950 Tak suppose-- a to je Super běžné, příliš, brzy. 283 00:11:39,950 --> 00:11:46,400 Někteří studenti občas vytvořit soubor volal, pojďme say-- co je další? 284 00:11:46,400 --> 00:11:47,730 Jako "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Takže budu křičet, pro žádný důvod, ve všech čepice. 286 00:11:51,080 --> 00:11:53,190 Ale to není Správné jméno souboru 287 00:11:53,190 --> 00:11:56,660 i kdyby jen proto náš problém set Specifikace ti to neřekl 288 00:11:56,660 --> 00:11:59,430 uložte soubor jako verzálky "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Místo toho, očekáváme "water.c" malými písmeny. 290 00:12:01,320 --> 00:12:03,140 A ve skutečnosti, to je problematické, protože check50, 291 00:12:03,140 --> 00:12:04,370 Program jdeš setkat se v problému 292 00:12:04,370 --> 00:12:07,350 nastavit jeden, který automaticky testuje správnost kódu 293 00:12:07,350 --> 00:12:11,615 bude křičet na vás, jestli to nemůže najít "water.c" ve všech malými písmeny. 294 00:12:11,615 --> 00:12:12,712 >> Tak jsem třeba to napravit. 295 00:12:12,712 --> 00:12:14,920 Takže mnoho různých způsobů, to udělat, z nichž první 296 00:12:14,920 --> 00:12:18,330 by bylo ovládání tlačítkem nebo pravým tlačítkem myši název souboru a jen změnit Přejmenovat. 297 00:12:18,330 --> 00:12:19,740 Úplně v pořádku to udělat. 298 00:12:19,740 --> 00:12:21,820 Ale opět, dnes, pojďme dělat to trochu milovník. 299 00:12:21,820 --> 00:12:26,680 Využijme mV pro změnu "WATER.C" na "water.c." 300 00:12:26,680 --> 00:12:30,690 Takže můžete také použít první argument přejmenovat ji na druhý argument 301 00:12:30,690 --> 00:12:34,455 v případě, že druhý argument není, v Skutečnost, složky nebo název adresáře. 302 00:12:34,455 --> 00:12:35,120 >> Dobře. 303 00:12:35,120 --> 00:12:39,560 A konečně, trochu trick--, takže jsem v můj pracovní plochy adresář v tuto chvíli. 304 00:12:39,560 --> 00:12:43,660 Pokud se chci dostat do pset jednoho, Já určitě psát "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Ale je to tak únavné typu "pset1", nebo delší názvy souborů nebo názvy adresářů 306 00:12:47,260 --> 00:12:47,980 ještě pořád. 307 00:12:47,980 --> 00:12:51,960 Takže velmi často v Linuxu, co můžete udělat, je začít psát "BCPP" 308 00:12:51,960 --> 00:12:56,100 a jen nudit, hit Tab, a nechat Počítač údaj to pro vás. 309 00:12:56,100 --> 00:12:58,190 Super užitečné se dostat do tohoto zvyku. 310 00:12:58,190 --> 00:13:01,079 Jediný úlovek je, pokud máte více soubory nebo složky začínající 311 00:13:01,079 --> 00:13:02,870 s písmenem "P", nebo "PS", můžete mít 312 00:13:02,870 --> 00:13:05,525 Chcete-li zadat několik dalších před počítač ví, co má dělat. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Máme rádi zkratky. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: To bude ušetří tolik času. 315 00:13:08,695 --> 00:13:11,930 A také, jak jsme řekli v přednášce, budete lze rolovat nahoru v historii, nahoru a dolů, 316 00:13:11,930 --> 00:13:15,461 najít nedávno popraven příkazy, stejně. 317 00:13:15,461 --> 00:13:15,960 Dobře. 318 00:13:15,960 --> 00:13:20,904 Takže teď, pojďme obrátit svou pozornost zpět na jednoduchý program, hello world. 319 00:13:20,904 --> 00:13:22,195 Proto jsme sestavili to přesně. 320 00:13:22,195 --> 00:13:24,050 A teď proč jsme se Pohled na datové typy 321 00:13:24,050 --> 00:13:26,776 a pak přejít z některých odpovídá Stírací bloků C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Děsivý. 323 00:13:27,400 --> 00:13:30,031 Takže teď, že jste začali psaní programů v C, 324 00:13:30,031 --> 00:13:32,530 budeme začít mluvit o datových typů a proměnných. 325 00:13:32,530 --> 00:13:37,570 Takže některé typy dat, které bude chtít vědět, od této chvíle 326 00:13:37,570 --> 00:13:39,400 jsou ty, které jsou zvýrazněny modře. 327 00:13:39,400 --> 00:13:42,420 Takže máme int jako první, což je zkratka pro celé číslo. 328 00:13:42,420 --> 00:13:46,075 A to platí celá čísla, jako vy může mít guessed-- tak, 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 a jakékoli další celá čísla které si můžete myslet. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: A také negativní. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: A také ty negativní, jo. 332 00:13:50,220 --> 00:13:51,450 A 0. 333 00:13:51,450 --> 00:13:54,250 Pak máme plováky, které jsou plovoucí desetinnou čárkou. 334 00:13:54,250 --> 00:13:58,360 Tak to je všechna reálná čísla které mají desetinná místa. 335 00:13:58,360 --> 00:14:03,960 Takže 5,0, 5,2, a ještě více číslice za desetinnou čárkou, 336 00:14:03,960 --> 00:14:05,620 jakož i, a také ty negativní. 337 00:14:05,620 --> 00:14:07,530 Pak máme char což je znak. 338 00:14:07,530 --> 00:14:10,240 Takže myslím, že jsme mluvili o To přednášce dnes. 339 00:14:10,240 --> 00:14:15,682 Ale my máme dopisy, pro example-- A, B, C-, které mohou být uloženy jako char. 340 00:14:15,682 --> 00:14:18,390 Ale pak máme mnohem více symbolů které mohou být uloženy jako char. 341 00:14:18,390 --> 00:14:22,380 A ty jsou uloženy jako ASCII. 342 00:14:22,380 --> 00:14:25,280 >> A pak máme bool, které jsou Booleans. 343 00:14:25,280 --> 00:14:29,067 A ti, vyhodnotit True nebo Nepravda nebo 1 a 0, v tomto pořadí. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: A připomeňme, že bool pochází z knihovny CS50. 345 00:14:31,650 --> 00:14:33,300 Takže to není integrována do C, ale je to super užitečné 346 00:14:33,300 --> 00:14:34,850 mít představu o true a false. 347 00:14:34,850 --> 00:14:36,990 A i když vás Možná think-- legrace fakt. 348 00:14:36,990 --> 00:14:43,700 Boolovské technicky potřebuje, kolik bitů, opravdu, reprezentovat pravda proti False? 349 00:14:43,700 --> 00:14:47,910 Kolik si myslíte, že bitů budete potřebovat, maximálně? 350 00:14:47,910 --> 00:14:48,790 Jo, jen jeden. 351 00:14:48,790 --> 00:14:52,077 Tak to dopadá, že C nemůže dát jen jeden bit. 352 00:14:52,077 --> 00:14:54,160 Nejmenší měrná jednotka můžete získat, je osm. 353 00:14:54,160 --> 00:14:57,090 Takže je to trochu zbytečné, že jste použitím celý byte, nebo osm bitů, 354 00:14:57,090 --> 00:14:58,340 reprezentovat true nebo false. 355 00:14:58,340 --> 00:15:01,807 Ale to je jen způsob, jak je to implementovány v C knihovnou CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: A pak ty, které jsme nebude mluvit o jak rozsáhle 357 00:15:04,890 --> 00:15:08,060 právo now-- double, to je pro větší plováky. 358 00:15:08,060 --> 00:15:09,811 Dlouhá dlouhé a krátké jsou také pro celá čísla. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Opravdu. 360 00:15:10,643 --> 00:15:13,190 V hacker vydání pset jednoho, jsme vlastně používat long long. 361 00:15:13,190 --> 00:15:15,801 Ale pro standardní verzi, to by nemělo být nutné. 362 00:15:15,801 --> 00:15:16,300 MARIA: cool. 363 00:15:16,300 --> 00:15:17,361 DOBŘE. 364 00:15:17,361 --> 00:15:20,110 Takže operators-- byste měli být pravděpodobně se seznámili s většinou z nich. 365 00:15:20,110 --> 00:15:22,620 Sčítání, +; odčítání, -. 366 00:15:22,620 --> 00:15:24,070 Pro násobení, máme *. 367 00:15:24,070 --> 00:15:25,900 Takže ne X, které jsme obvykle používají. 368 00:15:25,900 --> 00:15:27,840 Divize, máme zpětné lomítko. 369 00:15:27,840 --> 00:15:31,380 A modulo je naše poslední operátor, který budeme hovořit o právě teď. 370 00:15:31,380 --> 00:15:35,610 Je to subjekt, který nám umožňuje vzít zbytek divize. 371 00:15:35,610 --> 00:15:40,630 Takže pokud máme 4% 2, 4 rozdělený o 2 je 2 se zbytkem 0. 372 00:15:40,630 --> 00:15:41,740 Takže 4% 2 je 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 je 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 je 4, protože byste mohli tušit. 375 00:15:44,870 --> 00:15:48,860 A pamatujte si, když používáte všechny tyto operátorům používat pravidla PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Takže aby bylo jasno, pokud jste činit 4% 2, proč je to 0, přesně? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Protože 4 a vydělí 2 je 2 se zbytkem 0. 378 00:15:57,480 --> 00:16:00,752 Takže modulo nám dává, že zbytek jako na rozdíl od výsledku dělení. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: A skutečně, co najdeme toto užitečné 380 00:16:02,960 --> 00:16:05,640 , je, že v některých problémů že to nemusí být nutně jedním, 381 00:16:05,640 --> 00:16:08,040 Chcete-li mít Vliv omezení sami 382 00:16:08,040 --> 00:16:10,720 na rozsah čísel jako 0 až něco, 383 00:16:10,720 --> 00:16:13,904 můžete použít modulo na obal kolem dříve, než jako je 2 miliardy 384 00:16:13,904 --> 00:16:16,320 nebo hodnota 4000000000, že jsme mluvili o v přednášce. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Jo. 386 00:16:16,870 --> 00:16:19,429 A dokonce v "chamtivý" bychom mohli. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Ano, ve problém nastavit jeden, stejně. 388 00:16:21,345 --> 00:16:22,520 MARIA: Ano, pěkné. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Dobrý nápověda. 390 00:16:24,340 --> 00:16:25,750 MARIA: Omlouvám se. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- tak pro logické operátory, 392 00:16:28,590 --> 00:16:31,770 budeme mluvit o všem z nich, které zde vidíte. 393 00:16:31,770 --> 00:16:35,310 Takže teď máme dva rovné znaky uvedené na sobě rovnými. 394 00:16:35,310 --> 00:16:38,650 Takže to jsou pro srovnání. 395 00:16:38,650 --> 00:16:40,830 Zatím jsme viděli jen jednu rovnítka. 396 00:16:40,830 --> 00:16:44,870 To je, když jsme se přiřazení hodnota, která má proměnné. 397 00:16:44,870 --> 00:16:50,160 Takže pokud jsme viděli int n = 5, pak jsme přiřazena 5 do proměnné n. 398 00:16:50,160 --> 00:16:55,600 Ale pokud chceme použít == k srovnání, můžeme zkontrolovat, zda n == 5. 399 00:16:55,600 --> 00:16:58,310 A pokud n == 5, pak je to pravda. 400 00:16:58,310 --> 00:17:01,950 >> Tak logické operátory Dovolte nám, v podstatě, 401 00:17:01,950 --> 00:17:04,670 hodnotit Boolean výrazy na true nebo false. 402 00:17:04,670 --> 00:17:07,819 Takže není equals-- máme vykřičník a rovni. 403 00:17:07,819 --> 00:17:14,240 Takže jsme mohli, pokud n také zkontrolovat se nerovná 5-- tak n! = 5. 404 00:17:14,240 --> 00:17:17,640 Méně než, menší než nebo rovno, větší než, větší než nebo roven, 405 00:17:17,640 --> 00:17:20,720 a pak máme logický AND a logický OR. 406 00:17:20,720 --> 00:17:24,060 A ty, které nám umožní vyhodnotit více logické výrazy spolu 407 00:17:24,060 --> 00:17:27,930 se v podstatě přijít společně jako jeden celý logický výraz. 408 00:17:27,930 --> 00:17:34,970 Takže pokud chceme najít číslo, řekněme, která je větší než 5, ale menší než 15 409 00:17:34,970 --> 00:17:39,810 ve stejnou dobu, by používáme logické AND operátor zjistit, jestli je n 410 00:17:39,810 --> 00:17:42,937 větší než 5 && n menší než 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: A tady, taky, je to opravdu snadné 412 00:17:44,770 --> 00:17:47,290 brzy omylem použijte jen jeden ampersand 413 00:17:47,290 --> 00:17:48,572 nebo jedna svislá čára. 414 00:17:48,572 --> 00:17:51,280 A doufejme, že bude kompilátor řvát na vás, protože se ve skutečnosti 415 00:17:51,280 --> 00:17:52,530 mají velmi odlišný význam. 416 00:17:52,530 --> 00:17:55,660 Pro ty zvědavý, jsou používá pro bitové operace, 417 00:17:55,660 --> 00:17:57,197 pracující na jednotlivých bitů. 418 00:17:57,197 --> 00:17:58,780 Ale vy chcete, aby se pár z nich zde. 419 00:17:58,780 --> 00:18:01,560 A Super Důležité je, že První z nich, rovnítko, 420 00:18:01,560 --> 00:18:05,270 což je operátor rovnosti as Na rozdíl od operátoru přiřazení. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: A svislá čára je se nachází mezi Delete a Return. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Ano. 423 00:18:09,260 --> 00:18:11,420 Na typické americké klávesnici. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Jo. 425 00:18:13,190 --> 00:18:15,890 Takže pojďme se skočit rovnou do podmíněné příkazy. 426 00:18:15,890 --> 00:18:18,300 Scratch, nemáš již viděli, pravděpodobně, 427 00:18:18,300 --> 00:18:22,730 pokud prohlášení, která umožňují uživateli zkontrolujte, zda je něco pravda, pak 428 00:18:22,730 --> 00:18:23,660 dělat něco jiného. 429 00:18:23,660 --> 00:18:28,410 Takže byste chtěl zkontrolovat, zda vaše sprite je 430 00:18:28,410 --> 00:18:31,410 dotýká nějaký jiný sprite nebo okraj obrazovky. 431 00:18:31,410 --> 00:18:35,520 A pak jste možná chtěli ukončit hru nebo dělat něco jiného. 432 00:18:35,520 --> 00:18:40,000 Takže syntaxi, která je "if (podmínka)." 433 00:18:40,000 --> 00:18:46,820 Takže pokud vaše sprite se dotýká něčeho, pak si je uvnitř složených závorek. 434 00:18:46,820 --> 00:18:48,980 >> Pak máme if-else prohlášení. 435 00:18:48,980 --> 00:18:54,080 Else nám umožňuje dělat něco v případě, že stav, který jsme 436 00:18:54,080 --> 00:18:55,870 zkontrolujte, zda na začátku není pravda. 437 00:18:55,870 --> 00:19:01,530 Takže pokud sprite se dotýká border-li to provést, jinak dělat něco jiného. 438 00:19:01,530 --> 00:19:04,030 Takže jinak dělat něco jiného. 439 00:19:04,030 --> 00:19:07,530 Pak máme krátký příklad pro toto. 440 00:19:07,530 --> 00:19:11,551 Takže v případě, (military_time <12), jsme Chcete printf "Dobré ráno!" 441 00:19:11,551 --> 00:19:13,300 Jinak budeme printf "Dobrý večer!" 442 00:19:13,300 --> 00:19:14,860 Základní příkladem. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Dobrý. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: cool. 445 00:19:16,760 --> 00:19:18,560 Takže teď máme prohlášení spínače. 446 00:19:18,560 --> 00:19:21,960 Přepněte prohlášení lze obecně nám umožňují udělat hodně stejnou věc 447 00:19:21,960 --> 00:19:25,070 že jsme právě mluvili o s if. 448 00:19:25,070 --> 00:19:29,440 Například, právě teď máme Obecná forma příkazu switch 449 00:19:29,440 --> 00:19:33,870 která nám umožní přijmout proměnnou s názvem n 450 00:19:33,870 --> 00:19:37,670 a porovnat ji se spoustou různé hodnoty, které jsme tady 451 00:19:37,670 --> 00:19:40,010 nazývají constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Můžeme mít mnohem více. 453 00:19:41,150 --> 00:19:42,930 A ty, které se nazývají případy. 454 00:19:42,930 --> 00:19:46,280 >> Takže pokud máme přepínač statement-- a to funguje 455 00:19:46,280 --> 00:19:50,580 pouze pro integers-- máme proměnlivý v tomto případě, který je n. 456 00:19:50,580 --> 00:19:53,840 V případě, že n je proměnná rovná constant1, my 457 00:19:53,840 --> 00:19:59,720 bude provádět nějaký fragment kódu nebo něco, co chceme dělat. 458 00:19:59,720 --> 00:20:01,280 A pak bychom zlomit. 459 00:20:01,280 --> 00:20:04,820 Takže přestávka znamená, že Příkaz switch 460 00:20:04,820 --> 00:20:08,120 se zastaví, pokud provádění n je rovno constant1, 461 00:20:08,120 --> 00:20:09,752 a pak se váš program bude pokračovat. 462 00:20:09,752 --> 00:20:11,835 To bude ukončen z toho přepnout prohlášení a bude to 463 00:20:11,835 --> 00:20:13,520 i nadále dělat něco jiného. 464 00:20:13,520 --> 00:20:17,204 >> Pokud se však, n se nerovná constant1, pak pouzdro pro constant2 465 00:20:17,204 --> 00:20:17,870 Bude kontrolována. 466 00:20:17,870 --> 00:20:21,750 Takže pokud n se rovná constant2, že jiný Úryvek kódu bude popraven. 467 00:20:21,750 --> 00:20:23,850 A pak to bude zlomit v případě, že je roven k tomu. 468 00:20:23,850 --> 00:20:27,580 A pak můžeme mít also-- není nutně, though-- výchozí případ, 469 00:20:27,580 --> 00:20:32,290 což se stane, když n se nerovná kterýkoli z případů, které jste uvedeny. 470 00:20:32,290 --> 00:20:35,400 A v případě výchozí jsme také Nemusíte nutně pauzu 471 00:20:35,400 --> 00:20:39,271 protože příkaz switch bude vědět že je třeba ukončit po výchozí 472 00:20:39,271 --> 00:20:40,270 případ, že je tomu tak. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Ale stylisticky, vždy dát to tam. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Jo. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Jo. 476 00:20:42,710 --> 00:20:44,750 Takže zvláště když začínáte, zejména v případě, mezi těmi, nižší 477 00:20:44,750 --> 00:20:47,458 komfortní, bych osobně Jen doporučuji držet se nástroje stability 478 00:20:47,458 --> 00:20:51,564 a IFS-elses a if-else-if-elses a tak dále, pokud jen 479 00:20:51,564 --> 00:20:53,480 proto, že jste trochu přímočařejší. 480 00:20:53,480 --> 00:20:56,142 To je hezký optimalizace, nebo někdy i esteticky ji 481 00:20:56,142 --> 00:20:57,350 dělá kód čitelnější. 482 00:20:57,350 --> 00:20:59,599 A ve skutečnosti, pravděpodobně mid-semestr uvidíme problém 483 00:20:59,599 --> 00:21:02,504 nastavit, kde to prostě vypadá lépe, a čitelnější pro lidi 484 00:21:02,504 --> 00:21:03,670 pomocí příkazu switch. 485 00:21:03,670 --> 00:21:05,460 Ale nebojte se o lpí na to příliš brzy. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Jo. 487 00:21:05,680 --> 00:21:08,840 Pokud máte spoustu if, to by mohlo být velmi prostě není čitelný. 488 00:21:08,840 --> 00:21:10,965 To nemusí být velmi rychlá pro vás projít. 489 00:21:10,965 --> 00:21:13,230 Takže spínač výroky lze být velmi užitečné, stejně. 490 00:21:13,230 --> 00:21:17,900 A také, ne remember-- ne zapomněl dát přestávky tam. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Nepamatuji si to. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Protože pak by vás mohly spadnout přes případ od případu k druhému. 493 00:21:24,890 --> 00:21:27,930 Takže řekněme, že případ constant1 neměl příkazu break v něm. 494 00:21:27,930 --> 00:21:31,920 Pak bychom mohli propadnout Uvnitř případ constant2. 495 00:21:31,920 --> 00:21:35,070 A my nechceme dělat, že pokud jsme již dosáhli případ constant1 496 00:21:35,070 --> 00:21:37,830 a je rovna n. 497 00:21:37,830 --> 00:21:45,100 >> Tak, například, když máme proměnnou n, který obsahuje číslo třídy, 498 00:21:45,100 --> 00:21:48,990 a chceme vidět, co to class je--, pokud n je rovno 50, 499 00:21:48,990 --> 00:21:51,957 budeme tisknout "CS50 je Úvod do výpočetní techniky I. " 500 00:21:51,957 --> 00:21:53,040 Pak jsme se chystáte zlomit. 501 00:21:53,040 --> 00:21:53,920 A to je vše. 502 00:21:53,920 --> 00:21:55,950 Je-li však, n je rovno až 51, jedeme 503 00:21:55,950 --> 00:21:58,494 tisknout "CS51 je Představení do výpočetní techniky II. " 504 00:21:58,494 --> 00:21:59,910 Pak znovu, budeme se zlomit. 505 00:21:59,910 --> 00:22:05,080 Nicméně, pokud pak dáme 124, 61, jakýkoli jiné číslo, které by vás mohly myslet, 506 00:22:05,080 --> 00:22:06,890 nebo program se nebude uznat, že. 507 00:22:06,890 --> 00:22:09,010 Takže to bude říkat, "Promiň, já jsem nejsou obeznámeni s danou třídu. " 508 00:22:09,010 --> 00:22:10,009 A bude to zlomit. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Takže můžete opravdu vidět if, else if, jiný nápad tady. 510 00:22:12,847 --> 00:22:15,430 Je to prostě jiná syntaxe vyjadřují přesně stejný nápad. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Přesně tak. 512 00:22:17,690 --> 00:22:19,480 Teď máme ternární operátory. 513 00:22:19,480 --> 00:22:24,900 Takže ternární provozovatelé mají Tři parts-- podmínku, 514 00:22:24,900 --> 00:22:27,220 co dělat v případě, tato podmínka je pravda, 515 00:22:27,220 --> 00:22:29,730 a pak se něco dělat pokud tato podmínka je nepravdivá. 516 00:22:29,730 --> 00:22:33,400 Tak vidíte, v podstatě, syntaxe, který zde. 517 00:22:33,400 --> 00:22:37,792 Máme otazník, a pak the-- co říkáme to? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: tlustého střeva. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Děkuji. 521 00:22:39,599 --> 00:22:41,880 Litovat. 522 00:22:41,880 --> 00:22:45,800 Takže pojďme se podívat na naši například na zjistit, zda můžeme smysl tohle-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Takže tady vidíme na našeho operátora Boolean == který porovnává variabilní class_num 525 00:22:52,580 --> 00:22:53,100 do 50. 526 00:22:53,100 --> 00:22:55,150 Takže class_num ukládá celé číslo. 527 00:22:55,150 --> 00:22:58,180 A pokud to celé číslo rovná se 50, pak jsme 528 00:22:58,180 --> 00:23:02,810 bude ukládat "David Malan" uvnitř řetězce profesora. 529 00:23:02,810 --> 00:23:05,912 Pokud je číslo třída není rovná 50, "ne David Malan" 530 00:23:05,912 --> 00:23:07,120 bude profesor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Děkuji. 532 00:23:08,630 --> 00:23:12,110 A tak to vypadá ekvivalentní Co byste řekl na první pohled? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Pro mě se zdá, jako if-else. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Jo. 536 00:23:20,709 --> 00:23:24,020 A ve skutečnosti, to je druh hezká jedné vložky, 537 00:23:24,020 --> 00:23:27,520 abych tak řekl, pro provádění přesně logika if-else 538 00:23:27,520 --> 00:23:29,010 ale dělá vše v jednom kroku. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Přesně tak. 540 00:23:29,860 --> 00:23:30,360 To jo. 541 00:23:30,360 --> 00:23:33,520 Takže pokud-else by mohla zabírají hodně prostoru. 542 00:23:33,520 --> 00:23:36,283 Mohou být příliš dlouhý něco tak jednoduché, jak to. 543 00:23:36,283 --> 00:23:38,350 Takže to může být velmi stručné a velmi pěkné. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Takže teď jdeme do pohledu na znovu a znovu vykonávající něco, 546 00:23:46,820 --> 00:23:50,060 takže kontrola podmiňují vícekrát 547 00:23:50,060 --> 00:23:53,510 a pak pokračuje něco udělat zatímco tato podmínka je pravda. 548 00:23:53,510 --> 00:23:56,740 Takže to nás přivádí pěkně do while. 549 00:23:56,740 --> 00:23:59,270 >> Na levé straně, máme náš první cyklus while. 550 00:23:59,270 --> 00:24:03,840 Takže když něco je pravda, udělat znovu a znovu něco. 551 00:24:03,840 --> 00:24:08,850 Takže ujistěte se, že všimnout, že naše Podmínkou zde je ověřena v horní části. 552 00:24:08,850 --> 00:24:14,150 Zatímco u našeho druhého loop-- říkáme že do-zatímco loop-- něco děláme, 553 00:24:14,150 --> 00:24:15,890 pak zkontrolovat podmínku. 554 00:24:15,890 --> 00:24:17,980 A pokud tuto podmínku i nadále aby to byla pravda, 555 00:24:17,980 --> 00:24:20,150 jsme se vrátit a udělat věc znovu. 556 00:24:20,150 --> 00:24:23,360 Tak hlavní rozdíl je tam, kde podmínka je kontrolována. 557 00:24:23,360 --> 00:24:29,260 A kód nesmí být nikdy provede, pokud podmínka není 558 00:24:29,260 --> 00:24:30,430 platí o cyklu while. 559 00:24:30,430 --> 00:24:33,050 Zatímco se do-while smyčka, máme kód 560 00:24:33,050 --> 00:24:35,380 , který je vždy proveden alespoň jednou. 561 00:24:35,380 --> 00:24:37,470 A pak, když je podmínka i nadále aby to byla pravda, 562 00:24:37,470 --> 00:24:39,960 se můžeme vrátit zpět a opakovat znovu dovnitř. 563 00:24:39,960 --> 00:24:43,625 Tak proč si myslíš, že bychom použít do-while přes while? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Právo. 566 00:24:48,720 --> 00:24:52,600 Takže pokud chceme přiměje uživatel na nějaký vstup, 567 00:24:52,600 --> 00:24:55,400 chceme-li jich zeptáte zadejte své jméno, 568 00:24:55,400 --> 00:24:57,342 Chceme, aby alespoň jednou zeptejte se jich. 569 00:24:57,342 --> 00:24:59,050 A v případě, že vstoupí že název, nejsme 570 00:24:59,050 --> 00:25:00,740 se s nimi znovu zeptat proto, že už ho známe. 571 00:25:00,740 --> 00:25:02,656 Ale v případě, že nevstoupí jejich název, nebo pokud 572 00:25:02,656 --> 00:25:05,787 zadejte něco, co je samozřejmě není jméno, 573 00:25:05,787 --> 00:25:08,120 přesto chceme pokračovat požádala je o jejich jména. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: A v přednášce jsme měli jeden takhle se dostat pozitivním int 575 00:25:10,710 --> 00:25:13,550 Například tam, kde není co zkontrolovat na první, protože jste ani 576 00:25:13,550 --> 00:25:14,190 dostal int. 577 00:25:14,190 --> 00:25:16,680 Takže chceme dělat tohle-- získat int z user-- 578 00:25:16,680 --> 00:25:18,860 pak ho zkontrolovat, možná, znovu a znovu a znovu. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Přesně tak. 580 00:25:21,030 --> 00:25:22,060 Pro loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Pro smyčky mohou dovolit, abychom dělali téměř přesně to samé, stejně. 582 00:25:25,842 --> 00:25:27,300 Je to vlastně přesně to samé. 583 00:25:27,300 --> 00:25:30,190 Takže není nic, co můžete dělat s pro smyčky 584 00:25:30,190 --> 00:25:32,840 že byste nebyli schopni co do činění s cykly while. 585 00:25:32,840 --> 00:25:36,900 Ale pro smyčky se může zdát poněkud trochu složitější syntakticky 586 00:25:36,900 --> 00:25:39,730 proto, že mají tři části uvnitř, co 587 00:25:39,730 --> 00:25:42,990 bylo předtím jen stav s cykly while. 588 00:25:42,990 --> 00:25:48,260 Takže první část, která vám moře, nejvíce vlevo, máme "int trpaslíci = 0." 589 00:25:48,260 --> 00:25:51,490 Takže tohle je místo, kde jsme inicializovat naší proměnné. 590 00:25:51,490 --> 00:25:55,210 >> Pak máme středník a "trpaslíci <7." 591 00:25:55,210 --> 00:25:57,100 Takže tohle je místo, kde se stav ve skutečnosti je. 592 00:25:57,100 --> 00:26:00,170 Takže to je to, co budeme mít dal právě v době loop-- 593 00:26:00,170 --> 00:26:01,880 "zatímco trpaslíci <7." 594 00:26:01,880 --> 00:26:05,380 Tady, že jde v Uprostřed našeho smyčky for. 595 00:26:05,380 --> 00:26:07,190 Takže "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 A pak je naše poslední část je "trpaslíci ++," což je místo, kde jsme se aktualizujeme proměnné. 597 00:26:11,350 --> 00:26:15,470 Tak důležité si uvědomit, že toto 598 00:26:15,470 --> 00:26:22,010 se chystá projít to pro smyčku sedmkrát a spustit sedmkrát. 599 00:26:22,010 --> 00:26:24,020 Takže máme sedm trpaslíci, a oni jsou všichni 600 00:26:24,020 --> 00:26:26,020 chtěl říct, "Jsem tady aby vám pomohl, Snow White " 601 00:26:26,020 --> 00:26:28,860 proto, že jsou připraveni na pomoc Sněhurku. 602 00:26:28,860 --> 00:26:33,600 >> S while, bychom udělali inicializace a aktualizace 603 00:26:33,600 --> 00:26:37,490 ne uvnitř stavu, znovu, ale buď před nebo uvnitř while 604 00:26:37,490 --> 00:26:40,210 aby se ujistil, že we-- protože potřebujeme vždy ty části. 605 00:26:40,210 --> 00:26:42,835 Tak, aby se ujistil, že máme nich by máme ještě přidali 606 00:26:42,835 --> 00:26:44,580 na, jen ne v závorkách. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: A tak to vypadá jako-- V přednášce, například, 608 00:26:47,288 --> 00:26:50,250 I téměř vždy používají, rád, já a n a docela nudné proměnných. 609 00:26:50,250 --> 00:26:53,050 Vypadá to, že můžete použít více chytře pojmenovaný proměnných, taky. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Ano, je to vlastně velmi pěkné použít trochu více popisných proměnných 611 00:26:56,300 --> 00:26:59,400 protože zejména v případě, někdo jiný čtení vašich code-- možná máš srovnávač 612 00:26:59,400 --> 00:27:00,940 nebo pokud spolupráce s somebody-- 613 00:27:00,940 --> 00:27:03,481 chcete, aby se ujistil, že rozumět tomu, co děláte. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> DOBŘE. 616 00:27:06,400 --> 00:27:11,435 Tak tohle je něco velmi funky-- pro smyčku uvnitř smyčky for. 617 00:27:11,435 --> 00:27:13,060 Já nevím, jestli jsme viděli dřív. 618 00:27:13,060 --> 00:27:13,830 Asi ne. 619 00:27:13,830 --> 00:27:17,750 Ale můžeme skutečně tohle-- takže smyčky místo smyček. 620 00:27:17,750 --> 00:27:25,130 Takže to někdo chtěl snad chodit mi skrze to, co se tady děje? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Vezmu bodnout. 623 00:27:29,490 --> 00:27:29,970 MARIA: cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Takže, spoiler-- chceme vytisknout věci že je v pravém dolním rohu 626 00:27:34,690 --> 00:27:35,190 tam. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Správně. 628 00:27:35,450 --> 00:27:35,710 Jo, jo. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Takže máme jen dal, že ukázkový výstup tam. 630 00:27:38,043 --> 00:27:42,590 Takže můžu vyvozovat z vrchní smyčka, že jste 631 00:27:42,590 --> 00:27:45,680 iterace přes řádky v vnější smyčku, abych tak řekl. 632 00:27:45,680 --> 00:27:48,107 A ty iterace přes sloupy s nejvnitřnější smyčce. 633 00:27:48,107 --> 00:27:50,190 A intuitivně, toto by snad smysl 634 00:27:50,190 --> 00:27:52,070 proto, že podle povahy Každý program, který jsme viděli 635 00:27:52,070 --> 00:27:55,570 před, printf, což je Funkce používáme, nakonec, 636 00:27:55,570 --> 00:27:58,190 má schopnost tisknout věci v podstatě tak, řádek po řádku. 637 00:27:58,190 --> 00:27:59,960 Stejně jako, jakmile jste na výstup nový řádek, je tu 638 00:27:59,960 --> 00:28:02,876 no zdvojnásobení zpět a tisk něco vyšší v rozsahu, alespoň 639 00:28:02,876 --> 00:28:04,530 nepoužíváte printf takhle. 640 00:28:04,530 --> 00:28:07,750 >> A tak se v tomto ohledu, to dělá pocit, že nejvzdálenější smyčka 641 00:28:07,750 --> 00:28:10,930 by měl být s odkazem na řádky neboť pro každý daný řádek, 642 00:28:10,930 --> 00:28:13,650 budete chtít vytisknout XXXXX, a poté 643 00:28:13,650 --> 00:28:15,520 přejít na další řádek, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Takže řádky jsou na prvním místě. 645 00:28:17,317 --> 00:28:19,150 A pak se v rámci každé řádek, tisku sloupce. 646 00:28:19,150 --> 00:28:21,160 Pokud jste se pokusili udělat s opak, by to pravděpodobně ne 647 00:28:21,160 --> 00:28:21,690 vyjdou jak máte v úmyslu. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Jo. 649 00:28:22,190 --> 00:28:24,950 Prostě jsme nemohli vrátit do předchozí řádek s printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: A co je zajímavé na dnešní rozhovor o rozsahu, 651 00:28:27,658 --> 00:28:31,600 ve skutečnosti je to, že řada je int která je deklarována v nejvyšší smyčce. 652 00:28:31,600 --> 00:28:34,030 Ale všimněte si, že je to stále uvnitř, abych tak řekl, 653 00:28:34,030 --> 00:28:35,982 složené závorky, které bezprostředně následovat, 654 00:28:35,982 --> 00:28:38,440 i když to není technicky v těchto složených závorek. 655 00:28:38,440 --> 00:28:41,750 Takže řada je v rozsahu pro celistvost úryvku kódu, 656 00:28:41,750 --> 00:28:44,690 jak uvnitř, tak na vnější pro smyčce a uvnitř vnitřní smyčky for. 657 00:28:44,690 --> 00:28:48,050 Ale naopak, kde je sloupec v rozsahu? 658 00:28:48,050 --> 00:28:49,810 Proměnná sloupec? 659 00:28:49,810 --> 00:28:51,310 Jo, pouze ve vnitřní smyčce. 660 00:28:51,310 --> 00:28:54,280 A to je v pořádku, protože nemáme přístup to mimo jeho složených závorek. 661 00:28:54,280 --> 00:28:57,280 Vše, co udělat, je vytisknout nový linka na samém konci tam. 662 00:28:57,280 --> 00:28:58,670 Tak, že ve skutečnosti je v pořádku. 663 00:28:58,670 --> 00:29:03,740 >> Tak to má za následek, to vypadá, dělat tři řádky a čtyři sloupce. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Správně. 665 00:29:04,370 --> 00:29:06,270 Takže nejprve jsme se projít naše první řadě. 666 00:29:06,270 --> 00:29:10,520 A právě v naší první řadě, děláme čtyři sloupce uvnitř první řadě. 667 00:29:10,520 --> 00:29:11,980 Tak jsme se vytisknout čtyři X.. 668 00:29:11,980 --> 00:29:15,800 A pak můžeme ukončit smyčky for, jelikož jsme již vytištěny čtyři X.. 669 00:29:15,800 --> 00:29:17,100 A tiskneme nový řádek. 670 00:29:17,100 --> 00:29:19,920 A pak půjdeme přes Stejný postup pro dva více řadách 671 00:29:19,920 --> 00:29:21,170 aby celkem tři. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: A to je třeba poznamenat, že je to jen artefakt písma, skutečnost, 673 00:29:23,530 --> 00:29:25,680 že na výstupu vzorku Zdá se tak mnohem vyšší, 674 00:29:25,680 --> 00:29:27,520 jako kdyby tam je víc řádků než sloupců. 675 00:29:27,520 --> 00:29:29,824 Ale je to jen proto, že X je vyšší než širší. 676 00:29:29,824 --> 00:29:32,740 To je vše, co se tam děje, plus bílý prostor mezi řádky. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Správně. 678 00:29:33,281 --> 00:29:34,792 Bezva. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Dobře. 680 00:29:35,750 --> 00:29:39,830 Tak rychlý pohled na problém nastavit jednu, vzít nějaké otázky, a pak přerušuje? 681 00:29:39,830 --> 00:29:40,330 Dobře. 682 00:29:40,330 --> 00:29:43,164 Takže problém nastavit jednu, tu tři Hlavními problémy, nakonec. 683 00:29:43,164 --> 00:29:44,955 Ale nejdřív, zjistíte, že problém nastavit 684 00:29:44,955 --> 00:29:47,900 specifikace, jak se mnohé psets letos na podzim, se chystá, aby vás 685 00:29:47,900 --> 00:29:50,691 prostřednictvím několika zahřívacích cvičení, bod, který na několik zdrojů, 686 00:29:50,691 --> 00:29:52,440 které mohou nebo neviděl už. 687 00:29:52,440 --> 00:29:54,440 Například, CS50 má sadu šortky, 688 00:29:54,440 --> 00:29:56,481 které jsou krátké video, není na rozdíl od, ale že 689 00:29:56,481 --> 00:29:58,460 jsou velmi téma specific-- Možná pět minut, 690 00:29:58,460 --> 00:30:02,360 10 minut na délku o smyčkách nebo o podmínkách nebo o algoritmech 691 00:30:02,360 --> 00:30:04,125 nebo později na více pokročilá témata, stejně. 692 00:30:04,125 --> 00:30:06,000 A my obecně vložit ty, do problému 693 00:30:06,000 --> 00:30:07,950 soupravy tak, že studenti mají zdroj, s nimiž 694 00:30:07,950 --> 00:30:10,840 přezkoumat materiál, který by mohl mít Již přijít v přednášce nebo sekce. 695 00:30:10,840 --> 00:30:13,220 Ale takhle je to cílenější a více na dosah ruky. 696 00:30:13,220 --> 00:30:15,928 >> Máme také inklinují vložit do problému nastavuje věci zvané průchody. 697 00:30:15,928 --> 00:30:20,790 Takže téměř všechny příklady dělám V přednášce, na jevišti tady, my také 698 00:30:20,790 --> 00:30:24,565 natočili na kameru v pokročit více pomalejší, 699 00:30:24,565 --> 00:30:28,760 více intimní návod mnou na můj notebook tohoto kodexu, řádek po řádku 700 00:30:28,760 --> 00:30:31,427 takže ve třídě, budeme často prolistovat něco nebo někoho 701 00:30:31,427 --> 00:30:33,260 bude prohodit s odpověď na otázku. 702 00:30:33,260 --> 00:30:35,820 Ale to není nutně potopit v pro každého v publiku. 703 00:30:35,820 --> 00:30:38,230 Takže najdete kód návody Pro většinu příkladů 704 00:30:38,230 --> 00:30:40,950 co děláme tady v přednášce, takže si mohou chodit přes to svým vlastním tempem 705 00:30:40,950 --> 00:30:43,580 a přetočit nebo rychle dopředu nebo vynechat úplně, pokud budete chtít. 706 00:30:43,580 --> 00:30:45,356 >> Tam je často málo warm-up otázky, které 707 00:30:45,356 --> 00:30:47,105 vás požádat o jakési posílit tento materiál 708 00:30:47,105 --> 00:30:50,250 a ujistěte se, že jste před pohodlný budete pokračovat se zbytkem pset. 709 00:30:50,250 --> 00:30:51,700 A pak, samozřejmě, je tu pset sám. 710 00:30:51,700 --> 00:30:53,450 A jedna z věcí, jsme velmi uváženě 711 00:30:53,450 --> 00:30:57,202 dělat v CS50 je téměř každý nezajímavý nebo intelektuálně nezajímavý 712 00:30:57,202 --> 00:30:58,910 mechanický krok, který možná budete muset udělat, 713 00:30:58,910 --> 00:31:00,519 je téměř vždy velmi dobře zdokumentovány. 714 00:31:00,519 --> 00:31:03,560 V průběhu funkčního období, budeme začne klást více řečnické otázky 715 00:31:03,560 --> 00:31:06,187 jako vzpomenout, jak se to či ono? 716 00:31:06,187 --> 00:31:08,520 Ale obecně, zjistíte, že problém sady vám 717 00:31:08,520 --> 00:31:10,269 přes mechaniky něčeho tak, že 718 00:31:10,269 --> 00:31:14,160 zajímavé, intelektuální výzvy se nakonec nechal na vás studenta. 719 00:31:14,160 --> 00:31:17,390 >> Díky, že řekl, Zamyla, jimž jsme průběžně odkazuje dnes v přednášce, 720 00:31:17,390 --> 00:31:20,190 je jedním z našich dlouholetých zaměstnanců Člen, který také drží návody 721 00:31:20,190 --> 00:31:24,520 o specifických problémech, jako je Mario pset a chamtivý, když ne voda v tomto roce. 722 00:31:24,520 --> 00:31:26,540 A to je v těch průchody, že ona často 723 00:31:26,540 --> 00:31:29,450 nabízí několik tipů a triků pro jak postupovat, nikdy ti 724 00:31:29,450 --> 00:31:31,810 přesně to, co dělat, ale rather-- jako podmínku, 725 00:31:31,810 --> 00:31:35,200 pokud will-- poskytne vám alespoň pár nápadů, takže je jen na vás, 726 00:31:35,200 --> 00:31:37,830 nakonec, se rozhodnout, jak k nim přistupovat. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: něco jako vysoké úrovni pochopení logiky, co 728 00:31:41,200 --> 00:31:42,220 žádáme vás o to. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Přesně tak. 730 00:31:42,485 --> 00:31:44,190 A ve skutečnosti, Zamyla je návody jsou určeny 731 00:31:44,190 --> 00:31:46,190 často zodpovědět zeptal se otázka, kde 732 00:31:46,190 --> 00:31:48,610 mám začal, zvláště když Tyto dlouhé specifikace jsou 733 00:31:48,610 --> 00:31:51,960 trochu skličující daný veškerý text a snímky, které se mají v nich. 734 00:31:51,960 --> 00:31:54,890 >> Takže water.c, zjistíte, poté, co jste dokončil to, 735 00:31:54,890 --> 00:31:56,920 je ve skutečnosti poměrně jednoduché. 736 00:31:56,920 --> 00:31:58,882 Absolutně jsou banda z vás bude bouchnout 737 00:31:58,882 --> 00:32:01,840 tvé hlavy proti zdi snaží zjistit, proč to není kompilaci 738 00:32:01,840 --> 00:32:03,450 nebo proč to není spuštěn správně. 739 00:32:03,450 --> 00:32:05,040 Ale jakmile budete hotovi s ním, a jakmile jste 740 00:32:05,040 --> 00:32:07,620 strávil nějaký čas zápasí s některou z chyb, které můžete mít, 741 00:32:07,620 --> 00:32:09,490 zjistíte, že je to velmi krátký program. 742 00:32:09,490 --> 00:32:11,770 To lze provést v několika málo řádků kódu, z nichž většina 743 00:32:11,770 --> 00:32:15,030 jsme tady viděli v přednášce už, pokud sestavíte ty správné stavební kameny. 744 00:32:15,030 --> 00:32:16,810 >> A jak navrhujeme tady, to se zeptat 745 00:32:16,810 --> 00:32:22,250 určit, kolik minut někdo ve sprše na akademické půdě. 746 00:32:22,250 --> 00:32:24,779 Určíme v problému nastavit průtok vody 747 00:32:24,779 --> 00:32:27,320 v, jako, sprchový kout s nízkým průtokem hlava, podobně jako Seinfeld klip 748 00:32:27,320 --> 00:32:29,180 jsme viděli včera, nebo opak těchto látek. 749 00:32:29,180 --> 00:32:30,971 A pak stačí jen udělat trochu matematiky, 750 00:32:30,971 --> 00:32:34,710 really-- aritmetiku pomocí C říci nám, kolik, zhruba, láhve s vodou 751 00:32:34,710 --> 00:32:37,720 je to ekvivalentní, pokud jsme přičemž k n-minutové sprchu. 752 00:32:37,720 --> 00:32:41,389 >> Nyní, v mario.c, toto se děje , že je o něco delší programu. 753 00:32:41,389 --> 00:32:42,930 Je to stále nebude to dlouho. 754 00:32:42,930 --> 00:32:45,130 Jen pár řádků delší než water.c. 755 00:32:45,130 --> 00:32:48,230 Ale to bude příležitost obnovit staré školy Mario 756 00:32:48,230 --> 00:32:50,670 pyramida z Super Mario Bratři nebo některé follow-on. 757 00:32:50,670 --> 00:32:53,510 Nebude to vypadat jako hezčí nebo jako barevné jako ten tam jeden. 758 00:32:53,510 --> 00:32:56,468 Jsme jen tak použít malé hashtagy jako máme tady na obrazovce 759 00:32:56,468 --> 00:32:58,120 pomocí textu ASCII. 760 00:32:58,120 --> 00:33:00,362 Ale to bude přibližovat stejný nápad. 761 00:33:00,362 --> 00:33:02,570 A bude to být cvičení, které na první pohled 762 00:33:02,570 --> 00:33:04,720 Zdá se, docela simple-- jen vytisknout jednoduchý pyramidu. 763 00:33:04,720 --> 00:33:07,345 Ale je tu pár charakteristiky tady to jsou zajímavé. 764 00:33:07,345 --> 00:33:12,400 Všimněte si, že zcela vpravo okraje pyramida vlastně má šířku dva. 765 00:33:12,400 --> 00:33:14,570 Takže tam jsou dvě rovná výška sloupce, které 766 00:33:14,570 --> 00:33:16,804 dělá to vyžadovat trochu bit myšlení, aby se 767 00:33:16,804 --> 00:33:19,720 že jste si, že přesně to pravé, as protilehlý k jen dokonale hranatý 768 00:33:19,720 --> 00:33:20,220 čára. 769 00:33:20,220 --> 00:33:23,340 Tak to už je trochu rohového případu ale odpovídá skutečné hry. 770 00:33:23,340 --> 00:33:27,610 >> A to je také non-zřejmý na první pohled pohled, jak vytisknout prázdné místo. 771 00:33:27,610 --> 00:33:29,430 Takže když jsem se podívat na ukázkový výstup here-- 772 00:33:29,430 --> 00:33:32,440 a je to také v spec-- to trochu vypadá jako obdélník, 773 00:33:32,440 --> 00:33:35,120 ale diagonální z obdélník byl useknuté, 774 00:33:35,120 --> 00:33:37,320 a je to jen bílá místa, abych tak řekl. 775 00:33:37,320 --> 00:33:40,100 A tak často kladené Otázkou je vždy dobře, 776 00:33:40,100 --> 00:33:43,302 jak mám přesunout hashtagy na správnou? 777 00:33:43,302 --> 00:33:44,760 Nebo jak mohu vytisknout mezery? 778 00:33:44,760 --> 00:33:46,860 A je to vlastně jednodušší než většina studentů myslí. 779 00:33:46,860 --> 00:33:47,360 Právo? 780 00:33:47,360 --> 00:33:51,620 Můžete přiblížit ji vizuálně jen bít mezerníku jednou nebo dvakrát 781 00:33:51,620 --> 00:33:52,700 nebo třikrát. 782 00:33:52,700 --> 00:33:56,260 >> A tak, i když s printf jsme téměř vždy vytisknout řetězec nebo int 783 00:33:56,260 --> 00:33:59,950 nebo slova, jako je "Dobrý den, world "nebo série slov, 784 00:33:59,950 --> 00:34:03,560 můžete také jen vytisknout citát, vesmírných, konec citátu. 785 00:34:03,560 --> 00:34:06,320 A to skutečně dát jste tam bílé místo. 786 00:34:06,320 --> 00:34:08,330 Takže mějte na paměti, že i ne overthink to. 787 00:34:08,330 --> 00:34:10,570 Ty opravdu musím rozhodnout, řádek po řádku po řádku, 788 00:34:10,570 --> 00:34:14,280 ne na rozdíl od vaší například před chvílí, jak mnozí z těch, 789 00:34:14,280 --> 00:34:18,420 Sloupce by měla být bílá místa a kolik z nich by měl být hashtags. 790 00:34:18,420 --> 00:34:21,560 Bude to trvat trochu času, ale je to nakonec logické puzzle druhů. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Jo. 792 00:34:22,060 --> 00:34:25,060 Ale logika se řádek po řádku bude velmi užitečné zde. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Jo. 794 00:34:25,810 --> 00:34:28,976 Myslím si, že ukázkový kód, který dokonce gave-- ačkoli to nebylo kompletní program. 795 00:34:28,976 --> 00:34:34,247 Stále je třeba int a hlavní a neplatné a #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 hodně věcí z přednášky. 797 00:34:35,580 --> 00:34:37,629 Ale stavební bloky Zdá se, že tam. 798 00:34:37,629 --> 00:34:39,920 A pak konečně něco trochu více algoritmické. 799 00:34:39,920 --> 00:34:43,210 Tak to dopadá, že kdykoliv budete jít do CVS nebo jakékoliv samoobsluze 800 00:34:43,210 --> 00:34:47,810 a někdo vás podá u pokladní poukázky nebo mince jako změna, 801 00:34:47,810 --> 00:34:50,620 Ukazuje se, že oni, lidé, zda nebo ne oni to vědí, nebo ne, 802 00:34:50,620 --> 00:34:53,300 pravděpodobně používáte, co je volal chamtivý algoritmus, 803 00:34:53,300 --> 00:34:58,170 přičemž pokud jste dlužil, řekněme, $ dvacetjeden ve změně proto, že z nějakého důvodu 804 00:34:58,170 --> 00:35:01,580 jste si koupili něco velmi levný s velmi velkým účet v CVS, 805 00:35:01,580 --> 00:35:05,910 že by bylo v případě, že opravdu otravné pokladní vám dal 21 singlů, nebo horší 806 00:35:05,910 --> 00:35:07,629 přesto, spoustu mincí. 807 00:35:07,629 --> 00:35:10,670 Spíše, co rozumná osoba je pravděpodobně bude udělat, je, že jdou 808 00:35:10,670 --> 00:35:14,224 chytit 20- $ a pak $ 1-účet, a předat vám jen dvě bankovky v této věci. 809 00:35:14,224 --> 00:35:17,390 MARIA: Takže oni se snaží minimalizovat Změna, která dávají zpět k vám. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Přesně tak. 811 00:35:17,850 --> 00:35:19,540 A stejná dohoda s mincemi, stejně. 812 00:35:19,540 --> 00:35:23,040 Pokud jste dlužil, řekněme, $ 0,50 doufejme, že si nepřejete, aby 50 haléře. 813 00:35:23,040 --> 00:35:25,500 Místo toho chcete, aby dva ubikace, například. 814 00:35:25,500 --> 00:35:27,540 Nyní, to však předpokládat, že pokladní má 815 00:35:27,540 --> 00:35:29,940 dost všech ostatních názvů, které on nebo ona by mohla chtít, aby vám. 816 00:35:29,940 --> 00:35:32,148 Ale my vám umožní převzít jak v problému. 817 00:35:32,148 --> 00:35:35,590 A cíl, nakonec, je implementovat v C kód chamtivý algoritmus. 818 00:35:35,590 --> 00:35:37,344 Takže uživatel je povoleno zadat, jak moc 819 00:35:37,344 --> 00:35:40,510 Změna on nebo ona dluží s dolary a centů, nějaký druh pohyblivé řádové čárce 820 00:35:40,510 --> 00:35:41,590 hodnota pravděpodobně. 821 00:35:41,590 --> 00:35:45,530 A pak budete muset dělat matematiku a zjistit algoritmicky, dobře, 822 00:35:45,530 --> 00:35:49,020 kolik mincí mohu dát budete minimálně, aby vám 823 00:35:49,020 --> 00:35:50,270 přesně to množství změn. 824 00:35:50,270 --> 00:35:53,470 Ale tam to bude bude Několik záludné části tady, že jo? 825 00:35:53,470 --> 00:35:56,236 Stejně jako je tu celá otázka nepřesnost. 826 00:35:56,236 --> 00:35:56,860 MARIA: Přesně tak. 827 00:35:56,860 --> 00:35:59,114 Tak floating point hodnoty mají nepřesnost. 828 00:35:59,114 --> 00:36:00,780 Měli bychom mluvit o tom v přednášce dnes? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Udělali jsme naposledy v přednášce. 830 00:36:02,340 --> 00:36:03,506 Mluvili jsme o nepřesnosti. 831 00:36:03,506 --> 00:36:08,840 A nechcete podvádět uživatele o tom, jak moc změna on nebo ona je dluží. 832 00:36:08,840 --> 00:36:11,290 A tak průchod, v Problém set specifikace, 833 00:36:11,290 --> 00:36:15,990 zamyslet, v konečném důsledku, pokud jde o jak můžete zmírnit ty nepřesnost 834 00:36:15,990 --> 00:36:17,280 chyby, potenciálně. 835 00:36:17,280 --> 00:36:21,050 Je to nevyhnutelné, samozřejmě, pro vstupy mluvíme. 836 00:36:21,050 --> 00:36:23,590 A ve skutečnosti, pennies-- Možná budeme odložit na Zamyla, 837 00:36:23,590 --> 00:36:25,136 Myslím, že pro tamní triky. 838 00:36:25,136 --> 00:36:27,760 Takže nakonec, budete najít progrese problémů tento týden, 839 00:36:27,760 --> 00:36:30,700 z nichž první je docela malý, pak medium, pak o něco větší. 840 00:36:30,700 --> 00:36:33,200 Ale všichni z nich používají budovu bloky od tohoto minulý týden, 841 00:36:33,200 --> 00:36:35,280 z tohoto supersection, Problém set specifikace 842 00:36:35,280 --> 00:36:36,710 vám dává při nesčetných zdrojů. 843 00:36:36,710 --> 00:36:41,000 Ale přesto, pokud vůbec bojovat, zejména mezi těmi méně pohodlné 844 00:36:41,000 --> 00:36:42,917 bez předchozí pozadím, přijít na úřední hodiny 845 00:36:42,917 --> 00:36:44,958 v pondělí a úterý a Středa a čtvrtek. 846 00:36:44,958 --> 00:36:46,950 Přejít na CS50 Diskutovat přes Webové stránky kurzu je, 847 00:36:46,950 --> 00:36:49,080 přes který můžete chatovat se zaměstnanci a spolužáky. 848 00:36:49,080 --> 00:36:51,670 >> Ale nakonec, myslím, že Nejlepší rada je prostě začít brzy. 849 00:36:51,670 --> 00:36:54,711 Není to ten druh třídy, která vám by měly být počínaje psets ve středu 850 00:36:54,711 --> 00:36:56,640 v noci, nebo horší ve čtvrtek v noci. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Moje nejlepší rada je aby začali v pondělí. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: pondělí. 853 00:36:59,900 --> 00:37:02,490 Takže pokud jste ještě nezačali already-- no. 854 00:37:02,490 --> 00:37:04,732 Ale i kdyby ne Pondělí, pak v úterý. 855 00:37:04,732 --> 00:37:05,690 Čím dříve, tím lépe. 856 00:37:05,690 --> 00:37:08,605 A to je důvod, proč Kurz má tolik pozdní dnů 857 00:37:08,605 --> 00:37:10,535 aby vám trochu psychologický nátlak 858 00:37:10,535 --> 00:37:13,684 začít dříve, ale stále nechat věci, skluzu, kdy se věci trvat déle 859 00:37:13,684 --> 00:37:14,350 než očekáváte. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: A chcete využít úřední hodiny, stejně jako je to možné, také. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Nějaké otázky? 862 00:37:20,291 --> 00:37:20,790 Dobře. 863 00:37:20,790 --> 00:37:22,930 No, proč ne my odložit tady? 864 00:37:22,930 --> 00:37:23,487