プログラミング講座(12) 単語の切り出し、単語帳の表示

単語の切り出し GetWord() を実装しました。併せて単語帳の出力 PrintWordList() も追加しました。
実行結果は以下のようになります。一応、入力ファイル english.txt の単語を単語帳に格納して表示できるようになりましたが、まだ単語の重複があります。単語の前に表示されている番号は入力ファイルから探せるように行番号を表示しています。
03
【図10 単語帳プログラム v0.3 実行結果】
プログラムリストは以下の通りです。プログラムが長くなってきたので、[発行]の機能でウェブ上に公開しておきます。Small Basicの[インポート]ボタンを押して、プログラムID、LDG385を入力して[OK]を押せばインポートできます。
【リスト4 単語帳プログラム v0.3】
1 ‘単語帳プログラム WordList v0.3
2
3 ‘英文のテキストを入力ファイルとして開く。(Small Basicでは不要)
4 filename = “english.txt”
5 ‘行番号を初期化する。
6 lno = 1
7 ‘単語数を初期化する。
8 wno = 0
9 ‘入力ファイルから1行読み込む。
10 line = File.ReadLine(filename, lno)
11 ‘EOFになるまで以下のカッコ内を繰り返す。
12 While (line “”)
13 ‘{
14  ‘単語を切り出す。
15  GetSeparator()
16  GetWord()
17  ‘EOLになるまで以下のカッコ内を繰り返す。
18  While (word “”)
19  ‘{
20   ‘単語帳に切り出した単語を登録する。
21   AddWordList()
22   ‘単語を切り出す。
23   GetSeparator()
24   GetWord()
25  ‘}
26  EndWhile
27  ‘行番号をカウントアップする。
28  lno = lno + 1
29  ‘入力ファイルから1行読み込む。
30  line = File.ReadLine(filename, lno)
31 ‘}
32 EndWhile
33 ‘入力ファイルを閉じる。(Small Basicでは不要)
34 ‘単語帳を出力する。
35 PrintWordList()
36
37 ‘サブルーチン GetWord (単語を切り出す)
38 ‘input: line (行)
39 ‘work: c (文字)
40 ‘output: line (行)
41 ‘output: word (単語)
42 Sub GetWord
43  word = “”
44  While (line “”)
45   c = Text.GetSubText(line, 1, 1)
46   If (c = ” ” Or c = “\t” or c = “,” or c = “;” or c = “:” Or c = “.”) Then
47    goto endword
48   Else
49    line = Text.GetSubText(line, 2, Text.GetLength(line) – 1)
50    word = word + c
51   EndIf
52  EndWhile
53 endword:
54  TextWindow.WriteLine(“debug:” + lno + ” ” + word) ‘デバッグ出力
55 EndSub
56
57 ‘サブルーチン GetSeparator (区切りを切り出す)
58 ‘input: line (行)
59 ‘work: s (区切り)
60 ‘work: space (空白またはタブがあったか)
61 ‘output: line (行)
62 ‘output: separator (単語)
63 Sub GetSeparator
64  separator = “”
65  space = “False”
66  While (line “”)
67   s = Text.GetSubText(line, 1, 1)
68   While (s = ” ” Or s = “\t”)
69    line = Text.GetSubText(line, 2, Text.GetLength(line) – 1)
70    s = Text.GetSubText(line, 1, 1)
71    space = “True”
72   EndWhile
73   If (s = “,” or s = “;” or s = “:” Or s = “.”) Then
74    line = Text.GetSubText(line, 2, Text.GetLength(line) – 1)
75    separator = separator + s
76   Else
77    Goto endseparator
78   EndIf
79  EndWhile
80 endseparator:
81  If (separator = “” and space) Then
82   separator = ” ”
83  Endif
84  TextWindow.WriteLine(“debug:” + lno + “”) ‘デバッグ出力
85 EndSub
86
87 ‘サブルーチン AddWordList (単語帳に単語を登録する)
88 ‘input: word (単語)
89 ‘input: wordlist[] (単語帳: 単語)
90 ‘input: lnolist[] (単語帳: 行番号)
91 ‘input: wno (登録した単語数)
92 ‘output: wordlist[] (単語帳: 単語)
93 ‘output: lnolist[] (単語帳: 行番号)
94 ‘output: wno (登録した単語数)
95 Sub AddWordList
96  wno = wno + 1
97  wordlist[wno] = word
98  lnolist[wno] = lno
99 EndSub
100
101 ‘サブルーチン PrintWordList (単語帳を出力する)
102 ‘input: word (単語)
103 ‘work: i (単語帳の引数)
104 ‘input: wordlist[] (単語帳: 単語)
105 ‘input: lnolist[] (単語帳: 行番号)
106 ‘input: wno (登録した単語数)
107 Sub PrintWordList
108  For i = 1 To wno
109   TextWindow.WriteLine(lnolist[i] + ” ” + wordlist[i])
110  EndFor
111 EndSub
(つづく)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。