演習1-3

整数型の配列の合計を求めるプログラムを,forループを使って作成せよ.

解答例(1)

  1. package main
  2. import "fmt"
  3. func main() {
  4. var a [5]int
  5. a = [5]int{5,7,9,3,1}
  6. var sum int
  7. sum = 0
  8. var i int
  9. for i=0; i < len(a); i++ {
  10. sum += a[i]
  11. }
  12. fmt.Printf("合計 = %d\n", sum)
  13. }

解説

変数の宣言(5行目,7行目,9行目)

  • 変数は,次のように宣言しますvar 変数名 型名
  • 初期値を設定する場合は,初期値によって変数の型が決まるので,型名を省略できます.var 変数名 = 初期値
  • さらに:=を使って,varを省略できます.変数名 := 初期値
  • 6行目と10行目を合わせて次のように書けます.sum := 0 これを全ての変数に適用すると解答例(2)のようになります.

配列の型(5行目,6行目)

  • 配列はC言語と同じく,同一の型(要素型)を持つ要素を並べたものです
  • 配列型は次のように記述します. [要素数]要素型 例えば [5]int はint型の要素を5個もつ配列型です.
  • 配列型は,要素の型が同じでも,長さが違えば違う型として扱われます.例えば,aは[5]int型なので,[4]int型の値[4]int{1,2,3,4}は代入できません.
  • 配列リテラルは次のように記述します.[要素数]要素型 {要素0, 要素1, ...}
  • なお,リテラルは,ソースコード内に値を直接表記したものです.1や2,-500は整数リテラル,"Go"や"Programming Language","勉強部屋"は文字列リテラルです.[4]int{1,2,3,4}や[3]string{"abc", "XYZ", "いろは"}は配列リテラルです.

配列の長さ,要素の参照(10行目,11行目)

  • 配列の要素数(長さ)は組込み関数lenを用いて取得します.例えば,len(a)で配列aの要素数をえることができます.
  • C言語と同じく,配列の要素にはa[i]のように0からlen(a)-1までのインデックスを指定してアクセスします.
  • 配列型の詳細は言語仕様の配列型複合リテラルを参照してください.

for文 (10行目)

  • Go言語では繰り返しを表現するためにfor文を使います.C言語のようなwhileやdo~whileはありません.
  • for文は次のような形をしています.for 初期化文; 条件; ポスト文 { ・・・}
  • C言語のような( )は不要です.
  • 初期化文とポスト文を省くとC言語のwhileのような書き方ができます. for 条件 { ・・・}
  • さらに条件を省略するとtrueと記述したのと同じことになります.for { ・・・}
  • for文の詳細は言語仕様を参照してください.

解答例(2)

  1. package main
  2. import "fmt"
  3. func main() {
  4. a := [5]int{5,7,9,3,1}
  5. sum := 0
  6. for i:=0; i < len(a); i++ {
  7. sum += a[i]
  8. }
  9. fmt.Printf("合計 = %d\n", sum)
  10. }