p.119 forループのネスト
・for文の中にfor文を記述できる。これもネスト(入れ子)という
・繰返し文の中に繰返し文を書くことで2重ループが実現する
・forループのネストはN回×M回の繰り返しに便利で、2次元の情報を扱う時に用いることが多い
・主に、外側の繰り返しの用のカウンタにはiを、内側の繰り返しの用のカウンタにはjを使うことが多い
・なお、カウンタを同じ変数にすると想定外の動作になる(通常、無限ループする)ので注意
・実行イメージ
for(int i = 0①; i < 3②; i++⑦) {
for(int j = 0③; j < 2④; j++⑥) {
Console.Write("[{0},{1}]", i, j);⑤
}
}
①②③④⑤[0,0] ⑥④⑤[0,1] ⑥④⑦②③④⑤[1,0] ⑥④⑤[1,1] ⑥④⑦②③④⑤[2,0] ⑥④⑤[2,1] ⑥④⑦②
p.119 kuku01.cs
//p.119 kuku01.cs
using System;
class kuku01
{
public static void Main()
{
int i, j; //外側用カウンタ、内側用カウンタ
for (i = 1; i <= 9; i++) { //外側用カウンタで1,2,3,4,5,6,7,8,9について繰返す
for (j = 1; j <= 9; j++) { //内側用カウンタで1,2,3,4,5,6,7,8,9について繰返す
Console.WriteLine("{0} * {1} = {2}", i, j, i * j);
}
Console.WriteLine("------------"); //段の区切りを表示
}
}
}
アレンジ演習:p.119 kuku01.cs
・式を略して、積だけを段ごとに表示し、段の後ろで改行しよう(段の区切りの代わりに改行) ・積は3桁で表示すること 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 :(略)
作成例
//アレンジ演習:p.119 kuku01.cs
using System;
class kuku01
{
public static void Main()
{
int i, j; //外側用カウンタ、内側用カウンタ
for (i = 1; i <= 9; i++) { //外側用カウンタで1,2,3,4,5,6,7,8,9について繰返す
for (j = 1; j <= 9; j++) { //内側用カウンタで1,2,3,4,5,6,7,8,9について繰返す
Console.Write("{0, 3}", i * j); //積を3桁表示し改行しない
}
Console.WriteLine(); //段の区切りで改行
}
}
}
p.121(Mathクラス)
・C#が提供する算術系クラス(情報の構造体の一種で詳細は7章で)の一つがMathで、その中に算術計算に便利なメソッドや定数などが用意されて いる ・利用には「Math.」を前置する。 ・定数Math.PI:円周率を提供する定数(double型) ・メソッドMath.Sin(ラジアン値):サインを返すメソッド(double型)。カッコ内に角度を表すラジアン値をdouble型で指定する ※ メソッドの呼び出しにおいてカッコ内に指定する値や式を引数という(後述) ・ラジアン値は180度を円周率とした値で、n度のラジアン値は n / 180 * Math.PI で得られる ※ sin01.csでは4度のラジアン値を 4÷180×円周率 ⇒ Math.Pi / 45.0 として扱っている ※ そして、0度から180度まで4度ずつ繰返すfor文になっている ・メソッドMath.Round(実数):小数点以下を四捨五入した結果を返すメソッド(double型)。 例: Math.Round(3.8) ⇒ 4.0 となる
p.121 sin01.cs
//p.121 sin01.cs
using System;
class sin01
{
public static void Main()
{
double s; //カウンタとして用いる実数
//0.0度から180度(Math.PI)まで4度(Math.PI / 45.0)ずつ増やしながら繰返す
for (double a = 0.0; a <= Math.PI; a += Math.PI / 45.0) {
s = Math.Sin(a); //サイン値を得る
Console.Write("{0,7:#.#####}:", s); //7桁の小数点以下5桁で表示
//サイン値0.2につき"*"を1個表示することでグラフを描く
for (int i = 1; i <= Math.Round(s * 50); i++) { //サイン値の50倍(小数点以下四捨五入)だけ繰返す
Console.Write("*"); //"*"を1個表示(改行しない)
}
Console.WriteLine(); //1行分終わったので改行
}
}
}
補足:p.121 sin01.csの実行方法
・現在のバージョンのVisual Studioでは1ページ分以上の表示を一気に行うと欠けが発生してしまう ・そこで「ビルド」「ソリューションのビルド」までをVisual Studioで行い、実行はコマンドプロンプトで行うと良い ・コマンドプロンプトは「すべてのアプリ」「Windowsツール」にあるのでダブルクリック ・ここで、プログラムのあるプロジェクトのフォルダの中のbin/debugフォルダにある.exeファイルを指定する 例:E:\ha234_C#_akiba\chap4\chap4\bin\Debug\chap4.exe ・実行例: C:\Users\human>E:\ha234_C#_akiba\chap4\chap4\bin\Debug\chap4.exe : .06976:*** .13917:******* .20791:********** .27564:************** .34202:***************** .40674:******************** .46947:*********************** .52992:************************** .58779:***************************** .64279:******************************** .69466:*********************************** .74314:************************************* .78801:*************************************** .82904:***************************************** .86603:******************************************* .89879:********************************************* .92718:********************************************** .95106:************************************************ .9703:************************************************* .98481:************************************************* .99452:************************************************** .99939:************************************************** .99939:************************************************** .99452:************************************************** .98481:************************************************* .9703:************************************************* .95106:************************************************ .92718:********************************************** .89879:********************************************* .86603:******************************************* .82904:***************************************** .78801:*************************************** .74314:************************************* .69466:*********************************** .64279:******************************** .58779:***************************** .52992:************************** .46947:*********************** .40674:******************** .34202:***************** .27564:************** .20791:********** .13917:******* .06976:***
アレンジ演習:p.121 sin01.cs
・サイン値の表示がすべて「.00000」から「.99999」の5桁になるようにしよう
・「{0,7:#.#####}:」を「{0,7:#.00000}:」とすれば良い
・実行結果
C:\Users\human>E:\ha234_C#_akiba\chap4\chap4\bin\Debug\chap4.exe
.00000:
.06976:***
.13917:*******
.20791:**********
.27564:**************
.34202:*****************
.40674:********************
.46947:***********************
.52992:**************************
.58779:*****************************
.64279:********************************
.69466:***********************************
.74314:*************************************
.78801:***************************************
.82904:*****************************************
.86603:*******************************************
.89879:*********************************************
.92718:**********************************************
.95106:************************************************
.97030:*************************************************
.98481:*************************************************
.99452:**************************************************
.99939:**************************************************
.99939:**************************************************
.99452:**************************************************
.98481:*************************************************
.97030:*************************************************
.95106:************************************************
.92718:**********************************************
.89879:*********************************************
.86603:*******************************************
.82904:*****************************************
.78801:***************************************
.74314:*************************************
.69466:***********************************
.64279:********************************
.58779:*****************************
.52992:**************************
.46947:***********************
.40674:********************
.34202:*****************
.27564:**************
.20791:**********
.13917:*******
.06976:***
提出:アレンジ演習:p.121 sin01.cs