[Powered by Google Translate] [ROCK MUSIC] [MUSIC - “HAPPY TOGETHER”的龜] DAVID馬蘭:今天,我們開始探索 計算機科學的基本原理,並推出了我們, 現在,本領域的編程,其中,即 只是其中的一個例子。 但在同樣的解決問題的,要知道 CS50的傳統益智明天是星期幾。 如果你還沒有RSVPed此事件,你可以去 cs50.net/rsvp。 你可以把兩個或三個或四個隊。 你的挑戰的問題,像你看到的 那裡開始。 所有新的問題,如果你今年partook去年, 將有機會贏得一些獎品。 其中,Wii和一些禮品證書和類似的, 所有,而與CS50的學生和同學出去玩 和比薩餅和Facebook。 所以,明天,如果你想。 這是CS50,對於那些你加入我們的 第一次。 知道這當然是決心要得到 通過本課程的最終結束,此時你 將不僅理解這些 計算機科學基礎,但你將有 這個非常實用的技能,然後你可以帶回去給 你自己的部門,無論是工程科學, 應用數學,物理科學,自然 科學,或等。 事實上,如此令人興奮的關於計算機科學這些 天,它僅僅是適用於 各種領域。 即使今天,我們只會表面的劃傷 非常傳統的編程語言為C,我們將 名為scratch的東西,而不是看的東西 該cookie實現你的一個愛情故事 前輩在過去的幾年中,講故事,創建遊戲, 創建互動藝術,並真正開始包裝 一些心中周圍的基本結構, 基礎編程,但在上下文中,你會看到,這是 要少得多可怕的,這是神秘的要少得多,你會看到 前長。 和實現,也為那些你剛加入我們這個 學期截至週三的演講,短語, 它是不是那麼重要,你在哪裡結束相對於你的 在這個類中的同學,但你,學期結束 在第11週,結束了自己這一天。 因此,事不宜遲,這也是值得注意的是, 那些不太舒服,那些介於兩者之間, 同時,通過本課程的設計,沒有任何缺點 面對面那些更舒適 未來這一類。 正如你將看到,未來幾週內,我們有不同的 軌道後面的背景不同,這些章節 不太舒服,更舒適,那些某處 在兩者之間。 正如你將看到本週末和下週,有兩個版本 標準和黑客版,所以大多數問題集 ,你都可以自我選擇的路徑與您 是最舒服的。 所以,今天,我們深入到這種編程 語言從頭開始。 這是一個圖形化的編程語言,但它有 一些較高層次的語言,我們會相同的功能 後面的學期,其中C JavaScript和PHP。 但是這將讓我們的雜念,以避免一些 早期的語法,比如分號,括號內的事情, 和其他神秘的細節,乍看之下,只是沒有 在所有智力有趣的,往往會得到 的方式,從一些基本的了解。 現在前面的支撐結構方面,認識到這一點 工具,CS50討論,這將是在球場上的鏈接 網站後的今天,網上論壇 這你就可以問對方的問題和 工作人員,這也是一個工具,我們將在下週看, 我們將使用相當綜合 辦公時間為好。 事實上,辦公時間(星期一)開始,坦率地說,第一 一周的辦公時間是相當低調。 我不認為你會發現全部刮開了不可訪問的。 這是相當不言自明的,正如我們將看到的,所以什麼 今天,我們將使用它是提取一定的 基本的想法,然後,堅持在整個 其餘的學期。 但是,從週一開始,8:00 PM 11:00 PM將 安嫩伯格對大腦休息的辦公時間。 切片將開始在這個晚上,所以在這個 週末,去cs50.net/section,,你會 問了一些問題。 其中,你會如何描述你的 今天的舒適度? 有沒有堅硬,快速的規則,誰在這桶。 這僅僅是諸如此類的事情,你可能知道,如果你 是那些不太舒服或以其他方式之一。 目前,演練。 本週,包括標準問題集規範 黑客版的一致好評,是在cs50.net在線的現在。 你會看到,這些版本, 標準版,是伴隨著每個星期的東西,我們 調用一個代碼演練,一個會議領導下的 課程的教學研究員來指導您完成, 提示,讓你下來時,一個特定的路徑 啟動這些問題集。 因此,這些問題的設置,如果你曾經想要 自己我在哪裡開始,你就開始與這些 演練。 而事實上,讓我給你介紹Zamyla陳 將帶領每一年的教學研究員 這些演練。 Zamyla? [掌聲] ZAMYLA陳:哦,嗨,大家。 我的名字Zamyla。 我是一個初中就讀工程的Winthrop樓。 但我嘗試和適應盡可能多的計算機科學課程,因為我 可以,這就是為什麼我很高興能領導這個 今年的演練。 演練,對我來說,是一個重要組成部分,我的CS50 經驗。 在演練中,每一個P-SET,我們將通過 一起設置的問題,看問題,種 它們劃分成可管理的叮咬。 我給你的技巧,技術,獲得 通過和開始。 我希望能看到你所有的演練。 如果你不能做它的人,然後 請不要在網上調。 DAVID馬蘭:非常好。 謝謝你,Zamyla。 因此,認識到演練,事實上,在一個星期五 下午,但是這是故意設計,使 即使你不想在一個星期五的上課 下午,影片將是更迅速, 本週末。 因此,認識到的cs50.net將所有的Zamyla, 演練。 而這是今天的日期和時間,3:00 PM, 廳,104 Harberd。 一些教學研究員也準備了 一些為你的缺席給你多一點 角度,以他們的經驗和 走出去CS50是怎樣的。 因此,如果我們能夠昏暗的燈光,只是一瞬間,我給你 一些CS50的工作人員。 傑克遜施泰因坎普:我把CS50去年的一個大一新生 下降,和它絕對吹我的腦海裡。 我從來沒有採取任何編程班前, 從來沒有在任何計算機科學 在所有的經驗。 只是,我聽到的嗡嗡聲的類和 決定把它。 JULIA參考Mitelman:它真的很有趣,真的很搞。 我的是,這一天 - 我剛剛看到我有軟盤,大衛給我們 我們第一天的演講。 我已經把它掛在牆上。 這可能是一個小書呆子,但我掛在我的 牆在課堂上作為提醒的是如何的酷。 TRAVIS DOWNS:它是如此的尷尬。 JACKSON施泰因坎普:計算機科學是你 應盡量即使你不是一個用於 傳統的科學。 這是自身的經驗,和CS50將確保你 支持通過它的轉錄因子,其真正的軍隊。 ALI的Nahm:我把它作為一個新生,所以我做了很多 新朋友。 我也引入了這整個的濃度和 整個工程的學校,所以我高度推薦 歡迎您的我們的CS50家庭。 的Yaniv YACOBY:,CS50只是教你如何使用工具 普及。 你只需要一台筆記本電腦,你需要一個網頁瀏覽器,你 需要學習編寫一些代碼,你可以真正建立 整潔的事物。 KAREN肖:這是如此的酷,能夠使一些 和人們使用它,讓人們看到它,這就是 我真的很喜歡它。 TIM MCLAUGHLIN: - 一種社區的感覺,我覺得,在這 當然到目前為止,我已經採取了比任何其他課程。 你不只是以另一種 - 你沒有填充其他要求。 你不只是去聽課,要部分。 但是,你在做什麼噸的東西,是所有有關 設計和所有有關的技術,但它不 真的覺得自己像一類的大部分時間。 TRAVIS DOWNS的第一天,他們分發了蛋糕,和 我立即就被賣了。 JACOB百特免費糖果和比薩餅。 ZAMYLA陳: - 無論你的利率水平,我覺得 ,CS50,你將有樂趣,你會智力 刺激。 MARK GROZEN-SMITH:總是一個黨在課堂上,這是一個 黨的每天晚上都工作在P-SET。 JACKSON施泰因坎普:每次完成一個問題集,你 會覺得你已經完成了一個項目。 MELISSA牛:這是一年級以後,我完成購物。 我有我的四個班準備好了,我在安尼伯格。 我碰到一個朋友,他​​說,嘿,我在買東西 這個類稱為CS50,你應該跟我來。 結束了那年秋天,這個類後,我 想,也許我要輕微的CS。 但在這裡,我,三年後,仍然學習計算機 科學和實際做它作為一個主要的,我喜歡每 一刻。 ROB BOWDEN:我不知道。 ALI的Nahm:讓我們來看看。 MELISSA牛:瘋狂。 主講人1:我覺得像我是很俗套。 我只是說,喜歡,真棒。 的Yaniv YACOBY:輔助。 JACOB百特免費糖果和比薩餅。 TRAVIS起伏:一類無法打開,拿出蛋糕。 TIM MCLAUGHLIN:精力充沛。 VIPUL謝卡瓦特必不可少的。 ROB BOWDEN:讓我想起了一個答案。 我覺得我得到的東西。 哦,天啊。 是啊,我叫羅布·波頓,這是CS50。 [掌聲] DAVID馬蘭:好吧,讓我們開始畫一幅畫 的方向,使我們可以走了,讓我們來介紹 這個概念在這裡被稱為偽代碼。 所以偽代碼是不是一種編程 你們自己的語言。 這是什麼技術本身,但它只是一個 一般的方式表達自己相當精確, 相當算法,公平的程序,但不 不必擔心你的語言表達 自己英寸 這是某些型號的英語和編程語言 你碰巧是熟悉的,所以我們可以開始 寫這樣的事情,因為我們去。 而事實上,約瑟夫,我能借用你在舞台上是 文士在這裡? 我已經先行一步在這裡提前忘了把 襪子的今天,這將是我們更 可笑的例子。 現在,我需要你在這裡。 我會做襪子的一部分。 所以,在這裡,我們有一個小的便箋。 這是從字面上只是TEXTEDIT在Mac。 我們要編寫一個可運行的程序,但 我們只是要開始畫出來的偽代碼基於 勸你到我這裡提供的一些。 因此,這裡是我的一堆襪子在家裡。 當我在早上醒來時,我沒有襪子,我們現在 需要寫一個程序,各種各樣的算法, 在我腳上這雙襪子。 前進的道路上,讓我們來看看,如果我們絆倒,或遇到, 一些的想法,你會不得不開始 想更認真地進行編程時, 否則你的程序不表現得相當打算。 所以,我坐在這裡。 我已經得到了我一堆襪子。 的第一件事情,一個合理的人會是什麼 做時,我們的目標是把一雙襪子嗎? 有人給我一個步驟,只有一個步驟。 是嗎? 觀眾:彎下來。 DAVID馬蘭:彎腰,好了。 步驟2。 步驟2。 觀眾:拿起你的襪子。 DAVID馬蘭:拿起你的襪子。 好了,如此輕微的模糊性,這是第一個 我們應該刻意的絆腳石 在這裡遇上。 這是一個有點曖昧,所以拿起你的襪子。 好吧,我會拿這個,但一台電腦,在短短的實現 位,是不會有那樣的人的本能,只是 挑最近的一個。 我們將不得不開始不久,表達 我們更準確。 好,那麼第二步是拿起你的襪子。 我們會接受它。 步驟三。 在後面。 觀眾:找到一個匹配的一對。 DAVID馬蘭:找到匹配的一對。 好了,所以這是很好的。 我不得不選擇這種襪子。 因此,我們的目標是找到一個匹配的襪子,現在,但什麼 什麼意思呢? 一個合理的人,就像上週三時,我只是 知道如何找到麥克·史密斯在電話簿中,只種 去與他們的本能。 但在這裡,它顯然襪子在這裡,但計算機的 不會是這樣的本能。 一台電腦要位的集合,我們 上週三討論,而這些都是 組織以某種方式在內存中。 但問題是,只有一台計算機有能力 看一次的事情,而事實上,即使我們 人類 - 即使它感覺就像我低頭和分裂 第二次以後,我知道的襪子在哪裡,我的大腦,我的眼睛 大概是做了一個快速脫脂的那些襪子,然後鎖存 中的一個問題。 因此,如果我們現在更故意一台電腦, 我怎麼找到這個匹配的對嗎? 好了,我們要循環。 我們也許在這個亂七八糟的襪子上環 它撿起地板FOR EACH襪子,讓我這樣說, ,及其IF相同的形狀和大小作為另外一個,THEN 點,點,點,我們將繼續這個故事。 因此,對於每一個襪子,所以我挑了這一個。 我檢查,這是等於這一個。 這不是,所以我拋開一邊。 然後,我再次重複。 這是一個平等的嗎? 不,它不是,所以我把它放在一邊。 這是人嗎? 號 這本嗎? 否,等等。 然後終於有希望,我會遇到這樣的襪子在這裡。 因此,如果是相同的形狀,大小,把它。 而現在,將是我們下一步的工作嗎? 是嗎? 觀眾:由左,右確定。 DAVID馬蘭:好吧,確定左,右,所以 幸運的是,這樣的作品。 一個小對稱的,或者我只是穿他們的方式。 好了,所以我已經確定了正確的。 而現在,在我們繼續之前,請讓我指出約瑟夫 在這裡做一個精通編程的排序。 所以,再一次,有沒有人這樣做的方式,但除此之外, 編號的線路,約瑟夫已經開始這樣做, 排序縮進。 事實上,這是一個非常常見的編程慣例, 據此,當你做一些反复,循環的風格, 我們的英文短語“對於每一個暗示 襪子“,該公約在偽代碼中,我們會看到, 正常的編程語言,是縮進。 命中了幾次空格鍵,按下Tab鍵等, 使嵌套下方的“FOR EACH襪子”是塊 的東西,你需要做的,循環的結果。 因此,所有的輸送語義。 同時,現在的“,如果它是具有相同形狀和大小的,” 事實上,“要”進一步被縮進只是意味著 這是你唯一應該做的,如果這一條件, 在該分支,即岔路口,在事實上也確實如此。 所以,現在在這裡,我們是在第四步,確定左,右。 我已經確定。 給我5步。 在技​​術上,我們真的可以調用 的FOR EACH事情 - 您應該列出所有的行,如果 我們將做到這一點。 約瑟夫:[聽不清] DAVID MALAN:[聽不清]? 好,好,沒事的,我們將做您的方式。 好了,所以第五步,我們怎麼做正確的襪子? 我們該如何進行下一步,在這裡? 是嗎? 觀眾:抬起右腿。 DAVID馬蘭抬起右腿,好吧。 第六步? 快速。 是啊。 觀眾:找到一個開放的襪子。 DAVID馬蘭:好吧,襪子的開口端。 那麼好。 所以在這裡,說實話,一個非常普遍的本能是 穿上合適的襪子,但同樣是相當模糊的。 除非計算機或人知道到底是什麼意思, 它不會被執行,所以在這裡,我已經 開幕的股票。 第七步? 觀眾:觸摸你的腳趾。 DAVID馬蘭:觸摸腳趾。 好了,現在我們去 - 好吧,我要在這裡需要一些自由。 謝謝。 第八步? 放在襪子。 好了,現在我認為我們非常接近,幾乎排序的需要 此人在家。 所有的權利,所以這上升。 我會採取一些自由,這是什麼意思,真的。 把襪子。 好了,現在第九步? 觀眾:將腳放下。 DAVID馬蘭:謝謝你。 步驟九,將腳放下,而現在,我們可以重複。 因此推測,我們現在可以進入第10步,說確定 離開襪子,但想必已經做了。 這樣的話,我可以排序的重複這些步驟。 但是,這種迴避的問題。 在此之前,最後一次,我們想重複一些東西,我們 這樣做,是反复,一遍又一遍, Each循環,可以這麼說。 難道是有意義的使用循環,以同時處理 的左側和右側的襪子? 因為感覺這樣的操作是相當多 相同的,除了一個事實,就是在這裡,一個開始 從這裡開始嗎? 我們循環,或者說我們只是一味地寫入步驟 10和11和12? 觀眾:循環。 DAVID馬蘭:好吧,如此循環。 其實,我可能會說,只要繼續前進。 那麼,為什麼出現這樣的情況呢? 那麼,這實際上是第一個非明顯 設計決定,而事實上,其中的度量之一 我們將開始評估,為自己和你, 是如何精心設計的,它是一個程序的質量。 你做了最少量的必要工作, 完成這項工作的最迅速,無論是在條款的 你的時間或在計算機的運行時間? 多少操作的時間才可以執行? 因此,可以說,這是一個機會,一個循環,因為 只要我開始複製和粘貼,正如約瑟有效 在某一時刻開始做,你是種浪費你的 時間,你是雙重的表現。 但同時,這些都是真的只是兩個特殊的 的情況下,左,右。 而在此之前,我可能有10個或20個或更多的襪子 一堆,但它肯定是有道理的有50行 代碼說檢查襪子,然後下一個, 然後下一個。 在這裡,這是一個不太明顯的一點,我會提出 我們可以去任何一種方式。 我們既可以有該循環中,儘管它只是循環 兩次,或者我們可以簡單地複製和粘貼只是一點點 在這裡,以獲得完成工作。 但這種方案是不穩定的,可以這麼說。 所以它可能有一些失誤,錯誤或角落的情況下, 講,我們並沒有真正預期。 沒事就去錯了時間,但什麼可能出錯 在執行這個程序? 觀眾:你沒有任何的襪子。 DAVID馬蘭:那麼,有可能是沒有襪子有任何責任。 因此,讓我們來看看,角落的情況。 因此,如果我們可以滾動返回到步驟1,步驟1是 向下彎曲,使檢查出來。 第二步,拿起你的襪子,然後找到匹配的襪子, 確定正確的。 樣的,我們做了一大堆的假設,這就是, 坦率地說,為什麼程序有時會崩潰。 如果你作為程序員,取得了一定的假設,如 一定要襪子肯定有去 留在電腦中的內存,當然有是怎麼回事 硬盤驅動器上的磁盤剩餘空間 - 好吧,如果你讓這些假設,那就是不, 其實,現實,誰知道有時什麼電腦 怎麼辦呢? 有時,當你得到的紡紗沙灘球或 冷凍Windows或等,正是因為一些 程序員沒有預料到那些所謂的角落的情況下。 還有什麼能已經錯了這個項目? 是嗎? 觀眾:你沒有右腿和左腿。 DAVID馬蘭:好吧,可能沒有一個正確的腿和 左腿,因此這個方案可能不會成為普遍 適用。 其他人嗎? 觀眾:你可能已經拿起一個孤兒的襪子。 DAVID馬蘭:我可能會紛紛拿起一個孤兒的襪子,所以 不匹配的襪子,有沒有兄弟姐妹,因為我已​​經 失去了它,它的撕裂,這是在洗,或等。 這樣,也沒有真正被處理。 是嗎? 觀眾:你可能已經有襪子。 DAVID馬蘭:我可能已經有襪子。 我其實沒有檢查。 如果您沒有襪子,然後繼續做 線1和2。 而這可能發生。 你睡著了你的襪子和喜歡,所以 這件事情,是非常合理的角落的情況。 或許有其他嗎? 觀眾:襪子裡面。 DAVID馬蘭:那麼襪子裡面,所以我們也沒有錯誤 檢查,在短。 我們沒有檢查,如果國家的世界是我們期望的。 如果我們真的找到了我們要找的,我們沒有檢查。 儘管這是一個荒謬的例子 涉及的襪子,在一天結束的時候,這正是 樣的心態,你需要有編寫程序時, 即使在Scratch以及在C,在JavaScript中,在PHP中, 因為否則,你的程序將展出 相當於,紡紗沙灘球或產生 結果不準確。 因此,許多的感謝我們的抄寫員約瑟夫。 [掌聲] DAVID馬蘭:好,那麼是什麼, 事實上,計算機程序? 好了,讓我們快速瀏覽一個 代表在這裡。 所以這是一個在語言編寫的程序稱為C,C是 很老的這些天,但許多新的語言建 在它的上面。 事實上,PHP,一個以網絡為中心的語言,我們會 向學期的結束,本身就具有所謂的一個 解釋器,程序,C語言編寫的,但更多的 在從現在開始的幾個星期。 但這種方案,這是什麼意思寫了 程序,雖然是一個很簡單的一個。 我們這裡有一些相當神秘的語法,但你可以 可能已經猜到了,即使你從來沒有編程之前, 這個程序。 事實上,我不知道printf是什麼,但打印肯定 讓人想起了打印的東西的想法。 所以,是的,這個方案最終要打印出來 的話:“你好,世界”。 現在,無論你使用的是Mac或PC或Linux計算機上,賠率 是的,至少如果你下載了一些自由 可用的軟件,你可以編寫程序上 自己的筆記本電腦很長一段時間了。 在Mac OS,例如,有這樣的程序稱為 終端配備了一台Mac,這通常是在您的 實用工具“文件夾中,它通常會打開一個黑色的和 白色或類白色與黑色的窗口,在你有一個 提示,你可以鍵入命令。 因此,這其實是讓人聯想起什麼樣的電腦 之前的圖形用戶 接口,圖形用戶界面,走了過來。 現在,在Windows中,有一個類似的機構的形式 在命令提示符下。 但我要在這裡做的是打開了,讓我們說, 文字編輯再次,相同的程序我們使用的 偽代碼剛才,我要繼續前進,並 我寫的第一個程序。 包括stdio.h中,這意味著什麼,INT主 無效,這意味著什麼,然後在中間這裡, printf的(“你好,世界”)。然後密切的報價, 關閉括號,分號。 現在,我要繼續前進,剛打命令的-S。我要去 繼續前進,保存為hello.c的,所以該公約 C語言編程的世界是文件命名為點C。 我只是把在約翰·哈佛的主目錄, 在這裡,請單擊“保存”,現在我會去到這 終端窗口,這又是這個黑和白的提示 我在哪裡可以執行命令。 我可以運行程序輸入他們的名字,而不是由 在通常意義上雙擊圖標。 但是,事情是關於C是一門語言,如C第一 這種形式,一些所謂的源代碼。 的東西,看起來有點像英語,但 絕對不喜歡英語約瑟夫的偽一 剛才。 這是多了幾分神秘的。 它似乎遵循一定的模式或規則。 事實上,我花括號,分號,引號, 尖括號,給人的感覺就像一台計算機想出了這個 類的語言。 但是,如果我走了,現在,這個終端窗口,我可以運行 命令要轉換的源代碼 一些所謂的目標代碼。 這是要轉換到零的類似英語的語法 的,同樣類型的零和的,我們 談到週三。 現在,我要運行一個命令叫鐺。 在這個問題上的幾個星期來,但它是一個程序, 我可以把hello.c的成一大堆 0和1。 現在,我已經運行此命令。 我已經運行鐺,然後我說自己對這個文件運行 名為hello.c的,這是我剛才的 似乎什麼都沒有發生。 不過說實在的,如果我周圍戳我的主目錄,我會看到 這愚蠢的命名程序a.out,現在存在的。 在寫作時,這僅僅是一個程序的默認名稱 我們可以覆蓋這個最終的,但a.out是 該程序的名稱,我只是轉換成零和一。 而現在,它的零和一,我的Mac,在這種情況下,或 您的Windows的PC,可以理解的位,這些 0和1。 因此,當我按下回車鍵,我看到“你好,世界!” 但是,這是一個有點馬車。 我沒太說:“你好,世界!:空氣: - jharvard。”空氣是 我的電腦的名稱。 Jharvard的帳戶名稱,所以什麼我很清楚 省略的程序? 一些種換行。 我沒有打相當於Enter鍵或回車, 這是,再次證明了一個事實,即計算機可以 只有你告訴他們做什麼。 而事實上,我並沒有告訴電腦移動 光標移動到下一行 - 好了,它肯定不是要做到這一點 擅自對我來說。 所以,如果我回到我的程序,和我說\ n - 因此,\ n,我們很快就會看到,就是這樣, 奇怪的事情,比如新行字符,事情 的結果,否則將 打回車鍵。 但現在,只知道打的回車鍵 只是讓我們的代碼看起來很奇怪,所以決定世界,你知道 什麼,讓事情變得更漂亮,保持在同一行,讓我們 只是說,\ n表示一個新行。 讓我重新保存文件,返回到終端窗口, 重新運行a.out,回車。 還是不穩定的,但為什麼呢? 觀眾:[聽不清] 馬蘭DAVID:是啊,所以我需要重新編譯內核。 因此,編譯程序將其從源 代碼到目標代碼,源代碼,零和的。 現在,這一事實,我打這個文字編輯保存在 這些零和的,因為我首先需要 告訴鐺哎,我已經改變了這些代碼行, 源代碼。 您需要重新生成的a.out。 什麼也沒有發生,但在一台電腦, 在命令行,可以這麼說,當什麼也沒發生, 這通常意味著一切都很好。 這意味著,當任何事情發生, 你搞砸了,一般。 現在讓我們去a.out的,而事實上,我現在有“你好, 世界“。 而現在,這些零和的嗎? 在哪裡,其實有那些? 好了,我真的不能只是打個招呼周圍很 有效。 讓我打開文字編輯。 這裡的a.out格式。 讓我先打開,這顯然是我的 程序的外觀。 所以,我打開了,不hello.c的,但a.out的。 但是,這實際上是不是真的是我的計劃。 顯然,這是某種形式的字母字符。 我沒有看到零和的,但這是 因為a.out是一個程序。 零和的 - 但文字編輯,顧名思義,它是 就像在Windows的“記事本”,僅僅是一個文本編輯器,所以它的 混淆所有的這些零和的 雖然他們是什麼? ASCII字符。 所以,記得上週三,我們只是想出了這個 任意映射的數字,或位,字母 字母和標點符號等。 所以,它是一個文本編輯器的文字編輯,曲解 這些模式應該是零和一 印刷的話,如“你好,世界”。它顯示 ASCII,這就是為什麼它看起來有點亂。 現在,在這裡有一些提示的正確性。 請注意,如果我突出,有一種淡淡的實際“你好, 世界“,所以在該程序中的某個地方 我寫了一句。 但是,讓我們繼續前進,現在看到一個不同的程序。 這是不是我們會經常使用它,但它也與 一台Mac,將裡面的CS50設備。 讓我先打開一個程序,稱為XXD。 早在一天,大多數程序被命名為相當神秘, 這樣的趨勢仍在繼續。 但是,b表示為二進制吐這項計劃。 不要運行它。 顯示我作為零和的,這是C 節目中,我們只寫了。 現在,我一個人在這裡,我真的不知道是什麼 這些不同的模式,零和的代表。 早在一天,我與我的打孔卡或類似的, 其實看一下這些不同的模式 01111000,實際上代表。 更糟糕的是,我需要做的沖​​孔或創造 這些模式的零和一。 但現在,信仰,CPU,英特爾在裡面,所以 說,我們的電腦裡面的這些天,知道 如何解釋這些零和一。 一些零和的意思是打印的。 一些零和一的意思是播放聲音。 一些0和1的意思是接受用戶輸入的鍵盤。 有各種不同的模式,但我們幸運的是, 作為人類,一般只需要擔心編程 這個相當高的水平。 和其他CS類,你可以深入陷,並期待 在這些零和一類的東西,或尚未 還是其他的東西。 現在讓我們將這個。 讓我們非常迅速地從C和移動的東西 更令人欣慰的一點,多了幾分令人興奮的,因為 我們可以回到我們的動畫和聲音,在這樣的 顯然已經逃脫了,我們在這 相當原始的接口。 因此,這可以表示,現在在同樣的程序在C 編程語言刮如下。 這是相當於這個Hello World程序編寫 這一塊拼圖式的語言,稱為划痕。 所以,讓我繼續前進,打開了這個程序。 它再次從頭開始。 它是免費提供的,這是同樣的事情,我們 從今天開始。 所以在這裡從頭開始,和它分成幾個 不同的部分。 在最頂端的權利,我們有所謂的階段, 的確,這就是餅乾 只是有點前執行。 舞台上的東西叫精靈,人物,或 對象,或實體。 這其實並不重要,你是怎麼想的,但他們 是可編程的,可移動的東西,並在這種情況下,這 我們的學生寫的程序,有一對夫婦的薑餅 餅乾,一對夫婦的圓形餅乾,一大堆 心,一​​大堆的眼鏡。 因為這一點,他或她能夠編程每個人 單個字符分開。 現在,這是什麼意思編寫這些人物呢? 那麼,讓我繼續前進,點擊此左手餅乾 滾動到左上角。 現在我的屏幕的左上角是 所謂的腳本區域。 這是一個空白的石板上,最初,我可以 拖放,坦率地說,這樣做的拼圖 正是他們在說什麼。 在拼圖這個堆棧的頂部是字 當綠旗時,如果你沒有注意到的, 該cookie歌曲的方式,我開始點擊,從字面上看, 綠色標誌。 所以,在左上角的一塊拼圖,是指當 人點擊綠色標誌,繼續做 下面的東西。 現在,他們的cookie繼續做嗎? 我真的不知道如何解釋這一點,但 操作部份顯然其凹槽設置到零,然後,它等待 三秒鐘,然後它改變其組為1,那麼它 等待一秒鐘,然後它改變了它 槽減少到一個。 然後,這實際上看起來像一個位的錯誤,不應該 必須改變其槽一遍又一遍,除非它是 其他地方被改變,但這一系列的步驟是什麼 口述這個特定的cookie的行為。 因此,讓我們實際向後滾動,而不是看的東西 這麼複雜。 讓我繼續前進,去到文件,新建, 並得到一個乾淨的石板。 所以現在,我確實有一個空的腳本區域,空蕩盪的舞台, 我們默認的精靈划痕,並在左上角 在我的屏幕上我有他們所有的托盤 可用的拼圖。 我們不會通過,這些東西很多 再次,因為今天,大多數是不言自明的,但我們會 嘗試對其進行分類,並指出的相似 這些未來的語言,我們將潛水。 在左上角是第一次當綠旗點擊, 所以讓我拖在這裡,放大了一下。 如果我點擊綠色旗幟,沒有什麼發生,因為 我,不附加任何邏輯,任何聲明說,以 ,綠色的標誌,所以讓我上去的 在這裡類別。 我目前在控制類。 相反,我會去色類, 這裡有一大堆的東西,說的說, 認為,改變顏色,交換機服裝。 所以,你可以做愚蠢的事情的服裝, 聲音和等。 讓我繼續前進,只是說,說了,現在看到我拖 刪除這一塊拼圖,它會要鎖存 成相應的形狀。 所以,當我去,讓我的鼠標,他們鎖定 在一起,而現在,如果我在這裡,點擊綠色旗幟, 貓其實打個招呼,因為這裡面是什麼 這種白盒。 我們很快就會看到,這是所謂的白盒 參數或參數。 這是一種方法下改變的行為,在這種情況下,一個 一塊拼圖,但如果我想說的就是我說的 之前,打個招呼,世界,我現在可以回去在這裡, 點擊播放“,”你好,世界“是什麼的說。 因此,我們從字面上編程。 這還不是全部,引人注目的一個程序,但至少 這是一個更引人注目的一點東西,看起來, 乍看之下,是這樣的。 我們可以很快地得到更多的表現 因為在Scratch,像在其他語言中,有所有 各種報表,而不是只說或打印的東西,但 你可以做這樣的事情在等待,正如我們剛才看到的 的cookie,一些秒數。 您可以播放聲音在從零開始的環境, 就像你可以在一個正常的計算機程序播放聲音。 您可以檢查被稱為布爾表達式。 所以,現在,讓我們開始添加到我們的工具包的一些術語 例如,約瑟夫和我一樣,實際上涉及到 這裡的襪子。 因此,聲明僅是事實的陳述。 做到這一點。 一個指令的精靈,還是我的人,做一些事情。 布爾表達式是具有價值的東西, 所謂的真值,這是零或一,虛假或 真實的,或關閉,或者是沒有。 你是怎麼想的其實並不重要,但它是一個 二進制狀態。 內特討論在星期三的視頻, 不同的事情。 因此,在Scratch中,布爾表達式發生看 類似這裡這些藍色對象,在這種情況下,問題 標誌意味著你問的問題。 是貓,或精靈,觸摸鼠標嗎? 因此,這僅是一個例子的擦除塊會 讓我們檢查“是”或“否”,是觸摸鼠標 精靈在屏幕上? 而這可能是有用的,如果你真的想要做的事情 用你的鼠標。 除了布爾表達式,我們有事情 就像是按下鼠標,這樣你就可以檢測到該種 的問題以及。 如果你真的想要,我們可以做數學,並有 其實更引人注目的不僅僅是純粹的用途 算術,正如我們將看到的。 偽隨機性,使你的程序似乎認為 或不同的表現,根據一些看似隨機的值, 然後我們有布爾表達式,如喜歡的東西。 所以,如果你真的想要檢查兩個值,我們可以看到在 我們可以從頭開始實際測試,如果這是 ,這是真的。 例如,在我的襪子的情況下,我已經在 非常年底提出這樣的問題,如果左襪子是正確的襪子 是,退出。 大功告成的一天,所以這將是一個 是的機會。 因此,讓我們繼續前進,試圖拼湊一些這些加在一起 進入一對夫婦的例子 引人注目的不是這一個。 因此,讓我繼續在這裡和開放的一些例子 ,將永遠是課程的網站上,並 打開hello2。 因此,在hello2在這裡,我們有一個程序,做了幾 的東西,但它不這樣做,因為我們可能一樣有效。 所以在這裡它說:“你好,世界”一秒鐘,然後等待 一秒鐘。 然後它再次,然後它再次。 所以,如果我點擊綠色旗幟,划痕說:“你好,世界。 你好,世界。 你好,世界“。而這顯然是候選人現在 改善。 什麼是邊際改善,希望我們能 現在,如果SCRATCH支持的概念嗎? 有些類型的循環。 某種重複,現在,將是很好,所以讓我 實際嘗試。 讓我去移動這。 因此,通知,可以分離塊容易,你可以添加到 將它們連接。 讓我去“控制”下,向下滾動這裡,事實上, 這裡有這樣的一塊拼圖,“重複”和“永遠和 永遠的如果。 所以這是一個以多種方式表達循環結構 在從頭開始。 我可能要在這裡不下去,因為我只 希望這種情況發生了三次,但可能重複。 因此,讓我拖在這裡重複,拖放, 現在不是說:“你好,世界”三個不同的時代, 在這裡,讓我拖這一塊拼圖。 即使它似乎並不適合,該程序是智能 足以實現將增長到填滿,所以它的 形狀的問題,而不是絕對的大小。 讓我改變重複3,現在讓我去 並拖動等待一秒鐘,以及在那裡。 這是怎麼回事以及折斷,所以現在我要拖 這些傢伙在這裡,只是因為我扔掉 不需要他們了。 讓我縮小,點擊綠色旗幟現在,我們有 相同的程序,但我之前預測的,更好的 設計多麼糟糕,因為你能想像這個程序 將得到的,肯定是美觀,如果你有 開始複製和粘貼,複製和粘貼,或 一遍又一遍相同的該死的東西拖放。 現在,簡單地說,打印到屏幕上的東西 屏幕,真正是令人興奮的,所以讓我們打開一個 第三方差在這裡。 而現在,你會看到,這很快就會招人煩 - [MEOW] DAVID馬蘭 - 但它也是一種可愛。 [MEOW] DAVID馬蘭:好吧,那麼要好,而我們當然可以使用, 同樣的過渡,分塊成一個循環 結構,但讓我們使它更有趣的是。 讓我去進取,不斷開拓的第四個方差在這裡,我在那裡 走一步算一步進一步。 因此,根據這一點,傻雖然這是第一 一目了然,這是什麼程序怎麼辦呢? 這將喵一次。 為什麼呢? 那麼,一個是,據我所知,總是小於2。 這裡有沒有概念的隨機性。 我已經字面上硬編碼的一和二,但是這是一個 例如,現在實際使用的布爾表達式。 就像約瑟夫在他的偽代碼,壓痕IF 你找到匹配的襪子,然後執行以下操作,在這裡,我們有 表達式IF一個是小於兩個THEN - 而事實上,我們甚至有一點點縮進, 紫色稍微向右縮進 - 那麼你要播放聲音喵。 現在,在這種情況下,1始終是小於2,所以這 是種浪費了條件。 但我們,正如我們所看到的,就可以將其他的事情 這些佔位符,其中一,二。 現在讓我們提前到5這幾個例子 打著招呼看看這是什麼程序會做。 所以,現在,在一個英語句子,請問這是 程序的行為呢? 聽眾:貓叫聲一半的時間。 DAVID馬蘭:喵半的時間,所以這是一種 傳達一個非常簡單的想法。 儘管我們碰巧使用這裡的幾個不等式 在一些數字,這真的只是一個程序化 方式,精確的方式,說如果硬幣出現正面的,去 和喵。 或者反過來說,如果硬幣來了尾巴,不喵。 而在這種情況下,怎麼表達呢? 我們將選擇一個隨機數從1到10,如果 數小於6,繼續前進,喵。 這究竟是怎麼進來的? 好了,發現只是拖放和 事情鎖定到位。 所以,現在讓我們來看看如果這種隨機性的工作。 讓我繼續前進,點擊綠色旗幟。 [MEOW] DAVID馬蘭:好吧。 [MEOW] DAVID馬蘭:好吧。 好了,好了,所以我們得到了頭,頭,尾,有效。 尾巴。 [MEOW] DAVID馬蘭頭。 [MEOW] DAVID馬蘭:非常好。 它總是很尷尬時,只統計你得到一個壞 運行,它的頭,程序實際上是不 工作如你所願。 但是,這一次,它的工作,我們似乎有,如果我們這樣做 這是一個無限的數量的時候,50%的勝算。 再次,現在不是所有的,有趣的,只是使貓 喵喵,讓我們看看如果我們不能進一步推動這一點, 在第六版。 所以,現在,我們有真的很惱人版本 - [貓叫聲每隔幾秒鐘] DAVID馬蘭: - 這是所謂的,一般情況下,作為 無限循環。 如此無限循環,在這種情況下,感覺不錯。 它肯定會開始聽起來壞,但無限 循環並非總是壞事。 你能想到的情況下在計算機程序中在那裡你會 其實想要一個無限循環? 是嗎? 觀眾:當你要檢查的條件。 DAVID馬蘭:好吧,當你要檢查的條件嗎? 像什麼? 觀眾:[聽不清] DAVID馬蘭:好,好,所以如果你有一些計劃,一些 家庭自動化的事情,你要不斷的種 顯示器是什麼的情況下。 上的燈嗎? 的燈光,因為也許你有一個計時器, 你希望他們去,你可能需要做的事情 一遍又一遍。 言而事實上,定時器,任何人已 您的計算機或數字手錶上的時鐘,這是一個 無限循環。 它的不斷更新的時間,因為它是不斷 檢查和檢查,檢查的時間變化, 如果是這樣,哦,我的上帝。 終於在時鐘的改變。 它需要向您顯示該值。 因此而大多數的時間無限循環的一個錯誤, 或者至少是一個糟糕的設計決定,有時他們 有其價值。 好吧,讓我們,進一步推進這裡hello7。 所以,現在的程序將獲得多一點互動。 讓我在這裡,再次放大,這是很好 關於從頭開始。 我們將用它來清晰,划痕,就在今天和成 下週的設置問題。 但在週一,我們潛入C.在這個程序中,確實如此, 永遠,下面的。 如果觸摸鼠標指針 - 現在,誰是 上下文在這裡? 好了,請注意,誰在底部的選擇 右邊是貓,雪碧,所以這些腳本,這 程序,適用於專門給他。 所以,如果貓接觸的鼠標指針,那麼它會 玩這個下來,等待2秒鐘,和 然後重複廣告nauseum。 所以,讓我們繼續打比賽。 什麼也沒有發生,但如果我想寵 貓現在,我可以簡單的。 [MEOW] DAVID馬蘭:可愛的。 [MEOW] DAVID馬蘭:好了,不那麼討厭,但也變得平淡, 所以,讓我們繼續前進,看看如果我們不能注入 多一點邏輯。 這是例7。 在這裡,例如八個,我們要 引入ELSE的條件。 所以很像一個文字的岔路口,你可以去 你可以向左或向右走,在一個編程的條件 語言一樣從頭開始,我們將看到C,可以讓你 通過在一個方向或另一個IF ELSE結構。 因此,毫不誇張地說,如果觸摸鼠標指針, 會玩一些聲音,否則它要玩這個 聲,喵喵。 現在,如果你可以推斷出這些聲音的名稱,你可以 大概已經猜到這個計劃的目的是想起了 的想法。 這貓咪咪聲快樂。 [MEOW] DAVID馬蘭:令人高興的,但並不 很喜歡被感動。 [河東獅] DAVID馬蘭:所以,現在我們有一隻貓,他們會罵你的。 好吧,最後一個例子。這裡的貓,和 讓我們打開這裡的這個版本9。 所以,現在,我們有一個最惱人的聲音,我可以 找到,所以我們有一個海象海獅在這裡誰去 按照下面的方法做。 [SEAL BARK] DAVID馬蘭:好吧,那麼,這將繼續下去,直到你找出如何 這個程序的工作原理。 所以這個時候,這種動物有兩個腳本,什麼 有趣的是,這些腳本將要執行 平行。 所以,因為他們都開始一個綠色的標誌點擊, 像這樣的,這兩個程序開始運行後 一次,即使他們永遠循環。 因此,在上面的腳本中,我有一些邏輯。 什麼功能,提供了嗎? [SEAL BARK] 觀眾:[聽不清] DAVID馬蘭:如果它是什麼? [SEAL BARK] 觀眾:如果靜音為零,它要繼續玩 的聲音。 [SEAL BARK] DAVID馬蘭:好,好。 因此,如果處於靜音狀態,無論是什麼,這個橙色的是零, 然後播放海獅的聲音,想:“噢, 嗨,“兩秒鐘。 現在,我不知道什麼是靜音的,但零讓人想起了 虛假或關閉的想法。 因此,如果靜音是假的,所以如果不是靜音, 播放聲音。 好吧,怎麼做,我們禁用這個事情呢? 那麼,讓我們來看看在那裡的第二個腳本。 第二個腳本設置靜音為零。 請注意,它也是橙色的,所以什麼划痕是什麼顏色 在相同的色調塊,如果它的排序 的邏輯關係。 因此,正如靜音往上頂是橙色,所以在這裡是靜音 橙塊中提到的。 但是,這是一個變量賦值,所以就像在 代數,您有x,y和z,在編程的 變量,但他們一般 - 讓我們暫停了一會兒,數字如何 停止亂叫。 我該怎麼做呢? [SEAL BARK] DAVID馬蘭:好吧。 它停了下來。好吧。 因此,正如在代數你有變量x,y,和z,但在 編程時,如x,y和z變量一般是 令人難以接受的,因為他們不是在所有的表現。 他們沒有任何語義含義,因此,在大多數 編程語言中,變量可以有充分的 成熟的名稱或單詞或短語,喜歡靜音,說 他們做了什麼。 因此,這第二個腳本也聽,永遠和它說 如果該鍵,鍵盤的鍵空間, 按下問號。 因此,有一個條件,這是一個布爾表達式 要回答一個問題,無論是真實或虛假的, 然後我裡面有它,如果按下空格鍵 如果處於靜音狀態是零,一個設置靜音,否則設置靜音零。 因此,這岔路口,請注意我是如何 嵌套的兩個IF條件,是檢查的一種方式是 按下空格鍵,因為如果是這樣,我可以想去 這樣或那樣的方式方法。 我怎麼反轉靜音的價值嗎? 我要檢查是零嗎? 如果是這樣,做它一,否則為零,因此切換 它的兩個國家。 好,那麼我們有那麼一些這些基本 結構。 我們有布爾表達式,並且認識到,太,這是 不是所有的陌生。 事實上,這裡有一個快速的哈佛核心課程的CS50的屏幕截圖 購物工具,任何網站有複選框 下拉菜單真的,這段時間,一直在使用 布爾表達式。 在這種情況下,在這裡,如果您按一下旁邊的複選框 當然大於或等於4.5,或者相同的旁邊 教員,你要指定一個布爾表達式。 我該表達式為true的課程。 或向右,不與我的課程發生衝突 服用,如果被檢查,那麼,你要檢查 該條件,否則你要忽略它。 因此,布爾表達式是一種周圍的一切,但是當 我們把他們的條件下,無論是IF條件,IF 偷別人,或者我們甚至可以模擬更深 水平,IF ELSE IF ELSE - 因此,這是一種三元狀態。 你可以去這樣或這樣或這樣。 我們可以保持嵌套的東西去不同的方向。 因此,從無到有這些循環,永遠。 它具有這些功能,如重複10, 有限的次數。 現在我們有能力來設置變量,所以在這種情況下, 我已經聲明,例如,一個變量的所謂的襪子。 我初始化為0,而另一個方向 我們可以在這裡與約瑟同在,也許我 只是跟踪我有多少襪子和終止 該程序時,該變量的值是2。 這將是另一種方式的排序,概括, 的問題,一次又一次地做一些事情。 好吧,讓我們繼續前進,現在介紹一些新的東西。 所以,你與以前的編程經驗 我知道很多語言的數組,向量或 列表,事實上,從無到有這樣的事情,太。 因此,讓我們來看看,如果我們不能拿東西到一個新的水平。 如果我有能力,現在,這些拼圖 添加東西,如一個詞或數字,一個變量,我可以 開始積累事情。 這實際上是相當中肯的東西,如遊戲, 你走動的角色扮演遊戲 一些幻想世界中收集的東西,撿東西了, 收入點,或類似物。 您可能想要跟踪的某種庫存, 的確,這就是,我們以前的學生在這裡做 一些所謂的Fruitcraft RPG。 因此,讓我去進取,不斷開拓的東西在這裡,並在 Fruitcraft,我們這個世界的頂端。 因此,讓我繼續前進,點擊綠色旗幟。 在左上方的通知是某種形式的庫存。 這是從頭開始實施,我們會打電話給一個數組或 的名單,現在我們有這樣的小動畫。 因此,正如我們起步比較早,這個cookie的愛情故事, 然後我們先進的貓和海獅,現在我們可以有 更互動的東西。 而這個藍色的小傢伙,我就可以開始走動,他的 這裡的小家。 因此,它看起來像他有一個出口在這裡,所以我使用 箭頭鍵,向上,向下,左,右。 現在我在外面,所以讓就是我來到這裡的。 看起來像一個橙色的,而事實上,只要我觸摸 橙色,它就會一屁股到我的庫存。 如果我走了,這裡的櫻桃,現在我有一些 其他在我的庫存。 這是所有漂亮的,可愛的,但想想如何,現在,這 實施。 好了,我們有這個概念的名單,而這顯然是一個 一塊拼圖,你剛才說你想要添加到它, 橙,櫻桃。 現在,這是什麼藍色的小傢伙在做什麼? 那麼,他是一個精靈。 據推測,橙色和櫻桃 - 他們自己單獨的精靈。 和使用條件的布爾表達式, 學生可能是能夠表達IF藍色的傢伙,是 接觸櫻桃,然後添加他的字櫻桃 庫存,然後也隱藏了櫻花精靈。 因此,引擎蓋下的,有可能仍然是一個櫻桃 精靈。 我們只要告訴它有效地成為無形的。 現在,如果我繼續走在這裡,我們也可以這樣做 近端的事情,在那裡我可以去閱讀的標誌。 因此,如果藍色的傢伙觸摸的標誌,我們可以有這樣的言論塊 就像貓的話,對我們說話打招呼,所說,“有 一些水果嗎? 把它帶到水果的地方。“好吧,那麼現在,顯然, 我有我的方向。 我可以去這裡的水果產地,行自己 與門。 現在,我在這裡。 我可以上去的人,在櫃檯上。 他發現,我敢接近他,所以不必是 很相同的接觸,我已經贏得了比賽。 因此,我們有Fruitcraft RPG。 所以,我們可以做的事情比這更先進。 我們可以添加聲音。 我們可以添加的偽隨機性。 我們可以增加複雜性。 讓我繼續在這裡,而不是做我自己, 讓我告訴你一個更複雜的意見書 我們去年從某一個名為布萊克的人。 我們有一個志願者出現在舒適 攝像頭和玩遊戲嗎? 如何在那裡? 上來吧。 所有的權利,因此本場比賽,你剛才在不知不覺中 主動發揮 - [掌聲] DAVID馬蘭: - 從昔日被稱為是 “青蛙過河”。你叫什麼名字? 任達:仁達。 DAVID MALAN:Redna? 任達:這是布倫達與B。 DAVID馬蘭:好吧,人大。 大衛。 認識你很高興。 因此,在“青蛙過河”,如果我們能夠提高音量 一點點,你這小 綠色青蛙在底部。 您可以使用左,右,上,下​​,和你的目標是 橫穿馬路,過河,觸摸睡蓮 在頂部。 胡。 一個T - 重做,好嗎? 讓我們的命中停止。 沒有人看見。 [掌聲] [掌聲] DAVID馬蘭:是的。 非常好。 非常好,謝謝你。 因此,有青蛙過河。現在,你知道你做了什麼 得到自己,多了一個不同的志願者 另一名學生提交的遊戲。 你要來嗎? 你叫什麼名字? 理查德:理查德。 DAVID馬蘭:理查德。 好吧,理查德,就到了。 [掌聲] DAVID馬蘭:你有什麼話聽起來就會很 熟悉的很快,所以這裡是你的指示。 因此,在某一時刻,一些拼圖碎片會向上滾動 從屏幕上,看起來離開 或右向上或向下。 你會打箭頭鍵以這樣的方式 它對應於那些排隊的拼圖 在頂部的佔位符。 所以,當你看到一個左箭頭,它線與左 箭頭,打左箭頭。 你可以開始了。 [MUSIC - “強”KAYNE西] DAVID馬蘭:好了,又大又圓的掌聲理查德。 [掌聲] DAVID馬蘭:非常好。 謝謝。 [掌聲] DAVID馬蘭:那麼有趣,表面上看起來,排序 恐嚇,因為它可能實現的東西作為 看似複雜的,實現學生 沒有,只是寫這一次。 相反,你可以打破一個看似複雜的問題, 成更小的碎片,而這,也同樣是 將是一個主題。 寫一個程序,在幾乎任何你可以做的最糟糕的事情 語言是坐下來,興奮得不得了,寫 整個該死的東西,然後只是希望它的工作原理 當你完成寫作。 相反,編程的過程中,一般應該 是非常謹慎的,迭代,這樣你只 設置非常小的步驟,為自己,一口大小的塊 你要咬,所以你有這些理智 檢查,能滿足你的小里程碑。 然後你建立這些上創造更多的 還是複雜的事情。 因此,舉例來說,我們可以去 實施這樣的比賽嗎? 坦白地說,我一定會由剛開始 支持在一個時間的一個關鍵。 讓我們只需要實現支持左箭頭。 因此,學生必須以某種方式在Photoshop中創建的,或在 刮刮本身使用的小的圖形化編輯器, 看起來像一個在頂部的箭頭鍵離開了那裡,只是 灰色的佔位符。 然後,學生必須弄清楚什麼x,y坐標 穿上它,把它放在窗口。 0,0,在這裡,所以你必須要弄清楚的數量 像素或點,以抵消該箭頭從 屏幕頂部。 ,然後一旦在地方的,你的程序不實際 做任何事情,所以你需要第二個精靈, 例如,一個綠色的箭頭指向左邊,和你 那麼就需要開始編寫一些腳本。 你看到的,也許,這些事情開始出現在 不同的速度,並分別在不同的顏色 位置,這是因為學生用了一下 偽隨機性。 和偽隨機性的,我的意思是選擇一個號碼 某物與某物的,因為你可以 地圖的事情,開始的數量是一樣,如果在一個 5,好了,讓我們做的事情綠。 如果是6到10之間,讓我們一塊拼圖 紅色代替。 只要你有辦法產生某種 隨機性,你可以作出決定的基礎上, 隨機性。 我一直在說因為有一個偽隨機 小骯髒的秘密。 計算機不能拿出隨機數。 他們只能做他們被告知,因為 他們是人造的設備。 他們可以像我們人類不只是猜一個數字 覺得我們可以。 一台計算機做一些數學變出 數學數的錯覺,有時使用 一天的時間作為當前的輸入搞清楚什麼 數返回,但更多的是另一次。 現在,只需要知道,我們可以生成偽隨機性。 所以一旦我有能力為左箭頭開始 出現在不同的時間,以不同的速度,然後 我可以回去,並添加一些這些IF條件。 如果此sprite接觸到其他人,和左箭頭 鍵被按下 - 所以在這種情況下,三個條件。 我可以使用,並阻止或許,在這種情況下 - 然後我想繼續前進,增加的分數。 在上面,我們有一個分數,我們有真棒, 清涼,善,和Boo。 因此,有五個變量,顯然這名學生 用於跟踪這些各種度量。 因此,在短,最終的結果是驚人的。 它的樂趣,它的樂趣發揮,它的參與,但這不是 當學生開始了。 他或她開始在一個更小的步驟。 那麼,什麼是其他一些積木​​,我們可以 織成這些程序? 嗯,有這等概念在大多數語言中, 刮開其中,被稱為線程。 因此,一台計算機可以沒有真正做多件事情在 時間,至少不是通常的。 相反,一台計算機通常具有只有一個CPU,甚至 雖然電腦是超級快,因此可以 創建做多件事情的錯覺 - 檢查您的郵件,讓瞬間 信息,打印文件 - 真的,一台計算機跳躍從印刷到即時消息 收發電子郵件,背和提出如此之快,我們 慢機智的人,只是不知道,它實際上是 運行這些程序一點點的時間。 現在,這一點的白色謊言,因為如今這些天, 許多我們的電腦就是所謂的多核心,所以你 有一個CPU,但多個內核,這是一種像 具有多個CPU。 所以有時候,電腦可以真正做多件事情 在一段時間,但一般在一個程序中,程序 依靠這些東西叫做線程。 因此,一個線程是有點像一個微型的程序,可以 並存的另一個微型程序,可以運行 在平行的,或者至少是可以運行的誤解,認為 他們同時運行。 因此,划痕支持這些東西叫做線程。 你可以有多個腳本執行一次,就像我們 與海獅,這讓我們真正 有這些精靈之間的相互作用。 讓我繼續在這裡拉起來,讓我們說,線程, 發揮如下。 我們有兩個精靈,每個人,我們會看到 只有一個腳本。 注意到,似乎有一些情報, 貓在這一個,因為他越來越近了 - [河東獅] DAVID MALAN: - 接近的小鳥。 鳥是怎樣的操作? 好吧,讓我們先來看看在鳥。 鳥腳本的綠色標誌被點擊時,去X 等於負115和,y等於150。 所以,我只是想通了,我想一個隨機位置 鳥開始,我只是一屁股默認情況下,他在那裡。 ,然後永遠不接觸貓,所以這是一個不同的 種循環結構,但同樣的想法,這樣做一遍,並 一遍又一遍。 所以,只要你不接觸貓,將三個步驟, 如果你的邊緣,彈跳,這是樣的 反射中台球感。 所以這是如何的鳥,周圍種 看似隨意,但它只是因為它的反彈 在這種情況下的壁。 同時,現在的貓是一種欺騙。 的貓,當單擊綠旗,是的,開始在 一些位置,一個隨機的位置 - 至少在部分每回升 隨機的綠色塊 - 然後永遠IF接觸的鳥,玩獅子的聲音, 然後停止腳本。 所以,當我說,終止或退出之前,有一個難題 在刮片,將只殺程序在該 點,因為它是一種邏輯上完成。 但除此之外,在這裡,請注意會發生什麼。 指向的鳥類和移動一步。 因此,這指向鳥種的優勢貓 ,它的歸位,我們可以在移動的鳥 現在使這個方案更有趣。 前進了一步,而不是在每個CPU週期的時間,每 罷工收費的鐘聲,可以這麼說,讓我繼續前進, 移動,比方說,貓的五個步驟的時間。 單擊“開始”,單擊“運行”,現在他真的發現他迅速。 如果我們雙擊這10個步驟,種“ 適合他的。 現在,我們可以給鳥, 也許,一個位的優勢。 讓我們到的鳥類和移動三個步驟的,而不是說, 讓我們繼續前進了30步。 但他到底還是被抓住了。 所以在這裡,我們有兩個線程。 它關押在兩個腳本和兩個從頭開始 精靈,但在其他語言中的想法是,你可以 寫,從本質上講,太多這樣的程序,並有 他們真正的運行,或虛構,在平行。 現在,這個概念在編程中被稱為 事件,這是東西,我們會看到在C, 被稱為C.語言中,我們將看到對學期結束 在網絡編程,當我們介紹了JavaScript和 建設的網頁是動態的,交互的概念 與用戶。 因此,在這種情況下,我們有一個非常簡單的例子,兩個 精靈,男孩和女孩,每個人都有各自的 線程,但不知何故,這兩個是相互溝通的方式 一種叫做事件。 因此,讓我繼續在這裡和放大男孩的腳本, 這看起來是這樣的。 當綠色環保標誌的點擊,永遠做到以下幾點。 如果密鑰空間,或按空格鍵被按下,說 馬可兩秒鐘,這是純粹的審美上的 屏幕,一點點的講話泡沫,但隨後播出。 因此,廣播是另一個刮片,這是 代表一類的功能在編程 ,讓不同的程序,不同的線程, 間的溝通,以某種方式發送 消息,一個到另一個。 通過一張紙,在課堂上是一種技術含量低 相同的。 所以廣播事件。 我可以給這個消息,這個詞事件 完全是任意的。 刮有時會出現下拉菜單,所以我就想出了 一個隨機類似事件的話,因為現在,這個小男孩 當我按下最關鍵的是,他的廣播事件。 如果我現在看女孩的腳本,她的劇本 超級簡單的,因為她需要做的是不採取行動時, 點擊綠旗。 她的目的是採取行動的時候,她收到了報價,享有的, “事件”,在這一點上,她在聽,因此對 所謂事件,一遍又一遍。 當她收到這種情況下,她會喊 Polo為2秒。 所以你也許可以推斷出這到底是什麼 下一個結果將是。 讓我點擊綠色旗幟。 什麼也沒有發生,因為我需要做什麼? 觀眾:空格鍵。 DAVID馬蘭:空格鍵。 男孩說女孩說馬可,波羅。 但是,這不是硬編碼本身。 這是跨腳本之間的通信,所以現在我們 有能力做出更複雜的程序, 這兩個都以某種方式相互溝通。 因此,在我們可以採取什麼樣的方向嗎? 好了,問題集,真的,目標是到 有樂趣的划痕。 黑客版,你會,而不是有一個更好玩的 先進的版本Scratch的BYOB建設 自己的塊,但這個想法是一樣的。 您就可以 - 是的,這是故意的。 它來自大學伯克利分校。 BYOB是黑客Edition版本,但兩者 人口統計資料,標準版和黑客版的一致好評, 手頭未來一周的目標是實際上只是潛水 深,自己動手編程,使 一些有趣的,互動的東西, 藝術的東西,好玩的東西,其實 展示,讓週末,你將有一個項目, 不僅是你的第一個CS50的pset,但你將有一個 小東西,你可以炫耀在安嫩伯格 它上傳到麻省理工學院的網站,朋友,甚至家庭。 所以當我在星期三說,我們預期90%之類的, 一般,做標準的版本。 實現對於那些你也有這個插座 否則可能會發現自己有點無聊的基礎知識 真的想潛水和你已經制定一個願景 與以前的背景,這更友好的 環境。 因此,讓我拉了另外一個例子,我們的前 這裡的學生,並通過歌曲告訴了一點東西。 同樣,由於這個劇本,想想你如何去 實施這一計劃正是這些相同 積木,一點點的偽隨機性和 有點熟悉的歌曲。 如果我們能提高音量,只需要一點點嗎? [MUSIC - “IT'S RAINING MEN”THE WEATHER GIRLS] DAVID馬蘭:這是它的CS50。 我們會看到你的週一。 [掌聲]