NOTICE

 任何跟文章無關的閒聊,請愛用 留言板(Guestbook)。

 想要快速瀏覽主題,請點選單 目錄 標籤。

 停止更新ing,請見諒。 <(_ _)>


顯示具有 介紹 標籤的文章。 顯示所有文章
顯示具有 介紹 標籤的文章。 顯示所有文章

9月 19, 2010

【介紹】Code::Blocks

@
  為了能撰寫 C/C++ 的程式,你可能需要在自己的電腦中建置一套 IDE(Integrated Development Environment,整合開發環境),卻又不想用需要付費、又只能在 Windows 上執行的 Visual Studio(雖然 VS 也有提供免費的 Express Edition)。

  或許會有人推薦你使用 Dev-C++ 這套 open source 的免費軟體。不過根據我自己使用過的經驗,Dev-C++ 時常在執行到一半的時候當掉。而且其最新版本 4.9.9.2 是在 2005 年 2 月發佈的,顯然已經好幾年都沒有在繼續更新。

  在這裡,我要為各位介紹另一款同樣免費又穩定的 IDE - Code::Blocks。


  Code::Blocks 是一個 open source 的 IDE。由於其是由 wxWidgets 寫成,因此也具備了跨多種平台(Windows、Mac OS X、Linux 等)的能力。

  Code::Blocks 也支援多種編譯器(compiler),如常見的 GCC / MinGW、Microsoft 的 Visual C++、Intel 的 ICC 等。除此之外,Code::Blocks 還支援匯入 Dev-C++ 與 Visual C++ 專案的能力,可謂功能相當豐富。


  在這裡簡單示範一下如何在 Windows (XP Pro SP3)下安裝 Code::Blocks。

  首先,先進到下載頁,找到 Windows 用的 binary 版本。當前的最新版本為 10.05,提供了 "codeblocks-10.05-setup.exe" 與 "codeblocks-10.05mingw-setup.exe" 兩個安裝檔,分別為單純的 Code::Blocks 與包含 MinGW 的版本。

  在這裡,我選擇的是不包含 MinGW 的版本。


  下載完成、執行安裝檔後,會出現選擇安裝元件的畫面。基本上,遵照預設值,直接按 "Next" 即可。


  接著選擇安裝的目錄。


  接著就可以等待安裝完成了。



  在 Code::Blocks 安裝完成之後,我們還需要安裝 MinGW 作為其使用的編譯環境。(假如在第一步下載的就是包含 MinGW,這一步可以跳過。當然,你也可以選擇 MinGW 以外的編譯環境,如 ICC。)

  MinGW 的安裝方式請參見這篇。


  第一次開啟 Code::Blocks 時,它會請你選擇一個預設的編譯器。後面有寫 "Detected" 的,代表 Code::Blocks 在你電腦偵測到的已安裝的編譯器。

  這裡我們選擇 "GNU GCC Compiler"。


  安裝到這邊,就可以開始使用 Code::Block 了!



  想利用 Code::Block 新增一個 C/C++ 的檔案,請點選選單的 File > New > File...。


  接著選擇 "C/C++ source"。


  然後選擇 "C" 或 "C++"。


  並設定檔案建立的路徑。


  撰寫完程式,再按下工具列的 "Run" 就可以編譯執行了。


Reference:

2月 06, 2009

【介紹】GCC / MinGW

