創作內容

191 GP

[達人專欄] 跟著豬腳 C 起來:撰寫你的第一支程式

作者:解凍豬腳│2018-08-25 13:51:18│巴幣:539│人氣:8212
 

  在開始之前,我們先把鏡頭帶到 2015 年末。當時我們系上有一門必修課,那門課正是 C 語言。系上的同學們為著接下來準備要進行的考試加緊練習,拿到考古題以後就是卯起來研究一番。

  「問你喔,為什麼我這裡執行不起來啊?」一位同學把他的 code 拿給我看。



  我定睛一瞧,那份 code 別說是語法錯誤了,我完全是看也看不懂。

  「天哪!你到底在寫三小?」當然這是我心裡的 OS,畢竟我才沒有這麼惡劣。我抱持著善良、熱心助人的性子,開口問了:「這裡面很多基本的東西,錯得很離譜了,語法錯誤很多。你平常是用什麼方法練習的?」

  「我很努力了,我每天都把課本拿起來讀三個小時,可是還是不會寫。」他說。

  聽到他居然是用死背的方法來「練習」,我不自覺地嚇得抽了一口氣兼吃手手:「我寫程式寫了九年,還真的沒有開過任何一本程式設計的書本。」

  但他好像誤會我的意思了,不屑地回應我:「那是因為你是你。」

  我當場差點沒爆氣,但我沒表現出來,只是冷冷地告訴他:「如果你能把圖書館裡所有美術相關書籍的內容一字不漏、一像素不差地背起來,你也不會變成藝術家。」接著便瀟灑離去。

  最後他的 C 語言當然是被教授當掉了。



  「不聽豬腳言,吃鱉在眼前。」是的,寫程式就跟任何的技能一樣,是需要實作才能熟練的事情,雖然很重要但我就只說這麼一次喔,聽好了。倘若你只是死盯著書本上的範例程式碼或網路上的教學,並且試圖把那些用法記起來,那我保證你之後一定會遇上很多挫敗,同時更是不知道自己在幹嘛——不如這樣問吧,如果你把整張樂譜背起來了,難道你就會因此變成鋼琴高手嗎?

  在這裡我用我的過往經驗跟你保證,大多數的語法只要你常常用,想忘掉都難,不需要想著「怎麼這麼難記」,只要你不嫌麻煩,每次忘記就上網查一次,你會自然記住它。所以,請拋開死讀書的思維,實際做做看吧!

  同時這也延伸出了一個決定性的議題:「你是否能熬過令人抓狂的 debug 過程,進而成為一個優秀的程式設計師呢?」

  這是「所有」程式設計師在踏入這領域以後面臨的第一大關卡,沒有例外!無論你是使用什麼語言都好,你「不可能」一口氣寫出一份完美的 code。只要程式碼越多,我們就越有可能在寫程式的過程出錯——這就好像我們在畫圖的時候,總是需要橡皮擦之類的東西來擦擦塗塗的,不可能像印表機一樣一筆到位,你也可能在畫了一個二次元美少女以後,才發現她的右手有六隻手指。

  哼哼……所以你明白為什麼「工程師 = 爆肝」了吧?他們花最多時間的地方並不是「寫程式」這件事,而是排除程式的錯誤(還有在電腦前哀嚎)。

  程式錯誤可以粗分為兩種:一種是語法錯誤,例如你少了一個右括號,又或者是少了一個分號,導致編譯的時候就出錯,這種情況將會連 exe 檔都沒辦法正確地產生出來。另一種則是邏輯錯誤,例如你把某些流程搞反了,當然就有可能導致計算出來的東西錯誤。

  前者的問題還好辦,因為大多數的編譯器都會協助你找出這樣的錯誤,並且告訴你大概在第幾行的時候出錯,你可以很快地找到問題所在。後者就是最麻煩(也最常出現)的了,你可能在無意間忽略了某些步驟,使用了錯誤的方法來處理資料,導致資料不是你預想中那樣,計算出來的東西就不是你要的了。

  我們必須很有毅力地不斷重複「編譯、執行程式、關閉程式、修改程式碼」這樣的循環,甚至在幾千行程式碼之中,一行一行檢查,找到程式的邏輯問題所在。這個過程稱為「debug」,意思正是將程式中的「bug」(臭蟲、漏洞)一個一個抓出來,然後修正它。然而,我們很有可能在花了一整個下午解決完一個問題以後,才發現程式又另外出現了三個問題,我想若是同樣寫程式的網友們看到這段,必是心有戚戚焉。

  好的,說了這麼多,這些事情仍然得要實際體會才會明白,畢竟剛才一再強調過了,最重要的總是「實作」。接下來,請你打開 Google 的網頁,準備開始吧!

  首先,我們需要能使用 C 語言寫程式的開發環境。這裡我個人會推薦 Dev-C++,因為那是我自己的習慣。其實還有 Code::Blocks、Visual Studio 等開發環境可用,但 Dev-C++ 相對比較輕盈一些,可以直接把程式碼存成最單純的 .c 檔案,對於一個單純入門的初學者來說負擔較小,不需要產生龐大的專案檔或面對複雜的介面選項。

  我必須從現在開始就替你養成一個程式設計師該有的優良習慣:「與 Google 為伍」!所以,即使 Dev-C++ 本來就是免費的,我也不會在這裡提供載點,請你自己用 Google 找,相信你也可以找得到安裝的教學。

  接下來,我就當作你已經安裝好 Dev-C++ 了。沒有錯!我就是這麼地冷酷無情。

  首先打開 Dev-C++,然後使用「Ctrl+N」快捷鍵開啟新檔案,接著再從上方工具列的檔案 > 另存新檔(另存新檔似乎沒有快捷鍵,至少我手上的版本是這樣的),將欲儲存的檔案類型選為「C source files(*.c)」,自己隨意取一個檔名,接下來你的程式碼就會被儲存在這個檔案中。

  然後,請在你的第一行輸入:

