yumeの日記: C#学習 4 3
コメントありがとうございます。とても助かります。
++C++;
●C#のプログラムの基本構造
●プログラムの作成・実行
>基礎的な内容。おさらい的に。
・C#はIL(中間言語)にコンパイルされ、その後ネイティブコードにさらにコンパイルされる。
・演習問題 実際にVisual Studioでプログラムを実行せよ
●コメント
・コメントを入れすぎてるなら、コードを見直すべきかも
・関数の中に複数の処理があって、コメントを複数書く必要があるなら、関数を分けるべきかも
・理想的にはドキュメンテーションコメントだけでよいはず
>友人と分業したときは、コメントをたくさん書いていた。
>お互いにプログラミング初心者なのもあるが、そもそも関数をあまり利用しなかったり、あるいは細分化していなかったりしたと思う。
●値の入出力
・ユーザから入力を受け取るときは Console.ReadLine();
・数値を受け取りたいときは、(数値型).Parse(Console.ReadLine());
>早速String Formatを使っている。補足コメントのおかげですんなり読めた。
>GUIプログラムのひな形を用意しました、って書いてるけど404だった。
>「ご意見ご要望はGitHub の Issuesまで」って、プログラミング初心者には敷居が高いな……。
>Issueを書いておいた。Github初めて使った。
・課題。
Console.WriteLine("合言葉を言え:");
string s = Console.ReadLine();
Console.WriteLine("倍返し:");
Console.WriteLine(s);
Console.WriteLine(s);
>Nethackとか変愚蛮怒とかを思い出した。--more--
Microsoft Learn 『C# で基本的な文字列を書式設定する』
●はじめに
>相変わらず文章が読みづらい。薬のせいじゃなかった。
●演習 - 文字エスケープ シーケンスと逐語的文字列
・特殊文字はバックスラッシュ(文字)で入力する
・\nで改行、\tでタブ。「"」も\"で。
>この辺りは正規表現と一緒か。
>バックスラッシュなら「\\」二個連続なら「\\\\」
・逐語的文字列リテラルを使えば、いちいちバックスラッシュしなくても書いた通りに入る
・逐語的文字列リテラルは、文字列の手前に「@」を入れる。 ex. (@"hogehoge")
・Unicodeエスケープ文字(\u)で、UTF-16の文字コードを直接指定して文字を呼び出せる。ただしいろいろ注意点がある。
>こんな使い方すること、そんなにあるんだろうか。少なくとも日本語を普通に打つ方法は他にあるだろう。
●演習 - 文字列連結
・変数と+と文字列それぞれをつなげられる。
>おさらい的な。
●演習 - 文字列補間
・文字列の手前に「$」を入れると、文字列内の「中括弧{}」内を変数として読める。
>String Formatの書き方が違うようなもの?
・@と$、ふたつのプレフィックスを同時に使うこともできる
●課題
string projectName = "ACME";
string russianMessage = "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434";
Console.WriteLine($@"View English output:
c:\Exercise\{projectName}\data.txt
");
Console.WriteLine($@"{russianMessage}:
c:\Exercise\{projectName}\ru-RU\data.txt");
>ロシア語の前に1行空きを入れていなかった。@プレフィックスを使っていたのでとりあえず無理やり入れたけど、ちょっと気持ち悪い感じ。
●知識
>問題無し
6分オーバー。
マルチバイト文字列の代入 (スコア:0)
わざわざUTF-16 の文字コードに変換しなくても
string russianMessage = "Посмотреть русский вывод";
でいけるはずですが。
文字列リテラルの使い方の練習だから、無理に使っている感じでしょうか。
そういや、文字列リテラルって全然使わないですね (他の言語でも使わないかな)。
数値の型リテラルは、たまに使いますが。
Re: (スコア:0)
ソースコードのエンコーディングがシフトJISだった頃の名残ですね。
今はUTF-8が標準になったので普通に書いて問題ないです。
逐次的文字列リテラルは正規表現のパターン書く時とSQL書く時(改行もそのまま書ける)は大変便利なんで覚えておくといいですね。
Re: (スコア:0)
この例のキリル文字なら全てシフトjisに収録されているのでは…