[音樂播放] ANDI彭:這是CS50,以及 歡迎第兩個星期 這實際上是當週 我們的兩個分類 - 實際上, 第一個星期,我們已經有一節。 舉手,你們有多少人所有 來到超節最後一周? OK,沒關係。 這是確定的。 你們有多少人觀看 上週超一節? 確定。 而你們做精 在問題設置一個? 所以我打算把它,我們有 一群很聰明的孩子 在這個類的東西將被罰款。 確定。 所以first-- 首先,我們只是簡單地 去了今天的議程。 我們將討論過程中的物流。 很多人可能 有關於問題 在這個過程中運行的東西怎麼樣。 我們將回答這些問題。 我們將簡要地 過去的情況下,循環 任何你們錯過了超級部分。 我們將談論ASCII映射。 我們將談論陣列, 功能,命令行參數。 最後,什麼你們大概都 真的想在這裡學習, 是你的pset2。 我們將有一些很好的技巧 和提示如何做到這一點。 確定。 此外,第二,我們有 大量的糖果在這裡。 任何人誰喜歡糖果, 剛來到這兒。 抓住一些。 我有一大堆。 我們有一噸在辦公室。 我真的不希望 整天吃糖果。 你們應該吃所有的糖果, 因為我把它在這裡為你們。 剛吃糖果。 未來將有糖果的每一個部分。 因此,首先,我是誰? 我的名字叫安迪鵬。 我CS50頭TA在耶魯。 而且除了 這一點,我也將be-- 如果有人將like--跑步 哥們,你的肩膀上哭了起來。 如果您PSET的,由於前一天晚上, 你不知道這是怎麼回事, 打我。 我們會同情在一起,等等。 只知道我在這裡作為一個 資源為你的前線 在幫助你們找出如何 解決CS50及以後的問題。 我的郵箱是andi.peng@yale.edu。 我還將派出一個人 我在裡面的電話號碼發送電子郵件 所以不是每個人都對 網上能看到我的電話號碼。 隨時打電話給我在任何時候。 說真的,我的電話是 通常連接到我的手。 我可能不響應 在幾分鐘內。 我可能不是一兩個小時內做出回應。 但我可以向你保證,如果 你給我發電子郵件,如果你打電話給我, 給我發短信,我會在24小時內做出回應。 通常情況下,我才回應 即,因為我明白 每個人都得到了一些問題, 你希望你的答案 要很快回答。 但是,如果你打電話 我前30分鐘 這一塊是由於週四 night--是這樣,安迪,幫我, 我還沒有started--我可以給 你的肩膀哭泣。 但是,它可能是時間去思考 如何下一次到不行。 確定。 哎呀。 我怎麼回去? 在那裡,我們走了。 所以在這個過程中,我們有一個 噸為大家的支持。 除了剛 這裡的部分,這你 每週弄花90 妙鐘和我在一起, 我們也有辦公時間。 怎麼你們許多已經 去過辦公時間尋求幫助? 太好了。 這的確是很好看,因為我們 有超過45的TA和CA的工作人員 訓練這個課程,在這裡 幫助你與你的pset傢伙。 週一他們在青色舉行 課堂在17個山家在這裡 在耶魯大學。 週二和週四, 他們在下議院舉行。 8:00至11:00幾乎每一個工作日。 進來,進來了。 如果有任何問題,沒有problem-- 剛進來吧, 然後我們會幫你出這一點。 其次,除了在辦公時間 而部分,我們也有短褲。 有沒有人見過一對夫婦的 在視頻短褲或演練 在網站上? 確定。 所以他們非常,非常有幫助。 我們可愛的哈佛生產 團隊那邊那所學校 北上,他們拍攝並製作 這些令人難以置信的演練視頻。 他們會帶你通過一步一步 如何去解決問題。 通常情況下,如果你感到困惑 一個簡單的概念,一個單一的概念, 來看看,因為我們可能有 某處在我們的網站上有一個短。 它通常是一個很好的資源 看,當你第一次的 失去了對如何處理的問題。 第三,我們也有 study50和reference50。 因此,在研究50 網站僅僅是一個鏈接。 這是,我認為,study.cs50.net 或者類似的東西。 它只是谷歌。 我們有很多準備的幻燈片。 我們有很多的短褲和 walkthroughs--東西全部編譯 非常漂亮和整潔為你們所有 瀏覽,看到任何概念 你感到困惑。 它很可能被覆蓋 那邊study50。 Reference50--相似。 我們有很多的各種注意事項 隨時可供您使用。 最後,我們有什麼 所謂的CS50討論, 其中一個論壇,如果前一天晚上 你做你的問題,比如, 您有任何問題。 登錄到CS50討論。 發表您的問題。 然後一個hundreds--的 也許,thousands--同行 網上採取這一類將登錄。 也許有人可以得到 一個TA可以在你的答案。 它本質上只是一個 在線論壇,我們都可以 用它來討論我們的問題。 這很酷。 確定。 所以,問題的設置。 我們有關的權利的 厚厚的習題集兩種。 我們很多人已經 通過問題掙扎設置之一。 我們已經知道,也許等待 在昨晚做你的PSET 是不是做CS50最聰明的事。 技巧和基本的提示 成功讀出完整的型號規格。 你們有多少人已經 讀取規格為PSET 2? 確定。 這是一個堅實的量。 我知道你們可能已經認識到 現在的規格是很長的。 他們是真的,真的很長。 這真的很難讀每一行 那認真一字一句。 你想只是走馬觀花的地方 它告訴你做什麼。 我可以向你保證,不這樣做。 如果你這樣做,你可能 要錯過的地方 它會告訴你 如何啟動的問題 或者它會告訴你什麼名字 您的問題,或者它會告訴你, 這可能是最好的辦法 開始做你的問題。 然後你會被丟失。 當您嘗試讀取你的 SPEC一半, 很多重要 information--在你不 要能夠真正地訪問。 因此,閱讀完整的型號規格。 嘗試閱讀全規格 你來段之前, 因為那時,當我們 說說處理器集, 我們都可以有一個想法 對正在發生的事情。 其次,這是一個概念 我會喜歡引用 很多整個課程學期。 但本質上,迎接我們半途而廢,對不對? 我,作為你的TA和賈森當然 經理和Scaz作為你的教授 大衛為你的教授和所有的 其他可愛的助教在這個過程中, 在此course--助手 我們將盡我們所能 以確保您的設置 多達在這個過程中取得成功。 我們將舉行部分。 我們將舉行辦公時間。 我們會回答你的電話 電話,回答你的電子郵件, 盡我們所能,使 確保你的問題的回答。 但是,幫助我們了。 與我們見面一半。 如果你來到辦公時間 不必去節,不 在看到講座,無 知道是怎麼回事,像,幫助我。 我要像,很好,我很抱歉。 這可能是一次借 那肩膀哭泣, 因為我不知道 我能做些什麼來幫助你 如果你不嘗試,至少幫助 自己在一開始一點點。 與我們見面一半。 你知道嗎,請進來 準備回答,並得到 準備從事材料。 這使事情變得這麼多 方便大家參與。 是啊,這幾乎是它。 評級。 因此,在教學大綱,這是很 深入的關於我們如何檔次。 但實際上,故障 在這個成績的50% 將pset時,這 是可愛的,因為這是 在那裡你花了廣闊 大部分的課程時間。 測驗40%,你的 項目最終將有10%。 將有兩個測驗貫穿 本學期的課程。 我認為,時間和日期 同時上市的教學大綱。 的方式,我們將 被分級您的pset 就是我們有本質4 我們分配給每個等級的值。 我們有一個範圍值, 正確性,設計和風格。 所以你看,這是一種我們 計算公式的pset。 三,我們給予最 重量的正確性, 因為很明顯你的教練 應該測試的情況下, 我們希望它來測試。 你們都有 check50在您的處置。 這是一個非常有用的功能 ,你們都可以 你的代碼上傳到我們的服務器, 在這裡,我們將幫你了解一下。 你見過那些 frowny臉,笑臉。 他們是真的,真的很有幫助。 請不要在 學生是喜歡嘗試 硬編碼在所有的答案。 我肯定看到了PSET哪裡 有人看到check50的所有值 他們只是硬編碼in--如果 這個數字,打印出這個數字。 如果這個數字,打印出號。 不要那樣做。 儘管在技術上 check50是正確的, 你的解決方式 問題是不正確的。 因此,只要使用check50謹慎。 但也確保您 了解它是如何運作的, 程序是否正常 除了check50, 由於我們無法測試每 check50可能的情況下。 我們將測試他們中的一些。 設計本質上是怎麼 精心設計的是你的代碼? 如果你是複製粘貼多個 行的代碼很多很多次。 也許你還沒有經歷 在代碼中最好的設計。 也許是時候添加這個循環。 從本質上講,在這裡它只是所有 關於嘗試做你的代碼, 試圖盡可能高效編寫代碼 盡可能讓你的程序運行 盡可能快。 最後,我們有風情。 因此,風格是怎樣的 隨心所欲,主觀的詞。 我知道,我們正式擁有 風格50指南CS50, 它會告訴你,哦,你, 應該有一個空間在這裡。 你應該用什麼樣的格式 你的代碼這種方式。 你應該事物命名這種方式。 我真的不關心,本身,怎麼 您選擇的風格你的代碼, 就像只要你保持一致。 例如,如果你喜歡 四位後留下的空間 四位循環之前, 只是做每一次。 那種不這樣做。 不這樣做,其他時間。 如果你想保持捲髮 括號空間一定的方式, 只是一直這樣做的。 那種不要做它的地方 這裡地方不存在。 當我們分級, 真的很難 如果我不知道如何 你格式化你的代碼, 事情是古怪和不合時宜。 如果你只是保持一致,這是 對我來說更容易為大 要能看懂你的代碼。 這是你作為一個學生更容易 要能看穿你的代碼 看看有什麼錯 它削減為什麼有問題。 風格是最簡單的事情之一 你們能做得到充分的分數。 從本質上講,如果你只關心,如果 你付出五分鐘關注 你的代碼每個星期,你應該 要獲得完整的造型加分。 最後,我們有什麼所謂 範圍乘數。 Scope--我知道這是一個很大 字,尤其是在這個類。 但是範圍,所有的手段 是你正在嘗試 pset時盡你的能力。 如果你把三出 你的四個問題 甚至不嘗試 最後一個,你可能 要輸的範圍幾點。 即使你剛開始的問題, 盡你所能地穿行了。 即使不工作,把它在, 因為顯示和演示 我們說你想,那 你嘗試的問題集 盡你的能力。 然後我們可以給你 全點的範圍。 適用範圍也是我們非常重要的 說說最低PSET得分下降。 因此,在的過程 學期,你們有九pset中。 我們實際上將下降 得分最低的掉那些九, 但前提是你有充分的範圍點。 因此,如果你在一個不完整的PSET轉, 不幸的是,我們不能刪除的, 因為你的範圍 點沒有完成。 所以,即使你有可怕的一周 在這裡你死,你生病了 或者你的狗死掉,你的貓死了, 而你超負荷作業, 只是試圖處理器集。 它做盡你的能力。 如果它不工作,也沒關係。 只要把它研究。 至少我們可以給 你點的努力。 一種努力,在這個類。 至少有最低分數下降的努力。 所以呀。 這幾乎是它。 有沒有人有問題,所以 遠的我們在課堂上怎麼樣檔次? 或任何這些? 任何這些所以far-- 段,辦公時間? 酷。 確定。 因此,這是一個主題,沒有 人真的喜歡談論。 我真的不喜歡談論它。 你們真的不希望 聽到我談論它。 但不幸的是,我們都 要談論它。 大衛花了20分鐘 演講談論它。 那就是主體 學術誠信。 所以,我們都在這裡可能已經寫 一篇文章的某個時候在我們耶魯上學。 我們可能已經得到了談話,我們已經 被告知不要抄襲我們的作文, 因為這項工作是不是我們的。 在計算機科學中,我們有 同一種概念。 您提交的所有工作, 你寫的所有代碼 應該是你寫的代碼。 不應該說你已經碼 從別的地方複製。 不應該代碼 你一派,一屁股在 你真的不知道,如果它的工作原理。 有種你有感 它在做什麼,但不是真的。 如有疑問,本質上, 它僅僅是合理的。 在我們的教學大綱,我們有 事情的完整列表 我們認為是合理的 對不合理的。 例如,合理 是你和你的朋友 在討論什麼是最好的方式去 大約在邏輯上解決問題。 這是相當合理的。 什麼是不合理的,如果你 人聚在一起,鍵入相同的代碼, ,並獲得了相同的代碼。 這不是合理的。 同樣的事情,那種短文。 如果你想討論 與您的朋友,哎, 這就是我想寫。 這些是我想要的步驟 需要寫下來,太棒了。 那太好了。 請互相協作。 如果你們開始 寫同樣的事情, 把在同一篇文章,那是不太確定。 因此,有疑問的時候,就不要去做。 在這裡,我們在CS50,我們有腳本 該運行自動化測試 不僅是你的代碼的正確性, 而且你的代碼的唯一性。 所以,請不要把我們的位置 具有參考您的案件EXCOMM。 請只是為了大家,我們只 使這是一個奇妙的經歷。 每個人都學會更好, 大家都快樂, 我們都設置為 在這個過程中取得成功。 東西是很 獨特的關於這個類 我認為每個人都應該真 要注意的是,我們有 什麼叫做後悔 在我們的教學大綱條款。 所以基本上,在72小時內,如果 你相信你已經做了一些 你真的不知道是 相應的,請來找我們。 我們向你們保證,72小時內 我們將處理的情況下自己 不參照更高 當局在管理。 所以,如果你來找我,說: 岸堤,哎,我真的很抱歉, 但我認為有一對夫婦線在我的 代碼昨晚那種我GOOGLE了, 下車棧 溢出,複製和粘貼, 而我真的,真的很抱歉 這件事,讓我知道。 請不要讓它潰爛 而只是希望我抓住它。 我們將抓住它。 只是到我這裡來。 讓我知道,在72小時內。 我們會找出一個解決方案。 我們承諾,我們將不參考 大學當局本質。 所以這是在你最感興趣 只是說實話大家一起 涉及的過程。 確定。 確定。 所以,現在,快速前 我繼續前進,沒有任何人 有關於物流問題 如何課程,我們要去跑, 如何節會 運行,所有的是什麼? 確定。 是啊。 聽眾:[聽不清]? ANDI彭:是的。 那麼quizzes--你們有多少人是 在週一/週三部分? 有多少人都在 週二/週四? 好了,就在這裡了堅實的分裂。 讓我們運行方式 它在耶魯是我們 將有兩個獨立的 quizzes--一個用於每個section--那 上課時將採取。 我認為這是十月十月底, 這樣的事情,一個星期 的測驗。 是啊,所以才來上課。 在週一或週三, 你會參加測驗。 在那個星期二或星期四 你會採取不同的測驗。 但是,同樣的材料將被覆蓋。 是啊。 好問題。 是啊。 聽眾:我們在哪裡 去檢查我們的成績? ANDI彭:是的。 因此,我將派出一個 電子郵件無論每個星期 當測驗是graded--或者, 對不起,當pset中分級。 Pset中通常轉向 在中午或週五。 所以,我承諾,我會 試圖讓他們回到你身邊 由上週五的中午。 每當我一年級pset的,我會送 出上檔次書的通知 告訴你你的分數 可在線觀看。 所以,正確的這一周,之後我 完成分級上週的pset時, 你們會得到一封電子郵件 通知告訴你, 嘿,這是你 去查看你的成績。 你可以看到每一個 你的成績擊穿。 你可以看到評論。 噢,快的事也。 在偉大的註釋部分 本書是我可能會 花我的大部分時間分級。 所以一件事是 真正重要的當 你們正在查看 你的成績在你的pset 不僅找 在物理得分 而且服用時間 真正讀懂我的意見。 通常情況下,給你的反饋 關於你如何解決問題。 如果你需要做的 東西好一點, 建設性的批評通常是 在這些意見節最好的說明。 所以,請,請,我要去 花時間寫評論。 請,我真的很感激它 如果你們會讀這些意見。 確定。 酷。 好的。 因此,我們將開始討論 和公正的審查快速 一些從該材料的 零只所以我們一周 正確的頁面上 開始這個星期的問題。 因此,while循環是 三種類型的循環的 前面我們在這個課堂上討論。 while循環本質 被寫在語法 其中,而在一定條件下, 這樣做反复,對不對? 想想它在這個圖形在這裡。 你會開始在 某一點在你的代碼。 你要進入循環條件 if--我不知道 - x小於1。 如果是真的,你要 執行循環體。 而你要繼續做 一遍,再次再次 過去,over--這就是為什麼它是一個 loop--直到你的條件變為 假的。 因此以這種方式,一個循環的同時 是比較簡單的方法之一 寫任何形式的條件 需要重複一遍又一遍又一遍。 只是要小心,每當 你寫的任何種類的循環 你有一個退出條件為 還有一個更新不管它 為使您的循環不只是 遍地跑無限。 在任何情況下,你會 想要確保 您正在改變的某些方面 代碼或在循環結束 只是為了確保你有辦法 邁向的條件 要見面結束。 這是否有意義給大家? 我們只是不希望 陷入這種螺旋式的地方 我們走了一圈又一圈,並 有沒有辦法來打破循環。 而且每次循環本質 具有這樣做的一種方式。 確定。 其次,你們中許多人 在馬里奧的pset 可能不得不使用 這種類型的循環。 它被稱為do while循環。 首先,誰能告訴我 什麼做的區別 while循環和while循環? 是啊。 聽眾:while循環的做 運行在第一個[聽不清]。 ANDI彭:是的,沒錯。 因此,一個do while循環總是做什麼 是做在裡面,括號內 那裡確實是條件 檢查the--對不起之前, 這是否代碼之前 檢查的條件。 這是特別相關我們 在這裡這個類,因為大多數時候 我們將要提示 用戶對某種類型的輸入。 然後,視 輸入他們給我們, 那麼我們可以計算,呵呵, 我們需要再次提示呢? 因此,在馬里奧,如果用戶給你 一負高度,例如, 你要第一個提示 做任何在裡面。 然後,你要檢查的同時。 要知道,為負1, 是一個正數? 如果不是的話,我會去 背部和重複做,重複 重複,重複,直到他們 最後給你一個數字,你喜歡, 我們都可以運用在我們的代碼。 這對於非常重要的 基本上任何用戶輸入。 我可以在任何保證你 一次在PSET哪裡 我們要求您輸入 任何類型的代碼,我們 可能要給你 測試案例中,我們 想給你的東西不好那 要嘗試打破你的代碼。 如果我們試圖要求你輸入一個 整數,我們可能只給你一個字符串 看看你會如何處理。 如果我們要求您使用的時代, 我們可以給你一個負數 就看你會如何處理。 只要確保你們正在測試 案件中,你沒有得到最好的 輸入,讓我們只說。 而一個do while循環 通常情況下是最好的 的方式來設計你的代碼,以便 它符合該範圍。 確定。 確定。 因此,這可能是最 複雜的環出三個 我們已經看到了這麼遠。 它看起來很嚇人在第一。 但我向你保證,一旦你們 了解如何使用一個for循環的竅門, 這是最有用的事情之一, 在您的阿森納最有用的工具 為推動這一類。 因此,例如,在刮, 我們有一個非常簡單的塊 只是說重複這個特定 短語一定的次數。 順便說一下,SAJ-- 這是Scaz安迪傑森。 我們常常簽署我們的郵件SAJ。 如果說SAJ,不要混淆。 這只是我們。 因此,在刮,我們能夠有 一個塊表示,重複我愛SAJ! 的10倍。 很簡單。 背後的邏輯是一個 非常,非常簡單吧? 我想先通過第一 時間和看到的是,第二次 並看到,第三次,依此類推 並依此類推,直到你打10。 而這樣,我們將表示在 代碼只是通過for循環的簡單。 因此,對,你要申報 這裡對您的變量,在這種情況下, 用int。 我們將其命名為我。 我們將其初始化為0。 和制動版本是 將是i小於10。 並且更新將是我++。 而內環路,這是怎麼回事 直到最後它來執行 擊中condition--的端部,其中 情況下,這將打破循環。 應該有東西,你 所有類型的球員已經見過 而不得不做你的問題集之一。 有沒有人有任何問題 關於for循環的權利嗎? 確定。 太好了。 確定。 因此,對於那些你們誰 讀處理器集規格本週 知道我們將不得不僱用 一些所謂的ASCII和ASCII表。 大衛在演講走過去簡單 計算機如何essentially--一切 被編碼在計算機中 二元,在零和一。 而這台計算機能的方式 以存儲除了不同的值 以零和的是通過映射 這些數字代表其他數字 或基本上其他字符。 所以在這種情況下,一個 ASCII table--它所做的一切 是圖個字符,或字符,為數字。 因此,在源代碼文件 您computer--它認為, 哎,一堆零和一, 零和一,零和一。 這就是存儲在 您的計算機的實際內存。 但是,當我們人類要 與電腦進行通訊, 我們want--說,例如, 如果我想的大寫字母A, 我將需要一些方法 告訴電腦,哦, 當我輸入大寫字母A,我的意思是 這表示二進制。 所以我們這樣做的方式是拋出了一個 隨心所欲的東西稱為ASCII表, 我們,作為人,作為 程序員,前一段時間, 我們隨意決定我們 將要分配這些號碼 值這些字符。 所以你們可以google一下網上。 我覺得有一個在你一個鏈接 pset--只是一個ASCII映射表,ASCII 表。 它只是轉換二進制 號碼轉換成字符。 而且這將是非常 針對您的問題集有用 每當你想 算什麼,或者你 要顯示一定的 字符或整數 或操縱某些字符。 這將是非常 重要的是你的所有 知道如何定位的ASCII表。 因此,例如,在大寫字母A 由數字65表示。 而小寫 用97來表示。 因此,重要的是要知道, 兩個值之間的差異 是32。 通常情況下,如果你需要從轉換 一個到另一個,不同的是32。 如果你是那種不用擔心 迷糊這個在第一。 我們一起去了我們如何 在實際的代碼中使用此。 確定。 因此,對於那些你與筆記本電腦了, 隨意拉一個ASCII表, 因為這些大概會 需要你們引用 什麼字符。 確定。 因此,了解某些 字符映射到特定的號碼, 如果我只是跑第一 那行代碼 - 在printf的一個, 小寫,減 大寫字母A.有誰 有這將是一個猜測 打印出來的畫面,現在呢? 所以首先,有哪些呢 小寫代表什麼? 什麼號碼是 編碼在ASCII表。 對不起? 聽眾:97? ANDI彭:97,偉大的。 什麼是大寫字母A? 聽眾:65。 ANDI彭:那麼,什麼是97減65? 聽眾:32。 ANDI彭:OK。 那麼,你們認為是要 發生時,我輸入了代碼行 進入我的電腦? 聽眾:[聽不清]。 ANDI彭:對不起,說出來。 無後顧之憂。 這是一個非常安全的 環境,減去相機。 我們都將用於:無後顧之憂。 只是我們都去假裝 它只是我們心寒在這個房間裡。 無後顧之憂。 毫無疑問是太愚蠢了。 沒有答案是愚蠢的答案。 我可能會犯錯誤 在我的教學過程。 說真的,伙計們,只是脫口而出出來。 要充滿自信,你知道嗎? 所以,那是什麼? 誰說,去年的答案嗎? 確定。 喊了很好的和明確的。 聽眾:32? ANDI彭:32。 OK,讓我們運行此代碼, 看看這是什麼情況。 確定。 所以當你們可以種 看,典型的符號我已經 設在這裡的,我們將如何使用 在我們的電腦任何類型的程序。 我們有我們的主要功能 在我們的主要功能。 我只是去複製和 粘貼此行代碼。 你什麼時候你們也要小心 正在複製和粘貼代碼。 有時候,某些運營商 不貼了正常。 在這種情況下,減 符號實際上是一個破折號。 這樣一來,電腦並沒有把它撿起來。 因此,我不得不回去 身體重新輸入。 只是要小心 你們正在做的。 確定。 我們要在這裡運行此。 所以,我們要cd到我們的第2節。 我叫這個節目asciimath。 所以請記住,當我們運行任何 程序中,我們要先編譯 通過我們的化妝運行它。 然後我們要實際運行 該方案通過做點斜線。 所以,我們要./asciimath。 對了,我們走吧。 我們看到32。 幹得好。 你應該得到一塊糖。 糖果給你。 抱歉。 好的。 確定。 所以,我們可以回到我們的例子在這裡。 啊哈,沒有。 AAH。 確定。 我只是要保持這樣的。 確定。 確定。 所以當你們可以看到,我們能做到 很多非常有趣的事情, 很多非常酷的事情,很多的 涉及到非常複雜的事情 ASCII字符和數字。 一旦你到五號線, 這是一個很多跟隨。 我們不會去 通過部分。 隨意,如果可以的話, 原因,它在紙上 第一次什麼應該發生時, 你輸入這樣的字符串值。 例如,在最後一行,我們有 z--表示某種number-- A--這也代表了 某些number--加1模數26 再加上小寫。 如果你們繼續閱讀 通過這些,你 可以看到一個模式來在 我們是如何操作的代碼。 我強烈,強烈建議 畢竟你節 球員前進和投入 這些都在你的電腦 看看是什麼樣的 數字現身 並通過這些原因是推理 發生的事情,因為你的pset 這將是非常重要的 讓你了解 為什麼某些事情正在發生。 所有這些幻​​燈片將在網上。 所以不愁努力 身體上複製下來的筆記。 一切都在網上。 本節本身會上網。 我的所有的源代碼, 我正在將是網上。 是啊。 你還有問題嗎? 聽眾:什麼是模數? ANDI彭:OK。 所以模是一個操作員,那將 是你的球員的pset中非常重要的 在這裡。 這樣的方式,操作人員 C語言和編程工作 是,你有什麼所謂的 師符號和模量的象徵, 這就像百分號。 因此,在C,當你做一個整數 除以整數帶斜線, C具有一種傾向,要削減 關閉所有的小數點, 因為一個整數希望 轉換成整數。 它不會想成為一個雙 一堆小數所有之後的。 所以,如果我做的3除以2,這是怎麼回事 切斷0.5和只給你1。 所以這是一件值得 非常小心,當你的 做任何形式的數學編程, 是這些數字你 未必是數字 你所想, 這就是為什麼在舍入你的 最後PSET是非常重要的。 模給你的剩餘部分。 因此,舉例來說,如果我做了3 模2--所以3百分號2-- 它會給你的那剩下的人。 所以3除以2為1.5。 這是1剩下的1。 它會給你1,這 是那剩下的人。 所以,當你們正在 通過ASCII表, 模將最終被 東西是非常重要的, 我們將討論以後。 確定。 所以東西是漂亮, 漂亮的新獨闢蹊徑 我們已經在本週討論的 什麼數組的概念。 所以陣列是第一 數據結構的類型 我們要去 遇到此類。 所有的數據結構是 某種隨意性, 從字面上的東西狀結構 我們作為程序員創建的, 我們已經把我們的代碼, 可以包含其他的代碼段。 所以在這個意義上說,一個array-- 認為它是一個文件櫃, 在那裡,如果你打開不同的 文件櫃貨架, 您可以訪問不同的事情。 在內存中,數組只是做 同樣的事情在您的計算機上。 你可以有不同的blocks--我們 稱他們indices--數組。 這就像一個塊, 的存儲器的架子 我們已經在創建了 計算機,你可以輸入 在不同的空間中某些事情。 因此,一個數組,你 總是要specify-- 您必須指定在聲明 陣列中的下面的格式。 你會第一 指定數據類型 要創建陣列。 如果我想要一個整數數組, 我打算把INT就在這裡。 如果我想要一個字符串數組, 我打算把字符串出現, 陣列的名稱,然後 你將有方括號。 而在方括號,你 將有你的數組的大小。 東西是真正重要的 記住,當創建陣列是 如此,一旦你創建一個 陣列,該尺寸不能改變。 所以,如果你知道現在 你有大小為10的數組, 你知道,我將有10個小區 內或10這個數組中的索引, 它永遠不會 擴大或減少 不管是什麼,這有 空間目前只有10個街區 分配你的內存,可以存儲 最多10個任何事情,你已經把。 因此以這種方式,陣列數據類型, 的數據結構是數組 從其他一些人,我們將非常不同 在此過程中稍後覆蓋。 是啊。 例如,如果你想 創建大小為3的數組 的integer--包含變量 哦,不好意思,temperature-- 和溫度, 當然,是整數。 因此,我們將產生int,它是 是我們要存儲的數據類型。 我們將調用這個溫度 為求命名的命名 東西,大家都明白。 而我們將有方括號。 我們希望三個數字。 因此,我們打算把 三是內部的。 東西是真的 重要的是要記住 是陣列零索引。 所有這一切意味著你 開始為0的索引, 你通過跑起來 減1的陣列的大小。 因此,對於這裡的例子,我們 有大小3的數組。 這將能 持有三個值。 但數字themselves--的 號,陣列,該索引, 數組,從0到2。 所以,球員,真的,真的很小心 你要通過你的問題集 和創建任何類型的數組, 因為很多它的時代 真的,真的很容易忘記這一點。 我居然沒有索引 3,我現在只是 具有2的索引。 如果你嘗試 訪問第三索引, 這將是怎樣的 所謂空終止。 它不會實際 存在陣列中。 並且計算機 不會喜歡的。 所以要小心,只要 您正在訪問的事情只是 確保你記住 該數組是零索引。 確定。 所以第一實施例僅僅是 創建陣列的一種方式。 第二個例子,我有 下面就是一個獨立的方式 創造了什麼是相同的數據 我們剛剛輸入的結構。 因此,而不是實際運行 通過並把在0溫度 等於什麼,溫度1 等於什麼,溫度2等於 不管,我其實只是 在一行中直接創建這一切 成溫方括號等於。 並注意在這種情況下,你不需要 到指定的數組有多大, 因為電腦的打算 經過,看到有 在這些大括號三個要素。 而且它會知道,OK, 我需要的大小為3的數組。 你不會需要 輸入它下面的方式。 而且,是的,這種方式。 有沒有人有問題 關於我們如何數組 或如何陣列結構的工作原理? 是啊。 聽眾:[聽不清]? ANDI彭:是的,沒錯。 所以,如果你要聲明和初始化 陣列以下的方法, 這是第二次的方式, 你可以離開的。 而且電腦 自動知道它 需要指望有多少元素 在這些大括號,分離 用逗號。 所以在這裡,他們看到65,87,30。 因此,計算機就知道,哦, 有三個整數。 我知道要創建一個數組名 溫度在其三大要素。 好問題。 是啊。 聽眾:是不是有可能創建 與不同類型的數據陣列 可能被輸入到什麼? 例如,對於整數[聽不清]? ANDI彭:為施行 這個類的,不,現在。 當你創建一個數據 結構是怎樣的一個數組, 你告訴 計算機,嘿嘿,我需要你 分配這麼多 記憶在我的硬盤驅動器, 每個小區是一個 一定數目的位。 還記得我們在上週得知 零的不同的數據 類型有不同的大小? 因此,例如,一個字符串 是一個不同的量 空間不是一個字符,這 是不同量的空間 從一個整數。 所以,如果你沒有指定你 混搭是什麼類型的變量 你有電腦的 將是很迷茫。 而且它不會知道 多少內存給你。 所以為便於右 現在,計算機只能 識別一種類型的數組。 好問題。 確定。 所以很自然的 我們的第二個問題 是,好了,現在我們已經創建了一個 陣列,我們已經把所有的這些東西 陣列中的情況是怎樣的 要能夠訪問它? 因此,典型結構是我們始終 訪問數組是我們可愛的for循環。 我答應你們,我們會 看到很多這樣的傢伙在這裡。 從本質上講,任何時候你想 輸入值到一個數組 或者你想訪問他們來說, 這樣做的最好的方法是一個for循環, 因為在一個for循環,你 知道你有多少次 會希望通過陣列來運行, 因為你有一個停止的版本,對不對? 而每一次運行 通過,你可以訪問 不同的元件的陣列構成。 而且,這是一個原因,通常 我們在0值開始我們的for循環, 因為當你訪問陣列, 您可以訪問零指標。 因此它平行非常漂亮。 你們可能想 寫INT I等於1。 i小於或等於3。 但它不會是相當正常工作 還有在這裡,因為你只 具有0,1和2的元件。 所以如果你開始 您我在元件1,2,和3中, 你會最終運行 你的數組的邊界, 壞的事情將要發生。 所以,我希望你們看到SEGUE 為什麼在前面的類 我們教你們如何運行和 格式化的循環,我們的方式。 這是因為,現在我們已經 過渡到陣列, 你可以看到為什麼0貸出 本身非常漂亮來訪問。 所以我們這樣做的方式是that--我 剛剛打印出來這裡是為了 打印出來。 但是,我有我的佔位符,逗號。 與實際訪問 部分正在發生。 所述陣列的名稱 被稱為溫度。 所以它的溫度和 該陣列的第i個元素。 所以for循環貫穿, 它會從0開始。 這將打印出 此數組的第0個指標。 然後它會打印 出的第一個元素。 然後它會打印 出第二個。 然後,我們要打破。 是每個人都清楚 怎麼說是怎麼回事? 太好了。 好的。 所以在這裡我們有辦法 他說,如果我們不想要 硬編碼in--我為程序員。 我不想實際的物理 擺在每一個單獨的元素 此陣。 如果我想,而不是 有用戶輸入的值, 什麼是做到這一點的最好方法是什麼? 那麼,在這裡我已經創建 這個可愛的功能, 我在其中可以聲明數組。 因此,廉政scores--我們 只是說我們要 即持有的所有18年級的數組 對這裡的學生在本節。 我認為我們已經有了一個位 超過18個孩子的今天。 但如的緣故, 讓我們只是假設,我們有18。 我想創建一個數組名得分與 int類型,因為得分,當然, 是數字。 而我將不得不 在方括號18, 有多少學生,因為這是我 希望能夠存儲的分數。 而這樣,我想填充 該陣列是我最好 通過運行for循環中, 當然,0是我的第0指數。 然後用18是我的 停版,因為有 數組中的18個元素。 然後,我會做的printf,輸入 得分student--亞達內容十分重要。 誰能告訴我為什麼在這裡,我 打印I加1,而不是我? 這是怎樣的一個把戲 問題,不是真的。 它並沒有實際的物理 影響代碼的運行。 是啊。 聽眾:[聽不清] 0? ANDI彭:是的,沒錯。 這是一個有點尷尬地說,哎, 你是第0個學生在這個類。 這是一個有點怪。 所以我們作為人類,真的不喜歡 想想計算機如何想的。 因此,即使在 計算機,它的存儲值 在第0索引,當 我們是人類,我們真的不 喜歡把自己看作為零。 所以,當我剛打印, 我要打印,並添加 1只是為了清楚起見。 所以,當我打印,我將是 能夠通過18打印學生1。 它實際上並不影響 代碼的運行 以任何方式,我的方式進行打印。 但要小心,當你 實際訪問的陣列。 當你看到我得分, 注意這裡我其實 訪問第0指數 不是1加0--或1加1, 在這種情況下,指數所以 這實際上是明確的。 是每個人都種確定對 這是如何通過運行 並與各項指標我 把一個值到陣列 並創建具有18個數字的數組 該用戶將要輸入? 確定。 酷。 確定。 現在,我們進入的東西,是很 有關這片設置為好。 我知道在講座中,David-- 對不起,你有問題嗎? 聽眾:您可以放大嗎? ANDI彭:是啊,所以我嘗試。 但我不知道。 出於某種原因,這 版本的PowerPoint 是真的不工作 很好地與所述顯示。 因此,我們只是要 要保持這樣。 這些都將在網上上傳。 對不起,伙計們。 是啊。 確定。 因此,我們也可以有字符串。 所以,如果你們確實notice--我 知道羅布走到這在演講 他did--字符串實際上是 字符的只是陣列, 如果你仔細想想,對吧? 字符串是一個名稱或 句子或單詞,對不對? 如果我要創建一個名為字符串 Andi--只是我的名字,A-N-D-我。 你認為那是只有一個變量。 但實際上,它的分解 成字符的只是一個數組。 因此它有足夠的字符 一個存儲在數組中的值。 它有n個存儲於一個字符 第二索引等等,等等。 因此,在這樣的方式,我們 居然有這樣的 結構的設置 把我們的字符串。 所以在這裡,如果我輸入 詞“吃” - 這樣的字符串字是 得到的字符串。 如果我要輸入單詞“吃”了 在物理的方式,我的電腦 是存儲該字符串在我的記憶中。 如果我想通過運行 和打印的out--所以到我 等於零,請記住,在講座中,我們 涵蓋的東西,就是所謂的strlen, 或字符串的長度。 因為我不實際 知道數組有多大 無論用戶的inputting--的 比如,我輸入 字“吃,”我知道 這三個字符長,對不對? 所以,我可以把在三有 一切都會好起來的。 但是,如果用戶輸入的東西 這是一個不同值的數量, 你將不能夠真正 知道,當你的程序代碼。 讓我們處理測試用例的方法 這樣的是,我們有一些 所謂strlen的,這僅僅是一個函數 告訴你一個字符串有多長。 所以strlen的字。 我的話是吃的。 n等於字strlen的。 有誰能告訴我這是什麼 值實際上是正確的呢? 這是什麼ñ代表權 現在,在這個例子中,如果我有吃的嗎? 聽眾:3。 ANDI彭:3,正好。 因此,我們必須對於int i等於 零,n等於3,本質上。 並且i要運行 直到它的不足3I ++。 而這將基本上去 通過做同樣的事情。 這將打印出 每個值,並給您 E-A-T。它只是表示一個 寫它的不同的方式。 這將是非常有益的。 是啊。 聽眾:什麼是推桿的好處 在n等於裡面那個strlen的字 循環[聽不清]? ANDI彭:是的。 所以,如果我是用於:說,例如, 如果我這樣做,然後 do-- oop--的是,在我的代碼,它會 實際上是在做喜歡同樣的事情。 然而,這樣,大衛解釋 它講座期間,如果有的話你們 請記住,是,由於 人類,作為程序員, 我們真正嘗試編寫我們 代碼,使我們的電腦有 工作盡可能小,所以 我們的代碼是非常有效的。 所以,如果我有,有,有什麼 會發生在我的for循環 是,我想首先聲明一個 變量命名的我將是​​0。 我要檢查一下,哦, 什麼是字的strlen的? 哦,strlen的是3。 那麼,我不到三? 是的,它是。 我要去運行。 然後將第二次回周圍 循環,我要增加我。 我將是1。 而我是要檢查,哦, 但什麼是字的strlen的? 哦,這三種。 而確實,似乎有種浪費, 每次通過循環運行時, 要檢查的功能, 即使字的strlen 實際上從未改變? 因此,它是額外功率的計算機。 當你開始談論的東西 這是數十億 與數十億的地方 長,想像一下你的電腦 不必實際經歷和 檢查所有的,每一個時間。 這就是為什麼,使​​剛 為求效率, 我們往往只做到這一點, 因為這樣一來,我們只 調用函數 一旦在開始的時候, 並且,每一次它 經過這回事 存儲值3 在那裡,你不 必須不斷地檢查每一個時間。 是啊。 聽眾:對不起。 只是[聽不清]。 你可以做詮釋n等於strlen的放 上面的for循環的外 呢? ANDI彭:是的。 你可以做到這一點,絕對。 我們有它在這裡的原因是 因為for循環工作方式 的是,它被稱為 在這個意義上局部變量 這一切你 創建的內部進行循環 只存在內部循環。 所以變量i僅 存在於這些括號內。 n個而這裡的變量也 只存在於那些括號。 所以,如果你使用的strlen的 詞多次向下跌破, 絕對做到這一點的最好辦法 將宣布它的頂部 所以你不必做一次。 是啊。 聽眾:你為什麼有 百分比後,新生產線 看,如果你想要把所有 字母旁邊分開? ANDI彭:哦,我想 全部打印出來,每行。 不要緊 是的,這是一個格式。 這是一個很好的問題,但。 是啊,如果我想打印 這一切只有一行, 我也不會在衝刺。 確定。 每個人都好? 確定。 酷。 所以,我想我已經談得夠多。 你們輪到通過運行 代碼,並告訴我什麼是錯在這裡。 哪裡的錯誤? 因此,大家可以看到,我已宣布 字符串類型命名為類新的數組。 而且我已經輸入的山姆, 傑斯和金進去。 而我試圖打印出 該陣列中的所有元素。 誰能告訴我為什麼這個 是要給我的問題? 我給你們10 秒去想這個。 確定。 是嗎? 聽眾:是左側中心 等於3或[聽不清]? ANDI彭:對。 那麼有多少次是這其實 通過這個循環運行? 聽眾:四。 ANDI鵬:沒錯。 這將通過四次。 這將貫穿 於0,1,2,和3中, 因為他們的元素是我 小於或等於3。 它不會停止時,它的2。 這將繼續 走,直到它擊中3。 正如我們所知,有只有三 在我們實際的數組元素。 如果我們試圖訪問的第四個 元件或3的索引, 你會打的地方 內存中不存在。 這就是所謂的空終止。 沒有什麼是去那裡。 您的計算機不會 很高興和你在一起。 是啊。 有沒有人有問題 為什麼這是怎麼回事? 這是一個公共區域,以避免。 是啊。 聽眾:難道不是第一次 滑動也有2一串? ANDI彭:沒有。 所以基本上,當 你正在做一個數組, 該支架右 那裡,number--所有 它告訴你是怎麼 許多元素我有。 它實際上沒有告訴 我什麼指標。 因此,在這種情況下,我知道我要 與三地書寫, 有三個物理地方 持有任何我想要持有。 所以這就是為什麼數字三是存在的。 但是,如果我想 實際訪問它, 如果我想說的話,printf的 類托架號碼,然後 你要真正把 有物理索引。 是啊,好問題。 聽眾:所以是物理 指數應該是[聽不清]? ANDI彭:我很抱歉。 你能說了一下? 聽眾:所以是物理指標 [聽不清]每個盒子? [聽不清]? ANDI彭:是的。 所以,我要回到這裡。 想到這裡的。 我們有大小3的陣列。 有三個地方,比如, 物理佔位符在這裡。 但它們命名為0,1和2。 所以,如果我想訪問他們, 我訪問它們的方式 是的printf什麼的,我想在這裡。 你將不得不打印 從它的名字, 因為這樣的計算機 知道,哦,我需要看看 這個數組的第0個指標。 是啊。 但它的大小不發生變化。 的大小是3,而不管 你如何標記他們。 確定。 每個人都好? 聽眾:所以每次我[聽不清]? ANDI彭:OK。 因此,在這種情況下,我們真的不 進入它現在在課程。 但是要知道,像我一個string-- 前面說過,一個字符串,本質上是 字符數組。 所以,如果我創建一個數組 字符串類型的,我 有數組的數組 字符,對不對? 因此,在這種情況下,因為我 有一個字符串數組, 如果你輸入一個很長的話, 仍然只佔用一個空格, 因為這是一個字符串。 但是,如果你想 該陣列的字符, 那麼這是佔用了很多 字符比任何換言之 是。 沒有真正的,現在重要的。 但是,這只是一般 它是如何工作的。 確定。 因此,這是我就讓你做 很多在這學期的課程。 我需要休息,我的聲音。 你們需要激勵自己。 很多人可能 要睡現在。 我輸入隨機問題 在這裡,我們為一類,或者你 與伴侶在你身邊會 花幾分鐘時間討論 關於我們如何去解決 或創建一個程序,如這一點。 所以,現在,我們要 創建program-- 我們要叫它 upper.c--可以轉換 小寫的字到上流 string--大寫,對不起。 詞串,對不起,是同義的。 我要改變他們 意味著同樣的事情。 是啊。 就拿一兩分鐘。 它並不必須是 用任何語言。 就在偽代碼或 邏輯上我們怎麼會連 去這樣做這樣一個問題。 是啊。 [副會話] 我還注意到,你們can-- 我看到那種已經計劃。 我想我的缺乏 演示模式是一個問題。 但它的確定。 [副會話] 是的,請,伙計們。 來拿糖果。 來拿糖果。 聽眾:是的! [副會話] ANDI彭:另外,是啊, 我就開始扔糖果 在人誰不回答問題。 所以,你都應該回答的問題。 或者,我想,人誰 不回答問題。 是的,周圍的其他方法。 [副會話] 聽眾:[聽不清] ANDI彭:是的。 是啊。 [副會話] 好吧,伙計們。 就拿一樣,10多秒。 [副會話] OK,伙計們。 因此,我們開始嘗試之前, 實際的物理寫代碼, 一個好習慣培養的是, 我們希望第一種原因 從邏輯上我們將如何做到這一點。 你要確保, 在你身體 開始嘗試編寫 在馬里奧,你做 確保你有你的偽代碼。 這是帶你通過 你需要創建這樣 即,物理當你 後來編寫程序, 你能夠更好地捕捉錯誤 在你的代碼之類的東西。 所以,我們要剛開始 by--在英語中,偽代碼, 沒有人想給 我一個通用的解釋 我們如何會去這樣做呢? 是啊。 聽眾:[聽不清]。 ANDI彭:當然,沒有後顧之憂。 聽眾:你可以問它還是問 有人拿到字符串1--是啊,串, 和then-- ANDI彭:是的,所以這是一個良好的開端。 我將開始打字,對不起,因為你說話。 So-- 聽眾:--the小寫 數字是更高的,對不對? 還是小寫字母 有高的數字? ANDI鵬:沒錯。 聽眾:那麼接下來我們減去 32從什麼[聽不清]。 ANDI彭:太好了。 所以,我們種得一般意義 如何工作這個問題。 知道那種我們學到 物理方式串 被存儲在存儲器, 你是什​​麼已經 知道你要大概 要在你的代碼編寫 以移動通過字符串? 顧客:循環。 ANDI彭:一種循環,沒錯。 太好了。 所以,我們種有一個通用的 偽代碼寫下來 那種是給 你注意到你如何 會動一下解決問題。 現在,你有這個,你 可以參考它以後 當你試圖對 實際上編寫代碼。 所以,我們實際上可以去這裡。 而且我有一個調用的函數upper.c-- 那裡is--只是一個空白模板 現在,你們要 幫我找出如何寫 這行代碼 - 不是代碼行。 這將是多行代碼。 當啟動任何形式 空白PSET的,什麼是 我需要的第一件事 記得嗎? 聽眾:[聽不清]。 ANDI彭:大是的。 包括。 stdio.h中。 通常情況下,這是一個 最易犯的錯誤 將當他們 寫作,是,他們將 忘了包括 他們需要的重要的圖書館。 所以,如果是上班時間,你就會說: 我不知道為什麼我的代碼不能正常工作。 你能告訴我,為什麼它不工作? 我們會說你#包括? 你應該#包含它。 確定。 因此,我們已經得到了標準I / O位置。 這是唯一的圖書館 我們要在這裡需要什麼? 還有什麼是我們該怎麼辦? 抱歉。 剛才有人尖叫出來? 聽眾:[聽不清]。 ANDI彭:你去那裡。 確定。 以及如何著手開始任何形式 的功能,任何類型的主要功能的 在我們的計劃? 詮釋為主。 確定。 我怎麼把裡面嗎? 什麼是你想要做的第一件事情? 如果我們想獲得一個 來自用戶的字符串, 什麼是我們將會有 做這一行頭? 對不起,你們只是覺得 自由發言和響亮。 剛喊出來什麼的。 聽眾:詢問用戶? ANDI彭:我們怎麼做呢? Ask--我是要輸入“詢問用戶”? 聽眾:printf的。 ANDI彭:OK。 PRINTF。 我想要什麼的printf? 聽眾:在什麼類型。 ANDI彭:這樣呢? 伙計們,假裝我是一台電腦。 物理告訴我的每一步 我需要在這裡輸入? 難道我做錯了什麼? 我應該已經輸入的東西嗎? 聽眾:你需要引號。 ANDI彭:我需要報價? 確定。 確定。 聽眾:然後,新的生產線。 分號。 ANDI彭:分號? 確定。 好。 聽眾:也許指定 你想在小寫? ANDI彭:太好了。 你們笑我 忘了把一個分號。 我在某處向你保證 在這個類的過程中, 你會忘了把 分號,和它 將帶你三個小時圖 為什麼你的代碼不能正常工作。 這是發生在我們所有人。 它可能會發生在你身上。 獲取使用分號的好習慣。 確定。 聽眾:你想 做的反斜線? ANDI彭:當然。 你想要做的反斜線? 聽眾:是的。 ANDI彭:太好了。 確定。 我該怎麼辦? 聽眾:獲取字符串。 ANDI彭:獲取字符串。 所以,我該怎麼輸入? 有人? 聽眾:的String。 ANDI彭:的String。 聽眾:GetString的。 ANDI鵬:一個人, 你能告訴我在哪裡 此功能的GetString是哪裡來的? 聽眾:STRING.H。 ANDI彭:STRING.H? 你認為這是從string.h中? 聽眾:[聽不清]。 ANDI彭:你去那裡。 這是一個從CS50.h. 如果你總是困惑於其中 庫文件或頭文件, 谷歌從字面上STRING.H, 我會告訴你 什麼是所有的功能 這是string.h中。 確定。 所以,現在,我已經創建了一個字符串 而我已經提示用戶輸入它, 我存儲在一個變量 命名為S,我該怎麼現在需要做的? 聽眾:檢查,如果是小寫。 ANDI彭:對不起? 聽眾:檢查,如果是小寫。 ANDI鵬:好吧,讓我們做到這一點。 我該怎麼辦呢? 實際上,為的宗旨 眼下之類的, 我們只是要 假設一切 我們投入已經是小寫。 如果你想檢查一下,你會 只需添加一個條件語句 該檢查,該貫穿 每一個數組元素 並檢查它是否 一定值之間。 我忘了是什麼數 小寫的值都是。 你可以看看它的ASCII表。 但是,是的,這是一個非常好的點。 但是現在,我們只是要 假設所有的字符串,我們輸入 是小寫。 確定。 所以,我怎麼會去 這個問題下一個? 顧客:循環。 ANDI彭:For循環? 確定。 告訴我什麼類型。 顧客:INT I等於0。 ANDI彭:OK。 聽眾:呵呵,其實,那你 做一個逗號,做N等於strlen的。 ANDI彭:那麼重要的事 我認為她在這裡發現 是,我們沒得說INT n向第一次,我們這樣做。 要知道,在一個為 當你聲明循環, 你其實並不需要的INT 第二次你做一個變量。 你可以說ñstrlen的。 第:受眾。 ANDI彭:秒。 確定。 聽眾:然後一個分號。 ANDI彭:當然。 聽眾:然後[聽不清] n的。 然後我++。 ANDI彭:太好了。 好的。 我們想要什麼內 本作目前循環? 請記住,如果我們要貫穿 一個串並通過陣列上運行, 我們要檢查的東西在裡面。 什麼是我們將需要? 這是一種棘手的部分現在。 任何人都有一個猜測? 確定。 因此,首先,我們怎麼連上網? 我們怎麼連第一次檢查或 訪問數組中的元素? 我們該怎麼做呢? 什麼是我們用來做記號? 這是什麼陣的名字叫什麼? 這就是所謂的S,對吧? 請記住,任何字符串始終是一個數組。 所以小號支架我,對吧? 因為,它是當前值 或索引值,我們正在檢查。 而且我們要設置相同 用於:我們希望有一個小寫的價值,對不對? 我們希望把這一lower-- 對不起,我們希望有一個大寫字母。 我們想將小寫 值轉換為大寫。 所以like--我很抱歉, 你叫什麼名字? 聽眾:海蒂。 ANDI彭:對不起? 聽眾:海蒂。 ANDI彭:海蒂。 就像海蒂說, 最初,我們可能 將需要the--我們 可能將不得不減去 32無論從任何charc也就是說,對吧? 因為在ASCII 表,所不同的 小寫字母之間 和大寫字母為32。 所以,當我們這樣做,我們可能 將要減去32,對不對? 所以,我們要做的I。 大家是否明白我為什麼這樣做? 因為現在,在我們的數組, 我們正在檢查第0個指標,對不對? 和在的第0索引 字符串,這是第一個字符。 而這個角色,我們要去 假設它是小寫。 如果我們要使它大寫,我們 必須減去32從它的價值, 因為在我們的ASCII 表,這就是我們如何把它 到下一個相應的 值,這使得它大寫。 大家是否明白了嗎? 是啊。 聽眾:你能不能 做一個小寫minus-- ANDI彭:是啊,所以這是 居然真的不錯。 我會回來的 問題,我們這樣做之後。 是啊。 然後,如果我想 看看這是怎麼回事, 我可能會 要打印,對吧? 有人告訴我是什麼 我想在這裡打印。 聽眾:printf的百分比 Ç反斜杠[聽不清]。 這是[聽不清]的I值。 ANDI彭:■我,對不起? 聽眾:[聽不清]。 ANDI彭:我不知道。 你怎麼看? 聽眾:嗯,我wouldn't-- 我想我不會bring-- 我把它拿出來 在裡面,因為[聽不清]。 ANDI彭:哦,你會做嗎? 聽眾:是的。 ANDI彭:讓我們離開的方式 是的,為什麼我稍後會解釋。 請記住,即使你 有一個佔位符, 你想要把括號它。 好的。 因此,這應該在這裡是一個堅實的功能。 讓我們來運行它,看看它是否編譯。 製作上。 嗯,哦。 這看起來並不太好。 這究竟是為什麼? 對於任何錯誤,你想要去的 背部,並開始與第一位的, 因為通常是一個錯誤的原因 大量的後其他錯誤。 在這裡,我們看到upper.c:18:25,它告訴 我這個計劃命名為upper.c, 在第18行,錯誤隱式聲明 函數庫strlen的類型 unassigned--胡說,我不知道 在那之後發生了什麼事情。 所有它告訴我現在是 這東西是怎麼回事strlen的。 和計算機的困惑,因為 這就像,我不知道是什麼strlen的是? 什麼是可能 告訴你,你錯過? 聽眾:你錯過了[聽不清]。 ANDI彭:你說得對。 沒錯。 因此,這是它的 重要的是要確保 您在使用每個功能的 碼為具有正確的標題 文件的庫,要不然 你會得到很多的錯誤 和你的代碼是不會 要知道這是怎麼回事。 因此,我們要在這裡包括string.h中。 現在,當我們嘗試編譯上。 編譯正常。 讓我們來運行這個程序。 因此,輸入一些小寫。 你們有什麼要鍵入? 喊出來的東西。 好吧,查理只是走了進來。 我們鍵入查理的名字。 查理小寫。 並希望,有希望,這是 要喊出來,並吐出 查理大寫。 耶! 大家都知道如何 我去著手解決呢? 的方式,我可以 操作使用整數 解決的東西, 我想在字符串, 因為字符和整數能 以同樣的方式,因為進行引用 ASCII碼的映射。 所以回到你的問題,如果我 希望把32個位置,而不是 大寫字母A減去小寫一個活脫脫 即,將工作同樣為好, 因為這只是簡單的 這兩個值之間的差異。 如果我想使這個again--查理。 哦,不。 我想我們走錯了路,是嗎? 聽眾:[聽不清]小寫。 ANDI彭:你去那裡。 是的。 進出吐查理。 所以,要小心 你減去值 要記住哪一個是 比其它更大。 例如,在這裡我忘了 這小寫實際上是 大於大寫字母A.所以,當我 試圖減去它們的其他方式 的時候,我得到了負32。 而我的電腦很喜歡, 我不知道那是什麼。 這可能只是一些隨意 值不是很好。 所以請確保你 減去在正確的長度 找到你想要的字符。 確定。 有沒有人困惑於我們如何 走遍寫這個功能呢? 確定。 所以實際上,功能已經 存在於庫調用文件ctype.h。 圖書館的所謂文件ctype.h。 這個功能其實是 你已經寫。 這就是所謂的要高。 所以,為便於 這PSET,你會 找到你真的要使用 包含了很多功能 內CTYPE的庫。 要上,為了降低,是上,是 lower--這些都是功能 你將能夠非常使用, 很快在自己的代碼, 不正是這樣做。 我們寫了如何轉換 一個字符串為大寫。 但其實這是代碼 是別人寫 並且您可以訪問 經由不同的功能。 是嗎? 聽眾:所以你剛才複製的在那裡 而做到這一點的每一個字母? ANDI彭:是的,因為我不知道 關心的一個的值。 我只是關心的差異 他們之間是32,對吧? 小寫之間的差 b和大寫B也32。 和c之間的差 和大寫C是永遠32。 我只需要關心 兩者之間的差異, 因為所有的字母 遵循相同的模式,對不對? 如果我有差異 它們中的一個之間, 我知道有什麼區別 所有的人之間。 好問題。 是啊。 每個人都好? 確定。 空中接力。 確定。 因此,另一種概念,是 會是你非常有用 繼續發展 你的代碼是這樣的想法 對創建函數或抽象。 所以,現在,我們都採取了代數。 在代數中,你被教導,有 這個奇妙的東西叫做功能 機,在那裡,如果你 輸入某種類型數量, 它貫穿這個美妙的功能 進出彈出不同的輸出,對不對? 在代碼中,同樣的事情發生 在任何類型的功能。 所以我可以物理 寫在我的我的代碼的身體 實際上做了主要發言 任何代碼的身體在做什麼。 但是,這以外,我還可以 寫了許多不同的功能 是做許多不同的事情。 例如,我們已把 開始使用其中的一些。 Printf--這是一個 功能別人 已經寫了 我們可以在代碼中調用。 到upper--在這種情況下, upper--是另一個函數 我們已經寫了我們 可以在我們的代碼中調用。 所以我想,為什麼 我們甚至有功能呢? 為什麼我們不只是放下它 所有在相同的代碼行? 這很容易讓每一個人。 好了,背後的理由 是,第一個組織的全部。 這真是煩人會 通過別人的代碼 和一個功能如printf。 如果你們真正知道什麼是 函數printf entailed寫, 它的一樣,1000行代碼。 如果每次我需要時間 對printf的東西, 我不得不寫1000行代碼, 這將是非常惱人的閱讀, 對不對? 這就是為什麼我們剛剛 創建這個抽象函數 我們已經有人 別人寫了別的地方。 而每一次,我們需要使用它的 我們的代碼,我們只是說printf的。 並且,能夠使用該功能 別人已經寫在我們的代碼。 這使得它更容易 組織上讀取的代碼。 其次,它的簡化。 它簡化了我們有以下步驟: 拿地解決我們的問題。 PRINTF,如printf函數, 喜歡上的功能 是所有的東西,使我們能夠 簡化了我們的代碼下來,以便更容易。 而最後一件事是可重用性。 因此,事實上,我們有 一個函數調用的printf 我們可以調用許多不同的 倍,並允許它可重複使用。 如果我寫的printf, 我只有一次它寫。 它存在僅在該一個位置。 如果我想再做一次,我會 要複製並粘貼了這一切 進入代碼我的第二個行。 這就是為什麼如果我們創建了一個功能 存在我們的主要之外, 我們只能呼籲 它並重複使用它時, 我們需要這樣它是一個更容易 我們作為程序來寫。 所以這樣,我們實際上寫 一個功能很相似,對不對? 這是一種第一 比如在我們將 看到一個風格的函數取 不同於我們INT主要無效。 在這種情況下,如果我想 寫一個名為Q函數,對不對? 而這裡的int值 在所有的告訴我, 我該怎麼想這個 函數返回我嗎? 如果我想立方體的整數, 我將要輸入。 這些是參數。 我要輸入一個int類型的值。 而我要回報 整型另一種類型的值。 而在這裡,你 可以看到,所有的我做 在多維數據不管我輸入 作為輸出,並返回它。 因此,所有這個函數是 需要某種形式的整數。 它相乘本身兩次 這樣它立方體中的效果。 然後返回 無論是輸出。 因此,在這種情況下,它的兩行 我們必須編寫額外的代碼。 但是,如果我們想叫 在此多次, 這是一個更容易輸入,一個 線對這裡的立方體比 要經過多次。 這樣的方式,基本上任何 格式化為任何類型的功能 會存在就是喜歡這裡。 因此,我們有函數名。 在這種情況下,它被稱為立方體。 我們將其命名為立方體,因為 很容易記住。 你可以將其命名為正方形, 它其實是可以立方。 無所謂。 只要你是一個名字 分配你的函數。 在這裡這項權利,INT,是 類型你需要的參數。 那麼,這功能 需要以操作? 那麼,它需要一個輸入。 我把它命名為輸入。 任何你想要的,你可以將其命名為。 但我需要的東西int類型。 這將實際執行 無論是在這裡裡面, 功能的主體。 然後返回類型 就在這裡,這int-- 所有它告訴我的是 這個功能是 要回到我的int。 因此,要採取一個int,和 它會還給你一個int。 每個人都明白是怎麼 這種格式的作品? 酷。 確定。 所以不要擔心,如果這似乎 現在有點抽象的權利。 這是我們要談談。 我們將深入更深 後來在使用過程中。 的方式,任何類型的更高級別的 這些東西的工作抽象 的是,在存儲器中,在 您的電腦,一切 存儲在該類型 棧的,我會說。 所以在那裡在頂部。 我不知道,如果你 你們可以看到,很好。 我會嘗試進行放大。 此處在頂部,我們 有物理文 什麼樣的電腦是interpreting-- 所有的零和那些 我們的電腦中存在。 然後,我們已經初始化 數據和未初始化的數據, 我們所說的全局變量。 所以存在變數 所有程序 並在您的整個, 從本質上講,代碼。 不,如果你們有隱憂 那種對這個不清楚。 它並不真正的問題現在。 然後我們有什麼 所謂在棧堆。 想想一摞字面上 就像一摞東西, 一疊不同 事情被推向頂部 彼此存儲的各種的 你的代碼中的變量和語法。 然後在此間舉行的最底層, 我們的環境變量 你是在執行什麼 只是你的小行代碼。 而我們只是要放大 在實際棧的一部分。 所以在這裡,如果我們放大 在棧只是這個領域, 這是什麼樣子。 這實際上是非常重要的 當你們談論的功能, 因為公告稱, 計算機中的內存 正存儲變量 和功能 及兩者的參數的 功能與您的主要變數 在不同的地方。 所以,現在,主要是 實際功能 您正在執行的代碼。 你在這兒儲存它的參數 這裡存放局部變量。 局部變量只是意味著任何變量 存在僅在該功能。 而在它的上面,你有這樣的 單獨的函數調用的立方體。 你有這就是參數 以及那些當地人。 其原因可以 在這裡看到的是什麼 發生在多維數據集需要在 從你的主函數值 是,實際上它複製了過來。 所以,如果我想立方 2,並返回8,即2 實際輸入 作為一個參數,它是 複製,讓你有它存在的 在內存中的兩個不同的地方。 而且你必須要非常小心 在回憶這其中的一個 你實際操作。 和發生了什麼事的例子 這將是非常,非常糟糕 存在這裡。 所以在這裡,我有,從理論上講, 一個程序就在這裡,一個主要功能 那我聲明了一個int x等於1。 我聲明了另外一個INT y等於2。 然後我運行它 通過這個功能 稱為交換,在那裡我認為 它交換的兩個值。 然後我要去 把它們打印出來,對不對? 這就是我想這個程序做。 因此,讓我們下來看一看。 所以,如果我真的寫不同 功能,你可以看到, 我們在這裡有我們的主要功能。 然後,我們有我們的 第二個功能在這裡。 空掉。 虛空只是意味著它的 不會返回任何東西。 該函數名 稱為交換,它的 要進兩個變量,INT A和 詮釋B,從你的[聽不清]功能。 所以基本上在這裡,我們 通過x和y成此功能。 如果我們要 創建this--所以我們要 創建一個臨時的價值,對不對? 我們將其賦值給一個。 然後將要現在等於灣 而B是要回來 那裡的溫度值, 其是,因為當 要交換的東西, 你不能只是喜歡交換他們。 你必須保持一個出來 在這裡,以便它記住 那是什麼,因為一旦 你換一個,你忘了 這是什麼原值是吧? 因此從理論上講,這個方案 應該工作,對不對? 如果我想交換 二,他們應該掉。 因此,讓我們運行它,看看它是否工作。 所以當你們可以看到,X 曾經是1和y曾經2。 如果我把它打印出來, x是仍然1和y為2。 嗯,這個方案似乎並不被 工作,我希望它的工作方式。 有沒有人想採取射擊在 猜測為什麼這是怎麼回事? 它做的方式 不同的事情 存儲在存儲器不同的地方。 確定。 所以你們不必擔心 太多關於這個現在。 但是要知道,立方體的地方 變量是a和b, 因為在這裡我們的功能, 我們已經聲明a和b 如存在的變量 在立方體,該功能。 但正如你所看到的,參數 它採取的是被存放在這裡。 但是,我們並沒有真正 返回任何東西。 我們並沒有實際上改變x和y。 我們只是改變a和b。 我們抄襲了x和y成 所謂a和b。 但是,我們從來沒有真正 操縱x和y自己。 是你們看到的 怎麼說是怎麼回事? 是,我們已經簡單地複製它 結束了,但我們還沒有真正保持 軌道,其中他們是在存儲器。 所以,現在的電腦 期待哦,我已經 通過運行這個東西 這個可愛的功能。 但x和y是仍然x和y。 什麼也沒有發生 它們,因為這樣的事實 這些參數 和局部變量 被存儲在一個不同的 放置在存儲器中。 而這是一個較高級別的 概念,我們將 在啟動過程中看到以後。 但是,僅僅知道這是 可能發生的一個問題 而且我們會想出辦法如何 在使用過程中處理這個以後。 確定。 好的。 所以,最後的概念,我們是 真的要覆蓋 那將是有益的 本週處理器集 被所謂的 命令行參數。 所以搶在他的演講經歷 那種簡單地對如何將這些工作。 從本質上講知道 你寫的時候 就像一個主要功能,當我們 前過去寫功能, 我們有INT主要無效。 其原因,我們有空隙存在 是因為我們的方案沒有 需要輸入值運行,對吧? 當我跑馬里奧,我也沒必要 實際上只需鍵入一些 當我跑馬里奧。 我可以提示用戶以後。 但是,這不會總是這種情況。 例如,在本 本週的習題集, 你要問的是,在 除了運行您的程序, 你會想要輸入 直某些事情,你 運行程序。 所以我們這樣做的方式被稱為 一個命令行參數,這 就像是一個說法 你可以直接輸入 因為你想運行您的程序。 因此,符號對於這一點, 這是相當複雜的前瞻性, 但它真的不是那麼 難。因此,INT main-- 這只是你的主要功能。 進入ARGC逗號字符串argv的括號內。 因此,所有這是說的是,這 INT argc--所有這一切告訴你 的是,這些是數 參數的計算機應該期望。 所以一件事是真的 重要的是要保持跟踪 是你的程序的物理名稱 計為這些參數之一。 所以,如果我想有我的計劃 運行加上一個額外的命令行 的說法,我其實 將有兩種。 ARGC實際發生是兩個。 然後串的argv bracket--一切是幹什麼的, 它給了我一個 字符串數組是 將只顯示和存儲什麼 所有這些命令行參數。 因此,舉例來說,如果我想有這樣的 程序,./copy INFILE OUTFILE,對不對? 這只是一個典型的Linux命令。 究竟是ARGC? 多少個命令行參數 有沒有真正在這? 所有這一切確實是做的一個副本 一個文件的名稱的infile的 它拷貝到 另一個文件,對不對? 這是這一切都在做什麼。 正如你所看到的,我做的在一行 而不實際需要的程序。 什麼是我們在這種情況下ARGC? 多少個參數我們有嗎? 聽眾:三? ANDI彭:我們有三個,正好。 所以這是非常直觀的 只是覺得它只是 在INFILE和OUTFILE。 但是要知道,的物理名稱 計劃你運行計為一個。 所以在這種情況下,的argc實際上是三種。 怎麼樣,是什麼argv的0? 請記住,所有的 命令行參數 存儲在一個字符串數組。 所以,如果我嘗試訪問它,有什麼 將argv的支架0給我? 聽眾:[聽不清]。 ANDI鵬:沒錯。 它會給我點 斜線副本,因為這是 第0元件,所述 我的數組的第一個元素。 那麼argv的1? 聽眾:INFILE。 ANDI彭:INFILE,沒錯。 怎麼樣的argv 2? 聽眾:OUTFILE。 ANDI彭:OUTFILE。 現在,這是一個有點棘手。 你們有什麼想的argv 3將是給我 如果我試圖打印出來? 聽眾:[聽不清]? ANDI彭:你有一隻手嗎? 是啊。 聽眾:一個選擇。 ANDI鵬:沒錯。 所以請記住講座中,我們 有在比賽的東西到底 所謂空終結者? 我們將進入這也 進一步在上課。 但是要知道,在符號, 順便你的電腦 知道它的結束 陣列的是,它 把一種叫做空 終止或破折號為零。 所以,如果您嘗試訪問ARGV 3, 你會打這個破折號0。 這更是一個很難回答的問題。 那麼argv的4? 因此,這是過去的空終結, 過去我們的數組的邊界。 你認為是要 發生在我們試圖做到這一點? 聽眾:[聽不清]? ANDI彭:對不起? 都說有點響? 聽眾:[聽不清]。 ANDI彭:是的。 也就是說的名稱 區域中,您將最有可能得到的。 但是要知道,argv的4-- 它允許您訪問 在您的計算機的地方 記憶,你真的 不應該是感動,因為 現在你知道什麼是argv的是。 你知道它的大小為3的數組 有網點拷貝,INFILE和OUTFILE。 如果你嘗試至今點到為止 你是過去的空結束, 你的計算機有可能 argv中4存放的東西。 而你真的不應該 允許訪問到argv的4, 因為你有一個文件 櫥櫃,你只能是 允許訪問這三個貨架。 但是,如果你試圖達到的方式超越 在那裡你被允許的架子, 你要開始搞亂 在計算機的內存中其他的東西。 這將是非常糟糕。 所以只要知道這一點。 要非常小心,你 不只是隨機啟動 在數組訪問元素 是不是你想要的創建。 是的。 確定。 所以,我們要做的另一 這裡終端的例子。 確定。 所以羅布迅速講座 前些天去 通過這個例子,在那裡,他 有INT主要INT ARGC字符串的argv 括號,這是告訴我,我 將有命令行參數。 他,如果ARGC等於 等於2--記得, 等於等於裝置的比較。 如果它等於2,那麼我 要打印你好, 無論第一 數組的元素是。 否則打印的hello world。 這是什麼打算 發生本質? 可有人只是解釋 英語這是什麼程序在做什麼? 是啊。 聽眾:如果有人鍵入命令 並表示,他們的名字和姓氏, 它不只是打印 第一個說,你好, 無論你的第一個名字是。 ANDI彭:好吧,讓我們來運行它。 因此,舉例來說,如果我做 這個文件讓你好你好用於: 用於:你有什麼要我輸入? 聽眾:姓氏和名字。 ANDI彭:姓氏和名字? 空間? 聽眾:是的。 ANDI彭:誰能告訴 我現在,什麼是ARGC? 只是在那裡? 哎呀,對不起。 讓我回去。 多少個命令行參數 are--你們真的不能看。 但我會嘗試進行放大。 我想。 是啊,有三個,對嗎? 這點斜線你好, 這是安迪,這是鵬。 那麼,你們認為這 程序將被打印出來? 呵呵。 哦,對不起。 錯誤的名稱。 它打印出來,你好世界。 有誰不想解釋 為什麼會是怎麼回事? 是嗎? 聽眾:[聽不清]。 ANDI鵬:沒錯。 所以在這裡,是有條件的 是,如果的argc等於等於2。 因此只有在的情況下有 兩個命令行參數。 然後我會打印, 你好,不管它是什麼。 但其他人,我要 僅打印,你好世界。 因此,沒有人想要 給我一個例子 如何我將能夠實際 得到它打印的argv 1的價值? 什麼我都必須輸入嗎? 只有一件事,對不對? 因為點招呼已經 數作為第一個參數。 我只有一個。 因此,點你好,如果我只是做安迪。 你好,安迪。 大家是否明白 為什麼會是怎麼回事? 是啊。 聽眾:所以之間的空間 命令line--是[聽不清]? ANDI彭:沒有。 因此,在一個命令行的空間 的說法,X,告訴你的電腦 這是一個新的字符串的開始。 因此字符串的argv這裡 - 它的商店 所有的命令行參數 在字符串。 因此在命令行中的空間 argument--所有這些都告訴你, 這是在一個字符串的末尾 它的時間移動到另一個。 是啊。 這是非常重要的 您PSET,因為你 將要測試這些。 因此,沒有人有 在這個問題嗎? OK,涼。 是嗎? 聽眾:所以你會原因 把整型參數計算的,而不是 的[聽不清]會當你想 鍵入其他信息 [聽不清]? ANDI彭:是的,沒錯。 有些程序會要求你 輸入命令行參數 它傳遞中並使用該。 是啊。 聽眾:那麼,如果[聽不清]? ANDI彭:嗯,我有什麼 然後改變我的計劃? 聽眾:剛才3。 ANDI彭:這是為什麼呢 發生的事情,你覺得呢? 聽眾:因為[聽不清]。 聽眾:你得 將其更改為2 [聽不清]。 聽眾:1和2。 ANDI彭:1和2,完全吻合。 因此,在這種情況下,你可能 想要有兩個printf的statements-- 一個印刷的argv 1 在一個印刷的argv 2。 在這裡。 其實我可以做真正的快。 你去那裡。 呵呵。 不太你想要的。 但是,如果你們更動 格式化,它就會出來。 是啊。 酷。 我知道我們有點短準時。 但我只是要迅速花 幾分鐘經歷helpful-- 聽眾:你有兩分鐘。 ANDI彭:我有兩分鐘? 謝謝。 一些快速PSET技巧。 因此,對於這個pset的,我強烈建議, 就像我說的,每個人都讀了規範。 你會被寫入三種programs-- 1 所謂initials.c,一個叫caesar.c, 一個叫vigenere.c。 一些重要的提示, 你們真的想 保持mind--所以 有這個功能 所謂atoi--我想說,一個三河。 目前還不清楚是否這就是 其實你怎麼說。 但是,所有它做,它的輸入。 它轉換成一個字符串為int。 因此,一個代表ASCII到我的整數。 它只是將ASCII 值整數值。 所以請記住ARGV,數組,其存儲 所有的命令行arguments-- 這其中所有的存儲為字符串。 所以,如果你想成為能夠 具有其中的一個成為一個整數, 你將有 在這裡使用這個值。 模,就像我們蓋 今天早些時候類, 讓你擁有 其餘的不管你有。 因此,如果我們真的,真的 大量的凱撒, 如果我們有結束 中的Vigenere的字符串? 你如何將能夠 吃出環繞? 如果我打Z和我想 它返回一個, 我應該如何獲得 那環繞? 可能需要使用 模在那裡的地方。 其次,四處瀏覽 您的圖書館。文件ctype.h。 這是一個新的圖書館,我們有。 你會發現很多非常,非常 有用functions-- isupper,islower判斷, TOUPPER,tolower的,因而isalpha,等等。 所有的功能,這將是非常有用的 當你試圖弄清楚, 這種性格小寫字母? 如何轉換這種 字符串大寫? 所有這些都將是非常, 非常有幫助您PSET。 確定。 今晚是8:00上班時間到 明天在TEAL教室11:00 以及週三和週四晚上。 辦公時間是公共資源。 強烈建議你們 所有馬上開始, 因為你不希望是, 孩子誰週四晚有問題 提交您的PSET並 就像,我不知道該怎麼辦。 我開始,我完了,我提交。 試著給自己一些空間, 因為在代碼中的問題總是會發生。 你要確保 你給自己 了大量的時間,以便能夠 完成pset中。 酷。 我會在這裡流連。 聽眾:這是網上了嗎? ANDI彭:我不知道這是否是 在線已經,但它會。 我會在這裡流連,如果任何人 有任何問題了。 謝謝你的光臨。