AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
12:繰り返し
 
for文
同じ文を何度も実行させる場合には、その文を何個も何個も書くのではなく、繰り返し処理を行うようにします。繰り返し回数が分かっている場合には、for文が利用出来ますと前節で記述しましたが、その他にも繰り返しを行うための処理文があります。
繰り返し for 文
書式: for 制御変数:=初期値 to 終値 do 文
 
説明: 制御変数の値を初期値から始めて、
    1ずつ増やしながら終値になるまで文を繰り返す。
    文は1文だけなので、2文以上にする時には、
    begin〜end で複合文にする。その場合は
     for 制御変数:=初期値 to 終値 do begin
       文 ;
       文 ;
       ・・・
     end
    のようになる。
書式: for 制御変数:=初期値 downto 終値 do 文
 
説明: 制御変数の値を初期値から始めて、
    1ずつ減らしながら終値になるまで文を繰り返す。
    文は1文だけなので、2文以上にする時には、
    begin〜end で複合文にする。その場合は
     for 制御変数:=初期値 downto 終値 do begin
       文 ;
       文 ;
       ・・・
     end
    のようになる。
※何回繰り返すかわかっている場合に利用します。

・Label1の文字に「*」30個書きたい
s := '' ;
for i:=1 to 30 do
 s := s + '*' ;
Label1.Caption := s ;

・1〜100の数値を足した結果をEdit1に表示したい
j := 0 ;
for i:=1 to 100 do
 j := j + i ;
Edit1.Text := IntToStr(j) ;

繰り返し(ループ)の制御変数 i は、繰り返し文内で値を参照する事は出来ますが、値を代入する事は出来ません。例えば、
j := 0 ;
for i:=1 to 100 do begin
 j := j + i ;
 if 〜 then i := 10 ;
end;
Edit1.Text := IntToStr(j) ;

のように、何かをしたら値を戻す/進めるという処理は出来ません。
 
while文
繰り返す回数が分からない場合や、for文でいう制御変数の値を途中で変えたい場合には、while文を利用する事が出来ます。
繰り返し while 文
書式: while 条件式 do 文
 
説明: 条件式を評価し、
    条件式の結果が真(true)であれば文を実行し、
    再び条件式を評価し、
    その結果が真であれば文を実行し、
    ・・・と、
    結果が偽(false)になるまで繰り返す。
    文は1文だけなので、2文以上にする時には、
    begin〜end で複合文にする。その場合は
     while 条件式 do begin
       文 ;
       文 ;
       ・・・
     end
    のようになる。
※繰り返す回数が分からない場合にも利用出来ます。

・Label1の文字に「*」30個書きたい
s := '' ;
i := 1 ;
while ( i <= 30 ) do begin
 s := s + '*' ;
 Inc(i) ;
end;
Label1.Caption := s ;

iの値:1、(i <= 30)は真なので、文を実行
iの値:2、(i <= 30)は真なので、文を実行
iの値:3、(i <= 30)は真なので、文を実行
 ・・・
iの値:29、(i <= 30)は真なので、文を実行
iの値:30、(i <= 30)は真なので、文を実行
iの値:31、(i <= 30)は偽なので、文は実行せず次の行へ
となります。
「Inc(i)」は、整数変数 i の値を1増やす(インクリメント)という事です。「i := i + 1」と同じ意味です。逆に、「Dec(i)」は、整数変数 i の値を1減らす(デクリメント)という事であり「i := i - 1」と同じ意味です。
 
条件式の評価は最初に行われます。最初から条件式が偽の場合には、文は実行されません。例えば、
s := '' ;
i := 100 ;
while ( i <= 30 ) do begin
 s := s + '*' ;
 Inc(i) ;
end;
Label1.Caption := s ;

の場合は、while文の中身は1度も実行されません。
 
j := 0 ;
i := 1 ;
while ( i <= 100 ) do begin
 j := j + i ;
 Inc(i) ;
 if 〜 then i := 10 ;
end;
Edit1.Text := IntToStr(j) ;

のような事を行う事が出来ます。また、
while ( True ) do begin
 〜 ;
end;

のようになっていると、永遠に「〜」の部分を実行し続けます。アプリケーションはずっとその部分を繰り返し、強制終了をしないと止まらなくなってしまいます。一歩間違うとPCがフリーズする事もあります。これを無限ループといいます。こういうプログラミングをしないよう注意して下さい。
 
