1. 与えられた問題を解決するためのソースプログラムを C 言語により記述し,コンパイル・リンク・実行できる.
2. 基本的な整列・探索アルゴリズムが問題を解決してゆく過程を説明できる.
3. リスト,スタック,キュー,ツリーといった基本的なデータ構造の概念と操作を説明できる.
概要:
開発ツールとして,Linux上で動作するCコンパイラ(gcc)を使用する.前期では,前年度科目の「情報処理」の学習内容を復習した後,C 言語を用いたより高度なプログラミングと,これを応用した基本的なデータ構造を学ぶ.最後に,基本的な整列・探索アルゴリズムを学ぶ.
授業の進め方・方法:
教科書と配布プリントを用いて内容を説明した後,プログラミングの練習問題に取り組み,その結果をレポートとして提出する.
注意点:
前年度の「情報処理」で学んだ C 言語の基礎(構文や基本的ななライブラリ関数の使い方など)を充分理解しておくこと.プログラムを書く時は,単純な論理を一つずつ丁寧に積み重ねるように思考することを心がけること.目的に応じたプログラムを自分自身で書けるようになることを目標として,小テストを適宜実施するので,授業終了後の復習を欠かさないこと.
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
データ型,変数,定数(復習) |
整数・実数・文字のデータ型,変数,定数を理解し,これらを用いたプログラムを記述できる.
|
2週 |
演算子(復習) |
演算子の種類と優先度を理解し,演算子を用いたプログラムを記述できる.
|
3週 |
条件分岐と繰り返し(復習) |
if文,switch文,for文,while文,do-while文を理解し,これらを用いたプログラムを記述できる.
|
4週 |
配列と文字列(復習) |
一次元配列と二次元配列を理解し,これらを用いたプログラムを記述できる.文字列を理解し,文字列を操作するプログラムを記述できる.
|
5週 |
ポインタ(復習) |
アドレスの概念とポインタ変数を理解し,ポインタ変数を用いたプログラムを記述できる.
|
6週 |
関数(復習) |
関数の概念を理解し,関数を用いたプログラムを記述できる.
|
7週 |
再帰呼び出し |
関数の再帰呼び出しの概念を理解し,再帰呼び出しを用いたプログラムを記述できる.
|
8週 |
中間試験 |
これまでの学習内容の理解度を確認する.
|
2ndQ |
9週 |
試験答案の確認・解説 |
試験結果から自身の理解度を把握し,今後の学習に役立てられる.
|
10週 |
テキストファイル入出力 |
テキストファイルの概念を理解し,テキストファイルを読み書きするプログラムを記述できる.
|
11週 |
バイナリファイル入出力 |
バイナリファイルの概念を理解し,バイナリファイルを読み書きするプログラムを記述できる.
|
12週 |
分割コンパイル |
1つのプログラムを複数のソースファイルとして記述し,それらをコンパイルする方法を理解できる.
|
13週 |
ヘッダファイル |
外部変数や外部関数をヘッダファイルに記述し,矛盾することなく分割コンパイルする方法を理解できる.
|
14週 |
構造体 |
複数のデータを集約した構造体の概念を理解し,これを用いたプログラムを記述できる.
|
15週 |
構造体の配列とポインタ |
構造体の配列とポインタについて理解し,これらを用いたプログラムを記述できる.
|
16週 |
期末試験 |
これまでの学習内容の理解度を確認する.
|
後期 |
3rdQ |
1週 |
試験答案の確認・解説 |
試験結果から自身の理解度を把握し,今後の学習に役立てられる.
|
2週 |
動的メモリ確保1 |
動的メモリ確保・解放の概念を理解し,一次元配列の動的メモリ確保・解放を行うプログラムを記述できる.
|
3週 |
動的メモリ確保2 |
二次元配列の動的メモリ確保・解放を行うプログラムを記述できる.
|
4週 |
線形リスト1 |
線形リストの概念と種類を理解し,線形リストを用いた基本的なプログラムを記述できる.
|
5週 |
線形リスト2 |
要素の挿入・削除などの機能を持つ線形リストのプログラムを記述できる.
|
6週 |
キュー |
キューの概念を理解し,これを用いたプログラムを記述できる.
|
7週 |
スタック |
スタックの概念を理解し,これを用いたプログラムを記述できる.
|
8週 |
中間試験 |
これまでの学習内容の理解度を確認する.
|
4thQ |
9週 |
試験答案の確認・解説 |
試験結果から自身の理解度を把握し,今後の学習に役立てられる.
|
10週 |
ツリー |
ツリーの概念を理解し,これを用いたプログラムを記述できる.
|
11週 |
単純ソートと選択ソート |
データを整列する単純ソートと選択ソートを理解し,これらを用いたプログラムを記述できる.
|
12週 |
バブルソートと挿入ソート |
データを整列するバブルソートと挿入ソートを理解し,これらを用いたプログラムを記述できる.
|
13週 |
線形探索 |
データを探索する線形探索の概念を理解し,これを用いたプログラムを記述できる.
|
14週 |
番兵ありの線形探索 |
番兵を配置した線形探索の概念を理解し,これを用いたプログラムを記述できる.
|
15週 |
2分探索 |
データを探索する2分探索の概念を理解し,これを用いたプログラムを記述できる.
|
16週 |
期末試験 |
これまでの学習内容の理解度を確認する.
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 情報リテラシー | 情報リテラシー | 同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 3 | |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 3 | |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 3 | |
専門的能力 | 分野別の専門工学 | 機械系分野 | 情報処理 | プログラムを実行するための手順を理解し、操作できる。 | 4 | |
定数と変数を説明できる。 | 4 | |
整数型、実数型、文字型などのデータ型を説明できる。 | 4 | |
演算子の種類と優先順位を理解し、適用できる。 | 4 | |
算術演算および比較演算のプログラムを作成できる。 | 4 | |
データを入力し、結果を出力するプログラムを作成できる。 | 4 | |
条件判断プログラムを作成できる。 | 4 | |
繰り返し処理プログラムを作成できる。 | 4 | |
一次元配列を使ったプログラムを作成できる。 | 4 | |
情報系分野 | プログラミング | 変数の概念を説明できる。 | 3 | |
データ型の概念を説明できる。 | 3 | |
代入や演算子の概念を理解し、式を記述できる。 | 4 | |
制御構造の概念を理解し、条件分岐を記述できる。 | 4 | |
制御構造の概念を理解し、反復処理を記述できる。 | 4 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 4 | |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 3 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | |
ソフトウェア | アルゴリズムの概念を説明できる。 | 3 | |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 3 | |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 3 | |
時間計算量によってアルゴリズムを比較・評価できることを説明できる。 | 3 | |
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。 | 3 | |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 3 | |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。 | 3 | |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。 | 3 | |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。 | 3 | |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。 | 3 | |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 3 | |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 3 | |
分野別の工学実験・実習能力 | 情報系分野【実験・実習能力】 | 情報系【実験・実習】 | 与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。 | 4 | |
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | |
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。 | 3 | |
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。 | 4 | |