>> JASON HIRSCHHORN：歡迎到 CS50節，每個人。
我的名字是賈森·赫塞豪恩。
我是你的轉錄因子很多，但很多 人們會希望能夠加入我們
在線擴展學生或學生 試圖通過部分看，如果他們
那一周或錯過了他們的部分 正好趕上，如果他們想
回顧一些材料。
>> 因此，按照教學大綱，所有 你們都讀過，糾正嗎？
我看到了很多的點頭。
節為您提供的機會 探索課程
材料在一個更親密的環境， 以及潛入
實踐活動。
>> 所以，基本上我們什麼 會做每週。
我們通過我們有什麼打算去 確定為最重要的
涵蓋的主題演講，和那些 大概也是最有用和最
最有可能想出問題集 和測驗，並在您的編碼
CS50之外的生活。
因此，我們要進入這些主題， 討論這些問題，他們走了過來，
回答你們有任何問題， 然後我們做了很多
在編碼的實際問題。
>> 你們都帶來了筆記本電腦， 這是夢幻般的。
這是一個計算機科學類。
但是，我們做了很多的練習， 你不會需要你的筆記本電腦。
你可以做他們在片材上的紙張。
這就是你要 做他們的測驗。
而事實上，這是一個偉大的方式來 真的知道，你該怎麼辦
如果你沒有的東西檢查50〜 依賴或依靠，告訴
你做了任何錯誤。
>> 因此，歡迎你在代碼 裝置或run.cs50.net，這是
另一種工具，允許您編寫 在線，但我也建議，如果
你有沒有試過，使用表 紙和嘗試這些做法
一張紙的問題。
這還是因為同樣的原因，這是最終 你要什麼
要求做測驗。
>> 因此，讓我們開始我們的 今天的議程。
我們打算去了一些規範 我們的部分，然後我們要去潛水
成數組，函數和命令行 參數，這是你們
過去的這一周，已覆蓋講座 然後在週一，你會覆蓋
更多的明天。
最後，我們要 談論pset2。
如果我能得到一個舉手，如果你 沒有看著兩個問題集
規範。
我們大家會說。
太棒了。
>> 我們將談論問題套在一個位， 但如果你閱讀問題集
規範，這是 所有你需要做的。
如果你讀之前，你來 類和部分在週二，你會
是一個偉大的位置。
我們可以去通過習題集， 這就是我們要去
做底。
我們要經過 邏輯，確保
每個人都在同一頁上。
>> 我希望你能夠離開週二 你感覺很舒服
需要做的這個星期的問題集， 如果你不這樣做，我會很高興
留後，並與您合作。
但是，這是一件事，你必須 做，但我認為很聰明，
只是閱讀問題集 規範類星期二
這聽起來像一個 你們做的很多。
>> 我將開始與每類議程 所以你知道我們要去的地方。
這也是有幫助的人看 在網上，因為每個節
顏色編碼，所以如果你要來 ，只是看10分鐘，而
比整個90分鐘的部分， 剛去的顏色編碼部分
並期待在這一部分。
因此，我一直試圖將它們分開成漂亮的 模塊將允許你 -
如果你想回來，並檢討， 或其他學生只是
看一段檢討 -
找到具體的事情，他們 要注意的
並進一步了解。
甜。
>> 規範。
我是一個FOP在校園裡的領導者。
我不知道，如果有人做FOP。
有沒有人做FOP？
一個人做FOP。
兩個人做FOP。
真棒。
因此，FOP是第一年戶外 迎新活動。
我們進了樹林，使新生 最神奇的經歷
他們的生活，是否正確？
嗯。
聽起來是正確的。
>> 所以，我只是想開始我們的第一個 通過討論一些規範部分
類和我們之間的關係 因為我覺得
他們是非常重要的。
首先，那些你們誰 我的部分已收到並
中討論的 電子郵件，我喜歡這個。
這是今年我最喜歡的部分。
我一直很興奮。
我在這裡已經好幾個小時。
我還沒有離開這棟樓除了 去吃飯，因為我愛CS50節，我
愛教學，我愛工作 你們。
>> 我的最高優先事項之一，如果不是我 頭號優先，不僅為
這一類，但包括我的其他 類和課外活動，是
支持你們，幫助你們， 盡我所能，確保您
你們有一個美好的，有趣的，多產， 引人入勝，令人振奮
在這個類中的經驗。
這就是我的承諾。
這就是為什麼我喜歡這樣做。
這是我的一件事， 支持你們。
如果您有任何關於講座的問題， 問題集，節，
生活中，即使你想談談 生活中，請隨時伸手。
>> 你有我的手機號碼， 你有我的電子郵件
地址，你有我的GChat。
你可以聯繫我的任何或所有 何時何地，但可能不會得到
響應時。
我嘗試在24小時內取回。
通常情況下，它會在 20分鐘或24分鐘。
我應該說， 使其平行。
但是，你會得到一個回應 很快。
>> 如果你給我發短信前一小時 問題集中到期，我會冷靜
下來，做深呼吸練習 你，但如果你還沒有開始，
你可能不會完成， 我真的不能幫你在那裡
儘管我會盡我所能。
所以，我會盡一切 我可以支持你。
請隨意是否達到 它在節再次，在辦公時間
如果你看到我，甚至在外頭。
我很高興，設立時間，以滿足 通過問題和工作
或材料走了過來。
所以這是頭號，支持。
我會盡我 可以支持你。
>> 二，會議中間。
就像我想是的，我 不是萬能的或強大或
全知的，所以我不知道所有的 時間，如果我在做什麼
跨越，如果我教的方式 主題幫助您了解它，或者，如果你
感到困惑的話題，但不 舉起你的手，或問我
或發電子郵件給我。
或者，即使你再感到困惑 有關問題上的東西。
如果你不拿出來給我， 我不知道那是肯定的。
我要盡我所能來檢查 你們這些傢伙，確保一切
順利，試教的方式的事情 大部分將有利於
您的學習風格，但如果有 我能做些什麼，讓我知道。
>> 沿著這些線路，如果你想要一些幫助 設置的問題，我更
比竭誠為您服務 問題集。
我們打算做了很多 ，朝第二
本節的一半。
但是，如果你還沒有閱讀問題集 備份和沒有看過步行
通過和沒有看過的短褲 並期待我來教你
一切已經錄像 在線或你可以找到CS50
學習，這不是一個真正公平的 我或你的其他同行。
>> 所以，請我更樂意幫助 你，但你們得到了滿足我
中間。
我們有資源噸 你CS50。
我提到其中的一些。
請利用它們。
如果你困惑，我更樂意 幫你解釋他們在
另一種方式，但它是不公平的，如果 學生在辦公時間，
還沒有開始任何事情，它是 週四晚上，他們正在期待
他們通過每一個TF走 由於問題的東西設置
第二天中午。
有意義嗎？
再次，請配合我們在中間。
>> 最後，很高的期望。
我要分級大家誰 在我的部分，或得分
習題集。
你還沒有問題 設置零次或一次。
我們很遺憾。
我們花了一段時間，終於 解決部分，而現在
我們可以開始分級。
>> 我將讓他們回到你 盡快。
這些都是我的一些 有advisees。
我將讓他們回到你 盡快。
第二個問題集，我們會在 安排，我們將開始讓他們
你很快後 你打開它們。
>> 當您重新設置您的問題， 將獲得更高的分數，因為你知道，從
閱讀大綱 - 正確性， 設計，範圍和風格分數。
您還可以得到意見。
更重要的意見 比分數。
我認為它是安全地說。
>> 分數只是一個數字 從一到五。
這是很難讀入那些。
這是從那些難以改善。
但評論指出具體 事情，你做得很好或地區
你可以改善，並給你一些 對未來的想法或替代
做事的方法。
>> 所以，請，請，請仔細閱讀“ 通過的意見。
我把大量的時間到 這些意見。
請仔細閱讀並通過他們不只是 向下滾動到的底部
PDF格式，看你的分數，或者去網上 找到你的分數，然後忽略
的意見。
那不是你 會變得更好。
那不是你要增加 你的分數，最終，只是
看上面的分數。
請看看這些意見。
>> 沿線很高的期望， 再次，就像我說的，你
可以砍下從一到五。
三三兩兩，三分球，四肢 絕大多數分數
你要得到。
和五歲以下兒童的都是真的很罕見。
總是有東西 我們可以做的更好。
每當我編寫一個程序，有 總有一些事情我
可以做的更好。
>> 因此，而不是說你得到了五 一切所有的時間，並
一切完美，我不認為任何 我們真的相信我們 -
希望我們不要做的一切 完善所有的時間。
所以，不要擔心，如果你 沒有得到一個五。
一個五不映射到一個A， 不映射到一個B，一個三不
不映射到這不是一個C。 的分數是如何工作的。
>> 像大衛已經說過很多次， 學期結束所有你的分數和
從我做起，輸入你的TF，走到了一起 並為您確定最終成績。
但同樣，它不是五， 四，B，等等。
所以我要抱有很高的期望 為你們。
我要去預期良好的問題 套，我要去給
您的反饋等。
它不會意味著你 會得到檔次更糟。
您而言，分級 你的進步從週
為零，當然結束。
>> 最後，在高 在課堂上的期望，我愛
人參與。
我明白有些人覺得更多的還是 不太舒服的參與。
其他人參與 不是靠提高他們的手，
說話的時候。
但我們在這個類將要 做了很多的小問題，很多
小的問題，然後一些 更大的編碼問題。
所以肯定這些工作鍛煉出來 當我們這樣做，他們在您的計算機上或
一張紙。
>> 但我還會給你前一段時間 有人回答一些
我問的問題。
所以，因為我會給你一些時間 想想吧，因為我們要去
有時合作夥伴做的事情， 我會期待大家
要有點從事。
而對於缺乏一個更好的詞， 可能會冷通話，
是每個人都將有機會 思考答案，然後
我會打電話給你，然後 你會說答案。
>> 不要擔心或害怕，。
我已經做到了在過去，我們已經找到了 它的成功得多，
閱讀教育研究 確定是否它是一個
良好的戰術。
這是非常有用的，特別是如果你 讓學生有時間去思考
的答案，不要讓他們剛進來 出來，說出來了蝙蝠的權利。
但是，如果你感覺不舒服 回答，我還不錯
感應到了，我們不打算 把你在現場，尤其是在
攝像頭，即使沒有 你是在相機現在。
>> 因此，這些都是我的規範。
沿線的一件事 滿足在中間。
我去給你們 很多反饋意見。
請給我反饋。
有一個網站，sayat.me/cs50。
所以這是一個誠實的反饋。
如果你想給它一節期間， 我收到一封電子郵件，每當發生。
我們將稍事休息，所以我會在一個位 然後看通過反饋。
如果你有任何意見， 請給我有。
>> 如果你給我反饋，這是在Q 美妙的，但是這是導
你做底。
但是，這將是在學期結束，所以 我不會可以採取任何的
反饋，並把它融入教學 你們更好。
所以，請如果您有任何 反饋，把它給我。
我愛的反饋。
備份FOP，我們得到的反饋 所有的時間。
>> 你可以給我加號，好東西， 三角洲的事情，我可以改善。
你可以評論我的衣服上。
這不會是有幫助，但你 歡迎發表任何評論，
一切。
請，請給我反饋。
我很看重它了很多，這 對我來說意味著很多。
>> 一個規範，樂趣無窮。
我們將有很多的樂趣。
希望在這個過程中，你會 有很多的樂趣。
我們將有糖果部分。
我們就得音樂。
我們會希望去了解一個 另一個有點好，所以我想
這是一個有趣的，引人入勝的體驗。
>> 我知道你們有些人睡著 你今天早些時候的演講，
所以希望這不會 現在的情況。
而如果是現在的情況下，只是 不打呼嚕，因為可能
被抓相機。
甜。
有任何疑問，意見或疑慮 之前，我謹什麼，我們已經
談到？
太好了。
>> 因此，我們打算去 先成陣列。
這是你如何使一個數組。
我們已經看到過。
你有一個數據類型，你有一個 名稱，然後你有一個大小。
在這裡，我創建了兩個數組。
第一個是一個字符數組， 它有26個停車位。
第二個是一個數組 分數，它有三個
空間三個整數。
是嗎？
>> 學生：所有這些幻​​燈片 可為我們的地方嗎？
>> JASON HIRSCHHORN：大問題。
問題是，所有的 這些滑動？
是。
所有這些幻​​燈片將是可利用的， 在未來，我會通過電子郵件給
你之前部分。
然而今天，因為這是第一次 本週，我們起步較晚。
所以通常情況下，你會得到這些幻燈片，但 他們將可在網上和
我會通過電子郵件發送給你 下課後權。
任何其他的問題嗎？
>> 如此反复，陣列箱，由於缺乏 一個更好的詞，有多個
一種數據類型的元素，而且他們 在內存中彼此旁邊。
如此反复，這怎麼可以 使兩種類型的陣列。
>> 所以在你做出陣列 - 詮釋，第一行分數，支架
三，靠近支架 - 想要初始化它。
你想在那裡把一些值。
這是你如何把一些值 在那裡，只是選擇的指數和
記錄的號碼。
讓我們畫在黑板上。
每個人都可以看到嗎？
每個人都可以看到。
甜。
>> 所以這將是我的 陣列稱為比分。
正如你可以看到的，它的大小為3。
在那裡有三個框。
每一個可以容納什麼 類型的數據類型？
>> 學生：整數。
>> JASON HIRSCHHORN：一個整數 在這其中。
我們寫INT的分數，並且第一個字 那將是數據類型
該數組中的框。
所以，我能適合三種。
為什麼我必須零 板？
為什麼它說得分為零等於1？
提醒我你的名字。
>> 學生：庫爾特。
>> JASON HIRSCHHORN：庫爾特。
>> 學生：是的。
>> JASON HIRSCHHORN：為什麼呢？
>> 學生：因為第一個索引 為零，我們開始計數為零。
>> JASON HIRSCHHORN：所以我們開始 在零計數。
這是完全正確的。
這是令人困惑的部分和意志之旅 你，尤其是當你
試圖遍歷數組， 我們會做一個位。
我們開始計數為零。
所以，如果我想參照第一 盒，它不是箱裡。
不幸的是，箱零。
第二個是框中，並在這 的情況下，第三個是箱兩種。
>> 關於對話框三是什麼？
箱三在哪裡呢？
或者，如果我想要做的成績，支架 三，密切支架，那是什麼？
所以你說的空字符。
任何其他的想法？
什麼是得分支架三個支架？
>> 學生：它並沒有真正存在，因為 你只定義為得分，
支架三。
>> JASON HIRSCHHORN：所以你說 它並沒有真正存在。
在某些情況下，當我們正在處理 字符串，一般我們把空
結束字符。
我們會在第二。
但是，在這種情況下，有 這裡沒有第三個方塊。
所以任何數組中的最後一箱 的尺寸減去1。
所以，如果我們有一個大小為n的數組， 第一盒是為零，最後一個是
在n減1。
在這種情況下，它不存在。
也有一些是在這裡 內存，但它不是我們的。
我們並不擁有它。
我們並沒有要求它。
因此，如果我們嘗試訪問它，我們將 做在一個位，我們很可能會
惹上麻煩。
>> 在這種情況下，我初始化我 三個變量的數組。
我們把一箱零，兩 在箱，三箱二。
沒有任何人有任何疑問， 有關初始化的數組？
>> 於是我們過剛才。
比分，支架三，靠近支架， 不存在。
我們從零開始編制索引，計算機科學， 所以我們開始計數為零。
最後一箱提供給我們，這是 第三個框，但是它稱為盒
數二。
>> 而在下面，這是一種替代 初始化數組的方式。
因此，而不是創建一個數組 線，灌裝的第一個框，然後
第二個框中，然後在第三個框， 在同一行中，你可以做到這一切。
因此，在該行中，兩個數組。
這將創建完全相同的陣列 我們在這裡，但它
只是它在一行。
>> 現在，我們已經創建了我們的陣列。
通常，一旦你創建一個數組，你 它想要做的事，無論是
填寫或得到的東西出來呢 並打印出來在屏幕上。
在這種情況下，我們將通過我們的 分數數組，初始化
的第一行，在這裡在灰度。
然後在第二行，我們開始 遍歷數組。
沒有任何人有任何疑問， 一個for循環的結構？
>> 因此，這是for循環。
我們有我們的初始條件，然後 我們的最終狀態，然後我們
迭代，我，每一個循環。
而在此花括號中的 循環，會發生什麼，如果我是運行
這個程序？
誰能告訴我，我們會得到什麼？
[？成熟度？ ？]
>> MATU：打印所有分數 在每一行上。
這將打印每個分數 在一個單獨的行。
>> JASON HIRSCHHORN：究竟 它會打印嗎？
>> 學生：它會打印一個， 然後兩個，然後三個。
>> JASON HIRSCHHORN：沒錯。
它會打印一個，然後兩個，然後 三，每一個單獨的行，因為
我們正在經歷的數組，你會 看到第二個，在printf
聲明，分數。
因此，在第一輪通過我們的 循環，i等於為零，這意味著我們
獲得得分為零的值 -
其中，如果我們回去 我們的圖，是一個 -
並填寫 -
哦，它說。
這應該為％d。
我會解決這個問題有點 我的手，你們。
但我們呈現一個整數，所以 這裡應該為％d，而不是％C。
％c代表是什麼？
>> 學生：字符。
>> JASON HIRSCHHORN：性格，正是。
另一種是什麼呢？
如果你不想做一個％D 整數，還有什麼可以做什麼？
>> 學生：我。
>> JASON HIRSCHHORN％，完全相同。
所以任何疑問迭代 通過數組？
所以會發生什麼，如果我們做到這一點嗎？
而不是做i小於 三，我是少
大於或等於3。
當我們運行這段代碼，會發生什麼事？
是的，安妮？
>> 學生：他們打算打印出來 第四行的怪異的東西。
>> JASON HIRSCHHORN：所以你說的，是什麼 要打印出怪異的東西
第四行嗎？
沒有任何人有一個答案 她的問題？
所以賠率是當 我們得到的 -
通過我們對第四輪 循環，就像你想，安妮，
這將是分數支架三， 我們已經想通了，不
存在的，我們要去嘗試 和訪問，打印
出來，用一些方式。
所以電腦可能會 我們生氣。
你說得對。
>> 它可能完全退出程序。
它可能會打印出來的東西 真不可思議。
你不能說是肯定的。
賠率是它可能會生氣 你，只是馬上退出。
>> 但是，這是一個常見的錯誤，你就會有 你只是在關閉
到底，這是一個錯誤，將 困擾你整個編碼。
我喜歡做的僅僅是在 白板，經過每次迭代
手頭上或在紙上看到循環 發生了什麼，然後你
普遍意識到，哦，等一下，我不應該 已經小於或
等於三。
，這是我應該停止在兩個 會發生什麼，如果你的條件
超過三種。
有任何疑問，這麼遠嗎？
甜。
>> 所以你打開你的電腦。
我們要去給你兩到三個 分鐘寫一個程序，
創建一個數組整數 通過五個，然後打印出每個
在新的一行的整數。
如果您有任何疑問， 舉起你的手。
我很高興來的。
就像我說的，讓我們採取三種 分鐘來寫這篇文章。
是所有人都好，如果我去一個 新窗口，並關閉此？
>> 對不起，如果你還沒有機會 完成，但我們要做到這一點
現在一起。
所以在屏幕上，我的＃include cs50.h＃包括stdio.h中。
有人可以告訴我是什麼 這兩行辦？
邁克爾？
>> 學生：他們包括庫 CS50和史蒂夫
保存供您使用 使您的生活更輕鬆。
>> JASON HIRSCHHORN：所以你說他們 包括圖書館，一個CS50
，cs50.h，另一種是 只是標準，自帶
C包，stdio.h中。
你是什​​麼意思，包括 圖書館，雖然？
你能更具體一點嗎？
>> 學生：它使得你可以 使用某些碼字有
不必去功能發生 c的功能自己。
>> JASON HIRSCHHORN：你能 給我一個例子嗎？
>> 學生：喜歡的printf 是您可以使用。
>> JASON HIRSCHHORN：printf的。
所以，你說的printf是那些 功能而不必
寫上自己的printf，printf是 實際上包含stdio.h中，所以你
可以只使用它，並承擔 它會奏效。
stdio.h中，如果打開了這個文件， 這包括如何的printf
作品，所有的代碼為printf？
你為什麼搖頭？
>> 學生：因為剛才的頭文件 包括函數的聲明。
>> JASON HIRSCHHORN：完全正確。
頭文件只是包括 在函數聲明。
所以基本上，當你編譯這個， 打計數，我們將做一個
第二，編譯器知道，如果 使用了printf printf的存在。
這是怎麼回事某處被定義。
這不是一個問題，你使用它。
再後來，它會包括 實際上包含的和為零
printf的實施和 將其與你的代碼。
你如何確保它包括 的和零點，也就是說，得到的字符串？
>> 學生：獲取字符串cs50.h.
>> JASON HIRSCHHORN：右。
所以說得到的字符串存在， 在函數聲明。
但隨後的1和0的二進制 文件實際上包含
實施獲取字符串？
你如何確保 與你的程序？
>> 學生：通過連接器 命令行參數。
>> JASON HIRSCHHORN：通過連接器 在命令行參數。
你怎麼做到這一點呢？
>> 學生：這是鐺-L線
>> JASON HIRSCHHORN：完全正確。
你說CS50-L，對不對？
這包括那些和零。
>> 學生：但要確實 為你，對不對？
>> JASON HIRSCHHORN：沒錯。
make沒有你，但最終， 你不會有廠名，或
你就得做出 你自己的，所以這是一個
好事要記住。
如果你要使用其中的一個 其他圖書館，你不僅有
寫＃ 然後圖書館。
您還需要與其鏈接。
而這兩件事情是不同的。 -L CS50是不同的
＃cs50.h.
>> 然後我們有INT主要無效花括號， 現在我們要去代碼
主內。
我這裡有第一行是註釋 說，創建一個數組
與int的一到五。
什麼是一個很好的詞來形容我 現在在屏幕上，只是
裡面主要的意見？
我們稱之為什麼呢？
>> 學生：偽代碼。
>> JASON HIRSCHHORN：偽代碼。
謝謝你，杰弗裡。
這是完全正確的。
偽代碼。
有你們之前見過的偽代碼？
舉起你的手，如果你使用 問題的偽代碼之前設置一個。
關於你的一半。
>> 我會強烈建議使用 偽代碼問題
更小，更容易咬掉件。
另外，如果你做偽代碼，你 您的意見已經在很大程度上
內置的，所以你不要有 回去揣摩
你在做什麼。
因此，有人可以給我這個第一線 創建一個數組int類型之一
通過五個？
你呢？
>> 學生：詮釋，然後你可以調用 任何號碼，然後方
支架五。
>> JASON HIRSCHHORN：所以整型數， 方形支架五個。
>> 學生：等於， 然後大括號。
>> JASON HIRSCHHORN：等於， 大括號。
>> 學生：一，二，三，四。
>> JASON HIRSCHHORN：一，二， 三，四，五。
>> 學生：那麼大括號 然後分號。
>> JASON HIRSCHHORN和捲曲 括號和分號。
優秀的。
打印出每個INT在新的一行。
可以給別人 我該代碼，好嗎？
[？成熟度？ ？]
來吧。
>> 學生：（
>> JASON HIRSCHHORN：（
>> 學生：INT I = 0
>> JASON HIRSCHHORN：INT I = 0
>> 學生：分號我不到五。
>> JASON HIRSCHHORN：分號， 我小於5。
>> 學生：分號，我+ +。
>> JASON HIRSCHHORN：分號，I + +。
>> 學生：休息括號， 然後開括號。
>> JASON HIRSCHHORN：休息括號 兩個大括號。
在大括號內？
>> 學生：當時的printf“％D / N”
>> JASON HIRSCHHORN：很抱歉，挺住。
printf的“％D / N，封閉的引號。
>> 學生：那麼封閉報價， 逗號，計數，支架I。
>> JASON HIRSCHHORN：逗號， 數，支架í。
>> 學生：對不起，數字支架。
>> 的JASON HIRSCHHORN：數字，支架I。
>> 學生：對不起。
然後關閉括號， 分號。
>> JASON HIRSCHHORN：休息 括號，分號。
我要去拯救。
我們要去計數。
我怎麼運行計數？
>> 學生：反斜杠。
>> 學生：點斜杠 -
>> JASON HIRSCHHORN：。/計數，準確。
謝謝。 /計數。
一，二，三，四， 五個新的生產線。
看起來像它的工作。
是的，諾亞？
>> 學生：你也可以做到小於或 等於4，如i小於
或等於4？
少做有什麼優勢 五，或只是以不同的方式
寫它呢？
>> JASON HIRSCHHORN：所以，問題是你 可以做得i是小於或
等於四，而不是 i是少於五個。
又會有同樣的工作嗎？
>> 學生：它應該。
>> JASON HIRSCHHORN：是的。
它完全將工作一樣。
在文體上，它是一般小於 你會看到在第二個時
我們的字符串，可以使用的東西 調用strlen的，你見過
之前，來取得長度 的字符串。
你不能小於 或等於strlen的。
你可以做到小於或 等於strlen的減一。
所以它只是更好 做小於strlen的。
是嗎？
>> 學生：在實際測驗， 我們必須提供我們的意見
代碼呢？
>> JASON HIRSCHHORN：問題 測驗，你
有提供意見？
因此，我們會更多地談到測驗時 他們來了，但一般來說，一個好的
經驗法則是，只要你 編寫代碼，提供意見。
如果你得到的代碼錯了，但 發表意見的權利，你可能會得到一些
信貸從我，如果我是分級 您的問題集，或交了白卷。
因此，意見總是 好來提供。
甜。
計數。
出色的工作。
讓我們繼續前進。
>> 字符串。
字符串。
我們已經看到了這個講座之前。
吹我的腦海裡，當我 首先發現了這一點。
它可能沒有任何人吹的 想到這裡，不過沒關係。
>> 字符串是字符數組， 他們最終，正如你自己所說，
空終結者， 這是/ 0個字符。
如果我們要畫一個串上 板，我們將它畫在這裡。
所以，這是字符串有多長？
抱歉。
這是字符串有多長？
>> 學生：[聽不清]。
>> JASON HIRSCHHORN：四？
為什麼是四個呢？
>> 學生：因為第五位 是空字符。
>> JASON HIRSCHHORN：所以第五位 是空字符。
所以，如果我上運行的strlen 這一點，那就給我4。
正確。
而陣中，不過，如果我是 初始化這個數組，多少個空格
我要問的嗎？
>> 學生：五。
>> JASON HIRSCHHORN：五。
我不得不問五，但我可以 在這裡只把四個字符
因為我需要把這些空 終結者就結束了。
因此，我們打算寫“ohai” 把空終止符結束時。
我們會說這是串 s等於這一點。
什麼是支架為零？
Ş支架零，安妮？
>> 學生：O。
>> JASON HIRSCHHORN：O型，正好。 Ş支架？
Ş支架五？
>> 學生：不存在。
>> JASON HIRSCHHORN：不存在。
完全正確。
涼爽。
任何理解問題 字符數組，字符串？
OK，然後。
你們更多的程序。
寫一個程序，要求用戶 一個字符串，然後打印出每個
在新的一行字符。
因此，讓我們三分鐘的時間寫 這個程序，然後，我們將對其進行編碼
作為一個群體。
>> 抱歉。
你需要看到這一點嗎？
>> 學生：
>> JASON HIRSCHHORN：確定。
讓我們多一分鐘的代碼這一點， 或至少​​開始瀏覽網頁就可以了。
>> 所以，你可以繼續工作，但我要去 開始經歷它。
像以前一樣，我在屏幕上 ＃＃cs50.h，包括stdio.h中。
int類型主作廢。
主要的大括號內，我有 兩點意見，偽代碼。
其一是要求一個來自用戶的字符串。
二是打印出每個人 在新的一行字符。
所以，安娜，你能不能給我問 一個來自用戶的字符串？
>> 學生：printf的。
>> JASON HIRSCHHORN：printf的？
>> 學生：是的。
（
>> JASON HIRSCHHORN：（
>> 學生：“給我一個字符串。
>> JASON HIRSCHHORN：“給 我STR - 哎呀 -
字符串。
>> 學生：/ N“）分號。
>> JASON HIRSCHHORN：結束的字符串， 閉合的括號，分號。
>> 學生：是的。
然後，下一行，串 S =得到的字符串。
>> JASON HIRSCHHORN：字符串 S =得到的字符串。
>> 學生：是的。
然後是（）
>> JASON HIRSCHHORN：（）
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
太棒了。
所以我要得到一個字符串 我要保存在什麼？
什麼是變量 您創建的嗎？
>> 學生：String的。
>> JASON HIRSCHHORN：變量 稱為s。
字符串類型。
沒錯。
接下來的事情，我們要的是打印出來 每個字符在新的一行。
誰可以給我代碼嗎？
[聽不清]？
你可以把它給我嗎？
>> 學生：當然。
>> JASON HIRSCHHORN：讓我們做吧。
對不起。
我不喜歡重複你說的話 因為你得到它的權利，但我
有重複，當他們 抄寫這一點，他們可以得到所有
的文本改編出來。
所以，你可以繼續說話。
不幸的是，我有 說你。
我很抱歉，但 -
>> 學生：那很好。
對於INT I = 0
>> JASON HIRSCHHORN：INT I = 0
>> 學生：我小於 -
>> JASON HIRSCHHORN：分號。
>> 學生：在此之前，我們可以把一個 可變的，所以你得到的int名長度？
>> JASON HIRSCHHORN：哦，你不要 想要把分號？
確定。
所以，你想要什麼後做零？
>> 學生：我想要得到的 字符串的長度和
設置到一個變量？
>> JASON HIRSCHHORN：OK， 所以我怎麼做呢？
>> 學生：所以你做INT長度=
>> JASON HIRSCHHORN：詮釋長度=
>> 學生：S-T-R-L-E-N。
>> JASON HIRSCHHORN：S-T-R-L-E-Ñ -
>> 學生：的​​S。
括號內。
>> JASON HIRSCHHORN：（S）。
>> 學生：那麼我認為你必須 把兩個整數之間用分號隔開。
>> JASON HIRSCHHORN：分號 零後？
>> 學生：是啊。
然後放一個分號後， 你說，我不到長度。
我長度小於 是可變的。
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
>> 學生：我+ +。
>> JASON HIRSCHHORN：我+ +。
還有我們的for循環。
OK，在for循環中。
>> 學生：然後做的printf。
>> JASON HIRSCHHORN：printf的。
>> 學生：括號內。
>> 的JASON HIRSCHHORN：括號，報價。
>> 學生：括號，引號，％C / N。
>> JASON HIRSCHHORN：％C，“確定”。
>> 學生：/ N。
>> JASON HIRSCHHORN / N。
>> 學生：休息的報價。
>> JASON HIRSCHHORN：閉合的引號。
>> 學生：逗號。
>> JASON HIRSCHHORN：逗號。
>> 學生：S.
>> JASON HIRSCHHORN：S。
>> 學生：支架。
>> JASON HIRSCHHORN：支架I。
>> 學生：然後關閉括號。
>> JASON HIRSCHHORN：封閉括號。
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
太棒了。
因此，讓我們保存這個。
讓拼寫。
哦，男孩。
我有一對夫婦的錯誤。
第11行的第一個錯誤，它說， 預期表達，它給
我的錯誤，第二 整型，有錯誤。
有一些錯誤圍在那裡。
有誰知道什麼樣的錯誤，是嗎？
庫爾特？
>> 學生：我認為它應該 是一個逗號，而不是一個分號。
>> ，JASON HIRSCHHORN：OK，逗號 而不是分號。
因此，我們需要修復？
>> 學生：
>> JASON HIRSCHHORN：還有什麼 我們需要修正？
>> 學生：我們有包括string.h中。
>> JASON HIRSCHHORN：包括string.h中。
在哪裡我需要的是什麼？
>> 學生：同一個地方，你包括 其他的東西，右
之後包括stdio.h中。
>> JASON HIRSCHHORN：讓我們來看看如果這樣運行 首先是因為一般來說，我喜歡
解決一件事第一，然後運行 它，然後看看我們得到的錯誤。
因此，我們要清除終端 與控制n，讓我們做法術。
因此，第11行的另一個錯誤。
預期分號。
而且我還得到 此線路上的錯誤。
所以，還沒有給我一個錯誤說 不明白strlen的是，
但它給我的錯誤 行，所以什麼是錯的？
馬克？
馬庫斯。
>> 學生：你必須刪除 第二個int類型聲明？
>> JASON HIRSCHHORN：刪除 第二個int。
讓我們試試這個。
現在清除的終端。
讓拼寫。
錯誤。
隱式聲明庫 strlen函數。
所以，現在我們看到這個錯誤。
我們需要包括什麼？
>> 學生：string.h中。
>> JASON HIRSCHHORN：包括string.h中， 我們要做的＃include string.h中的頂部
在屏幕上。
讓我們保存，拼寫。
現在編譯。
所以，再一次的事情，我們需要 記得在for循環時，12號線
我們設置它，INT I = 0， 長度= strlen的（）。
>> 這是一個很好的策略。
這樣的風格是偉大的， 這是偉大的設計。
我們可以進入這些原因後， 但這樣一來，你只需要調用
strlen的一次，而不是每一個 時間運行循環。
但是，您需要使用一個逗號 你不需要重新詮釋。
如果你宣布這兩個 變量在一起，你
不需要再次詮釋。
然後，如果你要使用strlen 這是另一種庫
的功能不包括在 stdio.h中或cs50.h的的，使
一定要包括string.h中。
庫爾特？
>> 學生：那麼，如果你並不需要 說是什麼類型的長度，是否
意味著它必須是一個int？
你不能有兩個不同的 類型嗎？
>> JASON HIRSCHHORN：所以，你可以 有兩種不同的類型。
長度是一個int在這裡，雖然。
長度是一個int，因為它是逗號 然後同樣的事情。
>> 學生：所以它假定它是怎麼回事 作為第一個是相同的嗎？
>> JASON HIRSCHHORN：沒錯。
我們不打算現在做到這一點，但你 可以包括兩個變量對
同一個聯機使用一種數據類型。
所以詮釋的x，y將創建 兩個變量。
因此，整數X，Y，如果我們做的是，它給 我一個未使用的變量x和y，因為
我們不使用它們。
所以把無效之前，僅僅是一個 花哨的技巧，如果你不使用
的東西，要使用它。
但是，正如你看到的，我創建了x和y 在同一線路上用逗號。
它創建兩個整數 就在這裡。
所以，是的，完全可以創建 兩件事情在同一行上
用逗號分隔。
讓我們擺脫這些，雖然。
>> 因此，有法術。
謝謝你們為我們編碼。
讓我們把它更多的時間，運行它。
給我一個字符串。
[聽不清]，你做了大部分。
字符串是什麼？
>> 學生：您好。
>> JASON HIRSCHHORN：你好。
H-E-L-L-O，同一行上的每個字符。
看起來不錯。
讓我們再次運行它。
總是要檢查 為一角案件。
有什麼好的角落的情況進行檢查？
>> 學生：多少？
>> JASON HIRSCHHORN：一個數字。
所以，我會投入1，它打印出1。
它不要求的信件，所以 它看起來像數字工作。
好角落的情況進行檢查。
什麼是另一個很好的角落 檢查的情況？
>> 學生：一個空字符串。
>> JASON HIRSCHHORN：嗯？
>> 學生：喜歡一個空字符串。
>> JASON HIRSCHHORN：空字符串。
所以，讓我們不要把任何東西。
什麼被打印出來？
>> 學生：沒有。
>> JASON HIRSCHHORN：沒有。
好像它的工作原理。
你可以嘗試更多的角的情況下，但 一般的數字，不同的數據
偉大的嘗試，也什麼都不是。
沒有，零，底片總是 偉大的事情，嘗試和活動
測試應該，事情當然我們會測試 和檢查50測試。
任何問題spell.c？
>> OK，讓我們的後腦勺。
我還有一個程序 你們寫。
它稱為students.c。
這是一個程序，要求用戶 五個名字，然後隨機選擇
打印出的名字之一。
這個程序是多一點點 參與比過去兩年中，我們寫道，
那麼，為什麼我們不採取五分鐘 單獨代碼，然後我們會
代碼為一組。
>> 該方案還涉及到一些東西 你可能沒有見過，所以如果
你有一個問題，怎麼辦 我這樣做，舉起你的手。
我會過來和指向你 在正確的方向。
但我們也這樣做，因為這 將是一個很好的方式來介紹一些
是棘手的話題。
>> 因此，它的工作原理，對不對？
>> 學生：是啊。
>> JASON HIRSCHHORN：每當你打開一個 習題集，有很多方法可以做到
，但有些更 優雅的比別人多。
讓我們長驅直入
＃包括cs50.h.服務
＃包括stdio.h中。
int主要的空隙中，花括號。
大括號內， 我有兩點意見。
第一個問 5名用戶。
第二個是，隨機選擇 打印出來的名字之一。
因此，讓我們做的第一個，問 5名用戶。
誰已要求用戶5名 並能告訴我該怎麼辦？
只有兩個人做的第一部分。
三個人做的第一部分。
四，五。
湯姆，你怎麼辦呢？
>> 學生：你聲明一個字符串 然後將其命名，支架五。
>> JASON HIRSCHHORN：字符串 命名支架五。
那麼，什麼是做這行， 字符串名稱支架五？
>> 學生：你會聲明 一個字符串數組。
>> JASON HIRSCHHORN：這是 一個字符串數組。
多少字符串會 適合在這裡嗎？
>> 學生：五。
>> JASON HIRSCHHORN：五。
優秀的。
我們要調用它的名字，因為 我們要得到多個。
OK，接下來呢？
>> 學生：那麼你 有一個for循環 -
>> JASON HIRSCHHORN：For循環。
>> 學生： - 對於i = 0。
>> JASON HIRSCHHORN：為（int i = 0。
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
>> 學生：我不到五。
>> JASON HIRSCHHORN：我不到五。
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
>> 學生：我+ +。
>> JASON HIRSCHHORN：我+ +。
>> 學生：然後關閉括號。
>> JASON HIRSCHHORN：閉合的括號， 然後一些大括號。
花括號內的？
>> 學生：printf的。
>> JASON HIRSCHHORN：printf的。
>> 學生：開括號，名稱為％d。
>> JASON HIRSCHHORN：對不起？
>> 學生：名稱。
>> JASON HIRSCHHORN：名稱。
>> 學生：空間，然後％D。
>> JASON HIRSCHHORN：名稱，空間，％D。
>> 學生：/ N，然後關閉。
>> JASON HIRSCHHORN：所以名稱，空間， ％D / N，右括號。
>> 學生：逗號，I + 1。
對不起。
封閉報價，然後逗號，我+1。
>> JASON HIRSCHHORN：休息 引號，逗號，I +1。
>> 學生：是的。
然後下一行 -
>> JASON HIRSCHHORN：+ 1。
>> 學生：是的。
然後下一張幻燈片 名稱支架I。
>> JASON HIRSCHHORN：下一行 名稱支架I。
>> 學生：獲得字符串。
>> JASON HIRSCHHORN：= -
資本G-E-T -
字符串。
哎呀，對不起。
>> 學生：開放式，封閉式括號 然後 -
>> JASON HIRSCHHORN：開放，封閉括號。
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
好了，你初始化數組 字符串，名稱，然後經過一個
for循環，並打印出一些五倍 提示給用戶，然後存儲
五根弦。
沒有任何人有任何 調整？
湯姆，我想每個人都 同意你的。
看起來還不錯。
確定。
你為什麼要這麼做i +1的，但？
>> 學生：我的意思是，沒有 是的，但我+1，它是
名稱命名五。
否則，這將是名 僅舉四個零。
>> JASON HIRSCHHORN：所以，你做了我+1 因為否則它將有
通過四個零打印出來，因為 這電腦怎麼想的，但人類
真的不讀這樣的。
這是另一回事 你會遇到的問題。
有時，當你打印出來的東西 給用戶，你會想它
有點漂亮，做 i +1的在這種情況下，是一個
方式，使其更漂亮。
>> 我也看到了五進行兩次，字符串名稱 範圍是5，i是小於5。
我知道你從哪裡得到的五個。
我告訴你猜對了 五個名字。
但是，如果我們想使代碼 有點更強大的，有一件事我們
能做的就出在這裡，外面的int， 我們可以做這樣的事情，
＃定義，我們可以做名稱5。
>> 所以基本上，無論我寫的資本 N，資本大寫M，A，大寫字母E，
大寫字母S，則該字符串，它將取代 5代碼。
還是讓我們只是把它 - 我們將 只需撥打號碼。
所以我定義全部大寫 號碼為5。
>> 所以，現在無論我有5號，我 可以將其替換所有瓶蓋號碼。
而現在，如果我想改變號碼 名字，所有我需要做的是
這一條線，4號線，在那裡我有 ＃定義5號，改到10，
或改變4。
當你的代碼越長，你不是 要記住所有的地方，你
把你想要多少名，並在 為了讓你不要錯過，這是
做到這一點，找到一個很好的方式 往上頂，然後只使用該短語
各地你的代碼。
馬庫斯？
>> 學生：那是風格的首選 不是全局定義
常數n？
>> JASON HIRSCHHORN：是 文體不是全局的首選
定義一個常數n？
所以你說你能 做數= 5？
>> 學生：他們有輔音 在C或沒有？
>> JASON HIRSCHHORN或const - 等於。
所以，你說的只是 一個全局變量？
>> 學生：是啊。
>> JASON HIRSCHHORN：文體， 有沒有一定的權利
回答，但那些都更好 不僅僅是扔這些隨機
整個代碼中的數字。
我們稱他們為幻數。
當我看看你的代碼或當 任何人的閱讀，通過它，他們
要的不只是這些隨機數 沒有意義的。
連號26，它一般是 字母表中的字母數，
這是更好地定義字母往上頂 並保存在該字符串中的26號，
如果是有道理的。
>> 或者問題上設置一個，而不是 - 再次，我們不談論這個在
的時候，但不是僅僅拋出 到處25或10，你可以
節省25號的季度或10 毛錢，這使得它更容易
無論是誰，通過閱讀你的代碼 明白你為什麼選擇了這個數字。
，也為你，如果你曾經想要的 更新你的代碼，這使得它有點
更健壯。
是嗎？
>> 學生：這是代碼也將 後為我們提供？
>> JASON HIRSCHHORN：所有這些代碼 我們一起寫的是
將通過電子郵件發送給你 傢伙。
是。
因此，要求用戶5名。
隨機選擇和打印 的名稱之一。
誰這樣做行嗎？
這是這裡最棘手的線。
對不起，湯姆。
你做了一個很好的工作，但 這是一個有點棘手。
馬庫斯，請便。
>> 學生：那麼首先，你要 需要包含stdlib.h中time.h中
>> JASON HIRSCHHORN：所以你說在 頂部，包括兩個庫。
你要我包括S-T-D-L-I-乙 點H，標準庫，
是另一個人呢？
>> 學生：time.h中
>> JASON HIRSCHHORN：＃包括time.h中
因此，這些都是兩個庫。
我假設現在我們將要使用 在這些中所包含的功能
二，這就是為什麼你需要 包括他們？
>> 學生：那麼，你先 會想要寫srand函數。
>> JASON HIRSCHHORN：函數srand。
>> 學生：（（0）
>> JASON HIRSCHHORN：對不起。
函數srand（時間（
>> 學生：0。
>> JASON HIRSCHHORN：0。
>> 學生：）），分號。
>> JASON HIRSCHHORN：另一個封閉的括號？
分號。
我要去只需更換 您零NULL。
它會做同樣的事情，但 通常，你會看到NULL，
我們會談論這個 在第二行。
>> 學生：文體更好？
>> JASON HIRSCHHORN：一般來說，人們 右NULL，但同樣的事情。
>> 學生：INT名。
>> JASON HIRSCHHORN：詮釋名。
>> 學生：=
>> JASON HIRSCHHORN：=
>> 學生：蘭特。
>> JASON HIRSCHHORN：蘭特。
>> 學生：（）
>> JASON HIRSCHHORN：（）
>> 學生：模數。
>> JASON HIRSCHHORN：模是什麼？
字符？
％字符？
>> 學生：百分比字符。
模數定義往上頂。
>> JASON HIRSCHHORN：模數。
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
>> 學生：那麼新生產線中，將printf。
>> JASON HIRSCHHORN：printf的。
>> 學生：（
>> JASON HIRSCHHORN：（
>> 學生：“
>> JASON HIRSCHHORN：“
>> 學生：％S / N
>> JASON HIRSCHHORN：％S / N
>> 學生：“
>> JASON HIRSCHHORN：％S / N“
>> 學生：逗號，空間名稱。
>> JASON HIRSCHHORN：空間 -
>> 學生：哦，我猜， 我們在這裡？
>> JASON HIRSCHHORN：我們稱它的名字。
>> 學生：打開支架，名稱。
>> JASON HIRSCHHORN打開支架，姓名。
>> 學生：休息支架。
>> JASON HIRSCHHORN：休息支架。
>> 學生：）
>> JASON HIRSCHHORN：）
>> 學生：分號。
>> JASON HIRSCHHORN：分號。
OK，讓我們保存。
讓我們把這段代碼。
學生。
讓運行該代碼。
學生。
/學生。 /學生。
名稱之一。
我們會說大衛。
名稱兩種，RJ。
名稱三，羅布。
名稱四，盧卡斯。
名稱五，約瑟夫。
然後它打印出約瑟夫。
>> 所以，讓我再次運行此。
讓我做相同的名稱。
大衛，RJ，羅布，盧卡斯，約瑟夫。
它給了我這一次大衛。
所以我做了同樣的事情，但它給 我不同的東西，這就是
因為，當然，我們要求 一個隨機名稱。
所以我認為，根據我徘徊 在房間裡，大多數人
可能得到的第一部分權利， 設立該陣列，然後讓
所有的名字。
我說的是第10行到16。
但18至21行可能 有些東西，你以前沒有見過，
讓我們通過這些。
>> 這線，的函數srand時間NULL 本質上是 -
對不起，讓我們跳過下來 一條線，RAND（）。
這就給了你一個隨機數， 一個隨機整數。
如果你打的人蘭特， 很多你做 -
M-A-n空間R-A-N-D -
在這樣的終端，M-A-N 空間上R-A-N-D，敲回車。
你會拿出來手冊 將能夠閱讀蘭特的
命令輸出數偽隨機字節 播種後的隨機數
發電機一次。
>> 所以這是一個描述。
這是什麼蘭特，給人 你一個隨機號碼，當
你調用該函數。
不幸的是，這是不是真正的隨機 因為如果你只需要調用隨機
一些種子，一些沒有得到 起點，但它總是會選擇
相同的之一，它使用一個公式 以確定下一個。
所以，如果你調用rand，它只是 給你同樣的事情。
這將是非常可預測的。
實際上，它不會是隨機的。
>> 所以我們需要做什麼，每馬庫斯的 指示給我，種子蘭特
別的東西，這是什麼 的srand函數確實。
種子蘭特的東西多一點 隨機比同樣的事情，
他的播種時間NULL， 是，按照慣例，目前的
時間（以秒為單位）。
>> 所以，你假設每個人的不 要在準確的運行代碼
同一秒內，所以它是一個安全的賭注 時間NULL將是不同的
每次運行此代碼。
安全的賭注，因此，srand函數將種子蘭特 不同的東西每
一次。
因此，按照慣例，當我們想要一個 隨機數，我們寫這條線，
函數srand時間NULL，給我們一個更 更多的隨機種子，然後我們運行
蘭特，這給了我們一個隨機數。
是嗎？
>> 學生：你能說什麼 你的意思是由種子嗎？
>> JASON HIRSCHHORN：如在種子 -
所以蘭特要挑一些數字 它會使用一些
公式得到。
所以它要的東西開始 然後把它變成一種基於
關閉該公式。
如果你總是給它同樣的事情， 它總是會變成
同樣的事情。
所以，第一件事你 給它的種子。
所以，你想給的東西 不同的開始，所以它
會變成不同的東西。
>> ，然後最後，第20行 這被稱為％
模，那就是混亂。
這東西是一點點 不同，在這裡，你真的不
在現實生活中的數學。
但本質上，當你把一個巨大的 號碼，你分在C，
發生的其餘？
>> 學生：被截斷。
>> JASON HIRSCHHORN：被截斷。
所以20除以3是什麼？
這是什麼返回 你，20除以3。
我們很抱歉，10除以3。
這是什麼回報給你嗎？
>> 學生：[聽不清]。
>> JASON HIRSCHHORN：10除以3只是 返回3，不是3餘1。
那麼，什麼10模3返回 僅僅是餘數，1。
所以，如果你想知道什麼10分 3，你會
做10除以3，你會得到你的3， 然後你會做10模3，
你會得到一個1。
所以，你會意識到10分 3 3，其餘1。
>> 在此行中，蘭特 的任一整數，本質上。
因此，模說，它除以 號，這是在這種情況下，5。
如果你曾經除以一個數字， 整數總是有小於
這個數字。
所以，如果你數除以5， 剩下的總是要
通過四個零。
這是多麼的數學工作。
>> 所以一個一個較小的moduloed的大量 數將始終返回
其餘部分將始終返回一些 數數比您少
除以。
沒有任何人有任何疑問， 模的，因為它會非常，
非常方便，所以我要確保 大家都明白嗎？
涼爽。
而且，我們看到，這個程序工作。
OK，繼續前進。
>> 所以接下來，我們將要進入 的功能，我們打算去
通過這個東西剩下的漂亮 很快，因為我​​想獲得
命令行參數。
所以基本上， 如您所見，黑盒子。
他們拿東西名為參數， 他們做了他們，無論是
改變或創造一些副作用， 最後，他們吐
出來的東西，這是 返回值。
有誰能夠給我一個理由 為什麼我們會使用的功能呢？
任何人嗎？
其中一個原因就是為什麼我們要使用的功能嗎？
有人嗎？
我看到了兩隻手。
一個很好的理由是什麼？
馬庫斯？
>> 學生：如果你必須調用相同的 大塊的代碼多次。
>> JASON HIRSCHHORN：OK，如果你需要 調用相同的塊
多次編碼。
傑夫，你是否也有不同的原因嗎？
>> 學生：只要 您可以編寫更少。
>> JASON HIRSCHHORN：您可以編寫更少。
右。
如果你想要做的東西很多 -
在上面的代碼中，我能有 書面串五倍，但
for循環，使它看起來更好， 你必須寫更少的代碼。
函數是一種類似的想法。
如果我想要做同樣的事情很多， 將它移動到一個函數，並調用
每次功能。
這會為你做那件事。
這是一個很大的原因 使用功能。
>> 因此，解剖函數。
函數一般會 這個樣子。
它會開始返回類型， 那麼你會得到這個名字。
它會採取的論點，否則 已知參數，和內部
那些花括號，你會 寫你的代碼。
>> 我們已經看到了一個功能很多。
這是主要的。
這裡主要是疊加 解剖我有更早。
詮釋權在這裡表示什麼？
什麼詮釋是什麼意思？
當我寫的詮釋主要（無效）。
>> 學生：返回類型？
>> JASON HIRSCHHORN：對不起？
>> 學生：返回類型。
>> JASON HIRSCHHORN：詮釋是 返回類型，分毫不差。
主返回一個int。
主要是什麼？
>> 學生：功能名稱。
>> JASON HIRSCHHORN：主要是 的函數名。
完全正確。
和無效的呢？
括號內的什麼是無效的？
>> 學生：它並不需要 任何外部的價值。
>> JASON HIRSCHHORN：所以無效 -
正確的。
括號內的，我們把 參數或參數
功能需要？ 黑盒子內。
當你寫無效，你說 這需要什麼英寸
因此INT主要無效意味著主要的 不採取任何英寸
>> 花括號內的，我們有一些 代碼，然後我們看到了在年底
返回零。
歸零什麼意思？
好吧，我們談到的返回類型。
主要需要返回一個int。
這是這一行做什麼。
它返回一個int，零。
>> 當然，我們還沒有看到，很多 因為在編程中，我們做
我們做的機器和編譯器 我們用如今，你
不需要該行。
主要是夠特別，它知道 主，只是當你到達終點
返回零，如果一切都很順利。
事實上，如果事情不順利， 主往往會返回不同的
數字標誌著東西 與你的程序出了錯。
>> 所以，通常當你看到代碼，你 不寫返回零，但它的好
知道背後發生了什麼事 場景，因為每當你寫
另一種不同的功能， 您將需要
包括返回行。
如果你說我要去 返回一個int，你必須
寫返回的東西。
如果你說在這裡無效 年初，無效的主要無效，
例如，那麼它並沒有返回 什麼 - 空虛意味著什麼 -
所以你不需要返回的行。
但你曾經寫的東西，這不是 無效的返回類型，你需要
一個回報，你說行 需要把東西
類型相匹配的。
任何問題嗎？
甜。
>> 範圍。
這是我們已經 以及感動。
每個變量，因為我們知道，有一個 一定範圍內，這是基本
談論變量 可能會或可能不會被引用。
我喜歡說會發生什麼 在大括號中保持
花括號內。
因此，例如，如果我們看一下這段代碼， 我們定義了一個全局變量
為主，詮釋一個外， 這裡在頂部。
我們調用另一個 int一個主裡面。
我們有一些比較大括號， 我們調用另一個INT的一個。
>> 我們有三個代碼。
這些都是不一樣的東西。
我創建了三個不同的變量。
然後裡面這些內在的捲髮 牙套，我說A = 4。
哪一個是談論， 第一個，第二個，
第三只呢？
>> 學生：第三個。
>> JASON HIRSCHHORN：在談論 關於第三個。
所有那些實際上可以 談到在這個特殊的
例如，由於其範圍 到這些最裡面的大括號。
然而，當你調用東西是一樣的 名稱，稱為隱藏的東西。
所以你只處理或修復，或使用 最近的變量，或者一個
最接近你。
所以，裡面第三個是在這裡，這是最接近 該行中，a = 4，所以它
影響第三。
和最後一行中，a = 2，a是 ，談論，所述第一，第二，
第三個是？
>> 學生：二。
>> JASON HIRSCHHORN：在談論 關於第二個是。
當然，第三個是最接近 它的代碼，但第三個
外部不存在 那些大括號。
一旦你到那個封閉的捲髮 梅開二度，這就像它不見了，
本質上。
所以，唯一的兩個你已經離開的是那些 第2個，當然，現在
它的最近的第二個。
>> 所以這是一件好事， 記得大約範圍。
例如，我敢肯定，你遇到 這在一個do while循環。
如果初始化的變量裡面 DO WHILE循環，然後你試試
訪問它之外，你可能 像，這得到了一些警告
變量不存在。
那是因為範圍的想法， 事情只存在
那些大括號內。
大括號是像一個巨大的擁抱 你給你的代碼，又是另一回事
去想它。
>> 因此，這是另一種功能，這 你們的代碼​​，hellofunction.c。
我們要跳過的現在，但 這是我鼓勵你
在自己的練習。
寫一個方案，其中主要電話 另一個函數，打印出
問候給用戶。
它本質上是“世界，你好 和抽象成的printf
另一個功能。
但我們不打算這樣做，現在 因為我們沒有盡可能多的時間
離開，我會很喜歡。
>> 所以函數聲明。
我們已經看到了這個前。
如果你想要寫另一個函數， 你需要讓計算機知道
主知道它的存在。
所以，我們做的是上面的主，我們寫 返回類型，名稱，和
參數，然後向下跌破主力， 這裡，我們實際上該行複製
然後編寫實際的代碼。
那麼這樣一來，如果你調用函數 主要在頂部，主知道，
你好存在，例如，如果我是 打電話招呼，然後它看起來
實施向下跌破。
會發生什麼事，如果不包括這 線向上頂，無效（無效）？
>> 如果不包括此行 和主呼叫你好，我是
要得到一個錯誤。
我要得到一個錯誤，因為 編譯器不知道
這件事情的存在。
這就是為什麼我們 ＃包括cs50.h.
基本上cs50.h做 放置得到字符串在那裡。
推桿得到int的有。
它把所有這些功能 前主讓原型時
你叫他們在主，主知道 這些東西的存在。
這是那些h文件。
所以，如果你打算讓自己的 功能，你一定要確保
在那裡，你把原型。
關於這個到目前為止的任何問題？
>> 命令行參數。
這就是我們要去完成 ，然後希望我們能
擠在一些pset中。
我不知道，如果我們將能夠擠 因為時間，但
你們誰在這裡，如果你 傢伙想了一下後說，我們
可以在它外面。
但我們要完成 命令行參數
最後15分鐘。
我們醒了，邁克爾？
你醒了嗎？
好。
我不知道，如果你睡 閉上你的眼睛。
這將是非常棘手。
>> 命令行參數。
這是一個的方式來傳遞信息 進入程序。
最後，我們會遇到別人。
但是，從本質上講，我們要停止 寫詮釋的主要（無效）如果我們想
採取一些命令行參數。
我們打算寫這個東西 被稱為國際主要（INT ARGC，
串argv的括號內。
這是令人目不暇接。
這是一個很大的字母中所沒有的 人類的英語，所以我們要
現在他們解壓。
>> ARGC參數計數 -
再次，所有這些都將 可在線 -
參數的個數。
ARGV參數向量， 這些都是自己的論據。
這是一個字符串數組。
實際上，我們已經看到了一個陣列 今天之前的字符串。
我們創建了一個在過去 程序編碼。
>> 因此，這裡是一個例子。
我寫。/ ohai CS50節 我的命令行。
ARGC在這種情況下等於3。
ARGV支架0 ohai，argv的支架1 CS50，argv的支架2部分。
同樣，ar​​gc是參數的個數， 把你絆倒了一點
位，我們總是算的名稱 函數的第一個參數。
因此，在這種情況下，有三個 參數的函數名
那麼這兩個，我鍵入。
>> 下一步，我們要拯救那些 參數本身argv中。
再次，正如我們之前看到的，我們做 這在過去的程序編碼。
您可以將通過數組 argv和那些字符串。
本質上這是我們做了什麼 年底我們的最後一個節目。
我們挑了隨機的名字，然後去 名稱支架無論和印刷
出字符串設在那裡。
>> 論只是一個陣列的頂部，由於 字符串本身陣列，
談到，你可以有陣列 的陣列，這是
基本上argv是什麼。
一種方式，你可以考慮一下 這是行和列。
現在，我可以得出這樣的權利。
所以argv的 -
不擦除。
讓我們借鑒ohai下。
>> 所以，如果我寫的，ohai CS50部分， 我要截斷
在這個例子中的一節。
但是，從本質上講，我的多維 陣列，ohai CS50
我們要做的教派。
所以在這裡，我可以訪問 -
如果我只是給argv的一個數字 -
這是錯誤的。
在這個圖中有什麼不對？
>> 學生：從零開始。
>> JASON HIRSCHHORN：它應該 從零開始。
也許我應該還可以旋轉它，但 因為我已經畫了，我
要離開現在。
但是，從零開始。
這是正確的。
對不起，如果這是小的。
你們可以看到嗎？
所以，如果我做的argv 0，我會 得到所有ohai。
如果我做的argv 1，我會得到所有的CS50。
如果我做的argv 2，我會得到所有的教派。
>> 但現在，正如我們所說，字符串 陣列本身。
那麼我能做什麼我就可以把這個 作為一個多維數組，並且我
可以做一些沿線 argv的0，0，這給了我只是
字符0。
ARGV 0，1，這給了我只是ħ。
ARGV 1，3，給我 0這裡CS50。
>> 因此，因為字符串本身 陣列，我們把
在另一個數組。
我們現在有數組的數組，我們 我們的第一個數組索引和
然後我們第二個數組的索引。
和你所期望的，我們這樣做 只是把那兩個 -
只是我們做的方括號 旁邊另一個。
所以在這個例子中，argv 1是CS50和 argv的1，2，就像我們所說的，僅僅是5。
沒有任何人有任何疑問， 多維數組？
你們做得真棒。
甜。
>> 因此，我們有另一個程序在這裡， 這是我們的最後一件事
現在要做的。
所以，我要你寫一個程序， 以用戶的全名，只有兩個
兩個命令行參數，最後， 打印出問候
用戶包括他們的名字。
那麼，為什麼不把三個或四個 分鐘做這個，然後我們一起去
以上為一組，並 然後我們將收官？
>> 再次，在這裡，當我們說一個 描述每個用戶的全名
這個問題，它應該是命令 行參數，不使用字符串。
是啊，馬庫斯？
>> 學生：所以當你說兩個命令 行參數，除了
/運行，或者 -
>> JASON HIRSCHHORN：好問題。
做的，包括。/運行，三 命令行參數。
或包括/個性化， 這種情況下，因為這是
此文件的名稱。
所以ARGC將有三個。
不過，我想只有兩個參數 給程序。
我應該指定。
之前，我交的，我會作出這樣的改變 這些，並送他們到你們。
>> 學生：如果你 有一個中間的名字嗎？
>> JASON HIRSCHHORN：如果你有一個中間 名字，你的運氣了。
對不起。
或者，如果你只去夏奇拉 你也是出於運氣。
是嗎？
>> 學生：所以當人們沒有 cs50.h，他們定義的argv
為char明星argv的？
或者是它仍然被稱為串的argv？
>> JASON HIRSCHHORN：是的。
因此，字符串，我們再次掩蓋了什麼 究竟是有發生。
這是怎麼回事也許要解​​壓縮 上週三，但很快。
這就像訓練車輪。
因為從本質上講，它是 同樣的事情。
>> 因此，讓我們一分鐘程序 這一點，然後我們會去
為一組，然後 就像我說的，包裹起來。
而且我覺得他們仍然是額外的糖果， 所以你們應該有希望
，請採取這一。
>> 很抱歉，如果你還在寫， 但我想潛水，我們
可以一起完成。
所以，我已經寫了＃ cs50.h＃包括stdio.h中。
詮釋的主要（無效），捲髮，大括號 括號，裡面三行
偽代碼，用戶的全名， 兩個，只有兩個命令行
參數，打印出問候 用戶包括他們的名字。
>> 因此，第一個， 用戶的全名。
誰可以幫我 用戶的全名嗎？
我該怎麼做的那部分？
難道你們這樣做，第一部分？
以用戶的全名。
那麼，對於一個命令行 的說法，我應該寫什麼？
我應該改變什麼 我的函數聲明？
>> 學生：你不希望 它是無效的了。
>> JASON HIRSCHHORN：沒錯。
我不希望它是無效的。
我想要什麼？
>> 學生：INT ARGC。
>> JASON HIRSCHHORN：INT ARGC。
>> 學生：弦樂的argv。
>> JASON HIRSCHHORN的String argv的。
>> 學生：支架，支架。
>> JASON HIRSCHHORN：支架，支架。
這完全正確的，那就是 其實我會怎麼得到
用戶的全名。
他們打算把它放在那裡。
所以，一個人的工作。
所以現在我想兩個，只有兩個 命令行參數。
所以，諾亞，什麼是盡我所能 檢查數量的命令
我行參數？
>> 學生：你做一個if語句。
>> JASON HIRSCHHORN：如果 聲明中，完全吻合。
我想要什麼條件？
>> 學生：如果大於3的argc。
>> JASON HIRSCHHORN：如果ARGC 大於3。
如果ARGC大於3，怎麼做？
>> 學生：返回1。
>> JASON HIRSCHHORN：返回1。
將確保我有 兩個只有兩個？
>> 學生：
如果argc是大於 3和小於2。
>> JASON HIRSCHHORN：如果argc是更大 比3和argc小於2。
什麼方法可以讓我寫這篇文章，在短短 一行上，或者不使用該
布爾運算符？
>> 學生：這不是等於2。
>> JASON HIRSCHHORN：如果ARGC 不等於2。
沒錯。
因此，如果argc是不等於2，即 會給我這個程序，
個性化，當我跑的時候， 會給我多少
命令行參數？
我檢查了多少？
>> 抱歉。
讓我改寫了。
如果ARGC = 2，沒多少東西 用戶寫入行？
>> 學生：一。
>> JASON HIRSCHHORN：只有一個問題。
所以之前，你是對的，諾亞。
什麼我確實需要放在那裡？
>> 學生：那等於3。
>> JASON HIRSCHHORN：ARGC 不等於3。
因為我想，我要等於3 個性化的附加其他兩個。
因此，如果ARGC不等於3，返回1。
你為什麼說返回1？
>> 學生：因為， 意味著它是錯誤的。
>> JASON HIRSCHHORN：這意味著它是錯誤的， 什麼該怎麼辦？
>> 學生：重新提示用戶。
>> JASON HIRSCHHORN：這將退出 程序，所以它會運行
了，但我們不會有什麼關係 在這裡再次要求他們。
我沒有要求。
所以這是完全正確的。
返回1只退出程序。
太好了。
>> 並打印出用戶打招呼 ，其中包括他們的名字。
我怎樣才能做到這一點呢？
安娜？
>> 學生：printf的。
>> JASON HIRSCHHORN：printf的。
>> 學生：（“
>> JASON HIRSCHHORN：（
>> 學生：“你好
>> JASON HIRSCHHORN：“你好
>> 學生：％S
>> JASON HIRSCHHORN：％s的
>> 學生：/ N
>> JASON HIRSCHHORN / N
>> 學生：“
>> JASON HIRSCHHORN：“
>> 學生：ARGV
>> JASON HIRSCHHORN：對不起？
>> 學生：ARGV
>> JASON HIRSCHHORN：ARGV
>> 學生：方括號1。
>> JASON HIRSCHHORN：方括號？
>> 學生：1。
>> JASON HIRSCHHORN：1。
>> 學生：）和分號。
>> JASON HIRSCHHORN：）分號。
讓我們運行這個。
使個性化。
/個性化。
它只是退出。
為什麼退出？
>> 學生：你沒有提出任何論據。
>> JASON HIRSCHHORN：我沒有 把任何參數英寸
看起來不錯。
你們釘。
如此反复，你走進argv和你 在開始的argc檢查。
這些是兩個重要的 事情要記住。
因此，在我們之前，我們最後兩分鐘 離開，我們不會給pset兩個，但
就像我說的，如果你想留後 10分鐘，我想他樂意去
用你們的邏輯 這些問題集。
我們有很多今天覆蓋 所以我沒有得到他們。
通常情況下，我想包括 在末端。
所以，如果你要堅持圍繞， 堅持10分鐘左右。
我們會做到這一點。
>> 然後，我開始提到的， pset的零和一，我們會拿到
反饋回給您 盡快。
我們的目標是獲得的pset一個反饋， 註釋部分，
之前的pset二是由於。
所以，如果你犯了一些錯誤或 文體，事情可能會更好，
你就會有這些信息，以便您 不會做同樣的事情在pset中兩個。
然後在未來，你會得到所有 您的的PSET反饋和意見
回在下單前到期。
>> 最後，如果我可以把在另一個 插頭反饋。
這是你的第一個部分。
這是我的第一部分 今年教學。
去那裡。
寫的東西​​，好的和壞的， 我會用它來作
部分在下一次做得更好。
最後，再次，如果你需要 什麼，讓我知道。
我更樂意幫助你們。
如果你只是想糖果，我 將有額外的糖果。
我很高興把它給你。
>> 這將是一個驚人的課程。
這是一個，如果不是我喜歡的 當然，我已經在我的整個生命，
我希望這將是 為您精彩。
所以，我想要做我的一切力量 ，你真棒。
我要發送一封電子郵件，如果你 在我的部分或諾亞，
去嘗試，並安排與各 你們的時間檢查過
接下來的幾個星期，這樣我就可以得到 感你的CS背景是什麼，
它也將幫助我定制這些 部分，以更好地滿足您的需求。
所以，這就是我得到一字排開。
再次，我會看到你外 如果你想在那裡。
這是一周兩節。
謝謝你們這麼多。