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

回文作成支援プログラム

N/A
N/A
Protected

Academic year: 2021

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

Copied!
9
0
0

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

全文

(1)

プログラムの概要

原文を1 字入力する度に、其の回文が順次表示さ れる。即ち、『AB』と入力すると『ABA』と 表示され、『ABC』と入力すると『ABCBA』 と表示される。 亦、消去ボタンをクリックすると、原文、及び、 回文を消去する事も出来る。 終了ボタンをクリックすると、プログラムをメモ リから消去して終了する。

回文作成支援プログラム

C# 2005 ② □ 単純変数の宣言(データ型 変数名;) □ Windows フォームコントロールの利用(TextBox、Label、Button、PictureBox) □ プロパティの値の取得と設定(Text) □ イベントの利用(Click、TextChanged) □ メソッドの利用(Focus、Close、Substring) □ プロパティの利用(Length) □ アプリケーションの終了(Application.Exit) □ 演算子(代入演算子、比較演算子、結合演算子) □ 制御構造構文(条件分岐、ループ処理) 今回の課題項目 □ 変数の適用範囲(スコープ:サブプロシージャレベル) □ if 文に依る条件分岐( if ( ~ ) { … } else { … } )

□ for 文に依るループ処理( for (counter=start; condition; increment ) { … } ) □ 文字列操作(Length プロパティ、Substring メソッド) 今回の重点項目 □ 文字列の任意部分を入れ替えたりする等の機能を追加する。 □ 常にキャレットが入力文字列の末尾に在り、入力が行い易い様にする。 □ 文字列を右回転させたり、左回転させたり、反転させたり出来る様にする。 今回の応用項目

(2)

■ オブジェクト・プロパティ一覧 ■ コントロールの種類 プロパティ プロパティの設定値 フォーム Name kaibun Text 回文作成支援 StartPosition CenterScreen ラベル1 Name lblTitle Text、Font 回文作成支援(MS明朝、太字、18) ラベル2 Name lblSrc Text、Font 原文(MS明朝、太字、12) ラベル3 Name lblDest Text、Font 回文(MS明朝、太字、12) テキストボックス1 Name txtSrc Text、Font 空白(MS明朝、太字、12) ImeMode hiragana テキストボックス2 Name txtDest BackColor White Text、Font 空白(MS明朝、太字、12) ReadOnly True ボタン1 Name btnClear Text、Font クリア(MS明朝、太字、12) ボタン2 Name btnFinish Text、Font 終了(MS明朝、太字、12) ピクチャボックス1 Name picLogoL BackgroundImage logo1.gif BackgroundImageLyout None ピクチャボックス2 Name picLogoR BackgroundImage logo2.gif コマンドボタン2 ピクチャボックス1 ラベル1 ラベル2 ラベル3 テキスト1 コマンドボタン1 テキスト2 ピクチャボックス2

(3)

ラベル テキストを表示するコントロール。此のテキストは、ユーザーが直接入力したり変更したり する事は出来ない。 テキストボックス テキストの入力や表示を行うコントロール。此のテキストは、ユーザーが直接入力したり変 更したりする事が出来る。キャレットの移動や文字の削除等の入力に必要な機能を備えて居 る。 ボタン ユーザーが選択したコマンド(命令)や操作を実行するコントロール。OKボタンや実行ボ タン等、処理の開始や中断・終了の合図に用いられ、最も良く利用されるコントロールで有 る。ボタンが押し下げられた様に外観が変わる為、プッシュボタンとも謂う。 ピクチャボックス ビットマップ、アイコン、メタファイル、JPEGファイル、GIFファイル等の画像を表 示するコントロール。従来のバージョン(VB 6.0)の様に、描画メソッドを用いて描画する 事や、内部に他のコントロールを配置してコンテナと仕て使用する事はは出来ない。 Text プロパティ 通常、Windows フォームコントロールは、コントロールの主要な機能に関連したテキストを 表示する。例えば、Button コントロールは通常、ボタンがクリックされた時に実行されるア クションを示すキャプションを表示する。総てのコントロールに付いて、Text プロパティを 使用してテキストを設定したり取得したりする事が出来る。亦、Font プロパティを使用して フォントを変更する事も出来る。 StartPosition プロパティ 此のプロパティを使用すると、実行時にフォームを表示する時の開始位置を設定する事が出来 る。フォームは、指定した位置に表示する事も、Windows で指定されて居る既定の位置に表 示する事も出来る。フォームの表示位置と仕て、画面の中央を指定する事や、マルチドキュメ ントインターフェイス(MDI)子フォームの場合は、親フォームの中央を指定する事も出来 る。 ImeMode プロパティ

