OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

フラグについて

  • すぐに回答を!
  • 質問No.123566
  • 閲覧数158
  • ありがとう数4
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 82% (38/46)

loop文等で、よくフラグを立てろといわれるんですが、意味もわからないし、
何の為に、どのように使うんでしょうか?教えて下さい。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル9

ベストアンサー率 48% (24/49)

まず、「フラグを立てろと」ということですが、
意味は、条件に対する結果だとおもってください。
すると「何の為に」が条件

Loop構文だと
ループ(繰り返し)を終わる条件を  満たよ/満たしていないよ(フラグ)
ということになります。

※注 Do Loop の場合は繰り返す条件または、繰り返しを終わる条件を指定できます。 

例題で考えます。

「例題1」
最初に入力した文字と同じ文字を入力するまで、何度でも再入力を要求するプログラムを作る。


「考え方」
最初に入力した文字と同じ場合にループを終わる。

ループ(繰り返し)を終わる条件 = 最初に入力した文字と同じ場合
満たよ/満たしていないよ(フラグ)= 最初に入力した文字と同じ場合

になる。

解答Aと解答Bを用意しました。解答Bの方が質問の解答に、あってますが
例題の解答としては、Aの方がシンプルです。解答Bの場合に、なる場合は
大抵終わる条件が複数ある場合です。


「解答A」

Private Sub Form_Load()

Dim sStr As String
Dim sLoopStr As String
Dim lCnt As String

sStr = InputBox("文字をいれてください。")


Do Until sStr = sLoopStr

sLoopStr = InputBox(sStr & "と同じ文字を入力したらループを抜けます。" & lCnt & "回目")

Loop

  End

End Sub


「解答B」

Private Sub Form_Load()

Dim sStr As String '最初
Dim sLoopStr As String '2回目以降
Dim lCnt As String '回数

Dim bFlg As Boolean 'フラグ

sStr = InputBox("文字をいれてください。")

bFlg = False
lCnt = 1

Do Until bFlg = True

sLoopStr = InputBox(sStr & "と同じ文字を入力したらループを抜けます。" & lCnt & "回目")

If sStr = sLoopStr Then
bFlg = True 'フラグを立てる
End If

    lCnt = lCnt + 1

Loop

End

End Sub

そこで、条件を複数にします。

「例題2」

例題1に回数制限をつけます。5回間違えたら入力した文字にかかわらず終了します。

解答は、以下のようにします。

Private Sub Form_Load()

Dim sStr As String '最初
Dim sLoopStr As String '2回目以降
Dim lCnt As String '回数

Dim bFlg As Boolean 'フラグ

sStr = InputBox("文字をいれてください。")

bFlg = False
lCnt = 1

Do Until bFlg = True

sLoopStr = InputBox(sStr & "と同じ文字を入力したらループを抜けます。" & lCnt & "回目")

If sStr = sLoopStr Then
bFlg = True 'フラグを立てる
End If

If lCnt = 5 then
bFlg = True 'フラグを立てる
End If

    lCnt = lCnt + 1

Loop

End

End Sub
お礼コメント
jiri

お礼率 82% (38/46)

例題付でとてもよく解りました。
ご丁寧にありがとうございます。
投稿日時 - 2001-09-26 15:20:41
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル10

ベストアンサー率 24% (47/191)

ループ中での処理で、ある条件が満たされたときにフラグと呼ばれる変数の値を 変える(例えば0から1に)ことを「フラグを立てる」といいます。 ループ中ではフラグの値を監視していて、フラグが立ったときに特定の処理を行ったり、 ループを抜けたりします。 ...続きを読む
ループ中での処理で、ある条件が満たされたときにフラグと呼ばれる変数の値を
変える(例えば0から1に)ことを「フラグを立てる」といいます。
ループ中ではフラグの値を監視していて、フラグが立ったときに特定の処理を行ったり、
ループを抜けたりします。
お礼コメント
jiri

お礼率 82% (38/46)

そこまでは、なんとなくわかります。
ありがとうございます。
投稿日時 - 2001-09-02 12:26:52


  • 回答No.2
レベル14

ベストアンサー率 30% (2593/8599)

フラグ(Flag)というのはもともと「旗」という意味です。 旗で、今どういう状態にあるかを表しておくわけです。 例えば「降水確率80%」という旗が掲揚されていれば、出かける人はそれを見て傘を持ちます。 旗を立てたり、下ろしたりする仕事と、旗を見て行動を変えるという事柄が別々のタイミングで起こるわけですね。 フラグを立てたり見たりするのはループの中が多いですが、必ずしもそれだけではありません。複 ...続きを読む
フラグ(Flag)というのはもともと「旗」という意味です。
旗で、今どういう状態にあるかを表しておくわけです。
例えば「降水確率80%」という旗が掲揚されていれば、出かける人はそれを見て傘を持ちます。
旗を立てたり、下ろしたりする仕事と、旗を見て行動を変えるという事柄が別々のタイミングで起こるわけですね。

フラグを立てたり見たりするのはループの中が多いですが、必ずしもそれだけではありません。複数のプログラムの間でフラグを共有することも多いです。(似たものでセマフォ:腕木式信号機:というのもあります)
お礼コメント
jiri

お礼率 82% (38/46)

旗ですか。なるほど.....。
ありがとうございます。
投稿日時 - 2001-09-02 12:34:23
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

こんな感じ dim Flag as boolean '幾つかの条件にヒットしたとき、ループを抜ける Flag=false do  ループ内の処理を行う    if … then Flag = True'脱出条件の判定  if … then Flag = True Loop until Flag=True ってな感じですね。 If … then Exit ...続きを読む
こんな感じ

dim Flag as boolean

'幾つかの条件にヒットしたとき、ループを抜ける
Flag=false
do
 ループ内の処理を行う
 
 if … then Flag = True'脱出条件の判定
 if … then Flag = True
Loop until Flag=True

ってな感じですね。
If … then Exit Do
ってやってしまってもいいんですが、プログラムが見難くなります。
お礼コメント
jiri

お礼率 82% (38/46)

フラグを立てる意味は見難いか、否かだけなんですかね????
投稿日時 - 2001-09-02 12:36:30
  • 回答No.5
レベル13

ベストアンサー率 46% (643/1383)

>フラグを立てる意味は見難いか、否かだけなんですかね???? そうですね。基本的にはプログラムを見やすくするためのテクニックだと思ってください。 自分だけでなく第三者にとっても見易い、分かり易いプログラムが書けるってのはプログラマにとって重要な資質の一つです。 if 式A OR 式B OR 式C OR 式D OR 式E THEN 処理1 って書くよりも、 Flag = False ...続きを読む
>フラグを立てる意味は見難いか、否かだけなんですかね????

そうですね。基本的にはプログラムを見やすくするためのテクニックだと思ってください。

自分だけでなく第三者にとっても見易い、分かり易いプログラムが書けるってのはプログラマにとって重要な資質の一つです。

if 式A OR 式B OR 式C OR 式D OR 式E THEN 処理1
って書くよりも、

Flag = False
if 式A THEN Flag =True
if 式B THEN Flag =True
if 式C THEN Flag =True
if 式D THEN Flag =True
if 式E THEN Flag =True
If Flag = True Then 処理1

って書くほうが見やすいですよね.
要は、フラグを使うことによってプログラムが見やすくなるんであれば、フラグを使ったほうが絶対にいいってことです。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