#include <stdio.h>

  (註:接下來凡是有關程式碼的內容,為了避免讀者誤會,一切依照縮排規範。我將不使用雙全形空白作為開頭,以免因複製貼上而導致編譯錯誤等情形。本文後半段亦將說明「縮排」之作用。)

  這句可以幹嘛呢?實際上,C 語言本身是很乾淨的,只有提供一些基本的功能而已。我們寫程式的時候,當然會希望程式可以顯示出我們需要的東西(例如計算結果),這樣才方便我們操作它,對吧?但其實「顯示文字」跟「輸入資料」的功能,在「乾淨的 C 語言」當中是不容易做到的。這就好像一台沒有滑鼠、鍵盤的電腦主機一樣,即使我們成功啟動了主機,也無法輸入文字到電腦裡面。

  所以,開發 C 語言的那些工程師,另外把這些功能做出來了,並且寫在 stdio.h 這個檔案裡面。這個 stdio.h 相對於一台電腦主機來說,就好像滑鼠、鍵盤、螢幕這些重要的周邊一樣。

  簡單來說,接下來我們會用到的功能,就被包在「stdio.h」這個檔案裡面(這個檔案被放在 Dev-C++ 資料夾底下的某處,關於檔案位置等細節我不贅述,初學者只需要知道如何運用即可)。stdio 的意思就是「Standard Input/Output」,也就是「標準輸入、輸出」。它非常重要,因此幾乎所有用 C 語言寫出來的程式都會嵌入「stdio.h」這個「標頭檔」。

  所以,你學會了一個觀念:如果這個程式需要某些基本的功能,你可以透過 Google(沒錯,就是靠 Google)先去瞭解是否有哪個標頭檔含有該功能,然後你再透過 include 的功能把它嵌進來好好運用。

  例如,你想要計算 3 的 17 次方,但你不希望用程式土法煉鋼把它計算出來,這時若你是個已經有點經驗的人,你會知道 math.h 這個標頭檔裡面有個定義好的 pow() 函數,可以輕易地拿來計算 3 的 17 次方:

#include <math.h>

  利用上面這行,可以預先告訴編譯器,我們希望使用「math.h」這個檔案的功能——當然如果你的程式用不到 math.h 的話,就不必使用啦——如此一來,編譯器在編譯這些程式碼的時候,就會一併把 math.h 的東西讀取進去,這樣接下來才能使用 math.h 提供的功能。

  再來,請你空兩行(其實空幾行並不重要,但建議標頭檔跟 main 之間至少留一個空行、不要把兩樣東西擠在一起,那樣比較好看),輸入:

