万年暦プログラム

Similar documents
万年暦プログラム

ルーレットプログラム

回文作成支援プログラム

草競馬プログラム

万年暦プログラム

ブロック パニック

占領双六ゲーム

ICONファイルフォーマット

C#の基本

3D回転体プログラム

回文作成支援プログラム

プロセス間通信

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

ファイル操作

相性占いプログラム

画像閲覧プログラム

VB.NET解説

相性占いプログラム

通信対戦プログラム

3D回転体プログラム

回文作成支援プログラム

Prog2_12th

ブロック崩し風テニス

チャットプログラム

回文作成支援プログラム

占領双六ゲーム

正規表現応用

Java講座

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

回文作成支援プログラム

インベーダープログラム

回文作成支援プログラム

VB実用⑦ エクセル操作Ⅰ

何時何処で誰が

スライド 1

パラパラ漫画

Userコントロール

ウィンドウ操作 応用

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

NotifyIconコントロール

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

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

ListViewコントロール

相性占いプログラム

ファイル監視

文書閲覧プログラム

画像閲覧プログラム

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

Prog2_15th

グラフィックス

構造体

Prog2_2nd

データアダプタ概要

マルチメディア・音声

Prog1_6th

チャットプログラム

神経衰弱ゲーム

ハッシュテーブル

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

Microsoft Word - VB.doc

神経衰弱ゲーム

スロットプログラム

プレポスト【問題】

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

何時何処で誰が

プラグイン

データベースⅡ

パラパラ漫画

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

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

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

Microsoft PowerPoint - prog03.ppt

スレッド操作 タイマー

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

Microsoft PowerPoint - ruby_instruction.ppt

MCDRS_tutorial_advanced_v1.pptx

Microsoft Excel操作

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

ExcelVBA

PowerPoint プレゼンテーション

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

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

JavaプログラミングⅠ

Microsoft Word _VBAProg1.docx

PowerPoint プレゼンテーション

プログラミング実習I

VB実用⑬ 印刷Ⅲ(PrintFormメソッド)

Prog1_3rd

sinfI2005_VBA.doc

Prog1_2nd

PowerPoint プレゼンテーション

Prog2_4th

グラフィックス 目次

GUIプログラムⅣ

JavaScriptプログラミング入門 2.JavaScriptの概要

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

正規表現概要

JavaプログラミングⅠ

データベースⅠ

プログラミングA

Transcription:

万年暦プログラム C# 2005 7 プログラムの概要 年月をテキストボックスで指定した後 表示ボタンをクリックして 指定した年月のカレンダーを表示する 画面上部のグループボックスでは 現在の年月日と時間をリアルタイムで表示する 此の場合 時間丈でなく 日付が変われば 日付もリアルタイムで変化する 指定した年月のカレンダーを表示するには 日付と時間を扱う組込関数を使用し 亦 日付と時間をリアルタイム表示するには 一定時間間隔で日時の変化を監視する為に タイマーを使用する 今回の課題項目 単純変数の宣言 (Private Dim) 標準コントロールの利用 (Label GroupBox TextBox Button Timer) プロパティのり様 (Year Month Day DayOfWeek Text Enabled BackColor 等 ) イベントの利用 (Load Click Tick) メソッド ( 型変換 ) の利用 (System.Convert.ToInt32) メソッド ( 日付時間 ) の利用 (DateTime.AddDays) メソッド ( 整形出力 ) の利用 (DateTime.ToString) 演算子 ( 代入演算子 算術演算子 比較演算子 ) 制御構造構文 ( 条件分岐 ループ処理 ) 自作メソッド ( ジェネラルプロシージャ 引数 ) 今回の重点項目 変数の適用範囲 ( スコープ : モジュールレベル プロシージャレベル ) if 文に依る条件分岐 (if ( ~ ) else ) for 文に依るループ処理 (for( counter=start; condition; increment ) ) foreach 文に依るループ処理 (foreach ( element In group ) break ) do 文に依るループ処理 (do while( ~ ); ) 日付と時間の処理 (Year Month Day DayOfWeek AddDays ToString) 今回の応用項目 画像を貼り付けられる様にしてビジュアルな面を改良する テキストボックスへの入力に於けるマンマシンインターフェイスを改良する -1-

~ ~ C# 2005 7 C# 2005 基礎 Ⅰ noa オブジェクト プロパティ一覧 ラベル1 ラベル2 ラベル3 ラベル4 グループボックス 1 ラベル 5 ラベル 6 ラベル 7 ボタン 1 ラベル 13 テキストボックス 2 ラベル 14 テキストボックス 1 ラベル 50 グループボックス 2 タイマー ボタン 2 コントロールの種類 プロパティ プロパティの設定値 フォーム Name calendar FormBoardStyle FixedSingle MaximizeBox False StartPosition CenterScreen Text 万年暦 Font MS 明朝, 太字,12( 基準と成るフォント ) ラベル1 Name lbltitle Text Font 万年暦プログラム (MS 明朝, 太字,18) グループボックス1 Name grpnow Text 空白 ラベル2 Name lbltoday Text Font 空白 (MS 明朝, 太字,12) AutoSize TextAlign False MiddleCenter ラベル3 Name lbltime Text Font 空白 (MS 明朝, 太字,12) AutoSize TextAlign False MiddleCenter ラベル4 Name lblera Text Font 西暦 (MS 明朝, 太字,12) ラベル5 Name lblyear Text Font 年 (MS 明朝, 太字,12) -2-

C# 2005 7 C# 2005 基礎 Ⅰ noa コントロールの種類 プロパティ プロパティの設定値 ラベル6 Name lblmonth Text Font 月 (MS 明朝, 太字,12) テキストボックス1 Name txtyear Text Font 空白 (MS 明朝, 太字,10) TextAlign Right テキストボックス2 Name txtmonth Text Font 空白 (MS 明朝, 太字,10) TextAlign Right ボタン1 Name btndisp Text Font 表示 (MS 明朝, 太字,9) グループボックス2 Name grpcalendar Text 空白 ラベル7 Name lblweek0 Text Font 日 (MS 明朝, 太字,12) AutoSize TextAlign False MiddleCenter ラベル13 Name lblweek6 Text Font 土 (MS 明朝, 太字,12) AutoSize TextAlign False MiddleCenter ラベル14 Name lblday0 Text Font 空白 (MS 明朝, 標準,9) AutoSize TextAlign False MiddleRight ラベル50 Name lblday36 Text Font 空白 (MS 明朝, 標準,9) AutoSize TextAlign False MiddleRight ボタン2 Name btnfinish Text Font 終了 (MS 明朝, 太字,12) タイマー Name tmrtimer 同様に 火 ~ 金を作成 同様に lblday1~lblday35 を作成 ラベルテキストを表示するコントロール 此のテキストは ユーザーが直接入力したり変更したりする事は出来ない テキストボックステキストの入力や表示を行うコントロール 此のテキストボックスは ユーザーが直接入力したり変更したりする事が出来る グループボックス外観を整えたり 別にコントロールをフレーム内に配置してグループ分けするコンテナと仕て使用する パネルと異なり キャプションを表示する事が出来る ボタンユーザーが選択したコマンド ( 命令 ) や操作を実行するコントロール OK ボタンや実行ボタン等 処理の開始や中断 終了の合図に用いられ 最も良く利用されるコントロールで有る ボタンが押し下げられた様に外観が変わる為 プッシュボタンとも謂う タイマー一定の時間間隔でイベントが発生する様にするコントロール 一定時間毎にプログラムを実行したい時に使用する 此のコントロールは 実行時には表示されない -3-

プログラムリスト using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace calendar public partial class calendar : Form // フォームレベルでグローバルな変数の宣言 private int[ ] li = new int[ 37 ]; private int y, m, d; public calendar( ) InitializeComponent( ); ネームスペース ( 名前空間 ) の使用を宣言して居る 此の部分は エディタが 自動的に記述して下れる 此処で宣言した変数は同じフォーム内の総てのサブプロシージャで値の参照と設定を行う事が可能 配列変数 ( アレー ) の宣言単純変数 ( スカラー ) の宣言クラスを生成する為のコンストラクタで有る 此の部分は エディタが 自動的に記述して下れる // フォームが読み込まれた時の処理 private void calendar_load( object sender, EventArgs e ) int n, i; // 起動した時の日付の取得 y = DateTime.Now.Year; m = DateTime.Now.Month; d = DateTime.Now.Day; 此処で宣言した変数は宣言したサブプロシージャ内でしか値の参照と設定を行う事が出来ない DateTime 構造体の Nowメンバは現在の日時を示す 日付丈の場合は Today を用いる事も出来る // ラベルとテキストボックスに日付の表示 lbltoday.text = DateTime.Now.ToString( "yyyy 年 MM 月 dd 日 " ); txtyear.text = DateTime.Now.ToString( "yyyy" ); を指定した形式に変換するに txtmonth.text = DateTime.Now.ToString( "%M" ); は DateTime 構造体の ToString // ラベルの背景色の透明化 foreach ( Control c in this.grpnow.controls ) c.backcolor=color.transparent; foreach( Control c in this.grpcalendar.controls ) c.backcolor=color.transparent; メソッドを使用する foreach は 配列やコレクション から 総ての要素を 1 個宛取り出 す構文で有る -4-

// 日付用ラベルのインデックス取得 foreach ( Control c in this.grpcalendar.controls ) if ( c.name.contains( "lblday" ) ) n = System.Convert.ToInt32( c.name.substring( 6 ) ); li[ n ] = this.grpcalendar.controls.indexof( c ); // 日曜日と土曜日の表示色の設定 for ( i = 0; i < 36; i += 7 ) this.grpcalendar.controls[ li[ i ] ].ForeColor = Color.Red; for ( i = 6; i < 35; i += 7 ) this.grpcalendar.controls[ li[ i ] ].ForeColor = Color.Blue; // カレンダーを表示するメソッド ( プロシージャ ) の呼出 DispCalendar( new DateTime( y, m, 1 ) ); // タイマーの有効化 tmrtimer.enabled = true; 此のループ処理ではカウンター i の値を 0 から 35 に 7 宛変化させて ブロック内の処理を繰り返す 色を指定するには Color 構造体で定義されて居る定義色を使用すると解り易い 自作メソッドも 組込メソッドと同様に呼び出す事が出来る 年月日を指定して DateTime 型の新しいインスタンスを作成し 其れを引数に与えて居る // ボタン ( 表示 ) がクリックされた時の処理 private void btndisp_click( object sender, EventArgs e ) // 年月をテキストボックスより取得 y = System.Convert.ToInt32( txtyear.text ); m = System.Convert.ToInt32( txtmonth.text ); // カレンダーを表示するメソッド ( プロシージャ ) の呼出 DispCalendar( new DateTime( y, m, 1 ) ); 同じ処理を複数の箇所で行う時はメソッド化すると記述の手間を省ける丈でなく メンテナンス面でも有効で有る // ボタン ( 終了 ) がクリックされた時の処理 private void btnfinish_click( object sender, EventArgs e ) tmrtimer.enabled = false; this.dispose( ); Application.Exit( ); アプリケーションを終了する場合 使用したタイマーは無効にして終了する事が望ましい アプリケーションを終了する場合 正しくプログラムをメモリから消去して終了する -5-

// タイマーが一定間隔で行う処理 private void tmrtimer_tick( object sender, EventArgs e ) // ラベルに時間を表示 lbltime.text = DateTime.Now.ToString( "HH 時 mm 分 ss 秒 " ); // 日付が変更した場合の処理!= 演算子は 否定を意味する if ( DateTime.Now.Day!= d ) A!= B : AとBは異なる lbltoday.text = DateTime.Now.ToString( "yyyy 年 MM 月 dd 日 " ); d = DateTime.Now.Day; DispCalendar は DateTime 型の private void DispCalendar( DateTime f ) int w, p, i; // カレンダー表示用ラベルのテキスト消去 for ( i = 0; i < 37; i++ ) this.grpcalendar.controls[ li[ i ] ].Text = ""; 引数を f と謂う変数名で受け取る ユーザ定義のメソッドで有る 此処で宣言した変数は宣言したサブプロシージャ内でしか値の参照と設定を行う事が出来ない 此のループ処理ではカウンター i の値を 0 から 36 に 1 宛変化させて ブロック内の処理を繰り返す // 当月の第 1 日の曜日の取得 w = System.Convert.ToInt32( f.dayofweek ); p = w; 変数 P は 何番目の日付用コントロールから表示を開始するかを示すポインタで有る // カレンダーの表示 i = 0; do this.grpcalendar.controls[ li[ p++ ]].Text = System.Convert.ToString( ++i ); while ( f.adddays( (double)i ).Day!= 1 ); 回数を指定しないでループ処理を行う時には do 文を使用する ++ は 値を 1 増加させる単項演算子で有る ++A の形は式を評価する前に A++ の形は式を評価した後 インクリメントする サブルーチン化の効用 ジェネラルプロシージャ ( ユーザー定義プロシージャ C# や Java ではメソッド C/C++ では関数と呼ぶ ) は 主に 複数のイベントプロシージャで同じ様な処理が必要と成る場合に 共通コードを記述する為に使用する事が多いが 当該ルーチンに訂正や追加等を行う場合 複数箇所を書き直すのではなく 一箇所而巳を書き直す丈で済む等 メンテナス面でも有用である 此の様な手法を サブルーチン化 と呼ぶ -6-

DateTime 構造体の Now プロパティに依る日時の取得 現在のシステムの日時を返すプロパティ Now 使用して居るコンピュータの現在のローカルな日付と時刻を取得する 取得される値は DateTime 型の値で有る DateTime 構造体の Today プロパティに依る日時の取得 ( 参考 ) 現在のシステムの日付を返すプロパティ Today 使用して居るコンピュータの現在のローカルな日付を取得する 取得される値は DateTime 型の値で有る DateTime 構造体の Year プロパティに依る年の取得 日付の年の部分を取得するプロパティ Object.Year DateTime 型のオブジェクトの日付から年の部分を取り出す プロパティ値は 1 から 9999 迄の間の年で有る DateTime 構造体の Month プロパティに依る月の取得 日付の月の部分を取得するプロパティ Object.Month DateTime 型のオブジェクトの日付から年の部分を取り出す プロパティ値は 1 から 12 迄の間の月で有る DateTime 構造体の Day プロパティに依る日の取得 日付の日の部分を取得するプロパティ Object.Day DateTime 型のオブジェクトの日付から年の部分を取り出す プロパティ値は 1 から 31 迄の間の日で有る -7-

DateTime 構造体の DayOfWeek プロパティに依る曜日の取得 日付の曜日を取得するプロパティ Object.DayOfWeek DateTime 型のオブジェクトの日付から曜日を取得する プロパティ値は 0( 日曜日 ) から 6( 土曜日 ) 迄の間の曜日で有る (DayOfWeek 列挙体 ) メンバ名説明値 Sunday 日曜日 0 Monday 月曜日 1 Tuesday 火曜日 2 Wednesday 水曜日 3 Thursday 木曜日 4 Friday 金曜日 5 Saturday 土曜日 6 DateTime コンストラクタに依る DateTime 型の日付の生成 年 月 日に依り DateTime 構造体の新しいインスタンスを初期化するコンストラクタ new DateTime( 年, 月, 日 ) 引数で指定した年 月 日に対応する日付の DateTime 型のインスタンスを得る 個々に入力された値から日付を作成する時に使用する 年には 年を表す値 (1~9999 の範囲 ) を指定し 省略する事は出来ない 月には 月を表す値 (1~12 の範囲の整数値 ) を指定し 省略する事は出来ない 日には 日を表す値 (1~ 当該月の日数の範囲の整数値 ) を指定し 省略する事は出来ない 結果と仕て得られる DateTime の時刻は深夜 (00:00:00) と成る 猶 時刻や暦の種類 ( グレゴリオ暦和暦等 ) を指定するオーバーロードも用意されて居る DateTime 構造体の AddDays メソッドに依る日数の加算 日時を加減した値を得るメソッド Object.AddDays( 日数 ) 指定された時間間隔を加算した日付と時刻を DateTime 型の値で返す 日数には 加算する日数を表す浮動小数点数式 (double 型 ) を指定し 必ず指定する 亦 日数値には 将来の日時を取得するには正の数を指定し 過去の日時を取得するには負の数を指定する 猶 小数部は 1 日の端数を表わし 例えば 3.5 は 3 日と 12 時間を意味する -8-

DateTime 構造体の ToString メソッドに依る付き変換 日時を付きで文字列に変換するメソッド Object.ToString( ) 指定文字列式の指示に従って設定された文字列を返す には 既定 又は ユーザー定義の指定文字列式を指定する 日付と時刻の指定文字列の代表的な物を 下記に示す 標準の DateTime 指定文字列指定子名前 d 短い形式の日付パターン D 長い形式の日付パターン t 短い形式の時刻パターン T 長い形式の時刻パターン f 完全な日付と時刻のパターン ( 短い形式の時刻 ) F 完全な日付と時刻のパターン ( 長い形式の時刻 ) g 一般の日付と時刻のパターン ( 短い形式の時刻 ) G 一般の日付と時刻のパターン ( 長い形式の時刻 ) M 又は m 月日パターン R 又は r RFC1123 パターン s 並べ替え可能な日付と時刻のパターン (ISO 8601 準拠 ) u 並べ替え可能な日付と時刻のパターン ( 世界時刻 ) U 並べ替え可能な日付と時刻のパターン ( 世界時刻 ) Y 又は y 年月パターン其の他の 1 文字未定義の指定子 カスタム DateTime 指定文字列指定子説明 d 現在の日が 1~31 迄の数値で表示される 1 桁の日 (1~9) は 1 桁の数値として表示される dd 現在の日が 1~31 迄の数値で表示される 1 桁の日 (1~9) の場合 前に 0 が追加された (01~09) に設定される ddd 指定されて居る DateTime の曜日の省略名が表示される dddd 指定されて居る DateTime の曜日の完全な名前が表示される g 指定されて居る DateTime の紀元 (A.D. 等 ) が表示される h 指定されて居る DateTime の時間が 1~12 の数値で表示される 1 桁の時間 (1~9) は 1 桁の数値として表示される hh 指定されて居る DateTime の時間が 1~12 の数値で表示される 1 桁の時間 (0~9) の場合は 前に 0 が追加された (01~09) に設定される H 指定されて居る DateTime の時間が 0~23 の数値で表示される 1 桁の時間 (0~9) は 1 桁の数字として表示される HH 指定されて居る DateTime の時間が 0~23 の数値で表示される 1 桁の時間 (0~9) の場合は 前に 0 が追加された (01~09) に設定される -9-

m 指定されて居る DateTime の分数が 0~59 の数値で表示される 1 桁の分数 (0~9) は 1 桁の数字として表示される mm 指定されて居る DateTime の分数が 0~59 の数値で表示される 1 桁の分数 (0~9) の場合 前に 0 が追加された (01~09) に設定される M 月が 1~12 の数値で表示される 1 桁の月 (1~9) は 1 桁の数値として表示される MM 月が 1~12 の数値で表示される 1 桁の月 (1~9) の場合 前に 0 が追加された (01~09) に設定される MMM 指定されて居る DateTime の月の省略名が表示される MMMM 指定されて居る DateTime の月の完全な名前が表示される s 指定されて居る DateTime の秒数が 0~59 の数値で表示される 1 桁の秒数 (0~9) は 1 桁の数字として丈表示される ss 指定されて居る DateTime の秒数が 0~59 の数値で表示される 1 桁の秒数 (0~9) の場合 前に 0 が追加された (01~09) に設定される t 指定されて居る DateTime の A.M. 又は P.M. 指定子の 1 番目の文字が表示される tt 指定されて居る DateTime の A.M. 又は P.M. 指定子が表示される y 指定されて居る DateTime の年が 1 桁又は 2 桁の数値として表示される 西暦年の最初の 2 桁は省略される 1 桁の年 (1~9) は 1 桁の数値として表示される yy 指定されて居る DateTime の年が 1 桁又は 2 桁の数値として表示される 西暦年の最初の 2 桁は省略される 1 桁の年 (1~9) の場合 前に 0 が追加された (01~ 09) に設定される yyyy 指定されて居る DateTime の年が 最初の 2 桁も含めた 4 桁の形式で表示される 年が 3 桁以下の場合には 4 桁に成る様に年の前に 0 が追加される : 時刻の区切り記号 / 日付の区切り記号 " 引用符で囲まれた文字列 エスケープ文字 ( / ) の後に続く 2 つの引用符で囲まれた文字列のリテラル値が表示される ' 引用符で囲まれた文字列 2 つの一重引用符 ( ' ) で囲まれた文字列のリテラル値が表示される %c c は標準指定子で有ると同時にカスタム指定子で有る 此の指定子に関連付けられて居るカスタム指定パターンが表示される c c は任意の文字で有る エスケープ文字の後に指定されて居る文字をリテラルとして表示する コンテキスト内でエスケープシーケンス ( 改行を示す n 等 ) を作成するには 此のエスケープ文字は使用出来ない 其他の文字其他の文字は リテラルとして結果の文字列に直接書き込まれる 此等の指定子が 単独で使用されて居り 其他のカスタム指定文字列が使用されて居ない場合には 此等の指定子は標準の DateTime 指定子として解釈される 此等の指定子が他のカスタム指定子 又は % 文字と共に渡される場合 此等の指定子はカスタム指定子として解釈される 引数のの作成方法に付いては ヘルプの下記の項目を参照され度い 指定の対象全般日付 / 時刻 方法設定の概要標準の DateTime 指定文字列 カスタム DateTime 指定文字列 -10-

