Difference between revisions of "Basic Pascal Tutorial/Chapter 3/IF/ja"

From Lazarus wiki
Jump to navigationJump to search
m (bypass language bar/categorization template redirect [cf. discussion])
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{IF}}
+
{{Basic Pascal Tutorial/Chapter 3/IF}}
  
 
3Ca - IF (著者: Tao Yue, 状態: 原文のまま修正なし)
 
3Ca - IF (著者: Tao Yue, 状態: 原文のまま修正なし)
  
 
<tt>IF</tt> 文はブール式の結果をもとに分岐を可能にする。 1方向の分岐の形式は次のようになる。
 
<tt>IF</tt> 文はブール式の結果をもとに分岐を可能にする。 1方向の分岐の形式は次のようになる。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if ブール式 then
 
if ブール式 then
   真の場合の命令文;  
+
   真の場合の文;  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
もし、ブール式が <tt>true</tt> と評価されたなら、命令文が実行される。そうでない場合には、スキップされる。
+
もし、ブール式が <tt>true</tt> と評価されたなら、文が実行される。そうでない場合には、スキップされる。
  
<tt>IF</tt> 文は1つの命令文のみ受け取る。命令文の組み合わせで分岐させたいなら、 <tt>begin-end</tt> [[ブロック]] で命令文を囲む。
+
<tt>IF</tt> 文は1つの文のみ受け取る。文の組み合わせで分岐させたいなら、 <tt>begin-end</tt> [[ブロック]] で文を囲む。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if ブール式 then
 
if ブール式 then
 
begin
 
begin
   命令文1;
+
   文1;
   命令文2
+
   文2
 
end;  
 
end;  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
2方向の分岐もある。
 
2方向の分岐もある。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if ブール式 then
 
if ブール式 then
   真の場合の命令文
+
   真の場合の文
 
else
 
else
   偽の場合の命令文;  
+
   偽の場合の文;  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
ブール式が <tt>FALSE</tt> と評価されると、 <tt>else</tt> に続く命令文が実行される。 <tt>else</tt> の前の命令文にはセミコロンをつけてはいけないことに注意しよう。つけてしまうと、コンピュータはそれを1方向の選択と扱い、 else がどこからきたのかわからないままになってしまうからである。
+
ブール式が <tt>FALSE</tt> と評価されると、 <tt>else</tt> に続く文が実行される。 <tt>else</tt> の前の文にはセミコロンをつけてはいけないことに注意しよう。つけてしまうと、コンピュータはそれを1方向の選択と扱い、 else がどこからきたのかわからないままになってしまうからである。
  
 
複数選択が必要な場合には、単に <tt>if</tt> 文を入れ子にすればよい。
 
複数選択が必要な場合には、単に <tt>if</tt> 文を入れ子にすればよい。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if 条件1 then
 
if 条件1 then
  命令文1
+
    文1
 
else
 
else
 
   if 条件2 then
 
   if 条件2 then
     命令文2
+
     文2
 
   else
 
   else
     命令文3;
+
     文3;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
入れ子にする場合には注意が必要である。しばしばコンピュータはあなたが望んでいることとは違うことを実行するからである。
 
入れ子にする場合には注意が必要である。しばしばコンピュータはあなたが望んでいることとは違うことを実行するからである。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if 条件1 then
 
if 条件1 then
 
   if 条件2 then
 
   if 条件2 then
    命令文2
+
    文2
 
else
 
else
  命令文1;
+
    文1;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
<tt>else</tt> は常に直前の <tt>if</tt> とマッチする。従って、コンピュータはコードの前のブロックを次のように解釈する。
 
<tt>else</tt> は常に直前の <tt>if</tt> とマッチする。従って、コンピュータはコードの前のブロックを次のように解釈する。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if 条件1 then
 
if 条件1 then
 
   if 条件2 then
 
   if 条件2 then
    命令文2
+
      文2
 
   else
 
   else
    命令文1;
+
      文1;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
空の命令文(null statement)を使って次のようにするすることもできる。
+
空の文(null statement)を使って次のようにするすることもできる。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if 条件1 then
 
if 条件1 then
 
   if 条件2 then
 
   if 条件2 then
    命令文2
