Go練習問題1-1:変数と定数を理解しよう

記事内に商品プロモーションを含む場合があります

Go言語の初心者向け問題1-1:変数と定数を理解しよう

この問題を解くために必要な知識:
コメントの書き方、変数と定数基本データ型型のエイリアス文字列操作ポインタの基本nilの概念ビルトイン関数算術演算子ビット演算子、標準入力と出力、import文の使用

<<前の問題 問題集Top 次の問題>>




Go言語の文法「変数と定数」とは

ここでは変数と定数の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。

Go言語の変数とは?

変数とは、データを一時的に保存しておくための「箱」のようなものです。変数には名前を付けることができ、後からその名前を使って中身を取り出したり変更したりできます。

変数の宣言と初期化

Goでは、変数を宣言する際に var キーワードを使用します。変数を宣言するときに初期値を設定することもできます。例を見てみましょう。

var age int = 25

このコードでは、age という名前の変数を宣言し、整数型 (int) の値 25 を格納しています。宣言と初期化は同時に行うのが一般的です。

型推論を使った宣言

Goは非常に賢く、変数の型を自動的に判断してくれます。これを「型推論」と呼びます。型を明示的に指定しなくても、次のように書くことができます。

name := "Taro"

ここでは、name という変数に文字列 "Taro" を代入しています。Goは自動的に name の型を string と推論します。

Go言語の定数とは?

定数は、一度値を設定すると変更できないデータを表します。定数はプログラムの実行中に変わらない値を扱うときに使います。例えば、円周率や税率などです。

定数の宣言

定数は const キーワードを使って宣言します。次の例を見てみましょう。

const pi = 3.14159

このコードでは、pi という名前の定数を宣言し、値 3.14159 を設定しています。定数の利点は、誤って値を変更することを防ぐことができる点です。

3. 変数と定数の使い分け

変数と定数の使い分けは、プログラムを書く上で非常に重要です。以下のような場合に使い分けを行います。

  • 変数: 後から値を変更したい場合(例: スコア、カウント、ユーザー入力など)
  • 定数: 変更する必要がない値を扱う場合(例: 数学定数、アプリケーション設定など)

4. 実際にコードを書いてみよう

最後に、変数と定数を使った簡単な例を見てみましょう。

package main

import (
	"fmt"
)

func main() {
	const pi = 3.14159     // 定数の宣言
	var radius float64 = 5 // 変数の宣言と初期化

	area := pi * radius * radius // 面積の計算

	fmt.Printf("半径 %.2f の円の面積は %.2f です。\n", radius, area)
}

このコードは、円の半径を変数として扱い、円周率を定数として使っています。これにより、円の面積を計算して出力します。

5. まとめ

Go言語の「変数」と「定数」はプログラムの基礎であり、データを効果的に管理するために欠かせないものです。

変数は値が変わるもの、定数は値が変わらないもの、と覚えておきましょう。

Go練習問題1-1:円の面積を計算するプログラムを作成しよう

円の面積を計算するプログラムを作成しましょう。

ユーザーから円の半径を入力してもらい、その値を使って円の面積を計算します。計算した面積を画面に表示することを目標とします。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • const を使用して円周率を定数 pi として宣言すること。
  • 円周率は3.14159とすること。
  • var を使用して半径を変数 radius として宣言すること。
  • fmt.Scan を使用して、ユーザーから radius を入力すること。
  • 円の面積を計算し、その結果を fmt.Printf で小数点第2位まで表示すること。
  • 計算が完了した後、”計算が完了しました。” というメッセージを表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

円の半径を入力してください: 10
半径 10.00 の円の面積は 314.16 です。
計算が完了しました。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.mainパッケージの宣言
2.fmtパッケージのインポート
3.main関数の定義
 3-1. pi定数の宣言(円周率3.14159)
 3-2. radius変数の宣言(float64型)
 3-3. ユーザーに半径の入力を求めるプロンプトを表示
 3-4. fmt.Scanを用いて半径の入力をradius変数に格納
 3-5. 円の面積を計算し、area変数に格納
 3-6. fmt.Printfを用いて半径と計算された面積を小数点第2位まで表示
 3-7. message文字列変数を宣言し、「計算が完了しました。」というメッセージを格納
 3-8. fmt.Printlnを用いてmessageの内容を表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

package main

import (
	"fmt"
)

func main() {
	// 定数の宣言
	const pi = 3.14159 // 円周率

	// 変数の宣言
	var radius float64

	// ユーザーから半径を入力してもらう
	fmt.Print("円の半径を入力してください: ")
	/* 【穴埋め問題1】
	   ここにユーザーから入力を受け取るコードを書いてください。
	*/

	// 面積の計算
	/* 【穴埋め問題2】
	   ここに面積を計算するコードを書いてください。
	*/

	// 結果を出力
	/* 【穴埋め問題3】
	   ここに結果を出力するコードを書いてください。
	*/

	// 文字列操作
	var message string = "計算が完了しました。"
	/* 【穴埋め問題4】
	   ここに完了メッセージを出力するコードを書いてください。
	*/
}

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

package main

import (
	"fmt"
)

func main() {
	// 定数の宣言
	const pi = 3.14159 // 円周率

	// 変数の宣言
	var radius float64

	// ユーザーから半径を入力してもらう
	fmt.Print("円の半径を入力してください: ")
	fmt.Scan(&radius)

	// 面積の計算
	area := pi * radius * radius

	// 結果を出力
	fmt.Printf("半径 %.2f の円の面積は %.2f です。\n", radius, area)

	// 文字列操作
	var message string = "計算が完了しました。"
	fmt.Println(message)
}

正解コードの解説

このGoコードでは、ユーザーが入力した円の半径を基に円の面積を計算し、その結果を表示するプログラムを作成しています。各部分を順に解説します。

パッケージ宣言

package main

Goプログラムは、最初にパッケージを宣言します。mainパッケージは、実行可能なプログラムのエントリーポイントとして使用されます。

インポート宣言

import (
    "fmt"
)

fmtパッケージは、フォーマットされた入出力を行うための標準ライブラリです。ここでは、ユーザー入力や結果の表示に使用します。

メイン関数の定義

func main() {

main関数は、プログラムの実行が始まる場所です。Goプログラムでは必須の関数です。

定数の宣言

const pi = 3.14159 // 円周率

piは円周率を表す定数で、ここでは3.14159に設定しています。定数は一度設定すると変更できません。

変数の宣言

var radius float64

radiusは、ユーザーが入力する円の半径を保持する変数です。float64は浮動小数点数を表すデータ型です。

ユーザー入力の処理

fmt.Print("円の半径を入力してください: ")
fmt.Scan(&radius)

fmt.Printはメッセージを表示し、fmt.Scanはユーザーからの入力を受け取ります。入力された値はradiusに格納されます。

面積の計算

area := pi * radius * radius

ここでは、円の面積を計算し、その結果をareaに格納します。計算式は「円周率 × 半径 × 半径」です。

結果の表示

fmt.Printf("半径 %.2f の円の面積は %.2f です。\n", radius, area)

fmt.Printfは、指定した形式で結果を表示します。%.2fは、小数点以下2桁までの数値を表示するフォーマットです。

完了メッセージの表示

var message string = "計算が完了しました。"
fmt.Println(message)

最後に、計算が完了したことを示すメッセージを表示します。fmt.Printlnは、文字列を改行付きで出力します。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Go練習問題集へ戻る
    トップページへ戻る