[Powered by Google Translate] [♪嗡嗡聲♪]
所以把你介紹給我有什麼在屏幕上;
它是一個在今年夏天，我們開發的工具;
它被稱為CS50空間，
這是我們的合作編碼應用
我們要使用的部分。
這實在是太酷了。
您有任何CS50運行嗎？
讓我拉起來，在另一個選項卡。
Run.cs50.net
所以
如果你去run.cs50.net，
你可以看到這是一個在您的瀏覽器的方式
其實代碼 - 編寫C代碼，
然後運行它，
所以編譯它，運行它，然後返回到你的輸出，
所以這是一個冷靜的方式進行實驗
大衛在課堂上的一些代碼
和我們給你的問題集
沒有真正火起來的家電。
>> 因此，空間做什麼，不同的
如果我切換到該選項卡，
空間是CS50運行，就像你看到這裡，
但是，如果我們滾動，並期待在另一邊的窗口，
你看到的我是唯一的人在這個空間，
但我要問你們加入這個跟我的空間
，我們將所有的代碼在同一個小窗口，
相互共享代碼，
談論我們的代碼之間的差異。
所以這是一件很酷的事情的一種 -
所以要加入，如果您訪問此鏈接在頂部
我已經強調了，
你可以直接輸入在apps.cs50.net/spaces/vqcspSnO。
>> 好了，所以開始時，
我去給你一點點的參觀。
我們會做一些愚蠢的小編碼與它在第一，
只是讓大家有點的感覺是什麼樣子的，
但我做了什麼 -
我在這裡做什麼 -
我要的代碼，我已經寫在這裡，
正如你現在看到的是空的;
它不會做任何事情。
這只是鍋爐板代碼，我們將調用它。
隨著一點點地做評論。
我要通過點擊此“保存”按鈕保存。
是什麼做的是什麼
強調它在這裡簡單 - 修訂版本保存的綠框，
現在，如果你搜索我的空間，
你點擊我的名字，
你可以看到，我已經得到了本次修訂在這裡，
如果你點擊該版本，
它會加載到你的空間的代碼了。
>> 所以每個人都加載了代碼到他們的空間嗎？
好吧，如果你還沒有，去進取，做到這一點，
那麼我希望你們在這個小的辦節
是使用printf自己寫一點點，
例如，我會寫
printf的（“我的名字是Nate”）;
然後我會寫
“我2009年畢業的
從斯坦福大學“
，我很想聽到
你是哪一年在學校裡，
無論你是在大學或商學院
或其他的哈佛學派，
你正在學習什麼，如果它的未知;
如果它不知道，這是很酷的。
我沒有決定，直到我在我大二的時候已經很晚了。
然後我也很想知道
什麼瘋狂的，你要告訴我，或
類或別的什麼。
當你寫完你的小printf的，
如果你能保存修改，或者更確切地說，
首先要確定，你可以運行它
它打印出的正是你想要它打印出來，
然後如果你繼續前進，並保存該修訂
使用修改保存“按鈕，這小傢伙在這裡，
，我們會有點兒經過，這樣做一簡單介紹。
所以，你應該只需要點擊“播放”按鈕，
這是在左上角，
所以這左上角的播放按鈕將
你的代碼發送到我們的服務器，它被編譯，然後運行。
那麼，什麼是有點瘋狂
這段代碼實際上是在計算機上運行;
它實際上是在互聯網上發送。
>> 怎麼樣了，夏洛特？
>>我 - 好了。我 - 我想我
有困難的保存
在服務器上，這樣它可以 - 我可以運行的程序。
然後當我嘗試運行它，它說，有一個錯誤。
聲明為病毒，這是不是在那裡了。
哦，讓我們來看看，你可以點擊保存再？
我看到它在屏幕上。
“對了，好了，所以這是我所擁有的。
我不知道為什麼它不會讓我運行它。
哦，好吧，對不起。
你能解釋為什麼 - 什麼是錯的 - 什麼是不工作？
“是啊，因為我沒有看到，有一個最後一行那裡的仍然是一個變量
我沒有宣布，我不打算為它在那裡。
是的，完美的！
>>現在，如果我保存它，我認為它應該工作。
現在，你已經救了它，它的工作原理;真棒。
>> 所以，是的，我們通過 -
所以發生了什麼事情，
我只是重複的攝像頭。
發生了什麼事，這個變量s
留在後 - 我想你刪除了一些其他的東西，
你宣布，
，所以這個扔東西了，並沒有讓你運行它。
因此，這正是我們想要做的第
有人嘗試寫不同的代碼塊，
編譯它，看看你的作品，看看有什麼不
然後有點談論這些事情，因為這是跳閘點
我仍然會遇到，
我還是 - 我做很多愚蠢的東西所有的時間，
我不知道為什麼它不工作，
讓我們拉起夏洛特的修訂3，
我們會運行它。
>> 所以，當我運行了，現在我已經拿到了她在這裡的代碼，
我可以放大，打到“運行”按鈕，
上傳它，建立它，運行它，
說，它成功地跑了，如果我向下滾動，
夏洛特是一個大三學生亞當斯房子，
心理學，經濟二次真棒。
很高興見到你！
真棒。
好，繼續，讓我們去丹尼爾，
修訂3，
編譯，運行;
你為什麼不告訴我們一些關於自己，丹尼爾？
給我打電話丹。
我要你們對面的商學院，
我是在海軍陸戰隊員之前，在這裡，
這是我的全部新，所以啊。
不要難過，我30歲，我不知道任何這方面的東西。
真棒，謝謝你，丹！
好了，我們還有丹尼爾。
您的丹尼爾 - 你介紹一下自己，丹尼爾？
>> >>當然，我是丹尼爾。
我是一個大二的學生現在在奧美。
我專注於政府，
但我想藉此CS50，因為我已​​經聽到了巨大的類評論
和我從來沒有嘗試過CS。
向下滾動，並出示此 - 涼。
移動，賈里德。
怎麼了？
>>好，你怎麼樣？
正如你可以看到，我是一個初中理念集中在艾略特，
最初由加利福尼亞州南部，
和我採取CS50很感興趣，因為我喜歡它的邏輯，
它在電腦上做的事情，所以看起來真的很酷。
真棒，你是在南加州嗎？
“關於一個小時[聽不清]的一個小城市[聽不清]。
哦，是的，我爸從雷德蘭茲。
很酷的東西。
>> 好吧，吉米怎麼了，吉米？
>>好，你怎麼樣？
算不錯了！
告訴我們你的。
我是一名大一新生，我不知道我主修
但我有點傾向於經濟學。
像丹尼爾在我面前，我從來沒有做過任何CS，但它聽起來還挺酷的。
我最初來自芝加哥。
真棒。因此，檢查了他的打印輸出。
我想問問，這樣做打印出你所期望的嗎？
>>沒有，我忘了打印新的生產線。
我竟然忘了，當我在寫我的事
為第一次，太。
這是一種痛苦，要記得把那些手動。
它會是不錯的，如果它只是知道這是你想要的。
>> 好吧，凱利。
哇，我們有2個的凱麗; 2丹尼爾斯，2凱麗。
因此，凱利 - 你去凱利任嗎？
好了，真棒。
凱利，我的意思。
“所以呀，所以我凱利。
我大二學生Pfoho。
今天，我仍然有7週宣布我的注意力，我收到一封郵件，
所以我試著不去想它，
和我喜歡烘焙，運行和Craisins。
我沒有經驗，大部分的CS;
我教自己建立的網站，我很年輕的時候，
但我想我可能教自己錯了很多次。
希望我會學多一點點
- 是的。
>> 真棒，好，謝謝你。
讓我們去其它Kelly;
我沒有什麼 - 你在這裡說些什麼？
>> [聽不清]
在那裡！
太好了！
>>所有權利，所以我凱利。
我是第一年的研究生。
我主修心，腦和教育。
在2008年，我畢業於富蘭克林與馬歇爾學院
在心理學和社會​​學專業
未成年人在法國。
我CS50
因為我有興趣在神經科學中獲得博士學位
我覺得這會幫助我了解正在使用的技術。
真棒。
移動，米凱拉。
那是正確的發音嗎？
好了，真棒。
>> >>，我Mikhaila。
我是一個大二的學生在柯克蘭樓，
我集中在機械工程。
我真的很喜歡騎自行車，自行車在今年夏天建成。
我的CS，其實，
作為的濃度要求，
但你知道，我認為這是尚酷樣的工程類。
真棒 - 你建立了一個自行車今年夏天？
>>呀。
哇，像框架和所有呢？
>> UH-hunh（肯定的）。
哇，這真的很酷。
>> [卡通攝像頭聊天]
[笑聲]
是啊，這是這麼久。
你永遠不知道，對不對？
好了，涼;以及感謝，Mikhaila。
>> 好了，大小姐。
>>我的名字叫大小姐，我是一個大一學生，
因此，這意味著我什麼都不知道！
我想集中在天體物理學。
在CS50，
我覺得肯定會幫助。
我是一個奇怪的事實，我是國家認證的消防隊員。
哇！
這是怎麼回事呢？
>>我參加了學院
經歷了地獄了很多週
並得到我的認證。
哇，恭喜！
這是不小的壯舉，是肯定的。
好了，現在我們要做我。
我行中的下一個。
我 - 運行它。
>> 所以我的名字是Nate。
我是2009級在斯坦福大學。
我是一個符號系統的主要
這是心，腦，行為集中在這裡，
但它是一種混合
計算機科學，語言學，心理學和哲學。
樣的 - 是的，有很多奇怪的東西，但它是偉大的，
，然後我做我的主人在計算機科學，以及。
所以，我到哈佛大學今年。
我真的很想進入教學。
我花了近4年在斯坦福大學的TA-計算機科學類
大衛讓我來吧，
我要幫助CS50，
所以我做到這一點的時候，我不是在讀研究生。
這很有趣。
希望它會繼續是有趣的，我敢肯定會的。
>> 所有權利，山姆。
>>我的名字是山姆，我是在大學二年級，在法律上明確。
我主要將是科學史上的可能，VES二次，
我最喜歡的顏色是黃色的。
沒有必要通過判斷或任何東西，但它是一個很好的顏色！
斯特拉。
>>你好，我是斯特拉，我是一個大一的灰色。
我有沒有什麼線索，我尚未集中，
所以CS50是一種隨機，
這是有趣的。
有趣的事實，吉米是哈佛的第一個朋友，
因為我們倆都從芝加哥。
冷卻，格雷斯 - 這應該是非常好的，對不對？
>>我想[聽不清]。
哦，是的。
[卡通/關閉攝像頭聊天]
好了，我現在還在學習，還在學習。
>> 因此，我們有別的東西，這是一種有趣的。
是啊，我只是想知道，你有一個想法，是怎麼回事？
你知道該如何解釋呢？
>>我本來是要每一行後面的分號。
這是一種痛苦。
有時，這些的分號可以是一個真正的痛苦追查。
所以，事實證明，
我們使用的是今年的特別節目
編譯我們的C代碼被稱為鐺，
的原因，我們已經開始使用鐺今年 -
因為我們沒有使用該程序在過去的;
我們已經使用了另外一個叫GCC，實在是很受歡迎 -
鐺實際上是為您提供了有意義的錯誤消息。
這一個說，“預計”，“表達”之後，
它甚至會告訴你之後，你需要一個分號的表達。
那麼，你修復它？
>>是的，沒錯。
真棒，讓我知道，我們將它拉起來，我們將運行它。
但是，是的，把這些分號，是一種痛苦。
我固定的，所以我認為它應該工作。
真棒 - 修訂3。
這看起來像它。
好了，所以現在如果我們運行它，
就這樣吧。
很酷的東西。
>> 好的。
因此，感謝你這樣做。
這極大地滿足了你們。
什麼現在我們要做的就是在接下來的點點
有點潛入的部分問題
從本週的問題來自
我們會做到這一點的大部分路段
的其餘部分的術語，
然後，我們將保存最後15，20分鐘左右
談論的問題本身
，然後就您有任何其他問題，在一般的類。
這就是說，我們真的很想做
有大家參與
使用空間的東西，
在代碼中扔，扔了建議，
和談論這樣的事情休息時，
或不工作，只是因為這些事情，
我知道我遇到了
當我開始編碼，
真的有點令人沮喪次
因為如果它像凌晨2點之前是由於你的習題集，
- 只為披露，
我並沒有開始編程，直到我是一個大二學生。
這是種奇怪的，未知的事情
我聽到的是有點涼
我還聽說它可能是一個真正的痛苦的對接
如果你錯過了一個分號，使你的程序不能正常工作，這是唯一的錯誤
讓你去睡覺，
所以肯定，
如果你有這樣的問題，
如果你有這樣的問題，讓我知道，
因為我要讓你們這是一個很好的經驗。
>> 因此，有你們所有下載的問題還設置？
均田知道它在哪裡？好吧。
所以，我們去cs50.net，因為我沒有在此帳戶，
拉起來的問題集，
拉起來的問題集2，今天我們來看看標準版。
我們會拉規範。
向下滾動。
因此，我們要的問題，在本節開始尋找。
你們看著這些短褲嗎？
好吧。
所以有循環短褲，
這是由湯米，頭部教學研究員之一。
還有一個關於範圍，
我相信，通過另一個教學名叫大衛的傢伙，
愷撒密碼，然後由大衛也做了。
他們很酷。
你們看他們的短褲這麼遠嗎？
還好嗎他們了？
有幫助嗎？好了，好知道。
如果不是這樣，你可以這麼說。
但在此之前，
有你們看著這些問題，
在所有？
>> 讓我們來談談這有點。
因此，我們已經介紹了在過去的幾個星期
在講座
若干不同的循環。
有for循環，
while循環，do-whil​​e循環，
在講座中，我們已經談論了很多有關
如何將這些循環
相當類似，在很多方面，
和一個while循環，你可以做同樣的事情
你可以用一個for循環。
你只需要種使用正確的組合變量等。
等真的
所有的循環的真正區別是，
有時，他們更多有用的
使用它們比在另一時間在同一時間。
>> 因此，例如，
從do-whil​​e循環while循環不同的。
大家都覺得像他們有一個很好的處理時
一個do-whil​​e循環更
有用的或有什麼區別嗎？
>>我認為所不同的是一個do-whil​​e循環
運行 - 我不知道是怎樣的術語，
但內環路的一系列的功能。
他們自動 - 它至少運行
前檢查的情況下，或在while循環將只運行它時，
連續運行 - 是否得到滿足的條件。
是的，這有意義嗎？
>> 讓我們來看看一點點的代碼。
因此，只要重複的問題，
或答案，而;
得到的答复是，
一個while循環檢查，看看是否條件
您指定的會面
前運行的主體的第一次循環，
而do-whil​​e循環會自動執行循環體，
就是我們所說的 - 這是奇怪的術語，
但如果我說什麼沒有意義的，讓我知道 -
循環體是，你把花括號之間的東西。
在do-whil​​e循環，
該機構獲得至少運行一次，
檢查的條件，然後被運行之前，每個連續的時間。
>> 因此，實際上，山姆，
你不介意編寫一個簡單的while循環
在空間？
>>你怎麼有點像
一個新的嗎？
我只是刪除了，無論你在那裡。
是啊，就清除它。
>>好吧，我相信我有這個 -
哪一個你想要的，而你要嗎？
是啊，就做了而真正的，打印的東西。
讓我們來看看。
亞歷山大，我意識到我們從來沒有向你介紹。
“哦，那很好。
你 - 你可以編寫一個do-whil​​e循環的我們嗎？
是的，我會盡力。
好了，我們就拉在屏幕上，
種讓你有一個把手上的差異是什麼。
>> 因此，這裡的山姆做什麼。
他有一個名為i的整數
他的初始化為17。
然後，他說，雖然（INT I = 17）
printf的（“我的名字是山姆”）;
所以我們運行這個代碼時會發生什麼？
有一個錯誤;錯誤說什麼？
讓我們把它和談論它。
發生錯誤，它說。
讓我們向下滾動。
因此，它給了我們這個錯誤，它說，
“嘿，我預計的表達。”
這有點難以理解。
是啊，所以準確 - 再次，
會有另一個小錯誤，我們將趕在第二。
但是，這是另一個那些奇怪的術語的東西，
所以這INT I = 17
是不是一個表達式。
它看起來像它在做什麼，是它的
聲明一個整數叫我
將其設置為等於17
或者說，叫我把17這個int。
這沒有任何意義
在這個while循環的上下文中。
這有一定道理，因為我們可以看到，
for循環的背景下，由於環聲明開始
為int i等於什麼
和。
>> 那你有沒有 -
修復的東西，所有的權利。
在這裡，它會真棒。
所以，現在的情況看起來有些不同。
一對夫婦的事情發生了變化。
你能告訴我們什麼事情發生了變化？
>>我拿出的int，所以沒有聲明[聽不清]，而不是分配。
一個等號，我把2個等號，這意味著一個等號。
真棒。
是啊，所以什麼山姆沒有他拿出的int
這是在這裡，
所以，如果我只是在看這 - 這是早，故稱INT，
宣布 - 讓我們拿出的類型。
int，char和字符串，短，
那些被稱為類型。
所以，你拿出的類型
然後以前，
他只是單一等號
他說的是問題的有關
當你有1個等號，
這是一個賦值運算符。
這不是測試，是否事情都是平等的。
這實際上是設置的東西的東西。
我們將在17號到變量i。
因此，做這種比較，
你必須使用雙等號，
這是一種一個奇怪的事情
但它是一個相當常見的錯誤。
因此，另一件事情，我會指出，如果你不介意的話，
的是，在
在國際主要功能，
你看，我們的身體功能
從左側偏移
4個空格或製表符。
我們這樣做的原因
僅僅是為了提高可讀性。
正如你可以看到這裡在山姆的while循環中，
他並沒有在所有的縮進，
並且不影響的功能的代碼。
它將運行完全一樣的。
>> 因此，舉例來說，如果我們拿出頂端
，然後按播放按鈕，它會建立，
它會運行它，
什麼事情發生？
為什麼仍然說嗎？
>>，因為它會不斷地重複您好。
沒錯，為什麼它不停地重複您好嗎？
“由於整數永遠不會改變，所以它總是17。
是的，沒錯，所以
讓我們來看看， - 再次提醒我你的名字嗎？
吉米。吉米說，
您好一遍又一遍不斷重複的原因
是因為這種情況下總是如此。
我們永遠不會改變i的值。
我們永遠不會改變該變量中存儲的內容。
因此，在這一點上，我們得到了這個錯誤，
你的程序產生過多的輸出，
如果我們向下滾動，看看這是怎麼回事種，
你可以看到，它是嗨，嗨，嗨，嗨，嗨，嗨，嗨，一路過關斬將。
真棒。
>> 因此，種回原點
有壓痕這裡
在身體的while循環沒有造成任何影響。
該程序仍運行得很好。
通常，對於良好的作風 -
這是什麼，我們期待在您的問題集 -
我們希望您能縮進4個空格，你可以做
只需按下Tab鍵
或通過手動把自己的4個空格。
酷，好了，讓我們回去看看
亞歷山大的DO-WHILE。
>>只是有點有點麻煩了。
好了，讓我們的工作。
這很酷？
>>呀。
>> 好了，所以在這裡我們去。
這是代碼，亞歷山大寫道。
你去亞歷克斯 - 好吧。
因此，這裡的亞歷克斯寫的代碼。
所以，我們已經得到了我們的聲明，主要就在這裡，
然後，我們得到了這個整數變量名為i
被宣布就在這裡。
我們已經有了一個do語句
然後身體再次與這些大括號，
因此，這是人體的DO-WHILE -
讓我在此放大，因此它更具可讀性 -
在身，我們正在試圖打印“，這是身體”，
我+ +，
因此，增加的內容，我這樣做
直到i得到為3，
那麼，我們的程序結束。
>> 所以當我們運行這個程序時，會發生什麼呢？
>>我預期的標識符。
好了，因此，建立，運行，就會發生錯誤。
發生了什麼？
我們向下滾動，
我們得到這個有些神秘的東西，
預計分號後的頂級聲明。
這是有點怪異。
沒有任何人有一個想法可能是什麼回事上？
有點不可思議，是的。
>> [聽不清]聲明以外的括號？
那麼，不適用，那麼當您使用括號嗎？
因此，他宣稱這其中括號外的傢伙？
噢，這些傢伙 - 在大括號？
>>呀。
是的，沒錯。
所以，事實證明，
你可以聲明一個變量實際上不是在這裡是這樣的。
你可能一直在試圖做的是 -
削減它的存在 -
你可以把它在大括號在這裡
或另一種選擇
是把它完全脫離。
所以，這些 - 這取決於你居然把聲明
該整數變量，
你可以得到2個不同類型的變量;
時，它的主要外，
這就是我們所說的一個全局變量。
它的範圍以外的任何的功能 -
這是不是在函數 -
而如果我們把它裡面的主，
喜歡這裡，然後它被稱為局部變量，
因為它是本地的主要範圍。
我們將討論多一點點的區別是什麼
之間的2種類型，以及為什麼要使用不同類型的變量，
但現在，
你可以保持所有的局部變量，
因為我們沒有任何需要全局變量。
>> 好了，所以這是一件事。
讓我們嘗試再次運行這個，看看會發生什麼。
運行“，另一個錯誤。
放大一點，我們都能得到什麼呢？
後做/而我們得到這一預期的括號。
任何想法，這是怎麼回事呢？丹？
“一會兒，然後括號，然後 -
我不知道，如果你需要重新定義詮釋，
但的do while（i <3的）。
沒錯，是的。
因此，原來，丹完全正確。
我們沒有必要再在這裡把這個類型。
相反，我們可以殺死類型
做到這一點。
好的。
我會放大，嘗試更多的時間。
看它運行成功。
如果我們向下滾動，“這是身體的”打印出來的3倍。
這是非常甜蜜的。
幹得好，幹得好，伙計們。
幹得好。
怎麼這麼遠嗎？
體面的步伐？
好了，爽。
>> 因此，作為一種回到原來的問題，
我們 - 現在如果我們看到了差距，
您看，這do-whil​​e循環，
條件是最後的。
因此，隨著計算機讀取程序
種在這個順序執行C程序，
他們從字面上開始與第一線的主要
然後執行第6行，第7行，第8行，第9行中，
第10行，第11行，
這一切的東西在這裡的右上角
要執行一次
之前我們曾經測試情況，以
是否我 - 的內容我，而 -
小於數字3。
只有一次，我們到12號線，
的內容的i是小於3
我們跳轉到第7行
然後重複這個過程中，
然後我們測試的條​​件，再一遍又一遍。
>> 因此，我們可以對比
- 縮放退了出去，
向下滾動到山姆的版本，
我們要看看這個，稍有改變，因此，它不再是一個無限循環 -
如果我們放大，
我們可以看到，這個程序執行，
它會首先聲明INT I，
設置的i的內容是0，
然後它擊中的while循環的第一條件，
因此，在這種情況下，這個身體，這個printf（“HI”）和i + +
甚至不會執行
除非實際上i是小於或等於2。
因此，如果i是3，例如，
如果我們在這裡
等於4 - 或者我會做，因為我說3 -
然後運行它，
它會建立，它會運行完全正常，
，但它不會打印出任何東西，
因為它對於第一種情況，測試失敗。
因此，在課堂上，我們談到了為什麼這些do-whil​​e循環
是有用的，有時
為什麼我們會使用它，而不是一個while循環。
>> 在那裡 - 你們有任何的建議
為什麼do-whil​​e循環可能更為有用嗎？
>>嗯，我想do-whil​​e循環是，如果你希望用戶輸入，
因為這樣可以讓他們
把東西一次，如果它是正確的，
我們可以移動到程序的其餘部分，
但如果它是不正確的，那麼你繼續提示用戶
直到你把正確的輸入。
是的，沒錯 - 這正是，
因此do-whil​​e循環是有益的
提示用戶輸入，因為當
因為你需要得到用戶的輸入，才能真正檢查。
在pset中1，在pset中2，
您在何處提示用戶輸入了很多，
這是一個方便的事情
而不是只是一個簡單的while循環。
如果您使用一個while循環，你可以做同樣的事情 -
你可以做同樣的事情，一個while循環
當你做一個do-whil​​e循環。
你只需要種有這個重複的過程
你在哪裡得到的輸入，然後開始你的while循環。
而一個do-whil​​e循環，你只需要編寫一次
這是一個很大清潔。
>> 好的。
有什麼問題嗎？
有意義嗎？
>>返回0 - 那只是種一檔或者是 - ？
是啊，所以我們可以 -
好了，我們將討論這有點多了以後
但事實證明，
我們把這個返回0，
結束時的主所有的時間 -
你可以還挺只是把它作為我們做的事情
暫時。
現在我們開始談論與功能
種在上週結束，本週再次
是，函數
需要輸入括號內的這些東西;
這是2個輸入，參數或參數，
他們也被稱為我們的主要功能，
然後一個函數產生一個輸出
我們調用的返回值。
和返回值的情況下，主要是這樣的詮釋，
這個整數，
告訴函數的方式，“嘿，這是你的輸出
將是“是”回歸“這個詞，
該關鍵字，而
等主返回0
或主輸出0
在C程序中的標準
從主要手段，因為返回0
“嘿，一切執行我的程序就好了。”
如果我們把其他的東西比0，
如1中，例如，
這是用來告訴運行這個程序
出事了。
所以，當我們在這學期更複雜的東西，
如果你曾經可以說，
“哎呀，你知道的，出了這個程序錯誤”
而不是我的程序崩潰，我想通知
亞軍我的程序出現了錯誤，
您可以使用返回值，
我們稱呼它，這是不為0。
>> 所以我們將討論多一點點
一旦我們進入功能。
諸如此類的有道理嗎？
好吧。
函數是一種奇怪的 -
我認為有很多的數學背景的人，
談到更容易一點，
特別是如果你有一點點抽象的數學背景
和你談論功能
和所有類似的東西。
但我們會盡力並覆蓋
去很好的和緩慢的，因為他們來了。
同樣，這整個的int argc個，
的char * argv的[]
現在，你也可以把它看作鍋爐板。
我們已經開始覆蓋那些在演講一點點
當我們談論到程序中的命令行參數獲得通過，
但在你的習題集和你的程序，
這是完全正常，只是寫作廢，並保持它的簡單。
無效的意思是，
“嘿，主要是不會接受任何輸入;
這僅僅是一個程序，我們會剛剛運行。
我們不會給它任何額外信息。
我們每次啟動運行。“
所以現在，你可以做到這一點;
你甚至也可以省略return 0
您的程序結束時，他們會運行得很好，
但我建議只是保持，在。
在幾個星期中，我們將開始種
拉回來蓋一點點，更多的了解
所有這些不同的小運動部件。
>> 好了，現在讓我們來談談我們在這裡的第二個問題。
那麼什麼是“未聲明的標識符”，則通常表明
如果輸出鐺？
我想我們可能已經看到，今天已經。
有人可以給一個回顧一下這是什麼意思呢？
讓我們來看看，凱利 - 的凱麗之一。
>> -
是啊，這是什麼 -
>>我認為，當你一樣，不聲明變量，並嘗試使用它。
是的，沒錯，沒錯。
所以，如果你看到這樣的輸出
當您嘗試編譯程序，
就像凱利說，
這意味著你使用一個變量，你沒有申報，
所以，如果我回到我們的空間，
我做這樣的事情
輸出（
“您好％s”）
和嘗試，並填寫％s的
，我沒有任何地方聲明一個變量s
我嘗試運行它，
你會看到我所得到的，在這個底部就在這裡：
“使用未聲明的標識符”S“”;
這只是意味著你不聲明你的變量。
同樣的事情發生，如果
你有X，你嘗試和存儲7
和我沒有申報X.
我得到了同樣的錯誤：
“使用未聲明的標識符'X'”。
>> 好吧，
所以愷撒密碼，不是很安全，
我將讓你們看這短短的，一種明白為什麼，
後，希望做這個星期的問題集
在那裡你寫的愷撒密碼，你就會明白一點點
它的意思是什麼一個安全的和不安全 -
或不安全，我猜 - 不安全略有不同。
另一件事是，我們這些其他的問題在這裡
有關職能
和功能是什麼，
我們種，簡要談到，當我們談到的返回值;
為有人的演講，
你可以回顧一下誰是今天講課的嗎？
好的。
讓我們來看看，讓我們 - 有人可以告訴我們的功能是什麼？
凱利？
>> >>基本上是借鑒的東西，寫的庫
更複雜的那邊，然後你只寫一個簡短的形式，
那麼喜歡你是指該庫，使用
所有的長碼和[聽不清]。
是的，沒錯，然後你想添加的東西嗎？
>>是的，我把它作為類似數學公式的概念
你只寫一個公式，然後你可以插入變量
這就是一個功能是聽不見的。
>> 是啊，所以我們有一對夫婦的答案在這裡
都非常好，右。
有指使你的代碼庫中的某處被寫入
是更複雜的
然後你可以借鑒的代碼
真正地使用它，只是寫的簡短形式 -
或者說，它的名字 -
再有就是數學中的公式比較
或物理，所有這樣的東西;
你有一個公式
然後，您可以插入
該公式的變量
然後公式得到的結果，
讓你覺得它像一元二次方程。
試想一下，如果，而不是了解
二次方程求根公式是什麼在數學課上，
你只是有一個小的計算器程序，這樣做是為了你。
有沒有人在高中數學課中使用的計算器程序？
是啊，物理課嗎？
在那裡你可以說，“嘿，二次公式。
這些都是我要輸入的變量。
現在給我答案。“
這是一種功能是什麼。
這是一個方式，讓我們
種寫像一個小的小的子計劃
在我們的程序
並用它一遍又一遍
所以，我們不必複製和粘貼代碼，
我們可以給它不同的輸入和得到不同的輸出，
這是超級方便
當你試圖在不同的時間寫不同的程序。
>> 因此，舉例來說，一個功能，我們已經使用了一遍又一遍，一遍又一遍
整個過程是printf。
printf是本身就是一個函數
事實證明，它實際上是一個相當漫長而複雜的，
討厭的，寫的功能。
因此，簡單的，因為在我們看來，
要打印的東西輸出到屏幕上，
因為我們都只是做節今天開始，
事實證明，它實際上是，你知道，
一個很好的情侶幾百行代碼。
這不是我真的願意寫，可以肯定，
但我們每天都使用它，這是一種很酷的，
所以我們把它分享給對方，
不同的程序，
所以我們就到功能更潛水;
暫時，我們不 -
我們要編寫的唯一功能是主要的。
主本身也是一個函數，
你可以看到它有它的輸出，
它的輸入就像我們談到，
那麼它的名字，這是主要的。
主要是怎麼樣的 - 那裡是一個特殊的功能。
在你的C程序中，必須有一個主要功能，
所以現在，我們已經遺漏的寫作
的原型，或聲明的，主要的。
我們已經給了你，
我們剛剛有你填寫的空白種。
>> >>因此，對於第二個問題集，我們並不需要
把它寫在第二個功能嗎？
我不這麼認為。
我相信，這一切都在這裡。
是啊，所以愷撒密碼，
你沒有，它看起來並不像，
維瓊內爾，你不要么，
- 事實證明，你沒有真正寫
的功能，對不對？
你打電話總是把所有的代碼在main，
許多程序員做到這一點。
隨著我們繼續前進，
我們開始引入功能的一種方式
清理你的代碼，
，使其更加優雅，
如果你有當我們談到循環任務 - 有點像，
有時有一些事情你想做的事一而再，再而三，
你有一種天真的方式 -
也就是我們常稱的“稻草人”的解決方案，
只需複製並粘貼一遍又一遍 -
你可以做同樣的事情的功能，您只需複製並粘貼
一遍又一遍相同的代碼，
但漲大了你的代碼 -
最終使你的代碼很長的 -
它也變得有點混亂，
那麼就意味著，你是不是能夠喜歡 -
如果你想再次使用該代碼在另一個程序中，
你還堅持再次複製和粘貼，
這樣的事情之一，我們來談談
種你的程序的設計和風格，
因此，當它是有道理的種
包的東西，並把它作為一個單獨的函數，
我們鼓勵你這樣做，
那是，再次
有沒有硬性規定。
我們很少說，你必須寫一個函數調用此，
但更重要的是，一個人的東西，你只是隨著時間的發展
為你寫的節目越來越多。
>> 還有什麼問題嗎？
好吧，讓我們現在
返回這個傢伙在這裡，
所以，我仍然在這部分問題。
我們已經討論了所有這些不同的，
什麼是一個函數，為什麼寫功能，
當你可以複製和粘貼？
希望我們確信你寫功能是一件好事。
所以，現在讓我們繼續這MySpace的計劃，
我們會花一點點的時間這樣做。
>> 所以，讓我們來看看，
我有一個人讀這個嗎？
讓我們Mikhaila - 你閱讀這篇文章，我們呢？
>>你的意思是回來時，MySpace的 -
回來時，MySpace是酷。
“返回時，MySpace是涼爽，
這是所有的憤怒，象這樣。
也許它仍然是嗎？我真的不知道。
在任何情況下，使用CS50電器，
CS50運行，或CS50空間的的，
寫一個程序，提示用戶的消息
它的第一個字母大寫，然後輸出信息，
在交替的情況下，與所有其他字母，
如下面的示例輸出，
其中粗體文字表示一些用戶的輸入。
為簡單起見，你可以假設用戶
只能輸入小寫字母和空格。
考慮這個問題的一個練習的機會;
你不會被要求提交這一計劃。“
>> 真棒，謝謝你。
因此，作為Mikhaila說，
我們要編寫一個程序，MySpaces你的代碼。
因此，沒有任何你們使用MySpace上嗎？
你有任何MySpace帳戶？
哦，是啊，是啊！
這是很酷。
[笑聲]
我知道。
約會自己。
所以我們正在試圖做的是寫一個程序，
經過
的首字母大寫
然後此後的每一個字母 -
其後或其他字母，對不起。
>> 所以 - 你可以看到在這個例子中，
這是怎麼了，我們運行程序，
所以這只是說，“我們正在運行一個名為a.out的程序。
我們要賦予它的輸入，
將被提示。
我們不是讓你去提供在命令行上輸入“。
如果你一直遵循所有的演講
和聽到的命令行參數，
這是種者 - 那時髦的語法
在主要的用int argc個，所有的東西，
所以在這裡我們沒有使用;我們並沒有任何的處理。
我們只是得到這類型的用戶，
那麼這第二個行與時髦的資本
是什麼，我們希望我們的程序輸出。
>> 因此，而不是使用設備或運行中，我們將使用空間，
因為我們有空間，
因此，如果你們會
讓你的代碼看起來像這樣，
所以我要救這個修訂
只是讓你在這裡得到了鍋爐板
像這樣的，詮釋的主要（無效），什麼​​也沒有。
其實，我們要做的是，我們只是刪除一切。
我們希望有一個空白的石板，
因為我們不會開始編寫代碼;
相反，我們要去嘗試寫一些偽代碼
這真的只是意味著我們將寫的東西，這不是代碼
這樣的描述，我們想要做的是什麼，
有點像大衛那樣在第一天的演講，
我想是第二天的演講時，他做了整個襪子演示。
你們還記得 - 看到襪子呢？
約瑟夫是在那裡種輸入中英文嗎？
所以，我們要做同樣的事情。
>> 所以，當我開始寫偽代碼，
我喜歡的輸入將是開始。
我給自己一個樣品的情況下，
所以像添加“謝謝！”
然後我也寫的是什麼，我想要的輸出，
在這種情況下是這樣的事情。
給了我一個這樣的好事，比如，開始認為，
“好吧，我想採取1號線
我想將其改造成2行，“
而這種幫助引導我的思想。
這是一個良好的開端。
另一種思考方式，也為我們還挺移動
和你這樣做，是在自己的程序
認為像邊緣的情況下，這是什麼樣的呢？
是什麼樣的怪異的情景嗎？
奇怪的投入，我們可能會得到什麼？
這些產出應該是什麼樣子？
例如，一個奇怪的輸入
會是這一個，
創建絕對沒問題，
像我們在這種情況下，輸出嗎？
我們想要的東西去思考，太。
>> 因此，正如一個問題，
我們可能要輸出什麼？
如果我們沒有得到任何輸入，如果我們的程序輸出？
“什麼也沒有。
什麼都沒有？聽起來很不錯。
因此，我們要確保我們不寫任何東西
如果我們沒有得到任何東西英寸
酷。好吧。
所以
我要叫上幾個人，我們去通過
只是有點像一般的算法是什麼
樣開始，我們會一起度過這次難關。
>> 所以，讓我們來看看。大小姐。
您如何看待我們就開始嗎？
這將是一個好地方，從這裡開始
如果我們要進行改造，比如，1號線
到第2行嗎？
你能種只是向我解釋，英語，你在想什麼？
不要擔心代碼。
>>我會做的第一件事情將是
種直接用戶，告訴他們你想要什麼。
好了，所以，比如說，
“嘿，用戶，我想
一個字符串“ - 真棒。
因此，讓我們把這個寫下來。
提示用戶輸入一個字符串。
這聽起來像一個良好的開端。
好的。
讓我們問凱利任。
什麼我們願意做的事嗎？
我們的未來是什麼樣的 - ？
>>收集他們的意見，並將其存儲為一個變量。
大。
因此，收集的字符串，
它存儲在變量中。
那麼，有沒有什麼特別的，我們要在這裡做嗎？
我們要檢查他們的意見
前 - ？
>>呀。
我們可能要檢查什麼？
>>嗯，你說我們沒有檢查它是否是一個數字，對嗎？
因為它會假設它是小寫嗎？
是啊。
>> 因此，原來， - 是啊。
因此，保證返回一個字符串的getString。
它不會返回一個數字或類似的東西。
有可能是數字字符在該字符串。
而這些，我們可以忽略，因為我們沒有資本化。
但一個空字符串是完全正常的，
這樣的情況下，於4日和5號線在這裡，
正確的，那裡沒有輸入，
我們已經把什麼作為輸出。
我們不必擔心肯定有什麼東西在字符串中
該字符串是至少4個字符長;
什麼是好的。
因此，這是對比，例如，像便士你寫的程序，
其中，以確保你得到非負數;
你必須確保你得到正確的天數在一個月內。
如何你們這樣做嗎？
你將如何做這個測試嗎？
那是什麼要求你使用嗎？
>> do-whil​​e循環。
do-whil​​e循環，其他類型的循環，太多，是的。
因此，原來，我們沒有在這種情況下，使用一個循環，
當我們提示的字符串，這是一種不錯的。
>> 好吧，繼續前進。
所以，斯特拉。
你能告訴我們什麼，我們下一步應該做的一點點嗎？
現在，我們已經得到的字符串，我們已經有了它存儲在一個變量;
的字符串，我們需要做的是什麼？
>>我們需要 -
識別的2 -
是啊，就用英語說，這是真棒。
>>確定[聽不清]首都 - 或大寫字母。
是啊，所以你識別哪些是大寫和小寫。
我們可以沒有他們，直到我們已經確定了哪些大寫或小寫。
因此，我們將在這裡。
>> 所以，只要一想到這個過程中，
我們怎麼做這個鑑定呢？
你知道嗎，丹？
種什麼，我們 - 我們不得不使用我們的工具箱裡什麼工具？
>>我把它在某種方式中像一個數組或每行
是它自己的小盒子，
然後大寫有或沒有。
好了，所以我們可以利用的一個工具，是一個數組。
我們有什麼看在字符串中的，
不過，要弄清楚 - 我們有看的字符。
“所以，你得看在字符串的長度？
是啊，所以得到的字符串的長度。
只是出於好奇，我們用它來得到一個字符串的長度？
>> strlen的？
是啊，strlen的，我們稱之為“strlen的”
所有這些字符串函數，所以strlen的是一個函數，
這是超級方便的，因為我們可以用它來只是說，
嘿，strlen的：這是一個字符串，你能告訴我它有多長。
在今天的演講中，大衛談了很多關於如何strlen的實施，
幕後到底發生了什麼。
但是這是一個非常超級方便的。
有也字符串中的庫的其他那些，
如STRCMP的拼寫是“STRCMP”，
這是用來相互比較字符串。
您將使用函數strstr一樣，
這是很好的發現子串等。
在大多數情況下，他們開始用str，然後去別的東西。
的原因，他們沒有實際拼寫，如字符串，等等
因為早在初期的C一樣，
當人們第一次寫操作，這一切，
他們，你可以使用的字符數限制
函數名和變量名，
所以，一切都像超濃縮。
但是，任何時候，你看到的東西，開始用str，
通常是指有做一個字符串。
>> 好了，你已經得到了字符串的長度，
然後，我們做的字符？
你知道嗎，薩姆？
>>我不知道，我正試圖弄明白。
我真的不知道 - 我希望有一些方法 -
我的意思是，我想，也許我們可以做一些事情的賠率，均勻，
但我不知道任何這樣的功能。
是啊。
“但是，這 - 它不一定會工作，
因為那樣的話，你會得到的空間 -
你就必須有足夠的空間，以獲得關於如何 -
好吧。
我不知道 - 我在這一點上失去了。
是啊 - 不，不，不，這些都是很好的點。
所以，我們需要做的是，像薩姆說，
我們需要跟踪的字母是奇怪的字母，
的，哪些是偶數字母。
但是，我們要確保我們不只是尋找
在奇數場和偶數
指數在字符串中，
而是尋找在字符串中的奇數和偶數的字母，
因此，我們需要還挺有這之間的區別
字母 - 像實際上是A，B，C，D等，
什麼事都沒有字母，但仍然在我們的字符串。
例如，在這裡，像這樣的感嘆點是不信，
但它仍然是我們的字符串的一部分，它仍然是一個字符。
同樣，所有的這些空間 -
不利用的空間，對不對？
因此，我們要確保我們莫名其妙地跳過這些
，同時還跟踪總入球數單。
>> 所以在我們的編程工具箱
到目前為止，如果你願意，
我們有許多不同的工具，我們已經談到了。
因此在一個，例如，是變量，
就像我們以前談到這裡。
另一種工具，我們所談論的是功能。
因此，我們已經討論過的變量，我們的偽代碼在這裡
正如我們將用它來存儲我們的字符串。
我們已經討論了函數來獲取一個字符串的長度，如strlen的。
我們一直在談論別的事情，我們已經談論了
進行了大量前面部分的今天：循環。
>> 你們覺得在這個程序中使用循環？
賈里德，你有什麼感想？
在這個程序中，我們使用一個循環？
“也許不，不，因為你沒有去多一次。
好了，你沒有通過什麼去多一次？
>>的整個字符串。
好，那你不有一次去的字符串全。
遺憾的是，絕對沒有任何意義！
你不必去通過整個字符串不止一次。
好吧。
你怎麼想？
>>我認為這是更好地使用它們
所以我們可以這樣做利用，而
它的位置是[聽不清]數。
太好了，所以利用什麼？
好了，所以我們說，
因為我們想，我們應該使用一個循環
大寫字母，雖然它不是一個數字。
- 對不起，沒有您要添加嗎？
>>我要說的話，你的方式治療的字符串
[聽不清]將[聽不清]的字符？
是啊。
>>，然後我們可以指定號碼 -
或基於位置的字符串中的字母？
是啊。
>>，並確定它是否是奇數或偶數和大寫字母本身
而信的位置是聽不見的 - 對不起。
大。
>> 因此，只要回顧一下。
你的名字，你能提醒我 - 我很抱歉。
“夏洛特。
夏洛特，沒問題。
那麼，什麼夏洛特說，
這是完全正確的 - 天哪，我喜歡汽車縮進 -
是，如果我們檢查一個字符串
如這一個在頂部 -
“謝謝你的”添加“ -
為一個字符序列
在位置0，
h是在位置1。
一個是在2，然後我們得到了3，4，5;
的空間是在6位。
鑑於 - f的位置是什麼？
7！
O？ 8。
R？ 9。
然後，我們得到了10，然後我真的不能沒有它的把它寫
有點讓凌亂的在屏幕上。
但是，這其實是我們可以談論如何在內存中的字符串。
它是一個字符串
是一個字符序列，
當我們提到一個單個的字符在字符串中，
我們經常這樣做參照該字符的位置
在字符串中，
可能以同樣的方式，當我們談論九月
的第九個月的一年
或星期一是一周的第一天。
因此，這為我們提供了一種方法，
找出哪些是奇與偶
因為你可以在這裡看到，
如果我們符合了這件T，
你可以看到，所有符合資本化條件的
在偶數位置，
至少在第一個字，
然後事情變得揭去後，我們打的空間，
因為我們不指望這個空間為一個字母，
所以，如果我們開始
去0，1，2，3，4，5，
空間，6，7，8，空間，
9，然後10，11，12，並依此類推。
>> 酷，所以我們肯定會想使用某種循環
去中的每個字符。
因此，在這一點上，
我們再回過頭來我們這裡的老偽代碼。
作為這個識別哪些
是大寫的，哪些是小寫，
我們將要做到這一點，在某種循環。
“循環”，冒號。
什麼樣的類型，我們的循環，循環，
似乎是一個很好的使用在這種情況下？
>>我想在for循環。
你為什麼要思考的for循環？
>>因為它從0開始，然後
當我們到達字符串的長度，
，然後每次迭代中，您可以[聽不清]嗎？
是的，沒錯。
因此，出於不同的選擇的循環，
我們有for循環，while循環，do-whil​​e循環。
一個for循環是特別有用的
當你想知道
你在循環中的一種，
循環已經執行了多少次為止。
這正是我們想知道在這種情況下，
像凱利說，
根據夏洛特的先前的評論，我們想知道的位置
在字符串中的字符，
和for循環會給我們帶來了這一點，
因為，如果我們回頭看我們的字符串開始種，
如果我們開始我們的for循環為0，
我們去到的整個字符串的長度，
然後，我們可以將字母T
0的循環，
字母H與1在我們的for循環，依此類推，
將所有的方式通過字符串的結尾。
>> 因此，讓我們開始編碼這只是一點點
只是讓你們得到的感覺，這看起來像。
我要救，
所以在這裡，我們已經得到了我們的偽代碼，
我要刪除一切。
所以，我有一個空白的石板。
我要開始寫詮釋的主要（無效）
{
我會把返回0
然後}。
因此，通常當我開始計劃，這是我的開始。
我會保存它，以便你們有它。
因此，我們談論的第一件事情之一是
得到來自用戶的輸入
並把它存儲在一個字符串中。
我們怎樣才能從用戶的輸入？
>> GetString的。
GetString時，所有的權利。
所以，如果我輸入的GetString（）
和分號。
讓我們嘗試運行來看，第一呢？
為什麼不運行？
>>您必須聲明變量。
我要聲明一個變量。好吧。
>> 那麼，如何才能做到這一點？
你不介意寫的東西，分享了嗎？
然後，我們可以把它拽上來。
讓我們來看看，但正確的，沒問題。
大牛。複製，字符串輸入的GetString（）。
真棒。
這會不會跑？
讓我們試試吧。
命中來看，上載源代碼，建築，發生了錯誤。
好吧。
因此，whats怎麼回事呢？
使用未聲明的標識符“字符串”。
>>我們有包括庫嗎？
是啊，所以丹說，我們有包括庫。
這是你會說，斯特拉？真棒。
這是可怕的，所以斯特拉，你能
複製此代碼的丹尼爾的空間？
如果您點擊上丹尼爾·羅蘭文，將其複製，
然後你把include行，然後保存它嗎？
讓我知道，當你準備好了。
因此，這包括語法也是一種時髦;
有這樣的散列標籤，
的，然後有這些尖括號。
你還記得是如何工作的，或者我應該把它放在這個代碼在這裡嗎？
>>我很好。
好吧。
>>我打印了 - 我不知道哪個庫，雖然。
哦，好吧 - 是的，所以它的的CS50庫。
哦，我把stdio庫。
>> 哦，找到了 - 啊，不，that's -
所以，字符串實際上是一些特別CS50。
其實是不是一個真正的字符串類型
因為在這裡，字符串類型的位置 -
我們要聲明一個變量稱為輸入字符串類型的 -
我們把裡面的輸入
得到的值返回給我們：這GetString函數調用的輸出。
可以說這是一個函數調用，因為它得到了括號，就像printf並
就像strlen的。
但是，字符串實際上是不是一個真正的類型
在C語言中。
我們已經取得了一個類型，我們會採取更多的它究竟是什麼
C，因為有一種方法使用字符串;
我們剛剛做的東西，使它看起來更好一點。
>> 所以，在這裡，我們走了。
下面是Stella的代碼。
它得到了包括。
其他人會稱此如哈希有時，或尖銳包括。
現在，我們可以啟動它，運行它，
我們還得到一個錯誤。
讓我們來看看發生了什麼事。
“未使用的變量'輸入'。”
好了，所以這很酷，這很酷。
我的意思是，這不是真的很酷，
因為我們得到一個錯誤，它沒有運行，
但是這是說的是，
我們還沒有使用我們的變量，這是有道理的。
我們還沒有嘗試用它做什麼。
這是一種方式，
鐺正試圖幫助我們確保我們不只是使用變量
然後在不經意間調用他們別的事情後來在我們的代碼中，
幫助我們避免錯誤的方法。
>> 所有的權利，因此，我們已經得到了來自用戶的輸入，
我們把它存儲在變量中。
下一步是那麼
在所有的字符在字符串中開始尋找
並確定哪些是大寫
哪些是小寫的。
而像凱利和夏洛特長大了，
我們使用一個for循環。
因此，任何人都不會記得一個for循環的語法
並希望藉此刺在只寫
在fo​​r循環的第一行，只是位嗎？
凱利，你想給它一個嘗試？
呀，所以你必須先進行初始化，
所以我把我= 0，
然後我做了我<strlen（）函數。
它是在你的空間 - 我可以拉起來嗎？
是的，我搞砸了一點點，但是是的。
>> 好吧，讓我們把它。
真棒。
“但是我不知道，如果你有這樣的 -
是啊，好吧。
所以這裡是凱利的：讓我們再看一下。
所以她的包括CS50庫的在頂部。
包括她的標準IO庫的頂部，
和標準的IO函數如printf，
因此，如果你想使用printf，你需要的線。
然後，她又包含字符串庫，
我們需要的，
因為字符串庫的strlen函數，
我們會在短短位。
因此，如果我們在這裡看凱利做了什麼，
你能走我們通過你做了什麼？
>>呀，所以 - 我的意思是，我有錯誤，所以 -
啊，不，it's -
“所以，我想叫我只是”字符串“的字符串。
我想打印出字符串
然後我 -
我想喜歡像一個數組中的每個字符的字符串
不同的[聽不見的，對不對？
然後我想在位置0開始
然後每2位，
我要利用，
所以我剛才所描述的為23，因為我一直在尋找的ASCII表。
所以，這就是我在想 - 我知道這是不對的。
>> 得到它，所以這是一個很好的開始。
我想了很多的框架是在這裡舉行。
讓我們通過逐行種，看看會發生什麼。
所以我喜歡的方式做到這一點，剛開始編譯代碼
並讓編譯器告訴我，像我的代碼有什麼錯，
因為編譯器會告訴你，什麼是錯的，你的代碼是非常好的。
因此，如果我們發揮，建築，它沒有建立。
它說有一個錯誤，
因此，如果我們向下滾動，並期待在第一個錯誤，
它說 -
滾動到頂部，
我們可以看到有5個在底部產生的錯誤。
哎呀，這是真正切斷。
我猜這只是不會得到任何好轉。
>> 在這裡，我們走了。
因此，總有5所產生的錯誤。
在這裡，我只能看到第2，
這樣我就可以移動一點點，然後向上滾動種。
這是運行的命令來編譯代碼，
然後file.c的第一個錯誤是在這裡：
“預計識別或”（“”，是在這條線
在這裡我們說的字符串= getString（）方法。
在這裡你可以看到，它是在第8行file.c，
然後我相信這是12字符 - 這是錯誤的。
那麼，這是怎麼回事第8行 - 凱利錯誤嗎？
>>您只需要調用它一樣，一個字母或什麼的，
如字符串s或東西嗎？
是啊，所以事實證明，這些特殊類型的名稱，
這樣的字符串，整型，字符型，短，
他們都是特殊的關鍵字，
，你不能使用他們的姓名您的變量，
因為編譯器看，並說，
“哦，我知道這是一個類型，”
所以，你不能真正稱為字符串有一個字符串變量，
我想在這裡做的，這將無法工作。
但相反，我們可以把它像S或ST或str。
我們也沒辦法把它詮釋。
我們不能有一個字符串調用int。
我們不能有一個稱為字符的字符串，沒有這些工作。
>> 因此，我們將只需要調用它的暫時。
真棒。
那麼下一步是什麼在這條線是怎麼回事？
字符串 - 這條線看起來很不錯嗎？
讓我們給它一個嘗試，讓我們來運行它。
好了，我們仍然出現錯誤。
這一次，我們4個錯誤。
因此，我們得到其中之一。
讓我們繼續。
“意外的類型名稱的字符串：預期的表情，”是嗎？
“是的，那是因為我試圖命名的字符串。
是啊，所以它看起來像我們現在也有去修復
所有這些引用字符串。
你可以看到這裡有一個參考字符串，在這裡，在這裡，
因此，我們可以將所有這些為s。
大。好了，再次運行它。
大廈 - 另一個錯誤的發生。
>> 好了，現在我們已經到了一個錯誤，
所以int i = s，然後在方括號。
所以你能告訴我們一點關於你在這裡做什麼，凱利？
“是的。
這是第10行。
>>我不知道，如果我們需要它，
但我認為我是想 -
所以你可以跟著我將它保存。
>>我想我是
想告訴它開始在位置0
在我的for循環的開始，
所以我覺得也許該說是不必要的。
因此，只要回顧一下，
你說，這 - 你試圖啟動該位置0
得到這個 - 是的，
過，所以我覺得所說，當你步行通過的代碼，
你在談論你想如何處理字符串作為一個數組
這樣我們就可以訪問每個字符單獨。
我覺得丹提到過，陣列，試圖將字符串轉換成數組。
>> 事實證明，這樣的引擎蓋下，
實際存儲為一個字符串數組了，
您可以訪問它像一個數組;
有沒有轉換，你必須做的。
一個字符串，isn't - 所以 -
一個字符串是不是一個真正的陣列，
但您可以訪問它是這樣的，因為所有的字符都存儲
一個正確的彼此相鄰的，在內存中，
所以，如果你想要得到的第一個字符的字符串，
為獲得一個整數數組的第一個整數是相同的。
所以我們經常 - 我們就會
參閱2類似
哦，作為一個字符串，數組，
即使它真的 - 他們非常不同的事情，
但你可以把他們大同小異。
因此，原來，這條線實際上是 -
我們不需要做任何轉換，
而事實上，
這實際上是不是一個有效的表達，
這是我們的編譯器是在告訴我們什麼。
它說：“嘿，它預計的表達，
我來到這裡是這不是一個表達的東西。“
聲明一個數組，
所有你需要做的是用分號這樣的事情，
然後你告訴陣列多久，你希望它是，
如5，所以這一行10
聲明一個數組，叫我5個整數。
>> 這是一個的一邊，這是沒有必要的代碼，
但是，這是 - 這是一種什麼樣的聲明看起來像。
>>你會不會使用char我的strlen（）]？
CHAR I的strlen（）]？
>>字符i，然後括號內的，strlen的（）。
是啊，所以我們可以 -
我們能做到這一點，
這將宣布 - 這樣做什麼？
>>我想聲明一個數組
的一樣 - 的 -
哦，你不需要我 - 哦，
是啊，你絕對不需要我。
你聲明一個字符數組
長度為S。
所以山姆說的是，
10號線 - 讓我把一些空間，所以我們可以在它與其餘孤立 -
這10行聲明一個數組
的字符，字符strlen（）價值，
但我們其實需要我，
和的原因，我們需要的，我是因為我們需要為陣列的名稱;
否則，我們就沒有辦法在後面的代碼請參考陣列。
>> 所以在這裡是數組名
和內部的長度。
這將為我們提供一個數組，
但是，這是 - 再次，這是一個聲明。
這不是一項任務，它不是初始化。
如果我們宣布這樣的數組，
其實也沒什麼的數組中的內容。
這只是垃圾 - 無論是在那裡。
像我們所說的，
我們其實並不需要做這種轉換，
因為我們已經可以把字符串s為一個數組。
我知道我們正在運行的時間有點長，
但我想真的很快得到這個for循環
並告訴你如何訪問數組中的單個字符，
因為這是我們的任務的關鍵。
然後，我們將讓你從那裡走。
>> 所以在這裡，我們已經有了一個for循環
看起來差不多好了。
什麼不太幾乎沒有呢？
What's - 什麼是不完全正確的循環嗎？
>>不花括號？
沒有花括號，對於一個。
想確保我們身體的循環使用花括號。
哎呀，而不是方括號！
接下來的事情，我們需要做的，這個循環是什麼？
如果我嘗試運行它，
這個錯誤，我得到什麼？
我得到的所有這些錯誤 - 我必須初始化i。
大。
因此，這將是一個循環 - 這是沒有做到這一點，
但它真的很近。
我們現在可以運行此代碼，
建立，仍出現錯誤。
為什麼它仍然抱怨，
說表達的是未使用的，
這是因為該行不會做任何事情。
我們並沒有存儲在任何地方，我們並沒有將結果保存。
我們應該在哪裡保存這個結果呢？
>> S或我呢？
沒錯，這個時髦的語法，
這個S的方括號
裝置進入的s的第i個字符。
這將是東西是真正重要的是分配。
不幸的是，我們將不得不停止在這裡，
所以，塞巴斯蒂安部分可以進來，
但我很高興留後外，並會採取任何問題。
所以，謝謝你們的到來。
現在應該上載，建立，運行。
我們可以輸入一個字符串，如“你好”
打印“中Qox”的。
[笑聲]
>> 因此，不太有，但移動，獲得對這些循環！
謝謝你能來，我會在外面。