Python

日本語の疑似コードによるプログラミング(プログラミング初心者のために)

投稿日:

こちらを読むと

  • 日本語による疑似コードの書き方が分かります。
  • 疑似コードを使えば、最初に考えたアルゴリズムを間違いなくプログラミングできます。
  • 記事の所要時間は15分です。

はじめに

プログラミング初心者の方にありがちなのが、いきなりコードを書き始めようとして、どこから書いたらよいか分からない。。。と詰まるパターンかと思います。

本記事では、”疑似コード”というテクニックを使って、日本語で考えた文章⇒プログラムコードに変換する手法をご紹介します!

ステップバイステップでやれば、誰でもプログラムが書けるようになります。

課題:バブルソート

今回、課題として、バブルソートをプログラミングしていくことにします。

アルゴリズムは、こちらが分かりやすいので参照してください。

最終的に、Pythonでコードを書くことを目指します。
それでは、さっそく書いてみましょう!

関数の定義

まずは関数の定義をしましょう。

関数名:バブルソート
引数:ソート対象リスト
戻り値:ソート済みリスト

疑似コードを書く

まずは素直に書いてみましょう。

さすがにこれではプログラムが書けなさそうですね。
バブルソートを分解すると、こんな感じになるでしょう。

繰り返しをまとめる

上の、一巡目のソート~最終巡目のソートですが、繰り返し処理ですね。
変数nを使って繰り返しをまとめると、以下のようにできます。

最終巡目はリストの最終要素なので、インデックスが0から始まると考えると、”リストサイズ-1″が最終巡目になります。

繰り返し処理の中に入っている、交換処理を具体的に書くとどうなるでしょうか。左と右の要素を交換する処理を、x回繰り返せばよいはずです。よってこうなりますかね。

交換処理も繰り返しなので、以下のように記述できます。

ここで、xが求められるように式を変換しておくと、
n+x = リストサイズ-1
⇔x = リストサイズ-n-1

となります。

ソートの交換処理を具体的に

上記の疑似コードの、”リストの左端n+i番目とn+i+1番目を比較し、n+i+1番目の値が小さければ交換する”の部分に着目します。

少し具体的に書くと、以下のようになります。

“両者を比較し、n+i+1番目の値が小さければ交換する”の部分があいまいですね。さらに具体的に、交換処理を書いてみましょう。

上の方法だと、うまく交換できなさそうですね。

2つの交換処理は、一時的な置き場所を用意すれば、うまく変換できることが知られています。

全てをつなげると、最終的に以下のようになります。

ここまできたら、もうプログラムにできそうですね!

疑似コード⇒Pythonコードへの変換

最後にPythonのソースコードに変換します。

まとめ

  • 日本語による疑似コードの書き方が分かりました。
  • 疑似コードを使えば、最初に考えたアルゴリズムを間違いなくプログラミングできることが実感できました。

ここまで厳密に疑似コードプログラミングすると時間がかかってしまいます。

よって、明らかな部分は通常のソースコードで書き、不明点を疑似コードで書きながら詰めていくスタイルが現実的でしょう。

しかし、いきなりソースコードを書き始めるよりも、断然プログラムを理解しながら書けると思います。

Reference

以下の書籍、9.2 疑似コードプログラミングプロセス(PPP)に、疑似コードの内容が詳しく書いてあります。

他にもテクニック満載なので、プログラミングが好きな方はチェックしてみてはいかがでしょうか。



-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Pythonの正規表現ライブラリで文字列検索

Table of Contents こちらを読むとはじめにPythonの正規表現ライブラリrereを使って文字列検索実行結果まとめReference こちらを読むと Pythonの正規表現ライブラリ& …

単純パーセプトロン③

Table of Contents こちらを読むと数式おさらい実装まとめReference こちらを読むと 単純パーセプトロンの実装方法が分かります 数式おさらい 前回のブログで、単純パーセプトロンの …

Pythonでイカサマサイコロの検定を行う

Table of Contents こちらを読むと やりたいこと調べる方法サイコロを12000回投げる検定を行うまとめReference こちらを読むと Pythonでの統計検定方法の例が分かります二 …

Python matplotlibで複数のグラフを描画する

Table of Contents こちらを読むと記事を書いたきっかけ複数グラフの枠を表示グラフの中身を表示グラフ間隔の調整まとめReference こちらを読むと Pythonのグラフライブラリma …

Pythonでt検定を行う①

Table of Contents こちらを読むとやりたいことt検定とは仮説を立てるサイコロを振るまとめ こちらを読むと Pythonでの統計検定方法の例が分かりますt検定の方法が分かります やりたい …

Twitterフォロー

Twitterタイムライン