プログラミングの基本要素
変数
変数は、データを保持するための「入れ物」のようなものです。 変数には名前がついていて,そこに入れた値を後で参照したり,変更したりできます。変数を使うには,変数を用意します(これを「変数の宣言」という)。それには3つの方法があります。
- ・constというキーワードを書き,続いて変数名,=,値を指定する。その値が変数に格納される。constは定数を表し、新しい値を代入できない。
const x = 12;
- ・letというキーワードを書き,続いて変数名,=,値を指定する。その値が変数に格納される。
let x = 12;
- ・varというキーワードを書き,続いて変数名,=,値を指定する。その値が変数に格納される。
var x = 12;
変数名は、英数字、アンダースコア(_)、ドルマーク($)からなる文字列で,名前の先頭は数字以外の文字にします。名前の長さは任意です。ただし、JavaScirptがキーワードとして使う文字列(予約語)は使えません。
CやJava言語では,変数にどのような型のデータを入れるか(例えば数値か文字かオブジェクトかなど)をあらかじめ決めておく必要がありますが,JavaScriptにはその必要はありません。Loosely typed language(弱く型づけされた言語)です。
constとletを使って、変数をブロック{と}の中で宣言すると,その変数はそのブロック内だけで有効なローカル変数となります(これをブロックスコープと言います)。一方、変数をブロックの外で宣言すると,その変数はそのスクリプト内どこででも有効なグローバル変数となります。
一方、varで宣言された変数は、関数の内か外かで、その有効範囲が判断されます(関数スコープ)。
データ型
JavaScriptの変数の宣言に型を指定する必要はありませんが、データには型があります。・基本型 数値型 number 【値】整数または浮動小数点数 文字列型 string 【値】シングル/ダブル引用符で囲まれた0個以上の文字 真偽型 boolean 【値】trueまたはfalse 特殊型 【値】null(値がないことを表す)、undefined(値が未定義) ・参照型 配列 array 【値】データの集合(インデックス番号で要素を参照) オブジェクト object 【値】データの集合(名前で要素を参照) 関数 function【値】一連の処理の集合変数を宣言しても値を代入しないと、値はundefinedとなります。
次の例のように、整数が入る基本データ型の変数の場合、メモリ上の変数の場所にはその数値そのものが格納されます。
const a = 100;一方、参照型が入る変数の場合は、異なります。変数に値を代入する前に、メモリ上に配列やオブジェクトが作られており、変数に格納されるのは、その配列やオブジェクトがあるメモリ上のアドレス(ポインタとも言う)です。そのため、オブジェクトが入る変数のデータ型のことを参照型と呼びます。
リテラル
プログラムの中に書かれる固定の値がリテラルです。- [1] 数値のリテラル……整数(ex. 10)と浮動小数点数(ex. 12.3)。最大値は2の53乗から1引いた値。
- [2] 真偽値のリテラル……trueまたはfalse
- [3] 文字列のリテラル
"abc"や'123'のように、0個以上の文字を二重引用符 (") または単一引用符 (') で括ったもの。JavaScript は自動的に文字列リテラルを一時的な String オブジェクトに変換するので、文字列リテラルを持つ値は、String オブジェクトのメソッドを呼び出すことができ、String.length プロパティを使って文字列の長さを知ることができます。 - [4] 配列のリテラル
変数はひとつのデータを格納するものでしたが、複数のデータをまとめて扱うときに,便利なのが配列です。複数の値をひとまとまりとして名前(配列名)をつけ、1つの変数のようにして扱えます。
配列中の個々のデータのことを配列の要素と呼びます。
配列のリテラルは、次のように[と]の間に、要素をカンマで区切って並べて書きます。let a1 = [123.4, 56.7, 8.9]; let a2 = ["kyoto", "osaka", "ootsu", "gifu"];
配列のそれぞれの要素は、配列名とインデックス(添字)を使って表します。インデックスとは配列の要素に番号をつけたもので、先頭が0で順にふられます。配列名に続いて[ ]を書き、その中に添字を書きます。[0]の値 [1]の値 [2]の値 [3]の値 [4]の値
配列dataの最初の要素はdata[0]と表し、
配列dataの最後の要素はdata[4]と表します。data[0] = 123.4; data[1] = data[0] + 100;
配列リテラルは Array オブジェクトであり、配列リテラルを持つ値にArrayオブジェクトのメソッドを使うことができます。a2.push("nagoya") //配列の最後に要素を追加
- [5] オブジェクトのリテラル
要素をプロパティ名とその値のセットとして、複数の要素(データ)をまとめて扱うのがオブジェクトです。配列がインデックス番号で要素にアクセスするデータの集合であるのに対し、名前でアクセスするデータ集合です。
オブジェクトのリテラルは、次のように括弧{と} で囲んで指定します。let obj1 = { name: "Shiga", kentyo: "ootsu", jinkou: 141 };
ドット演算子 (.) の後ろにプロパティ名を書くことで、オブジェクトの要素へアクセスできます。console.log(obj1.name); //Shiga
文
プログラムに記述する命令の単位を「文」と呼びます。セミコロンによって文の区切りを表します。次のような処理をする文があります。
- ・計算をして、式の値を変数に入れる(代入する):
【例】 let a = 1 + 20;
- ・関数を実行する:
【例】Math.ceil(10.2);
- ・オブジェクトを作って変数に入れる:(クラスとオブジェクト参照)
【例】 const 変数 = new クラス名(引数);
算術演算子
算術的な計算をするには、次の算術演算子を使います。演算子 | 意味 |
+ | 足し算 |
- | 引き算 |
* | 掛け算 |
/ | 割り算 |
% | 割り算の余り 例:x%3 |
++ | 1を加える 例:i++ |
-- | 1を引く 例:i-- |
const a = 100; let x1 = a * 3;%は余りを計算する演算子で、次の文でx2の値は1になります。
const b = 10; let x2 = b % 3;
+演算子は足し算をする以外に、特別な働きをします。文字列に対して+演算子を使うと、2つの文字列をつなげます。例えば、 "Sensory" + "Vision" の演算結果は、"SensoryVision"になります。processingでprintln("Value: " + x);と書くと、"Value: 数値"が、画面下部に表示されます。数値は変数xの値です。
コメント
プログラムに関する説明文をコメントと呼びます。コメントをプログラム内に書いておくと、どのような処理をさせているかが、すぐにわかるので、他の人のためにも自分のためにも便利です。コメントの書き方には次の2種類があります。- ・//の後ろ行末までがコメントとなる。
- ・/*と*/ではさんだ部分がコメントとなる。