--- description: Swiftの基礎 --- # 1日目 ## Swiftプログラミングの基礎 `Playground`を利用し、作成した課題を各自のリポジトリにアップロードして提出してください。課題1-Xは全て一つのファイルにまとめて構いません。 ### 課題1-1 型 以下の値を格納できる適切な型を指定して宣言、初期化してください。 定数名は上から順番に`itemA`,`itemB`,`itemC`,`itemD`とします。 ```swift 1000 こんにちわ 42.195 true ``` ### 課題1-2 四則演算 Int型定数`valueA`と`valueB`を宣言してください。 初期値として`valueA`に`100`、`valueB`に`20`を代入し、四則演算をした結果を出力してください。 出力は`print()`を用いてXcodeのコンソールに表示させてください。 ```swift // 出力結果それぞれ「足し算/引き算/掛け算/割り算」 120 80 2000 5 ``` ### 課題1-3 if文 Int型の変数`valueC`を定義し、代入された値に応じて`if文`で値を判別し、以下の仕様の通り出力してください。(マイナスの値は考慮しなくてもよい) 1. `1`~`3`桁の場合は「xxはz桁の値です。」(xは数値, zは桁数) 2. `4`桁以上の場合は「xxは4桁以上の値です。」 ```swift 代入値の例: 4, 12, 100, 1999, 44444 // 出力結果(代入された値に応じて) "4は1桁の値です。" "12は2桁の値です。" "100は3桁の値です。" "1999は4桁以上の値です。" ``` ### 課題1-4 switch文 課題1-3を`Switch文`を使って実装してください。変数は1-2同様`valueC`を参照します。 ```swift 代入値の例: 4, 12, 100, 1999, 44444 // 出力結果(代入された値に応じて) "4は1桁の値です。" "12は2桁の値です。" "100は3桁の値です。" "1999は4桁以上の値です。" ``` ### 課題1-5 関数単一の引数 Int型の引数`value`を持つ関数`calculationA`を作成。 `value`に`10`を渡し、`10倍`された値を出力してください。 ```swift // 出力結果 100 ``` ### 課題1-6 関数複数の引数 Int型の引数`valueA`,`valueB`を持つ関数`calculationB`を作成。 `valueA`に`100`,`valueB`に`30`を渡し、割り算したあまりを出力してください。 ```swift // 出力結果 10 ``` ### 課題1-7 関数の戻り値 Int型の引数`valueA`,`valueB`とInt型の戻り値を返す関数`calculationC`を作成。 `valueA`に`40`,`valueB`に`25`を渡し足し算した値を戻り値で返します。 戻り値の結果に応じ`if文`で偶数か奇数を示す文言を出力してください。 ```swift 例) 奇数 -> "計算結果xxは奇数です。" 偶数 -> "計算結果xxは偶数です。" ``` ```swift // 出力結果 計算結果65は奇数です。 ``` ### 課題1-8 クラスのインスタンス class`HogeA`を作成します。 class`HogeA`に`print文`で「クラスAインスタンスです」と表示する関数`put`を作成します。インスンタンス化を行い、関数`put`を呼び出してください。宣言する定数名は`insA`とします。 ```swift // 出力結果 クラスAインスタンスです。 ``` ### 課題1-9 クラスのインスタンスと関数 class`HogeB`を作成します。 class`HogeB`に`print文`で「私の名前はxxxです。」と表示するString型の引数`name`を持つ関数`putName`を作成します。定数`takashi`と`ken`を宣言し、それぞれ`HogeB`のインスタンス化をおこないます。`takashi`には`name`の引数に「たかし」、`Ken`には「ケン」を渡して表示してください。 ```swift // 出力結果 私の名前はたかしです。 私の名前はケンです。 ``` ### 課題1-10 イニシャライザ 課題1-9の関数の引数をclassのイニシャライザに定義し、関数の引数を使わずに同様の出力になるようにしてください。 class名は`HogeC`とし、定数はそれぞれ`yamada`出力は「やまだ」,`miyata`出力は「みやた」としてください。 ```swift // 出力結果 私の名前はやまだです。 私の名前はみやたです。 ``` ### 課題1-11 Enum 以下の`Enum`を`User`という名前で定義します。 「name」を持つ定数`user`を宣言し、Switch文で分岐させprint文で出力してください。 ```swift name -> 出力内容「名前」 age -> 出力内容「年齢」 bloodType -> 出力内容「血液型」 ``` ```swift // 出力結果 名前 ``` ### 課題1-12 for文 `for文`を用いて`1`〜`50`までの数値を出力してください。 ```swift // 出力結果 1 2 3 ~ 省略 ~ 48 49 50 ``` ### 課題1-13 配列(追加) Int型配列変数`valueE`を定義し、`for文`を用いて`1`〜`50`の値を代入してください。代入後、`valueE`の内容をpirnt文で出力してください。 ```swift // 出力結果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] ``` ### 課題1-14 配列(削除) 以下の内容を持つString型配列変数`valueF`を定義し、`ナッシュ`を配列から削除した結果を出力してください。 ```swift ["リュウ", "ケン", "ナッシュ", "ガイル", "ベガ", "フェイロン"] ``` ```swift // 出力結果 ["リュウ", "ケン", "ガイル", "ベガ", "フェイロン"] ``` ### 課題1-15 配列(ソート) 以下の内容を持つInt型配列定数`valueG`を定義し、昇順と降順にソートした内容をそれぞれ出力してください。 ```swift [5, 4, 100, 49, 30, 1, 12, 0] ``` ```swift // 出力結果 // 昇順 [0, 1, 4, 5, 12, 30, 49, 100] // 降順 [100, 49, 30, 12, 5, 4, 1, 0] ``` ### 課題1-16 配列(要素数) 課題1-15で定義した`valueG`の配列の数を出力してください。 ```swift // 出力結果 8 ``` ### 課題1-17 辞書型 以下の内容を持つ辞書型の定数`valueH`を宣言し、`b`の値を出力してください。 (※警告は無視しても構わない) ```swift key - value a - 1 b - 2 c - 3 ``` ```swift // 出力内容 Optional(2) ``` ### 課題1-18 Optional 課題1-17で定義した`valueH`の`b`の値を`Optional Binding`を用いて出力してください。 ```swift // 出力結果 2 ``` ### 課題1-19 nil 課題1-17で定義した`valueH`の`k`の値を`Optional Binding`を用いて判断し、`nil`パターンの場合は「値はnilです。」と出力してください。 ```swift // 出力結果 値はnilです。 ``` ### 課題1-20 総復習 以下の内容を持つ`valueI`を宣言し、以下の仕様にしたがい出力してください。(`[Any?]`型で宣言してください。) 1. `nil`の場合は「値はnilです。」と出力する。 2. 数値の場合は「数値xxxxです。」と出力する。 3. 文字列の場合はそのまま文字列を出力する。 ```swift [Any?] = [1, "こんにちわ" , "こんばんわ", nil, 3, 100, "よろしく", nil, "お願いします。"] ``` ```swift // 出力結果 数値1です。 こんにちわ こんばんわ 値はnilです。 数値3です。 数値100です。 よろしく 値はnilです。 お願いします。 ``` ###### tags: `2019夏キャンプ資料`, `平日課題`