見出し画像

疑似言語について解説します!


そもそも疑似言語とは?

疑似言語とはIPAのITパスポートや基本情報技術者試験などでつかわれる独自の言語でプログラミングについての基本的な考え方などをこの疑似言語を通して学ぶことができます!

お詫び

今回の記事では長くなりすぎるのでオブジェクト指向の部分は省かせてください!次の記事でオブジェクト指向プログラミングには触れようと思うので
是非,次の更新をお楽しみにしてください!

今回の記事で得られる事

  • 例題を通した問題を解く能力

  •  疑似言語の基本的な構文についての知識

  • pythonを用いた疑似言語のさらなる理解

疑似言語の基本構文について

演算子や論理式について

演算子とは簡単いうと+ - / * の四則演算を行うための符号の事でプログラミングをする上で必須です!!論理式とはand or notなどの事で数学の集合をイメージしてもらうとわかりやすいのですがandは下の図の真ん中の部分で
例としてはAしていてBもする人みたいな感じのイメージです!


and

orに関しても下の図を参考にするとわかりやすいです。
この図は先ほどと違い二つ円すべてが黒く塗られています!
orは日本語で示すと,AまたはBの人ということを意味します。
なので二つの円すべてがぬられているんです!!!


or

notは反転するというイメージで使ってもいいかもしれません。
具体例としてはAという集合をnot A にすると下の図ように回りがすべて黒くなります!!!


not

下の図に演算子の優先順位と種類がまとまった公式の図を表示させて
おきます!!!!


変数

変数名 ← 式 で変数に式を代入する事ができます。

多分,この文をよんで変数って何? 代入って中学数学で何となく聞いた事あるなぁ~などと思った人がほとんどだと思うのでまず変数について説明していきます。その説明の中でさらっと代入についても説明していきます。

変数とは下の画像の通り,数字,文字,式などを一時的に入れておくことができる箱のような物です。この箱のなかに数字,文字,式などを格納する事を代入といいます!

変数のイメージ

実際に下の例を持ちいて変数についての理解を深めましょう!

x ← 12

x ← 100

xを出力する

この実行文を実行すると xの値が表示されるのですが12か100どっちが表示されますか?

すこし考えて見てください。

答えは 100 です!

理由としては変数は後から値が代入されると上書き保存されるからです!!!!

配列について

配列とは下のコード例のような一つの変数に複数のデータを収納できる
データ型の事です!!!!!

変数名 ← { 1,2,3,4,5,6,7,8,9}

上の例のような配列を1次元配列といいます
察しの良い方は気づいたかもしれませんが1次元配列なので2次元配列も存在します!普通のプログラミングを行うだけなら3次元以上の配列を操作するという機会はほとんどないのでご安心ください!下に2次元配列のコード例を示します。

変数名 ← { {1,2,3},{4,5,6} }

このように{}の中にさらに{}を持ちいることで二次元配列を作成する事ができます! 

配列へのアクセス方法について

配列の各要素にアクセスする方法については
変数名[アクセスしたい値の要素数]でアクセスすることができます!
2次元配列では
変数名[アクセスしたい値の要素数][アクセスしたい値の要素数]で
アクセスすることができます!
配列の一番初めの要素を0として下にコード例を示します

//一次元配列の例
x  ← {1,2,3,4,5}

x[0]を出力
// 一番初めの要素である1が出力される!

//2次元配列の例
y ← {{1,2,3}, {4,5,6}}

y[0][0]を出力
//1が出力される

y[1][2]を出力 
//6が出力される!
//{4,5,6}が[1]で選択され[2]で{4,5,6}の中の3つ目ある6が選択される(oスタートな事に注意)

条件分岐

if (条件式1)

  処理1

elseif (条件式2)

  処理2

・ 
・ 
・

elseif (条件式n)

  処理n

else

  処理n + 1

endif


処理は条件式を満たす場合に行われます。条件式を満たした瞬間にこの文の役割は終了しもし下の条件式を満たしたとしても下の文の処理は行われません。

繰り返し処理について

繰り返し処理は大きく分けてfor文とwhile文の2つの書き方が疑似言語内には存在しています! 

for (制御記述)

処理

endfor

for文は上のように基本的には書きます。制御記述ではfor文中にある処理を何回行うのかを記述します!!!end forはお決まりの文章でfor文の終了を
しめします。

while (条件式)

処理

endwhile

