1 00:00:00,000 --> 00:00:03,353 >> [音樂播放] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID馬蘭:大家好。 4 00:00:06,050 --> 00:00:07,777 這是CS50的超部分。 5 00:00:07,777 --> 00:00:09,860 分配的部分將不 開始一個星期。 6 00:00:09,860 --> 00:00:11,580 所以今天,我在這裡with-- 7 00:00:11,580 --> 00:00:12,122 >> 瑪麗亞:瑪麗亞。 8 00:00:12,122 --> 00:00:14,163 DAVID馬蘭:--to實際 看看問題 9 00:00:14,163 --> 00:00:16,110 設置之一,課程的 第一週的材料, 10 00:00:16,110 --> 00:00:19,780 讓你用面向CS50 IDE,有點 的Linux,操作系統那的 11 00:00:19,780 --> 00:00:22,290 上IDE中運行,以及 看看一些過渡 12 00:00:22,290 --> 00:00:25,730 從零開始到C領先 長達問題集之一。 13 00:00:25,730 --> 00:00:28,340 >> 因此,事不宜遲, 在問題集中的一個, 14 00:00:28,340 --> 00:00:30,520 你會是 推出CS50 IDE,它 15 00:00:30,520 --> 00:00:33,230 這是基於網絡的節目 我們為了使用環境而定 16 00:00:33,230 --> 00:00:34,280 寫程序。 17 00:00:34,280 --> 00:00:37,280 它的設計看起來非常 讓人聯想到典型的計算機 18 00:00:37,280 --> 00:00:39,430 運行的操作系統 系統稱為Linux。 19 00:00:39,430 --> 00:00:42,440 但是,它在所謂的雲, 這意味著每個人都在類 20 00:00:42,440 --> 00:00:45,100 其實可以有他或她的 自己的帳戶,並使用它,以及。 21 00:00:45,100 --> 00:00:48,950 >> 因此,大多數人可能從未使用過 之前或者Linux環境 22 00:00:48,950 --> 00:00:50,447 甚至一個命令行環境。 23 00:00:50,447 --> 00:00:52,280 和命令行 環境是不同的。 24 00:00:52,280 --> 00:00:53,200 它的所有文字。 25 00:00:53,200 --> 00:00:54,730 它的所有鍵盤命令。 26 00:00:54,730 --> 00:00:59,480 而且它沒有鼠標移動,沒有圖標, 沒有對話窗口,沒有菜單。 27 00:00:59,480 --> 00:01:00,212 這是純粹的文字。 28 00:01:00,212 --> 00:01:01,920 所以剛開始,它種 的感覺就像一個步 29 00:01:01,920 --> 00:01:04,434 向後複雜的條款。 30 00:01:04,434 --> 00:01:06,600 但它最終被很多 功能更強大,當然, 31 00:01:06,600 --> 00:01:08,510 對於計算機科學家,最終。 32 00:01:08,510 --> 00:01:09,540 >> 因此,讓我們一起來看看。 33 00:01:09,540 --> 00:01:13,850 在這裡,我在CS50.io,通過這 您可以登錄到CS50 IDE。 34 00:01:13,850 --> 00:01:17,414 而就像在刮,有 三個主要方面來此屏幕。 35 00:01:17,414 --> 00:01:20,080 等的左手側,我們有 會是怎樣的文件瀏覽器。 36 00:01:20,080 --> 00:01:22,413 還有的這個文件夾中 頂,這是正確的,現在空 37 00:01:22,413 --> 00:01:24,690 因為我擺脫我所有的 超部分之前的文件。 38 00:01:24,690 --> 00:01:27,599 而這也正是我們將 保存我們寫的C文件。 39 00:01:27,599 --> 00:01:30,890 在右上角,我們有一個地方, 我們所有的代碼會得到寫入。 40 00:01:30,890 --> 00:01:34,610 事實上,如果我點擊這個加號,這 是打算讓我選擇新建文件。 41 00:01:34,610 --> 00:01:38,310 在這裡,我可以開始寫C代碼,或者, 確實,任何數量的其他語言。 42 00:01:38,310 --> 00:01:42,670 >> 然後在底部的地方 說jharvard @ ide50--和你的將 43 00:01:42,670 --> 00:01:45,080 說的東西有點 different--什麼這個叫什麼? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 終端窗口。 46 00:01:49,310 --> 00:01:49,570 是啊。 47 00:01:49,570 --> 00:01:51,810 因此,終端窗口 所謂的命令行 48 00:01:51,810 --> 00:01:55,540 接口,通過它,你可以進行交互 與底層操作系統。 49 00:01:55,540 --> 00:01:58,220 而現在,我們要 讓很少使用this--的 50 00:01:58,220 --> 00:02:01,170 只是編譯,看看 我們看到錯誤消息, 51 00:02:01,170 --> 00:02:02,347 並運行我們的程序。 52 00:02:02,347 --> 00:02:04,680 但最終,我們將 這樣做的多,以及。 53 00:02:04,680 --> 00:02:07,490 你甚至可以安裝軟件 和管理您的工作空間 54 00:02:07,490 --> 00:02:09,066 CS50在IDE中,也是如此。 55 00:02:09,066 --> 00:02:10,440 但更多的是一些其他的時間。 56 00:02:10,440 --> 00:02:12,689 >> 因此,讓我們繼續前進,寫 一個非常簡單的程序只是 57 00:02:12,689 --> 00:02:15,064 經過一個熱身 hello.c的,這也許就是 58 00:02:15,064 --> 00:02:16,480 我們可以寫出簡單的程序。 59 00:02:16,480 --> 00:02:18,330 我已經打開了一個新的標籤。 60 00:02:18,330 --> 00:02:24,310 我要繼續前進, 說包括標準io.h. 61 00:02:24,310 --> 00:02:25,325 然後,詮釋的主要(無效)。 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 然後的printf(“你好,世界” 反斜杠N,密切報價, 64 00:02:35,200 --> 00:02:39,480 關閉括號和分號。 65 00:02:39,480 --> 00:02:39,990 >> 好吧。 66 00:02:39,990 --> 00:02:41,700 所以,現在發現我的窗口沒有標題。 67 00:02:41,700 --> 00:02:44,840 所以,我很快會 上去文件,保存。 68 00:02:44,840 --> 00:02:46,910 而且它是非常重要的 我把這種不是“你好”。 69 00:02:46,910 --> 00:02:49,243 所以有一個非常常見的錯誤, 尤其是在問題的設置之一, 70 00:02:49,243 --> 00:02:52,530 是意外只是打電話給你 節目“水”和“貪婪”和“馬里奧” 71 00:02:52,530 --> 00:02:53,890 或“信用”等。 72 00:02:53,890 --> 00:02:55,970 但是,你真的想使 確保您有文件擴展名 73 00:02:55,970 --> 00:02:58,928 因為這是唯一的方式, 編譯器和還代碼編輯器 74 00:02:58,928 --> 00:03:00,710 知道你 實際上編寫C代碼。 75 00:03:00,710 --> 00:03:02,280 因此,讓我繼續前進,然後點擊保存。 76 00:03:02,280 --> 00:03:05,710 >> 現在也一樣,什麼CS50 IDE 已經為我們做的這也是 77 00:03:05,710 --> 00:03:07,120 語法高亮一切。 78 00:03:07,120 --> 00:03:08,822 因此,它是由一切非常豐富多彩。 79 00:03:08,822 --> 00:03:10,780 而整個目的 不能正常工作。 80 00:03:10,780 --> 00:03:14,290 這只是吸引我的目光投向 在概念上不同的部分 81 00:03:14,290 --> 00:03:15,310 這個方案的。 82 00:03:15,310 --> 00:03:17,570 因此,讓我們繼續前進,編譯這個。 83 00:03:17,570 --> 00:03:19,490 我可以編譯此 在幾個方面。 84 00:03:19,490 --> 00:03:22,010 並且在一個星期的 老派的方式,我們做了 85 00:03:22,010 --> 00:03:26,250 這是字面上的 命令line--“鐺hello.c的。” 86 00:03:26,250 --> 00:03:27,596 然後,我敲回車。 87 00:03:27,596 --> 00:03:29,720 而且似乎什麼都沒有發生 在終端窗口。 88 00:03:29,720 --> 00:03:32,654 但沒有改變的IDE? 89 00:03:32,654 --> 00:03:35,320 其中,再次,IDE只是手段 集成開發環境。 90 00:03:35,320 --> 00:03:38,360 它是說一個奇特的方式 這個集成開發 91 00:03:38,360 --> 00:03:40,620 環境,用於開發軟件。 92 00:03:40,620 --> 00:03:42,477 那麼,在UI沒有變化? 93 00:03:42,477 --> 00:03:44,310 你有沒有注意到什麼 這是不同的,瑪麗亞? 94 00:03:44,310 --> 00:03:47,100 >> 瑪麗亞:我發現了一些 在IDE50夾在這裡。 95 00:03:47,100 --> 00:03:47,850 >> DAVID馬蘭:是的。 96 00:03:47,850 --> 00:03:50,230 所以在這裡,不僅 我們是否有“hello.c的。” 97 00:03:50,230 --> 00:03:53,120 我們也有“的a.out”,這是 樣一個程序一個愚蠢的名字。 98 00:03:53,120 --> 00:03:56,430 不過說實在的,這是一個默認的名字 當你只是編譯代碼的程序 99 00:03:56,430 --> 00:03:59,110 不要告訴編譯器 什麼樣的文件輸出。 100 00:03:59,110 --> 00:04:01,790 所以,如果我要運行這個,我 需要告訴compiler-- 101 00:04:01,790 --> 00:04:05,340 或者說,我需要 告訴工作區,我 102 00:04:05,340 --> 00:04:09,780 要運行調用的程序“的a.out。” 103 00:04:09,780 --> 00:04:10,550 輸入。 104 00:04:10,550 --> 00:04:12,474 還有的“你好, 世界“。現在的”./“。 105 00:04:12,474 --> 00:04:13,390 其實是很重要的。 106 00:04:13,390 --> 00:04:16,050 雖然通常我們只 寫的命令的名稱, 107 00:04:16,050 --> 00:04:19,060 當它是你已經計劃 寫的,你要說“./” 108 00:04:19,060 --> 00:04:22,460 因為這明確地告訴Linux 要運行一個名為程序 109 00:04:22,460 --> 00:04:26,930 “a.out的”這是在這一點,在那裡點 意味著這個目錄是我目前 110 00:04:26,930 --> 00:04:31,600 中,這恰好是 所謂的工作空間,“a.out的。 111 00:04:31,600 --> 00:04:35,410 因為如果我只是說:“a.out中,”回車, 我要得到“a.out的命令不 112 00:04:35,410 --> 00:04:38,035 找到“因為computer-- 因為我發明了“a.out的;” 113 00:04:38,035 --> 00:04:40,910 它沒有附帶computer-- 不知道去哪裡找它, 114 00:04:40,910 --> 00:04:43,590 即使它是正確的 在我的鼻子,可以這麼說。 115 00:04:43,590 --> 00:04:44,090 好。 116 00:04:44,090 --> 00:04:49,910 所以,我們可以改變這 是“鐺鄰打招呼hello.c的。” 117 00:04:49,910 --> 00:04:53,030 如果我敲回車,什麼程序 這是怎麼回事輸出給我嗎? 118 00:04:53,030 --> 00:04:55,710 什麼是文件的名稱? 119 00:04:55,710 --> 00:04:57,500 是啊,在後面。 120 00:04:57,500 --> 00:04:58,479 那就對了。 “您好。” 121 00:04:58,479 --> 00:05:00,520 因此,“你好”將是 節目的名稱 122 00:05:00,520 --> 00:05:04,610 因為我們使用了所謂的 命令行參數,這僅僅是 123 00:05:04,610 --> 00:05:08,120 改變的行為的一種方式 編譯器實際輸出 124 00:05:08,120 --> 00:05:09,450 特定的文件名。 125 00:05:09,450 --> 00:05:12,400 事實上,如果我放大 並尋找在這裡, 126 00:05:12,400 --> 00:05:17,430 現在我不僅是“的a.out”和 “hello.c的”,而且“你好”,以及。 127 00:05:17,430 --> 00:05:22,410 所以,現在我可以做“./hello,”回車。 128 00:05:22,410 --> 00:05:23,640 還有的“你好,世界”。 129 00:05:23,640 --> 00:05:25,640 但lastly--這 現在將公約 130 00:05:25,640 --> 00:05:27,590 我們在整個使用 學期,typically-- 131 00:05:27,590 --> 00:05:30,070 是你也可以只是說“讓你好。” 132 00:05:30,070 --> 00:05:33,370 事實上,它說這完全取決於 迄今為止,因為它已經存在。 133 00:05:33,370 --> 00:05:37,860 讓我繼續前進,撈出,用 rm命令,這兩個“的a.out” - 134 00:05:37,860 --> 00:05:39,644 並說“刪除普通文件a.out的?” 135 00:05:39,644 --> 00:05:41,810 這只是意味著,你 確定要刪除嗎? 136 00:05:41,810 --> 00:05:42,880 我會說是的。 137 00:05:42,880 --> 00:05:46,690 然後,我會刪除 “你好”,而不是“hello.c的。” 138 00:05:46,690 --> 00:05:49,920 我會說“是”明確, 但“y”為足夠,以及。 139 00:05:49,920 --> 00:05:52,140 >> 如果現在通知我 鍵入ls--其中,召回, 140 00:05:52,140 --> 00:05:55,540 意味著列表中 - 它列出了所有 在我的文件夾中的文件。 141 00:05:55,540 --> 00:05:57,850 事實上,如果我放大 出去看左上角, 142 00:05:57,850 --> 00:05:59,730 它證實了什麼 此文件夾中,甚至 143 00:05:59,730 --> 00:06:04,990 雖然它在這裡標註為IDE50 而不是工作空間,它只是“hello.c的。” 144 00:06:04,990 --> 00:06:09,152 所以,現在在這兒,如果我 執行“make你好”,回車, 145 00:06:09,152 --> 00:06:12,360 現在我看到一個更長的命令,但一 那將會更複雜的命令 146 00:06:12,360 --> 00:06:13,940 將在今後數週內有用。 147 00:06:13,940 --> 00:06:16,720 現在我可以說“./hello。” 148 00:06:16,720 --> 00:06:19,257 >> 因此,讓我們快速瀏覽 一些其他的Linux命令。 149 00:06:19,257 --> 00:06:21,840 那麼我們為什麼不採取一步 回來居然看C的具體 150 00:06:21,840 --> 00:06:25,020 一般,從頭開始轉變 到C,然後總結了一下 151 00:06:25,020 --> 00:06:27,305 在第一個問題 在C設置的所有權利。 152 00:06:27,305 --> 00:06:30,430 所以我要繼續前進,只是乾淨 我的工作區控制-L剛 153 00:06:30,430 --> 00:06:31,429 保持屏幕整潔。 154 00:06:31,429 --> 00:06:33,520 但是,沒有功能 影響並非如此。 155 00:06:33,520 --> 00:06:35,820 >> 回想一下,我們已經看到 一些命令了。 156 00:06:35,820 --> 00:06:39,900 因此,我們已經看到了鏗鏘,通常你 不必手動執行了。 157 00:06:39,900 --> 00:06:41,650 我們將改用化妝。 158 00:06:41,650 --> 00:06:45,290 但是,我們也看到了LS,它顯示了 在我的目錄中的文件清單。 159 00:06:45,290 --> 00:06:48,750 現在為什麼那裡 - 有兩家 現在的文件,“你好”和“hello.c的。” 160 00:06:48,750 --> 00:06:52,240 為什麼會出現一個明星或 之後,“你好”星號? 161 00:06:52,240 --> 00:06:54,900 那是什麼表示,基於 對我們在每週一看見? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 你怎麼看? 164 00:07:00,400 --> 00:07:02,742 什麼是星意味著什麼? 165 00:07:02,742 --> 00:07:04,614 >> 瑪麗亞:For--節目“你好”? 166 00:07:04,614 --> 00:07:05,530 DAVID馬蘭:“你好*”。 167 00:07:05,530 --> 00:07:06,330 是啊。 168 00:07:06,330 --> 00:07:07,760 哦耶? 169 00:07:07,760 --> 00:07:08,639 哦,可執行。 170 00:07:08,639 --> 00:07:09,180 那就對了。 171 00:07:09,180 --> 00:07:10,890 這樣就意味著 “你好”是可執行的。 172 00:07:10,890 --> 00:07:13,430 因此,我們確實,這就是為什麼 我能做到“./hello。” 173 00:07:13,430 --> 00:07:13,930 好吧。 174 00:07:13,930 --> 00:07:15,179 所以,還有什麼我可以做嗎? 175 00:07:15,179 --> 00:07:17,290 嗯,事實證明,我可以 還創建目錄。 176 00:07:17,290 --> 00:07:20,924 因此,讓我繼續前進,創造, 例如,一個“PSET1”目錄中。 177 00:07:20,924 --> 00:07:23,590 而問題集規範 可以讓你做的正是這一點, 178 00:07:23,590 --> 00:07:25,260 所以你不必今天記住。 179 00:07:25,260 --> 00:07:27,340 但“MKDIR PSET1”似乎 到沒有影響。 180 00:07:27,340 --> 00:07:30,540 但同樣,沒有錯誤信息 通常是一件好事。 181 00:07:30,540 --> 00:07:34,060 所以,如果我輸入“LS”now--啊,現在 我有一個名為可執行文件 182 00:07:34,060 --> 00:07:36,570 “你好,”一個C文件名為“hello.c的。” 183 00:07:36,570 --> 00:07:40,860 然後是斜線,所以 講,意味著這是一個目錄。 184 00:07:40,860 --> 00:07:42,510 >> 因此,我們確實,現在我要打開它。 185 00:07:42,510 --> 00:07:45,730 我不雙擊它像 在圖形用戶界面,圖形環境。 186 00:07:45,730 --> 00:07:48,550 我不是說“CD PSET1。” 187 00:07:48,550 --> 00:07:49,640 輸入。 188 00:07:49,640 --> 00:07:53,100 沒有什麼有趣的似乎有 除非發生了我的小提示 189 00:07:53,100 --> 00:07:57,300 這裡 - 這是提醒Linux的方法 我我在哪裡,所以哪個文件夾打開。 190 00:07:57,300 --> 00:08:00,080 這只是明確地告訴我, 相對於圖形。 191 00:08:00,080 --> 00:08:05,100 如果我鍵入“ls”,為什麼我看到另 立刻提示,你認為, 192 00:08:05,100 --> 00:08:07,269 當我列出PSET1的內容是什麼? 193 00:08:07,269 --> 00:08:09,310 瑪麗亞:你可能不 在有什麼。 194 00:08:09,310 --> 00:08:09,630 DAVID馬蘭:是的。 195 00:08:09,630 --> 00:08:11,510 然後我們還沒有明顯 在那裡創造了什麼 196 00:08:11,510 --> 00:08:13,150 因為我剛剛創建的目錄中。 197 00:08:13,150 --> 00:08:17,690 現在,如果我想創建一個file--為 例如,我可以創建一個新的文件。 198 00:08:17,690 --> 00:08:20,190 然後我會去 保存並保存為, 199 00:08:20,190 --> 00:08:23,090 像“mario.c”如果你正在做 PSET的一個標準版本。 200 00:08:23,090 --> 00:08:27,610 然後,像任何Mac或PC,只 選擇文件夾“PSET1,保存。 201 00:08:27,610 --> 00:08:28,740 而現在的文件是空的。 202 00:08:28,740 --> 00:08:31,160 但是,讓我們再次放大一秒鐘。 203 00:08:31,160 --> 00:08:32,470 讓我們在這裡做的LS。 204 00:08:32,470 --> 00:08:34,470 現在我們看到的“mario.c”。 205 00:08:34,470 --> 00:08:37,850 >> 因此,有一些其他的命令 值得記住了時間 - 206 00:08:37,850 --> 00:08:41,200 清除或控制-L是我所 被擊中; MKDIR我們已經看到了; 207 00:08:41,200 --> 00:08:45,240 RM我們所看到的,還有,這是 去除或刪除文件。 208 00:08:45,240 --> 00:08:49,310 當心你可以also--,如果你看看 在網上的教程,你將RM -rf 209 00:08:49,310 --> 00:08:52,630 是說一個很常見的方式 刪除有東西在它的文件夾。 210 00:08:52,630 --> 00:08:54,280 只要是超級,超級小心。 211 00:08:54,280 --> 00:08:58,780 -rf意味著遞歸 刪除不管它是什麼 212 00:08:58,780 --> 00:09:01,150 你想刪除 並強行將其刪除。 213 00:09:01,150 --> 00:09:04,630 這樣循環的手段,如果它是一個文件夾 與文件夾的文件夾的文件夾, 214 00:09:04,630 --> 00:09:05,690 刪除所有的人。 215 00:09:05,690 --> 00:09:08,680 並強行手段甚至不 問我是或不是,我是肯定? 216 00:09:08,680 --> 00:09:11,960 所以這是一個超級危險方法 刪除很多東西很快。 217 00:09:11,960 --> 00:09:17,210 但beware--往往做一個勇敢的 學生意外刪除,也就是說,PSET 218 00:09:17,210 --> 00:09:18,000 1,例如。 219 00:09:18,000 --> 00:09:19,833 >> 瑪麗亞:如果他們只是 做-r,他們會 220 00:09:19,833 --> 00:09:21,870 問他們的每一個文件。 221 00:09:21,870 --> 00:09:22,790 >> DAVID馬蘭:這是 適度煩人。 222 00:09:22,790 --> 00:09:23,480 >> 瑪麗亞:是的。 223 00:09:23,480 --> 00:09:25,813 >> DAVID馬蘭:所以這就是為什麼 我們這麼多人,自包含, 224 00:09:25,813 --> 00:09:27,070 我在使用-rf的習慣。 225 00:09:27,070 --> 00:09:27,861 但它是危險的。 226 00:09:27,861 --> 00:09:29,010 因此,買家當心。 227 00:09:29,010 --> 00:09:31,050 然後,MV是怎麼樣的 有趣的命名。 228 00:09:31,050 --> 00:09:33,600 因此,這是移動命令, 這感覺有點怪異 229 00:09:33,600 --> 00:09:37,260 因為你的確可以用它來 從一個地方移動到另一個文件。 230 00:09:37,260 --> 00:09:39,970 舉例來說,假設我搞砸了。 231 00:09:39,970 --> 00:09:43,660 假設我創建 一個新的文件處理器集。 232 00:09:43,660 --> 00:09:46,320 我將它保存為“greedy.c。” 233 00:09:46,320 --> 00:09:49,970 但是假設我不小心將它保存 在IDE50--所以在我區本身 234 00:09:49,970 --> 00:09:51,580 而不是在PSET1。 235 00:09:51,580 --> 00:09:53,960 >> 你可以看到盡可能多的左上方。 236 00:09:53,960 --> 00:09:55,284 有“greedy.c。” 237 00:09:55,284 --> 00:09:56,450 還有的幾個解決方案。 238 00:09:56,450 --> 00:09:58,324 所以一個,我可以使用 超級用戶友好的方式 239 00:09:58,324 --> 00:09:59,740 只是拖放。 240 00:09:59,740 --> 00:10:01,910 而這實際上 解決這個問題。 241 00:10:01,910 --> 00:10:04,967 但是今天,我們想看看 更神秘而強大的方式 242 00:10:04,967 --> 00:10:05,550 對這樣做。 243 00:10:05,550 --> 00:10:07,880 因此,讓我走“LS”的PSET1。 244 00:10:07,880 --> 00:10:09,690 而我只看到“mario.c。” 245 00:10:09,690 --> 00:10:13,450 讓我繼續前進,做“CD ..”。 246 00:10:13,450 --> 00:10:15,320 所以CD再次改變目錄。 247 00:10:15,320 --> 00:10:18,130 “”是指什麼有關係嗎? 248 00:10:18,130 --> 00:10:21,100 上次我說:“CD PSET1“進入PSET1。 249 00:10:21,100 --> 00:10:24,360 所以當我說“CD ..”,我在做什麼? 250 00:10:24,360 --> 00:10:24,910 向後。 251 00:10:24,910 --> 00:10:25,150 是啊。 252 00:10:25,150 --> 00:10:26,750 >> 因此,這將所謂的父母。 253 00:10:26,750 --> 00:10:29,730 進入上一層,像 退出了一個文件夾中。 254 00:10:29,730 --> 00:10:30,500 所以輸入。 255 00:10:30,500 --> 00:10:31,900 事實上,看看它的所作所為。 256 00:10:31,900 --> 00:10:37,070 這讓我感動剛剛進入工作區,而不是 成PSET1,這是在工作區中。 257 00:10:37,070 --> 00:10:39,710 而現在,如果我輸入“LS” 有一大堆的東西。 258 00:10:39,710 --> 00:10:41,650 在有“greedy.c”。 259 00:10:41,650 --> 00:10:48,720 所以,現在讓我用MV來字面上 移動“greedy.c”到PSET1。 260 00:10:48,720 --> 00:10:51,120 所以很多Li​​nux命令 工作完全是這樣。 261 00:10:51,120 --> 00:10:54,470 他們沒有參數或者他們需要一 參數或他們採取兩個命令行 262 00:10:54,470 --> 00:10:55,449 參數等等。 263 00:10:55,449 --> 00:10:57,240 在這種情況下,它的 從字面上做什麼 264 00:10:57,240 --> 00:11:01,670 它說,儘管succinctly-- 移動greedy.c到PSET1。 265 00:11:01,670 --> 00:11:02,310 輸入。 266 00:11:02,310 --> 00:11:03,310 好像沒有什麼改變。 267 00:11:03,310 --> 00:11:06,180 但是,如果我再次做了LS,貪走了。 268 00:11:06,180 --> 00:11:12,437 如果我做“CD PSET1”,回車,然後 LS再次,現在是在正確的地方。 269 00:11:12,437 --> 00:11:14,270 順便說一句,如果 一些reason--特別是 270 00:11:14,270 --> 00:11:16,194 如果你有間歇性 網絡連接 271 00:11:16,194 --> 00:11:18,360 或者你走動 校園裡與你的筆記本電腦的蓋子 272 00:11:18,360 --> 00:11:20,180 關閉,然後打開它 再次和您的工作空間 273 00:11:20,180 --> 00:11:21,730 似乎有點不同步,沒有什麼大不了的。 274 00:11:21,730 --> 00:11:23,646 只需重新加載瀏覽器 窗口,它應 275 00:11:23,646 --> 00:11:26,339 重新同步,以使左側 文件瀏覽器看上去完全 276 00:11:26,339 --> 00:11:27,380 如終端窗口。 277 00:11:27,380 --> 00:11:27,921 不用擔心。 278 00:11:27,921 --> 00:11:31,460 如果有疑問,重新載入頁面,所以 只要你已經保存的文件。 279 00:11:31,460 --> 00:11:31,960 好。 280 00:11:31,960 --> 00:11:34,710 因此MV也可用於重命名文件。 281 00:11:34,710 --> 00:11:36,760 讓我們來看看 在這份最後的命令。 282 00:11:36,760 --> 00:11:39,950 所以suppose--並且這是 超級常見的,也很早。 283 00:11:39,950 --> 00:11:46,400 有些學生偶爾創建一個文件 所謂的,讓我們say--什麼別的? 284 00:11:46,400 --> 00:11:47,730 像“WATER.C。” 285 00:11:47,730 --> 00:11:51,080 所以,我就吆喝,為 沒有任何理由,全部大寫。 286 00:11:51,080 --> 00:11:53,190 但是這不是 正確的文件名, 287 00:11:53,190 --> 00:11:56,660 如果僅僅是因為我們的問題集 規範沒有告訴你 288 00:11:56,660 --> 00:11:59,430 將文件保存為全部大寫“WATER.C。” 289 00:11:59,430 --> 00:12:01,320 相反,我們預計 小寫的“water.c”。 290 00:12:01,320 --> 00:12:03,140 而且,事實上,這是 問題的,因為check50, 291 00:12:03,140 --> 00:12:04,370 你要去一個程序 在的問題,以滿足 292 00:12:04,370 --> 00:12:07,350 設置一個自動測試 你的代碼的正確性 293 00:12:07,350 --> 00:12:11,615 是要罵你,如果它不能 發現在所有的小寫字母“water.c”。 294 00:12:11,615 --> 00:12:12,712 >> 所以我需要解決這個問題。 295 00:12:12,712 --> 00:12:14,920 因此,許多不同的方式來 做到這一點,其中第一個 296 00:12:14,920 --> 00:12:18,330 需要控制或右鍵單擊 文件名,只需要改變重命名。 297 00:12:18,330 --> 00:12:19,740 完全好這樣做。 298 00:12:19,740 --> 00:12:21,820 但同樣,今天,讓我們 做一個小票友。 299 00:12:21,820 --> 00:12:26,680 讓我們用MV來改變 “WATER.C”到“water.c”。 300 00:12:26,680 --> 00:12:30,690 所以,你還可以用第一個參數 將其重命名為第二個參數 301 00:12:30,690 --> 00:12:34,455 如果第二個參數是不是在 事實上,文件夾或目錄名。 302 00:12:34,455 --> 00:12:35,120 >> 好吧。 303 00:12:35,120 --> 00:12:39,560 最後,一點點trick--所以我在 此刻我的工作區目錄。 304 00:12:39,560 --> 00:12:43,660 如果我想進入PSET之一, 我當然可以鍵入“cd PSET1。” 305 00:12:43,660 --> 00:12:47,260 但它是如此繁瑣的輸入“PSET1”或 長文件名或目錄名 306 00:12:47,260 --> 00:12:47,980 仍然。 307 00:12:47,980 --> 00:12:51,960 所以,很多時候在Linux中,有什麼 你能做的就是開始輸入“PSE” 308 00:12:51,960 --> 00:12:56,100 和剛剛獲得無聊,打標籤,並讓 計算機數字出來給你。 309 00:12:56,100 --> 00:12:58,190 超級有助於進入這個習慣。 310 00:12:58,190 --> 00:13:01,079 唯一的缺點是,如果你有 啟動多個文件或文件夾 311 00:13:01,079 --> 00:13:02,870 以字母“P”或 “PS”,你可能有 312 00:13:02,870 --> 00:13:05,525 鍵入前幾個 電腦知道該怎麼做。 313 00:13:05,525 --> 00:13:06,820 >> 瑪麗亞:我們喜歡的快捷鍵。 314 00:13:06,820 --> 00:13:08,695 >> DAVID馬蘭:這將 為您節省了很多時間。 315 00:13:08,695 --> 00:13:11,930 而且,正如我們所說的講座,你 可以在歷史上滾動,上下, 316 00:13:11,930 --> 00:13:15,461 找最近執行 命令,以及。 317 00:13:15,461 --> 00:13:15,960 好吧。 318 00:13:15,960 --> 00:13:20,904 所以,現在,讓我們把注意力轉回 以一個簡單的程序,你好世界。 319 00:13:20,904 --> 00:13:22,195 因此,我們完全編譯這一點。 320 00:13:22,195 --> 00:13:24,050 而現在,我們為什麼不拿 看看數據類型 321 00:13:24,050 --> 00:13:26,776 然後從一些過渡 相應的划痕塊C. 322 00:13:26,776 --> 00:13:27,400 瑪麗亞:真棒。 323 00:13:27,400 --> 00:13:30,031 所以,現在你已經開始 C語言編寫程序, 324 00:13:30,031 --> 00:13:32,530 我們將開始討論 有關數據類型和變量。 325 00:13:32,530 --> 00:13:37,570 因此,某些數據類型,你 想知道從現在開始 326 00:13:37,570 --> 00:13:39,400 是那些是 以藍色突出顯示。 327 00:13:39,400 --> 00:13:42,420 因此,我們有INT第一, 它代表的整數。 328 00:13:42,420 --> 00:13:46,075 而持有整數,因為你 可能具有guessed--所以1,2,3, 329 00:13:46,075 --> 00:13:47,950 和任何其它整數 你能想到的。 330 00:13:47,950 --> 00:13:48,730 >> DAVID馬蘭:而且也不利。 331 00:13:48,730 --> 00:13:50,220 >> 瑪麗亞:而且還消極的,是的。 332 00:13:50,220 --> 00:13:51,450 和0。 333 00:13:51,450 --> 00:13:54,250 然後我們有花車,其中 是浮點數。 334 00:13:54,250 --> 00:13:58,360 所以這是所有的實數 有小數點。 335 00:13:58,360 --> 00:14:03,960 所以5.0,5.2,並且甚至更 小數點後的數字, 336 00:14:03,960 --> 00:14:05,620 同時,也是消極的。 337 00:14:05,620 --> 00:14:07,530 然後我們有焦炭這是一個字符。 338 00:14:07,530 --> 00:14:10,240 因此,我認為我們談論 這在今天的講座。 339 00:14:10,240 --> 00:14:15,682 但是,我們有字母,example-- A, 乙,C--可以存儲作為char。 340 00:14:15,682 --> 00:14:18,390 但是,我們有更多的符號 可以存儲為char。 341 00:14:18,390 --> 00:14:22,380 而這些被存儲為ASCII。 342 00:14:22,380 --> 00:14:25,280 >> 然後我們有布爾, 這是布爾值。 343 00:14:25,280 --> 00:14:29,067 而那些評估為True或 假或1和0。 344 00:14:29,067 --> 00:14:31,650 DAVID馬蘭:重溫使 布爾來自CS50庫。 345 00:14:31,650 --> 00:14:33,300 所以,它沒有內置到 C,但它的超級有用 346 00:14:33,300 --> 00:14:34,850 以具有真假的概念。 347 00:14:34,850 --> 00:14:36,990 而且即使你 可能think--有趣的事實。 348 00:14:36,990 --> 00:14:43,700 布爾技術上需要多少位, 確實,表示真與假? 349 00:14:43,700 --> 00:14:47,910 多少位,你認為 你需要,最大限度地? 350 00:14:47,910 --> 00:14:48,790 是啊,只有一個。 351 00:14:48,790 --> 00:14:52,077 所以,事實證明,Ç 不能給你只是一個位。 352 00:14:52,077 --> 00:14:54,160 度量的最小單位 你可以為8。 353 00:14:54,160 --> 00:14:57,090 所以這是一個有點浪費他們你 使用中的整個字節或八個比特, 354 00:14:57,090 --> 00:14:58,340 代表真或假。 355 00:14:58,340 --> 00:15:01,807 但是,這只是它的方式 由CS50庫中實現C語言。 356 00:15:01,807 --> 00:15:04,890 瑪麗亞:然後那些我們 不是要談論的廣泛 357 00:15:04,890 --> 00:15:08,060 右now--雙, 這是更大的浮動。 358 00:15:08,060 --> 00:15:09,811 龍多空 還可用於整數。 359 00:15:09,811 --> 00:15:10,643 DAVID馬蘭:的確。 360 00:15:10,643 --> 00:15:13,190 在PSET一個黑客版, 我們實際使用很長很長。 361 00:15:13,190 --> 00:15:15,801 但對於標準版, 它不應該是必要的。 362 00:15:15,801 --> 00:15:16,300 瑪麗亞:酷。 363 00:15:16,300 --> 00:15:17,361 好。 364 00:15:17,361 --> 00:15:20,110 所以operators--你應該 可能熟悉其中的大多數。 365 00:15:20,110 --> 00:15:22,620 此外,+;減法, - 。 366 00:15:22,620 --> 00:15:24,070 對於乘法,我們有*。 367 00:15:24,070 --> 00:15:25,900 所以不是在X,我們平時使用。 368 00:15:25,900 --> 00:15:27,840 事業部,我們有反斜杠。 369 00:15:27,840 --> 00:15:31,380 和模是我們最後的運算符 我們要談論現在。 370 00:15:31,380 --> 00:15:35,610 這是一個運營商,使我們能夠 拿一個除法的餘數。 371 00:15:35,610 --> 00:15:40,630 因此,如果我們有4%2,4分 由圖2是2用的0剩餘部分。 372 00:15:40,630 --> 00:15:41,740 所以4%2為0。 373 00:15:41,740 --> 00:15:42,950 4%3是1。 374 00:15:42,950 --> 00:15:44,870 4%,5 4,你可能已經猜到了。 375 00:15:44,870 --> 00:15:48,860 請記住,當使用所有這些 經營者利用PEMDAS規則。 376 00:15:48,860 --> 00:15:54,060 >> DAVID馬蘭:所以要清楚,如果你 做4%2,為什麼是0,到底是什麼? 377 00:15:54,060 --> 00:15:57,480 >> 瑪麗亞:因為4除以 圖2是2用的0剩餘部分。 378 00:15:57,480 --> 00:16:00,752 因此,模給我們,剩下的作為 反對分裂的結果。 379 00:16:00,752 --> 00:16:02,960 DAVID馬蘭:事實上, 我們會發現這是很有幫助的 380 00:16:02,960 --> 00:16:05,640 為是,在一些問題 這並不一定是, 381 00:16:05,640 --> 00:16:08,040 如果你想擁有 限制自己的作用 382 00:16:08,040 --> 00:16:10,720 一個數字範圍 像0到的東西, 383 00:16:10,720 --> 00:16:13,904 您可以使用模環繞 早於像2十億 384 00:16:13,904 --> 00:16:16,320 或四十億值 我們已經談到了講座。 385 00:16:16,320 --> 00:16:16,870 >> 瑪麗亞:是的。 386 00:16:16,870 --> 00:16:19,429 即使在“貪婪”我們可能。 387 00:16:19,429 --> 00:16:21,345 DAVID馬蘭:是的,在 問題集之一,也是如此。 388 00:16:21,345 --> 00:16:22,520 瑪麗亞:是的,不錯。 389 00:16:22,520 --> 00:16:24,340 DAVID馬蘭:好的暗示。 390 00:16:24,340 --> 00:16:25,750 瑪麗亞:對不起。 391 00:16:25,750 --> 00:16:28,590 布爾expressions--所以 布爾型的操作, 392 00:16:28,590 --> 00:16:31,770 我們要談的所有 這些是你在這裡看到。 393 00:16:31,770 --> 00:16:35,310 所以現在,我們有兩個 等號列出的平等。 394 00:16:35,310 --> 00:16:38,650 因此,這些都是進行比較。 395 00:16:38,650 --> 00:16:40,830 到目前為止,我們只看過一等號。 396 00:16:40,830 --> 00:16:44,870 這時候,我們分配 一個值的變量。 397 00:16:44,870 --> 00:16:50,160 因此,如果我們已經看到INT N = 5,則 我們給5到變量n。 398 00:16:50,160 --> 00:16:55,600 但是,如果我們想用==進行 相比之下,我們可以檢查如果n == 5。 399 00:16:55,600 --> 00:16:58,310 而如果n == 5,那麼這是真的。 400 00:16:58,310 --> 00:17:01,950 >> 所以布爾運算符 讓我們,基本上, 401 00:17:01,950 --> 00:17:04,670 評估布爾 表達式為真或假。 402 00:17:04,670 --> 00:17:07,819 所以沒有equals--我們有 感嘆號和equals。 403 00:17:07,819 --> 00:17:14,240 因此,我們也可以查看如果n 不等於5--因此n!= 5。 404 00:17:14,240 --> 00:17:17,640 小於,小於或等於, 大於,大於或等於, 405 00:17:17,640 --> 00:17:20,720 然後我們有邏輯 與和邏輯或。 406 00:17:20,720 --> 00:17:24,060 而那些讓我們能夠評估 多個布爾表達式一起 407 00:17:24,060 --> 00:17:27,930 基本上走到一起 一個完整的布爾表達式。 408 00:17:27,930 --> 00:17:34,970 因此,如果我們想找到一個號碼,說: 大於5但小於15 409 00:17:34,970 --> 00:17:39,810 與此同時,我們將​​使用 邏輯AND運算,以查看是否n是 410 00:17:39,810 --> 00:17:42,937 大於5 &&Ñ小於15。 411 00:17:42,937 --> 00:17:44,770 DAVID馬蘭:在這裡, 同樣,它真的很容易 412 00:17:44,770 --> 00:17:47,290 早早就意外 只使用一個單一的符號 413 00:17:47,290 --> 00:17:48,572 或單豎線。 414 00:17:48,572 --> 00:17:51,280 並希望編譯器會 罵你,因為他們實際上 415 00:17:51,280 --> 00:17:52,530 具有非常不同的含義。 416 00:17:52,530 --> 00:17:55,660 對於那些好奇,他們是 用於位運算, 417 00:17:55,660 --> 00:17:57,197 操作上的各個位。 418 00:17:57,197 --> 00:17:58,780 但是,你想對他們在這裡。 419 00:17:58,780 --> 00:18:01,560 和超級重要的是, 第一個,等號, 420 00:18:01,560 --> 00:18:05,270 這是運營商的平等作為 反對賦值運算符。 421 00:18:05,270 --> 00:18:08,552 >> 瑪麗亞:與豎線 位於刪除和收益之間。 422 00:18:08,552 --> 00:18:09,260 DAVID馬蘭:是的。 423 00:18:09,260 --> 00:18:11,420 在一個典型的美式鍵盤。 424 00:18:11,420 --> 00:18:13,190 >> 瑪麗亞:是的。 425 00:18:13,190 --> 00:18:15,890 因此,讓我們直接進入 條件語句。 426 00:18:15,890 --> 00:18:18,300 在刮,你 已經看到,大概, 427 00:18:18,300 --> 00:18:22,730 if語句,讓您 檢查如果事情是真的,那麼 428 00:18:22,730 --> 00:18:23,660 做別的事情。 429 00:18:23,660 --> 00:18:28,410 所以,你可能會想 檢查你的精靈是 430 00:18:28,410 --> 00:18:31,410 接觸一些其他的精靈 或者你的屏幕邊框。 431 00:18:31,410 --> 00:18:35,520 然後你可能會想 結束遊戲或做其他事。 432 00:18:35,520 --> 00:18:40,000 這樣的語法說 是“如果(條件)。” 433 00:18:40,000 --> 00:18:46,820 所以,如果你的精靈是感人的東西, 然後要做的就是花括號內。 434 00:18:46,820 --> 00:18:48,980 >> 然後我們有if-else語句。 435 00:18:48,980 --> 00:18:54,080 否則讓我們做一些事情 如果條件我們 436 00:18:54,080 --> 00:18:55,870 在開始時檢查是不正確的。 437 00:18:55,870 --> 00:19:01,530 因此,如果精靈的觸摸 邊境做到這一點,否則做其他的事情。 438 00:19:01,530 --> 00:19:04,030 因此,否則做別的事情。 439 00:19:04,030 --> 00:19:07,530 然後我們有一個簡單的例子這一點。 440 00:19:07,530 --> 00:19:11,551 因此,如果(military_time <12),我們 想給printf“早上好!” 441 00:19:11,551 --> 00:19:13,300 否則我們將 printf的“晚上好!” 442 00:19:13,300 --> 00:19:14,860 基本的例子。 443 00:19:14,860 --> 00:19:15,680 >> DAVID馬蘭:好。 444 00:19:15,680 --> 00:19:16,760 >> 瑪麗亞:酷。 445 00:19:16,760 --> 00:19:18,560 所以現在我們有switch語句。 446 00:19:18,560 --> 00:19:21,960 交換機一般都能發言 讓我們做了很多同樣的事情 447 00:19:21,960 --> 00:19:25,070 我們剛才講 有關使用if語句。 448 00:19:25,070 --> 00:19:29,440 例如,現在我們有 switch語句的一般形式 449 00:19:29,440 --> 00:19:33,870 這使我們能夠 一個變量調用ñ 450 00:19:33,870 --> 00:19:37,670 並比較了很多 不同的值,在這裡我們 451 00:19:37,670 --> 00:19:40,010 呼籲CONSTANT1,CONSTANT2。 452 00:19:40,010 --> 00:19:41,150 我們可能有更多的。 453 00:19:41,150 --> 00:19:42,930 而那些被稱為案件。 454 00:19:42,930 --> 00:19:46,280 >> 因此,如果我們有一個開關 statement--這個作品 455 00:19:46,280 --> 00:19:50,580 僅用於integers--我們有一個 變量在這種情況下n值。 456 00:19:50,580 --> 00:19:53,840 如果變量n是 等於CONSTANT1,我們 457 00:19:53,840 --> 00:19:59,720 將執行一些代碼段 或者說,我們想要做的事情。 458 00:19:59,720 --> 00:20:01,280 然後我們將打破。 459 00:20:01,280 --> 00:20:04,820 因此,突破意味著, switch語句 460 00:20:04,820 --> 00:20:08,120 將停止,如果執行 n等於CONSTANT1, 461 00:20:08,120 --> 00:20:09,752 然後你的程序將繼續進行。 462 00:20:09,752 --> 00:20:11,835 這將退出的出 switch語句,它會 463 00:20:11,835 --> 00:20:13,520 繼續做別的事情。 464 00:20:13,520 --> 00:20:17,204 >> 然而,如果n不等於 CONSTANT1,然後案例CONSTANT2 465 00:20:17,204 --> 00:20:17,870 將被檢查。 466 00:20:17,870 --> 00:20:21,750 因此,如果n等於CONSTANT2,其他 的代碼段會被執行。 467 00:20:21,750 --> 00:20:23,850 然後它會打破 如果這是等於它。 468 00:20:23,850 --> 00:20:27,580 然後我們就可以有also--不 不一定,though--默認的情況下, 469 00:20:27,580 --> 00:20:32,290 如果n不等於將發生 任何你所列舉的案例。 470 00:20:32,290 --> 00:20:35,400 與在默認的情況下,我們還 不需要休息不一定 471 00:20:35,400 --> 00:20:39,271 因為switch語句就知道了 它需要的默認後結束 472 00:20:39,271 --> 00:20:40,270 情況下,如果是這樣的話。 473 00:20:40,270 --> 00:20:42,140 >> DAVID馬蘭:但在風格上, 我們始終把它放在那裡。 474 00:20:42,140 --> 00:20:42,540 >> 瑪麗亞:是的。 475 00:20:42,540 --> 00:20:42,710 >> DAVID馬蘭:是的。 476 00:20:42,710 --> 00:20:44,750 因此,特別是在開始的時候了, 尤其是在那些較少 477 00:20:44,750 --> 00:20:47,458 舒服,我會親自 只是建議堅持與IFS 478 00:20:47,458 --> 00:20:51,564 和IFS-別人的和的if-else-IF-別人的 等等,如果僅 479 00:20:51,564 --> 00:20:53,480 因為他們是一個小 更直接。 480 00:20:53,480 --> 00:20:56,142 這是一個很好的優化,或者 有時甚至是美學上它 481 00:20:56,142 --> 00:20:57,350 使得代碼更易讀。 482 00:20:57,350 --> 00:20:59,599 而事實上,可能 期中,我們將看到一個問題 483 00:20:59,599 --> 00:21:02,504 設置它只是看起來更好 並且更容易閱讀的人 484 00:21:02,504 --> 00:21:03,670 通過使用switch語句。 485 00:21:03,670 --> 00:21:05,460 不過不要擔心 執著於這個為時尚早。 486 00:21:05,460 --> 00:21:05,680 >> 瑪麗亞:是的。 487 00:21:05,680 --> 00:21:08,840 如果你有if語句很多, 它可能只是不是很可讀。 488 00:21:08,840 --> 00:21:10,965 它可能不是非常快 讓你通過它。 489 00:21:10,965 --> 00:21:13,230 所以,sw​​itch語句可以 是非常有用的,也是如此。 490 00:21:13,230 --> 00:21:17,900 而且,不要remember--不 忘了把休息時間在那裡。 491 00:21:17,900 --> 00:21:20,330 >> DAVID馬蘭:不記得這一點。 492 00:21:20,330 --> 00:21:24,890 >> 瑪麗亞:因為這樣你可能會下降 通過從一個案件到另一個。 493 00:21:24,890 --> 00:21:27,930 所以我們可以說這種情況下CONSTANT1 沒有一個break語句在裡面。 494 00:21:27,930 --> 00:21:31,920 然後,我們可能告吹 裡面的情況CONSTANT2。 495 00:21:31,920 --> 00:21:35,070 同時,我們也不想這樣做,如果 我們已經達到的情況下CONSTANT1 496 00:21:35,070 --> 00:21:37,830 它是等於n。 497 00:21:37,830 --> 00:21:45,100 >> 因此,例如,如果我們有一個可變 n表示包含一個類號, 498 00:21:45,100 --> 00:21:48,990 我們希望看到什麼 如果n等於50級的is--, 499 00:21:48,990 --> 00:21:51,957 我們要打印“CS50是 計算機科學導論一。“ 500 00:21:51,957 --> 00:21:53,040 然後,我們要打破。 501 00:21:53,040 --> 00:21:53,920 就是這樣。 502 00:21:53,920 --> 00:21:55,950 然而,如果n等於 51,我們將 503 00:21:55,950 --> 00:21:58,494 打印“CS51是介紹 計算機科學II“。 504 00:21:58,494 --> 00:21:59,910 然後,再次,我們要打破。 505 00:21:59,910 --> 00:22:05,080 但是,如果那麼我們就把124,61,任何 你可能會想其他的號碼, 506 00:22:05,080 --> 00:22:06,890 或程序是不會 認識到這一點。 507 00:22:06,890 --> 00:22:09,010 因此,它會說,“對不起,我 不熟悉的類。“ 508 00:22:09,010 --> 00:22:10,009 而這將打破。 509 00:22:10,009 --> 00:22:12,847 DAVID馬蘭:所以你真的可以看到 中頻,否則的話,其他人的想法在這裡。 510 00:22:12,847 --> 00:22:15,430 這只是不同的語法 表達完全相同的想法。 511 00:22:15,430 --> 00:22:17,690 >> 瑪麗亞:沒錯。 512 00:22:17,690 --> 00:22:19,480 現在,我們有我們的三元運營商。 513 00:22:19,480 --> 00:22:24,900 因此,三元運營商 3 parts--的條件, 514 00:22:24,900 --> 00:22:27,220 事做,如果 該條件是真的, 515 00:22:27,220 --> 00:22:29,730 然後事做 如果該條件為假。 516 00:22:29,730 --> 00:22:33,400 所以你看,基本上, 的是,這裡的語法。 517 00:22:33,400 --> 00:22:37,792 我們有問號, 那麼the--我們怎麼叫呢? 518 00:22:37,792 --> 00:22:38,750 DAVID馬蘭:結腸。 519 00:22:38,750 --> 00:22:39,100 瑪麗亞:結腸。 520 00:22:39,100 --> 00:22:39,599 謝謝。 521 00:22:39,599 --> 00:22:41,880 抱歉。 522 00:22:41,880 --> 00:22:45,800 因此,讓我們來看看我們的榜樣 看看我們是否可以this--感 523 00:22:45,800 --> 00:22:47,840 class_num == 50。 524 00:22:47,840 --> 00:22:52,580 所以在這裡,我們看到我們的布爾運算符== 用於比較變量class_num 525 00:22:52,580 --> 00:22:53,100 50。 526 00:22:53,100 --> 00:22:55,150 所以class_num存儲的整數。 527 00:22:55,150 --> 00:22:58,180 如果該整數 等於50,那麼我們 528 00:22:58,180 --> 00:23:02,810 將存儲“大衛·馬蘭” 裡面的字符串教授。 529 00:23:02,810 --> 00:23:05,912 如果班級人數不 等於50,“不是大衛·馬蘭” 530 00:23:05,912 --> 00:23:07,120 將是教授。 531 00:23:07,120 --> 00:23:08,630 >> DAVID馬蘭:謝謝。 532 00:23:08,630 --> 00:23:12,110 因此這似乎相當於 什麼,你會說,乍一看? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> 瑪麗亞:對我來說,似乎 像if-else語句。 535 00:23:19,960 --> 00:23:20,709 >> DAVID馬蘭:是的。 536 00:23:20,709 --> 00:23:24,020 而事實上,這是一種 一個漂亮的單行的, 537 00:23:24,020 --> 00:23:27,520 可以這麼說,對於實施 究竟邏輯的if-else 538 00:23:27,520 --> 00:23:29,010 但這樣做的一切一步到位。 539 00:23:29,010 --> 00:23:29,860 >> 瑪麗亞:沒錯。 540 00:23:29,860 --> 00:23:30,360 是啊。 541 00:23:30,360 --> 00:23:33,520 所以if-else語句可能 佔用了大量的空間。 542 00:23:33,520 --> 00:23:36,283 他們可能是太長時間 一些簡單不過的了。 543 00:23:36,283 --> 00:23:38,350 因此,這可以是非常 簡潔,非常漂亮。 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 所以,現在我們正在進入觀察 一次又一次地執行一些東西, 546 00:23:46,820 --> 00:23:50,060 所以檢查的 條件多次 547 00:23:50,060 --> 00:23:53,510 然後繼續做一些事情 而條件為真。 548 00:23:53,510 --> 00:23:56,740 因此,這給我們帶來了 很好地進入while循環。 549 00:23:56,740 --> 00:23:59,270 >> 到左側,我們有 我們的第一個while循環。 550 00:23:59,270 --> 00:24:03,840 因此,雖然事情是真的, 一次又一次地做一些事情。 551 00:24:03,840 --> 00:24:08,850 所以一定要注意,我們的 條件這裡在頂部驗證。 552 00:24:08,850 --> 00:24:14,150 而我們的我們稱之為第二loop-- 這一個做,而loop--我們做一些事情, 553 00:24:14,150 --> 00:24:15,890 然後我們檢查的條件。 554 00:24:15,890 --> 00:24:17,980 如果該條件 仍然是真實的, 555 00:24:17,980 --> 00:24:20,150 我們再回去做的事。 556 00:24:20,150 --> 00:24:23,360 這樣的主要區別是,其中 該條件檢查。 557 00:24:23,360 --> 00:24:29,260 以及碼可能永遠 執行如果條件不 558 00:24:29,260 --> 00:24:30,430 真正的while循環。 559 00:24:30,430 --> 00:24:33,050 而隨做,而 循環,我們有碼 560 00:24:33,050 --> 00:24:35,380 即至少要執行一次。 561 00:24:35,380 --> 00:24:37,470 然後,當條件 仍然是真實的, 562 00:24:37,470 --> 00:24:39,960 我們可以回去裡面再次重複。 563 00:24:39,960 --> 00:24:43,625 那麼,為什麼你認為我們會用 一個do-whil​​e循環在while循環? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 對。 566 00:24:48,720 --> 00:24:52,600 因此,如果我們想提示的 用戶對某種類型的輸入, 567 00:24:52,600 --> 00:24:55,400 如果我們要問他們 輸入他們的姓名, 568 00:24:55,400 --> 00:24:57,342 我們希望至少讓他們一次。 569 00:24:57,342 --> 00:24:59,050 如果他們確實進入 這個名字,我們不 570 00:24:59,050 --> 00:25:00,740 又要問他們 因為我們已經知道了。 571 00:25:00,740 --> 00:25:02,656 但是如果它們不進入 他們的姓名,或如果他們 572 00:25:02,656 --> 00:25:05,787 進入東西是 顯然不是一個名字, 573 00:25:05,787 --> 00:25:08,120 我們還是要繼續 要求他們對自己的名字。 574 00:25:08,120 --> 00:25:10,710 >> DAVID馬蘭:而在演講中,我們有一個 像這樣的得到正INT 575 00:25:10,710 --> 00:25:13,550 例如,那裡什麼也沒有到 首先檢查一下,因為你甚至還沒有 576 00:25:13,550 --> 00:25:14,190 得到一個int。 577 00:25:14,190 --> 00:25:16,680 所以我們想要做的this-- 您可以通過user--一個int 578 00:25:16,680 --> 00:25:18,860 然後檢查一下,也許, 一遍又一遍又一遍。 579 00:25:18,860 --> 00:25:21,030 >> 瑪麗亞:沒錯。 580 00:25:21,030 --> 00:25:22,060 對於loops--確定。 581 00:25:22,060 --> 00:25:25,842 For循環可以讓我們做的差不多 同樣的事情,也是如此。 582 00:25:25,842 --> 00:25:27,300 它實際上是完全一樣的東西。 583 00:25:27,300 --> 00:25:30,190 因此,有沒有什麼 您可以為循環做 584 00:25:30,190 --> 00:25:32,840 你將無法 做while循環。 585 00:25:32,840 --> 00:25:36,900 但對於循環可能看起來有點 更多的複雜語法 586 00:25:36,900 --> 00:25:39,730 因為它們具有 三個部分裡面有什麼 587 00:25:39,730 --> 00:25:42,990 是以前只是 條件與while循環。 588 00:25:42,990 --> 00:25:48,260 因此,第一個部分,你的大海, 最左邊的,我們有“INT矮人= 0”。 589 00:25:48,260 --> 00:25:51,490 因此,這是我們 初始化我們的變量。 590 00:25:51,490 --> 00:25:55,210 >> 然後我們有一個分號 和“矮人<7”。 591 00:25:55,210 --> 00:25:57,100 因此,這是出 條件實際上是。 592 00:25:57,100 --> 00:26:00,170 所以,這就是我們將有 把剛剛在同時loop-- 593 00:26:00,170 --> 00:26:01,880 “而矮人<7”。 594 00:26:01,880 --> 00:26:05,380 這裡,雲在 中間我們的for循環。 595 00:26:05,380 --> 00:26:07,190 因此,“dwaves <7”。 596 00:26:07,190 --> 00:26:11,350 然後,我們的最後一部分是“矮人++” 這就是我們更新我們的變量。 597 00:26:11,350 --> 00:26:15,470 所以,最重要的事情 要知道的是,這 598 00:26:15,470 --> 00:26:22,010 是要通過這個循環 七次並執行七次。 599 00:26:22,010 --> 00:26:24,020 因此,我們有七個 矮人,和他們都 600 00:26:24,020 --> 00:26:26,020 會說,“我在這裡 幫你,白雪公主“ 601 00:26:26,020 --> 00:26:28,860 因為他們已經準備好 幫助白雪公主。 602 00:26:28,860 --> 00:26:33,600 >> 隨著while循環,我們會做 初始化和更新 603 00:26:33,600 --> 00:26:37,490 滿足條件內,再次,但 之前或while循環中 604 00:26:37,490 --> 00:26:40,210 確保we--因為 我們總是需要的部分。 605 00:26:40,210 --> 00:26:42,835 因此,為了確保我們有 他們,我們會一直還增加他們 606 00:26:42,835 --> 00:26:44,580 上,只是沒有在括號內。 607 00:26:44,580 --> 00:26:47,288 >> DAVID馬蘭:所以它看起來like-- 在講座中,例如, 608 00:26:47,288 --> 00:26:50,250 我幾乎總是使用一樣,我和 n和很無聊的變量。 609 00:26:50,250 --> 00:26:53,050 它看起來像您可以使用更多 巧妙地命名變量了。 610 00:26:53,050 --> 00:26:56,300 >> 瑪麗亞:是的,它實際上是非常好的 使用多一點的描述變量 611 00:26:56,300 --> 00:26:59,400 因為特別是如果別人是 讀你的代碼 - 也許你是平地機 612 00:26:59,400 --> 00:27:00,940 或者如果你合作 與somebody-- 613 00:27:00,940 --> 00:27:03,481 你要確保他們 了解你在做什麼。 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> 好。 616 00:27:06,400 --> 00:27:11,435 因此,這是一件很funky-- for循環內的for循環。 617 00:27:11,435 --> 00:27:13,060 我不知道,如果我們之前已經看到了這一點。 618 00:27:13,060 --> 00:27:13,830 可能不會。 619 00:27:13,830 --> 00:27:17,750 但是,我們其實可以有this-- 如此循環,而不是循環。 620 00:27:17,750 --> 00:27:25,130 所以想也許走沒有人 我穿過這是怎麼回事嗎? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID馬蘭:我要一刺。 623 00:27:29,490 --> 00:27:29,970 瑪麗亞:酷。 624 00:27:29,970 --> 00:27:30,636 DAVID馬蘭:OK。 625 00:27:30,636 --> 00:27:34,690 因此,spoiler--我們要打印的東西 這是在底部右下角 626 00:27:34,690 --> 00:27:35,190 那裡。 627 00:27:35,190 --> 00:27:35,450 >> 瑪麗亞:對。 628 00:27:35,450 --> 00:27:35,710 是啊。 629 00:27:35,710 --> 00:27:38,043 >> DAVID馬蘭:所以我們剛剛 把該樣品的輸出存在。 630 00:27:38,043 --> 00:27:42,590 因此,我可以從推斷 你是最上面的循環 631 00:27:42,590 --> 00:27:45,680 迭代行 最外層循環,可以這麼說。 632 00:27:45,680 --> 00:27:48,107 而你遍歷 列與最內層的循環。 633 00:27:48,107 --> 00:27:50,190 直觀地,這 應該有希望才有意義 634 00:27:50,190 --> 00:27:52,070 因為性質 每一個我們所看到的節目 635 00:27:52,070 --> 00:27:55,570 之前,printf的,這是 功能我們使用,最終, 636 00:27:55,570 --> 00:27:58,190 有打印的東西的能力 出基本上逐行。 637 00:27:58,190 --> 00:27:59,960 象,一旦你輸 一個新的生產線,有 638 00:27:59,960 --> 00:28:02,876 沒有加倍背部和打印的東西 在屏幕更高,至少 639 00:28:02,876 --> 00:28:04,530 不是用printf這樣。 640 00:28:04,530 --> 00:28:07,750 >> 所以在這方面,它使 某種意義上說,最外層循環 641 00:28:07,750 --> 00:28:10,930 應該是指各行 因為對於每個給定行, 642 00:28:10,930 --> 00:28:13,650 你會想 打印出XXXXX,然後 643 00:28:13,650 --> 00:28:15,520 移動到下一行,XXXXX。 644 00:28:15,520 --> 00:28:17,317 因此,行是第一位的。 645 00:28:17,317 --> 00:28:19,150 然後在每個 行,你打印的列。 646 00:28:19,150 --> 00:28:21,160 如果你想做到這一點 相反,它可能不會 647 00:28:21,160 --> 00:28:21,690 出來,你打算。 648 00:28:21,690 --> 00:28:22,190 >> 瑪麗亞:是的。 649 00:28:22,190 --> 00:28:24,950 我們只是不能回去 上一行用printf的。 650 00:28:24,950 --> 00:28:27,658 >> DAVID馬蘭:這有什麼有趣 按今天的大約範圍聊天, 651 00:28:27,658 --> 00:28:31,600 實際上,是該行是一個int 該公司在最上面的循環聲明。 652 00:28:31,600 --> 00:28:34,030 但是請注意,它仍然是 內部,可以這麼說, 653 00:28:34,030 --> 00:28:35,982 大括號的 緊隨其後, 654 00:28:35,982 --> 00:28:38,440 即使它不是技術上 在這些大括號內。 655 00:28:38,440 --> 00:28:41,750 因此,行範圍為 代碼片段的全部, 656 00:28:41,750 --> 00:28:44,690 兩外循環內 與內循環的內部。 657 00:28:44,690 --> 00:28:48,050 但與此相反,在那裡 是列在範圍? 658 00:28:48,050 --> 00:28:49,810 可變列? 659 00:28:49,810 --> 00:28:51,310 是啊,只有在裡面循環。 660 00:28:51,310 --> 00:28:54,280 這沒關係,因為我們沒有訪問 它的花括號外面。 661 00:28:54,280 --> 00:28:57,280 我們所要做的就是打印出新 線在最後出現。 662 00:28:57,280 --> 00:28:58,670 所以,實際上是確定。 663 00:28:58,670 --> 00:29:03,740 >> 因此,這具有這樣的效果,它看起來像, 的操作的三行和四列。 664 00:29:03,740 --> 00:29:04,370 >> 瑪麗亞:對。 665 00:29:04,370 --> 00:29:06,270 所以首先我們通過我們的第一行。 666 00:29:06,270 --> 00:29:10,520 而就在我們的第一行,我們做的 四列的第一行內。 667 00:29:10,520 --> 00:29:11,980 因此,我們打印出四個X的。 668 00:29:11,980 --> 00:29:15,800 然後我們就可以退出循環,因為 我們已經印了四X的。 669 00:29:15,800 --> 00:29:17,100 我們打印新的生產線。 670 00:29:17,100 --> 00:29:19,920 然後我們經過 同樣的過程兩個行 671 00:29:19,920 --> 00:29:21,170 使一共有三個。 672 00:29:21,170 --> 00:29:23,530 >> DAVID馬蘭:而且值得注意的是 字體的只是一個假象,事實 673 00:29:23,530 --> 00:29:25,680 樣品輸出 似乎如此多高, 674 00:29:25,680 --> 00:29:27,520 好像還有更多 行比列。 675 00:29:27,520 --> 00:29:29,824 但它只是因為X 高度大於寬。 676 00:29:29,824 --> 00:29:32,740 這一切發生的事情有, 加上線之間的空白。 677 00:29:32,740 --> 00:29:33,281 >> 瑪麗亞:對。 678 00:29:33,281 --> 00:29:34,792 涼。 679 00:29:34,792 --> 00:29:35,750 DAVID馬蘭:好的。 680 00:29:35,750 --> 00:29:39,830 因此,快速瀏覽一下問題集之一, 採取任何問題,然後宣布休會? 681 00:29:39,830 --> 00:29:40,330 好吧。 682 00:29:40,330 --> 00:29:43,164 因此,在問題設置一個,還有三個 主要挑戰,大勢所趨。 683 00:29:43,164 --> 00:29:44,955 但首先,你會發現 這個問題集 684 00:29:44,955 --> 00:29:47,900 說明書中,作為與許多 pset時,今年秋天,是要帶你 685 00:29:47,900 --> 00:29:50,691 通過一些熱身練習, 你指出了幾個資源 686 00:29:50,691 --> 00:29:52,440 你可能會或可能 沒見過了。 687 00:29:52,440 --> 00:29:54,440 例如,CS50 擁有一套短褲, 688 00:29:54,440 --> 00:29:56,481 這是短視頻, 沒有什麼不同這一點,但該 689 00:29:56,481 --> 00:29:58,460 很話題specific-- 也許五分鐘, 690 00:29:58,460 --> 00:30:02,360 長度為10分鐘的循環或 上條件或算法 691 00:30:02,360 --> 00:30:04,125 或更高版本的更多 先進的主題,也是如此。 692 00:30:04,125 --> 00:30:06,000 而我們一般嵌入 這些成難題 693 00:30:06,000 --> 00:30:07,950 集使學生 有哪些資源 694 00:30:07,950 --> 00:30:10,840 審查可能具有材料 已經來在演講或部分。 695 00:30:10,840 --> 00:30:13,220 但是,這樣一來它更集中 更在他們的指尖。 696 00:30:13,220 --> 00:30:15,928 >> 我們也往往在問題嵌入 集東西叫做演練。 697 00:30:15,928 --> 00:30:20,790 因此,幾乎所有我做的例子 在講座中,這裡的舞台,我們也 698 00:30:20,790 --> 00:30:24,565 在已經拍攝的攝像頭 推進更慢, 699 00:30:24,565 --> 00:30:28,760 更貼心的演練由我的 我的筆記本電腦的代碼,一行行 700 00:30:28,760 --> 00:30:31,427 因此,在課堂上,我們經常會 脫脂通過某事或某人 701 00:30:31,427 --> 00:30:33,260 將與插 回答的一個問題。 702 00:30:33,260 --> 00:30:35,820 但它並不一定下沉 在每個人的觀眾。 703 00:30:35,820 --> 00:30:38,230 所以,你會發現代碼走查 對於大部分的實施例 704 00:30:38,230 --> 00:30:40,950 我們在這裡做演講,讓你 可以通過它按照自己的節奏走 705 00:30:40,950 --> 00:30:43,580 快退或快進或 完全跳過,如果你願意的話​​。 706 00:30:43,580 --> 00:30:45,356 >> 經常會有一些 熱身問題,這 707 00:30:45,356 --> 00:30:47,105 請你進行排序 強化這種材料 708 00:30:47,105 --> 00:30:50,250 並確保您舒適前 你繼續處理器集的其餘部分。 709 00:30:50,250 --> 00:30:51,700 然後,當然, 有處理器集本身。 710 00:30:51,700 --> 00:30:53,450 和的事情之一 我們很刻意 711 00:30:53,450 --> 00:30:57,202 做CS50是幾乎每一個無趣 或智力無趣 712 00:30:57,202 --> 00:30:58,910 機械的步驟, 你可能需要做的 713 00:30:58,910 --> 00:31:00,519 幾乎總是非常有據可查。 714 00:31:00,519 --> 00:31:03,560 在長期的過程中,我們將 開始提出更多的反問句 715 00:31:03,560 --> 00:31:06,187 像記得如何做這做那? 716 00:31:06,187 --> 00:31:08,520 但通常情況下,你會發現 該習題集給你 717 00:31:08,520 --> 00:31:10,269 通過力學 東西使 718 00:31:10,269 --> 00:31:14,160 有趣的,智力的挑戰 最終都是留給你的學生。 719 00:31:14,160 --> 00:31:17,390 >> 隨著中說,Zamyla,我們向他 不停地談到今天的講座, 720 00:31:17,390 --> 00:31:20,190 是我們長期的工作人員1 成員誰也持有演練 721 00:31:20,190 --> 00:31:24,520 像馬里奧特定PSET問題 和貪婪,雖然不是水這一年。 722 00:31:24,520 --> 00:31:26,540 而且它是在那些 演練,她經常 723 00:31:26,540 --> 00:31:29,450 提供了一些提示和技巧 如何進行,從來沒有告訴你 724 00:31:29,450 --> 00:31:31,810 到底該怎麼做,但 rather--像的狀態下, 725 00:31:31,810 --> 00:31:35,200 如果你will--給你至少一 幾個想法,這樣就看你的, 726 00:31:35,200 --> 00:31:37,830 最終,決定 如何接近他們。 727 00:31:37,830 --> 00:31:41,200 >> 瑪麗亞:有點像一個高層次 邏輯的理解是什麼 728 00:31:41,200 --> 00:31:42,220 我們要求你這樣做。 729 00:31:42,220 --> 00:31:42,485 >> DAVID馬蘭:沒錯。 730 00:31:42,485 --> 00:31:44,190 而且,事實上,Zamyla的 演練旨在 731 00:31:44,190 --> 00:31:46,190 經常回答 在那裡問到的問題 732 00:31:46,190 --> 00:31:48,610 我開始了,特別是當 這些長規格 733 00:31:48,610 --> 00:31:51,960 有點令人生畏給所有的文字 和圖像,他們有他們。 734 00:31:51,960 --> 00:31:54,890 >> 所以water.c,你會發現 你已經完成後, 735 00:31:54,890 --> 00:31:56,920 實際上是相對簡單的。 736 00:31:56,920 --> 00:31:58,882 絕對是一幫 你要一鼓作氣 737 00:31:58,882 --> 00:32:01,840 靠在牆上你的頭試圖 弄清楚為什麼它不編譯 738 00:32:01,840 --> 00:32:03,450 或者為什麼它沒有運行正常。 739 00:32:03,450 --> 00:32:05,040 但是,一旦你完成 它,一旦你 740 00:32:05,040 --> 00:32:07,620 花一些時間與任何摔跤 那你可能有缺陷, 741 00:32:07,620 --> 00:32:09,490 你會發現,它的 在很短的程序。 742 00:32:09,490 --> 00:32:11,770 它可以在短短幾分鐘來完成 行代碼,其中大部分 743 00:32:11,770 --> 00:32:15,030 我們在這裡看到的講座已經,如果 你組裝正確的積木。 744 00:32:15,030 --> 00:32:16,810 >> 正如我們建議 在這裡,它會問 745 00:32:16,810 --> 00:32:22,250 您可以指定多少分鐘 有人走在校園裡洗澡。 746 00:32:22,250 --> 00:32:24,779 我們在這個問題說明 設置流動水的速率 747 00:32:24,779 --> 00:32:27,320 在一樣,低流量的淋浴 頭,很像宋飛夾 748 00:32:27,320 --> 00:32:29,180 我們昨天看到或 相反物。 749 00:32:29,180 --> 00:32:30,971 然後你只需要 做數學了一下, 750 00:32:30,971 --> 00:32:34,710 用C來告訴really--算術 我們知道有多少,大概,瓶裝水 751 00:32:34,710 --> 00:32:37,720 就是相當於,如果我們 採取一個n分鐘的淋浴。 752 00:32:37,720 --> 00:32:41,389 >> 現在,在mario.c,這是去 要稍長程序。 753 00:32:41,389 --> 00:32:42,930 它仍然不會長期是這個。 754 00:32:42,930 --> 00:32:45,130 短短幾行比water.c更長。 755 00:32:45,130 --> 00:32:48,230 但是,這將是機會 重現老同學馬里奧 756 00:32:48,230 --> 00:32:50,670 從超級馬里奧金字塔 兄弟或者一些後續。 757 00:32:50,670 --> 00:32:53,510 它不會看起來更漂亮 或者豐富多彩的作為一個人也沒有。 758 00:32:53,510 --> 00:32:56,468 我們只是用很少的#標籤 像我們這裡在屏幕上 759 00:32:56,468 --> 00:32:58,120 使用ASCII文本。 760 00:32:58,120 --> 00:33:00,362 但是,這將接近同樣的想法。 761 00:33:00,362 --> 00:33:02,570 而且這將是一個 鍛煉第一眼 762 00:33:02,570 --> 00:33:04,720 似乎只是很simple-- 打印一個簡單的金字塔。 763 00:33:04,720 --> 00:33:07,345 但是,有一對夫婦的特點 在這裡,很有意思。 764 00:33:07,345 --> 00:33:12,400 請注意,最右邊邊緣 金字塔實際上有寬度兩種。 765 00:33:12,400 --> 00:33:14,570 因此,有兩個相等 身高列,這 766 00:33:14,570 --> 00:33:16,804 使得它需要一點點 思想位,使 767 00:33:16,804 --> 00:33:19,720 確保你得到了完全正確的,因為 而不僅僅是一個完美的角度的 768 00:33:19,720 --> 00:33:20,220 線。 769 00:33:20,220 --> 00:33:23,340 所以這是一個有點角落案件 但比賽的實際比賽。 770 00:33:23,340 --> 00:33:27,610 >> 而且,這也是非顯而易見的,在第一 一目了然如何打印空白。 771 00:33:27,610 --> 00:33:29,430 所以,當我看 示例輸出這裡 - 772 00:33:29,430 --> 00:33:32,440 而且它也是在spec--它 那種看起來像一個矩形, 773 00:33:32,440 --> 00:33:35,120 但一個對角線的 矩形已經砍掉了, 774 00:33:35,120 --> 00:33:37,320 它只是空格,可以這麼說。 775 00:33:37,320 --> 00:33:40,100 所以,一個經常被問到的 這裡的問題是一如既往的好, 776 00:33:40,100 --> 00:33:43,302 我怎麼動的#標籤 到正確的? 777 00:33:43,302 --> 00:33:44,760 或者,我怎麼打印空白? 778 00:33:44,760 --> 00:33:46,860 它實際上更容易 比大多數學生認為。 779 00:33:46,860 --> 00:33:47,360 對? 780 00:33:47,360 --> 00:33:51,620 你可以通過可視化地接近它 按下空格鍵一次或兩次 781 00:33:51,620 --> 00:33:52,700 或三次。 782 00:33:52,700 --> 00:33:56,260 >> 因此,即使與我們的printf幾乎 總是打印出一個字符串或一個int 783 00:33:56,260 --> 00:33:59,950 或者像“你好一句話, 世界“或一系列字的, 784 00:33:59,950 --> 00:34:03,560 你也可以只打印 報價,空間,引文結束。 785 00:34:03,560 --> 00:34:06,320 這實際上給 你一個空格那裡。 786 00:34:06,320 --> 00:34:08,330 所以記住這一點,並 不overthink這一點。 787 00:34:08,330 --> 00:34:10,570 你真的要 決定逐行逐行, 788 00:34:10,570 --> 00:34:14,280 沒有什麼不同的例子 剛才,有多少的 789 00:34:14,280 --> 00:34:18,420 列應該是白色的空間和 有多少人應該是井號標籤。 790 00:34:18,420 --> 00:34:21,560 這將需要一些時間,但它的 各種各樣最終邏輯謎題。 791 00:34:21,560 --> 00:34:22,060 >> 瑪麗亞:是的。 792 00:34:22,060 --> 00:34:25,060 但再逐行邏輯 是要在這裡是非常有用的。 793 00:34:25,060 --> 00:34:25,810 DAVID馬蘭:是的。 794 00:34:25,810 --> 00:34:28,976 我想示例代碼,你gave--甚至 雖然這不是一個完整的程序。 795 00:34:28,976 --> 00:34:34,247 您還需要int和主 和無效的和的#include stdio.h中, 796 00:34:34,247 --> 00:34:35,580 很多從演講的東西。 797 00:34:35,580 --> 00:34:37,629 但積木 似乎是在那裡。 798 00:34:37,629 --> 00:34:39,920 然後最後是什麼 多一點的算法。 799 00:34:39,920 --> 00:34:43,210 所以,事實證明,任何時候你 進入CVS或便利店 800 00:34:43,210 --> 00:34:47,810 有人遞給你的 出納票據或硬幣的變化, 801 00:34:47,810 --> 00:34:50,620 事實證明,他們,人類, 不管他們是否意識到這一點, 802 00:34:50,620 --> 00:34:53,300 可能正在使用什麼 所謂的貪婪算法, 803 00:34:53,300 --> 00:34:58,170 因此,如果你欠,說,$ 21日 在變化,因為出於某種原因 804 00:34:58,170 --> 00:35:01,580 你買東西很便宜 與CVS的一個非常大的法案, 805 00:35:01,580 --> 00:35:05,910 這將是非常煩人,如果 收銀員給你21單曲,更有甚者 806 00:35:05,910 --> 00:35:07,629 然而,一大堆硬幣。 807 00:35:07,629 --> 00:35:10,670 相反,什麼是合理的人 可能要做的是他們要去 808 00:35:10,670 --> 00:35:14,224 搶$ 20,然後$ 1鈔票,和 交給你只有兩個法案在這種情況下。 809 00:35:14,224 --> 00:35:17,390 瑪麗亞:所以他們正在尋求減少 他們給回你的變化。 810 00:35:17,390 --> 00:35:17,850 DAVID馬蘭:沒錯。 811 00:35:17,850 --> 00:35:19,540 而同樣的處理硬幣,以及。 812 00:35:19,540 --> 00:35:23,040 如果你欠,說,$ 0.50, 希望你不想要50便士。 813 00:35:23,040 --> 00:35:25,500 你不是想要兩個 宿舍,例如。 814 00:35:25,500 --> 00:35:27,540 現在,這確實承擔 該出納員具有 815 00:35:27,540 --> 00:35:29,940 足夠的每一個教派的 他或她可能想給你。 816 00:35:29,940 --> 00:35:32,148 但是,我們讓你承擔 盡可能多的問題。 817 00:35:32,148 --> 00:35:35,590 和目標,最終是 在C代碼實現貪心算法。 818 00:35:35,590 --> 00:35:37,344 因此用戶被允許 在鍵入多少 819 00:35:37,344 --> 00:35:40,510 改變他或她是欠與美元 而仙,某種浮點 820 00:35:40,510 --> 00:35:41,590 值可能。 821 00:35:41,590 --> 00:35:45,530 然後你需要做的數學和 弄清楚算法,好了, 822 00:35:45,530 --> 00:35:49,020 有多少硬幣,我可以給 你最少給你 823 00:35:49,020 --> 00:35:50,270 正是這樣的變化量。 824 00:35:50,270 --> 00:35:53,470 但是,將是一個 這裡幾個棘手的部分,對吧? 825 00:35:53,470 --> 00:35:56,236 像有全 不準確的問題。 826 00:35:56,236 --> 00:35:56,860 瑪麗亞:沒錯。 827 00:35:56,860 --> 00:35:59,114 因此,浮點 值具有不精確。 828 00:35:59,114 --> 00:36:00,780 難道我們談論這個講座的今天? 829 00:36:00,780 --> 00:36:02,340 >> DAVID馬蘭:我們做了 最後一次演講。 830 00:36:02,340 --> 00:36:03,506 我們談論的不精確性。 831 00:36:03,506 --> 00:36:08,840 而你不想欺騙用戶 多少變化,他或她是欠。 832 00:36:08,840 --> 00:36:11,290 這樣一來,演練,在 問題設置規範, 833 00:36:11,290 --> 00:36:15,990 想一想,最終以 你如何減輕這些不精確 834 00:36:15,990 --> 00:36:17,280 錯誤,有可能。 835 00:36:17,280 --> 00:36:21,050 這是可以避免的,當然,對於 我們談論的投入。 836 00:36:21,050 --> 00:36:23,590 而且,事實上,pennies-- 也許我們會推遲到Zamyla, 837 00:36:23,590 --> 00:36:25,136 我想,對於花樣那裡。 838 00:36:25,136 --> 00:36:27,760 所以,最後,你會發現一個 問題的進展,本週, 839 00:36:27,760 --> 00:36:30,700 其中第一個是非常小的, 然後介質,然後一點點大。 840 00:36:30,700 --> 00:36:33,200 但是,所有的人都使用的建築 從過去的這個星期塊, 841 00:36:33,200 --> 00:36:35,280 從這個超部分, 問題設置規範 842 00:36:35,280 --> 00:36:36,710 讓你在無數的資源。 843 00:36:36,710 --> 00:36:41,000 但儘管如此,如果在所有掙扎, 尤其是那些不舒服 844 00:36:41,000 --> 00:36:42,917 沒有事先的背景下, 來到辦公時間 845 00:36:42,917 --> 00:36:44,958 在週一和週二和 週三和週四。 846 00:36:44,958 --> 00:36:46,950 進入CS50通過討論 課程的網站, 847 00:36:46,950 --> 00:36:49,080 通過它,你可以聊天 與工作人員和同學們。 848 00:36:49,080 --> 00:36:51,670 >> 但最終,我認為, 最好的建議是剛剛起步早。 849 00:36:51,670 --> 00:36:54,711 它不是那種類的,你 要在週三開始的pset 850 00:36:54,711 --> 00:36:56,640 晚上,或者更糟糕的週四晚上。 851 00:36:56,640 --> 00:36:59,067 >> 瑪麗亞:我最好的建議是 已經開始在星期一。 852 00:36:59,067 --> 00:36:59,900 DAVID馬蘭:週一。 853 00:36:59,900 --> 00:37:02,490 所以,如果你還沒有開始already--沒有。 854 00:37:02,490 --> 00:37:04,732 但是,即使沒有星期一,然後週二。 855 00:37:04,732 --> 00:37:05,690 越早越好。 856 00:37:05,690 --> 00:37:08,605 而這就是原因 當然,有這麼多晚天 857 00:37:08,605 --> 00:37:10,535 給你一個有點 心理壓力 858 00:37:10,535 --> 00:37:13,684 應儘早開始,但仍讓 事情滑,當事情需要更長的時間 859 00:37:13,684 --> 00:37:14,350 比您預期的。 860 00:37:14,350 --> 00:37:17,950 >> 瑪麗亞:你想利用 辦公時間盡量您也可以做到。 861 00:37:17,950 --> 00:37:20,291 >> DAVID馬蘭:有什麼問題? 862 00:37:20,291 --> 00:37:20,790 好吧。 863 00:37:20,790 --> 00:37:22,930 那麼,我們為什麼不這裡休會? 864 00:37:22,930 --> 00:37:23,487