• 検索結果がありません。

回文作成支援プログラム

N/A
N/A
Protected

Academic year: 2021

シェア "回文作成支援プログラム"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラムの概要

掲示文を入力し、表示開始ボタンをクリック すると、入力した掲示文が、上部の表示域に、 右から左へ流れる様に表示される。 亦、表示停止ボタンをクリックすると、掲示 文の動きが停止する。 終了ボタンをクリックすると、タイマーを停 止し、プログラムをメモリから消去して終了 する。

電光掲示板プログラム

VB 2005 ① □ 単純変数の宣言(Private) □ Windows フォームコントロールの利用(TextBox、Label、Button、Panel、Timer) □ プロパティの値の取得と設定(Text、Enabled) □ イベントの利用(Click、Tick) □ ステートメントの利用(End) □ 組込関数の利用(Left、Mid、Space、StrConv) □ 演算子(代入演算子=、比較演算子=、結合演算子&) □ 制御構造構文(条件分岐 If ~ Then …) 今回の課題項目 □ 変数の適用範囲(スコープ:フォームモジュールレベル) □ If文に依る条件分岐(If ~ Then … Else … End If) □ 文字列操作(文字列操作関数) □ タイマー処理(一定時間間隔でのイベントの発生) 今回の重点項目 □ 文字列の流れる方向を逆方向に仕たり、行き来したりする様にする。 □ 常にキャレットが入力文字列の末尾に在り、入力が行い易い様にする。 今回の応用項目

(2)

■ オブジェクト・プロパティ一覧 ■ コントロールの種類 プロパティ プロパティの設定値 フォーム Name keijiban Text 電光掲示板 BackColor Black FormBorderStyle Fixed3D パネル Name pnlBack BackgroundImage back.gif ラベル1 Name lblTitle AutoSize False Text 電光掲示板プログラム Font MS明朝、太字、14 ForeColor 255, 255, 192(薄黄) ラベル2 Name lblDisp AutoSize False Text 空白 Font MS明朝、太字、16 ForeColor Red BackColor Transparent ラベル3 Name lblSrc AutoSize False Text 掲示文 Font MS明朝、太字、14 ForeColor 255, 255, 192(薄黄) タイマー Name tmrBBS Interval 500 ボタン1 パネル ラベル1 ラベル2 ラベル3 テキストボックス ボタン2 ボタン3 タイマー

(3)

コントロールの種類 プロパティ プロパティの設定値 テキストボックス Name txtSrc Text 空白 Font MS明朝、標準、14 ImeMode Hiragana BorderStyle FixedSingle ボタン1 Name btnStart Text 表示開始 Font MS明朝、太字、12 BackColor 255, 255, 192(薄黄) ボタン2 Name btnStop Text 表示停止 Font MS明朝、太字、12 BackColor 255, 255, 192(薄黄) ボタン3 Name btnFinish Text 終了 Font MS明朝、太字、12 BackColor 255, 255, 192(薄黄) ラベル テキストを表示するコントロール。此のテキストは、ユーザーが直接入力したり変更したりす る事は出来ない。 テキストボックス テキストの入力や表示を行うコントロール。此のテキストボックスは、ユーザーが直接入力し たり変更したりする事が出来る。 ボタン ユーザーが選択したコマンド(命令)や操作を実行するコントロール。OKボタンや実行ボタ ン等、処理の開始や中断・終了の合図に用いられ、最も良く利用されるコントロールで有る。 パネル 他のコントロールをグループ化する為のコンテナと成るコントロールで有る。通常は、機能別 にフォームを細分化する為に使用する。亦、BackgroundImage プロパティを設定すると、コ ントロールの背景にイメージが表示される。 タイマー 一定の時間間隔でイベントが発生する様にするコントロール。一定時間毎にプログラムを実行 したい時に使用する。此のコントロールは、実行時には表示されない。 例えば、フォームの StartPosition プロパティを、規定値で有る WindowsDefaultLocation から CenterScreen に変更すると、実行時に、フォームがディスプレイの中央に表示される。此の様に色々 なプロパティを、変更して観て、其の効果を、確認して欲しい。此の際、元の値を覚えて置くと、 仮令、予期せぬ状態に成った場合でも、元の値に戻せば良い丈なので、安心して、色々と試して観 て欲しい。

(4)

■ プログラムリスト ■

Public Class keijiban

Private S As String

' ボタン(表示開始)がクリックされた時の処理

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnStart.Click

If Not txtSrc.Text = "" Then

' テキストボックスの内容を変数 S に代入

S = StrConv(Space(10), VbStrConv.Wide) & txtSrc.Text ' 文章(変数 S の値)をラベルに表示 lblDisp.Text = S ' タイマの有効化 tmrBBS.Enabled = True End If End Sub ' タイマが一定間隔で行う処理

Private Sub tmrBBS_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles tmrBBS.Tick

' 先頭の1文字を末尾に移動

S = Mid( S, 2 ) & Microsoft.VisualBasic.Left( S, 1 ) ' 文章(変数 S の値)をラベルに表示

lblDisp.Text = S End Sub

' ボタン(表示停止)がクリックされた時の処理

Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnStop.Click

If tmrBBS.Enabled = True Then ' タイマの無効化 tmrBBS.Enabled = False End If End Sub ' ボタン(終了)がクリックされた時の処理

Private Sub btnFinish_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnFinish.Click

If tmrBBS.Enabled = True Then ' タイマの無効化 tmrBBS.Enabled = False End If ' 終了 End End Sub End Class 此処で宣言した変数は同じフォー ムクラス内の総てのサブプロシー ジャで値の参照と設定を行う事が 出来る。 此の場合のイコール(=)記号は、 代入演算子で有り、右辺の値を左 辺に代入する働きをする。 条件判定に、比較演算子を使用し て居る。 A = B : AとBは等しい 猶、此処ではNot を用いて否定し て居る。 条件判定に、比較演算子を使用し て居る。 A = B : AはBと等しい 文字列を左回転させるには、文字 列の2文字目から最後迄の部分の 後ろに左端の1文字を結合する。 ラベルの Text プロパティに文字 列を代入する事に依り、ラベルの 表示文字列を変更する。 アプリケーションを終了する場 合、使用したタイマーは無効にし て終了する事が望ましい。 End ステートメントは、アプリケ ーションを強制的に終了する手段 を提供する。

(5)

変数(variable)とは 変数とは、プログラムの実行中に変更出来る特定の型のデータを入れる名前付きの場所を謂 う。通常、適切な名前を付けて宣言し、数値、文字列、其他のデータを代入(格納)したり 演算に使用する。 コンピュータのメモリ(記憶装置)は、夫々の場所を示すアドレス(番地)が割り当てられ て居る。アドレスは、実装されたメモリ空間の特定の場所を指し示す数値で有り、メモリに 記憶(保存)されたデータは、其のアドレスに依り参照される。 併し、BASIC等の高級言語では、データの記憶場所と変数名が自動的に関連付けられる 為、データが記憶されたアドレスを覚えて置く必要は無く、データを、其の内容を連想し易 い名前で参照する事が出来る。 変数とは、データを入れて置く為の箱の様な物で、其の箱を区別する為に、内容が解り易い 名前(変数名)を付けて居ると考えると良い。 代入文 左辺の変数やオブジェクトのプロパティに、右辺の式の値を代入する。 下記の様な式を代入文と呼ぶ。此処で使用して居る=(イコール)は、数学の等号の様に左 辺と右辺が等しいと謂う意味では無く、右辺の計算式の値を左辺の変数等に代入すると謂う 意味で有る。 X=10 = 10 A=X+Y = + 此の代入文の右辺には数値、変数、式を記述する事が出来るが、右辺には1個の変数、又は オブジェクトのプロパティしか記述する事が出来ない。例えば、X+Y=Aと謂う様な記述 は出来ない。 定 義 解 説 機 能 解 説 X A X 10 Y 20 左辺の値(10)を代入 左辺の値(10+20)を代入

(6)

If 文に依る条件分岐 論理式の条件判断を行うステートメント 単一行形式① If 論理式 Then 論理式が真の場合の処理 単一行形式② If 論理式 Then 論理式が真の場合の処理 Else 論理式が偽の場合の処理 ブロック形式① If 論理式 Then 論理式が真の場合の処理 End If ブロック形式② If 論理式 Then 論理式が真の場合の処理 Else 論理式が偽の場合の処理 End If ブロック形式③ If 論理式1 Then 論理式1が真の場合の処理 ElseIf 論理式2 Then 論理式2が真の場合の処理 Else 論理式1と論理式2が偽の場合の処理 End If 論理式の条件に依りプログラムの実行を制御する。即ち、論理式が真(0以外)ならば Then 以下の処理が実行され、偽(0)ならばElse 以下の処理が実行される。但し、Else 節が無 い場合には、End If の次のコードが実行される。 通常、論理式(条件式)には比較式を指定するが、数値として評価出来る式で有ればどんな式でも指定 する事が出来る。論理式の値は、真(True)と偽(False)の孰れかとして評価され、数値の0は偽に 0以外の数値は真に評価される。 単一行形式は、短く簡単な条件判断を行う時に使用する。亦、ブロック形式は、単一行形式の構文に比 べ、より構造化された柔軟な記述が出来、コードの読み易さや保守性が向上し、デバッグも行い易く成 る。 ブロック形式かどうかを判断する場合、Then の後に何が続くかが調べらる。Then と同じ行の後ろの部 分にコメント以外の記述が有ると、単一行形式として扱われる。

