プログラミング技法Ⅱ

科目基礎情報

学校 木更津工業高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 プログラミング技法Ⅱ
科目番号 0031 科目区分 専門 / 必修
授業形態 演習 単位の種別と単位数 履修単位: 1
開設学科 電子制御工学科 対象学年 2
開設期 後期 週時間数 2
教科書/教材 内容に合わせて作成した講義資料を配布する;(補助教科書)林晴比古著、『明快入門C』、ソフトバンククリエイティブ、2013年、1900円(+税)、ISBN-13: 978-4797373264
担当教員 関口 明生

到達目標

卒業後にソフトウェアを作成または利用する業務を行う基礎として、プログラミングの基礎的知識と技能を身に付けることが目標である。目安として:
□ ソースコードにインデントやコメントを用いてプログラムを作成できる。
□ 基礎的なC言語のプログラムの動作を説明できる。
□ 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。
□ 関数を記述して処理内容を区分することができる。
□ 基礎的なUNIXコマンドを扱うことができる。
□ データをファイルへ出力・ファイルから入力するプログラムを作成できる。
□ 基礎的なアルゴリズムの動作を説明することができる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
他者と協調してプログラミングする基礎能力コメントの内容や変数名なども分かりやすいプログラムを作成することができる。ソースコードにインデントやコメントを用いてプログラムを作成することができる。ソースコードにインデントやコメントを用いてプログラムを作成することができない。
動作を理解して改良・デバッグする能力基礎的なC言語のプログラムの動作を説明することができるだけではなく、改良するための工夫ができる。基礎的なC言語のプログラムの動作を説明することができる。基礎的なC言語のプログラムの動作を理解することができない。
処理構造を系統立てて扱う能力 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく適切に工夫して記述できる。構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文の違いがわからない。
処理内容をモジュール化して扱う能力 可読性や再利用性を考慮したうえで、関数を記述して処理内容をより適切に区分することができる。関数を記述して処理内容を区分することができる。関数を記述して処理内容を区分することができない。
UNIX環境を操作する基礎能力基礎的なUNIXコマンドを記憶し、複数組み合わせて応用することができる。基礎的なUNIXコマンドを扱うことができる。基礎的なUNIXコマンドを扱うことができない。
多くの情報を効率的に処理するための基礎能力データをファイルへ出力・ファイルから入力するプログラムを、アルゴリズムを組み合わせるなど工夫して作成できる。データをファイルへ出力・ファイルから入力するプログラムを作成できる。 データをファイルへ出力・ファイルから入力するプログラムを作成できない。
アルゴリズムを利用して創作する能力 基礎的なアルゴリズムやデータ構造の動作を説明することができ、自主的に調べてソフトウェアを創作することができる。 基礎的なアルゴリズムの動作を説明することができる。基礎的なアルゴリズムの動作を説明することができない。

学科の到達目標項目との関係

準学士課程 2(2) 説明 閉じる

教育方法等

概要:
コンピュータを用いてソフトウェアを作るためのプログラミングの基礎的知識と技能を、C言語を用いて学び演習する。
より具体的にはメール・エディタ・UNIX操作などの基礎的な操作方法から、順次構造・分岐構造・反復構造・関数・ファイル操作・構造体・各種基礎的アルゴリズムなどなどを身につける。
授業の進め方・方法:
スライドを用いた講義をなるべく手短に受けた後で、演習課題によって学習内容を身に付ける。課題は、授業内容を十分に理解すればするほど、取り組みやすい。課題の内容を常に十分理解して、遅延や未提出なく出すことができれば、試験勉強に多くの時間を割かなくてもよいと考えられる。
原則毎回、授業用プリントを配布する。このプリントを教科書代わりとして授業を進める。このため、各自でA4のファイルを用意して整理しておくこと。もしも整理ができないと、本科目を履修する難易度を自ら高くしてしまうことになる。この科目も例外ではなく、授業内容を身につけて単位という第3者評価をもらうかどうかは一人一人の判断に委ねられており、教員はこれを支援することができても強制することができない。
補助教材「明快入門C」は、辞書あるいはハンドブックのように使用する。このため、人によって授業で用いることは多くないかもしれないが、自習や本科目履修以後にも用いることができる。
質問があれば、授業時間内や授業時間外に積極的に担当教員まで申し出ること。
注意点:
プログラミングの知識と技能は、実験実習・情報処理・制御工学・卒業研究ほか多くの専門科目の礎の一つである。すなわち、低学年の他科目や実験実習Iで実施したタッチタイピングと同様に、本科目が身につかないと卒業に支障をきたす。
したがって、分からない個所があれば、積極的に質問あるいは補助教科書などで調べること。卒業後の君が余計な苦労をしないために、タッチタイピングにより授業に臨むこと。本科目を習得して勉学を重ねると、たとえば簡単なゲームを作ることすら可能となる。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
後期
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週 ○後期定期試験の解答と解説 □今までの学習内容でできたことと、十分にできなかったことを認識し、来年度以降に生かす意志がある。

評価割合

試験発表相互評価課題と態度ポートフォリオその他合計
総合評価割合50005000100
基礎的能力0000000
専門的能力50005000100
分野横断的能力0000000