投稿

10月, 2025の投稿を表示しています

10月30日(木)2コマ目

イメージ
今日、やったこと [練習問題 解説]練習問題3 クラスの配列 今日のホワイトボード [練習問題 解説]練習問題3 そんなに難しくはなかったかと。 正解例をあげておきます。 練習問題3-1 Dog.cs Ex3_1.cs 練習問題3-2 Dog.cs 3-1からプロパティAge、Typeを追加。 Ex3_2.cs 練習問題3-3 Dog.cs 3-2からGetProfile()メソッドを追加。 Ex3_3.cs 練習問題3-4 Dog.cs 3-3から引数なし、引数ありの2つのコンストラクタを追加。 Ex3_4.cs クラスの配列 パターン1 xxxクラス型の配列を作ることもできる。 変数やインスタンスがメモリ上でどのようになっているかを意識してほしい。 Person.cs とくにややこしいことはないかと。 Program.cs 今までは ①xxxクラスを追加 ②xxxクラスにMain()メソッド追加 ③Main()メソッドをエントリポイントとして利用 してきたが、実はxxxクラスやMain()メソッドを使わなくても、Progam.csがエントリポイントになる。 Program.csを順に実行していくと、メモリは下図のように使われる。 図 メモリの使われ方 次回は クラスの配列のつづき。 練習問題をやってもらいます。  

10月24日(金)1、2コマ目

イメージ
今日、やったこと クラス プロパティ コンストラクタ 今日のホワイトボード フィールドをprivateに クラス外から変な値を代入できないように、フィールドはprivateにするのが一般的。 しかし、フィールドをprivateにすると、クラス外からアクセスできなくなるので、publicなアクセス用メソッドを用意する必要がある。 図 フィールドはprivateに、publicなアクセス用メソッドを用意 プロパティ C#では、アクセス用メソッドの代わりに、変数感覚で使えるプロパティが使われる。 図 アクセス用メソッドの代わりにプロパティをつかう Time1.cs Sample.cs プロパティの自動生成機能 以下のような フィールドを用意して プロパティのget{ }内はフィールドの値を返すだけ プロパティのset{ }内はフィールドに値を代入するたけ 場合は、プロパティの自動生成機能で省略記法が使える。 この省略記法を使うと、 フィールドを生成 プロパティのget{ }内、set{ }内を生成 してくれる。 今後は、基本的にこの書き方で。 図 プロパティの自動生成機能を使って、フィールド、プロパティを生成 Time2.cs Sample.cs コンストラクタ 〇コンストラクタ生成 コンストラクタはメソッドに似ているが、 コンストラクタ名はクラス名を同じにする必要がある 戻り値の型は指定できない そもそも戻り値を返すことはできない と、メソッドと異なる。  〇コンストラクタ実行 メソッドと異なり、明示的に呼び出しができない。 インスタンス生...

10月23日(木)2コマ目

イメージ
今日、やったこと クラス インスタンス生成 メソッド 今日のホワイトボード インスタンス生成 インスタンス生成とは、そのクラスに必要なエリアをメモリ上に確保すること。 確保したエリア内にフィールドやメソッドがあるイメージ。 ※本当はメソッドは別のところにあるけど 図 Timeクラスのインスタンス生成 上図のプログラムはそれぞれ以下を行っている。 Time tm; Timeクラス型の変数tmを宣言。 メモリ上の空きエリアにtmでアクセスできるエリアが確保される。 なお、このエリアはTimeクラスに必要なサイズ(hourやminuteフィールド)ではない。 tm = new Time(); new Time() でTimeクラスの インスタンスが生成される 。 インスタンス生成で、そのクラスに必要なサイズのエリアがメモリ上に確保される。  tmに代入されるのは、生成したTimeクラスのインスタンスへの参照情報。 変数tmはポインタ変数ということになる。 メソッド クラスにはメソッドを作ることができる。 図 メソッド Show()メソッドでアクセスしているhour、minuteは、同じインスタンス内のhourフィールド、minuteフィールド 。 インスタンスを複数生成すると 下図の変数tm1が参照するTimeクラスのインスタンスと、変数tm2が参照するTimeクラスのインスタンスは別々。 それぞれのインスタンスのhour、minuteフィールドに代入されている値が異なるため、Show()メソッド実行結果も異なる。 図 インスタンスを複数生成すると アクセス修飾子 いろいろあるが、 同一クラス内からのみアクセス可のprivate と、 どこからでもアクセス可のpublic だけ知っておいてください。 図 アクセス修飾子 次回は クラスのつづき。 プロパティ コンストラクタ

10月16日(木)2コマ目

