No.6ベストアンサー
- 回答日時:
「フラグを立てる」ということは、要は目印をつけて置く、という感じで捕らえていいと思います。
語源はアセンブラ言語だったと思いますが、ここでは触れません。
$flag = 1;
という式自体はflagという(任意の)変数に1を代入する、ということだけです。これに意味があるかないかは、この式以降、この変数を参照しているかどうかです。参考にしているプログラムで、変数flagを参照している箇所がありませんか?
if( $flag == 0 ){
}else{
}
のような箇所です(Perlではいろいろな書き方ができるので、ほんの1例ですが)。
なぜ、このようなことをするか。
幾つか自分なりに考えて、以下のようなことでは、と思っています(また、自分が作成するときも意識しています)
・長い計算式は、長いなりに処理時間がかかるので、結果だけを保持しておいて、以降、これを参照すれば、処理時間が短くなる。
今のマシンはハイスペックなので、さほど気にすることも無いですが、式が長いほど、括弧(優先順位)が多いほど、処理が重くなるというものです。結果をフラグに保持しておけば、長い計算式をその度に処理させなくても済みます。
・そもそも、そんな長い式をいちいち書きたくないので、代用するだけのこと。
コピーアンドペーストを繰り返してもいいのですが、ソースも汚くなりますし、修正のとき、全部を書き換えなければいけません。フラグに結果を保持しておけば、結果を作る式を書き換えるだけで済みます。
・デバッグ、修正がしやすい
上でも書きましたが、修正漏れを防ぐことが出来ます。
まあ、こんな感じでしょうか?
因みに、代入値は0か1である必要はありません。
たまたま、今まで見ていたプログラムで、
変数名が flag だった
代入値が 0か1 だった
だけです。
今では、「フラグ」とは言っても、「変数」に変わりないかと思います。
(これを追求すれば、結局アセンブラの話になるので)
うーん。短く書こうと思ったけど、結局長くなってしまいました。すいません。
No.5
- 回答日時:
プログラムで最初でつまずくのが、これが単語なのかそれとも変数なのか?って事だと思います。
っていうか、私は最初分からなかった。(w
$flag = 1 っていうのは、変数なので要は作成した人のかって。
$check = yes でも、OKです。
$mail_wo_sousinnsimasu = yes # 不必要ならno
これを、スクリプトの中で $mail_wo_sousinnsimasu をチェックして yes ならメール送信のサブルーチンなりを起動させるって事ですよ。
違うのかな?
$flag = 1 # 0 って特殊な事?それとも慣用?
昔は、サーバのメモリーの容量も小さかったし、シンプルさ、小ささが美徳とされていたし、0/1がオンオフはパソコンの基本だからだと思うけど。
これからはon/offやyes/noでもいいと思いますよ。
No.4
- 回答日時:
フラグはプログラムを作る上で必要になってきます。
簡単に言えば2種類しかないもの(男女・メールの未読既読・有無など)を判断するのに使うものです。
メール未読既読で説明すると、
メールの内容をみたら既読($flag = 1)
メールの内容を見てなかったら($flag = 0)
という感じです。
No.3
- 回答日時:
Perlの例としてはバカげてるけど、
文字列から数字の部分を数字として抜き出すプログラムです。
ココで、$flag は、数値があったことを表しています。
$text="abcd123efg456";
$flag=0;
$n=0;
foreach $c (split(//, $text)){
if($c=~/\d/){
$flag=1;
$n=$n*10 + $c;
} else {
if($flag){
print "$n\n";
$flag=0;
$n=0;
}
}
}
if($flag){
print "$n\n";
$flag=0;
$n=0;
}
No.2
- 回答日時:
例えばファイルを1件読んで仕事をするとします。
ある項目を書き換えるとフラグを1にします。
これをいろんなところでやって最後にファイルの書き戻しの要否を判定する必要があります。
このときフラグをチェックして1ならファイル書き戻し要、0なら書き戻し不要となります。
逆にファイルの内容でいろんなフラグをオンオフしておいてそれに基づいて各部分の処理を分岐させることもやります。
似たものにカウンターがあります。
カウンターで数を数えておきカウンターの値によって後処理を分岐させるのです。
No.1
- 回答日時:
フラグを立てる、というのは、目印をつける、というように言い換えて良いと思います。
例えば、
if($number > 100) { $flag = 1; }
とあれば、「$flagは$numberが100以上である」という目印をつける、と言うことができるでしょう。
フラグの数値に0と1しかないのは、perlにおける比較演算子が返す値が0か1かだからです。
例えば、上記のifの中の、
($number > 100)
という比較式は、$numberが100より大きい数値の場合は1、$numberが100以下の場合は0が返ります。
$number = 1000;
$flag = ($number > 100);
print $flag;
とすると、"1"が出力されます。
厳密には違いますが、$flag=1は「正しい(真:true)」、$flag=0は「正しくない(偽:false)」と覚えておけば良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- 建設業・製造業 測量業初心者向けの解説本などはありますか 2 2023/07/12 20:58
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(プログラミング・Web制作) pythonのDjangoでHTML内で変数を利用したいです 3 2022/05/15 15:33
- 超常現象・オカルト 私に向いているお仕事は何かありますでしょうか。 簡単に自己紹介をすると、私は高卒のオカルト好きで、趣 7 2023/01/10 14:16
- 英語 60歳からでもできる、英語の勉強法を教えてください。 7 2023/04/05 20:44
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 数学 モデルのパラメータの定義がいまいちわかりません。 3 2022/10/11 15:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
回数を指定しないで空白行まで...
-
問題作成のWebアプリの作り方を...
-
C言語のflagの使い方が分かりま...
-
バッファリング処理を高速化し...
-
初回起動のみ判別したい
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
16進の10進変換について
-
文字の横にプルダウンを表示さ...
-
formで特定のinputを送信しない...
-
ACCESS テキストボックスを隙...
-
子windowsからsubmit()後にclos...
-
pythonで演算子を変数に代入す...
-
FindFirst を複数条件で検索
-
【至急!!!】python言語で本を見...
-
<SELECT>タグの折り返し
-
構造体の各データの表示につい...
-
【C#】数値の範囲チェックについて
-
VBAでPDFのコピーとリネームを...
-
Use of uninitialized value ---
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
初回起動のみ判別したい
-
C言語のflagの使い方が分かりま...
-
実行中の変数の中身をイミディ...
-
UWSC SLCTBOXもしくはSELECTに...
-
perl:ループのカウンタ変数の値...
-
arduino の割り込み処理について
-
問題作成のWebアプリの作り方を...
-
VBAのCallステートメントについて
-
処理終了後、他のページへジャ...
-
フラグをたてる、、の意味を教...
-
夕方くらいから急にGoogle検索...
-
HTML
-
SetDlgItemInt( ) c++
-
教えてください。 画像処理のプ...
-
C言語のプログラミング
-
バッファリング処理を高速化し...
-
Pythonでこのプログラミングを...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
おすすめ情報