2023-03-27|閱讀時間 ‧ 約 7 分鐘

不是資訊相關科系畢業的,怎麼學寫程式?

這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。
怎麼學寫程式?
怎麼學寫程式?
我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了,也有當了一年的程式課助教。
如果你完全不會寫程式,一定要看這篇文章!會對你非常有幫助,你會知道要學什麼,還有知道要學到什麼程度大概才夠轉到資訊業。如果你已經會寫一點程式,或已經在資訊業的非本科生,也可以看看是不是有什麼漏學的,導致你寫程式的功力無法進步。
以下學習歷程我覺得有可能把你「勸退」的,我會特別強調,千萬不要放棄,因為多練習、多想就可以突破了。

  • 編譯器以及程式語言的選擇:
我自己是用visual studio(編譯器)寫C++語言,程式語言是寫給編譯器看的,編譯器會看你寫的程式內容再製作程式。
編譯器以及程式語言都有「嚴謹度」的問題。嚴謹度低的編譯器以及程式語言,當你寫的程式碼有一點錯誤的時候,還是會幫你製作程式出來。
這對學程式是一個很不好的事情,你有可能從頭到尾都不知道,自己有些觀念是不正確的。如果你不知道怎麼選,就跟我一樣就好,因為這樣的配套是很嚴謹的。
當你學會了寫程式的觀念之後,要轉換語言其實很容易,所以不用太糾結在要學哪個程式語言比較好,重點就是要選一個嚴謹的編譯器以及程式語言。
通常寫程式的第一步,就是你要先製作一個可以在螢幕上顯示("Hellow World")的程式,成功的話就代表電腦設定應該都沒問題,就可以開始學後面的觀念了。

  • 變數(資料型態):
這是寫程式的第一課,變數就是類似X,Y這種代數,變數只是一個空殼,你可以隨時替換裡面的資料。
變數是有型態的,不能夠亂放資料進去,像整數變數(int)只能放整數,浮點數(float)只能放小數,字元(char)只能放字元,變數這個部分一定要學好,不然未來會一團亂。
  • 陣列:
把一堆函數排排站,第一位是0號,例如:a[0]。可以擴充成多維陣列,例如:a[1][2],通常最多用到2維而已,再多容易亂掉,排排站的字元就會變成字串,也就是一串字母,有些語言直接就有字串的變數,有些沒有,這也是剛學程式的一個課題。
  • 檔案輸入及輸入:
就是從檔案將資料輸入及輸出到檔案內,通常都是從記事本輸入及輸出,因為像word這種檔案其實裡面都有一堆隱藏的東西東西,你用記事本打開就知道了,只有記事本是乾淨的。
檔案輸入及輸入有對應到變數,你一定要知道輸入了甚麼資料型態,輸出了什麼資料型態,來選用相對應的變數,不嚴謹的編譯器以及程式語言會允許你混用變數型態,聽起來很不錯對吧?但是你很快就會嚐到苦果!
  • 函數:
跟excel的函數用法差不多,但是你要自己定義函數的input(參數)跟output(回傳值)。
練習的時候,你要先寫一段可以執行的程式碼,然後再丟進函數裡面,再來把函數放進頁面裡面。
  • 迴圈:
顧名思義就是會一直重複循環指令,有while跟Do兩種語法,需要設一個條件跳出,不然會變無限迴圈(當掉)。
  • 除錯(debug):
其實從頭到尾都要debug,但是學到這時候還不太會的話,你可能會學不下去。
如果是一直顯示語法錯誤的話,先把指令複製道別的地方後都刪掉,然後再慢慢加指令進來,看看是哪一個指令有問題。
如果是結果錯誤的話,要在螢幕一直輸出,檢查哪個指令出現你不想要的結果。
  • 判斷式:
用if或select語法來判斷什麼條件要執行什麼指令,但select我不太常用。
  • 遞迴:
寫一個函數,這個函數包含自己,所以當我啟動這個函數的時候,他又會啟動一個自己
例如:這個函數叫做function,那在function裡面又會呼叫function,於是會一直呼叫下去,直到你設定的回傳條件,就會全部收回來,變成一個結果回傳到主要頁面中。
這個用在你不知道要做多少次,才能找到答案的時候(窮舉法)。
  • 指標:
學會指標你就進階到「下一關」了,指標是很多人被「勸退」的一關,當然你能夠走到這邊已經不容易了。因為上面那些指法並不會獨立存在,而是會全部互相交纏在一起。所以當你觀念不太清楚或是練習不夠的時候,根本找不出錯誤在哪。
指標就是變數的地址,就是像你家地址:幾巷幾號幾樓,因為指標跟後面要學的資料結構很有關係,所以是一定要搞懂的。

這時候語法你已經學的差不多了,再來要學的是其他門課程:
  • 資料結構:
前面在練習的時候就會用到資料結構了但是因為「串列」才是最常用的而串列需要用到「指標」的觀念所以到現在才講。其他像是「樹狀結構」之類的你應該本來就知道的差不多了。
串列的觀念就是:我只知道你家的地址,不知道其他人家的地址,而每個人都是這樣。所以我要找人的時候就要一個傳一個,沒辦法直接找到那個人。如果結構要無限擴張的話,這種做法是最好用的。串列實作還需要物件導向的觀念,物件導向後面會講。
  • 演算法:
演算法就是可以在「有限次數」內求解一個問題的「方法」。
每個演算法都有一個複雜度,就是隨著規模擴張的時候,求解的時間會多幾倍,有可能是n倍,也有可能是n的階層倍。
  • 物件導向:
現在開始你要「自訂變數」,這個變數裡面可以包含很多變數跟函數,物件導向最重要的用途是實現「封裝」的功能。
一般的程式碼,如果我要給其他人使用的時候,很像是給別人一個汽車的零件,你自己要知道怎麼裝這個零件車才會跑,而且你有很大的機率會裝錯。
但如果給你一個物件導向封裝的變數,就像給你一台車,你只要知道怎麼開就好,然後我也不讓你改裡面的零件,以免車壞掉。

學完物件導向之後,你的程度差不多可以轉行了,再來其他問題應該難不倒你。雖然後面還有一些視窗化程式、網頁語言、伺服器等等東西要學,但你應該稍微研究一下就會了。
學寫程式絕對不要落入程式語言要選哪個的迷思,因為正確的觀念只有一種而已,程式語言跟編譯器只是幫助你能夠了解這些觀念,並不是重點。

👉如果你喜歡文章請按下愛心❤️
👉想隨時複習請按下收藏】✅
👉如果你想供寶貴的意見請留言】✅
👉文章若有幫助也歡迎贊助】【追蹤】☕
這些都將成為我持續前行的動力🚀

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.