ITパスポートの擬似言語をPythonで表現してみた【初心者にオススメ】

ITパスポートの擬似言語をマスターすれば、ITパスポートで確実に点が取れるようになります。

さらに、擬似言語ができれば、実際のプログラミングもできるようになります。

「やったー、ITパスポートの擬似言語を頑張って勉強しよう」と思われましたよね?

ただ残念ながら、擬似言語と実際のプログラミングには、明確な差があることも事実です。

一つ目の理由は、擬似言語にルールがあるように、実際のプログラミングにもルールがあるからです。

例えば、ITパスポートの擬似言語は、プログラミング初心者でも理解しやすいように、日本語で処理が書かれています。

ですが、実際のプログラミングでは、日本語で処理を記載することはほとんどありません。

二つ目の理由は、プログラムを動かすための環境を用意する必要があります。

初心者にとって、環境を準備するのは一苦労です。

そのため、擬似言語と実際のプログラミングの差を埋めるのは、初心者の方が一人でやるのは、結構大変なのです。

そこで、擬似言語を理解したあなたが、実際のプログラミングを最短ルートで学習できるよう、ITパスポートの擬似言語で書かれたプログラムを、Pythonというプログラム言語で表現してみました。

また、たった1分でプログラムを実行できる環境もご紹介します。

あなたは、この記事を読むだけで、お金をかけずに一瞬でプログラムを動かせます。

Python(パイソン)とは、AIやアプリ開発など、さまざまな開発に対応できる汎用プログラミング言語です。私はディープラーニングの勉強や、Webサイトをスクレイピングする際に利用したことがあります。


擬似言語の問題が苦手な人は、こちらの記事もおすすめです。

目次

プログラミングを実行する環境【準備不要、無料】

プログラミングを仕事や趣味で行っている人は、PC上にPythonを実行できる環境を用意することが多いです。

ただ、初心者の方は、その環境を準備しようとすると、うまくいかなかったり、時間がかかったりして、途中で挫折してしまうことが多いと思います。

そこで、初心者の方でも、準備不要、無料で使えるpaiza.ioというサイトをご紹介したいと思います。

Pythonが無料で実行できるサイト(paiza.io)

上記のサイトにアクセスした後に、画面の左上にある緑色の部分から「Python3」を選択することで、Pythonが実行できるようになります。

このあと紹介するプログラムを黒い部分にコピー&ペーストしたのち、「実行(Ctrl-Enter)」を実行すると、実行結果がかえってきます。

プログラム

IT パスポート試験 擬似言語のサンプル問題 問1

関数calcMeanは、要素数が1以上の配列dataArrayを引数として受け取り、要素の値の平均を戻り値として返す。プログラム中のa,bに入れる字句の適切な組み合わせはどれか。ここで、配列の要素番号は1から始まる。

[プログラム]
○実数型: calcMean(実数型の配列: dataArray) /* 関数の宣言 */
 実数型: sum, mean
 整数型: i
 sum ← 0

 for (i を 1 から dataArray の要素数 まで 1ずつ増やす)
   sum ← sum + dataArray[i]       /* 下線がa */
 endfor

 mean ← sum ÷ (dataArray の要素数) /* 実数として計算する */ /* 下線がb */

 return mean

引用元:https://www.ipa.go.jp/shiken/syllabus/ps6vr7000000i9in-att/ip_programming_sample.pdf

Pythonで表現してみた

# プログラム
def calcMean(dataArray):  # 関数の宣言
    # 実数型: sum, mean
    # 整数型: i
    sum = 0

    for i in range(len(dataArray)):
      sum = sum + dataArray[i]

    mean = sum / len(dataArray)  # 実数として計算する

    return mean

# 呼び出し
data_Array = [1,10,100,1000]  # 要素数が1以上の配列
mean_data_Array = calcMean(data_Array)

print(mean_data_Array)

出力結果は、277.75 です。

ITパスポート試験の合否には全く関係ありませんが、初心者を卒業したらプログラムをエレガントに書く方法も覚えてみるとよいかもしれません。例えば、上記のPythonのfor文はもっとエレガントに書けます。
参考:https://qiita.com/motoki1990/items/d06fc7559546a8471392

IT パスポート試験 擬似言語のサンプル問題 問2

