本資料で扱う擬似言語では、配列の要素番号は 1から始まる ものとします(1番目の要素は data[1])。
これまで学んだ「変数・繰り返し・条件分岐・配列」を組み合わせると、実務で頻出する標準的な処理(アルゴリズム)を実現できます。
この資料では、最も基本的な以下の処理を取り上げます。
配列の中に「特定の値」が存在するかを確認する処理です。配列の要素を順に調べていき、条件に合う値が見つかれば終了します。これは「リニアサーチ(線形探索)」と呼ばれる基本的な検索方法です。
関数linear_searchは、要素数5の整数型配列の中に、指定した値(key)が含まれているかどうかを調べる。
○ 論理型: linear_search(整数型の配列: array, 整数型: key)
整数型: i
論理型: found ← false
for ( i を 1 から array の要素数 まで 1 ずつ増やす )
if ( array[i] が key と等しい )
found ← true
endif
endfor
return found
論理型: result ← linear_search({4, 7, 1, 5, 9}, 5)
この場合、5 は配列内に含まれるため、result には true
が返されます。
配列の中から「最も大きな値(最大値)」を見つける処理です。最初の要素を仮の最大値とし、それより大きい値が見つかれば更新していきます。
関数find_maxは、要素数5の配列から最大値を見つけて返す。
○ 整数型: find_max(整数型の配列: scores)
整数型: i, max ← scores[1]
for ( i を 2 から scores の要素数 まで 1 ずつ増やす )
if ( scores[i] が max より大きい )
max ← scores[i]
endif
endfor
return max
整数型: result ← find_max({20, 55, 18, 72, 39})
この場合、最大値は 72 のため、result には 72
が返されます。
最大値と同様に、配列の中から「最も小さな値(最小値)」を探す処理です。
関数find_minは、与えられた配列の中から最小値を探し、その値を返す。
○ 整数型: find_min(整数型の配列: values)
整数型: i, min ← values[1]
for ( i を 2 から values の要素数 まで 1 ずつ増やす )
if ( values[i] が min より小さい )
min ← values[i]
endif
endfor
return min
整数型: result ← find_min({12, 4, 9, 6, 15})
この場合、最小値は 4 のため、result には 4
が返されます。
次の関数を呼び出したとき、変数 result
に格納される値として正しいものを選びなさい。
○ 論理型: linear_search(整数型の配列: array, 整数型: key)
整数型: i
論理型: found ← false
for ( i を 1 から array の要素数 まで 1 ずつ増やす )
if ( array[i] が key と等しい )
found ← true
endif
endfor
return found
論理型: result
result ← linear_search({3, 6, 9, 12, 15}, 10)
次の関数を呼び出したとき、変数 result に格納される値として正しいものを選びなさい。
○ 整数型: find_max(整数型の配列: scores)
整数型: i, max ← scores[1]
for ( i を 2 から scores の要素数 まで 1 ずつ増やす )
if ( scores[i] が max より大きい )
max ← scores[i]
endif
endfor
return max
整数型: result
result ← find_max({18, 24, 21, 30, 27})
関数find_minは、与えられた配列の中から最小値を求めて返す。 空欄に入るものを選びなさい。
○ 整数型: find_min(整数型の配列: scores)
整数型の配列: data ← {8, 6, 5, 9, 7}
整数型: i, min ← __空欄a__
for ( i を 2 から data の要素数 まで 1 ずつ増やす )
if ( data[i] が min より小さい )
min ← data[i]
endif
endfor
return min
関数linear_searchは、配列aと値keyを受け取り、aの中にkeyが含まれるかどうかを判定する。見つかればtrue、見つからない場合はfalseを返す。 空欄に入るものを選びなさい。
○ 論理型: linear_search(整数型の配列: a, 整数型: key)
整数型: i
論理型: found ← false
for ( i を 1 から a の要素数 まで 1 ずつ増やす )
if ( a[i] が key と等しい )
__空欄b__
endif
endfor
return found
関数linear_searchidxは、配列aと値keyを受け取り、aの中の最初に見つかったkeyの位置の要素番号を返す。見つからない場合は-1を返す。 空欄に入るものを選びなさい。
○ 整数型: linear_searchidx(整数型の配列: a, 整数型: key)
整数型: i
for ( i を 1 から a の要素数 まで 1 ずつ増やす )
if ( a[i] が key と等しい )
__空欄b__
endif
endfor
return -1