[音樂播放] 傑森赫塞豪恩:好,大家好。 歡迎來到科。 這是CS50,我們非常 首超一節。 大家都知道,下週 規則部分將啟動, 但本週我們都在一起。 還有就是我自己。 我的名字是賈森。 我在計算機科學系講師。 我們有安迪,誰是CS50的頭TA。 而Scaz,布萊恩Scassellati教授, 他在計算機科學教授。 我們是在耶魯大學的CS50頭。 您可以隨時發送電子郵件 我們heads@cs50.yale.edu。 我們將在講座。 我們會在辦公時間。 如果有過什麼我們可以 為你做,你需要什麼, 隨時接觸到我們。 那麼,我們今天要做? 或者在此之前,有什麼 來了這個星期? 因此,辦公時間是週一,週二, 星期三和星期四,上午8:00至11:00。 還有的網站上日程。 節,就像我提到的, 在下週開始。 而且你會發現這個星期什麼 計時您的部分是,今天是什麼日子, 和你的TA是誰。 問題1在週四是由於在 中午,週五中午至深夜的一天。 是的,你有九晚了幾天。 而且有九個問題集。 而且只能使用一個 每道題集下旬的一天。 是的,實際上,所有的問題 集將於週五中午。 這是所有。 所有的細節都在教學大綱。 每個星期五,我們的午餐。 我們想使這個大 當然感覺有點小。 所以,歡迎您RSVP。 免費的午餐與其他 同學們和工作人員。 cs50.yale.edu/rsvp。 所有這些事情, 我在屏幕上, 多,你可以找到cs50.yale.edu或 cs50.harvard.edu,如果你去哈佛 而在看這個網上。 同時在這些網站上,有 一噸為你的資源。 每個講座不僅具有視頻 講座,但也注意到。 有人將觀看 講課和做筆記給你。 所以,你可以只支付 在講座的關注, 或者您可以使用他們的筆記/我們 筆記來補充自己的筆記。 有網上的幻燈片。 源代碼 - 一切 大衛都要通過講座, 或Scaz都要通過講座,這 源代碼可在網上 還有,像我,提到影片。 部分,同樣地,都將被拍攝下來。 所有這些幻​​燈片將可用。 所有這些代碼將 可為您服務。 還有的網站,短褲 CS50的工作人員花費5到10 分鐘經歷的主題為您服務。 其中一些人已經過 在習題中遇到。 辦公時間,正如我所說,星期一 至週四,8:00至11:00。 CS50研究是一個奇妙的資源。 有實際問題, 樣本幻燈片,已知錯誤 學生喜歡碰到, 基本上對每一個主題中,我們 將覆蓋在這個過程中。 最後,在這張幻燈片 至少,Reference50 它給你的信息 在所有的C函數 你所能可能希望 使用和許多,許多。 再次,點點點的 在屏幕的底部 是表明甚至還有 在這兩個網站上更多的資源: cs50.yale.edu,cs50.harvard.edu。 那麼,我們今天做什麼? 首先,我想給 你的資源。 已經做了一個。 看看我們。 現在,我們要投奔 數據類型和運營商C. 然後安迪會在這裡和 在C中去了圖書館,printf()的, 一個函數,你已經 熟悉或將很快成為非常 熟悉。 而且你還可以去了 條件和循環。 然後最後,Scaz 會在CS50 ID。 如果你還沒有鴿子在 已經在習題集1, 以及如何使用 終端和有用的命令 然後給你一些演示和 實踐編碼在CS50 ID。 以前我跳這個 在這一側的內容, 沒有任何人有任何問題這麼遠嗎? 太好了。 確定。 更換齒輪。 [換檔] 那是我移 齒輪在手動汽車。 因此,在C數據類型,你不能只是有 一個變量x,並將它是在第10行, 的整數,說不定數字1, 第20行,一個十進制數10.5, 然後一對夫婦行 後來一個字符串,我愛CS50。 在C語言中,變量只能是 一件事,只有一件事。 所以你必須給他們的類型。 而在此板上,我們 有類型的列表。 有字符,這 代表角色。 所以這是一個字母A,B,C, D.這也可以是一個空間, 或者也可以是 新行字符。 有整數,這只是 數字,全numbers--或整數 rather--但沒有小數。 對於小數,我們有 浮點數。 浮點數 與小數的數字。 再就是多頭頭寸,這是 本質上較長的整數。 你會發現,長 是8,而一個int是4。 我會得到,在第二。 這是因為多頭可以存儲連 比int多個整數可以存儲。 雙是一個長期的浮動。 最後,我們有 串,其是一種類型的 你可能已經使用過。 如果包括包括hashtag #includeCS50.h在源文件中, 那麼你可以使用一個字符串類型。 它實際上沒有內置到C. 有一對夫婦的其他類型也是如此。 但這些都是與校長的人 您將使用和遇到的問題。 c以,我又提到, 每一個變量 - 它 只能是一種類型的且只有一個類型。 這是因為C是一種靜態 類型化的語言,而不是 動態類型語言 如果你創建一個變量在哪裡 你可以改變什麼是存儲在 它在程序中去。 在這裡的右手 一邊,我有不同的尺寸 這些類型的字節的數據。 這樣一個字符是1個字節。 這是8位。 這意味著,因為8 位有八個0和1。 我們看到這些演示在第一 週與二進制燈泡。 隨著8位或1個字節,我們可以 表示數字從0到255。 右。 如果所有8位均為0這是0。 如果第一位是1,這是數 1,等等,所有一直到255。 這就是為什麼對於字符可以 有本質上最多255, 但是這足夠覆蓋所有 字符我們需要使用。 對於整數,你可以0, 那麼你有2到32減1。 這些都是多少選擇 你有整數。 長期以來,你有0 到2〜64減1。 所以,你有很多很多, 更多的選擇,為多頭。 字符串,這是一個問號 因為這是一個懸念以後。 是啊。 我可以告訴大家的 在他們的座位邊, 就像那是什麼問號? 這是一個懸念。 我們將最終覆蓋的大小 字符串和多談談字符串。 因為字符串其實是 培訓車輪之一 我們在這個帶上 當然,在開始 再起飛後 對,因為在C字符串 實際上指針 字符數組。 但同樣,這是一個 扣人心弦以後。 在我繼續前進的任何問題, 評論,這個幻燈片的擔憂? 確定。 我一定是一個夢幻般的講解員。 此外,當你在編程, 你要使用這些運算符。 很簡單的標誌,可以做簡單的 操作,與你可能 已經很熟悉了。 例如,在右側 右手邊,我們看到的補充。 要添加,你只是做一個加號。 所以,你可能有 兩個變量x和y。 你可以在你的代碼做X + Y。 也許你想用於:說你 有7號和3, 你想存儲 在一個變量中稱為總和。 你可以做INT的類型,空間 總和,所述變量的名字,= 7 + 3; 那能店總和? 有人嗎? 如果我在總和= 7 + 3。 什麼將存儲在總和? 你可以只喊出來。 聽眾:10。 傑森赫塞豪恩:10! 這是完全正確的。 怎麼樣的總和= 7 - 3, 我只是用了幾許的跡象。 這是怎麼回事存儲? 聽眾:4。 傑森赫塞豪恩:4。 總和可能是錯誤的名字 該變量,但4將被存儲。 為了繁衍C,使用小 明星的性格,你不使用X。 來劃分,使用前向 斜線而不是分裂的象徵。 而對於模,使用百分比符號。 所以我們可以說我想看看INT Z = 7%3,什麼將被存儲在Z' 所以,這是本質 問是什麼模辦? 有誰知道什麼模呢? 是啊。 Y 4。 揚聲器1:這是餘數。 傑森赫塞豪恩:它是 其餘的,當你劃分。 所以7除以3餘數2 1。 所以1將存儲。 你做減法, 但它是如何工作。 這就是模運算符一樣。 它需要通過一些它除以 其他號碼,並返回到你 餘數。 如此反复,7%,3為您提供了1,因為 7 3 2 1餘分, 和返回餘。 那麼,讓我們回到了 一步到位的除號。 如果我做了7 /除以3不 任何人都知道這是什麼會回來? 揚聲器2:2。 傑森赫塞豪恩:為什麼2,而不是2.333? 揚聲器2:我覺得它削減 關閉整數之後。 傑森赫塞豪恩:所以 這是完全正確的。 在C語言中,如果你做了分工 兩個整數7除以3, 它得到了答案, 在這種情況下,2.3333永遠 它認為,小數點和 小數點後挑起大樑事事休 它只是返回2。 所以,如果我做了8除以3。 實際上,我們知道 這回2.666, 但在扒事事休 十進制,截斷了這一切, 而剛剛返回給你2。 因此,6除以3,7分 3,8除以3, 都將回報給你2。 任何人都不會知道,或者有一個猜測, 至於我怎麼能真正得到 完整的答案,如果我想要那個小數點? 是啊。 來吧。 揚聲器3:使用浮動? 傑森赫塞豪恩:你是什麼意思? 揚聲器3:因為你說的 浮動是數字[聽不清] 傑森赫塞豪恩:對。 所以,這是完全正確的。 圖7是一個整數。 但是,如果我想反過來說 成浮點數, 我將不得不存儲 作為7.0,因為計算機 真是stupid--我們看到, 用PB和J example-- 它只會做完全 你告訴它。 所以,如果你寫的7,它 認為這是一個整數。 如果你寫7.0,即使我們 知道那些東西是相同的, 它把那像 浮點數。 所以,如果你沒有7.0分 3,或除以3.0, 它會說,好了,現在 我們正在處理的花車。 我會回報給你2.333333永遠。 但不是真的永遠,因為 因為我們也看到在講座中, 這些浮點數 並不完全精確。 所以,如果你想要的小數, 或小數的一部分, 那麼你必須use--其中之一 必須是一個浮點數 和計算機必須了解 這是一個浮點你 處理,而不是一個整數。 在該表上的任何問題 右手側,到目前為止? 或者你的左邊,你的 離開了,你的左手邊。 是啊。 揚聲器4:對。 對於就像一個普通的 整數,你會 寫 - 將你寫浮動? 傑森赫塞豪恩:是這樣。 好吧,如果你想創建 一個變量,它是一個浮動, 你需要說浮法 z等於什麼。 揚聲器4:確定。 傑森赫塞豪恩:但是,如果我想 做7除以3,並獲得了小數, 我會做浮動Z = 7.0 / 3.0;和 這會給我的浮點 號。 揚聲器4:確定。 傑森赫塞豪恩:如果我這樣做 像INT Z = 7/3, 這會給我一個整數, 因為這些都是整數。 這是否有意義? 揚聲器4:是的。 傑森赫塞豪恩:OK。 太好了。 有關該表的任何其他問題? 真的嗎? 我很興奮。 確定。 所以,你會使用一些其他的東西, 經常在條件或循環, 是這些類型的operators-- 這些類型的布爾表達式。 當我們了解到,==就是你 用它來檢查,如果兩件事情都是平等的。 所以在這裡我檢查如果x == Y,讓我們 再次假設x是7和y為3。 所以,如果我寫了7 == 3,什麼 將返回給我嗎? 這是真的還是假的? 聽眾:假。 傑森赫塞豪恩:OK。 我覺得每個人都可以得到這一個。 所以每個人,那能回來嗎? 聽眾:假。 傑森赫塞豪恩:假。 太好了。 7不等於3。 因此,7 == 3將返回false。 你有沒有等號,所以如果我 被查7!= 3,那能回來嗎? 聽眾:真。 傑森赫塞豪恩:真。 優秀的。 有人很言之鑿鑿 背部和理解。 然後,你必須小於運算符, 小於或等於操作員, 大於運算,更大 於或等於操作員。 因此,人們更全面的檢查。 如果我有7大 大於或等於3。 那能回來嗎? 聽眾:真。 傑森赫塞豪恩:真。 是。 這回房,背面 房間的,夢幻般的。 您可以將這些 表達式如果你喜歡,還有, 帶有邏輯AND這是 &&或邏輯OR這是|| ||。 所以現在你可以測試兩個 事情together--是不是可笑嗎? 這是為什麼笑? 所以,如果我想,我能說的是7 大於3與2小於4? 好吧,如果7大 比3,這是事實。 2小於4,這是事實。 所以,這整個事情將返回true。 如果我測試了7比3和 - 我只是挑選隨機數這裡 - 4小於2,好,這是假的。 所以真假作出虛假。 你可以去和你結合的 很多條件在一起,你想。 沒有任何人有任何問題, 評論,關注這麼遠嗎? 而且我看你拍照的一些 在屏幕上,這是我感激我。 但願,這不是Snapchat。 我們希望,這對你的筆記。 但所有這些都將 要在網上提供。 所以,你不必 利用這一圖像。 就像我提到的,應有盡有 會為你在網上提供。 確定。 我即將得到 台下,所以是否有人 不想多說什麼 在此之前,會發生什麼? 有問題嗎? [插入VOICES] 傑森赫塞豪恩:哦,停下來。 你們是太好。 確定。 我要掛牌。 讓我們去。 ANDI彭:我們要做的 現在是一個尷尬的MIC變化。 傑森赫塞豪恩:我 要採取這一關。 ANDI彭:欣賞支持,伙計們。 你能聽到我嗎? 好了嗎? 完善。 美麗。 讓我掖了研究。 確定。 所以,我要做到像一個巨大的 信息傾倒在你們現在。 而且沒有任何後顧之憂,如果你 不繼的每一個小線是什麼 我要告訴你。 正如傑森說,一切 完全聯機。 只要我們將嘗試引進 大家的概念覆蓋 在一些幻燈片。 所以只要跟著。 不,如果你不明白的憂慮 一切;然而,如果在任何點 你覺得失落,提高你的 另一方面,我們就會停止,無後​​顧之憂。 酷。 所以,我認為有些事情,大衛有 已經種提到講座 那種和賈森已經暗示 今天是一個圖書館。 因此在編程時,我們有 這些東西叫做庫。 其中,從本質上講,所有的 他們只是一組 的功能,即 本質上只是代碼的 已經被寫入由 別人說我們都可以 我們的程序中使用。 那麼,如何正常 圖書館的工作,對不對? 你進入圖書館的門。 你把所有這些 書籍可以拉出來 您可以訪問信息 在那些書。 同樣的事情在編程。 你有一個已經庫 寫了由其他人。 而這樣就可以了, 作為程序員或學生, 可以訪問該庫 通過包括hashtag的#include。 例如,在C我們 有三個C--最 常用的三C標準 libraries--輸入/輸出庫, 串庫, 和數學庫。 所以,在你的第一個 夫婦習題集, 那些將三個 那你主要使用。 因此,大衛已經 講座中解釋說, 標準I / O庫,或 標準輸入/輸出庫 正是這麼做的。 它可以讓你在你的代碼,輸入 從用戶和輸出任何 到屏幕上,基本上 它打印到屏幕上。 所以,任何時候你使用任何功能, 例如函數printf(),其 我們要投奔的下一張幻燈片, 一定要包括標準I / O 庫要不然你不會 能夠使用的printf()函數。 因為你作為程序員 從來沒有真正寫到功能, 你只是冒用 在你自己的代碼別人的代碼。 這是否有意義的人呢? 酷。 然後,我們基本上是沾到 該文件string.h庫和文件math.h 圖書館,.H只是表示庫, 其他圖書館,你最終會 是你的代碼中使用。 然而,為了 這個庫,我們也 這個分類 - 我們也有have-- 什麼是所謂的CS50庫, cs50.h,我們在那裡,為 你細讀創造 許多重要和有用的功能。 所以,你作為一個程序員 可以捎帶關閉 我們已經寫了這樣 這一功能的提供給你 供您使用。 我將涵蓋幾個 功能常用 但要知道,這些都是 所有googleable在線。 隨意,拉起CS50庫和 然後你把所有的功能出現。 是啊。 揚聲器5:所以,如果你不 使用該軟件 提供給我們, 類,這是否 意味著我們不得不下載並找到 這個頭文件自己,並告訴 它是計算機? ANDI彭:大的問題。 沒錯。 因此,這就像如果你不 在圖書館實際存在的, 有沒有辦法為你 其實去訪問它。 因此,同樣的事情 在C,你的編程 要確保你使用的是我們的 家電,因為圖書館已經 被納入進去。 然後當你的hashtag #包括,圖書館的存在。 是啊。 好問題。 每個人都好? 酷。 好的。 因此,我們會打, 本質上,是什麼 所述第一函數 我們作為程序員 將被我們的代碼中使用。 這就是所謂的printf()函數。 因此,printf()函數,因為我 已經在最後一張幻燈片說, 包括在標準I / O, 標準輸入/輸出庫。 所以一定要確保無論你using-- 哦,讓我搶激光pointer-- 每當你使用 在printf()函數, 你必須包括標準I / O 庫否則,當你編譯, 你會得到一個錯誤 因為電腦會像, 哦,我不知道在哪裡的printf()是, 你不告訴我在哪裡的printf() 是。 井的printf()被包括在 標準I / O,所以當你用printf() 確保有 上面一行代碼。 因此,例如,printf()的 這裡是一個函數。 它所做的就是打印出來的東西 內的括號給用戶。 會有人想藉此刺 在這行代碼的權利 這裡是要打印出來? 因此,應答是在屏幕上。 有人嗎? VERDI:底部。 ANDI彭:威爾第,你為什麼不走 直截了當地說出了整個語句? VERDI:你好,我的名字是 安迪,我20歲。 ANDI彭:啊,可愛。 因此,在這條線,我們要 打印出來,你好,我的名字叫安迪, 我今年20歲了,這 其實一個真實的陳述。 語法。 於是幾個語法問題的 你們要確保你知道的。 行情。 雙引號告訴 計算機裡面的一切 將要被打印出來。 裡面可以一切 只是究竟如何 您鍵入它,除了 一般在年底, 我們將要包括 一個hash--哦sorry--破折號ñ。 因此,一個破折號ñ。 有沒有人想以此來猜測 什麼,做我們的代碼? 是啊。 揚聲器6:把它放在一個新行。 ANDI鵬:沒錯。 因此,所有這樣做是 讓無論發生什麼事 在此之後,該語句之後, 要打印到一個新行。 所以,當你寫你的 代碼,您不要隨意有事情 上漲到年底 你不想要的。 這一切變得 整齊地打印一行 然後我們開始在下一行。 有誰還記得那是什麼 當我們編碼分號呢? 是啊。 揚聲器7:聲明。 ANDI彭:對不起? 揚聲器7:是否結束的聲明? ANDI彭:是的。 因此,在C或任何編程 語言中,分號 表示一編程線的末端。 因此,例如,在英語中,我們使用期限 說,哦,這是結束一個句子。 在編程中,同樣的事情,我們有一個 分號來表示一個行的末尾。 通常情況下,當你 開始編程, 你會發現你 忘了加分號 然後再嘗試運行 代碼和它不工作。 而你喜歡啊,我不知道 知道為什麼,這應該是工作。 有可能到頭來你可能忘了 分號或支架或東西 某個地方。 所以,這是重要的是要記住。 酷。 好吧,舉手,如何 很多人在這裡有過 採取AP計算機科學或 在Java的編程之前,永遠? 確定。 可愛。 這不會是適用 然後,但在Java,則 有一些所謂的System.out.println 中不存在C. 因此,在C,只要你 要在添加變量 到任何你想要的 打印出來,有 一個特定的語法,我們要使用。 這就是所謂的 placeholding--本質 我們的地方添加佔位符 整數或可變的 我們要打印。 所以當你們可以看到,我們已經包括 這裡一個新的庫頭文件。 在CS50庫。 而載有CS50庫中 是我們將使用一個通用功能 在我們的課程叫調用getInt()。 有誰要採取刺傷 什麼調用getInt()有可能會做。 聽眾:[聽不清] ANDI彭:對不起。 聽不見你。 麥迪,任何人。 曼蒂:哦,它會提示 你一個整數。 ANDI鵬:沒錯。 所以這個功能,另一個 功能是已經 寫了由別人 我們可以在請他發言。 所有這就是提示你,用戶, 任何你想要的代碼輸入 正在運行,並且它存儲whatever-- 在這種情況下,我們調用getInt() - 荷蘭國際集團, 所以這意味著我們 獲得的整數。 而且我們要存儲 在另一個整數 我們已經剛才所謂的年紀。 有意義給大家? 酷。 所以,現在我們已經存儲在該整數, 我們已經從用戶提示, 在這個變量中,我們 int類型被稱為時代的創造, 我們可以繼續的地方 在我們的printf()函數。 因此,語法通常是printf()的是 這無論在實際的物理 行,你希望包括整數, 你這樣做,符號在那裡, 百分比符號,與 您要的變量類型。 因此,在這種情況下,年齡是一個整數。 所以,你要包括 %我,因為它是一個整數。 然後經過你 聲明中,你會 做逗號和 變量的名稱。 所以在這裡,我們要打印 出,你好,我的名字叫安迪, 而我的空白歲。 Hashta--或sorry--, 年齡無論我輸入。 所以,如果我輸入 20我調用getInt()在這裡, 它會打印出完全一樣的東西。 但是,如果我想輸入的東西 否則,可能像40或45, 然後你會看到反映 因此在代碼中。 所以這是一個例子 的東西在其中 它打印出來,並期待 你彷彿這是同樣的事情, 但罩下方 計算機實際上有 非常不同的事情發生。 酷。 好的。 那麼,如果我們想要多個變量? 非常的方便。 同樣的事情。 我們也有一個新功能 這裡所謂的GetString() 也包括在CS50庫中, 所有它的作用是提示用戶 為一個字符串,它是 剛一組字符, 因此喜歡的句子或類似的名稱。 所以在這種情況下,我們將有兩個 佔位符%s的字符串和%I 為整數。 而我們將遵循 由兩個變量 我們希望包括,在訂單 它們出現在句子中。 因此,例如,我的名字是 空白,我想一個名字在那裡, 所以我打算先有名字。 再後來,我想 年齡,希望有年齡第二。 所以,如果我想輸入,你好, 我的名字叫安迪,我20歲。 如果我輸入岸堤和20, 同樣的事情將打印; 然而,現在我們已經有了兩個存儲 名稱變量以及INT。 是啊。 揚聲器8:它會 能夠運行,如果你切換 姓名和年齡在那結束了嗎? ANDI彭:是的。 這是非常好的問題。 所以長話短說,沒有。 由於名稱和age--什麼 變量的類型是什麼名字? 揚聲器8:字符串。 ANDI彭:什麼 變量的類型是年齡? 揚聲器8:整數。 ANDI彭:所以在這裡,我們有一個佔位符 字符串和整數,對不對? 所以,如果你要切換這些, 計算機不會知道。 這將檢查一個字符串, 如果你試圖給它一個int, 它會像 等待我很困惑,你 告訴我,我應該是 配發的內存類型為int。 而當就在這裡, 它要求整 你給它一個名稱 和一個字符串代替, 它也將是非常混亂的,它 將不完全運行,你需要的方式。 所以在這裡,命名和語法 用於運行代碼非常重要的。 每個人都好? 是啊。 麥迪。 曼蒂:在這裡,我知道我們已經看了 在類的例子,他們會問在哪裡 什麼是你的年齡,你叫什麼名字。 在這裡,那又是它doesn't-- 如果我們運行這段代碼, 它不會要求是什麼? 但是,你只是輸入兩個數字 然後它會運行這樣呢? ANDI彭:是的,沒錯。 所以,如果你想為它 顯示器,請輸入您的年齡, 你可以再補充一個printf()函數 上面寫著,請輸入您的年齡, 它上面。 這是一個很好的問題。 是啊。 揚聲器9:那麼,就已經是 包括在調用getInt()[聽不清]。 ANDI彭:不,它實際上不是。 因此,所有這樣做僅僅是 提示空屏幕 到用戶輸入的東西。 如果你想它,如果你想讓它打印 出來的東西,告訴用戶喜歡, 請給我你的年齡,那麼你 必須printf()的那個自己。 因為每個人都使用這個 功能不同的東西, 你可能會被存儲時代, 你可以存儲地址, 你可能會被儲存的電話號碼。 所以這真的取決於 你的球員的個人用途 你希望它是什麼的話。 是啊。 揚聲器10:所以,我只想澄清,在那裡 做你輸入的名稱和年齡 因此,它顯示了在地方的%s? ANDI彭:作為用戶? 揚聲器10:是的,像我該怎麼辦 使得它 - 我在哪裡把安迪, 和我在哪裡把20? ANDI彭:是的。 所以,如果你要 實際運行這段代碼, 我沒有實際運行 代碼,這僅僅是現在在這裡。 如果我要運行的代碼,我會 編譯代碼,使文件, 運行代碼,然後將有 只是兩個空格,我將其輸入。 是啊。 當你玩你們會看到 周圍與自己的代碼。 所有我們要向右移動 入的下一個章節什麼 我們將涵蓋當今。 我們打算去了什麼 條件語句是。 所以,如果你們還記得 從講座回憶, 條件語句, 所有卻已是一家集 的說明在計算機中 其中,如果某個條件為真, 你執行的代碼 內的這一條件。 因此,在Scratch--本質 從今天的大主題 是,你們已經全部 看到一切背後的邏輯 我們正在覆蓋。 而我們正在做的是 翻譯的東西 這是非常直觀的 從無到有,硬編碼它 到語法,我們將使用 對於這是C類 所以從邏輯上講,這一切都堵得 是一段代碼就在那裡。 是啊。 確定。 我們也進入一個if ... else 聲明這僅僅是一個額外的層 複雜的if語句 其中,計算機需要看看這個 並認為,如果這種情況是真實的,做的 任何的這兩個括號內, else--樣的等等之類的默認值,如果 它不符合condition--做到這一點。 這就像在一個岔路口。 如果它的外面下雨了,我把 在一個防雨外套,還有什麼別的 別的我不把一個雨衣。 這是否邏輯意義的人呢? 酷。 好的。 因此,像硬例子 這一點,我們將在C見 是,如果我想創建一個 變量調用功課小時。 如果作業時間少 超過五個,我說生命是偉大的。 這是美妙。 不過,說的鬥爭是real-- 這是我們這一切星期一 下午起來學山都 可能做正確的now-- 聽眾:[笑氣] ANDI彭:他們的方法,我們 會,向你表示感謝。 我們要硬編碼的方式 這在C是if--讓我們假設 我們已經有類型的變量 int,名為功課小時就在這裡。 如果作業小時小於 5 printf()的,生命是偉大的。 記住保持/ N,因為 你想後,新的生產線。 否則打印的鬥爭是真實的。 大家是否明白如何 我從這個塊轉換 到這個代碼塊? 酷。 好的。 所以,現在我們要看看 多重如果語句完全。 因此,讓我們假設 該計劃的目的 為我們提示了一個檔次的用戶。 我們提示符下使用調用getInt()的 級,並且它們的輸入值, 你想顯示 他們得到了什麼樣的檔次。 所以,如果我來設計一個程序,我 在我們所有的目光意味著通常情況下, 90-100是A,80-90是 乙,等等等等。 什麼是不對的 一段代碼,它不是 做我想做的事情。 是啊。 揚聲器11:他們有下限, 但他們沒有上限。 ANDI鵬:沒錯。 大家有沒有聽到她說什麼? 還有的將是上 限制,但沒有下限。 對不起,反過來, 下限,沒有上限。 所以,你想 採取刺傷說 什麼將被印刷在該 屏幕如果我要運行該代碼。 揚聲器11:一個錯誤? ANDI彭:一個錯誤? 偉大的猜測,並不完全正確。 沒有任何人有另一種刺? 是啊,阿龍。 AARON:如果你把 東西大於90, 它會顯示所有你得到的成績。 它會告訴你得了A, 你有一個B,你得到了一個C. ANDI彭:是的。 這是完全正確的。 所以,這會是美好的。 然而,它們是相互 獨家的,我想。 如果我要運行這段代碼。 然後讓我們只說,我 輸入的95級。 所以95現在存儲在 整型所謂的檔次。 所以C是一門語言 運行了從上到下, 所以它要永遠 運行到底部。 所以它要來這裡,看是否 級是大於或等於90, printf()函數,你得到了一個A.太好了,我 有一個95,這是大於90。 這將打印, 我得到一個答:這是怎麼回事 看看這個,如果,這是怎麼回事 說,還有95也大於80, 這將打印也得到了GOT A,B感嘆號,等等等等 等等。 因此,當我們都可以看到, 這是一種常見的錯誤 當我們認為可能會出現 編寫代碼看出來的。 任何人,在任何問題 為什麼這是怎麼回事? 太好了。 確定。 那麼,我們如何解決這個問題,顯然是 下一個邏輯問題。 好了,我們有這些美麗 事情如果叫別人,如果別人 如果else語句。 所以你可以看到,如果你想 改變這種狀況的問題, 你想使每個 條件相互排斥的, 您將添加一個else ... if語句。 而這些course--的認為他們是 梯子,還是喜歡上了ladder--梯級 這些可以添加多達你 希望盡可能多的條件,只要你想。 所以在這裡,如果我輸入級為95。 如果等級大於95, printf()的,我得到了一個A.大。 這將看到一個else ...如果 而且它會知道,哦,不, 我已經執行的第一人。 我知道 - 或者第一if--我知道, 我沒有看任何這些 因為其中的一個 已是事實。 因此,它會從上往下運行。 一旦第一個是真實的,那麼 它會跳過所有的休息 的東西...... IFS。 這是否有意義? 因此,在這種方式你 不同層次的檢查的 並盡快其中之一為假,則 其餘的都還可以,他們甚至不會檢查。 酷。 好的。 因此,這是一個不同的例子 排序條件語句 我們看到較少,但 我們將看到和使用它們。 而且他們往往更 有效的某些情況。 因此,我們有什麼所謂 switch語句。 所以在我們討論什麼是一個else 語句中,if ... else語句。 在這裡,我們有什麼 所謂的switch語句。 因此,當我們使用開關 語句是關鍵? 因此,在一個switch語句,你 通常情況下,通常情況下,其實你 只能輸入整數您 你正在檢查的變量。 所以,如果我想查查看 如果某一number--例如 一個檔次,如果我有一個90。 我想它,看看如果這是一個A, B或C.我能有這裡的情況。 然而,這起案件 是另一個恆定。 所以在這個意義上說, 可以切換語句只 檢查兩個數相等。 它不檢查為別的。 所以,這件事情是非常 小心,當你使用這個的。 所以在這裡,如果我想查查看 如果我的90級等於90或80 或70或60,然後打印 相應的等級, 我能寫的 在switch語句。 因此,它會來到這裡,檢查 這個整數等於這個常數? 如果不是,它會跳過。 是不是等於常數 2,等等,等等, 直到你打的默認情況下, 如果他們都不是相等的。 只要其中之一 被設定為相等的, 它會做到這一點 一行代碼和休息。 這意味著它會打的 運行,破裂,只是完全跳過 到代碼的底部。 因此,在這個意義上說的那種功能 就像if的else if else if語句可。 所以這裡有一個具體的 例如,對於你們。 因此,讓我們假設,我想 創建一個名為成立的變量。 我想提示用戶輸入 這一年,他們的學校正式成立。 所以,我可以在這裡創建一個switch語句。 而讓我們只說,我輸入1636。 這裡這段代碼是要見​​開關 成立時間等於1636。 這將看情況 1636年,哦,這些都是平等的, 的printf()你不應該 在那所學校北上? 因為我們假設他們不這樣做 到這裡,如果他們去哈佛, 突破並跳到結束。 如果我輸入1701年,這 我想大家都會投入, 它會跳過此情況下,來 到案例二是1701年, 和打印歡迎來到耶魯大學! 打破,跳到結束。 否則你可能正在服用此課程 在網上,其中case--真棒歡迎 以Yale--它會進入 默認打印,您好上網! 而打破。 是啊。 SPEAKER 12:您可以使用其他 默認情況下,而不是在那裡? ANDI彭:沒有,因為 這樣,這個整體功能 開關建成,語法, 需要使用的情況下,默認的情況下。 這就像如果別人當此 之一,它的情況下,默認的情況下。是啊。 SPEAKER 13:你也許已經說了這一點, 但你有兩個以上的案件? ANDI彭:是的,你可以 有,只要你想盡可能多的情況下。 把它看成只是想 無限增加的。 揚聲器14:如果你 切換1701 1636, 它並沒有真正做 有差別嗎? 它只是要檢查它。 ANDI彭:這是一個 非常好的問題。 我們會觸及 這以後,只是 知道這是開關 聲明infinitely--它的 超過它,如果更高效 否則,如果因為它的運作 使用不同類型的功能 可以讓你,基本上,只是 直接跳轉至 如果您需要所在。 是啊。 揚聲器14:酷。 謝謝。 ANDI彭:是 揚聲器14:你不能 做情況下,像大於。 ANDI彭:沒有。 所以,這是什麼限制了對 switch語句是,你有 有常數只,只有整數。 是啊。 確定。 因此,這是什麼,你 球員都會遇到的次數減少, 但我只是想 在情況介紹吧。 我們這裡有什麼 被稱為三元運算符。 凡從本質上講,它就像一個 if語句編譯成一條線。 在這裡,我會去到下一行中, 下一個頁面,因為它更容易看到的。 所以,我們都看到了這一點嗎? 這是很容易理解。 如果我想創建一個名為變量 名為字符串s,如果一定數目的 我給它小於100,我 要分配較低的字符串, 否則我要分配高。 這在這裡是做同樣的事情 這八行代碼在做什麼。 所以在這裡我想創建 一個變量字符串。 這是我的條件 檢查,如果一個數小於100, 那麼您分配的低價值, 其他指定的高值。 這些幻燈片將在網上,無後顧之憂 如果你們沒有得到這個下來。 這僅僅是一個簡單的方法,更 編寫代碼的有效方式。 確定。 所以,現在我們要 輸入的內容,對於大多數人來說 就像一個非常,非常混亂 件事想在第一。 環路部分。 所以我們今天要談 大約有三種類型的循環。 我們將開始一段時間 循環,再來談一個do while循環, 然後說說for循環。 所以基本上,對於更 視覺學習者在那裡, 我們本質上是一個圖形化 描寫一個什麼樣的while循環一樣。 因此,在編程時,你將開始 並進入循環在某一點。 你檢查的條件。 如果條件為真, 你內心執行的代碼。 而你再回頭來您檢查。 如果它仍然是真的,你繼續運行 一圈又一圈,這個代碼在一個循環。 然而,第二即 條件為假, 你要打破和結束循環。 這在本質上是 語法你要使用。 而一定條件是 真正做到這一點,如果這不是真的, 你要跳到結束 和前進與您的程序。 確定。 有沒有人有一個例子 什麼可能會潛在地發生 如果我嘗試運行這段代碼? 順便說一句,SAJ--這是Scaz,安迪, Jason--我們將簽署我們的郵件, 愛,SAJ。 這就是我們。 確定。 任何人有一個例子,還是有 什麼這將打印的想法? 樣的一個很難回答的問題。 所以在這裡,記住狀況 我們正在檢查的同時,真實的。 因此,雖然這是真的,這是 付印,我愛SAJ! 有沒有在我們最好的任意點 更改為任何其他方式? 沒有,對不對? 所以在這裡,我們有 遇到什麼可能 將要竊聽了很多 你的程序,無限循環。 你會發現,如果你 運行這段代碼, 它只是要保持 印刷,我愛SAJ! 雖然我們讚賞的支持, 我們不希望你的電腦 崩潰是因為你 保持印刷我愛SAJ! 所以,請,請, 避免無限循環 因為它永遠不會 以評估為假 和你永遠也不會 離開循環。 而你要 被吸入天長地久。 酷。 確定。 第二類型的循環 我們將談論今天 是while循環,做while循環的做的。 它之所以被稱為do while循環 因為你有做,一段時間。 因此,這是非常類似,而 循環,但有一點點不同。 在這裡,你打算怎麼辦 無論公司的這裡面 而在一定條件下是真的。 所以,如果我是C和我的電腦 順著這一段代碼, 我看看頂部。 我去到C,我說的做這件事情。 然後我檢查,而這 是真的,我要重複它。 不過,雖然這是假的, 然後我往前走 我從來沒有回到那個循環一次。 任何人都可以花刺 有什麼區別 這個循環和一個我們之間 只是看著是實際。 是啊。 SPEAKER 15:條件 來代替前後? ANDI鵬:沒錯。 所以她說的條件 來後,而不是之前。 最終,所不同的 這和while循環之間 是,你只是打算怎麼辦 任何的這裡面不管 無論您的病情 真的,然後檢查條件。 所以在這種情況下,你 always--以這種方式, 你總是要確保 無論是內至少運行 檢查,看看前一次 如果你想讓它再次運行。 這裡有一個例子 當我們會使用它。 因此,舉例來說,如果我想有 int類型的變量命名的時代, 我想提示 他們的年齡的用戶, 我會做的printf() 什麼是您的年齡? 年齡=調用getInt(),它 是提示用戶。 而有些人會真的很煩人。 而且你不想在錯誤的 有人程序輸入一樣, 哦,我是負4歲或什麼的。 在這種情況下,如果它們 做到這一點,這個計算結果 為true,這意味著我要去 必須保持回去和這樣做。 因此,這是要保持 再次提示用戶 給你像一個真正的 年齡號和它的 要保持回去和重做 它,直到他們給你一個真實年齡 大於一,或不為零。 因此暗示,暗示。 這將是非常,非常有用 為你的PSET問題之一。 是啊。 揚聲器16:哎呀,對不起。 ANDI彭:是的。 揚聲器16:有沒有,不 是一個混蛋,但 - ANDI彭:不用擔心。 揚聲器16:--are有 這裡不同的規則, 還是你只是忘記 把報價? ANDI彭:哦,是的。 對不起,這是完全是我不好。 這是肯定 應該是一個報價。 良好的漁獲。 那將無法運行。 確定。 因此,循環的最後一個類型,我們將討論 約,最終同類產品中最 複雜的for循環。 如果你不知道不要擔心 知道這意味著什麼。 這是相當混亂在第一。 我們一起去了一個例子。 所有這一切發生在一個for循環 是,你有三個語句 你要去包含。 因此,對於某一件事情,你 要初始化變量。 你要的條件添加到 此循環將繼續運行。 然後,在的結尾 循環,你要更新它。 您可以更新變量 要跟踪。 因此,我們通常使用 for循環的時候,我們 要運行一個循環 一定量的時間 我們已經知道,哦,我想 這個循環就像10次執行, 那麼你do--我過去 下頁的一個例子。 所以在這裡,例如,在刮,如果 想要的東西,重複10次, 你不得不說的是, 重複10次我愛SAJ! 這是一種更可接受 展會對我們的支持 而不是無限循環。 在這裡,你會如何 過渡到C和寫 這是int--我要創建或 聲明一個int類型的變量命名的我。 我要初始化 為0,所以我= 0; 這將是我的病情。 所以i小於10。 然後在end-- 你是最後一個發言 將不得不是的更新 恰好變量i什麼 在您的for循環的結束。 因此,它是一種令人困惑的,因為 這條線的不同部分 都發生在不同的 類型的循環。 但我去了一個 那偽代碼示例 也許解釋 只是好一點。 所以在這裡。 這就是我們剛才看到的循環。 基本上偽代碼,是什麼 在這個程序中, 首先是我創建 我,初始化為0。 我檢查,看看我是 小於10,在這種情況 第一次是 因為0小於10。 因此,環路將運行。 然後我會打印這一行。 然後在該行的末尾,右 在這裡,我打算做增量我,我++, 所有的手段是 由一個遞增它。 所以,我現在是1。 因為它曾經是0,如果我 增加它的,它現在是1。 然後,我要回去 到循環的開始 我檢查車況。 是條件還是真的嗎? 是的,1仍低於10。 因此,這將再次打印此, 去,然後加我,並檢查 條件 不斷,不斷, 直到你最終得到 到這種地步,我是10。 你要打印10次 然後我會等於10。 你要檢查的條件。 比10小10? 不,那是假的。 因此,該環是不會 運行,這將打破, 而你要 繼續與您的代碼。 所以當你們看到的,這 是一個真正偉大的例子 一個循環,你可以設定在 運行一段指定的時間量。 每個人都清楚了嗎? 是啊。 揚聲器17:約增量如何 指數,它是不同的編碼? ANDI彭:你can--我們會去 在這個下一張幻燈片。 好問題。 是anyone--之前,我謹 on--任何人都糊塗了, 因為這是一個非常艱難的概念。 不用擔心,如果you're--確定。 酷。 好的。 只是一般的幻燈片。 這個while循環做 循環完全一樣的事情了。 這只是寫的不同。 你們可以仔細閱讀幻燈片 在稍後您方便。 但是,僅僅知道有多重 寫同樣的事情的方法 以發生在不同的循環。 確定。 所以,現在我們的問題得到了什麼 如果我們有一個循環內的循環。 我們正在轉化為現實 盜夢式的東西在這裡。 當你想要做的事情多 其他的事情裡面倍 該做的事情多次,你 想要什麼叫做嵌套循環。 對於那些你們誰第一個看到這一點, 得到非常困惑,所有我們在這裡做 是有循環,其中一個 我們有行的變量。 但是它裡面,我們也有另一種 用於可變稱為柱的循環。 我強烈建議大家 誰是困惑,首先保持 track--畫了這一點,畫了這一點。 不要試圖正當理由 通過它,畫出來。 在你的頭,在這片 紙,或什麼的,寫一行, 跟踪哪些行是公平的。 寫專欄,跟踪 什麼列等於。 並跟踪的是什麼 打印出與每一個迭代。 這個循環的每次迭代,每 那個大循環迭代, 只是一味地按照邏輯。 我向你保證, 你一定會喜歡你所看到的, 因為它也很 適用於您的問題集。 酷。 好的。 所以,最重要的事情 那你們可能都 想著現在, 是你的習題集1秒, 這是由於週四/週五。 在您的water.c程序, 暗示你將會有 以提示的用戶輸入。 在您mario.c程序 你將有 使用嵌套的for循環,這是 一個for循環的for循環裡面, 打印金字塔塊,基本上 像什麼馬里奧跳通過。 然後在你的greedy--或者 找零,如果有的話你們 曾經聽說過that-- 你將必須非常 細心的第一個浮點值。 記住浮動小數和 整數是不一樣的東西。 跟踪哪個是哪個。 而你要使用 條件語句,也是如此。 好了,最後一件事。 我有留下一兩分鐘。 樣式。 因此,這是一些不 實際上實現的效率, 或代碼的實際運行。 然而,它影響我們的 您的平地機,為你的讀者。 它會影響你自己,如果你 試圖找到一個問題。 它會影響您的代碼的可讀性。 所以風格,當你試圖像 如果你的風格的一篇文章為英語, 沒有段落, 你擁有了一切樣 的混在一起在同一行,它 使得任何人真的很難 讀你的文章,即使 你的觀點在邏輯上是健全的。 同樣的事情在編程。 你可以有可怕的晦澀 碼Scaz將覆蓋, 和它仍然可以運行和功能。 但對我們來說,因為你的可愛助教,誰都會 可以閱讀和評估您的pset時, 這不是很好。 所以,請為求 我們和你自己的, 當你試圖修復 在你的代碼中的問題, 和你想 看你自己的代碼,使 一定要遵循一些約定 我們打算走了過來。 所以第一。 給你的變量有意義的名稱。 如果你想存儲的整數 所謂的年齡,請其命名為年齡。 不要將其命名高度。 當你想 存儲時代的高度, 它使一切 很迷惑我們。 我們不喜歡被人混淆。 你不喜歡被人混淆。 沒有人喜歡被混淆。 如果你想創造的東西, 它命名為一些有意義的事情。 然而,在用於循環,單 字符變量通常是罰款。 而在for循環,如果你只想要我, 與J,K,隨意僅僅做到這一點。 一致的初始化。 那麼,是什麼意思呢? 這意味著在技術上,理論上, 你可以發起並創建 在同一行上的多個變量。 因此,例如,我可以創建 稱為scaz_age的整數, 和整數稱為andi_age = 20, 和整數稱為jason_age 在同一行上。 而且我也可以指定只有一個 他們,而不是其他人值。 我們請你,請不要那樣做。 因為在這裡你已經基本上建立 三個變量,但只有其中的 實際上有一個值。 然後,當我們 試圖讀取你的代碼, 或者如果你試圖修復 在你的代碼中的問題, 這是非常令人困惑遵循。 因此,只要你的可讀性,對於 我們的可讀性,不這樣做。 一致的大括號。 有些人喜歡把自己的 大括號在不同的地方。 這其實並不重要。 只要確保你在一致的 自己的代碼,你喜歡把他們。 一致的間距。 如果你把一個空間後, for循環,始終做到這一點。 那種就像不要在做 有些地方,不要在別人去做。 只要是一致的。 其次,如果有人想 細讀CS50風格指南, 我們正式有一番風情指南, 告訴你這些公約, 加上更多。 這是在網上。 這就像cs50.net/style 或者類似的東西。 你可以google一下。 一致性是關鍵。 所以不用擔心什麼 其他人都在做, 只要確保你 在你自己的代碼相一致。 任何人有關於什麼問題嗎? 是啊。 揚聲器18:所以正確的事 做初始化就是 讓他們都在一個單獨的 行,是你在說什麼? ANDI彭:所以我很少有這種情況發生。 但是,如果你想,如果你想 要像節約空間,在你的代碼, 或什麼的,你可以做到這一點。 我們要求你只是不初始化 有一件事,而不是其他人。 所以,如果你想要做INT scaz_age,INT andi_age,INT jason_age,這很好。 只是不初始化一個 而不是其他的一切。 有問題嗎? 好的。 我要通過關閉 麥克風,激光指示器, 和著指揮棒Scaz在這一點上。 這是尷尬的。 在這裡,它是。 BRIAN SCASSELLATI:謝謝。 是如何形成的聲音? 聲音是好的? 。 優秀的。 確定。 所以,大家好。 我要去嘗試工作,通過 一個實際的例子和你在一起。 我們要使用CS50的 開發環境,什麼所謂 集成開發環境。 你已經看到了這個 證明在講座。 而在習題集1,你 將有機會 使用它,和玩 它,並習慣於它, 因為我們要使用它 通過本學期的休息。 所以在這個IDE,你有什麼期待 就像一個非常傳統的文件瀏覽器 過在一個面上。 你已經有了一個部分了 頂你要去哪裡 看看你的源代碼,你 CFILE,你寫的代碼。 上下底,你會 有一個終端窗口 你會使用到 這兩個編譯程序 並運行或執行程序。 確定。 因此,只要給我們一點點 的基礎上,在終端窗口中, 你會是 使用一組命令 這是整個標準命令 大多數Unix或Linux系統。 所以,如果你曾經使用過 任何形式的Unix,Ubuntu的的, 或任何其他調味劑, 這些將要看起來很熟悉。 如果你還沒有,請不要擔心。 沒有什麼複雜的他們。 他們只是用不同的 語法,不同的命名 約定比你以前見過。 因此,要列出文件 一個特定的目錄中, 他們將使用 命令稱為LS或列表。 如果你想看到的一切 與所有的細節, 你會使用命令 行參數使用​​ls -l命令。 這會告訴你一切 更詳細地,包括 該權限的文件。 要更改目錄, 你會使用cd命令。 而你就可以更改目錄 既要到你的主目錄。 這只是CD全部由 本身,光盤有兩個 點會返回上一層 級別到以前的目錄。 而且你還可以cd到一個 子目錄通過鍵入CD 和該子目錄的名稱。 您還可以創建新的目錄。 而且我們要走路 通過這次在短短的一分鐘。 但是,僅僅把 一切都在屏幕上。 所以,你可以看到他們。 您也將有能力 直接操作文件 在命令行。 您將能夠複製他們, 移動它們,或者將它們刪除, 也就是說,有效地將其刪除。 該CS50 IDE給你完整的 命令行參數的力量。 這意味著你也可以 這樣做非常危險的事情。 確定。 例如,你可以 除去,或者說是刪除, 不求回報的文件 進行確認。 你甚至可以刪除 recursively--那 破折號 - [R flag--整個 子目錄及其所有內容。 確定。 他們列在紅色的,因為你 每次應考慮“危險” 你看到的那些東西。 確定。 好的。 現在,終於,這個事情是 將是真正有價值的給你, 是有幾個不錯的招數 要知道,你正在瀏覽 通過這個終端窗口。 首先,你可以清除屏幕上 任何時候只需鍵入明確。 而且你會看到 我這樣經常。 你也可以顯示 一個文件的文本 通過鍵入以上,然後文件名。 然後,您就可以滾動回來, 提出與剛剛與空格鍵 和箭頭鍵。 如果你有,因為我們今天的演講做了, 該連續運行的程序 在無限循環,你 可以停止該程序 通過鍵入控制執行, 即按住Ctrl-C組合。 而且你可能必須做 這種多次。 計算機得到遠遠領先於你。 你有時需要 給它一個嘗試幾次 之前它實際上會通過。 您還可以 通過命令排序 您剛剛輸入使用向上鍵, 箭頭鍵,然後向下箭頭鍵。 什麼是最有用的是,而不是 打字了長文件名, 您就可以使用Tab鍵 自動完成幾條指令。 現在,我們將演示 所有這些,在短短一秒鐘。 所以,如果你不記得 他們,不要擔心。 這些事情,你會 拿起和使用,因為我們走。 確定。 因此,在C--不像在Scratch-- C是編譯型語言。 這意味著,我們將採取一個源 file--這是你寫的文字, 你寫的命令 的printf()語句,環, 一切else--,我們要 採取該文件,並把它關閉 到一個程序調用編譯器。 那麼編譯器將 你寫的文字 並把它翻譯成 二進制指令 您的電腦 實際上是使用。 這就是所謂的對象 或可執行文件。 如果你看一下這個文件,你會 看到你寫的代碼。 如果你看一下這個文件,你會 看個字符的隨機序列 使沒有任何意義。 這是因為這是二進制。 這並不意味著你必須閱讀。 但是,任何時候你想 運行的東西,你要什麼 在運行是這個目標文件。 因此,當我們與這些合作 文件,我們會用C編寫的文​​件 然後,我們將編譯它,使用 命令類似於make將調用 編譯器鐺的C語言。 並且,將產生一個對象 文件,就像一個出來,或在此情況下, 這個名字,我的文件,我已經把研究。 好的。 因此,讓我們真正嘗試這一點。 所以,我想出了一個例子 是我想嘗試。 和的事情之一 讓我著迷的動畫。 所以我們要盡量做到 動畫的一點點 僅使用ASCII字符。 人物我們現在可以打印出輕鬆。 因此,這裡是我的最好的嘗試 創造適合你 兔子的動畫 通過高草運行。 他在那裡。 確定。 所以,他沒有跑呢,但他 在高高的草叢站在那裡。 現在,如果我是一個漫畫家, 在老同學 版本的動畫,我 會做的是我將產生 這個兔子在草地上的圖片。 然後,我會產生 另一個picture-- 另外他們所謂cell--了 有兔子只是稍微移動。 然後第三個是有 兔子感動得遠一點。 我會產生一個完整的 序列這些細胞。 一些地方的兔子已經結束 到左側。 然後緩緩移動,人們 由一個向中間。 然後從中間 到正確的。 如果我當時真的 幸運的話,我可以把它在一起 我可以動畫。 還有就是我的兔子 通草運行。 這是我的偉大的PowerPoint 欺騙的一天。 確定。 因此,這是因為它得到很好的。 確定。 所以,在這裡,人們有更多的時間,這裡是我們的 兔子在草地上運行。 SPEAKER 19:再次。 BRIAN SCASSELLATI:一 更多的時間,所有的權利。 這是你的兔子。 確定。 所以,我們今天有什麼 做的是我們要去 嘗試的過程自動化 的生產這些細胞。 我們不會完全得到以點 能夠把它們放在一起。 但是,我們要盡量自動化 產生該序列的過程。 這是很多東西, 今日動畫等。 也就是說,你沒有做的事情不一定 通過繪製一切手工製作。 我們用電腦自動化 零件的過程。 確定。 因此,讓我切換 現在我們CS50 IDE。 和我已經us--,讓創建 我放大這裡一點bit--我已經 為我們創造了一個出發點。 我們要求你坐每次 來寫一段代碼, 我們真正要你做 是我們要求解決的一個問題。 而這樣,你應該 想想這樣做 是通過啟動與一些 該解決方案的簡單零件。 然後從該部分打造出來的。 這就是我們今天要做的。 因此,而不是試圖全部一次 寫整個一串代碼這是 要生產這些 10動畫細胞, 我們要開始,而不是 與該作品一件。 然後,我們將構建一個 周圍的那一點點 多一點,多一點。 現在談談好事 解決問題這樣 是,它可以讓你開始 總是與你知道的東西 作品和介紹一款漸變。 這是一個偉大的方式 學習如何編寫, 因為每次你犯了一個 變化,你看到什麼影響了。 確定。 因此,這裡是我們的出發點。 確定。 所以在我的文件的開頭, 我已經哈希包含(#include)stdio.h中。 這讓我可以得到 printf()函數工作。 我然後我有我的主要功能。 這看起來還是有點 神秘的或不明顯的一些你。 這是確定的。 所有這說的是, 主要功能需要 沒有arguments--無效的手段 沒有在C.它 按照慣例,返回一個整數。 主總是返回一個整數, 通常一個代碼說事 順利或不順利。 確定。 但主要必須具有該 現在構成了我們。 我再放入三行代碼。 而且隨著每行 代碼,我已經把評論。 現在,人們的事情, 我們將堅持這樣做, 它是如此重要 編程實踐, 是要始終註釋你的代碼。 總是在記 英文註釋的東西 你認為 代碼是應該做的。 這樣,以後當你回來的 它,你可以看看它,你可以說, 哦,我記得我是什麼 嘗試做這個。 或者當TA坐下來與你 盡量幫你在辦公時間, 他們可以看看這個去,我 看看你想要做什麼, 而是,這是 到底發生了什麼。 確定。 所以,我有三個部分,以我的代碼, 我將首先打印 一些點在開始。 然後我會打印出我的 非常看中的兔子。 然後點在最後的一些位。 而這三種打印報表應 很熟悉,你在這一點上。 所有這一切我做的 他們每個人是我 打印出的字符序列。 有沒有涉及到的變量。 一切都只是持平。 確定。 所以,如果我現在下去給我terminal-- 讓我們來看看,如果我能得到這個回out-- 而我要再次鍵入明確。 揚聲器20:我們用 雙斜線評論? BRIAN SCASSELLATI:可以 使用double--肯定。 有多種方式來 離開C.一個評論 的方式是使用雙斜線。 另一種方法是使用一個斜杠和一個星 然後關閉與一個明星,一個斜線。 好的。 首先,我要 從這裡開始瀏覽周圍。 所以,如果我去我的主目錄, 我已經改變了目錄存在, 我要去看看,看看有什麼 在該目錄中,LS,列出。 我要看到我 有兩個子目錄。 讓我們使這個有點大 在這裡,以便我們都可以看到它。 我可以看到我 有兩個子目錄。 我會改變目錄 進入工作區。 而我要的類型只會出 它的一部分,然後只需按一下Tab鍵。 而且它會完成剩下的我。 花式。 我會看看,看看工作區。 而現在,我的工作 在超部分 我們是在教現在。 所以,我會去到該目錄中。 最後,再看看吧。 而且我有這個文件bunny.c。 好所以讓我清楚的一次。 而且我要再次聲明,我now-- 仍然留在該目錄 並且它告訴我,我在 該超部分目錄。 我要繼續前進, 讓我的程序的兔子。 而該命令,使兔子, 雖然聽起來有點古怪, 還調用鐺編譯器。 而且它產生的 我的輸出, 可執行funny--的 可執行文件被稱為兔子。 確定。 我可以再和這聽起來 更糟的是,執行兔子。 確定。 讓我們看看會發生什麼。 確定。 這是一點點 我所期待的。 我有我的兔子圖片在那裡, 樣的,但我希望它所有的本身。 我錯過了什麼? 揚聲器21:斜線L或斜線ñ。 BRIAN SCASSELLATI:斬ñ。 確定。 因此,讓我們回到這裡。 我會離開的。 我會重新回到這一個。 讓我們來看看現在 從我的主要功能在這裡。 所以,我應該怎麼辦? 我想結束就行了。 所以,我加入了註釋。 我會在一個printf()。 而且我有什麼投入? / N。 確定。 我有什麼用結束了嗎? 分號。 好的。 現在的人真的 重要的事情是要確保 每當你做出改變 在你的代碼,你保存它。 如果您還沒有保存你的代碼,你 要注意到一個小星星在那裡。 這星說你 已經沒救了這些代碼。 如果我現在編譯它,它不是 要反映的任何更改, 因為編譯器查看文件 這是磁盤,而不是只是文件上 在編輯器中打開。 好的。 因此,讓我們將它保存,然後我們會去 對上到這裡,回來了。 下來到我的終端。 而讓我們再次清除空間。 我們可以繼續前進,多了一個 時間讓我們的兔子計劃。 並執行兔子。 這也不起作用。 錯誤的斜線。 所以,如果你看一下我有,我把 / N在那裡,但我有錯的斜線。 一切你的電腦 做的是非常明確的。 OK? 標點符號的一個小錯誤, 突然間,你沒有得到你想要的。 好的。 因此,讓我們放大出來了。 我們會回去。 那麼做出非常快修。 我們會把正確的斜線研究。 我們會保存。 我們會放大。 出於某種原因,這不是 快樂,但讓我們繼續 我們將回到終端在這裡。 它清除掉。 我們將進行放大。 而一個更多的時間,我們會讓兔子。 而現在果然,它的工作原理。 萬歲。 確定。 因此,讓我們努力使今天 多了幾分一般。 讓我們來看看,而不僅僅是 打印一個特定的框架, 讓我們來看看,如果我們可以讓這個 這樣我們就可以得到所有10 這些動畫幀 我們希望有。 如此反复,讓我們 此一步驟的時間。 讓我們先來概括它,不是 讓我做的所有的幀, 但讓​​我做任何一 框架,我可能想。 所以,有什麼區別 在幀之間? 是兔子一樣嗎? 聽眾:是的。 BRIAN SCASSELLATI:是的。 有什麼區別? 聽眾:位置。 BRIAN SCASSELLATI:它的位置,對不對? 以及如何控制它的位置? 多少點我 將在開始 而且我有多少點 將在末端。 所以,我有五處 開始和五個在末端。 讓我們來替換五連一個for循環。 確定。 而且我要創建一個用於 環現在會說, 我要打印一些數 的圓點在開始。 我將使用一個變量。 比方說,怎麼樣我作為 計數器在我的循環。 而我要聲明它往上頂。 然後在for循環 我需要做三件事情。 我需要做的第一件事情 是我需要初始化我。 我應該怎麼初始化 它開始呢? 0。 確定。 然後,我需要說的,有什麼 終止條件? 什麼時候應該停下來? 那麼多少個點你 要打印在這一個? 聽眾:五。 BRIAN SCASSELLATI:五了嗎? 怎麼樣讓我們做什麼 不同的,我們做了五位。 讓我們表明,它的不同。 揚聲器22:兩個。 BRIAN SCASSELLATI:兩個。 確定。 所以,如果我想兩個點, 我應該放在這裡? 聽眾:三。 BRIAN SCASSELLATI:三。 確定。 多少次是 要辦理什麼手續? 這是怎麼回事要經過 三次,0,1,和圖2,是嗎? 好吧,讓我們回到到兩個。 現在,我們會得到兩個點。 什麼做我想做的每一 一次我去通過循環? 什麼必須改變 每次我辦理什麼手續? 揚聲器23:添加一個點。 BRIAN SCASSELLATI:我一定要堅持下去。 我要加一個點。 我要打印一個點, 通過每次循環。 但我怎麼保存,如何跟踪 很多次,我經歷過的循環? 我用我,那 變量,該計數器。 所以每次經過,我要去 一個遞增計數器。 現在,這是相同的 我的話說:I = I + 1。 這是確定的。 我能做到這一點that--我喜歡 速記,所以我會說我++。 確定。 讓我們做同樣的事情 這兒的底部。 那種只有我做了一個。 我將讓你們 完全做到這一點。 好的。 所以,我應該寫在這裡? 這是我的for循環。 我會做一個printf(),我要去 為讓這個我只打印一個點 在該底部。 我應該怎麼寫 這裡面現在循環? 好了,首先是什麼 變量我應該使用? 揚聲器24:J-。 BRIAN SCASSELLATI:我可以用學家 我可以使用相同的嗎? 我還可以再用嗎? 是啊。 這是確定的,因為是 我使用了這裡, 我不要再當需要他們 我得到了這一點。 所以,我應該初始化我來? 揚聲器25:10。 BRIAN SCASSELLATI:0。 我應該怎麼檢查? 多少點我現在需要在最後 如果我有兩個點的開始? 我需要8月末,還等什麼 我應該檢查一下,我少than-- 聽眾:七,八,九。 BRIAN SCASSELLATI:聽說七人。 我聽到了八強。 我聽見九歲。 確定。 所以我們都在正確的 ball--傑森說:10。 確定。 如果我需要兩個點的 第一位的,又有多少呢 我 - 我需要8個點的 最後埃德蒙頓我放了兩個加上面, 我應該放下下面? 聽眾:八。 BRIAN SCASSELLATI:八。 因為這是要 算上0到7。 這就是通過環路八次。 確定。 什麼我必須做底? 觀眾:我++。 BRIAN SCASSELLATI:我++。 好的。 所以,這看起來相當不錯那裡。 讓我們來試試吧,讓我們看看會發生什麼。 確定。 所以我們要保存它。 尼斯和保存。 我們將放大出來。 我們將嘗試在這裡的終端。 我們將進行放大。 哎呀。 我們會,更多的時間, 讓我們的兔子計劃。 並繼續前進,執行兔子。 它就在那裡。 因此,有我們的兔子。 其中,它有兩個點的開頭 和8個點出在末端。 大家還我? 確定。 因此,我們建立起來。 我們造成了一輛小兔子, 一個特定幀。 現在,我們已經能夠 概括說來構建 更,不同種幀。 現在,讓我們繼續前進,並有 它產生的不只是一個框架, 但讓​​我們產生10 幀,在那裡我們慢慢地 讓兔子把所有 橫跨字段的方式。 好的。 讓我們回去。 我們會盡力了。 那麼什麼才是我真正需要改變這裡的? 我需要做什麼改變? 揚聲器26:首先,您需要 改變點的最大數量 在開始。 因為如果我們正在做的10點, 這將需要多達規模。 BRIAN SCASSELLATI:是的。 所以,現在我有幾分是硬 要始終做到兩個點開頭 始終做到8個點底。 我想建一個循環,對不對? 因為我不希望 建立只是一個兔子圖片, 我想建立10兔子的照片。 所以,我需要建立另一個循環, 當我經過這個循環, 我想換多少 點我打印開頭 多少點我打印末, 基於通過環路循環 我研究。 好的。 因此,讓我們得到另一個櫃檯。 別人的面前說Ĵ, 所以我們會再拍學家 而現在,我們要 for循環另建。 什麼是循環中去? 這東西已去 內循環,對不對? 難道兔子有 走在循環中? 我需要在一個小兔子 其中每個10幀? 聽眾:嗯。 BRIAN SCASSELLATI:是的。 我想在每一個兔子 在10幀的,對不對? 怎麼樣的圓點 最後,我需要嗎? 確定。 所以,我要縮進所有的人。 我要強調的是 這一點,我會打標籤。 這就是將他們推向全國各地 一點點,這樣很容易讓我 看看有什麼環路中。 然後,我將結束它。 比方說。 OK? 現在,在該循環 我building--哎呦, 做出這樣你就可以see-- 我有我的計數器j。 我會在0開始的。 多少次,我想 要經過這個循環? 聽眾:10次。 布萊恩SCASSELLATI:10次。 那麼什麼號碼,我應該把在這裡? 聽眾:9,10。 布萊恩SCASSELLATI:9,10, 有人在得說11了吧? 我想兩個點前 並把小於2我。 我想8個點, 我把小於8我。 現在我想通過10 次,所以我把Ĵ少than-- 聽眾:10。 BRIAN SCASSELLATI:10。 在那裡,我們走了。 而我做底到j是什麼? ++,增加它。 確定。 現在,這裡的棘手的部分,什麼是 會發生什麼,現在如果我這樣做? 我要去打印10幀? SPEAKER 27:我認為, 他們都會是相同的。 BRIAN SCASSELLATI:他們會 都是一樣的,對不對? 因為所有的人都仍在繼續 把兩個點開頭。 但我不希望它們都 有兩個點的開始。 多少點我 想在開始? 聽眾:更改。 BRIAN SCASSELLATI:我 想要改變,對不對? 所以,我有什麼在這裡,正在改變 每次循環經歷? 聽眾:的點數,J。 BRIAN SCASSELLATI:J-, 點的數量。 所以,我可以改變這是學家 第一次通過 環,那是什麼打算呢? 我該怎麼設置J可在第一? 聽眾:0。 BRIAN SCASSELLATI:那麼有多少 次我該怎麼做呢? 0。 通過循環,J的第二時間 將是1,因為我加一。 多少點我要去打印? 1。 通過循環的第三次, 多少點我要去打印? 聽眾:三。 BRIAN SCASSELLATI:J-將是3。 多少點我要去打印? 哦,對不起,J將是2。 多少點我要去打印? 聽眾:2。 BRIAN SCASSELLATI:2。 好了,所以我要保持 遞增的,因為我們走。 如何向下跌破? 善有善報這兒? 我不想8總 在結束了嗎? 揚聲器28:10。 BRIAN SCASSELLATI:我想10點? 我希望它改變了。 所以,我怎麼想它改變? 聽眾:[聽不清]。 BRIAN SCASSELLATI:嗯,如果我 有五個點在開始, 多少個點的我在最後得到什麼呢? 聽眾:五。 布賴恩SCASSELLATI:如果我有 6點之初, 多少才能獲得在結束了嗎? 聽眾:四。 布賴恩SCASSELLATI:如果我有 7點在一開始, 多少才能獲得在結束了嗎? 聽眾:三。 布賴恩SCASSELLATI:如果我 有Ĵ點之初, 多少才能獲得在結束了嗎? 10-j的。 確定。 所以讓我們嘗試了這一點。 所以,我要拯救我們的兔子計劃。 我們再次將縮小。 我們將去到我們的終端。 我們將清除它。 並進行放大。 我們將讓我們的兔子節目,再次。 我們將執行它。 嗯,哦。 等一下,讓我們縮小。 難道我得到10幀? 那麼,有多少兔子 我看到那裡? 1,2,3,4,5,6,7,8,9,10。 我得到了10幀。 他們都是一樣的嗎? 聽眾:是的。 第 BRIAN SCASSELLATI:沒有。 這第一位的, 兔子是遠在左邊。 而在這裡,兔子是遠在 SPEAKER 29:對。 BRIAN SCASSELLATI:那麼, 我怎麼忘了怎麼辦? 揚聲器30:啟動一個新行。 BRIAN SCASSELLATI:我忘了 開始一個新的生產線,再次。 同樣的錯誤,我之前所做的。 好吧,讓我們去解決這個問題。 現在,我還有代碼 在那裡做一個新的生產線。 為什麼不工作? 揚聲器31:這不是在循環中。 BRIAN SCASSELLATI:哦, 它不是在循環中。 這是正確的。 它在這裡坐在外面。 而for循環就是一切 就是這樣的文字裡。 所以,我要動 這裡面的for循環。 我將標籤在它前面 表明它在正確的地方。 而現在,我們將重新保存。 我們會縮小。 我們將切換到我們的終端。 進行放大。 我們將重塑我們的兔子計劃。 而現在,現在我們已經得到了我們的10幀。 [掌聲] BRIAN SCASSELLATI:OK。 所以。 我們的嵌套這裡的for循環。 我們能夠生成在 我有多少點希望內環 打印在開始的時候,在末端。 和外環控制 多少幀我是建設。 我們從一個小小的 問題的核心, 我們從該點建造出來。 好的。 讓我們做一個步驟。 你準備好了嗎? 有一件事在這兒, 樣的,我們實際上已經得到了 更多的複雜性比我們所需要的。 讓我們一起來看看。 因此,在我們的兔子節目, 如果我縮小這裡, 我實際上做一些相同的 事情一遍又一遍。 我該怎麼做那類的 同樣的事情重複了兩次? 揚聲器32:打印點。 BRIAN SCASSELLATI:是 我打印這些點的兩倍。 說真的,我應該有 此評論到這裡。 我打印了一些點在 開始,一直在這裡。 然後,我打印了一些點底。 我做那種完全一樣的東西。 我們要開始 致力於在未來幾週內 是能夠利用這些區塊 我們使用了一遍又一遍代碼, 並通過一個過程 所謂抽象, 我們要拉他們出來, 一旦寫出來,這樣我們就可以 一遍又一遍重複使用它們。 因此,讓我們試試吧。 準備好了嗎? 我們將利用這個代碼塊。 而且我打算把它救出來。 而且我要define-- 向下在底部, 我打算寫一個新的功能。 它不會返回任何東西。 而且我要叫它printDots。 這將需要一個 參數,一個整數, 說howManyDots我應打印。 而不是打印Ĵ點和現在,我 打印告訴howManyDots我應打印。 而且還有一個小問題在這裡。 任何人都知道它是什麼? 我有什麼說的上市 在這裡沒有定義? 聽眾:[聽不清] BRIAN SCASSELLATI:那麼怎麼樣 多點是指直到 在這裡,但我使用的變量i。 所以,我要採取的變量i 我要去下來定義它在這裡 代替。 所以,現在它要stay--哎呀, 得到了大寫鎖定somehow--我 要保持我倒在這裡。 所以,現在這裡是我的小功能 或子程序,它說, 多少點我要去打印? 而且它會通過這個循環, 一遍又一遍打印出來。 那麼我可以修改我的程序在這裡。 而且我怎麼調用該函數? printDots。 所以,我會打電話給printDots。 多少點我要打印 第一次小兔過嗎? 聽眾:J-。 BRIAN SCASSELLATI:J-。 多少點我要打印 在最後,兔子後? 10-j的。 還有一件事我很想念。 正如你在演講今天看到的, 我們要聲明printDots 高達上面給的原型。 確定。 因此,我所做的是我一直在努力, 隔離的代碼重用一部分 我已經做了一遍又一遍。 我一直試圖將其拉出,使 所有這一切都包含在一個地方。 這樣一來,如果我有一個錯誤的地方, 我只需要解決它在一個地方。 好的。 因此,讓我們將它保存。 而且,我們要確保它的工作原理。 因此,讓我們走出去。 我們將再次去我們的終端。 我們將進行放大。 我們會作出這樣的兔子進程。 呵呵。 它給了我一個警告。 它是什麼告訴我? 那麼在任何這些 時候,你總是希望 滾動到第一個error-- 現在就這一個,我只得到了一個。 它告訴我bunny.c,上線 8,第9欄,有一個問題。 它說,你已經聲明這 變量i,你還沒有使用過。 現在通常,這是 還不是最壞的錯誤。 這是一個容易解決。 而事實上,我們可以回去研究。 我們可以回到兔子。 在這種情況下,所有的我們 所要做的就是擺脫我, 因為我們沒有使用 我在主了。 我們只是用它 在我們的子程序。 因此,讓我們保存。 我們會回去。 並進行放大。 我們將更多的時間做兔子。 還有一次是我們的10幀。 確定。 提供給您的任何時候 一個procedure--呀。 SPEAKER 33:我有A--我很困惑。 你能回去的代碼? BRIAN SCASSELLATI:是的。 SPEAKER 33:所以,當你寫的 你的原型,爭論你 有它命名叫的howmany? 但是,below-- BRIAN SCASSELLATI:哦,是的。 SPEAKER 33:--called他們的東西 不同的,我不明白。 BRIAN SCASSELLATI:為什麼 他們是不同的。 所以這是一個很好的問題。 所以現在的問題是,上升 在這裡,我寫的howmany, 而樓下,我寫了howManyDots。 其原因是,在你的原型, 它實際上不重視 給你把的姓名。 它所真正關心 是,它是一個整數。 它希望知道的形式 對你把什麼。 現在stylistically-- oops--我應該 不,是我喜歡做這些比賽。 確定。 因為這會保持它 我更容易記住。 但是,這是我的錯呀。 SPEAKER 34:所以對於 原型去上班,就 寫作這一行, 寫原型, 允許函數來 右下方它去年底 和檢索是什麼意思? BRIAN SCASSELLATI:這是什麼意思 是當編譯經過, 它從頂部 你的代碼底部。 什麼這個原型是, 是它基本上是一個承諾。 它說,那裡將是 一個函數定義的地方。 這將是所謂的printDots。 而這將需要一個參數 那將是一個整數 並且它會返回 什麼都沒有,空類型。 確定。 我向你保證這將是 某處定義的道路。 但是,任何時候你看 那,你下去 通過其餘我 主要的功能,我想 你可以把它看成一個函數 這需要一個整數輸入。 因此,當編譯器出現故障 通過這一點,它認為這一承諾。 當它下來, 一直走,一直走, 它找到的第一次 printDots被提及。 它說,呵呵,你給 我這個學家生的一個整數。 嗯,你答應我,會 是一個整數,這是正確的。 這是確定的。 然後終於,下來 在最底層, 之前,我到年底我 文件,我兌現我的諾言 我定義它。 OK? 揚聲器35:所以,saves--的 程序將保存空白 它可以追溯到並填充在結束了嗎? BRIAN SCASSELLATI:這不是 關於內存分配。 它實際上只是什麼 類型是你希望看到的。 如果這件事情有一個 參數或五個參數? 應該有它的整數是 給它,或字符串? 這一切都在尋找 做的是檢查, 你給我 正確的說法。 OK? 好的。 讓我離開你 另外一個位來看待。 ASCII藝術不是偉大的榜樣 動畫,因為它是今天。 但是,當然,也有人拿東西 他們推到自己的極限。 這是,正如大衛展示 在講座中,一段代碼 你應該在任何情況下 嘗試複製自己。 因為它是可怕的文體。 事實上,它的設計是為 困難的,因為可以讀取。 確定。 所以,再一次做,讓我們放大在了這裡。 我現在要去走,更改目錄。 我要轉到上一級 的水平,回到我的工作區。 然後,我會改變目錄到這個 我已經創建了其他目錄。 這是國際 混淆C程序設計大賽。 混淆手段硬 如可以理解。 所以,請不要如果你嚇到 在這去,我無法讀取。 這是它的點。 OK? 但是,我們有這個 精彩的節目,我是 將只需鍵入更多的關注一下。 讓我們來看看,如果我能縮小 只是有點,所以你可以看到它 這就是該程序。 它的命名endo.c. 它看起來像這樣桶 一種字母F-L-U-I-D在裡面的。 這其實是一個程序。 這是寫在最不起眼的 這樣,作者可能可能 寫吧。 但它是一個奇妙的小片的 產生流體動力學模型。 因此,我們打算給 這種模式的輸入端, 看起來的這樣, staired集集裝箱 一些液體,一些 液,在頂部。 我們將有它模擬 發生了什麼吧。 所以,我會調用該函數,內。 而我給它的 ,我已經有輸入文件。 還有就是我們的ASCII藝術的縮影。 一個完整的流體動力學模擬 在代碼只有幾行運行。 現在,什麼是居然真的 令人驚奇這個小程序 是,我現在要停止它, 所以我打算用什麼命令? 聽眾:控制-C。 BRIAN SCASSELLATI:控制-C。確定。 因此,我將使用Ctrl-C組合。 C,它會停止它。 我會再次清除。 而現在我要調用 程序,執行程序, 使用本身作為輸入。 我們將看到流體動力 模擬它融化。 確定。 請不要讓該程序 是因為混淆了你的東西。 這只是這樣我們就可以結束 一些冷靜和有趣。 確定。 祝您好運與你的習題集。 我們很樂意回答 課後問題。 謝謝了,伙計們。