この記事は応用情報技術者が監修しています。
- アルゴリズムが分からない人が最低限覚える必要があること
- アルゴリズムの基本
基本情報技術者試験の科目Bアルゴリズムが全く分からない人、初めて勉強する人、難しい、難しすぎると感じている人向けの記事になります。
最初に最低限これだけは覚える必要があるというものについて解説します。
まずは基礎を抑えましょう。
このページの内容を理解すれば、最低限の基礎は習得できるだろうという考えのもと、ページを作成しているので、是非最後まで学習してください。
アルゴリズムやプログラミングの基礎については、このサイトのC言語入門講座、Java入門講座でも学習できるので是非活用してください。(全部やれば基礎が理解できる内容で構成されています)
基本情報の科目Bを解くために最低限知らないといけない知識
まずはこの単語を覚えよう
これらが何を意味するのかを理解していないと科目Bは解くことができません。
1つ1つ解説していきます。
変数の使い方
整数型: x
整数型: y ← 1
文字列型: z
x ← y + 1
z ← “xの値は2”
xの値と、zの値をコンマ区切りで出力する
変数とは、文字(アルファベット等)で表されます。
今回はx、y、zが変数です。
変数を使いたい場合、最初に整数型、文字列型などと書く必要があります。
整数型と書くと、その変数には数字を入れることができます。
今回「y ← 1」と書いていますが、矢印(←)の左側に変数名、右側に値を書くことで、右側の値を左側の変数に格納することが出来ます。
つまり、最初yには1が入っていますが、他の変数には何も入っていません。
変数を使って計算することもでき、「x ← y + 1」と書くとxには2が格納されます。
文字列を””(ダブルクォーテーション)で囲むことで、zには「xの値は2」という文字列が格納されます。
if・else・elseif・endifの使い方
整数型: x
整数型: y ← 1
文字列型: z
x ← y + 1
z ← “xの値は2”
if(xの値が2なら)
zの値を出力する
endif
if(xの値が2なら)
zの値を出力する
elseif(xの値が1なら)
xの値を出力する
else
yの値を出力する
endif
ifは条件分岐を行う為に使います。
「もし、xの値が2なら、zの値を出力する」という意味になります。
elseifはさらに条件を追加したい場合に使います。
if(xの値が2なら)に合致しない場合、「もし、xの値が1なら、xの値を出力する」という意味になります。
elseはそれ以外ならという意味です。
xの値が2でも1でもないなら、yの値が出力されます。
for・endfor・while・endwhile・doの使い方
整数型: x ← 10
整数型:y ← 1
整数型: i
for(整数型iを1から整数型xの値まで1ずつ増やす)
y ← y + 1
endfor
yの値を表示する
forはループ処理を行う場合に使います。
「for(整数型iを1から整数型xの値まで1ずつ増やす)」とあるので、iの値は1、2、3、4、5、6、7、8、9、10と変化します。
「1、2、3、4、5、6、7、8、9、10」は10個です。
つまり10回ループが行われれます。
yは以下のようになります。
1回目:yの値は2(2 ← 1 + 1)
2回目:yの値は3(3 ← 2 + 1)
3回目:yの値は4(4 ← 3 + 1)
4回目:yの値は5(5 ← 4 + 1)
5回目:yの値は6(6 ← 5 + 1)
6回目:yの値は7(7 ← 6 + 1)
7回目:yの値は8(8 ← 7 + 1)
8回目:yの値は9(9 ← 8 + 1)
9回目:yの値は10(10 ← 9 + 1)
10回目:yの値は11(11 ← 10 + 1)
「yの値を表示する」で11が出力されます。
整数型: x ← 10
整数型:y ← 1
while(yが10未満なら)
y ← y + 1
endwhile
yの値を表示する
whileもループ処理を行い場合に使います。
「while(yが10未満なら)」とあるので、yが10未満の場合にしかループ処理が行われません。
つまり、yが最初から11なら1度もループ処理は行われません。
整数型: x ← 10
整数型:y ← 11
do
y ← y + 1
while(yが10未満なら)
yの値を表示する
doもループ処理を行う場合に使います。
whileとの違いは、必ず1度は処理(y ← y + 1)を行うという点です。
必ず1度は処理を行ってから条件の判定「while(yが10未満なら)」を行う為、今回yは最初11ですが、処理(y ← y + 1)が行われ、yは10未満ではないためループが終了します。
関数の使い方
関数plusNumは整数型の変数を引数にとり、引数に2を足して、その値を返す関数である。
今回引数で2を受け取る。
○整数型:plusNum(整数型: num)
整数型: x ← 2
整数型:result
result ← num + x
return result
関数とはプログラムの塊のことです。
「○整数型:plusNum(整数型: num)」以下のプログラムが「plusNum」という関数名で表わされています。
引数とは、「○整数型:plusNum(整数型: num)」の「(整数型: num)」のことです。
引数とは外部から何らかの値を渡されて、関数内で使用することができる変数のことです。
「result ← num + x」として引数のnumにxを足して、resultに格納しています。
returnの後ろに変数名を書くと引数を渡してきた外部に変数の値を返すことができます。
今回はresultの値を外部に返しています。
配列の使い方
配列の要素番号は1から始まる。
整数型の配列: x ← {}
整数型の配列: y ← {2, 4, 5, 6}
xの末尾にy[1]の値を追加する
xの末尾にy[4]の値を追加する
xの値をコンマ区切りで出力する
xの要素数を出力する
変数には1つの値しか格納できないのに対し、配列は複数の値を格納することができます。
「整数型の配列: y ← {2, 4, 5, 6}」とすることで、最初から配列に値を格納することができます。
「 {2, 4, 5, 6}」はyの要素と言います。
これらの要素には要素番号が先頭の要素から割り当てられます。
2の要素番号は1
4の要素番号は2
5の要素番号は3
6の要素番号は4
プログラムの中で、特定の要素を指定したい場合、y[1]、y[2]のように書きます。
y[1]は2を表します。
y[2]は3を表します。
「xの末尾にy[1]の値を追加する」とあるので、配列xの末尾に2追加されます。
「xの末尾にy[4]の値を追加する」とあるので、配列xの末尾に6追加されます。
配列xには2つの要素が追加されたので、「xの要素数を出力する」と2が出力されます。
基本情報の科目Bを解くために必要な最低限の記号
これまでの内容で最低限の基礎は習得できているはずです。
次は基本情報の科目Bを解くために必要な記号について解説します。
まずはこの記号を覚えよう
これらの記号(一部単語)は基本的に条件式で使われます。
一気に覚えてしまいましょう。
//はプログラム内でコメントを意味します。
以下の説明で使います。
整数型: x ← 2
整数型:y ← 3
if(x = 2) //もしxが2なら
if(x ≠2) //もしxが2ではないなら
if(x <2) //もしxが2より小さいなら
if(x ≦2) //もしxが2以下なら
if(x >2) //もしxが2より大きいなら
if(x ≧2) //もしxが2以上なら
if(x = 2 and y = 3) //もしxが2かつyが3なら(2つの条件に合致した場合)
if(x = 2 or y = 3) //もしxが2またはyが3なら(どちらかの条件に合致した場合)
y mod xの値を出力 //1が出力される。modは剰余算を表し、割った余りを求める。
これらが記号の意味になります。
これは最低限覚えるようにしてください。
さいごに
いかがでしたか?
最後までお読みいただけたでしょうか。
このページの内容が理解できれば、基礎については問題ないと思います。
この後は、問題文を読んでみるなどして、問題に慣れていきましょう。


