2020年05月15日

師匠のVB.NETどたばた塾~第9回

sisyo.gif
師匠:さて。今回も講座を始めるが、ちゃんと予習復習はやってきておろうな?

deshi.gif
弟子:ぎくっ。ハ、ハイ、モチロン。チャントヤッキマシタトモ。

sisyo.gif
なんでカタコトになっておるのじゃおぬしわぁっ!!(飛び蹴り

deshi.gif
うわぁっ。

sisyo.gif
……こほん。さて、今回はテキストボックスとコマンドボタンの使い方についてやっていくとするぞ。

deshi.gif
は、はい、師匠……。

~コマンドボタンを使ってみるのじゃ。

sisyo.gif
まずは、コマンドボタンの使い方からじゃ。最初は貼り付けるところからやってみるとしようぞ。
これがコマンドボタンじゃ。

vb2005-01.JPG
↑これがコマンドボタンだ!

sisyo.gif
これを、前回のピクチャーボックスと同じ要領で、フォームに貼り付けるがよい。

deshi.gif
はい、できましたよ。プロパティを見てみると、Textプロパティがありますね。もしかして、これをいじると、ボタンに表示されている文字列を変えることができるわけですか?

sisyo.gif
うむ。その通りじゃ。試しに、Textプロパティを『技を撃つ!』に変えてみるがよい。

deshi.gif
はい……おおっ! 変わりましたよ!

vb2005-02.JPG
↑Textプロパティを変えるとこうなるぞ!

deshi.gif
それで、これはどう使えばよいのですか?

sisyo.gif
うむ。それではまず、コマンドボタンをダブルクリックしてみよ。

deshi.gif
はい……何か、コードを書くウィンドウが開きましたよ。

vb2005-03.JPG
↑コードを書くウィンドウが開いた!

sisyo.gif
そのコード(プログラム)をよく見てみるがよい。Private Sub ●●●と、End Subという二つの行があるじゃろう?

deshi.gif
はい。

sisyo.gif
今貼り付けたボタンを押すと、VB.NETは、その二つの行に囲まれた命令を実行するようになっておるのじゃ。そうじゃのう。試しに、MsgBox("石破天@拳!!")と、打ち込んでみるがよい。
MsgBoxは、指示した内容が表示された小さなウィンドウを表示させる関数(命令)じゃ。

deshi.gif
なるほど。じゃ、さっそく打ち込んで実行してみますね……。
おおっ! ボタンを押したら、『石破天@拳!!』と書かれたウィンドウが表示されましたよ!

vb2005-04.JPG
↑技が出た!?

sisyo.gif
うまくいったようじゃのう。さて、先ほどのPrivate Sub ●●●という感じの行に注目せよ。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

sisyo.gif
どのボタンをどのように操作した時に、どこのコードを実行するかは、この行のButton1_Clickの部分が関係しておる。
この部分は、だいたいこのように構成されているのじゃ。

対象となるコントロール_操作

deshi.gif
つまり、今回の場合なら、Button1をClickした時に、この部分の命令が実行されるわけですか。

sisyo.gif
その通り。これを覚えていると、色々と役に立つぞ。なお、今のように、コントロール(部品)が操作された時に、そのコントロールと操作に関連づけられた部分のコードを実行させる、というプログラミング形式を、『イベント駆動型プログラミング』という。豆知識として頭の片隅に入れておくがよい。

deshi.gif
はい、師匠!

~テキストボックスを使ってみよう!

sisyo.gif

さて。次はテキストボックスを使ってみるとしようぞ。
これがテキストボックスじゃ。

vb2005-05.JPG
↑これがテキストボックスだ!

sisyo.gif
これを、先ほどのフォームに貼り付けてみるがよい。

deshi.gif
はい。貼り付けてみましたけど……これ、複数行のテキストを入力したいときはどうすればいいんですか?

sisyo.gif
うむ。いい質問じゃの。通常は一行分だけのテキストボックスしか作れぬが……今貼り付けたテキストボックスのプロパティの中から、MultiLineというプロパティを見つけ出し、その内容をTrueに変えてみるがよい。すると、テキストボックスを広げることができるようになるぞ。

deshi.gif
おおっ、本当だ! まだボケてはいなかったんですね! いてっ。

sisyo.gif
わしはまだ若い。スクロールバーを使ってテキストをスクロールできるようにしたいときは、ScrollBarsプロパティを変えるのじゃ。なお、プロパティの値は次のようになっておる。

・None……スクロールバーはつかない
・Horizontal……横にスクロールさせるスクロールバーをつける
・Vertical……縦にスクロールさせるスクロールバーをつける
・Both……両方つける

deshi.gif
あの、師匠。プロパティをHorizontalにしましたけど、スクロールバーが表示されてませんよ。やっぱり師匠はボケ……いてっ。

sisyo.gif
わしはまだ若い。こほん。一つ説明するのを忘れておった。HorizontalやBothにした場合は、WordWrapプロパティをFalseにしないと、横のスクロールバーは表示されぬのじゃ。すまぬ。
その代わりに、WordWrapをTrueにした場合、テキストボックスは、画面の端まで入力すると折り返すようになるのじゃ。

deshi.gif
ふむふむ。

sisyo.gif
さて、もう一つ面白いプロパティを教えておこう。PasswordCharじゃ。これを設定しておくと、入力した文字が、ここで設定した文字に置き換わって表示されるのじゃ。なお、入力した内容はそのままなので安心するように。
また、このプロパティは一行のみのテキストボックス(つまり、MultiLineがFalseになっている)でないと効果がないので気を付けるようにな。

deshi.gif
はい、わかりました。それで、入力した文字はどのように取得すればいいのでしょうか?

sisyo.gif
うむ。実はVB.NETでは、コード中でプロパティを取得することができるのじゃ。そのためには次のように書く。

コントロール名.プロパティ名

sisyo.gif
例えば、TextBox1のTextプロパティを知りたければ、次のように書く。

TextBox1.Text

sisyo.gif
このように書けば、後はこれを変数のように値を取得したり、逆に値を設定することができるのじゃ。

deshi.gif
おおっ!

sisyo.gif
それではさっそく、使ってみることにしようぞ。まずは、先ほどのテキストボックスのMultiLineをFalseに戻し、そしてさらに、先ほど書いたコードを次のように変えてみるがよい。

MsgBox(TextBox1.Text)

deshi.gif
はい、できました。そして実行……と。おおっ! テキストボックスに文字を入力してからボタンを押すと、その内容の書かれた小さなウィンドウが表示されましたよ!

sisyo.gif
これが、VB.NETのプログラミングの神髄じゃ。つまり、VB.NETのプログラミングは、コントロールの操作に対応した部分にコードを書き、その中で、コントロールのプロパティを取得したり変更したりするようにしていくのじゃ。

deshi.gif
なるほど!

sisyo.gif
それでは最後に二つだけ教えておこう。
まず一つ目。先ほど、プロパティは取得したり変更することができる、と書いたが、プロパティの中には変更ができないものがある。気を付けるように。

deshi.gif
はい!

sisyo.gif
そして二つ目。コントロールのNameプロパティを変えることで、そのコントロールの名前そのものを変えてしまうことができる。じゃが、コード中で変えることはできず、また、名前を変えると、Private Sub ●●●の部分も変わるから気を付けることじゃ。

deshi.gif
はい、わかりました、師匠!

sisyo.gif
うむ! それでは次回は、リストボックスについて教えていくことにする。予習復習はしっかりとしておくようにの。



※次の更新は、『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!

posted by 裏編 at 13:30| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする

2020年04月09日

師匠のVB.NETどたばた塾~第8回

deshi.gif
弟子D:うむ、一か月ぶりだな! 弟子で……ぐはぁっ!!(師匠に蹴り飛ばされる)

sisyo.gif
師匠T:たわけが。それはもういいわ。さて、今回はピクチャーボックスについて学んでいこうと思う。準備はいいか?

deshi.gif
……

sisyo.gif
おや、気絶したのか?

deshi.gif
ぐぅぐぅ……

sisyo.gif
起きんかっ!!(弟子に飛び蹴り

~さっそく使ってみるのじゃ!

sisyo.gif
それではさっそくピクチャーボックスを使ってみるとしようか。前回と同じくプロジェクトを作るのじゃ。

deshi.gif
……はい、できましたよ。それで、ピクチャーボックスはどこですか?

sisyo.gif
うむ、これがピクチャーボックスじゃ。

vb2004-01.JPG
これじゃっ!!

sisyo.gif
これを押し、前回のラベルと同じ要領で貼り付けてみよ。

deshi.gif
はい……あれっ?

vb2004-02.JPG
あれ?

deshi.gif
ピクチャーボックスなのに、画像が出ませんよ? ははーん、師匠ももうボケ……いてっ。

sisyo.gif
たわけが。画像はこれから設定するところじゃわい。Imageプロパティを選び、その横のボタンを押すがよい。

vb2004-03.JPG
これを押すのだ!

deshi.gif
おや、何やらダイアログが出てきましたよ。

vb2004-04.JPG
ダイアログが出てきた

sisyo.gif
うむ。そしたら、『ローカルリソース』を選択し、『インポート』のボタンを押すのじゃ。
すると、画像ファイルを選ぶことができるので、表示させたい画像ファイルを選べばOKじゃ。

deshi.gif
おおっ! 画像が表示されましたよっ!

vb2004-05.JPG
画像が表示された!

deshi.gif
さて、終わったことだし、ゲームを……。いてっ。

sisyo.gif
たわけが。まだ学ぶべきことが残っておるわ。次からは、ピクチャーボックスのプロパティについて、いろいろと学んでいくぞ!

~ピクチャーボックスのプロパティじゃ!

sisyo.gif
さて、ピクチャーボックスを貼り付けてみて、気になったことはないか?

deshi.gif
あ、そういえば大きい画像を選ぶと、その一部しか表示されなかったような……。そんな時は、ハンドルを使って、サイズを調整すればいいんですよね?

sisyo.gif
うむ。それも一つの方法じゃろう。しかし、プログラムで色々な大きさの画像を表示させる時には、それでは困るじゃろう。

deshi.gif
あ、そういえば。

sisyo.gif
そんな時に役立つのが、SizeModeプロパティじゃ。

deshi.gif
それはどのように使うのですか?

sisyo.gif
うむ。習うよりなんとやら。さっそく使ってみるとしよう。SizeModeを選んだ時に、右にボタンが出てくるじゃろう?

deshi.gif
はい。押すと、リストが出てきました。

sisyo.gif
うむ。そうしたら、リストの中から、AutoSizeを選んでみよ。どうじゃ?

deshi.gif
あっ! 画像がすべて出るようになりました!

vb2004-06.JPG
画像がすべて表示されるようになった!

sisyo.gif
うむ。続いて、小さな画像を表示させてみよ。

deshi.gif
今度はピクチャボックスが小さくなりました! なるほど。AutoSizeを選ぶと、ピクチャボックスが画像のサイズに合わせて拡大・縮小するようになるんですね! 他の設定はどうなるんですか?

sisyo.gif
うむ。だいたい、次のようになるぞ。

・StretchImage→画像がピクチャーボックスに合わせて拡大・縮小される
・Zoom→基本はStretchImageと同じだが、画像の縦・横のサイズの比率はそのまま
・CenterImage→画像がピクチャーボックスより小さければ、画像がピクチャーボックスの真ん中に表示される。画像がピクチャーボックスより大きい場合は、画像の中心がピクチャーボックスの中心になるように表示される。(ピクチャーボックスの大きさは変更されない)

deshi.gif
なるほど。ピクチャーボックスの用途に応じて使い分けることが大切みたいですね。

sisyo.gif
うむ。さて、ピクチャーボックスのプロパティはまだまだあるぞ。次は、BorderStyleプロパティじゃ。

deshi.gif
BorderStyleプロパティですか。

sisyo.gif
うむ。これは、ピクチャーボックスのふちをどのようにするか、というものじゃ。これには、FixedSingleとFixed3D、そしてNoneの3つの値があるが、どのようになるか、実際に見てみるのが早いじゃろう。

vb2004-07.JPG
FixedSingleを選んだ場合

vb2004-08.JPG
Fixed3Dを選んだ場合

vb2004-09.JPG
Noneを選んだ場合

deshi.gif
なるほど。

sisyo.gif
最後はBackColorプロパティじゃ。これは読んで字のごとく、ピクチャーボックスの背景の色を表すプロパティじゃ。
BorderStyleプロパティと組み合わせて、色のついた四角を作りたい時に役立つじゃろう。

deshi.gif
そうですね。

sisyo.gif
では今回はここまで。次回は、ボタンとテキストボックスを使うとともに、Windowsプログラミングの初歩に触れてみようと思う。

deshi.gif
はい、わかりました、師匠っ!
さて、講座も終わったことだし、ゲームを……。

sisyo.gif
予習復習をしっかりとせんか、このたわけがぁっ!!(弟子に飛び蹴り




※次の更新は、『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!


posted by 裏編 at 09:57| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする

2020年03月19日

師匠のVB.NETどたばた塾~第7回

sisyo.gif
師匠T:ふぅ、パソレク、チャレンジARSに引き続いて、この講座か。毎月のこととはいえ、本当に堪えるのう。

deshi.gif
弟子D:師匠も、もういい年……いてっ。

sisyo.gif
わしはまだ若い。

deshi.gif
えー、だって口ひげも生えてるし、髪の毛も白髪が……。

sisyo.gif
な・に・か・いっ・た・か?

deshi.gif
……いえ、なんでもありません。

sisyo.gif
さて。今回からいよいよWindowsアプリの作成に入る。
今回は、ラベルの配置や内容の変更を通して、コントロール(アプリの部品のようなものと思うがよい)の配置やプロパティについて学んでいくことにする。
しっかりついてくるように。

deshi.gif
はいっ。師匠のほうこそ、年なんですから無理しないでくださいね。

sisyo.gif
わしはまだ若い、と言っておろうが。 この馬鹿弟子がああぁぁぁぁっっ!!(飛び蹴り)



【 ラベルを配置しよう! 】

sisyo.gif
さて、さっそく始めていくとしようぞ。まずプロジェクトを作るわけだが、今回は『Windowsフォームアプリケーション(.Net Framework)』を選ぶぞ。

vbnet2003-01.JPG
↑これを選ぶのだ!

deshi.gif
はい。ややっ! プロジェクトが開いたら、何やらウィンドウらしきものが出てきましたよ!
もしや、これにコントロールを配置していくわけですか?

vbnet2003-02.JPG
↑これにコントロールを貼り付けていくのだ!

sisyo.gif
うむ、その通りじゃ。なお、このいわば土台となるウィンドウのことを、VB.NETではフォームという。ではさっそくこのフォームに、ラベルを貼り付けていくとしようぞ。ツールボックスと書かれているところをクリックするがよい。いろいろなコントロールのリストが出てくるはずじゃ。

vbnet2003-03.JPG
↑ここをクリックだ!

deshi.gif
おおっ!

sisyo.gif
そしたら、まずはLabelの項目を選ぶのじゃ。

vbnet2003-04.JPG
↑これを選べっ!

deshi.gif
はい。

sisyo.gif
そしたら、配置したい位置の左上でクリックし、そこからドラッグ&ドロップするのだ。
すると、その位置にラベルが貼り付けられるはずじゃぞ。

deshi.gif
おおっ、確かにっ!! さすが師匠、まだぼけてなかったんですね……いてっ。

vbnet2003-05.JPG
↑ラベルが貼り付けられた!

sisyo.gif
わしはまだ若い。さて、次はこのラベルのプロパティをいじり、テキストの内容や色を変えていくぞ!

【 プロパティをいじるのだ! 】

sisyo.gif
ではまずは、プロパティというタイトルのウィンドウを探してみよ。そのウィンドウの下にLabel1と書かれていない場合は、先ほど貼り付けたラベルをクリックしてみるのだぞ。

vbnet2003-06.JPG
↑これがプロパティのウィンドウだ!

deshi.gif
はい、ありました。何やら色々と並んでいますね。

sisyo.gif
うむ、これがラベルの持つプロパティの数々じゃ。まずはその中からTextというのを探してみるがよい。見つかったら、それを『ラベルじゃ!』とでも書き直すがよい。

vbnet2003-07.JPG
↑ここを書き換えるのだ!

deshi.gif
おおっ! ラベルに書かれているテキストが変わりましたよ! なるほど、Textプロパティは、ラベルの文字を表すプロパティなんですね!

vbnet2003-08.JPG
↑テキストが変わった!

sisyo.gif
うむ。では次は色を変えてみるとしよう。同じように、ForeColorというプロパティを探して、そこを……そうじゃのう。赤に変えてみよ。これは、下向きの矢印ボタンをクリックしたあと、カスタムというタブをクリックすれば、色のリストが現れるからそこから選べられるぞ。

deshi.gif
はい……おおっ! 確かに色が赤になりました!

vbnet2003-09.JPG
↑今度は色が!

sisyo.gif
さらに、大きさも変えてみようかのう。Fontプロパティを探し、そこの+と書かれたボタンを押すのじゃ。すると、さらにリストが開くので、そこのSizeを弄ればいいぞ。今回は16を設定してみよう。

deshi.gif
ほんとだ! プロパティを変えることで、そのコントロールの姿を色々変えられるんですね!

vbnet2003-10.JPG
↑大きさも変わったぞ!

sisyo.gif
うむ。ということで今日はこれまで……の前にもう一つ。このフォームの大きさを変えたい、ということもあるじゃろう。
その時は、このフォームの右下の小さい四角(ハンドルという)をクリックして、ドラッグ&ドロップすれば、自在に変えることができるぞ。

vbnet2003-11.JPG
↑フォームの大きさを変えたいときは、ここをクリック!

deshi.gif
はいっ!

sisyo.gif
それでは改めて、今日はこれまで。次回は、ピクチャーボックスについて学んでいくぞ。
今回のことを忘れぬように、しっかり復習しておくように。

deshi.gif
師匠も忘れっぽいですから気を付けて……

sisyo.gif
はあっ!!(飛び蹴り



※次の更新は、フリーゲームレビューの予定です。お楽しみに!

posted by 裏編 at 09:42| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする

2020年02月13日

師匠のVB.NETどたばた塾~第6回

sisyo.gif
師匠T:さて。前回はちょっとしたミスで、予定が変わってしまったが、今回は改めてクラスについて説明していくことにするぞ。

deshi.gif
弟子D:師匠ももう年……いてっ。

sisyo.gif
余計なことは言わんでいい。ではさっそくはじめていくとするぞ!

【 クラスとは? 】

sisyo.gif
さて。まずはクラスとは何かについてじゃ。これについては、以前のJava道場で説明したが、改めて復習しておくとしようぞ。弟子よ、クラスとはなんぞや?

deshi.gif
あ、はい。オブジェクトというものの設計図のようなもので、それをもとにして作られたのがインスタンスですよね。ザクに例えるなら、ザクの設計図がクラスで、作られたザクがインスタンスと。

sisyo.gif
うむ、その通りじゃ。さらに、クラスに別の機能を付与して新しいクラスを作る『継承』ができるのも、クラスの特徴であったな。

deshi.gif
そうでしたっけ。

sisyo.gif
お主の記憶容量は、数十年前のPC並みしかないのか? こほん。では次の項目では、クラスの作り方、そしてインスタンスの作り方について説明していくぞ!

【 クラスの作り方、そしてインスタンスの作り方じゃ! 】

sisyo.gif
さて。VB.NETでは、クラスを作るにはちょっとした手間をかけなくてはならぬ。まずは、『プロジェクト』メニューから、『クラスの追加』を選ぶ。

deshi.gif
ふむふむ。

sisyo.gif
すると、次のウィンドウが開くので、クラス名を入力してOKを押す。これだけでOKじゃ。

vb0202-i01.png

deshi.gif
なるほど!

sisyo.gif
なお、この方法で作るだけではなく、モジュール内にコードを書いて作ることもできるぞ。その場合は次のように宣言部分を書く。

--------------------
Class クラス名
End Class
--------------------

deshi.gif
~の部分に動作などのコードを書くわけですね。もしかして、このクラスをどこからでも使えるようにしたい場合には、Classの前にPublicをつけるのですか?

sisyo.gif
おぉ、よくぞそれに気づいたのう。その通りじゃ。さすが我が弟子。

deshi.gif
俺だってバカなままじゃありませんよ!

sisyo.gif
ほほう。それでは、クラスのメソッドやセッター・ゲッターを作りたい時にはどうすればいいのか述べてみよ。

deshi.gif
え? えーと、えーと……。

sisyo.gif
メソッドを作りたい場合には、そのクラスにサブルーチンを作ってやればよいのだ。ゲッターを作りたいなら関数を作ってやればよい。セッターを作りたいなら、やはりサブルーチンを作ればよいぞ。

--------------------
Class Sisyo
   Sub Method()←メソッドになる
   ~
   End Sub

   Public Function Getter() As Integer←ゲッターになる
   ~
   End Function

   Public Sub Setter(p As Integer)←セッターになる
   ~
   End Sub
End Class
--------------------


sisyo.gif
なお注意点として、上の例のようにゲッター、セッターにする関数・サブルーチンを作るときにはPublicをつけること。さもないと、外から使うことができずに、ゲッター・セッターの役割をすることができなくなってしまうからの。

deshi.gif
はい。

sisyo.gif
そしてそれと同じようにメソッドも、外から使えるメソッドにする場合には、Publicをつけることを忘れずに。

deshi.gif
わかりました、師匠!

sisyo.gif
うむ。さて、コンストラクタを作る場合には、次のように宣言する。

--------------------
Public Sub New(~)
End Sub
--------------------

deshi.gif
Newという名のサブルーチンを、Publicをつけて作るわけですね。

sisyo.gif
その通りじゃ。さて、いよいよインスタンスを作る方法じゃが、まずは変数の宣言からじゃ。
といっても難しいことはない。ほれ、この通り。

-------------------------
Dim 変数名 As クラス名

例:
Dim s1 As Sisyo
-------------------------

sisyo.gif
どこからでも使えるパブリック変数にする場合には、DimをPublicに変えればよい。さて、そしてインスタンス化じゃ。

---------------------------
変数名 = New クラス名(~)

例:
s1 = new Sisyo()
---------------------------

deshi.gif
なるほど。Newをつけた上で変数に代入してやればいいんですね。

sisyo.gif
うむ、そのとおりじゃ。それほど難しくはなかろう。では次は継承についてやっていくとするぞ!

【 継承 】

sisyo.gif
さて、次は継承についてじゃ。Javaでは継承のさいには、extendsをつけて宣言しておったな。

deshi.gif
はい。

sisyo.gif
VB.NETも、それと似たようなものじゃ。このように、Class文の下にInheritsをつけて宣言する。

---------------------------
Class Deshi
   Inherits Sisyo
End Class
---------------------------

deshi.gif
なるほど。そういえば継承と聞いて、オーバーライドやオーバーロードのことを思い出したのですが、VB.NETでもそれらは可能なのでしょうか?

sisyo.gif
うむ。可能じゃぞ。まずはオーバーライドからじゃ。まず、オーバーライドするにあたっては、元となるクラス(これを基底クラスと呼ぶぞ)の該当するメソッド・関数をOverridableで宣言する必要がある。

---------------------------
Class ●●●
   Public Overridable Sub ▲▲▲←これでこのメソッドはオーバーライドできるようになる
   ~
   End Sub
End Class
---------------------------

sisyo.gif
このように宣言したメソッド・関数は、作られたクラス(これを派生クラスという)側で、Overridesをつけて宣言することで、オーバーライドすることができるようになる。

---------------------------
Class XXX
   Inherits ●●●

   Public Overrides Sub ▲▲▲←オーバーライドしたメソッド
   ~
   End Sub
End Class
---------------------------

deshi.gif
なるほど。基底クラスの内容を実行させるにはどうすれば?

sisyo.gif
うむ。その時は、MyBase.メソッド名を実行させればよい。なお、通常はOverridesをつけると、これが自動的に追加されるので、それほど意識する必要はないぞ。

---------------------------
Class XXX
   Inherits ●●●

   Public Overrides Sub ▲▲▲
      MyBase.▲▲▲()←基底クラスの▲▲▲メソッドの内容を実行する
      ~
   End Sub

End Class
---------------------------

sisyo.gif

さて、次はオーバーロードじゃ。こちらも難しいことはない。
そのメソッドや関数を、Overloadsをつけて宣言するだけじゃ。

---------------------------

Class AAA

   Public Overloads Sub BBB(kin As Integer)←オーバーロードしたメソッド1
   ~
   End Sub

   Public Overloads Sub BBB(kin As Integer, zei As Integer)←オーバーロードしたメソッド2
   ~
   End Sub
End Class
---------------------------

deshi.gif
なるほど!

sisyo.gif
うむ。さて、基本編はこれでおしまいじゃ。次回からはさらに発展して、ウィンドウアプリの作成からやっていくとするぞ!
これまでの復習と、これからすることの予習を忘れてはならぬ!



※次の更新は、『レトロゲーレビュー』の予定です。お楽しみに!
posted by 裏編 at 09:51| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする

2020年01月16日

師匠のVB.NETどたばた塾~第5回

sisyo.gif
師匠T:さて、今回はいきなり謝らねばならぬことがある。

deshi.gif
弟子D:

sisyo.gif
今回は『クラスについて話す』と予告しておいたが、その前に、VB.NETのプログラミングに置いて欠かせぬ要素『関数とサブルーチン』について話すのを忘れておった。なので、クラスについては次回に回し、今回はその関数とサブプロシージャについて説明することとする。了承していただきたい、すまぬ。

deshi.gif
師匠が謝るなんて珍しい。

sisyo.gif
おぬしも一度、謝ってみるか?

deshi.gif
謹んでご遠慮申し上げます。

sisyo.gif
……。
こほん、それでは始めていくとしようぞ。

【まずは概要からじゃ!】

sisyo.gif
まずは、サブルーチンからじゃな。とはいっても、関数もサブルーチンも基本は同じ。特定の処理をまとめたものじゃ。例えば、VB.NETに基本で備わっているVal関数は、文字を数値に変換するための処理をまとめたもの、という具合じゃな。

deshi.gif
確か、値(戻り値)が返されるものが関数、でしたっけ。

sisyo.gif
うむ。その通りじゃ。対して、戻り値が返されぬものをサブルーチンと区別しておる。そしてそれらを総称して、プロシージャと呼ぶのが一般的じゃ。
詳しくは、以下の図を見るべし。

プロシージャ-+--関数(戻り値が返されるもの)
       |
       +--サブルーチン(戻り値が返されないもの)

deshi.gif
ふむふむ。

sisyo.gif
そして、このプロシージャを使うことによって、メインの処理をすっきりさせることができる。だらだらと処理を書き連ねるより、その関数やサブルーチンの名前だけを書けば済むことを想えば、一目瞭然じゃろ?

deshi.gif
そうですね。

sisyo.gif
そして、プロシージャの利点はそれだけではないぞ。汎用性のあるプロシージャを一つ作っておけば、それをプログラムのあちこちで使いまわすことができる。これは、プログラミングをするうえで、大いに助けになるであろう。

deshi.gif
はい。

sisyo.gif
それでは、いよいよプロシージャの作り方、使い方についてレクチャーしていくぞ!

【サブルーチンを作るのじゃ!】

sisyo.gif
さて。まずはサブルーチンの作り方について説明していくぞ。といっても簡単。

[Public] Sub サブルーチン名([引数1 As 引数1の型, ……])

End Sub

sisyo.gif
このSub~とEnd Subの間に、目的の処理を書けばいいだけじゃ。なお、[ ]で囲まれている部分は、省略できることを表しているぞ。例としてはこんなところじゃ。

Sub Sisyo1(A As Integer)
End Sub
-----
Sub Sisyo2()
End Sub

deshi.gif
引数というのは、確か呼び出し先から渡された数が入る変数みたいなもののことですよね。

sisyo.gif
うむ。その通り。例えば……

Sub Sisyo3(hiki1 As Integer)
End Sub

sisyo.gif
というサブルーチンがあったとして……

Sisyo3(5)

sisyo.gif
呼び出し元のほうで上のように呼んでやると、hiki1に5が入る、というわけじゃ。なお、引数を入れる変数として宣言したものは、Dim文で宣言することはできぬ。ここには気を付けること。

deshi.gif
はい。それで、頭にPublicとつけることができるようですが、これをつけるとどうなるのですか?

sisyo.gif
うむ。これをつけると、そのサブルーチンは、そのプロジェクト(プログラム全体のようなものと思うがよい)のどこからでも呼び出すことができるようになるのじゃ。

deshi.gif
ふむふむ。

sisyo.gif
今回は、Module1という一つのソースファイル内で完結しておるから、Publicを使う機会はあまりないが、この先、複数のソースファイルで構成されるプログラムを組むさいには必要になってくる。覚えておくようにな。

deshi.gif
はい!

sisyo.gif
なお、引数についてじゃが、複数の引数がある場合は、『引数名 As 引数の型』をコンマで区切る。こんなようにの。

Sub Sisyo4(hiki1 As Integer, hiki2 As Integer)

deshi.gif
ふむふむ。

sisyo.gif
また、引数の指定にはちょっと難しい使い方がある。それがOptionalじゃ。

deshi.gif
おぷしょなる?

sisyo.gif
うむ。Optionalをつけた引数は、省略することができるようになるのじゃ。Optionalを使う時は、このように書く。

Optional 引数名 As 引数の型=初期値
例:Sub Sisyo4a(Optional hiki1 As Integer=0)

sisyo.gif
例の場合、引数を渡さずに呼び出した場合は、hiki1には0が入るのじゃ。

deshi.gif
なるほど、これは便利ですね!

sisyo.gif
そうじゃろう。さて、呼び方だが、とても簡単。こう書けばいいだけじゃ。

サブルーチン名([引数1, ~])

例:
Sisyo5()
Sisyo6(5)
Sisyo7(4, 2)

sisyo.gif
こちらも、引数が複数ある場合は、コンマで区切って書く。また、引数を必要としないサブルーチンの場合は引数を書かなくてよい、というか書いてはならぬ。無理に書くと、ビルドエラーが起こるので気を付けるようにの。

deshi.gif
はい!

sisyo.gif
では次は、関数について説明していくことにするぞ!

【関数を作るぜ!】

sisyo.gif
さて、関数とはプロシージャの中でも、呼び出し元に値を返すものだと話したな。

deshi.gif
はい!

sisyo.gif
では、それを踏まえたうえで、関数の宣言について教えよう。これじゃ!

[Public] Function 関数名([引数1 As 引数1の型, ……]) As 戻り値の型

End Function

sisyo.gif
Publicや引数については、サブルーチンと同じだから、ここでは割愛するぞ。

deshi.gif
Subではなく、Functionを使うところと、戻り値の型をつけるところがサブルーチンと違うんですね。

sisyo.gif
うむ、その通り。さて、戻り値の返し方だが、二つの方法がある。まず一つは、このように書くこと。

関数名=戻り値
例:Sisyo8=5

sisyo.gif
そしてもう一つは、Return文を使うことじゃ。

Return 戻り値
例:Return 5

sisyo.gif
ここで注意点を一つ。先の引数の注意点と同じく、関数の中では、関数と同じ変数をDim文で宣言することはできぬ。宣言しようとするとビルドエラーが出るので気を付けることじゃ。

deshi.gif
はい。

sisyo.gif
さて使い方じゃが、このように作られた関数は、VB.NETに標準で供えられておる関数と同じように使うことができる。つまり、ただ変数に入れるだけではなく、式の一部として使ったり、表示させたりできるわけじゃな。

例:
a = Sisyo9(5, 2)
b = Sisyo10(1000, 0.3) + 1000
Console.WriteLine(Str(Sisyo11(4, 2))

deshi.gif
なるほど、わかりました、師匠。

sisyo.gif
プロシージャをうまく使えば、プログラミングがとても楽になる。精進することじゃ。
さて、次回は改めて、クラスについて説明していく。予習、復習を忘れてはならぬぞ!

deshi.gif
でも、師匠が学生時代のころは……?

sisyo.gif
はあっ!!(飛び蹴り

==========
※次の更新は、『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!

posted by 裏編 at 12:43| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする