>> [音樂播放]
傑森赫塞豪恩：好，大家好。
歡迎來到科。
這是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，它會停止它。
我會再次清除。
而現在我要調用 程序，執行程序，
使用本身作為輸入。
>> 我們將看到流體動力 模擬它融化。
確定。
請不要讓該程序 是因為混淆了你的東西。
這只是這樣我們就可以結束 一些冷靜和有趣。
確定。
>> 祝您好運與你的習題集。
我們很樂意回答 課後問題。
謝謝了，伙計們。