投稿

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

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

今日、やったこと クラスの練習問題1~3 今日のソースコード [クラスの練習問題1]2-1 Dogクラス(Dog.cs) Ex2_1クラス(Ex2_1.cs)  [クラスの練習問題1]2-2 Dogクラス(Dog.cs) Ex2_2クラス(Ex2_2.cs)  [クラスの練習問題1]2-3 Dogクラス(Dog.cs) Ex2_3クラス(Ex2_3.cs)  [クラスの練習問題1]2-4 Dogクラス(Dog.cs) Ex2_4クラス(Ex2_4.cs)  次回は 「クラスの練習問題1」の解説と残りの練習問題(クラスの練習問題2、3)をやってもらいます。

10月27日(木)1コマ目

イメージ
今日、やったこと コンストラクタ 今日のホワイトボード コンストラクタとは 一見、メソッド。でもメソッドではない。 [実行するには] メソッドのように呼び出すことができない。インスタンス生成時に自動的に呼び出される。 [メソッド名は] クラス名と同じにしなければならない。 [引数は] 可能。 [戻り値は] なし。型指定もできない。voidも指定できない。 図 コンストラクタ 図 コンストラクタの実行 コンストラクタを作ってみる Time.cs コンストラクタでメッセージを表示する。 Test.cs Main()メソッドのあるクラス。Timeクラスのインスタンス生成時にコンストラクタが実行される。 上記プログラムを実行すると、   コンストラクタが実行されました   9時15分             と表示される。 コンストラクタでの処理 コンストラクタの一般的な利用として、プロパティの初期化があります。 Time.cs Hour、Minuteプロパティをコンストラクタで初期化します。 Test.cs ここでは生成したTimeクラスのインスタンのHour、Minuteプロパティを変更していません。 上記プログラムを実行すると、   コンストラクタが実行されました   10時20分             と表示される。コンストラクタで初期化された値が表示されます。 コンストラクタを複数定義する 同じクラス内に 引数の数、型が異なれば複数のコンストラクタ を定義できます。 ...

10月20日(木)1コマ目

イメージ
今日、やったこと アクセス修飾子 プロパティ 今日のホワイトボード アクセス修飾子 フィールドやメソッド、プロパティ、さらにクラスに設定します。 設定することで、どこからアクセス可能かを制限することができます。 いろいろありますが、 private (クラス内のみアクセス可)と public (クラス外からアクセス可)をおさえてください。  図 アクセス修飾子 フィールドはprivate 一般的に フィールドはprivate です。 フィールドはデータを保存する変数です。変な値をセットされたり、不用意に参照されると困ります。そこで、フィールドはアクセス修飾子をprivateにして、クラス外からアクセスできないようにします。 このままだと、クラス外からフィールドにアクセスできなくなるため、アクセス用のメソッド(アクセス修飾子はpublic)を用意します。 図 フィールドをprivateに プロパティ C#にはアクセス用メソッドに変わる仕組みとして、プロパティがあります。 図 プロパティ 自動プロパティ privateなフィールドを用意して、publicなアクセス用メソッドを用意して、をフィールドの数だけ用意するのはめんどくさいし、同じ作業の繰り返しです。 そこで自動プロパティと呼ばれる仕組みでプロパティのひな型を入力すれば、フィールドとプロパティの中身を自動的に生成してくれるようになっています。 すいません、写真を撮るのをわすれてました。 次回は コンストラクタをやります。

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

イメージ
今日、やったこと 練習問題のつづき+解説 クラス 今日のホワイトボード 練習問題の解答例+解説 練習問題1-1 Console.Write()とConsole.WriteLine() Write()メソッドは改行なし、WriteLine()メソッドは改行ありです。 図 Write()メソッドとWriteLine()メソッド 練習問題1-2 とくに指定はしていませんが、配列に代入するフィボナッチ数列の値はループを使って、計算した結果を代入してほしいです。 練習問題1-3 練習問題1-4 10進数=>2進数へ変換するには、答えが0になるまで、2で割り、余りが各けたの数、答えが次に2で割る数でした。これをプログラムに置き換えればOKです。 図 ループ処理 練習問題1-5 2の補数がちょっとややこしいかもしれません。 が、基数変換同様、処理の流れをプログラムに置き換えればできます。 図 2の補数へ変換するながれ 練習問題1-6 解答例はバブルソートで並び替えています。 クラスはCの構造体と同じ? クラスはCの構造体と見た目はよく似ています。 構造体のメンバ変数とクラスのフィールドは同じようなモノだと思ってください。 構造体は変数を宣言すれば、構造体メンバにアクセスできます。 が、クラスは変数を宣言しただけでは、フィールドにアクセスすることができません。 図 Cの構造体とC#のクラス クラスは変数を宣言するだけではエリアが確保されない クラスは変数を宣言するだけでは、クラス内のフィールドの値を保存するためのエリアが確保されません。 キーワードnewを使ってエリアを確保する必要があります。(配列と同じイメージ) 図 キーワードnewを使ってクラス用のエリアを確保する インスタンス生...