@
  說到 C/C++ 的開發環境,就不能不提到 GCC。GCC 是 GNU Compiler Collection (GNU 編譯器總集)的縮寫,為 GNU 計畫中一套多種程式語言編譯器的集合。在諸多 Unix-like 與 Mac OS X 中都成為其內建的程式開發環境。

  其實,GCC 最初的名稱為 GNU C Compiler(GNU C 語言編譯器)。在當時,GCC 還只是一個專門處理 C 語言的編譯器。而在後來 GCC 擴展之後,慢慢的也可以處理 C++、Fortran、Ada、Java、Objective-C 等語言。發展至今,就是現在我們所看到編譯器總集了。


  雖然在 Unix-like 與 Mac OS X 系統中都已經內建了 GCC 的環境,但是若要在 Windows 系統下擁有相同的環境,你可能就需要安裝 MinGW 了。

  MinGW 即 Minimalist GNU for Windows,為包含了 GCC、GDB(GNU Debugger)、binutils 等工具的 GNU 工具組(toolchain)移植到 Windows 平臺上的版本。其包含了許多提供 Windows API 的標頭檔以及函式庫,使程式開發者能直接使用它來開發原生的(native) Windows 程式。


  想要在 Windows 平臺上安裝 MinGW,我們需要先連結到 MinGW 的下載頁。



  點選 MinGW 5.1.4(請選擇你當前的最新版本)。



  點選 MinGW-5.1.4.exe,就能夠下載了。



  下載完成以後,就能開始安裝的動作。

  首先,安裝程式會詢問你,是否要在檔案下載好後要直接安裝檔案。

  這裡我們先解釋選擇 "Download and install",也就是下載完成之後直接安裝檔案。



  接著會詢問要安裝哪一種封包。你可以選擇舊版(Previous)、當前版(Current)、或是先行版(Candidate)。

  這裡我們建議選擇穩定的 "Current" 版本。



  然後我們需要選擇要安裝的部份。

  其中,runtime (即 runtime library)是 MinGW 運行的基礎;而 w32api 則為 Windows API 的標頭檔與函式庫。

  另外,make 則是透過 makefile 來組織程式原始檔,以進行編譯原始碼工作的工具。

  而剩下的 core compiler、g++ compiler、g77 compiler、Ada Compiler、Java Compiler 與 Objective C Compiler,則分別為 C、C++、Fortran、Ada、Java 與 Objective C 的編譯器。

  為了要建置完整的 C/C++ 環境,這裡我們需要勾選 runtime、w32api、core compiler、g++ compiler 與 make。

  當然,假如需要的話,你也可以自行勾選下載其它編譯器。



  接著選擇 MinGW 的安裝目錄。









  接著等待它下載、安裝之後就完成了。




  而若是我們選擇 "Download Only",也就是只下載不安裝呢?



  這裡同樣會詢問你要安裝哪一種封包。

  當然囉,我們還是選擇穩定的 "Current" 版本。



  接著選擇要安裝的部份。

  同樣為了建置完整的 C/C++ 環境,這裡我們需要勾選 MinGW base tools、g++ compiler 與 MinGW Make。







  等待下載完成之後,你應該能夠在 MinGW 安裝檔的相同目錄下,看到由安裝程式下載下來的壓縮檔。

  你只需要將它們解壓縮,並放置到你想要的地方就可以了。


  最後,我們還要做一點環境設定。

  首先,請在「我的電腦」按下右鍵,選擇「內容」。



  接著選擇「進階」標籤頁,按下「環境變數」。



  若是你 MinGW 的環境是要給所有使用者使用的,你需要把 MinGW 目錄下 bin 資料夾的完整路徑加到系統變數 PATH 的尾端。例如:C:\MinGW\bin。

  若是 PATH 變數中已有變數值,則請先在尾端加入分隔符號 ";",再加入 bin 資料夾的目錄。



  而若是你的 MinGW 環境只想給當前的使用者使用,你則要改成把 MinGW 目錄下 bin 資料夾的完整路徑加到使用者變數 PATH 的尾端。

  同樣的,若是 PATH 變數中已有變數值,則請先在尾端加入分隔符號 ";",再加入 bin 資料夾的目錄。


  接著,讓我們測試一下 MinGW/GCC 是否已經配置妥當了。

  若是在 Unix-like 的系統,請開啟你的 shell;若是在 Windows 系統下,請按「開始功能表」並點選「執行」,輸入 "cmd" 以開啟命令提示工具。

  接下來,你只需要輸入:

gcc -v

  或是:

g++ -v

  假如有出現 GCC 的版本資訊,就是成功囉!


相關連結:
.GCC - http://gcc.gnu.org/
.MinGW - http://www.mingw.org/

1月 30, 2009

【介紹】USACO - How To Start

@
  延續前一篇的介紹,現在讓我們看看要如何申請一組 USACO Trainng 的帳號,並開始我們的解題之路!



  首先,來到 USACO Trainng 的首頁,點選 "Register here for a username/password" 開始註冊。


  接著就依照欄位,把資料填完就可以了。

  選填欄位可以先全部不填,等收到認證信登入之後,網站會再要求你把需要的選填資料填完。


  註冊成功之後,應該會看到如上圖的畫面。

  接著到註冊用的電子郵件信箱收信之後,應該會收到一封主旨為 "USACO Training Registration Info with Password" 的信。內文如下:

Here is the information you need to participate in the USACO Training Program:

* Use http://ace.delos.com/usacogate as the gateway URL.

* Your permanent personalized username and password are:
  Name: (你的名字)
  UserName: (你的帳號)
  Password: (你的密碼)

Please save this UserName and Password as they are permanently assigned to you.

Rob Kolstad, Head Coach

