LoginSignup
0
0

More than 5 years have passed since last update.

CSセミナー001 文字列を表示する

Last updated at Posted at 2018-12-02

こんにちは。若草春男です。これから、コンピュータ・サイエンス(CS)のセミナーを行っていきたいと思います。このセミナーの目標は、「プログラミング言語を作れるようになること」です。参考資料として次のものをおすすめしますが、このシリーズを読む人はこの書籍を用意されなくて結構です。

Michael Sipser著、渡辺治・太田和夫監訳(2000) 計算理論の基礎、共立出版株式会社

「kuin」を表示する

デバッグ出力をしてみましょう。まずは、ログ出力に「kuin」と表示させましょう。

c001.kn
func main()
    do dbg@print("kuin")
end func

Kuinエディタでこのプログラムを入力して、[コンパイル&実行]をクリックしてみましょう。
001.png
002.png
ログ出力に、「kuin」と表示されました。

「kuin」を2回表示する

それでは、「kuin」と2回出力してみましょう。想定される出力はこんな感じです。
003.png
試しに次のコードを試してみます。

c002.kn
func main()
    do dbg@print("kuin")
    do dbg@print("kuin")
end func

004.png
想定していた出力とは違う感じになってしまいましたね。どうしてこうなるかというと、1回目の「kuin」を出力してから、改行コードを出力していないからです。それでは改行コードの出力をソースコードに追加してみましょう。

c003.kn
func main()
    do dbg@print("kuin")
    do dbg@print("\n") {改行コードを出力}
    do dbg@print("kuin")
end func

005.png
どうやらうまくいったようですね。ところで "\n" のことを改行コードと言います。C言語という言語でそのような決まりになっているので、その他のプログラミング言語においてもたいていはそのようになっています。とにかくログ出力を改行するときには「改行する関数を呼び出すのではなく、ログ出力をする関数に改行コードを入力する」のだと覚えてください。

さて、先ほどの[c003.kn]の中に、コメントという記述があります。コメントには2種類あります。{}で囲うものと、;で始まる行です。コメントの中には自由にメモや文章を書くことができます。""で囲われているものは文字列です。

c004.kn
func main()
    {私は
    コメント
    です}
    do dbg@print("私はコメントではありません。")
    ; 私はコメントです
end func
  • 演習1 [c003.kn]からコメントを削除してください。
  • 演習2 2回「kuin」を表示するプログラムをdbg@print関数の呼び出しを(3回ではなく)2回に減らしてみてください。
  • 演習3 2回「kuin」を表示するプログラムをdbg@print関数の呼び出しを1回に減らしてみてください。
  • 演習4 「kuin」を表示するプログラムを、dbg@print関数の呼び出しを1文字ずつ4回に分けておこなうようにしてみてください。

Kuinのドキュメントについて

Kuinにはドキュメントがあります。さっそくこれについて学んでみましょう。
- 演習5 プログラミング言語「Kuin」のドキュメントのトップページを開いてみてください。下の画像のような見た目です。
006.png
- 演習6 dbg@print関数の説明が書かれているドキュメントページを開いてください。

Kuinのドキュメントには検索機能がありません。ドキュメント内で特定のことがらについて知りたい場合はどうすればいいのでしょうか。例えば、Kuinのドキュメントから、「文字列」に関連するページを検索してみます。まず、ブラウザのアドレスバーに[site:kuina.ch 文字列]と入力してエンターキーを押します。
012.png
すると、「くいなちゃん学院」の中で「文字列」というキーワードにヒットしたページの一覧が表示されます。
013.png
このように検索することで探したいページが見つかる確率が上がります。ここで注意したいのは、ヒットしたページが全部Kuinのドキュメントではないということです。例えば「第8話 ポインタと配列と文字列~」はKuinのドキュメントではなく「6さいからのプログラミング」というコンテンツの一部なので見間違えのないように注意してください。

ヒットしたページの一番上のページを開いてみます。
014.png
Kuinのドキュメントページは長いことがあります。このページを表示しているとき、ブラウザのスクロールバーに注目してみましょう。スクロールバーがウィンドウのだいたい10%くらいの長さなのでこのページは10画面くらいの長さがあることが分かります。このときには、ブラウザの検索機能を使いましょう。Ctrl+Fボタンを押します。
015.png
このポップアップに検索したいキーワードを入力します。ここに「文字列」と入力すると、「文字列」というキーワードがハイライトされます。また、スクロールバーにキーワードがヒットした箇所がマークされます(Internet Explorerではマークされませんでした)。これらのヒントを頼りに情報を調べていきます。
016.png
- 演習7 "kuin"という記述が文字列なのはなぜですか?その論拠となる箇所をKuinのドキュメントから探してみてください。
- 演習8 cui@print関数を使ってコンソールに「くいなちゃん6さい」という文字列を出力してください。

お疲れさまでした

今回はKuinで文字列を表示する方法とブラウザでKuinのドキュメントを見たり、検索したりする方法を学びました。初回なのでコンピュータサイエンスには触れず、Kuinの基本操作に慣れてもらうことに注力しました。

このシリーズでは「プログラミング言語を作る」ことを目標としていますが、そのための最初の目標は「正規表現エンジンを作る」ことです。プログラミングの段階としてざっくり説明すると次の3段階があるかと思います。

  • 初心者: 文字列を出力することができる
  • 中級者: 正規表現が扱える
  • 上級者: パーサを作成することができる

非常にざっくりとしていますが、正規表現を扱ったりパーサを作成したりする途中に色々な壁があるのでこのような説明でだいたい正しいのかと思います。今回は文字列を出力するということに注力したわけです。次回からは正規表現についてみっちり学んでいきたいと思っています(私も正規表現エンジンを記述したことがありません)。どうぞよろしくお願いいたします。

演習の答え

演習1

e001.kn
func main()
    do dbg@print("kuin")
    do dbg@print("\n")
    do dbg@print("kuin")
end func

演習2

e002.kn
func main()
    do dbg@print("kuin\n")
    do dbg@print("kuin")
end func

(※改行コードを書くときは、行頭ではなく行末に書くのが一般的です。)

演習3

e003.kn
func main()
    do dbg@print("kuin\nkuin")
end func

演習4

e004.kn
func main()
    do dbg@print("k")
    do dbg@print("u")
    do dbg@print("i")
    do dbg@print("n")
end func

演習5

①ブラウザのアドレスバーで[kuina.ch]と入力するか、[kuin]や[くいなちゃん]で検索して[くいなちゃん学院]のトップページを開きます。
007.png
②[くいなちゃん学院 マップ]の[②研究室]をクリックします。
③表示されたポップアップで、[プログラミング言語「Kuin」]と書かれたリンクをクリックします。
008.png

演習6

dbg@print関数は、dbgライブラリのprint関数という意味です。Kuinのライブラリについて知りたい場合はドキュメントのトップページ下方にある[言語仕様]のなかから[dbgライブラリ]と記載のあるリンクを探してクリックします。
009.png
010.png
下記の箇所がdbg@print関数の説明になります。
011.png

演習7

Kuinのドキュメント内で、以下の記述がそれに相当します。
017.png

「"abc"」とは「['a', 'b', 'c']」と同じ意味で、文字列型でのみ使える書き方です。という記述によって、"で囲われたテキストが文字列になることが分かります。

演習8

Kuinエディタにこのように入力して[コンパイル&実行]をクリックします。
018.png
Kuinエディタ内で、[設定]の[実行環境]の箇所を[ウィンドウ]ではなく[CUI]に設定する必要があります。正しく実行されればこのようなコンソール出力が得られるはずです。
019.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0