目標:
一、編譯器
在寫程式時,通常需要有軟體可以輸入、編輯程式,和軟體把程式轉換成電腦看的懂的指令。而編譯器便是把上述二者的功能結合起來的軟體,而這個概念就是「整合開發環境(IDE)」。
但是,需要注意的是,不同編譯器把源碼匯出(如.cpp),會導致用不同的編譯器打開程式產生亂碼,這是因為不同編譯器採用的語言編碼所導致的(可能還有其他原因),因此選好編譯器之後建議不要中途更改。當然,最好是全程用英文,是最省心的方式。
電腦編譯器推薦(windows為主):
Dev-C++:
優點:軟體小、基本功能大致俱全。
缺點:已停止開發(由其他團隊維護。已開源)、介面陽春、標準老舊因此部分新語法不支援。
Code::Blocks:
優點:同Dev-C++、開源
缺點:不支援中文輸入。
注意一下,這套是APCS中,C/C++的指定編譯器,考試現場用C/C++就是只能用這套,因此有要考APCS的人,建議可以開始熟悉這套編譯器-Code::Blocks
Microsoft visual studio:
優點:強大,且有很多模組可用
缺點:軟體龐大、部分功能需對windows的cmd有一些認識。
手機編譯器推薦:
Cxxdroid:
優點:穩定、功能相對完全
缺點:不支持中文輸入
到Google Play商店下載
coding C:
優點:穩定、功能相對齊全、支援中文輸入
缺點:暫時沒有
到Google Play下載
以上編譯器的安裝與使用,建議自行上網查教學,因為這類知識有時效性,在此僅作為給一個入門管道而已。
二、程式設計的四大原則
(一)輸入:讓使用者與程式產生互動,好比輸入數字等。
(二)輸出:程式在接受使用者的要求後,要能夠產生並告知使用者結果。
(三)侷限:寫出來的程式要有一定的執行範圍,或是效力。舉一個例子,在寫迴圈是,要考量到條件的終結。當然,目的是產生無限迴圈的例外。
(四)有效:寫出來的程式要是可行的,畢竟寫程式是用來處理一些問題的。
上面四大原則,是偵錯時思考的進入點,所以有一定的重要性。
三、解題思路
以下是常見的解題思路選項,然而每人的思維不同,沒有好壞,可依個人思維進行。
了解問題:直到問題的核心。
確認需求:了解輸入/出的要求之類的。
思考需要用到哪些工具:例如需要重複執行可以考慮到迴圈。
拆解問題:把問題細分,同時可以把不必要的問題給忽略,通常是拆得越小越好,越好解決。
解決問題,並思考有何漏洞。解法可能有多種解法,通常是以複雜度來決定最佳解,顧名思義,複雜度就是這個解法的複雜程度,若有多個解法,且都可以完全的解決問題,我們一般而言會選擇最簡單的解法,一來好判讀程式,二來降低未來維護的難易度,三來減少不必要的步驟提升運行效率。
偵錯。若有錯則修正。而修正有兩大地方,一是語法(較簡單處理),而是邏輯(建議找人)。
四、第一個程式
通常第一個程式時輸出“Hello, World”。至於為何是輸出“Hello, World”呢?一是簡單。二是有一個軼事,這是在叫一隻叫“World”的小狗。
範例:
#include<stdio.h>//呼叫標頭檔,讓編譯器知道從哪裡叫出函數(如在此的printf函數) /*int main為程式的進入點,告知電腦從這裡開始執行。而void是指“不回傳任何數值”之意"。int是回傳給電腦整數的意思,和下方return 0;配合,即為“程式順利執行完成後,回傳0給電腦”。*/ int main(void){ printf("Hello,World");//把字串印出來,用printf。並且,括號中的引號("")是用來夾住欲輸出的字串。但夾住的內容有一定格式 return 0;//回傳0表完成 }
這裡有一重點要注意的是,在打完原始碼後,要在整合開發環境(IDE)中(例如Dev-C++),尋找“編譯並執行”之類的選項,才能使程式在電腦中運行喔!
至於跟詳細的說明,之後會再講。
五、關於編譯器_for 想當/已是老手的
其實很多人都推薦使用Dev C++,筆者也不例外是使用Dev C++,但Dev C++支援的C函式庫太老舊,因此有些新功能無法使用(Code::Blocks也不例外,只是相對較新罷了)。那為什麼還要推薦Dev C++?因為輕量、易用,且初學者不大會用到太多新特性(new features)。
基本上選Microsoft visual studio是最佳解,倘若你仍想用Dev C++,或是有一套用許久的IDE捨不得換,可以參考下方的連結,自己試一試,或許有新天地喔。
- 下載新的函式庫,網址:https://jmeubank.github.io/tdm-gcc/。 選擇「MinGW-w64 based」下方的.exe程序,若是32位元就選第二個。
- 操作教學,網址: https://ordimaryman.blogspot.com/2023/12/devc.html?m=1
沒有留言:
張貼留言