DAVID馬蘭:這是CS50,這 是週一開始。 我們認為我們會做什麼,拉回來 設備的帷幕,許多 你可能已經走過 多年,但也許遇不到 知道它是什麼。 所以此裝置可能會看 現在對你最熟悉。 [視頻回放] 一個勝利的數學和 機械技能是這個偉大的新 自動計算器 哈佛大學。 把複雜的數學問題 通過機器以編碼的形式 磁帶在一分鐘內準確地解決 所需要的時間的分數 人為計算。 加快各種形式的設計 數學和科學的研究, 巨型機械的大腦會 美國 海軍直到戰爭結束。 [END視頻播放] 國寶馬蘭:所以,這就是你看到的 這是科學中心, 該機器現在被安置。 實際上,你只看到它的一部分。 目前只有一小部分是顯示, 這是一個設備,稱為 馬克我,這是本質 一個真正巨大的計算器。 它的繼任者Mark II的, 它從Mark II的,我們實際上 得到一點點的詞彙。 這是首次記錄 你即將成為所有的東西 在太熟悉 當然學期 - 即,一個bug。 所以它變成了在一個點上的標記 II器件不能正常工作 正常,經仔細檢查, 確實有錯誤 - 飛蛾 - 該蛾 - 在裡面。 並從那時起,我們已經提到 方案錯誤的失誤。 所以來。 說到視頻,好吧,如果你 還未知道CS50 顯然攝製。 講座通常上去後 類排序預發布 未經編輯的格式,然後一天或兩個 以後,我們提出了一個更高的分辨率 和更高質量的版本。 您可能還記得瓦妮莎,誰的 財富與谷歌的玻璃打, 我想起 充電時間。 所以,如果你要來下課 玩,他們應該今天上班。 如果你想看到什麼凡妮莎 看到其他的一天,你會看到什麼 - 讓我提高音量 這裡我的筆記本電腦上。 [視頻回放] 因此,讓我這是隊列。 好的。 所以觸摸。 好的。 OK,玻璃。 錄製視頻。 好的。 凡妮莎? [END視頻播放] 國寶馬蘭:好,那麼原因 它沒有工作你最 末級是因為我進行 記錄一個小時的 鏡頭後指著自己 我把眼鏡。 所以今天,我將離開他們,但是謝謝 凡妮莎是這樣一個 很好的運動。 與此同時,一對夫婦的公告 之前,我們銳意進取。 所以,CS50有一個傳統做 我們可以嘗試提出一個非常 大班感覺較小。 為此,每星期五, 我們聚集在一間餐廳 廣場,火和冰,30或40 你的同學,我自己,一些 教學人員,我們只是 有一個非常休閒的午餐。 我們經常邀請朋友從行業, 之類的校友,校友 大專,真的只是為了聊天每個 評頭論足,談人生 大學,在大學生活, 之類的。 所以,如果你想分享 第一個這樣的午餐在本星期五 下午1:15,頭 在一些點的URL。 空間是有限的,所以我們會做 先到先得。 但我們會再這樣做經常性 的基礎上,所以不要擔心,如果你不這樣做 使它成為這第一批。 現在,在資源方面提供 當然由curricularly, 有一個整體轉換,如果你還沒有 拉升課程網站 已經,尤其是講座,下 你會發現,一切都 上週我們沒在那裡,無論是 在視頻和某種 電子表。 但是,超出了影片,你會發現 現在有全文 謄本,例如, 每一堂課。 因此,如果我們真的回到這個屏幕 這裡與瓦妮莎,然後導航 在屏幕的右下角, 你會發現,其實,不為 上週五的演講,但如果我們回去 週三,因為此功能需要 幾天之後,你會發現,你可以 實際上拉起來,更好或 更糟的是,每一個字,我還是 舞台上的一名志願者說。 而且遠遠不止這些。 實際上,你可以搜索它,你可以 點擊任何這些句子,跳 這一點在視頻,朝 和結束時使材料的所有 更多通航。 但是,如果你寧願不遵循它 在這樣的細節,你會發現, 例如,這個小菜單,在這裡為1.5倍 速度,2倍的速度,還是我已經I F 為你說話太快,0.75倍的速度。 因此,實現所有即 為您提供。 但除此之外,講座,實現 我們也使這些資源 可用的。 幻燈片,例如代碼,任何我 做在舞台上或提前上課, 我們有這麼會後,你可以玩 在家裡或在桑德斯。 但是我們也認為我們應該這樣做 年首次也是 為您提供演練 這些實施例。 越來越多,因為我已​​經反映在 CS50的演講的價值,我已經開始 質疑只是它是多麼有用 你們這些傢伙坐在那裡,我站在 在這裡,我說你, 特別是作為材料的 例子中,變得更加複雜。 因為總是後,一定數量的 分鐘,有人會區, 然後你錯過了一些關鍵的一些洞察力 例如,那麼你基本上 去上課的剩餘部分, 這是不是最好的使用 你的時間,或者,真的,我們的 統稱為一類。 還等什麼,我們想我們會想辦法做的, 特別是對於一些比較 複雜的例子,我可能不會做 在課堂上,我們可能不會正義 有時間在課堂上,或者您可能 區期間,我們將產生 這些一系列的演練 例子,如果你去, 例如,上週五的視頻頁面在這裡 下的例子,你會看到, 星期五,現在有這 連結至演練。 和這些格式的 隨著時間的推移會發生變化。 現在,我們用一個簡單的 YouTube的播放列表。 但我做了什麼,我們的生產團隊 後來被穿過每個 和每一個這些實施例再次 希望指出在更大 清晰度正是外賣 可以或應該是從每個。 所以,你會發現,例如,從去年 週,所有的臨時例子 我們經歷了線性 ,時尚。 所以感覺自由地從事或不 搞這種材料。 這個特殊的課程真是一個主題 是,有可能更 的資源的方式中,比你 可能吸收 一學期。 但是,這是經過深思熟慮的。 它的意思是讓你作為 個別學生可以自主選擇 根據自己的學習風格。 所以,如果講課為你工作,太棒了。 如果部分為你工作,太棒了。 如果演練工作 你更好的,太棒了。 它真的會由你來選擇 什麼資源工作最適合你。 最後,感謝校友 當然,我們還提供了一個規範 設置隸票據。 因此,而不是你們的頭 在講座下來塗鴉了 的東西來,在課堂上,我們 工作人員將為您提供我們什麼 感覺是規範票據 釋放你分心,所以 如果你在這裡從事,你是 真正從事的是怎麼回事, 與你的同學做 階段,在屏幕上, 而不是簡單地寫下來逐字 發生了什麼事已經說了。 因此,實現所有這些資源 提供給您。 切片,在回答常見問題, 將本星期三開始。 我們基本上等到後最 其他類完成,使我們可以 減少的數量變化 我們需要做的。 但即將在本週末開始, 週日,將是一次性的實例 就是我們所說的超級部分。 這些將被拍攝下來,對於那些誰也不能 出席,並且從本質上講, 當然的頭將引導我們通過一些 的C部分的過程中, 走向結束的問題集, 將是我們的第一個基於C 問題集。 這些僅僅是可選部分 預計會有什麼 成為導致經常性兩節 通過本課程的50加 教學研究員周刊。 在週日或週一或週二,我們 有90分鐘的部分,在很 傳統意義上,這將是 手的機會和更 親密審查 當然材料。 事不宜遲,讓我給你介紹 課程的頭,誰是 與我在幕後, 使一切發生。 如果那些今天在這裡和我一起,羅布 和勞倫和約瑟夫·盧卡斯,所有 其中已與 當然了一段時間。 RJ是第三次這樣的 我們的團隊成員。 他不可能今天在這裡,但他 問我要展示他的照片。 我不知道他想這 一個,但他在那裡。 我只是讓球隊說 打招呼,自我介紹,使 你知道他們以及您的 自己的教學研究員這個術語。 LAUREN卡瓦略:嗨。 我叫勞倫卡瓦略。 我是一個居民導師 在萊弗里特大廈。 我是一個超級興奮 頭電視CS50今年。 CS50是一個非常具有挑戰性的類 作為一個非常大的類,因此,如果你 如果你覺得有任何疑慮, 就落伍,可以自由地 伸出我們 heads@cs50.het,或給我,如果你願意 喜歡玩我的金色 獵犬小狗。 這裡是盧卡斯。 LUCAS FREITAS:嘿,伙計們。 我的名字是盧卡斯塔斯。 我是一個初中[聽不清] 計算機科學和語言學。 實際上,我來自巴西,我也 實現東亞研究。 所以,如果你有任何疑問, 計算機科學,語言或 什麼,只是讓我知道。 CS50,更是如此。 王陽樂:嗨。 我是約瑟夫。 我是一個高級學習計算機 科學埃利奧特大廈。 所以,讓我們來看看。 你會看到我周圍攜帶 這些巨大的相機之一。 我常駐人員攝影師 50,時常和學生 有時以為我 亞洲遊客。 所以如果你看到我用相機, 不跑。 只是微笑,不要害羞。 我希望你享受50。 我非常喜歡它,當我把它, 這就是為什麼我一直TFing 這三年。 ROB BOWDEN:嗨。 我羅布。 這是我第四學期CS50。 我剛畢業在5月。 我在Kirkland。 我很高興這學期, 我希望你也太。 國寶馬蘭:謝謝你今年的 頭,RJ。 所以最後幾個音符資源。 其中,P 0已經是。 這一個只存在於標準 版,其目的是為 類的全部。 從與p設置1,將有 黑客版本的大部分習題集, 再次,將覆蓋材料 帶著幾分更具挑戰性,同時 仍然觸及一些 相同的主題。 難道看一看在課程網站 該規範對p組0。 辦公時間也將在本週開始, 今晚到明天,週三, 和週​​四在各餐飲 在校園的殿堂。 離開辦公室cs50.net/ohs 小時的過程中,認識到這一點 將是非常偶然的機會, 當然,在開始的 學期,來與您 筆記本電腦在大腦休息。 帶一些朋友聊起來 當然TFS和CAS與任何 你可能有問題。 我不能強調不夠,即使是 划痕和問題集0, 真的是沒有愚蠢的問題。 有沒有學生太難受了 發問。 請隨時自由利用 這一資源。 將在那裡recurringly的 整個學期, 將CS50討論。 這是當然的網上討論 論壇上,地址。 我們也將在講座 還可以監視這一點,這要感謝 課程的教學團隊。 所以如果你有一個問題,在 講課,因為我說了些什麼 不佳或根本沒有,通過各種手段,要求 實時如果你有你 筆記本電腦或手機在網站上, 我們將竭盡所能近實時 作出回應。 有關CS 50有什麼問題嗎? 然後我的最後一個音符。 該次發行的SAT不滿足。 當您完成您的學習卡,如果你 尚未實現 SAT UNSAT總體願景, 面向全體學生,是真的 幫助的一門課程,採取邊關閉 這樣,可以這麼說,所以,如果你 後期發現自己在夜間,凌晨2點,凌晨3點, 真的撞你的頭反對 你知道你99%的牆上 那裡的方式來完成,但你 有這麼多其他的事情要做, 我認為更好的利用,往往, 學生的時間確實轉移到 其他的事情,所以,你可以 優化你的時間,周圍的一切。 SAT UNSAT是一種機制,通過它 你可以採取舒適的事實 有99%的方式有 仍然相當不錯。 同樣,如果你​​進入 當然沒有事先背景或 幾乎沒有,你盡可能多的背景 覺得你的同學可能有真正的 還是假的,意識到這是一個 的機會,讓你的手臟 當然,在把你的腳趾 水,可以這麼說,就像我自己 年前的合格/不合格。 正如我上週說,這個過程中, 其他人一樣,沒有提供 通過/失敗的時候,我可能會 曾經涉足 類,即使我做了五週 後來,我改變主意,你 也可能,並切換到 或從信漸變狀態。 好的。 因此,我們看著這樣的事情 週五,我們非常迅速 過渡的東西, 今天看起來更加神秘。 但它仍然在 相同的基本理念。 是什麼的總稱,我們 用來形容一塊拼圖 這個樣子? 所以,一個語句。 你可以調用這個任何 一些東西。 不過,我們就稱它為一份聲明中, 並聲明 只是告訴程序 - 或划痕的情況下, 精靈 - 做一些事情。 在這種情況下,打個招呼。 事情是這樣的,我們 而不是叫什麼? 是啊,這樣一個布爾表達式。 只是布爾表達式是 這是真的還是假的,所以刮開 吸引他們的這種形狀,但也 用一個問號來傳達 想法,這個問題的答案 無論是真或假,是或沒有 酮,1或0。 我們使用這些布爾表達式 裡面像這樣的結構, 我們叫什麼? 所以,條件或分支。 而你在這裡看到的情況 從頭開始有一點點的佔位符 一塊拼圖,形狀,目的 這是這樣,你可以 拖動它,然後把它放到 規定的程序,如果此布爾 表達式為真,做這一套 說明,這組語句, 否則這樣做另一套 的指令。 和回憶,你可以 巢這些東西。 即使有空間不大 視覺拼圖中的一塊,刮刮 將擴大和縮小,以適應任何 拼圖拖放在 有那麼實際上,你可以窩和 有三種方式岔路。 如果,否則,如果別人。 你甚至可以超越 進一步嵌套和進一步需要。 所以最後,我們看到的結構,如 這一點,否則被稱為一個循環。 而這僅僅是東西 一遍又一遍的東西。 在這種情況下,它正好是一個有限 多少次,但我們也 看到了一個例子,其中的數量 倍來自一個變量,所以 可能會改變。 同時我們也看到了另一個塊共 叫一個永遠的塊 讓我們循環無限長。 所以另外一個構造,划痕 2.0 - 那些你 舒適與之前的背景是 早已熟悉這個 構造 - 這些事情,我們叫什麼? 因此,我們稱這些功能,否則 被稱為程序。 有輕微的語義差異, 但我們會打電話給他們就是函數。 一個函數,在划痕的情況下, 是一個自定義的一塊拼圖 你自己也可以創建,讓你有 一個新的,在這一塊拼圖 的情況下,將被稱為咳嗽, 出現在所有其他的 可用的拼圖碎片劃傷。 即使麻省理工學院並沒有發明 這一塊拼圖,你做到了。 因此,一個功能可以讓您創建新 行為,給它一個函數名和 然後調用它,可以這麼說。 真正使用它的程序中再次 一遍又一遍,而無需等待 有人像麻省理工學院跌的道路 從頭開始創造新的功能。 你可以建立這些難題 自己的作品,然後再用他們 在自己的程序。 我們將看到一個經常性的例子 今天起。 所以今天,我們現在過渡 更艱澀難懂的東西。 但在年底的一天,東西 更強大的表現力和更 代表的路徑,我們將 整個學期整個數字 語言 - 代碼或源代碼。 和源代碼,它的出現, 是不是一台電腦 通常實際運行。 源代碼看起來像這樣。 因此,這是再次,也許是最簡單 我們可以寫在一個程序 語言叫做C.我們將開始 逗除了過不了多久,如果 這確實看起來像希臘 對現在的你,相信我。 短短一個星期的時間,這 將一切太熟悉了,實際上 越來越頗有代表性 複雜的例子,你會 也更舒適。 但你不能只是運行此 一種通常的代碼。 你有東西把它變成 計算機本身的理解。 因此,我們需要的東西 我們要調用編譯器。 編譯器是一個程序,需要 源代碼,像你剛才看到的, 的輸入,並可以產生零和 的輸出,否則 被稱為對象代碼。 和它的那些零和那些 可能看起來很喜歡這一點, 最終是可以理解的 由Mac或你的電腦。 如果你聽說過營銷 Intel Inside的表達,這只是 意味著,一家名為 英特爾已經製造了 您的計算機的大腦 - 否則被稱為CPU, 中央處理單元 - 這僅僅是事情, 理解模式 0和1。 通過源代碼轉換成 通過這個過程的目標代碼 一對夫婦的命令,我們將盡 只是一點點,你是 創建模式0和1 在英特爾,員工有 決定代表的若干陳述。 現在,我不太知道哪些 這只是一眼 這些0和1。 大多數人,這些天沒有。 但是,在某處是有規律的 0和1,表示該 語句打印。 某處有可能是不同的 設置的0和1的 代表永遠的概念或 重複10次,甚至喵,如果是 實際上是一個程序,可以 包括一些聲音。 因此,在短期,人類剛剛決定, 就像我們做對ASCII - 字母字母上週 - 人類已經決定,即使 更複雜的模式0和1 代表更複雜的行為 如印刷或說或喵喵叫。 所以今天,在很大程度上起 在學期中,我們將採取 有人想當然地認為已經想通 如何做到這一點映射。 但是,我們這方面的想法相一致 分層的頂部的工作人 已經來到我們面前的,將採取 授予的事實,這是怎麼回事 引擎蓋下。 不過,我們更感興趣的是 建築的東西比較多 有趣的這一切之上。 也確實,我們的第一個程序 寫在Scratch這個超級簡單 一,世界您好。 你可以認為這是 主程序統治划痕 截至上週五的行為。 今天,我們要開始翻譯 拼圖碎片劃傷 這種語言稱為源代碼 C連接,以便看起來像這樣 週五,從今天起, 現在看起來像這樣。 誠然更加神秘。 這實在是太讓人分心和排序的心態 麻木看到所有的報價 和分號 括號等等。 但是,如果你開始忽略什麼,你 不明白了,真是看 在白色文字的精髓 屏幕,想必你看,像我這樣做, “你好,世界”。這線與 紫色聲明向上頂,原來 關鍵字指出,主要是要 排隊概念與綠色 點擊標誌。 因此,換句話說,而在划痕 我們實現這個Hello World程序 與這兩個拼圖,在C, 我們要實現這些 4個略帶神秘的線條。 但是,正如我們深入到這一點,你會 看到,每一個這些 實際上在屏幕上的白色字符 有一些重大的意義, 我們的節目,最要 看結構不盡相同。 所以一份聲明中,要明確,什麼 看起來像“打招呼世界” 週五開始尋找 喜歡這個在週一。 的printf(“你好,世界”)。 有一些奇怪的反斜杠 N,有括號,有 分號。 但是在一天結束的時候,關鍵 外賣今天是我們正在做的 從圖片翻譯的東西 形成以文字的形式。 所以看起來像這樣一個循環, 上週到現在看 這樣的事情。 讓我聲明,就像在 劃傷,有不同的方式來 實現同樣的目標。 相同的C.我沒有顯示你的唯一 的方式做事情,但方法之一 翻譯這永遠 阻止一個循環,C. 這裡這一次,重複10次。 這個人真的那種彎曲 介意你第一次看到它。 但要落實,從今以後, 我們要使用 for循環,可以這麼說。 並明確有一些語法 稍微複雜一點,有我和 等於0,但一旦我們潛入 今天起,你只是去 一看就知道這一切都只是做了一些 基本的算術,讓我們從0 在最多9或10,在這種情況下。 最後,變量,你會記得 一個變量的存儲空間是一塊。 那麼,我們不得不在左邊有 本週會顯得有點 像這個星期。 但同樣,更多的來。 我們有布爾表達式, 上週,這個樣子。 這週起,他們將 開始看起來有點像那個。 而這一次實際上是 有點讓人放心。 它實際上是幾乎一樣簡單 作為綠色塊。 但在這裡我們再次,一些新的語法 使用&,但你可以 也許猜測而在划痕, 說A-N-D,顯然,我們在C 要說的&符號與符號。 但所有這一切將成為 過不了多久自然。 條件。 上週,它看起來像 這在左側。 這一周,在右邊,這是 要像她那樣。 但同樣,這裡的關鍵外賣 當你看到這樣的事情 合適的,特別是如果減 舒適,它的排序對你 頭,你得到有點不知所措, 我真的不知道我怎麼能 可能拿出 從無到有 - 沒有雙關語意 - 只是意識到這是真的一樣 的想法,可能覺得這麼多 自然較前一周。 而且,即使你還沒有潛入 問題設定為0,我敢說,你會發現 拼圖相當 直觀的,或者至少是 隨著時間的推移變得如此。 因此,讓我們長驅直入 讓我們在這裡我們的手臟與 這首簡單的程序。 和簡單的,當然​​是相對的。 要做到這一點,我要改變屏幕 我打電話到該設備的 CS50設備。 CS50設備是一塊 軟件內運行 我的Mac上的窗口,也可以運行 在你的電腦裡面,一個窗口 讓我有完全相同的 計算機環境,為每一個TF, 每個CA,為每一個學生 在類中。 因為CS50家電字面上的 另一個操作系統 稱為Linux - 特別是Fedora Linux系統 - 我們的工作人員,已配置 的安裝過程 在這樣一種方式,一個操作系統, 有一個小CS50標誌 中間大,兩頭,有一個自定義菜單 的底部,三,教學, 我們已經簡化了用戶界面 盡可能所以,當你 第一次啟動這個東西在自己的 Mac或PC上,你有相同的 其他人一樣的環境,你 所有的工具,你需要 的過程,而無需圖 如何安裝和 每一個單獨的工具。 因此,這看起來比較 像Windows或Mac OS。 在左下角, 基本上有一個“開始”菜單 排序或Apple菜單。 那麼你有什麼,我們懷疑會 是你的三個最常見的圖標。 一個是鉻。 裡面有一個瀏覽器 器具。 二是一個程序,稱為gedit中, 我們看到上週短暫,這是 只是一個圖形編輯器。 三是終端程序, 是一個黑色和白色的窗口 昔日,允許我們輸入更多 晦澀難懂,但功能更強大的命令 我們的鍵盤。 所以我要繼續前進,然後按一下 gedit的,放心吧,問題 設置1,上週五公佈, 引導您完成所有這些相同的步驟。 請注意,我有一個非常簡單的 由三部分組成的用戶界面。 在左邊,我有一個大的空 窗口被稱為源代碼。 這就是我要去的地方,看到一個摘要 我寫的任何代碼。 在右手邊,我有一個大 選項卡,目前沒有得救,這是 在我的代碼要去。 而在底部,我有一個嵌入式 終端窗口,黑色和白色 提示我可以輸入命令 編譯並運行我的程序 - 是,製造和運行我的程序。 因此,讓我們從簡單的開始。 讓我上去的文件,保存。 我要繼續前進, 進入jharvard。 因此,器具,不論什麼 你的名字,屬於一個叫 約翰·哈佛,誰擁有一個jharvard的家 目錄裡面,您所有的 文件將去。 這是您自己的副本,他的賬戶, 所以我們不是所有共享 相同的硬盤驅動器。 你剛才的錯覺 約翰·哈佛的自己。 在前進,其實我 安裝了Dropbox的。 該設備自帶預先準備 Dropbox的,如果有什麼不順心的 在學期期間,如果你 您的設備配置一個自由 Dropbox帳號,所有的文件將 自動備份,使您 可以很容易地恢復它們。 我要進入我的Dropbox 目錄,並已經 是一對夫婦有其他的事情。 但我要繼續前進 並轉到文件,保存。 我要去成jharvard,Dropbox的, 這裡,我要 給我的程序一個超級簡單的 名稱hello.c中,然後將其保存。 所以我現在擁有相同的接口。 唯一的改變 的標籤往上頂。 所以,我非常迅速地重新 該程序從 滑動片刻年前。 因此,進入的主要(無效),然後printf的, “你好,世界”,一個有點神秘 密切報價,N,反斜杠關閉 括號,分號和 然後Ctrl-S保存。 順便說一句,這是和通知 在左上角出現在這裡。 這是不是有用的今天,但 隨著時間的推移將是有益的。 你剛才看到的,再次,總結 你寫的代碼。 因為我寫的東西叫 主,這就是為什麼彈出Word主 那邊。 但是,在大多數情況下,我們 不需要今天。 所有的權利,所以我要求,這是我 第一個程序寫在一個編程 語言叫我們知道從上週五 這個東西是要幹什麼 很uninterestingly當我 運行它只是顯示 - 換句話說,打印,作為一個計算機 科學家會說 - 你好世界在屏幕上。 因此,要做到這一點,你會發現,我有 來這兒我的終端 窗口,現在我有 一個閃爍提示。 但是,這是現在一個鍵盤的版本 我的約翰·哈佛的home目錄。 這是一個鍵盤的方式通過 瀏覽我的硬盤驅動器。 所以我不能實際鍵入像我一樣 上週打招呼,因為它是 會說沒有規則,使目標 - 什麼是錯的。 我不太知道該消息 手段,但是這是因為默認情況下, 當黑色和白色的窗口 打開,我在約翰·哈佛的 主目錄。 但是我在哪裡保存程序? 在我的Dropbox文件夾。 現在,我們都已經長大了 電腦,你只需雙擊 在文件夾的圖標,它 打開來,瞧。 這就是文件名為 將HELLO.C。 所以,事實上,讓我們做到這一點。 讓我繼續前進,並盡量減少gedit的 就像你會在 Windows或Mac OS。 讓我進入主 在左上角的文件夾。 我會在這裡看到一堆文件夾。 這裡是我的Dropbox文件夾。 复選標記表示它已經同步。 有幾件事情,在這裡, 但是請注意HELLO.C 確實有。 所以,通常在Windows或Mac OS, 我雙擊,它開闢了在 任何程序,我好去。 但現在,至少從今天開始,我們 需要採取一種倒退只是 給你一些基本的工具,為您的 工具包做多 強大的東西用不了多久。 因此,在此提示下,我必須做的 相當於雙擊 Dropbox文件夾。 要做到這一點,我要輸入光盤 改變目錄,Dropbox的,輸入。 現在我注意到括號 所謂的提示現在說,我在 波浪線,小波浪 在左上方的符號 大多數鍵盤/ Dropbox的。 這僅僅是速記符號 說人,你現在在裡面 Dropbox文件夾,就好像 你雙擊就可以了。 所以,現在如果我繼續前進,鍵入make 你好,進入,我看到一個非常神秘的 命令,但不是一個錯誤消息, 似乎,然後 另一個閃爍提示。 如果你還記得,曾經如此迅速 上週五,我們這樣做。 /個招呼。 你即將看到的結果是什麼 我運行這個程序,或在Ma​​c 操作系統和PC來說,如果我通常一倍 點擊程序 - 應用程序 程序或exe文件,它會打開 一個窗口,並運行。 鍵入。/你好,就像雙 單擊要運行的程序,但 用我的鍵盤。 輸入的hello world。 就是這樣。 因此,讓我們逗所以除了 不覺得太像希臘。 因此,/意味著什麼呢? 任何人誰是有史以來導航鍵盤 像這樣的環境,什麼點 指什麼? 當前目錄。 因此,在當前目錄只是 一個文件夾的代名詞。 所以說點斜線,我說, 尋找一個程序名為hello 當前目錄 - 在當前文件夾。 換句話說,我的Dropbox文件夾。 這就是為什麼擊打其後輸入 實際上運行該程序。 如果我現在型LS,注意,我看到 一切都在我的Dropbox文件夾。 獲得Started.pdf,Dropbox的 給你的自由,我的照片 目錄,公開目錄,未保存 我做了一個錯誤的文件1 剛才,foo.c的,這是我早些時候 今天,然後兩行 - HELLO.C和打招呼。 HELLO.C是我寫的程序 gedit的,什麼你好,是綠色的嗎? 你好綠色是可執行文件。 換句話說,當我跑這命令 剛才 - 讓我滾 時光倒流 - 當我跑使打招呼, 這裡的中間步驟。 它把hello.c的輸入 - AKA源代碼 - 它產生了 作為輸出文件名為hello, 包含所有這些零和一。 這就是為什麼,在最後,我可以 實際運行類似的命令。/個招呼。 由於英特爾在裡面,我的作業 Linux的系統,開闢了那些零 和那些,餵他們進入 我的電腦的大腦 - CPU - CPU知道,哦,這裡是一個模式 零和一說 打印以下的東​​西 在屏幕上。 下列的東西是什麼? 報價引文結束的“hello world”。 所有權利,所以總結了一些快速 這些命令,這樣我們就可以開始 他們是理所當然的。 讓我跳到 我們離開的地方。 你還記得,我們​​有CD 在我們的後面,剛才結束。 這些,我敢說, 今天的目的 - 也許這一周 - 唯一的命令 可能需要在命令中鍵入 除了提示做。 所以CD站在為了什麼呢? 更改目錄。 這只是相當於雙 點擊文件夾中。 順便說一句,如果你得到 永遠失去了你的內部 電器,使得升降梭箱 - 我想回到我 jharvard目錄 - 有疑問時,CD輸入,沒有其他 也就是說,它只是呼嘯而過你回來 你開始的地方, 是一個不錯的小快捷。 所有權利,所以現在其他命令。 LS。 我打那一刻前。 LS代表,你怎麼看? 所以,列表,對不對? 早在一天,當人類未來 與這些命令,他們 試圖效率,而 鍵入回車L-I-S-T, 決定LS。 這很好。 這聽起來夠像列表。 讓我們只是類型LS進去了,那 在我列​​出的文件或文件夾 當前文件夾。 MKDIR,你可能已經猜到了。 製作目錄。 所以,你不要去一些文件菜單 在這樣的環境中選擇“新建文件夾”。 相反,你鍵入命令的mkdir空間 然後該文件夾的名稱 要創建, 並將於完成。 RM,你可能已經猜到了。 刪除“或”刪除“。 所以,如果你要刪除一個文件,你會 看到你如何在問題集中 能做到這一點。 和rmdir刪除目錄。 所以,再次,我會通過一些鳥飛 這些細節,因為 他們不是花那麼多的樂趣 時間,但有兩個,我們會為您提供 詳細得多中的任何一種 過程中的問題,特別設置 標準版本的任一步驟 您可能需要鍵入 你會得到越來越多的 舒適的這些事情。 但現在讓我捉弄除了 另一件事情。 當我們輸入make你好剛才, 我們看到了一個神秘的命令序列。 再次,我們看到,你好。 好吧,讓我們做到這一點。 我犯了一個錯誤,但 [聽不清]現在承認我正要 做是故意的。 我做了什麼錯剛才? 是啊,所以我不是在Dropbox的 目錄,因為剛才我 鍵入CD,只需點擊進入。 縮小我回到我開始的地方, 這是不是我的文件 是的,所以我真的需要做CD的Dropbox 進入,現在我能做的RM打招呼 進入定期刪除文件打招呼。 我不知道為什麼它是如此神秘。 這只是意味著你確定 你想刪除打招呼嗎? 您可以鍵入y(是),回車, 現在它不見了。 現在如果我再次鍵入make打招呼,這是 要重新創建我的對象代碼, 重新創建這些零和一。 但是,什麼是處理 這個很長的命令? 好吧,我們除了逗 過不了多久,但 - 我告訴一點點善意的謊言之前 - 不是一個編譯器。 make是一個程序,可以自動 數字如何運行 為你的編譯器。 所以命令,你真的應該 運行為了轉換HELLO.C, 你好實際上看起來的 多一點這樣。 上帝保佑我們有實際 記得曾經鍵入該全 序列的命令出來。 在生活中做的目的是為了 請記住,複雜程度 我們和自動化,否則什麼 是非常繁瑣的步驟。 不過,我可近似認為。 所以每這裡這個小小抄,我 可以近似該命令是什麼 只需輸入鐺,這是做 我們將編譯器的名稱 使用這個學期。 如果你們曾經做過的iOS 開發iPhone或iPad, 鐺是你使用的程序 在Xcode,以使您的應用程序。 鐺,雖然是只是一個程序 我們可以在命令中鍵入其名稱 提示,並通過引入現在, 我可以介紹的東西,這是一個 小代表 的命令來。 因此,讓我這樣做手工。 所以RM打招呼,現在通知的情況下 我只是作為一個理智檢查 - /你好,你想我 應該看到,如果我這樣做嗎? 某種錯誤。 沒有這樣的文件目錄。 所以實際上是相當直接的。 所以,現在讓我清楚的畫面。 控制S只是清除屏幕 刪除一些分心。 現在我將手動 類型鐺鄰打招呼HELLO.C。 那麼,這是什麼做的? 做完全一樣的東西,使 我們,但我沒有扔掉一些 多餘的話。 鏘的計劃,那將 。c文件作為輸入,並產生 作為輸出的零和一。 但是鄰從此將調用 一個開關或一個標誌。 這僅僅是技術人員的行話,說 這是提示你輸入一個字 某種程度上影響行為 你運行的程序。 因此,沒有人不想去猜測 什麼鄰傳達? 輸出。 這只是有人決定鄰指 輸出文件名為hello,並採取 輸入任何硬道理 提示,HELLO.C,所以,如果我打 現在進入,似乎什麼都沒有發生。 奇怪的是,在這個世界上 編程,如果什麼也沒發生, 這可能是一個好東西 因為沒有錯誤 在屏幕上的消息。 您好,回車。 現在我的程序已經運行。 不過,我可以做的愚蠢的小東西,如 這一點。鐺鄰,hihihi,HELLO.C, 進入,現在我有一個相同的 程序名為hihihi。 它的行為相同,但 這個名字是不同的。 因此,這僅僅是說,如果你想 影響的行為 程序,我們將越來越多地 見東西叫做 命令行參數。 這是一條線。 你鍵入的命令。 人體工程學,命令行。 和命令行參數都只是 語法,字或小件 以某種方式影響的行為 我們正在運行的程序。 所有的權利,這也許是最 無聊的節目中,我們可以寫和看。 現在,讓我們做一些事情 更有趣。 讓我繼續前進,創建一個新的文件。 我要先走,並把它保存在 約翰·哈佛的主目錄, 讓我們把它custom.c, 一點點的自定義程序。 我要放大我的頂部 這裡的標籤,並重新開始。 包括標準stdio.h中。 在某一時刻。 詮釋的主要(無效),更 在某一時刻。 printf(“請你好,大衛”)。 更有趣的,對不對? 所以,現在如果 - 不是因為我的名字, 只是因為它是不同的 - 使自定義的輸入。 “自定義”,你好,大衛。 但即使這樣,也同樣是一個善意的謊言。 這個程序可能會被稱為 david.c,因為它不是定制 在所有的行為。 真的,我想一個程序,要求 用戶輸入他們的名字。 那麼,如何才能做到這一點? 好吧,讓我在這裡滾動。 以前我用的陳述 從頭開始,我使用printf之前, 否則稱為功能,讓我 先問用戶一些輸入。 因此,要做到這一點,我需要 做了幾件事情。 一,我需要一個地方來存儲用戶的 之後,我問他命名 她。 可能我需要使用什麼構造? 存儲這樣的一個價值? 一個變量。 因此,與從頭開始,你只是獲得一個 漂亮的一塊拼圖,在這裡,我們必須 ,很明顯,使用的話 表達自己。 從今以後,任何時候你想要一個 的詞或短語,在編程 我們要調用一個字符串。 因此,一個字符串是一個單詞或短語。 這是一個零個或多個序列 字符,更正式。 如果你想這樣一個變量 存在,你不得不說:給我一個。 你是 說字符串s分號,其中s 你想要的任何東西。 事實上,S是有點給人留下深刻印象。 讓我繼續前進,更 清楚地叫它的名字。 給我一個字符串名為name。 但是現在,什麼是人的 名稱默認? 好吧,如果人類不輸入任何內容 ,顯然,是怎麼回事 是沒有價值的名稱。 而事實證明,在C中,如果你不給 一個變量值,它會 有一個垃圾值。 它可能有一些隨機零 的,所以你只是去看看 垃圾,真正做到在屏幕上, 如果您嘗試來顯示它。 不過,我可以解決這個問題時說,實際上, 存儲名稱的內部 值。 存儲變量中的值是 如果你有一個變量名 離開後,你必須以某種方式把你 要存儲在它的右側,並 語法來是怎麼回事 要如下。 我們還沒有看到這一點,而是採取 信仰了一會兒,有 在世界上存在另一份聲明中 我要再次調用函數, 功能,該功能是 所謂得到的字符串。 它字面上。 它在某種程度上得到的字符序列 從人類,然後 用它做一些事情。 但這樣子 語法晦澀。 通常情況下,如果你使用的等號 - 你是說,在世界上, 代數,其實你 說x等於1。 在這裡,我們並不是說, 名稱等於得到字符串。 我們說存儲的名稱是什麼 在右手側 等號。 等號代表 賦值運算符。 這是說,把什麼語法 右手邊裡面有什麼 在左邊。 因此,獲取字符串是一塊新的 的功能,不僅 東西 - 要求用戶一個字符串 - 它也返回了,可以這麼說。 因此,讓我們來看看這是怎麼回事 發生在這裡。 我要繼續前進和縮小, 我要一對夫婦 在我的提示錯誤。 我要輸入習慣,輸入。 哇。 一大堆錯誤。 所有的權利,所以這是一種 鋪天蓋地,肯定在第一,但 事實證明,所有這些非常 誠然神秘的錯誤信息 指一些模式, 我們將開始看到隨著時間的推移。 所以這一塊,我就為這事, 因為它是第一。 使用未聲明的標識符字符串。 這只是意味著gedit中,或鏘, 在這種情況下,不知道 我的意思的字符串。 那是因為在C,編程 語言,但實際上 沒有字符串類型的變量。 C不知道字符串不存在。 但我們CS50員工,做的。 因此,在提前類,我們 創建一個名為CS50.h.的 這裡面的文件 - 更多的語法來 - 裡面的這個文件是一個定義 就是我剛才定義 口頭作為一個字符串。 所以,簡單地總結這一行 在我的程序的代碼,我現在 gedit的教學,使鏘 在把一個字符串是什麼。 我不知道該怎麼還。 在幾個星期後,我們將剝離 那層。 但現在,知道這教 編譯器有什麼 串實際上是。 所以,現在讓我清楚我 終端在這裡。 讓我重新運行定制,我 解決所有這些問題。 也是如此,因此,這將 是一個反复出現的主題。 我只寫了9行程序, 但我有18行的錯誤。 這是一種恐嚇。 但要意識到他們往往串聯 一個小小的錯誤觸發 混亂的編譯器, 它看起來比它差得多。 所以,現在是一個精明的觀察者會知道 我得到一個從字符串 用戶,但我其實沒 做什麼呢? 我實際上沒有做 任何事。 所以,如果我再次運行自定義, 這是怎麼回事,只是坐在那裡。 這是怎麼回事呢? 我的計劃似乎被卡住 什麼樣的線,你會說嗎? 因此,它實際上是停留在第7行。 我們沒見過這之前,但 第7行,再次,這 語句,得到的字符串。 它做什麼它說。 現在等待人類 取字符串。 這是我完全直觀, 人類,因為我沒有被告知 該怎麼做。 但是,讓我繼續前進的信心和 讓我假裝羅布。 回車鍵。 這不是我想要的程序。 因此,我們有我們的第一個博客。 但是,讓我們嘗試通過推理 為什麼是這樣的情況。 首先,讓我首先來解決這個問題。 讓我再補充一條線在這裡說 printf的,你叫什麼名字? 讓我們只是做密切的報價, 關閉括號。 現在讓我重新運行該程序。 問題。 我沒有看到。 右。 我沒有重新編譯它。 因此,在一個像C語言,因為你 更改源代碼並不意味著 你已經改變了你的目標碼 生成新的對象代碼, 新的零和一。 你必須重新編譯。 如果我現在重新運行自定義,輸入, 啊,更加清楚一點。 我的名字是羅布。 儘管如此馬車。 我要說的有 現在一對夫婦的錯誤。 這只是看起來可怕的,坦率地說。 ,微創,我應該有 空間,或將 光標移動到新的一行。 而實際上,新的線路。 這是一個關鍵的短語,在這裡, 我們已經看到了,但沒有定義。 你會得到一個文本的方式, 移動到下一行, 你不這樣做。 這是混亂到計算機。 這看起來像兩條線 的代碼,兩者的 是完全正確的。 你反而有更加明確 說,給我一個新行,這是我們 反斜杠n代表在c。 所以這是一個很少有這樣的字符。 反斜杠n將修復的審美。 讓我重新編譯我的程序。 讓我重新運行我的程序。 這看起來更好。 它仍然是相當原始, 但它也仍然馬車。 所以這是一個 - 即使你從來沒有編程之前, 你大概可以猜測 為什麼這個程序仍然是有缺陷的。 要做到這一點我需要做什麼 我沒有做過嗎? 所以,我要真正做到 名稱的東西。 就像在從頭開始,你實際上可能 指定一個變量,如n或 對付像去年我們做了 週 - 值。 但是,如果你沒有做任何事情 它,什麼也沒有發生。 好吧,讓我們解決。 讓我輸入我的變量, 並讓我去這裡。 讓我重新編譯,讓我重新運行,羅布。 現在我只是一個白痴,對不對? 因此,這是沒有真正得到 我任何進一步。 但是,這是一個完全自然的 本能,我要說的,對不對? 如果該變量叫名字,我和 想要它去那裡,為什麼不讓我 鍵入? 嗯,當然,我們有 現在區分 之間有什麼是一個字符串? 請注意,報價引文結束 在這裡,你好叫什麼名字? 實際上,這本身就是一個字符串。 它的硬編碼。 這不是人類。 這是從我原來的程序員, 但它仍然是一個字符串。 所以,如果你裡面字面上寫N-A-M-E 一個字符串,發生了什麼事情 印刷? 好吧,N-A-M-E。而不是我們需要的 告訴printf,不打印 在字面上命名。 打印出name的值。 要做到這一點,我們做到以下幾點。 而這僅僅是一個人的慣例。 我們不是說%S, 代表字符串。 然後在結束時,我最親密的報價, 我要去把一個逗號和 第二個參數傳遞 進入本聲明。 我要去那裡鍵入名稱。 所以,現在我們注意到有一個 稍新的語法。 我們仍然有兩個括號, 從此讓我說的東西 括號之間的代表 成一個函數的參數 - 莫名其妙的輸入 以影響其行為。 因此,邏輯,多少個參數 printf的似乎是 在這一刻嗎? 因此,它似乎將採取兩個, 這的確暗示 這裡的逗號。 因此,這是一個參數 在引號之間。 儘管它有一個逗號, 一切報價,這意味著 這是一個長字符串。 逗號,變量名。 所以,現在讓我縮小。 讓我重新運行它。 羅布。 該死的,我做了什麼錯? 所有權利,所以你必須重新編譯。 如此反复,容易犯的錯誤 早早就一遍又一遍。 所以,現在重新運行自定義,羅布, 輸入,瞧。 我們現在有一個自定義的程序。 所以,我現在有一個程序, 使用幾個特點 是值得注意的。 一,我使用CS50.h,否則 稱為CS50庫。 裡面的CS50庫的 功能,其他人寫的 - 即工作人員 - 供您使用,並獲得 字符串是其中之一。 2號線的內部是stdio.h中, 這是為什麼? 採取一種猜測。 裡面存在什麼 標準IO父? printf的。 printf的,你沒有看到它的任何地方 屏幕上的其他。 它必須配備 電腦不知何故。 它來自何處? 這裡面 - 它宣布, 可以這麼說,裡面 一個名為stdio.h中。 現在,這個東西,我們會回來 最終,因為它是一個位 現在分心。 這是指我們的返回類型。 這是指一個說法。 但是今天,我們的重點 只是在這裡對這些行。 所以字符串名稱,只是為了重溫一下, 什麼為我做什麼? 因此,它聲明了一個變量 字符串類型。 因此,它的意思是詞, 而不是數字。 正如順便說一句,如果我沒有想 它是一個數字,我會說 如int東西。 如果我想成為一個浮點 值,帶小數點的東西, 我想說的浮動。 但今天,我剛才說的字符串。 我已經給這個變量 出了名的名字,但我可以 把它叫做什麼。 事實上,最初,我把它叫做S。 這裡只是另一份聲明中。 這是多少個參數 錄取口供? 所以它只是一個,並且 是一個簡單的美學細節 顯示上的東西 我的屏幕。 這是什麼8號線做 通俗地說? 它從一個值 用戶 - 即,一串串 - 什麼做呢? 它本質上是將其移交到了 男生在左手側的 等號因此,在這種情況下, name變量實際上可以存儲它。 然後printf是另一個 一個函數實例。 我們說,調用一個函數。 要使用功能 調用一個函數。 這件事顯然 接受兩個參數。 這其中,逗號,這一個。 這本身只是一個字符串 它包含一個佔位符。 %s的手段把這裡另一個字符串。 所以把名字後, 插入逗號, 那件事對我來說。 所以我仍然可以做其他事情。 讓我現在繼續做一個有點 愚蠢的方案,但讓我刪除, 讓我創建一個循環。 雖然真實的。 顯然是象徵真 總是會是真實的。 那麼什麼樣的循環我誘導 寫這樣的一條線? 因此,一個無限循環,對不對? 只是而真實。 有沒有辦法,我可以改字 真正的是什麼東西,所以這是 只是要永遠運行。 因此,如果你曾經有一個節目 在您的Mac或PC,似乎 已鎖定​​,或者在做什麼 東西的東西,你只要 不能得到的東西,除非你退出 重新啟動計算機,或拉起 任務管理器或類似, 這裡就是這樣一個例子。 我可以說,“我是一個錯誤的程序。” 關閉引號,關閉 括號,分號。 如此反复,發現模式。 即使我們的一些語法是新的, 關鍵字,而關鍵字的真實, 請注意,我有同樣的 樣的捲髮括號。 我有一個分號和括號。 所以,現在讓我們繼續前進 和編譯。 定做,定做。 因此,在這一點上,你不需要 重新啟動您的設備,所有的權利嗎? 所以這裡容易教訓是 兩個手指,控制Ç 我們將退出該程序。 但是,你可以清楚地看到,為什麼這件事情 重演一遍又一遍。 我可以做的東西一點點 更為複雜,因為捉弄。 我要繼續前進, 下面說的。 對於整數,它是一個整數,i是 我們給予最通用名稱 當你在編程變量 只是計算,等於0。 讓我繼續說,而我, 比方說,小於100,我+ +。 我們會支持這個語法, 但是,這只是意味著 我一而再,再遞增。 我想在這裡做什麼? printf的,“我可以指望我。” 這是一個錯誤的程序。 其實我什麼打算? 百分比不是,但你不會猜測 這一點。 %d是一個十進制整數。 逗號。 讓我滾回來。 現在讓我使重新編譯。 現在讓我重新與定制。 我真的該死的快時,可以指望 我寫這樣的程序。 現在,讓我們做的東西 小非故意。 如何讓我們這樣做,而我 是大於或等於0。 這是什麼會誘發? 因此從邏輯上講,這是不聰明, 因為如果我現在重新運行,各顯神通, 我現在可以指望,真的很高。 不幸的是,大約高,我可以 計數為4億美元,所以這是怎麼回事 需要一段時間。 那麼,為什麼我們不離開這個作為我們的 扣人心弦的,有前途的,在 週三,我們會看到,如果 這個程序就完成了。 二,我們將介紹你自己 編寫自己的功能,所以很 很快,週三,我們會,我們 過渡到C從頭開始 寫日益複雜 做太多的計劃, 遠不止此。 然後我們會看到你。 [掌聲] 揚聲器1:在接下來的CS50, 益智日是成功的。