大衛·馬蘭:所有 沒錯,所以這是CS50。 而這顯然是一個星期五。 而這是一個星期的末端。 所以,你可能還記得,我們​​不放過, 最後一次,有各種各樣的懸念。 我們藉以揭露這個謊言,沒有 不管你被教導成長 向上,1除以10不是在 事實上,0.1或0.100或0.10000。 事實上,如果我們編譯這個 計劃,因為我們沒有昨天,有, 使不精確性,然後 做點,斜線,不精確, 我們了解到,這是什麼 1除以10實際上是。 所以這不是真的相當的情況下。 但是,這確實暗示了一些 電腦的基本限制。 事實上,中 我們將要做的事情 今天就來看看為什麼這有 事情發生了,有什麼意義這有, 人類如何失敗 掌握這一些很 嚴重situations-- 在其結果 已經相當慘烈 和expensive--也 看看我們如何 實際上可以捍衛 針對這些種類的限制。 所以直覺,也許, 為什麼是1除以10, 根據我的電腦 這裡,不只是的1/10,0.10? 是啊。 你怎麼看? 觀眾:基數是不同的? 大衛·馬蘭:該是什麼? 呵呵,基數是不同的? 因此,不完全是。 它實際上更多 基本的硬件。 其他的想法? 是啊。 觀眾:他們 表示數字不同? 大衛·馬蘭:所以they--權。 他們代表的數字不同。 不準確,很明顯。 這樣is--好, 不同於什麼? 或者從誰? 從我們呢? 觀眾:是啊。 它們不使用小數 系統[聽不清]。 大衛·馬蘭:OK。 因此,從某種意義上說,他們不 使用十進制系統。 在系統底層, 一切,的確,二進制, 這就是相關的,其實。 但是,它甚至更簡單 解釋比。 是啊。 觀眾:他們 只有這麼多的位。 他們最多只能存儲一定 某種程度上,像小數。 大衛·馬蘭:是的。 這是什麼真正得到它。 事實證明,計算機 通常情況下,將永遠只有 使用的信息的有限數量 代表什麼。 對嗎? 畢竟,我們只有一個固定的 量的硬盤空間。 我們只有一個固定量 的RAM,或計算機的內存。 如果你只有一個 固定金額的東西, 當然你不能真正計數 到無窮大或任何你想要的數字。 你有種,有 挑選什麼範圍 值你要支持。 因此,例如,一兩個星期 以前,當我們談到ASCII, 我們談了8位, 或字節,可以這麼說, 最大數我們可以 有8位表示是什麼呢? 255。 我們可以表示256個總價值 但如果我們把其中的一個 在0--好了,但如果我們 花其中的一個0, 那麼最大的數 是,當然,255。 所以,事實證明,這是 的情況下也一樣,在這種情況下。 我們開始談,最後一次, 有關浮點數字, 來自整數不同,在 他們有一個小數點 並希望一些數字 在這之後,但是它們太。 一台計算機通常只打算 使用32位,也許64位 來表示一個浮點值。 因此,即使我們已經長大了 學習數學和了解 你絕對可以有 數的無限數量 小數點後不 如果你有有限的內存。 你有種,有圓形, 或者挑選哪些 你會數來表示。 所以,你能想到的,從某種意義上說, 這是計算機的最接近 近似​​的值的1/10 它可以得到,只有32左右位。 而且它不只是1/10。 舉例來說,如果我改變這 1/3,我們認為這是更簡單。 因此,1除以3。 讓我保存文件。 讓我繼續前進,重新編譯它。 讓我重新運行它。 在這裡,顯然,三分之一沒有0.3 然後3的無限數量 其後。 你有這樣的不精確性在最後。 所以,我們人類是正確的,什麼 你了解,其實,正確的, 但是我們撞了 針對一些限制。 而我的想法 我們今天會做,是開始 通過看,坦率地說,在 這種悲慘的後果 有時,人類的時候 並不完全實現 針對這一現實,這些限制。 而且我們會看到一系列的小插圖 從歷史頻道的需要 一起來看看如何事情已經出了問題。 這是約8分鐘之久, 我們將在這之後回來 看一看在完全相同 還有什麼可能出錯。 如果我們能昏暗的lights-- [視頻回放] -Computers,我們都逐漸接受 經常令人沮喪的問題, 和他們一起去。 錯誤,病毒,和軟件 故障都是小的價格 支付的便利。 但是,在高科技和高速 軍事和航天計劃的應用, 可以最小的問題 被放大成災難。 1996年6月4日,科學家準備 啟動一個無人阿麗亞娜5型火箭。 它攜帶的科學 衛星設計 建立精確如何 地球的磁場相互作用 與太陽風。 火箭是專為 歐洲航天局 並從其工廠升空 在法屬圭亞那的海岸。 - 和大約30秒後進入 飛行中,他們首先 發現了一些打算錯了。 使噴嘴被旋轉 在某種程度上,他們真的不應該。 約40秒後進入飛行, 明確了車輛遇到了麻煩, 而當他們提出的 決定摧毀它。 隨著一系列安全主任 巨大的勇氣按下按鈕, 炸毀了火箭之前,它可能 成為危害公眾安全。 - 這是處女 阿麗亞娜5的航程, 它破壞了 地方,因為一個缺陷 嵌在火箭的軟件。 在-The問題 阿麗亞娜是,有 是一個數字,需要 64位表示, 他想轉換 它以一個16位的數。 他們假定數 從來沒有將是非常大的, 大多數的這些數字中 64位數字是0。 但他們錯了。 一-The無力 軟件程序接受 所產生的那種數 另一種是在失敗的根源。 軟件開發已經成為一個 的新技術非常昂貴的部分。 阿麗亞娜-4火箭一直非常 成功的,那麼多的軟件 創造這也是 用在阿麗亞娜5。 -The基本的問題是,阿麗亞娜 5增快,加速快。 而且軟件早已不是 佔了這一點。 火箭-The破壞 是一個巨大的金融災難, 全因一分鐘,軟件錯誤。 但是,這是不是第一次 實時數據轉換問題 一直困擾現代火箭技術。 -in 1991,在開始 第一次海灣戰爭中, 愛國者導彈 經歷了類似的一種 數轉換的問題。 其結果是,28人, 28美國士兵 被打死,約 100人受傷, 當愛國者,這是應該 以防止傳入的飛毛腿導彈, 沒有發射導彈。 - 當伊拉克入侵科威特和美國 在1991年年初推出沙漠風暴, 愛國者導彈部署 保護沙特阿拉伯和以色列 從伊拉克飛毛腿導彈攻擊。 愛國者是美國,中程 表面對空氣系統 由雷神公司製造。 愛國者攔截-The大小, 本身就是約,約20英尺長。 而且它的重量約2000磅。 同時還可以進行about--的彈頭 我認為這是約150磅。 和彈頭本身, 是一種高爆炸藥, 它有它周圍的碎片。 彈頭的外殼是 設計像鹿彈。 -The導彈 進行,4%的集裝箱, 並通過半拖車被運送。 -The愛國者反導彈系統 追溯到現在至少需要20年。 它最初的設計 作為防空導彈 擊落敵人的飛機。 在第一次海灣戰爭, 當戰爭來了, 陸軍希望用它來 擊落飛毛腿導彈,而不是飛機。 伊拉克隊還是沒有 這麼多的問題, 但陸軍擔心飛毛腿導彈。 因此,他們試圖 升級愛國者。 -Intercepting敵人 導彈行駛在馬赫5 將要進行足夠的挑戰。 但是愛國者的時候 被衝進服務, 陸軍不知道的 ,使得伊拉克修改 他們的飛毛腿導彈幾乎是不可能的打擊。 - 什麼事,是飛毛腿的 要來的,是不穩定的, 他們搖晃。 這樣做的原因, 是伊拉克人,為了 讓600公里出 300公里的射程導彈, 把重出前彈頭 並提出彈頭更輕。 所以,現在,愛國者的苦思 在飛毛腿,並且大多數時候, 絕大多數的 時間,它只是由飛毛腿飛。 - 一旦愛國者系統運營商 實現了愛國者偏離目標, 他們引爆了愛國者彈頭, 為了避免可能的人員傷亡,如果它 被允許倒在地上。 - 那是大多數人所看到的, 那些大火球在天空中, 和誤解為 飛毛腿彈頭的攔截。 雖然在夜間 天空,愛國者亮相 要成功地 摧毀飛毛腿導彈,在達蘭, 有可能是沒有錯 關於它的性能。 在那裡,愛國者的雷達系統 失去了進入的飛毛腿的軌道, 永不推出, 由於軟件缺陷。 這是誰首先發現了以色列人 該系統不再是上, 越大時間差異 成為,由於一個時鐘的嵌入式 在系統的計算機。 - 關於前2週 悲劇發生在宰赫蘭, 以色列人報 國防部, 該系統是浪費時間, 該後約8小時的運行, 他們注意到,該系統 變得明顯不太準確。 國防部回應 告訴所有的愛國者電池 不離開系統 上很長一段時間。 他們從來不說什麼很長一段時間了。 8小時? 10小時? 千小時? 沒有人知道。 -The愛國者電池 駐紮在軍營 在宰赫蘭的,其有缺陷的內部 時鐘,已經在超過100小時 2月25日的晚上。 - 它跟踪時間精度 約一秒的1/10。 現在1/10秒是 一個有趣的數字 因為它不能 按二進制,沒錯。 這意味著,它不能 表示,準確地說, 在任何現代數字計算機。 很難相信,但 使用這個作為一個例子。 讓我們來數的1/3。 三分之一不能表示 十進制,沒錯。 1/3是0.333持續了無窮大。 有沒有辦法做到這一點,有 絕對精度,十進制。 這正是相同種類的 問題發生在愛國者。 該系統運行更長的 更糟糕的時間誤差成了。 -After運行100小時,誤差 在時間只有一秒鐘的約1/3。 但是,在針對一個方面 導彈5馬赫旅行, 它導致了跟踪 對600多萬米的錯誤。 這將是一個致命的錯誤 對於戰士在宰赫蘭。 - 什麼事,是飛毛腿發射是 通過預警衛星探測, 他們新的飛毛腿是 即將在他們的大方向。 他們不知道有人來了。 現在 - 它要由雷達 愛國者系統的組成部分, 保衛達蘭,定位和保持 跟踪來襲的敵方導彈。 -The雷達是非常聰明的。 它實際上跟踪 飛毛腿的位置 然後預測哪裡 它很可能是, 接下來的時間,該 雷達發送的脈衝輸出。 這被稱為距離門。 - 然後,一旦愛國者 決定時間已夠 傳遞回去檢查下 具體地址為檢測對象, 它可以追溯到。 因此,當它回到了錯 地方,然後看到沒有對象 和它決定,沒有 對象,這是一個錯誤的檢測, 和下降的軌道。 傳入飛毛腿消失 從雷達屏幕上, 幾秒鐘後,它 撞上了軍營。 飛毛腿殺害28是最後一個 第一次海灣戰爭期間,人開火。 可悲的是,更新的軟件 抵達宰赫蘭的第二天。 軟件缺陷有 得到修復,閉合 在陷入困境的一章 愛國者導彈的歷史。 [結束播放] 大衛·馬蘭:所以我們就來看看 一些類似的限制,只是有點。 但首先,讓我們來 過渡到一些僅供參考的。 因此,埃德蒙頓這個週末,有 將超級部分, 這意味著可以​​取代 定期的部分,這 將一個星期,因此啟動。 看看在CS50的網站 對於這些詳細信息。 他們也將被拍攝下來,流 住那些無法參加。 問題1是關於 當然,本已網站, 我們將看看 在只是一點點。 而辦公時間也將採取 至週四把這個星期一。 因此,這是最典型 節目中,我們看了最後一次。 這就像最簡單 程序,你可以用C寫的, 即使這是一個有點大膽索賠。 對嗎? 因為有很多的 似乎複雜此。 所以,讓我們快速瀏覽一下 什麼一些這些元件中的 分別為,然後嘗試提供 如何的心理模型 這些簡單的程序 工作,然後我們將開始 看事情越來越複雜。 因此,這條線在這裡,現在強調的, 在黃色的,沒有大家說什麼,最後一次, 這為我們做? 什麼是它服務的目的是什麼? 任何人從更遠了? 是啊。 觀眾:[聽不清] 大衛·馬蘭:好。 所以,它給你的訪問 為命令,或讓我們 給他們打電話的功能,有人 別人寫的,被聲明, 可以這麼說,在一些其他的文件。 所以我們會看到什麼.h文件 是對.c文件,最終。 但現在,只知道 該printf的,例如, 是其中已被功能 在其他文件中聲明,在某處 否則雲計算的硬盤​​驅動器上 允許我們訪問printf和使用 而不必重新發明 那個輪子自己。 同時,主要的。 什麼是主要的,上週的模擬? 是啊。 觀眾:綠旗點擊。 大衛·馬蘭:是的。 划痕的,當綠旗點擊。 這就像一塊拼圖 該踢東西了。 所以同樣,做世界 幾年前的決定C, 和一堆其他語言, 如果你想編寫一個程序, 你的第一個功能 已被調用,主。 而且它有看起來像這樣。 但是,我們會回來的, 另一次,是什麼,INT, 並且,無效的,意味著在這方面。 就目前而言,花括號樣 像划痕的拼圖形狀 它封裝線的一些數字。 而就在電線之間 在這裡,這是一個在這裡。 printf的是,其目的在一個函數 生活是打印的格式化字符串。 而到格式化的,我的意思是你 可以在佔位符值堵塞, 你可以指定多個小數 點,有多少數字打印 後一個小數點等。 和printf,當然,需要一個 以上參數或參數, 否則已知的,更簡單地說,作為輸入。 所以printf的,想了很多 函數的輸入參數。 而這些輸入被接受 由兩個括號這裡。 而那些裡面是一個輸入。 這是一個字符串,因為我們已經把它稱為, 這是一個字符的只是一個序列, 像一個字,或短語,或整個 文章甚至在雙引號之間。 這就是發生了什麼事情來影響 當然,printf的行為,因為, 它只是一個普通的打印功能。 它不會知道是什麼 打印,除非你告訴它。 然後,一些細枝末節。 那麼,我們能說這個奇怪 的符號序列是? 是啊。 觀眾:新行。 大衛·馬蘭:新行。 所以,事實證明,你不能只打, 進入,當你寫的程序。 通常,編譯器是會得到 有點困惑,你的意思。 相反,你必須從字面上 說,給我一個新的生產線在這裡。 所以/ N是我們一般 調用一個轉義字符。 因此n,新線路。 而編譯器知道 當它看到/ N, 它實際上應該誘導計算機, 最終,或printf,在這種情況下, 打印出一個新的實際 行,像打了,進入, 鍵盤上的鍵。 最後,做什麼我們說 這一塊的語法是什麼? 這是什麼代表什麼呢? 是啊。 觀眾:[聽不清] 大衛·馬蘭:這只是 該行的末尾。 它是語句的末尾。 並認識到我們不 把它們無處不在。 我們當然不會把他們 在每行的末端。 舉例來說,有沒有對 第一行,有沒有上線 有,主,有沒有 花括號後, 但你會開始看到並獲得 熟悉的地方,它被稱為為。 它是一個功能之後幾乎總是 致電或發表聲明,一些行動 你的確服用。 而現在知道,特別是如果 在那些不太舒服, 這些都是種愚蠢的事情 你會最終不小心撞 你的頭撞牆了。 因為你會在邏輯上 相信在某些問題 你已經解決了問題 集,該死的東西只是 將無法編譯,甚至運行。 所以通常情況下,在初期,它會 是因為你錯過了一個括號, 或者你錯過了一個分號。 所以只是留心 中,這樣的東西 並盡量不要被沮喪 因為他們很快做到這一點 成為舊帽子。 但它很容易得到 受挫早上,作為一個結果。 所以,現在,讓我們來看看如何 這條線是實際工作 再看看一個稍微 更複雜的之一。 所以我們在這裡,在 能夠得出這樣的屏幕上。 讓我們假設 這是我的電腦屏幕, 但我寫的,你好程序, 而我還沒有實現,printf的。 別人已經實施,printf的。 誰願意自稱 已經實施了,printf的? 如果我們可能嗎? 好吧,你叫什麼名字? 學生1:[?柯巴。 ?] 大衛·馬蘭:Copal的,拜託了。 上來吧。 好的。 因此,我們有,在這裡,一些名稱標籤, 因為我們會做出這樣的小遊戲。 我們會打電話給你,printf的。 如果你想要到這裡來, 我剛剛在屏幕上繪製, 這是相當簡單的,還有我,這。 所有的權利,所以,你好我的名字是, printf的,如果你想要把那。 好的。 如果你可以去展台 通過在計算機屏幕 就好像你是功能 來到這個計算機系統。 而你的人生目標是 實際打印的東西。 但是,就像節目我們 剛剛在屏幕上,在這裡, 我們將不得不 實際上給你一些意見。 所以,如果我的輸入,在這裡, 顯然,什麼是傳遞給printf, 讓我們種的譏笑它是這樣的。 我將字面上寫上 一張紙,“你好,世界” 反斜線N.而且要明確,什麼樣 我剛剛畫在這張紙上, 看起來是這樣的。 所以,當我運行這個程序,而這 代碼黃線被執行, 就好像我,hello程序, 我交給一些輸入開了一個功能 別人寫的。 如果你與你的手指, 居然可以,用你的手指, 在屏幕上繪製什麼 這是你一直在流傳, 的效果,最終,是 看到正是這樣,在屏幕上。 和一個小角落的情況下在這裡。 而良好的,我們不應該看到 的,新線,在這一點上。 這將是不正確的你 明確地得出新行。 但是,如果我們不停地寫上的字 屏幕上,他們最終會低於。 所以,非常感謝你,但堅持 這裡只是一個瞬間各地。 我們現在需要一個其他 志願者,如果我們能, 那將需要發揮的作用 of--這只是人們在樂團 現在。 如何about--確定。 就在這裡。 上來吧。 你叫什麼名字? 學生2:[? Ivay。 ?] 大衛·馬蘭:對不起? 學生2:[? Ivay。 ?] 大衛·馬蘭:阮經天,上來吧。 沒有? 難道我得到的錯誤,甚至 你說了兩遍之後? 上來吧。 這是很難聽到了這裡。 確定。 我很抱歉,你叫什麼名字? 學生2:[? Ivay。 ?] [?大衛·馬蘭:Ivay。 ?]確定。 現在,如果你不 心,你的GetString。 學生2:確定。 酷。 大衛·馬蘭:所以,如果你想 站在這裡只是一瞬間, 讓我們來看看一個稍微 更複雜的程序,即 現在有三行代碼。 因此,我們有,其一,說明用你的名字 printf的;二,一個電話給GetString, 隨後分配到一個 變量調用,字符串s,或稱為S; 然後再次調用,printf的, 但是這次使用兩個輸入。 因此,我們已經做狀態 你的名字,或者更確切地說,我們已經 已經做了printf的電話。 所以我會寫,說出你的名字。 所以,有什麼我要去 通,printf的,在短短的時刻, 是很簡單,這一點。 所以,如果你想繼續前進,得出這樣的 在屏幕上,這是現在你的輸入。 好的。 而忘記字符串,我們現在有 我們自己的行代碼在這裡。 所以,GetString的,我們需要 實際調用,GetString的。 所以,你的人生目標是只走 外面的樂團,如果你能, 並得到某人的名字。 但是,讓我們給你 東西把它。 如果你想,去 進取,得到一個字符串, 得到某人的名字上 一張紙,如果你能。 好的。 我們將看到,在短短的時刻, 他的名字我們得到。 同時,我所要 有現成的,是一張空白 紙,其中,我要去 存儲任何值它 是,GetString的是返回給我, 我,作為一個所謂的字符串變量,S。 好的。 所以,你有什麼嗎? 聶。 好的。 因此,我們有聶的名字在這裡。 因此,這是字面上 已返回 對我來說,可以這麼說,通過GetString的。 我,現在,我準備 執行左手側 那表情,在這裡我簡單的 抄下來,今天的目的,聶。 所以,現在,我有一個變量 所謂,S,存儲聶的名字。 我已經交給 printf的,以前的說法。 但是,在我們的第三個,也是最後的行 代碼,我實際上是手的printf 東西有點different-- “你好,%S,”反斜線ñ。 這樣一來,最後一行我要去 到send--的最後一件事,我 要現在寫下來,是這樣的。 所以兩行代碼,或 而代碼的最後一行, 要求兩inputs-- 之一,這和兩個,這一點。 所以,如果我們的printf函數 現在可以把這些作為輸入, 讓我清除屏幕為您服務。 其實也沒什麼,你可以繼續。 我們會離開它,因為 它是在相同的程序。 我們應該看到,你好,聶。 好的。 因此,這是相當多的 箍跳通過,只 寫,說明你的 名稱和,你好,聶。 但消息傳遞的這個簡單的想法, 輸入的傳球和輸出接收的, 正是我們將不得不模型 即使是最複雜的功能。 所以,謝謝你這麼多,你倆。 我們有一個可愛的壓力 球在這裡為你。 謝謝你對我們的GetString 和printf志願者的一致好評。 謝謝。 好的。 謝謝你們。 因此,我們一直在談論 迄今為止,大部分是關於串。 而事實證明,C能實際 了解幾個不同的數據類型。 事實上,讓我們 一起來看看這些在這裡。 因此,C,和很多語言, 認識事物稱為字符。 一個char通常一個是 單字節或8位。 它代表一個字符, 像字母A或資本 字母A,或小寫字母 A,或感嘆號, 或任何字符,你可以鍵入 你的鍵盤,有時甚至更多。 我們也碰巧看到彩車。 浮子是,一般情況下, 32位值,或四個字節 因為再次,一個字節是8比特。 所以一個float是一個浮點值, 大一些的小數點。 事實上,這就是 這部電影是說 ,當他們談到浮動 點值,一些固定位的數目 被用於表示一個實數。 但也有東西叫做雙打。 這些存在於Java中, 如果你已經採取了APCS, 和雙,正如其名字令人欣慰 顧名思義,是兩次大如浮動。 它仍然是一個實數, 它只是有更多的位 與要更加精確, 或存儲更大的數字。 int是容易的。 我們談到了這最後的時間。 這只是一個整數。 而且它是一般32 位,或四個字節。 所以,如果你有,我們現在看到的, 32 bits--我們0週這樣做, 曾經如此briefly--,如果您有 32位,什麼是最大的 數可以表示為一個整數? 給予或採取? 這樣4十億, 而這只有當我們 僅代表正數。 如果你有32位,並且要 表示負數為好, 你的範圍是,從本質上講,負 2十億轉正2十億。 但是總體來說,我們將開始 在0升至4十億。 你不必準確地知道,但 我們可以看到這一點,事實上,如果我只是 開了一個小計算器,點擊這裡。 我可以做2的32,和 這正是有多大, 有多少價值,你可以 表示,具有32位。 而且它的約4十億。 因此,我們會繼續看到這個數字 在幾個不同的地方。 但是如果你需要更長的 數比, 原來有 一些所謂的很長很長。 而一個很長很長的 通常64位,這 意味著它是一個數量級 比int更大。 所以,我甚至不能發音最大 你可以代表數字, 但它明顯更大。 現在,順便說一句,從歷史上看, 如果一個int是32位, 和很長很長為64位,怎麼樣 大是一個長期的,而不是一個很長很長? 你會認為這是比int長 但也許少長不是很長很長, 但它實際上依賴。 所以它變成一顆顆 過的挫折, 對某些系統編寫代碼, 是,並不是所有的這些數據類型的 有預先確定的值。 有時候,這多少位。 有時候,很多位。 所以,你居然要知道, 有時,哪些硬件 您正在運行的軟件。 值得慶幸的是,其他語言和 現在還存在著其他的數據類型, 讓您更精確。 好了,我們看到的字符串, 而我們看到的布爾也 但事實證明,這些都 只與CS50庫。 因此,那些不建 到C.這些替代, 進來叫該文件 CS50.h,我們最終會 剝開的層。 但現在,他們只是 附加數據類型。 一個布爾值是真還是假,和 串是字符序列, 就像一個字。 現在printf的,我們已經看到,有 佔位符,%S就是其中之一。 你也許可以,到現在為止, 從這些其它實例中,如何推斷 你可以有一個佔位符 對於不同的數據類型。 例如,以此來猜測,如果你 想使用打印出單個字符 printf的,佔位符大概%C。 如果你想打印出 整數的佔位符,%我。 %LLD是一個很長很長的十進制值, 但很長很長,所以映射到這一點。 然後%f浮點 點值或雙, 所以有時候他們重新使用 在不同的上下文。 所以我們會看到和使用 其中一些隨著時間的推移。 和printf等功能也 支持別人的轉義序列, 有時,這些都是必要的。 所以反斜杠n是一個新的生產線。 反斜杠T,沒有任何人 要採取刺? 觀眾:標籤。 大衛·馬蘭:標籤。 所以,如果你真的想 打印出標籤,而不是 的空間的固定號碼,但實際的 製表符,你不打你, 標籤上,在鍵盤上鍵,通常, 你其實反斜杠噸。 反斜杠雙引號, 為什麼我會永遠想的? 對嗎? 為什麼我不能只是輸入 我的鍵盤上雙引號? 觀眾: 因為,否則,它是 會認為這是結束 對喜歡您的打印[?文本。 ?] 大衛·馬蘭:沒錯。 請記住,我們的 printf的例子,當我們 被傳遞的輸入對printf, 在該輸入字符串的左 並在該輸入的右 春天,當然,是一個雙引號。 如果你自己輸入有雙重 報價在中間的那個, 計算機可能潛在地 感到困惑,因為到, 這是否雙引號 屬於中間? 它是否與左邊的歸屬? 是否有一個正確的歸屬? 所以,如果你想使超 明確的,你做的反斜線雙引號, 因此,它的逃脫了,可以這麼說,和 它不是混為一談別的東西。 而且還有其他幾個人在這裡, 反斜線R,單引號,0, 我們可以看到隨著時間的推移,以及。 而現在,怎麼樣的功能呢? 這樣我們就可以採取迄今的行動 在這種語言,C,好了,我們已經看到, printf的,當然,所有的 屏幕上的其他人的, 在這裡,我們將使用的 當然第一個只有少數幾個星期, 來當CS50庫。 他們能夠更容易,在 C,實際獲取用戶輸入。 事實證明,在C和 坦率地說在幾種語言, 它在脖子上做一個真正的痛苦 簡單的東西,比如提示用戶 為鍵盤,為他或她的輸入。 所以,這些功能更容易。 它也有錯誤 在整個檢查, 這樣一來,當你 記得上週三,我們 看到了,重試,警告, 當我不配合, 而我輸入一個字,而不是數字? 我們早做了繁重 在確保用戶合作。 但這些都只是培訓 車輪,我們將最終, 並迅速,起飛。 因此,要回顧一下,然後, 讓我們快速瀏覽一下, 就像我們有划痕,在沒有 C.在一些典型結構 這是為了,排序 的,是一個旋風之旅, 只是讓你有一個參考 那你首先看到的東西。 但是,我們來看看實際的編碼 使用其中的一些積木。 所以,就像在刮, 當我們已經報表喜歡, 或者說,等待,在C,我們確實有 功能以及,如printf。 如果我們想表達的條件 在C,它是類似的,在精神上, 該拼圖的 看起來是這樣的划痕。 但是相反,我們 從字面上只寫,如果。 然後,在括號 我們把一個條件, 其中,該條件是我們將 打電話,再次,一個布爾表達式。 再次,這是有點偽的。 而且,事實上,//是註釋。 這只是英語單詞我自己。 但是,這是一般 的一個,如果,條件結構。 但是,我們會看到具體的 例子在短短的時刻。 如果你想有一個 兩路的岔路口, 就像我們與我們的志願者在做 週三,你可以有一個,否則,如果。 如果你想有一個第三和 最後一個條件,或者默認的情況下, 你可以只是一個其他塊,還有。 同樣,用布爾表達式, 你可以,而且,它們在一起。 而且我們看到在週三,即 它不是一個單一的符號, 它的2,為低級別的原因 我們最終會看到和發揮。 的OR-ing的東西放在一起 是2豎條。 根據美國的鍵盤,這 通常是一個關鍵 與上面的Shift鍵 您的Enter鍵或Return鍵。 此外,還有這些東西 我們將使用也許一次或兩次。 它們是功能上等同於 你可以用做的,如果,否則,如果, 否則,如果其他人,建設, 但他們稱為交換機。 他們看起來非常不同,但我們會 看到我們的一些分配代碼, 對於未來的習題集,最有可能的, 它有時只是一個漂亮 表達一個整體的方式 一堆條件, 無需大量的花括號和 很多括號和縮進的。 但他們給我們沒有更多的 功率比我們已經。 現在循環。 而這其中,我們來看看 在慢一點。 但隨後,我們將開始使用這些, 特別是對於那些已經熟悉。 這是規範的方式,如果難以置信 神秘的方式,用C編寫一個循環 現在,在划痕一個循環是 很簡單。 你有一個,永遠塊。 你有一個,重複,塊與 只是一個數字,你必須輸入內容。 而伴隨著,for循環,可以 同時實現這些想法, 但它是一個多一點的技術。 但坦率地說,這也是 相對簡單。 一旦你知道的順序 操作,你從字面上 只是要在價值觀堵塞 並告訴計算機做什麼。 因此,這裡有一個例子。 這是一個循環的是,相當 簡單地說,從一個人數多達計算 通過另一個。 而就掃一眼 它,即使你有 沒有以往的經驗 這種語言,什麼號碼 它可能開始計數? OK,0。 我猜那是因為你 看到有一個int和我, 這是一個變量。 它初始化為0。 再後來,它看起來像 我們傳遞的printf,一個值。 而且,事實上,我在這裡做一個小錯字。 但是,這容易固定。 我要補充的,我在這裡。 我們現在有printf的存在 通過該佔位符值。 這有什麼經歷來算呢? 聽眾:50。 50。 49。 大衛·馬蘭:49。 所以50,乍一看,似乎是正確的。 但是,事實證明,將是 我們的條件,我們繼續檢查。 而且我們要停止一次 i是不再小於50。 所以這個循環中,反之,應 執行,只要i小於50。 但只要它變為50,或51, 或者更糟,它應該自動停止。 好的。 那麼究竟是什麼發生在這裡? 因此,這是秩序 操作為一個循環。 一,你有 所謂初始化。 這種黃色高亮塊 代碼首先執行, 並且它有一個,每效果 週三,你可能想像。 它創建了一個名為i和它的變量 在變量存儲值0。 所以i為0,在這一點上的故事。 接下來的事情, 發生在這個結構, 是該條件被檢查。 於是我立即檢查, 為i小於50? 當然,答案 現在來看,毫無疑問,是的。 是的,因為我是0, 這是肯定小於50。 然後發生了什麼,是這 行代碼被執行。 而事實上,如果有多個 的代碼中的那些大括號線, 他們都得到執行此起彼伏。 並且在這裡的效果,是 顯然,打印出 的編號i,這是會 為0,然後1,然後2。 但是,為什麼? 它為什麼會得到增加? 那麼,第四件事, 碰巧的是,這個語法 被執行,分號之後。 我++是一個說速記的方式; 取的i的值,並把它加1; 再下一次,加 1到它;而下一次, 其加1。 因此,如果我們繼續下去, 什麼會發生 接下來就是我不打算 以後再初始化我。 如果我一直在初始化 i到0,本實施例 永遠不會結束,因為 我會停留在0。 但什麼事情發生是 該條件將被檢查, 該行代碼會被執行, 在我將增加, 條件將被檢查, 代碼會被執行。 它再次保持騎自行車, 又一次,又一次, 直到我++誘導值50。 條件接著說, 比50 50少了呢? 當然,答案是否定的, 所以整個代碼停止執行。 如果你有在屏幕上更多的代碼 向下跌破,那接下來會發生什麼。 它彈出來,這些花括號和 繼續打印後更多。 所以,現在開個玩笑,從狐步舞,那 你也許現在明白了。 它總是有趣的。 這就像笑 樣的過濾, 然後你意識到你不應該 是笑的幽默是這樣。 但是,有一些外賣 在這裡,教學法,太。 所以,事實證明,我 缺了一塊的語法, 或狐步舞的失踪 一塊語法在這裡。 現在缺少的,我們已經有 在每一個其他實施例,從而多遠? 返回,在那裡,所以 這是別的東西, 我們再回過頭來不久。 缺少了什麼有關係嗎? 是啊。 觀眾:該 初始化[聽不清]。 大衛·馬蘭:OK。 所以呀。 所以實際上,這個is--嘛, 和計數初始化 上述起來,或者說,上述宣布了起來。 因此,這是做的另一種方式。 但不是在一條線是有效的,但。 怎麼在這裡? 觀眾:是不是大括號? 大衛·馬蘭:是的。 因此,大括號丟失。 但是這個代碼,我的意思是,他們的信用, 實際上,語法上有效。 事實證明,你不 需要花括號 如果你只有一行代碼 要在循環內執行。 現在我們總是在課堂上和 我們所有的分銷代碼, 包括大括號 無論如何,僅僅是為了清楚起見。 但要意識到,在教科書 和網上的例子, 你很可能看到大 牙套有時失踪。 這沒關係,如果你 已經縮進和預期 是代碼只是一個單一的線,而不是 多行代碼,潛在的。 好的。 所以相關的問題 不精確,溢出的問題, 在這個意義上,類似地, 確實整數必須限制他們 就像浮點值? 在世界上的浮點 價值觀,我們只能是如此精確, 在此之後,有時 不好的事情都可能發生, 而我們的方案可以是越野車和錯誤。 現在,即使是整數, 你會遇到的問題。 現在的整數不具有 小數點或之後的數字。 它只是一個自然數,一般。 那麼,什麼可以去錯了一個int? 如果我用一個int來 計數,有什麼可以去錯了嗎? 似乎簡單了很多。 是啊。 觀眾:如果 數字變[聽不清] 大衛·馬蘭:是的。 如果算上如此之高,你有什麼 無法用語言表達的真正的大數目。 對嗎? 在某些時候,你會 超過界限 的一個32位值或64位的值。 現在,再次,我不知道怎麼樣 發音一個64位的值, 但我知道,有一個32位整數, 它可以是最大的值, 如果它是唯一積極的 值,是約4十億。 所以,如果我嘗試數到5十億, 事情將要發生。 但是,讓我們看看,其實都有可能發生。 在整數世界 溢出,在那裡你,從某種意義上說, 溢出的能力 整數,會發生什麼事情? 所以這裡有一個二進制數, 這是一個倒退到0。 這是全1,和佔位符 在那裡,有2的冪, 所以這是二進制的。 因此,這些都是8,1位在屏幕上。 如果你還記得或 你快做數學題, 什麼樣的價值正在被代表 這裡這八個1位? 255。 即使你是不是很確定 數學的,你可以做出來。 或者你可以只種 原因通過它, 等一下,如果我 較8位值, 我已經得到了256個可能的值, 但其中第一是0, 我只知道, 最大的將是255, 而這正是這一個可能。 因此,假設我嘗試添加1到這個值。 你會在年級做 加入學校的時候1,而且 並不真正適合,因為 你必須隨身攜帶的1? 這是什麼數將 當你加1變成什麼? 這將變為0。 對嗎? 因為如果你有更多的bits--,我會 嘗試,種,它這裡 - 打出來 如果我們有更多的位,我們 可以在這裡做的是添加1, 然後我們會得到這一點。 哎呦。 我們希望有一個1位一路看過來。 但是,如果這是一個有限 值,這是只有8位, 這就是預先確定 由計算機, 這1實際上是不存在的。 正中下懷它掉下懸崖。 所以,如果你添加1到255,有什麼 值你顯然得到什麼呢? 0。 所以意外的數字, 或許,無意間, 最終披著這樣。 那麼什麼可以是這意味著什麼呢? 嗯,有一些不同的東西。 所以之一,它最終看起來 如0,無意間, 但你可以種看, 即使在現實世界中, 是好還是壞, 表現這種思想的限制。 例如,任何你誰 玩過樂高星球大戰, 沒有人知道發生 硬幣的最大數目 您可以在樂高星球大戰收集? 以基於猜測 當今領先的問題。 這是大於256或255。 它的4間十億。 所以,事實證明,和 有一些people-- 一些谷歌上搜索確認最後night-- 已經得到了4個十億金幣, 或者諸如此類的東西,在樂高星球大戰。 雖然很明顯,有 一種方法來欺騙遊戲, 有一個錯誤或功能,可以讓你 只是累積很多很多的點。 但最大的可能 值,根據 這個屏幕截圖的人,我 網上找到的,確實是,4個十億。 現在,這是為什麼? 這正是4個十億, 可能是因為有人決定, 誰在寫本場比賽, 他們可以做4組十億, 什麼,什麼,什麼, 像值我忍了 用計算器較早,但 它只是一個少許清潔劑對人類 說的最大數量 的coins--或螺栓, 他們稱之為them--你 可以收集4十億。 所以,這是為什麼? 如何為樂高遊戲 實施反 那就是維持軌道的 硬幣有多少? 他們使用的是什麼? 觀眾:它停止 4個十億後計數。 大衛·馬蘭:它停止 4個十億計數後, 這意味著你可以 推斷,作為一個程序員, 他們很可能 使用32位的整數。 就像程序員真的只是 類型化,INT,在他或她的代碼, 這就是可變的類型 他們使用存儲別人的代碼。 因此,有其他表現 這些類型的限制。 所以,我沒有玩過這個game-- 而我讀了歷史 確認作為muc​​h--但在 文明,那裡的原始版本 你顯然與每個互動 另外,可以發動戰爭或和平, 甘地被認為是一個 最和平的角色,因為我 理解,在第一 版本文明。 而事實上,在範圍為1至10, 他的侵略性只是一個1。 所以永遠是那麼溫和 侵略性,顯然。 但是,在某些時候,你可以很明顯 在地理上安裝民主。 如果你安裝的民主 到你的遊戲版本, 那麼你的攻擊水平下降。 這是一個很好的事情。 人們更安靜 顯然,在這種情況下。 但很顯然,有人做 沒有一個,如果,條件 在代碼中的原始版本。 所以,甘地的侵略水平由去 正1,負2,負1, 但遊戲不 了解負數。 所以,事情的經過是甘地的侵略 從1級去了,到0,負1, 這具有的效果 折回是 最積極的角色 在比賽中,以255的值, 上的比例為1至10。 從那時起,還有的是 更化身這場比賽, 他們已經把它作為 一種復活節彩蛋的, 甘地顯然是 這麼可怕的攻擊性。 但它是一個結果 很簡單的編程錯誤 在遊戲中的該非常早期版本。 現在更令人不安的是,多 最近,波音787 被記錄為具有 錯誤,不是那種設備 你特別想有一個bug。 且症狀,我會讀 在這裡,從網上的文章, 是這樣的,一個模型787飛機 已連續供電 248天就失去了所有 交變電流,交流, 電功率,由於 發電機控制單元, GCUs,同時 進入故障安全模式。 因此,這是發出警告 當這個問題被發現。 這種情況是由於 通過軟件計數器, 內部的GCUs,所以 整數或一個變量, 248之後溢出 連續功率天。 波音是在過程中 開發GCU軟件升級 將彌補的不安全狀態。 那麼像導彈 方案中,其中, 他們有一些類型的變量 被計數,計數, 和計數,但漸漸溢滿 其能力的界限, 同樣做了該死的飛機 具有可變的溢出 經過足夠的時間運行。 這樣一來,舌頭在臉頰的方式 解決此問題的工作 是真正的,重新啟動,你的飛機每 247個天,使得存儲器被擦拭 和可變回到0。 但要意識到,這是一個非常 大型化身軟件, 但特別是當我們聽到蘋果 操作系統進入汽車, 並從谷歌自駕車車, 任意數量的軟件的化身 在我們的日常生活中,電視 和手錶等, 實現由軟件所包圍, 所有這一切都寫的是我們人類。 正如我們都會很快就會發現, 它很容易和非常典型 編寫軟件時犯錯誤。 如果你不抓住他們, 一些不好的事情都可能發生。 現在有時,一些 有趣的事情都可能發生, 或者至少有時候我們 知道會發生一些不良。 因此,0除以0,從等級 學校,一般是一件壞事。 這是不確定的。 而事實證明out--,讓如果我們看 我的麥克風可以選擇此up--蘋果 曾與這一些有趣的最近。 所以,我有一個iPhone在這裡。 我要談的Siri,問她 給我的答案0除以0。 什麼是0除以0? SIRI:假設您有0 餅乾,和你平分他們 在0朋友。 多少餅乾確實每個人得到什麼呢? 看到了嗎? 它沒有意義。 而且餅乾怪獸是悲哀 有沒有餅乾。 而你傷心, 你有沒有朋友。 大衛·馬蘭:這是一種令人厭惡的。 所以這就是剛才說有。 這是不確定的,它沒有定義, 而事實上,許多編程語言 或者,真的,編譯器會 當您,檢測程序, 試圖除以0 0。 更多樂趣比這雖然是 ,顯然,餅乾怪獸 是在Twitter上的這些日子。 他回答了,這一點, 這是絕對可愛。 但是,讓我們快速瀏覽一下 一對夫婦的其他構造, 然後把一些這方面的 代碼中使用,以良好的方式。 所以,事實證明,除了 對循環,有 一種叫做while循環,即 看起來不同的,是實現 一個小differently--和 我們最終會看到examples-- 但在某種意義上, 它的簡單,因為它 不允許初始化和 環路的邊界之內更新。 你仍然可以實現它。 所以,你可以做同樣的事情 與while循環,與一個for循環, 但你的語法,ultimately-- 因為我們最終會 see--將是不同的。 甚至還有一個do while循環,這 其實是有一點不同, 在而一個for循環 和while循環總是 首先檢查自己的條件,如果 你看過這個東西從上到下, 那種看起來它會 檢查它的情況最後,因為它是 真正的最後一行代碼。 事實上,這將是有益的 在我們編寫某些程序, 如果你想只是盲目地做一些事情 最終檢查的條件。 這不一定是壞事。 如果我們想要的變量,我們可以做 它在幾個不同的方式。 而我們的狐步舞看見 卡通,做的一種方法, 在這裡你聲明的變量, 如int計數器分號, 然後later--說不定下 行,也許10線later-- 你居然初始化。 因此,這2行代碼 聲明一個int類型的變量 並稱之為反,所以它給 我足夠的​​位來容納一個int。 然後最終,它把 值0到該變量。 它排列0和1的在一個 模式,我們知道上週, 代表我們所知道的0號。 或者坦白地說,你可以做這麼多 更簡潔地說,就這樣。 現在,我們也有 能夠調用函數。 而事實上,這裡有一個2線 程序,或它們的摘錄, 這使我們能夠真正 編寫一些代碼, 得到來自user--字符串多 就像我們的志願者一時ago-- 結果存儲到 一個名為名稱的變量, 和then--很像我們的志願者 與printf--打印出這些值 通過傳遞兩個參數, 串,其次是可變 叫,名稱本身。 因此,讓我們來看看,前 我們再回過頭來馬里奧那裡, 在一對夫婦的這個現在的例子。 我要繼續前進,開 了,讓我們說,功能0.c。 和往常一樣,這個代碼是 可在球場上的網站, 這樣你就可以在一起玩 回家看它以後。 但這裡有一個程序在它的 本質上,從線17至22。 主程序所在 計劃總是會啟動。 這一方案,顯然,是怎麼回事 打印出你的名字,冒號。 它隨後將打電話的GetString, 就像我們做了與我們的志願者。 然後,這是有趣的, 它會調用PrintName。 事實證明,這一切的時候,有 似乎是被稱為PrintName函數。 可打印某人的名字。 我們並不需要用printf從 昔日,有PrintName。 但是,這是誤導 因為PrintName不 配備了C.人們不 一些40年或50年前發明了它, 我這樣做,而不是。 而事實上,如果我滾動 進一步下降,通知 我怎麼能寫我自己 在C函數我們最終會 解釋為什麼我們一直在說, 無效,在少數地方, 但今天,讓我們 光看這個名字。 在第24行,如果你想 創建自己的功能, 你從字面上寫的 功能的命名。 我選擇了PrintName。 在括號,你 然後指定哪幾種 投入,有多少你 希望此功能可走。 在這種情況下,我想帶 1變量調用,名稱, 而這將是 型,字符串,因此它會 是一串字符。 然後,這個program-- 就像在刮, 你可以定制拼圖pieces-- 將有這種自定義行為。 這將調用printf 傳遞,你好,佔位符, 然後它會堵塞 在任何用戶調用。 所以這是一個例子是什麼 計算機科學家會 調用抽象或功能 分解,這只是 花哨的方式saying--是,如果 你喜歡這個高層次的想法, 像我想功能, 打印某人的名字,絕對是你 可以從字面上寫的printf然後 通過在你想要的參數, 並計劃將工作, 因為它有自週三。 但是,你可以開始抽象掉 打印名的概念。 你可以給它一個名字, 像PrintName,和這 這種想法從0週分層的。 從今往後,我和你不必知道 或護理PrintName是如何實現的。 是的,它使用printf的,也許它 不,誰知道什麼用? 誰在乎呢? 現在,我說在這裡, 而不是到這裡的。 事實上,作為我們的計劃獲得 更加先進和複雜, 我們將繼續採取理所當然 較低級別的拼圖存在。 因為我們寫了他們 或者別人沒有,所以 我們可以再建在它們上面。 讓我們來看看這個 變型,功能之一。 所以這一塊是一個有點多 先進的,但事實證明, 在CS50的圖書館, 這裡只有一個調用getInt功能。 我們沒有想到,幾年前,到 實現GetPositiveInt功能。 這是一個有點惱人,因為如果 你們正在編寫一個程序,其中 你想獲得一個積極的 從用戶的整數, 你完全可以使用調用getInt。 你完全可以用檢查 條件,也許一個循環 如果int是更大 比0和罵的用戶 如果他或她不給 你正數。 但是,讓我們建立這個 建築擋住自己,一, 定制刮片,如果你願意。 我將有一個程序 在這裡,最終,我 希望能夠調用 GetPositiveInt,我想成為 能夠打印出什麼那int是。 但是,這是現在的抽象化了。 它只是被賦予了很高的水平 名稱它做什麼, 這是美妙的,因為它是 非常直觀,現在讀。 如果我做不在乎什麼是底下 引擎蓋,讓我向下滾動。 這是一個有點嚇人 在第一,尤其 如果這是你的第一個程序, 但讓​​我們一起來看看。 我不再說的,無效的, 因為事實證明功能, 就像GetString的,可 返回一個值給我。 他們不只是有 打印到屏幕上, 他們實際上可以手 我的東西回來。 和而PrintName之前, 我沒回來需要什麼。 我需要的副作用 東西顯示在屏幕上, 但我並不需要一個人 遞給我的東西回來。 這裡,與GetPositiveInt, 像調用getInt, 我想交到東西回來。 所以我說不是的,無效的, 在線路23,但整型, 它說,該功能 我正在寫, 稱為GetPositiveInt是要 遞給我回一個整數,沒有什麼, 不作廢。 同時,要採取不 投入,所以我,善良,推翻它。 我不給GetPositiveInt任何 輸入時,我希望它給我的輸出。 然後現在會發生什麼? 因此,這裡就是我可以聲明一個變量。 我一直在循環之外做了, 對於原因,我們最終會看到, 但是這只是給 我的32位調用,N, 我已經預先確定 他們存儲的整數。 而下面這一點,做while結構, 這就是為什麼它是非常有用的。 從字面上做到這一點, 而n小於1。 因此,讓我們看看會發生什麼。 我打印出來,請 給我一個積極的INT。 然後我得到一個int,使用CS50的 功能與存儲在n個。 然後,什麼樣的代碼行可能 下一個被執行,邏輯? 哪條線是多少? 是啊,所以31。 你不會知道,直到你 被告知或排序的推斷是, 但是這是真的。 不言而喻從上到下 然後不斷重複。 所以,如果我已經輸入中說,數 負1,為n比1負少? 是啊。 因為負1小於1。 那麼會發生什麼情況? 我要做到這一點 而n是小於1, 所以我打算回去線28。 而每一個時間 - 讓我們運行this-- 讓功能1編譯它, 現在點斜線功能1。 如果我型負1,這是 要保持吼我 直到我合作,因為每個 我的輸入小於1 如果它而小於1, 我將繼續這樣做。 如果我終於給它一些像50, 值得慶幸的是,它說,感謝50。 為什麼呢? 因為只要n是不小於 1,我停止陷在這個循環中, 而這種新的關鍵字的今天, 返回時,從字面上做到這一點。 所以,我剛剛實施,在 感,GetString的相當於, 在那裡我遞回 不管是誰用我的,一定的價值。 它並不必須是 一個字符串,它是一個int。 因此,一個簡單,快捷 舉例來說,但我們會很快 看到一些更複雜 版本還在。 事實上,讓我們來看看一個 數字1,這是所​​謂return.c。 而這其中實際上 簡單一點。 因此,在這個方案的目的 life--讓我們編譯並運行它, 所以要回報,點 斜線,return--通知 程序簡單立方體的價值2。 它是非常愚蠢的,這是很難 代碼,它沒有採取任何投入, 但它確實說明另一個 我寫我自己的功能。 所以在這裡,我宣布一個 可變的,所謂的類型為int x,, 等於數字2, 完全是任意的。 這僅僅是一些蓬鬆打印。 它說,x是現在,這樣的和 這樣,多維數據點點點。 而神奇的是顯然的第21行。 我打電話調用的函數,立方體, 我交給它的一張紙 用數字2寫在上面, 和什麼樣的價值,數學, 我想出來的嗎? 正如完整性檢查? 8。 對嗎? 我想2立方回,2〜 3的力量,所以8回。 那麼,是立方體實現? 好吧,發現它在這裡實現了。 就如同之前,從邏輯上講, 即使語法可能是 很新,你們中許多人, 我想這個功能 遞給我回來的片 紙,上面有一個int。 所以,我有一個int,該 名字是隨意, 可方便地稱為立方體。 輸入到它,是n 整型,所以這是 我怎麼可以通過在數 2上一張紙。 然後事實證明C支持 數學,所以你不用X的的時間, 你只需要使用星號 乘法。 而這個返回n次n次 N,這是一個簡單的立方值。 那麼,我們要與這一切? 這絕對是一個 旋風之旅,放心, 在超級節 而在問題設置1, 你可以通過走 這一切全愈。 而在問題設置1,我們將過渡 從頭開始的圖形世界 到更多的東西命令行 在C.但我們會汲取靈感 從此這裡的遊戲 從昔日的,其中, 使用C和的標準版 p將您將實現馬里奧的金字塔。 而在的黑客版 p將,如果你選擇選舉, 您將實現多一點 有兩個高峰挑戰金字塔。 您還可以實施 算法,貪婪算法。 原來有 一些有趣的邏輯 過程背後 運行出納站 實際上交給 有人背的變化。 有一種算法,是相當 簡單的,你甚至可能 直觀地把握,當你第一次讀到 它 - 意識到這就是我一直 做我已經給了一些人的任何時間 錢back--,讓你永遠 最小化的數量 紙幣或金屬幣 您正在移交給用戶。 而這,當然,是引人注目 因為如果你去CVS或諸如此類的東西, 你不想成為手 一大堆的人 或者一大堆便士。 你想最少 硬幣,大概,可能。 最後,你也可以挑戰 在水世界玩水 而實際上得到升值 對於流動速率之間的映射, 都喜歡,水淋浴, 到底有多少水被使用。 而其中的典故, 將這個片段在這裡, 我們將結束對 短短60秒,即 描繪了一幅圖片 低流量的淋浴噴頭。 [視頻回放] - 所有權利。 我在這裡得到的一切。 我得到了旋風F系列, 水潤,Jetflow,斯德哥爾摩 Supersteam,你的名字。 - 和你有什麼建議? - 什麼是你找誰? -Power的人。 電源。 樣絲克伍事件。 - 這就是輻射。 - 那是正確的。 - 現在這是什麼? - 這就是特種兵450。 我不賣這個。 - 但是,這就是我們想要的。 這是一個突擊隊450。 - 不相信我。 它僅用於馬戲團。 這是大象。 -I'll支付任何費用。 - 什麼對傑里? - 他不能處理。 他細膩。 哦,是的。 [結束播放] 大衛·馬蘭:好的。 那如果CS50。 我們會看到你下週。 揚聲器1:[?斯卡利?],[?伊恩?] 只要這個尾奏項目, 你有什麼傢伙想出了? 揚聲器2:好了,我們已經給 它的各種思想, 我們認為,最好的辦法用於: 揚聲器3:我? 揚聲器2:是的。 通過一切手段,其實。 揚聲器3:所以我覺得 我們可以總結一下我們的想法 對於一個word--什麼的片尾。 大衛·馬蘭:沒事? 揚聲器3:沒有。 大衛·馬蘭:這是什麼意思? SPEAKER 3:片尾是關於什麼。 揚聲器2:嗯,我的意思是,在哲學, 我的意思是,沒有什麼是永遠的東西。 揚聲器1:所以what's-- 有什麼前提? 揚聲器3:所以它就像生活。 確定。 今天你做了什麼? 大衛·馬蘭:我站起來,有 早餐,來到工作。 揚聲器3:這是一個片尾曲。 揚聲器2:但是,我的意思是,不應該 事情發生在他身上的the-- 揚聲器3:不,不,不,不。 什麼也沒有發生。 揚聲器1:那麼,為什麼我們看什麼? 揚聲器3:因為 這是一個尾奏的CS50。 大衛·馬蘭:還沒有。