(Python) サブルーチン: プロシージャと関数 - 1


サブルーチン

サブルーチンは、名前があり、独自の別個のタスクを解決するプログラムの別個の部分です。サブルーチンはメインプログラムの先頭に配置されており、メインプログラムから名前を指定して起動(呼び出し)できます。

サブルーチンを使用すると、プログラム内の別の場所に同じコードを記述する必要がある場合に、コードの重複を避けることができます。
プログラムにインポートされるライブラリ (数学ライブラリ math など) は、誰かがすでにコンパイルしたサブルーチンで構成されています。プログラマーは、どのようなアルゴリズムを実装するかを考える必要はなく、正確に何をしているのかだけを考えて、単にアルゴリズムを適用するだけです。これにより時間を大幅に節約できます。すでに誰かが書いたアルゴリズムを自分で書く必要は
ありません。
各サブルーチンはタスクを 1 つだけ実行する必要があります。 単に何かを計算するか、データを出力するか、あるいは他のことを行うかのいずれかです。

サブルーチンにはプロシージャ関数
の 2 種類があります。
サブプロシージャは、結果を特定の形式で画面に表示するなど、何らかのアクションを実行します (簡単な例として、print() ステートメントは、データを画面に出力する標準のサブプロシージャです)。

関数サブルーチンはメイン プログラムで使用できる結果 (数値、文字列など) を返します

簡単な手順を書いてみましょう。
画面に「Error」という文字列を表示する必要があるとします。ユーザーの過失によりコード内でエラーが発生する可能性があるたびに (たとえば、間違ったデータを入力した場合など)。
これはステートメントを書くことで実行できます print("エラー") そして、そのような行をプログラム内の多くの場所に挿入する必要があると想像してください。もちろんどこにでも書いて大丈夫です。ただし、この解決策には 2 つの欠点があります。
1) この文字列は何度もメモリに保存されます
。 2) エラー時の出力を変更したい場合は、プログラム全体でこの行を変更する必要があり、かなり不便です

このような場合には手続きが必要
になります。 プロシージャを含むプログラムは次のようになります。
  def printError(): # プロシージャの説明 print("エラー") ... printError() # 実行のためのプロシージャを開始します。 # 実行したいプロシージャの名前を指定するだけです ... printError()
覚えておく必要があります!
<オール>
  • プロシージャは単語 def (英語の define から定義する) で始まります。プロシージャの名前の後に、空のかっことコロンが書き込まれます。 。パラメータは括弧内に指定できます (これについては後ほど説明します)。
  • プロシージャ内で実行されるすべてのステートメントはインデントされます。
  • プロシージャを実行するには、メイン プログラムでプロシージャを名前で呼び出し、かっこを忘れずに記述する必要があります!
  • プログラム内のプロシージャは何度でも呼び出すことができます。
  • パラメータと引数

    ここで、ユーザーのエラーに応じて、ユーザーが犯した間違いの種類に応じて異なるメッセージを表示する必要があると考えてみましょう。
    この場合、エラーごとに独自のプロシージャを作成できます。 <プレ> def printErrorZero(): print("エラー。ゼロ除算!") <プレ> def printErrorInput(): print("入力エラー!")
    さらに多くのエラーの可能性がある場合はどうなるでしょうか?この解決策は私たちには合いません。
    どのようなエラーメッセージを表示するかを指示してプロシージャを制御する方法を学ぶ必要があります。
    これを行うには、プロシージャ名の後に括弧内に記述するパラメータが必要です。 <プレ> def printError: print("s")
    このプロシージャでは、s はパラメータ、つまりプロシージャの制御を可能にする特別な変数です。
     
    パラメータは、サブルーチンの動作方法を決定する変数です。パラメータ名はサブルーチンヘッダー内でカンマで区切られます。


    ここで、プロシージャを呼び出すときに、プロシージャ内のパラメータ (変数 s) に割り当てられる実際の値を括弧内に示す必要があります。 <プレ> printError("エラー! ゼロ除算!")
    このような値を引数と呼び
    ます。  
    引数は、サブルーチンが呼び出されたときにサブルーチンに渡されるパラメータ値です。

    引数には定数値だけでなく、変数や算術式も使用できます。

    ローカル変数とグローバル変数

    メイン プログラムに導入される変数はグローバル (または共有) と呼ばれます。

    グローバル変数にはどのサブルーチンからでもアクセスできます。

    多くの場合、サブルーチン内でのみ使用される追加の変数を導入する必要があります。このような変数はローカル (またはローカル) と呼ばれます。それらを作成したサブルーチン内でのみそれらを操作できます。残りのルーチンはそれらについて何も「認識」しません

    したがって、変数の有効範囲 (スコープ) を、それが本当に必要なサブルーチンのみに制限することができます。プログラミングでは、この技術はカプセル化と呼ばれます。 - 変数が外部から変更されないように隠します。

    3 つのプログラムを分析します。 <頭> <本体>


     

    説明 プログラム
    1) このプログラムでは、変数 i はローカルです。メイン プログラムに i 変数がない場合、エラー メッセージが表示されます。そして、そのような変数がある場合 (その場合、それはグローバル変数です)、その値が画面に表示されます。 <プレ> デフォルトテスト(): print(i)
    2) ここでは、グローバル変数 i が存在する場合でも、新しいローカル変数 i が値 2 で作成され、画面上に 2 が表示されます。画面。 <プレ> デフォルトテスト():   i = 2 print(i)
    3) このプログラムには、値 15 のグローバル変数 i があります。その値はサブルーチン内で変更できます。そのためには、それがグローバルであることを明示的に宣言する必要があります (コマンド global を使用します)。
    このプロシージャはグローバル変数 i で動作し、新しい値 2 が割り当てられます。値 2 が表示されます。
    <プレ> デフォルトテスト():   グローバル i i = 2 # メインプログラム i = 15 印刷(i)