なのログ

だから見てて下さい・・・俺の・・・変身

C#復習篇 vol.1

こんばんはございます。
昨日は情けねえお話をしました。

一旦胸張って言える「得意な言語」の一つでも定めて、
ちゃんと足元を固めなさいよアナタということで、
C#の世界に戻ってこようという方針でしたね。
「戻る」と言うほど居着いていたかはまた物議を醸すんですが。

というところで、じゃあ何しとこうねと思ったわけですが、

一週間で身につくC#言語の基本

一旦恥を忍んでこんなんやってみっかという所存です。
あと、VS2015想定のページらしいです。
思ったより古くないな、ええかんじやん。(安易な採用理由)

まあ当然(あわよくば)一週間もかるなよと思っている訳ですが、
これまで適当に学校と仕事とUnityをイジってきただけの自分の手はどういう状況におるんやということで。

続きからやっていきます。↓

もくじ

こんだけやりました。はじめていきましょう。


Day0

~プログラムってなんやねん、とか~

読み物ですね。全体的に「せやな」というかんじ。

といいつつ、唯一、
「.NETてインタプリタで動いてんのか・・・はえ・・・」
となるなどしました。


Day1

~ハロワとC#の最小構成要素 ~

コードが始まりました。さすがに過去に通った道ですが、
こういう時に面倒を起こして段階を飛ばすとロクな事が無いので、

バカ正直にやっていきます。 f:id:nanoyatsu:20180926234718p:plain (バカ正直にやっている図)

構成要素のはなし
  • namespace
    初手からそう得意でない話題が降ってきて震えていますが、
    C#は同一名前空間だと別ファイルでもそのまま参照できて、(合ってるよな?)
    それはコンパイルの時かなんかに解決されてんのかね?ほい?
    みたいな認識をしています。

  • クラス名
    はい。これはもう、こう、クラスだ。

  • エントリーポイント
    C#のこれ微妙にわかっていない所があって、
    「クラス名はどうなんすか?」という気持ちがありました。
    調べました。とにかくMain()がエントリーポイントになるんですね。
    複数のクラスにMain()があったらそれはエラーだそうで。わかりを得ました。

  • Console.WriteLine()

  • usingとネームスペース
  • コメント
    さすがによしとしました。
    というかWriteLine()についても一段落設けてあるのすごいな・・・。
いろんなConsoleWriteLine()をしている(Sample102)

引数に数字リテラル取れるよみたいな。

  • ビルドエラーを吐かせている

    1>------ ビルド開始: プロジェクト: Sample103, 構成: Debug Any CPU ------ 1>c:\users\kenji.st04-sv\documents\visual studio 2012\Projects\Sample103\Sample103\Program.cs(13,21,13,30): error CS0117: 'System.Console' に 'WriteLime' の定義がありません。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

typoやんけ!

以上でDay1おわりです。
うーん初歩。いやわかるけど。


Day1 演習

演習コーナーがありました。やっていきます。

prob1-1

Console.WriteLine()を用いて、自分の名前を表示するプログラムを作りなさい。

お、おう

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("なのやつです");
        }
    }

お、おう(take2)
バカ正直にやっていこうな

prob1-2
    Console.WriteLine("123456789");

問題文カットという術を覚えました。さすがにな・・・?

prob1-3

WritLine

typo案件でした。

・・・あっDay1の演習おわった


Day2

演算子と変数~

演算子(sample201)

WriteLine()の引数中に数値リテラル、そこで四則をしたやつを入れています。

  • 演算子
    四則のやつ。大丈夫。
  • Formatなやつ
    ぶっちゃけ正式名称がわかっていない・・・情けない・・・。
    正直に言うと「そういやこの書き方はC#か」みたいなことを想いました。
    下手の横好きで色々な言語の色々な書き方をしすぎたのもあるんですが、 個人的には+で文字列をつなげちゃうことが多かったな、という感じ。
    覚えておきます。
            Console.WriteLine("{0} + {1} = {2} _ 10倍だぞ10倍", 1, 1, 200);

コレな!

変数(sample202)

今になって「変数は箱やで」というのもクソしんどいんですが、
飛ばすとそれはそれでキリがないので地道に。
なに、明日にはこんな気持ちも起こらないような内容でしょう。(?)

    int hidarinohito = 1;
    int miginohito = 1;
    int rironti = 200;
    int awasete = hidarinohito + miginohito;
    double bairitu = rironti / awasete;
    Console.WriteLine("{0} + {1} = {2} _ {3}倍だぞ{3}倍", hidarinohito, miginohito, rironti, bairitu);

