跳轉到內容

C++ 程式設計問題集

25% developed
來自華夏公益教科書,開放的書籍,開放的世界

我們這些作者這本書希望解決程式設計書籍普遍存在的一個錯誤。從我們所見,C++(和其他語言)的程式設計教程和書籍都以相同的老套方式組織。他們從變數和控制流等“基礎”開始,每一章都專門介紹程式語言的不同部分。他們教授語言,但卻沒有教授程式設計絕對基礎的東西。還有一些書說他們不只是教授語言,而是教授“現實世界”的例子。這些書籍傾向於壓縮語言部分,並在使用者介面程式設計或網路程式設計方面新增章節。再次,這並非教授真正需要的東西。他們傳播知識是好的,以便讀者瞭解一些可應用於程式設計的實用技能。不好的是他們壓縮了語言知識,而語言本身也同樣有用。

然而,我們仍然缺少程式設計中一些根本的東西。無論使用哪種程式語言,無論任務是什麼,每個程式設計師都在做什麼?他們在解決問題!解決問題是程式設計的核心技能。程式設計師可能瞭解世界上所有介面、所有庫,但如果他們不知道如何使他們的知識有用,這一切都將毫無意義。作為一名程式設計師,你不僅需要完整地瞭解語言:包括怪癖、奇特之處和所有的一切,你還需要知道如何使用這些知識並將其應用於問題。

所以這就是我們介入的地方。我們將採取一種不同的方法來教授程式設計。確實,我們將教授 C++ 程式語言。確實,我們也可能會破壞我們這些程式設計師在學習程式設計一兩年後,在解決本書中提出的問題的快樂週末。為此,我們會留下一份“問題”清單供讀者參考,指向關於這些問題的各種文章,以便他們也能體驗到快樂的週末,製作井字棋遊戲或數獨求解器,因為正是這些“週末”啟發了我們中的一些人用它們來教授 C++,因為正是那些時候,你嘗試新事物而不必擔心弄亂什麼,正是那些時候,新技能真正發展起來。

我在 C++ 書籍中看到的一件常見事情是,即使他們沒有明說,他們也會教授 C 而不是 C++。正如你可能猜到的,C++ 是從另一種程式語言 C 派生出來的,但有許多、許多擴充套件,甚至創新。C 可以用一本書的章節(而且經常如此)來教授,而 C++ 可能會佔用這本書的大部分篇幅。許多書籍早期程式碼看起來和行為都像 C 程式碼,沒有使用好的 C++ 約定,然而正是這些章節在讀者腦海中留下了深刻的印象(你會驚訝這些有多大影響,即使你讀完 5 分鐘後就記不起這些段落了),因為它們是他們進入程式設計的第一步。所以,秉承《加速 C++》(一本強烈推薦的商業書籍)的精神,我們將從 C++ 程式碼開始,以 C++ 程式碼結束。

編譯器

  • Dev-C++(整齊地使用 GCC 編譯器)
  • MinGW(使用 GCC 編譯器)
  • Cygwin(直接使用 GCC 編譯器,你需要自己生成編譯程式碼(注意:MinGW 也是這樣),你會得到幫助 ;-) )

這些是免費的開源軟體,但你可能仍然想要使用商業編譯器。只要它與 ANSI-C 和/或 ANSI/ISO C++ 相容,你就不必擔心太多(雖然據說有一種編譯器是最不符合標準的編譯器)。否則,只需編輯這本書,新增對你有效的編譯器。建議的非開源編譯器是 Microsoft Visual C++ 或 Borland C++。

你的第一個問題:漢諾塔。它聽起來可能並不令人興奮,但它是一個很好的程式設計入門。在本章中,我們將編寫一個解決漢諾塔問題的程式,向我們展示它為找到解決方案所採取的各個步驟。我們將首先解讀問題,找出解決方案,然後建立程式碼。該練習將教會你 C++ 基礎知識,例如函式、變數、條件語句、格式化輸出和容器。你的第一個程式確實值得你感到自豪。

一個將簡單的 HTML 頁面輸出到控制檯螢幕的程式。

華夏公益教科書