トップ 一覧 検索 ヘルプ RSS ログイン

Programming_C#_sampleの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!C#のサンプルとかチュートリアルとか

永遠に工事中

!!移行する前に知っておいて欲しいC/C++の知識
!ポインタ(値渡しと参照渡しの区別がつく程度)

!とにかくクラス
:基本:C#では名前空間>クラス/列挙体など>変数/関数という構造にする必要があり、グローバル変数は使えず、関数も単体では存在できない。そのためクラスの習得は必至。とはいえ、定義/初期化/呼び出しだけ見ておけば当分は間に合う。
:慣れてきたら:継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト思考の基礎。
:慣れてきたら:継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト指向の基礎。

!基本的な書式の違い
配列の宣言が若干異なる点に注意。後ほとんど同じ。
*C
 int list[5]; //サイズ固定
*C#
 int[] list = new list[5]; //実体の生成時にサイズを設定
変数の宣言やステートメント(ifやswitch、forのようなもの)の書式はほぼ同じ。

他には、構造体/クラスメンバの参照に用いる演算子が統一されている。
*C++
 //値の場合
 Node node = new Node();
 node.x = 5;
 //ポインタの場合
 Node* node = new Node();
 node->x = 5;
 //スコープを参照する場合
 Network::Node node
*C#
 //.,->,::の区別は必要ない
 Node node = new Node();
 node.x = 5;


!!フォームアプリケーションの基礎
:基本的な流れ:フォームアプリは基本的にフォームはデザイナ上でマウスでポチポチと概観を作り、計算部分はソースコードを直接編集する形を取る。デザイナで設置したコントロールの定義と初期化は〜.Designer内に記述される。
:基本的なコントロール:以下によく使うコントロールを示す。ついでに他の言語との名前の対比も示しておく(一部怪しいところは?付き)。
,C#,Java(Android),機能
,Label,TextView,文字列を表示する
,Button,Button,名前の通りボタン
,ComboBox,Spinner,クリックすると選択肢が表示されるボタン
,TextBox,TextEdit,テキストの表示と編集
,RichTextBox,TextEdit,複数行のテキスト編集
,PictureBox,View/SurfaceView,画像を描画するコントロール
,CheckBox,ToggleButton,クリックするとマーカーのON/OFFが切り替わるボタン
,ListBox,ListView,一列に文字や画像などを並べるコントロール

!サンプル1 フォームを表示
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication1.zip]

Program.cs
 ...
 namespace WindowsApplication1
 {
     static class Program
     {
         /// <summary>
         /// アプリケーションのメイン エントリ ポイントです。
         /// </summary>
         [STAThread]
         static void Main()
         {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             
             // new Form1() がフォームの生成、描画ループを自分で管理したい場合は
             // ここを書き換える 
             Application.Run(new Form1());
         }
     }
 }
変数やイベントを自分で追加する場合は、Form1.csのpublic partial class Form1 : Formの中に書く。

!サンプル2 ボタンとテキスト
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication2_text_button.zip]
 public partial class Form1 : Form
 {
       ...
       private void button1_Click(object sender, EventArgs e)
       {
           //Textに文字列を設定
           textBox1.Text = "Click";
       }
 }
!サンプル3 四則演算を行うもの
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication3_calc.zip]

:コード中でコントロールを管理する:
*ライフサイクル
**コントロールの作成
**コントロールの初期化(パラメータ設定)
**コントロールの親の決定
**コントロールの子の決定
**コントロールの破棄
!サンプル4 コード中でコントロールを作成、削除する
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication4_selfcreate.zip] 
Form1.cs
    public partial class Form1 : Form
    {
        Button button = null;
        ...
        //初期化メソッド
        private void Form1_Load(object sender, EventArgs e)
        {
            button = new Button();
            button.Text = "Dispose";
            button.Location = new Point(50, 150);
            button.Size = new Size(200, 50);
            
            //フォームにbuttonを所属させる
            this.Controls.Add(button);
            
            //クリック時のイベントの登録
            button.Click += new EventHandler(button_Click);
        }

!!画像の描画
:画像の描画手順:画像の描画には、主にGraphicsクラスを用いて、PictureBoxのImageクラスに対して描画を行う。
:コード例:
 //書き込む画像をファイルから読み込み
 Image drawimage = new Bitmap(書きたい画像のパス);
 
 //ピクチャボックスを作成
 PictureBox picturebox = new PictureBox();
 
 //ピクチャボックスのイメージを初期化
 picturebox.Image = new Bitmap(picturebox.Width,picturebox.Height);
 
 //描画を行うクラスを作成(ここで引数にしたImageに書き込んでいく)
 Graphics graphics = Graphics.FromImage(picturebox.Image);
 
 //画像を左上(0,0)に描画
 graphics.DrawImage(drawimage,new Point(0,0));
 
 //不要になったオブジェクトを破棄
 graphics.Dispose();
 
 //画面を更新(しないと反映されない)
 picturebox.Reflesh();
 
 
!サンプル5 画像の削除/読み込みと表示
[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication5_picturebox.zip]

!乱数の操作
:乱数の生成:
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication6_random.zip]
:乱数の種を指定して、その系列を確かめるプログラム:乱数と種に関する話はシミュレーション参照
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication7_randomhistory.zip]


!!ネットワークシミュレーションの基礎の雛形
!ノードの作成と表示
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication8_node.zip]

!P2Pモデルの作成
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication9_p2p.zip]

!車車間通信モデルの作成