コントロールのIME(Input Method Editor)モードを取得・設定する。

BackgroundImage プロパティ

コントロールに表示される背景イメージを取得・設定する。半透明の色や透過色のイメージは Windows フォームコントロールでは、背景イメージの様にはサポートされない。

(4)

■ プログラムリスト ■ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace kaibun {

public partial class kaibun : Form { public kaibun( ) { InitializeComponent( ); } // テキストボックス(原文)の内容が変化した時の処理

private void txtSrc_TextChanged( object sender, EventArgs e ) { string s, d, t; int i; s = txtSrc.Text; if ( s.Length > 0 ) { d = s; t = s.Substring( 0, s.Length – 1 ); for ( i = t.Length - 1; i >= 0; i-- ) { d += t.Substring( i, 1 ); } txtDest.Text = d; } } // ボタン(クリア)がクリックされた時の処理

private void btnClear_Click( object sender, EventArgs e ) { txtSrc.Text = ""; txtDest.Text = ""; txtSrc.Focus( ); } // ボタン(終了)がクリックされた時の処理

private void btnFinish_Click( object sender, EventArgs e ) { Application.Exit( ); } 此処で宣言した変数は宣言したサ ブプロシージャ内でしか値の参照 と設定を行う事が出来ない。 条件判定に、比較演算子を使用し て居る。 A > B : AはBより大きい イコール(=)記号は、代入演算 子で有り、右辺の値を左辺に代入 する働きをする。 テキストボックスの Text プロパ ティに文字列を代入する事に依 り、テキストボックスの表示文字 列を変更する。 ダブルコーテーションの間に何も 記述せず2個連続して記述する と、長さ0の文字列(ヌルストリ ング)を意味し、文字列の消去等 に利用する。 アプリケーションを終了する場 合、正しくプログラムをメモリか ら消去して終了する事が望まし い。 ネームスペース(名前空間)の使 用を宣言して居る。 此の部分は、エディタが、自動的 に記述して下れる。 クラスを生成する為のコンストラ クタで有る。 此の部分は、エディタが、自動的 に記述して下れる。

(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 ( 論理式 ) 論理式が真の場合の処理; 単一ステートメント形式② if ( 論理式 ) 論理式が真の場合の処理; else 論理式が偽の場合の処理; 複数ステートメント形式① if ( 論理式 ) { 論理式が真の場合の処理; } 複数ステートメント形式② if ( 論理式 ) { 論理式が真の場合の処理; } else { 論理式が偽の場合の処理; } 複数ステートメント形式③ if ( 論理式1) { 論理式1が真の場合の処理; } else if ( 論理式2 ) { 論理式2が真の場合の処理; } else { 論理式1と論理式2が偽の場合の処理; } 論理式の条件に依りプログラムの実行を制御する。即ち、論理式が真(true)ならば論理式 に続くブロックの処理が実行され、偽(false)ならば else 以下のブロックの処理が実行さ れる。但し、else 節が無い場合には、if 構文の最後の } の次のコードが実行される。 通常、論理式(条件式)には比較式を指定するが、真(true)か偽(false)の孰れかに評価出来る式で 有れば、何んな式でも指定する事が出来る。但し、論理式が、真(true)か偽(false)の孰れかに評価 されない場合は、エラーが発生する。 単一ステートメント形式は、短く簡単な条件判断を行う時に使用する。亦、複数ステートメント形式は 単一ステートメント形式の構文に比べ、より構造化された柔軟な記述が出来、コードの読み易さや保守 性が向上し、デバッグも行い易く成る。 単一ステートメント形式の場合は、コードブロックを示すブレス( { } )を省略する事が出来るが、記 述しても構わない。寧ろ、不要な混乱を避ける為に、記述する事を推奨する。

Else 節と ElseIf 節はどちらも必要に応じて定義する。亦、ブロック形式では、ElseIf 節は幾つ指定し ても構わない。但し、Else 節の後ろには ElseIf 節を指定する事は出来ない。亦、1つの条件式の値に 機 能 書 式 解 説 論理式 真の場合の処理 偽の場合の処理 真(True) 偽(False)

(7)

for 文に依るループ処理 指定した条件を満たして居る間、一連の処理を行うステートメント for ( カウンター変数 = 初期値; 継続条件; 増分 ) { 一連の処理; } for ステートメントは、ブレス( { } )に囲まれた部分に記述された一連の処理を、指定し た条件を満たして居る間、繰り返し(ループ)実行する。 総ての式(カウンター変数初期値代入式、継続条件式、増分式)は、省略する事が出来、此の場合、無 限ループと成る。 for ステートメントのループは、下記の順序で実行される。 1.カウンター変数に初期値が設定(代入)される。 2.継続条件式が評価され、結果が偽(false)の場合は、ループ内の処理は実行されずに、ループが 終了する。 3.ループ内の処理を実行する。 4.カウンター変数に増分を加味する。 5.ステップ2から4を繰り返す。 break ステートメントを使用すると、ループから強制的に抜け出す事が出来る。亦、continue ステート メントを使用すると、以降のループ内の処理を行わず、次のループに移行する事が出来る。 ループ回数が事前に解からない場合には、do ステートメント(後判定型)か while ステートメント(前 判定型)を使用する。 Control オブジェクトの Focus メソッドに依るフォーカスの移動 コントロールに入力フォーカスを設定するメソッド Object.Focus( ) コントロールにフォーカスを移動する。 コントロールが入力フォーカスを正常に受け取った場合、Focus メソッドは true を返し、其れ以外の場 合はfalse を返す。

コントロールは、ControlStyles の Selectable 値が true に設定されて居り、コントロールが別のコント ロールに格納されて居り、総ての親コントロールが表示されて有効で有る場合に、選択可能で有り、入 力フォーカスを受け取る事が出来る。 選択出来ないWindows フォームコントロールの一覧を、下記に示す。此等のコントロールから派生し たコントロールも、選択する事は出来ない。 Panel、GroupBox、PictureBox、ProgressBar、Splitter、Label、LinkLabel (コントロール内にリン クが存在しない場合) 機 能 書 式 解 説 機 能 書 式 解 説

(8)

String オブジェクトの Length プロパティに依る文字数の取得 文字列の長さを返すプロパティ

Object.Length

指定した文字列の文字数を返す。

Length プロパティは、此のインスタンス内の Char オブジェクトの数を返す。Unicode 文字の数では ない。此れは、1 つの Unicode 文字が複数の Char で表される事が有る為で有る。各々の Char ではな く各々のUnicode 文字を対象に処理を行うには、System.Globalization.StringInfo クラスを使用する。 String オブジェクトの Substring メソッドに依る文字列の取得 文字列の部分文字列を返すメソッド Object.Substring( 開始位置 ) Object.Substring( 開始位置, 文字数 ) 開始位置から始まる文字列を返す。 2種のオーバーロードが有り、開始文字丈を指定した場合は、開始文字以降の総ての文字列を返し、文 字数も指定した場合は、開始文字以降の指定した文字数の文字列を返す。 猶、開始位置は、インデックスで有り、0から始まる。 Application.Exit メソッドに依るプログラムの終了 プログラムの実行を終了させるメソッド Application.Exit( ); 総てのアプリケーションウィンドウを閉じる。 Exit メソッドは全スレッドで実行中のメッセージループを総て停止し、アプリケーションのウィンドウ を総て閉じる。 但し、Exit メソッドは、フォーム毎に FormClosing イベントを発生させるが、イベントがキャンセル されると、此のメソッドは、以降の処理をせずに制御を戻す為、此のメソッドに依り、アプリケーショ ンが強制的に終了されるとは限らない。 猶、マニュアルに依ると、Application.Exit メソッドでアプリケーションを終了する場合、Form.Closed イベントとForm.Closing イベントは発生しない。此等のイベントの孰れかに実行する必要がある検証 コードが有る場合は、Exit メソッドを呼び出す前に、開いて居る各フォームに対して Form.Close メソ ッドを個別に呼び出す必要が有る、と謂う記述も有る。 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説

(9)

String オブジェクトに依る文字列操作 (参考) テキストでは使用して居ないが、VB.NET では、前述の Left$、Mid$、Right$ 等の従来からの Basic 特有の関数を使用せずに、String オブジェクトのメソッドを使用する事に依り、文字列の操作を行う事 が出来る。此れを利用すると、名前の衝突を避ける為に、Microsoft.VisualBasic.Left の様に関数を完 全修飾する必要は無く、記述が簡潔に成る。下記に、String オブジェクトの代表的な文字列操作メソッ ドを示す。詳細に付いては、ヘルプのString クラスの総てのメンバを参照され度い。

Length プロパティ(Len に相当) string S = "abcdefg"; int N;

N = S.Length → N は 7 と成る(Len(S) に相当)。

Substring メソッド(Left$、Mid$、Right$ に相当) string S = "abcdefg", T;

T = S.Substring(0, 3) → T は "abc" と成る(Left$(S, 3) 相当)。 T = S.Substring(3, 2) → T は "de" と成る(Mid$(S, 4, 2) 相当)。 T = S.Substring(3) → T は "defg" と成る(Mid$(S, 4) 相当)。 T = S.Substring(S.Length - 3) → T は "efg" と成る(Right$(S, 3) 相当)。

StartsWith メソッド(Left$ に相当) string S = "abcdefg"; bool T;

T = S.StartsWith("a") → T は true と成る(Left$(S, 1) = "a" 相当)。

EndsWith メソッド(Right$ に相当) string S = "abcdefg"; bool T;

T = S.EndsWith("¥") → T は false と成る(Right$(S, 1) = "¥" 相当)。

Insert メソッド

string S = "abcdefg", T;

T = S.Insert(2, "XYZ") → T は "abcXYZdefg" と成る。

Remove メソッド string S = "abcdefg", T;

T = S.Remove(3, 3) → T は "abcg" と成る。

Replace メソッド string S = "abcdefg", T;

参照

関連したドキュメント

SD カードが装置に挿入されている場合に表示され ます。 SD カードを取り出す場合はこの項目を選択 します。「 SD

回転に対応したアプリを表示中に本機の向きを変えると、 が表 示されます。 をタップすると、縦画面/横画面に切り替わりま

大六先生に直接質問をしたい方(ご希望は事務局で最終的に選ばせていただきます) あり なし

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

ウェブサイトは、常に新しくて魅力的な情報を発信する必要があります。今回制作した「maru 

子どもたちは、全5回のプログラムで学習したこと を思い出しながら、 「昔の人は霧ヶ峰に何をしにきてい

燃料取り出しを安全・着実に進めるための準備・作業に取り組んでいます。 【燃料取り出しに向けての主な作業】