programmeur aihser
http://w.atwiki.jp/reshia/
programmeur aihser
ja
2006-07-25T19:05:23+09:00
1153821923
-
データメンバの危険性
https://w.atwiki.jp/reshia/pages/28.html
*データメンバの危険性
データメンバは、いつ初期化が行われたのか
わかりにくくなってしまうので、わりと危険。
2006-07-25T19:05:23+09:00
1153821923
-
C++
https://w.atwiki.jp/reshia/pages/9.html
*C++の基礎
**メモ
-Cの拡張
-オブジェクト指向のためのclass、継承などなど
-ジェネリックプログラミングのためのtemplate
-[[クラスと構造体の違い]]
-[[templateと仮想クラス]]
-[[データメンバの危険性]]
**何もしないプログラム
> int main()
> {
> return 0;
> }
**何もしないプログラム(コマンドライン引数付き)
> int main(int argc, char * argv[])
> {
> return 0;
> }
**Hello World
> #include <iostream>
>
> int main()
> {
> std::cout << "Hello World!!" << std::endl;
> return 0;
> }
2006-07-25T19:04:28+09:00
1153821868
-
ぴぴ
https://w.atwiki.jp/reshia/pages/27.html
<table border="1">
<tbody>
<tr>
<td>#</td>
<td>#</td>
<td>#</td>
</tr>
<tr>
<td>#</td>
<td>#</td>
<td>#</td>
</tr>
<tr>
<td>#</td>
<td>#</td>
<td>#</td>
</tr>
</tbody>
</table>
2006-07-22T21:53:19+09:00
1153572799
-
おさらい
https://w.atwiki.jp/reshia/pages/26.html
*おさらい
**プログラムとは
プログラムとは予定表のことである・・・・・・・みたいな!
「予定表」は大雑把に言いすぎですけど、あながち間違いとは言えません。
運動会の「プログラム」のようなものなのです。運動会の「プログラム」は
児童がどんな演技をするかとかが書かれてありますよね。
それと同じでコンピュータでいう「プログラム」というのは、
コンピュータがどう動くのかが書いてあります。
| |「プログラム」の意味|
|学校|児童の演技の順番。進行表。|
|コンピュータ|コンピュータの動作手順。|
**変数とは
2006-07-22T21:45:21+09:00
1153572321
-
プログラマの心
https://w.atwiki.jp/reshia/pages/25.html
*プログラマの心
**内容
ようわ、プログラミング講座。
ただしプログラミング言語を問わない形でやりたい。
とりあえず、[[C]]と[[Java]]に限定。
**対象
プログラミングの文法をだいたい知っている人。
**おメニュー
+[[おさらい]]
+[[ほげほげ]]
2006-07-22T21:38:17+09:00
1153571897
-
メニュー
https://w.atwiki.jp/reshia/pages/2.html
メニュー
-[[トップページ]]
-[[メニュー]]
-[[更新履歴]]
-[[用語集]]
-[[要望メモ]]
#treemenu(title=言語,
[[C]],
[[C99]],
[[C++]],
[[C++0x]],
[[D]],
[[Java]],
[[プログラマの心]],
block,treeline=1)
#treemenu(title=WEB言語,
[[HTML]],
[[XHTML]],
[[CSS]],
[[PHP]],
[[JavaScript]],
block,treeline=1)
#treemenu(title=開発環境,
[[Visual C++]],
[[netbeans]],
[[gdb]],
[[bash]],
block,treeline=1)
#treemenu(title=その他,
[[.NET]],
[[Managed C++]],
[[C++/CLI]],
[[画像処理]],
[[正規表現]],
[[おすすめ書籍]],
block,treeline=1)
//#treemenu(title=[[C]],
//[[基本>C_Base]],
//[[メモ>C_Memo]],
//[[標準ライブラリ>C_Lib]],
//none,treeline=1)
//#treemenu(title=[[C99]],
//[[基本>C99_Base]],
//[[メモ>C99_Memo]],
//none,treeline=1)
//#treemenu(title=[[C++]],
//[[基本>CPP_Base]],
//[[メモ>CPP_Memo]],
//[[コンテナ>CPP_Container]],
//[[イテレータ>CPP_Iterator]],
//[[テンプレート>CPP_Template]],
//[[STL>CPP_STL]],
//[[Boost>CPP_BOOST]],
//none,treeline=1)
//#treemenu(title=[[C++0x]],
//[[基本>COX_Base]],
//[[メモ>COX_Memo]],
//none,treeline=1)
//#treemenu(title=[[D]],
//[[基本>D_Base]],
//[[メモ>D_Memo]],
//[[契約>D_DOC]],
//none,treeline=1)
//#treemenu(title=[[Java]],
//[[基本>Java_Base]],
//[[メモ>Java_Memo]],
//none,treeline=1)
//#treemenu(title=[[.NET]],
//[[基本>dotNET_Base]],
//[[メモ>dotNET_Memo]],
//none,treeline=1)
//#treemenu(title=[[HTML]],
//[[基本>HTML_Base]],
//[[メモ>HTML_Memo]],
//none,treeline=1)
//#treemenu(title=[[XHTML]],
//[[基本>XHTML_Base]],
//[[メモ>XHTML_Memo]],
//none,treeline=1)
//#treemenu(title=CSS,
//[[基本>CSS_Base]],
//[[メモ>CSS_Memo]],
//none,treeline=1)
2006-07-22T21:33:05+09:00
1153571585
-
templateと仮想クラス
https://w.atwiki.jp/reshia/pages/24.html
* templateと仮想クラス
処理の流れは同じだけど、アルゴリズムを切り替えたいときに
有効なインタフェースの継承。
C++にインタフェースはないので、純粋仮想関数をもったクラスで代用。
でも、純粋仮想関数を持つと、仮想関数テーブルができるので処理速度が遅くなる。
そんなときに有効なのが、template。
というあれ。
でも、あまり使えなさそう。
** インタフェース的なクラスの継承による動的束縛
> #include <iostream>
> using namespace std;
>
> class VClass
> {
> protected:
> const char * name;
>
> public:
> VClass(const char * name) : name(name) {}
> virtual ~VClass() {}
>
> public:
> void whoami() {
> cout << name << endl;
> }
> };
>
> class RClass1 : public VClass
> {
> public:
> RClass1(const char * name) : VClass(name) {}
> ~RClass1() {}
> };
>
> class RClass2 : public VClass
> {
> public:
> RClass2(const char * name) : VClass(name) {}
> ~RClass2() {}
> };
>
> int main()
> {
> VClass * v;
>
> v = new RClass1("hoge"); v->whoami(); delete v;
> v = new RClass2("piyo"); v->whoami(); delete v;
>
> return 0;
> }
** templateを使った、動的束縛風の処理
> #include <iostream>
> using namespace std;
>
> template <class HasName_Class>
> void whoami(HasName_Class c)
> {
> cout << c.name << endl;
> };
>
>
> class RClass1
> {
> public:
> const char * name;
>
> public:
> RClass1(const char * name) : name(name) {}
> ~RClass1() {}
> };
>
> class RClass2
> {
> public:
> const char * name;
>
> public:
> RClass2(const char * name) : name(name) {}
> ~RClass2() {}
> };
>
> int main()
> {
> RClass1 c1("hoge"); whoami(c1);
> RClass2 c2("piyo"); whoami(c2);
>
> return 0;
> }
template関数からnameを参照するには、nameをpublicにするかfriend関数に指定する。
あるいは、GetName()などのアクセッサを用意する。
どっちかっていうと、インタフェースの方がすっきりだけど
どっちかっていうと、templateを使った方が、きっと高速。
2006-07-21T19:10:39+09:00
1153476639
-
Visual C++
https://w.atwiki.jp/reshia/pages/23.html
*Visual C++のトピックス
**基本
Microsoftから配布されているC系言語の高機能開発環境。
Visual Studioの一部。
[[日本語Visual Studioの公式ページはこちら>http://www.microsoft.com/japan/msdn/vstudio/]]。
[[英 語Visual Studioの公式ページはこちら>http://msdn.microsoft.com/vstudio/]]。
**ユーザキーワード
言語標準でもないようなキーワードに色を付けたい場合は、
以下のファイルにそのキーワードを羅列する。
> "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\usertype.dat"
中身は、下のように羅列していく。
> WM_LBUTTONDBLCLK
> WM_LBUTTONDOWN
> WM_LBUTTONUP
> WM_MBUTTONDBLCLK
> WM_MBUTTONDOWN
> WM_MBUTTONUP
> WM_MENUSELECT
> WM_MOVE
> WM_MOVING
あとは、Visual C++の環境設定で色を指定する。
**ソースファイルの雛形
新しいファイルを追加するときに、追加するファイルの雛形を持っていたいことがある。
そんなときは次のフォルダ以下にあるファイルを直接変更しておく。
> "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\vcprojectitems\"
たとえば、ヘッダファイルのインクルードガードを雛形に入れておく
などの使い方ができる。
2006-07-21T18:06:34+09:00
1153472794
-
C99
https://w.atwiki.jp/reshia/pages/11.html
*C99の基礎
-一行コメントが増えた
-配列や構造体の初期化方法が増えた
-各種型が増えた
-整数同士の割り算は、小数点以下を0方向に切り捨てる
2006-07-21T18:01:51+09:00
1153472511
-
クラスと構造体の違い
https://w.atwiki.jp/reshia/pages/22.html
* クラスと構造体の違い
結論:構造体もクラスも、アクセス制限のデフォルト値が異なる程度の違いしかない。
初期化について:
構造体でもクラスでも、コンストラクタを持つと、簡易な初期化ができなくなる。
> #define STRUCT_HAS_CONSTRUCTOR
> #define CLASS_HAS_CONSTRUCTOR
>
> struct S
> {
> int x;
> int y;
>
> #ifdef STRUCT_HAS_CONSTRUCTOR
> S(void)
> : x(110), y(20)
> {
> }
> #endif
> };
>
> class C
> {
> public:
> int x;
> int y;
>
> #ifdef CLASS_HAS_CONSTRUCTOR
> public:
> C(void)
> : x(30), y(40)
> {
> }
> #endif
> };
>
> int main()
> {
> #ifdef STRUCT_HAS_CONSTRUCTOR
> S s;
> #else
> S s = {1, 2};
> #endif
>
> #ifdef CLASS_HAS_CONSTRUCTOR
> C c;
> #else
> C c = {3, 4};
> #endif
>
> return 0;
> }
>
2006-07-21T15:47:41+09:00
1153464461