回文作成支援プログラム

Similar documents
回文作成支援プログラム

回文作成支援プログラム

回文作成支援プログラム

回文作成支援プログラム

ルーレットプログラム

画像閲覧プログラム

回文作成支援プログラム

C#の基本

相性占いプログラム

ファイル操作

ブロック パニック

万年暦プログラム

万年暦プログラム

ICONファイルフォーマット

草競馬プログラム

相性占いプログラム

プロセス間通信

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

C#の基本2 ~プログラムの制御構造~

Userコントロール

相性占いプログラム

Prog2_12th

スライド 1

VB.NET解説

VB実用⑦ エクセル操作Ⅰ

通信対戦プログラム

3D回転体プログラム

画像閲覧プログラム

占領双六ゲーム

データアダプタ概要

NotifyIconコントロール

グラフィックス

Java講座

3D回転体プログラム

正規表現応用

占領双六ゲーム

モグラ叩きプログラム

ファイル操作-バイナリファイル

文書閲覧プログラム

インベーダープログラム

ファイル監視

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

ListViewコントロール

チャットプログラム

ブロック崩し風テニス

ウィンドウ操作 応用

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

パラパラ漫画

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

わにわにパニックプログラム

Prog2_2nd

構造体

GUIプログラムⅣ

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

テキストファイルの入出力1

Prog2_15th

データベース1

Microsoft Word - VB.doc

グラフィックス 目次

PowerPoint プレゼンテーション

Prog2_4th

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

プレポスト【問題】

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

プラグイン

データベースⅡ

Microsoft Word - VBA基礎(3).docx

VB実用Ⅲ⑩ フリーデータベースⅡ

何時何処で誰が

Microsoft Word -

PowerPoint プレゼンテーション

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

PowerPoint プレゼンテーション

64bit環境で32bitコンポーネントの利用

ExcelVBA

マルチメディア・音声

ファイル操作-インターネットキャッシュ

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

GUIプログラムⅡ

スレッド操作 タイマー

ハッシュテーブル

データベース1

チャットプログラム

sinfI2005_VBA.doc

データベースプログラミング

正規表現概要

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

基礎計算機演習 実習課題No6

Javaプログラムの実行手順

グラフィックス 目次

DAOの利用

データベースⅠ

パラパラ漫画

C 資料 電脳梁山泊烏賊塾 ファイルの入出力 C++ のバイナリファイル入出力 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する

VB実用⑧ エクセル操作Ⅱ

Microsoft PowerPoint - C_Programming(3).pptx

スロットプログラム

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

データベースⅡ

Prog1_6th

Transcription:

回文作成支援プログラム C# 2005 2 プログラムの概要 原文を 1 字入力する度に 其の回文が順次表示される 即ち AB と入力すると ABA と表示され ABC と入力すると ABCBA と表示される 亦 消去ボタンをクリックすると 原文 及び 回文を消去する事も出来る 終了ボタンをクリックすると プログラムをメモリから消去して終了する 今回の課題項目 単純変数の宣言 ( データ型変数名 ;) 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 メソッド ) 今回の応用項目 文字列の任意部分を入れ替えたりする等のを追加する 常にキャレットが入力文字列の末尾に在り 入力が行い易い様にする 文字列を右回転させたり 左回転させたり 反転させたり出来る様にする -1-

オブジェクト プロパティ一覧 ピクチャボックス 1 ラベル 1 ピクチャボックス 2 ラベル 2 テキスト 1 テキスト 2 ラベル 3 コマンドボタン 1 コマンドボタン 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 BackgroundImageLyout None -2-

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

プログラムリスト 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; イコール (=) 記号は 代入演算子で有り 右辺の値を左辺に代入する働きをする 条件判定に 比較演算子を使用して居る A > B : AはBより大きい テキストボックスの Text プロパティに文字列を代入する事に依り テキストボックスの表示文字列を変更する // ボタン ( クリア ) がクリックされた時の処理 private void btnclear_click( object sender, EventArgs e ) txtsrc.text = ""; txtdest.text = ""; txtsrc.focus( ); ダブルコーテーションの間に何も記述せず 2 個連続して記述すると 長さ 0 の文字列 ( ヌルストリング ) を意味し 文字列の消去等に利用する // ボタン ( 終了 ) がクリックされた時の処理 private void btnfinish_click( object sender, EventArgs e ) Application.Exit( ); アプリケーションを終了する場合 正しくプログラムをメモリから消去して終了する事が望ましい -4-

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

if 文に依る条件分岐 ( 再掲 ) 論理式の条件判断を行うステートメント 単一ステートメント形式 1 if ( 論理式 ) 論理式が真の場合の処理 ; 単一ステートメント形式 2 if ( 論理式 ) 論理式が真の場合の処理 ; else 論理式が偽の場合の処理 ; 複数ステートメント形式 1 if ( 論理式 ) 論理式が真の場合の処理 ; 複数ステートメント形式 2 if ( 論理式 ) 論理式が真の場合の処理 ; 偽 (False) else 論理式真 (True) 論理式が偽の場合の処理 ; 複数ステートメント形式 3 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 つの条件式の値に依り 複数の処理の孰れかを実行させるには Select Case ステートメントの方が適して居る -6-

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 ( コントロール内にリンクが存在しない場合 ) -7-

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 メソッドを個別に呼び出す必要が有る と謂う記述も有る -8-

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; T = S.Replace("cde", "XYZ") T は "abxyzfg" と成る -9-