+
    文2
 
   else
 
   else
 
else
 
else
  命令文1;
+
    文1;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
あるいは <tt>begin-end</tt> のブロックを利用することもできる。しかし、コードをきれいにする最良の方法は条件を書き換えることだろう。
 
あるいは <tt>begin-end</tt> のブロックを利用することもできる。しかし、コードをきれいにする最良の方法は条件を書き換えることだろう。
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if not 条件1 then
 
if not 条件1 then
  命令文1
+
    文1
 
else
 
else
 
   if 条件2 then
 
   if 条件2 then
     命令文2;
+
     文2;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
この例ではThis example illustrates where the not operator comes in very handy. If Condition1 had been a Boolean like: <tt>(not(a < b) or (c + 3 > 6)) and g</tt>, reversing the expression would be more difficult than NOTting it.
+
この例は not 演算子を非常にうまく利用している。もし、条件1が次のようなブール式だとすると、 <tt>(not(a < b) or (c + 3 > 6)) and g</tt>、式を反転させるのは NOT をつけるだけでは済まず、より難しいものとなるだろう。
  
Also notice how important indentation is to convey the logic of program code to a human, but the compiler ignores the indentation.
+
プログラムのロジックを人間に伝えるにはインデントがどれほど重要かにも気がついただろう。しかし、コンパイラはインデントは無視してしまうのである。
  
  
 
{|style=color-backgroud="white" cellspacing="20"
 
{|style=color-backgroud="white" cellspacing="20"
|[[Boolean_Expressions/ja|previous]]   
+
|[[Basic Pascal Tutorial/Chapter 3/Boolean Expressions/ja|previous]]   
|[[Contents/ja|contents]]  
+
|[[Basic Pascal Tutorial/Contents/ja|contents]]  
|[[CASE/ja|next]]
+
|[[Basic Pascal Tutorial/Chapter 3/CASE/ja|next]]
 
|}
 
|}

Latest revision as of 16:18, 20 August 2022

български (bg) English (en) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

3Ca - IF (著者: Tao Yue, 状態: 原文のまま修正なし)

IF 文はブール式の結果をもとに分岐を可能にする。 1方向の分岐の形式は次のようになる。

if ブール式 then
  真の場合の文;

もし、ブール式が true と評価されたなら、文が実行される。そうでない場合には、スキップされる。

IF 文は1つの文のみ受け取る。文の組み合わせで分岐させたいなら、 begin-end ブロック で文を囲む。

if ブール式 then
begin
  1;
  2
end;

2方向の分岐もある。

if ブール式 then
  真の場合の文
else
  偽の場合の文;

ブール式が FALSE と評価されると、 else に続く文が実行される。 else の前の文にはセミコロンをつけてはいけないことに注意しよう。つけてしまうと、コンピュータはそれを1方向の選択と扱い、 else がどこからきたのかわからないままになってしまうからである。

複数選択が必要な場合には、単に if 文を入れ子にすればよい。

if 条件1 then
    1
else
  if 条件2 then
    2
  else
    3;

入れ子にする場合には注意が必要である。しばしばコンピュータはあなたが望んでいることとは違うことを実行するからである。

if 条件1 then
  if 条件2 then
     2
else
     1;

else は常に直前の if とマッチする。従って、コンピュータはコードの前のブロックを次のように解釈する。

if 条件1 then
  if 条件2 then
      2
  else
      1;

空の文(null statement)を使って次のようにするすることもできる。

if 条件1 then
  if 条件2 then
     2
  else
else
     1;

あるいは begin-end のブロックを利用することもできる。しかし、コードをきれいにする最良の方法は条件を書き換えることだろう。

if not 条件1 then
    1
else
  if 条件2 then
    2;

この例は not 演算子を非常にうまく利用している。もし、条件1が次のようなブール式だとすると、 (not(a < b) or (c + 3 > 6)) and g、式を反転させるのは NOT をつけるだけでは済まず、より難しいものとなるだろう。

プログラムのロジックを人間に伝えるにはインデントがどれほど重要かにも気がついただろう。しかし、コンパイラはインデントは無視してしまうのである。


previous contents next