・先生のプログラムを見ながら作ったのですが、繰り返しができなくなってしまいました。 原因教えてもらえるとありがたいです。 if文の条件の冒頭の「!」が抜けているので、 「先頭文字が数字でなく-でもない?」が「先頭文字が数字、かつ、-ではない?」になっているのが原因です。
for trainees of Hirano's class only
・先生のプログラムを見ながら作ったのですが、繰り返しができなくなってしまいました。 原因教えてもらえるとありがたいです。 if文の条件の冒頭の「!」が抜けているので、 「先頭文字が数字でなく-でもない?」が「先頭文字が数字、かつ、-ではない?」になっているのが原因です。
次回予告:p.180「第7章 練習問題」から 講義メモ:memo20250208.txt
p.174 this ・自分自身を指す参照を与えるキーワードがthis ・(テキストのサンプルは文法説明にしかなっていないが)クラスの中で自分自身を指す参照を操作に利用できる p.174 this01.cs //p.174 this01.cs using System; class MyClass { public MyClass m1, m2; //自クラスを型とするフィールド public void Test() { m2 = this; //自クラス型なので自分への参照を代入できる } public MyClass() { //コンストラクタ m1 = this; //自クラス型なので自分への参照を代入できる } } class this01 { public static void Main() { MyClass mc = new MyClass(); //コンストラクタが呼ばれ、m1にthisが代入される mc.Test(); //メソッドが呼ばれ、m2にthisが代入される if (mc.m1 == mc.m2) Console.WriteLine("m1とm2は同じです"); if (mc == mc.m1) //mcは自オブジェクトなのでm1、m2と同じ Console.WriteLine("mcとm1は同じです"); if (mc == mc.m2) //同上 Console.WriteLine("mcとm2は同じです"); } } 補足:thisの活用法① 自オブジェクトのデータを書き換えた結果を返すメソッド ・thisを使わずに自分のHPを倍にすると、単独で実行するしかない class Monster { public int hp; public void hpx2() { hp = hp * 2; } } : Monster slalin = new Monster(); slalin.hp = 100; slalin.hpx2(); //200になる slalin.hpx2(); //400になる slalin.hpx2(); //800になる Console.WriteLine(slalin.hp);…
・「p.168 コンストラクタ:コンストラクタのオーバーロード」から p.167 コンストラクタ:コンストラクタの引数(再掲載) ・メソッドと同様にコンストラクタにも引数が指定できる ・引数を指定したコンストラクタを呼び出すには、newにおいてカッコ内に引数型と引数を記述する ・定義書式②: public クラス名(引数型 引数名, …) {処理内容} 例: public Slime(int h, int p) { hp = h; mp = p; } ・呼び出し法: new クラス名(値や式, …); p.168 コンストラクタ:コンストラクタのオーバーロード ・コンストラクタを含むメソッドは、引数で呼び出し方を区別できるのであれば、同じ名前で定義しても良い ※ C++の関数も同様だが、C言語などの関数では不可 ・「呼び出し方を区別できる」とは、引数の数や引数型や順番の違いのこと ・この「引数の数や引数型や順番の違う」コンストラクタのことをコンストラクタのオーバーロードという ・例: public Monster(){…} //①引数のないコンストラクタ ・例: public Monster(int hp){…} //②HPのみを引数で渡すコンストラクタ ・例: public Monster(int hp, int mp){…} //③HPとMPを引数で渡すコンストラクタ ・例: public Monster(string name){…} //④nameのみを引数で渡すコンストラクタ ・上記は呼び出し方によって自動的に使い分けられる ・例: Monster Slalin = new Monster(); //①が呼ばれる ・例: Monster Hoimin = new Monster(20); //②が呼ばれ、20はHPに用いられる ・例: Monster Rimuru = new Monster(100, 200); //③が呼ばれ、100はHPに、200はMPに用いられる ・例: Monster Veldra = new Monster(“ヴェルドラ”); //④が呼ばれ、”ヴェルドラ”は名前に用いられる ・メソッドのオーバーロードの場合、名前と引数の数や引数型や順番の違いで判別する ・この「名前が同じで、引数の数や引数型や順番の違う」メソッドのことをメソッドのオーバーロードという ・例: public void add(){…} //①引数のないメソッド ・例: public void add(int hp){…} //②HPのみを引数で渡すメソッド ・例: public void add(int hp, int mp){…} //③HPとMPを引数で渡すメソッド ・上記は呼び出し方によって自動的に使い分けられる…
ゲームソフト販売本数ランキング:今週1位も「ドンキーコング リターンズ HD(Switch)」 GO! スクエニ、2025年第3四半期決算を発表。営業利益は4.4%減。『ドラクエ3リメイク』は当初の想定を上回る販売数に、スマホ・PCブラウザゲームは弱含み GO! 任天堂が今期業績予想を再度引き下げ、年末商戦でハード・ソフトの販売伸び悩む【ゲーム企業の決算を読む】GO! ケイブ、4割の営業減益で上半期を折り返し―『メテオアリーナ』の償却費負担重く【ゲーム企業の決算を読む】GO! スイッチ2「リスクをとりつつ需要を満たせる」供給体制に。「購入しやすい価格」も考慮―スイッチ向け新作も引き続き展開か? GO! トランプ政権の新関税政策、米業界団体ESAがゲーム機器への打撃を懸念―半導体関税でコンソール価格上昇の可能性 GO!
・ありがとうございました。 ・今回もありがとうございました。 次回もよろしくお願いします。 ・今日もありがとうございました。次も頑張ります。 応援します。 ・クラスの話を聞くとプログラムの話が点がつながってくような感覚になっていって、楽しくなってきました。 また来週もお願いします。 何よりです。 「グループ開発・部品化・再利用」のために何が必要かを的確に理解してください。
次回予告:「p.168 コンストラクタ:コンストラクタのオーバーロード」から 講義メモ:memo20250201.txt
アレンジ演習:p.163 bmiclass.cs ・身長や体重に0以下の値が入力されたら、先に進まずに再入力させるようにしよう 作成例 //アレンジ演習:p.163 bmiclass.cs using System; class BMI { //部品クラス private double blm; //身長(m単位):内部計算用のインスタンス変数なのでprivate public double Calc(double bl, double bw) { //身長(cm)と体重(kg)を受け取ってBMIを返すインスタンスメソッド blm = bl / 100.0; //身長(cm)を身長(m)に換算 return bw / Math.Pow(blm, 2.0); //体重を身長(m)の自乗で割ってBMIを得て返す } } class bmiclass { //実行用クラス public static void Main() { //実行用の特別メソッド string strBl, strBw; //入力用のローカル変数 double blcm, bwkg; //実数変換用のローカル変数 do { //入力ループ① Console.Write("身長(cm)—"); strBl = Console.ReadLine(); blcm = Double.Parse(strBl); //実数変換 } while (blcm <= 0); //0以下が入力されていたら繰返す do { //入力ループ② Console.Write("体重(kg)—"); strBw = Console.ReadLine(); bwkg = Double.Parse(strBw); //実数変換 } while (bwkg <= 0); //0以下が入力されていたら繰返す BMI bmi = new BMI(); //部品クラスのインスタンスオブジェクトを生成 Console.WriteLine("BMIは{0:#.##}です", bmi.Calc(blcm, bwkg)); //BMIを得て小数点以下2桁で表示 } } アレンジ演習:p.165 noreturnvalue.cs ・記述されている5つの「return」が全て不要であることを確認しよう ※「return」が常に不要という意味ではなく、メソッドの途中で呼び出し元に戻りたい場合に利用可能 ※ このプログラムの5つの「return」はメソッドの末尾や、メソッドの末尾に向かう位置にあるので不要 作成例 //アレンジ演習:p.165…
p.158「簡単なクラスを定義しよう(生成と参照)」から p.157 簡単なクラスを定義しよう(インスタンス変数の複数定義・生成)【再掲載】 ・「int x, y;」というように、同じ型の変数をまとめて宣言できる ・インスタンス名も同様で「クラス名 インスタンス名①, インスタンス名②, …」と記述できる ・なお、インスタンスの生成もまとめて行える(「int x = 1, y = 2;」と同様に) ・書式例: クラス名 インスタンス名① = new クラス名(), インスタンス名② = new クラス名(), …; p.158 簡単なクラスを定義しよう(生成と参照) ・「クラス名 インスタンス名」で宣言したインスタンス名(オブジェクト名)にはオブジェクトそのものが格納されるわけではない。 ・p.40下の参照型の図の通り、インスタンス名にはオブジェクトを示す参照(オブジェクトの位置情報)が与えられる ・よって、異なる2つのインスタンス名に1つのオブジェクトの参照を格納でき、同じオブジェクトを指すことができる(p.159上の図参照) ・つまり、こうすることで、オブジェクトに別名をつけることが可能 ・これは多くのテクニックに活用されている アレンジ演習:p.158 simpleclass03.cs ・021行目の後で、新たにMyClassオブジェクトを生成して変数bに与え、b.xに1000を代入すると、a.xはどうなるか確認しよう 作成例 //アレンジ演習:p.158 simpleclass03.cs using System; class MyClass { //クラスの定義 public int x; //インスタンス変数の定義 } class simpleclass03 { //実行用クラス public static void Main() { //実行用メソッド MyClass a, b; //クラス型の2変数の宣言 a = new MyClass(); //オブジェクトを生成して変数aで参照する a.x = 10; //変数a経由でインスタンス変数xに代入 b = a; //変数aの参照を変数bに代入する(同じオブジェクトへの参照になる)) Console.WriteLine("b.x = {0}", b.x); //a.xと同じインスタンス変数なので10 b.x = 100; //変数b経由でインスタンス変数xに代入 Console.WriteLine("a.x = {0}", a.x); //b.xと同じインスタンス変数なので100 //【以下追加】 b = new MyClass(); //オブジェクトを新たに生成して変数bで参照する b.x = 1000; //変数b経由でインスタンス変数xに代入 Console.WriteLine("a.x = {0}", a.x); //b.xとは異なるインスタンス変数なので100のまま }…
ゲームソフト販売本数ランキング:今週1位も「ドンキーコング リターンズ HD(Switch)」 GO! 【PS Plus】フリープレイ&ゲームカタログの対象タイトルは2026年1月以降PS5向けが中心になると発表。PS4向けの配信は不定期に GO! コーエーテクモHD、『真・三國無双 ORIGINS』好スタートも通期予想達成に黄色信号―プライム市場維持への課題も【ゲーム企業の決算を読む】GO! HEROZ、『将棋ウォーズ』好調も成長事業への投資先行で上半期は減益で折り返し【ゲーム企業の決算を読む】GO! マイクロソフト、ゲーム事業は減収も利益は改善―Game Passが成長をけん引【2025年度第2四半期決算】GO! AIによるゲームプレイ補助ソフト「Gaming Copilot」Steamでリリース。プレイヤーへリアルタイムに戦略などをアドバイス GO! SIEが2025年4月1日から新経営体制へ―西野秀明氏が社長に、会長だった十時裕樹氏はソニーグループCEOに就任へ GO! ユービーアイソフト、複数スタジオで計185人をレイオフしUbisoft Leamingtonを閉鎖―長期的な安定性を確保するため GO! 海外メディア「理論上、“闇市場”を防ぐ方法は本作にない」―『ポケポケ』全プレイヤーにRMTやデータ改ざんに関与しないよう注意呼び掛け。トレード機能が不正の温床となることを懸念か GO!