Else 節と ElseIf 節はどちらも必要に応じて定義する。亦、ブロック形式では、ElseIf 節は幾つ指定し ても構わない。但し、Else 節の後ろには ElseIf 節を指定する事は出来ない。亦、1つの条件式の値に 依り、複数の処理の孰れかを実行させるには、Select Case ステートメントの方が適して居る。 機 能 書 式 解 説 論理式 真の場合の処理 偽の場合の処理 真(True) 偽(False)

(7)

Left 関数に依る文字列の取得 文字列の左端から指定した文字数分の文字列を返す関数 Left(引数1, 引数2) 引数1で指定した文字列の左端から引数2で指定した文字数を取り出した文字列を返す。 引数1には、文字列、又は、文字列を格納した変数を指定し、必ず指定する。 引数2には、取り出す文字列の文字数を指定し、必ず指定する。 Right 関数に依る文字列の取得 文字列の右端から指定した文字数分の文字列を返す関数 Right(引数1, 引数2) 引数1で指定した文字列の右端から引数2で指定した文字数を取り出した文字列を返す。 引数1には、文字列、又は、文字列を格納した変数を指定し、必ず指定する。 引数2には、取り出す文字列の文字数を指定し、必ず指定する。 Mid 関数に依る文字列の取得 文字列から指定した文字数分の文字列を返す関数 Mid(引数1, 引数2, 引数3) 引数1で指定した文字列の引数2で指定した位置から引数3で指定した文字数を取り出し た文字列を返す。 引数1には、文字列、又は、文字列を格納した変数を指定し、必ず指定する。 引数2には、文字列を取り出す位置を先頭を1とした位置で指定し、必ず指定する。 引数3には、取り出す文字列の文字数を指定し、省略する事が出来る(省略時は文字列の最後迄)。 Space 関数に依る文字列の生成 指定した数の空白文字から成る文字列を返す関数 Space(引数1) 引数1で指定した数の空白文字を並べた文字列を返す。 引数1には、文字を幾つ並べるかを指定し、必ず指定する。 Space 関数は、出力の書式指定や固定長文字列のデータのクリアを行うのに便利で有る。 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説 上記の関数は、Microsoft.VisualBasic 名前空間に属し、例えば、フォーム、又は、Left プロパティを持つクラスで 使用される場合、名前の衝突を避ける為、Microsoft.VisualBasic.Left の様に関数を完全修飾する必要が有る。 亦、此等の関数は、孰れもString 型の値を返す為、旧バージョン(6.0)とは異なり、文字列型の型記号($)を付 記して戻り値の型を明示的に指定する必要は無い。但し、従来通りの型記号を付記した記述も、問題無く動作する。

(8)

Dispose メソッドに依るオブジェクトの破棄 コンポーネントに依り使用されて居るリソースを開放するメソッド Object.Dispose( ) フォーム、又は、オブジェクトをメモリから消去する。 プログラムを終了する場合や、使用中のメモリを他の用途に使う場合や、プロパティを元の値にリセッ トする場合等に使用される。 フォームをメモリからアンロードする時には、表示されて居る構成要素だけがアンロードされ、其のフ ォームモジュールのコードはメモリに保持されるが、総てのフォームがアンロードされ、実行するコー ドが無く成れば、其の時点で、イベントドリブンのアプリケーションは終了する。 猶、フォームの『閉じる』ボタンをクリックしたり、フォームのClose メソッドを使用すると、自動的 にDispose メソッドが呼び出され、其のフォームのリソースは開放される。但し、ShowDialog メソッ ドに依りモーダル表示されたフォームでは、フォームの『閉じる』ボタンをクリックしたり、フォーム のClose メソッドを使用しても、自動的に Dispose メソッドが呼び出される事は無い。モーダル表示の フォームのリソースを開放する為には、明示的にDispose メソッドを使用する。 End ステートメントに依るプログラムの終了 プログラムの実行を終了させるステートメント End 実行中のアプリケーションを直ちに終了させる。 End ステートメントより後のコードは実行されず、亦、End ステートメントを実行した後はイベントも 発生しない。 プログラムの通常の終了の場合には、総てのフォームをアンロードする必要が有るが、End ステートメ ントは、プログラムを強制的に停止させる手段を提供して居る。 機 能 書 式 解 説 機 能 書 式 解 説 算術演算子 比較演算子 論理演算子 1.^ 冪乗 1.= 等しい 1.Not 否定 2.- 負数 2.<> 等しくない 2.And 論理積 3.*、/ 乗算と除算 3.< より小さい 3.Or 論理和 4.¥ 整数除算 4.> より大きい 4.Xor 排他的論理和 5.Mod 剰余 5.<= 以下 5.Eqv 同値 6.+、- 加算と減算 6.>= 以上 6.Imp 包合 算術演算子と論理演算子では、複数の演算子が使用されて居る場合には、頭に付けた番号の順序で 演算が行われる(上に書かれて居る演算子程優先順位が高い)。

