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


2021-05-11 更新

この連載では、プログラミングの入門者を対象として、基本情報技術者試験の出題範囲にテーマを絞って、 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 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 86% の方が、
午前試験を免除しています。
2021 年 下期 試験向け
午前免除のチャンスは
6月10日 12時(正午)まで!
info_outline
2021 年 下期 試験向け
午前免除のチャンスは
6月10日 12時(正午)まで!
詳しく見てみるplay_circle_filled
label これまでの『基本情報ではじめるPython』の連載一覧 label 著者

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数