2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Swift】Xcodeで始めるアプリ開発入門②

Last updated at Posted at 2024-02-05

この投稿は...

前回の【Swift】Xcodeで始めるアプリ開発入門①に続き、元素について学ぶことができる、コマンドラインインターフェース(CLI)のアプリケーションを開発します。

Swiftを基礎から学ぶには
自著、工学社より発売中の「まるごと分かるSwiftプログラミング」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「今日からはじめるプログラミング」をお勧めします。

ハンズオン

ユーザーの選択に基づいて、実行するコードを制御します。
さらに、ランループを構築して、ユーザーとの対話を継続できるようにします。

ユーザーの意思に基づいて、学習方法を決定する

  1. 「元素をランダムに学習するかどうか」を、ユーザーに質問します。
    そして、返答をdecision定数に保持します。

    print("Select element to learn, Randomly? (Y or N)")
    let decision = readLine()!
    
  2. decision定数に基づいて、「どのタスクを実行するか」を判断します。
    そのためのifステートメントを構築してください。

    print("Select elements to learn, Randomly? (Y or N)")
    let decision = readLine()!
    
    if decision == "Y" {
        print("OK! Learning element randomly.")
    } else if decision == "N" {
        print("OK, Select atomic weight of element...")
    } else {
        print("Sorry, I didn't get that.")
    }
    

    このifステートメントはdecision定数が「Y」の場合、「N」の場合、あるいは「YでもNでもない」場合の3通りにコードを分岐します。

  3. プログラムを実行してください。
    「Y」と「N」および「それ以外の値」を入力して、それぞれの出力を観察してください。

    「Y」を入力した場合

    Select elements to learn, Randomly? (Y or N)
    Y
    
    OK! Learning element randomly.    
    

    「N」を入力した場合

    Select elements to learn, Randomly? (Y or N)
    N
    
    OK, Select atomic weight of element...
    

    それ以外を入力した場合

    Select elements to learn, Randomly? (Y or N)
    XYZ
    
    Sorry, I didn't get that.
    

条件分岐構文を置き換える

It条件分岐構文と同じロジックを、Switch構文で記述します。

  1. If文をswitch文に変更してください。

    print("Select elements to learn, Randomly? (Y or N)")
    let decision = readLine()!
    
    switch decision {
    case "Y":
        print("OK! Learning element randomly.")
    case "N":
        print("OK, Select atomic weight of element...")
    default:
        print("Sorry, I didn't get that.")
    }
    

    分岐条件によっては、if構文よりswitch構文の方が読みやすいことがあります。

  2. プログラムを実行してください。
    コンソールと対話して、機能が維持されていることを観察してください。

ランループを構築する

ユーザーが正しく入力するまで、対話を継続できるようにします。
そのためには、入力値を検証するwhileループを実装します。
そして、ユーザが「YかN」を入力するまで「返答の入力」を求めます。

  1. 実行ループ中に、ユーザーが繰り返し探索できるようにします。
    decision定数の宣言を変数にして、既定値を「空文字」に変更してください。
    そして、ユーザー入力で値を更新します。

    print("Select elements to learn, Randomly? (Y or N)")
    var decision = ""
    
    decision = readLine()!
    switch decision {
    case "Y":
        print("OK! Learning element randomly.")
    case "N":
        print("OK, Select atomic weight of element...")
    default:
        print("Sorry, I didn't get that.")
    }
    
  2. ユーザーが「Y」または「N」を入力するまで、タスクを繰り返すwhileループを構築してください。

    print("Select elements to learn, Randomly? (Y or N)")
    var decision = ""
    
    while !(decision == "Y" || decision == "N") {
        decision = readLine()!
        switch decision {
        case "Y":
            print("OK! Learning element randomly.")
        case "N":
            print("OK, Select atomic weight of element...")
        default:
            print("Sorry, I didn't get that.")
        }
    }
    
  3. プログラムを実行してください。
    ユーザーが「Y」か「N」を入力するまで、ランループが繰り返されることを観察してください。

Repeat-Whileループ

このランループは必ず、「少なくとも一度」は実行すべき処理です。
そのため、反復の開始時点で「decision変数がYかNか」を評価することは無意味です。

  1. whileループをrepeat-whileループに置き換えます。
    そして、反復処理を行った後で終了条件を評価してください。

    print("Select elements to learn, Randomly? (Y or N)")
    var decision = ""
    
    repeat {
        decision = readLine()!
        switch decision {
        case "Y":
            print("OK! Learning element randomly.")
        case "N":
            print("OK, Select atomic weight of element...")
        default:
            print("Sorry, I didn't get that.")
        }
    } while !(decision == "Y" || decision == "N") 
    
  2. プログラムを実行してください。
    コンソールと対話して、機能が維持されていることを観察してください。

Xcodeのジャンプバー

コードを整理するための注釈をジャンプバーに追加します。
そうすると、コーディング中にジャンプバーをクリックして、該当コードに移動できます。

  1. swhitch構文の各ケースに、「コードを後で実装する」ことを示すTODOアノテーションを挿入してください。

    print("Select elements to learn, Randomly? (Y or N)")
    var decision = ""
    
    while !(decision == "Y" || decision == "N") {
        decision = readLine()!
        switch decision {
        case "Y":
            print("OK! Learning element randomly.")
            // TODO: learn to random element.
        case "N":
            print("OK, Select atomic weight of element...")
            // TODO: let the user select atomic weight of element.
        default:
            print("Sorry, I didn't get that.")
        }
    }
    
  2. ジャンプバーをクリックして、リストにTODOが追加されたことを観察してください。

全体のコード

main.swift

import Foundation

print("Welcome to the Elements Illustrated Book!")
print("There are 1 element")

print("What is your name?")
let yourName = readLine()!
print("Hi, \(yourName).")

print("Select elements to learn, Randomly? (Y or N)")
var decision = ""

repeat {
    decision = readLine()!
    switch decision {
    case "Y":
        print("OK! Learning element randomly.")
        // TODO: learn to random element.
    case "N":
        print("OK, Select atomic weight of element...")
        // TODO: let the user select atomic weight of element.
    default:
        print("Sorry, I didn't get that.")
    }
} while !(decision == "Y" || decision == "N")

次のステップ

続きは、「Xcodeで始めるアプリ開発入門③」にて解説。
投稿を告知するので、X(旧Twitter)のアカウントフォローをお願いします。

2
1
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?