(9)

基本的なデータ型 Visual basic 2005 の基本的なデータ型を、下記に示す。 データ型 バイト数 値の範囲 Byte 1 0 ~ 255 SByte 1 ※1 -128 ~ 127 Short 2 -32,768 ~ 32,767 UShort 2 ※1 0 ~ 65,535 Integer 4 -2,147,483,648 ~ 2,147,483,647 UInteger 4 ※1 0 ~ 4,294,967,295 Long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ULong 8 ※1 0 ~ 18,446,744,073,709,551,615 Decimal 16 0 ~ +/-79,228,162,514,264,337,593,543,950,335(小数点無し) 0 ~ +/-7.9228162514264337593543950335(小数点以下 28 桁) Single 4 1.401298E-45 ~ 3.4028235E+38(正の値)

-3.4028235E+38 ~ -1.401298E-45(負の値)

Double 8 4.94065645841246544E-324 ~ 1.79769313486231570E+308(正の値) -1.79769313486231570E+308 ~ -4.94065645841246544E-324(負の値) Char 2 0 ~ 65535(1 文字を Unicode で格納)

String - ※2 0 個 ~ 約 20 億個の Unicode 文字(可変長) Boolean - ※2 True 又は False

DateTime 8 0001 年 1 月 1 日 0:00:00 AM ~ 9999 年 12 月 31 日 11:59:59 PM Object - ※3 オブジェクト型の変数には任意の型を格納可能 ※1 Visual Basic 2005 から追加 ※2 実装するプラットフォームに依存 ※3 32 ビットプラットフォームでは 4 バイト、32 ビットプラットフォームでは 8 バイト 整数型は、小数部分の無い数丈を表すデータ型で、下記の物が有る。

符号付き整数型は、SByte 型、Short 型、Integer 型、Long 型で有る。小数値ではなく、整数が常に変 数に格納されて居る場合、此等の型の孰れかと仕て変数を宣言する。

符号無し整数型は、Byte 型、UShort 型、UInteger 型、ULong 型で有る。変数にバイナリデータや状 態が不明のデータが含まれる場合は、此等の型の孰れかと仕て変数を宣言する。

非整数型のデータ型は、整数部分と小数部分の両方を含む数値を表す型で、下記の物が有る。

非整数型の数値データ型は、Decimal 型(128 ビットの固定小数点)、Single 型(32 ビットの単精度浮 動小数点型)、Double 型(64 ビットの倍精度浮動小数点数型)で有る。此等の型は、総て符号付きで有 る。変数に小数が含まれる可能性が有る場合には、此等の型の孰れかと仕て変数を宣言する。

亦、Visual Basic には、出力する文字や表示する文字を処理する文字データ型が用意されて居る。Char 型(文字型)は1 文字、String 型(文字列型)は不特定数の文字を格納する。孰れの型も Unicode 文 字を処理する。

常に1 文字しか格納しない変数の場合は Char 型を、格納する文字数が不定の場合は String 型で変数を 宣言する。

(10)

.NET Framework 対応 概要

初めに

Visual Basic は、バージョン 7(Visual Basic.NET)以降、共通言語ランタイムと.NET Framework クラスライブラリと謂う2 個の主要なコンポーネントから成る.NET Framework と呼ばれるシステム 上で動作して居る(詳細に付いては、ヘルプの「.NET Framework 概念の概要」を参照され度い)。

併し乍、其れ以前のVisual Basic 6.0 は、長年に亘り使用されて来た安定したバージョンで有り、此の バージョンで作成されたアプリケーションは、現在も猶、多数使用されて居るのが現状で有る。

