左下のようなHTMLの生成を考えよう(コメントは除く). これらは,右下のように分けて考えることができる.
<table border> <tr> <td>1</td> <!-- 1 × 1 --> <td>2</td> <!-- 1 × 2 --> <td>3</td> <!-- 1 × 3 --> <td>4</td> <!-- 1 × 4 --> <td>5</td> <!-- 1 × 5 --> <td>6</td> <!-- 1 × 6 --> <td>7</td> <!-- 1 × 7 --> <td>8</td> <!-- 1 × 8 --> <td>9</td> <!-- 1 × 9 --> </tr> <tr> <td>2</td> <!-- 2 × 1 --> <td>4</td> <!-- 2 × 2 --> <td>6</td> <!-- 2 × 3 --> <td>8</td> <!-- 2 × 4 --> <td>10</td> <!-- 2 × 5 --> <td>12</td> <!-- 2 × 6 --> <td>14</td> <!-- 2 × 7 --> <td>16</td> <!-- 2 × 8 --> <td>18</td> <!-- 2 × 9 --> </tr> <tr> <td>9</td> <!-- 9 × 1 --> <td>18</td> <!-- 9 × 2 --> <td>27</td> <!-- 9 × 3 --> <td>36</td> <!-- 9 × 4 --> <td>45</td> <!-- 9 × 5 --> <td>54</td> <!-- 9 × 6 --> <td>63</td> <!-- 9 × 7 --> <td>72</td> <!-- 9 × 8 --> <td>81</td> <!-- 9 × 9 --> </tr> </table> |
⇒ | [先頭部分]
<table border> [1の段]
<tr> <td>1</td> <!-- 1 × 1 --> <td>2</td> <!-- 1 × 2 --> <td>3</td> <!-- 1 × 3 --> <td>4</td> <!-- 1 × 4 --> <td>5</td> <!-- 1 × 5 --> <td>6</td> <!-- 1 × 6 --> <td>7</td> <!-- 1 × 7 --> <td>8</td> <!-- 1 × 8 --> <td>9</td> <!-- 1 × 9 --> </tr> [2の段]
<tr> <td>2</td> <!-- 2 × 1 --> <td>4</td> <!-- 2 × 2 --> <td>6</td> <!-- 2 × 3 --> <td>8</td> <!-- 2 × 4 --> <td>10</td> <!-- 2 × 5 --> <td>12</td> <!-- 2 × 6 --> <td>14</td> <!-- 2 × 7 --> <td>16</td> <!-- 2 × 8 --> <td>18</td> <!-- 2 × 9 --> </tr> [9の段]
<tr> <td>9</td> <!-- 9 × 1 --> <td>18</td> <!-- 9 × 2 --> <td>27</td> <!-- 9 × 3 --> <td>36</td> <!-- 9 × 4 --> <td>45</td> <!-- 9 × 5 --> <td>54</td> <!-- 9 × 6 --> <td>63</td> <!-- 9 × 7 --> <td>72</td> <!-- 9 × 8 --> <td>81</td> <!-- 9 × 9 --> </tr> [末尾部分]
</table> |
標準体重表の場合と同じように考えて, 最初に [先頭部分] を出力してから, 反復を用いて各 […の段] を出力し, 最後に [末尾部分] を出力すればよい. (流れ図(a))
更にまた,各 [の段] の内容も,下のように分けて考えることができる.
<tr> <td></td> <!-- × 1 --> <td></td> <!-- × 2 --> <td></td> <!-- × 3 --> <td></td> <!-- × 4 --> <td></td> <!-- × 5 --> <td></td> <!-- × 6 --> <td></td> <!-- × 7 --> <td></td> <!-- × 8 --> <td></td> <!-- × 9 --> </tr> |
⇒ | [段の先頭]
<tr> [の段の個々の積]
<td></td> <!-- × 1 --> <td></td> <!-- × 2 --> <td></td> <!-- × 3 --> <td></td> <!-- × 4 --> <td></td> <!-- × 5 --> <td></td> <!-- × 6 --> <td></td> <!-- × 7 --> <td></td> <!-- × 8 --> <td></td> <!-- × 9 --> [段の末尾]
</tr> |
この部分も,[の段の個々の積] の各行を,反復を用いて出力することとして,その反復の前後で[段の先頭] と[段の末尾]を出力するようにすればよい. (流れ図(b))
したがって,プログラム全体の流れとしては,九九の各段を出力するための反復の中(反復パートの中)に, 各段の個々の積を出力するための反復を入れ子にした,二重反復の構造になる. (流れ図(c))
〔おまけ〕