Go練習問題2-02:条件分岐(if-else文)を理解しよう

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

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, "は奇数です。")
    }
}

コードの解説

  1. fmt.Scan(&number)で、ユーザーから整数の入力を受け取ります。
  2. if number%2 == 0で、入力された数値が2で割り切れるかどうかを確認します。割り切れる場合は偶数なので、「偶数です」と表示します。
  3. elseブロックでは、割り切れない場合(奇数)に「奇数です」と表示します。

if-else文のポイント

  • ifの条件式には、任意の式を指定できます。その結果がtruefalseによって処理が分岐します。
  • else ifを使うことで、複数の条件を連続してチェックすることも可能です。
  • 条件式が多い場合や、単純な値の比較であれば、次の記事で紹介するswitch文を使うとコードがシンプルになります。

まとめ

条件分岐は、プログラムの流れを制御するために非常に重要な要素です。

Go言語のif-else文を理解することで、より複雑なロジックを実装できるようになります。

Go練習問題2-:入力された整数が正負と、奇数か偶数かを判定しよう

整数を入力して、その数が正の数か負の数か、もしくはゼロかを判定し、さらにその数が偶数かどうかをチェックするプログラムを作成しましょう。

このプログラムでは、条件分岐を使って適切なメッセージを表示します。

この問題の要件

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

  1. fmt.Printを使用してユーザーに整数の入力を促すこと。
  2. fmt.Scanを使用して、入力された整数を変数に格納すること。
  3. if-else文を使用して、数が正の数、負の数、またはゼロかを判定し、適切なメッセージを表示すること。
  4. さらに、if文を使用して、その数が偶数かどうかを判定し、偶数の場合にメッセージを表示すること。

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

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

整数を入力してください: 5
5 は正の数です。
5 は奇数です。

この問題を解くヒント

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

ヒント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文で偶数かどうかを判定し、メッセージを表示

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

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

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 mainimport "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を活用しています。

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






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