C++ 進階 教學 : 檔案存取與資料管理



好的頻道需要你的支持,謝謝你使用Youtube影片的超級感謝功能給我們鼓勵。









好的頻道需要你的支持,謝謝你使用Youtube影片的超級感謝功能給我們鼓勵。



  這一個單元。會是這個 “CPP Road - C++ 進階教學” 部落格的最後一個單元。接下來,影片錄製的重點會轉入(基礎資料結構與演算法 (APCS)):基礎資料結構演算法教學以及常用的解決問題的技巧。基本上是目前 APCS 測驗的重點。
  很多同學希望可以在這裡學到,資料結構跟演算法的相關課程。因為目前網路上比較少看到這一類講義或影片。而補習班也一般都沒有開這個課程。類似課程只能在大學的資訊相關科系裡面才能學到。而事實上,在大學裡面所教的也都是以理論為主,包含說如何去證明哪一個演算法是否有效。並沒有太多的相關程式碼設計的教學。所以為了讓同學能夠學會這一些的技巧。所以我決定把教學重點轉往這個角度來錄製影片。
  不需要參加APCS測驗的同學。是否有必要看後面的教學影片呢?我會建議你還是要看。畢竟,日後你進了職場。你要競爭的對象就是那一群學過資料結構跟演算法的學生。如果你一點概念都沒有,就很難跟他們競爭。這也是我為什麼要轉往那個角度去錄製影片的原因。基本上 C++ 語法你學到這一邊。其他什麼語法你都可以學了。你去學其他語法都會覺得很輕鬆,因為都大同小異。就像你會開車了,什麼廠牌的車你都可以開。但是資料結構、演算法與解決問題的技巧,這一些東西沒有人帶你入門,沒有人教你,想自學要用很多時間,觀念還不一定對。
  所以還是建議要看後面的影片。雖然只是基礎教學。但是你基礎打好了,如果有用到更深入的。你要學那些深入的也比較容易。
  另外,若是同學希望可以學到更深入的物件導向的觀念。包含:多型的應用、介面等等。那麼建議你去看我 Java Professional 部落格。部落格中有深入的討論物件導向的觀念。那一塊是C語言沒有,但要身為一個高階的工程師,應該具備的。

  到目前為止。我們學會的所有語法以及所寫的範例。不管運算出什麼結果,在程式結束以後,那些結果都會消失。因為,我們沒有把那些結果存起來,只是單純的輸出。
  這一份講義,要帶著大家學會基本的檔案存取,以及用集合物件管理大量資料。最後,寫一個簡單的範例:可以在程式啟動的時候,讀入檔案中的資料。在程式中,運算資料、修改資料並在程式結束時把資料存到檔案中
  這份講義,我寫得不是很詳細。因為,我這個教學頻道,最主要的目的:是讓各位學會基本語法與基礎觀念以後,可以自行參閱 API 文件並寫出你需要的邏輯。因為只有你自己能夠看得懂 API 文件,你才能夠成為一個成功的程式設計師。至於要看懂API文件的所有技巧在前面的影片中都已經教得差不多了。所以,利用最後的這一份文件,帶著各位運用前面學會的基本語法與基礎觀念並且參閱API文件,來完成這個範例。
  這是一個簡單的最高分數的管理程式。假設,這是一個遊戲軟體中的一部分功能。會在遊戲啟動的時候,讀入目前遊戲的10個最高分的紀錄。在遊戲過程當中,這些分數會變動。在遊戲結束的時候。會重新把變動後的10個最高分存回檔案。
  要寫這樣的一隻程式。首先,就要先學會檔案的輸入與輸出。接下來,還要學會集合物件的應用。包含資料的儲存、修改、新增、刪除、排序與搜尋等等的相關運算。

一、 檔案存取

標頭檔: fstream
類別: fstream

1. 建立物件

A. 物件變數

B. 指標

2. 常用函式

A. Associated

i. open

ii. is_open

iii. close

B. Input

i. get

EOF

ii. eof

iii. getline

iv. >>

C. Output

i. put

ii. write

iso_base::app

iii. <<

二、 Vector

標頭檔: vector
類別: vector<type>

1. 建立物件

必須宣告泛型

A. 物件變數

B. 指標

2. 常用函式

A. Access

i. push_back

ii. at / []

B. Capacity

i. size

C. Iterator

vector<type>::iterator

i. begin

ii. end

D. Modify

i. insert

ii. erase

3. 演算法函式

標頭檔: algorithm

A. Sort

i. sort

ii. reverse

B. Search

i. binary_search

ii. find


作者 : 許裕永