[音樂] DAVID J. MALAN:好的。 這是CS50這 2週的開始。 你會記得,在 在過去的幾個星期, 我們已經引進電腦 科學和,反過來,編程。 我們依路開始的故事 從無到有,即圖形語言 來自麻省理工學院媒體實驗室。 然後最近一段時間, 上週,我們什麼 引入higher--一 較低級別的語言已知 如C,一些純粹的文字。 而且,事實上,我們最後一次 該範圍內探討 一些概念。 這一點,回憶,是非常 第一個節目,我們看著。 而這個程序很簡單, 打印出來,“你好,世界”。 但有這麼多 似乎魔術回事。 有此#include 這些尖括號。 有int類型。 有(無效)。 有括號,大括號, 分號,和這麼多。 所以,記得 我們推出划痕 這樣我們就可以,理想情況下,看過去 該語法,那真的不是東西 所有的理智 有趣的,但早 是的,絕對的,有點棘手 來包裝你的頭腦周圍。 而且,事實上,最常見的一種 事情早在編程類, 特別是對於那些不太 舒適,是讓被挫敗 並絆倒了某些語法 錯誤,更不用說邏輯錯誤。 所以我們的目標之一 今天,居然會 與某些裝備你 解決問題的技巧如何 更好地解決自己的問題 在調試的形式。 你會記得,這才明白, 我們引入了環境 最後一次被稱為CS50 IDE。 這是基於網絡的軟件是 讓你在雲中進行編程​​, 可以這麼說,同時保持你的所有 文件一起,為我們再次將在今天。 而記得,我們 在這裡重溫這些話題, 其中的功能,以及環路,並 變量和布爾表達式, 和條件。 而實際上多了一些,我們 從頭開始的世界翻譯 到C的世界 但根本建設 塊,可以這麼說, 真的還是上週相同。 實際上,我們真的只是有一個 不同的拼圖,如果你願意。 而不是紫色的 保存塊,而不是我們 已經printf的,這是 這個功能在C,它 允許您打印的東西 並格式化在屏幕上。 我們推出了CS50 圖書館,在那裡你 現在在您的處置GET_CHAR, 和get_int和get_string, 和其他一些功能 好了,通過它你可以輸入 從用戶自己的鍵盤。 我們也看了看東西 像these-布爾和char, 和雙,浮法, INT,long_long字符串。 還有的在C.甚至其他數據類型 換句話說,當你聲明 一個變量來存儲一定的價值, 或者當你實現一個功能 返回一定的價值, 您可以指定哪些 類型的值即是。 它是一個字符串,如 字符序列? 它是一個數字,如一個整數? 它是一個浮點 值,等等? 因此,在C,不像劃傷,我們實際上 開始指定什麼樣的數據 我們正在返回或使用。 但是,當然,我們也遇到了 計算的一些基本限制。 並且特別地, 這種語言C,召回 我們看一看在 整數溢出,現實 如果你只有一個 內存數量有限 或者,具體而言,有限數量的 位的,你只能算這麼高。 因此,我們看這個例子在這裡 因此在飛機上的計數器, 實際上,如果運行時間足夠長會 溢出,並導致一個軟件 一個實際的物理潛在錯誤。 我們也看了浮動 點不精確,現實 僅與有限數量的 位,無論是32還是64, 你只能指定如此多的號碼 後一個小數點,之後你 開始變得不精確。 因此,例如,三分之一的 世界在這裡,在我們人類世界, 我們知道僅僅是一個無限多 小數點後3秒。 但一台電腦可不一定 表示數字無限數量 如果只允許它的一些 有限數量的信息。 所以,我們不僅裝備你 在條款更大的權力 你會如何表達自己的 鍵盤編程方面, 我們還限制什麼 你實際上可以做。 事實上,錯誤和錯誤會 從這些類型的問題的出現​​。 事實上,在主題中今天 要像調試主題 實際上看引擎蓋下 在上週的事情是如何介紹 實際上實施 讓你更好 了解兩者的能力和 如C語言的限制 而事實上,我們將剝開層層 最簡單的數據結構, 一種叫做陣列,它 划痕發生所謂的“清單”。 這是一個有點 在這方面有所不同。 然後,我們還將介紹之一 首先我們特定領域的問題 在CS50,世界 加密,加擾的藝術 或加密信息,以便 您可以發送秘密信息 和解碼秘密信息 兩個人,A和B之間 所以,我們之前的過渡 那個新的世界, 讓我們嘗試一些裝備你 技術,使用它可以消除 或減少至少一些 坎坷的 你可能已經遇到過 僅在過去的一周。 事實上,在你前面的such--一些 在C和賠率你的第一個問題是, 如果你像我一樣,在第一時間 您嘗試鍵入一個方案, 即使你認為邏輯 該方案是非常簡單的, 你很可能會碰了壁,並 編譯器是不會合作。 製作或鏘不會 真正做您的出價。 而為什麼會這樣呢? 好吧,讓我們來看看, 也許,一個簡單的程序。 我要繼續前進,它保存在 故意叫buggy0.c文件, 因為我知道它要 提前缺陷。 不過,我可能沒有意識到,如果這 是在第一或第二或第三程序 這實際上,我讓自己。 所以我要繼續前進, 打出來,主要INT(無效)。 然後我裡面的花括號, 一個非常熟悉的(“你好,天下 - 反斜線,正“) - 和一個分號。 我保存的文件。 現在,我要下去 我的終端窗口 並輸入make buggy0,因為,同樣, 該文件的今天的名稱是buggy0.c。 所以我鍵入make buggy0,回車。 而且,哦,天哪,從最後一次召回 沒有錯誤消息是一件好事。 因此,沒有輸出是一件好事。 但在這裡我必須清楚地 一些數字錯誤。 所以輸出的第一行 輸入make buggy0後,召回, 是鏘的相當詳細的輸出。 在底層, CS50 IDE配置 使用一大堆 與此編譯器選項 讓您不必 想想他們。 而這所有的第一線 裝置與鏘開始。 但在此之後,該問題 開始讓自己的外表。 Buggy0.c上線3條,性格 5,有一個大的,紅色的錯誤。 那是什麼? 隱式聲明的庫函數 int型的(為const char *的printf, ...)[-Werror。 我的意思是,它非常快 變得很神秘。 當然,在第一次 一目了然,我們不會 希望你能理解 該消息的全部內容。 和教訓,所以一 今天是怎麼回事 要嘗試,以通知 圖案,或類似的事情, 錯誤你可能有 在過去所遇到。 因此,讓我們只能梳理出 這些話是很熟悉。 大,紅色的錯誤顯然是 象徵性的東西是錯誤的。 隱式聲明 庫函數printf。 所以,即使我不太明白什麼 隱式聲明的庫函數 手段,肯定是問題 涉及到莫名其妙的printf。 這問題的根源 有宣稱它做。 聲明一個函數 提到它的第一次。 而我們所使用的術語上週 聲明一個函數的原型, 無論是與在頂部的一行您的 自己的文件或在一個所謂的頭文件。 在什麼文件做我們說 上週printf的是報價, 引文結束,宣告? 在哪些文件是它的原型? 所以,如果你還記得,第一件事我 類型化,幾乎每個節目最後時間 - 一不小心剛才開始 打字myself--是這一個這裡 - hash--的#include