#contents *言語の特徴 [#a6035d70] C#はMicrosoftが同社の.NET Frameworkでの中心言語とすべく開発した、比較的新しい言語です。 それまでの主要な言語(C++、Java、Visual Basic、Delphiなど)を下地に設計しているため、 実務的な「使える」言語になっています。 開発環境は無料ですし、GUIアプリも、Webアプリも、ゲームだって効率よく作成できます。 そこのあなた、C#でプログラミング始めてみませんか? *開発環境の導入 [#c8aabc8b] C#の開発環境としては、 Microsoft社が初心者向けに無料で提供しているVisual C# 2005 Express Edtion(以下Visual C#)を使用するのが簡単です。 ただし、Visual C#はWebインストールの場合はユーザー登録が必要です。 それが嫌な方は、isoイメージからインストールすることができます。 また、IDEのような大きなソフトをインストールしたくない方はコンパイラといくつかのツールがセットになった.NET Framework 2.0 SDKをインストールしてもいいでしょう。 以下、それぞれのインストール方法について説明します。 **Visual C# 2005 Express Edtionの場合 [#adf40e87] Webインストールの場合、基本的に難しい点はありません。 [[MicrosoftのVisual C#のページ:http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/]]で「Webからインストール」をクリックし、インストールするだけです。 途中、「SQL Server 2005 Express Edition」をインストールするかどうかのチェックがありますが、ハードディスクに余裕があるなら入れておいたほうがいいでしょう。 インストールが完了するとユーザー登録を促されますので登録します。 isoイメージからインストールする場合、[[ここ:http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/]]を参考にしてください。 isoイメージからなんらかのソフトウェアでファイルを展開します。インストール自体はWeb版と同様です。こちらの場合、ユーザー登録が必要ないようです(本スレJavaの人より。多謝)。 ドキュメントとして「[[MSDN Express Library:http://download.microsoft.com/download/5/7/b/57b8cf33-4cb4-466d-aca1-e4b1f64a3508/msdnixp.exe]]」があります。 なるべくならこれもインストールしておきましょう。 **.NET Framework 2.0 SDKの場合 [#nf08860a] まだ.NET Framework 2.0をインストールしていない方は、SDKをインストールする前にインストールしておきます。 Windows Updateのカスタム更新で.NET Framework 2.0を追加するか、 -[[.NET Framework 2.0:http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=ja]] -[[.NET Framework 2.0 日本語language pack:http://www.microsoft.com/downloads/details.aspx?familyid=39C8B63B-F64B-4B68-A774-B64ED0C32AE7&displaylang=ja]] からダウンロードできます。 上記2つをインストール済みなら、[[Microsoftの.NET Frameworkのダウンロードページ:http://www.microsoft.com/japan/msdn/netframework/downloads/]]から .NET Framework 2.0 SDK 日本語版をダウンロードし、インストールします。 *開発環境の利用 [#t13dbfdd] ソースコードをexeファイルなどに変換するために「コンパイル」という作業が必要になります。 ソースコードをコンパイルするためのソフトウェアを「コンパイラ」と呼び、C#のコンパイラはcsc.exeです。 ソースコードはテキストエディタ(Visual C#には強力なエディタがもれなく付いてきます)で記述し、csという拡張子で保存します。 以下、それぞれの環境でのコンパイルの仕方を説明します。 **Visual C# 2005 Express Edition [#f7a9ba21] IDEを利用したプログラムの作成方法を説明します。 Visual C#をインストールすると.NET Framework 2.0 SDKもインストールされるため、次節の.NET Framework 2.0 SDKでのやり方でもプログラムを作成可能です。 ***コンソールアプリケーション [#h49520f5] +Visual C#を起動します +メニューの「ファイル」→「新規作成」→「プロジェクト」でプロジェクトの作成ダイアログが表示されます +プロジェクトの種類は「Visual C#」の「Windows」、テンプレートは「コンソール アプリケーション」を選びます +プロジェクト名は好きな名前をつけてください +「OK」を押すとプロジェクトが生成されます +メニューの「ビルド」→「ソリューションのビルド」でビルド(いわゆるコンパイルなどを行います)します +メニューの「デバッグ」→「デバッグなしで開始」で作成したプログラムを実行します ***GUIアプリケーション [#v27157b5] 基本的にはコンソールアプリケーションと同じですが、プロジェクトの種類を選ぶ際に「Windows アプリケーション」を選択します。 その他、詳しい使い方はヘルプや解説書、解説サイトを参照してください。 **.NET Framework 2.0 SDK [#fd849ff9] ***コンソールアプリケーション [#a5511c98] コマンドプロンプトでの操作が基本となります。 [[コマンドプロンプトを使ってみよう!:http://ykr414.com/dos/]]などを参考に、 「cd」「dir」くらいは使えるようになっておいてください。 コンパイラのある場所(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)にパスが通っていませんので、必要ならばパスを通してください。 「パスを通す」の意味がわからない方は、 「スタート」→「すべてのプログラム」→「Microsoft .NET Framework SDK v2.0」→「SDK コマンドプロンプト」で起動できる、SDK コマンドプロンプトを使用しましょう。 パスを通す必要がありません。 例えばexample.csというソースをコンパイルする場合、ソースのあるフォルダに移動して csc example.cs でコンパイルを実行します。 エラーがなければ、ソースコードのあるフォルダにexample.exeが生成されているはずです。ダブルクリックするか、 example で実行できます。 ***GUIアプリケーション [#da6fdd4f] 基本的にはコンソールアプリケーションと同じですが、コンパイラに引数として/target:winexeを渡します。 MyGUI.csをコンパイルしたい場合、 csc /target:winexe MyGUI.cs となります。 *初めてのプログラム [#id0c4dcf] **コンソール版Hello World [#j99ece3a] 以下のコードをコンパイルして実行してみましょう。 using System; namespace VIP { class MyFirstApp { public static void Main() { Console.WriteLine("Hello World!"); } } } 実行すると、コマンドプロンプトに Hello World! と表示されます。 **GUI版Hello World [#i7b04644] 続いて、GUIアプリケーションも製作してみましょう。 以下のコードをコンパイルし、コマンドプロンプト上で実行するか、生成されたexeファイルをダブルクリックしてみましょう。 using System; using System.Windows.Forms; namespace VIP { class MyFirstGUIApp : Form { public MyFirstGUIApp() { this.MouseClick += delegate(Object sender, MouseEventArgs e) { MessageBox.Show("Hello World!"); }; } public static void Main() { Application.Run(new MyForm()); } } } ウィンドウの内側をクリックすると「Hello World」と書かれたメッセージボックスが出てくるはずです。 *C#チュートリアル(Pythonのぱくり) [#mb63807a] **Visual Studio 2005の使い方 [#ac7d1fb8] C#の開発はVisual Studioを使用するのが便利です。タダですしね。ただし結構重いソフトなので[[SharpDevelop:http://sharpdevelop-jp.sourceforge.jp/]]などの使用も検討しましょう。導入方法は上記の通りです。 ***プロジェクト [#xc367d09] 「ファイル」→「新しいプロジェクト」で新しいプロジェクトを作ることが出来ます。ソフトウェアは普通複数のソースファイルやリソースなどから構成されます。それらを1つにまとめて扱うものがプロジェクトです。1アプリ1プロジェクトが普通でしょうか。 新しいプロジェクトにはいろいろ種類があります。スクリーンセーバースタートキットとムービーコレクションスタートキットはサンプルプログラムです。オンラインテンプレートの検索は機能してません(笑)。 これからのチュートリアルではWindowsアプリケーションとコンソールアプリケーションを使います。それぞれ[[GUI:http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9]]と[[CUI:http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9]]に相当します。作るアプリケーションによってどちらかを選択します。 まずはコンソールアプリケーションを選択しましょう。 ***ソリューションエクスプローラ [#r440f567] 右側にソリューションエクスプローラがあります。ここはソリューション(今はプロジェクトと同義だと思ってください)に存在しているファイルなどが表示されます。.csのファイルがC#のソースです。 ***編集画面 [#nc4f5ad2] 真ん中のコードが表示されている画面を編集画面といいます。コードなどはここに表示され、編集することになります。タブもついています。 ***HelloWorld [#vde94afe] HelloWorldを作成しましょう。Program.csが開いていると思いますが、そこに書き足します。 C#は最初の"おまじない"が多い言語だと思います。あとからいろいろ解説します。とりあえずVSが自動で作ってくれるので置いておきましょう。 static void Main(string[] args)を探しましょう。ここがプログラムが最初に実行される場所になります。{}の中に命令を書くことになります。文字を表示する命令は System.Console.WriteLine("HelloWorld"); です(長い^^)。 ***IntelliSense [#a2195f00] VSにはIntelliSenseと呼ばれる入力を補助してくれる機能があります。Sから入力すると候補が絞られていきます。.やTabと打つと残りは自動で入力されます。そこでまたConsoleと打っていきます。以下同様。この機能をうまくつかうとスペルミスなどを防げるので積極的に使用しましょう。 ***コードスニペット [#xaeb902f] それでも表示するだけなのに長い^^ 。そのためコードスニペットというものが用意されています。Ctrl+k , x , cw , Enter と打つとあら不思議! ***実行 [#td974dc9] 「デバッグ」→「デバッグ開始」またはF5または緑の三角ボタンで実行できます。 ただすぐに画面が消えてしまいますのでデバッグなしで実行をすると表示された画面を確認できます。 ***Windowsアプリケーション [#v445c96b] 次にWindowsアプリケーションを作成しましょう。新しいプロジェクトを作成します。すると編集画面にコードではなくウィンドウが表示されたと思います。これはデザイナといいます。左のツールボックスには部品が納められています。適当にButtonなどをフォームにドラッグしてみましょう。ボタンが追加されましたか?大きさや位置の変更なども出来ます。 ***プロパティウィンドウ [#n9a8c3a0] 右側にプロパティと書かれた場所がると思います。ここはボタンを選択したらボタンの設定を変更したり出来ます。試しにBackColorを変更してみましょう。 ***実行 [#xd925912] 実行はコンソールアプリケーションと一緒です。F5でおk **表示 [#zece29b7] ***文字の表示 [#hd4a5707] 文字の表示はさっきと同じ System.Console.WriteLine(); です。()の中に"HelloWorld"と書くと画面にHelloWorldと表示されます。文字は""で囲むことになってます。お兄さんとのお約束だ。 ***計算しよう [#p3e07ba0] ()の中にかけるのは文字だけではありません。8+5と書いてみましょう。(""はつけてはいけません 数字なので)。13と表示されましたか?掛け算は* 割り算は/の記号を使います。コンピュータの世界のしきたりです。郷に入っては郷に従いましょう。 **変数 [#p48dfbfb] 変数とはデータを保存しておく箱のようなものです。書式は 型名 変数名 (=初期値); です。型名とは保存するデータの種類のことです。文字列は string 整数はintなどがあります。初期値は省略可能です。 先ほどのWriteLineを消して string message = "働け"; System.Console.WriteLine(message); にしてみましょう 。messageという単語ではなくて働けとでましたね?これが変数です。 *サンプルプログラム1 アナログ時計 [#f0b14c49] **目的 [#ra3de55e] このプログラムでは関数、グラフィックス、イベント、数学などをさらっと学んでもらう。これはゲームなんかにも応用できるので学んで損はないはずだ。 ちなみに数学は高校レベルのだけど偏差値40の俺が教えるから泥舟に乗ったつもりでよろしく わからないところは本スレで聞けばOK **概要 [#u9863857] プログラムは次のような感じになる。頭に入れておこう +1秒おきに鳴るタイマーをセット(イベント) +タイマーが鳴ると時刻を取得 +針を描画 +以下繰り返し **実習 [#w36f9d19] ***タイマーをセットする [#r00a3353] まずは普通にwindowsアプリケーションを選んで準備しよう。今回は簡単のため300×320の決め打ちでいきます。Form1のプロパティ 配置のところのsizeを300,320にしてください 次はタイマーコントロールを設置します。左のツールボックスからTimerをダブルクリック。Timerコントロールのintervalプロパティを1000に(単位はミリ秒なので) できたtimer1をダブルクリックすれば private void timer1_Tick(object sender, System.EventArgs e){・・・ が勝手に作られているはずです。これが1秒ごとに呼び出されます。本当はいろいろ書かないといけないけどVisual Studioはなんと''全自動''。楽しちゃえ ここで画面を更新してあげればいいですね。 private void timer1_Tick(object sender, System.EventArgs e) { this.Refresh(); } ***時刻を取得 [#j9a7cf80] まずはPaintイベントを受け取りましょう。 private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { } IDEならマウスだけでいけますね。これからは{}の中に書いていきます。 時刻の取得はDateTime.Nowでできます。 DateTime dt = DateTime.Now; でdt.Hourで時刻が取り出せます。以下同様 ***描画の準備 [#y0e3216c] まずキャンパスを準備しましょう。 Graphics g = e.Graphics; g.Clear(Color.White); ここではgがキャンパスです。1行目でキャンパスを取得して、2行目で白で塗りつぶしてます。これで準備完了 ***数学のお勉強 [#j002f5e8] 今回は簡単のため針は線で描きます。線は始点と終点がわかれば描けます。始点は中心の(150,150)に今回はしましょう。お勉強するのは終点の求め方です。図で適当に解説します [[三角関数図での解説:http://ashphy.s268.xrea.com/prog/img/fig1.gif]] private Point calc_endPoint(int r,int t,int interval) { //r:半径 t:時間 interval|目盛りの間隔 double cof = 2*Math.PI/interval; int x = (int)(r*Math.Sin(cof*t))+center.X; int y = (int)(-r*Math.Cos(cof*t))+center.Y; return new Point(x,y); } 終点を求める関数はこんな感じ。rは長さですね private readonly Point center = new Point(150,150); は適当に用意しといてください ***針を描画 [#v9a8572c] DrawLineの使い方はMSDNでも見てもらうとしてこんな感じ g.DrawLine(new Pen(Color.Red,3),center,calc_endPoint(100,dt.Hour,12)); //時 g.DrawLine(new Pen(Color.Yellow,3),center,calc_endPoint(130,dt.Minute,60)); //分 g.DrawLine(new Pen(Color.Black,1),center,calc_endPoint(130,dt.Second,60)); //秒 色は見やすいように適当に。3や1のところが太さですね。後ろの引数は始点と終点を表してます。 ***ソース全景 [#a06b7188] //ここは自動で書かれると思います 結構省略してます private System.Windows.Forms.Timer timer1; private void InitializeComponent() { this.timer1.Enabled = true; this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); this.ClientSize = new System.Drawing.Size(292, 286); } //こっから書いてね private readonly Point center = new Point(150,150); private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { DateTime dt = DateTime.Now; Graphics g = this.CreateGraphics(); g.Clear(Color.White); g.DrawLine(new Pen(Color.Red,3),center,calc_endPoint(100,dt.Hour,12)); //時 g.DrawLine(new Pen(Color.Yellow,3),center,calc_endPoint(130,dt.Minute,60)); //分 g.DrawLine(new Pen(Color.Black,1),center,calc_endPoint(130,dt.Second,60)); //秒 } private Point calc_endPoint(int r,int t,int interval) { //r:半径 t:時間 interval|目盛りの間隔 double cof = 2*Math.PI/interval; int x = (int)(r*Math.Sin(cof*t))+center.X; int y = (int)(-r*Math.Cos(cof*t))+center.Y; return new Point(x,y); } private void timer1_Tick(object sender, System.EventArgs e) { this.Refresh(); } **最後に [#xe303871] ファイル添付できるようになったら図とかソースとうpします 間違ってたら書き直してくれ 文字盤とかは簡単にできるはずなんで自分で用意してやってみてください *参考文献 [#n3993ce9] **参考サイト [#u4b676a8] -C#入門 --初心者向け ---[[C# によるプログラミング入門:http://ufcpp.net/study/csharp/]] --プログラミング経験者向け ---[[@IT 連載 改訂版 C#入門:http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html]] -Tips、テクニック集 --[[C#,VB.NET入門:http://jeanne.wankuma.com/]] --[[C# Tips:http://www.woodensoldier.info/computer/CSharp.htm]] --[[矢沢久雄の早わかりGoFデザインパターン:http://itpro.nikkeibp.co.jp/article/COLUMN/20051201/225570/]] **参考書籍 [#rb492f41] -C#入門 --初心者向け ---独習C# 第2版(ハーバート・シルト著、翔泳社) --プログラミング経験者向け ---プログラミングC# 第4版(Jesse Liberty 著、オライリー)