本学科を卒業し将来ソフトウェアを作成または利用する業務に携わるための基礎として、プログラミングの基礎的知識と技能を身に付けること。目安として:
□ 処理の順序を、フローチャートで表現することができる。
□ ソースコードにインデントやコメントを用いてプログラムを作成することができる。
□ 基礎的なC言語のプログラムの動作を説明することができる。
□ 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。
□ 関数を記述して処理内容を区分することができる。
□ 基礎的なUNIXコマンドを扱うことができる。
□ データをファイルへ出力・ファイルから入力するプログラムを作成できる。
□ 基礎的なアルゴリズムの動作を説明することができる。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
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週 |
「配列と文字列」 ○配列の定義・初期化・要素・アドレス ○文字列の定義・初期化・要素・アドレス ○2次元配列 ☆課題(文字列、割り算のあまり、整数・文字) |
□配列・文字列を用いて複数のメモリをまとめて扱うことができる。 □【特に重要】配列にまつわる「値」と「アドレス」の区別に注意してプログラミングを行うことができる。
|
7週 |
「ポインタ」 ○ポインタ変数(変数のアドレスを扱う変数) ○NULLポインタ ○なぜややこしいポインタを使うのか ☆課題(ポインタ、ポインタの配列、アドレス) |
□ポインタを使ったプログラムを作成することができる。 □【特に重要】ポインタにまつわる「値」と「アドレス」の区別に注意してプログラミングを行うことができる。
|
8週 |
「前期中間試験」(予定) ○プログラミング関連の英単語 ○プログラミングに関する基礎用語 ○基本操作 ○デバッグ ○プログラム作成 ○フローチャート |
前期中間試験までの内容を説明あるいは実践できる。特に: □処理の順序をフローチャートで表現することができる。 □基礎的なC言語のプログラムの動作を説明することができる。
|
2ndQ |
9週 |
○前期中間試験の解答と解説 |
□試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
|
10週 |
「if-else文」 ○if文・if-else文(条件式による分岐構文) ○条件式 ○関係演算子・等価演算子・論理演算子 ○演算子の優先順位 ○time.hでUNIX時間を扱う ☆課題(if-else文、条件式、素数、★エラストテネスのふるい、割り算のあまり) |
□if-else文による分岐構文を用いたプログラムを作成することができる。 □【特に重要】関係演算子・等価演算子・論理演算子を用いて適切な条件式を記述することができる。 □stdio.h以外のヘッダファイルを用いることで、利用可能な関数が増えることを理解する。 □素数を判定するための基礎的なアルゴリズムの仕組みを説明することができる。
|
11週 |
「switch文」 ○switch文(整数・文字の値による分岐構文) ○if文とswitch文の違い ○stdlib.hで疑似乱数を扱う ○じゃんけんゲームのプログラム ○goto文 ☆課題(switch文、break、default) |
□switch文による分岐構文を用いたプログラムを作成することができる。 □goto文の使用が基本的に推奨されない理由を理解する。
|
12週 |
【反復構造】 「while文」 ○while文(条件式による反復構文) ○インクリメント/デクリメント演算子 ○break文とcontinue文 ○do-while文 ☆課題(while文、定数、乱数、UNIX時間、条件式、break、continue、ゲーム) |
□while文による反復構文を用いたプログラムを作成することができる。 □break文とcontinue文の違いを理解して使い分けることができる。 □定数、条件式、乱数、UNIX時間など、以前に学習した内容が身についている。
|
13週 |
「for文」 ○for文(C言語でよく使われる反復構文) ○for文と配列 ○for文と浮動小数点数 ○C言語の分岐構文・反復構文のまとめ ☆課題(for文、定数、配列、値とアドレス、★最高・最低・合計・平均を求めるアルゴリズム)
|
□【特に重要】for文による反復構文を用いたプログラムを作成することができる。 □for文のカウント変数として浮動小数点数を用いてはいけない理由を理解する。 □【特に重要】最高・最低・平均を求めるための基礎的なアルゴリズムの仕組みを説明することができる。
|
14週 |
「数学関数の使用」 ○math.hで数学関数を扱う ○無限(inf)と非数(nan) ☆課題(for文、定数、三角関数、度とラジアン)
|
□数学関数を用いたプログラムを作成することができる。 □for文を用いて、表に近い形式で計算結果を表示することができる。
|
15週 |
「前期定期試験」(予定) ○プログラミング関連の英単語 ○プログラミングに関する基礎用語 ○条件式の書き方 ○値とアドレスの区別 ○プログラム作成 |
前期定期試験までの内容を説明あるいは実践できる。特に: □構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。 □値とアドレスを意識して使い分けることができる。
|
16週 |
○前期定期試験の解答と解説
「プログラミング演習」 ☆課題(for文、if-else文、break文、while文、数学関数、キャスト演算子、switch文) |
□試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
□前回までの学習内容を応用して、for文を用いた数当てゲームのプログラムや、解の公式で2次方程式の解を求めるプログラムや、pHから水素イオン濃度を求めるプログラムを作成することができる。
|
後期 |
3rdQ |
1週 |
【UNIX操作】 「UNIX操作の基礎」 ○基本的なUNIXコマンド(logout, ls, mkdir, rmdir, cd, pwd, echo, cat, cp, mv, rm, head, tail, history) ○パイプとリダイレクト
|
□初歩的なUNIXコマンドを用いてファイル操作を行うことができる。
|
2週 |
【関数】 「関数(1)」 ○関数とプロトタイプ宣言の書き方 ○戻り値のある関数 ○引数のある関数(引数の値渡し) ○戻り値と引数のある関数 ☆課題(関数、プロトタイプ宣言、for文、引数、戻り値、整数÷整数、リダイレクト) |
□処理のまとまりを関数としてmain()の外に記述することができる。 □【特に重要】引数と戻り値を用いてデータを受け渡す関数を記述することができる。
|
3週 |
「関数(2)」 ○引数のある関数(引数のアドレス渡し) ○定数形のマクロと関数形のマクロ ☆課題(関数、値渡し、アドレス渡し、マクロ、文字列、配列)
|
□【特に重要】引数の値渡しとアドレス渡しの違いを理解してプログラムを作成することができる。 □マクロを用いたプログラムを作成することができる。
|
4週 |
「関数(3)」 ○ローカル変数とグローバル変数 ○自動変数と静的変数 ○変数のスコープ(有効範囲) ○ソースファイルの分割 ☆課題(関数、プロトタイプ宣言、グローバル変数、静的変数、スコープ、★最大値を逐次計算するアルゴリズム) |
□グローバル変数や静的変数の違いについて理解してプログラムを作成できる。 □ソースファイルを分割して作成しコンパイルするための方法を理解する。
|
5週 |
「関数(4)」 ○コマンドライン引数 ○再帰関数 〇関数を作成する利点 ☆課題(コマンドライン引数、atoi()、atof()、再帰関数、最大公約数、★ユークリッドの互除法)
|
□コマンドライン引数を受け取るプログラムを作成することができる。 □通常の関数と再帰関数の違いを説明することができる。
|
6週 |
【ファイル操作】 「ファイル出力」 〇ファイルの書き込み 〇CSVファイルのグラフ描画 ☆課題(ファイル出力、数学関数、コマンドライン引数、RC回路の電圧の時間変化、for文) |
□実行結果をファイルに書き込むプログラムを作成することができる。
|
7週 |
「ファイル入力」 〇ファイルの読み込み ☆課題(ファイル入力、EOF、合計と平均、for文) |
□データの記録されたファイルを読み込み、処理を行うプログラムを作成することができる。
|
8週 |
「後期中間試験」(予定) ○プログラミング関連の英単語 ○プログラミングに関する基礎用語 ○基本的なUNIXコマンド ○値とアドレスの区別 ○プログラム作成 |
後期中間試験までの内容を説明あるいは実践できる。特に: □関数を記述して処理内容を区分することができる。 □基礎的なUNIXコマンドを扱うことができる。
|
4thQ |
9週 |
○後期中間試験の解答と解説 |
□試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
|
10週 |
【ソートアルゴリズム】 「スワップ・ソート・中央値」 ○メモリの値の入れ替え(swap) ○並び替えのアルゴリズム(★選択ソート、★バブルソート、★挿入ソート) ○平均値と中央値 ☆課題(コマンドライン引数、アドレス渡し、ソートアルゴリズム、中央値)
|
□基礎的なソートアルゴリズムを用いたプログラムを作成することができる。 □平均値と中央値の違いを説明することができる。
|
11週 |
【構造体と動的確保】 「構造体」 ○構造体の宣言・定義・初期化・使用 ○構造体の配列とポインタ ○構造体の値渡し・アドレス渡し ☆課題(構造体、値渡し・アドレス渡し、乱数、無限ループ、アロー演算子) |
□構造体を用いたプログラムを作成することができる。 □構造体を配列・ポインタ・関数を使って扱うことができる。
|
12週 |
動的確保「メモリの動的確保・セグメント」 〇メモリの動的確保と解放 〇メモリセグメント ☆課題(構造体、動的確保、コマンドライン引数、平均アルゴリズム) |
□メモリの動的確保と解放を用いたプログラムを作成することができる。 □スタックオーバーフローやメモリリークなどの、メモリセグメント内の構造に関連した現象を説明することができる。
|
13週 |
【データ構造の基礎】 「LIFO構造の作成と操作」 〇typedef宣言 〇LIFO構造 ☆課題(LIFO構造メモリ、構造体、動的確保、コマンドライン引数、関数形マクロ、★逆ポーランド記法によるスタック計算機) |
□構造体やメモリの動的確保を用いてLIFOメモリのデータ構造を実現する方法を知り、作成済みのソースファイルを利用して比較的複雑なソフトウェアを完成させることができる。 □LIFOメモリを用いてスタック計算機のアルゴリズムがどのように動作しているか説明することができる。
|
14週 |
「FIFO構造の作成と操作」 〇FIFO構造 ☆課題(FIFO構造メモリ、構造体、動的確保、★平均を逐次計算するアルゴリズム) |
□構造体やメモリの動的確保を用いてFIFOメモリのデータ構造を実現する方法を知り、作成済みのソースファイルを利用して比較的複雑なソフトウェアを完成させることができる。
|
15週 |
「後期定期試験」(予定) ○プログラミング関連の英単語 ○条件式の書き方 ○プログラミングに関する基礎用語 ○プログラミングに関連する基本操作 ○値とアドレスの区別 ○プログラム作成 |
後期定期試験までの内容を説明あるいは実践できる。特に: □データをファイルへ出力・ファイルから入力するプログラムを作成できる。 □基礎的なアルゴリズムの動作を説明することができる。
|
16週 |
○後期定期試験の解答と解説 |
□今までの学習内容でできたことと、十分にできなかったことを認識し、来年度以降に生かす意志がある。
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 工学実験技術(各種測定方法、データ処理、考察方法) | 工学実験技術(各種測定方法、データ処理、考察方法) | 物理、化学、情報、工学についての基礎的原理や現象を、実験を通じて理解できる。 | 3 | |
実験装置や測定器の操作、及び実験器具・試薬・材料の正しい取扱を身に付け、安全に実験できる。 | 3 | |
専門的能力 | 分野別の工学実験・実習能力 | 機械系分野【実験・実習能力】 | 機械系【実験実習】 | 実験・実習の目標と心構えを理解し、実践できる。 | 3 | |
レポートの作成の仕方を理解し、実践できる。 | 2 | |
電気・電子系分野【実験・実習能力】 | 電気・電子系【実験実習】 | 電圧・電流・電力などの電気諸量の測定が実践できる。 | 2 | |
抵抗・インピーダンスの測定が実践できる。 | 2 | |
オシロスコープを用いて実際の波形観測が実施できる。 | 3 | |
電気・電子系の実験を安全に行うための基本知識を習得する。 | 2 | |