---
# System prepended metadata

title: 1日目
tags: [2019夏キャンプ資料, 平日課題]

---

---
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夏キャンプ資料`, `平日課題`