do 文に依るループ処理 指定した条件が真の間 一連の処理を行うステートメント do 一連の処理 ; While( 論理式 ); do ステートメントは 論理式 ( 条件式 ) が真 (true) の間 ステートメント 又は ステートメントブロックに記述された一連の処理を繰り返し ( ループ ) 実行する while ステートメントとは異なり do ステートメント本体のループは 式の値に関係無く 最低 1 回は実行される ( 後判定型 ) 猶 論理式を省略した場合には 無限ループと成る break goto return throw ステートメントを使用して ループの外側に制御を移すと ループから強制的に抜け出す事が出来る 亦 ループを終了せずに制御を次の繰り返しに移動させるには continue ステートメントを使用する while 文に依るループ処理 ( 参考 ) 指定した条件が真の間 一連の処理を行うステートメント While( 論理式 ) 一連の処理 ; while ステートメントは 論理式 ( 条件式 ) が真 (true) の間 ステートメント 又は ステートメントブロックに記述された一連の処理を繰り返し ( ループ ) 実行する 論理式 ( 条件式 ) が評価されてからループが実行されるので while ループは 論理式が最初から偽 (false) の場合 1 度もループ内の処理を実行しない 此の点が 最低 1 回はループ内の処理を実行する do ループとは異なる break goto return throw continue ステートメントに付いては do ステートメントに同じ goto ステートメントの使用に関する注意 goto ステートメントは プログラムの制御を指定したラベルに直接移動する無条件分岐命令で有るが 安易に使用すると プログラムの流れ ( フロー ) が解り難く成り 所謂 スパゲティプログラム と忌み嫌われるプログラムに成る可能性が大きい 充分な制御構造が用意されて居なかった初期の言語では 多用されたが 構造化プログラミングが定着した現在の言語では goto ステートメントを使用しない方法を考えた方が良い -11-

foreach 文に依る Contorols コレクションの操作 Visual Studio 6.0 の Controls コレクションは フォームやコンテナコントロール上のコントロールを表す要素を持つコレクションだったが Visual Studio.NET 以降では Controls コレクションの代わりに System.Windows.Forms.Control.ControlCollection クラスを使用する フォームには this.controls と謂う構文でアクセス出来る既定の ControlCollection クラスが有る 亦 Visual Studio 6.0 の Controls コレクションのメンバは インデックスとコントロール名の孰れを使用しても参照する事が出来たが Visual Studio.NET 以降では ControlCollection クラスはインデックス而巳をサポートし コントロール名での参照は出来ない ( 非常に不便で有る ) Visual Studio 6.0 以前 Visual Studio.NET 以降 this.controls("txttitle").text this.controls(this.controls.indexof(txttitle)).text Visual Studio 6.0 では コントロール配列が使用して 配列変数と同様に 同じ名前のコントロールをインデックスで区別して使用する事が出来たが Visual Studio.NET 以降では コントロール配列はサポートされて居ない 其の為 デザイン時に作成した一連のコントロールを 従来のコントロール配列の様に操作するには foreach 文に依るコレクションの操作が必要と成る 下記に フォームに配置された lbl と謂うプレフィックスを持つコントロール ( ラベル ) 総てに対して同じ処理を行う例を示す foreach(control C in this.controls ) ' フォームのコントロールのコレクションから要素を抽出 if ( c.name.contains("lbl") ) ' オブジェクト名が lbl で始まるか判別処理 End If ' 次の要素に移行 猶 デザイン時にコントロールを作成するのでは無く 実行時にコードでコントロールを生成する場合は 此等を Control 型の配列変数に参照を格納する事に依り 従来のコントロール配列と同様に扱う事も出来る Visual Basic 6.0 以前では Date 型は 8 バイトを使用して Double 形式で格納されたが Visual Basic.NET 以降では Date 型は共通言語ランタイムの DateTime 型を使用する 此の型は 8 バイトの整数値で有る DateTime 値型は 紀元 1 年 1 月 1 日の 00:00:00 から紀元 9999 年 12 月 31 日の 23:59:59 迄の間の値で 日付と時刻を表す 時刻値は 100 ナノ秒単位 ( タイマ刻み ) で表し 日付はグレゴリオ暦の紀元 1 年 1 月 1 日の 00:00 からのタイマ刻み数で表す 例えば タイマ刻み値 31241376000000000L は 紀元 100 年 1 月 1 日 ( 金曜日 ) の 00:00:00 を表す DateTime 値は 常に 明示的な暦 又は 既定の暦のコンテキストで表される DateTime 構造体には 日時を扱う上で有用な数多くのプロパティやメソッドが定義されて居る 此の型の総てのメンバの一覧に付いては DateTime メンバ を参照され度い -12-