概要:
コンピュータを用いてソフトウェアを作るためのプログラミングの基礎的知識と技能を、C言語を用いて学び演習する。
より具体的にはメール・エディタ・UNIX操作などの基礎的な操作方法から、順次構造・分岐構造・反復構造・関数・ファイル操作・構造体・各種基礎的アルゴリズムなどなどを身につける。
授業の進め方・方法:
スライドを用いた講義をなるべく手短に受けた後で、演習課題によって学習内容を身に付ける。課題は、授業内容を十分に理解すればするほど、取り組みやすい。課題の内容を常に十分理解して、遅延や未提出なく出すことができれば、試験勉強に多くの時間を割かなくてもよいと考えられる。
原則毎回、授業用プリントを配布する。このプリントを教科書代わりとして授業を進める。このため、各自でA4のファイルを用意して整理しておくこと。もしも整理ができないと、本科目を履修する難易度を自ら高くしてしまうことになる。この科目も例外ではなく、授業内容を身につけて単位という第3者評価をもらうかどうかは一人一人の判断に委ねられており、教員はこれを支援することができても強制することができない。
補助教材「明快入門C」は、辞書あるいはハンドブックのように使用する。このため、人によって授業で用いることは多くないかもしれないが、自習や本科目履修以後にも用いることができる。
質問があれば、授業時間内や授業時間外に積極的に担当教員まで申し出ること。
注意点:
プログラミングの知識と技能は、実験実習・情報処理・制御工学・卒業研究ほか多くの専門科目の礎の一つである。すなわち、低学年の他科目や実験実習Iで実施したタッチタイピングと同様に、本科目が身につかないと卒業に支障をきたす。
したがって、分からない個所があれば、積極的に質問あるいは補助教科書などで調べること。卒業後の君が余計な苦労をしないために、タッチタイピングにより授業に臨むこと。本科目を習得して勉学を重ねると、たとえば簡単なゲームを作ることすら可能となる。
|
|
週 |
授業内容 |
週ごとの到達目標 |
後期 |
3rdQ |
1週 |
【UNIX操作】 「UNIX操作の基礎」 ○基本的なUNIXコマンド(logout, ls, mkdir, rmdir, cd, pwd, echo, cat, cp, mv, rm, head, tail, history) ○パイプとリダイレクト |
□初歩的なUNIXコマンドを用いてファイル操作を行うことができる。
|
2週 |
「配列と文字列」 ○配列の定義・初期化・要素・アドレス ○文字列の定義・初期化・要素・アドレス ○2次元配列 ☆課題(文字列、割り算のあまり、整数・文字) |
□配列・文字列を用いて複数のメモリをまとめて扱うことができる。 □【特に重要】配列にまつわる「値」と「アドレス」の区別に注意してプログラミングを行うことができる。
|
3週 |
「ポインタ」 ○ポインタ変数(変数のアドレスを扱う変数) ○NULLポインタ ○なぜややこしいポインタを使うのか ☆課題(ポインタ、ポインタの配列、アドレス) |
□ポインタを使ったプログラムを作成することができる。 □【特に重要】ポインタにまつわる「値」と「アドレス」の区別に注意してプログラミングを行うことができる。
|
4週 |
【関数】 「関数(値渡し)」 ○関数とプロトタイプ宣言の書き方 ○戻り値のある関数 ○引数のある関数(引数の値渡し) ○戻り値と引数のある関数 ☆課題(関数、プロトタイプ宣言、for文、引数、戻り値、整数÷整数、リダイレクト) |
□処理のまとまりを関数としてmain()の外に記述することができる。 □【特に重要】引数と戻り値を用いてデータを受け渡す関数を記述することができる。
|
5週 |
「関数(アドレス渡し)」 ○引数のある関数(引数のアドレス渡し) ○定数形のマクロと関数形のマクロ ☆課題(関数、値渡し、アドレス渡し、マクロ、文字列、配列) |
□【特に重要】引数の値渡しとアドレス渡しの違いを理解してプログラムを作成することができる。 □マクロを用いたプログラムを作成することができる。
|
6週 |
「コマンドライン入力」 ○コマンドライン引数 ○再帰関数 〇関数を作成する利点 ☆課題(コマンドライン引数、atoi()、atof()、再帰関数、最大公約数、★ユークリッドの互除法) |
□コマンドライン引数を受け取るプログラムを作成することができる。 □通常の関数と再帰関数の違いを説明することができる。
|
7週 |
「演習」 |
□いままでの学習内容について身につけておりそれを活用できることを、自己点検することができる。
|
8週 |
「後期中間試験」 ○プログラミング関連の英単語 ○プログラミングに関する基礎用語 ○基本的なUNIXコマンド ○値とアドレスの区別 ○プログラム作成 |
後期中間試験までの内容を説明あるいは実践できる。特に: □関数を記述して処理内容を区分することができる。 □基礎的なUNIXコマンドを扱うことができる。
|
4thQ |
9週 |
○後期中間試験の解答と解説 |
□試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
|
10週 |
【ファイル操作】 「ファイル出力」 〇ファイルの書き込み 〇CSVファイルのグラフ描画 ☆課題(ファイル出力、数学関数、コマンドライン引数、RC回路の電圧の時間変化、for文) |
□実行結果をファイルに書き込むプログラムを作成することができる。
|
11週 |
「ファイル入力」 〇ファイルの読み込み ☆課題(ファイル入力、EOF、合計と平均、for文) |
□データの記録されたファイルを読み込み、処理を行うプログラムを作成することができる。
|
12週 |
【アルゴリズム】 「スワップ・ソート・中央値」 ○メモリの値の入れ替え(swap) ○並び替えのアルゴリズム(★選択ソート、★バブルソート、★挿入ソート) ○平均値と中央値 ☆課題(コマンドライン引数、アドレス渡し、ソートアルゴリズム、中央値) |
□基礎的なソートアルゴリズムを用いたプログラムを作成することができる。 □平均値と中央値の違いを説明することができる。
|
13週 |
「その他の基礎アルゴリズム」 ○サーチのアルゴリズム(★線形探索、★二分探索) ○計算量とO記法 ☆課題(コマンドライン引数、二分探索) |
□基礎的なサーチアルゴリズムを用いたプログラムを作成することができる。 □計算量(時間計算量)について説明できる。
|
14週 |
「演習」 |
□いままでの学習内容について身につけておりそれを活用できることを、自己点検することができる。
|
15週 |
「後期定期試験」(予定) ○プログラミング関連の英単語 ○条件式の書き方 ○プログラミングに関する基礎用語 ○プログラミングに関連する基本操作 ○値とアドレスの区別 ○プログラム作成 |
後期定期試験までの内容を説明あるいは実践できる。特に: □データをファイルへ出力・ファイルから入力するプログラムを作成できる。 □基礎的なアルゴリズムの動作を説明することができる。
|
16週 |
○後期定期試験の解答と解説 |
□今までの学習内容でできたことと、十分にできなかったことを認識し、来年度以降に生かす意志がある。
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 情報リテラシー | 情報リテラシー | コンピュータのハードウェアに関する基礎的な知識を活用できる。 | 1 | 後2,後3 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 3 | 後7,後14 |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 3 | 後7,後14 |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 3 | 後7,後14 |
専門的能力 | 分野別の専門工学 | 機械系分野 | 情報処理 | プログラムを実行するための手順を理解し、操作できる。 | 3 | 後1 |
定数と変数を説明できる。 | 3 | 後7,後14 |
整数型、実数型、文字型などのデータ型を説明できる。 | 3 | 後7,後14 |
演算子の種類と優先順位を理解し、適用できる。 | 3 | 後7,後14 |
算術演算および比較演算のプログラムを作成できる。 | 3 | 後7,後14 |
データを入力し、結果を出力するプログラムを作成できる。 | 3 | 後7,後14 |
条件判断プログラムを作成できる。 | 3 | 後7,後14 |
繰り返し処理プログラムを作成できる。 | 3 | 後7,後14 |
一次元配列を使ったプログラムを作成できる。 | 3 | 後2 |
情報系分野 | プログラミング | 変数の概念を説明できる。 | 3 | 後7,後14 |
データ型の概念を説明できる。 | 3 | 後7,後14 |
代入や演算子の概念を理解し、式を記述できる。 | 3 | 後7,後14 |
制御構造の概念を理解し、条件分岐を記述できる。 | 3 | 後7,後14 |
制御構造の概念を理解し、反復処理を記述できる。 | 3 | 後7,後14 |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 3 | 後4,後5 |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | 後7,後14 |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 3 | 後7,後14 |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 後7,後14 |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 3 | 後7,後14 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | 後7,後14 |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 3 | 後7,後14 |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。 | 3 | 後7,後14 |
ソフトウェア | アルゴリズムの概念を説明できる。 | 3 | 後12,後13 |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 3 | 後12,後13 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 3 | 後12,後13 |
時間計算量によってアルゴリズムを比較・評価できることを説明できる。 | 2 | 後12,後13 |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 3 | 後12,後13 |
システムプログラム | コンパイラの役割と仕組みについて説明できる。 | 2 | 後7,後14 |
情報数学・情報理論 | コンピュータ上での数値の表現方法が誤差に関係することを説明できる。 | 2 | 後7,後14 |