USA Computing Olympiad * kolstad@ace.delos.com * 877-753-3567


  然後回到首頁,用剛剛信上寫著的帳號密碼登入。


  如果剛剛沒有填國家的話,應該會顯示上圖的畫面。

  找到自己的國家名稱,點下去就對了。


  如果剛剛沒有填中學畢業年的話,應該會顯示上圖的畫面。

  基本上,網頁上面有說:假如不想洩漏(我是懶得查XD)畢業年的話,直接填入 "9999" 即可。


  接著就能進入上圖的畫面了。

  不過記得,由於密碼是網站給你的,為了避免忘記密碼,請記得點選上方的 "Change Password" 修改密碼。


  假如點選了 "Change Password",照著填上去按下 "Submit" 送出就好了。


  回到剛才的頁面。

  一開始還不能開始寫題目,我們需要先點選 "TEXT Introduction",看官方的介紹文章。


  大致上是介紹 USACO 跟這個網站的內容。有興趣的人可以仔細看看。


  回到剛才的頁面,發現 Section 1.1 的文字變成連結了。

  接著請點選 "TEXT Submitting Solutions",裡面會告訴你 USACO Trainng 上傳程式的方式與程式格式。

  簡單來說,就是上傳的程式裡,前幾行必須用註解標記一些相關資訊。以 C++ 為例,你需要在開頭加入:

/*
ID: (你的帳號)
PROG: (題目名稱)
LANG: C++
*/

  並記得在 main() 主函式中加入 "return 0;"。

  基本上裡面寫得很仔細,一定要先仔細讀過。


  接著來實際演練一遍。

  在文章裡把它的範例程式複製下來(記得將 ID 修改成自己的),上傳程式原始碼就可以了。


  接著會顯示上傳後的結果。

  假如結果有錯,網頁會列出你錯誤的那筆測試資料與正確答案,以方便除錯。

  假如都沒有錯誤,網頁就會列出所有測試資料,與你的程式跑每筆測試資料所花的時間。


  終於,我們可以來正式挑戰 USACO Trainng 的題目了。



  題目內文裡面,會標示程式名稱、輸入檔名稱與輸出檔名稱,記得不要搞錯了。


  當解出題目之後,題目連結後面會出現一個 [ANALYSIS] 的連結。


  點進去之後,就是官方的題目分析,與參考的程式碼了。


  當解完所有 Section 1.1 的題目後,才可以開始寫 Section 1.2,所以寫題目只能照著章節跑。

  只要能解完 Section 1 到 Section 6 的題目,你就成功闖關 USACO Trainng 了!祝各位好運。

1月 29, 2009

【介紹】USACO - What's This

@
  USACO (United States of America Computing Olympiad,美國資訊奧林匹亞)是美國為其中學生所舉辦的程式設計競賽,能使用的程式語言包含 C、C++、Java 以及 Pascal。

  USACO 舉辦的目的在於訓練美國中學生的邏輯思考與解決問題的能力,並從中選拔出每年 IOI (International Olympiad in Informatics,奧林匹亞資訊學科) 的參賽選手。而為了確實培訓將來要參加 IOI 的國手,USACO 特別建立了所謂的 USACO Training。




  USACO Training 是一個線上的網路題庫,主要是用來訓練程式設計、活用演算法與資料結構的能力。題目的內容五花八門,涵蓋了各式各樣的問題。且 USACO Training 題目依照難易度,由簡到難共分為 6 個章節,必須以章節順序依次將題目完成。

  除了循序漸進之外,USACO Training 還提供了許多程式設計相關的教學文章,像是貪婪演算法(Greedy Algorithm)、深度優先搜尋(Depth-First Search,DFS)、廣度優先搜尋(Breadth-First search,BFS)、動態規劃(Dynamic Programming,DP)等等。

  看完教學文章之後,再利用題庫中的題目做練習,學習的效果相當顯著。若是程式有錯誤,網站還會列出程式的錯誤訊息、或是錯誤的那筆測試資料與正確答案的對照,以便於除錯。而在解出題目之後,USACO Training 還有詳細的題目分析講解與參考程式。

  貼心的是,遇上某些太難的題目,USACO Training 還會提供一些小提示。只要順著提示的引導,往往就可以寫出那一題的答案了。


  總而言之,我覺得 USACO Training 的題目其實還滿有意思的。在一邊寫的同時,感覺也學到了不少東西。所以新年新希望,就是能夠將 USACO Training 中的題目全部寫完囉(笑)。


  以下是一些相關網站及參考資料,有興趣的人可以參閱:

.USA Computing Olympiad
.USACO Training Program Gateway
.USACO Contest Gateway
.United States of America Computing Olympiad - Wikipedia