2025年度 電子情報通信課程 計算機実習II講義に関して,ちょびっとコメント口頭でお伝えします. 最終テスト案内
重要なので,よく読んで理解して下さい.
最終回( 1月16日 )は,最終テストを実施します.実習はありません. 今までの課題を理解していればすぐにできる問題ばかりです. 以下に説明します. 【概要】
【不正行為】以下の行為は不正行為とみなします.
上記不正行為をした場合,最終テストの点数を0点とします. 【配点と回答方法】
以上,最終テストについて理解できたでしょうか? 関数今日のポイントプログラムが複雑になってくると,似たような操作,同じ内容の作業が何度も出てきます. すでに学んだ for/while による繰り返しもそうですが,同じ作業をすべて列挙するのは効率が悪いですね. よく使う「一塊」の作業を登録しておいてそれを呼び出せれば楽ですよね. この「再利用可能な一塊の作業」をpythonでは「関数( function )」と呼びます. すでに利用している"print()","input()","str()"などはpythonに最初から備わった「組み込み関数」です. そして何より重要なことは,すでに存在する関数以外に,ユーザがプログラム中で独自の関数を定義できるということです. 今日はオリジナル関数を作ってみましょう. 命令を実行する関数まずは,一連の動作をする命令群を一つの命令にしてみましょう. 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の関数は,引数としてkazuとwaruを要求します. そしてreturnが書かれていませんので,戻り値はありません( =命令を実行するだけ ). 形式的に書きましたが,今まで使ってきたprint( )と同じ( ような )書式です. なお,呼び出しに必要な引数の数を間違えると,実行時にエラーが発生します. 課題 9-1引数のエラーを確認します.
課題 9-2 ex9-1.py の "def baisu( kazu, waru )" の関数定義ブロックを,プログラムの最後に移動して,実行してみましょう.
「baisu宣言がない」旨のエラーが出るので,
そのエラーメッセージをそのまま報告しなさい. ※エラーを確認した後は,元の正しい位置に戻して保存して下さい. よく使う命令を作ってみようよく使う命令・計算式を関数としてあらかじめ定義しておくと,次からの開発が楽になります. 複数の関数をまとめたものがモジュールです.
それを使えるようにする( すなわち各関数の定義を書いたファイルを読み込む )のがimport文です. ちなみに,モジュールを( ひとつのフォルダに )まとめたものを「パッケージ」と呼びます. tkinterは標準パッケージなのでいきなりimportで呼び出せますが,非標準のパッケージは, "pip"コマンド等でインストールする必要があります. ※豆知識※ 便利な関数を集めたのものは他の言語では「ライブラリ」という呼び方が一般的です. pythonで「ライブラリ」というと,モジュールやパッケージの総称として使われます.
さて,便利な関数を作成しましょう.これらはそのまま今後も利用できます. 面積を求める関数長方形の面積を求める関数を作ります. 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上の関数を参考にして,以下の図形の面積を返す関数を,四則演算を使って作成しなさい. 提出は関数の定義範囲のみ.ただし,コメントで関数の使い方の説明を必ず入れなさい. ※計算式によって,引数の個数は変わる ★オプション追加仕様★ それぞれ正しく答えが出るようになったら,入力値の例外処理を考えなさい( 例:文字列だったら?算出不可能な数値だったら?等 ). このオプションを追加できた場合,別途回答する必要はない.関数ブロックのコメントにその旨を追加しておくこと.
※当然ですが,そういう機能を持つ既存関数を呼び出すのではありません.関数を自作します. 課題 9-4以下を求める関数を作成しなさい. ※四則演算を使って関数を自作. 提出は関数の定義ブロックのみ.ただし,関数の使い方をコメントで説明しなさい ※要求されている内容によって「画面に出力するだけ( =戻り値はない )」のか「結果を戻り値で渡す( 返す )」のかを区別して作成して下さい. ★オプション追加仕様★ それぞれ正しく答えが出るようになったら,入力値の例外処理を考えなさい( 例:文字列だったら?算出不可能な数値だったら?等 ). このオプションを追加できた場合,別途回答する必要はない.関数ブロックのコメントにその旨を追加しておくこと.
変数の有効範囲pythonでは,関数の中で定義した変数は,その関数の中でしか使用できません.これをローカル変数と呼びます. 関数の外で変数を定義した場合( つまり,先週までのプログラムの書き方 )は,そのファイルの関数内でも使うことができます. そのため,もし他の関数や関数の外から使用したい場合は,関数の外で定義する必要があります. これをグローバル変数と呼びます. ex9-3.py
Z = z
cde etmbz( ):
oqhms( "( etmbz )変数Zの中身は," + rsq( Z )+ "です." )
Z = 1
oqhms( "( lZhm )変数Zの中身は," + rsq( Z )+ "です." )
etmbz( )
整数型変数aを,グローバル変数として定義しています. 関数mainの中でも,関数func1の中でも,同じ変数aとして利用できます. 課題 9-5以下の指示に従ってソースコードを変更し,その出力結果と,それについての説明を提出しなさい. ※それぞれの変数 a の扱い( どこで定義された変数 a か )の違いを明記する ※エラーが出た場合はその理由/原因について説明する
... cde etmbz( ): Z = 2; # ← この1行を追加 oqhmse( "( etmbz )変数Zの中身は," + rsq( Z )+ "です." ) ... ... Z = 1 oqhms( "( lZhm )変数Zの中身は," + rsq( Z )+ "です." ) etmbz( ) oqhms( "( lZhm )変数Zの中身は," + rsq( Z )+ "です." )# ← これを追加する # Z = z # ← ここをコメントアウト cde etmbz( ): oqhms( "( etmbz )変数Zの中身は," + rsq( Z )+ "です." ) # Z = 1 # ← ここもコメントアウト oqhmse( "( lZhm )変数Zの中身は," + rsq( Z )+ "です." ) etmbz( ) oqhmse( "( lZhm )変数Zの中身は," + rsq( Z )+ "です." ) 課題 9-6教科書§5-5,pp.157-160「ローカル変数はグローバル変数を超えられない」等を読んで,グローバル変数について勉強しましょう. そこに書かれているプログラムを順に試し,pp.159( 小節「グローバル文を使って」グローバル変数の使用宣言をしよう )の test.py と同一の結果が得られるか確認しましょう. 課題 9-7教科書pp.161-163「引数を使って関数にデータを渡してみよう」を読んで,作業中の様子を画面に表示できるようにしましょう. 以前作成した chap5-3.py に対して,pp.161-162の修正を行いましょう. 課題 9-8変数を扱える範囲( スコープ )に関して,教科書pp.163-168「引数で渡した変数は関数側から変更できるの?」等 に説明が書いてありますので,そちらも読んで理解しましょう. 教科書に対する課題( 9-6から9-8 )に関しては提出の必要はありませんが,ここを流し読みすると来週からのゲーム作りで苦労しますので, 必ず入力・実行し,しっかりと理解するようにして下さい. 本日の課題提出課題は課題9-1,9-2,9-3,9-4,9-5です. ※これ以外の課題( 9-6から9-8 )は提出不要です.が,必ず入力・実行してください.
※注意※◎しっかり課題文を読み,「何をどう答えるべきか」を把握して下さい. ◎manaba入力画面には時間制限があります.いったんPCのエディタでテキストファイルを作成してから,それをコピーするようにしてください. その際のファイル名は自由ですがわかりやすいものを.特にプログラムのソースファイルと混同しないように注意しましょう. ◎実行画面,ソースコード,エラーメッセージ等は"----"や"====="等の境界線を入れて「ここから」「ここまで」を明確にして下さい. ◎ひとまとまりの回答の前後には空行を入れて読みやすくして下さい.びっしり書かれているとチェック/評価の際の間違いの原因になります. ◎提出前にもう一度,冷静に読み直して下さい.細かい部分でも訂正があれば手をかけて下さい. |