前提条件:learn-code-basics-3-storing-and-using-information-in-verse
このレッスンを修了すると、すでにあるものを編集するだけでなく、シンプルなコードの作成を実際に始められるようになります。
でもまずは、もう少し詳しく説明します。
優秀なプログラマーがやっていること (記憶に頼らない進め方)
経験豊富なプログラマーの多くは、自分で行った作業やその理由に関するメモを、プログラムの一部ではない コメント としてコード内に記録します。これらのコメントはプログラムの実行時には無視されますが、「コード コメント」または単に「コメント」と呼ばれるプログラマーのメモはコード内に維持されます。
コード コメント
コード コメントを記述することは一般的にグッド プラクティスですが、プログラミングを始めたばかりでこれからさまざまな作業を行う状況では特に役立ちます。コード コメントは、自分 (または他のデベロッパー) が以前に行った作業の 背景や理由 について理解するうえで非常に役立ちます。
コード コメントを記述する最も簡単な方法はコメントの前に「#
」を加えることですが、他にもさまざまな方法があります。
|
単一行のコメント: # から行末までの間にあるものすべてがコード コメントの一部になります。 |
|
インラインのブロック コメント: <# から #> までの間にあるものすべてがコード コメントの一部となります。インラインのブロック コメントは単一行の式の間に入れることができ、その式の動作を変えることはありません。 |
|
複数行のブロック コメント: <# から #> までの間にあるものはすべて、コード コメントの一部となります。複数行のブロック コメントを利用すると、複数行にまたがってコメントできます。 |
|
ネストしたブロック コメント: <# から #> までの間にあるものはすべて、コード コメントの一部となります。これらはネストできます。既存のコード コメントを変更せずに、行内のいくつかの式をコメント アウトしてテストおよびデバッグしたい場合に便利です。 |
|
インデントされたコメント: <#> の後の新しい行にあり、4 つのスペースでインデントされたものすべてがコード コメントの一部となります。4 つのスペース文字でインデントされていない最初の行はコード コメントではなくなり、コード コメントが終了します。 |
コードで条件式を使って判断する
レッスン 2 で学んだ if .. else
式について覚えていますか?これらは 条件式 と呼ばれます。
条件式 (conditionals) では、どのように判断するかをプログラムに指示します。
if
式は、あることが 成功 か 失敗 のどちらであるかを調べます。成功であれば特定のコードが実行され、失敗であれば別のコードが実行されます。

これは、プログラムに「はい」か「いいえ」の質問をする方法と考えることができます。
現実では、皆さんはいつも「はい」か「いいえ」の質問に対する答えに基づいて判断します。 たとえば、「疲れていますか?」という質問で、 答えが「はい」であれば、眠りにつき、 答えが「いいえ」(else) であれば、遅くまで起きてアニメを見るでしょう。
この動作をプログラムするとすれば、次のようになります。
var Tired: logic = false
var WhatToWatch: string = "nothing"
if (Tired?):
set WhatToWatch = "your eyelids"
else:
set WhatToWatch = "cartoons"
Print("You should watch {WhatToWatch}")
# アニメを見るべき

