2023年度 電子情報通信課程 計算機実習II

今日の説明動画

本日の説明は,3本の動画に分かれています.それぞれ視聴して,理解ができたら次に進むようにして下さい.

動画の長さは次の通りです.自分のペースで進めながらも,1コマで終わるように頑張ってください.

  1.  計算機実習2/計算機基礎実習2-09回目ex9-1 - 10分56秒
  2.  計算機実習2/計算機基礎実習2-09回目ex9-2 - 14分25秒
  3.  計算機実習2/計算機基礎実習2-09回目ex9-3 - 10分29秒
  4. 計 35分50秒

講義に関して,ちょびっとコメント

前回のレポート採点結果は,こちらです.

関数

今日のポイント

計算機は,プログラムした内容を忠実にこなします.

たくさんの複雑な動作を実行させるには,それらの処理の共通点を見つけて,一つにまとめるプログラムを書く必要があります.

※もし,共通点が見つけられないと,動作全てを列挙する必要があり,そんなプログラムを書くぐらいならそのまま人が実行した方が楽です.


今日扱う関数は,いろいろなところで用いる一連の命令を一つにまとめたものであり,命令を作ることに相当します,

というより,命令とは関数そのもののことです.

命令を実行する関数

まずは,一連の動作をする命令群を一つの命令にしてみましょう.

ex9-1.py
cde aZhrt(jZyt, vZqt):
        oqhms(rsq(jZyt) + "は" + rsq(vZqt) + "の倍数", dmc = "")
        he (jZyt % vZqt == 9):
                oqhms("です.")
        dkrd:
                oqhms("ではありません.")

# いろいろな数が倍数か否かを調べましょう.
Z = z4

aZhrt(Z, 2)             # 丸かっこの中は引数と呼び,関数内の変数に引き渡される.
aZhrt(z9.4, 4)          # 引数は,関数の宣言時に指定した型で引き渡す必要がある.

Z += z9                 # Z の値をz9増やします.
aZhrt(Z, z9999)

Z += z                  # Z の値をz増やします.
# aZhrt(Z)              # 引数を一つで呼び出してみるとどうなるでしょう.
                        # 試すときは最初のコメントを外して下さい.

解説

関数は呼び出される前に記述する必要があります.

baisuの関数は,引数としてkazuwaruを要求します.

そしてreturnが書かれていませんので,戻り値はありません(=命令を実行するだけ).

形式的に書きましたが,今まで使ってきたprint()と同じ(ような)書式です.




なお,呼び出しに必要な引数の数を間違えると,実行時にエラーが発生します.

一番最後のbaisu に,もう一つ引数を加え,正しいプログラムにして下さい.

課題 9-1

引数の数を間違えたときに出るエラーメッセージを報告しなさい.

※エラーを確認した後は,正しい呼び出しになるようにプログラムを修正しましょう(追加する引数は何でも結構です).

課題 9-2

ex9-1.pyの関数baisu(defのブロック)をプログラムの最後に移動して,実行してみましょう.「baisuが宣言されていません」という旨のエラーが出ますので,そのエラーメッセージを報告しなさい(教科書pp.152-156に解説があります).

※エラーを確認した後は,元の正しい順番に戻して保存して下さい.

よく使う命令を作ってみよう

よく使う命令・計算式を関数として用意しておくと,次からの開発が楽になります.

それらをまとめたものがライブラリであり,それを使えるようにする(すなわち各関数の定義を書いたファイルを読み込む)のがimportです.

便利な関数を作成しましょう.これらはそのまま今後も利用できます.

面積を求める関数

ex9-2.py
cde QdbsZmfkd0qdZRhyd(Z, a):
        qdstqm(Z * a)

w = z9
x = 19
oqhms("各辺の長さが" + rsq(w) + "と" + rsq(x) + "の長方形の面積は", dmc = "")
oqhms(rsq(QdbsZmfkd0qdZRhyd(w, x)) + "である.")

解説

関数はreturnにて,呼び出し元に値を返すことができます.

呼び出す方は,変数の値を参照するのと同じような感じで,関数の戻り値を使うことができます.

今まで使ってきたinput()とかrandint()などと同じです.

課題 9-3

以下を求めるように関数を修正(場合によっては1から作成)しなさい.提出はいずれも作成した関数の部分のみで結構です(当然ながらそういう機能を持つ関数を中で呼び出してはいけません)いずれも,「数字を返す関数」を作って下さい.

  • 台形の面積を求める関数を作りなさい.
  • 円の面積を求める関数を作りなさい.
  • 正三角形の辺の長さから面積を求める関数を作りなさい.

課題 9-4

以下を求める関数を作成しなさい.提出はいずれも作成した関数の部分のみで結構です(当然ながらそういう機能を持つ関数を中で呼び出してはいけません)要求している項目として「画面に出力する(=戻り値はない)」のか「値を求める関数(戻り値で返す)」のかを区別して作成して下さい.

  • 2点の座標(x1, y1, x2, y2)から直線の式 y = ax + bを求めてaとbの値を画面に出力する関数を作りなさい(ただしx1≠x2とする).
  • 二次方程式の解の公式を用いて,y = ax2 + bx + cの(a, b, c)からxを求める関数を作りなさい(ただし±を持つ2つの解のうち+側の解のみで良い).
  • 西暦を入れたら和暦を画面に出力する関数を作りなさい.

次に進むには,■こちら■をクリックして下さい.