わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

「ピリオド」について,知っておくとよいこと

 何回かに分けて記事を投稿しながら,情報処理科目の授業内容を振り返ることにします.
 なぜ「振り返る」のかというと,この4月より担当科目で取り上げる内容がいくらか変わりまして,学部改組から今年度までの5年間で,何を教えてきたか,そしてもし,教える側・学ぶ側に余裕があれば,追加で何を知っておくとよいかを,残しておこうと思ったからです.以下,「前期科目」は今年度までの前期の情報処理科目(主に計算機の使い方と情報リテラシー),「後期科目」は後期の情報処理科目(プログラミング入門.CとVBAJavaScript)を表します.
 本記事は「ピリオド」を対象にします.「.」の文字です.「ドット」と呼ぶこともあります.ピリオドは英文などの文の終わりを表す印ですが,情報処理科目では,英文を書くという課題はありませんでした…と思いきや,前期科目のタイピング練習では,日本語のタイプする際にも,文の終わりに「.」を打っていました.
 「.」の文字について,大学入学より前に使うのは,算数の小数点と,コンピュータ使用時の,URLやファイル名に出現する記号,でしょうか.
 前期科目では,まずソフトウェアのバージョンの例として「73.0.3683.103」*1を,IPアドレス(IPv4)として「133.42.53.23」という表記を,紹介しました.
 授業から離れますが,そういった値の書き方は,ドット付き10進表記と呼ばれます*2.「3.2.6」と書いて,「先頭(ツリー構造のルートノード)から始まって,左から3番目のエッジを選んでノードを移動し,次は左から2番目,そして左から6番目に移動して辿り着くノード(またはパス)」を表すこともあります.URLにおいて,「.」は何回も出現しますが,「.」で終わらないのが慣例です.ファイル名も同様です.kadai12.txtという名前でファイルを作ってから,これを,kadai12.txt.bakに変更してもよいのです.
 後期科目のプログラムコードで,「.」が最初に出現するのは,VBAのマクロです.

Sub Macro1()
'(コメント:省略)
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
End Sub

 ただし授業で,このように打ち込んだわけではありませんでした.Excelのワークシートで適当に文字を打ち,そのセルを選択してから,マクロの記録を開始し,セルの文字色を赤に替えて,記録終了したときの,マクロの中身でした.
 上記のWithからEnd Withまでの4行は,「Selection.Font.Color = -16776961」「Selection.Font.TintAndShade = 0」という2つの文と等価であり,それぞれ「選択したセルのフォントの色を-16776961(赤)にする」「選択したセルのフォントの明るさを0(標準の明るさ)にする」という指示です.
 このように,SelectionとFont,Font(より正確にはSelection.Font)とColorまたはTintAndShadeとの間に「.」を置くことで,プログラム上では「選択したセル『の』フォント」「選択したセルのフォント『の』色または明るさ」という意味になります.「属性参照」です.
 JavaScriptの授業回でも,最初にダウンロードしてもらったHTMLファイルの中に,次の行が含まれていました.

    canvas.resize(600, 400);
    canvas.clearColor("white");

 canvasは変数名です.あらかじめ値を代入しておいてから,「canvas.resize(600, 400);」でキャンバスのサイズを,幅600,高さ400にし,「canvas.clearColor("white");」は,キャンパスの色を全て白にするという指示です.
 このcanvasと,resizeまたはclearColorとをつなぐ「.」は,「の」というよりは「を対象にして(~しなさい)」という意味になります.VBAの授業回でも,「ActiveSheet.ChartObjects.Add(20, 40, 300, 200)」の2番目のドットは,同じような使い方と言えます.
 Cの授業で,ここまで書いてきたような「.」は使用しませんでしたが,実際には使えます.構造体のメンバ参照で使用し,「ドット演算子」とも呼ばれます.
 「演算子(オペレータ)」という用語を取り上げたのは,Cの授業の中でした.演算対象はオペランドといいます.2 + 3 * 4という式において,*のオペランドは3と4であり,+のオペランドは2と3 * 4です.ここで+のオペランドが2と3ではないのは,演算子の間に優先順位があるからです.
 プログラミング言語ごとに,どのような演算子が使用可能で,その優先順位がどうなっているかは,表になっていることが多いです*3.C,VBAJavaScriptと,(今後のことを考えて)Pythonの表を見つけました.

 VBAには「.」が見当たりませんが,JavaScriptの「メンバーへのアクセス」,Pythonの「属性参照」に対応するものとして,演算子の枠組みの外で(そして式の一部として)使用可能となっています*4
 演算子であるかどうかはさておき,プログラミング言語で見かける「.」について,前後が英単語などであれば,それらの名前をつなぐものとなります.それでもピリオドは(文法上は),名前には含まれません.「名前」は,プログラミングでは「識別子」に置き換えることができ,識別子の命名規則として,「.」の文字は使用できない,と言えます.しかし物事には例外があり,フリーの統計ソフトウェアのRでは,「.」を識別子に使えます.wikipedia:R言語に出現する「t.test」は,これが1つの関数名となります.

*1:昨年4月,Google Chromeブラウザをインストールしそのバージョンを解答するという宿題の解答例でした.

*2:小学校の算数で,いわゆる10進数のことを---子どもたちがこの語を教わることはないとしても---「十進位取り記数法」といいます.数値の大小関係は2.10=2.1<2.9となるのに対し,バージョン2.10は,2.9の次のバージョンと見なす(2.1と異なる)ことになります.

*3:句構造文法や拡張BNF表記で表されることもあります.Pythonだとhttps://docs.python.org/ja/3/reference/expressions.htmlより,またCでは[isbn:4274063372]の本の12.2節で読むことができます.

*4:「.」を(定義上は)演算子に含めないというのは,JavaScriptでも同様と言えます.https://www.ecma-international.org/ecma-262/10.0/index.html#sec-static-semantics-static-semantics-assignmenttargettypeでは「12.3.1.6Static Semantics: AssignmentTargetType」で「.」を含む式が定義されており,目次で「Operators」の単語が出現するのは12.5からです.