概要:
コンピュータを用いてソフトウェアを作るためのプログラミングの基礎的知識と技能を、C言語を用いて学び演習する。
より具体的にはエディタ・UNIX操作などの基礎的な操作方法から、順次構造・分岐構造・反復構造・関数・ファイル操作・各種基礎的アルゴリズムなどを身につける。
授業の進め方・方法:
スライドを用いた講義をなるべく手短に受けた後で、演習課題によって学習内容を身に付ける。課題は、授業内容を十分に理解すればするほど、取り組みやすい。課題の内容を常に十分理解して、遅延や未提出なく出すことができれば、試験勉強に多くの時間を割かなくてもよいと考えられる。
原則毎回、授業用プリントを配布する。このプリントを教科書代わりとして授業を進める。このため、各自でA4のファイルを用意して整理しておくこと。もしも整理ができないと、本科目を履修する難易度を自ら高くすることになる。授業内容を身につけて単位という第3者評価をもらうかどうかは一人一人の判断に委ねられており、教員はこれを支援することができても強制することができないことは、ほかの科目と同様である。
補助教材「明快入門C」は、辞書あるいはハンドブックのように使用する。このため、人によって授業で用いることは多くないかもしれないが、自習や本科目履修以後にも用いることができる。
質問があれば、授業時間内や授業時間外に積極的に担当教員まで申し出ること。
注意点:
プログラミングの知識と技能は、実験実習・情報処理・制御工学・卒業研究ほか多くの専門科目の礎の一つである。すなわち、低学年の他科目や実験実習Iで実施したタッチタイピングと同様に、本科目が身につかないと卒業に支障をきたすことがある。
したがって、分からない個所があれば、積極的に質問するか、補助教科書などで調べること。卒業後の君が余計な苦労をしないために、タッチタイピングにより授業に臨むこと。本科目を習得して勉学を重ねると、たとえば簡単なゲームを作ることも可能となる。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
【プログラミングの技と法】 「フローチャート」 ○シラバスの説明 ○ガイダンス ○プログラミングの歴史 ○構造化プログラミング ○フローチャート ☆課題(構造化プログラミング・フローチャート) |
□プログラミングの技法をなぜ身に付けるべきであるのか考える。 □プログラミングの歴史的経緯を知る。 □【特に重要】プログラムの流れを順次構造、分岐構造、反復構造の組み合わせで表すことができる。 □フローチャートを正しい描き方で描く事ができる。 □コンパイラとインタプリタの違いを説明できる。
|
2週 |
「UNIX(入門編)」 ○2進数・10進数・16進数・ASCII文字 ○UNIX環境の操作方法 ○エディタemacsの操作方法 ○簡単なプログラムの作成 |
□コンピュータで整数や文字がどのように表されているか、知人や家族に説明できる。 □UNIX環境を基本的なコマンドで操作することができる。 □emacsでテキストファイルを編集することができる。 □キーボード操作における初歩的なミス(Caps LockやInsertなど)に対処することができる。
|
3週 |
【順次構造】 「C言語入門」 ○プログラム作成の手順 ○基本的なプログラムの作成 ○コンパイラgccのはたらき ☆課題(適切な書式、画面表示) |
□ソースファイルをコンパイル・デバッグして実行ファイルを作成する手順を実施できる。 □【特に重要】プログラムを適切な書式(インデント・コメント)で書くことができる。 □ソースファイルからどのような仕組みで実行ファイルが作成されるか、説明できる。
|
4週 |
「整数・文字と計算」 ○整数や文字を表示する方法 ○変数を使って計算する方法 ○整数・文字のデータ型とバイト数 ○変数のもつ値とアドレス ○数値や文字をキーボード入力する方法 ☆課題(printf()、scanf()、変数、整数型、アドレス、sizeof演算子) |
□表示したい内容に合わせてprintf()の書式を使い分けることができる。 □キーボード入力したい内容に合わせてscanf()の書式を使い分けることができる。 □整数と文字のデータ型の種類と、表せる範囲を理解する。 □整数型の変数と基礎的な演算子を使ったプログラムを作成することができる。 □【特に重要】メモリ上に割り当てられている変数のアドレス(番地)を求めることができる。
|
5週 |
「浮動小数点数と計算」 ○固定小数点数と浮動小数点数 ○丸め誤差 ○浮動小数点数のデータ型とバイト数 ○実数と整数の割り算にご用心 ○キャスト演算子を用いた型変換 ○定数に名前を付ける(constと#define) ☆課題(printf()、scanf()、変数、浮動小数点数型、定数、整数÷整数) |
□浮動小数点数型の変数を用いて、実数を扱うプログラムを作成することができる。 □【特に重要】整数型と浮動小数点数型の違いを正しく理解して扱うことができる。 □キャスト演算子を用いて型変換を行うことができる。 □定数に名前を付ける二つの方法を使うことができる。
|
6週 |
【分岐構造】 「if-else文」 ○if文・if-else文(条件式による分岐構文) ○条件式 ○関係演算子・等価演算子・論理演算子 ○演算子の優先順位 ○time.hでUNIX時間を扱う ☆課題(if-else文、条件式、素数、★エラストテネスのふるい、割り算のあまり) |
□if-else文による分岐構文を用いたプログラムを作成することができる。 □【特に重要】関係演算子・等価演算子・論理演算子を用いて適切な条件式を記述することができる。 □stdio.h以外のヘッダファイルを用いることで、利用可能な関数が増えることを理解する。 □素数を判定するための基礎的なアルゴリズムの仕組みを説明することができる。
|
7週 |
「演習」 |
□いままでの学習内容について身につけておりそれを活用できることを、自己点検することができる。
|
8週 |
「前期中間までの確認問題」 ○プログラミング関連の英単語 ○プログラミングに関する基礎用語 ○基本操作・プログラム作成・デバッグ ○フローチャート ○if文、if-else文 |
いままでの内容を説明あるいは実践できる。特に: □処理の順序をフローチャートで表現することができる。 □基礎的なC言語のプログラムの動作を説明することができる。
|
2ndQ |
9週 |
○前期中間までの確認問題の解答と解説 |
□試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
|
10週 |
「switch文」 ○switch文(整数・文字の値による分岐構文) ○if文とswitch文の違い ○stdlib.hで疑似乱数を扱う ○じゃんけんゲームのプログラム ○goto文 ☆課題(switch文、break、default) |
□switch文による分岐構文を用いたプログラムを作成することができる。 □goto文の使用が基本的に推奨されない理由を理解する。
|
11週 |
【反復構造】 「while文」 ○while文(条件式による反復構文) ○インクリメント/デクリメント演算子 ○break文とcontinue文 ○do-while文 ☆課題(while文、定数、乱数、UNIX時間、条件式、break、continue、ゲーム) |
□while文による反復構文を用いたプログラムを作成することができる。 □break文とcontinue文の違いを理解して使い分けることができる。 □定数、条件式、乱数、UNIX時間など、以前に学習した内容が身についている。
|
12週 |
「for文」 ○for文(C言語でよく使われる反復構文) ○for文と浮動小数点数 ○C言語の分岐構文・反復構文のまとめ ☆課題(for文、定数、★最大・最小・合計・平均を求めるアルゴリズム) |
□【特に重要】for文による反復構文を用いたプログラムを作成することができる。 □for文のカウント変数として浮動小数点数を用いてはいけない理由を理解する。 □【特に重要】最大・最小・平均を求めるための基礎的なアルゴリズムの仕組みを説明することができる。
|
13週 |
「数学関数の使用」 ○math.hで数学関数を扱う ○無限(inf)と非数(nan) ☆課題(for文、定数、三角関数、度とラジアン) |
□数学関数を用いたプログラムを作成できる。 □for文を用いて、表に近い形式で計算結果を表示することができる。
|
14週 |
「演習」 |
□いままでの学習内容について身につけておりそれを活用できることを、自己点検することができる。
|
15週 |
「前期定期試験」 ○プログラミング関連の英単語 ○プログラミングに関する基礎用語 ○条件式の書き方 ○プログラム作成 |
いままでの内容を説明あるいは実践できる。特に: □構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。
|
16週 |
○前期定期試験の解答と解説 |
□試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 情報リテラシー | 情報リテラシー | コンピュータのハードウェアに関する基礎的な知識を活用できる。 | 1 | 前4 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 2 | 前12 |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 2 | 前12 |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 2 | 前12 |
専門的能力 | 分野別の専門工学 | 機械系分野 | 機械設計 | 標準規格の意義を説明できる。 | 1 | |
ねじ、ボルト・ナットの種類、特徴、用途、規格を理解し、適用できる。 | 1 | |
歯車列の速度伝達比を計算できる。 | 2 | |
力学 | 荷重が作用した時の材料の変形を説明できる。 | 1 | |
応力とひずみを説明できる。 | 2 | |
情報処理 | プログラムを実行するための手順を理解し、操作できる。 | 3 | 前3 |
定数と変数を説明できる。 | 3 | 前5 |
整数型、実数型、文字型などのデータ型を説明できる。 | 3 | 前4,前5 |
演算子の種類と優先順位を理解し、適用できる。 | 3 | 前6 |
算術演算および比較演算のプログラムを作成できる。 | 3 | 前4,前5,前6 |
データを入力し、結果を出力するプログラムを作成できる。 | 3 | 前4 |
条件判断プログラムを作成できる。 | 3 | 前6,前10 |
繰り返し処理プログラムを作成できる。 | 3 | 前11,前12 |
計測制御 | 国際単位系の構成を理解し、SI単位およびSI接頭語を説明できる。 | 3 | |
自動制御の定義と種類を説明できる。 | 2 | |
フィードバック制御の概念と構成要素を説明できる。 | 1 | |
電気・電子系分野 | 電気回路 | オームの法則を説明し、電流・電圧・抵抗の計算ができる。 | 3 | |
キルヒホッフの法則を用いて、直流回路の計算ができる。 | 2 | |
電子回路 | ダイオードの特徴を説明できる。 | 1 | |
電力 | 直流機の原理と構造を説明できる。 | 1 | |
計測 | SI単位系における基本単位と組立単位について説明できる。 | 3 | |
情報系分野 | プログラミング | 変数の概念を説明できる。 | 3 | 前4,前5 |
データ型の概念を説明できる。 | 3 | 前4,前5 |
代入や演算子の概念を理解し、式を記述できる。 | 3 | 前4,前5 |
制御構造の概念を理解し、条件分岐を記述できる。 | 3 | 前6,前10 |
制御構造の概念を理解し、反復処理を記述できる。 | 3 | 前11,前12 |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 2 | 前3,前13 |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 2 | 前7,前14 |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 2 | 前7,前14 |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 前7,前14 |
主要な言語処理プロセッサの種類と特徴を説明できる。 | 3 | 前1 |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 3 | 前1 |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 3 | 前7,前14 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | 前7,前14 |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 2 | 前7,前14 |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。 | 2 | 前7,前14 |
ソフトウェア | アルゴリズムの概念を説明できる。 | 2 | 前12 |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 2 | 前12 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 2 | 前12 |
システムプログラム | コンパイラの役割と仕組みについて説明できる。 | 3 | 前1 |
情報数学・情報理論 | コンピュータ上での数値の表現方法が誤差に関係することを説明できる。 | 3 | 前5,前12 |
その他の学習内容 | オームの法則、キルヒホッフの法則を利用し、直流回路の計算を行うことができる。 | 2 | |
トランジスタなど、ディジタルシステムで利用される半導体素子の基本的な特徴について説明できる。 | 1 | |