プログラミング言語/C Sharp/CSharpチュートリアル
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*C#チュートリアル [#a337d410]
#contents
*はじめに [#idd81ac4]
-wiki書くの初めてだからいろいろと許してください><
-僕はF700isさんではないです><
*プログラミングとは何か [#wce3cd26]
プログラミングとはコンピュータに対して命令をする事です。...
*プログラミング言語とは何か [#pd0b363c]
コンピュータは0か1の2進数の言葉しか理解することは出来ませ...
*C#の特徴 [#i065a934]
C#は先進的な文法を取り入れた比較的新しい言語です。すばや...
*IDEの導入 [#iee08282]
プログラミングはメモ帳だけでもすることはできますが、いろ...
*GUIアプリ編 [#b6cf50eb]
**プロジェクトをつくる [#z3c64e4b]
何か作るときはプロジェクトを作らなければいけません。作っ...
「ファイル」→「新しいプロジェクト」→「Windowsアプリケーシ...
プロジェクト名は好きな名前を入れてください。でおk
そうするとForm1と書かれたウィンドウが出ると思います。
F5または緑の矢印ボタンまたは「デバッグ」→「デバッグで開始...
簡単だね☆
**C#ツールボックスを使おう [#p4a99afe]
右側にツールボックスがなかったら「表示」→「ツールボックス...
さてツールボックスからボタンをドラッグ&ドロップで好きな位...
実行すると好きなだけ押せるボタンが作れるぞ!~
できたらいろんな部品をぽとぺたしよう!
**プロパティをいじくろう [#ke65c07d]
設置した部品を選択しよう 右下にプロパティが表示されてるか...
ボタンを選択したらTextのところを探して好きな文字に変更し...
BackColorやFontも変えてみよう!
**イベントを作ろう [#f74dfa99]
さていきなり作ったボタンをダブルクリックしてみよう。
いきなりテキストエディタに飛ばされるはずだ。
意味はそのままでボタン(button)が押された時(Click)ここに書...
そこに
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("働け");
}
と書いて実行しよう
そうしてボタンを押すと…
**ラベルを追加しよう [#f54a8884]
ラベルは好きな文字を表示できる部品(コントロール)です
表示する文字はTextプロパティで変更できます
さて実行する前は変更できるようになったね? 次はボタンを押...
さっき MessageBox.Showを書いたとこの一行下に書こう。
label1.Text = "うほっ";
これはlabel1(ラベルの名前)のTextプロパティに"うほっ"を入...
文字は""で囲んであげる必要があります。
=は等しいという意味ではありません 右のものを左へいれると...
*コンソール編 [#y4c9ca8b]
**エントリポイント [#k14b84a6]
ここからはプログラムの基本を学びます。そのためコンソール...
「新しいプロジェクト」から「コンソールアプリケーション」...
今度はフォームが現れずにコードが表示されましたね?
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
いきなり沢山書かれて戸惑うかも知れませんが一度に全て理解...
まずstatic void Main~の部分はエントリポイントと言ってプ...
次からコードはこの{}の中に書いていきます。
**文字を表示する [#d2c96225]
画面に表示する命令はSystem.Console.WriteLine();という命令...
ちょっと長いですね^^ でも省略する方法があります。
それがコードスニペットです ctrl + k , xで候補がでます。
cwと打って決定するとあら不思議。(System.は無くてもかまい...
さてスニペットを使って入れたWriteLine()の()の中に表示した...
例えば"HelloWorld!"と入れてみましょう~
static void Main(string[] args)
{
System.Console.WriteLine("ぬるぽ");
}
さて先ほどと同様に実行しても実行結果が見えない早さで閉じ...
確認したら次へ進みましょう ~
**計算をする [#gab7aee2]
目の前の箱は電子計算機なんですから計算をさせてみましょう。
先ほどの()の中身を書き換えます。
計算はそのまま(3+5)や(4*5)と書けば結果が表示されます ""は...
加減算よりも剰余算が優先されます 普通の式と一緒です。
()も使う事ができます。
WriteLine((3+5)*2)のように書けます 掛け算は省略できません。
ちょっと注意なのは割り算です 記号は/です~
でも(10/3)とかやっても変な結果が出ると思いますが まあ後で...
Console.WriteLine(2+3);
Console.WriteLine(3-5);
Console.WriteLine(3*2);
Console.WriteLine(10/3); //変な結果が表示される
**変数 [#i750bb84]
さて電卓にもメモリー機能があるようにコンピュータも情報を...
ちなみにファイルに保存とは違います。ちょっとだけ保存です。
情報を保存するには場所を確保しなければなりません 。の場所...
宣言するためには型を指定する必要があります。型とはどんな...
例えば文字を格納する変数の型は string です。
整数を格納する変数の型は int です 整数の英語integerの略で...
変数を確保するときはその場所に名前をつけます 名前はかぶっ...
数字で始めることはできません。できるだけアルファベットを...
日本語も使えますがやめたほうがいいです。
変数の宣言は以下のようにします。
型名 変数名;
例えば整数を格納する変数seisuの宣言は~
int seisu;
となります。
**変数への代入 [#ud6b6ec3]
変数に値を入れることを''代入''と言います。文法は
変数名 = 値;
です =は等しいと言う意味ではありません。
右から左へ値を代入することを意味しています。
先ほどのseisuに10を代入しましょう。
seisu = 10;
ちなみに先ほどのintと宣言しましたので''整数以外を入れる事...
seisu = 12.3;
はエラーになります
**変数の表示 [#p3eefba4]
変数の中身を表示する事もできます。
Console.WriteLine(seisu);
と書けば変数の中身が表示されます また
Console.WriteLine(seisu*seisu);
とやることで変数を利用して計算することもできます
Console.WriteLine(seisu + 5);
とかももちろんできます
static void Main(string[] args)
{
int seisu = 10;
Console.WriteLine(seisu);
Console.WriteLine(seisu*seisu);
Console.WriteLine(seisu + 5);
}
上記のように変数は初期化と同時に代入できます。
**時計の表示 [#e6fd3cfe]
日付と時間はDateTime構造体を使えば取得できます。構造体が...
ちなみにC#の説明書みたいなのはMSDN Libraryにあります msdn...
さて日付と時間を格納する変数の型はDateTimeです。
現在の時間を取得するのは以下のようにします。
DateTime jikan = DateTime.Now;
DateTime.Nowには現在の時間が入っています。表示は
WriteLine(jikan);
で表示できます
これで時間と日付が表示できるはずです^^
static void Main(string[] args)
{
DateTime jikan = DateTime.Now;
Console.WriteLine(jikan);
}
**関数(メソッド) [#x6ec72d7]
プログラミングにおいて欠かせないもの、それが関数です。メ...
f(x) = x^2
という中学校でよくやったような関数があります。xに1を入れ...
関数は''関数名()''で表されます。
''()がついてないものは変数''ですので区別できますね。
引数は()の中に書きます どんな引数を取るかは関数によって変...
実際の使い方ですがWriteLine()という関数は文字列を引数にと...
Console.WriteLine("働け");
となります
また累乗を求める関数Math.pow()は引数に数字(double)を2つと...
Math.Pow(2,3);
のように,で区切ります。もちろん答えが返ってきます。結果を...
double kotae = Math.Pow(2,3);
とします これで2の3乗ができました
**関数を作る [#we9de9ef]
さて今まではstatic void Mainというところに書いていました。
よく見たら()がついてますね? 実はこれも関数なんです。
Mainという関数は特別で1番最初に実行される関数です。
なので今まではMain関数を作ってきたことになります。
このように自分で好きなように関数を作る事ができます。書式は
アクセス修飾子 戻り値の型 関数名(引数のリスト){}
です 今度はわけわからん感じですがとりあえずアクセス修飾子...
さて、はじめてなので与えられた数字を倍にする関数を作りま...
場所はMain{}の外の下にしましょう。
今回はintを受け取ってintを返しましょう。なので
static int bai(int a){}
が関数の宣言部になります。C#は慣例的に最初の一文字目は大...
aは好きな名前をつけることができます。最初のintが戻り値の...
次に2倍する処理を書きます
int kotae = a * 2;
与えられた数字はaに入っているので2をかけて倍にします
次に答えを返します 返すには''return''キーワードを使います...
return kotae;
と書きます returnしたら関数は処理を終了します。
では作った関数をMainから使ってみましょう
Mainの中に
int x = bai(10);
Console.WriteLine(x);
とすると20と表示されるはずです。
今回のソース
class Program
{
static void Main(string[] args)
{
int x = bai(10);
Console.WriteLine(x);
}
static int bai(int a)
{
int kotae = 2 * a;
return kotae;
}
}
どのようにプログラムが流れていくかしっかり理解しましょう。
**省略記法 [#g8a3bd12]
さてint型変数iがあるとしよう。
これに何が入っているかわからないが1を足したい。
どういうコードを書けばいいだろうか?。
頭を働かして考えて欲しい。
答え
i = i + 1;
i = i + 1;はなんとなく気持ち悪いかも知れない。数学的に矛...
さてC#はCの血が流れていて省略の美学というものがある。いく...
i += 1;
これは上式とまったく同じ意味。この方が見やすいかな?
そして''1''を足す場合にだけはさらに特別に省略できる。
i++;
これも同じ意味である 1を足す場合は良くあり使われるので覚...
ちなみに足し算だけでなく
i -= 1;
i *= 1;
i /= 1;
なども同様にできる。
ちなみにi--もある。
**Powを作ろう [#l5d20745]
累乗を計算する関数Powを自分で作ってみよう。
まず引数を決めよう。今回は簡単のためint型変数を2つとろう。
2.1の0.86乗とかなるとめんどくさいので 2の3乗のようにしま...
返り値は整数の掛け算だから答も整数になるのでint型でいいだ...
これを元に関数の宣言を自分で書いてみよう
答え
static int Pow(int x,int y)
{
}
**繰り返し構文 [#o2a70e67]
さて累乗をするPow関数を作成しよう。引数x,yを使いxのy乗を...
例えば2の3乗なら2*2*2で、単純に繰り返せばいい事がわかる。
つまり引数を使ってx*x*x…をy回やればいい事になる。
ではこのように繰り返しを表現するにはどうすればいいのだろう?
C#には''for構文''が用意されている。これを使おう。
さて書式は
for(初期化式;繰り返し条件;繰り返し式){}
であるけどこれではよくわからないので単純に10回繰り返すサ...
for(int i=0;i<10;i++){}
まずint i=0はforが始まる前に一回だけ実行される。iは慣用的...
i<10はiが10未満という条件が満たされている間繰り返しなさい...
i++は一回繰り返す度に実行される 1回繰り返すとiに1足してい...
これがfor文の基本系だ しっかり理解しよう
ちなみに0から始めるには理由があるのでそんなもんかとおもっ...
さて今回はy回繰り返したい。基本系をちょっと変えてy回繰り...
答
for(int i=0; i<y; i++){}
**Pow関数の実装 [#f58727be]
さてy回繰り返す方法を学んだ。これを使ってPowを計算しよう。
今回は負数は考えない。繰り返すたびに掛け算をすることがポ...
答え
class Program
{
static void Main(string[] args)
{
int x = Pow(2, 16);
Console.WriteLine(x);
}
static int Pow(int x, int y)
{
int result = 1;
for (int i = 0; i < y; i++)
{
result *= x;
}
return result;
}
}
**魔法使いかどうか判定する [#i549d509]
童貞は30を迎えると魔法使いになれるといいます。
年齢を尋ねて、魔法使いかどうか判定しましょう。
***年齢を取得する [#h3ac86dd]
まず、年齢を入力してください。と表示します。
Console.WriteLine("年齢を入力してください。");
次に年齢を入力してもらうのですが、どうすればいいのでしょ...
[[ReadLineメソッド>http://msdn2.microsoft.com/ja-jp/libra...
標準入力ストリームから次の 1 行分の文字を読み取ります。
と書いてあるのでこれでよさそうです。標準入力ストリームは...
構文のC#の部分を見ると
public static string ReadLine ()
と書かれています。publicは習ってませんが無視してください...
string age_str = Console.ReadLine();
でage_strに入力された文字を取得することができます。
***数字へ変換する [#se0e6fe7]
これで年齢は取得できましたがstring型であることから分かる...
そこで文字列の中の数字をint型へ変換してくれる関数がありま...
それがConvert.ToInt32()メソッドです。32とかついてるけど気...
早速MSDNで調べてみましょう。[[Convert.ToInt32 メソッド (S...
指定した String 形式の数値を、それと等価な 32 ビット符号...
なのでこれでよさそうです。いろいろと注意事項なども書いて...
int age = Convert.ToInt32(age_str);
これで年齢が取得できました。
***30以上かどうか判定する [#mb8e17c3]
年齢が取得できましたので今度は30以上かどうか判定します。
このように条件によって処理を変える必要があるとき使うのが'...
if(条件式)
{
//条件が真の時
}
else
{
//条件が偽の時
}
elseは違えば~するです。
***完成 [#tf6100c3]
30以上という条件は
age >= 30
と書くことが出来ます。=が後ろにつくのは今までと一緒ですね。
がんばって完成させましょう。
答え
class Program
{
static void Main(string[] args)
{
Console.WriteLine("年齢を入力してください。");
string age_str = Console.ReadLine();
int age = Convert.ToInt32(age_str);
if (age >= 30)
{
Console.WriteLine("あなたは魔法使いです");
}
else
{
Console.WriteLine("あなたは魔法使いではあ...
}
}
}
**数当てゲーム [#s309cd93]
初心者用課題のひとつ、数当てゲームを作成しましょう。以下...
これは答えの数を探すゲームです。適当な数を入れると正解よ...
それを 繰り返すことで答えを探すことができます。このゲー...
***while構文 [#b574b6e9]
乱数で答えを用意するのは後回しにしましょう。問題文を読め...
書式は
while(条件式){}
条件式が満たされている間{}の中の処理を繰り返します。条件...
無限ループを作ったときは必ず脱出できるようにしなければい...
***等号 [#z0d4d1c3]
=は等しいという意味ではありませんでした。では等しいという...
等号は==で表します。age == 30でageと30が等しいという意味...
***else if [#p9e72e74]
先ほどelseを勉強しましたがelseの後にまたifを書いて条件分...
いくつでも繋げて書く事ができます。
if(~)
{
}
else if(~)
{
}
else
{
}
***完成 [#r5b4dd6b]
数字を読み取るところを2行から1行にまとめて書いています。...
書くの忘れてましたが//はコメントを意味します。//から後ろ...
class Program
{
static void Main(string[] args)
{
int answer = 30;
while (true)
{
Console.WriteLine("数を入力してください。");
int num = Convert.ToInt32(Console.ReadLine());
if (num == answer)
{
Console.WriteLine("おめでとう。正解です。");
break; //ループから抜け出す。
}
else if (num < answer)
{
Console.WriteLine("小さいです");
}
else if (num > answer)
{
Console.WriteLine("すごく…大きいです…");
}
}
}
}
**乱数を作る [#x1e591f7]
乱数とはさいころのようにランダムな数列の事です。コンピュ...
***クラスとは? [#o8599c81]
僕はうまく説明できません^^
プログラミングの仕方にオブジェクト指向というものがありま...
Random rnd = new Random();
new以外見慣れた形ですね。Randomクラスのrndという名前のイ...
***Randomの使い方 [#pad0c855]
さて設計図から実際に使える部品が作れました。使い方を調べ...
オーバーロードの一覧が表示されます。同じ名前の関数でも異...
***サイコロのサンプルプログラム [#ob817b2f]
10回サイコロを振るプログラムです。繰り返しですからfor文で...
static void Main(string[] args)
{
Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
Console.WriteLine(rnd.Next(1,7));
}
}
**キャスト(型変換) [#wed76fe2]
Console.WriteLine(10/3);をしてみよう。結果は3と表示される...
***小数点をつける [#ca3fd7a8]
10ではなく、10.0とする。
***サフィックスをつける [#g047d25e]
数字を直接書く場合10とかいう整数を書くと勝手にint型と認識...
Console.WriteLine(10d/3); //答えがdoubleで返ってくる
他のサフィックスは[[数値のデータ型を明示的に指定するには...
***キャスト(型変換)する [#q1c5faf4]
(変換先の型名)変換したいもの
という書式で変数の型を変換することができる。これを''キャ...
Console.WriteLine((double)10/3);
またこれは変数にも使える
int a = 10;
int b = 3;
Console.WriteLine((double)a/b);
**変数の表現の範囲 [#ob2c3d62]
***int [#bd595df6]
int型は整数値を表現できると説明したが無限に大きい数を表現...
***double [#x9f3461e]
double型は64bitの大きさです。つまりintの倍の大きさという...
***暗黙的型変換 [#k7c16fb4]
intからdoubleへの変換は
int a = 100;
double b = a;
のように特別何も書かなくても型変換がおこなわれます。これ...
***明示的型変換 [#tf1319d7]
doubleからintへの型変換は
double a = 100;
int b = a;
と書いてもコンパイルエラーになります。これはdoubleよりint...
double a = 100;
int b = (int)a;
と()を使ってキャストしてあげる必要があります。これを明示...
**配列 [#c5128934]
さて学生数1200人の高校がある。数学のテストを実施したので...
***配列の宣言 [#vfffaba2]
配列を宣言する書式を示そう。
型名[] 配列名 = new 型名[要素数];
実際にint型の変数を1200個用意するには
int[] mathScore = new int[1200];
と書けばいい。この配列の中の変数を利用するには[]を使う。...
mathScore[0]
で普通の変数のように使うことができる。また[]の中には変数...
for(int i=0; i < mathScore.Length; i++)
{
Console.WriteLine(mathScore[i]);
}
で中身をすべて書き出すことができる。Lengthは要素数を取得...
***適当なデータを用意する [#ydf55dbb]
では1200人分の数学のテストの平均点を求めるプログラムを書...
***平均を計算する [#p712f1de]
平均はまず全部のデータを足して総数で割ればいい。全部のデ...
***平均を求めるプログラム 解答例 [#k9cbd366]
今回は点数を0~100までランダムに出しているので平均は50前...
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
//点数を格納する配列
int[] mathScore = new int[1200];
//合計点を格納する
int sum = 0;
//ランダムな点数を入力する
for (int i = 0; i < mathScore.Length; i++)
{
mathScore[i] = rnd.Next(100 + 1);
}
//総合計点を求める
for (int i = 0; i < mathScore.Length; i++)
{
sum += mathScore[i];
}
//平均を計算する
double average = (double)sum / mathScore.Length;
Console.WriteLine("平均は{0}点です。",average);
}
}
**エラトステネスの篩 [#x31b3e35]
エラトステネスの篩とは素数を求めるもっとも原始的なやりか...
***bool [#w4bed0ce]
エラトステネスの篩はまず順にならんだ数列を用意する。とい...
***解き方 [#qa5ccf47]
まずbool型の配列を用意しよう。いくつまで求めるか事前に取...
まず2番目から順に見ていきtrue(素数)ならその倍数を消してい...
この課題は今まで習ったことすべてを使わないと解けない。頑...
***ヒント [#bd49cd69]
まず2の倍数、3の倍数と繰り返すにはfor文が1個いる。そして...
for()
{
for()
{
}
}
***解答例 [#h5961d55]
わからなかった人も答えをしっかり理解しよう
class Program
{
static void Main(string[] args)
{
Console.WriteLine("いくつまでの素数を表示しますか?");
int num = Convert.ToInt32(Console.ReadLine());
//trueなら素数
bool[] prime = new bool[num + 1];
//0,1は素数ではない
for (int i = 2; i < prime.Length; i++)
{
prime[i] = true;
}
//エラトステネスの篩
for (int i = 2; i < prime.Length; i++)
{
if (prime[i])
{
for (int k = 2; (i * k) < prime.Length; k++)
{
prime[i*k] = false;
}
}
}
//素数を書き出す
for (int i = 0; i < prime.Length; i++)
{
if (prime[i])
{
Console.Write(i);
Console.Write(" "); //空白
}
}
}
}
**switch case [#hf6b43d0]
条件分岐の構文としてifを教えましたがif elseはたくさん書く...
switch (式)
{
case 定数式:
//ここに処理
break;
default:
break;
}
いろいろと書くのが多いですがコードスニペットで挿入できま...
さっそくサンプルコードを書いてみます。入力された数字を読...
int num = Convert.ToInt32(Console.ReadLine());
switch (num)
{
case 0:
Console.WriteLine("0が入力されました。");
break;
case 1:
Console.WriteLine("1が入力されました。");
break;
default:
Console.WriteLine("それ以外が入力されました。");
break;
}
あんまりいい例が浮かばなかったので適当に書きました。なん...
C#のswich文にはstringを使うことができます。たとえば
string mes = Console.ReadLine();
switch (mes)
{
case "ぬるぽ":
Console.WriteLine("ガッ");
break;
default:
break;
}
とかもできます。switch文はenumと組み合わせて使うと効果的...
**修飾子 [#g81cada3]
さてRandomクラスのNextメソッドを使うにはまずインスタンス...
こういう時はMSDNを引きましょう。WriteLineメソッドの定義は
public static void WriteLine ()
となっています。''voidとは戻り値がない''ことを意味します...
***public [#bbbe7b1f]
publicとはそのまま公開という意味です。どこからでも使うこ...
***private [#a773b088]
public反対の意味で非公開です。他のクラスからは使うことが...
***static [#r5b3570c]
staticをつけたメソッドは''静的メソッド''と呼ばれます。sta...
Mainにもstaticがついてますが、これはプログラム開始時点で...
今まで作ってきた関数にもstaticをつけました。これも今まで...
**スコープ [#p7da4ced]
以下のコードを実行してみましょう。
for (int i = 0; i < 10; i++)
{}
Console.WriteLine(i);
一見あっているように見えるこのコードは実は間違っています...
上のように繰り返した数を後で使いたいときがあります。その...
int count;
for(count=0; count < 10; count++){}
Console.WriteLine(count);
のようにforの外で定義するようにすればforの外でも使うこと...
**継承 [#o799a1dc]
クラスを作るとき、別のクラスを''継承''することができます...
継承される側のクラスを''基本クラス''(基底クラス、スーパ...
継承の書式を示します
class クラス名 : 基底クラス,インターフェース,…
クラス名の後ろに:基底クラスで指定します。何も書かなかった...
***アップキャスト [#h3fc81e0]
Animalクラスを継承したHumanクラスがあるとします。Animalク...
class Program
{
static void Main(string[] args)
{
Animal animal = new Human();
Console.WriteLine(animal.age);
}
}
class Animal
{
public int age = 10;
}
class Human : Animal
{
public int iq = 100;
}
Animalクラスから派生したHuman Monkey Catといったクラスが...
***ダウンキャスト [#x82213a8]
Animal animal = new Human();
として、animalをまたHuman型へ変換することもできます。これ...
Animal animal = new Human();
Human human = (Human)animal;
もちろん元々Cat型だったものをAnimal型へキャストしてHuman...
*再びGUIアプリ編 [#r34274c1]
今までは基礎のお勉強でした。大変つまらなかったと思います...
**Form [#p2362a93]
さっそく新しいプロジェクトを作成しましょう。今度はWindows...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public form()
{
InitializeComponent();
}
}
}
さて表示されていたFormは実際にはFormクラスを継承したもの...
***エントリポイント [#dedd1732]
さてよくみるとMainがありません。どこからプログラムが始ま...
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsApplication2
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
ありましたね。あんまり気にすることはないですが
Application.Run(new MainForm());
でフォームを表示しています。とりあえず見なかったことにし...
**CPU使用率を表示する [#l3e6a25f]
デスクトップアクセサリといえばCPUカウンタではないでしょう...
#ref(cpu_app.png)
完成図
***PerformanceCounter [#ad7ba14d]
PerformanceCounterはいろんな情報を取得できるクラスみたい...
PerformanceCounterはツールボックスに入ってますので探して...
CategoryName = "Processor"
CounterName = "% Processor Time"
InstanceName = "_Total"
候補が表示されるので上の通り選択しましょう。Memoryとか選...
(Name)プロパティはインスタンスの名前になります。最後に1と...
***ProgressBar [#p5a6a561]
使用率の表示にProgressBarを使うことにします。ラベルの使い...
***Timer [#y7183696]
CPU使用率ですから定期的に値が変わったほうがいいですね。Ti...
Intervalプロパティはイベントの発生する間隔です。msで指定...
Enabledプロパティはそのコントロールが有効であるか指定しま...
***Tickイベントの登録 [#ob735a33]
TimerコントロールがPerformanceCounterの横にあるのでダブル...
private void timer_Tick(object sender, EventArgs e)
{
}
が書き足されたと思います。これはTimerコントロールが指定し...
***値を取得して表示 [#pc2ef398]
使用率を取得するにはPerformanceCounterクラスのNextValueメ...
floatはdoubleよりも範囲が狭く、有効桁も7桁くらいです。
ProgressBarはValueプロパティに値を入れるだけでいいみたい...
まとめると
private void timer_Tick(object sender, EventArgs e)
{
this.progressBar.Value = (int)this.performanceCounter.N...
}
と書くだけ。てかもう完成しましたよ。早っ
***常に最前面に表示する [#uae956e4]
他のウィンドウに隠れると見えなくて残念です。常に最前面に...
***透明にする [#y63a95a7]
FormのOpacityプロパティを変えてみるだけです。100%で普通の...
終了行:
*C#チュートリアル [#a337d410]
#contents
*はじめに [#idd81ac4]
-wiki書くの初めてだからいろいろと許してください><
-僕はF700isさんではないです><
*プログラミングとは何か [#wce3cd26]
プログラミングとはコンピュータに対して命令をする事です。...
*プログラミング言語とは何か [#pd0b363c]
コンピュータは0か1の2進数の言葉しか理解することは出来ませ...
*C#の特徴 [#i065a934]
C#は先進的な文法を取り入れた比較的新しい言語です。すばや...
*IDEの導入 [#iee08282]
プログラミングはメモ帳だけでもすることはできますが、いろ...
*GUIアプリ編 [#b6cf50eb]
**プロジェクトをつくる [#z3c64e4b]
何か作るときはプロジェクトを作らなければいけません。作っ...
「ファイル」→「新しいプロジェクト」→「Windowsアプリケーシ...
プロジェクト名は好きな名前を入れてください。でおk
そうするとForm1と書かれたウィンドウが出ると思います。
F5または緑の矢印ボタンまたは「デバッグ」→「デバッグで開始...
簡単だね☆
**C#ツールボックスを使おう [#p4a99afe]
右側にツールボックスがなかったら「表示」→「ツールボックス...
さてツールボックスからボタンをドラッグ&ドロップで好きな位...
実行すると好きなだけ押せるボタンが作れるぞ!~
できたらいろんな部品をぽとぺたしよう!
**プロパティをいじくろう [#ke65c07d]
設置した部品を選択しよう 右下にプロパティが表示されてるか...
ボタンを選択したらTextのところを探して好きな文字に変更し...
BackColorやFontも変えてみよう!
**イベントを作ろう [#f74dfa99]
さていきなり作ったボタンをダブルクリックしてみよう。
いきなりテキストエディタに飛ばされるはずだ。
意味はそのままでボタン(button)が押された時(Click)ここに書...
そこに
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("働け");
}
と書いて実行しよう
そうしてボタンを押すと…
**ラベルを追加しよう [#f54a8884]
ラベルは好きな文字を表示できる部品(コントロール)です
表示する文字はTextプロパティで変更できます
さて実行する前は変更できるようになったね? 次はボタンを押...
さっき MessageBox.Showを書いたとこの一行下に書こう。
label1.Text = "うほっ";
これはlabel1(ラベルの名前)のTextプロパティに"うほっ"を入...
文字は""で囲んであげる必要があります。
=は等しいという意味ではありません 右のものを左へいれると...
*コンソール編 [#y4c9ca8b]
**エントリポイント [#k14b84a6]
ここからはプログラムの基本を学びます。そのためコンソール...
「新しいプロジェクト」から「コンソールアプリケーション」...
今度はフォームが現れずにコードが表示されましたね?
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
いきなり沢山書かれて戸惑うかも知れませんが一度に全て理解...
まずstatic void Main~の部分はエントリポイントと言ってプ...
次からコードはこの{}の中に書いていきます。
**文字を表示する [#d2c96225]
画面に表示する命令はSystem.Console.WriteLine();という命令...
ちょっと長いですね^^ でも省略する方法があります。
それがコードスニペットです ctrl + k , xで候補がでます。
cwと打って決定するとあら不思議。(System.は無くてもかまい...
さてスニペットを使って入れたWriteLine()の()の中に表示した...
例えば"HelloWorld!"と入れてみましょう~
static void Main(string[] args)
{
System.Console.WriteLine("ぬるぽ");
}
さて先ほどと同様に実行しても実行結果が見えない早さで閉じ...
確認したら次へ進みましょう ~
**計算をする [#gab7aee2]
目の前の箱は電子計算機なんですから計算をさせてみましょう。
先ほどの()の中身を書き換えます。
計算はそのまま(3+5)や(4*5)と書けば結果が表示されます ""は...
加減算よりも剰余算が優先されます 普通の式と一緒です。
()も使う事ができます。
WriteLine((3+5)*2)のように書けます 掛け算は省略できません。
ちょっと注意なのは割り算です 記号は/です~
でも(10/3)とかやっても変な結果が出ると思いますが まあ後で...
Console.WriteLine(2+3);
Console.WriteLine(3-5);
Console.WriteLine(3*2);
Console.WriteLine(10/3); //変な結果が表示される
**変数 [#i750bb84]
さて電卓にもメモリー機能があるようにコンピュータも情報を...
ちなみにファイルに保存とは違います。ちょっとだけ保存です。
情報を保存するには場所を確保しなければなりません 。の場所...
宣言するためには型を指定する必要があります。型とはどんな...
例えば文字を格納する変数の型は string です。
整数を格納する変数の型は int です 整数の英語integerの略で...
変数を確保するときはその場所に名前をつけます 名前はかぶっ...
数字で始めることはできません。できるだけアルファベットを...
日本語も使えますがやめたほうがいいです。
変数の宣言は以下のようにします。
型名 変数名;
例えば整数を格納する変数seisuの宣言は~
int seisu;
となります。
**変数への代入 [#ud6b6ec3]
変数に値を入れることを''代入''と言います。文法は
変数名 = 値;
です =は等しいと言う意味ではありません。
右から左へ値を代入することを意味しています。
先ほどのseisuに10を代入しましょう。
seisu = 10;
ちなみに先ほどのintと宣言しましたので''整数以外を入れる事...
seisu = 12.3;
はエラーになります
**変数の表示 [#p3eefba4]
変数の中身を表示する事もできます。
Console.WriteLine(seisu);
と書けば変数の中身が表示されます また
Console.WriteLine(seisu*seisu);
とやることで変数を利用して計算することもできます
Console.WriteLine(seisu + 5);
とかももちろんできます
static void Main(string[] args)
{
int seisu = 10;
Console.WriteLine(seisu);
Console.WriteLine(seisu*seisu);
Console.WriteLine(seisu + 5);
}
上記のように変数は初期化と同時に代入できます。
**時計の表示 [#e6fd3cfe]
日付と時間はDateTime構造体を使えば取得できます。構造体が...
ちなみにC#の説明書みたいなのはMSDN Libraryにあります msdn...
さて日付と時間を格納する変数の型はDateTimeです。
現在の時間を取得するのは以下のようにします。
DateTime jikan = DateTime.Now;
DateTime.Nowには現在の時間が入っています。表示は
WriteLine(jikan);
で表示できます
これで時間と日付が表示できるはずです^^
static void Main(string[] args)
{
DateTime jikan = DateTime.Now;
Console.WriteLine(jikan);
}
**関数(メソッド) [#x6ec72d7]
プログラミングにおいて欠かせないもの、それが関数です。メ...
f(x) = x^2
という中学校でよくやったような関数があります。xに1を入れ...
関数は''関数名()''で表されます。
''()がついてないものは変数''ですので区別できますね。
引数は()の中に書きます どんな引数を取るかは関数によって変...
実際の使い方ですがWriteLine()という関数は文字列を引数にと...
Console.WriteLine("働け");
となります
また累乗を求める関数Math.pow()は引数に数字(double)を2つと...
Math.Pow(2,3);
のように,で区切ります。もちろん答えが返ってきます。結果を...
double kotae = Math.Pow(2,3);
とします これで2の3乗ができました
**関数を作る [#we9de9ef]
さて今まではstatic void Mainというところに書いていました。
よく見たら()がついてますね? 実はこれも関数なんです。
Mainという関数は特別で1番最初に実行される関数です。
なので今まではMain関数を作ってきたことになります。
このように自分で好きなように関数を作る事ができます。書式は
アクセス修飾子 戻り値の型 関数名(引数のリスト){}
です 今度はわけわからん感じですがとりあえずアクセス修飾子...
さて、はじめてなので与えられた数字を倍にする関数を作りま...
場所はMain{}の外の下にしましょう。
今回はintを受け取ってintを返しましょう。なので
static int bai(int a){}
が関数の宣言部になります。C#は慣例的に最初の一文字目は大...
aは好きな名前をつけることができます。最初のintが戻り値の...
次に2倍する処理を書きます
int kotae = a * 2;
与えられた数字はaに入っているので2をかけて倍にします
次に答えを返します 返すには''return''キーワードを使います...
return kotae;
と書きます returnしたら関数は処理を終了します。
では作った関数をMainから使ってみましょう
Mainの中に
int x = bai(10);
Console.WriteLine(x);
とすると20と表示されるはずです。
今回のソース
class Program
{
static void Main(string[] args)
{
int x = bai(10);
Console.WriteLine(x);
}
static int bai(int a)
{
int kotae = 2 * a;
return kotae;
}
}
どのようにプログラムが流れていくかしっかり理解しましょう。
**省略記法 [#g8a3bd12]
さてint型変数iがあるとしよう。
これに何が入っているかわからないが1を足したい。
どういうコードを書けばいいだろうか?。
頭を働かして考えて欲しい。
答え
i = i + 1;
i = i + 1;はなんとなく気持ち悪いかも知れない。数学的に矛...
さてC#はCの血が流れていて省略の美学というものがある。いく...
i += 1;
これは上式とまったく同じ意味。この方が見やすいかな?
そして''1''を足す場合にだけはさらに特別に省略できる。
i++;
これも同じ意味である 1を足す場合は良くあり使われるので覚...
ちなみに足し算だけでなく
i -= 1;
i *= 1;
i /= 1;
なども同様にできる。
ちなみにi--もある。
**Powを作ろう [#l5d20745]
累乗を計算する関数Powを自分で作ってみよう。
まず引数を決めよう。今回は簡単のためint型変数を2つとろう。
2.1の0.86乗とかなるとめんどくさいので 2の3乗のようにしま...
返り値は整数の掛け算だから答も整数になるのでint型でいいだ...
これを元に関数の宣言を自分で書いてみよう
答え
static int Pow(int x,int y)
{
}
**繰り返し構文 [#o2a70e67]
さて累乗をするPow関数を作成しよう。引数x,yを使いxのy乗を...
例えば2の3乗なら2*2*2で、単純に繰り返せばいい事がわかる。
つまり引数を使ってx*x*x…をy回やればいい事になる。
ではこのように繰り返しを表現するにはどうすればいいのだろう?
C#には''for構文''が用意されている。これを使おう。
さて書式は
for(初期化式;繰り返し条件;繰り返し式){}
であるけどこれではよくわからないので単純に10回繰り返すサ...
for(int i=0;i<10;i++){}
まずint i=0はforが始まる前に一回だけ実行される。iは慣用的...
i<10はiが10未満という条件が満たされている間繰り返しなさい...
i++は一回繰り返す度に実行される 1回繰り返すとiに1足してい...
これがfor文の基本系だ しっかり理解しよう
ちなみに0から始めるには理由があるのでそんなもんかとおもっ...
さて今回はy回繰り返したい。基本系をちょっと変えてy回繰り...
答
for(int i=0; i<y; i++){}
**Pow関数の実装 [#f58727be]
さてy回繰り返す方法を学んだ。これを使ってPowを計算しよう。
今回は負数は考えない。繰り返すたびに掛け算をすることがポ...
答え
class Program
{
static void Main(string[] args)
{
int x = Pow(2, 16);
Console.WriteLine(x);
}
static int Pow(int x, int y)
{
int result = 1;
for (int i = 0; i < y; i++)
{
result *= x;
}
return result;
}
}
**魔法使いかどうか判定する [#i549d509]
童貞は30を迎えると魔法使いになれるといいます。
年齢を尋ねて、魔法使いかどうか判定しましょう。
***年齢を取得する [#h3ac86dd]
まず、年齢を入力してください。と表示します。
Console.WriteLine("年齢を入力してください。");
次に年齢を入力してもらうのですが、どうすればいいのでしょ...
[[ReadLineメソッド>http://msdn2.microsoft.com/ja-jp/libra...
標準入力ストリームから次の 1 行分の文字を読み取ります。
と書いてあるのでこれでよさそうです。標準入力ストリームは...
構文のC#の部分を見ると
public static string ReadLine ()
と書かれています。publicは習ってませんが無視してください...
string age_str = Console.ReadLine();
でage_strに入力された文字を取得することができます。
***数字へ変換する [#se0e6fe7]
これで年齢は取得できましたがstring型であることから分かる...
そこで文字列の中の数字をint型へ変換してくれる関数がありま...
それがConvert.ToInt32()メソッドです。32とかついてるけど気...
早速MSDNで調べてみましょう。[[Convert.ToInt32 メソッド (S...
指定した String 形式の数値を、それと等価な 32 ビット符号...
なのでこれでよさそうです。いろいろと注意事項なども書いて...
int age = Convert.ToInt32(age_str);
これで年齢が取得できました。
***30以上かどうか判定する [#mb8e17c3]
年齢が取得できましたので今度は30以上かどうか判定します。
このように条件によって処理を変える必要があるとき使うのが'...
if(条件式)
{
//条件が真の時
}
else
{
//条件が偽の時
}
elseは違えば~するです。
***完成 [#tf6100c3]
30以上という条件は
age >= 30
と書くことが出来ます。=が後ろにつくのは今までと一緒ですね。
がんばって完成させましょう。
答え
class Program
{
static void Main(string[] args)
{
Console.WriteLine("年齢を入力してください。");
string age_str = Console.ReadLine();
int age = Convert.ToInt32(age_str);
if (age >= 30)
{
Console.WriteLine("あなたは魔法使いです");
}
else
{
Console.WriteLine("あなたは魔法使いではあ...
}
}
}
**数当てゲーム [#s309cd93]
初心者用課題のひとつ、数当てゲームを作成しましょう。以下...
これは答えの数を探すゲームです。適当な数を入れると正解よ...
それを 繰り返すことで答えを探すことができます。このゲー...
***while構文 [#b574b6e9]
乱数で答えを用意するのは後回しにしましょう。問題文を読め...
書式は
while(条件式){}
条件式が満たされている間{}の中の処理を繰り返します。条件...
無限ループを作ったときは必ず脱出できるようにしなければい...
***等号 [#z0d4d1c3]
=は等しいという意味ではありませんでした。では等しいという...
等号は==で表します。age == 30でageと30が等しいという意味...
***else if [#p9e72e74]
先ほどelseを勉強しましたがelseの後にまたifを書いて条件分...
いくつでも繋げて書く事ができます。
if(~)
{
}
else if(~)
{
}
else
{
}
***完成 [#r5b4dd6b]
数字を読み取るところを2行から1行にまとめて書いています。...
書くの忘れてましたが//はコメントを意味します。//から後ろ...
class Program
{
static void Main(string[] args)
{
int answer = 30;
while (true)
{
Console.WriteLine("数を入力してください。");
int num = Convert.ToInt32(Console.ReadLine());
if (num == answer)
{
Console.WriteLine("おめでとう。正解です。");
break; //ループから抜け出す。
}
else if (num < answer)
{
Console.WriteLine("小さいです");
}
else if (num > answer)
{
Console.WriteLine("すごく…大きいです…");
}
}
}
}
**乱数を作る [#x1e591f7]
乱数とはさいころのようにランダムな数列の事です。コンピュ...
***クラスとは? [#o8599c81]
僕はうまく説明できません^^
プログラミングの仕方にオブジェクト指向というものがありま...
Random rnd = new Random();
new以外見慣れた形ですね。Randomクラスのrndという名前のイ...
***Randomの使い方 [#pad0c855]
さて設計図から実際に使える部品が作れました。使い方を調べ...
オーバーロードの一覧が表示されます。同じ名前の関数でも異...
***サイコロのサンプルプログラム [#ob817b2f]
10回サイコロを振るプログラムです。繰り返しですからfor文で...
static void Main(string[] args)
{
Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
Console.WriteLine(rnd.Next(1,7));
}
}
**キャスト(型変換) [#wed76fe2]
Console.WriteLine(10/3);をしてみよう。結果は3と表示される...
***小数点をつける [#ca3fd7a8]
10ではなく、10.0とする。
***サフィックスをつける [#g047d25e]
数字を直接書く場合10とかいう整数を書くと勝手にint型と認識...
Console.WriteLine(10d/3); //答えがdoubleで返ってくる
他のサフィックスは[[数値のデータ型を明示的に指定するには...
***キャスト(型変換)する [#q1c5faf4]
(変換先の型名)変換したいもの
という書式で変数の型を変換することができる。これを''キャ...
Console.WriteLine((double)10/3);
またこれは変数にも使える
int a = 10;
int b = 3;
Console.WriteLine((double)a/b);
**変数の表現の範囲 [#ob2c3d62]
***int [#bd595df6]
int型は整数値を表現できると説明したが無限に大きい数を表現...
***double [#x9f3461e]
double型は64bitの大きさです。つまりintの倍の大きさという...
***暗黙的型変換 [#k7c16fb4]
intからdoubleへの変換は
int a = 100;
double b = a;
のように特別何も書かなくても型変換がおこなわれます。これ...
***明示的型変換 [#tf1319d7]
doubleからintへの型変換は
double a = 100;
int b = a;
と書いてもコンパイルエラーになります。これはdoubleよりint...
double a = 100;
int b = (int)a;
と()を使ってキャストしてあげる必要があります。これを明示...
**配列 [#c5128934]
さて学生数1200人の高校がある。数学のテストを実施したので...
***配列の宣言 [#vfffaba2]
配列を宣言する書式を示そう。
型名[] 配列名 = new 型名[要素数];
実際にint型の変数を1200個用意するには
int[] mathScore = new int[1200];
と書けばいい。この配列の中の変数を利用するには[]を使う。...
mathScore[0]
で普通の変数のように使うことができる。また[]の中には変数...
for(int i=0; i < mathScore.Length; i++)
{
Console.WriteLine(mathScore[i]);
}
で中身をすべて書き出すことができる。Lengthは要素数を取得...
***適当なデータを用意する [#ydf55dbb]
では1200人分の数学のテストの平均点を求めるプログラムを書...
***平均を計算する [#p712f1de]
平均はまず全部のデータを足して総数で割ればいい。全部のデ...
***平均を求めるプログラム 解答例 [#k9cbd366]
今回は点数を0~100までランダムに出しているので平均は50前...
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
//点数を格納する配列
int[] mathScore = new int[1200];
//合計点を格納する
int sum = 0;
//ランダムな点数を入力する
for (int i = 0; i < mathScore.Length; i++)
{
mathScore[i] = rnd.Next(100 + 1);
}
//総合計点を求める
for (int i = 0; i < mathScore.Length; i++)
{
sum += mathScore[i];
}
//平均を計算する
double average = (double)sum / mathScore.Length;
Console.WriteLine("平均は{0}点です。",average);
}
}
**エラトステネスの篩 [#x31b3e35]
エラトステネスの篩とは素数を求めるもっとも原始的なやりか...
***bool [#w4bed0ce]
エラトステネスの篩はまず順にならんだ数列を用意する。とい...
***解き方 [#qa5ccf47]
まずbool型の配列を用意しよう。いくつまで求めるか事前に取...
まず2番目から順に見ていきtrue(素数)ならその倍数を消してい...
この課題は今まで習ったことすべてを使わないと解けない。頑...
***ヒント [#bd49cd69]
まず2の倍数、3の倍数と繰り返すにはfor文が1個いる。そして...
for()
{
for()
{
}
}
***解答例 [#h5961d55]
わからなかった人も答えをしっかり理解しよう
class Program
{
static void Main(string[] args)
{
Console.WriteLine("いくつまでの素数を表示しますか?");
int num = Convert.ToInt32(Console.ReadLine());
//trueなら素数
bool[] prime = new bool[num + 1];
//0,1は素数ではない
for (int i = 2; i < prime.Length; i++)
{
prime[i] = true;
}
//エラトステネスの篩
for (int i = 2; i < prime.Length; i++)
{
if (prime[i])
{
for (int k = 2; (i * k) < prime.Length; k++)
{
prime[i*k] = false;
}
}
}
//素数を書き出す
for (int i = 0; i < prime.Length; i++)
{
if (prime[i])
{
Console.Write(i);
Console.Write(" "); //空白
}
}
}
}
**switch case [#hf6b43d0]
条件分岐の構文としてifを教えましたがif elseはたくさん書く...
switch (式)
{
case 定数式:
//ここに処理
break;
default:
break;
}
いろいろと書くのが多いですがコードスニペットで挿入できま...
さっそくサンプルコードを書いてみます。入力された数字を読...
int num = Convert.ToInt32(Console.ReadLine());
switch (num)
{
case 0:
Console.WriteLine("0が入力されました。");
break;
case 1:
Console.WriteLine("1が入力されました。");
break;
default:
Console.WriteLine("それ以外が入力されました。");
break;
}
あんまりいい例が浮かばなかったので適当に書きました。なん...
C#のswich文にはstringを使うことができます。たとえば
string mes = Console.ReadLine();
switch (mes)
{
case "ぬるぽ":
Console.WriteLine("ガッ");
break;
default:
break;
}
とかもできます。switch文はenumと組み合わせて使うと効果的...
**修飾子 [#g81cada3]
さてRandomクラスのNextメソッドを使うにはまずインスタンス...
こういう時はMSDNを引きましょう。WriteLineメソッドの定義は
public static void WriteLine ()
となっています。''voidとは戻り値がない''ことを意味します...
***public [#bbbe7b1f]
publicとはそのまま公開という意味です。どこからでも使うこ...
***private [#a773b088]
public反対の意味で非公開です。他のクラスからは使うことが...
***static [#r5b3570c]
staticをつけたメソッドは''静的メソッド''と呼ばれます。sta...
Mainにもstaticがついてますが、これはプログラム開始時点で...
今まで作ってきた関数にもstaticをつけました。これも今まで...
**スコープ [#p7da4ced]
以下のコードを実行してみましょう。
for (int i = 0; i < 10; i++)
{}
Console.WriteLine(i);
一見あっているように見えるこのコードは実は間違っています...
上のように繰り返した数を後で使いたいときがあります。その...
int count;
for(count=0; count < 10; count++){}
Console.WriteLine(count);
のようにforの外で定義するようにすればforの外でも使うこと...
**継承 [#o799a1dc]
クラスを作るとき、別のクラスを''継承''することができます...
継承される側のクラスを''基本クラス''(基底クラス、スーパ...
継承の書式を示します
class クラス名 : 基底クラス,インターフェース,…
クラス名の後ろに:基底クラスで指定します。何も書かなかった...
***アップキャスト [#h3fc81e0]
Animalクラスを継承したHumanクラスがあるとします。Animalク...
class Program
{
static void Main(string[] args)
{
Animal animal = new Human();
Console.WriteLine(animal.age);
}
}
class Animal
{
public int age = 10;
}
class Human : Animal
{
public int iq = 100;
}
Animalクラスから派生したHuman Monkey Catといったクラスが...
***ダウンキャスト [#x82213a8]
Animal animal = new Human();
として、animalをまたHuman型へ変換することもできます。これ...
Animal animal = new Human();
Human human = (Human)animal;
もちろん元々Cat型だったものをAnimal型へキャストしてHuman...
*再びGUIアプリ編 [#r34274c1]
今までは基礎のお勉強でした。大変つまらなかったと思います...
**Form [#p2362a93]
さっそく新しいプロジェクトを作成しましょう。今度はWindows...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public form()
{
InitializeComponent();
}
}
}
さて表示されていたFormは実際にはFormクラスを継承したもの...
***エントリポイント [#dedd1732]
さてよくみるとMainがありません。どこからプログラムが始ま...
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsApplication2
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
ありましたね。あんまり気にすることはないですが
Application.Run(new MainForm());
でフォームを表示しています。とりあえず見なかったことにし...
**CPU使用率を表示する [#l3e6a25f]
デスクトップアクセサリといえばCPUカウンタではないでしょう...
#ref(cpu_app.png)
完成図
***PerformanceCounter [#ad7ba14d]
PerformanceCounterはいろんな情報を取得できるクラスみたい...
PerformanceCounterはツールボックスに入ってますので探して...
CategoryName = "Processor"
CounterName = "% Processor Time"
InstanceName = "_Total"
候補が表示されるので上の通り選択しましょう。Memoryとか選...
(Name)プロパティはインスタンスの名前になります。最後に1と...
***ProgressBar [#p5a6a561]
使用率の表示にProgressBarを使うことにします。ラベルの使い...
***Timer [#y7183696]
CPU使用率ですから定期的に値が変わったほうがいいですね。Ti...
Intervalプロパティはイベントの発生する間隔です。msで指定...
Enabledプロパティはそのコントロールが有効であるか指定しま...
***Tickイベントの登録 [#ob735a33]
TimerコントロールがPerformanceCounterの横にあるのでダブル...
private void timer_Tick(object sender, EventArgs e)
{
}
が書き足されたと思います。これはTimerコントロールが指定し...
***値を取得して表示 [#pc2ef398]
使用率を取得するにはPerformanceCounterクラスのNextValueメ...
floatはdoubleよりも範囲が狭く、有効桁も7桁くらいです。
ProgressBarはValueプロパティに値を入れるだけでいいみたい...
まとめると
private void timer_Tick(object sender, EventArgs e)
{
this.progressBar.Value = (int)this.performanceCounter.N...
}
と書くだけ。てかもう完成しましたよ。早っ
***常に最前面に表示する [#uae956e4]
他のウィンドウに隠れると見えなくて残念です。常に最前面に...
***透明にする [#y63a95a7]
FormのOpacityプロパティを変えてみるだけです。100%で普通の...
ページ名: