プログラミング初級1
文字数カウント・プログラム(ステップ2)


ファイルをオープンし、先頭行と文字数を表示する。


初級1のステップ2です。
ステップ1は、理解できたでしょうか? わからないところは、遠慮なく質問してくださいね。 わからなくても、とにかくステップ7までやってみるのも、1つのやり方かも知れません。 どうぞ、ご自分で自分に合った方法で進んでみてください。
ただ、初級編からは、少しずつ文法的なことを覚えていきましょう。
命令(ステートメント) 関数 の使い方、 変数の宣言 の仕方、 データ型 などを 少しずつでいいですから、慣れながら覚えていきましょうね。

今回のハイライトは、ファイルの扱い方です。 「開く」→「読み込む」→「閉じる」というセットを勉強しましょう。




ステップ2の仕様


  1. マイ ドキュメントのフォルダにあるテキストファイル mojisu.txt をオープンします。
  2. mojisu.txt の1行目を読み込んで、その内容と文字数をメッセージボックスで表示します。
  3. mojisu.txt を閉じます。



ステップ2のプログラム・ソース



  1. Sub Count2()
  2. '文字数カウント・プログラム
  3. 'ステップ2:ファイルをオープンし、先頭行と文字数を表示する。
  4. Dim gyo As String
  5. Dim moji_su As Long
  6. Open "C:\My Documents\mojisu.txt" For Input As #1 'ファイルのオープン
  7. Line Input #1, gyo 'ファイルから1行読み込む
  8. moji_su = Len(gyo) '読み込んだ行の長さ(文字数)を '変数 moji_su へ入れる
  9. MsgBox "先頭行は 「" & gyo & "」" '読み込んだ行の中身を表示する
  10. MsgBox "文字数は " & moji_su '変数 moji_su の値を表示する
  11. Close #1 'ファイルのクローズ
  12. End Sub




解       説


それではまた、できるだけ、ソースの1行ごとに説明していきます。

  1. 1行目は、Coount2() という サブルーチン の開始です。
    初級1のステップ1は Count1 でした。 今回はステップ2なので、Count2 という名前にしてサブルーチンを作成しています。


  2. 2〜3行目は、コメントです。
    コメントとは、プログラムの実行とは関係の無いメモのようなものです。 ステップ1の実行の時に、F8 キーを押していって、飛ばされてしまったどうか確認しましたか? なんとなくでも「飛ばされてしまった」と感じたでしょうか? 今回も F5 キーでけでなく、F8 キーも押して、たくさん経験して慣れましょう。 そして今のうちから、コメントを書く習慣を身に付けておきましょう。 きっといつの日か、役に立ちますよ。 (^^)


  3. 4行目は、変数の宣言です。
    Dim は「 変数 の宣言をやるよ」という意味でしたね。これは、大切なので覚えてくださいね。 Dim の次が変数名で、4行目は、gyo という名前を付けています。
    変数名の次は As でした。そして As の次が変数の型です。 4行目は、String(文字列型)にしています。
    Dim 変数名 As データ型
    という構文でしたね。 この変数 gyo は、テキストファイル mojisu.txt の1行目の内容を入れるために用意しました。
    (変数とは、なにか値を入れるものでしたね。)


  4. 5行目も、変数の宣言です。
    5行目の変数は、moji_su という名前で、Long(長整数型)で宣言しています。
    この変数 moji_su は、入力された文字列の文字数を入れるために用意しました。 これは、ステップ1と同じですね。


  5. 6行目は、仕様の 1.の部分にあたります。
    マイ ドキュメントのフォルダにあるテキストファイル mojisu.txt をオープンします。
    Open というステートメント(命令)は、何かのファイルを開くことを、 コンピューターに要求します。次の "C:\My Documents\mojisu.txt" が開くべきファイル名です。 ここでは「C ドライブにあるマイ ドキュメントのフォルダにある mojisu.txt」を指定しています。
    もしあなたのコンピューターの「マイ ドキュメント」が C ドライブになかったら、 C を正しいドライブにしないと、このままではエラーになります。 旧タイプの PC-98 をお持ちのかたは、C でなく A にしてください。 PC-98NX 以降は C のままで構いません。
    ファイル名の次の For は「予約語」なので、このまま書いてください。 次の Input は、「入力用にファイルを開く」ことを意味します。 当然「出力用にファイルを開く」場合は、Output を代わりに書きます。
    「入力用にファイルを開く」というのは、指定した名前のファイルをコンピューターが読み込みに使いますよ、 という意味です。決してファイルを書き換えたりはしません。 ファイルを読み込むことは入力で、ファイルを書き込むことは出力だから、 「入力用」に開いたファイルはいわゆる「リード・オンリー」になるわけですね。
    次の As は「予約語」ですから、このまま書いてください。
    最後の #1 は、今のところは、このまま覚えてください。
    ' アポストロフィー(または シングル・クォーテーション)は、コメントでしたね。 こんな風に行の先頭でなくても使えます。 ' のうしろに命令を書いても実行時に無視されますので、気を付けてください。


  6. 7行目は、ファイルから入力(読み込み)された文字列を gyo という変数に入れます。
    仕様の 2.の前半分 「mojisu.txt の1行目を読み込んで、」にあたります。
    Line Input は、開いてあるファイルから1行読み込めというステートメント(命令)です。
    Line Input #1, 変数名
    という構文です。 今のところは #1 で覚えましょう。次の , カンマもお忘れなく。
    さて、コンピューターに入力した(読み込んだ)データは、とにかくどっかに置いとかないといけません。 「どっかに置いとく」というのは、プログラム上では、何かの変数に入れることです。 ここでは , カンマの後に、その変数名を書きます。 7行目では、gyo という名前の変数に入力した(読み込んだ)データを入れるように指示しています。
    このようにステートメントやキーワード等の予約語と変数との組み合わせや、 それらの順序には必ず約束があり、その約束は人間の言語のように「文法」と呼ばれています。
    そして、コンピューターは融通が利かないので、たとえ1文字でも、1箇所でも間違えると 「コンパイルエラー」を起こしてしまいます。気をつけましょうね。 と言っても、人間は間違いを犯すもの。 余り神経質にならずに、実行テストを丁寧にやったほうが効果的かも知れませんね。


  7. 8行目は、入力された文字列の文字数を計算するところです。
    ファイルから入力(読み込み)された文字列は、7行目で gyo という変数に入れました。 だから gyo の長さを出せば、それがつまり入力された文字列の文字数になります。
    文字列の長さは Len() という 関数 を使います。Len はステップ1でも使いました。これからも何度も出てきます。 仲良しになっておきましょうね。(^^)
    変数名 = Len(文字列)
    が構文です。 Len() の括弧 () の中に、長さを出したい文字列を入れます。→ Len(gyo)
    その結果(長さ)を、moji_su という変数に入れます。→ moji_su = Len(gyo)
    = は ← の意味でしたね。つまり、= の右の値を、= の左に代入するのです。 慣れてきましたか? (^^)
    8行目は、ステップ1とほとんど同じですね。


  8. 9行目と10行目は、仕様の 2.の後「その内容と文字数をメッセージボックスで表示します。」にあたります。
  9. 9行目は、「先頭行は」という文字と、入力した文字列とカギ括弧を表示します。
    「先頭行は」という文字と、入力した文字列(gyo) とカギ括弧を、 & でつないでいます。
  10. 10目は、「文字数は」という文字と、文字数とを表示します。
    「文字数は」という文字と、文字数とを & でつないでいます。


  11. 11行目は、使用したファイルを閉じます。
    仕様の 3.の部分にあたります。開いたものは、必ず閉じてくださいね。
    ファイルは使用前には必ず開いて、使用後は必ず閉じないと、エラーになります。 これは、「コンパイルエラー」でなく、「実行時エラー」になります。


  12. 12行目は、サブルーチンの終了を表します。
    プログラムは、ここまで。



