https://meteor.today/a/6-j6VG?ref=android
我先列出了一串程式碼,等等告訴你們每一列的意思
這應該是C++最著名的一段了
https://i.imgur.com/pHjMA0M.png [/img]
而當我編譯且執行他(compile and run)之後,他跑出了以下訊息
https://i.imgur.com/MMaDmNn.png [/img]
我們先從第1列開始解釋!
#include <iostream>
#include是一個指令 他可以在這個檔案中引進名叫iostream的檔案
為什麼需要用iostream呢?
好問題!(?????
因為iostream裡面定義了很多我們常用到的函數,我們需要透過引進這個檔案才能用這些函數的語法 例如之後會看到的cin,cout
iostream這類型的檔案我們會叫做標頭檔案(header file),因為他在檔案的最開頭被引進
接下來我們開始解釋第2列
using namespace std;
在這裡 我們會使用到using,他是一個指令
namespace稱為名稱空間,std為其中一個名稱空間
為什麼我們要使用std呢?
這邊先說明一下namespace的意義
當你一次引用了多個不一樣廠商的函數庫時,要使用他們的函數
可能會出現同樣的函數名稱,有不同的廠商在使用
假如有一個指令叫做apple(),在Sam廠商中的apple()指令功用是a,Mark廠商中的apple()指令功用是b
那問題來了
我們使用apple()指令的時候,效果到底是a還是b?
這就是namespace存在的意義
不同的廠商可以將定義放在namespace裡面
分成許多個namespace 使用的時候就不會搞錯
假如我要使用這兩個廠商的指令,我就輸入他們的名稱空間
Sam::apple() -----> 效果是a
Mark::apple() -----> 效果是b
而我們基本會用到的函數都是包在std這個名稱空間裡面
所以我們要使用std才能使用一些基本的指令
例如std::cout這樣的寫法
但每次都要打std::在前面是不是很麻煩?
所以我們將std直接在開頭的時候就宣告好!
using namespace std;這串放在開頭
整個檔案就不用一直輸入std::了!
好的那我們開始講解第4列
我們的主函數
int main(){
這裡些說一下int的定義
int是說明這個東西是整數,或是函數會回傳整數值
就先這樣聽聽就好 後面教學會更清楚解說
main()稱為我們的主函數 ()裡面代表著我們要加入的引數 當這個函數有需要什麼數字時,我們才會在()中加入數字,這裡我們不需要加入數字
這個主函數裡面的內容會被包在{ }裡面 { }不能不見
接著講解一下第6列
在這邊順便說明一下,其實按下在不是指令之中的地方按下空白鍵或是enter不會影響程式
你想空幾行就空幾行 沒有規定說一定要擠在一團
第6列用到蠻重要的指令cout
cout的用處是可以將它後面的字串給輸出出來
像我們在" "中加入了Hello World!執行之後
螢幕便會產生Hello World!字串
cout的用法是後面要加入<<
cout<<”hi”;這樣
或是假如我定義一個字串叫做a
a裡面的內容叫做hi
也可以cout<<a;
就不需要用" "去包住內容
這樣也會輸出hi到螢幕上
詳細的下次我會說明
而cout不只能輸出一次
你可以使用這樣的寫法
cout<<”hi”<<a;
你想<<用幾個都可以!
可能有人聽不懂我剛剛說明的a 下次會一起解釋
這邊說明一下輸入程式碼的規則
當一個指令結束後 後面都要加上;
所以你會看到我們輸入完指令後都會加上;
接著換到第7列 我們的最後一列
第9列的}只是為了把內容包住 所以不再說明
return 0;
剛剛提到int代表函數會回傳整數
C++的定義中 當程式沒有特別寫說回傳值是多少時
就會自動當作是return 0;
回傳0的意思 在main這個主函數中可以忽略這行不寫
不寫的話就會預設是return 0;
今天的內容有點多
我想把一些內容講清楚 現在才發現這是一件很困難的事情
希望大家能夠理解 有錯誤也請指正我
謝謝!
你可能有興趣的文章...
全部留言
匿名
照抄呢
?照抄啥 我的確發文之前都是嗑書嗑C++ primer plus先嗑爆 再用我自己的話去寫的更精簡 因為很容易怕錯誤 所以啃很久 不過照抄是不可能的 因為就算在書中 有些書的用語我也是看很久才看懂 看不懂東西我還要抄上來讓別人也看不懂嗎 所以我是用自己的方式寫的 因為大家沒有什麼時間啃爆一整本1000多頁的書嘛
B16 不是欸我是先學C++,但是習慣不好沒次寫完程式都忘記確認就直接讓它跑😢 但是學完C++後的優點就是學python超快!直接套模組就好(˶‾᷄ ⁻̫ ‾᷅˵)
幫你補充 C++有特有的namespace Unnamed namespace 實務上可以用來區分變數與函式 但通常學校教的東西都用不到
其實你在statement當中換行也是可以的 不要把特殊字斷開就好(只是那樣很醜 然後return 0是有意義的 他回傳0的對象是作業系統 告訴作業系統程式執行成功 如果return 1或其他東西的話大概就是程式出了什麼error
這裡有dp 教學嗎 我每次apcs 第三題都卡超久
那你學到哪 幾個常用的sort有學嗎
我回來認真看了 嗯…怎麼連一些留言我也看不懂== 幸好我高三沒有資訊課了∠(ᐛ」∠)_ 其實我覺得很有趣但是我都不懂 😢😢
推推 你講得很好理解 所以我看懂而且看完了٩(๑•ㅂ•)۶
我不知道 因為我那些專有名詞(?)都沒看過 看到就頭痛😵😵 到底為什麼分那麼多種 ಠ_ಠ
HELLO WORLD!!!!*\(^o^)/*
我們學校教一學期結果大家都可以去考apcs🙈
反正就是跟C不一樣ㄉ東西🤣 學一個腦就快爆了XDD
好好笑沒關係 我之後再來研究 我最近很排斥這個 難到怕 ಠ_ಠ
沒有人想過為什麼一定要Hello world而不哈別人嗎:3
B30 B35 其實我覺得先學JavaScript還比較親和好懂一點,為什麼非得要叫大家學這個甚至可以塞一種叫組合語言的可怕咚咚∑( ̄□ ̄;)
可以去了解一下 exitcode 是什麼 這樣你就知道 exit(0); 或是在 main 的 return 0; 是什麼意思了
B37 我一點也不覺得 Javascript 是一個比較親民的東西欸~ 光是非同步、同步,我想就可以把初學者搞死
main()和function的大括號換行 loop的大括號不換行路過 信我者……好像沒辦法幹嘛 但我覺得比較好看QQ
碰過c c++ java python 但我發現腳本類、自動化的東西比較好玩🥲 可以透過python可以實作 真的有興趣自學的還是建議從比較難的C開始 但基本上都是訓練邏輯跟觀念 再碰其他語言就是熟悉而已了~
超讚的 訊科學生看了感動 很少有人回去介紹這東西 因為介於高階語言及機械語言 導致不是非常多人想學
匿名
寫得不錯,不過有一些細節我想要提出 - Namespace 好像翻作「命名空間」居多 - 在介紹分號那邊,用「指令」二字好像怪怪的,那應該是一個 statement 才對 - return 0 的部分 B22 跟 B39 有解釋了 - 「默認」應改為「預設」
因為大學是本科 不能不會阿乾
ㄚ我不是有教你排版 你全部給我忘記喔
認真回覆一下: statement 可以翻譯叫做敘述、陳述 他就只是來表示某個東西,表示某個狀態這樣ww 的確那邊用「指令」這個詞不太好 而事實上我通常看到指令這個詞都是拿來形容 cpu 的 instruction 然後我覺得或許你可以再說清楚一點 main 函式(主函式)是什麼 主函式就是一支程式的入口,我們知道當程式被啟用的時候,他會進入這個函式 然後與其空泛的說 iostream 定義了很多東西,不如說的更確切一點:io 分別對應 input 和 output,代表程式的輸入與輸出,所以 iostream 就是別人幫你實作好,可以讓你很方便的做輸入輸出的一個東西,你要使用別人寫好的東西,你就必須要用 include 這個語句。 最後推薦你把這系列文章放上 hackmd 再好好排版一下,然後額外公開 url,因為 meteor 的排版⋯⋯頗醜。
你講的好清楚 我明天來改一下內文! 我不知道放在外面連結大家會不會看欸 而且第一次寫這種文章 不太知道下手方向😂 我還有好多好多要學的 只是想讓大家知道基本的東西
過一陣子再來幫你一起產教學文
你可以同時在meteor放文章和放一篇在 hackmd 上經過排版過的文章,同時再把 url 貼到 meteor,這樣讓別人可以自由選擇是否要點進去看。
再補充一下 那個0你要隨便設定都可以 反正阿,只要傳回你指定的值,那就是執行成功了 ((然後我還在超級無敵基礎的部分,c++我覺得ˊ真的好難😥