Go言語の初心者向け問題2-2:条件分岐(if-else文)を理解しよう
この問題を解くために必要な知識:
レベル1の知識、論理演算子と代入演算子、条件分岐(if-else文)、条件分岐(switch文)、ループ処理(for文)、ラベルとgoto文、無限ループ、配列、スライスとキャパシティ、整列と検索、マップ、ループ処理(range文)、サードパーティパッケージ
<<前の問題 | 問題集Top |
次の問題>> |
Go言語の文法「条件分岐(if-else文)」とは
ここでは条件分岐(if-else文)の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
条件分岐はプログラミングで最も基本的な構造の一つです。Go言語においても、条件分岐を使うことで、特定の条件に応じてプログラムの動作を変えることができます。
条件分岐とは?
条件分岐とは、プログラムの実行中に特定の条件をチェックし、その結果に応じて異なる処理を行うことです。
例えば、入力された数値が正の数かどうかを判断し、正なら「正の数です」と表示し、負なら「負の数です」と表示する、といったことが可能です。
if-else文の基本構文
Go言語のif-else文
は、以下のような構文で記述します。
if 条件式 { // 条件式がtrueの場合に実行されるコード } else { // 条件式がfalseの場合に実行されるコード }
この構文では、if
の後に続く条件式がtrue
ならば、最初のブロックのコードが実行されます。もしfalse
ならば、else
ブロックのコードが実行されます。
実際のコード例
具体例として、ユーザーに入力された数値が偶数か奇数かを判定するプログラムを作成してみましょう。
package main import "fmt" func main() { var number int fmt.Print("整数を入力してください: ") fmt.Scan(&number) if number%2 == 0 { fmt.Println(number, "は偶数です。") } else { fmt.Println(number, "は奇数です。") } }
コードの解説
fmt.Scan(&number)
で、ユーザーから整数の入力を受け取ります。if number%2 == 0
で、入力された数値が2で割り切れるかどうかを確認します。割り切れる場合は偶数なので、「偶数です」と表示します。else
ブロックでは、割り切れない場合(奇数)に「奇数です」と表示します。
if-else文のポイント
if
の条件式には、任意の式を指定できます。その結果がtrue
かfalse
によって処理が分岐します。else if
を使うことで、複数の条件を連続してチェックすることも可能です。- 条件式が多い場合や、単純な値の比較であれば、次の記事で紹介する
switch文
を使うとコードがシンプルになります。
まとめ
条件分岐は、プログラムの流れを制御するために非常に重要な要素です。
Go言語のif-else文
を理解することで、より複雑なロジックを実装できるようになります。
Go練習問題2-:入力された整数が正負と、奇数か偶数かを判定しよう
整数を入力して、その数が正の数か負の数か、もしくはゼロかを判定し、さらにその数が偶数かどうかをチェックするプログラムを作成しましょう。
このプログラムでは、条件分岐を使って適切なメッセージを表示します。
この問題の要件
以下の要件に従ってコードを完成させてください。
fmt.Print
を使用してユーザーに整数の入力を促すこと。fmt.Scan
を使用して、入力された整数を変数に格納すること。if-else
文を使用して、数が正の数、負の数、またはゼロかを判定し、適切なメッセージを表示すること。- さらに、
if
文を使用して、その数が偶数かどうかを判定し、偶数の場合にメッセージを表示すること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
整数を入力してください: 5 5 は正の数です。 5 は奇数です。
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.package main
の宣言
2.import "fmt"
によるパッケージのインポート
3.main
関数の定義
3-1. num
という整数型変数の宣言
3-2. 標準入力から整数値を読み取る
3-2-1. fmt.Print
を使用して、ユーザーに整数入力を促す
3-2-2. fmt.Scan
で入力された値をnum
に格納する
3-3. if-else
文による条件分岐
3-3-1. num
が正の数かどうかを判定し、メッセージを表示
3-3-2. num
が負の数かどうかを判定し、メッセージを表示
3-3-3. num
がゼロである場合のメッセージを表示
3-4. if
文で偶数かどうかを判定し、メッセージを表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
package main import "fmt" func main() { var num int fmt.Print("整数を入力してください: ") /* 【穴埋め問題1】 ここに、fmt.Scanを使って入力された整数をnumに格納するコードを書いてください。 */ // if文による条件分岐 /* 【穴埋め問題2】 ここに、numが正の数かどうかを判定し、正しいメッセージを表示するif文を書いてください。 */ /* 【穴埋め問題3】 ここに、numが負の数かどうかを判定し、正しいメッセージを表示するelse if文を書いてください。 */ /* 【穴埋め問題4】 ここに、numがゼロである場合にメッセージを表示するelse文を書いてください。 */ // elseがないif文 /* 【穴埋め問題5】 ここに、numが偶数かどうかを判定し、その場合にメッセージを表示するif文を書いてください。 */ }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
package main import "fmt" func main() { var num int fmt.Print("整数を入力してください: ") fmt.Scan(&num) // if文による条件分岐 if num > 0 { fmt.Println(num, "は正の数です。") } else if num < 0 { fmt.Println(num, "は負の数です。") } else { fmt.Println("入力された数はゼロです。") } // elseがないif文 if num%2 == 0 { fmt.Println(num, "は偶数です。") } }
正解コードの解説
このGoプログラムは、ユーザーが入力した整数が正の数か負の数かゼロかを判定し、さらにその数が偶数かどうかをチェックします。
以下では、コードの各部分について説明します。
package main
とimport "fmt"
package main
は、Goプログラムのエントリポイントであることを示します。
import "fmt"
は、標準入力や出力を行うためのfmt
パッケージをインポートしています。
メイン関数の定義
func main() {
main
関数はGoプログラムの開始点です。この関数内でプログラムのロジックが実行されます。
変数の宣言と入力の取得
var num int fmt.Print("整数を入力してください: ") fmt.Scan(&num)
ここでは、num
という整数型の変数を宣言し、fmt.Scan
を使ってユーザーからの入力をnum
に格納します。fmt.Print
はユーザーにメッセージを表示します。
条件分岐(if-else文)の使用
if num > 0 { fmt.Println(num, "は正の数です。") } else if num < 0 { fmt.Println(num, "は負の数です。") } else { fmt.Println("入力された数はゼロです。") }
この部分では、if-else
文を使用して、num
が正の数、負の数、またはゼロであるかを判定し、それに応じたメッセージを表示します。
条件分岐は、プログラムが異なる動作をするための重要な構造です。
偶数の判定
if num%2 == 0 { fmt.Println(num, "は偶数です。") }
最後に、if
文を使ってnum
が偶数かどうかを判定します。
num%2 == 0
は、num
を2で割った余りがゼロであることを意味し、これは偶数であることを示します。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。