10月3日(木)1コマ目

イメージ
今日、やったこと 練習問題のつづき 今日のホワイトボード 先週配布したC#の練習問題をひきつづきやってもらいました。 おさらいの際に、C#の配列をメモリと絡めて話をしました。 C言語では  int array[10]; と書けば、int型が10個連続するエリアがメモリ上に確保され、変数名arrayでアクセスできます。 この確保されたエリア(変数名arrayでアクセスできるエリア)に配列データが保存されます。 C#では  int[] array; で確保されるエリアには配列データを保存されません。  array = new int[10]; でint型が10個連続するエリアが確保されます。このエリアに配列データが保存されます。 変数arrayにはこのエリアへアクセスするための参照情報が保存されます。 よって、変数arrayはCのポインタ変数と同じです。 C#では今後、この実はポインタ変数が結構登場します。 図 配列(CとC#の違い) 次回は 練習問題の解説をします。

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

イメージ
今日、やったこと C#の配列 C#のforeach 練習問題 今日のホワイトボード C#の配列の宣言 要素の確保の部分(new 型[要素数])がCとちょっと異なるので注意!! 図 配列の宣言、要素の確保 配列の要素数取得 Lengthプロパティで配列の要素数が取得できる。 図 Lengthプロパティで要素数取得 foreach 繰り返し処理を行う。配列等から順に要素を取り出す際に便利。 図 foreach 練習問題のすすめかた 問題ごとにクラス作成 Ex1プロジェクトに問題ごとのクラスを追加。 各クラスにMain()メソッドを作成し、そのなかに課題を作成。 図 練習問題のプロジェクト構成 実行方法 プロジェクトにMain()メソッドを持つクラスが複数あるため、実行するとエラーが発生する。 Main()メソッドを実行するクラスを指定する必要がある。 ①「ソリューションエクスプローラ」にてプロジェクト名をダブルクリック ②表示されるプロジェクト名.csprojにて<StartupObject></StartupObject>を編集  起動するクラス名に変更 ③実行 コマンドライン引数 実行時にコマンドライン引数を渡すことができる。 図 コマンドライン引数 ①「ソリューションエクスプローラ」にてプロジェクト名を右クリック ②「デバッグ」の「デバッグ起動プロファイルUIを開く」クリック ③「コマンドライン引数」にコマンドライン引数を指定  引数が複数ある場合は、半角スペース区切りで指定。 次回は 練習問題のつづきをやってもらいます。

10月6日(木)1コマ目

イメージ
今日、やったこと C#の基礎 今日のホワイトボード C#の文法 C#はJava、C++と同じでCをルーツに持つ言語。よって、データ型、変数宣言、制御構造文(繰り返し、条件分岐)はCとほぼ同じ。 Main()メソッド Cと同じようにプログラムはmain()関数(C#ではMain()メソッド)から実行される。 Cと異なるのは、Main()メソッドを含めて、メソッドはクラス内に作成すること。 図 Test1クラス内のMain()メソッド サンプルに出てきたConsole.WriteLine()はCのprintf()と同じような機能と思ってください。 +演算子 演算子もCと一緒。 ただ、+演算子はCと同じ加算演算以外に、文字列の結合もできる。 +演算子の両サイドが数値か文字列かで加算か、文字列結合かが決まる。 図 +演算子 処理部で変数宣言可能 Cは関数の最初で変数の宣言をして、処理が続くが、C#はメソッド内のどこでも変数宣言ができる。 図 変数宣言はどこでも可能 for()のカウンタ変数をfor()内で宣言することで、変数のスコープを制限する。 次回は 配列とforeach()の話をしたあと、練習問題をやってもらいます。