次回予告:第4章「演算子」に進みます 講義メモ:memo20241116.txt
for trainees of Hirano's class only
次回予告:第4章「演算子」に進みます 講義メモ:memo20241116.txt
p.66 列挙型 ・整数値に名前を付けてグループにて型にしたもの。 ・例: グーは0番、チョキは1番、パーは3番とするとき「次の手 = 0」とするより「次の手 = グー」とした方が分かりやすく、 可読性が上がる ・このグループ名を列挙名、要素を列挙子という ・C#が提供するライブラリの中にも列挙型があり、広く用いられている 例: https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.keys Keys列挙型 ・書式: enum 列挙名 { 列挙子, … } ・列挙子には自動的に0から整数があてはめられるが、代入も可能 ・書式: enum 列挙名 { 列挙子 = 整数値, … } ・「 = 整数値」を指定しない場合、先頭は0、それ以降は1っ前の列挙子の値+1になる。 アレンジ演習:p.68 enum01.cs ・列挙子をint型にキャストせずに表示するとどうなるか確認しよう ⇒ 列挙子がそのまま表示される ・列挙子の持つ整数をint型の変数に代入できるかどうか確認しよう 作成例 //アレンジ演習:p.68 enum01.cs using System; class enum01 { enum MyMonth { //列挙名 MyMonthの定義 Jan = 1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec //先頭が1なので2,3,4,5,…,12になる }; public static void Main() { //列挙子の持つ整数をint型として扱うにはキャストする Console.WriteLine("Aprは{0}月", (int)MyMonth.Apr); //Aprは4月 Console.WriteLine("Mayは{0}月", (int)MyMonth.May); //Mayは5月 Console.WriteLine("Aprは{0}", MyMonth.Apr); //【追加】AprはApr int x = (int)MyMonth.Apr; //【追加】int型変数への列挙子の代入にも型キャストが必要 } } p.69 3.14 オブジェクト型とボックス型:割愛し「第7章 クラス」「第6章 配列」で説明します p.73 3.15 文字列型 ・文字列は0文字以上の文字がならんだもので、文字数は確定しない ・文字列はstring型(.NETではSystem.String型)で扱える ・C#では文字列を(後述する)クラスで扱うので、文字数を得たり、比較したり、コピーしたりするための仕掛(プロパティ、文字配列、 メソッド)が用意されている ・ここではクラス、プロパティ、配列、メソッドの詳細は後回しにして、便利な仕掛を理解しておこう アレンジ演習:string01.cs ・コンソールに「文字列:」と表示し、文字列を入力したら、何文字あるか表示する処理を追加しよう 作成例 //アレンジ演習:p.73 string01.cs…
・p.59「Object.GetTypeメソッド」から p.58(サフィックス:接尾語)【再掲載】 ・整数リテラルと実数リテラルはサフィックスをつけることで、扱われる型を変更できる ・整数型サフィックスは「L」でlong型、「U」でuint型、「UL」でulong型で扱える ※ 小文字でも良いが「L」を「l」で示すことは推奨されない ・例: ulong work = 4900000000UL; //49億をulong型で扱う(このULは略しても文法エラーにはならない) ・実数型サフィックスは「F」でfloat型、「M」でdeciml型で扱える ※ 小文字でも良い。また「d」でdouble型にできるが、指定不要 ・例: float work = 3.141592F; //円周率をfloat型で扱う(このFは略すと文法エラー) 提出フォロー:ミニ演習 mini059.cs ・上記のサフィックスの2つの例を試すプログラムを作ろう ・略すと文法エラーになる場合はメッセージを確認してからコメントアウトすると良い 作成例 //ミニ演習 mini059.cs using System; class mini059 { public static void Main() { ulong work1 = 4900000000UL; //49億をulong型で扱う ulong work2 = 4900000000; //(このUは略しても文法エラーにはならない) float work3 = 3.141592F; //円周率をfloat型で扱う //float work4 = 3.141592; //(このFは略すと文法エラー) Console.WriteLine("{0} {1} {2}", work1, work2, work3); } } p.59 Object.GetTypeメソッド ・C#にはあらゆるプログラム(クラス)の基本的存在としてObject/objectというクラスが用意されている。 ・この中に、汎用的なメソッドがあり、その1つがGetTypeメソッド ・GetTypeメソッドは型情報を返すもので、これをConsole.Write/WriteLineなどに与えると.NET型(p.42)を表す文字列がで表示される ・書式: 値または式.GetType() ⇒ 戻り値型はType型だが、Console.Write/WriteLineなどに与えると文字列になる ・例:Console.WriteLine(100.GetType()); ⇒ System.Int32 //100はint型扱いであり、.NET型にするとInt32 アレンジ演習:p.60 literal01.cs ・文字リテラル、文字列リテラル、論理型リテラルも試してみよう 作成例 //アレンジ演習:p.60 literal01.cs using System; class literal01 { public static void Main() { string format = "{0}の型は.NET型で{1}です"; //これ以降のWriteLineで用いる書式を事前定義 Console.WriteLine(format, "100", 100.GetType()); Console.WriteLine(format, "100U", 100U.GetType()); Console.WriteLine(format, "100L", 100L.GetType()); Console.WriteLine(format, "100UL",…
ゲームソフト販売本数ランキング:今週1位は「マリオ&ルイージRPG ブラザーシップ!(Switch)」 GO! “対話なくして前進なし”ゲーム向けオーディオミドルウェア「Wwise」が日本ユーザーに寄り添う理由とは…フィードバックをもとにレイアウトの大幅変更も【CEDEC2024 セッションレポート&インタビュー】GO! サイバーエージェントが大幅営業増益で着地、映画「ウマ娘」も成功で新たな局面へ【ゲーム企業の決算を読む】GO! PS Storeの2024年10月ダウンロードランキングが公開―PS5の第1位は『パルワールド』 GO! ユービーアイソフトは消費者を騙した―サービス終了でプレイ不能の『The Crew』ユーザーが救済と賠償を求め集団訴訟へ GO!
・わかりやすかったです ・理解できた 何よりです。 ・型やサフィックスなど、今回もいろいろ言葉が出てきているので、頑張って覚えていきたいです。 ・今回は少し追いつくのが大変でしたし最初のおさらいで突っかかったので 復習してこようと思います。 ・使い分ける種類が増えてきて難しくなってきたので、頑張ります。 応援します。解説が必要でしたら、いつでもリクエストしてください。 ・復習をしているのですが、30ページのtext05.csがどうしても理解できなかったので、もう一度解説してほしいです。 頭の中で正解像がイメージできないのです。 text05.csのテーマである「桁数の指定」は「表示をいじくる」というよりは 「データから文字列を作る時に編集し、それを表示する」という手順になっています。 よって、「”{0, 5}”, 123」とすれば 「5桁分の空白文字列を用意して、0番目のデータ(123)を右から詰めよう」 ⇒「□□□□□」⇒「□□123」となり、これを表示するわけです。 ただし、桁数が足りなければ、自動的に増やしますので、桁数の指定が無視されることになります。 また、この時に、他の文字や式(変数)を含むこともできますので、x = 10, y = 123456789 で、 「”x = {0, 5}, y = {1, 3}”, x, y」とすれば 「文字列 “x = ” と5桁分の空白文字列を用意して、0番目のデータ(10)を右から詰めよう」そして、 「文字列 “, y = ” と3桁分の空白文字列を用意して、1番目のデータ(123456789)を右から詰めよう」 ⇒「x = □□□□□, y = □□□」⇒「x = □□□10, y = 123456789」となり、これを表示するわけです。 つまり「”x = {0, 5}, y = {1, 3}”, x, y」の1個目のカンマは文字列の一部であり、 2個目と3個目のカンマは式(変数)の区切りになっています。
次回予告:p.59「Object.GetTypeメソッド」から 講義メモ:memo20241109.txt
p.55 エスケープ文字 ・エスケープシーケンスともいい、制御情報や特殊な意味のある文字を「\文字」で表す仕組み ・改行のなどの制御情報を文字「\n」で表したり、実行させることが可能 ・また、文字列中にダブルクォーテーションを入れたい場合は「\”」で、シングルコーテーションを文字として扱うには「\’」、 円マークを文字として扱うには「\\」とすることができる ※「¥」と「\」は同じ文字で、表示環境により、どちらかで表示される アレンジ演習:p.56 escape01.cs ・2回目の「よい天気です」を「よい”天気”です」と表示するようにしよう 作成例 //アレンジ演習:p.56 escape01.cs using System; class escape01 { public static void Main() { char n = '\n'; //改行コードのエスケープ文字で文字型変数nを初期化 string str1 = "今日は"; //文字列① string str2 = "よい天気です"; //文字列② Console.WriteLine(str1 + n + str2); //文字列①と文字型変数nと文字列②を連結して表示(nで改行) string str3 = "今日は\nよい\"天気\"です"; //【変更】文字列リテラルの中に「\n」「\"」を入れる Console.WriteLine(str3); //表示すると途中で改行する } } p.57 3.8 論理型 ・2値しかない値型で、真偽値を表す。真をtrue、偽をfalseと表すが「良い・悪い」ではなく「あてはまる・あてはまらない」の意味 ・Cでは、falseを0で、trueを非0で示し、C++もこの表現が可能だが、C#では禁止。 ・論理型はbool型であり、bool型の変数にはtrueまたはfalseのみを格納できる。 ・例: bool flag = true; ・Console.Write/WriteLineでbool型変数を表示すると、自動的にTrue/Falseで表示される ・変数の型情報を得る汎用的なメソッドがGetType()で(詳細は後述)、bool型変数に用いると.NET表記で”System.Boolean”が得られる ・オブジェクトの文字列表記を得る汎用的なメソッドがToString()で(詳細は後述)、bool型変数に用いると、 文字列”True”または”False”が得られる アレンジ演習:p.57 bool01.cs ・bool型の変数どうしの四則演算や、単項-演算子による符号反転ができるかどうか確認しよう ・また、bool型の変数と実数型の変数との代入ができるかどうか確認しよう ⇒どちらも不可 作成例 //p.57 bool01.cs using System; class bool01 { public static void Main() { bool a = true; //論理型の変数を真偽値で初期化 bool b = false; //同上 Console.WriteLine("a = {0}, b = {1}", a, b); //"True","False"で表示 Console.WriteLine("aは{0}", a.GetType()); //System.Boolean Console.WriteLine("aは文字列にすると「{0}」", a.ToString()); //"True"で表示…
・double型とfloat型の誤差についての補足後、p.50「decimal型」へ 提出フォロー:アレンジ演習:p.50 type05.cs ・身長をメートルではなく、センチメートルで入力するように改良しよう 作成例 アレンジ演習:p.50 type05.cs using System; class type05 { public static void Main() { Console.Write("身長(cm)— "); //【変更】 double bl = double.Parse(Console.ReadLine()) / 100; //【変更】実数を入力しdouble型のメートルに変換 Console.Write("体重(kg)— "); double bw = double.Parse(Console.ReadLine()); //実数を入力しdouble型に変換 Console.WriteLine("BMI = {0:##.#}", //小数点以下1桁まで表示(この改行はしてもしなくても良い) bw / Math.Pow(bl, 2.0)); //BMI=「体重÷身長の2乗」を } } double型とfloat型の誤差についての補足 ・浮動小数点数型は単精度のfloatと、倍精度のdoubleの2種類で、doubleがデフォルト扱い ※ Unityでは精度が求められない限り、容量が小さいfloatを用いることが多い(大量データが扱いやすい) ・float型は1個32ビットで誤差が大きくなりやすく、表現できる範囲が狭い ・double型は1個64ビットで(float型よりは)誤差が小さくなり、表現できる範囲が広い ・なお、実数リテラル(小数点数を表す数字列(小数点を含むことが可能))は、double型とみなされる。 ミニ演習 mini049.cs double型とfloat型の誤差を試そう ・Mathクラスには円周率を提供する Math.PIがある ・これを、double型の変数と、float型の変数に代入して表示し誤差を確認しよう ・表示できる桁数を工夫すること ・また、1/7でも試してみよう 作成例 //ミニ演習 mini049.cs double型とfloat型の誤差を試そう using System; class mini049 { public static void Main() { double d = Math.PI; //double型の変数を円周率で初期化 float f = (float)Math.PI; //float型の変数を円周率をfloat型にキャストした値で初期化 //以下は小数点以下30桁で表示 Console.WriteLine("PI double:{0:F30}", d); Console.WriteLine("PI float :{0:F30}", f); d = 1 / 7.0; //double型の変数に1÷7を代入 f = (float)(1 / 7.0); //float型の変数に1÷7をfloat型にキャストして代入 Console.WriteLine("1/7.0 double:{0:F30}", d); Console.WriteLine("1/7.0 float :{0:F30}", f); Console.WriteLine("1/7.0*7.0 double:{0:F30}",…
ゲームソフト販売本数ランキング:今週1位も「スーパー マリオパーティ ジャンボリー(Switch)」GO! スイッチ後継機に期待高まる―通期予想を下方修正も、顧客至上主義は揺るがない任天堂の経営姿勢【ゲーム企業の決算を読む】GO! ニンテンドースイッチ後継機種では「スイッチ向けソフト」も遊べる!「Nintendo Switch Online」も引き続き利用可能など、互換性の新情報が公表 GO! 任天堂・宮本茂氏が語るゲームデザイン。「ゲームデザインとは設計」。前に遊んだゲームをより豪華にするのではなく、身の回りの何をテレビゲームにしたらおもしろいかを組み立てる GO! PS5 Proは実際のところ買いなのか? 実機プレイレビューで約12万円ハイスペックハードの“PS5 Pro Enhanced”を堪能 GO! コナミグループは上半期純利益過去最高、『SILENT HILL 2』のヒットで下半期にも期待【ゲーム企業の決算を読む】GO! ポケットペア、任天堂とポケモンの『パルワールド』訴訟内容について公表―本作の差止め請求も含まれることが明らかに GO!
・今回小数点以下の数字を表示することにすごく不安を感じたけれど、しっかり理解できたと思うので良かったです。 ・本日もありがとうございました。 ・p47の二行を四行にしてもらえたのすごくわかりやすかったです。 ・理解できた 何よりです。 ・復習頑張ります。 是非。 ・前回出てなかったのもあって難しく感じました。 解説が必要でしたら、いつでもリクエストしてください。 時間の許す限り、フォローします。 ・今回もありがとうございました テラに入ったと思ったらもうその上まで来たんですね。 となると自分たちが30~40代になるころにはさらに上へ行ってそうだと思いました。 ですねぇ。私はその頃は70~80代ですが(笑)。 ・とりあえず教科書に記載してあるプログラムをこねくり回してもっと理解できるようにしてみます。 良いですね。是非、チャレンジしてみてください。 ・今日も面白かったです。 ゲームが何本売れたかの数値が4000本とか多いのか少ないのか微妙に感覚がわからなくて。 先生の数字感覚を教えてもらえると嬉しいです。 私も売上本数の数字感覚に悩んでいます。 ファミ通のランキングは「1週間の推定ゲーム販売本数ランキングで、集計された店舗データが元になっています」 とのことなので、ダウンロード回数を含めた実売本数とは差があるかもしれません。 そう考えると、数千本でもランキングに入るのは不思議ではなさそうです。 それにしても、1週間で数十万本売れる「マリオシリーズ」は凄いですね。 ちなみに、Nintendo Switch ダウンロードランキング(半年分)は、任天堂が公開しています。GO! 毎月のPS Storeダウンロードランキングは、SONYが公開しています。GO!