int main(void){

}

  這裡你會看到一些陌生的字彙:int、main、void。我們先從 main 開始吧!另外兩個我們就先不管了,以後我會說明。實際上,當我們在寫程式的時候,它並不是單純一連串的程式碼這麼簡單而已。為了讓它結構分明、並且便於 debug,我們通常會分為「主程式」跟「副程式」——以主程式來決定整個程式的主架構,引導整支程式的運作流程;當需要使用某些功能的時候,再呼叫副程式來運作。

  在 C 語言當中,編譯器都會把程式的「起點」設定在「main」這支程式上面,也就是說只要你使用 C 語言來寫程式,就必須要有「main」來讓編譯器知道程式該從哪裡開始執行。

  我們會注意到,在 main 的尾巴有 { } 符號,對吧?這裡的大括號,正是在告訴編譯器:「這裡面就是我想要寫的『main』的內容」。也就是說,若你將程式碼編譯完了,得出來的 exe 檔案會從 main { … } 之中的內容開始執行。

  當然也有些人會像以下的範例這麼寫,這個左大括號是否換行對程式不會有任何影響,但我個人不喜歡這樣,因為很佔程式碼的行數,沒有什麼意義,請依自己喜好決定:

int main(void)
{

}

  接下來,請你在 main 裡面輸入:

    printf("Hello, world!");

  沒有錯!這裡會出現幾個重點。

  首先,我們要學會使用的第一個函式叫做「printf」。這個函式正是「stdio.h」裡面已經幫你定義好的功能——只要使用(呼叫)它,就可以在程式畫面上顯示你想顯示的文字。printf 的名字是「print」和「format」的結合,這裡的 print 有「印出」、「打印」的意思,format 則有「格式化」的意義,未來我也會再說明何以格式化。

  其二,你會注意到我在這行程式碼的前面新增了四個半形空格(space),這是為了要和 main 配合,讓程式變得好看,使得程式設計師可以清楚明白地知道「誰屬於誰」,這在程式設計師口中稱為「縮排」。待會看看下面寫好的範例,你就會稍微感受得到了。有些語言的程式碼是否縮排,並不會有任何一點影響(例如 C 語言),有些則是依照縮排來決定程式碼的從屬關係(例如 Python),但即使在 C 語言當中縮排並不會影響程式運作,它仍然是所有工程師都必須養成的好習慣。

  其三,你會注意到我們在 printf( … ) 的尾巴使用了一個半形分號「;」。請注意,在 C 語言當中,這是非常重要的符號!每當我們執行完一件事情,就必須要使用一個分號,來告訴編譯器「這件事我執行完了」。

  其四,printf( … ) 裡面放的東西必須是「字串」,也因此我們會使用半形雙引號 " " 來把想要顯示的文字引起來,這樣編譯器才不會誤以為例子裡面的 Hello, world! 是程式碼。

  接下來,我們再換行,然後輸入:

return 0;

  在一般情況下,main 當中的「return 0;」不會影響運作,但仍然請你養成加上這句的習慣,關於這點我會在以後討論「函式」的時候一併說明「return」的意義。



  ——好了,就這樣。你已經寫完你的第一支程式了,就是這麼簡單:

#include <stdio.h>