if
式にある疑問符 ?
に気が付きましたか?Verse プログラムでは、このようにして logic
型が true
または false
のどちらであるかをチェックします。
ネスト
コードを ネスティング すると、そのコードが if
や else
といったキーワード式の下でインデントされます。これらの式によって新しいスコープが作成されます。
スコープとは、名前とそれに関連する値を使用することができるコードのチャンクを指します。 スコープはインデントされたコード ブロック内に含まれます。
次に例を示します。
if (Tired?):
set WhatToWatch = "your eyelids"
else:
set WhatToWatch = "cartoons"
set WhatToWatch = "your eyelids"
の行は if (Tired?):
の行の下でインデントされています。else:
の行でも同じパターンが繰り返されています。
1 行 のコードをネストすることも、ブロック (複数行) のコードをネストすることもできます。
これは、コードの実行時に、ネストされているコードは、その上にあるネスト元のコードのコンテキスト内でのみ実行されるということです。
複数の条件式を使う
判断するために複数の質問をする必要があることがあります。その場合、Verse では 演算子 and
と or
を使って行います。これらは 判定演算子 と呼ばれます。
and
を使うと、式全体が成功するには、演算子の両側の条件がどちらも true または成功である必要があります。
or
を使うと、式全体が成功するには、演算子の両側の条件のどちらか一方が true または成功である必要があります。
第一条件 | 演算子 | 第二条件 | 式全体 |
---|---|---|---|
成功 | AND | 成功 | 成功 |
成功 | AND | 失敗 | 失敗 |
失敗 | AND | 失敗 | 失敗 |
成功 | OR | 成功 | 成功 |
成功 | OR | 失敗 | 成功 |
失敗 | OR | 失敗 | 失敗 |
これらの演算子がどのように動作するかを確認するために、コードを修正しましょう。
疲れていなくても、翌日に授業があるのなら寝た方がよいかもしれません。SchoolTomorrow
という変数を作成し、or
を使って両方の logic
変数をチェックします。
var Tired: logic = false
var SchoolTomorrow: logic = true
var WhatToWatch: string = "nothing"
if (Tired? or SchoolTomorrow?):
set WhatToWatch = "your eyelids"
else:
set WhatToWatch = "cartoons"
Print("You should watch {WhatToWatch}")
# まぶたに注意するべきです
Tired
は引き続き false
に設定されていますが SchoolTomorrow
は true
に設定されているため、この式全体は成功し、WhatToWatch
は "your eyelids"
に設定されます。
複数の条件をチェックする別の方法もあります。
if
... else if
... else
を使って、チェックすることを並べて記述します。これは、最初の条件をチェックし、前の条件が失敗した場合にのみ、次の条件をチェックする必要があるということです。
翌日に授業がなく、疲れてもいない場合はどうなるでしょうか? 友人と映画を見に行くのもよいでしょう。 コードをもう一度修正して、どのように動作するか確認しましょう。
SchoolTomorrow
変数の値を変更し、新しい変数 FriendsAvailable
を宣言します。
var FriendsAvailable : logic = true
set SchoolTomorrow = false
次に、友人の都合が良いかどうかをチェックするようにコードを更新します。ただし、自分が疲れていないか、翌日に授業がない場合だけです。
if (Tired? or SchoolTomorrow?):
set WhatToWatch = "your eyelids"
else if (FriendsAvailable?):
set WhatToWatch = "a movie with your friends"
else:
set WhatToWatch = "cartoons"

いいですね! これで、疲れているか、授業がある日の前夜である場合にのみ、寝ることになります。 どちらかの質問の答えが「いいえ」であれば、友人と映画を見に行くか、友人の都合が悪ければ家に居てアニメを見ることになります。
夜の予定を立てるのがずっと楽になりました。Verse のおかげです。
トラブルシューティング
レッスン 1 で コンパイル エラー について学んだことを覚えていますか?
コードを記述しているときに直面することがあるもう 1 つの問題は バグ です。
バグ
バグとは、不適切な結果や予期しない結果をもたらす原因となる、コンピュータ プログラムでのエラーのことです。 バグの影響は、メッセージ内のテキストの色が変わるというような些細なものから、不適切なタイミングで画面にテキスト メッセージが送信されたり、さらにはプログラムがクラッシュしたりするというような重大なものまでさまざまです。
「バグ」は、コンピュータ サイエンスにおける初期の先駆者である Grace Hopper 氏によって作られた用語です。コンピュータに蛾が挟まって動作しなくなったのを Hopper 氏が見つけ、その蛾を手書きのトラブルシューティング日誌 (ログ) に貼り付けて、それに「初めてのバグが見つかったケース」というコメントを付けたという逸話が残されています。

コンパイル エラーがあるとプログラムをコンパイルできませんが、バグはプログラムが実行されるまで現れません。
バグを特定して除去するプロセスは デバッグ と呼ばれ、バグの検出を支援するツールは デバッガ と呼ばれます。
サマリ
- コード コメント を使って、特定のやり方でコードを記述した理由を覚えておき、どういう理由で何をやったかを他のプログラマーが理解できるようにしておきます。
- プログラム全体にわたって変わらないままである値には 定数 を使います。
- 入力に応じて変化する値には 変数 を使います。
- バグ と コンパイル エラー はコード内のエラーが原因で発生します。