情報システム・セキュリティ (CSSS) コース/情報通信 (ICT) コース向の「プログラミング」の情報を掲載します。 (シラバス)
(← 評価の開閉)
演習科目であるため、全回の出席を前提とする。毎週の課題(30%)、小テスト(クイズ)と中間試験 (30%)、期末試験(40%)で採点し、授業の目標達成が確認できた者に単位を認定する。
なお、合格/不合格の判定については、単純な加算で 60 点以上を合格とするが、 秀・優・良・可の判定については、割合を考慮して調整をすることがある。
演習時間(通常、金曜日 4限)内は、原則として自分の力で解く。(TA・教員に聞くのは良い。)
(ただし、解いている問題に特有ではない C 言語一般に関する質問などは許容範囲とする。)
なお、一部の事前に公開した課題は、演習時間開始 10 分後を締切とすることがある。
演習時間終了後は、人に相談して解いても良い。 (ただし人の解答のコピペは絶対禁止(コピーさせた側も同罪))
たとえ演習終了後でも、問題を掲示板などに投稿して、不特定多数の人に相談することは禁止する。
2021 年度期末テスト問題(ペーパー)、 2021 年度期末テスト問題(オンライン)、 同解答例、
(02/03 New) オンライン試験については、他人との通信が禁止事項となっていますが、 人間と区別がつかないもの (AI など) についても通信は禁止です。
(11/16)
中間テスト過去問 (ペーパー)、
中間テスト過去問 (オンライン)、
同解答例、
(11/16) WebCLint (ページが落ちているときは連絡を下さい。) … C 言語初学者向けの静的解析(インデンテーションのチェックなど)用ツールです。
誤って「do の閉じブレースの後は改行せずに while を書いてください。」と指摘することがあります。
「とても短い文で敢えてブレースに囲まない場合(if の対象のなる文を追加するということが考えにくい、イディオム的なカタチの場合)は、改行せず、
if
, while
などと同じ行に書く。」という例外には対応していません。
sqrt
, sin
などの関数呼び出しが、double
型であると認識できず、
%f
書式指定に対して使うと間違いだと指摘します。
「原則として、一行には文を一つしか書かない。」は守っていなくても検知しません。
「閉じブレースの行には閉じブレース以外には何も書かない。(ただし、else
… や do
〜 while
文の while
…
は除く)」をたまに検知しないときがあります。
(← 開閉)
皆さんのノート PC や大学の PC には「Microsoft Visual Studio Community」
というコンパイラーがインストールされているはずです。
インストールされていない場合は、
香川大学創造工学部学生向け Webサイトから、「ノートPC設定方法」というページを
見つけてインストールして下さい。
(C コンパイラの情報はここにあります。
Visual Studio
のダウンロードのページに直接飛んでも構いません。なお、Mac の人は gcc
を使いましょう。)
インストールするときに、
「C++ によるデスクトップ開発」にチェックをするのを、
忘れないようにしてください。
(Visual Studio のバージョンは 2012 以降をインストールしてください。
2010 以前はデフォルトの文字コードが異なるため、UTF-8
で保存されたソースコードをコンパイルできない可能性があります。)
インストール後「ヘルプ」—「Microsoft Visual Studio のバージョン情報」で、
「インストールされている製品」に
「Visual C++ 20??」が入っていることを確認しておいてください。
エディターは notepad++, サクラエディタ などがありますが Visual Studio Code を推奨します。
コマンドプロンプトでのコマンドなどの使用法の説明を C のプログラムの作成とコンパイルの手順というページにまとめました。
Visual Studio Code からコンパイルする方法をまとめました。
(New!)コマンドプロンプトの使い方 (TA の竹原君に作成してもらいました。)
(New!)演習用サーバーでのコンパイル方法 (何らかの事情で自分の PC でコンパイルできないとき参考にしてください。TA の竹原君に作成してもらいました。)
授業用ページのパスワード発行は
このページで
行なって下さい。アカウントは s
学籍番号(途中の t
は小文字です。)
独自のアカウント・パスワードは現在使用していません。 Microsoft アカウント(大学でメールを読むときに使うアカウント)で認証してください。
注意: 設定が変更されたのに、変更が反映されないときは、 いったんログアウトして、 再度アクセスを試みて下さい。
必ず各自で提出したファイルのバックアップを取っておいて下さい。 (自分のノート PC だけではなく、stfile などの大学のサーバのどこかにもバックアップしておいて下さい!!)
この授業で提出してもらうファイルは基本的にバイナリーファイルではないはずです。 バイナリーファイルとは、テキストエディターで読むことができないファイル(画像、音声、ワード、エクセルなど)です。
各個人へのメッセージ を適宜確認して下さい。課題を再提出するときも、最初に提出したときと同じアップロードのページからアップロードしてください。
注意: 以下のプログラムのソースへのリンクで List 99-99 のような Bold 書体は重要な例題、 List 88-88 のような影付き書体は、真似してはいけない例題を表す。
これ以前の課題はありません
(← ここ以前の課題の開閉)
授業ページ・ログインの確認
Visual Studio Community のインストールの確認(または GCC)
Visual Studio Code のインストール
クイズ(10/05 は試験運用です。)、 配布プリントに関するアンケート、
1 章予習用スライド(§ 1-1 に対応するページを閲読※しておいてください。) ※ 閲読 — 調べながら読むこと
List 1-1 List 1-2 List 1-3 List 1-4 List 1-5 List 1-6 List 1-7
コンパイル・実行の方法(再確認)
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
コンパイル・実行の方法(再確認)
文字化けについて(補足説明)
課題 (一部の課題は 10/12 16:10 に公開されます)、 アップロード、
2 章予習用スライド(§ 2-2 以降)、 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 教室も使用できます。
3 章予習用スライド(§ 3-1 の「評価」(教 p.55)〜「論理演算子」(教 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/28 はオープンキャンパス前日のため休講です。このため、次週 (11/02, 04) は変則的になります。
11/02 は、遠隔・対面 MIX で実施します。詳しくは DreamCampus を見てください。
6201 と 6503 が利用できます。(6202 教室は使用できません。)
本日 (11/02)、5コマにピア・サポートが 3304 講義室で開催されます。
ピア・サポートとは、ピア・サポーターと呼ばれる上級学生 (学部4年~大学院生)が、 学習相談に訪れた学部1~3年生からの基礎的科目(英語・数学・自然科学)及び 工学専門科目についての疑問・質問に答えるという学習支援制度です。
レポートの書き方や演習科目など、学習について相談がある人は気軽にご利用ください。
【情報システム・セキュリティ、情報通信】 日時と場所: 3Q: 11月2日(水), 11月9日(水), 5コマ(16:20-17:50), 3304教室 4Q: 1月20日(金), 1月27日(金), 2月3日(金), 3コマ(13:00-14:30) , 3303教室
11/02 の課題に対するコメントは、11/09 に公開します。
最初は講義を実施するので 6201 教室に入ってください。演習になったら 6202 も使用できます。
11/04 も、遠隔・対面 MIX で実施します。詳しくは DreamCampus で通知します。
課題(事前問題は 10/26 16:10 に公開)、 アップロード、
4 章予習用スライド(「do 文」〜「カウントアップ」(教 pp.74–85), 「前置増分演算子と前置減分演算子」pp.88–89
⦅「文字定数と putchar
関数」(pp. 86–87, List 4-8)は次回の範囲です。⦆)
List 4-1 List 4-2 List 4-2a List 4-3 List 4-4 List 4-5 List 4-6 increment.c List 4-7 List 4-9
クイズ、
本日 (11/09) も、5コマにピア・サポートが 3304 講義室で開催されます。詳しくは 11/02 のところを見てください。
4 章予習用スライド(「文字定数と putchar
関数」(pp. 86–87)、
「整数を逆順に表示」〜「繰返し文」(pp. 90–101)⦅多重ループの手前まで⦆)
List 4-8 List 4-10 List 4-11 List 4-12 List 4-13 List 4-14 List 4-15 List 4-16 reverse.c fact.c polygon.c
クイズ、
課題、 アップロード (提出前に WebCLint でチェックすること。)
そのため、11/25(金)が講義となります。
4 章予習用スライド(「多重ループ」〜 ⦅教科書 pp. 102–⦆)
List 4-17
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
①②④⑤⑥⑧⑨⑦⑥⑧⑨⑦⑥⑧⑨⑦⑥③②④⑤⑥⑧⑨⑦⑥⑧⑨⑦⑥③②④⑤⑥⑧⑨⑦⑥③②
クイズ、
6503 教室も使用できます。
課題、 アップロード (提出前に WebCLint でチェックすること)、
20TXXX, 21TXXX, 22T3XX の人は 6201、22T4XX の人は 6202 に入ってください。
中間テストの範囲は 4 章までです。
昨年度と同じ形式で実施します。つまり、
前半 (14:40–15:20) はペーパーテスト・持ち込み不可
後半 (15:30–16:10) はオンラインテスト・持ち込み可
プリント・ルーズリーフはバインダー・綴ひもなどで一冊に綴じること。 バラバラのプリントは持込み不可とする。
紛らわしいので、通信系ソフトなどの通知を切っておくこと。 Windows 11 の場合、画面下の「検索」で(Windows 10 の場合、左下の「ここに入力して検索」で) 「通知」と入力して「通知とアクションの設定」を開き、「通知」をオフにする。
中間テストに対するコメント
(現在は、正解(例)のみ、コメントは追って追加します。)
5 章予習用スライド(〜「オブジェクト形式マクロ」 ⦅教科書 pp. 115 – 125, p.136 ⦆)
List 5-1 List 5-2 List 5-3 List 5-4 List 5-5 List 5-6 List 5-7 List 5-8 comma2.c List 5-9 List 5-10
クイズ、
課題、 アップロード (提出前に WebCLint でチェックすること)、
お知らせ: dec02_1.c へのメッセージに、 中間テスト(ペーパーテスト・オンラインテスト)の得点を通知しました。再挑戦テストは 12/23 (Fri) に実施予定です。 なお、dec02_1.c を提出していない人は、メッセージを見られない可能性がありますが、dec02_1.c 未提出者は全員再挑戦テスト対象者です。
5 章予習用スライド(「多次元配列」〜 ⦅教科書 pp. 132 – 139 ⦆)
List 5-14 List 5-15 breakTest.c
6 章予習用スライド(〜「ブロック有効範囲」 ⦅教科書 pp. 141–155 ⦆)
List 6-1 List 6-2 List 6-3 List 6-4 List 6-5 List 6-6 List 6-7 List 6-8 List 6-9
プリントのクイズの答え合わせ (Q 5.1.2, )
教科書訂正 p.146
クイズ、
6 章予習用スライド(「ファイル有効範囲」〜「多次元配列の受渡し」 ⦅教科書 pp. 156–171 ⦆)
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
プログラミング 受講上の心構え(再確認)
番兵法について
svg.h svg.c — SVG 形式を生成する自家製グラフィックスライブラリー(解説)
svg.h
svg.c
polygon.c
diamond.c
graph.c
FirstSample.c
SimpleSample.c
HSBGrad.c
TurtleSample.c
グラフィックス関数を使ったプログラムのコンパイルと実行の仕方(まとめ): 開閉→
クイズ、
※12/23 授業終了後(5 コマ)に中間テストの再挑戦試験(追試験)を 6201 教室で実施予定です。 中間テストを事情により欠席した人もこれを受験して下さい。ペーパー・オンラインの両方を実施します。
瀬戸大橋線部分運休のため、再挑戦試験を延期します。01/10(火)の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
※01/10 授業終了後(5 コマ)に中間テストの再挑戦試験(追試験)を 6201 教室で実施予定です。 中間テストを事情により欠席した人もこれを受験して下さい。ペーパー・オンラインの両方を実施します。
6201 教室で実施します。
中間テストの範囲は 4 章までです。
前半 (16:20–17:00) はペーパーテスト・持ち込み不可
後半 (17:10–17:50) はオンラインテスト・持ち込み可
(プリント・ルーズリーフはバインダー・綴ひもなどで一冊に綴じること。
バラバラのプリントは持込み不可とする。)
紛らわしいので、通信系ソフトなどの通知を切っておくこと。
01/13 は共通テスト前日のため、休講です。
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-12
(x <= 1.0
を x <= 1000.0
に変えてみよう)
List 7-13
printf("%.60f", 0.1)
教科書 p.177 訂正
教科書 p.246 訂正(円周率)
Python 処理系のインストール、
TIOBE index,
GitHut,
Programming Languages
Influence Network,
クイズ、
プリントのクイズの答え合わせ (Q 7.1.1, Q 7.1.2, Q 7.1.3)
クイズ、
P 章予習用スライド(「リスト」〜「標準ライブラリー関数 zip」まで)
「高階関数とラムダ式」「ジェネレーター」「エラトステネスのふるい」は、 余裕のある人は読んでおいてください。 (これらは C 言語にはないトピックです。この範囲から必須問題は出題しません。)
問の答え合わせ (Q P.6.1 [x * y for x in [1,2] for y in [3,5,7]]
,
Q P.7.1 [(x, y) for x in [1,4,7] for y in [2,5,8] if x < y]
)
これまでの正解率が低い課題・クイズの解説と、過去問の解説を行う予定です。
教育評価アンケート(下の QR コードからもアクセス可能) QR コード開閉→
クイズに対するコメント、 クイズ (2) に対するコメント、
以前の課題の追加提出・やりなおしも 2/07(火)23:59までに提出してください。
※ ペーパーテストは、持込み不可、 (オンラインテストは、教科書・プリント・ノートなど持込み可)です。
※ オンラインテストは、教科書・プリント・ノートなど持込み可、 (ペーパーテストは、持込み不可) です。
プリント・ルーズリーフはバインダー・綴ひもなどで一冊に綴じること。 バラバラのプリントは持込み不可とする。
メール, チャット, Messenger, FTP, WinSCP, Slack, LINE などの通信系ソフトは使用禁止である。 人間と区別がつかないもの(AI など)との通信も禁止である。 (通知も切っておくこと—Windows 10/11 で通知設定を変更する)
通信系ソフトを起動していた場合は、不正行為とみなす。
着席位置、 オンラインテスト問題、 アップロード、
期末試験で合格者が極端に少ない場合に、救済試験を実施する可能性があります。 実施する場合、日程は 2/27(月)13:00–16:10 になります。場所は 6201 です。
救済試験を実施する場合、対象者には 2/17(金) までに連絡する予定です。
対象者が出席できない場合は、いかなる理由でも不可となります。 (それに対する救済措置はありません。)
救済試験を実施する場合でも、 期末試験を含む成績が著しく低い人は対象としません。
(2/17 New) 2/17(金)の 14:20 頃に救済試験対象者に DreamCampus からメッセージを送信しました。 (クイズ・演習・中間・期末を総合して、48 点以上 60 点未満の人、または、病気などで期末試験を欠席した人が対象です。後者の対象者には追試験として実施します。) DreamCampus のメッセージを受け取っていない人は、合格(または不合格)が確定です。
※ ペーパーテストは、持込み不可、 (オンラインテストは、教科書・プリント・ノートなど持込み可)です。
※ オンラインテストは、教科書・プリント・ノートなど持込み可、 (ペーパーテストは、持込み不可) です。
(← ここ以降の予定の開閉)
以下の教科書の、おおむね第 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 HallISBN 978-0131103627
に書かれている事柄で、この授業で取り扱わない(主な)項目は以下のとおりです。
文字列、 ポインター、構造体 (struct)、ファイル入出力、(ここまでは2年生の「中級プログラミング」で扱います。)
ビット演算子、goto 文とラベル、 関数形式マクロ、列挙体 (enum)、 共用体 (union)、ビットフィールド、分割コンパイル、 動的メモリー割当て (malloc と free)、(これらは2年生以降の各授業で必要に応じて紹介します。)