独学でプログラミングしてきた道を書き連ねて行きます。
プログラミングをするためのモチベーションアップ
2009年11月08日 (日) | 編集 |
何事も物事をするには目標が必要です。
その目標によってやる気も変わってくると思います。

私の場合は、
・ゲームを作りたい!
・会社の業務に役立つソフトを作りたい!
この二つです。

ただ全くの素人ですので、そこまで行くのにかなり遠い道のりであると思います。
とにかく簡単なのでもいいから、自分で作ったプログラムを紹介していきます。
それが動くだけでもモチベーションは上がりますから。

下記のプログラムはできたEXEファイルアイコンに、他のファイルをドロップすると、
そのファイルパスが表示されるプログラムです。

-----------------------------------------------------------
#include<windows.h>

int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {

MessageBox(NULL , lpCmdLine , TEXT("ドロップしたファイル")
, MB_ICONINFORMATION);


return 0;
}

-----------------------------------------------------------

あぁ、これぐらいのプログラムでも動くんだとおもっていただければいいです。
C言語、C++言語の文法の勉強しているだけでは面白くありませんからね。

こういった簡単なプログラムを自分の身になるために分析して、
その分析をするために文法の勉強が必要なんだと感じると
勉強のモチベーションが上がります。

C言語のポインタについて。
2009年11月05日 (木) | 編集 |
「C言語のポインタを理解するのはとても難しい」

と昔からよく言われますが、
前橋 和弥さんの本
「C言語ポインタ完全制覇」には、非常に分かりやすく書いてあります。

私がそれを読んで理解したのは、
ポインタと変数の関係がWindowsで言うところの、
実ファイル が C言語の「値の入った変数」
ショートカット が C言語の「その変数の場所を指し示すポインタ」
という関係でしょうか。

ポインタと配列は似ているというのも
*(p+i) と p[i] は同じ意味だということや、
その場合の p は p[0] と同じで pの値は先頭のアドレスを返すということ。
など。

まだまだ完全に理解するまで至っていませんが、
少しわかってから他の人のソースを見ると、値の動きがイメージしやすくなります。

超初心者だからこそ、基本を押さえて勉強する方がプログラムの理解が早くなると思います。


C言語プログラミングを始めるにあたって
2009年11月01日 (日) | 編集 |
C言語を始めてみようと思う超初心者はどこまでのレベルかわかりませんが、
理解していなかった内容を理解した分だけ少しづつ書いていきます。

まず初めに、プログラムを作るというと、何万円ものソフトを買わないとできないのではないかと思うかも知れませんが、C言語(C++)プログラミング無料でもできます。

一番簡単なのが、Boland C++コンパイラを使用する方法。
こちらのページで分かりやすく説明されています。

まずは開発環境を整えるところからプログラミングがスタートします。



テーマ:プログラミング
ジャンル:コンピュータ
Windowsでのプログラミングには最低以下の方法を学ばなければならない(と思った)
2009年10月31日 (土) | 編集 |
・Cの文法
・C++の文法
・WindowsAPIの文法(ウィンドウフォームを一から作成する場合)
・オブジェクト指向(カプセル化、ポリモーフィズム等)

ここまでわかっただけでも、大枠が見えるようになってきたので、

まずはBolandのコンパイラを使い、
C++でいくつかサンプルプログラムを作っていきながら
文法と動作を覚えていったらよいのではないだろうか、

その後リファレンスを見ながら、「目的」に対する「手段」を探し、
その組み合わせによってプログラムを完成していくようにする。


C言語の勉強をを始めようと決意したのは、
2009年10月31日 (土) | 編集 |
日経ソフトウェア 2008年3月号の付録本
「C言語まるごと学習ブック」の中で、

「15のキーワードで眺めるC/C++の全体像」
「Cで学ぶべき10のポイント」
この二つを読んでやっとC言語のことが理解でき、開眼しました。
(執筆は両方とも矢沢久雄さんでした。)

読んでわかったのが、

C++はCが元になっているので基本的文法は同じだが、
クラスの理念が加わっているため、オブジェクト指向プログラミングが可能ということ

特にプログラム上では「型」(int等)は実体を持たず、「変数」を入れることで実体になる。
同様に「クラス」も「型」であり実体を持たず、「インスタンス」になって初めて実体となる。
ここでいう「実体」はコンパイル後に「メモリ上に存在」するかどうか。


↑ここが私にとってターニングポイントでした。

プログラムで書いている内容全ての命令(関数)がマシン語に変換されるわけではなく、その命令によって実際の値が変化する部分がマシン語に変換されると言うこと。だから、main関数内で直接値を変化させる計算を多用するより、関数で単純化したほうが人間にとっても、機械にとっても読みやすいプログラムになる。

まあ、大半がコンパイラの能力なんですが。

いままでボンヤリしていた謎がスッキリしました。

テーマ:プログラミング
ジャンル:コンピュータ