プログラミング 2023


2023 年度後期・水曜Ⅳ、金曜Ⅳ(–Ⅴ)コマ
担当: 香川・福岡
TA: 大山・小方
SA: 木野・田中・軒原・Shen
6201 教室(予備: 水 ----、金 6202 教室)

情報システム・セキュリティ (CSSS) コース/人工知能・通信ネットワーク (AICN) コース向の「プログラミング」の情報を掲載します。 (シラバス

現在の課題

評価

評価の詳細の開閉

演習科目であるため、全回の出席を前提とする。毎週の課題(30%)、小テスト(クイズ)(20%)、 中間試験 (10%)、期末試験(40%)で採点し、授業の目標達成が確認できた者に単位を認定する。

なお、合格/不合格の判定については、単純な加算で 60 点以上を合格とするが、 秀・優・良・可の判定については、割合を考慮して調整をすることがある。

毎週の課題の採点基準

お知らせ

(新しいものほど上です。)

コンパイル・実行の方法

📁/📂(← 開閉)

皆さんのノート PC には「Microsoft Visual Studio Community」 というコンパイラーがインストールされているはずです。 インストールされていない場合は、 Visual Studio のダウンロードのページから、コミュニティ・エディションをインストールしてください。 なお、Mac の人は gcc を使いましょう。 インストールするときに、 「C++ によるデスクトップ開発」にチェックをするのを、 忘れないようにしてください。 (Visual Studio のバージョンは 2012 以降をインストールしてください。 2010 以前はデフォルトの文字コードが異なるため、UTF-8 で保存されたソースコードをコンパイルできない可能性があります。) インストール後「ヘルプ」—「Microsoft Visual Studio のバージョン情報」で、 「インストールされている製品」に 「Visual C++ 20??」が入っていることを確認しておいてください。

エディターは notepad++, サクラエディタ などがありますが Visual Studio Code を推奨します。

配布プリント

ここにリンクをはっていないファイルや、公開日前のファイルは 公開日までに変更する可能性があるので注意してください。

1 〜 8 章のまとめ、グラフィックス関数解説、プログラミング言語 Python、をまとめた PDF

課題

現在の課題

(管理者用) データの更新 (同・管理者側) Quiz集計 管理用インデックスインデックス10月 11月 中間 12月 01月 02月 期末)、 combo.c

注意: 以下のプログラムのソースへのリンクで List 99-99 のような Bold 書体は重要な例題、 List 88-88 のような影付き書体は、真似してはいけない例題を表す。

現在の課題

ピア・サポートについて

以下の日程でピア・サポートが実施されます。

ピア・サポートとは、ピア・サポーターと呼ばれる上級学生 (学部4年~大学院生)が、 学習相談に訪れた学部1~3年生からの基礎的科目(英語・数学・自然科学)及び 工学専門科目についての疑問・質問に答えるという学習支援制度です。

レポートの書き方や演習科目など、学習について相談がある人は気軽にご利用ください。

【情報システム・セキュリティ、人工知能・通信ネットワーク】
日時と場所:
11月01日(水), 11月17日(金), 12月15日(金),
01月19日(金), 02月02日(金),
いずれも 12:30-14:30, 3303教室

過去の課題

これ以前の課題はありません

授業前

配布プリントに関するアンケート

(スタッフ専用) アンケート確認 ()、

第 01 回 10/04(ガイダンス@6201)

hello.c

着席位置 クイズ(10/04 は試験運用です。)

