Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1. # C#勉強会 1回
  2.  
  3. ## 内容
  4.  
  5. Unityで使う `C#` を勉強します。
  6.  
  7.  
  8.  
  9. 1. 変数
  10. 2. 条件分岐
  11. 3. ループ処理
  12. 4. 配列
  13. 5. クラス
  14. 6. 構造体
  15. 7. UnityでのTips
  16.  
  17. の全部で7回を予定しています。
  18.  
  19.  
  20.  
  21. 各回の最後に宿題を出すのでやってきてください(強制ではないです)
  22.  
  23. 自分のPCがある人はそれを持ってきてやってもいいです。
  24. 自分のPCが人は学校のMacを使ってください。
  25.  
  26. 学校のPCを使う人はUSBメモリを持ってきてください。
  27.  
  28. ## 進め方
  29.  
  30. 1, 2 回がうじまる
  31. 3, 4 回がりゅうだい
  32. 5, 6 回がユムル
  33.  
  34. がメインで教えます。
  35.  
  36. 人が変わると教える進め方が変わるかもしれませんが、大体は
  37.  
  38. 0. 課題の解説
  39. 1. 各回のメインの内容を教える
  40. 2. 演習
  41. 3. 課題
  42.  
  43. という感じになると思います。
  44.  
  45. ## 環境
  46.  
  47. 実行環境はUnityを使います。
  48.  
  49. ## Unityの使い方
  50.  
  51. ## Hello World
  52.  
  53. `console` にHello Worldを出して見ましょう
  54.  
  55. ```csharp
  56. class Main : Mono {
  57.  
  58. void Start() {
  59. print("Hello World!!");
  60. }
  61.  
  62. }
  63. ```
  64.  
  65. > これから出てくるコード例はすべて `void Start() {` の中のものです。
  66.  
  67. ### 何やってるの?
  68.  
  69. `print` という命令で`"Hello World!!"` という文字列を表示させてます。
  70.  
  71. `print` は `()` の中に書いた `値` を出力します。
  72.  
  73. ### やってみよう
  74.  
  75. `console` に自分の名前を入力してみよう!
  76. できた人は、いろいろ出力して遊んでみよう!
  77.  
  78. ## 計算をさせて見よう
  79.  
  80. `console` に数字を出力してみましょう
  81.  
  82. ```csharp
  83. void Start() {
  84. print(42);
  85. }
  86. ```
  87.  
  88. ### 西暦から令和を計算してみよう
  89.  
  90. | 西暦 | 令和 |
  91. | ---- | ---- |
  92. | 2019 | 1 |
  93.  
  94. `令和 = 西暦 - 18` で計算できそう
  95.  
  96. 計算した値を `console` に出力してみよう。
  97.  
  98. ### 主な演算子
  99.  
  100. 演算子とは `+` や `-` などの計算に使う記号のこと
  101.  
  102. | 演算子 | 意味 |
  103. | :----: | :---------------------: |
  104. | + | 足し算 (文字列の結合) |
  105. | - | 引き算 |
  106. | * | 掛け算 |
  107. | / | 割り算 |
  108. | % | 剰余算 (あまりの計算) |
  109.  
  110. > 演算子の優先順は数学の演算のものと同じです
  111.  
  112. ### やってみよう
  113.  
  114. 半径5cm の円の面積を計算して `console` に出力してみよう
  115. 円周率は `3.14` で計算してください。
  116.  
  117. ## 変数とは?
  118.  
  119. 半径5cm の円の面積を計算した下に
  120.  
  121. - 半径5cm の円の円周の長さを計算して`console` に出力
  122. - 半径5cm の球の体積を計算して`console`に出力
  123. - 半径5cm の球の表面積を計算して`console`に出力
  124.  
  125. してみよう。(円周率は `3.14` )
  126.  
  127. ```cs
  128. void Start() {
  129. print(5 * 5 * 3.14); // 面積
  130. print(2 * 5 * 3.14); // 円周
  131. print(4/3 * 3.14 * 5 * 5 * 5); // 体積
  132. print(4 * 3.14 * 5 * 5); // 表面積
  133. }
  134. ```
  135.  
  136. それでは、今度は半径を2cm にしたものを出力してください。
  137.  
  138. ### めんどくさかったですか?
  139.  
  140. 半径が変わるたびに `5` のところを変更しないといけない(今回だと8箇所)
  141.  
  142. `5`を`2`に変更したあとに`8`にしたくなったらまた変えないと行けないが
  143.  
  144. ```cs
  145. print(2 * 2 * 3.14);
  146. ```
  147.  
  148. のところはどっちが面積か円周かわからない(式から意味が伝わって来ない)
  149.  
  150. - 値に意味をつけたくなる(ラベリング)
  151. - 同じ意味の値は一括で変更したい
  152.  
  153. という必要がでてくる
  154.  
  155. ### 変数を使う
  156.  
  157. そこで変数をつかいます。
  158. 変数とは `値` を入れておく `容器` のことです。
  159.  
  160. ```cs
  161. void Start() {
  162. var radius = 5; // 半径は5cm
  163. print(radius * radius * 3.14); // 面積
  164. print(2 * radius * 3.14); // 円周
  165. print(4/3 * 3.14 * radius * radius * radius); // 体積
  166. print(4 * 3.14 * radius * radius); // 表面積
  167. }
  168. ```
  169.  
  170. これで半径を 2cm にしてと言われようが 8cm にしてと言われようが1箇所を変えるだけで変更できる。
  171. 値に名前がついたから、式から何を計算してるかわかる
  172.  
  173. ### やってみよう
  174.  
  175. 円周率を変数にしてみよう(変数名は `pi`)
  176.  
  177. ## 変数の型
  178.  
  179. 変数には入れれる `値の種類` が決まっています。
  180. `値の種類` は一般的に `型` といいます。
  181.  
  182. ### 基本的な型の種類
  183.  
  184. | 型 | 意味 |
  185. | ------ | ------------------ |
  186. | int | 整数 |
  187. | float | 単精度浮動小数点数 |
  188. | double | 倍精度浮動小数点数 |
  189. | bool | 真偽値 |
  190. | char | 文字 |
  191. | string | 文字列 |
  192.  
  193. ### `char` と `string` の違い
  194.  
  195. `char` は **文字** (`A` とか `a` とか `あ` とか)
  196.  
  197. `string` は**文字** (`char`) で構成された **文字列**
  198. 文字が 0以上集まったもの
  199.  
  200. ## 変数の宣言
  201.  
  202. 変数の宣言方法は、**値から型を予測するタイプ** と **使う人が型を指定するタイプ** の2種類ある。
  203.  
  204. ### 値から型を予測するタイプ
  205.  
  206. ```cs
  207. var hoge = 1; // この場合 hoge は int型 になる
  208. var foo = "文字列"; // foo は string型 になる
  209. var fuga; // 予測する値がないので error
  210. ```
  211.  
  212. `hoge` に代入されてる値は `1` なので整数として認識される
  213.  
  214. > このタイプを型推論という
  215.  
  216. ### 使う人が型を指定するタイプ
  217.  
  218. ```cs
  219. int hoge = 1;
  220. string foo = "文字列";
  221. bool fuga = 42; // 型と値が一致しないので error
  222. ```
  223.  
  224. `var` だったところを 型名にする。
  225.  
  226. 明示的に変数の型を指定できる。
  227.  
  228. ### リテラル
  229.  
  230. 変数の逆で、変わることのない値
  231. 実際には、 `1` とか `"hogehoge"` とか `3.14` とかのこと
  232.  
  233. | 型 | リテラル |
  234. | ------ | ------------------------------------------- |
  235. | int | 数字 (ex: 1, 2, 3, ) |
  236. | float | 3.14f (末尾に `f` をつける) |
  237. | double | 3.14 (少数) |
  238. | bool | true / false |
  239. | char | 'A' (シングルクォーテーション `'` で囲む) |
  240. | String | "ABC" (ダブルクォーテーション `"` で囲む) |
  241.  
  242.  
  243.  
  244. ### やってみよう
  245.  
  246. `float` 型の `pi` を値 `3.14f` で宣言してみよう。
  247. その `pi` に 文字列の値 `"円周率"` を代入して結果を見てみよう。
  248.  
  249. ## 課題
  250.  
  251. 1. 自分の名前を 変数`firstName` で宣言する
  252. 2. 自分の苗字を 変数`lastName` で宣言する
  253. 3. `console` に文字列の結合を使って 名前を出力する
  254.  
  255.  
  256.  
  257. - `firstName`, `lastName` はローマ字と日本語どちらでもいいです。
  258. - ローマ字の場合は `firstName lastName`
  259. - 日本語の場合は `lastName firstName`
  260. - 名字と名前の間はスペースを開ける
  261.  
  262. ### 出力結果
  263.  
  264. ##### ローマ字ver
  265.  
  266. > Shuji Oba
  267.  
  268. ##### 日本語ver
  269.  
  270. > 大庭 周士
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement