プログラミング技法II

科目基礎情報

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

到達目標

卒業後にソフトウェアを作成または利用する業務を行う基礎として、プログラミングの基礎的知識と技能を身に付けることが目標である。
評価項目1:(6A, MCC IV-C)基礎的なアルゴリズムについて理解し、任意のプログラミング言語を用いて記述できる。
評価項目2:(6A, MCC IV-C)同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。
評価項目3:(6A, MCC V-D-1)サブルーチンの概念を理解し、これらを含むプログラムを記述できる。
評価項目4a:(6A, MCC V-D-2)アルゴリズムの概念を理解し、与えられたアルゴリズムが問題を解決していく過程を説明できる。
評価項目4b:(6A, MCC V-D-2)計算量によってアルゴリズムを比較・評価できることを説明できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1:(6A, MCC IV-C)基礎的なアルゴリズムについて理解し、任意のプログラミング言語を用いて記述できる。客観的にみて優良にできる。できる。できない。
評価項目2:(6A, MCC IV-C)同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。客観的にみて優良にできる。できる。できない。
評価項目3:(6A, MCC V-D-1)サブルーチンの概念を理解し、これらを含むプログラムを記述できる。客観的にみて優良にできる。できる。できない。
評価項目4a:(6A, MCC V-D-2)アルゴリズムの概念を理解し、与えられたアルゴリズムが問題を解決していく過程を説明できる。客観的にみて優良にできる。できる。できない。
評価項目4b:(6A, MCC V-D-2)計算量によってアルゴリズムを比較・評価できることを説明できる。客観的にみて優良にできる。できる。できない。

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

準学士課程(R6) 6A 制御工学を中心とした基礎工学の幅広い知識の修得

教育方法等

概要:
 コンピュータを用いてソフトウェアを作るためのプログラミングの基礎的知識と技能を、C言語を用いて学び実践演習する。
授業の進め方・方法:
 スライドを用いた講義をなるべく手短に受けた後で、演習課題によって学習内容を身に付ける。課題は、授業内容を十分に理解すればするほど、取り組みやすい。課題の内容を常に十分理解して、遅延や未提出なく出すことができれば、試験勉強に多くの時間を割かなくてもよいと考えられる。質問があればそのままにせず、授業時間内や授業時間外に積極的に担当教員まで申し出ること。
 授業用プリントを配布する。このプリントを教科書代わりとして授業を進める。このため、各自で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週 ○後期定期試験の解答と解説 □今までの学習内容でできたことと、十分にできなかったことを認識し、来年度以降に生かす意志がある。

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー基礎的なアルゴリズムについて理解し、任意のプログラミング言語を用いて記述できる。3後2,後3,後6,後12,後13
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。3後12,後13
専門的能力分野別の専門工学情報系分野プログラミングサブルーチンの概念を理解し、これらを含むプログラムを記述できる。3後4,後5,後6,後10,後11,後12,後13
ソフトウェアアルゴリズムの概念を理解し、与えられたアルゴリズムが問題を解決していく過程を説明できる。3後12,後13
計算量によってアルゴリズムを比較・評価できることを説明できる。3後13

評価割合

試験課題合計
総合評価割合5050100
評価項目2, 450050
評価項目1, 305050