手続printStarsは、“☆”と“★”を交互に、引数numで指定された数だけ出力する。プログラムの中のa, bに入れる字句の適切な組合せはどれか。ここで、引数numの値が0以下のときは、何も出力しない。

[プログラム]
○printStars(整数型: num)          /* 手続の宣言 */
 整数型: cnt ← 0                  /* 出力した数を初期化する */
 文字列型: starColor ←"SC1"       /* 最初は “☆” を出力させる */

 while (cnt が num より小さい)    /* 下線がa */

   if (starColor が "SC1" と等しい)
     "☆"を出力する
     starColor ← "SC2"
   else
     "★"を出力する
     starColor ← "SC1"
   endif

   cnt ← cnt + 1

 endwhile                        /* 下線がb */

引用元:https://www.ipa.go.jp/shiken/syllabus/ps6vr7000000i9in-att/ip_programming_sample.pdf

Pythonで表現してみた

# プログラム
def printStars(num):   # 手続の宣言
    cnt = 0            # 出力した数を初期化する
    starColor = "SC1"  # 最初は "☆"を出力させる

    while cnt < num:
        
        if starColor=="SC1":
            print("☆",end="")  # end=""は改行させないための引数
            starColor = "SC2"
        else:
            print("★",end="")  # end=""は改行させないための引数
            starColor = "SC1"
            
        cnt = cnt + 1
        
# 呼び出し
printStars(5)  # ☆★・・・を出力する数

出力結果は、☆★☆★☆ です。

IT パスポート試験 過去問題 令和4年度分 問78

関数 checkDigitは、10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit を引数として、次の手順で計算したチェックデジットを戻り値とする。プログラム中の a に入れる字句として、適切なものはどれか。ここで、配列の要素番号は1から始まる。

[手順]

  1. 配列originalDigit の要素番号1~9の要素の値を合計する。
  2. 合計した値が9より大きい場合は、合計した値を 10進の整数で表現したときの各桁の数字を合計する。この操作を、合計した値が9以下になるまで繰り返す。
  3. 2. で得られた値をチェックデジットとする。
[プログラム]
○整数型: checkDigit(整数型の配列: originalDigit)
 整数型: i, j, k
 j ← 0
 for(i を 1 から originalDigitの要素数 まで 1ずつ増やす)
   j ← j + originalDigit[i]
 endfor
 while (j が 9 より大きい)
   k ← j ÷ 10 の商  /* 10進9桁の数の場合、j が2桁を超えることない */
   j ← k + (j - 10 x k)  /* 下線がa */
 endwhile
 return j

引用元:https://www3.jitec.ipa.go.jp/JitesCbt/html/openinfo/pdf/questions/2022r04_ip_qs.pdf

Pythonで表現してみた

# プログラム
def checkDigit(originalDigit):
    # 整数型: i, j, k
    j = 0
    
    for i in range(len(originalDigit)):
        j = j + originalDigit[i]
        
    while j > 9:
        k = j // 10  # 切り捨て除算
        j = k + (j - 10*k)
    
    return j
    
# 呼び出し
original_Digit = [9,9,9,9,9,9,9,9,7]  #10進9桁の整数
print(checkDigit(original_Digit))

出力結果は、7 です

IT パスポート試験 過去問題 令和4年度分 問96

関数 calcX と関数 calcY は、引数 inData を用いて計算を行い、その結果を戻り値とする。関数 calcX を calcX(1)として呼び出すと、関数calcX の変数 num の値が、1→3→7→13 と変化し、戻り値は13 となった。関数calcY をcalcY(1)として呼び出すと、関数calcY の変数 num の値が、1→5→13→25 と変化し、戻り値は25 となった。プログラム中のa, b に入れる字句の適切な組合わせはどれか。

[プログラム1]
○整数型: calcX(整数型: inData)
 整数型: num, i
 num ← inData
 for(i を 1 から 3 まで 1 ずつ増やす)
   num ← num + 2 x i   /* 下線がa */
 endfor
 return num

[プログラム2]
○整数型: calcY(整数型: inData)
 整数型: num, i
 num ← inData
 for(i を 2 から 6 まで 2 ずつ増やす)   /* 下線がb */
   num ← num + 2 x i   /* 下線がa */
 endfor
 return num

引用元:https://www3.jitec.ipa.go.jp/JitesCbt/html/openinfo/pdf/questions/2022r04_ip_qs.pdf

Pythonで表現してみた

