盧政良 台大資訊系
變數、型態、
基礎運算
1
variable type
operators
盧政良 台大資訊系
輸入一個半徑,請問 圓面積等於多少?
2
盧政良 台大資訊系
3
盧政良 台大資訊系
變數宣告
4
盧政良 台大資訊系
資料型態 變數名
5
公式
盧政良 台大資訊系
6
資料型態: int , double
整數 浮點數
最常使用的
https://www.kcl.ac.uk/ImportedImages/Schools/NMS/BigData/BDHomeBanner.png
盧政良 台大資訊系
Binary Digits
7
電腦資料大小的單位
盧政良 台大資訊系
8
盧政良 台大資訊系
9
世界上只有 10 種人:
一種是懂二進位的人,一種是不懂二進位的人。
盧政良 台大資訊系
‣ 試試看把下列數字換成 10 進位:
•
•
‣ int 的大小是 32 bits
(4 bytes)。
• 試問一個 int 的變數可以表示多大的數字?
~ ,約 40 億左右
1011 2 = ? 8 + 0 + 2 + 1 = 11
1.101 2 = ? 1 + 0.5 + 0 + 0.125 = 1.625 2
32− 1 4 × 10
910
盧政良 台大資訊系
int似乎不好用
11
(πーπ)
只能表示整數,表示的範圍又不是很大 orz
盧政良 台大資訊系
浮點數
12
(≧∀≦)
可以表示帶有小數的數字,而且範圍很大!
floats
盧政良 台大資訊系
0.1 + 0.2 = ?
13
https://0.30000000000000004.com/
盧政良 台大資訊系
浮點數只是實數的近似
14
(⊙_⊙)?!
什麼是實數?
盧政良 台大資訊系
IEEE754
15 很類似科學記號的表示法
公式:(-1) ^ S x (0.M) x 2 ^ E
盧政良 台大資訊系
小結
‣ 人類的資料皆透過二進位的方式儲存在電 腦裡。
• 照片?音樂?智慧?靈魂?
‣ C++ 是一種靜態型別的程式語言。
• 亦是一種編譯式語言,與 Java、C# 相同;
• 異於 Python,為一種直譯式語言。
• 有興趣的同學自行閱讀:型別系統。
16
static typed compiled language
盧政良 台大資訊系
‣ 資料的型態決定箱子可以裝的東⻄。
‣ 每一個變數一定會是某一型態。
‣ 目前已經了解的型態有 int 和 double。
‣ 以數字的型態而言,型態決定了箱子的大小,
也間接決定箱子可以表示的數字範圍。
• 裝不下會怎麼樣?溢位。
• 比 int還 大一點的箱子是 long long 。
17
Overflow
https://en.cppreference.com/w/cpp/language/types
ps: 在Linux和Mac OS X上的long是64 bits。
盧政良 台大資訊系
數字的基本運算
18
盧政良 台大資訊系
1 / 2 = ?
19
` ͜ʖ´
盧政良 台大資訊系
20
https://static.wikia.nocookie.net/evchk/images/e/ec/2471912.jpg/revision/latest?cb=20171012125530
盧政良 台大資訊系
運算結果是根據兩邊的型態 決定的!
21
盧政良 台大資訊系
型態很重要 型態很重要 型態很重要
22
因為很重要,所以講三次。
盧政良 台大資訊系
型態如同法律
23
型態決定了很多細節!
盧政良 台大資訊系
x = x + 1
24
有沒有感覺很不舒服???
http://bpic.588ku.com/element_pic/00/16/08/1857b58404c5110.jpg
盧政良 台大資訊系
指定
25
多數程式語言的等號 ( = ) 不是兩邊是否相等,
而是把右邊的東⻄丟到左邊去。
assignment
盧政良 台大資訊系
double x = 1 / 2;
26
請問螢幕上顯示的數字是多少?
隨堂測驗
盧政良 台大資訊系
double x = 1 / 2;
27
1
發生在編譯時期
3 2
發生在執行時期
要能夠畫出cpu-memory的圖幫助自己了解!
細部拆解
compile-time
run-time
盧政良 台大資訊系
等於
28
x = x + 1 x!++
還有一個寫法是 :x = x + k 等於 x += k。負乘除餘皆同!
https://en.cppreference.com/w/cpp/language/operator_incdec
盧政良 台大資訊系
強制轉型
‣ 在某些場合裡,可能需要將變數型態 強行轉換成另外一種型態。
‣ 例如:假設年初投入金額123元,年 末賺到4元,問年報酬率是多少%?
29
Casting
盧政良 台大資訊系
30
強制轉型:把 profit轉換成double的型態 int會自動轉換成double
原則:整個敘述執行完畢後只會有一個形態!
https://en.cppreference.com/w/cpp/language/explicit_cast
盧政良 台大資訊系
文字
31
盧政良 台大資訊系
32
文字如何用 0 和 1 保存下來?!
盧政良 台大資訊系 https://i.pinimg.com/originals/75/28/b1/7528b199208cc9078adfa6830be7f072.jpg
33
盧政良 台大資訊系
字串
34
string
#include <string>
前頁所示是字元,但課堂上僅使用字串比較方便。
character
盧政良 台大資訊系
Body Mass Index (BMI)
35
輸入:名字、身高、體重 輸出:名字 (BMI)
課堂練習
盧政良 台大資訊系
36
資料型態 變數名
公式
int x
string name
你確定你知道string name的意義嗎?!
盧政良 台大資訊系