[音樂播放] -Alright! - 這是CS50。 - 這是CS50。 - 這是CS50。 [音樂 - IGGY杜鵑,“花哨”] - 我的最愛內存從CS50 是我去的時候益智節。 -Probably只是時間 花了工作問題集 與我的朋友和人民誰沃爾德 最終成為我的blockmates。 從 - 我的最美好的記憶 CS50是Hackathon。 -The CS50 Hackathon。 -Hackathon。 -Hackathon。 -Hackathon。 -The Hackathon -Rob鮑登。 只是關於他的一切。 [音樂 - IGGY杜鵑,“花哨”] - 我的最愛內存是當我在 階段,我打了久負盛名的作用 的節點[?在鏈接?] [?清單。 ?] - 當我們都得到免費的Dropbox空間 大衛像,看看在你的座位。 而且當時想,每個人的空間! [音樂 - IGGY杜鵑,“花哨”] 任何 - 我的建議 進來的學員會 是真正的工作 P-集合與朋友。 - 辦公小時是很你的朋友。 -make你的大部分經歷 並滿足盡可能多的人就可以了。 - 不要害怕尋求幫助。 在本週初-start的P組。 - 我認為最重要的事情是要 採取的所有資源的優點 該CS50擁有。 - 進入本週初的辦公時間。 -Definitely觀看短褲。 - 不要拖延對你的P-集合。 - 確保你找到一個偉大的團隊 人們上班的P-集合了。 你可以有很多的樂趣 並完成工作在一起。 - 不要害怕,強迫自己。 去有時黑客版。 之前在紙上-write事 你有沒有碰你的電腦。 -CS50是真正偉大的 提供方式獲得幫助。 - 我的一個建議就是睡覺。 有人說了嗎? 睡眠,是肯定的。 這很容易不這樣做,但 你要做到這一點,我想。 - 我會說,真正做好心理準備 因為你一定會喜歡它。 [音樂 - IGGY杜鵑,“花哨”] - 這是CS50。 - 這是CS50。 - 這是CS50。 [音樂 - IGGY杜鵑,“花哨”] - 這是CS50。 [掌聲] 戴維·J·馬蘭:所以這是CS50 這是第0週的結束。 而這只是一些 CS50的工作人員是誰 等待你不僅在第 和辦公時間,但是, 也,本週末 在CS50謎天。 這又是不 所有關於編程。 事實上,它的預期,你 不會有任何編程, 而是用解決問題 機智和朋友與你一起。 我們會被一些人加入 我們的朋友在Facebook-- 如果您註冊這裡 - 誰 在過去的幾年中, 其實已經寫 這些挑戰我們。 因此,他們將是那些 最終運行的難題節。 所以,你將面臨挑戰 用精確的各種事情 和問題,在鄉親 Facebook的喜歡思考的問題。 所以這是明天。 在cs50.harvard.edu/register註冊。 現在一對夫婦詞 工作人員尤其如此。 這在這裡是安塞爾·達夫, 究竟是誰是 這些二進制文件的共同作者 我們看到週三燈泡, 除了CS50自身丹·布拉德利。 安塞爾·達芙也是前 我的大一建議者3年前 他居然連建立了這個講台。 他走了就做 工程科學等。 現在,在這裡他的照片實際上是 安塞爾3年前在CS50 Hackathon 當他借了我們的一個 氣球,把它粘到他的筆記本電腦, 並且,在接下來的12一些奇怪的 小時,集中在他最後的項目, 休息片刻,只開 糖果袋在Hackathon。 但他接著說,最近來 度過今年夏天我們, 因為CS50的員工,並 現在的學生本學期, 有它自己的三維打印機。 並概括地說一個3D打印機是 設備看起來很喜歡這個。 你用塑料線軸填充 被熔化的設備 與您共建的東西 從字面上什麼。 就像噴墨打印機,你開始 隨地吐痰的塑料小點 這種形式的合作, 形成整體的對象。 等安塞爾例如,較早 今年夏天,有一個iPhone 5 並決定他真想 支撐它掛在他的辦公桌。 但他並不想 出去買東西 從Apple Store或類似的,所以他 坐了下來,開始畫畫的東西。 他拍了幾張測試 至於有多厚 並有多寬他的iPhone是, 他畫了這個形象在這裡, 他決定,他希望 有一個75度傾斜 因為它是盯著 他在他的辦公桌那裡。 然後,他把這個用 軟件,轉換成3D CAD模型 這看起來有點 這樣的事情。 然後他繼續, 最終,實際創建它。 所以,事實上,如果你們在這裡,也許 在一排,我可以拋出來,有 an--有我們的鄉親與iPhone 5,在這裡我們有兩個以上。 現在,不甘示弱,CS50自己 程功還成立了這個夏天 建立了不少的東西,, 事實上,其原因仍 目前還不清楚,已經慢慢 打印頭大象的軍隊 以闡明武器和樹幹。 一對夫婦的,實際上在這裡如果 現在任何人都將like--大象。 好吧,。但成也做了 對我們來說,他非常親切地成立了一個攝像頭 因為大象, 不管你信不信, 以約兩個 半小時,以打印。 即使是iPhone的支架了 在一個半小時​​進行打印。 什麼鄭毅然不顧 成立於前面一個不錯的攝像頭 這款3D打印機,拍攝了一個小時 半為安塞爾的設計印刷。 我們覆蓋一些性感 音樂給它,以便 給你這個看 如何3D打印作品。 即使這 實際上是在塑料, 認識到,如果這是一個區域 學術興趣的你, 還有人,其中 他們詹妮弗·劉易斯在這裡 在學校 工程,誰是真正 從事3D打印 塑料對象。 但是,即使越來越多, 生物材料來解決 生理問題的人。 但這裡是一個小 一些來自CS50。 [響亮機械性干擾] 戴維·J·馬蘭:這聽起來並不 像,在現實中什麼, 但它更涼爽觀看它 在這樣的速度,和與該聲音。 現在,在星期三,如何 沒有我們首先來到這裡的? 我們開始談論電腦 科學和我們問那是什麼。 它是關於一些東西, 有這麼多不同的方向 您可以在其中頭 後像CS50課程。 事實上,如果你撿到1 這些非官方的指南 到CS外,該小冊子 我們提供的,無論你是 想著剛剛服用CS50, 或者是做中學, 或者甚至集中 在CS中,也翻閱了。 你會看到圖 向端的 顯示了許多不同的方向 在CS中,你可以走了。 但是今天,我們將關注,再次對 真正的根本的觀點之一, 也許,在這裡你有 輸入問題, 你必須從輸出 的問題,你有 與創建算法 這些產出從這些投入。 和一個這樣的例子,是 當然,這款手機的書在這裡。 與我們用作示例,以去 通過一種算法是正確的。 然後另一位是 正確的,但有點快。 然後另外一個,是一個小 更戲劇化,但是從根本上 快。 沒錯,這電話簿我們 聲稱有大約1000頁。 和多少次我 撕電話簿一半 找一個像邁克·史密斯, 最大,1000頁的書? 因此,10給予或採取。 所以一旦我在撕這個東西 上半年,或者簡單地說,更成熟, 分成兩半,這只是 10頁出1000。 如果你浮想聯翩,一點點 不切實際的電話本, 但如果電話簿中有一些4 十億網頁中,所以完全 笨重的身體,有多少 次你分4十億 頁電話簿的一半? 因此,它實際上是32,給予或採取。 只有如此,32倍,出 四十億的網頁,可以 你找一個像邁克·史密斯。 這就是效率。 這是一個很好的算法,敢說。 但是,我們從移動 嘗試正規化了。 我提出這個偽代碼。 偽代碼是沒有什麼正式的。 這不是你記住的東西。 這是你表達的東西只是 相當直觀地使用英語, 或任何語言真的,那 簡潔地傳達你的想法。 但是,什麼是對的關鍵 偽代碼是你 試圖預測所有的 可能發生的可能情況。 事實上,在這個偽 碼,真有3案件 每次我把電話簿。 麥克可能是到左邊。 麥克可能是正確的。 或者,他可能是對的,我在網頁上。 或第四角的情況下,可以這麼說。 壞的情況可能是1 which--發生了什麼? 邁克只是不 電話簿的。 而當節目crash--當蘋果 和PC軟件,你們跑 在你的電腦有時 掛起或意外退出, 這通常意味著,一些 程序員,像你這樣的一些人很快, 剛剛搞砸了,並取得了一定的失誤。 也許沒有預料到的,也許有 沒有邁克·史密斯在電話簿中。 如果你並沒有真正寫 代碼來處理這樣的情況下, 一般不可預測 事情都可能發生。 你的機器會凍結。 它可以重新啟動。 該程序可以退出。 並且因此,所有的這些 愚蠢,你可以 在你實際所遇到 生命只是使用電腦, 將越來越多地只 通過這種直覺解釋清楚 而這種理解是什麼 究竟要在引擎蓋下方。 現在,讓我們嘗試看看 在更普遍的問題。 而不是採取 出席在這樣的地方 這一點,這將是相當緩慢 做一,二,三,四。 或者,也許二,四,六,八。 讓我們關注,相反,對 我們如何正式 該過程由算法 我們可能需要出席。 而一路走來,讓我們開始 運用一些術語 我們將在我們實際使用的今天 開始在語言編程。 所以,我給你了,一個四分鐘的錄像 我們把與我們的朋友 從TED的組織。 由此,我們提供的腳本, 他們帶來了他們的動畫師來承擔, 居然創造了2D 動畫什麼的算法。 如果我們能夠把燈光調暗。 [音樂播放] 旁白:什麼是算法? 在計算機科學中, 一種算法是一組 指令解析 有些問題,一步一步的。 通常情況下,算法 由計算機執行的, 但是我們人類有算法為好。 舉例來說,又怎麼會 你去計算 人在一個房間裡有多少? 好吧,如果你像我一樣,你可能 在每個人一個點在一個時間 從零計數。 一個,兩個,三個,四個,等等。 嗯,這是一種算法。 事實上,讓我們試著來表達它 在偽代碼位更正式。 英語的語法, 類似的編程語言。 設n等於0。 每個人在房間裡, n設置等於n加1。 如何解釋偽? 以及行一個聲明, 可以這麼說,一個變量 所謂n和初始化 其值設置為0這只是 意味著在 開始我們的算法, 東西與我們 計數為0的值。 畢竟,在我們開始之前計數 我們還沒有算什麼呢。 調用該變量 n是只是一個約定。 我可以把它叫做任何東西。 現在,兩線demarks 一個循環的開始, 一系列的步驟,這將 重複的次數一定數目。 因此,在我們的例子中,一步我們 服用計數的人在房間裡。 下面一行二是行 3,描述 究竟如何,我們會去計算。 壓痕暗示 這是一行三人,將重複。 所以用偽代碼 說的是,從0開始後, 每個人在 房間我們將增加1Ñ 現在是該算法正確嗎? 好吧,讓我們在這砰了一下。 它是否有工作 兩個人在房間裡? 讓我們來看看。 在一行,我們初始化n至0。 對於這兩種人, 我們再遞增1Ñ。 因此,在通過第一個行程 循環中,我們更新N從0到1。 上通過該第二跳閘 同樣的循環中,我們更新N從1到2。 因此,通過該算法的 端,n為2,這 確實符合數 人在房間裡。 到目前為止,一切都很好。 怎麼樣一個角落的情況下,雖然? 假設有0人 在除了我的room--,誰的 做計數。 在一行中,我們重新初始化n至0。 不過這一次,行 3不執行在所有 因為沒有一個人在房間裡。 因此n仍然是0,這確實符合 的人在房間的數目。 很簡單,對不對? 但人們計算一次 是非常低效的,也沒有? 當然,我們可以做的更好。 為什麼不能算兩個人的時間, 而不是數一,二,三, 四,五,六,七, 8,等等。 為什麼不指望二,四, 六,八等? 它甚至聽起來更快。 它肯定是。 讓我們來表達這種優化 在偽代碼。 設n等於0。 對於每對人 房間裡,將n設置等於n加2。 很簡單的改變,對嗎? 而不是指望人一次, 我們不是指望他們每次兩個。 這個算法的,因此 快兩倍的最後。 但它是正確的? 讓我們來看看。 它是否有工作 兩個人在房間裡? 在線路之一,我們初始化n至0。 該1對人, 我們再由2遞增ñ。 因此,該算法的 端,n是2,這 確實符合數 人在房間裡。 假設下一個有 零人在房間裡。 在一行,我們初始化n至0。 和以前一樣,三號線 不執行這一切 因為沒有任何對人 在房間裡,並因此n保持為0。 這確實符合 人在房號。 但是,如果有 三個人在房間裡? 請問這個算法的票價? 讓我們來看看,在一行一個, 我們初始化n至0。 對於一對的那些人, 我們再由2遞增ñ。 但是然後呢? 沒有另一個滿 對的人在房間裡, 所以二線不再適用。 因此通過此算法結束時, 由於仍然是n 2,它是不正確的。 事實上,這種算法的,以說 是越野車,因為它有一個錯誤。 讓我們用一些補救 新的偽代碼。 設n等於0。 對於每對人 房間裡,集合N等於n加2。 如果一個人仍然未成, 將N等於n加1。 為了解決這個問題,我們已經 符合四個條件介紹, 否則,所謂的 分支,即只執行 如果有一個人,我們 不能配對另一回事。 所以現在,無論是 有一或三個 或者人在房間的任何奇數, 該算法現在指望他們。 我們可以做的更好呢? 好了,我們可以在三分球數, 或四肢,甚至五元和十, 但除此之外,它會得到 一點點的困難點。 在一天結束時,是否 通過電腦或人執行, 算法只是 的一組指令 與解決問題。 這些都是只有三個。 有什麼問題,你會 有一個算法解決? 戴維·J·馬蘭:那麼刻意, 一個非常簡單的程序, 一個很簡單的算法, 為實現東西 很簡單,計數 人在房號。 但是,讓我們梳理出 一些代表性的 這裡的特點是實際 去,即使是有用的 實施最 軟件的複雜。 因此,例如,在該第一線, 我們有我們所說的變量, 從代數,你 使用X和Y一般熟悉 和z有時,等等。 但在編程中,變量 仍然,在一天結束時, 非常相似。 但是,這也許是簡單的思考 一個變量只是一個容器。 並且,事實上,它是比特的一些數 在你的硬盤上莫名其妙地實施 或在您的計算機的內存, 但上,在未來更多。 這只是一個容器。 如果你說的東西 如令n等於0, 嗯,這就像調用這個玻璃 碗在這裡N,只是一個任意名稱, 並把沒有在它最初。 因此,其值 碗,現在是零。 當然,如果你認為 在隨後的行, 實際增加了一些行 代碼,如在這裡三線, 1,這等於是說有什麼 n個電流值,它是0,加1, 把東西像 乒乓球在這裡。 這個現在的價值 變量是很簡單1。 而且你可以非常快速地推斷, 但現在是2,現在是3,依此類推。 所以,這是所有的變量是。 這是一塊存儲到 實際存儲一些數據。 現在它是一個乒乓球。 在那裡,它是一個數字。 但它可能是一個字 字典,像拼寫檢查 我提到在週三的 一個去年的習題集。 現在,另一個關鍵的想法,那同樣 很直觀的,我主張, 是循環的。 並在此過程中的循環 計算每個人的 當然,在做同樣的 再次件事,again--一方 在一兩次的時間。 你也可以用英語表達這一點,或者 偽碼的代碼,在任何數量的方式, 但使用這個介詞“為” 是這樣做的一個很常見的方式。 每個人在房間裡,做到這一點。 一遍又一遍。 而事實上,它的 縮進,一行三人, 只是意味著什麼 你應該做的 是的縮進的東西 線下2本身。 只是一個人的約定, 但常見的一種 我們將在實際的高看 高級編程語言。 現在有點更有趣的是 當你在一個角落裡的情況下得到的。 例如,一個角 情況是當有 三個人,或五,七年, 或者人在房間的任何奇數, 因為這樣做,通過兩兩閘 最終,因為你去 錯過一個人,無論是在 一開始或盡頭 這取決於你怎麼做。 所以,現在,我有這個分支,或 條件下,如果一個人保持, 然後繼續前進,處理一個 寂寞的人誰沒有得到 搭配了別人。 所以,這就是我們所說 的條件,或一個分支。 現在偽代碼 更一般地可以是 寫入解決任何數量的問題。 而我以為我們會 這裡做的是花點時間 邀請我們應該說CS50的 自己搶鮑登在舞台上 由兩名志願者來參加, 誰不知道等待著。 一隻手去了,只要我說的。 你怎麼樣的 結束了,上來吧。 又有怎樣的更遠 走,怎麼樣在後面的方法。 後排,加油了你的手。 好吧,和你叫什麼名字? 梅艷芳:梅艷芳。 戴維·J·馬蘭:梅艷芳。 好吧,很高興見到你。 讓我來給你介紹羅布鮑登。 這是梅艷芳。 而你叫什麼名字? KIERSTEN:Kiersten 戴維·J·馬蘭:Kiersten。 Kiersten,同比增長來吧, 滿足羅布鮑登和安妮塔。 很高興認識你。 KIERSTEN:很高興見到你。 戴維·J·馬蘭:好吧,羅布。 羅伯鮑登:很高興見到你。 戴維·J·馬蘭:梅艷芳。 KIERSTEN:梅艷芳嗨。 戴維·J·馬蘭:還有你 數百名同學。 所以,現在讓我繼續前進,拉 最多只是一個簡單的程序在這裡 在Mac OS是會讓我 其實記一些筆記下來。 如果你們想每個取 在這些學校中有一個位置, 讓我繼續前進,開始一個列表 的偽代碼,如果你願意。 而我想在這裡做, 最終的類型是適合你 一些指令,我們的 觀眾其實是 要背誦我們。 讓我繼續前進,只是 更改為編號列表 以匹配我們在那裡做了。 而我什麼都做 你的幫助,是寫一個程序 偽代碼,與 這些傢伙會 實施花生 醬和果凍三明治。 因此,它可能是中肯的,以 展示一些東西你 可能已經看到在互聯網上 對於只是一個短暫的惱人的時刻。 [音樂BUCKEWHEAT孩子們,“花生醬  果凍時代“] 戴維·J·馬蘭:確定。 這是夠了。 所以在這裡同時我有一個 對谷歌眼鏡的 我們把對CS50自己搶鮑登 看世界,通過他的眼睛。 我們會盡全力在後 生產實際織 什麼羅布的畫面是看到 現在,這個實際的演講 我們的兩個視頻 他身邊的志願者。 那麼,我該怎麼辦 是,我是打字員。 我們這裡的有目標 其實寫程序 與製作,最終, 花生醬和果凍三明治, 但是這三個會做人 就好像它們是計算機。 和計算機,在一天結束時, 其實是非常愚蠢的設備。 他們是超級快,但他們只能 這樣做,從字面上看,他們被告知的東西。 你不能只是說做一個花生 醬和果凍三明治。 你必須編寫他們這樣做。 你要告訴他們 精確要做什麼, 少的東西去和可怕, 希望,可笑歪。 因此,隨著中說,我們需要 一個電話,從觀眾 什麼應該加強 1是,如果目標位置 為使花生 醬和果凍三明治。 是嗎? 聽眾:麵包[聽不清]囊中。 戴維·J·馬蘭:打開麵包袋。 因此,如果這三個選手會 想繼續做的,從字面上。 打開麵包袋。 [聽眾LAUGHING] 戴維·J·馬蘭:讓我們工作了。 好吧。 所以第二步,how-- 讓我們藉此進一步。 是啊,在前面。 聽眾:[聽不清]麵包。 戴維·J·馬蘭:這是什麼? 聽眾:取出麵包。 戴維·J·馬蘭:取出麵包。 同樣簡潔。 謝謝。 [掌聲] 戴維·J·馬蘭:就這樣? 好了,第二步是怎麼回事 要取出麵包。 好吧,有人要 給我們一個較長的句子? 別人? 多一點[聽不清]。 沒有,什麼都沒有了。 是嗎? 聽眾:將兩個 片彼此相鄰。 戴維·J·馬蘭:將兩 片彼此相鄰。 [聽眾LAUGHING] 戴維·J·馬蘭:將兩 片彼此相鄰。 第四步。 是嗎? 聽眾:你拿 手,將它輕輕地 在花生醬蓋子的頂部。 [聽眾LAUGHING] 聽眾:[聽不清] 旁邊的花生醬。 戴維·J·馬蘭:什麼? 再說一遍。 聽眾:擰開蓋子,把 它輕輕地旁邊的花生醬。 戴維·J·馬蘭:把它輕輕 旁邊的花生醬。 好了,進步。 第五步。 優秀的。 是嗎? 拿起刀子。 戴維·J·馬蘭:拿起刀子。 好吧,第六步。 是嗎? 聽眾:通過手柄握住刀。 戴維·J·馬蘭:保持 刀的手柄。 用手柄握住刀。 第七步。 是嗎? 聽眾:[聽不清]刀花生 黃油和盡量少出[聽不清]。 戴維·J·馬蘭:將刀in--í 聽到“花生醬放刀 並採取盡量少出去越好。“ 順便說一句,第一個將紙取出。 好吧,第九步。 第九步。 第九步。 我們還沒有真正做一個三明治呢。 是嗎? 聽眾:在花生醬使用刀, 適用於所述麵包花生醬。 戴維·J·馬蘭:使用刀 花生醬,適用於花生醬 說麵包。 [聽眾LAUGHING] 戴維·J·馬蘭:好步10。 步驟10。 是嗎? 聽眾:花生味 黃油,以保證質量。 [聽眾LAUGHING] 戴維·J·馬蘭:步驟11。 第11步。 第11步。 來吧。 是嗎? 就在那裡。 聽眾:小心拿起果凍。 戴維·J·馬蘭:小心地拿起果凍。 單擊確定,然後另一只手小漲。 後面你。 是啊,在藍色的。 聽眾:好吧,取出 從[聽不清],是蓋子, 從果凍取出蓋子。 [聽眾LAUGHING] 戴維·J·馬蘭:從果凍。 呵呵。 [聽眾LAUGHING] 戴維·J·馬蘭:然後呢? 聽眾:勉強 掃任[聽不清]。 [聽眾LAUGHING] 聽眾:當然,在[聽不清] 從果凍取出紙張。 戴維·J·馬蘭:從果凍取出紙張。 步驟14。 我們快到了。 是嗎? 聽眾:反轉果凍瓶 一切才掉下來。 戴維·J·馬蘭:反轉果凍 果凍瓶之前掉下來。 第15步。 聽眾:蓋上蓋子。 戴維·J·馬蘭:更換上限。 步驟16。 是嗎? 聽眾:[聽不清] 戴維·J·馬蘭:再說了。 聽眾:取蓋掉你的果凍。 戴維·J·馬蘭:關你的果凍。 所以really--哎呀。 來吧。 蓋上蓋子。 把cap--你說 從果凍取出帽。 感覺我們是在一個位一個循環。 步驟17。 是嗎? 聽眾:[聽不清] 戴維·J·馬蘭:再說了。 聽眾:[聽不清] 戴維·J·馬蘭:回到step-- 聽眾:[聽不清] 戴維·J·馬蘭:刪除 蓋從花生醬。 是嗎? 聽眾:刪除所有的 果凍在麵包上。 戴維·J·馬蘭:刪除所有 在麵包的果凍。 戴維·J·馬蘭:我們快到了。 步驟19。 聽眾:去除多餘的果凍。 戴維·J·馬蘭:哈哈,果凍。 [掌聲] 戴維·J·馬蘭:你為什麼不we-- 一個步驟把這個家。 多一個步驟,然後 我們會為三明治。 是嗎? 聽眾:[聽不清] 戴維·J·馬蘭:雖然任何三明治 remains--讓我們縮進this--吃。 [聽眾笑聲] 戴維·J·馬蘭:好的,謝謝 您在這裡我們的志願者。 [掌聲} 戴維·J·馬蘭:我們有一些不錯的 臨別禮物,你們每一個人。 你自己的花生醬,果凍, 和麵包帶回家。 謝謝。 KIERSTEN:謝謝。 戴維·J·馬蘭:[聽不清]歡迎。 [掌聲] 戴維·J·馬蘭:所以,這是, 當然,一個可笑的例子。 對不對? 但它確實種揭示我們如何 人類只取清晰度是理所當然的。 而事實上我一直 與另一個人, 他或她只是知道你的意思。 電腦不會 要知道你的意思, 即使當使用作為 我們今天要做的事, 在划痕編程的東西,一拖 抗摔,拼圖式的語言。 即使是專為年輕 孩子,你有 如此明確,所以用文字 你想你的程序做。 現在,最終,我們 將要編程 不是偽代碼, 英語的語法, 但是代碼,或更正確地,源代碼。 源代碼,僅僅是看中方式 描述你的代碼實際上 用鍵盤的寫 不是英文本身。 這是在C或Java或C + +或東西 這樣,因為我們很快就會看到。 而事實上,只是為了嚇唬 你們幾個,乍一看, 這是寫在一個語言的程序 所謂C.但聯合國人嚇你們幾個, 你會完全 明白這是怎麼回事 來吧下星期一時 談到這樣的事情。 坦率地說,這是一個較舊的語言。 這是相當神秘的, 但它是代表 大量的語言,這些天那 有很多的括號和大的 括號和引號和分號。 和很多這 語法的東西,是不是 在所有智力有趣。 事實上,它是一個完全分心 從最簡單的想法 這都盯著我們的臉。 這個程序,你可能只是猜測, 打印到別人的電腦屏幕 單詞“你好逗號的世界。” 就是這樣。 所以很明顯,有 很多東西,這 得到的方式 一些顯而易見那裡, 但它會很快溜走 程,完全直觀。 事實上,我們要做的事情 今天是提煉這個相當複雜 看著節目,又你來 快速理解,但事 要簡單得多。 遠的不說,我們的意思。 讓我們畫的是什麼,我們的意思是一張圖片, 這些拼圖這裡的方式。 因此,這是一個編程 語稱為劃傷。 它是由麻省理工學院媒體實驗室開發的。 什麼,你會在看到問題的設置為零, 這將在稍後公佈,今晚, 我們將讓你去這個 這裡scratch.mit.edu網址。 他們有一個網頁 通過該界面 你會寫你的第一個程序。 或者那些你事先 的經驗,你的第二個項目, 但在一種環境,是 可能有點陌生,而 將推動你創造的東西 使用這種非常直觀的環境。 現在,我要在這裡做 為開拓程序本身。 它的存在不僅作為網頁瀏覽器, 也可作為可下載的程序 這樣就可以真正使用它 如果你沒有上網。 而我要做到這一點 在這裡,在桑德斯,只是 如果Wi-Fi的不 配合超好。 而我現在要做的就是點 這一計劃的一些特點。 所以,要清楚,我只是雙 點擊桌面上的圖標, 或者等價地去scratch.mit.edu, 而且它拉到這個窗口。 這是一個編程環境。 這是一個的軟件, 我們的一些朋友在麻省理工學院 寫道,讓我們和你寫 在語言課程叫劃傷。 現在,這恰好是一個 貓誰也叫刮 這就是他的​​世界,他的生活。 這就是舞台,可以這麼說,那 矩形的左上角。 他不必像一隻貓。 你可以讓他看看 像什麼,你 可以有許多這樣的子畫面, 或字符,在一個程序中。 同時,在這裡就遠 沒錯,是一個很大的空白石板。 這是在哪裡,在某一時刻, 我們要開始編程 通過拖放 這些圖形拼圖 這是對片 這裡在中間。 還有的方式比更多的人 我們將在這裡花時間在課堂上 因為你會發現, 他們都是相當直觀。 再次,它的設計 為了孩子,但我們 用它來梳理出一些那些 的變量,循環的基本思路, 條件,而且,很快,事情 如函數和事件 和線程等花哨的東西,我們會 去之前就實際創建 東西從頭開始。 雙關語意。 現在,我要在這裡做的是 點擊不是運動,而是控制。 而這僅僅是一個 這裡 - 的分類 我看到一個不同的 顏色設置塊。 但是要注意的幾個熟悉的字眼。 “如果”和“否則,如果”和“重複”。 而且你可能已經猜到 這讓人想起了分公司, 或條件下,我們看見了, 即使是循環結構。 因此,我們有相似的塊在這裡。 但最有趣的 一個是這個人在這裡。 當綠旗被點擊, 這一點,對於那些事先編程 經驗,相當於 一個主要功能。 但是,對於那些不熟悉的, 這是一塊拼圖 這將開始踢我們的整個程序。 它的字面意思是,當我走了,在這 程序,並單擊綠色flag-- 你可以在這裡看到了在 左上角的UI, 所以看到綠色標誌 旁邊的紅色停止的跡象? 當我點擊的是,我 程序將運行。 現在,我要做些什麼 超級簡單,劃傷。 我要繼續前進 然後轉到面板外觀 在這裡,我在那裡有一堆 紫色的拼圖碎片, 而我要繼續前進,做 一些超級簡單的像,說。 和then--通知本 在白色框中的文本 是editable--我要說 “你好世界”,就像我們 在做文字 版本剛才。 而現在,如果我去,然後單擊此 綠旗,我現在已經編程。 這不是一個特別 有趣的節目, 但我做電腦做一些事情。 我開始一個程序,它 做了什麼,我告訴它做的事。 現在,我可以繼續拖拽 越來越多的這些拼圖 並且他們將互鎖,但 讓我們拍了一些術語這裡 我們會看到重複的 在整個過程中, 真正在整個計算機科學 和編程更普遍。 這種“說”塊,紫色,讓我們 剛開始調用語句。 這就像對事實的陳述。 做到這一點。 所以,這是一個類別 說明你 可能養活一台電腦作為部分 的程序或算法。 並且要清楚,你 可能是理所當然的 你有你的計算機上的程序。 而且他們的一種算法,但 節目真的是一堆算法 有些人寫的。 它們包裝起來,並 他們把它賣了,所以你, 或者他們在網站上發布 供您下載。 因此,程序僅僅是一個 一大堆的零和一 ,不知何故,人類創造的。 而那些零的模式和 那些代表的東西,最終, 像“打招呼世界”或“戲 這樣的音樂“或”播放此視頻“ 或“發送電子郵件。” 但是,我們會回來的 方式更詳細地什麼 程序是,當你, 自己,寫他們。 這裡的另一個statement-- “等待一秒鐘。” 我沒有用這事,但是如果我想 我的計劃暫停了一會兒 做一些事情,我可以告訴它這樣做。 等待一秒鐘。 現在,另外一個可能是“播放聲音”。 所以,這是唯一的划痕,它 要播放聲音的能力。 因此,聲明我可能 用法是,在這裡,“播放聲音”。 與此同時,布爾表達式, 所以這是一個票友字 剛剛任命布爾先生一個人的名字命名的, 這是所有關於一個問題。 True或false--是鼠標按下? 布爾表達式就是 一定的英語表達 這是真或假。 無論是打開或關閉。 任一或零。 你可以把它 在任何數量的方式, 但它的真或 這個假的,最終。 因此,“鼠標按下問號” 這將是一個布爾表達式。 而你能想到別人,也許。 例如,“是左數 比對數量少嗎?“ 這也將是 一個布爾表達式。 “比少”是一個布爾表達式。 這一次也一樣,“感人的鼠標指針。” 我不知道他們為什麼 稱之為鼠標指針。 它只是意味著,是光標,是 箭頭在屏幕上,觸摸貓, 例如。 或屏幕的其他一些方面。 這是一個問題,又和 它表示一個布爾表達式。 一些你可能 要在條件使用。 所以我們得出這樣在短短的一瞬間。 您可以在“和”的東西放在一起。 所以,如果你要檢查,如果這 是這種情況,這是的情況下, 你可以使用這樣一個“和”塊。 而這裡的這一條件。 注意到小開口部的形狀 在此黃色拼圖塊的頂部, 這讓人想起了形 我們剛剛看到了剛才。 每個布爾表達式的 必須指出這些邊緣 在左側和右側。 那是因為麻省理工學院的人決定 通過視覺傳達的形狀, 種你能幫助的人, 學生和兒童的一致​​好評, 種以填補空白字面上。 現在puzzle--了 開放是小了點, 正如我們會在節目中看到的, 在刮,它會成長,以適應。 它會保持其形狀,最終。 所以,一個條件讓你決定 “我應該做的事沒有?” 布爾表達式 是實際的問​​題 您使用的是決定我去 向左還是我去的權利 當我遇到這樣的 所謂的岔路口? 你可以有兩個分支。 如果事情是真的,做 這一點,否則走那條路, 或者你可以什麼都不做 總之,由於此塊暗示的保證。 同樣,我們可以嵌套這些東西。 所以,如果你想增加兩倍岔路口 路上,無論是幹這幹這幹那, 你可以嵌套這些東西放在一起。 它開始變得有點 醜陋,最終肯定, 但邏輯仍然是相同的。 你可以從字面上讀 這種從上到下 它說,它是指:如果這 是真實的,否則,如果其他人這樣做。 一個循環沒有得到划痕簡單。 永遠做到以下幾點。 現在,你可能會想到你 可以做多,因為有沒有 的頂部和之間的大的空間 這個拼圖開放的底部。 但你會看到划痕是要 成長,以適應盡可能多的拼圖 只要你想在那裡臨時抱佛腳。 另一個循環可能 表示有重複。 如果你事先知道,“我 想要做的事10次,“ 你可以告訴划痕 做某事10倍。 而且,與此同時,我們可以有變量。 因此,這裡的的任意一個, 它是橙色在這種情況下, 這是一個旋風之旅。 同樣地,你會發現這非常接近 一旦你開始指向和點擊。 我叫我的變量n,但我 可以把它命名為任何我想要的, 而我設置在這裡,在 這個任意的例子中,零。 現在看到這樣一個程序打招呼 世界是不是所有的吸引力, 讓我們真正開放的東西 一個以前的學生做。 讓我去進取,不斷開拓, 例如,這個人在這裡, 為此,我會愛 有一個志願者。 好吧,怎麼about--讓我們走的更遠。 是的,上來吧。 你叫什麼名字? ABBY:艾比。 戴維·J·馬蘭:艾比,上來吧。 所以,你有沒有玩過 本場比賽之前? 女:第 戴維·J·馬蘭:好吧。 大衛,很高興見到你。 你過來吧。 什麼是你的編程 背景,如果有的話。 女:我已經學到了一些C + +。 戴維·J·馬蘭:你已經學到了一些C + +。 什麼是你的遊戲 打底色? 女:不是很多。 戴維·J·馬蘭:好了,我們就買那種。 因此,這裡的遊戲如何去上班。 我要繼續前進, 點擊綠色的標誌, 就是在這裡,在右上角。 現在,你在課堂上的前輩 曾在這裡給你一些指導。 並在短短的一瞬間,它 說:“空間開始。” 所以,儘管打空格鍵。 電腦遊戲:皮卡丘。 戴維·J·馬蘭:而且我們的目標是 捕捉食物,如描繪有 在左側。 和[聽不清] [遊戲音樂播放] 戴維·J·馬蘭:噢,好吧, 感謝您的播放。 我們這裡有一個小 臨別禮物送給你。 我們有CS50壓力球, 如果你想選擇。 好了,好高興見到你。 感謝您的光臨和挑戰。 因此,我們有更多的壓力球,所以 讓我們做一個例子來激勵。 一名志願者? 好吧,怎麼樣 這裡在前面。 你叫什麼名字? 輝立:菲利普。 戴維·J·馬蘭:菲利普。 上來吧,菲利普。 因此,菲利普將是 挑戰與另一個遊戲 你的前輩之一 寫作為問題的一部分設置為零, 所謂的常春藤的最難的遊戲。 我們將看到在短短的 此刻什麼意思了。 菲利普,很高興見到你。 你是什​​麼背景? 輝立:做了很多編碼。 做一個小遊戲了。 戴維·J·馬蘭:確定。 有很多遊戲了。 和你以前玩過這個遊戲? 輝立:無 戴維·J·馬蘭:全部 對,所以在這裡我們去。 我要繼續前進 並點擊綠色旗幟。 [遊戲音樂] [音樂歌手哈默,“你無法觸摸這個”] 輝立:[聽不清] 戴維·J·馬蘭:[聽不清] 輝立:[聽不清] (笑) [音樂歌手哈默,“你無法觸摸這個”] 戴維·J·馬蘭:[聽不清] 犁過它。 輝立:[聽不清] 戴維·J·馬蘭:來吧。 [音樂歌手哈默,“你無法觸摸這個”] 戴維·J·馬蘭:好吧。 恭喜。 [掌聲] 戴維·J·馬蘭:我們將 後,網上這麼晚 您可以拖 用它。 普林斯頓來到旁邊,在那之後。 所以,現在讓我們來實際進行 從頭開始, 可以這麼說,真正建立之前, 我們可以梳理出其中的一些想法 並獲得了一些連 由端更複雜。 我要在這裡走,我要去 繼續前進,創建一個新的文件。 如此反复,問題集將走 你通過一些步驟。 但是,我所做的就是去 在文件菜單中,我 說:“新的”,那麼像微軟 字,或類似的任何程序。 讓我們繼續now--我們 實施的“Hello world”剛才, 但讓​​我們做的東西有點可愛。 我要上去事件。 而我要做的事情“的時候 綠旗點擊。“ 然後我會用, 我們可以說,一個分支。 所以我想使用“如果”的狀態。 並注意如何,只要我靠近 它,它要一起捕捉。 所以我放手咬合在一起。 現在我可以做一些有趣的事情。 如果我經過這裡滾動,我要去 看到一大堆塊。 如果我去的“數據” - 讓我放大in-- 也有一些是關於變量。 如果我去“的議案,”你可以 顯然扭轉乾坤。 如果我去“經營者” - 哦,這是有趣的, 我可以選擇一個隨機數。 因此,讓我做一些事情,只有 一定的概率,只是因為。 我要繼續前進, 拖動這個拼圖, 這是小於 塊,所以它只是 “比那個這個數字少了?” 但我不希望有一個硬編碼數 因為這是相當沒有意義的。 所以,我要拖一段 在這裡,並注意它是如何在捕捉, 現在讓我繼續說:“如果 這是隨機挑選的號碼 小於6,請執行以下操作“。 現在為什麼不到半年? 什麼概率這實際上是 去給我,只是憑直覺? 約50%的,對不對? 如果是這樣的猜測隨機數 在1和10之間的是小於6, 顯然這是一,二, 三,四,五。 因此,這是怎麼回事,給我一個 發生了什麼50%的概率是多少? 好吧,讓我們做這樣的事情 對此,“播放聲音喵。” 並請注意,同樣, 一塊拼圖增長 適合的,只要該形狀相匹配。 這就是很重要的。 讓我走了過來劃傷 在這裡,點擊“播放”。 什麼也沒有發生。 那是一個錯誤? 沒有,沒有必要的。 它可能只是一個 更大的數字被選中。 因此,讓我們再做一次。 什麼都沒有。 [喵] 戴維·J·馬蘭:那不是。 [喵] 戴維·J·馬蘭:同樣。 號 [喵喵叫] 戴維·J·馬蘭:所以如果你 打過當然是遊戲, 那裡的東西是隨機發生的, 像壞人來不來 即將於到屏幕上,或 事情正在下降或不下降, 這只是因為一些超 簡單的像這種情況的發生。 選擇一個隨機數,如果 這是低於某個值, 也許這樣做也許做到這一點。 我們可以將 在進入狀態。 讓我們做不同的事情。 讓我扔掉這些。 您可以通過甩掉的東西 只需將其拖動到左側 和放手。 讓我繼續前進,做一個永遠的塊 並很快做一些討厭。 讓我繼續前進, 說“播放聲音喵。” 但我不希望這是太 討厭,所以讓我抓住這個區塊, “等待一秒鐘,”和通知 還有它沒有更多的空間。 但是如果你去足夠接近, 它想要去那裡。 所以我放手,它會 成長以填充塊。 所以,現在,這是一個循環。 [喵喵叫] 戴維·J·馬蘭:我 從字面上這樣做下去。 一遍又一遍。 這是不自然的聲音。 讓我繼續前進,改變這種 到不一秒,兩秒 然後按Enter鍵。 這有什麼好看約劃傷 你可以進行編程交互。 做出改變,也許按Enter或播放 再次,它只會繼續下去。 好了,現在我們為什麼不這樣做 東西有點可愛? 而不是從頭開始做的一切, 讓我去進取,不斷開拓的進步 做了一個,我預焙, 所謂的“寵物貓。” 我們將發布所有 網上這些文件, 與問題設置為零會告訴你 如何訪問它們,並打開它們。 並請注意,這是非常簡單的。 但在前進,我似乎已經抓住了 一個“永遠”塊,所以我有一個循環。 然後我有一個“如果”的狀態。 我有一個布爾表達式。 因此,在英語,只是看了一眼 這一點,特別是如果你從來沒有 編程之前,只是憑直覺, 什麼是該怎麼辦,這個方案? [聽眾顫振] 戴維·J·馬蘭:如果您的寵物貓, 貓會喵喵,對吧? 因為“永遠取消選中”在 將鼠標指針接觸的貓。 所以要清楚,我沒有說 此之前,所有的這些難題 片和腳本 我們結合成, 可以這麼說,腳本是同義詞 計劃,真的,就屬於這種貓。 其原因is--因為通知 怎麼在這裡貓一樣被高亮顯示, 到這裡,你可以創建一個 第二貓或狗或真 任何你想要的圖形。 您可以導入一些 從Photoshop,或類似 和整合的東西,如果你 要使它成為一個項目。 而且你會發現, 最後,就是你 可以添加腳本,加入拼圖 件,單個字符。 所以這些都屬於 這個特別的貓。 所以,現在如果我繼續玩遊戲 這個程序,什麼也沒有發生。 但它正在運行。 該計劃是在這永遠的循環, 那種等待的情況發生呢? [聽眾顫振] 戴維·J·馬蘭:為寵物貓。 所以,如果我移動我的鼠標移向他 - [喵喵叫] 戴維·J·馬蘭:所以現在 我撫摸貓。 同時,我們可以有一個雙分支。 讓我繼續前進,開 最多不寵貓。 我們會發布這個網上也。 這是一個多一點 複雜的,但不用說 你也許可以猜到 什麼事情要發生。 [喵喵叫] 戴維·J·馬蘭:貓是 喵喵叫,盛大老的時候。 但這個方案當然是 所謂“沒有寵貓” 這麼清楚,我想給寵物貓。 [咆哮] 戴維·J·馬蘭:不要寵物貓。 現在,讓我們一起來看看 在這裡的另一個例子。 這人會被稱為 “嗨,嗨,嗨,”原因 這將是明顯的,因為 當我運行這個件事 - [SEAL吠] 戴維·J·馬蘭:很容易 寫惱人的划痕程序。 [SEAL吠] 戴維·J·馬蘭:現在我們不會去 成非常詳細的所有的這些, 但要注意有一個 幾個在這裡的新功能。 有一個變量,被稱為“靜音” 然後有一堆條件。 而現在,讓我 只是逗你說 如果這個傢伙變得太煩人, 我打了空格鍵,他停止。 由於角色所發揮 這兩個腳本如下。 其中之一是做 叫聲每隔幾秒鐘。 另一種是只等 對我來說,打空格鍵。 如果我做打空格鍵, 這將改變 這個變量的狀態,則該值 這個變量,這顯然是 所謂的“靜音”,我沒有打電話 這無聊的東西像N, 我把它叫做一個英文單詞,“靜音”。 從1到0或從0到1。 從真到假或假為真。 所以你其實可以 看到現在,你 可以有兩個劇本,二 程序同時運行,則 兩個人都可能坐 在一個循環中做一些事情。 等待的人做 像打空格鍵。 [SEAL吠] 戴維·J·馬蘭:現在 他對他的方式了。 [SEAL吠] 戴維·J·馬蘭:那麼還有什麼 也許我們做這些的例子嗎? 好吧,讓我們繼續前進,做一個 例如用數羊。 我們將繼續沿著這一線路在這裡 of--讓我們打開了羊的例子。 並請注意,很像之前,這一次, 值得慶幸的是,是有點不太討厭。 有一次,我打玩這裡 - 哦,不,這是煩人。 他要咩 以某種概率。 讓我們再次玩這個。 [羊BLEETING] 戴維·J·馬蘭:唯一的區別是 我們已經改變了裝束,可以這麼說, 我們正在減少一半,並說 什麼是實際數量。 好吧,讓我們繼續前進, 藉此更進一步。 讓我逗你 這裡另外一個功能。 讓我們繼續前進,開拓 一個程序稱為線程。 所以,就像你可以有一個 精靈,有多個劇本, 您可以有兩個精靈,在鳥 一隻貓,各有自己的腳本。 他們每個人都可以 同時操作。 如果你曾經聽說過 單詞“多線程” 一台電腦是“多線程”的意思 它可以同時做多件事情, 而事實上,這樣會劃傷。 而現在看到的鳥是種愚蠢的。 這只是做事隨意, 反彈在屏幕上。 很明顯,是貓被編程 那種有能力追求 以家中的鳥,因為 他總是指著他。 直到最後,他 抓住實際的鳥。 所以我不會在細節上糾纏 在這裡,但你可以種 窺相同的形狀,有些 “如果”的條件下,一些變量, 也許有些循環,是 最終做同樣的事情。 現在讓我繼續前進,開 別的東西完全, 逗你們有些人,特別是 那些更舒適, 你其實可以用這個做的。 我要繼續前進 在這裡打開按鈕。 這是一個超級 簡單看似程序, 但看會發生什麼 當我 - 看什麼 發生在我打開這個版本吧, 這裡,在瀏覽器中,scratch.mit.edu。 當我點擊這個大紅色 按鈕,看到發生了什麼。 所以,這是怎麼回事嗎? 實際上,有很多更複雜 正在進行的引擎蓋下面, 即使我實現 這一點,或者坦白地說,丹·布拉德利 已經實現了這個如此簡單。 他設計了一個自定義的划痕難題 片,被稱為划痕延伸, 他把它稱為切換。 什麼撥動所做的就是把它發送 消息在互聯網上。 而這消息本身 看起來有點神秘。 但是這也,你會 通過長期的明白到底。 他實際上發送消息 看起來有點像這樣。 這只是文字。 隱秘。 你就會明白它的時候 我們得到的問題設置7。 這只是發送文本消息 在Internet上的服務器。 並且該服務器,最終, 談到這個燈泡,其 有那些花哨的燈泡之一 在它的本身,是說 到了Wi-Fi網絡中的位置, 其中本地設備下來這裡 - ,最終,它實際上 轉向光開和關。 但是,我們可以做更多 有趣的事情還在。 注意什麼丹也為我們所做的。 他做了多精靈,每個 其中有一個腳本,等待點擊。 如果我按一下紅色的,這是不言而喻的紅色。 如果我得到的藍色,它會偏藍。 綠色,黃色,橙色。 而這一切正在發生的事情了 要出路在互聯網上, 這裡回落到 燈泡,打開和關閉。 如果你能相信它 - 這就是 也許是最複雜的划痕之一 項目有人implemented-- 他做到了,為公平起見,在一天。 這就是我們扔下的挑戰 丹當我們看到有二進制燈泡, 我們有划痕,怎麼 我們可以將它們合併? 並且,實際上,這是絕對 一些人在這個房間 可以做了學期的end--是他 通過重新實現二進制燈泡 這是同一個接口 在我們的iPad上週三。 所以,現在,如果我真的 點擊加在這裡, 我們具有一個,兩個,三個。 我可以打16,打開一個上。 128,等等。 現在,如果單獨擁有 和吹你的頭腦, 你可以做的事情更容易獲取, 不涉及任何硬件肯定。 只是事情的屏幕本身。 而且,事實上,大多數學生 最終做的是某些類型的遊戲, 一些作品藝術作品,或 某種互動的動畫。 我會說一我們 收藏一直是這一個。 而且我認為,如果我們 可以調暗燈光, 我們就來一睹為這最後的 從頭開始項目的結論。 但是你應該記住,作為 我可以逗你一個最後的細節, 切片將於下週開始。 辦公時間將於下週開始。 問題設置為零將公佈 CS50.harvard.edu今天晚些時候。 而你將迎接 在問題設置為零 到CS50自己Zamyla陳,誰 指導我們大部分的演練。 這些被嵌入視頻 在習題集 這將通過大量的握住你的手 的初始設置,並通過許多 的可能的設計決策。 所以,如果你曾經有這樣的感慨 撿了個家庭作業時, ,不知道,我從哪裡開始? 她將有答案給你。 而現在,最終的方案 從你的前輩之一 在回答這個問題 “這是什麼狐狸說什麼?” [音樂YLVIS,“什麼是狐狸說什麼?] YLVIS:(唱)狗雲緯。 貓喵喵去。 鳥去鳴叫和鼠標去吱吱聲。 牛哞哞去。 青蛙去發牢騷。 和大象去嘟嘟。 鴨子說庸醫和魚去泡殼。 和密封的推移嗷嗷嗷嗷嗷嗷,但 有沒有人知道一個聲音, 什麼狐狸說什麼? 和 戴維·J·馬蘭:這就是它的CS50。 我們將看到您在 益智日和週一。 [掌聲] [音樂YLVIS,“什麼是狐狸說什麼?”] 旁白:現在深 思想,通過Daven法納姆。 今天,我被擊中 面對電話簿。 令人困惑,因為我在 在家上網看。