Skip to content

CS_basic_grammar2

ayutaku edited this page Aug 5, 2021 · 23 revisions

基本文法2

Swiftの基本文法です。自分のパソコンで実際にコードを書きながら覚えていきましょう。

目次

参考コードはこちら


復習 基本文法1の変数の型の部分でbool型を学びました。trueとfalseの2つの値を持つ型です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        bool isMac = true;
        Debug.Log(isMac);//trueが出力
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

(Debug.Log()でboolを出力する場合はtrue,falseでなく、True,Falseと出力される場合がありますが、意味は同じと考えて頂いて問題ありません)

ここでは比較演算子と論理演算子について学んでいきます

比較演算子

2つの値を比較するための演算子です。まずは「==」についてです。これは左右の値を比較して、等しい場合はtrue、等しくない場合はfalseを返す演算子です。数学の「=」の意味に近いかもしれません。

int x = 10;
int y = 5;
int z = 5;

Debug.Log(x == y);//falseが出力
Debug.Log(z == y);//trueが出力

次に「!=」は「==」の否定の意味となり、逆の値が出力されます。

int x = 10;
int y = 5;
int z = 5;

Debug.Log(x != y);//trueが出力
Debug.Log(z != y);//falseが出力

続いて大小比較です。以下の例を見てみましょう。

int x = 10;
int y = 5;

Debug.Log(x < y);//falseが出力
Debug.Log(x <= y);//falseが出力

Debug.Log(x > y);//trueが出力
Debug.Log(x >= y);//trueが出力

//ちなみに式を比較することも可能
Debug.Log(x/2 < y);//falseが出力
Debug.Log(x/2 <= y);//trueが出力

数学の<,>と同じような意味なので直観的に理解しやすいと思います。注意点は、数学の≦や≧をプログラミングではぞれぞれ<=、>=と記述する点です。

練習問題2-1. 12*30と365を「==」で比較して、結果を出力しましょう。

論理演算子

 数学の「かつ」、「または」、「否定」の意味です。以下の表がのように対応しています。

演算子 意味
& かつ
| または
! 否定

AND演算子の&は左右の両方がtrueの場合にtrueを出力します。それ以外はfalseです。

int x = 10;
Debug.Log(x > 0 & x < 30);//trueが出力

OR演算子の|は左右のどちらか少なくとも一つがtrueの場合にtrueを出力します。それ以外はfalseです。

int x = 10;
Debug.Log(x > 0 | x == -10);//trueが出力

NOT演算子は後に続く値を否定します。

Debug.Log(!false);//trueが出力

練習問題2-2. 「10 < 5」かつ「4 >= 2」の結果を出力しましょう

if文を用いると、場合分け処理を行うことができる。

var value = 5
if (value < 10){
    print("value < 10")
}

出力結果
value < 10

var value = 10
if (value < 10){
    print("value < 10")
}else if (value == 10){
    print("value = 10")
}else{
    print("value > 10")
}

出力結果
value = 10

switch文を使うと場合分けをさらに簡潔に書くことが可能。

var value = 101
switch value {
case 0:
    print("0")
case 1...100:  //1~100
    print("1~100")
default:
    print("others")
}

出力結果
others

  • 文字列もOK
var str = "Apple"
switch str {
case "Orange":
    print("mikan")
case "Apple":
    print("ringo")
default:
    print("others")
}

出力結果
ringo

for文を使うと繰り返し処理を簡単に行うことができる。

for i in 0...4{
    print("\(i)回目")
}

出力結果

0回目
1回目
2回目
3回目
4回目

Tips

上のプログラムで"\(i)回目"という書き方が初めて出てきたため、戸惑ったかもしれません。
このようにSwiftでは、変数と文字列を組み合わせて書く際、変数をバックスラッシュ(\)とかっこで囲む書き方もあります。
C言語のprintf文で用いられる%dや%fなどのイメージに近いと思います。
意味はprint(String(i) + "回目")と同じですが、こちらの表記の方が簡潔に書くことができます。

  • ..<は最後の数字を含まない。
for i in 0..<4{
    print("\(i)回目")
}

出力結果

0回目
1回目
2回目
3回目
  • 変数を使わない場合は「_」(アンダーバー)で省略可能。
for _ in 0...4{
    print("Hello")
}

出力結果

Hello
Hello
Hello
Hello
Hello
  • 配列のイテレーション
let animals = ["dog", "cat", "bird"]
for a in animals{
    print(a)
}

出力結果

dog
cat
bird
  • for-in-enumerated文によるイテレーション
for (i,str) in animals.enumerated(){
    print("\(i): \(str)")
}

出力結果

0: dog
1: cat
2: bird

while文を用いても繰り返し処理を行うことができる。

var count = 1
var ans = 0
while (count<=10){
    ans += count
    count += 1
}
print("sum is \(ans)")

出力結果

sum is 55

関数を定義すると、同じ処理を何回も記述せずに済む。
関数は、func 関数名(引数名: 引数の型)-> 戻り値の型{ 処理 }のように定義する。
引数や戻り値がない場合、適宜省略する。

func hello(){
    print("hello")
}
hello()   //helloと出力

func add(x: Int, y: Int) -> Int{
    return x + y
}
print(add(x: 3, y: 5))    //8と出力

//_で引数を省略できる。
func add2(_ x: Int, _ y: Int) -> Int{
    return x + y
}
print(add2(3,5))    //8と出力

//分かり易いように引数名の別名を置くこともできる。
func showTestScore(mathematicsTestScore score: Int) -> String{
    return "数学の点数は\(score)"
}
showTestScore(mathematicsTestScore: 80)
Clone this wiki locally