このページは、練習問題の解答例や解説のページです。
次のうち、識別子として使えない名前はどれか選んでください。
識別子として使えない名前は、以下の5つです。
識別子に使える名前のルールについて詳しいことは、本編解説を参照してください。
1 の __abc
と、2 の ab__c
は、予約語の条件「2文字以上の連続する _
が含まれた名前」に該当します。予約語は識別子には使えません。
5 の _ABC
は、予約語の条件「先頭が _
で、2文字目が大文字のアルファベットになっている名前」に該当しています。
6 の int
は、キーワードの int
と同じなので使えません。
9 の 10a
は、「先頭に数字は使えない」というルールに違反しています。
std::cout
を使って出力する式、たとえば、std::cout << 3
は定数式ではありません。それはなぜですか。
定数式は、コンパイル時に処理を終えられる式です(本編解説)。
それに対して、出力の処理を行うのは、プログラムを実行してからだからです。
長方形の面積を求めるプログラムを、constexpr変数を使って作成してください。辺の長さや単位は自由にして構いません。
たとえば、次のように書けます。
#include <iostream>
int main()
{
constexpr auto depth = 10;
constexpr auto width = 5;
std::cout << depth * width << "\n";
}
実行結果:
50
名前の付け方は色々あると思いますが、ここでは縦の長さを
depth
、横の長さを width
としました。
ある同じ重さの物体がいくつか存在するとき、全体の重さを求めるプログラムを、constexpr変数を使って作成してください。重さや単位は自由にして構いません。
たとえば、次のように書けます。
#include <iostream>
int main()
{
constexpr auto weight = 10;
constexpr auto number = 5;
std::cout << weight * number << "\n";
}
実行結果:
50
重さを weight
、個数を number
で表現しています。
ところで、もし constexpr変数を使わず、リテラルのまま計算したら、次のように書くことになります。
#include <iostream>
int main()
{
std::cout << 10 * 5 << "\n";
}
実行結果:
50
これは、問題③ の「長方形の面積」の計算式とまったく同じで、「〇〇 × △△」というかたちになっています。
このように、リテラルだけで記述された式では、式の実際の目的が違っても、まったく同じになってしまい見分けが付きません。名前があることによって、意味が明確にできるのです。
【上級】この先のページで学ぶことになりますが、リテラルではなく、式であるとか、ある程度まとまった処理そのものに名前を付けるという、さらに進んだ考え方をして、プログラムを作ることもできます。
識別子の付け方には色々な考え方・ルールがあり、「命名規則」と呼ばれています。命名規則について調べてみてください。
命名規則とは、「プログラミングを行う際にソースコード上の識別子の名称となる文字列を決定するためのルールを定めたもの」[1]です。
ルールを明確にし、それを守ることで、ソースコードの可読性を高める効果があります。可読性を高めることには、ソースコードの修正のしやすさや、プログラミングのしやすさを向上させたり、誤りに気付きやすくなる効果があります。
命名規則には、プログラミング言語の種類による違い、ソフトウェア開発の現場ごとの違いなどもあって、これといった決定的な考え方・ルールがあるわけではありませんが、Google がまとめたもの[2]など、有名なものもあります。
たとえば、「会員の人数」をあらわす識別子を付けるにあたって、仮に「number of members」という英語表現を使うとすれば、以下のような選択肢が考えられます。
1 はスネークケース、2 はパスカルケース(あるいはアッパーキャメルケース)、3 はキャメルケース(あるいはローワーキャメルケース)と呼ばれる記法です。
スネークは「蛇」、キャメルは「らくだ」のことです。スネークケースは、小文字と _ が並ぶさまが蛇のように見えることから、キャメルケースは単語の先頭だけを大文字にしているさまがラクダのこぶのように見えることから来ています。パスカルは、Pascal というプログラミング言語で使われていたことに由来します。
また、Number
を使うと名前が少し長くなるから
Num
のように省略しよう、という判断も、命名規則の1つと考えられます。このような省略形を命名規則として決めたのなら、プログラム全体で統一しなければなりません。あるときは省略して、ほかのあるときは省略しないということは混乱を招きます(エディタの検索機能で見つからないものがあるなど)。
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |