類C(C-like)程式語言簡述。

前陣子洋洋灑灑的寫了不少與程式設計基礎有關係的文章後,相信想接觸的朋友們一定會有所疑惑。

你們應該會想問:「這是什麼東西?」、「這是啥米鬼東西? 看都看不懂…」、「文章? 我她X的看不懂這是三米小朋友…」…等等之類的。

我承認,我這是故意的,因為我想讓初入門的各位對這有點些微的概念,我同時也希望大家能夠自動自發地去查詢相關的資料,然後藉由自學與自尋的過程中讓自己對程式設計以及其語言有更深入的了解,進而引起各位對於程式設計的種種興趣以及降低程式設計的入門門檻… 以上這些都是我當初想架設這個網站初衷的一小角落,剩下的,改日再講,因為今天要講的主題不是這個 :P

C like ? C 喜歡…?

不是C 喜歡啦!

在這裡的 like 翻譯作 “像”,也就是”像 C”的意思,現今很多程式語言的發展都是來自於C,並且以它的結構再繼續發展而成。

C like 程式語言除了C家族自有的 C 與 C++之外,還有 C# 、Java、Objective C、Perl、DGoPythonPHPJavaScriptLPC…等等。

而他們的共同特色是:

  • 語法結構類似
  • 衍生自 C 語言

好吧,老實說我只想得出這兩點,因為就我目前所接觸過的類C語言(C、Java、PHP、JavaScript)來看,就只得出上述這兩點。另外值得一提的是,這篇文章所列出的類C程式語言有時長相並不太像C,以 Python 為例子,它的程式撰寫方式就與C完全不同。 在 Python 中看不見我們在一般類C語言中熟悉的左右大括號,取而代之的是冒號與縮排。

而在判斷式迴圈中常看到包圍判斷式的小括號也不見蹤影…整個語法結構上很簡單,但不能否認的是,他的概念以及歷史淵源都與 C 有著相關性,只是撰寫風格與方式不太相同。

類C程式語言有哪些部份是相同的呢?

剛剛有提到,類C程式語言語法結構基本上類似,除撰寫格式與風格可能不太相同之外,各種程式語言之間並不會有太過巨大的差異。

就拿程式語言最基本的迴圈控制來舉例好了。 在大多數的類C程語言中以下面這種方式就可以完成簡單的迴圈控制。

//j累加100次
int i,j=0
for(i=0;i<100;i++){
  j++;
}</pre> 判斷式上也可以是以同樣的方法就能達成。 

<pre class="brush:cpp">//如果...否則
int j, i = 10;

if(i==10){
  j = 100;
}else{
  j = 0;
}

以上所舉例的兩種方法,除少數程式語言無法直接這樣撰寫與動作外,都能夠在類C程式語言中執行,當然,你也得要把你選用的程式語言的基本框架寫好才行。

資料型態

再來是資料型態的宣告方式,在程式語言中會有以下這幾種資料型態:

  • 整數:int
  • 字元:char
  • 位元:byte
  • 布林值:boolean
  • 長整數:long
  • 浮點數:double
  • 浮點數:float (比double短)

其宣告方式很簡單,只要在變數前面加上想要宣告的型態即可。

這裡提一下宣告與變數之間的關係好了。 宣告某一變數為某資料型態就是告訴電腦或編譯器:「這個變數是某資料型態,不要弄錯了。」 這算是一種分類,也算是一種記憶體的管理,因為每個宣告的變數都會有屬於自己的記憶體空間(長度),而大小就要看宣告的類型為哪一種型態。通常這些資料型態的長度的定義失幾乎相同的,除了某些特定情形(例如:嵌入式 C語言)會有所差別外。

運算式(或稱運算子)

電腦備至造出來的最初目的就是為了計算,所以運算式在程式語言中當然不能少,而程式語言中的運算式呈現方式與日常生活其實沒有太大的差異。

基本數學(算術)運算子的呈現方式如下:

  • 加:+
  • 減:-
  • 乘:*
  • 除:/ 若需要比較值之間的差異則使用比較運算子:

  • 等於:==

  • 大於:>
  • 小於:<
  • 不等於:!=
  • 大於等於:>=
  • 小於等於:<=

值得注意的是「等號」這一個意思。

在許多程式語言中的「單一等號」也就是「=」的意思與日常生活中的意思是有差異的,怎麼說呢? 如果你有看到前面的程式語言你就會發現這個等號有點像是…

把等號右邊的值放進左邊的變數裡,這樣的意思。

以數學的概念來說,就像是「x = 10  y = 20」或「y = 2x+10」這樣的感覺。總之,就是一種對等關係,但不是用來作為算術比較的符號。

運算式中還有一種是為了數位邏輯而生的邏輯運算式,他的呈現方式如下:

  • 或 (OR):|、||
  • 及 (AND):&、&&
  • 反向 (NOT):!

這邊屬於數位邏輯的範疇,不過只有三種,所以我還是解釋一下。 (以下範例利用 if 判斷式作為程式執行判斷的依據,若不懂,可參考此篇文章。)

「或 (OR)」就是一邊成立則成立,即式子兩邊的運算式若有一方為 true (正確) 則輸出結果就是 true (成立)。範例:

int i=10, j=5;

//如果 i 等於 10 或 j = 8 的話...
if( i==10 || j==8 ){
//就執行裡面的程式碼
}

「及 (AND)」則是需要兩邊成立才會成立,即式子兩邊的運算式需要都為 true 才會輸出 true (成立)。範例:

int i=10, j=5;

//如果 i = 10 且 j = 7 的話...
if( i==10 && j==7 ){
//就執行裡面的程式碼
}

//以這段程式碼來說,除非將 j 的數值改為 7 否則 if 判斷式永遠不會成立。
//也就是說, if 判斷式裡面的程式碼式不會執行的。

「反向 (NOT)」則是把數值反向,就是把對變成錯或把錯變成對(硬拗的意思?)。範例:

int i=10, j=5;

//如果 i = 10 且 j = 7 的話...
if( !(i==10 && j==7)){
//就執行裡面的程式碼
}

//這段程式碼與上面那一段範例的程式碼是的結果是不相同的。
//在這一段程式碼裡因為加入了NOT,所以會執行if裡頭的程式,也就是結果相反的意思。

陣列

陣列是很有趣的一個東西,他可以拿來當作存放大量資料的區塊,而在大部分的程式語言中皆有這像特性與功能。而這一部份在之後會有一篇文章特別針對陣列來撰寫,屆時再請各位詳加閱讀與指教。

// ———————————————–

最後,這篇文章的主要目的是想要讓大家了解基本的程式語言架構與一些基本知識。

再來,這些內容是我這些年來研究程式設計時的一些心得,希望藉此分享給各位,讓各位能用叫簡單的方式入門與了解程式設計的一些概念,最重要的是,學習不需要死記與死背,多練習、多活用、多思考才能學到真正的知識。

不要盲目與盲從,跟隨自己的心,好好的、用心的去讀,相信你會學到更多令你自己感到訝異的事物。

然後,希望這篇文章有幫助到需要的人,也歡迎大家給點建議與批評喔~

參考資料:

獨夜: