-
Notifications
You must be signed in to change notification settings - Fork 0
CS_basic_grammar1
アプリを作り始める前に、まずは一緒にC#の基本文法を学んでいきましょう!!
各項目ごとに練習問題も用意しています。実際に手を動かしながら覚えていきましょう。
Debug.Log()という命令を用いると、実行結果をConsoleウィンドウに出力(画面に表示)することができます。様々な命令を用いることでプログラムを組むことができます。
まずは、以下のコードでHello World!という文字列を出力してみよう。(復習)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
// プログラム1-1
Debug.Log("Hello World!");
}
// Update is called once per frame
void Update()
{
}
}ここからより詳しい解説をします。
Debug.Log("Hello World!");先程出力した「Hello World!」は文字列と呼ばれます。文字列は""(ダブルクォーテーション)で囲まなければエラーとなります。また、C#では文末に;(セミコロン)を付ける必要があります。
それでは以下の練習問題を解いてみましょう!
練習問題1-1. 上のプログラム1-1を書き換えて、Hello Rikoten!と出力してみよう。
これ以降のプログラムで特に指示がない場合はStart()の{}の中にコードを書くようにしてください。
プログラム中に//や/* */を書くと、その行は「コメント」になりプログラムとして認識されなくなる。これを「コメントアウト」という。
1行だけのコメントは//を左に書き、複数行のコメントは/* */で囲む。
コメントを書くと、思考が整理されたり、自分で書いたコードの意味を後で思い出す際に役立つ。
さらにチーム開発では、書いたプログラムの意味や意図を他のメンバーに伝えるためにも重要なので、コメントはなるべく書くようにしよう。
// プログラム1-2
// 一行のコメント
/* 複数行のコメント
複数行のコメント
複数行のコメント */練習問題1-2. 好きな文章を書いてコメントアウトしてみよう。
練習問題1-3. プログラム1-1のDebug.Log()をコメントアウトしてみよう。次に、プログラムを実行しても文字列が出力されないことを確認しよう。
以下の演算子を用いると、プログラム上で計算をすることができる。
| 演算子 | 意味 |
|---|---|
| + | 足し算 |
| - | 引き算 |
| * | 掛け算 |
| / | 割り算 |
| % | 割り算のあまり |
実際に以下のコードを実行してみよう
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log(10+2);//12が出力される
Debug.Log(10-2);//8が出力される
Debug.Log(10*2);//20が出力される
Debug.Log(10/2);//5が出力される
Debug.Log(10%3);//「10÷3 = 3あまり1」なので、あまりの1が出力される
}
// Update is called once per frame
void Update()
{
}
}""で囲まれた値を文字列という。+演算子で文字列の結合が可能。
// プログラム1-4
Debug.Log("Hello " + "World!"); //Hello World!と出力される数値と文字列は異なります。例えば、10と"10"では前者は数値、後者は文字列として扱われます。以下のプログラムをStart()の中に書いて実行結果を確認しましょう。
Debug.Log(10+2); //12と出力される
Debug.Log("10+2"); //10+2と出力される練習問題1-4. 「2020を17で割ったあまり」と 3 * 7 * 7 * 11 * 13 * 37の計算結果をそれぞれ出力しよう。
練習問題1-5. 2つの文字列"矢口"と"くん"を+演算子で結合し、出力しよう。
練習問題1-6. 以下のコードの実行結果はどうなるか予測してみましょう。また実際に実行してみるとどうなるか確認しましょう。
Debug.Log(4+3);
Debug.Log("4"+"3");
Debug.Log("4+3");今まで数値や文字列と呼んできた値の種類はデータ型と呼ばれます。まずは、int型とstring型を覚えましょう!
| データ型 | 意味 | 具体例 |
|---|---|---|
| int型 | 整数(英語でinteger) | 5 |
| string型 | 文字列 | "矢口くん" |
変数を定義するということは以下の図のように、箱を用意するイメージだと考えてください。それぞれの箱には変数名(例えばnumber,nameなど)がついていて、その箱の中に値(例えば5,"矢口くん"など)が入っているイメージです。これらの値を書き換えたり、取り出したりしてプログラムを書いていきます。
ここからは実際のコードで解説します。まず、変数を定義します。これは箱を用意するイメージでした。以下のように「データ型 変数名」と書きます。
int number;string name;続いて値を代入します。これは箱の中に値を入れるイメージです。「変数名 = 値」とすることで値を代入できます。ここで注意することはプログラミングの「=」は数学の「=」とは異なるということです。プログラミングの「=」は等しいという意味ではなく、値を代入するという意味になります。
int number;
number = 5;string name;
name = "矢口くん";ではこの値を出力しましょう。変数をDebug.Log();に入れることで中に入っている値を出力することができます。
int number;
number = 5;
Debug.Log(number);//5が出力されるstring name;
name = "矢口くん";
Debug.Log(name);//矢口くんが出力されるなお、宣言した型と違う型を代入することはできません。例えば、int型で宣言した変数に文字列を代入することはできません。
練習問題1-6. int型で変数ageを宣言し、自分の年齢を代入し、出力させよう。また、string型で変数nameを宣言し、自分の名前を代入し、出力させよう。
変数は宣言と同時に値を代入することができます。(変数の初期化)
int number = 5;
string neme = "矢口くん"また以下のように変数同士でも計算や結合ができます。
int number = 5;
Debug.Log(number + 3);//8が出力される
int number2 = 9;
Debug.Log(number + number2);//14が出力されるstring feeling = "好き";
Debug.Log("C#" + feeling);//C#好きが出力される
string name = "矢口くん";
Debug.Log(name + feeling);//矢口くん好きが出力されるまた、変数は中に入っている値を変更することができます。
string feeling = "好き";
Debug.Log(feeling);//好きが出力される
feeling = "大好き!";//変更してもエラーはでない。一度宣言しているのでstring feelingとしないでfeelingのみを書く。
Debug.Log(feeling);//大好き!が出力される練習問題1-7. int型変数yearを定義し、値として今の西暦で初期化して、出力しよう。その後、値を1年後に上書きして出力しよう。
練習問題1-8. string型変数projectを定義し、値として"Science cafe"で初期化して、出力しよう。その後、値を"ワセリコセミナー"に上書きして出力しよう。
プログラミングでは以下のような書き方をすることができます。
int number = 5;
Debug.Log(number);//5が出力される
number = number + 7;//自己代入
Debug.Log(number);//12が出力される上の例では変数numberの値である「5」に7を足した12という値をnumberという箱の中に入れるイメージです。数学の「=」とは異なり、プログラミングの「=」は代入の意味なのでこのような書き方をすることができます。
さらにこれらを省略し以下のように書くこともできます。
| もとの式 | 省略 |
|---|---|
| x = x + 5 | x += 5 |
| x = x - 5 | x -= 5 |
| x = x * 5 | x *= 5 |
| x = x / 5 | x /= 5 |
| x = x % 5 | x %= 5 |
さらに特別な形として、1を足す時と1を引く時は以下のように書くこともできます。
| もとの式 | 省略 |
|---|---|
| x = x + 1 | x++ |
| x = x - 1 | x-- |
練習問題1-9. int型変数yearを定義し、値として今の西暦で初期化して、出力しよう。その後、値を1年後に上書きして出力しよう。(省略した形でプログラミングを書こう)
変数にはint型、string型の他にも以下のような型があり、代入するデータによって決まった型を用いる必要がある(下表参照)。
| 型 | データ | 例 |
|---|---|---|
| int | 整数 | 10, 9999 |
| float | 単精度浮動小数点 | 2.5f, 3.14f (数字の後ろにfを付ける) |
| string | 文字列 | "こんにちは", "1月1日" |
| bool | 真偽 | true, falseのみ |
慣習的に、bool型変数はisXXX(XXXは名詞や形容詞)と命名されることが多い。
また、C#では、int型+float型、int型+string型など、型の異なる値同士の計算をすることも可能である。
int x = 5;
float y = 2.5f;
Debug.Log(x+y);//7.5が出力。float型として計算されるint year = 3;
string era = "令和";//eraは日本語で元号
Debug.Log("今は" + era + year + "年です!" );//今は令和3年です!が出力される(2021年現在)。int型はstring型として処理されるでは以下の計算はどうなるでしょうか?
int x = 5;
int y = 2;
Debug.Log(x/y);5÷2をしているのなら、2.5となるところが、実際には2と出力されます。なぜならint型とint型の計算であるため結果もint型になるからです。2.5と出力させるには以下のように強制型変換します。
int x = 5;
int y = 2;
Debug.Log((float)x/y);//2.5が出力練習問題1-10. bool型の変数isMacを定義し、値としてtrueを代入しよう。次に、Bool型の変数isWindowsを定義し、値としてfalseを代入しよう。(windowsユーザーは逆)
(ここではvar型については割愛します)