プログラミング 2024


2024 年度後期・水曜Ⅳ、金曜Ⅳ(–Ⅴ)コマ
担当: 香川・福岡
TA:  小方・増田
SA: 小河原・室永
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月15日(金), 12月13日(金), 01月15日(水), 01月31日(金), いずれも 12:30-14:30, 6301 教室 11/01 は 6301 教室、その他は 3303 教室(予定)

過去の課題

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

授業前

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

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

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

hello.c

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

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

クイズに対するコメント

第 02 回 10/04(演習@6201+6202)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、6202 に別れてもらって構いません。

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

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

課題に対するコメント

第 03 回 10/09(講義@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/11(演習@6201+6202)

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

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

来週・再来週の日程に注意してください。18 日は講義、23 日は演習です。23 日は 6202 は使用できません。

課題に対するコメント

10/16 は月曜振替日です。

第 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

本日は 6202 は使用しません。

着席位置 クイズ

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

クイズに対するコメント

第 06 回 10/23(演習!@6201+3201!

6202 は使用できませんが、6201 以外に 3201 が使用可能です。

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

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

課題に対するコメント

10/25 は大学祭前日のため休講です。

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

予習用

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

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/30 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

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

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

11/01 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

第 09 回 11/06(講義@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

11/06 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

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

11/08 の Teams の会議 (授業時間になったらクリックしてください)

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

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

プログラミング演習・質問支援システム

課題に対するコメント

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

予習用

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

List 4-5 List 4-6     increment.c     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    

11/13 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 配布プリントに関するアンケート再び(6 章以降分)、 クイズ

(スタッフ専用) 位置確認、 クイズ成績 (位置)、 アンケート確認 ()、

クイズに対するコメント

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

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

11/15 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

第 13 回 11/20(講義@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

11/20 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

WebCLint

クイズに対するコメント

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

11/22 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

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

予習用

5 章予習用スライド(「配列の要素に値を読み込む」〜「配列のコピー」 ⦅教科書 pp. 122 – 131 130 List 5-14 くらいまで , p.136

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 に入ってください。後半にテストを実施するので、机の端の席にだけ座るようにしてください。

11/27 の Teams の会議 (授業時間になったらクリックしてください)

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

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

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

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

11/29 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

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

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

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

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

中間テストに対するコメント (12/04 - ペーパの 1 番の解答が間違っていたので修正しました。)

📁/📂(← ここ以前の課題の開閉)

第 17 回 12/04(講義@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

12/04 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

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

12/06 の Teams の会議 (授業時間になったらクリックしてください)

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

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

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

課題に対するコメント

第 19 回 12/11(講義@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

12/11 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

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

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

12/13 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

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

第 21 回 12/18(講義@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

12/18 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

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

12/20 の Teams の会議 (授業時間になったらクリックしてください)

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

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

連絡:
10月、11月分の問題(11/29 の演習の問題まで)の(再)提出は年内いっぱいで締め切ります(12/31(火)23:59 まで)。

課題に対するコメント

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

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

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

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

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

第 23 回 01/08(講義@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)

01/08 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

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

01/10 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

第 25 回 01/15(講義・演習@6201+6202)

01/15 は金曜振替日です。

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

予習用

スライドはありません。 自家製グラフィックスライブラリー の解説に目を通して、 サンプルプログラムのいずれかをコンパイル・実行しておいてください。

svg.h svg.c
polygon.c diamond.c graph.c FirstSample.c SimpleSample.c HSBGrad.c TurtleSample.c

連絡事項

01/15 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

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

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

予習用

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

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

01/22 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

第 27 回 01/24(演習@6201+6202)

01/24 の Teams の会議 (授業時間になったらクリックしてください)

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

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

課題に対するコメント

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

予習用

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

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

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

01/29 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

第 29 回 01/31(演習@6201+6202)

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

01/31 の Teams の会議 (授業時間になったらクリックしてください)

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

(スタッフ専用) 位置確認提出状況チェック表(01月分)
課題に対するコメント

第 30 回 02/05(講義@6201) (全体の復習)

02/05 は予習用スライドはありません

02/05 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 クイズ

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

クイズに対するコメント

01/31 の課題の採点結果は 02/04(火)23:59 までに提出されたものについては 02/07(金) のオンライン試験までに公開する予定です。

それ以前の課題の(再)提出についても、02/04(火)23:59 までに提出されたものの採点結果は、 02/07 のオンライン試験までに公開する予定です。

その以降は、02/11(火)の 23:59 までに(再)提出された課題を 02/14 までに採点する予定です。

採点は 02/12 〜 02/14 までの間に実施するものが最終となります。01/31 の課題については、 再提出の機会が一度しかないので注意してください。

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

連絡(重要)
試験を欠席した場合は、追試験願の提出を忘れないようにしてください。

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

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

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

(スタッフ専用) 位置確認提出状況チェック feb07_1.c 用feb07_2.c 用feb07_3.c 用feb07_4.c 用

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

全員 6201 に入ってください。 (遠隔での受験は原則としてできません。) 机の端の席にだけ座るようにしてください。 (机が足りない場合は 6202 から机を持ち込みます。)

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

期末テスト(ペーパー)問題期末テスト(ぺーパー・オンライン)解答例

期末試験で合格者が極端に少ない場合に、救済試験を実施する可能性があります。 実施する場合、日程は 2/25(火)- 27(木)のどこかになります。 対象者が多い場合、日程の調整はしません。 場所は未定 です。

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

(2/18 New) 2/18(火)の 11:13 頃に救済試験対象者にカダサポからお知らせを送信しました。 (クイズ・演習・中間・期末を総合して、40 点以上 60 点未満の人、または、病気などで期末試験を欠席した人が対象です。後者の対象者には追試験として実施します。) そのカダサポのお知らせ(タイトル: 『「プログラミング」救済試験の実施について』)を受け取っていない人は、合格(または不合格)が確定です。

現在の課題

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

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

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

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

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

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

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

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表) feb25_1.c 用feb25_2.c 用feb25_3.c 用feb25_4.c 用

今後の課題

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

📁/📂(← ここ以降の予定の開閉)

これ以降の予定はありません。 🐼🐻

end of id="future"

教科書

以下の教科書の、おおむね第 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