Delphi の if 文における then は、C++ では書きません。また、既述の通り、begin, end は {, } になり、if 文の条件判断でよく使われる等号 = も == になります。
【基礎課題 4-1】は、Delphi では
procedure TForm1.ButtonShindanClick(Sender: TObject); begin if SpinEdit.Value >= 6 then begin CheckBoxHigh.Checked := True; EditMessage.Text := '少しストレスがたまっています。気分転換を。'; end else begin CheckBoxLow.Checked := True; EditMessage.Text := 'ストレスの兆候がありますが、心配は不要。'; end ; end;
となりますが、C++Builder では
void __fastcall TForm1::ButtonShindanClick(TObject *Sender) { if (SpinEdit->Value >= 6) { CheckBoxHigh->Checked = true; EditMessage->Text = "少しストレスがたまっています。気分転換を。"; } else { CheckBoxLow->Checked = true; EditMessage->Text = "ストレスの兆候がありますが、心配は不要。"; } }
となります (C++ では if 文の字下げは一般に1段だけの字下げです)。もちろん else 以下を省略することも出来ます。省略すると次のようになります。
void __fastcall TForm1::ButtonShindanClick(TObject *Sender) { if (SpinEdit->Value >= 6) { CheckBoxHigh->Checked = true; EditMessage->Text = "少しストレスがたまっています。気分転換を。"; } }
数学表記 | 意味 | Delphi での表記 | C++ での表記 |
---|---|---|---|
A>B | A は B より大きい | A > B | A > B |
A≧B | A は B 以上 | A >= B | A >= B |
A=B | A は B に等しい | A = B | A == B |
A≦B | A は B 以下 | A <= B | A <= B |
A<B | A は B より小さい | A < B | A < B |
A≠B | A は B に等しくない | A <> B | A != B |
【基礎課題 4-6】は、Delphi では
procedure TForm1.ButtonShindanClick(Sender: TObject); begin case SpinEdit.Value of 9..10 : begin // 変数の範囲が 9〜10 のときの処理 end; 6..8 : begin // 変数の範囲が 6〜8 のときの処理 end; 3..5 : begin // 変数の範囲が 3〜5 のときの処理 end; 0..2 : begin // 変数の範囲が 0〜2 のときの処理 end; end; end;
という形をしていますが、C++Builder では
void __fastcall TForm1::ButtonShindanClick(TObject *Sender) { switch (SpinEdit->Value) { case 9: case 10: // 変数の範囲が 9〜10 のときの処理 break; case 6: case 7: case 8: // 変数の範囲が 6〜8 のときの処理 break; case 3: case 4: case 5: // 変数の範囲が 3〜5 のときの処理 break; case 0: case 1: case 2: // 変数の範囲が 0〜2 のときの処理 break; } }
となります。これを見比べて分かるように、
また、Delphi の case 文における else は、C++ の switch 文では default となります。
Delphi による【基礎課題 4-19】
procedure TForm1.ButtonCalcClick(Sender: TObject); var i: Integer; begin for i := 1 to SpinEditTimes.Value do begin SpinEditResult.Value := SpinEditResult.Value + i * 2; end; end;
C++Builder による【基礎課題 4-19】
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { int i; for (i = 1; i <= SpinEditTimes->Value; i = i + 1) { SpinEditResult->Value = SpinEditResult->Value + i * 2; } }
C++ では、for 文は for (<初期化部>; <条件部>; <増分部>) という形をしています。for 文に来ると、まず初期化部 (この例では i = 1) を実行し、条件部 (この例では i <= SpinEditTimes->Value) を満たしている間は繰り返し処理をします。なお、1回分の繰り返し処理の最後には増分部 (この例では i = i + 1) を実行します。
C++ の演算子の別表記により、上のプログラムは次のようにも書けます。
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { int i; for (i = 1; i <= SpinEditTimes->Value; i++) { SpinEditResult->Value += i * 2; } }
補足 ++ は C 言語では非常によく使われます。ちなみに、C++言語という名称は、従来のC言語にオブジェクト指向の要素を付加したもの、つまり一歩進んだC言語という意味でつけられたようです。
また、i を1ずつではなく2ずつ増やしたり、for の中で変数 i を用意したり出来ます。
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { for (int i = 2; i <= SpinEditTimes->Value * 2; i += 2) { SpinEditResult->Value += i; } }
Delphi による 4-10 の【練習問題】
procedure TForm1.ButtonCalcClick(Sender: TObject); begin while SpinEditBact.Value < 10000 do begin SpinEditMinute.Value := SpinEditMinute.Value + 1; SpinEditBact.Value := SpinEditBact.Value * 2; end; end;
C++Builder による 4-10 の【練習問題】
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { while (SpinEditBact->Value < 10000) { SpinEditMinute->Value = SpinEditMinute->Value + 1; SpinEditBact->Value = SpinEditBact->Value * 2; } }
while 文は、C++ でも殆ど同じです。なお、C++ の演算子の別表記により、上のプログラムは次のようにも書けます。
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { while (SpinEditBact->Value < 10000) { SpinEditMinute->Value++; SpinEditBact->Value *= 2; } }
C++ では、どんな while 文でも for 文として書くことが出来ます。
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { for ( ; SpinEditBact->Value < 10000; ) { SpinEditMinute->Value++; SpinEditBact->Value *= 2; } }
更に、SpinEditMinute->Value++ を for 文の増分部に移すことも出来ます。
void __fastcall TForm1::ButtonCalcClick(TObject *Sender) { for ( ; SpinEditBact->Value < 10000; SpinEditMinute->Value++) { SpinEditBact->Value *= 2; } }