文は主に宣言文と実行文に分類されます。宣言文は、型と変数名に対応したメモリ領域の確保を行い、実行文は計算式などの処理を行います。実行文は以下の3つの文に分類されます。
ある実行文の中に別の文を"入れ子構造"で含めることができます。たとえば、if文の中にさらにif文やfor文などを含めたり、for文の中にさらにif文やwhile文などを含めることができます。
アルゴリズム(問題を解く手順)を組み立てることを考えると、プログラムは以下の構造を持つブロックで構成されます。
たとえば、次のプログラムはfor文による2重ループにより九九の表を出力します。
for (let i = 1; i <= 9; i++) { for (let j = 1; j <= 9; j++) { // i の段を横1列に出力する let val = i * j; if (val < 10) { // 1桁の場合は空白を入れて調整 process.stdout.write(" "); } process.stdout.write(" " + val); } console.log(); // i の段の出力を終えて改行 }
出力結果:
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
出力にprocess.stdout.writeを用いていますが、これは感覚的にはconsole.logの出力から改行を抜いたものです。 しかし、console.logは デバッグやコンソールへの出力に対し、process.stdout.writeは標準出力への出力という大きな違いがあります。 この違いを意識しながら出力するようにしましょう。 また、process.stdout.writeで出力できるのは文字列で、数値では出力できない点に注意しましょう。(今回の出力の" " + valで考えると、valは数値ですが、空白文字との連結なのでvalは自動で文字列に変更されています。)
オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。 |