tags: 大一程設 東華大學 東華大學資管系 基本程式概念 資管經驗分享

運算元與運算子

前言

在每個程式語言裡,運算、條件判斷都是不可或缺的要素,而常見的加減乘除就是一種運算,而這些運算所需的符號我們稱為運算子,也稱為 operator。

舉例來說: a + b +號就是運算子,而 a、b 我們稱為運算元,又稱為 operand。

常見的運算子

話不多說,額外補充連結先放這邊

裡面很多內容大家一定沒看過,但可以往下找到自己看得懂的地方。 比方說 + - * / 大家一定會,看程式文件的能力要從早就開始培養哦。 orange

這邊我們先看個小範例

int main(){ double a = 5, b = 3; double ans = 0.0; ans = a / b; }

這邊的 ans 會等於 1.66666,是一個無窮小數,而 / 這個運算子大家已經了解了,a、b 是運算元大家也了解了,這邊想跟大家談談,今天如果我不希望無窮小數的 6 寫那麼長,只輸出小數點後 3 位該怎麼辦呢?

補充 - C++ 的小數輸出與 I/O 格式化旗標

這邊的概念會牽扯到比較進階的內容,我們先不多做解釋,但希望大家先把語法記起來,因為老師考試會出哦。 我沒有洩題。 orange

int main(){ double a = 5, b = 3; double ans = 0.0; ans = a / b; cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); cout << "ans is " << ans << endl; }

這邊的內容真的比較困難,不用急著馬上就要了解,你可能一年後才會懂 跟我一樣,人常說十年磨一劍,千萬不要著急。 orange

I/O 格式化旗標補充連結

還記得 cout 是拿來輸出的吧,而在 cout 裡面 C++ 有提供格式化旗標這個工具讓我們使用,就是這邊看到的 setf 函式,全名為 set flag,而在這個函式裡面我們可以使用他提供的屬性來設定我們想要的輸出,上面的連結可以看到更多的屬性。

ios::fixed 表示以正常方式顯示(非科學記號) ios::showpoint 表示顯示小數點 cout.precision(2) 表示顯示到小數點後第二位

而如果今天你要取用某個類別底下的函式,要用「.」這個符號來取用這個工具底下的函式,這個我們會在之後做更多的說明。

先賣個關子,「.」這個符號,我都用「取用」這個動詞來說明他。 類別我們也以後再說,可以先記 cout 是在一個類別之中。 orange

以防這邊真的太難,我會錄影針對這個補充說明。 傳送門(門還沒開,他現在是壞的)

繼續回到運算子

除了基本四則運算之外,有一個符號大家也務必要認得,就是「%」這個符號,我們在數學中用百分比形容他,英文叫做 mod,在程式語言裡,它叫做「取餘數」,他在很多邏輯設計,無論是網頁互動、遊戲邏輯都蠻常使用到的。

舉例來說: 5 / 3 = 12,而這個餘數 2 我們就會用 % 這個符號來獲得。

int main(){ int a = 5, b = 3; cout << 5%3; //這邊會印出 2 }

在這邊放上 PPT 的內容,基本運算該如何寫,這個相信大家看過就會了! 這個在 PPT 第二章第 56 頁

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 →

+=、*=、-=、/=

在寫程式的過程中,我們很常會遇到要把同一個變數往上加的情況,尤其是在迴圈(有興趣可以去看迴圈的筆記),我們這邊只帶大家了解這個運算子是怎麼運作的。

int main(){ int my_age = 21; int my_age_two_year_later; my_age_two_year_later = my_age + 2; }

應該感覺得出來這種寫法很沒效率,有點刻意,我們有更快的解決方式。

int main(){ int my_age = 21; my_age = my_age + 2; }

我們其實沒有必要刻意在新增一個變數,而是直接指派給原本的 my_age 把他覆蓋掉就好,而這個寫法可以再更精簡。

int main(){ int my_age = 21; my_age += 2; // my_age = my_age + 2 = 21 + 2 = 23 my_age *= 2; // my_age = my_age * 2 = 23 * 2 = 46 my_age /= 2; // my_age = my_age / 2 = 46 / 2 = 23 }

這種寫法快速又簡潔,能夠少打很多字,而且全世界的大家都會用,寫程式長期下來就是你能花越少時間做越多的事越好。

而這個寫法在迴圈做一些累加、累乘的運算特別方便,之後馬上會有例子給大家練習。

當然運算子還有相當多種,這邊只列剛開始學程式會用到的給大家,後續新的也會陸續出現在筆記中喔。

舉例像是: ++、!=、>=、<=,很多很多,超乎你想像的多。