授業科目名(和文) [Course] |
プログラミング言語Ⅱ <プログラミング技法> <プログラミング言語Ⅰ> |
授業科目名(英文) [Course] |
Programming Language II <Programming Techniques> <Programming Language I> |
学部(研究科) [Faculty] |
情報工学部 |
学科(専攻) [Department] |
情報通信工学科 |
担当教員(○:代表教員) [Principle Instructor(○) and Instructors] |
○小野 孝男 自室番号(2608)、電子メール(onotakao**c.oka-pu.ac.jp) ※利用の際は,** を @に置き換えてください |
単位数 [Point(Credit)] |
前期 2単位 |
対象学生 [Eligible students] |
情報工学部情報通信工学科 2年次生(平成23年度以降入学生) 情報工学部情報通信工学科 1年次生(平成22年度以前入学生) |
授業概略と目標 [Course description and Objects] |
C言語については既に「プログラミング言語I」や各演習等で学んでいるが,より大規模なプログラムを作るためにはより進んだ知識が必要である.そこで,ポインタや構造体,分割コンパイルなど「大きなプログラム」で要求される事項を説明し,また基本的なデータ構造やアルゴリズムを実際にC言語で実装することで理解を深めることを目的とする. |
到達目標 [Learning Goal] |
1. ポインタや構造体の知識を学び活用できるようにする. 2. 分割コンパイルについて知る. 3. 再帰的な構造体の扱いを学ぶ. 4. 基本的なデータ構造やアルゴリズムの実装方法を学ぶ. |
履修上の注意 [Notes] |
履修の要件:「プログラミング言語I」の内容を十分に理解しておくこと.また,「データ構造とアルゴリズム」は関連する内容を持つため履修することが望ましい. |
授業計画とスケジュール [Course schedule] |
1. C言語の復習 ?プログラミング言語I 等で学んでいる内容を復習し再確認する. 2. メモリモデルとポインタの基礎 ?C言語が想定するメモリ構造を示し,それを用いて基本的なポインタ操作を学ぶ. 3. 配列とポインタとの関係 ?C言語における配列とポインタとの関係を理解する. 4. 構造体 ?構造体の定義及び利用方法を学び,互いに関連のある複数のデータを一体として扱う方法を理解する. 5. 動的メモリ確保 ?動的メモリ確保により「必要なときに必要なだけ」メモリが利用可能であることを知るとともに実際に動的メモリ確保を行う際の注意点を学ぶ. 6. 多次元配列と関数へのポインタ ?C言語においてポインタを用いて多次元配列を扱う方法を学ぶ.また,データのみならず関数に対してもポインタを経由して利用可能であることを知る. 7. 文字列 ?文字の特殊な配列である文字列の操作方法を理解する. 8. 分割コンパイル ?大規模なプログラムを 1つのソースファイルで記述するのは非現実的であるため,複数のソースファイルを連携させる際の注意点を学ぶ. 9. 再帰 ?プログラムを作成する 1つの方針として「再帰」という考え方を紹介する. 10. 連結リスト ?データ構造の 1つである連結リストを C言語で実装するときの考え方を理解する. 11. スタックとキュー ?連結リストの応用として,「スタック」?「キュー」といったデータ構造について理解する. 12. 二分探索木 ?多量のデータから目的とするデータを高速に探し出すためのデータ構造として二分探索木を C言語で実現する手法を知る. 13. ソートアルゴリズム ?データを一定の基準で並べ替える操作である「ソート」を C言語で実装する. 14. 文字列の探索 ?長いテキストデータから特定の文字列を見つけ出す手法について,基本的な考え方と C言語における実装方法を学ぶ. 15. 動的計画法 ?アルゴリズムを設計する考え方として動的計画法を紹介する.また,講義の簡単なまとめも行う. |
成績評価方法と基準 [Grading policy (Evaluation)] |
期末試験は行わない予定であり,出席状況及びレポートの内容から総合的に評価する. |
教科書 [Textbook] |
教科書:指定しない.講義の開始時に毎回資料を配布する. 特にポインタについては講義資料のみならず 柴田望洋,「詳解C言語 ポインタ完全攻略」,ソフトバンククリエイティブ などの書籍を併用することでより深く理解することができるだろう. |
自主学習ガイド及び キーワード [Self learning] |
プログラム言語を学ぶには「人の話を聞く」だけでは不十分であり,「実際にプログラムを作成しその動作を理解すること」が不可欠である.本講義の課題をこなして満足するのではなく,そこから発展させていくこと,さらには講義から離れて自らの目的でプログラムを作成することで「プログラミング」を身につけてほしい. キーワード:ポインタ,構造体,再帰,データ構造,アルゴリズム |
開講年度 [Year of the course] |
28 |
備考 | <プログラミング言語I>は平成22年度以前入学生,<プログラミング技法>は平成26年度以前入学生対象である. |