式は左から順に計算されるとは限りません。どれを先に計算するかは演算子ごとに決まっていて、その順番は記述形式に表で示されています。表を丸暗記する必要はありません。この回では算術演算子の優先順位── かっこ・mod・単項の + - ── を扱います。表にある and / or / not は、G8-2 で扱います。
期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円この回の内容を動画で見る
次のページで講義の目次と無料の講義を見られます。受講ボタンとクーポンコードもそこにあります。
この回の内容を動画で見る
解くための再現性が身につく講義29本小テスト86問模試3回分IT資格の森で見る
講義「演算子(算術・論理・ビット)」(全7分19秒)は、IT資格の森(月額1,280円)の会員向けです。科目Bは、1行ずつ値を追うアニメの講義と、講義ごとの小テスト、本番と同じ形の模擬試験がそろっています。
演算子の一覧 ── IPAが決めている優先順位
出典:IPA「擬似言語の記述形式」
〔演算子と優先順位〕
| 演算子の種類 | 演算子 | 優先度 |
|---|---|---|
| 式 | () . |
高 |
| 単項演算子 | not + - |
↑ |
| 二項演算子(乗除) | mod × ÷ |
↑ |
| 二項演算子(加減) | + - |
↑ |
| 二項演算子(関係) | ≠ ≦ ≧ < = > |
↑ |
| 二項演算子(論理積) | and |
↑ |
| 二項演算子(論理和) | or |
低 |
注記 演算子 . は,メンバ変数又はメソッドのアクセスを表す。
演算子 mod は,剰余算を表す。
※ 原典では優先度の欄が上下1本の矢印で示されています。ここでは行ごとに ↑ で置き換えています。
上にあるものほど先に計算されます。表は7行ありますが、出題を読むときに実際に効いてくるのは次の3つです。
この表から持ち帰る3つ
① かっこの中がいちばん先。② mod は × ÷ と優先順位が同じ=+ - より先。③ 関係演算子は、計算したあと。
残りは、算数と同じ「掛け算・割り算が先、足し算・引き算があと」という常識どおりです。③で= や > といった関係演算子の優先順位が + - より低いのは、a + 1 > b が (a + 1) > b という意味になるということです。
表のいちばん下にある and と or、2行目にある単項の not は論理演算子で、G8-2 でまとめて扱います。and と or の優先順位がいちばん低いことだけ、ここで見ておいてください。
かっこ ── 最優先。書いた人が順番を指定した場所
実際の出題から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行ずつ動かして確かめます。「いま計算していること」の欄に、式のどこから手を付けているかが出ます。
式はどう計算されるか ── かっこと 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 未満(a・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と等しい)
i を 1 から 10 まで 1 ずつ増やす繰返しの中に、if ((i mod 4)が0と等しい) の行があるとします。この if が真になるのは、i がいくつのときですか。
要素数が 7 の配列があります(配列の要素番号は 1 から始まる)。整数 k から、(k mod 7) + 1 を計算して要素番号にします。k が 3 のとき、何番目の要素になりますか。
x を 1 から 10 まで変えたとき、(x mod 3)が1と等しい が真になる x をすべて挙げたものはどれですか。
単項の + - と、演算子 .
表の2行目にある単項演算子は、後ろの1つだけに効く演算子です。-1 の - がこれで、「1 から引く」ではなく「マイナスの 1」という符号です。not も、後ろの1つの真偽を否定するので単項です(G8-2)。
3 - 1 の -(引き算)と -1 の -(符号)は同じ記号で別の演算子で、表でも優先順位が違います。前に値(数・変数・閉じかっこ)があれば引き算、無ければ符号と読み分けます。
出典:令和5年度 基本情報技術者試験 科目B 公開問題 問4(プログラムの一部)
hashArray ← {5個の -1}
かっこの節で、要素数を確かめるために引いた行です。-1 の - が単項演算子にあたります。要素数 5 で、すべての要素が マイナス1 の配列ができます。
次の2行を実行すると、y の値はいくつになりますか。
整数型: x ← 5 整数型: y ← -x + 3
. は、いま覚えなくてよい
表のいちばん上にある . は、注記のとおり「メンバ変数又はメソッドのアクセスを表す」=オブジェクト指向の記法で使うものです。listHead.next のように書きます。G12-1 で扱います。ここでは「表のいちばん上の行に () と並んでいる」ことだけ見ておけば十分です。
この文法が実際に出た問題
ここまでの内容がそのまま得点になる出題があります。プログラムの中身は難しくなく、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 |
-1 の - を引き算だと思う |
前に値(数・変数・閉じかっこ)が無ければ符号(単項演算子) |
次に読む
この記事で引用した資料
- 擬似言語の記述形式 IPAが公開している科目Bの公開問題・サンプル問題(PDF)の冒頭に掲載。名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 令和5年度 基本情報技術者試験 科目B 公開問題(2023年7月6日公開)
- 令和7年度 基本情報技術者試験 科目B 公開問題(2025年7月4日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。
シミュレータと練習問題は当サイトのオリジナルです。