(スタッフ専用) 位置確認、 クイズ確認 (

クイズに対するコメント

第 02 回 10/06(講義・演習@6201)1 章 「まずは慣れよう」 1-1 節「まずは表示を行う」

予習用

1 章予習用スライド(§ 1-1 に対応するページを閲読しておいてください。) ※ 閲読 — 調べながら読むこと

List 1-1 List 1-2 List 1-3 List 1-4 List 1-5 List 1-6 List 1-7

最初は 6201 に入ってください。

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

課題に対するコメント

第 03 回 10/11(講義@6201) 1 章 1-2 節、1-3 節2 章「演算と型」 2-1 節

予習用

1 章予習用スライド(§ 1-2, § 1-3 に対応するページを閲読しておいてください)
2 章予習用スライド(§ 2-1 に対応するページを閲読しておいてください)

List 1-8 List 1-9 List 1-10 List 1-11 List 1-12 List 1-13 List 1-14
List 2-1 List 2-2 List 2-3 List 2-4

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 ()、 サイコロ

クイズに対するコメント

第 04 回 10/13(演習@6201+6202)

着席位置 課題 (一部の課題は 10/11 16:10 に公開されます) アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

課題に対するコメント

第 05 回 10/18(講義@6201)2 章「演算と型」2-2 節3 章「プログラムの流れの分岐」 3-1 節の途中まで

予習用

2 章予習用スライド(§ 2-2 (教科書 p.30) 以降)、 3 章予習用スライド(§ 3-1 の「入れ子になった if 文」(教科書 p.54)まで)

List 2-5 List 2-6 List 2-7 List 2-8 List 2-9 List 2-10 List 2-11 List 2-12
List 3-1 List 3-2 List 3-3 List 3-4 List 3-5 List 3-6 List 3-7 List 3-8 List 3-9 List 3-10

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 06 回 10/20(演習@6201+6202)

6202 教室も使用できます。

着席位置 課題 (一部の課題は 10/18 16:10 に公開されます) アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

課題に対するコメント

第 07 回 10/25(講義@6201)3 章「プログラムの流れの分岐」つづき)

予習用

3 章予習用スライド (§ 3-1 の「評価」(教 p.55)〜「初学者が誤りやすい if 文」(教 p.65)

List 3-11 List 3-12 List 3-13 List 3-14 List 3-15 List 3-16 List 3-17     addtime.c maxswap.c     List 3-18 chap03/summary1.c

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

10/27 はオープンキャンパス前日のため休講です。

第 08 回 11/01(演習@6201+6202)

11/01 は、12:30-14:30 に 3303 でピア・サポートやってます

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(11 月分)

課題に対するコメント

第 09 回 11/08(講義@6201)3 章「プログラムの流れの分岐」つづき、4 章「プログラムの流れの繰返し」)

予習用

3 章予習用スライド(§ 3-2 の「switch 文」(教 p.66)〜 3 章最後まで)
4 章予習用スライド(§ 4-1 の「do 文」〜「後置増分演算子と後置減分演算子」(教 pp.74–81)と「前置増分演算子と前置減分演算子」pp.88–89)

List 3-19 List 3-20 List 3-21
List 4-1 List 4-2 List 4-2a List 4-3 List 4-4

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 10 回 11/10(演習@6201+6202)

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(11月分)、

課題に対するコメント

第 11 回 11/15(講義)4 章「プログラムの流れの繰返し」つづき)

予習用

4 章予習用スライド(§ 4-2「while 文」 (教科書 pp.82–93)、 § 4-3「for 文」(教科書 pp.94–101))

List 4-5 List 4-6 List 4-7 List 4-8 List 4-9 List 4-10     reverse.c     List 4-11
List 4-12 List 4-13 List 4-14 List 4-15 List 4-16 List 4-17     fact.c polygon.c    

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 12 回 11/17(演習@6201+6202)

11/17 は、12:30-14:30 に 3303 でピア・サポートやってます

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(11月分)、

課題に対するコメント

第 13 回 11/22(講義@6201) 4 章「プログラムの流れの繰返し」つづき、 5 章「配列」)

予習用

