4. ①基礎の基礎
?そもそもプログラミングするのに最低限必要な機能とは?
①条件分岐したい →if文 if(){}else if(){}else{}
②処理を保存したい →関数 int Cube(int n){return n * n * n;}
③値を保存したい →変数?配列 int a; int[] A = new int[3];A[0] =7;
④同じ処理したい →繰り返し処理 for(int i = 0; i< n ;i++){}
?最低限これだけあればプログラミングは出来る!
?しかし、それだけでは絶対物足りない…
?これらの基礎の基礎の機能にもっと利便性をつけたのだ!
20. int ListExample2() {
List<int> A = new List<int>();
A.Add(72);//末尾に要素を追加
A.Add(765); A.Add(-902);
A.Insert(2,34);//途中に挿入も出来る
A.Remove(-902);//探して最初の要素を削除も出来る
int[] B = A.ToArray();//配列に変換も出来る
A[0] = 10;//既に作成したものまでは添え字アクセスもできる。
int index = A.BinarySearch(765);//ソートした後二分探索して検索も出来る
return A.Count;//要素数を取得出来る
}
①-③配列の拡張 -List-
?Listを使いましょう!
(using System.Collections.Generic
をしてから)
21. ①-③配列の拡張 -Dictionary-
?数字でなくて文字とかでアクセスしたい→Dictionaryを使いましょう!
int DictionaryTest() {
Dictionary<string, int> Dic = new Dictionary<string, int>();
Dic.Add("高槻やよい",841);//新しく追加出来る!
Dic.Add("如月千早",72); Dic.Add("城ケ崎",72);//確保する値は当然被りうる。
int Takatsuki = Dic["高槻やよい"];
Dic.Remove("城ケ崎");//削除も出来る
bool A = Dic.ContainsValue(72);//その値を持つものがあるかも探せる
Dictionary<string, Vector3> DicVec = new Dictionary<string, Vector3>();
DicVec.Add("Zero",new Vector3(0,0,0));//別にintじゃなくてなんでも大丈夫
DicVec.Add("Gravity",new Vector3(0,-9.8f,0));
return DicVec.Count;//要素数も取得できる。
}
22. ①-③配列の拡張 -LINQ-
?配列に対して色々操作したい。→using System.Linq;してLINQ使おう!
int LinqTest() {
int[] A = new int[] {31,41,59,26,53,58,97,93,23,84,62 };
int sum = A.Sum();//総和を返却したり
int[] B = A.OrderBy(s => s).ToArray();//昇順ソートしたり
int[] C = A.OrderByDescending(s => s).ToArray();//降順ソートも
int[] D = A.Where(s => s % 2 == 0).ToArray();//フィルタかけたり
int[] E = A.Reverse().ToArray();//反転したり
List<int> F = A.ToList();//using Linqしてるので、Listに変換したり
int [] G = A.Select(s => s* 2).ToArray();//マッピングしたり
//本家風にこういう書き方もできる
var H = from p in A where p > 10
orderby p select p * 2;
return A.Length;
}
24. ①-④ 繰返し処理 -foreach-
?普通の配列や List や Dictionary とか、そういうものに対して、 for文[for(int i = 0;i < n;i++){}
そのiを使うのならいいが、その中身だけに用があってiは関係ない時は
アクセスし間違えたりする可能性があるし、そもそもDictionaryに順番とかは無いからアクセス出来ない
→foreachを使いましょう。今日紹介した例のでも、こっち使う方がよさそうなのも多いです。
void ForeachTest(){
int [] A = new int[]{72,765,225,100};
List<int> L = A.ToList<int>();
//宣言で面倒な時はvarが使える。(型が確定出来る時)
var D = new Dictionary<string,int>();
foreach(int a in A){print(a);}//配列にも
foreach(int l in L){print(l);}//リストにも
foreach(var d in D){//Dictionaryにも
print(d.Key );
}
}
39. ②クラスの継承
?人間クラスは、攻撃力、防御力、体力、名前、性別を持っています。
性別と名前は流石に不変ですのでreadonlyにしました。
class Human{
public readonly bool isGirl;
public int Attack, Defence, HP;
public readonly string Name ;
public Human(bool _isGirl,int _Attack,int _Defence,int _HP,string _Name) {
isGirl = _isGirl;
Attack = _Attack; Defence = _Defence;
HP = _HP ; Name = _Name;
}
}
void Example() {
Human Kyon = new Human(false,100,200,150,"キョン");
Human Chihaya = new Human(true,72,72,72,"如月千早");
Human Freeza = new Human(false,530000,530000,530000,"フリーザ");
Human Goku = new Human(false,10000000,10000000,1000000,"孫悟空");
}