擬似言語の算術演算子と優先順位|かっこと mod の読み方【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠擬似言語の記述形式は2022年から変更なし最終更新 2026-08-18

式は左から順に計算されるとは限りません。どれを先に計算するかは演算子ごとに決まっていて、その順番は記述形式に表で示されています。表を丸暗記する必要はありません。この回では算術の段── かっこ・mod・単項の + - ── を扱います。表の下のほうにある and / or / not は、G8-2 で扱います。

演算子の一覧 ── IPAが決めている優先順位

出典:IPA「擬似言語の記述形式」

〔演算子と優先順位〕

演算子の種類 演算子 優先度
式 () . 高
単項演算子 not + - ↑
二項演算子(乗除) mod × ÷ ↑
二項演算子(加減) + - ↑
二項演算子(関係) ≠ ≦ ≧ < = > ↑
二項演算子(論理積) and ↑
二項演算子(論理和) or 低

注記 演算子 . は,メンバ変数又はメソッドのアクセスを表す。
   演算子 mod は,剰余算を表す。

※ 原典では優先度の欄が上下1本の矢印で示されています。ここでは行ごとに ↑ で置き換えています。

上にあるものほど先に計算されます。7段ありますが、出題を読むときに実際に効いてくるのは次の3つです。

この表から持ち帰る3つ

① かっこの中がいちばん先。② mod は × ÷ と同じ段=+ - より先。③ 比べるのは、計算したあと。

残りは、算数と同じ「掛け算・割り算が先、足し算・引き算があと」という常識どおりです。③の= や > といった比べる演算子が + - より下にあるのは、a + 1 > b が (a + 1) > b という意味になるということです。

表のいちばん下にある and と or、単項の not は真偽を組み立てる演算子で、G8-2 でまとめて扱います。この3つがどれよりも下にあることだけ、ここで見ておいてください。

かっこ ── 最優先。書いた人が順番を指定した場所

実際の出題から1行だけ引きます。mod を使って、配列の置き場所を計算する関数です。

出典:令和5年度 基本情報技術者試験 科目B 公開問題 問4(プログラムの一部)

○整数型: calcHash2(整数型: value)
  return ((value + 3) mod hashArrayの要素数) + 1

この hashArray は、同じプログラムの別の場所で次のように用意されています。

  hashArray ← {5個の -1}

要素数は 5 です。つまり hashArrayの要素数 のところは 5 と読み替えられます。

かっこが二重になっています。内側の (value + 3) を外すと、返る数が変わります。value を 18 として並べてみます。

かっこ1つで、答えがここまで変わる(value = 18)

出題どおり ((value + 3) mod 5) + 1

先に 18 + 3 = 21→ 21 mod 5 = 1→ +1 して 2

内側のかっこを外すと (value + 3 mod 5) + 1

先に 3 mod 5 = 3→ 18 + 3 = 21→ +1 して 22

mod は + より上の段にあります。かっこが無ければ mod のほうが先なので、value + 3 mod 5 は value + (3 mod 5) という意味になります。

この関数が返すのは要素番号です。2 は使える番号、22番目の要素はありません。それでも書き方としては正しいままなので、どこも間違いを教えてくれません。

かっこが書いてあるところは、書いた人が順番を気にした場所です。読むときの目印になります。

かっこを1つ外すだけで、答えが変わる

この関数が返すのは要素番号。2 は使える番号だが、22番目の要素は無い

かっこがあるとき ((18 + 3) mod 5) + 1

順 計算するところ 結果
① 18 + 3 21
② 21 mod 5 1
③ 1 + 1 2

内側のかっこから手を付ける。答えは 2

内側のかっこを外すと (18 + 3 mod 5) + 1

順 計算するところ 結果
① 3 mod 5 3
② 18 + 3 21
③ 21 + 1 22

mod が + より先に計算される。答えは 22

かっこが書いてあるところは、書いた人が順番を気にした場所

同じことを、1行ずつ動かして確かめます。「いま計算していること」の欄に、式のどこから手を付けているかが出ます。

式はどう計算されるか ── かっこと mod

当サイトオリジナル


ループ開始前

いま計算していること

まだ計算していません

変数の状態

トレース表(進めると1行ずつ積み上がります)

練習

擬似言語の〔演算子と優先順位〕では、段がこう決まっています。

優先順位(上の段が先)

式( ) .

乗除mod × ÷

加減+ -

同じ段のもの同士は左からです。

かっこを付けずに n × 2 + 1 mod 3 と書いた場合、どう計算されますか。

mod ── 割った余り

記述形式の注記に一行だけ書かれています ── 「演算子 mod は,剰余算を表す」。a mod b は a を b で割ったときの余りです。

