つぶやきの答えの続き?
- カテゴリ:パソコン/インターネット
- 2009/06/10 20:21:44
LEFT$という関数があります。
これは文字を取り出す関数で、
LEFT$( 文字列 , 文字数 )という書式で使います。
例えば、
LEFT$( "おだんご" , 1 ) なら "お"
LEFT$( "おだんご" , 3 ) なら "おだん"
となります。
MID$ 関数に置き換えることも出来ます。それぞれ、
MID$( "おだんご" , 1 , 1 )
MID$( "おだんご" , 1 , 3 ) となります。
MID$ は文字列の途中から文字を取り出すことが出来ますが、
LEFT$ は1文字目(一番左)からになります。
ちなみにRIGHT$ という関数もあります。
なので、フリマの検索は
LEFT$( 出品リスト, 検索ワードの文字数 ) と "検索ワード" が
同じかどうか調べれば真似出来そうです。
10 INPUT "出品されたアイテムの検索 = ",A$
20 READ B$
30 IF B$="*" THEN END
40 IF LEFT$(B$,LEN(A$))=A$ THEN PRINT B$
90 GOTO 20
100 DATA ねこのしっぽ
110 DATA おだんご
120 DATA ススキ
130 DATA きぐるみ(かえる)
140 DATA おだんご
150 DATA きぐるみ(クマ)
160 DATA セーラー服
170 DATA ねこひげ
180 DATA おねぎ
190 DATA ねこのずっく
200 DATA *
100行目からが出品されているアイテム一覧と思ってください。
10行目でキーボードから入力した言葉が、変数に代入されます。
20行目の" READ " は、" DATA " とペアの命令です。
DATA 以降の文字(数字)が、READ で指定した変数に順々に読み込まれていきます。
30行目、40行目のIF ~ THEN は、比較命令です。
例えば40行目では、LEFT$(B$,LEN(A$)) と A$ が同じかどうか調べています。
同じならば THEN 以降の命令を実行します。
90行目 GOTO~は、指示した行番号へ移動する命令です。
プログラムの流れを追ってみます。
10行目で"おだ"と入力したとします。A$="おだ"です。
20行目のREADで"もみじ"が 変数 B$ に代入されました。B$="もみじ"です。
40行目、LEFT$("もみじ",LEN("おだ")) = LEFT$("もみじ",2)) = "もみ"
なので
IF LEFT$(B$,LEN(A$))=A$ THEN ~ は
IF "もみ" = "おだ" THEN ~ ということになります。
"もみ"と"おだ"は同じではないので、ここでは何の処理もしません。
90行目で、20行目にプログラムをバックします。
2回目の READ なので、2つ目の DATA "おだんご" が B$ に読み込まれました。B$="おだんご"
IF LEFT$("おだんご",LEN("おだ")) = "おだ" THEN ~
今度は同じなので、THEN 以降の命令が実行されます。
PRINT は 画面に文字を表示する命令です。B$ = "おだんご" が画面に表示されました。
以降、これの繰り返しです。
入力した言葉が"おだ"なら、
おだんご
おだんご
入力した言葉が"お"なら、
おだんご
おだんご
おねぎ
入力した言葉が"ねこの"なら
ねこのしっぽ
ねこのずっく
が、画面に表示されます。
LEFT$ 関数では、フリマ同様に途中の言葉の検索は出来ませんが、
MID$ 関数を使えば可能になります。
10 INPUT "出品されたアイテムの検索 = ",A$
20 READ B$
30 IF B$="*" THEN END
40 for i=1 to len(b$) ' <=訂正FOR I=1 TO LEN(B$)-LEN(A$)+1
50 IF MID$(B$,I,LEN(A$))=A$ THEN PRINT B$ : goto 20 '<=追加
60 NEXT
90 GOTO 20
100 DATA ねこのしっぽ
110 DATA おだんご
120 DATA ススキ
130 DATA きぐるみ(かえる)
140 DATA おだんご
150 DATA きぐるみ(クマ)
160 DATA セーラー服
170 DATA ねこひげ
180 DATA おねぎ
190 DATA ねこのずっく
200 DATA *
最初のプログラムの40~60行目を変更しました。
が、字数制限きたので終わりです・・・

























いちお、専門学校でプログラムならったからww
今は・・・・・・ ♥(→艸ˇ←。)♥
今度 よく読んでみます・・・ε≡≡ヘ( ´Д`)ノ
最近PCのちょうしが悪いようです・・・。
勝手に電源が落ちます(つд⊂)
人間の脳はさらに複雑な事を並行処理してるんだから、アトムを作るのはまだまだ先の話だね〜。
わかり易く説明されているな~って思いました
でも・・・
わからないwww
2つ目のプログラムの40行目は、単純に
for i=1 to len(b$)
だけでいいんですね。これなら3文字以上も検索できるし。
「しっぽ」で検索した場合、文字数が3文字だから、読み込んだデータを3文字づつに分けています。
「ねこのしっぽ」なら、「ねこの」「このし」「のしっ」「しっぽ」というふうに。
で、それらを「しっぽ」と比較しています。
「ねこ」で検索した場合は、2文字なので
「ねこのずっく」なら、「ねこ」「この」「のず」「ずっ」「っく」で、一回目で検索に引っ掛かる。
「きぐるみ(ねこ)」なら、「きぐ」「ぐる」「るみ」「み(」「(ね」「ねこ」「こ)」で6回目でヒットする。
検索文字が、読み込んだDATAの文字列と一致する部分がでるまでFOR TO NEXTループを繰り返して、一致したDATAをすべて表示
繰り返し回数は、検索文字とDATAが一致するのが1文字目からDATAの末尾で検索文字が一致するまでなので、1からDATA文字数-検索文字数+1まで
で、いいのかな^^;
BASICを自力で勉強、FORTRUN77を講義で習ったけど、プログラム見るの久しぶりなんで大分忘れてます^^;
FOR TOの変数 I が、I=1だからTOのあとは1より小さいとと走らないんじゃなかった?!
最低、1回だけまわるんだっけ?
ごめん、忘れました^^;
SEの人たちに笑われてそう><
理解できたか?と聞かれると ぜんぜん自分では説明出来ないし 覚えれないけど
すっごく 丁寧に説明されていることに 気づいた
頭の中で モアモアっと イメージ?出来たよ
尊敬 (* ̄┏Д┓ ̄*) ポッ
10行目まで頑張って読みました。。。