Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初心者向けSwift勉強会#1 ~Swift文法編~

初心者向けSwift勉強会#1 ~Swift文法編~

12月23日に開催されたSwift勉強会#1の資料です。

吉川楓馬

December 23, 2023
Tweet

More Decks by 吉川楓馬

Other Decks in Programming

Transcript

  1. ⾃⼰紹介 • 名前  吉川楓⾺ • 所属  九州産業⼤学 理⼯学部 情報科学科 3年 • 出⾝地 ⼤分県

    • 趣味 カードゲーム(遊戯王)/モバイルアプリ開発(Flutter) • 実はSwift勉強したてです。間違えてしまうところもあるかと思いま すが、皆さんと⼀緒に勉強していけたらいいなと思ってます〜。
  2. メッセージを表⽰してみる(print関数) そのほかの演算⼦と計算の優先順位について 剰余演算⼦ % 割ったあまりを求める (例) 10 % 5 = 0

    9 % 2 = 1 8 % 3 = 2 計算の優先順位 計算の優先順位は現実の算数と同じ優 先順位で計算される。 例1:2 + 5 * 2 この場合は12 例2:5 * (3 + 4) この場合は35
  3. 定数と変数 定数を宣⾔してみましょう let greeting : String = "Hello akarenga" print(greeting)

    letは定数であることを⽰し、その後定 数の名前、型、=、データの順に記述 していきます。
  4. 定数と変数 【おまけ】型推論 Swiftには代⼊したデータの型によってその変数の型を決定する機能があります。 例1 型推論を使ったInt型の定数の宣⾔ :let number = 10 例2

    型推論を使ったString型の変数の宣⾔ :var name = "⾚煉⽡太郎" 注意する点として、型推論は最初に代⼊したデータとは異なる型のデータを代⼊す るとエラーになります。 例:var age = 20 (この時点では変数ageはInt型) → age = "⾚煉⽡太郎" (String型の データを代⼊するとエラー)
  5. if⽂/for-in⽂ 変数nameに⽂字列を代⼊してその⽂字列 が"Swift"であれば"Hello Swift"を表⽰してみ ましょう var name : String =

    "Swift" if name == "Swift" { print("Hello Swift") } 変数nameにSwift以外の⽂字列を代⼊した ら"Hello Swift"と表⽰されないと思います。
  6. if⽂/for-in⽂ 条件に合わせて処理が変わったでしょうか? では次に⻘字の部分を追記してください。 var name : String = "Swift" if

    name == "Swift" { print("Hello Swift") }else if name == "Python"{ print("Hello Python") }else { print("Hello World") } if⽂の後にelse ifで条件の追加、elseでそれ以 外の条件だった場合の処理を追加できます。
  7. if⽂/for-in⽂ if⽂の条件式では2つの値の⼤⼩ を⽐較するときに右表のような⽐ 較演算⼦が利⽤できます。 例 let a : Int =

    5 let b : Int = 10 if a < b { print("bはaより⼤きい") } //"bはaより⼤きい" 演算⼦ 数学での 記号 式の例 式の例の 意味 == = a==b aはbと等 しい != ≠ a!=b aはbと等 しくない > > a>b aはbより 大きい >= ≧ a>=b aはb以上 < < a<b aはbより 小さい <= ≦ a<=b aはb以下
  8. if⽂/for-in⽂ for-in⽂ for-in⽂は同じ処理を繰り返すときに使われます。同じ⽂字列を100回表 ⽰するとか...。 for ループ変数 in 繰り返す範囲 { //ここに繰り返す処理を書く

    } ループ変数とはこのfor-in⽂の中だけで使える変数であり、慣習的にiやj などが使われます。ループ変数が必要ない場合は_を使います。
  9. if⽂/for-in⽂ for-in⽂を書いていきます。if⽂を削除して以 下を記述してください。 for _ in 0 ..< 5 {

    print("Hello Swift") } 繰り返し範囲は0..<5になります。これは「0 から5の1つ前まで」を表しています。つまり 実際の繰り返し範囲は0から4までとなり5回 繰り返していることになります。0..<5の5を 10に変えてみると⽂字列は何回表⽰されるで しょうか。
  10. if⽂/for-in⽂ 次にfor-in⽂がどのように繰り返しているの か確認してみましょう。⻘⾊の部分を書き換 え、追記してください。 for i in 0 ..< 5

    { print("Hello Swift" + String(i)) } for-in⽂の開始時にiには繰り返しの開始値(こ こだと0)が代⼊され、処理が終わるとiは繰り 返し範囲の次の値に更新(この場合はi+1)さ れ、for⽂内の処理が再び実⾏されます。
  11. 配列 配列とは1つの変数に複数の値が格納されたデータ形式となりま す。 let 配列名 : [型] = [値1,値2,値3, ………]

    var 配列名 : [型] = [値1,値2,値3, ………] 定数‧変数と同様にletの場合は要素(配列に格納されたデータ)の 変更ができず、varの場合は要素の変更が可能です。
  12. 配列 配列の宣⾔、初期化、要素へアクセスしてみ ましょう。以下を記述してください。 let array : [Int] = [1,3,5,7,9] print(array[0])

    print(array[4]) 配列の要素は0,1,2,3…のように0から数え始 めます。そのためprint(array[0])は配列array の0番⽬を表⽰しています。
  13. 配列 for-in⽂と組み合わせて配列の中⾝を全て表 ⽰してみましょう。print⽂を削除して以下を 追記してください。 for i in array { print(i)

    } 繰り返す範囲に配列を渡すことで、その配列 の要素数だけループを繰り返します。今回の 場合、配列arrayの要素数は5なので5回ルー プを繰り返しています。
  14. 関数 次に引数に整数型のデータを渡して、2乗を返 す関数を宣⾔します。以下を追記してくださ い。 func calcSquared(number: Int) -> Int {

    return number * number } print(calcSquared(number:3)) calcSquared(number:3)はInt型の引数number に3を代⼊しています。return で計算結果を返 します。その後返ってきた値を表⽰します。
  15. 構造体とクラス では、⼈の名前と年齢を扱う構造体を作ってみ ましょう。 struct Person{ var name : String =

    "福岡太郎" var age : Int = 20 } var p1 = Person() print(p1.name) インスタンスp1がもつnameプロパティを出⼒ しています。プロパティへのアクセスはインス タンス.プロパティ名と記述します。
  16. 構造体とクラス クラスとは クラスは構造体と同様にプロパティやメソッドをまとめた設計図のよう なものです。違いとしてクラスは参照型であることと継承することがで きることです。 参照型 … 複数の変数で⼀つのインスタンスの値を共有できる。構造体 は値型といって複数の変数で⼀つのインスタンスの値を共有できない。 継承

    …クラスは他のクラスからメソッドやプロパティを継承して呼び出 すことができます。継承するクラスのことをサブクラス、継承されるク ラスのことをスーパークラスといいます。 継承を解説するのは時間的に 厳しそう...。インスタンスの値の 共有だけやってみます。
  17. 構造体とクラス インスタンスの値の共有をしてみましょう。⻘ 字の部分を書き換え、追記してください。 class Person{ … } var p1 =

    Person() var p2 = p1 p1.name = "⾚煉⽡太郎" p2.dispName() p1のnameを書き換えたのに、p2も書き変わっ てます。