イメージ
今日、やったこと [練習問題解説]練習問題2 クラス 今日のホワイトボード 練習問題2の正解例 正解例をあげておきます。 2-1 とくにややこしいことはないかと。 2-2 中央値はソートをして求めるのが基本だが、値が3つだけなので、順列は6とおりだから、6パターンの条件分岐で実装。 3個までなら、ソートするより、条件分岐の方が早いし、見やすいと思う。 4個だと、4!=24通りなので、ソートしたほうがいいかな。 2-3 最小値、最大値の検索の一番簡単な方法。 2-4 2つの変数の値の入れ替えにはタプルを使うと簡単。 図 タプルで入替 タプルは配列と同じように、複数のデータをひとまとめにできる。 配列と異なり、違う型のデータをまとめることができる。 2-5 配列の先頭から最後の要素を順に取り出すにはforeachが便利。 添字を意識する必要がなければ、forよりforeach。 varは代入値から型を推測してくれる。 図 foreachで配列の要素にアクセス varは初期値を指定できる場合は、変数宣言時に使える。 が、しばらくはforeachだけで。 2-6 四捨五入、切り上げのよくあるやり方。 クラス クラスはC言語の構造体にメソッド(関数)を追加したようなモノ。 でも構造体はクラスはかなり違うので注意。 構造体型の変数を宣言すると、メモリ上に空きエリアにメンバ変数が格納できるエリアが確保できる。 図 C言語の構造体 クラス型の変数を宣言すると、メモリ上の空きエリアに確保されるエリアにはプロパティのための...

10月10日(金)1、2コマ目

イメージ
今日、やったこと VisualStudioのデバッグ機能(ブレークポイント、ステップ実行) コマンドライン引数 練習問題1-6 メソッド 練習問題2 今日のホワイトボード VisualStudioのデバッグ機能(ブレークポイント、ステップ実行) VisualStudioにはデバッグを支援するための機能が用意されている。 〇ブレークポイント 実行時に一時停止させる機能。 一時停止させたい行の左端の灰色の部分をクリックすると、その行にブレークポイントが設定される。 図 21行目にブレークポイントが設定された 実行すると、ブレークポイント設定行の実行直前で一時停止する。 図 ブレークポイントで一時停止中 停止中は、変数にマウスを近づけると、変数に代入されている値が表示される。 図 一時停止中に変数の値を確認 〇ステップ実行 ブレークポイントで一時停止後、 F10キー を押すと1ステップずつ実行できる。 図 ブレークポイントで一時停止 ...

10月9日(木)2コマ目

イメージ
今日、やったこと 練習問題1(1-1~1-3)の解説 今日のホワイトボード 練習問題1(1-1~1-3)の解説 C言語にはない機能も紹介。 練習問題1-1 コンソール出力用メソッドには Console.Write() Console.WriteLine() がある。違いは改行の有無。 図 Console.Write()とConsole.WriteLine()の違い 練習問題1-2 配列の要素を先頭から最後まで順にアクセスする場合は、for()より、foreach()のほうが便利。 練習問題1-3  文字列中に変数を埋め込むには 文字列結合演算子+を使って結合 $""のなかに、{変数名}で埋め込み がある。 $"・・{変数名}・・"は今どきの言語では同じようなことができる。 図 文字列中に変数を埋め込む 次回は 練習問題1-6をやってもらいます。 そのあと関数。

10月3日(金)1、2コマ目

イメージ
今日、やったこと C#が動く環境 C#の基本文法 今日のホワイトボード いろいろな言語のアプリケーションが動く環境 〇C#のプログラムが動く環境 C#で作ったアプリケーションを動かすには、.Net Frameworkが必要。 ※.Net Frameworkはソフトウェア .Net Frameworkさえあれば、Windowsのバージョンが違っても、C#で作ったアプリケーションは再コンパイルなしで実行できる。 今は.Net Frameworkから.Net Framework Coreに変わっている。 .Net Framework CoreはWindowsだけでなく、LinuxやMacOS上でも動く。 よって、C#で作ったアプリケーションはWindowsだけでなく、LinuxやMacOSでも動かすことができる。 図 C#のアプリケーションが動く環境 〇Javaのプログラムが動く環境も同じ Javaは、.Net Framework Coreの代わりがJava Virtual Machine。 図 Javaのアプリケーションが動く環境 〇C言語のプログラムが動く環境は C言語で作ったアプリケーションはOSを直接利用するイメージ。 よって、OSが変わると、再コンパイル、場合によってはプログラム書き換えが必要。 図 C言語のアプリケーションが動く環境 VisualStudioのソリューション、プロジェクト、プログラムファイル VisualStudioでプロジェクトを作ると、同名のソリューションが作成される。 1つのソリューションは、複数のプロジェクトを持つことができる。 プロジェクトには、C#のプログラムファイル(~.cs)を持つことができる。 C#のプログラムファイルは拡張子を.csにすること。 図 ソリューション、プロジェクト、プログラムファイル プログラムファイルは  ①プロジェクト右クリック  ②追加  ③クラス で行う。 ファイル名は大文字始まりにすること。 ※ファイル名=クラス名。クラス名は大文字始まりが暗黙の了解。 プログラムファイルの中 クラスの追加で作成されるプログラムファイル(~.cs)には、あらかじめクラスのひな型ができている。 このクラスの中にMain()メソッドを追加して、処理を書く。 図 プログラムファイルの中 文字列 C言語では、文字列はchar型...