--- tags: 程式設計基礎,九九乘法表,php,html,泰山職訓,PHP資料庫網頁設計,程式設計基礎 --- 九九乘法表 ======== 一. 先嘗試用最直覺的方式來讓網頁可以出現幾個乘法表的內容,比如我們先出現`1x1=1`這樣的文字內容。 ```php= echo "1 x 1 = 1 , "; echo "1 x 2 = 2 , "; echo "1 x 3 = 3 , "; . . . echo "<br>"; echo "2 x 1 = 2 , "; echo "2 x 2 = 4 , "; echo "2 x 3 = 6 , "; . . . echo "<br>"; echo "9 x 1 = 2 , "; echo "9 x 2 = 18 , "; echo "9 x 3 = 27 , "; ``` 這時會在網頁上看到的結果如下; ``` 1 x 1 = 1 , 1 x 2 = 2 , 1 x 3 = 3 ,... 2 x 1 = 2 , 2 x 2 = 4 , 2 x 3 = 6 ,... . . . 9 x 1 = 9 , 9 x 2 = 18 , 9 x 3 = 27 ,... ``` 我們可以發現有很多動作是重覆的,比如第一個數字會固定九次,而第二個數則是從1變化到9,而從第二列開始,我們發現第二個數字每列都是一樣的從1變化到9,而第一個數字則隨列數的增加從1變化到9; 了解了這些關係,我們試著寫程式來簡化以上的動作。 1. 從單一列來看,固定第一個數字,只有第二個數字有變化,最多執行九次。 2. 因為是重覆的做印出的動作,所以我們打算使用迴圈來解決問題。 3. 而迴圈有兩種,有明確執行次數的,我們使用for迴圈,如果沒有明確執行次數的,則使用while。 4. 當每一列執行完九次後,需要輸出一次"\<br\>"字串,讓網頁上的文字可以換行。 綜合以上的分析,我們先嘗試以迴圈來解決第一列的乘法表; ```php= for($i = 1 ; $i <= 9 ; $i++){ echo "1 x " . $i . " = " . (1*$i) . " , "; } echo "<br>"; ``` 如果執行無誤,可以在網頁上看到原本要打至少九行的乘法表現在只用了四行就解決了; 以此類推,我們把剩下的八種數字變化也寫完; ```php= for($i = 1 ; $i <= 9 ; $i++){ echo "1 x " . $i . " = " . (1*$i) . " , "; } echo "<br>"; for($i = 1 ; $i <= 9 ; $i++){ echo "2 x " . $i . " = " . (2*$i) . " , "; } echo "<br>"; . . . for($i = 1 ; $i <= 9 ; $i++){ echo "9 x " . $i . " = " . (9*$i) . " , "; } echo "<br>"; ``` 依照前面的思考邏輯,只要遇到有大量或較多重覆的,就要觀察一下是否有可能可以簡化,以這個例子來說,九個迴圈只有在第一個數字的地方有變化,如果我們再套一個迴圈來控制第一個數字的變化,那程式碼是不是可以更簡化? 因此我們將程式碼再修改,同時要注意的是因為原本的迴圈中已經使用了一個變數`$i`來表示第二個數字的變化了,所以我們另外建立一個變數`$j`來代表第一個數字的變化; ```php= for($j=1;$j<=9;$j++){ for($i=1;$i<=9;$i++){ echo $j . " x " . $i . " = " . ($j*$i) . " , "; } echo "<br>"; } ``` 到這邊,我們已經把原本要用上八九十行的乘法表,利用兩層迴圈的方式,縮減到六行就完成了印出九九乘法表的工作了。 在這個範例中,要注意的地方除了兩層迴圈之外,還包括了變數的應用,字串連接運算子的使用及網頁標籤的插入。 ## 課後練習 1. 將九九乘法表的輸出結果放入一個九乘九的表格中,讓輸出可以美觀一些,如下圖: ![九九乘法表以表格排列](https://i.imgur.com/CILBglv.jpg) 3. 以10x10的表格來呈現九九乘法表,直横第一列為數字1~9,其餘格子為對應的數字相乘的結果,如下圖: ![表格式九九乘法表](https://i.imgur.com/BqhvY9X.jpg)