とりあえず書かれている事と同等か?みたいなことをしておきました。
あと型を並べた表があったりして
「こっちにも書いとくか~?」となりましたが、
マークダウンで表起こすのダルすぎるよな・・・となり取りやめました。
まあ型の細かい話とか慣れるかその都度計算するかググるかだよな・・。

それから+=とかの話が出てきて、
「ウワッッッmutableでは????」
とか思ってしまったので、いい具合に脳が鈍ってきています。

キャスト(sample204)

大事な話だ・・・心して読もう・・・。

f:id:nanoyatsu:20180927221250p:plain (そらそんなに込み入った話は無いわな~~~という表情)

ぶっちゃけ未だにキャストのこまかい話に困ってしまうんですよね。
ううむ正直具体的に何がというのもあまりないんですが。
昔、「計算機言語ってのはな~~」みたいな頃にやたら脅された記憶にビビっているだけかもしれません。

まあなんかしておきました。

    hidarinohito = 1; //さっきのintです
    double miginohito_d = 1.6;
    rironti = 512; //さっきのintです
    double awasete_d = (double)hidarinohito + miginohito_d;
    bairitu = rironti / awasete_d; //これはもとからdouble
    Console.WriteLine("{0} + {1} = {2} _ {3}倍だぞ{3}倍", hidarinohito, miginohito_d, rironti, bairitu);
    //1 + 1.6 = 512 _ 196.923076923077倍だぞ196.923076923077倍

唯一したキャスト(double)が実は不要だったりして、
なんだか相当微妙な例な気がします。
bairituを出すときの計算もint/doubleだけどね、とかとかとか。

「やっぱ自分キャストのこまかい事わかってないな・・・」
という気持ちにだけなりました。
具体的に何がどうなのという部分がぼんやりしています。 ダウンキャストはしんどいよねくらい。くらい。

標準入力(sample205)

これも大事だ、忘れちゃだめなやつだね、というきもち。
書いておきました。

    string str = "";
    Console.Write("お前は 次ッ!「");
    str = Console.ReadLine();
    Console.WriteLine("」と言うッ!");
    Console.WriteLine("おまえ「{0}・・・ハッ!」", str);

f:id:nanoyatsu:20180927225003p:plain 「あっそっか・・・改行入っちゃうか・・・」となりました。
(回避方法が浮かばない顔)
Console.Readはcharなんですよね?)(char繰り返す?)

定数(sample206)

constで書けるよ!

const double ensyu-ritu = 3.141592みたいな。

以上やな(雑)(円周率あってるかなこれ)


Day2演習

全部まとめてしまうなど
    //prob2_1
    Console.WriteLine("{0} + {1} = {2}", 5, 3, 5 + 3);
    Console.WriteLine("{0} + {1} = {2}", 5, 3, 5 - 3);
    Console.WriteLine("{0} + {1} = {2}", 5, 3, 5 * 3);
    Console.WriteLine("{0} + {1} = {2}", 5, 3, 5 / 3);
    Console.WriteLine("{0} + {1} = {2}", 5, 3, 5 % 3);
    Console.Write("\n");

    //prob2_2
    int a = 1, b = 2, c = 3, d = 4, e = 5;
    a += 2;
    b -= 1;
    c *= 3;
    d /= 2;
    e %= 2;
    Console.WriteLine("{0},{1},{2},{3},{4}", a, b, c, d, e);
    Console.Write("\n");

    //prob2_3
    Console.Write("かけ:");
    string prob2_3_str = Console.ReadLine();
    Console.WriteLine("おまえがかいたことばだ:{0}", prob2_3_str);
    Console.Write("\n");

    //prob2_4
    Console.Write("いっこめ:");
    string prob2_4_str1 = Console.ReadLine();
    Console.Write("にっこめ:");
    string prob2_4_str2 = Console.ReadLine();
    Console.WriteLine("いっこめ+にっこめ={0}", prob2_4_str1+prob2_4_str2);
    Console.Write("\n");

f:id:nanoyatsu:20180927233006p:plain

ドゥーンと書きました。(記事的に)手を抜きやがった。

本日は以上です!さすがにまだほぼ全部既知!
どうなる次回!(どうなられても困る)

では!