[音樂播放] 戴維·J·馬蘭:好吧。 這是CS50,這 是第2週的端部。 所以,今天,我們要 繼續我們的樣子 我們是如何表現的東西 下面的hood--搬走 從喜歡整數的數字 和浮點值 並專注於字符串和 最終更有趣的節目。 但是,我們也將看看在 夫婦域專用problems--的 其中第一個將在 是涉及到密碼學中, 藝術加擾的信息, 你上面的看這裡 是無線電孤兒安妮的圖片 秘密的解碼器環從昔日。 其實,這是很原始的形式 和cryptopgraphy兒童友好的形式 由此該環有兩個disks-- 1內1外。 並通過旋轉其中的一個,就可以 本質上線像一個字母 到Z與其他字母 像通過A.乙換句話說, 你可以從字面上旋轉的字母, 從而想出的一個映射 信件,信件,這樣,如果你 想送一個秘密消息 到有人喜歡安妮,你可以寫 您的消息,然後旋轉 字母,即,如果您的意思是 說“A”,而不是你說的“B” 你的意思是說“B” 你不是說“C” - 或一些更聰明 比that--然後,最終 只要安妮有此解碼器 環,她可以解碼該消息。 現在,你可能還記得,其實,這 在一個非常有名的電影,是使用 在播放廣告nauseum 聖誕季節。 讓我們來看看這裡。 拉爾夫PARKER:“無論是 眾所周知,在匯總 拉爾夫·帕克茲委任 小孤兒安妮秘密的一員 圓,有權全部 其發生的榮譽和利益。“ 拉爾夫·帕克(話外音): 簽名小孤兒安妮。 會簽,皮埃爾·安德烈! 在油墨。 榮譽和利益, 已經在九歲的時候。 [音樂播放] [無線電聊天] 拉爾夫PARKER:來吧。 讓我們開始吧。 我不需要所有的爵士樂 關於走私者和海盜。 播音員:聽明天 晚上的最後冒險 的黑色海盜船。 現在,是時候讓安妮 秘密信息給你的成員 的秘密圈。 記住孩子,只有會員 安妮的秘密圈 可以解碼安妮的秘密信息。 請記住,安妮取決於你。 設置您的銷到B-2。 這裡是message-- 12,11,2-- 拉爾夫·帕克(話外音):我 我在我的第一次秘密會晤。 電台播音員:--25,14,11,18,16-- 拉爾夫·帕克(話外音):哦, 皮埃爾是偉大的聲音在今晚。 我可以告訴大家,今晚的 信息是非常重要的。 電台播音員:--3,25。 這是從伊能靜自己的消息。 記住,不要告訴任何人。 [喘氣] 拉爾夫·帕克(話外音): 90秒後,我 在唯一的房間 房子裡的9個孩子 可以坐在隱私和解碼。 啊。 “B”。 [笑] 拉爾夫·帕克(話外音): 我去到下一個。 “E”。 第一個字是“是”。 是的! 現在來了更容易。 “U”。 [笑] RANDY PARKER:噢,來吧,拉爾夫。 我得走了! 拉爾夫PARKER:我馬上下來,馬。 嘖嘖颼颼。 “T” “O”。 “一定 以“。”一定要“是什麼? 什麼是小孤兒安妮 想說什麼? “一定要”是什麼? 母親:拉爾夫,蘭迪得走了。 請你出來? 拉爾夫PARKER:好吧,媽媽! 我馬上就出來了! 拉爾夫·帕克(話外音): 我越來越近了。 張力是可怕的。 那是什麼? 地球的命運 可以掛在平衡。 母親:拉爾夫,蘭迪的得走了! 拉爾夫PARKER:我馬上就 出來,哭出聲來! 拉爾夫PARKER (話外音):幾乎沒有! 我的手指飛了! 我的心是鋼的陷阱。 每一個毛孔振動。 這幾乎是清楚的! 是的! 是的! 是的! 是的! 拉爾夫PARKER:“一定 喝你的阿華田。“ 阿華田? à照出的商業? [音樂播放] 拉爾夫PARKER:狗娘養的。 (笑) 戴維·J·馬蘭:所以這則是 驚鴻一瞥的密碼是什麼 可以為this--à 喝從昔日。 所以簡單公告。 如果你是自由的這 週五下午1點15分,並會 想加入我們CS50 午餐前往該網址在這裡。 先來先服務如常。 但隨著時間的推移,我們將確保 大多數人誰願意參加 可安排明智的。 所以字符串。 我們有Zamyla--人 你現在見過最有可能 在習題集1--的 名字是這樣拼寫。 並假設你輸入她的名字 成計算機程序,是 使用類似的getString。 為了檢索 這些按鍵,怎麼 做才好較 字符串,一句話,一個段落, 或多個字母這樣的嗎? 我們談最後一次約 整數和問題 出現整數溢出 和浮點值 和問題 出現在精度範圍內。 隨著弦,我們至少 有一點更靈活 因為strings--剛 在現實天下 - 可以是一個漂亮的任意長度。 很短的,長的漂亮。 但即便如此,我們要 發現電腦有時可以 運行內存不足,甚至沒有 存儲一個足夠大的字符串。 但現在,讓我們開始顯現 字符串的東西在這些箱子 這裡。 所以六個這樣的盒,其中每個 代表一個字符或“字符”。 所以記得“字符” - C-H-A-R--是 在C中的內置的數據類型中的一種 這有什麼好看的,你可以用 之類的,作為一個構建塊, 一塊拼圖,如果你願意,形成 較大的數據類型,我們將繼續 調用“弦”。 現在,是關於思維有用 這樣的事情在這樣的字符串? 嗯,事實證明,我們可以 實際利用這種結構 實際訪問單個字符 在一個非常簡單的方法。 我要繼續前進,創造 一個名為“stringzero.c” 但你可以把它叫做任何你願意的話​​。 而在球場上的網站是 已經是這個例子中前進, 所以你不需要 輸入所有的東西。 而且我要繼續前進 和第一次做INT主要作廢。 而在幾天之內, 我們將開始捉弄分開 虛空是什麼在這裡,為什麼它的 整型旁邊主,等等。 但現在,讓我們繼續 複製粘貼。 我要宣布一個名為s字符串。 而我要的回報 GetString的在任何用戶類型。 這將是一個簡單的 程序,沒有說明, 我只是盲目地 期望用戶知道 怎樣做才能保持它的簡單。 而現在,我將有一個for循環。 我的for循環裡面,我 將有INT I變零。 我是,也只是一個慣例, 索引變量計數, 但我可以把這個我想做的事情。 我要做的i小於than--好 Zamyla的名字是6個字母。 所以我要努力 代碼那裡了。 然後對我有用。 而現在這裡面的捲髮 括號我會做的printf, 我想打印一個 字符一次。 所以我打算用%下 也許是第一次。 然後,我要打印的每張 性格上自己的路線。 所以我要放 小反斜杠Ñ那裡。 關閉股票。 現在我想要做的東西在這裡。 我想打印出來的 在字符串中的特定字母, S,因為我遍歷 從零上多達六個。 換句話說,我要 打印s的第i個字符。 現在我該怎麼辦呢? 嗯很像箱子 這表示在這裡, 種,想起了拳擊的概念 在信中,您同樣可以做到這一點 語法簡單的通過指定在C中, 我想打印輸出S的第i個字符。 使用方括號 您的計算機鍵盤上 在美式鍵盤上的 一般在你的返回鍵。 因此,這是不完全正確 然而,正如你可能已經注意到了。 不過,我要種 一味地在這裡開拓進取。 而我要做的事情做出字符串0。 但我沒有這樣做的,如果讓我們看看 無法預料的一些常見的錯誤。 這是怎麼回事編譯? 不,我錯過了一大堆東西。 圖書館聽說。 那麼,哪頭文件 我可能要在這裡補充的嗎? 是啊。 聽眾:您需要 標準I / O [聽不清] 戴維·J·馬蘭:優秀。 所以,我需要標準I / O。為了什麼 這樣做的目的我想標準的I / O? 對於printf的。 所以,包含了stdio.h。 你也建議我加入 在CS50的圖書館是什麼原因呢? 有字符串。 所以我們會看到什麼 CS50的圖書館正在做 創建一個字符串的這個概念。 但現在,你可以認為 它作為一個實際的數據類型。 因此,這似乎是一點點清理。 現在我要繼續前進 確實做到讓字符串0。 編譯。 所以這是很好的。 所以./string0讓我放大,使我們可以 看到更加緊密地發生了什麼。 輸入。 Z-à-M-Y-L-A輸入。 我們已經印出來Zamyla的名字。 所以這是相當不錯的。 所以,現在讓我們繼續前進, 再次運行此程序, 並輸入了Daven的全名。 驚喜,驚喜。 輸入。 嗯。 我們沒有印刷Daven的 全名字正確。 現在,這應該是顯而易見的 回想起來的原因是什麼, 樣的,愚蠢的設計決定? 是啊,我硬編碼了 6裡面我的for循環。 現在我這樣做只是因為 我知道Zamyla的名字 將是六個字母。 但可以肯定這不是 一般的解決方案。 所以,事實證明,我們可以動態 找出一個字符串的長度 通過調用一個名為的strlen函數。 同樣,故意 簡潔的命名只是 以使其更方便地輸入。 但是,這等同於 得到一個字符串的長度。 我將返​​回到我的終端 窗口並重新編譯運行。 但它吼我。 隱式聲明的庫函數 strlen的使用unsigned int型const-- 我迷路了。 完全。 因此,特別是作為 眼神開始呆滯 像這樣的錯誤信息,重點 老老實實的前幾個字。 我們知道問題出在 8號線,如下所示。 而且它是在字符串0.c。 隱式聲明 庫函數strlen的。 使一般要 是錯誤消息的格局。 隱式聲明的東西。 因此,在短期,你有什麼我似乎 這樣做就線8條,在這裡。 什麼可能的解決方案是偶數 如果你從來沒有使用strlen的自己嗎? 聽眾:不同的庫中的一部分? 戴維·J·馬蘭:第一部分 不同的庫。 因此,特此聲明,可以這麼說。 它提到了一些文件 比stdio.h中和CS50.h.其他 現在它在哪兒定義的? 說實話,你要么只是 知道這一關你的頭頂, 或者你google一下,看看。 或者知道這一點,我已經打開了,在CS50 設備上的終端程序,這 是只大,全屏版 什麼是gedit中的窗口的底部。 而事實證明,有一個 同樣簡潔的命令,稱為 男子手冊,在那裡,如果你鍵入 一個函數的名稱,然後按Enter鍵, 你會得到相當 神秘的文檔。 這只是文字一般 看起來有點像這樣。 這是一個有點勢不可擋 乍看之下。 但是,坦率地說我要去 讓我的目光呆滯 而只專注於部分 我關心的時刻。 這是這樣的。 它看起來像結構 東西我很熟悉。 事實上,手冊頁,所以 說話,會告訴你 在什麼頭文件中的函數 像strlen的定義。 所以我現在要回去gedit的。 而且我要繼續前進, 加上這裡的#in​​clude 並保存文件。 我要清除屏幕 控制L如果你一直想知道。 而我要重新運行make string.0,編譯這個時候。 ./string.0 Zamyla。 這似乎工作讓我走 進取,與達文波特重新運行它。 輸入。 而這也似乎工作。 因此,我們可以做得比這好一點, 不過,我們可以開始整理東西 最多只是一點點。 我要去實際 下面介紹一件事。 我要繼續前進, 它保存在不同的文件。 我要去打電話 此文件string1.c剛 為與代碼一致 你可以在網上找到。 讓我們集中在 完全相同的代碼。 事實證明,我已經 是一種了結 理所當然的是,我的筆記本電腦, 並且反過來,CS50器具 有很多記憶,很多 內存,有很大的空間的字節 我在其中可以存儲字符串。 但現實的情況,如果我輸入長 夠了,夠按鍵, 我可以在理論上類型 在多個字符 比我的電腦 實際擁有的內存。 這是有問題的。 就像一個int只能 算如此之高,從理論上講, 你只能塞進這麼多字 到您的計算機的RAM或隨機 存取記憶體。 所以我不得不更好地預測 這個問題,甚至 雖然它可能是一個罕見的 角落裡的情況下,可以這麼說。 不會發生的時候,可能會發生。 如果它發生,我不 預測和計劃吧, 我的程序可以做誰知道。 凍結,死機重啟,等等。 一些預期可能會發生。 那麼,我該怎麼辦 現在,今後真的, 之前我曾經盲目 使用一個變量,比如s的 已分配的返回值 其他一些功能如GetString的, 我要確保 它的值是有效的。 所以,我只知道,從已經閱讀 CS50的文檔的GetString, 最終,我們將會為你在, 該形式返回一個特殊的符號 稱為NULL,N-U-L-L中的所有 帽子,一旦出了問題。 所以通常情況下,它返回一個字符串。 但除此之外,如果它返回n-U-L-L-- 我們最終會看到什麼是真正的 是指:這只是意味著 壞事發生。 現在,這意味著,就像在刮, 我可以在這裡查詢的條件在C中, 如果s不等於NULL。 所以,如果你還沒有見過這個, 這也就意味著不等於。 所以它的對立面 平等的平等,其中還記得, 從單一的不同 等於,這是分配。 所以如果s不等於 空,才做 我想執行的代碼行。 因此,換句話說, 之前,我在潛水盲目 並開始迭代 在S和處理它 就好像它是一個序列 人物,我會先檢查, 等一下,是絕對不是 等於這個特殊值,空值? 因為如果是這樣,壞的事情都可能發生。 而現在,假設壞事 發生意味著你的程序崩潰, 而且你不一定能恢復。 所以,坦率地說,它看起來醜陋。 種它現在混亂的看了一眼。 但是,這將變得更 不久熟悉。 但我要提出 現在另外一個改進。 這是一個改善的正確性。 我的計劃是現在比較正確的,因為 在罕見的情況下,沒有足夠的記憶體 存在,我會處理這件事, 而我就什麼也不做。 至少我不會崩潰。 但是,讓我們做一個最終版本在這裡。 和一個文件名為string2.c。 我要粘貼 相同的代碼只是一瞬間, 而我要強調這 線,11日,在這裡,一會兒就好了。 現在的實際情況是,聰明的編譯器 像鏘能夠解決這一問題,我們 幕後 沒有我們曾經知道。 但是讓我們想想這 從根本上是有問題的設計。 這行代碼,當然, 他說,初始化一些變量i為0。 這是非常簡單的。 什麼又是這樣的 聲明中,在這裡,我有用,在做什麼? 我們已經看到過,但我們 沒有真正談論它。 聽眾:遞增島 戴維·J·馬蘭:遞增島 因此,在每次迭代中通過 這個循環中,每一個循環中, 你是遞增i增加1。 所以它變大,大,和 做大,直到循環終止。 它是如何終止? 那麼有這個中間 這是我們以前使用的條件。 你見過在 預排在P組。 但是,這是什麼意思嗎? 請執行下列操作循環,使 只要i小於什麼? 聽眾:字符串的長度。 戴維·J·馬蘭:本 長度的字串。 所以它轉換很乾淨 英語在這個意義上。 現在的問題是,每一次我 通過此循環迭代理論上 我在問這個問題。 為i小於s的字符串的長度? 為i小於s的字符串的長度? 現在也是我改變在每次迭代? 是的。 因為+ +的。 所以,每一次迭代i的越來越大。 但為s挺大的,或 較小,或改變在所有? 號 所以在設計方面,其中一個軸 同時,我們試圖評估代碼 在課堂上,這種感覺有點愚蠢。 就像你從字面上看, 在每一次迭代 這個循環的要求 同樣譴責的問題了, 又一次,又一次,和字面 這是永遠不會改變的。 至少如果我沒有碰s和 試圖改變s的內容。 因此,我可以做得比這更好一點。 而我什麼都做不 聲明只有一個變量i, 但第二個變量我會隨意, 但傳統上,正調用它。 分配N個相等的 第字符串的長度。 然後在這裡,我要 做一個聰明的小優化,使 可以說,在一天結束時 不再是正確的或不正確的少 比以前。 但它是一個更好的設計。 在事實上,我使用 更少的時間,更少的CPU週期,因此 說話,回答同樣的 的問題,但只有一次。 上一般的任何問題 改進的原則, 說,程序的效率? 是嗎? 聽眾:你為什麼 使用[聽不清]? 戴維·J·馬蘭:好問題。 那麼,為什麼我們把+ +上月底 í而不是I的開始? 在這種情況下,它具有 沒有功能的影響。 而在一般情況下,我傾向於 使用後綴運算符 所以,這是一個更加清楚一點的 至當操作正在發生。 對於那些不熟悉的,還有另一種 語句,讓你可以做+ +我。 這些都是功能 在這種情況下,等同 因為沒有什麼別的 周圍的增量。 但是,你能想出 宗和代碼行 其中有差別。 所以一般情況下,我們不 甚至談論這個。 因為坦率地說,它使你的 代碼性感,和排序的雨衣, 和更少的字符。 但現實是它的很多困難, 我想,即使我來包裝我的腦海 周圍有時, 操作的順序。 所以順便說一句,如果你 真的不喜歡這樣, 即使這是種性感 看,你也可以做I + = 1, 這是對的醜陋版 postfix的增量同樣的想法。 我這樣說,你 應該取笑它, 但你會看到代碼 一些之前長的漂亮。 [笑] 戴維·J·馬蘭:是嗎? 是啊。 問題在中間。 聽眾:你需要說INT N' 戴維·J·馬蘭:你這樣做 不用說INTñ。 所以,因為我們已經說過詮釋, 你不必說了一遍。 美中不足的是,n具有以 具有相同的數據類型,因為我。 所以,這只是一個在這裡方便。 是啊。 聽眾:你可以去比 打印字符s支架我又? 戴維·J·馬蘭:當然可以。 所以%C,從去年召回 時間,只是一個佔位符。 這意味著把一個char這裡。 反斜杠N,當然,只是 手段把換行符這裡。 所以,剛剛離開,現在, 這片新的語法。 這是從字面上說,搶 字符串稱為S去得到它 第i個字符,可以這麼說。 我一直說的第i個字符 因為在這個循環的每次迭代 這是因為,雖然我們打印 出,頭s支架0, 作為一個程序員可能會說。 那麼S支架1,則S 支架2,然後是3,然後是4。 當然,它是一個變量, 所以我只是表達它與I。 鍵,雖然是實現, 特別是如果你不 被馴化了這個世界 編程時,我們都 似乎從零來算,得 現在就開始從零計數。 因為字符串,第一個字符時, ž在Zamyla是好還是壞 要住在的位置數為零。 好吧,讓我帶 我們回到這裡Zamyla 看看到底發生了什麼 在引擎蓋下方。 因此,有型鑄造這個概念。 你可能有實際 玩這個已經, 也許對黑客 的P版的設定之一。 但是,類型轉換只是指 在C和能力的其他語言 到一種數據類型轉換成另一種。 現在怎麼可能,我們看到這個 很直截了當? 所以這一點,召回,是開始 的英文字母。 和上下文,還記得,從 就像一個星期前是ASCII碼。 美國標準守則 信息交換。 這只是一個很長的路要走 的說法,從字母的映射 為數字,從數字到字母。 因此通過併購在這裡,點點 點,線了,召回, 十進制數65就到了。 我們沒有談 這個明確的, 但肯定有相似 數字為小寫字母。 事實上,有。 世界決定有些年頭 以前,小A,小寫, 將是97。 和小B是怎麼回事 為98,依此類推。 和任何其他關鍵 您的鍵盤,還有 會是位類似的模式。 或者等價地,一個十進制數。 因此,在手頭上的問題, 那麼,我們怎樣才能 其實看到這個引擎蓋底下? 所以,我打算去到gedit的一次。 而非類型 這一個從無到有, 我要繼續前進, 剛剛開放的東西 從今天的代碼稱為ASCII碼為零。 和ASCII零看起來是這樣的。 因此,讓我們環繞這是我們的想法。 因此,首先,我已經評論 代碼,這是很好的。 因為它的字面意思 告訴我會發生什麼, 顯示大寫字母的映射。 現在,我不太知道我 那是什麼意思,所以讓我們推斷。 在英語中,也許 有些技術人員英語, 什麼呢行18出現 在做我們呢? 就在第18行。 它是什麼引起? 什麼是它要在這裡揭開序幕? 聽眾:一個循環。 戴維·J·馬蘭:一個循環。 又有多少次是 要去迭代? 聽眾:[插入VOICES] 六次。 戴維·J·馬蘭:不六倍。 聽眾:26次。 戴維·J·馬蘭:26次。 是啊,對不起。 26倍。 為什麼呢? 嗯,這是一個有點怪異,但 我已經開始從65計數。 這是奇怪的,但不是錯了。 這不是每個說不好。 而我做的,只有 因為,在這個例子中, 我有點期待 資本A為65。 現在這不是最優雅 的方式來做到這一點,來樣硬編碼 深奧的價值觀,沒有人 是意想不到的記憶。 但是現在,請注意,我 這樣做起來,通過65加26。 因為顯然我什至不希望 做算術在我的腦海。 因此,我將讓編譯器做。 但是在每個循環中,每次迭代 循環的,我遞增島 所以,現在這個看起來有點神秘。 但是,我們應該具備的基本建築 與塊明白這一點。 %C只是一個佔位符字符。 %i是一個佔位符,一個int。 而事實證明,通過使用該 新的語法,這個括號,所以 可以說,這樣的數據類型 圓括號內, 我可以強制編譯器把 我豈不是一個整數,但作為一個字符。 從而表明了我的性格 相當於這個數字的。 現在到這裡,這個代碼 幾乎是相同的。 我只是想讓 超清晰的事實 那我開始在97, 這是小寫。 在經過了26個字母。 而我doing--一遍, 鑄我可以這麼說。 或類型轉換我可以這麼說。 從一個int為char。 這樣最終的結果將是, 坦率地說,我們的信息已經知道了。 我要作 ASCII-0 dot--不是C點。 請注意,你可能做了 錯誤,因為我只是做了意外。 請ASCII-0。 現在我該怎麼辦./ascii-0。 我就放大了,可惜 它會在屏幕上滾過。 但是我們看到整個圖上 Google地圖97,B映射到98, 如果我們進一步向上滾動 A,當然,映射到65。 所以這只是說 我們一直在鼓吹, 有這個對等,是 事實上在實際的情況。 所以這是一個快速修改。 讓我打開ASCII-1.C。 並請注意這個聰明,排序 的,澄清這一點。 這是ASCII-1.C,並 看到這個瘋狂的事情。 這真正得到的心臟 什麼樣的電腦在幹什麼。 雖然我們人類會 在letters--而言不算 我不開始思考, 沒事A則B, 並使用它們來計算物體。 你當然可以說,我要 初始化一些變量稱為C-- 但我可以把這種現象稱之為anything-- 所以C初始化為資本A. 因為在一天結束時,計算機 不在乎你存儲的東西, 只在乎你怎麼想 呈現這些信息。 你怎麼要電腦 解讀比特的格局? 因此,這是不是我 一般會建議這樣做。 這真的只是一個例子, 傳達你絕對可以 初始化為char整數。 由於下方的 當然,一個char的引擎蓋, 僅僅是一個數字,從0到255。 所以,你當然可以 把它放在一個int內。 什麼這也 表明的是,我們 可以從一個轉換 鍵入到另一個,在這裡, 最終打印同樣的事情。 而事實上,這一點,我會解決online-- 是為了這麼一說,再一次,在這裡。 讓我打掃一下網絡,我們將 看到在網上漫遊的需要, 目的是什麼在那裡。 行。 所以最後一個例子,現在涉及 A和B的,然後我們會 拿東西了一個檔次。 因此,與A和B的並 C'S的資本 和等價物,讓我們 看看這個例子,在這裡。 另一個代碼示例。 我們會開一個的 已經作出,所以我們 不必鍵入它 全力以赴從零開始。 並注意在期待 我們使用多個頭 文件,其中之一是 我們的新朋友,string.h中。 現在這看起來,在第一 一眼望去,有點神秘。 但是,讓我們看看,如果我們不能理性 通過什麼是怎麼回事。 首先,我從用戶得到一個字符串, 我把該字符串中的變量 稱為S。 複製粘貼,從之前。 在第22行,我顯然 做什麼 我做了一個剛才我遍歷 在s中的字符。 這裡的新花樣使用 字符串的長度,優化未成年人 存儲該字符串的長度為n, 而不是調用一次strlen的, 又一次,又一次。 而只是檢查我是小於n。 現在這裡,事情就變得 有點有趣。 但它只是一個應用程序 這種相同的新思路。 什麼英語呢 Š支架我代表? 聽眾:每個計數 人物[聽不清]。 戴維·J·馬蘭:計算每個字符。 甚至更簡潔, Š支架我代表的是什麼? 你會說。 不要把你當場這裡。 聽眾:Well-- 戴維·J·馬蘭:所以,如果這個詞is--如果 該字符串是Zamyla,這starts-- 聽眾:--you處理 人物separately-- 戴維·J·馬蘭:好。 沒錯。 方括號表示法可以讓你 單獨訪問每個字符, 所以š托架0將是對 字符串中的第一個字符。 š托架1將是 第二,等等。 所以這個問題我問, 這裡,在這種條件下是什麼? 是S更大的第i個字符 大於或等於小寫? 而這是什麼意思,在這裡, 與雙連字號? 聽眾(合):和。 戴維·J·馬蘭:和。 這只是相當於此。 而不是在C語言的關鍵字,你必須 使用時,煩人,符號與符號。 而這一點,相反,卻要求是 的s的第i個字符小於或等於 為小寫ž? 再次,這裡的地方 理解底層 實施了 電腦是有道理的。 請注意,即使我有 在點點點在那邊, 貌似從a到z的小寫字母 所有連續的值從97上了。 而同樣的大寫開始65。 因此,外賣,然後, 的是,在英國, 你會如何形容 什麼線24是幹什麼的? 是嗎? 聽眾:在24它的檢查,看看 是否每一個字符是小寫。 戴維·J·馬蘭:這是檢查是否 每個字符是小寫字母。 因此,更簡潔,是 Š小寫的第i個字符? 這就是我們 在這裡表達邏輯, 隱晦一點,但 最終很直截了當。 是S的第i個字符小寫? 如果是這樣,這裡的東西在哪裡 得到一點心靈彎曲 就一下,如果是的話,請 前進,打印出的字符。 所以這只是一個佔位符, 但什麼性格? 我為什麼要做Š級別I 減去在這裡體現在哪裡? 那麼這裡看到的格局。 實際數字並不重要,這麼多。 但是請注意,97是 如何遠離65? 聽眾:32。 戴維·J·馬蘭:32。 多遠是98 66? 聽眾:32。 戴維·J·馬蘭:從大C小C 2 32。 因此,有來自32跳 一個字母到另一個。 所以,坦白說,我終於忍不住 簡化這一點。 但後​​來我種硬編碼 這種低級別的理解 沒有讀者是有史以來 要理解。 所以我要推廣它作為我 知道小寫字母越大。 我知道的大寫字母 較小的值,具有諷刺意味的。 但是這實際上等同於 話說減去32從s支架島 因此在這些情況下 信,如果信 恰好是一個字母,小寫字母 A,我減去32, 什麼樣的影響確實有, 在數學上,在小寫? 聽眾:Capitalizes-- 戴維·J·馬蘭:以大寫字母了。 事實上,這就是為什麼我們的 程序被稱為利用零。 這個程序不是 大寫字母, 檢查它是否是後 的確是一個小寫字母。 否則,在第30行,我該怎麼辦,如果 它不是一個小寫字母,我很 看著在特定 迭代循環中。 剛剛打印出來。 所以不改變的東西 這甚至不是小寫。 限制自己 通過小Ž稍微。 現在,這是相當神秘的。 但在一天結束時,這 就是我們,曾幾何時, 必須實現的事情。 如果我不是開放的資本 1,哦,感謝上帝。 有一個函數 叫上可 難道我們只是做了一切 在一個相當低的水平。 我們上有趣的是, 因為它是在一個文件中聲明, 你只知道這個 通過檢查文檔, 或者被告知,比方說,在課堂上,在那裡 它的存在,在一個名為文件ctype.h。 因此,這是我們的一位新朋友。 並且上不正是 它的名字所暗示。 您可以通過在,作為一個參數之間 這些括號,一些字符。 我要傳遞的第i個字符 第使用我們看中的新符號 包括方括號。 並採取了猜測,究竟是回歸 對上價值顯然會 要? 大寫字母。 大寫字母。 所以,如果我通過在小寫, 希望,通過對上定義, 它會返回一個 大寫字母A。否則, 如果它不是一個小寫字母 首先,我只是把它打印出來。 事實上,請注意 這裡第二個朋友。 不只是上存在, 但是低,這 實際上回答了這個問題對我來說。 現在,誰寫了這些東西, 以前的10秒裡,你知道嗎? 實施上,是 降低使用這樣的代碼。 但同樣,有一致的 這個想法抽象出來的, 之類的,較低水平 實施細則。 而站在人的肩膀上 誰來到了我們面前,使用功能 像到上部和下部是,這 奇妙的是夠漂亮 命名該說什麼,他們做的是 精彩的範例採用。 現在,事實證明,如果我讀 該手冊頁,說,要上, 我學別的東西。 所以,男人TOUPPER。 這是一個有點勢不可擋。 但注意,這裡的提 我應該使用頭文件。 順便說一句,因為這 是一種誤導,功能 採用整數,而不是字符 錯誤檢查的原因。 但是,我們也許會來 返回到在將來。 但是請注意,在這裡,要上轉換 如果可能的字母C為大寫。 所以這是非常簡單的。 現在,讓我們成為一個更具體一點。 讓我們來看看的部分 根據返回值的手冊頁。 返回的值是 轉換後的字母。 或c,如果轉換 是不可能的, 其中c是原始輸入。 我知道,從這裡,從 該參數來上。 那麼什麼是這個外賣? 返回的值是 轉換的信, 或c,原信,如果 的轉化率是不可能的。 有什麼可以改進,所以我 讓我的代碼的設計嗎? 是嗎? 聽眾:您可以刪除的東西。 戴維·J·馬蘭:我可以 去掉else語句, 而不僅僅是else語句。 聽眾:您可以刪除[聽不清]。 戴維·J·馬蘭:我可以 移除整個叉 在路上,如果其他人乾脆。 因此,我們確實讓我打開 這樣做的最終版本, 利用-2,注意只是怎麼樣,如果 你會,性感,代碼現在越來越, 在我從一些減少 七,所以行短短四年, 我有意的功能 通過簡單地調用到上層, 通過以s支架i和印刷 取出,用佔位符%C, 特定的性格。 現在可以說,有個bug, 或錯誤的,至少風險, 在這個程序中。 所以才回來 到一個較早的外賣, 我應該怎麼可能還做的 這個程序,使其更加堅固, 因此,有沒有辦法它可以 崩潰,甚至在極少數情況下? 聽眾:請確保它是不是NULL。 戴維·J·馬蘭:確保它不為NULL。 所以真的,使這個超級 正確的,我應該這樣做, 如果s不為NULL,則 請繼續執行 這幾行代碼,其中 那麼我可以縮進那樣, 然後把我的右花括號。 因此,良好的搭售在一起的兩個概念。 是嗎? 聽眾:你能不能用 一個do while循環,而不是? 戴維·J·馬蘭:莫非 我做了do while循環? 聽眾:--you要確保 你實際上[聽不清]。 戴維·J·馬蘭:莫非 您使用的是DO WHILE? 簡短的回答,沒有。 因為你即將 引入另一個角落的情況下。 如果該字符串的長度為零。 如果舉例來說,我只是打 輸入,而沒有輸入Zamyla。 我要交給你回一個實際 字符串,因為我們最終會看到, 具有零個字符。 它仍然是一個字符串, 它只是超短。 但是,如果你使用DO WHILE, 你要盲目 嘗試做一些與 對於該字符串, 而什麼也沒有去那裡。 聽眾:嗯,如果你做了 做[聽不清],而S-- 戴維·J·馬蘭:哦,我看看,讓 獲取來自用戶的字符串。 所以,簡單的答案,你 能,並保持糾纏 他們給你一個字符串,它是 短到足以裝入內存。 當然可以。 我只是選擇不。 如果他們不給我的字符串I 希望,我辭職,我放棄了。 但是,絕對,為此目的, 你可以完全做到這一點。 因此,庫的頭文件 我們現在熟悉了這些,在這裡。 標準I / O,CS50.h,string.h中, 文件ctype.h,並有確實,等。 你們當中有些人已經發現 在math.h.數學庫 不過,讓我介紹一下,現在,到 這個資源是CS50的工作人員,達文, 和Rob,以及加布特別 有放在一起。 這將很快鏈接 該課程的網站。 這就是所謂的CS50參考。 這只是給你一個快速 它的味道,工作原理如下。 讓我去reference.cs50.net。 在左手上,你會看到 方壓倒性列表 功能附帶℃。 但是,如果我不管,就目前而言, 關於類似的strlen, 我可以輸入它。 它過濾下來的名單 只是我所關心的。 我會點擊它。 而現在在左邊, 你會看到什麼,我們希望 是一個比較簡單的,人 如何友好的解釋 該功能的工作原理。 返回字符串的長度。 這裡有一個故事大綱,這裡是你如何 用它在頭文件而言, 以及在什麼樣的功能方面 看起來像它的參數條件。 然後在這裡,退貨 字符串的長度。 但是,對於那些你更舒適, 實際上你可以點擊更多的舒適, 與此內容 頁,現在,將改變 是什麼樣的默認值 你所使用的手冊頁。 換句話說,CS50 引用是一個簡化 手冊頁的工作人員,為​​學生。 特別是那些不太舒服 和在之間,這樣就 不必嘗試包裹 你的頭腦身邊,坦率地說, 一些相當神秘的語法 和文檔的某個時候。 所以,記住這一點 在未來的日子裡。 所以在這裡,再次,是Zamyla。 現在,讓我們提出一個問題,那就是 多一點人訪問。 由於長安,誰是被 印刷更多的大象 馬不停蹄的這幾天。 我們有一個機會,給 客場至少其中之一。 如果我們能夠得到的只是一名志願者 來在最多繪製在屏幕上。 怎麼在這裡? 上來吧。 你叫什麼名字? 亞歷克斯:亞歷克斯。 戴維·J·馬蘭:亞歷克斯。 好吧。 亞歷克斯,上來吧。 我們即將看到你 手寫在屏幕上的位置。 好吧,很高興認識你。 亞歷克斯:你很高興見到你。 戴維·J·馬蘭:好吧。 因此,超級簡單的運動。 酒吧是不高 讓大象今天。 你在玩的GetString的作用。 而且我會直接告訴你 你已經得到的字符串。 並假設你, GetString的,被稱為。 和人,和我一樣,有 鍵入Zamyla,Z-A-M-Y-L-A。 只是繼續前進,就寫Zamyla 屏幕雖然你得到它 並將其存儲在某個地方存儲。 什麼將是幾個留有餘地 其他words--沒關係,堅持下去。 [笑] 所以Zamyla,優秀。 所以,現在假設你, GetString的,被再次調用。 因此,我為您提供,在 鍵盤,使用其他名稱,貝琳達。 好吧。 而現在,下一次的GetString是 叫我輸入類似加布, G-A-B-C。你真的走 到心臟的隨機存取存儲器。 這是借鑒一切 完全隨機。 行。 [笑] 亞歷克斯:對不起,我的筆跡是壞的。 戴維·J·馬蘭:不,沒關係。 又有怎樣的羅布,R-O-B。行。 好。 所以,我沒想到你會 種打下的東西出來是這樣的。 但是,我們可以使這項工作。 那你怎麼去鋪設 這些字符在內存中? 換句話說,如果我們想 這個長方形的黑色畫面 作為代表 計算機的RAM或內存。 並記得RAM是剛 一大堆的字節, 和字節是一大堆位。 而位在某種程度上 實施一般 用某種形式的 電力硬件。 所以這是排序的 分層,我們已經討論過 現在可以理所當然的。 你怎麼去 決定在哪裡寫 羅布對加布與 貝琳達與Zamyla? 亞歷克斯:我只是做了它在 命令你告訴我。 戴維·J·馬蘭:這是事實。 但管轄,你把 貝琳達的名字和Gabe的名字嗎? 亞歷克斯:什麼都沒有? 戴維·J·馬蘭:[笑] 那麼這樣的作品,這很好。 所以,電腦是小 比這更有序。 所以,當我們implement--呆在那裡 在短短moment--當我們真正 實現類似 GetString的在一台電腦, Zamyla可能會奠定了相當多 像你這樣在屏幕上,在那裡。 什麼是關鍵要注意 在這裡,有什麼亞歷克斯做了, 有是怎樣的一個分界 其中每一項的話,對不對? 你沒寫 Z-A-M-Y型L-A-B-C-L-I-N-D-A-G-A-B-- 換句話說,有一些樣 劃界這似乎是, 之類的,隨機的間距 這些不同的單詞之間。 但是,這是很好的,因為 我們人類現在可以 可視化,這些都是 四個不同的字符串。 這不只是一個序列 地段字符。 所以一台電腦的話,同時, 可能需要一個字符串,如Zamyla, 把每一個這些信件 裡面的內存字節。 不過,這個數字要大得多, 當然,大於6位。 有一大堆的RAM。 所以,從今以後,這 箱格會 代表什麼亞歷克斯剛 在這裡做在屏幕上。 而現在,亞歷克斯,我們可以為您提供 藍色或從長安橙色大象。 亞歷克斯:我要一個藍色的大象。 戴維·J·馬蘭:一個藍色的大象。 因此,一個熱烈的掌聲, 如果我們可以,亞歷克斯在這裡。 [掌聲] 亞歷克斯:謝謝。 戴維·J·馬蘭:謝謝。 這樣的外賣的是,即使 種模式隨時間變化的,在這裡 在黑板上,有這 各串之間的分界 亞歷克斯得到了我們。 現在的電腦,坦率地說, 可以做同樣的事情。 種他們可以噗通 字符串的任何地方在RAM中。 在這裡,在這裡, 在這兒,在這兒。 他們可以這樣做。 但是,當然,這是 可能不是最好的規劃。 對不對? 如果我一直在問亞歷克斯 得到的名字,也許他會 多放些到這裡,也許最多 在這裡,看過來,看過來,最終 在這裡。 但有更多的規劃,當然, 我們可以打好的事情了更乾淨。 事實上,這就是一台電腦一樣。 但美中不足的是, 如果下一個字符串,我得到 後Zamyla是什麼 像貝琳達, 建議我們會寫 字母b相對於該網格? 你會去哪裡? 為a的右側, 下面的Z,下面有一把? 什麼你的第一直覺是什麼? 聽眾:下面的Z。 戴維·J·馬蘭:所以Z軸下方。 這就是美麗的 簡單吧? 這是一種整齊,這是我們做什麼 在鍵盤上,當我們按下回車鍵, 或電子郵件時作出 物聯網項目符號列表。 但現實的情況是,電腦 嘗試更有效率, 和補習班肯定之多 數據到RAM成為可能, 這樣你就不會浪費任何字節。 這樣你就不會浪費 任何屏幕房地產。 與該問題,雖然是 如果我們硬是把信 後B A,我們如何來 知道Zamyla的名稱結尾 和貝琳達的名字開始? 所以,你們人類只是建議,好了, 按下回車鍵,基本上。 把它放在樓下。 甚至亞歷克斯做了,剛開始寫作 低於前一個下一個名稱, 和下面的那一個,並 那麼下面的那一個。 這是一個視覺提示。 電腦有另一種視覺提示, 但它是一個小更簡潔。 正是這種質樸的性格。 反斜線0,這也許是 讓人想起反斜杠n個, 等等,現在。 特殊的轉義序列。 反斜線0的方式 代表捌零位成一排。 0000 0000。 你表達的方式是不 按鍵盤上的數字為零, 因為實際上這是一個ASCII字符。 它看起來像一個數字,但 實際上是一個十進制數 表示圓 字形,圓形字體。 同時,反斜線 零表示,從字面上 把捌零字節來到我身邊。 所以這有點武斷。 我們本可以用任何圖案 位的,但在世界 決定好幾年 以前,該代表 字符串在內存中的端部, 只是把一大堆零。 因為我們可以檢測到。 現在,意味著無信 字母可以表示零。 不過沒關係,我們已經看到了 我們使用的是65在97就到了。 我們沒有取得任何進展 接近為零。 因此,貝琳達在計算機的內存 實際上要去這裡。 我在黃色繪製它只是 要引起我們的注意。 並請注意,同樣,這 完全是任意的。 我畫它作為一個網格。 如,內存只是一些實物。 它不一定 行和列,本身。 它只是得到了一大堆的字節 在硬件某種程度上實現。 但是,如果貝琳達後我 鍵入Gabe的名字, 他將在這裡結束在內存中, 如果我輸入Daven的名字, 比如,他會在這裡結束。 我可以繼續 即使寫的名字。 不幸的是,如果我嘗試 寫一個超長的名字, 我可能最終會耗盡內存。 在這種情況下,GetString的是 將返回NULL,因為我們說。 不過,值得慶幸的是,至少在這個視覺 在這裡,我們沒有得到想像中的那麼遠。 現在有什麼好看的是,這 對待事物的總體思路 在盒子是為 c代表的功能 和很多語言, 已知為陣列。 一個陣列是另一種數據類型。 這是一個數據結構,如果你願意。 在它的結構感真的, 種,看上去就像一個盒子,至少 在你的腦海裡。 數組是一個連續的 相同數據類型的序列, 背靠背背靠背。 所以一個字符串,在其他 也就是說,是字符數組。 字符數組。 但事實證明,你可以有 事情束陣列。 實際上,我們可以把連 在數組編號。 這樣的形式,其中 我們將要開始 聲明這個數據 已知為陣列結構 也正用方括號。 但是這些方括號將要 有不同的含義在此上下文。 讓我們來看看它,如下所示。 假設我打開 在這裡一個新的文件。 我保存這為ages.c. 我會在我的文件夾中保存這個位置。 現在我要繼續前進 並開始鍵入的東西 像包括CS50.h,包括 stdio.h中,詮釋主作廢。 然後這裡裡面,我想 先有所謂的年齡為int。 而且我會用它來獲得 從他或她的年齡的用戶詮釋。 但此方案是指使用由 多的人,不管是什麼背景。 我有一排人。 所有這些都輸入自己的 年齡也許一些,我不知道, 競爭或事件 他們已經到達了。 所以旁邊的人,我 需要另一個變量。 因為如果我只是做 時代變調用getInt,這 要揍,或覆蓋 前面的人的年齡。 所以這是沒有好處的。 所以,我的第一直覺 也許,哦,沒事, 如果我想要得到多人的 ages--我們稱之為age1, INT age2得到詮釋,詮釋age3得到調用getInt。 現在我要使用 這裡是一些偽代碼。 做一些與這些數字。 我們會離開的另一天是什麼 我們正在做的吧,因為我們只 關愛的時刻 關於age1,age2,age3。 不幸的是,有一次我 編譯這個程序 並把它在實際的用戶面前, 什麼是根本設計不良 我似乎決定了呢? 是嗎? 聽眾:[聽不清] 戴維·J·馬蘭:是啊, 我還沒有嘗試過 要弄清楚有多少年齡 我真正關心? 如果我有少於三個人在這裡, 因此,少於三個年齡段, 我仍然盲目期待3。 上帝保佑4達人秀。 我的計劃是不會甚至支持他們。 所以這個,說來話長 總之,不是一個好習慣。 對不對? 我基本上是複製和 粘貼代碼,只是調整 變量名。 而且,我的上帝,如果你有,不是三 年齡,但10或100,甚至6500 大學生,例如。 這不會是特別 優雅的代碼,或可持續。 你將不得不 每一次重寫程序 你對人的改變數量。 所以,值得慶幸的是,在我們的實際 ages.c文件今天, 我們有更聰明的解決方案。 首先,我要借用 構建我們已經用過幾次, 此做while循環中,為了得到 的人在房間的數目。 我只是去糾纏用戶,再 又一次,直到他或她給我 n的值是一個正整數。 我可以使用,最後 時間的獲得正面的詮釋。 但是,我們沒有這方面的 實,讓我繼續 並重新實現了這個想法。 現在在這兒,這是新的把戲。 在第27行,作為評價 在第26行指出, 聲明一個數組中 存儲每個人的年齡。 所以,如果你想要得到的,而不是一個整數,不 兩個整數,但一大堆的整數。 特別是n個整數,為N可能 有三個,也許是100,也許是1000人。 語法很簡單,就是 比方說,你想要什麼類型的數據? 你想打電話 該內存塊? 那你要撥打的網格 看起來像這樣形象地? 而在這裡括號,你說 你要多大的數組是。 因此更早的時候,我說的 語法是有點不同的位置, 我們還是用方括號, 但是當我在聲明​​數組, 內部的數 方括號方式 要在陣列是多大做的。 與此相反,當我們使用S 支架剛才我,S,A弦, 的確是字符數組,但 當你沒有聲明一個變量, 與此關鍵字在這裡, 你只是得到 具體的指標,具體的 元素的數組。 一旦我們知道了,剩下的 這很簡單。 如果有新的我第一次去打印出來 什麼是人編號i時代。 在這裡我只想說人排名第一, 人排名第二,個人第三。 而我只是在做算術, 讓正常人一樣, 我們從一本算 程序,而不是從零。 然後我打電話調用getInt,但我存儲 在年齡答案級別I。 這是第i個年齡在數組中。 因此,而上一次我們在治療 這些箱子的字符為Zamyla的名字, 及其他。 現在,這些方塊代表 32位或4個字節 我們可以在其中存儲 一個int,一個int,int類型。 所有這一切,再一次, 具有相同的數據類型。 現在我做一些愚蠢的, 像時間的推移,只是 證明寫這個程序。 然後到這裡,我再次重複 在陣列說一年以後, 人的頭號意志 是什麼歲。 並弄清楚, math--我的意思是,這 不是很複雜算術: 我只是補充自己的年齡。 只是為了演示,再次,這一點。 正如我可以索引到一個字符串,S, 這樣我就可以索引到年齡的數組, 像有。 那麼,這是怎麼回事要帶我們? 所以我們會看到,最終, 在天幾件事情來。 一,這一切的時候, 編寫自己的程序, 像馬里奧,貪婪,信用。 你已經輸入的名稱 該程序並按下Enter鍵。 然後獲取用戶的輸入。 用的getString,調用getInt, getLongLong,或類似物。 但事實證明,C支持 一些所謂的命令行 爭論,這是怎麼回事,讓我們 實際上得到的是你輸入的話, 在閃爍提示, 之後,你的程序的名稱。 因此,在未來的日子裡,你 可以鍵入類似撒, 或./caesar 13號,此後。 我們將看到如何工作的。 因為的確,在 問題設置兩個,我們 要為您介紹 到了一點東西 讓人想起拉爾夫年代 挑戰早前製圖。 藝術爭先恐後的信息。 這其實是很 不禁讓人想起拉爾夫一樣。 這是一個加密的例子 算法稱為ROT13,R-O-T 13。 這只是意味著旋轉 字母在字母表13個地方。 如果你這樣做,你會看到現在 是什麼,也許,一個熟悉的短語。 但在路上,我們要使用 這一點,最終是更普遍。 P中設置兩種,標準版, 您將實現一對夫婦的密碼, 一個叫凱​​撒,一個叫的V @ genere。 他們兩人都是旋轉 密碼,在某種程度上你 把一個字母到另一個字母。 而凱撒是超級簡單。 你加一個,你加13, 或者一些人數達26。 的V @ genere不上 每個字母的基礎。 所以的V @ genere,你會看到 在規範中,是更安全的。 但在這一天到底是什麼 你將實現和P設置兩個, 是您同時使用該密鑰 用於加密和解密。 參照轉彎的過程中 純文本,一些原有的消息, 成暗號文字,這 什麼是加密的。 然後再解密它。 在黑客的版本, 同時,你會 負責類似的東西 在精神上,我們會給你 一個文件,從一個典型的Linux,或 Mac或Unix的計算機名為Etsy的 密碼,其中包含一個全 一串用戶名和密碼。 而這些密碼都 被加密或散列, 可以這麼說,更恰當 您將在規範中看到的。 而黑客版將挑戰 你服用的輸入這樣的, 和破解密碼。 也就是說,搞清楚什麼 人的密碼居然是。 因為,事實上,密碼是 通常不存儲在清晰, 和一般口令 應該不難猜到。 這不是常有的事。 而我認為我們會做的是 總結了幾分鐘 一眼特別 口令選擇不當 從電影,你可能還記得深情。 如果沒有,你應該租房。 [視頻回放] -Helmet,你惡魔,這是怎麼回事? 你在做什麼,以我的女兒? -Permit我介紹 才華橫溢的年輕的整形外科醫生, 醫生菲利普Schlotkin。 最大的隆鼻的人在 整個宇宙和比佛利山莊。 - 您的殿下。 - 鼻腔的工作嗎? 我不明白。 她已經有了一個隆鼻。 這是她甜美的16本。 不,這不是你的想法。 這是非常非常糟糕。 如果你不給我 組合的氣屏, 醫生Schlotkin會給你 女兒回她的老鼻子。 - [喘氣] Nooooooooooooo。 你從哪裡得到的? - 所有權利。 我要告訴,我會告訴。 不,爸爸,沒有。 您不得。 -You're權親愛的。 我會想念你的新鼻子。 但我不會告訴他們的 組合不管。 - 非常好。 醫生Schlotkin,做你最糟糕的。 - 我的快樂。 - 不! 等待,等待。 我會告訴。 我會告訴。 - 我知道它是可行的。 好吧,把它給我。 -The組合之一。 - 酮。 - 酮。 - 兩個。 - 兩個。 - 兩個。 - 三。 - 三。 - 三。 - 四個。 - 四個。 - 四個。 - 五。 - 五。 - 五。 -so的組合之一, 二,三,四,五。 這是最愚蠢的組合 我曾經聽到了我的生活。 這就是那種東西的的 白痴不會對他的行李。 - 謝謝你,你的高度。 [遙控點擊次數] - 什麼你做什麼? -I關掉了壁。 不,你沒有,你 關掉了整部影片。 - 我意有所指按錯鍵。 - 嗯,把它放回去吧! 放電影回來! - 是的,先生! 是的,先生。 - 讓我們走,阿諾德。 來吧,格雷琴。 當然,你知道我會 必須向您這一點。 - 嗯? 沒有工作? 哪來的王? - 它的工作,先生,我們 有組合。 -Great。 現在,我們可以把每一個最後一口氣 從地球Druidia新鮮空氣。 有什麼組合? - 酮,二,三,四,五。 酮,二,三,四,五? - 是的。 - 這就是驚人的。 我有同樣的 結合我的行李。 準備空間球1 立即離境。 - 是的,先生。 - 和改 結合我的行李。 [關門聲音] [CLINK門擊中頭盔] -Ahh。 [完視頻回放] 戴維·J·馬蘭:這就是它的 CS50,我們會看到你下週。 旁白:現在,深 思考,通過Daven法納姆。 DAVEN FARNHAM:編碼中的C是 比刮了這麼多困難。 printf的,划痕是一個謊言。 [笑SOUNDBITE]