Javascript基礎

コードの実行にはpaiza.ioというサービス使用します。

このpaiza.ioはブラウザ上でソースコードを実行することができるサービスです。(環境構築が不要になります)

目次

Javascript基本文法 – チートシート

このチートシートは基本情報Ⅰのアルゴリズム問題で使用するもののみ掲載しています。

基本文法

// 変数宣言
let x = 10; // 変数(再代入可能)
const y = 20; // 定数(再代入不可)
// データ型
let str = "Hello"; // 文字列
let str = 'hello'; // '(シングルクオート)でも文字列として認識する
let num = 123; // 整数
let bool = true; // 真偽値
let array = [1, 2, 3]; // 配列(リスト)

制御構文

// 条件分岐
if (x > 10) {
  console.log("多い");
} else if (x == 10) {
  console.log("同じ");
} else {
  console.log("小さい")
}

// 繰り返し
for (let i = 0; i < 5; i++) {
  console.log(i);
}

配列の操作

let fruits = ["apple", "banana", "orange"];

// インデックスを指定して値を取得
console.log(fruits[0]); // 配列の0番目(先頭)の値を取得

// インデックスを指定して値を追加/更新
fruits[3] = "melon"; // 配列の3番目(末尾)に"melon"を追加する
fruits[0] = "grape"; // 配列の0番目(先頭)の値を"grape"で上書きする

// 繰り返しを使用し配列値を取得(標準出力させる)
// 配列の長さ(配列の要素数)は「配列変数.length」で取得可能
for (let i = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
}

演算子

算術演算子

演算子概要
+加算1 + 1; → 2
減算2 – 1; → 1
*乗算2 * 2; → 4
/除算4 / 2; → 2
%剰余5 % 3; → 2
++前置加算(代入前に加算)let i = 3; let j = ++i; → iは4・jは4 ※1
++後置加算(代入後に加算)let i = 3; let j = i++; → iは4・jは3 ※2
前置減算(代入前に減算)let i = 3; let j = –i; → iは2・jは2 ※3
後置減算(代入後に減算)let i = 3; let j = i–; → iは2・jは3 ※4

※1 let j = ++i;は前置加算(インクリメント)なので変数iの値に+1し、その後変数jに値を初期化(代入)している

※2 let j = i++;は後置加算(インクリメント)なので変数jに変数iの値を初期化(代入)し、その後変数iの値を+1している

※3 let j = --iは前置減算(デクリメント)なので変数iの値を-1し、その後変数jに値を初期化(代入)している

※4 let j = i--は後置減算(デクリメント)なので変数jに変数iの値を初期化(代入)し、その後変数iの値を-1している

比較演算子

演算子概要
==左辺と右辺の値が等しい場合はtrue7 == 7 → true
!=左辺と右辺の値が等しくない場合にtrue7 != 7 → false
<左辺が右辺より小さい場合にtrue7 < 10 → true
>左辺が右辺より大きい場合にtrue7 > 10 → false
<=左辺が右辺以下の場合にtrue7 <= 10 → true / 10 <= 10 → true
>=左辺が右辺以上の場合にtrue7 >= 10 → false / 10 >= 10 → true

論理演算子

※例のxtrueyfalseを表す

演算子概要
&&論理積。左辺、右辺ともにtrueの場合にtruex && y → false
||論理和。左辺、右辺のいずれかがtrueの場合にtruex || y → true
!否定。式がtrueの場合はfalse、falseの場合はtrue!x → false

関数

// greetは関数名
function greet(name) {
  // 複数の値を出力させたい場合は,で区切る
  console.log("Hello, ", name);

 // 文字列は+を使用することで連結させることができる
  // console.log("Hello, " + name);
}

greet("taro"); // 関数呼び出しは関数名(引数) → 出力は「Hello, taro」

// 戻り地がある関数
// 関数の戻り地はreturnで指定する
function calc(num1, num2) {
  return num1 + num2;
}

let result = calc(1, 2);
console.log(result); // 出力は「3」

確認テスト

問題1

整数が格納された配列numbersから、最大値を求めて出力するプログラムを作成してください。

let numbers = [12, 5, 8, 20, 3];

期待される出力

20

解答例

let numbers = [12, 5, 8, 20, 3]
let max = numbers[0]; // 初期値は先頭の要素

for (let i = 1; i < numbers.length; i++) {
  if (numbers[i] > max) {
    max = numbers[i]; // 配列の要素の値がmaxより大きければmaxを更新
  }
}

console.log(max);

問題2

整数が格納された配列numbersから偶数だけを順に出力するプログラムを作成してください。

let numbers = [4, 7, 10, 3, 8];

期待される出力

4
10
8

解答例

let numbers = [4, 7, 10, 3, 8];

for (let i = 0; i < numbers.length; i++) {
  if (numbers[i] % 2 == 0) {
    // 配列の要素を2剰余で計算し0の場合は偶数とみなすことができる
    console.log(numbers[i]);
  }
}

問題3

整数が格納された配列scoresの合計数と平均数を求めるプログラムを作成してください。

let scores = [70, 85, 90, 60, 75];

期待される出力

合計:300
平均:76

解答例

let scores = [70, 85, 90, 60, 75];
let sum = 0;

for (let i = 0; i < scores.length; i++) {
  sum = sum + scores[i];
}

let average = sum / scores.length;

console.log("合計:", sum);
console.log("平均:", average);

情報Ⅰ共通テスト2025の問題をJavascriptで実行する

コーディング例

// 共通テストの配列のインデックスは1始まりだがプログラミング言語の都合上0から始める
let akibi = [5, 3, 4]; // [5, 6, 4, 4, 4]にして実行もしてみよう
buinnsu = 3;
tantou = 0; // 問題だと1からだがインデックスを表現するため0にしている

for (let buin = 1; buin < buinnsu; buin++) {
  if (akibi[buin] < akibi[tantou]) {
    tantou = buin;
  }
}

console.log("次の工芸品の担当は部員", tantou + 1, "です。"); // tantouが0始まりなので表示する際は+1する

コーディング例

// 共通テストの配列のインデックスは1始まりだがプログラミング言語の都合上0から始める
let nissu = [4, 1, 3, 1, 3, 4, 2, 4, 3];
let kougeihinsu = 9;
let akibi = [1, 1, 1];
let buinsu = 3;

for (let kougeihin = 0; kougeihin < kougeihinsu; kougeihin++) {
  let tantou = 0; // 問題だと1からだがインデックスを表現するため0にしている
  for (let buin = 1; buin < buinsu; buin++) {
    if (akibi[buin] < akibi[tantou]) {
      tantou = buin;
    }
  }
  // kougeihin・tantouが0始まりなので表示する際は+1する
  console.log("工芸品", kougeihin + 1, "・・・", "部員", tantou + 1, ":", akibi[tantou], "日目〜", akibi[tantou] + nissu[kougeihin] - 1, "日目");
  akibi[tantou] = akibi[tantou] + nissu[kougeihin];
}