int main(void){
    printf("Hello, world!");
    return 0;
}

  寫好的程式碼如上。接著你可以使用 F11 快捷鍵——在 Dev-C++ 當中,它的作用就是「儲存、編譯、執行」,也就是正式地把程式產生出來(並且實際執行),畫面會像這樣:



  你會注意到上頭寫著「請按任意鍵繼續……」,而後你隨意按下一顆鍵盤上的按鍵,程式畫面便會消失。這是因為 main 這個程式已經結束,它沒有任何東西能執行了,因此自動被系統關閉。接著,你會在當初儲存程式碼的資料夾底下看見同樣檔名的 exe 檔案,那就是靠著你的雙手親自寫出來的程式啦~

  不過,初學者會遇到的問題常常是:「為什麼我把這個 exe 檔案點開,畫面只閃一下就馬上消失了?」答案一樣,只是因為我們使用 Dev-C++ 執行的時候,為了方便使用者觀看程式的結果,因此 Dev-C++ 會在程式結束以前利用「請按任意鍵繼續……」這個「等待你輸入按鍵」的行為來暫停程式,以避免程式畫面自動消失的緣故。

  因此,倘若你想在不使用 Dev-C++ 的狀態下打開程式並且看到所顯示出來的文字,請你先將這個 exe 檔案移動到 D 槽,接著使用「Windows+R」的快捷鍵,叫出「執行」的選項,輸入 cmd 後按 Enter,你會先看到命令提示字元的畫面。

  在命令提示字元中,預設的起點位置會在 C 槽(系統槽)的使用者資料夾。但是,因為你的程式放在 D 槽,所以你必須輸入 D: 後按 Enter,這樣電腦就會知道你現在想指定 D 槽的東西,這時候你再輸入 test.exe,按 Enter,就能成功執行 D:\test.exe 這個你寫好的程式,並且成功看到畫面了。



  沒有錯,我們利用 C 語言,使用以上方法寫出來的程式,通常是依賴命令提示字元(MS-DOS)來執行的,也就是說它並沒有漂漂亮亮的視覺介面、按鈕等內容,這樣的程式稱為「Console Application」,完全依賴純文字的輸入、輸出來運作。

  如果想要輕鬆地做出有圖形介面的程式,或許你可以找時間研究一下 C# 和 VB.NET,這兩者對於想要快速建立成就感的入門學習者,都是不錯的選擇。不過,既然是想要替大家建立基本觀念,那接下來當然會繼續以 C 語言為主。下次我會開始說明「變數」的運用,也就是實際利用 C 語言來處理資料的方法了~希望本篇的內容對於第一次寫 C 語言的你有幫助,感謝你的觀看。
 
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4106836
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:第一次踏入墳場就上手|從入門到入墳|從入門到放棄|C語言|程式設計|C|C++|寫程式|程式|回收業者

留言共 49 篇留言

矣凜
ㄎ以教窩C#ㄇ >v<

08-25 14:02

