---
title: C/C++ 變數與常數
tags: C++程式設計實習
---
# 演算法(Alogrithm)
## 認識演算法
演算法(algorithm)就是一組用來解決特定問題的有限指令或步驟,我們可依循這些步驟來逐步解決問題或完成特定工作。演算法中的每一個步驟都必須非常明確,不可以模稜兩可。
## 演算法的特性
演算法通常都有如下所示的5項特性。
1. 輸入(input):演算法中經常需要輸入資料。
2. 輸出(output):演算法至少要有一個以上的輸出資料。
3. 有限性(finiteness):演算法應該要在有限的處理步驟內得到結果。
4. 明確性(definiteness):每個步驟都必須明確,不能有模稜兩可的情況。
5. 有效性(effectiveness):每個步驟都必須是可實際做到或執行的。
## 流程圖表示法
![](https://i.imgur.com/s87UfYm.png)
![](https://i.imgur.com/GTqEQkx.jpg)
![](https://i.imgur.com/3JeGAvH.png)
## 敘述表示法
1. 敘述表示法是使用虛擬碼,來表達演算法的處理步驟。 虛擬碼(pseudo code)是一種以簡潔扼要的文字,來設計程式邏輯的工具
2.
3. 範例
![](https://i.imgur.com/bPlnJzI.png)
# 變數
:::success
程式執行簡易說明
:::
![](https://i.imgur.com/lpPxbMY.png)
:::success
<font color='red'>**變數就是一塊記憶體空間**</font>
:::
1. 使用前必須先宣告: 從電腦取得一塊記憶體空間
2. 範例: 宣告一個可以儲存整數(integer)的記憶體空間 int x; // 記憶體空間的別名為x
3. 變數命名規則
- 第一個字元: $S\Z, a\sim z, \_$共 $53$個可用字元
- 第二個之後到結束字元: $A\sim Z, a\sim z, \-, 0\sim9$
4. 駝峰命名法:
- 第一個單字的第一個字元為小寫
- 第二個單字的第二個字元為小寫,其餘為小寫myAge, todayIsMyDay
5. 範例: 宣告一個能儲存學生英文成績的變數。
`int engGrade;`
6.
![](https://i.imgur.com/o5utmD5.png)
![](https://i.imgur.com/mfh7iaA.png)
![](https://i.imgur.com/iw6ZBkC.png)
![](https://i.imgur.com/LPINQur.png)
## 資料的種類:資料的型別(Data Type)
### 整數: integer, 沒有小數點的數字
1. char: 字元型態的變數型態.可以表示$1$ byte大小的數字 -範圍: $-128
2. short: 可表示$2$ bytes大小的數字
3. int: 可表示$4$ bytes大小的數字
4. long: 可表示$4$ bytes大小的數字
5. long long: 可表示$8$ bytes大小的數字
:::info
以上整數型態可以在最前方加上 unsigned 修飾字,代表儲存的資料為正整數
:::
![](https://i.imgur.com/qn0WkYD.jpg)
![](https://i.imgur.com/iXScHpa.png)
### 浮點數
:::success
有小數點的數字
:::
1. float: 4 bytes, $-3.402e^{38} \sim 3.402e^{38}$。<font color='red'>**精確到小數點後第$6$位**</font>
2. double: 8 bytes,$-1.7976e^{308} \sim 1.7976e^{308}$。<font color='red'>**精確到小數點後第$15$位**</font>
3. long double: 8 bytes,$-1.7976e^{308} \sim 1.7976e^{308}$。<font color='red'>**精確到小數點後第$15$位**</font>
![](https://i.imgur.com/iBzewjV.png)
### 字元
:::success
只要是可以從鍵盤輸入的都可以是字元,例如 Aa~Zz、0~9、?/,....等
:::
1. char: 1 byte的字元,可記錄一般的英文、數字或標點符號
2. wchar_t: 2 bytes,可以記錄 中日韓文字
:::info
ASCII code: https://en.wikipedia.org/wiki/Character_encoding
:::
1. 文字在電腦中也是以數值的方式來表示,為讓所有電腦系統都用一致的方式表示相同的字元,
2. 例如以65代表大寫A、97代表小寫a,這種以特定數值代表某個字元的方法就稱為編碼,
3. 目前資訊界一般所用的編碼為 美國標準資訊交換碼(American Standard Code for Information Interchange, ASCII)
![](https://i.imgur.com/h2p38SW.png)
### 布林
:::success
1: 代表true 0:代表false
:::
1. bool: 1 byte
2. 請注意在C語言中沒有true與false
## 設定變數的初始值
:::success
語法: <font color='red'>**資料型態 變數名稱 = 出值;**</font>
:::
1. 範例: 宣告一個變數儲存你的英文基本分為60
'int engscore=60;
2. 範例: 宣告一個變數儲存你的英文基本分為60 + 你上課出席次數
'''cpp=1
int y = 50;
int engScore = 60+ y;
3. 由鍵盤輸入值並储存到變數中: <font color='red'>**要存入到資料的變數必需先宣告 否則erro**</font>
'''cpp=1
int engScore;
cin>>engScore;
'''
# 常數
:::success
在程式中不能被改變的,若嘗試去改變 則會erro**</font>
:::
1. 使用 const: <font color='red'>**const float PI = 3.14159;**</font>
2. 使用 #define: <font color='blue'>**#define PI 3.14159**</font>
## 跳脫字元(\字元)
:::success
格式: \ + 字元: 例如單引號 雙引號等等
:::
1. 顯示單引號: '\''
2. 顯示雙引號: '\"'
3. 自動顯示出Enter(換行) "\n"
### 用字元編碼指定字元
1. \+8進位數值: 表示ASCII 所代的字元
'\144' 代表 a
2. \+x或\X: x或X代表16進位數值 . 表示16進位值的ASCII . 顯示ACLL所代表的字元
'\X61'代表a
# 程式練習
#include <iostream>
using namespace std;
int main()
{
/*測試資料型別所占記憶體大小空間: 使用 sizeof()*/
cout << "char 所占記憶體空間大小"
<<sizeof(char)<<"byte\n";
cout <<"float所占記憶體大小:"
<<sizeof(float)<<"bytes\n";
cout <<"long long 所占記憶體大小:"
<<sizeof(unsigned long long)<<"bytes\n";
/*宣告變數測試
1. 整數型態的最大值 + 1 = 整數型態的最小值
2. 整數型態的最小值 - 1 = 整數型態的最大值
*/
short x = 32767; // x 為short最大值
x=x +1; // x 變成 short 最小值 -32768
cout <<"short 最大值+1="<<x<<" , 會變成short 最小值\n";
x - x -1; //X變成 short 最大值 32767
cout << "short 最小值-1="<<x<<" , 會變成short 最大值\n";
/*ASCII 編碼*/
cout <<"輸出字元A: "<<'A'
<<"(char)65 " << char(65)<<"\n";
// 輸出ABCD...XYZ
x=65;
for(int i=0; i<26; i++){
cout<<char(x+i);
}
cout<<"\n";
//輸出abc....xyz
for(int i=0; i<26; i++){
cout<<char(x+i+32);
}
//將字元轉為ASCII(數字)
cout<<"\n輸出A的ASCII Code: "<<(int)'A'<<"\n";
cout<<"\n輸出z的ASCII Code: "<<(int)'z'<<"\n";
/*浮點數的準確度測試*/
float f = 1.1234567897775552345;
double d =1.1234567897775552345;
cout.precision(12);
cout<<"float value="<<f<<"\ndouble calue="<<d;
/*布林測試*/
cout<<boolalpha;
cout<<"\ntrue的值="<<int(true)<<"\t1的值為"<<bool(1);
cout<<"\ntrue的值="<<int(false)<<"\t0的值為"<<bool(0);
return 0;
}
----------------------------------------------------------
#include <iostream>
using namespace std;
int main()
{
//宣告儲存 圓周率 的常數PI
const double PI=3.1415926;
//宣告儲存 使用者輸入的圓半徑
double r;
//讓使用者輸入要計算的圓面積半徑
cin>>r;
//宣告儲存圓面積的變數
double area=PI*r*r;
//輸出圓面積
cout<<area<<"\n";
printf("圓面積為%.5f\n",area);
area = PI2 * 5r * 5r;
printf("圓面積為%.5f\n",area);
return 0;
}