while文ではfor文とちがい処理を行う回数を指定するのではなく,条件式の条件を満たす間,while文内の処理を実行しづづけるものです!
文章だけだとわかりにくいと思うので使用例を見てましょう!

a ← 0 (aに0を代入)
while  a < 10
    aの値を出力
    a ← a + 1

上のコードを実行すると下のような出力になります!

0
1
2
3
4
5
6
7
8
9

なぜこのような出力になるかというとwhileの中の文が一回実行されるたびに
まずaの値が出力されaの値が+1されて更新されます。なので一回目の実行では一行目でaに0が代入されているため0が出力され4行目のコードでaの値が+1されるので最終的に一回目の実行後の状態は下の図のようになります。

一回目終了後トレース図

同じように2回目以降の実行のaの状態と出力される数字についてみていくと下の図のようになります!!!!!!!!


上の図の10回目の実行後,変数aの値が10となるので11回目の実行は行われずにwhile文は終了するため9まで出力されてこのプログラムは終了します!

関数について

関数とはめためた簡単にいうと値をわたすと特定の処理をして値を返してくれる物のことです。(多分,めちゃくちゃおこられる書き方ですが……..)
下の図の例を見てみてください!!


イメージとしては画像の通りコインが引数で関数が自販機で返り値がジュース(購入することで出てくる)のイメージです!
それではイメージを掴めた所で実際の疑似言語の例をみてみましょう!

○整数型の配列: makeNewArray(整数型の配列: in)   
整数型の配列: out ← {}  // 要素数0の配列  
 整数型: i, tail   
outの末尾 に in[1]の値 を追加する   f
or (i を 2 から inの要素数 まで 1 ずつ増やす)    
 tail ← out[outの要素数]     o
utの末尾 に (tail + in[i]) の結果を追加する   
endfor   
return out 

今回は例が思いつかなったので基本情報のサンプル問題Bからもってきました!内部の処理は無視してもらってmakeNewArrayという関数が宣言されていて()の中にデータ型とinという引数で値を受け取ることが記載されています!(基本問題文にもかいてあります)
return outでoutの値を出力しています!

補足(Pythonで疑似言語の文と同じ動作を実装してみる)

この補足ではPythonを使ったことがあって,疑似言語は初めて触るというニッチな人向けにPythonに疑似言語を翻訳してコードの解説をしたに書いていこうとおもいます!

実行環境について

上のリンクのGoogle Colaboratoryから簡単にPythonの実行環境を構築する事ができるので上のリンクから是非つかってみてください!
下にあるコードを写経してみると意外と身になるのでおすすめです!
さらに機械学習やグラフの作成,データ分析などのアカデミックな用途でも
使える初心者から上級者まで網羅した便利ツールです!!!

変数

Pythonでは疑似言語と同じで”変数名” = “代入したい値”で変数を作成することができます。

a = 1

b = 2

配列

配列の宣言について

Pythonでは配列の事をリストといいます!
“変数名” = [入れたいデータ]で配列を作成することができます。
さらに“変数名” = [[データ] ,[データ]]とすることで2次元配列を作成することができます。

配列の操作について

変数名.append(データ)で配列の最後尾にデータを追加することができます。

list_1 = [1,2,3]

list_1.append(4)

print(list_1)
#出力
#[1,2,3,4] このように4が追加される

変数名.pop(0)で配列の先頭の要素をとりだす事ができます。

list_1 = [1,2,3,4,5]

list_1.pop(0)

print(list_1)
#出力
#[2,3,4,5]

繰り返し処理

for文

for i in range(3):
   print(i)
#出力
#0
#1
#2

while文

a = 0

while a < 5:

  print(a)

  a+=1 #aをインクルメント
#出力
0
1
2
3
4

条件分岐

if a == 1: 

   print("aは一です")

elif a == "Hello":

   print("aはHelloです")

else:
   print("aは一以外です")

aの値が奇数か偶数か判定するプログラム

if  a%2 == 0:
   print("aは偶数です")
elif a % 2 == 1:
   print("aは奇数です")

関数

def 関数名(引数)で関数を作成する事ができます!
先ほどのコードを使って奇数,偶数判定をする関数を作成してみましょう!

def check_odds(a):
    if  a%2 == 0:
       print("aは偶数です")
   elif a % 2 == 1:
       print("aは奇数です")

最後に

pythonの基本文法についてはかなりざっくりとした内容させていただきました。他の記事でもう少し詳細に書いておりますので是非ご覧になってください!

この記事が気に入ったらサポートをしてみませんか?