--- 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; }