解凍豬腳
你先幫我 C 出來08-25 14:03
多多君
謝謝分享~很受用!!
不過我目前是攻略PHP和各種JS哈哈
寫C家族的東西感覺都好好玩(仰望

08-25 14:07

Fat
我們系上一開始好像是教用文字編輯器然後手動gcc編譯
不然用個ideone

08-25 14:08

解凍豬腳
我們系是叫我們用 Pietty 連到系上的專門主機,然後在 Linux 系統上用 Vim 寫程式,再用指令 gcc 編譯 [e27]08-25 14:13
漣漪
C起來

08-25 14:08

矣凜
變…變態(°ー°〃)

08-25 14:11

永恆的春天
優質

08-25 14:19

騎車車兜風
我只學過java java是不是程式語言中算很簡單的啊

08-25 14:24

解凍豬腳
要看你所謂「簡單」的定義啦。其實單就語法來說, Java 算是很麻煩的,光是 print 一行字就要 System.out.println(),相比來說其他語言的 printf(), print(), alert() 看起來都友善多了 [e25]08-25 15:10
御娜

08-25 14:38

AVALON
永遠的 hello world!

08-25 14:44

薩圖里夫
請問return 0和return 1的區別為何?
我能在副程式return 0或是1讓主程式接收嗎?

08-25 14:48

解凍豬腳
先回答你的第二個問題:return 本來就是作為主程式和副程式之間的溝通管道用,那當然可以。在副程式裡做 return 的時候,就是在把值傳給主程式(這裡的主程式不是指絕對的 main,而是指相對的上一層),例如今天有三個函式:main()、f(x)、h(m)

當你在 main 裡面呼叫 f(x) 的時候,f(x) 最後 return 的東西當然會傳到 main 供其使用;當你在 f(x) 裡面呼叫 h(m) 的時候,h(m) 最後 return 的東西會傳到 f(x) 裡面,看是誰呼叫誰就對了。

但如果你要在 main 裡面討論 return 0; 跟 return 1; 的差別的話,就是擴展以上觀念(main 本來就已經是最主要的程式了,初學者不會需要運用這個細節,所以本篇才會不談),使得啟動它的外殼可以接收到來自你這整支程式最後給予的訊息。簡單來說,若你把 main 當成「『其他程式』的副程式」來使用的時候就會用得到。

通常在 main 裡面習慣上都是用 0(EXIT_SUCCESS)或 1(EXIT_FAILURE),你要 return 多少其實都不會影響主要運算結果,但倘若你今天是要跟其他程式配合,就要注意它的執行平台是否會支援這些參數,避免發生錯誤。08-25 15:04
頑固
可以收藏嗎

08-25 14:56

解凍豬腳
我知道如果我說不行的話你還是會偷偷收藏 [e29]08-25 15:06
鄭曉麥
必經之路,雖然這路上有幾根電線桿我都已經知道了

08-25 14:59

寒楓晴
用腳寫程式

08-25 15:01

蘿蔔
U質

08-25 15:11

貝果
debug的時侯真的會懷疑人生
很中肯

08-25 15:14

手槍64伯
期待後續

08-25 15:27

風鷹
高中電腦課的回憶 頭又開始痛了

08-25 15:44

早起的靈犬
我覺得不要前面說「不要死背」,然後開始教了之後卻又說「某某以後再解釋」會比較好。
當初剛學的時候,很多老師幾乎都是這樣跳著寫的,結果雖然我會寫,但也只是皮毛跟教科書式的寫法,然後有人問我哪些部分是啥的時候我根本講不出來......。
我知道你還是很用心的,gp奉上。

08-25 15:54

解凍豬腳
我的考量是打算等到講函式(函數)的時候再統合資料型態的概念一併解釋

感謝你,我會再思考一下如何調整架構的08-25 15:56
B.C.K
小弟大學時代跟閣下的同學是反的
程式作業 上機考易如反掌
但只要寫紙筆考卷立馬滿江紅
真的如同閣下所說 程式是需要實作累積經驗的
記得快畢業時 還有考試都拿高分的同學
連程式都不會寫

08-25 16:20

中二И小屁孩
看到推薦Dev-c++就GP
馬的 當初學C++的時候被騙去用visual studio,整個難用[e10]

08-25 16:28

Ctrl+Shift+W
大神求帶

08-25 16:34

梧優
無限的Debug
(高中選手仔玩VHDL感想)

08-25 17:07

初霜
偷c一小口

08-25 17:12

るい♑
我的第一個程式是用java搞出哈囉world[e20]

08-25 17:46

你看不見我
優文= =

08-25 18:06

LunpA
好強 怕

08-25 18:59

炭酥
想要停留畫面不是只要輸入system ("pause"); 就可以了嗎 感覺這樣比較簡單

08-25 19:01

新手方
地表最強(慢)IDE你敢嘴?

08-25 19:06

NWO☣蛇瀆洨湯☣
因為Visual C++用的是微軟自訂義的函式庫,不是原生的C++函式庫
類別跟函示命名完全不同,VC++確實設計視窗軟體比較省力,一堆類都幫你弄好了
但是不能用VC++的語法在Dev C++
學VC++用的教課書也只能在微軟的開發軟體
當初還買錯VC++參考書用在code::block,結果完全不能run
後來覺得開源的軟體都很好用很強大從linux到程式開發和開源office都有,
就摒棄什麼都要錢M$的軟體了

08-25 19:19

藍貓
除了每一個程式語言在語法架構和支援的功能、工具上有不同之處,基礎卻還是一樣的,這就跟繪畫,使用的工具不同(電繪板、電腦筆刷VS紙張、筆),但基礎大多都是那幾個。

簡單來說,程式語言就是,把你對解決問題的一套知識流程,換成用程式的語法和運算、工具模擬。

舉例來說,要算出2+1的結果,我們會先在腦中留一個紀錄2的空間,再留一個紀錄1的空間

最後再拿這兩個值作以某個運算推敲出3這個結果,腦內再預留空間存下這一個結果。

程式語言的作法也大同小異。

所以重點其實是訓練你腦袋對那套流程的推敲。

08-25 21:44

藍貓
所以即使你的程式和你的老師的程式不一樣,也不代表這件事有甚麼。

重點是你能否明白你是在"創造程式",而非"複製程式"。

"不死背"的關鍵在這兩個的差別。

08-25 22:04

浪雨
我覺得工程師會爆肝 是因為他要先看懂前一個傻逼寫出來的拉基 才能動工 如果連說明文件都沒有 那就更想死了(撞頭

08-26 01:57

超猛禿頭佬
如果說 debug 是把 bug 從程式取出的過程的話,
那 coding 就是把 bug 放進程式的過程。
-By 不知道誰說的

08-26 02:28

御影千竹
現在當然是Hello Python!才對嘛

08-26 11:43

御影千竹
Qt5也算不賴的圖形化介面R

08-26 11:44

UCC USA
不好意思 如果方便的話可以加個圖片嗎

還有程式碼有些是紅色的是正常的嗎

抱歉 這是第一次學著寫

08-26 21:41

解凍豬腳
https://truth.bahamut.com.tw/s01/201808/7fa2b33eb4a750c0253195d37710e4c8.PNG?w=30008-28 00:56
解凍豬腳
正常的,這種專門用來寫程式用的編輯器,通常都會為了方便閱讀而有顏色的分別08-28 00:57
扇扇
你對電子學之神教有什麼看法

08-27 00:06

解凍豬腳
那是啥啦 (¯—¯٥)08-28 00:57
R.J 龍哥
先訂閱起來,複習一下C

08-27 12:30

阿辰
上一篇文章做了基本的認識~
而這篇文章講得很詳細很易於入門~
甚至就連stdio.h等函式庫都講到了!

常常在寫程式時都會碰到一些縮寫字母的情形~
即使英文程度OK的人卻還是要死記一些字(如stdio.h)
但我的經驗中,我見到的網站,書本,甚至連老師都沒有說到"stdio"就代表"standard input output"以及它的功能(也有可能是覺得初學者不需要知道XD)!
而程式語法所代表的意思,通常在英文的api網站上寫的最詳細...
所以,英文程度好對寫程式也吃香(或善於google翻譯@@)

另外舉一些例子:
1.開cmd的介面ping一個網址就會回傳結果,但為什麼是輸入"ping"呢?
我後來發現這可能跟ping pong(乒乓球)有關~
你ping出一個東西,然後它pong回一個東西~
2.HTML語法的&nbsp;(空白)就代表英文的non-breaking space

所以這些字眼會這麼命名也有它的意義~

如果以前在高工時代拜讀這篇文章就好了XD
(也許我當時也不夠積極)
不過當時的老師不夠激發我想好好學習程式語言...
(也沒有講得很能讓人理解)
對於完全沒碰過的新手,這篇文章很實用!

[延伸,這是我短短幾個月的上班經驗]
如果換做自己寫的function或一些自訂義的東西,也是很講求命名~
命名的好,可以直接從名字就知道這個function在幹嘛,節省時間~
在"讓別人接手程式碼"或"自己隔很久在來"的時候也不會讓人搞不懂~

08-31 18:55

雲淡・風清 偵探模式
從按F11到跑出程式花了4.858秒正常ㄇ ==
是HELLO WORLD喔
我484該重灌

09-04 22:41

解凍豬腳
Compilation Time: 0.41s

奇怪,我就沒這樣 (¯—¯٥)09-04 22:47
雲淡・風清 偵探模式
是要更新了沒

09-05 12:34

解凍豬腳
…… 晚點啦 (¯—¯٥)09-05 12:45
山本
感謝之前解惑,後來搞懂結構再去看你之前的留言就把問題解決了
也讓我對程式又有了信心

所以Python有教學ㄇ

09-06 06:18

解凍豬腳
如果不要涉及一些 lib 的運用方法
Python 本身太簡單了,簡單到讓我覺得懷疑人生
只要有其他語言的基礎,Python 幾乎不用「學」

我不是在唬爛
之前我剛開始要接觸 Python 的時候
想著要用 Python 寫一些東西
於是一邊 Google 一邊手動寫
結果寫沒幾行就發現我要的東西已經完成了09-06 06:33
哈哈傻瓜
教得真好,我可以跟你一起討論嗎

09-28 15:40

解凍豬腳
歡迎09-28 18:45
別再打了我認錯就是了
U質,我現在學校正在學C語言XD

10-22 13:15

RTL忍者
推個 話說dev C++最近幾年沒再update了 是不是推個code block之類的比較好R 初學者用dev是真的蠻適合 功能清晰好用

12-12 10:04

太五專題生
可以問一下分號的意義是什麼嗎 雖然說是代表"結束一件事",不過我這樣用分行不是也可以代表一個動作的結束嗎?(還是在c的系統中換行的意義不是這樣?)

07-14 17:07

解凍豬腳
C 就是這樣設計,JavaScript 也是如此
坦白說,換行跟縮排在 C 裡面是沒什麼意義的
一個迴圈若你想只寫成一行,也沒有人會阻止你

所以就我自己會寫的語言來看
C、C++、C#、Java、JavaScript、PHP 等等,這些語言都是要分號
像 Golang、Python、Ruby、VB 這些就都不需要分號
但相對地,不需要分號的語言就可能會需要使用換行來分隔不同的行為
總而言之,多數的程式語言總會挑一種方法來做

題外話,至於從屬關係,主要有分三種風格
一種是大括號(C、C++、C#、Java、JavaScript、PHP、Golang)
一種是強制縮排(Python)
一種是 END 語句(如 Ruby、VB)
有興趣的話可以去看一下它們之間的差別在哪裡07-15 17:56
Root
非常受用的知識,謝謝!

12-17 12:48


以前真的超討厭使用Dev C++...總覺得隔壁棚的M$視窗化優質太多了,但授課老師堅持使用Dev C++...後來才知道這些差異

04-14 21:40

兔二:滾你奶奶的
//程式錯誤可以粗分為兩種:一種是語法錯誤,例如你少了一個右括號,又或者是少了一個分號,導致編譯的時候就出錯,這種情況將會連 exe 檔都沒辦法正確地產生出來。另一種則是邏輯錯誤,例如你把某些流程搞反了,當然就有可能導致計算出來的東西錯誤。

後來發現全形空白也很殺人。感謝豬腳大一系列文章,拜讀。

02-03 21:13

我要留言提醒:您尚未登入,請先登入再留言

191喜歡★johnny860726 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[達人專欄] 跟著豬腳 ... 後一篇:[達人專欄] 來向大家分...

追蹤私訊切換新版閱覽

作品資料夾

------------------ (0)

豬腳生活 (1)
日常雜談、巴哈大小事 (193)
煞氣a國中生 (7)
高中生活日誌 (55)
大學生活日誌 (34)
冬令營回憶錄 (19)
也許藏有一些小祕密吧? (3)
各式各樣的開箱文 (11)
貓科動物時間 (15)

------------------ (0)

繪圖創作 (1)
電繪插圖、草稿 (199)
短篇漫畫、單幅標語 (61)
上課太無聊的手繪塗鴉 (8)
不知道該怎麼分類的綜合作品 (18)

文字創作 (1)
草莓兵的國軍紀實 (14)
我與らい的點點滴滴 (12)
那些榮耀的時刻與心跳加速的瞬間 (60)
有感而發的隨筆之作、無法分類的短文 (17)

------------------ (0)

語言學習 (1)
日語:天気がいいから (5)
粵語:唔好再淨係識講粗口喇 (6)
英語:Hey, you! (1)

程式設計及電腦網路 (1)
系列文:跟著豬腳 C 起來 (10)
系列文:論壇網站運作原理 (3)
Go(Golang) (11)
Ruby / RGSS (7)
Visual Basic (13)
JavaScript (1)
各種原理 (17)

思想:多思考一下,世界會更不一樣 (1)
網路經驗、社會觀察 (23)
檸檬庫 (21)

數學:我來拯救你的期中考了 (1)
各類基礎觀念 (5)
國中生也能懂的微積分 (9)
微分方程 (0)

小說:用筆鋒劃出新世界的入口 (1)

繪圖:我也想畫出私巴拉西的美圖 (10)

------------------ (0)

施工中 (22)

不堪回首的痕跡、雜物堆放 (31)

------------------ (0)

未分類 (0)

teddy60216聯邦的ms
我更新了 來見識一下吧!看更多我要大聲說昨天22:09


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】