ステップ2実行前の準備


今回は1つのテキストファイルを使います。一応こちらで準備しましたが、ご自分で作れる方は、 どうぞ作ってください。ファイル名は mojisu.txt として、マイ ドキュメントのフォルダに入れてください。
ファイルの中身は、こうなっています。
abcde
bcde
cde
de
e

ちょっと作る自信がないと言う方は、 ここ をクリックすると新しい画面が開きます。
「ファイル(F)」→「名前を付けて保存(A)」で、 マイ ドキュメントのフォルダに保存してください。




実       行


    では実行してみましょう!!!

  1. カーソルの位置を確認してから、F5キーを押してください。

  2. いきなりエラーメッセージが出た人!

    こんなエラー画面ですか?
    イメージ

    そして「デバッグ(D)」を押したら、こんな風に
    イメージ

    Open の行が黄色くなっていましたか? これは、マイ ドキュメントのフォルダに mojisu.txt が無いのです! 「ステップ2実行前の準備」が上手くできませんでしたね。

    イメージ

    の赤い○のところをクリックしてください。実行前の状態に戻ります。 それから、「ステップ2実行前の準備」をもう一度注意して、やってみましょう。

  3. 上手く動けば、「abcde」がメッセージボックスで表示されます。

    イメージ

    「OK」をクリックすると、

  4. ちゃんと正しい文字数 5 が表示されましたか?

    イメージ

    やり方がわかる人は、マイ ドキュメントのフォルダにある他の「テキストファイル」に変えて、 そのファイルの1行目がちゃんと表示されるかやってみてね。
    やり方がわからない人は、もう少しパソコンの勉強をしましょうね。



入れ替え1


まるごとソースをコピーしていると、覚えられないですよね。
そこで、ソースの行の順番をでたらめにしたやつを、ここに書いておきます。 正しい順番に並べ替えてください。もちろん、正解を見ずにね。 それで正しいと思ったやつをコピーして、エラーが出ないかどうか試してみてください。 お遊びの感覚で出来るといいですね。




Line Input #1, gyo                              'ファイルから1行読み込む
'ステップ2:ファイルをオープンし、先頭行と文字数を表示する。
MsgBox "文字数は " & moji_su                    '変数 moji_su の値を表示する
Dim moji_su As Long
Sub Count2()
Close #1                                        'ファイルのクローズ
End Sub
moji_su = Len(gyo)                              '読み込んだ行の長さ(文字数)を
                                                '変数 moji_su へ入れる
'文字数カウント・プログラム
Dim gyo     As String
Open "C:\My Documents\mojisu.txt" For Input As #1  'ファイルのオープン
MsgBox "先頭行は 「" & gyo & "」"               '読み込んだ行の中身を表示する




入れ替え2


今度はコメント抜きです。ちょっと難しくなりましたか?(笑)




moji_su = Len(gyo)
End Sub
MsgBox "先頭行は 「" & gyo & "」"
Sub Count2()
Line Input #1, gyo
Dim gyo     As String
Close #1
Open "C:\My Documents\mojisu.txt" For Input As #1
MsgBox "文字数は " & moji_su
Dim moji_su As Long




戻る

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル