1 |
A,C |
シラバス説明 良いアルゴリズムの条件と擬似言語 |
事前学修 |
以下の例を考えて,コンピュータアルゴリズムについて理解してみよう: 1から100までの整数を足し合わせるコンピュータの計算方法: (1)Y を足し合わせの結果の変数とし,最初に0である.Xを変数とし,最初1とする. (2)Y,X に対してこのように処理を行う:Xの値をYに加え(Y ← Y+X),そして,Xの値を1つ増やす(X ← X+1). (3)X が100なるまで,(2)の処理を繰り返す. (4)繰り返しが終わると,Yは1から100までの整数和となる
理解の上,処理の流れを図にしてみましょう. 図の作成に関してネットで「流れ図,プログラム」のキーワードについて調べてみましょう.できたところでかまいません(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
2 |
A,C |
擬似言語 変数と制御構造 |
事前学修 |
前回の授業の事前学習で示した1から100までの整数和の具体なプログラムの例はネットで調べれば,多くのプログラムがC言語などで記述されています.適切な関連キーワードを入力しネットで調べてみよう.分かりやすく書かれたプログラム例を選んで,解読してみてください.「繰り返し」が用いられている点について注目しましょう.完全に理解する必要はありません(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
3 |
A,C |
選択構造 各種演算 |
事前学修 |
コンピュータは四則演算が得意ですが,皆さんが計算できる微積分,関数はコンピュータができないとの事実を聞いたらびっくりするかもしれません.コンピュータは数値について演算を行います. 皆さんは1.02, 5, 11のような数値的な変数型に馴染んでいると思います.コンピュータの世界には「論理型」という変数が数値と同じぐらいに頻繁に使われています.「真」か「偽」という2つの値しかない変数となりますが,これは非常に重要な概念になります.論理型に対して,論理和,論理積などの演算も定義されています.今回の事前学習はネットで「論理型」変数について調べて,勉強してみましょう.できたところでかまいません(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
4 |
A,C |
繰り返し構造 |
事前学修 |
手順が多い処理は複雑と言います.計算時間が長い処理は実は複雑ではなく,何らかの処理を何千,何万回も繰り返しているからです.プログラムの作成は前回に学んだ「選択」と今回の説明する「繰り返し」を用いていかにして課題内容を実現させることです.「選択」と「繰り返し」を上手に使うことはプログラム作成の鍵で,この授業の狙いです. 1回目の事前学習をもう一度みてみましょう.1から100までの整数和は繰り返しを用いて計算していることが分かります.1年次の授業「通信工学基礎」の中で exp(x) のテイラー展開の内容を習いました.その内容復習するとともに,コンピュータで計算する場合は処理をどのようにするかを考えてみましょう.できたところでかまいません.ヒントは1回目の事前学習を真似して繰り返しを使いましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
5 |
A,C |
繰り返し構造の続き 配列 |
事前学修 |
今回の事前学習は以下の問題を考えてもらいます: 硬貨(1円,5円,10円,50円,100円,500円)で721円を支払うには何通りの組み合わせがあるかを答えてもらいます(例えば:500円0枚,100円7枚,50円0枚,10円2枚と1円1枚とは一通りで,同様に500円0枚,100円0枚,50円0枚,10円0枚と1円721枚も一通りです). しらみつぶして数えてもらうつもりがありませんので,コンピュータでプログラムを作成して数えてもらいます.処理の流れについて考えてみましょう.できたところでかまいません.ヒントは繰り返し中に繰り返しを使いましょう.例えば,10階建のマンションの中に鈴木さん何人住んでいるかを調べるには階は1から10で,そして各階で部屋番号1から20(1階に20部屋とする)の順に聞きに行くと良いと分かりますので,この場合は階を1から10の繰り返しの中で,部屋1から20の繰り返しを入れるとよいでしょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
6 |
A,C |
探索(しらみつぶし法,番兵法) |
事前学修 |
与えられた配列 t の中で特定の値xが存在するかどうかのことは探索と言います.要素数 n の配列の要素 t[i] の添 iに関して,順番に 0, 1, 2, ..., n-1 の順に繰り返して x と t[i] と比較します.1つでも等しくなれば探索成功と言います.全部要素について不成功なら,x が配列 t に存在しないとなります.繰り返し構造を復習した上,処理の流れについて考えてみましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
7 |
A,C |
二分探索法 |
事前学修 |
前回は配列 t の要素に対して何の制限も与えない場合の探索手法です.要素が大きい順で配列の中で並んでいる場合(整列されているという),飛躍的に探査の回数を減らして,探索を高速化することができます.どのように探索すればはやくできるかについて検討してみましょう.また,その探索の手順を擬似言語で記述してみましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
8 |
A,C |
整列と基本交換法 |
事前学修 |
配列の要素を大きい順に並び替えることを整列と言います. 要素数 n の配列tの隣接している2つの要素t[i]とt[i+1]に対して,添字iを 0, 1, 2, ..., n-2(なぜn-2?)の順に大きさを比較します.大きい順になっていない場合(t[i] < t[i+1 ]になっていない),t[i] と t[i+1] の中身(値)を入れ替えます.このような作業を擬似言語で記述してみましょう.さらに,この作業の結果について検討しましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
9 |
A,C |
基本挿入法 |
事前学修 |
前回の事前学習では配列要素t[i]とt[i+1]が大きい順になっていない場合, t[i] と t[i+1] を入れ替えして,2つの値の小さいほうが t[i] に配置しました.今回は t[i] の前の要素t[0], t[1] ... t[i-1] がすでに整列されているとします.t[i] > t[i+1] の場合, (1) 新たの変数jを起用し,初期値をiとし, (2) t[j] と t[j+1] の値を交換した後に, j の値を一つ減らし, (3) j ≧ 0 尚且つ t[j] > t[j+1]であれば処理(2)を繰り返す. 手順(1)から(3)の処理を擬似言語にした上,このように処理に持たした結果について考えてみましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
10 |
A,C |
基本選択法 |
事前学修 |
配列 t の中の最大値,最小値を求める手法について調べ,擬似言語によるプログラムを作成してみましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
11 |
A,C |
シェルソート |
事前学修 |
基本挿入法は隣同士の比較交換をしているため,1回の交換は位置 1つしか変えられません.もしある小さい値がかなり後ろにあるとすると,多数回の交換が必要となります.そこで,間隔を開けて比較交換を行うと効率が良いと考えられ,シェルソートが提案されました.シェルソートについてネットで調べましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間). |
12 |
A,C |
再帰 |
事前学修 |
階乗,等差数列,フィボナッチ数列とその数学表現について調べましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2.5時間).
|
13 |
A,C |
クイックソート 全体の復習 |
事前学修 |
要素数 n の配列 t について,与えられた値 x より小さい要素を左側,x より大き要素を右側に集まるように要素の位置を変える手法について考えましょう(2時間). |
事後学修 |
講義の内容を再確認の上,適切に理解し,課題を解く練習をしましょう(2時間). 講義全体の内容を復習し,課題を解く練習をしましょう(2時間).
|