-
Notifications
You must be signed in to change notification settings - Fork 0
CS_basic_grammar2
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回目
上のプログラムで"\(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)