基本情報ではじめる Python (1) 基本構文 ~ 擬似言語と比べて覚える


2021-05-11 更新

error

この記事は基本情報技術者試験の旧制度( 2022 年以前)の記事です。
この記事の題材となっている「午後問題」は現在の試験制度では出題されません。 ご注意くださいませ。

この連載では、プログラミングの入門者を対象として、基本情報技術者試験の出題範囲にテーマを絞って、 Python の言語構文とプログラムの読み方を説明します。

第 1 回となる今回は、基本情報技術者試験の擬似言語と比べながら、 Python の基本構文を説明します。両者には、よく似ている部分もあれば、まったく異なる部分もあります。

擬似言語と Python の記述形式の比較

基本情報技術者試験を受験されるなら、すでに擬似言語をご存知でしょう。擬似言語は、午後試験の必須問題の「データ構造及びアルゴリズム」で使われるので、必ず覚えなければならないからです。

それなら 「擬似言語と比べることで、 Python の基本構文を効率的に覚えちゃおう!」というのが、今回の記事の趣旨です。

はじめに、試験問題に添付された「共通に使用される擬似言語の記述形式」という資料に対応させて、 Python の記述形式を示しますので、概要をつかんでください。あとで、注意すべきポイントをいくつか説明します。

code共通に使用される擬似言語の記述形式(上段)と Python の記述形式(下段)

〔宣言、注釈及び処理〕
記述形式 説明
code擬似言語
手続、変数などの名前、型などを宣言する。
codePython
def
関数を宣言する。 Python の変数は、型を宣言せずに使う。
code擬似言語
 /* 文 */ 
文に注釈を記述する。
codePython
 # 文 
文に注釈を記述する。
〔処理〕
記述形式 説明
code擬似言語
・変数 ← 式
変数に式の値を代入する。
codePython
変数 = 式
変数に式の識別情報を代入する。
code擬似言語
・手続(引数, …)
手続を呼び出し、引数を受け渡す。
codePython
関数(引数, …)
関数を呼び出し、引数を受け渡す。
code擬似言語
▲
|  処理
▼
単岐選択処理を示す。 条件式が真のときは処理を実行する。
codePython
if 条件式:
    処理
単岐選択処理を示す。 条件式が真のときは処理を実行する。
code擬似言語
▲
|  処理1
+---
|  処理2
▼
双岐選択処理を示す。 条件式が真のときは処理 1 を実行し、偽のときは処理 2 を実行する。
codePython
if 条件式:
    処理1
else:
    処理2
双岐選択処理を示す。 条件式が真のときは処理 1 を実行し、偽のときは処理 2 を実行する。
code擬似言語
■
|  処理
■
前判定繰り返し処理を示す。 条件式が真の間、処理を繰り返し実行する。
codePython
while 条件式:
    処理
前判定繰り返し処理を示す。 条件式が真の間、処理を繰り返し実行する。
code擬似言語
■
|  処理
■ 条件式
後判定繰り返し処理を示す。 処理を実行し、条件式が真の間、処理を繰り返し実行する。
codePython

※ なし

※ Python には、後判定繰り返し処理がない。
code擬似言語
■ 変数: 初期値, 条件式, 増分
|  処理
■
繰り返し処理を示す。 開始時点で変数に初期値(式で与えられる)が格納され、条件式が真の間、処理を繰り返す。また、繰り返すごとに、変数に増分(式で与えられる)を加える。
codePython
for 変数 in range(初期値, 終了値, 増分):
    処理
繰り返し処理を示す。 繰り返しにおいて、 range 関数で生成された範囲の整数値が、順番に変数に代入される。

info編集部注: スマートフォンでご覧の際は、表やプログラムは横スクロールすると全文をご覧になれます

〔演算子と優先順位〕
演算の種類 演算子 優先順位
単項演算
code擬似言語
+、-、not
codePython
+, -, not


























































乗除演算
code擬似言語
+、÷、%
codePython
+, /, //, %
加減演算
code擬似言語
+、-
codePython
+, -
関係演算
code擬似言語
>、<、≧、≦、=、≠
codePython
>, <, >=, <=, ==, !=
論理積
code擬似言語
and
codePython
and
論理和
code擬似言語
or
codePython
or

Python では変数を宣言しないで使う

それでは、注意すべきポイントを説明しましょう。

擬似言語では、変数を宣言してから使いますが、 Python では、変数を宣言せずに使います。 Python の変数には、任意のデータ型のデータを代入できます。以下に例を示します。

code擬似言語

○整数型:a      /* 整数型の変数aを宣言する */
○実数型:b      /* 実数型の変数bを宣言する */
○文字列型:c    /* 文字列型の変数cを宣言する */
○論理型:d      /* 論理型の変数dを宣言する */
・a ← 123       /* 変数aに整数型のデータを代入する */
・b ← 4.56      /* 変数bに実数型のデータを代入する */
・c ← "hello"   /* 変数cに文字列のデータを代入する */
・d ← true      /* 変数dに論理型のデータを代入する */
codePython
a = 123       # 変数aに整数型のデータを代入する
b = 4.56      # 変数bに実数型のデータを代入する
c = "hello"   # 変数cに文字列のデータを代入する
d = True      # 変数dに論理型のデータを代入する

Python では、変数に、データの値ではなく、データの識別情報が代入されるようになっています。この識別情報は、データのデータ型に関わらず同じ形式なので、 Python では、データ型を指定した変数の宣言が不要なのです。

