2025年度前期ソフトウエア工学

曜日・時限 木曜日2時限 期別 前期 週時間数 2
ナンバリング GF230307
開講学科等 情報通信工学部-通信工学科
教員名 境 隆一
境 隆一
職務履歴

https://research.osakac.ac.jp/index.php?%e5%a2%83%e3%80%80%e9%9a%86%e4%b8%80

教員情報データベースに遷移します

目的

コンピュータによる様々な情報処理、インターネット上のデータのやり取り,科学計算,ロボットや機器の様々な制御,等にはプログラムは欠かせません.プログラミングの能力はSEのような職種に限らず,様々な職種に必要とされています。そのため,諸君はコンピュータの演習科目を通じてC言語などのプログラミングの技法やそれぞれの言語の仕様を勉強しています.
それぞれのプログラミング言語には仕様の違いがあるものの,基本的には順次,選択と繰り返しという3つ制御構造により構成されています.これらの基本制御構造をうまく組み合わせれば任意の処理をプログラミングによって解決できます.プログラミングの考え方をアルゴリズムと呼び,これはとても重要です.なぜならプログラミングの言語仕様を知っただけではプログラムは書けないからです.
この授業では3つの基本制御構造を勉強した上,探索や整列など洗練されたアルゴリズムを習い,プログラミングの基本的な考え方を身につけてもらいます.

授業計画

授業回 形式 学修内容 学修課題
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時間).

授業形式記号

  • A:一斉授業(通常の講義)
  • B:問題発見・解決学習、プロジェクト学習
  • C:体験、実験、実習、演習など
  • D:調査 分析、解析など
  • E:ものづくり、作品制作
  • F:グループワーク(ディスカッション・ディベートを含む)
  • G:プレゼンテーション
  • H:地域・企業 連携型学習
  • I:その他

到達目標

1.疑似言語によるアルゴリズムの表現を活用できるようにする.
2.基本制御構造を理解し,これらを活用して,様々なアルゴリズムを作成できるようにする.
3.探索や整列のアルゴリズムを理解する.

〇 2024年度以降の入学生
下記リンク先のカリキュラム・マップを参照
URL: https://www.osakac.ac.jp/about/policy/faculty/

○ 2023年度以前の入学生
修得する資質・能力:知識・理解力、応用力 【DP-F-1-1】

評価方法と評価観点

評価方法 配点合計知識・理解力応用力コミュニケーション力態度・志向性創造力 合計
定期試験またはレポート試験 70% 70% 30% 100%
小テスト、小論文 15% 50% 20% 30% 100%
グループワーク 0%
プレゼンテーション 0%
レポート、宿題 15% 50% 20% 30% 100%
授業での姿勢(ノート、質疑など) 0%
作品、パフォーマンス(実技、実演) 0%
その他1(具体的に: 0%
その他2(具体的に: 0%
100% 64% 27% 0% 0% 9% 100%

教科書・参考書

参考書:「アルゴリズム入門擬似言語」高橋孝弘,実教出版
           「アルゴリズム入門」大谷紀子,志村正道,コロナ社

オフィスアワー

水曜日13:00-14:00(教員室:A号館2F 35室)

その他

全授業日数の2/3の出席を単位取得の必須条件とします.この条件に満たさない受講生は試験,追試,また卒業再試験を受けることができません.

課題については,授業内で適宜,解説・解答を行い,フィードバックします.

実務経験のある教員による授業科目