LoginSignup
2
1

More than 5 years have passed since last update.

for文を使って九九表を表示

Last updated at Posted at 2014-12-19

こんにちは、@Solphaです。

参考書をひと通り読み終えた(内容を理解しているかは別ですが)ので、「プログラミング 初心者 練習問題」と検索して出てきた問題なんかを解いて練習しています。

その中でforを使う問題があったので、今回はfor文に焦点を当てて九九表を作るプログラムを書いてみました。

概要

内容

  • 各値の後に|(パイプ)を挟む
  • 格段ごとに改行する
  • 体裁を整えるため、1桁の数字は前に半角スペースを入れて2桁数字に合わせる

for文

for 初期化文; 条件; 後処理 {
    // 条件がTrueの間、ここの処理が行われ続ける。
}

for文の活用例

1.Goにはwhile文がないので、for文で表現する

sample
    i := 0
    for i < 100 {
        fmt.Println(i)
        i++
    }

2. 無限ループ

sample
    i := 0
    for { //forの条件を指定しない。
        fmt.Println(i)
    }

実行するとPCに負荷が掛かるのでご注意を。

3.他言語同様、breakやcontinueも使用可能

sample
    for i := 1; i < 10; i++ {
        for j := 1; j < 10; j++ {
            if i*j > 25 {
                // breakしたときのiとjの値を表示
                fmt.Printf("i=%d, j=%d Break!\n", i, j)
                break
            } else {
                continue
            }
        }
    }

プログラム

コード

99.go
package main

import "fmt"

func main() {
    for i := 1; i <= 9; i++ {
        for n := 1; n <= 9; n++ {
            // 2桁の数字と体裁を合わせるため、1桁の数字は半角スペースを挿入
            if i*n < 10 {
                fmt.Printf(" %d|", i*n)
            } else {
                fmt.Printf("%d|", i*n)
            }
        }
        // 各段の終わりで改行
        fmt.Println()
    }
}

コード(改)

heliac2000さんから表示方法についてコメントをいただいたので、コードを改良してみました。

99v2.go
package main

import (
    "fmt"
)

func main() {
    for i := 1; i <= 9; i++ {
        for n := 1; n <= 9; n++ {
            // ”%2d”とすることで一桁の数字の場合は数字の前に半角スペースが入る。
            fmt.Printf("%2d|", i*n)
        }
        // 各段の終わりで改行
        fmt.Println()
    }
}

改良前と比べてコードが簡素化されて分かりやすい!!

いやー、勉強になることが多くて楽しいですね。
コメントで「もっとこうしたらいいよ」的なことを教えていただけるこの環境はステキです。

実行結果

$ go run 99.go

 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|

所感

  • 掛け算の方法(for文にfor文をネスト)するところまではすぐに思いつきましたが、1桁の数字の場合に数字の前に半角スペースを挿入する方法に悩みました。(2014/12/20更新:コメントで、更に簡単にできる方法を教えていただきました)
  • 問題に対して深く考えすぎたせいで、最初はelse ifなどを多用してとても見苦しいコードに・・・簡潔に考えるクセを身につけたいものです。
2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1