Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の2_A問題をC++とPython で解いてみました。
ITP1 のトピック2では、条件分岐を学びます。「条件によって実行する内容を変え、処理の流れを制御する構造文を学習します。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。
問題(2_A: Small, Large, or Equal)
問題はリンク先をご覧ください。
AOJ ITP1 2_A問題:Small, Large, or Equal
if – else if – else 文を学びます。
解答案
C++ プログラム例(ITP1 2_A)
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a > b) {
cout << "a > b" << endl;
} else if (a < b) {
cout << "a < b" << endl;
} else {
cout << "a == b" << endl;
}
return 0;
}
C と C++ は、プリプロセッサには、#elif がありますが、本文は、else if と書く必要があります。また条件文の本文は、上記の例のように複合文で書くことをお勧めします。
Python プログラム例(ITP1 2_A)
if – elif – else で記載します。Python の特徴ですが、条件文の本文の範囲がインデントだけで決まります。これにより、波カッコが必要なくなっています。
a, b = map(int, input().split())
if a > b:
print("a > b")
elif a < b:
print("a < b")
else:
print("a == b")
上記プログラムは、すべて AOJ で「AC(Accepted=正解)」と判定されます。
最後に
条件分岐が書けるようになれば、プログラムで書ける幅が広がります。C と C++ では、条件文の本文を複合文で書かない場合に、文を追加すると不具合になる可能性があります。Python は、条件文の本文の範囲が見た目(インデント)と合うため、この点でも優れていると思います。
引き続き、ITP1 の問題を紹介していきます。