Topic:PG学習法C言語初級
C言語の初歩は、どのように学習しても同じです。 言語仕様について学ぶ必要があります。
初歩の学習が終わったら
編集言語仕様は道具の一覧に過ぎません。 大工で言えば、ドライバーやカンナやかなづちなどの道具をそろえ、基本的な使い方を覚えただけです。 複数の部材の加工や組み立て、設計図の見方、適切な組み立て順序について学ぶ必要があります。
プログラムの学習でこれに値するのがアルゴリズムです。 アルゴリズムについて学ぶ必要があります。
「C言語によるはじめてのアルゴリズム入門」という本を入手して学習してください。 C言語における名著であり、この本を学習することで、色々な場所で広く使われているアルゴリズムを学ぶことが出来ます。 本は名前どおり基礎的なアルゴリズムを扱っており、釘やネジに当たるほど広範に使われるアルゴリズムを学べます。
学習法はこの本に掲載されているアルゴリズムをパソコンで書き写しコンパイルしていくことです。
意味を考えながら書き写して学習してください。
この本を学習する利点は以下の通り。
- プログラムはアルゴリズムをつかってデータを処理していきます。本では詳細で分かりやすい解説でアルゴリズムを紹介しており、初学者でも簡単にアルゴリズムを学ぶことが出来ます。
- プログラムを書き写していくことでプログラムの記述に習熟していきます。プログラムは慣れが重要です。最初のうち数行のプログラムを書くだけで四苦八苦していたのが、本のプログラムを書き写しているうちに十数行が楽になり数十行が楽に書けるようになります。これは大事なことです。実務では数千行書けないと話にならないので、まずは数十行が楽になる。段階としてとても重要です。
- プログラムを記述していくとき、概念がありそれをアルゴリズムに変換していくのですが、概念を丁寧にそのままプログラムに落とすという作業が必要になります。本のアルゴリズムを書き写しているうちに、概念を丁寧に出来るだけ自然にプログラムに移植すればいいという習慣や考え方が分かってきます。
- この本では木構造や探索やグラフなどの処理を扱っています。この本の学習が終わる頃にはプヨプヨレベルのアルゴリズムをかけるようになります。単純な集計処理などしか出来なかった初期に比べれば長足の進歩です。この本にでているアルゴリズムだけでそこそこ複雑なソフトのロジックを書くことが出来るようになります。
ファイルアクセス
編集以下現在作りかけ。
アルゴリズムの学習が終わっただけでは、プログラムは未完成です。 たいていのソフトにデータを保存したり、読み出したりする機能が存在しています。 あなたが将来作るソフトにも必要です。 テキストファイル、バイナリファイル、SQL、構造体のシリアライズの4種類の保存方法のどれかを学習する必要があります。
構造体とメモリのシリアライズ
編集構造体のシリアライズは重要です。 実務やゲームなどで、作業を中断しソフトを落とし、次回ソフトを起動したとき、終了した状態から続ける機能などをつけるときに重要になります。 コンティニュー機能を実装できるようになります。 また別のパソコンにデータを送るときにも、構造体をシリアライズすることでソフトの状態の送信が可能になります。
構造体のシリアライズについて学びたい場合。 以下の手順で学ぶと有効です。
- 簡単なシリアライズを学びたい場合、、、、というサイトで学ぶことが出来ます。
- ソフトの状態などをメモリからハードに渡す方法を学びます。つまりコンティニュー機能を作りたい場合。まずその概念を学ぶ必要があります。、、、というサイトや書籍で体系的に学ぶことが出来ます。
- 次に具体的な実装の練習をします。、、、というサイトで学ぶのが有効です。
この順番で学べば、シリアライズについて基礎的な内容は十分学べます。
テキストファイル
編集テキストファイルは書き込みや読み込みが簡単で多様なファイル形式があります。 自分独自で定義したファイルを作成することも出来ます。 代表的なファイル形式だけでもXML、CSS、JSON、YAML、TSV(タブ区切り)、CSV(カンマ区切り)などがありそれぞれで扱い方が異なります。 代表的なファイル形式を扱う方法について学習したい場合は、、、というサイトや、、、書籍で学ぶことが出来ます。 この手のファイルを扱う代表的なライブラリについては、、、を参照してください。
バイナリファイルの作成について
編集シリアライズと被りますが、バイナリファイル。 バイナリファイルには、国際規格や大手が定めた典型的なものと、自分独自で定める形式が存在します。 バイナリファイルの扱いに習熟したい場合、以下の手順で学ぶと効果的です。
- まずはバイナリファイルの扱いに慣れる。初めてのバイナリファイルとしてBMPファイル
- 以下記述募集中
なにを言いたいのかわからないwww
そもそもバイナリファイルって何…?