2016年4月29日金曜日

C言語学習の進捗状況

ようやくWeb版「苦しんで覚えるC言語」の基礎編を終了した。
年末から年始にかけてC言語の勉強をしていたのだが、1月の中旬から中断していたのだ。
中断中は、ゲームをしたり、Pythonで書いたプログラムを改良したり、英語の勉強に興味をしめしたりしていた。

4月の中旬に再びC言語を勉強しようという気が起きたので、「苦しんで覚えるC言語」を最初からやり直した。
基礎編が終わったので一通りC言語の文法を学んだのだが、全然プログラムを書ける気がしない。
Pythonで書いたプログラムをC言語で書き直したいのだが、知識が足りないのだ。

書きたいプログラムを書くためには以下のことができるようにならないといけないと思う。

  1. マルチバイト文字を使う
  2. 2次元配列を作る
  3. 複数の候補からランダムで選ぶ
  4. 出現確率が異なる候補の中からランダムで選ぶ
  5. 配列の並べ替え
  6. 配列のランダムな並べ替え
  7. ハッシュテーブル(Pythonの辞書型データのようなもの)の実装
  8. ポインタを使いこなす


私が作ろうとしているプログラムは、簡単にいうと、ひらがなの配列に特定の条件を与えて計算し、最も良い値を出す配列を求めるものだ。
そのためにはマルチバイト文字の配列が使えないと話にならない。

Pythonでは簡単に2次元配列を作ることができたが、C言語ではどうしたらいいかが、いまのところ分らない。

ランダムの処理もまだサンプルとなるコードをみていない。
Pythonのプログラミングを練習していたときはランダムを多用していたので、ランダム処理の使い方が分れば、C言語でもいろいろなプログラムを書いて練習できる気がする。

Pythonには辞書型データというのがあって使っていたのだが、C言語で同じことをするにはどうすればいいのだろうか。
C++ならば連想配列といって、同じようなことができるようだが、C言語では標準でそういう機能はないようだ。
簡単に実装できるのであればいいのだが、難しいのであればC++への移行も検討してないといけない。

C言語の関数では、配列を引数や戻り値にすることはできないようだ。関数の処理をした後の配列を受けとるにはポイントを使わないといけない。
ポインタの説明は理解できたのだが、実際にどう使うのかがまだ完全には理解できていない気がする。


以上のような課題があるわけだが、実際にはどうしたらいいだろうか。
一番手っ取り早いのは、気になるキーワードで検索してみることだろう。
それでもいいのだが、もっとC言語に関する情報を体系的に得たいと思う。
なので本を読んで勉強していくことにした。

実はすでに2冊もC言語の本を買っているのだ。
電子書籍の半額セールにつられて買ってしまった。
「本当は怖いC言語」と「わかりやすいC入門編」の2冊だ。

買う時に深く考えなかったが、内容が「苦しんで覚えるC言語」とかぶる部分もあるだろう。
入門書を何冊も読んでも得られる情報は限りがあるかもしれない。
この2冊は読むつもりだが、さらに本を買う場合は内容をよくチェックしてから買うべきだろう。

この2冊を読んだ後はどうしようか。
「独習C」という本もなかなか良いと聞く。
それとももっと詳しい本を買うべきだろうか。
あるいはC++に手を出してみるという選択肢もある。

まあ、まずは目の前にある2冊を読破してから考えることにしよう。

(関連記事)
If Every Day was a Holiday ... : 【プログラミング】C言語の勉強開始

0 件のコメント:

コメントを投稿