プログラミングの有用性 VB 2005 1 醒めよ!! 遣り度い事を遣るには 先ず 遣らなければ成らない事を遣る! 現に 其の事に気付いて 日々 其の 遣らなければ成らない事 に邁進して居る人間が 居る 寧ろ 其れを愉しんでさえ居る者も居る 然して 着実に 世の中が必要とする技 術を身に付けて行って居る者が居る 併し 何が 遣らなければ成らない事 なのか解らない場合は 現実に対応出来る技術力 を持ち 現在と未来を見通せる人間の話を聴き 其れが何なのかを知る事で有る 然して 直ぐに実行し 途中で投げ出さない事で有る プログラミングは 最早 殆どの分野に於いて欠かす事の出来ないコンピュータを より効果的に使い熟す為の技術で 広く其の技術が必要とされて居ると共に コンピュータを必要とする分野の総ての業種に於いて 今後 必須と成る技術で有る 即ち 誰もが自分の業務を効率良く行う為に 知って置かなければ成らない技術と成るのは 世の中の流れに鑑みると 必然 で有る -1-
プログラムの概要 基本的な Windows 操作さえ知って居れば 誰にでも出来るリネーム ( 名前の付け替え ) 作業でも ファイル数が膨大だと 結構な時間を要する事に成る 其処で 簡単なプログラムを組む事で 斯うした作業を 短時間で完了させる事が 此れからの実務に於いて求められる 此処では プログラミングの有用性を知ると共に 此れからは 斯うした技術が 総ての分野に於いて必須の物と成る事を自覚して欲しい プログラミングは 或る意味 時間的な制約に依り諦めて居た事を実現する 不可能を可能にする 道具で有ると共に 其れ自体が 創作の歓びを伴う 愉しい物 でも有る 其れを体感する為には ゲーム製作が最適で有る ゲームは 改良のアイディアが沸き易く 色々を手を加える事に依り プログラミング技術が向上する丈で無く プログラミングが 愉しい物 でも有る事を実感出来る筈で有る オブジェクト プロパティ一覧 フォーム ボタン コントロールの種類 プロパティ プロパティの設定値 フォーム Name WakeUp StartPosition CenterScreen Text ウェイクアップ講座 - ファイルのリネーム ボタン Name btnstart Font MS 明朝 太字 12 Text ファイル名変更 -2-
プログラムリスト Imports System.IO Public Class WakeUp デザイン画面で ボタンをダブルクリックして コード画面を表示し 左記のコードを入力する ' ボタン ( ファイル名変更 ) がクリックされた時の処理 Private Sub btnstart _Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles btnstart.click ' 起動パスの取得 Dim P As String = Application.StartupPath If Not P.EndsWith( " " ) Then P &= " " P &= "WakeUpData" ' ファイルの取得 Dim F ( ) As String = Directory.GetFiles( P ) ' ファイル名の変更 Dim S, D As String Dim C As Char For Each S In F D = Path.GetFileName( S ).Substring( 4, 3 ) C = D.Substring( 0, 1 ) Select Case C Case "a"c To "z"c D = ( Convert.ToInt32( C ) 87 ).ToString( "00" ) & D.Substring( 1, 2 ) Case Else D = Integer.Parse( D ).ToString( "0000" ) End Select D = P & " jpn_" & D & ".txt" File.Move( S, D ) Next ' メッセージの表示 MessageBox.Show( " ファイル名を変更しました ", " 完了 " ) End Sub End Class コーディング時の注意 Basic は 大文字と小文字を区別しない言語で有る 従って コードは 大文字と小文字の孰れで入力しても良いが 1 行分の入力が完了すると ( 他の行に移動すると ) 其の語句が定義されて居る形式に 自動的に変換される 猶 Basic では 変数 ( 上記の反転文字部分 ) は 慣習的に大文字を含める事が多いので 其の定義 ( 宣言 ) では 大文字で入力する -3-
名前空間のインポート (Imports 文 ) 名前空間 (Name Space) をインポートする Imports [ エイリアス名 =] 名前空間名 但し ブラケット ( 鉤括弧 ) 内は省略可能で有る ( 通常省略する ).NET Framework で提供される様々なクラスは 名前の衝突を避ける為 名前空間と謂うブロックで分類されて居る 従って クラス名は 正式には 完全修飾名 ( 名前空間名 + クラス名 ) で指定しなければ成らない 例えば ディレクトリの情報や操作を提供する Directory クラスや ファイルやディレクトリのパス情報を提供する Path クラスは System.IO 名前空間に属して居るので 正式には下記の様に記述する必要が有る System.IO.Directory System.IO.Path 併し 名前空間をインポートして置けば 名前空間名を省略する事が出来る ( 但し 複数の名前空間をインポートして 名前の衝突が起こる場合 即ち 同名のクラスやメソッド等が有る場合には 明確に識別する為に 名前空間名も記述しなければ成らない ) Application クラスの StartupPath プロパティ アプリケーションを開始した実行可能ファイルのパスを取得する String 型変数 = Application.StartupPath 取得したパス名にファイル名は含まれない 亦 通常は パス名の末尾に 記号 ( ディレクトリやファイルを区切る区切記号 ) は含まれない 併し 稀に 記号が含まれる場合も有るので 下記の様に 末尾の検証を行う事が望ましい Dim P As String = Application.StartupPath If Not P.EndsWith( " " ) Then P &= " " 上記の様に処理して置けば 孰れの場合も 後続のディレクトリやファイルと正しく結合する事が出来る Directory クラスの GetFiles メソッド 指定したディレクトリに格納されて居るファイル名を返す String 型配列 = Directory.GetFiles( ディレクトリ名 ) 取得したファイル名には完全パスが含まれる Path クラスの GetFileName メソッド 指定したパス文字列のファイル名を返す String 型変数 = Path.GetFileName( パス文字列 ) 取得したファイル名には拡張子も含まれる -4-
File クラスの Move メソッド 指定したファイルを新しい場所に移動する File.Move( 移動するファイル名, ファイルの新しいパス ) ファイルの新しいパスに新しいファイル名を指定する事が出来るので ファイルのリネームに使用する事が出来る String クラスの Substring メソッド 文字列から部分文字列を返す String 型変数 = 文字列.Substring( 開始位置, 取得文字数 ) 開始位置は 0 スタートのインデックスで指定する Convert クラスの ToInt32 メソッド 引数で指定したデータを 32 ビット符号付き整数に変換する Integer 型変数 = Convert.ToInt32( 引数 ) 引数に Char 型データ (Unicode 文字 ) を指定した場合 其の文字の文字コードが得られる 因みに 文字 a の文字コードは 97 で有る Integer(Int32) クラスの Parse メソッド 引数で指定した文字列を 32 ビット符号付き整数に変換する Integer 型変数 = Integer.Parse( 文字列 ) 引数に指定した文字列が 32 ビット符号付き整数に変換出来ない場合 例外が発生する Integer(Int32) クラスの ToString メソッド 32 ビット符号付き整数を文字列に変換する String 型変数 = Integer 型数値.ToString( ) を省略すると 標準ので文字列化される 0 プレースホルダを指定すると 指定した桁数に満たない場合は 指定した桁数に成る様に 0 を補充する -5-
代入文 (Let 文 ) 左辺の変数やオブジェクトのプロパティに 右辺の式の値を代入する Let 変数名 = 式 但し Let は省略可能で ( 通常省略する ) 変数名 = 式と記述する事が出来る 下記の様な式を代入文と呼ぶ 此処で使用して居る =( イコール ) は 数学の等号の様に左辺と右辺が等しいと謂う意味では無く 右辺の計算式の値を左辺の変数等に代入すると謂う意味で有る X = 10 左辺の値 (10) を代入 X = 10 A = X + Y 左辺の値 (10 + 20) を代入 10 20 A = X + Y 此の代入文の右辺には数値 変数 式を記述する事が出来るが 右辺には 1 個の変数 又はオブジェクトのプロパティしか記述する事が出来ない 例えば X + Y = A と謂う様な記述は出来ない 猶 単独の変数や定数も 広い意味での式と看做される 条件分岐 (Select 文 ) 評価式の値に従い 複数のステートメントブロックの中の孰れかを実行するステートメント Select Case 評価式 Case 該当式 1 評価式が該当式 1 に該当する場合の処理 Case 該当式 2 評価式が該当式 2 に該当する場合の処理 Case Else 上記孰れの該当式にも該当しない場合の処理 End Select 評価式の値に従い 複数のステートメントブロックの中の孰れかを実行する Select 文では評価式が1 回だけ評価され 其の値と各 Case 節の値が比較され 一致した場合 其の Case 節に対応するステートメントブロックが実行される 該当式には 1 個以上の値リストを指定する 複数の値を指定する場合には 値をカンマ (,) で区切る 亦 キーワード Is と To を使用する事も出来る 評価式が複数の該当式と一致した場合には 最初に一致した Case 節のステートメントブロックが実行される 亦 孰れの該当式とも一致しない場合は Else Case 節 ( 省略可能 ) が実行される -6-
ループ処理 (For Each Next 文 ) グループの各要素に対して一連のステートメントを繰り返し実行するステートメント For Each 要素 In グループ一連の処理 Next 配列やコレクション ( オブジェクトの集合 ) の各要素の総てに対して 一連のステートメントを繰り返し実行する グループには オブジェクトコレクションや配列 又は 其等を参照するオブジェクト変数を指定し 要素には コレクションや配列から各要素を取り出して格納する変数を指定する 配列やグループのコレクションに要素が 1 つでも存在する場合 For Each...Next ループが始まる 一旦 ループが開始されると グループの最初の要素に対してステートメントが実行される 然して グループの中に要素が有る限り ループ内のステートメントは 各要素に対して実行を続ける 要素が無く成れば ループを終了し Next ステートメントの次のステートメントに実行が移る ループから強制脱出する方法と仕て ループ内の任意の位置に任意の数の Exit For ステートメントを記述する事が出来る 通常 Exit For ステートメントは 何等かの条件を評価した後で使用する 例えば If... Then... Else ステートメントを評価した後で 制御を Next ステートメントの次のステートメントに直ちに移動する場合に利用される For Each...Next ループは 入れ子構造 ( ネスティング ) に出来る 即ち For Each...Next ループの内部に別の For Each...Next ループを入れる事が出来る 但し 夫々れのループの要素を表わす変数には一意の変数を指定する必要が有る 文字列の結合 (& 演算子 ) 文字列を結合するする String 型変数 = 文字列 & 文字列 文字列と文字列を結合するには & 演算子を使用する 猶 + 演算子でも 文字列の結合は出来るが 文字列の結合と謂う意味では & 演算子を用いる事が望ましい 例えば "ABC" と "XYZ" と謂う文字列を & 演算子で結合すると "ABCXYZ" と謂う文字列が生成される 猶 文字列は ダブルコーテーションでクォートする ヘルプの利用 調べたい語句の上にキャレット (I カーソル ) を当て F1 キーを押すとヘルプが表示される 解らない語句が有ると 先ず ヘルプで調べる癖を付けて欲しい ヘルプには 意味や丈で無くコード例も記載されて居るので 此れに親しむ事が 上達への道で有る -7-
昔 プログラミングは何故必要か から コンピュータ ソフトが無ければ只の箱 と謂われる様に コンピュータはソフトウェア ( プログラム ) が無いと 何もする事が出来ません コンピュータの電源を入れると ユーザーがコンピュータを使用出来る状態に成りますが 此れは OS( オペレーティングシステム ) と呼ばれる基幹と成るプログラムが作動して居るからに他なりません 更に 其の時の使用目的に応じて様々なアプリケーションを起動しますが 此れも亦 プログラムです 此の様に コンピュータを利用するには プログラムが不可欠です 現 プログラミングの将来性は 在 職場や家庭等の多くの場所でコンピュータが利用されて居り 特に職場等では 業務を遂行する上で コンピュータは無くては成らない存在と成って居ます 最早 コンピュータの存在無くしては 業務が停滞すると謂う状況に至って居ます 亦 普段何気無く使用して居る電化製品等も コンピュータで制御されて居る事が多く成って居ます 此の様に 最早コンピュータの無い状態に戻る事が出来ない状況に於いて 其のコンピュータを作動させる為に必要なプログラムの製作は コンピュータ文化を維持する上で 必要にして不可欠な技術です コ プログラミングの基本は ンピュータは 人間が 其の歴史の中で 初めて作った目的の無い道具 と謂われる様に コンピュータを使用する目的は 人に依り 千差万別です 此れは コンピュータの利用範囲が広い事を示すと共に コンピュータ自体には使用目的が無い事を示して居ます 即ち コンピュータは 其れを使用する人間が 使用目的を持たなければ成りません コンピュータは 人間の作業を補助する為の道具ですので 何の作業を何の様に補助させるのかを考える事が プログラミングの第一歩です 詰まり 実務だけで無く 娯楽を含めて 何が人間の役に立つのかを考える事からプログラミングは始まります プ プログラミングを学習するには ログラミングに限らず 何事も実践しなければ上達しません 兎に角 只管実践する事です 実践してさえ居れば 必ず上達します 併し 謂うは易し 行うは難し と謂うのが現実で 遂々怠けて仕舞うのが人間の性と謂う物です 特に プログラミングは 世間で 特殊技能 と認定されて居る技術で有るだけに 其の奥行きは深く 簡単に極められる物では無いだけに 挫折し易いのも事実です 併し 同時に 日常 プログラムを作成する事を仕事と仕て居るプロのプログラマーが 余暇に自分の為のプログラムを作成すると謂う様に 娯楽 と成り得る事も亦 事実です 実践し続ける事が上達の為の唯一の秘訣で有る以上 実践し続ける為に プログラミングを楽しむ事が必要です 先ずは 創り度いプログラム 又は 創らなければ成らないプログラム を創れる様に成りませう 然うすれば 更に 創り度いプログラム や 創らなければ成らないプログラム が現れて来ます 其れを 一歩々々 着実に解決して行く事で 自然と 技術 は身に付きます -8-