# プログラム1
def calcX(inData):  # 関数の宣言
    # 整数型: num, i
    num = inData
    
    print(str(num) + str(" "),end="")
    
    for i in range(1,4):
      num = num + 2*i
      
      print(str(num) + str(" "),end="")
    
    print("")  # 改行
    
    return num
    
# プログラム2
def calcY(inData):  # 関数の宣言
    # 整数型: num, i
    num = inData
    
    print(str(num) + str(" "),end="")
    
    for i in range(2,7,2):
      num = num + 2*i
      
      print(str(num) + str(" "),end="")
    
    print("")  # 改行
    
    return num


# 呼び出し
print("calcX = ",end="")
calcX(1)
print("calcY = ",end="")
calcY(1)

出力結果は、
 calcX = 1 3 7 13
 calcY = 1 5 13 25
です。

IT パスポート試験 過去問題 令和5年度分 問60

手続 printArray は、配列 integerArray の要素を並び替えて出力する。手続printArray を呼び出したときの出力はどれか。ここで、配列の要素番号は1から始まる。

[プログラム]
○printArray()
 整数型: n, m
 整数型の配列: integerArray ← {2, 4, 1, 3}
 for (n を 1 から(integerArray の要素数 - 1) まで 1 ずつ増やす
   for (m を 1 から (integerArray の要素数 - n) まで 1 ずつ増やす
     if (integerArray[m] > integerArray[m + 1])
       integerArray[m] と integerArray[m + 1] の値を入れ替える
     endif
   endfor
 endfor
 integerArray の全ての要素 を先頭から順にコンマ区切りで出力する

引用元:https://www3.jitec.ipa.go.jp/JitesCbt/html/openinfo/pdf/questions/2023r05_ip_qs.pdf

Pythonで表現してみた

# プログラム
def printArray():
    # 整数型: n, m
    # 整数型の配列
    integerArray = [2, 4, 1, 3]  
    
    for n in range(len(integerArray)-1):
      for m in range(len(integerArray)-1-n):
          if (integerArray[m] > integerArray[m+1]):
              # 値を入れ替える
              integerArray[m],integerArray[m+1] = integerArray[m+1],integerArray[m]
          #途中経過
          #print(integerArray)
          
    # integerArrayの全ての要素 を先頭から順にコンマ区切りで出力する
    print(integerArray)

# 呼び出し
printArray()

出力結果は、1,2,3,4 です。

擬似言語の配列の要素番号は1から始まりますが、Pythonの配列の要素番号は0から始まります。ちなみに、このプログラムの並べ替えのアルゴリズムは、バブルソートです。

IT パスポート試験 過去問題 令和5年度分 問64

関数 sigma は、正の整数を引数 max で受け取り、1から max までの整数の総和を戻り値とする。プログラム中の a に入れる字句として、適切なものはどれか。

[プログラム]
○整数型: sigma(整数型: max)
 整数型: calcX ← 0
 整数型:n
 for (n を 1 から max まで 1 ずつ増やす)
   calcX ← calcX + n  /* 下線がa */
 endfor
 return calcX

引用元:https://www3.jitec.ipa.go.jp/JitesCbt/html/openinfo/pdf/questions/2023r05_ip_qs.pdf

Pythonで表現してみた

# プログラム
def sigma(max):
    
    # 整数型: calcX, n
    calcX = 0
    
    for n in range(1,max+1):  #1からmaxまでの整数の総和
        calcX = calcX + n
        
    return calcX

# 呼び出し
print(sigma(10))

出力結果は、55 です。

まとめ

上記のプログラムが、Pythonで実行できたら、次のことも試してみてください。

  • 関数に渡す引数を変えてみる
  • print関数を使って、変数の遷移を確認する
  • 間違った選択肢にすると、どのような動きになるか確認する

プログラミングは「習うより慣れろ」が大きいです。

一つずつできるようになりましょう。

追伸(P.S.)

擬似言語が苦手な方は、ちょっとしたことでつまづいていることが多いです。

そこをクリアできれば、500点台で足踏みしていた方であれば、すぐに600点を超えられます。

この本で勉強すると、どこでつまづいているか明確になるので、おすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

現役ITエンジニア。ITパスポート、情報処理技術者(高度)6区分に合格。"勉強が苦手な人が「分からない」から「分かる」へ"をテーマに発信しています。

目次