Try   HackMD

Ch2 變數與輸入

搭配 Zero Judge 高中生程式解題系統

上一章:輸出
下一章:四則運算
回目錄:國立科學園區實驗中學C++程式語言自學講義

什麼是輸入

在上一章我們學會了在小黑窗印出文字
但如果一支程式只能印出固定的東西
無法和使用者互動 那就太無聊了!
在這一章我們將學會讓程式讀取使用者輸入的資訊
(玩你寫出來的程式的人,就是你的程式的使用者,例如Green Judge的測試端)

什麼是變數

如果要讀取資料,那就需要有地方可以把資料存起來

變數就像數學的代數x, y, z一樣,可以被代入任何的數值
用程式把輸入的資料代進去,就能保存輸入的資料了

變數相當於一個盒子,可以拿來裝資料
不同種類的盒子分別有不同的用途,例如裝飲料的牛奶盒、裝食物的便當盒、裝文具的鉛筆盒等等
不同種類的變數也分別有不同的用途,例如整數、小數、字串、字元、布林數等等

宣告變數

雖然在算數學的時候
每次想要用一個新的代數,就直接使用就好
但在寫程式時,每次想要用一個新的變數,
都要先將那個變數新增出來
這個新增的動作,我們稱做宣告

宣告變數的範例程式如下:

int x ;

這行程式的意義,就是宣告一個用來存整數的變數,名叫x
如果是要存小數的話,可以宣告成

float y ;

這樣一來就新增一個名叫y的小數了

以下表格列出常用的變數型態

整數 小數 字元 字串 布林數
int float char string bool

另外還有用來存超大整數的long long
以及用來存超精準小數的double

(布林數這個資料型態存的是是或否的資訊,其值就只有這兩種可能)

宣告變數的時候,一律先寫下它的型態(它是用來存哪種資料),然後是它的名稱。
以下提供各種範例

int number ; float body_height ; char blood_type ; string name ; bool is_girl ;

變數的名稱可以照自己的喜好
只要遵守以下原則

  • 自己看得懂最重要,不要取些aa、aaa、aaaa的名稱
  • 不能有兩個變數有一模一樣的名稱
  • 有特定用途的單詞不能拿來取名稱用,例如if、else、while、for、int等等
  • 名稱中間不能有空白鍵或是數學類的符號,如果非得想要用兩個單字組成一個名稱的話,可以用底線_來連接,例如blood_type

宣告變數的時候,同類型的變數可以合併到同一行
例如

int a ; int b ;

可以改寫成

int a, b ;

合併到同一行的時候,必須用逗號隔開

讀取資料

變數被宣告出來後,就相當於一個空的盒子
下面這行程式,示範如何將使用者輸入的資料存進n這個變數裡

int n; cin >> n;

和上一章學到的cout很像,但cin後面接的是兩個大於>>
可以想像成把餡料灌進泡芙裡的動作 (把資料灌進變數裡)
所以尖端朝右 >>

(圖片來自icook愛料理)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

電腦執行到cin >> n這行程式時,
就會停下來等使用者輸入
如果使用者一直沒輸入的話
程式就會一直停在這一行

使用者輸入數字以後,就會把資料存進變數裡了
例如

int n ; cin >> n ; cout << n;

執行完cin >> n; 這行以後,
n這個變數就會變成使用者輸入的數字
可以用cout印出來看看是否真的跟輸入時的數字相同

一次輸入好幾筆資料

如果想要寫一支讀取使用者的生日月分跟日期的程式
就會需要讀入兩個數字,分別存到兩個變數裡
以下是範例程式

int month ; int date; cin >> month ; cin >> date ;

使用者在玩這支程式時,只要依序輸入月和日,就會分別被存進monthdate這兩個變數裡

Q:程式怎麼知道讀到哪裡為止是第一個數字,哪裡為止是第二個數字?

程式在讀資料的時候,會以空白以及換行來當成資料結束的依據
所以當使用者在小黑窗輸入12 31時,程式就會將12存進month這個變數裡
並將31存進date這個變數裡
但若使用者輸入的是1231,那麼程式就會將1231存進month這個變數裡
然後停下來等使用者再輸入一個數字,來存進date

如果想要只用一個cin來讀多個數字
可以用>>來把多個變數串起來
例如剛才的

cin >> month ; cin >> date ;

可以改寫成

cin >> month >> date ;

簡而言之,一切看你自己喜歡和方便!

但是記得,不可以寫成這樣哦!!

cin >> month, date ;

上一章:輸出
下一章:四則運算
回目錄:國立科學園區實驗中學C++程式語言自學講義