repeat文
while文では、条件式によっては繰り返し文が1度も実行されない場合もありますが、絶対に最低でも1度は必ず実行させたい、という場合には repeat文を利用します。
繰り返し repeat 文
書式: repeat 文; 文; ・・・;文 until 条件式
 
説明: repeat と untilの間の文の列を
    条件式が真になるまで繰り返し実行する。
    文の列は、必ず1回は実行される。
    文は1文以上可能。
    begin〜end で複合文にする必要は無し。
※C言語の do〜while()とは意味が逆なので注意!

・Label1の文字に「*」30個書きたい
s := '' ;
i := 0 ;
repeat
 s := s + '*' ;
 Inc(i) ;
until (i = 30) ;
Label1.Caption := s ;

 
goto文
BASICならではのgoto文を使う事も出来ます。元々の行番号はありませんので名札(ラベル)を行番号のように宣言して使う事になります。厳密には繰り返し文ではありませんが、繰り返しにも利用出来ますのでここで説明していますが、一般的に繰り返しを行う場合には上記のfor文、while文、repeat文を使うようにして下さい。
繰り返し goto 文
書式: goto 名札
 
説明: goto文は、それ以降の処理を続けるプログラム
    内の位置を指定するための文。
    if文,while文,repeat文,for文の中の文に付け
    られたものであってはならない。
    (外側へのジャンプは良いが
     内側へのジャンプは不可)
名札(label)
名札宣言部(label declaration part)
    label 名札,・・・,名札;
 
説明: そのブロックの中の文の どれかに付ける。
    別の手続きや関数内にはダメ。
    名札は、任意の識別子、又は、0から9999まで
    の数字列。名札の後には : を付けて指定する

・Label1の文字に「*」30個書きたい
procedure TForm1.○○○(〜);
label HERE,0001 ;
var s : string ;
  i : integer ;
begin
 s := '' ;
 i := 0 ;
HERE:
 s := s + '*' ;
 Inc(i) ;
 if (i = 30) then goto 0001 ;
 goto HERE ;
0001:
 Label1.Caption := s ;
end;

無限ループを作ってしまわないよう注意して下さい。
多重ループ内から一度に外へ抜け出す場合等にも利用されます。
但し、goto文を使うとプログラムが汚くなりますので余り使わないようにしましょう。
 
Continue文
Continue 文
書式: Continue
 
説明: for文,while文,repeat文を継続

繰り返し処理が複雑になってきて、if文等で入り組んでくるとプログラムが見難くなって分かりにくくなる場合があります。そういった場合、繰り返し処理内の以下の処理をせず、次の繰り返し処理へ継続させる、という場合に利用します。
for 〜 do begin
 if (○○) then begin
  if (△△) then begin
   if (□□) then begin
    ・・・
end;

というような場合、段付け(インデント)が深くなると見にくく分かりにくくなりますので、
for 〜 do begin
 if not(○○) then Continue ;
 if (△△) then begin
  if (□□) then begin
   ・・・
end;

というように、条件式○○が真の場合には・・・という箇所を、逆の意味の「条件式○○が偽の場合には以下の処理はせずループの次の処理へ」と処理を区切ってしまって段付けを1段減らす事が出来る、というようなものです。
 
Break文
Break 文
書式: Break
 
説明: for文,while文,repeat文を終了

繰り返し処理を途中で終了する際に利用します。if文と組み合わせて、やりたい事が満足されたら繰り返しを継続する必要はないので途中で終わらせる、等で利用します。例えば、
for 〜 do begin
 ・・・
 if (○○) then Break ;
 ・・・
end;

のように、条件式○○が真になったら直ぐにそこで繰り返しを終了させる事が出来ます。例えば、文章のなかのキーワード検索をしていて、見つかったらそこで終わらせる、等で利用されます。
 
Exit文
Exit 文
書式: Exit
 
説明: 現在のブロックをすぐに終了

イベントハンドラ内、自作の手続きや関数内で、if文などと組み合わせて、ある条件になった場合、そのイベントハンドラ、自作の手続きや関数をすぐに終了させてしまう、というように利用されます。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
 01 02 03 04
 05 06 07 08
 09 10 11 12
 13 14 15 16
 17 18 19 20
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.