もしも、 Python で、データ型を指定した変数の宣言をするとしたら、どの変数も識別情報型ということになります。ただし、この仕組みは内部的なものなので、変数にデータの値が入っていると考えても、ほとんどの場面で問題ありません。

コラム

Python のデータ型と変数
プログラムで取り扱うデータの種類のことを データ型 と呼びます。

擬似言語にも Python にも、データ型の種類として、

  • 整数型(小数点以下がない数値)
  • 実数型(小数点以下がある数値)
  • 文字列型(文字の並び)
  • 論理型(真と偽を表す)

などがあります。

たとえば、
123 は整数型のデータであり、
4.56 は実数型のデータであり、
“hello” は文字列型のデータであり、
True と False は論理型のデータです。

プログラミング言語の変数には、メモリ上にあるデータの情報を代入します。このとき、プログラミング言語の種類によって、データの値を代入するものと、データの識別情報(どのデータであるかを示す情報)を代入するものがあります。

Java などデータ型を指定して変数を宣言するプログラミング言語では、不適切なデータ型のデータを変数に代入すると、エラーになります。

これは、プログラミング言語の変換プログラム(コンパイラやインタプリタ)が、代入処理において、データ型のチェックをしているからです。エラーのまま処理を続けると、当然ですが、目的の処理結果が得らえません。例えば、整数型の計算をするところで、誤って文字列型のデータが代入されると計算ができず、エラーが発生します。

Python には後判定繰り返し処理がない

擬似言語には、処理を行ってから繰り返しの条件をチェックする後判定繰り返し処理がありますが、 Python には、ありません。

Python で後判定繰り返し処理を記述する場合は、条件を True とした前判定繰り返し処理の中で、もしも条件式に一致しないなら繰り返しを終了するようにします。

以下は、擬似言語の後判定処理と同様の機能を、 Python の前判定繰り返し処理で実現した例です。 Python の break は、繰り返しを終了する命令です。

code擬似言語
■
|  処理
■ 条件式
codePython
while True:
    処理
    if not 条件式:
        break

Pythonのrange関数は任意の範囲の整数列を生成する

擬似言語の

 ■ 変数: 初期値, 条件式, 増分 

という形式の繰り返し処理は、 Python で記述すると、

for 変数 in range(初期値, 終了値, 増分):

になります。

range 関数は、初期値から、終了値未満まで、増分ずつ変化する整数を、 1 つずつ返します。

たとえば、変数 i の値を 0 から 9 まで( 10 未満まで)変化させて繰り返し処理を行う場合は、以下のように記述します。

code擬似言語
■ i: 0, i < 10, 1
|・処理
■
codePython
for i in range(0, 10, 1):
    処理

range 関数では、初期値のデフォルト値は 0 で、増分のデフォルト値は 1 です。

したがって、

range(0, 10, 1)

の部分を、初期値と増分を省略して

range(10)

と記述することもできます。

Python には除算の演算子が 3 種類ある

擬似言語と Python の演算子は、ほとんど同様ですが、除算に注意してください。

Python には、除算の演算子が 3 種類あります。

  • / は、実数の除算結果を返します。
  • // は、整数の除算結果(除算の商)を返します。
  • % は、擬似言語と同様に、除算の余りを返します。

Python には複合代入演算子がある

Python には、擬似言語にはない、 複合代入演算子 というものがあります。

これは、変数に演算を行って、その結果を同じ変数に代入する処理を、効率的に記述するための構文です。たとえば、以下は、擬似言語で、変数 a の値に 1 を加えて、その結果を同じ変数 a に代入する処理です。代入の左辺と右辺で、変数 a が 2 回記述されています。

code擬似言語
・a ← a + 1

同じ処理を、 Python では、以下のように記述できます。

+= の部分が複合代入演算子です。

codePython
a += 1

変数 a の記述が 1 回だけなので、擬似言語より効率的です。

+ だけでなく、

変数 = 変数 演算子 値

という処理は、

変数 演算子= 値

と記述できます。 演算子= の部分が複合代入演算子です。

シンプルな関数の定義の例

最後に、シンプルな関数の定義を例にして、擬似言語と Python の記述形式を比べてみましょう。

以下は、引数 a と b の平均値を戻り値として返す average 関数を、擬似言語と Python で記述したものです。

両者の大きな違いは、

  • 擬似言語では、関数の戻り値、引数、ローカル変数にデータ型を指定
  • Python では、データ型を指定していない

ことです。これは、 Python の変数には、任意のデータ型のデータを代入できるからです。 return という命令で戻り値を返すのは、擬似言語と Python で同様です。

code擬似言語
○実数型:average(実数型:a, 実数型:b)
○実数型:ans
・ans ← (a + b) ÷ 2
・return ans
codePython
def average(a, b):
    ans = (a + b) / 2
    return ans

いかがでしたか。基本情報技術者試験の擬似言語と比べることで、効率的に Python の基本構文を覚えられたでしょう。

この連載では、今後も、基本情報技術者試験を Python で受けるための知識を取り上げて行きます。

それでは、またお会いしましょう!

 

label 関連タグ
科目A試験は、
免除できます。
独習ゼミで科目A試験を1年間免除して、科目B試験だけに集中しましょう。
免除試験を受けた 74.9% の方が、
科目A免除資格を得ています。
科目A免除試験 最大 2 回の
受験チャンス !
info_outline
科目A免除試験 最大 2 回の
受験チャンス !
詳しく見てみるplay_circle_filled
label これまでの『基本情報ではじめるPython』の連載一覧 label 著者