講義メモ ・p.28「フォーマット指定子を使った変数の表示」から 提出フォロー:アレンジ演習 p.25 text02.cs → text02a.cs ・text03.csを参考にして、Console.Writeを用いることで「+」による連結を行わずに同じ結果を得よう ヒント: ① Console.Writeで a を表示 ② Console.Writeで " + " を表示 ③ Console.Writeで b を表示 ④ Console.Writeで " = " を表示 ⑤ Console.Writeで a + b を表示 ⑥ Console.WriteLineで改行のみを行う あるいは、⑤をConsole.WriteLineにすれば⑥は不要 作成例 //提出:アレンジ演習 p.25 text02.cs → text02a.cs using System; //名前空間を使うことを示す class Text02a //クラス名(同じ名前がプロジェクト内になければOK) { //クラスの定義の開始 public static void Main() //実行用メソッド(手続き・処理) { //メソッドの定義の開始 int a = 10, b = 20; Console.Write(a); //表示し改行しない Console.Write(" + "); //〃 Console.Write(b); //〃 Console.Write(" = "); //〃 Console.Write(a + b); //aとb和を得て表示し改行しない Console.WriteLine(); //改行のみを行う } //メソッドの定義の終わり } //クラスの定義の終わり 作成例(別解) //提出:アレンジ演習 p.25 text02.cs → text02a.cs using System; //名前空間を使うことを示す class Text02a //クラス名(同じ名前がプロジェクト内になければOK) { //クラスの定義の開始 public static void Main() //実行用メソッド(手続き・処理) { //メソッドの定義の開始 int a = 10, b = 20; Console.Write(a); //表示し改行しない Console.Write(" + "); //〃 Console.Write(b); //〃 Console.Write(" = "); //〃 Console.WriteLine(a + b); //aとb和を得て表示し改行する } //メソッドの定義の終わり } //クラスの定義の終わり p.28 フォーマット指定子を使った変数の表示 ・連結用の「+」を用いると加算と見間違えたり、完成イメージが見えづらい ・その場合は、フォーマット指定子を用いると良い ・フォーマット指定子は「{0}」から始まる番号指定で、フォーマット文字列の中に埋め込んで用いる ・例: Console.Write("{0}倍速い!", 3); //「3倍速い!」と表示 ・例: int n = 3; Console.Write("{0}倍速い!", n); //「3倍速い!」と表示     ⇒ 「Console.Write(n + "倍速い!");」と同じ ・例: int a = 3, b = 4; Console.Write("{0} + {1} = {2}", a, b, a + b); //「3 + 4 = 7」と表示     ⇒ 「Console.Write(a + " + " + b + " = " + (a + b));」と同じ ・なお、フォーマット指定子は{0}から1ずつカウントアップすること ・また、フォーマット文字列の中では同じフォーマット指定子を何度も使える ・例: int a = 3, b = 4; Console.Write("{0} + {1} = {2}, {0} - {1} = {3}", a, b, a + b, a - b); //「3 + 4 = 7, 3 - 4 = -1」と表示 ・フォーマット指定子は文字列でもOK ・例: Console.Write("{0}は赤い彗星だ!{0}は3倍速い!", "シャア"); //「シャアは赤い彗星だ!シャアは3倍速い!」 p.28 text04.cs //p.28 text04.cs using System; //名前空間を使うことを示す class Text04 //クラス名(同じ名前がプロジェクト内になければOK) { //クラスの定義の開始 public static void Main() //実行用メソッド(手続き・処理) { //メソッドの定義の開始 int x = 10; Console.WriteLine("x = {0}", x); //「x = 10」と表示 Console.WriteLine("x = {0}, xの10倍は{1}です", x, x * 10); //「x = 10, xの10倍は100です」と表示 Console.WriteLine("{0}は{1}ですが、{2}は{1}ではありません", "猫", "哺乳類", "トカゲ"); } } //クラスの定義の終わり アレンジ演習:p.28 text04.cs ・変数yを5で初期化する処理を追加しよう ・そして、xの10倍を,xのy倍を表示するように変更しよう 作成例 //アレンジ演習:p.28 text04.cs using System; //名前空間を使うことを示す class Text04 //クラス名(同じ名前がプロジェクト内になければOK) { //クラスの定義の開始 public static void Main() //実行用メソッド(手続き・処理) { //メソッドの定義の開始 int x = 10, y = 5; Console.WriteLine("x = {0}", x); //「x = 10」と表示 Console.WriteLine("x = {0}, xの{1}倍は{2}です", x, y, x * y); //「x = 10, xの5倍は50です」と表示 Console.WriteLine("{0}は{1}ですが、{2}は{1}ではありません", "猫", "哺乳類", "トカゲ"); } //メソッドの定義の終わり } //クラスの定義の終わり p.29 桁数の指定 ・表示においては最大桁数を指定して、それよりも小さい場合にはその分の余白を入れることができる ・例えば「1」を3桁で表示すると「△△1」となる(△は空白) ・この指定はフォーマット指定子で行い「{番号, 桁数}」とする ・なお、右側を開けたい場合(左揃え)は「-桁数」とする ・例えば「1」を-3桁で表示すると「1△△」となる(△は空白) p.30 text05.cs //p.30 text05.cs using System; class text05 { public static void Main() { int x = 10, y = 123456789; Console.WriteLine("12345678901234567890123456789"); //目盛り代わり Console.WriteLine("{0, 10}", "abc"); //右揃え10桁に3桁なので左に7空白 Console.WriteLine("{0, 5}", "def"); //右揃え5桁に3桁なので左に2空白 Console.WriteLine("{0, 0}", "ghi"); //桁数が文字数を下回る場合は無視される Console.WriteLine("{0, 10}{1, 10}", "あ", "い"); //9文字空白,あ,9文字空白,い Console.WriteLine("{0, -10}{1, -10}", "あ", "い"); //あ,9文字空白,い,9文字空白 Console.WriteLine("x = {0, 5}, y = {1, 3}", x, y); //"x = ",3文字空白,", y = ",123456789 } } アレンジ演習:p.30 text05.cs ・下記の表示を追加しよう ① 1を10桁で表示し、1を左揃えで10桁で表示 ② 12を10桁で表示し、12を左揃えで10桁で表示 ③ 123を10桁で表示し、123を左揃えで10桁で表示 ④ 1234を10桁で表示し、1234を左揃えで10桁で表示 ⑤ 12345を10桁で表示し、12345を左揃えで10桁で表示 作成例 //アレンジ演習:p.30 text05.cs using System; class text05 { public static void Main() { int x = 10, y = 123456789; Console.WriteLine("12345678901234567890123456789"); //目盛り代わり Console.WriteLine("{0, 10}", "abc"); //右揃え10桁に3桁なので左に7空白 Console.WriteLine("{0, 5}", "def"); //右揃え5桁に3桁なので左に2空白 Console.WriteLine("{0, 0}", "ghi"); //桁数が文字数を下回る場合は無視される Console.WriteLine("{0, 10}{1, 10}", "あ", "い"); //9文字空白,あ,9文字空白,い Console.WriteLine("{0, -10}{1, -10}", "あ", "い"); //あ,9文字空白,い,9文字空白 Console.WriteLine("x = {0, 5}, y = {1, 3}", x, y); //"x = ",3文字空白,", y = ",123456789 //【以下追加】 Console.WriteLine("{0, 10}{0, -10}", 1); //1を10桁で表示し、左揃えで10桁で表示 Console.WriteLine("{0, 10}{0, -10}", 12); //12を10桁で表示し、左揃えで10桁で表示 Console.WriteLine("{0, 10}{0, -10}", 123); //123を10桁で表示し、左揃えで10桁で表示 Console.WriteLine("{0, 10}{0, -10}", 1234); //1234を10桁で表示し、左揃えで10桁で表示 Console.WriteLine("{0, 10}{0, -10}", 12345); //12345を10桁で表示し、左揃えで10桁で表示 } } p.30 標準書式指定文字を使った書式の指定 ・フォーマット指定子で「{番号, 桁数:●}」とすると●に標準書式指定文字を指定できる ・例えば、標準書式指定文字に「C」を指定すると「通貨」形式になり、前に「\」が付く3桁カンマになる  例:Console.WriteLine("{0, 10:C}", 123456); //「 \123,456」となる ・他に、標準書式指定文字としては、16進数にする「X」パーセント表示にする「P」などがある p.31 text06.cs //p.31 text06.cs using System; class text06 { public static void Main() { Console.WriteLine("D{0, 10:D}", 123); //「D 123」通常+ルール Console.WriteLine("X{0, 10:X}", 123); //「X 7B」16進数化 Console.WriteLine("E{0, 10:E}", 123.456); //「E1.234560E+002」指数 Console.WriteLine("F{0, 10:F}", 123.456); //「F 123.46」小数点以下2桁 Console.WriteLine("F{0, 10:F5}", 123.456); //「F 123.45600」小数点以下5桁 Console.WriteLine("C{0, 10:C}", 123456); //「C \123,456」通貨 Console.WriteLine("N{0, 10:N}", 1234.4568);//「N 1,234.46」小数点以下2桁 Console.WriteLine("P{0, 10:P}", 0.05); //「P 5.00%」パーセント Console.WriteLine("G{0, 10:G}", 123.456); //「G 123.456」通常+ルール } } p.32 カスタム書式指定文字を使った書式の指定 ・例えば「SCORE:000,001,234」のように先行ゼロを表示したい場合などに用いる ・カスタム書式指定文字「0」を使うとその数を表示桁数として先行ゼロを表示  例:Console.WriteLine("{0, 10:0000.00}", 1.23); //「0001.23」となる ・小数点以下にカスタム書式指定文字「0」を使うとその数を表示桁数として後続ゼロを表示  例:Console.WriteLine("{0, 10:0000.000}", 1.2); //「0001.200」となる ・上記において「0」の代わりに「#」を用いると「0」が空白になる ・「0」と「#」は混在可能で、それ以外の文字を間に入れることも可能 p.33 text07.cs //p.33 text07.cs using System; class Text07 { public static void Main() { Console.WriteLine("{0, 10:0000.00}", 1.2); //「 0001.20」 Console.WriteLine("{0, 10:####.##}", 1.2); //「 1.2」 Console.WriteLine(); Console.WriteLine("{0, 10:0,0}", 123456); //「 123,456」 Console.WriteLine("{0, 10:#,#}", 123456); //「 123,456」 Console.WriteLine(); Console.WriteLine("{0, 10:0,00000000.00}", 123456); //「000,123,456.00」 Console.WriteLine("{0, 10:#,########.##}", 123456); //「 123,456」 Console.WriteLine(); Console.WriteLine("{0:(000)####-####}", 1132104566); //「(011)3210-4566」 Console.WriteLine("{0, 20:'##'0.00}", 123456); //「 ##123456.00」 } } p.34 ユーザの入力を知る ・整数のデータ型である「int」と同様に、文字列のデータ型「string」を用いることができる ・string型の変数を宣言しておけば、文字列を格納できる ・なお、文字列とは0文字以上の文字の並びで、プログラムの中ではダブルクォーテーションで挟んで表す ・Console.WriteLinとは逆に、コンソールから文字列を入力してもらうのがConsole.ReadLine ・Console.ReadLineを実行するとプログラムは一時停止し、文字列とEnterキーが押されるまで待つ ・文字列とEnterキーが押されたら、その文字列がプログラムに渡される ・渡された文字列は「string型の変数 = Console.ReadLine();」としておけば、string型の変数に入る ・この仕掛けにより、プログラム実行後に、コンソールからその都度異なる文字列を与えることができるので、プログラムの柔軟性、可用性が上がる p.35 readline01.cs //p.35 readline01.cs using System; class readline01 { public static void Main() { string name; //文字列用のstring型の変数nameの宣言 Console.Write("あなたのお名前は何ですか--- "); //表示 name = Console.ReadLine(); //コンソールから文字列を得て変数nameに代入 Console.WriteLine("あなたのお名前は{0}さんですか", name); //変数nameの値を表示 } } アレンジ演習:p.35 readline01.cs ・文字列用のstring型の変数snameの宣言を追加する(苗字用) ・「あなたの苗字は何ですか--- 」と表示する処理を追加 ・コンソールから文字列を得て変数snameに代入 ・「あなたのフルネームは〇〇〇 〇〇〇さんですか」というように、snameとnameの両方の値を表示しよう 実行例: あなたのお名前は何ですか--- amuro ←入力 あなたのお名前はamuroさんですか あなたの苗字は何ですか--- ray ←入力 あなたのフルネームはamuro rayさんですか 作成例 //アレンジ演習:p.35 readline01.cs using System; class readline01 { public static void Main() { string name, sname; //【変更】文字列用のstring型の変数name,snameの宣言 Console.Write("あなたのお名前は何ですか--- "); //表示 name = Console.ReadLine(); //コンソールから文字列を得て変数nameに代入 Console.WriteLine("あなたのお名前は{0}さんですか", name); //変数nameの値を表示 Console.Write("あなたの苗字は何ですか--- "); //【追加】表示 sname = Console.ReadLine(); //【追加】コンソールから文字列を得て変数snameに代入 Console.WriteLine("あなたのフルネームは{0} {1}さんですか", name, sname); //【追加】2変数の値を表示 } } p.36 練習問題 ex0201.cs 作成例 //p.36 練習問題 ex0201.cs using System; class ex0201 { public static void Main() { string line = Console.ReadLine(); //コンソールから文字列を得て変数lineを初期化 Console.WriteLine(line); //変数lineの値を表示 } } p.36 練習問題 ex0201.cs 作成例:別解 //p.36 練習問題 ex0201.cs using System; class ex0201 { public static void Main() { Console.WriteLine(Console.ReadLine()); //コンソールから得た文字列を表示 } } p.37 3.1 変数の初期化 ・変数の宣言と変数への初期値(最初の値)の代入は同時に行える。これを初期化という。(再掲載) ・変数として初期化するが、プログラム内部での値の変更をすべきない場合(例:消費税率)定数にできる ・定数は初期化において前に「const」と記述する ・定数にしておくと、プログラム内部で書き換える処理がエラーになる ・また、消費税率のようにプログラム内に何度も登場値は定数にしておくと、保守性(変更しやすさ)が向上する 提出:p.36 練習問題 ex0201.cs ・作成例と異なっても、長くても短くてもOK 次回予告:「3.2 値型と参照型」から