この記事では、C#の基礎を解説していきます。
Unityでは、C#というプログラミング言語を使いますので。
C#ができるように覚えていきましょう。
※ もっとC#を勉強したい人は
C#プログラミングマスター講座をご覧ください。
※ VisualStudioの使い方はこちらに書いています。
C#って何ですか?
C#とは、Microsoftが開発したプログラミング言語です。
2002年に開発されています。
作ったのは、アンダース・ヘルスバーグさんという人です。
C++【シープラプラ】 や JAVA【ジャバ】などを元に作られました。
+が4つで C#ということです。
昔は、Windowsぐらいでしか使われていませんでしたが
最近では、Unityやxamarin【ザマリン】や MicrosoftAzureなどでもC#が
使われているので、需要は年々増えています。
世界の人気 プログラミングランキングでも
トップ10に入っている言語です。
C#も日々進化していて、 現状だとvr9.0になっています。
そして、IDE【統合開発環境】である、visualstudioもかなり進化していて
使いやすくなっています。 MACでも使えるようになっていますし。
軽いvrの VScodeもあるので、開発環境はかなり整ってきています。
C#の特徴としては、型がちゃんとしているという所です。
その型や文法が多いので、難しく感じてしまう所もありますが。
逆に言えば、 型をちゃんと覚えれば
そこまで難しい言語でもないのです。
というのも、visualstudioという開発環境を使えば
コードも自動補完してくれますし、エラーもすぐに分かるように
出来ているからです。
C#が どれぐらい進化したのか
簡単なサンプルコードを見てみましょう。
using System;
class Program
{
static void Main(string[] args)
{
// 昔のC#の書きかた
Console.WriteLine("こんにちは");
}
}
昔だと、 上記のような書き方をしないとだめでしたが。
今のvr9.0だと こんな感じになります。
using System;
// 最新
Console.WriteLine("こんにちは");
こんなにもコードが短く書けるようになったんですよ。
オブジェクト指向って何ですか?
C#を始めとする殆どのプログラムは、オブジェクト指向のプログラムと
呼ばれています。
オブジェクト指向というのは、概念の一つです。
ざっくり言えば、モノ単位で考えるやり方とも言えます。
C#の場合だと、クラスという単位ごとに分けて作られています。
アルゴリズムの基礎を覚えよう
アルゴリズムとは、一言でいえば手順のことです。
正しい順番とも言えますね。
料理で言う所のレシピみたいなもんです。
つまり、アルゴリズムを理解できれば
どんなプログラムも理解できるようになるということです。
言ってみれば、プログラムの土台になります。
アルゴリズムを理解できれば
効率の良いコードが書けたり、 どんなプログラムでも対応できるようになります。
【言語は違っても、構造的にはほとんど同じですからね】
アルゴリズムの基本は3つあります。
それが、順次、選択、反復です。
では順次から見ていきましょう。 カップ麺を作るを 例にすると
カップめんを開く→ お湯を注ぐ→ 3分待つ → 食べる
となりますが。 これが順次です。
選択だと、YESやNOの判断をするということです。
カップ面を食べるのか? 食べないのか?
という分岐が選択ですね。
最後に反復ですが。
これは同じ処理を何度も繰り返すということです。
カップめんを食べ終わった→ もう一度食べる
→食べ終わった →もう一度食べるといった感じで
反復する処理のことです。
プログラムの最大の特徴は、この反復がいくらでも
できるということです。
以上がアルゴリズムの基本になります。
もっと詳しく知りたい人は、アルゴリズム図鑑という本が
ありますので、そちらを見るといいでしょう。
データ型と変数とリテラルについて
ここでは、基本である
データ型と変数とリテラルについてみていきましょう。
データ型一覧
byte 整数0~255まで
※0から255まで入れることが可能という意味です。
short 整数-32768~32767
ushort 整数 0~65535
int 整数 -2147483648~2147483647
long 整数 -9223372036854775808~9223372036854775807
ulong 整数 0~18446744073709551615
char 整数と文字 0~65535
float 実数で7桁まで有効
double 実数で15~16桁まで有効
decimal 実数で28~29桁まで有効
bool trueかfalse
例
bool a = true これだと bool型の論理値リテラル
【boolは真偽を入れるためのデータ型】
int b = 33 int型の整数リテラル
【intは整数を入れるデータ型】
double c = 1.5d double型の実数リテラル
【doubleは少数を入れるデータ型
doubleやfloat型を使う場合は、後ろにdやfをつけます。
これをリテラルのサフィックスと呼びます。】
string d = ”文字列” string型の文字列リテラル
【stringは文字列を入れるデータ型です
文字を入れる場合は、ダブルクォーテーションを使います】
データ型は最初に指定するもので、 boolやintがデータ型です。
変数は、 aやbのことです。
リテラルは、最後の数字や文字列のことをリテラルと言います。
ですので、trueや33の部分がリテラルになります。
リテラルには、それぞれ名前があります。
つまりC#は、 データ型と変数とリテラルという構成で
作られているということですね。
ついでに、コメントアウトの仕方も覚えましょう。
プログラム上でコメントを記入する場合は
// スラッシュスラッシュ
複数行のコメントをしたい場合は
/* ~~ */ スラッシュ アスタリスクを使います。
基本的な演算子などを覚えよう
まずは基本の演算子を見ていきましょう。
int a = 10 + 9; 足し算
int a = 50 – 32; 引き算
int a = 6 * 4; 掛け算
int a = 9 / 2; 割り算
少数点は、切り捨てなので この場合は4になる。
int a = 9 % 2; 余り
余りなので 1になる。
インクリメントとデクリメント演算子
これは1を足していく処理のこと。
例
int a = 5;
int b = ++a;
コレが前置きインクリメントです。
–なら前置きデクリメント。
この場合だと、 aとb 両方が6になる。
int a = 5;
int b = a++;
これが後置きインクリメント。
この場合だと、 aは6になり、bは5になる。
ようするに、bに先に代入してから1を足している。
関係演算子について
0 == 0; 等しければtrueになる
1 != 0; 等しくなければtrueになる
1 < 2; 1が2より小さい場合はtrueになる
1 >0; 1が0より大きい場合はtrueになる
1 <= 1; 1が1以下ならtrueになる
1 >= 0; 1が0以上ならtrueになる
数学関数について
三角関数などの計算をするときは、数学関数という式を使います。
絶対値 |x| だと Math.Ads
四捨五入 Math.Round()
切り上げ Math.Ceiling()
切り下げ Math.Floor()
累乗 Math.Pow()
平方根 Math.Sqrt()
三角関数sin Math.Sin()
cos Math.Cos()
tan Math.Tan()
定数π(3,14) Math.PI
メソッドで使える修飾子を覚えよう
public すべてのクラスからアクセスができる状態
internal 同じアセンブリ内だけでアクセスができる
private 同じクラスからのみ アクセスができる
static 静的メソッドに変更する
new 継承されたメソッドを隠蔽する
とりあえず、 よく使う publicとprivateだけ覚えておけばOKです。
C#の基礎文法を覚えよう
ここでは、C#の基礎文法を見ていきましょう。
if文のサンプル
int hp = 100;
int monster = 1;
if (monster == 1)
{
hp += 10;
}
else if (monster == 2)
{
hp += 30;
}
else
{
Console.WriteLine("変化しない");
}
Console.WriteLine(hp);
if文は、 if、else~if、elseという3部構成で できています。
if文はもし~ならばの条件分岐なので
このプログラムだと
monster が1だったら、HPに10を足す
monster が2だったら、HPに30を足す
それ以外なら、 変化しないと表示をする。
というプログラムです。
上から順番に条件式をチェックして
真であれば、中の処理を実行するという感じです。
else ifは、どれだけ書いてもいいので
沢山条件を書くこともできます。
for文のサンプル
for (int a = 5; a > 0; a--)
{
Console.WriteLine(a):
}
Console.WriteLine("ゲームスタート"):
for文は反復のプログラムで
おそらく一番よく使う文法だと思います。
for文は、(ループ変数の初期化、ループの条件式、ループの更新)
でできています。 このプログラムだと、実行される順番は
1 a = 5 まずは5を代入する
2 a > 0 5と0を比べる 0より大きければ中の処理をする。
3 WriteLine(a); 5を表示する
4 a– 5から1を引く
あとはそれを繰り返す
という順番になるので このプログラムを実行すると
54321 ゲームスタートと 表示がされます。
5を一個ずつ減らしていって、 1以上になったら
for文を出て、最後にゲームスタートという表示がされるわけです。
while文のサンプル
int a,sum = 0;
ConsoleWrite("整数");
a = int.Parse(Console.ReadLine());
while(a > 50)
{
sum += a;
Console.Write("整数");
a = int.Parse(Console.ReadLine());
}
Console.WriteLine(sum);
ではプログラムを見ていきます。
まずは aとsum 2つの変数を用意して sumに0を代入しています。
次に a = int.Parse(Console.ReadLine());
リードラインというのは、 キーボード入力のことです。
ここで入力した値が aに代入されます。
そして、while文を使って、 値が50以上だったら
中の処理を繰り返して実行します。
そして、50以下の値が入力されたら
今までの値を全部足して、最後に表示するというプログラムです。
for文と似ていますが。
for文は、最初から回数が決まっている場合に使います。
while文は、回数が決まっていない場合に使います。
do~while文も あってこちらは後判定をするもので
最低でも必ず1回は実行されます。
switch文のサンプル
Console.Write("整数を入力");
int a = int.Parse(Console.ReadLine());
switch (a)
{
case 1:
Console.WriteLine("one");
break;
case 2:
Console.WriteLine("two");
break;
case 3:
Console.WriteLine("three");
break;
dafault:
Console.WriteLine("それ以外");
break;
}
switch文もif文と同じく、条件分岐ができるものです。
このプログラムだと
1だったら、oneを表示 2だったら、two 3だったらthreeを表示します。
caseで、条件を書いて
breakで、処理の終了。
defaultで、それ以外 どのcaseでもない場合の処理を書いていきます。
breakは、色々な所で使います。
例えば、無限ループから抜け出したいときも、break文を入れれば
ループから抜け出すことができます。
配列のサンプル
int[] box1;
box1 = new int[5];
box1[2]= 6;
Console.WriteLine(box1[2]);
配列は、同種の値をまとめて管理できるデータ構造のことです。
1次元配列や2次元配列などがあります。
サンプルのコードは、1次元配列になります。
イメージ的に言えば、学校の下駄箱みたいなもんですね。
そして、その中にデータを入れていきます。
このサンプルコードでは
5つの配列を作って、3番目の箱に6を入れていれます。
配列には添え字がついていて、これは0からつきますので。
配列を5つ作るということは 0~4の添え字になります。
なので、box1[2]は
2番目ではなく、3番目になるということです。
そして、最後に今入れた3番目の箱を表示しているので
6が表示されるというわけです。
foreach文のサンプル
int[] date = {3,6,9,12};
foreach (int val in date);
{
Console.WriteLine(val):
}
foreach文は配列やコレクションから
全要素を順番に取り出してくれる文法です。
このコードですと、 3,6,9,12と
順番に表示されます。 簡単ですね。
ポイントとしては、 データ型を記入する必要があるところです。
このコードですと、数字を格納しているので int型の配列を使っています。
例外処理のサンプル
try
{
int number = 0;
int answer = 100/number;
Console.WriteLine(answer);
}
catch (Exception e)
{
Console.WriteLine(e.Messege);
}
finally
{
Console.WriteLine("ok");
}
例外処理というのは、言葉の通り
例外が起こったときに、処理するものです。
このコードは実はエラーコードであり
try文を外して実行すると、エラーになります。
なぜなら、100割る 0は実行できないからです。
このままではエラーになってしまうけど、 このコードを使いたいという時に
例外処理を使うのです。
tryの部分で、 エラーの所を指定して
【tryの部分は飛ばされるので、Console.WriteLine(answer);は表示されません。】
catchの部分で、 エラー箇所のメッセージを表示して
【ここでどうゆうエラーが出ているのかがわかります。】
finallyの部分で、実行したい処理を書いていきます。
コメント