4 章予習用スライド(「多重ループ」〜 ⦅教科書 pp. 102–114⦆
5 章予習用スライド(〜「配列の初期化」 ⦅教科書 pp. 115–121⦆

List 4-18 List 4-19 List 4-20 List 4-21 List 4-22     comma.c triangle.c     List 4-18a List 4-23     diamond.c
List 5-1 List 5-2 List 5-3 List 5-4 List 5-5 List 5-6

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 14 回 11/24(演習@6201+6202)

着席位置 課題アップロード (提出前に WebCLint でチェックすること)、

(スタッフ専用) 位置確認提出状況チェック表(11月分)
enshu0423a.c 用enshu0423b.c 用triangle1.c 用triangle2.c 用

課題に対するコメント

第 15 回 11/29(講義+中間テスト(ペーパー)@6201) 5 章「配列」つづき)

予習用

5 章予習用スライド(「配列の要素に値を読み込む」〜「配列のコピー」 ⦅教科書 pp. 122 – 131

List 5-7 List 5-8    comma2.c    List 5-9 List 5-10 List 5-11 List 5-12 List 5-13 List 5-14

全員 6201 に入ってください。後半にテストを実施するので、机の端の席にだけ座るようにしてください。

着席位置 (本日はクイズはありません)

(スタッフ専用) 位置確認

第 16 回 12/01(演習+中間テスト(オンライン)@6201+6202

2 年生以上と情報システム・セキュリティ (CSSS) コースの 1 年生は 6201 に、 人工知能・通信ネットワーク (AICN) コースの 1 年生は 6202 に入ってください。 やはり、机の端の席にだけ座るようにしてください。

着席位置 課題アップロード (提出前に WebCLint でチェックすること)、

(スタッフ専用) 位置確認提出状況チェック表(12月分)

課題に対するコメント

中間テスト(オンライン)

オンラインテスト問題アップロード

(スタッフ専用) 位置確認提出状況チェック dec02_1.c 用dec02_2.c 用 中間メッセージ用

中間テストに対するコメント

第 17 回 12/06(講義@6201)5 章「配列」つづき、6 章「関数」)

予習用

5 章予習用スライド(「多次元配列」〜 ⦅教科書 pp. 132 – 139 ⦆

List 5-15     breakTest.c

6 章予習用スライド(〜「値渡し」 ⦅教科書 pp. 141–151 ⦆

List 6-1 List 6-2 List 6-3 List 6-4 List 6-5 List 6-6

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 18 回 12/08(演習@6201+6202)

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(12月分)

課題に対するコメント

お知らせ: dec01_1.c へのメッセージに、 中間テスト(ペーパーテスト・オンラインテスト)の得点を通知しました。再挑戦テストは 12/15 (Fri)—ペーパー と 12/22 (Fri)—オンライン に実施予定です。 なお、dec01_1.c を提出していない人は、メッセージを見られない可能性がありますが、dec01_1.c 未提出者は全員再挑戦テスト対象者です。

第 19 回 12/13(講義@6201)6 章「関数」つづき

予習用

6 章予習用スライド(§ 6-2「関数の設計」 ⦅教科書 pp. 152–171 ⦆

List 6-7 List 6-8 List 6-9 List 6-10 List 6-11 List 6-12     cbv.c     List 6-13 List 6-14     sentinel.c     List 6-15 List 6-16 List 6C-1

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 20 回 12/15(演習@6201+6202)

12/15 は、12:30-14:30 に 3303 でピア・サポートやってます

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(12月分)
find_min_sum.c 用

課題に対するコメント

授業終了後(5 コマ)中間テスト・ペーパー(再挑戦試験・追試験)@6201

(← ここ以前の課題の開閉)

第 21 回 12/20(講義@6201) 6 章「関数」つづき、8-4 節「再帰的な関数」、8-5 節「入出力と文字」)

7 章をとばして先に 8 章をやります。

予習用

6 章予習用スライド(§ 6-3「有効範囲と記憶域期間」 ⦅教科書 pp. 172–179 ⦆
8 章予習用スライド(§ 8-4「再帰的な関数」〜 § 8-5「入出力と文字」 ⦅教科書 pp. 240–251, p. 253 ⦆

List 6-17 List 6-18 List 6-19
List 8-7     hanoi.cハノイの塔を試すtree.c (グラフィックス作成ページ) 再帰の例 1問: このプログラムの出力結果はどうなるか?) List 8-8 List 8-9 List 8-10 List 8-11

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置),

クイズに対するコメント

第 22 回 12/22(演習@6201+6202)

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(12月分)

課題に対するコメント

授業終了後(5 コマ)中間テスト・オンライン(再挑戦試験・追試験)@6201

中間テスト(オンライン) 再挑戦試験/追試験

中間テストの範囲は 4 章までです。

着席位置 オンラインテスト問題アップロード

(スタッフ専用) 位置確認提出状況チェック jan10_1.c 用jan10_2.c 用 中間メッセージ用

第 23 回 01/09(講義!@6201!7 章「基本型」7-2 節 の中の「ビットと CHAR_BIT」「ビット単位の論理演算」「シフト演算」「ビット単位の論理演算の応用」 「オーバーフローと例外」は除く。

予習用

7 章予習用スライド

List 7-1 List 7-2 List 7-3 List 7-4 List 7-5     sizeof.c     List 7-10 List 7-11 List 7-12x <= 1.0 x <= 1000.0 に変えてみよう) List 7-13 printf("%.60f", 0.1)

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置),

クイズに対するコメント

第 24 回 01/10(演習!@6201!

着席位置 課題 (12/22 16:10 より一部公開)アップロード

(スタッフ専用) 位置確認提出状況チェック表(01月分)

課題に対するコメント

01/12 は共通テスト前日のため、休講です。

第 25 回 01/17(講義@6201) P 章「プログラミング言語 Python」)

予習用

P 章予習用スライド(〜「while 文」「print 関数(end キーワード引数)」まで)

factorial.py, temp.py, temp2.py, while.py,

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 26 回 01/19(演習@6201+6202)

01/19 は、12:30-14:30 に 3303 でピア・サポートやってます

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(01月分)

課題に対するコメント

第 27 回 01/24(講義@6201) P 章「プログラミング言語 Python」)

予習用

P 章予習用スライド(「リスト」〜)

なお「高階関数とラムダ式」「ジェネレーター」「エラトステネスのふるい」は、 余裕のある人は読んでおいてください。 (これらは C 言語にはないトピックです。これらから必須問題は出題しません。)

temp3.py, fib.py, ifib.py, primes.py,

着席位置 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 28 回 01/26(演習@6201+6202)

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(01月分)

課題に対するコメント

第 29 回 01/31(講義@6201) (全体の復習)

01/31 は予習用資料はありません

修士論文研究の実験協力について

「プログラミング」の授業の TA でお世話になっている、大山くんからの実験協力依頼の連絡です。お誘い合わせの上、奮って参加しましょう。

修士論文の実験協力の日程をお伝えするため、ご連絡させていただきました。 日程 : 1/31 ~ 2/1まで 1/31に事前アンケートに回答後、演習を行ってください。 2/1 までに、コードレビューを行なう対象を、システム内でお伝えします。 2/1 は、学生同士でコードレビューを行ってください。その後、アンケートに回答お願いします。 詳細につきましては、添付したPDFファイルをご確認ください。 わからないこと等あれば、こちらのメールアドレスまでお願いします。 お手数おかけしますが、よろしくお願いします。

着席位置 課題アップロードクイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置

クイズに対するコメント

第 30 回 02/02(演習@6201+6202)

02/02 は、12:30-14:30 に 3303 でピア・サポートやってます

02/02 は授業時間前に公開する問題はありません。

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(02月分)再帰グラフィクス用

期末テスト過去問(再掲)

以前の課題の追加提出・やりなおしも 2/06(火)23:59までに提出してください。

課題に対するコメント(02/07 14:40 公開)、

第 31 回 02/07(期末テスト 6201 のみ)ペーパー

ペーパーテストは、持込み不可、 (オンラインテストは、教科書・プリント・ノートなど持込み可)です。

期末テスト(ペーパー)問題期末テスト(ぺーパー)解答例

02/02 の課題の採点を 02/07 に公開しています。追加提出・やり直しの締切は 2/13(火曜)23:59 です。 それ以前の週の課題も、追加提出・やり直しの最終締切は 2/13(火曜)23:59 です。 各個人へのメッセージをよく読んで、やり直して下さい。

第 32 回 02/09(期末テスト 6201+6202)オンライン

2 年生以上と情報システム・セキュリティ (CSSS) コースの 1 年生は 6201 に、 人工知能・通信ネットワーク (AICN) コースの 1 年生は 6202 に入ってください。 机の端の席にだけ座るようにしてください。

オンラインテストは、教科書・プリント・ノートなど持込み可、 (ペーパーテストは、持込み不可) です。

着席位置 オンラインテスト問題アップロード

(スタッフ専用) 位置確認提出状況チェック feb09_1.c 用feb09_2.c 用feb09_3.c 用feb09_4.c 用

期末テスト(オンライン)の解答例

期末試験で合格者が極端に少ない場合に、救済試験を実施する可能性があります。 実施する場合、日程は 2/28(水)14:40–17:50 になります。場所は未定 6201 です。

救済試験を実施する場合、対象者には 2/16(金) までに連絡する予定です。

第 33 回 02/28(期末テスト・救済試験)ペーパー @6201 教室

ペーパーテストは、持込み不可、 (オンラインテストは、教科書・プリント・ノートなど持込み可)です。

机の端の席にだけ座るようにしてください。 また、人数が少ないので、前から 5 列目以内に座ってください。

現在の課題

第 34 回 02/28(期末テスト・救済試験)オンライン @6201 教室

オンラインテストは、教科書・プリント・ノートなど持込み可、 (ペーパーテストは、持込み不可) です。

机の端の席にだけ座るようにしてください。 また、人数が少ないので、前から 5 列目以内に座ってください。

着席位置 オンラインテスト問題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表) feb28_1.c 用feb28_2.c 用feb28_3.c 用feb28_4.c 用

今後の課題

内容はあくまでも予定です。

(← ここ以降の予定の開閉)

教科書

以下の教科書の、おおむね第 1 〜 8 章に相当する部分を扱います。

新・明解C言語入門編 第 2 版 柴田 望洋 著 SBクリエイティブ ISBN978-4-8156-0979-5

索引と 全ソースプログラム(Shift-JIS) (UTF-8) は、 是非、ダウンロードページから入手して、 索引は印刷しておいてください。
注意: 5 章のプログラムの一部が int main(void) とすべきところを int main(aoid) になっているようです。)

ただし、7-2 節 の中の「ビット単位の論理演算」、「シフト演算」、「ビット単位の論理演算の応用」、「オーバーフローと例外」、 8-1 節「関数形式マクロ」、8-2 節「ソート」、8-3 節「列挙体」を除きます。ただし、 8-1 節の中のコンマ演算子は扱います。

この授業でやらないこと

上記の教科書や C 言語の標準的な解説書:

プログラミング言語 C 第 2 版 B.W. カーニハン, D.M. リッチー 著 石田 晴久 訳 共立出版 ISBN 978-4320026926 ※原著 The C Programming Language, 2nd Edition Brian W. Kernighan, Dennis M. Ritchie Prentice Hall ISBN 978-0131103627

に書かれている事柄で、この授業で取り扱わない(主な)項目は以下のとおりです。

文字列、 ポインター、構造体 (struct)、ファイル入出力、(ここまでは2年生の「中級プログラミング」で扱います。)

ビット演算子、goto 文とラベル、 関数形式マクロ、列挙体 (enum)、 共用体 (union)、ビットフィールド、分割コンパイル、 動的メモリー割当て (malloc と free)、(これらは2年生以降の各授業で必要に応じて紹介します。)

Koji Kagawa