式 何回割れて、いくつ残るか
7 mod 3 7 ÷ 3 = 2 余り 1 3 が 2回取れて、1 残る
18 mod 5 18 ÷ 5 = 3 余り 3 5 が 3回取れて、3 残る
3 mod 5 3 ÷ 5 = 0 余り 3 5 は 1回も取れず、3 がそのまま残る
10 mod 5 10 ÷ 5 = 2 余り 0 5 が 2回取れて、0(割り切れる)
割られる数のほうが小さいときに手が止まる

3 mod 5 のように割られる数のほうが小さいと、とっさに答えが出にくくなります。1回も割れないので、そのまま全部が余りです。割り算の形に直すと 3 ÷ 5 = 0 余り 3 ── 商が 0 で、余りが 3。だから 3 mod 5 は 3 です。

割る数のほうを答えてしまう間違いが、いちばん多いところです。3 mod 5 の答えは 5 に関係する数ではなく、3 そのもの。0 mod 5 なら 0 ÷ 5 = 0 余り 0 で 0 です。

ここは実際の出題で計算させられる場所です。a mod b の答えは必ず 0 以上 b 未満(b が正のとき)と覚えておくと、答えが範囲から外れたときに気づけます。

mod がプログラムに出てきたら、たいてい次のどちらかの意図です。

書かれ方 意味していること
(x mod 2)が0と等しい x は偶数
(x mod n)が0と等しい x は n の倍数(n で割り切れる)
(x mod n) + 1 どんな x でも 1 〜 n の範囲に収める(要素番号を作るときの定番)

実際の出題では、条件が日本語で書かれることもあります。次の1行がそれです。

出典:令和7年度 基本情報技術者試験 科目B 公開問題 問1(プログラムの一部)

    if ((i mod 4)が0と等しい)

練習

実際の出題にある if ((i mod 4)が0と等しい) の行です。この if が真になるのは、i がどんなときですか。

3 mod 7 の答えはいくつですか。

(x mod 3)が1と等しい という条件が真になるのは、x がどんなときですか。

単項の + - と、演算子 .

表の2段目にある単項演算子は、後ろの1つだけに効く演算子です。-1 の - がこれで、「1 から引く」ではなく「マイナスの 1」という符号です。not も、後ろの1つの真偽をひっくり返すので単項です(G8-2)。

3 - 1 の -(引き算)と -1 の -(符号)は同じ記号で別の演算子で、表でも別の段にいます。前に数があれば引き算、無ければ符号と読み分けます。

出典:令和5年度 基本情報技術者試験 科目B 公開問題 問4(プログラムの一部)

  hashArray ← {5個の -1}

かっこの節で、要素数を確かめるために引いた行です。-1 の - が単項演算子にあたります。

練習

実際の出題に、次の1行があります。この代入で hashArray はどうなりますか。

hashArray ← {5個の -1}
演算子 . は、いま覚えなくてよい

表のいちばん上にある . は、注記のとおり「メンバ変数又はメソッドのアクセスを表す」=オブジェクト指向の記法で使うものです。x.length のように書きます。G12でまとめて扱います(準備中)。ここでは「表の最上段に () と並んでいる」ことだけ見ておけば十分です。

この文法が実際に出た問題

ここまでの内容がそのまま得点になる出題があります。プログラムの中身は難しくなく、mod を5回、正確に計算できるかで答えが決まります。上で断片を引いた calcHash2 と {5個の -1} は、この問題のものです。

出典:令和5年度 基本情報技術者試験 科目B 公開問題 問4(独立行政法人情報処理推進機構)

つまずきポイントまとめ

まちがえ方 正しい理解
式を左から順に計算する 優先度の高い段から。value + 3 mod 5 は value + (3 mod 5)
mod を足し算・引き算と同じ扱いにする × ÷ と同じ段。+ - より先に計算される
3 mod 5 が分からず手が止まる 1回も割れないのでそのまま 3。答えは必ず 0 以上 5 未満
(x mod n) + 1 の + 1 を忘れる 余りは 0〜n-1、要素番号は 1〜n。そのずれを埋める + 1
or を「どちらか片方だけ」と読む 少なくともどちらか一方。両方真でも真
and の繰返しを抜ける条件を「両方偽」と思う 片方が偽になった瞬間に全体が偽になって抜ける
> の否定を < だと思う > の否定は ≦。境界の値がどちらに入るかを必ず確かめる
-1 の - を引き算だと思う 前に数が無ければ符号(単項演算子)

次に読む

この記事で引用した資料

いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

シミュレータと練習問題は当サイトのオリジナルです。

Copied title and URL