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

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

  • 編譯器以及程式語言的選擇:
我自己是用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的階層倍。
  • 物件導向:
現在開始你要「自訂變數」,這個變數裡面可以包含很多變數跟函數,物件導向最重要的用途是實現「封裝」的功能。
一般的程式碼,如果我要給其他人使用的時候,很像是給別人一個汽車的零件,你自己要知道怎麼裝這個零件車才會跑,而且你有很大的機率會裝錯。
但如果給你一個物件導向封裝的變數,就像給你一台車,你只要知道怎麼開就好,然後我也不讓你改裡面的零件,以免車壞掉。

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

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

為什麼會看到廣告
這個專題是專門寫給剛進入職場的新人看的,剛進入職場懵懵懂懂的,搞不清楚該學習那些技能嗎?是不是常常跟同事相處不順利?常常無法達到主管的期待?沒關係,這個專題都有解答。 你可以在這個沙龍發文討論以及交流。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
我身邊開始寫作的人,沒有一個後悔的。 剛開始寫作時,我就看到了「注意力寫作法」這個方法。因為很多人靠這個簡單做法創造了「千萬流量」,而且「不只一次」。注意力寫作法的最大效果,就是讓人願意開始看你寫的文章,並從頭把文章看到尾,看完之後還能「按讚、分享、轉發
好快就30歲了,在職場上好像沒有甚麼可以發揮的空間,進來職場,沒有不「挫折」的,因為需要的技能與在學校差太多。 職場與學校最大的差別在於:職場中的每一件事都牽涉到「利益」。進入職場後,你也會感覺到:以前在學校學習到的人際互動方式,放到職場中幾乎全部「失效」。  
原本看似風、馬、牛不相及的三個領域,在我的人生中意外糾纏在一起,於是我抽絲剝繭,每抽一次,就寫出一頁深刻的篇章。 其實一切都是意外......。本來研究所考上高考的我,要先去當公務員。但後來因緣際會進了現在這家工程顧問公司,又輾轉到了我沒有想過會做的「監造」領域,一轉眼也過了四年。
是不是覺得把專業領域的事說到一般人都「聽得懂」很難?最簡單的方式,就是從生活中出現的事物來做比喻......
古代最有權力的人就是最會寫作的人,也就是「狀元」,結果現在最有影響力的人也是最會寫作的人,想想真的是蠻有趣的。原來,不管過了幾百年,事物的核心都不會改變......
你是否常常覺得自己文章的版面長的不好看?想要去找圖片來放,但是又覺得很麻煩,其實你可以使用Pexels來輕鬆解決這個問題,只要一張圖片,版面就會大大加分。
我身邊開始寫作的人,沒有一個後悔的。 剛開始寫作時,我就看到了「注意力寫作法」這個方法。因為很多人靠這個簡單做法創造了「千萬流量」,而且「不只一次」。注意力寫作法的最大效果,就是讓人願意開始看你寫的文章,並從頭把文章看到尾,看完之後還能「按讚、分享、轉發
好快就30歲了,在職場上好像沒有甚麼可以發揮的空間,進來職場,沒有不「挫折」的,因為需要的技能與在學校差太多。 職場與學校最大的差別在於:職場中的每一件事都牽涉到「利益」。進入職場後,你也會感覺到:以前在學校學習到的人際互動方式,放到職場中幾乎全部「失效」。  
原本看似風、馬、牛不相及的三個領域,在我的人生中意外糾纏在一起,於是我抽絲剝繭,每抽一次,就寫出一頁深刻的篇章。 其實一切都是意外......。本來研究所考上高考的我,要先去當公務員。但後來因緣際會進了現在這家工程顧問公司,又輾轉到了我沒有想過會做的「監造」領域,一轉眼也過了四年。
是不是覺得把專業領域的事說到一般人都「聽得懂」很難?最簡單的方式,就是從生活中出現的事物來做比喻......
古代最有權力的人就是最會寫作的人,也就是「狀元」,結果現在最有影響力的人也是最會寫作的人,想想真的是蠻有趣的。原來,不管過了幾百年,事物的核心都不會改變......
你是否常常覺得自己文章的版面長的不好看?想要去找圖片來放,但是又覺得很麻煩,其實你可以使用Pexels來輕鬆解決這個問題,只要一張圖片,版面就會大大加分。
你可能也想看
Google News 追蹤
Thumbnail
「蛤!?到底什麼是編碼?網路上都查不到一個簡單的定義!」 剛進研究室的你,被教授指派了許多任務,其中一件是要把質性資料給「編碼」,你是不是也像我一樣霧煞煞QQ 快點進來看看,我幫你統整了一篇簡單易懂的說明,讓你快速了解編碼是什麼!!
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
數學系的訓練,與上面閱讀原始碼的優先順序,本質上是反過來的。在數學的訓練中,是先把函數定義的非常清楚,再進一步去看函數應用在具體的數據上會發生什麼行為,然後就到此為止,不太會再有進一步的討論。但如上面西尾泰和所述,工程師看事情的角度,是先掌握全局,然後再進一步細化每一層的細節。
Thumbnail
我其實不算程式出身。 我在香港中學畢業(亦則高中畢業)後,飛到台灣讀多媒體,大二才接觸程式。 如果是程式老手,可能可以直接用C++、Python這些程式語言來做遊戲。但新手如(當時的)我,需要一個遊戲引擎。 事實上,程式老手也會需要遊戲引擎。畢竟直接使用程式碼大概就和鑽木取火差不多,而遊戲引擎
Thumbnail
這個系列是專門寫給 0 程式設計經驗的初學者的 C++ 教學, 無需架設環境,直接開始無痛入手 C++ ~
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
這個系列的文章主要專注於物件導向到函數式編程的差異與分析,並針對概念與機制上的不同進行比較。很多人說物件導向和函數式編程沒有哪個比較好的問題,只有哪個比較適合的問題,然而我並不這麼認為,我透過這一系列的文章從各個角度討論它們之間的優缺點就是為了闡述我的觀點。物件導向錯在沒有理論基礎,但它贏在熟悉性,
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
「蛤!?到底什麼是編碼?網路上都查不到一個簡單的定義!」 剛進研究室的你,被教授指派了許多任務,其中一件是要把質性資料給「編碼」,你是不是也像我一樣霧煞煞QQ 快點進來看看,我幫你統整了一篇簡單易懂的說明,讓你快速了解編碼是什麼!!
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
數學系的訓練,與上面閱讀原始碼的優先順序,本質上是反過來的。在數學的訓練中,是先把函數定義的非常清楚,再進一步去看函數應用在具體的數據上會發生什麼行為,然後就到此為止,不太會再有進一步的討論。但如上面西尾泰和所述,工程師看事情的角度,是先掌握全局,然後再進一步細化每一層的細節。
Thumbnail
我其實不算程式出身。 我在香港中學畢業(亦則高中畢業)後,飛到台灣讀多媒體,大二才接觸程式。 如果是程式老手,可能可以直接用C++、Python這些程式語言來做遊戲。但新手如(當時的)我,需要一個遊戲引擎。 事實上,程式老手也會需要遊戲引擎。畢竟直接使用程式碼大概就和鑽木取火差不多,而遊戲引擎
Thumbnail
這個系列是專門寫給 0 程式設計經驗的初學者的 C++ 教學, 無需架設環境,直接開始無痛入手 C++ ~
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
這個系列的文章主要專注於物件導向到函數式編程的差異與分析,並針對概念與機制上的不同進行比較。很多人說物件導向和函數式編程沒有哪個比較好的問題,只有哪個比較適合的問題,然而我並不這麼認為,我透過這一系列的文章從各個角度討論它們之間的優缺點就是為了闡述我的觀點。物件導向錯在沒有理論基礎,但它贏在熟悉性,
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護