亦、Microsoft Office で使用されるプログラミング言語で有る VBA(Visual Basic for Application)は、 Visual Basic 6.0 をベースに仕た言語で有り、此れも亦、今猶、使用されて居る。 勿論、此等は、孰れ、時代に似わなく成り、消えて行く事に成るが、今は未だ、レガシと仕て、切り捨 てる時期では無い。 特に、プロフェッショナルなプログラマは、単に、現時点で動作するアプリケーションを新規に作成す る丈で無く、過去の有用なアプリケーションをリメイクする必要も生じて来る。 其の為、此のテキストでは、リメイク作業等に有用と思われるVisual Basic 6.0 のステートメントや関 数を、出来る限り、使用して居る。 併し乍、新規に作成するアプリケーションでは、.NET Framework の機能を使用したプログラミングを 行う事が望ましい事は、謂う迄も無い事で有る。 其処で、一度、テキスト通りにプログラムを作成し、プログラムの流れ(フロー)と、各コードの意味 する処を理解した上で、.NET Framework の許でのコーディングも、併せて行って欲しい。 .NET Framework の許でのコーディングは、テキスト通りに作成したプログラムを直接書 き直すのではなく、フォルダをコピーし、リネームした上で、書き直す事を推奨する(一 度作成したプログラムに、追加・変更を行う場合、コピーした物で作業を行う事は重要な 事で、此れを、バージョン管理と謂う)。 同時に、新旧2 種の言語を学ぶ事は、大変な事だとは思うが、プロフェッショナルなプログラマを目指 す者には、必要な事で有り、将来、必ず役に立つと信じて居る。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 次頁以降に、変更部分を記すが、最初は、記述通りに、変更を加え、記述法の相違点を充分に理解する 様に努め、馴れて来るに従い、出来る限り、変更部分の記述を観ないで、変更を加える様に仕て欲しい。

(11)

.NET Framework 対応

■ 空白文字の追加

従来の記述法

S = StrConv(Space(10), VbStrConv.Wide) & txtSrc.Text

.NET Framework の記述法

S = New String(" "c, 10) & txtSrc.Text

猶、上記の.NET Framework の記述法に於いて、二重引用符( “ )で指定する文字は、全角の空白文 字(スペース)で有る。

亦、.NET Framework では、StrConv 関数の様に、半角文字を全角文字に変換したり、全角文字を半 角文字に変換する手段は提供されて居ない(此処では、特に其の必要は無いが、此の様な事を行う必要 が有る場合には、従来の関数やAPI 関数を使用する必要が有る)。

■ 部分文字列の取得

従来の記述法

S = Mid(S, 2) & Microsoft.VisualBasic.Left(S, 1)

.NET Framework の記述法

S = S.Substring(1) & S.Substring(0, 1)

.NET Framework では、従来の Left 関数の様に、左端から文字列を取得する手段や、Right 関数の様 に、右端から文字列を取得する手段は提供されて居らず、Mid 関数の様に、任意位置の文字列を取得す る手段(Substring メソッド)しか提供されて居ない。

従って、Left 関数は、Substring メソッドで、簡単に代用する事が出来るが、Right 関数と同等の処理 を行うには、文字列の長さ(文字数の事)を取得するLength プロパティが不可欠と成る。 ■ アプリケーションの終了 従来の記述法 End .NET Framework の記述法 Application.Exit() 現在実行して居るアプリケーションは、Application オブジェクトで表されるので、其の Exit メソッド を用いて、アプリケーションを終了する。 注意 新しいと謂う事は、「未熟」で有ると謂う事も意味する。時代に応じて、色々と変化して行く事は 大事な事で有るが、新しい物が成熟するには、其れ成りの時間が懸かる事も忘れては成らない。 プロフェッショナルなプログラマを目指すならば、只々、新しい物に飛び付くのではなく、新旧を 熟知し、充分な検証を加えた上で、より良いプログラミングを志して欲しい。

参照

関連したドキュメント

この 文書 はコンピューターによって 英語 から 自動的 に 翻訳 されているため、 言語 が 不明瞭 になる 可能性 があります。.. このドキュメントは、 元 のドキュメントに 比 べて

2021] .さらに対応するプログラミング言語も作

The passway is… define pad opt2 of meniu prompt 'Display Printing’ ….on pad opt2 of meniu activate popup rat… define bar 3 of rat prompt 'Results Selection'…on bar 3 of rat

Bluetooth® Low Energy プロトコルスタック GUI ツールは、Microsoft Visual Studio 2012 でビルドされた C++アプリケーションです。GUI

Visual Studio 2008、または Visual Studio 2010 で開発した要素モデルを Visual Studio

本論文での分析は、叙述関係の Subject であれば、 Predicate に対して分配される ことが可能というものである。そして o

[r]

本センターは、日本財団のご支援で設置され、手話言語学の研究と、手話の普及・啓